@tiba-spark/client-shared-lib 25.4.1-35 → 25.4.1-41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libraries/constants/version-constants.mjs +1 -10
- package/esm2022/libraries/enums/http-cancel-blacklist.enum.mjs +10 -8
- package/esm2022/libraries/enums/localization.enum.mjs +2 -1
- package/esm2022/libraries/guards/sub-module-guard.mjs +3 -3
- package/esm2022/libraries/localization/localization.action.mjs +1 -10
- package/esm2022/libraries/localization/localization.module.mjs +1 -4
- package/esm2022/libraries/localization/localization.state.mjs +5 -21
- package/esm2022/libraries/modules/alerts-and-notifications/alerts-and-notifications.actions.mjs +1 -7
- package/esm2022/libraries/modules/alerts-and-notifications/alerts-and-notifications.state.mjs +5 -20
- package/esm2022/libraries/modules/auth/session.actions.mjs +1 -10
- package/esm2022/libraries/modules/auth/session.state.mjs +5 -78
- package/esm2022/libraries/modules/login/login.actions.mjs +1 -9
- package/esm2022/libraries/modules/login/login.module.mjs +4 -4
- package/esm2022/libraries/modules/login/login.state.mjs +5 -24
- package/esm2022/libraries/modules/security/security.actions.mjs +1 -8
- package/esm2022/libraries/modules/security/security.state.mjs +5 -18
- package/esm2022/libraries/modules/smartparks/smartpark.actions.mjs +1 -12
- package/esm2022/libraries/modules/smartparks/smartpark.state.mjs +5 -20
- package/esm2022/libraries/modules/tenant-logo/tenant-logo.actions.mjs +1 -7
- package/esm2022/libraries/modules/tenant-logo/tenant-logo.state.mjs +5 -16
- package/esm2022/libraries/modules/user-settings/user-settings.state.mjs +5 -57
- package/esm2022/libraries/resolvers/index.mjs +1 -4
- package/esm2022/libraries/service-proxy/cloud-service-proxies.mjs +133 -790
- package/esm2022/libraries/service-proxy/identity-service-proxies.mjs +1 -560
- package/esm2022/libraries/service-proxy/service-proxy.module.mjs +4 -8
- package/esm2022/libraries/services/auth-token.service.mjs +68 -9
- package/esm2022/libraries/services/refresh-token.service.mjs +18 -16
- package/esm2022/libraries/services/smartpark.service.mjs +12 -8
- package/esm2022/libraries/services/tenant.service.mjs +7 -27
- package/fesm2022/tiba-spark-client-shared-lib.mjs +1853 -3372
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/constants/version-constants.d.ts +0 -4
- package/libraries/constants/version-constants.d.ts.map +1 -1
- package/libraries/enums/http-cancel-blacklist.enum.d.ts.map +1 -1
- package/libraries/enums/localization.enum.d.ts +2 -1
- package/libraries/enums/localization.enum.d.ts.map +1 -1
- package/libraries/localization/localization.action.d.ts +0 -4
- package/libraries/localization/localization.action.d.ts.map +1 -1
- package/libraries/localization/localization.module.d.ts.map +1 -1
- package/libraries/localization/localization.state.d.ts +2 -4
- package/libraries/localization/localization.state.d.ts.map +1 -1
- package/libraries/modules/alerts-and-notifications/alerts-and-notifications.actions.d.ts +0 -5
- package/libraries/modules/alerts-and-notifications/alerts-and-notifications.actions.d.ts.map +1 -1
- package/libraries/modules/alerts-and-notifications/alerts-and-notifications.state.d.ts +3 -5
- package/libraries/modules/alerts-and-notifications/alerts-and-notifications.state.d.ts.map +1 -1
- package/libraries/modules/auth/session.actions.d.ts +0 -8
- package/libraries/modules/auth/session.actions.d.ts.map +1 -1
- package/libraries/modules/auth/session.state.d.ts +3 -9
- package/libraries/modules/auth/session.state.d.ts.map +1 -1
- package/libraries/modules/login/login.actions.d.ts +0 -7
- package/libraries/modules/login/login.actions.d.ts.map +1 -1
- package/libraries/modules/login/login.module.d.ts +1 -1
- package/libraries/modules/login/login.state.d.ts +3 -5
- package/libraries/modules/login/login.state.d.ts.map +1 -1
- package/libraries/modules/security/security.actions.d.ts +0 -6
- package/libraries/modules/security/security.actions.d.ts.map +1 -1
- package/libraries/modules/security/security.state.d.ts +2 -7
- package/libraries/modules/security/security.state.d.ts.map +1 -1
- package/libraries/modules/smartparks/smartpark.actions.d.ts +0 -6
- package/libraries/modules/smartparks/smartpark.actions.d.ts.map +1 -1
- package/libraries/modules/smartparks/smartpark.state.d.ts +3 -5
- package/libraries/modules/smartparks/smartpark.state.d.ts.map +1 -1
- package/libraries/modules/tenant-logo/tenant-logo.actions.d.ts +0 -5
- package/libraries/modules/tenant-logo/tenant-logo.actions.d.ts.map +1 -1
- package/libraries/modules/tenant-logo/tenant-logo.state.d.ts +3 -5
- package/libraries/modules/tenant-logo/tenant-logo.state.d.ts.map +1 -1
- package/libraries/modules/user-settings/user-settings.state.d.ts +3 -6
- package/libraries/modules/user-settings/user-settings.state.d.ts.map +1 -1
- package/libraries/resolvers/index.d.ts +0 -3
- package/libraries/resolvers/index.d.ts.map +1 -1
- package/libraries/service-proxy/cloud-service-proxies.d.ts +35 -111
- package/libraries/service-proxy/cloud-service-proxies.d.ts.map +1 -1
- package/libraries/service-proxy/identity-service-proxies.d.ts +0 -53
- package/libraries/service-proxy/identity-service-proxies.d.ts.map +1 -1
- package/libraries/service-proxy/service-proxy.module.d.ts.map +1 -1
- package/libraries/services/auth-token.service.d.ts +4 -0
- package/libraries/services/auth-token.service.d.ts.map +1 -1
- package/libraries/services/refresh-token.service.d.ts +3 -4
- package/libraries/services/refresh-token.service.d.ts.map +1 -1
- package/libraries/services/smartpark.service.d.ts +3 -1
- package/libraries/services/smartpark.service.d.ts.map +1 -1
- package/libraries/services/tenant.service.d.ts +3 -6
- package/libraries/services/tenant.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/esm2022/libraries/resolvers/mobile-command-center-module.resolver.mjs +0 -53
- package/esm2022/libraries/resolvers/mobile-config.resolver.mjs +0 -21
- package/esm2022/libraries/resolvers/mobile-version.resolver.mjs +0 -24
- package/libraries/resolvers/mobile-command-center-module.resolver.d.ts +0 -21
- package/libraries/resolvers/mobile-command-center-module.resolver.d.ts.map +0 -1
- package/libraries/resolvers/mobile-config.resolver.d.ts +0 -12
- package/libraries/resolvers/mobile-config.resolver.d.ts.map +0 -1
- package/libraries/resolvers/mobile-version.resolver.d.ts +0 -13
- package/libraries/resolvers/mobile-version.resolver.d.ts.map +0 -1
package/esm2022/libraries/modules/alerts-and-notifications/alerts-and-notifications.state.mjs
CHANGED
|
@@ -9,7 +9,6 @@ import { CommandNotificationBorderClass, CommandNotificationType } from '../../c
|
|
|
9
9
|
import { CommandNotificationComponent } from '../../components/notification/command-notification/command-notification.component';
|
|
10
10
|
import { NotificationClass, NotificationHPositions, NotificationVPositions } from '../../components/notification/notification-config';
|
|
11
11
|
import { ONE_SECOND_IN_MILLISECONDS } from '../../constants/global-constants';
|
|
12
|
-
import { VERSION_MOBILE_LATEST } from '../../constants/version-constants';
|
|
13
12
|
import { AppType } from '../../enums/app-type.enum';
|
|
14
13
|
import { Localization } from '../../enums/localization.enum';
|
|
15
14
|
import { AppModule, DynamicPricingTriggerAction, FacilityRemoteCommandTypes, HandlingAlertDto, HandlingDynamicPricingConditionDto, NotificationSeverity, NotificationType, PeripheralEquipmentError, PermissionType, SettingsCategory, SparkSettingsDto } from '../../service-proxy/cloud-service-proxies';
|
|
@@ -18,7 +17,7 @@ import { FacilityState } from '../facility/facility.state';
|
|
|
18
17
|
import { ParkManagerState } from '../park-manager/park-manager.state';
|
|
19
18
|
import { SidenavState } from '../sidenav/sidenav.state';
|
|
20
19
|
import { UpdateUserSettingsAction } from '../user-settings/user-settings.actions';
|
|
21
|
-
import { AlertChangedAction, ClearAlertsAndNotificationsAction, HandleAlertsAction, HandledNotificationAction, HandleNotificationAction, LoadAlertsAndNotificationsAction,
|
|
20
|
+
import { AlertChangedAction, ClearAlertsAndNotificationsAction, HandleAlertsAction, HandledNotificationAction, HandleNotificationAction, LoadAlertsAndNotificationsAction, NotificationChangedAction, RemoveExpiredAlertsAndNotificationsAction, UpdateUserAlertsPreferencesAction, UpdateUserNotificaitonsPreferencesAction } from './alerts-and-notifications.actions';
|
|
22
21
|
import * as i0 from "@angular/core";
|
|
23
22
|
import * as i1 from "@ngxs/store";
|
|
24
23
|
import * as i2 from "../../services/app-config.service";
|
|
@@ -31,7 +30,7 @@ import * as i8 from "../../components/notification/command-notification/command-
|
|
|
31
30
|
import * as i9 from "../../services";
|
|
32
31
|
import * as i10 from "../../service-proxy/rpc-service-proxies";
|
|
33
32
|
let AlertsAndNotificationsState = class AlertsAndNotificationsState {
|
|
34
|
-
constructor(store, appConfigService, modalService, translateService, alertsAndNotificationsCloudServiceProxy, alertNotificationService, alertsAndNotificationsService, commandNotificationService, facilityCommandsConfigService, facilityRpcServiceProxy
|
|
33
|
+
constructor(store, appConfigService, modalService, translateService, alertsAndNotificationsCloudServiceProxy, alertNotificationService, alertsAndNotificationsService, commandNotificationService, facilityCommandsConfigService, facilityRpcServiceProxy) {
|
|
35
34
|
this.store = store;
|
|
36
35
|
this.appConfigService = appConfigService;
|
|
37
36
|
this.modalService = modalService;
|
|
@@ -42,7 +41,6 @@ let AlertsAndNotificationsState = class AlertsAndNotificationsState {
|
|
|
42
41
|
this.commandNotificationService = commandNotificationService;
|
|
43
42
|
this.facilityCommandsConfigService = facilityCommandsConfigService;
|
|
44
43
|
this.facilityRpcServiceProxy = facilityRpcServiceProxy;
|
|
45
|
-
this.mobileCloudServiceProxy = mobileCloudServiceProxy;
|
|
46
44
|
this.pkMatches = (notificationDto, notificationPK) => this.notificationPK(notificationDto, notificationDto.guid) === notificationPK;
|
|
47
45
|
this.stateMatches = (alertDto, eventState) => alertDto.eventState === eventState;
|
|
48
46
|
this.alertPK = (alertDto, guid) => `${guid}_${alertDto.parkId}_${alertDto.readerID}_${alertDto.deviceID}_${alertDto.eventDescription}`;
|
|
@@ -86,16 +84,6 @@ let AlertsAndNotificationsState = class AlertsAndNotificationsState {
|
|
|
86
84
|
this.recalculateBadgeAndSeverity(ctx);
|
|
87
85
|
}))));
|
|
88
86
|
}
|
|
89
|
-
onLoadMobileNotificationsAction(ctx, { minutesAgo }) {
|
|
90
|
-
const alertsAndNotifications$ = this.mobileCloudServiceProxy.mobileGetAlertsAndNotificationsV2(minutesAgo, VERSION_MOBILE_LATEST);
|
|
91
|
-
return alertsAndNotifications$.pipe(tap(alertsAndNotifications => {
|
|
92
|
-
ctx.patchState({
|
|
93
|
-
alerts: alertsAndNotifications.data.alerts ?? [],
|
|
94
|
-
notifications: alertsAndNotifications.data.notifications ?? [],
|
|
95
|
-
});
|
|
96
|
-
this.recalculateBadgeAndSeverity(ctx);
|
|
97
|
-
}));
|
|
98
|
-
}
|
|
99
87
|
onClearAlertsAndNotificationsAction(ctx, _) {
|
|
100
88
|
ctx.patchState({
|
|
101
89
|
alerts: [],
|
|
@@ -511,7 +499,7 @@ let AlertsAndNotificationsState = class AlertsAndNotificationsState {
|
|
|
511
499
|
}
|
|
512
500
|
}
|
|
513
501
|
}
|
|
514
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertsAndNotificationsState, deps: [{ token: i1.Store }, { token: i2.AppConfigService }, { token: i3.ModalService }, { token: i4.TranslateService }, { token: i5.AlertsAndNotificationsCloudServiceProxy }, { token: i6.AlertNotificationService }, { token: i7.AlertsAndNotificationsService }, { token: i8.CommandNotificationService }, { token: i9.BaseFacilityCommandsConfigService }, { token: i10.FacilityRpcServiceProxy }
|
|
502
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertsAndNotificationsState, deps: [{ token: i1.Store }, { token: i2.AppConfigService }, { token: i3.ModalService }, { token: i4.TranslateService }, { token: i5.AlertsAndNotificationsCloudServiceProxy }, { token: i6.AlertNotificationService }, { token: i7.AlertsAndNotificationsService }, { token: i8.CommandNotificationService }, { token: i9.BaseFacilityCommandsConfigService }, { token: i10.FacilityRpcServiceProxy }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
515
503
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertsAndNotificationsState }); }
|
|
516
504
|
};
|
|
517
505
|
__decorate([
|
|
@@ -523,9 +511,6 @@ __decorate([
|
|
|
523
511
|
__decorate([
|
|
524
512
|
Action(LoadAlertsAndNotificationsAction)
|
|
525
513
|
], AlertsAndNotificationsState.prototype, "onLoadAlertsAndNotificationsAction", null);
|
|
526
|
-
__decorate([
|
|
527
|
-
Action(LoadMobileNotificationsAction)
|
|
528
|
-
], AlertsAndNotificationsState.prototype, "onLoadMobileNotificationsAction", null);
|
|
529
514
|
__decorate([
|
|
530
515
|
Action(ClearAlertsAndNotificationsAction)
|
|
531
516
|
], AlertsAndNotificationsState.prototype, "onClearAlertsAndNotificationsAction", null);
|
|
@@ -578,5 +563,5 @@ AlertsAndNotificationsState = __decorate([
|
|
|
578
563
|
export { AlertsAndNotificationsState };
|
|
579
564
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertsAndNotificationsState, decorators: [{
|
|
580
565
|
type: Injectable
|
|
581
|
-
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.AppConfigService }, { type: i3.ModalService }, { type: i4.TranslateService }, { type: i5.AlertsAndNotificationsCloudServiceProxy }, { type: i6.AlertNotificationService }, { type: i7.AlertsAndNotificationsService }, { type: i8.CommandNotificationService }, { type: i9.BaseFacilityCommandsConfigService }, { type: i10.FacilityRpcServiceProxy }
|
|
582
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnRzLWFuZC1ub3RpZmljYXRpb25zLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL2FsZXJ0cy1hbmQtbm90aWZpY2F0aW9ucy9hbGVydHMtYW5kLW5vdGlmaWNhdGlvbnMuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFFbkgsT0FBTyxFQUFFLDhCQUE4QixFQUE2Qix1QkFBdUIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ3BMLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1GQUFtRixDQUFDO0FBRWpJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3RJLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBYyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0QsT0FBTyxFQUM4QyxTQUFTLEVB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RUFBRSxFQUFFO1lBQ1YsYUFBYSxFQUFFLEVBQUU7WUFDakIsOEJBQThCLEVBQUUsb0JBQW9CLENBQUMsR0FBRztZQUN4RCxVQUFVLEVBQUUsQ0FBQztZQUNiLFlBQVksRUFBRSxLQUFLO1lBQ25CLGdCQUFnQixFQUFFLEVBQUU7U0FDckI7S0FDRixDQUFDO0dBRVcsMkJBQTJCLENBb21CdkM7OzRGQXBtQlksMkJBQTJCO2tCQUR2QyxVQUFVO2tkQTBDVCxtQ0FBbUMsTUFVbkMsMENBQTBDLE1BVTFDLGtDQUFrQyxNQWVsQywrQkFBK0IsTUFjL0IsbUNBQW1DLE1BWW5DLDJDQUEyQyxNQWEzQyxvQkFBb0IsTUFpQ3BCLDBCQUEwQixNQWdCMUIsMkJBQTJCLE1BNkIzQiwwQkFBMEIsTUF3QjFCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIGZyb20sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2xvdWRDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jbG91ZC1jb25maXJtLWRpYWxvZy9jbG91ZC1jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxlcnROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vYWxlcnQtbm90aWZpY2F0aW9uL2FsZXJ0LW5vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1hbmROb3RpZmljYXRpb25Cb3JkZXJDbGFzcywgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZywgQ29tbWFuZE5vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbi9jb21tYW5kLW5vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tYW5kTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ2xhc3MsIE5vdGlmaWNhdGlvbkhQb3NpdGlvbnMsIE5vdGlmaWNhdGlvblZQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24tY29uZmlnJztcbmltcG9ydCB7IE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2dsb2JhbC1jb25zdGFudHMnO1xuaW1wb3J0IHsgVkVSU0lPTl9NT0JJTEVfTEFURVNULCBWRVJTSU9OX1YxIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3ZlcnNpb24tY29uc3RhbnRzJztcbmltcG9ydCB7IEFwcFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9hcHAtdHlwZS5lbnVtJztcbmltcG9ydCB7IExvY2FsaXphdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL2xvY2FsaXphdGlvbi5lbnVtJztcbmltcG9ydCB7IENsb3VkQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Nsb3VkLWNvbmZpcm0tZGlhbG9nLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEFsZXJ0RHRvLCBBbGVydHNBbmROb3RpZmljYXRpb25zQ2xvdWRTZXJ2aWNlUHJveHksIEFwcE1vZHVsZSwgRHluYW1pY1ByaWNpbmdUcmlnZ2VyQWN0aW9uLCBGYWNpbGl0eVJlbW90ZUNvbW1hbmRUeXBlcywgSGFuZGxpbmdBbGVydER0byxcbiAgSGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bywgTW9iaWxlQ2xvdWRTZXJ2aWNlUHJveHksIE5vdGlmaWNhdGlvbkR0bywgTm90aWZpY2F0aW9uU2V2ZXJpdHksIE5vdGlmaWNhdGlvblR5cGUsXG4gIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvciwgUGVybWlzc2lvblR5cGUsIFNldHRpbmdzQ2F0ZWdvcnksIFNwYXJrU2V0dGluZ3NEdG9cbn0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgRmFjaWxpdHlScGNTZXJ2aWNlUHJveHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L3JwYy1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQmFzZUZhY2lsaXR5Q29tbWFuZHNDb25maWdTZXJ2aWNlLCBCYXNlRmFjaWxpdHlDb21tYW5kc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTnVtYmVyTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbGFuZy51dGlsJztcbmltcG9ydCB7IFNlc3Npb25TdGF0ZSB9IGZyb20gJy4uL2F1dGgvc2Vzc2lvbi5zdGF0ZSc7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vZmFjaWxpdHkvZmFjaWxpdHkuc3RhdGUnO1xuaW1wb3J0IHsgUGFya01hbmFnZXJTdGF0ZSB9IGZyb20gJy4uL3BhcmstbWFuYWdlci9wYXJrLW1hbmFnZXIuc3RhdGUnO1xuaW1wb3J0IHsgU2lkZW5hdlN0YXRlIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LnN0YXRlJztcbmltcG9ydCB7IFVwZGF0ZVVzZXJTZXR0aW5nc0FjdGlvbiB9IGZyb20gJy4uL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFsZXJ0Q2hhbmdlZEFjdGlvbiwgQ2xlYXJBbGVydHNBbmROb3RpZmljYXRpb25zQWN0aW9uLCBIYW5kbGVBbGVydHNBY3Rpb24sIEhhbmRsZWROb3RpZmljYXRpb25BY3Rpb24sIEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbixcbiAgTG9hZEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNBY3Rpb24sIExvYWRNb2JpbGVOb3RpZmljYXRpb25zQWN0aW9uLCBOb3RpZmljYXRpb25DaGFuZ2VkQWN0aW9uLCBSZW1vdmVFeHBpcmVkQWxlcnRzQW5kTm90aWZpY2F0aW9uc0FjdGlvbixcbiAgVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uLCBVcGRhdGVVc2VyTm90aWZpY2FpdG9uc1ByZWZlcmVuY2VzQWN0aW9uXG59IGZyb20gJy4vYWxlcnRzLWFuZC1ub3RpZmljYXRpb25zLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWxlcnRzQW5kTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuL2FsZXJ0cy1hbmQtbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWwge1xuICBhbGVydHM6IEFsZXJ0RHRvW107XG4gIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdO1xuICBhZ2dyZWdhdGVkTm90aWZpY2F0aW9uU2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5O1xuICBiYWRnZVZhbHVlOiBudW1iZXIsXG4gIGRpc3BsYXlCYWRnZTogYm9vbGVhbixcbiAgbm90aWZpY2F0aW9uc01hcDogTnVtYmVyTWFwPG51bWJlcj47XG59XG5cbkBTdGF0ZTxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+KHtcbiAgbmFtZTogJ2FsZXJ0c0FuZE5vdGlmaWNhdGlvbnMnLFxuICBkZWZhdWx0czoge1xuICAgIGFsZXJ0czogW10sXG4gICAgbm90aWZpY2F0aW9uczogW10sXG4gICAgYWdncmVnYXRlZE5vdGlmaWNhdGlvblNldmVyaXR5OiBOb3RpZmljYXRpb25TZXZlcml0eS5Mb3csXG4gICAgYmFkZ2VWYWx1ZTogMCxcbiAgICBkaXNwbGF5QmFkZ2U6IGZhbHNlLFxuICAgIG5vdGlmaWNhdGlvbnNNYXA6IHt9LFxuICB9LFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBbGVydHNBbmROb3RpZmljYXRpb25zU3RhdGUge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNDbG91ZFNlcnZpY2VQcm94eTogQWxlcnRzQW5kTm90aWZpY2F0aW9uc0Nsb3VkU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlOiBBbGVydE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydHNBbmROb3RpZmljYXRpb25zU2VydmljZTogQWxlcnRzQW5kTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tYW5kTm90aWZpY2F0aW9uU2VydmljZTogQ29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYWNpbGl0eUNvbW1hbmRzQ29uZmlnU2VydmljZTogQmFzZUZhY2lsaXR5Q29tbWFuZHNDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmFjaWxpdHlScGNTZXJ2aWNlUHJveHk6IEZhY2lsaXR5UnBjU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgbW9iaWxlQ2xvdWRTZXJ2aWNlUHJveHk6IE1vYmlsZUNsb3VkU2VydmljZVByb3h5KSB7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgYWxlcnRzKHN0YXRlOiBBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWwpOiBBbGVydER0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuYWxlcnRzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIG5vdGlmaWNhdGlvbnMoc3RhdGU6IEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbCk6IE5vdGlmaWNhdGlvbkR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUubm90aWZpY2F0aW9ucztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBhZ2dyZWdhdGVkTm90aWZpY2F0aW9uU2V2ZXJpdHkoc3RhdGU6IEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbCk6IE5vdGlmaWNhdGlvblNldmVyaXR5IHtcbiAgICByZXR1cm4gc3RhdGUuYWdncmVnYXRlZE5vdGlmaWNhdGlvblNldmVyaXR5O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGJhZGdlVmFsdWUoc3RhdGU6IEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLmJhZGdlVmFsdWU7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZGlzcGxheUJhZGdlKHN0YXRlOiBBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUuZGlzcGxheUJhZGdlO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVVc2VyQWxlcnRzUHJlZmVyZW5jZXNBY3Rpb24pXG4gIG9uVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbD4sIGFjdGlvbjogVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uKSB7XG4gICAgY29uc3Qgc2V0dGluZzogU3BhcmtTZXR0aW5nc0R0byA9IG5ldyBTcGFya1NldHRpbmdzRHRvKHtcbiAgICAgIGNhdGVnb3J5OiBTZXR0aW5nc0NhdGVnb3J5LkFsZXJ0c1ByZWZlcmVuY2VzLFxuICAgICAgc2V0dGluZ3NKc29uOiBKU09OLnN0cmluZ2lmeShhY3Rpb24udXNlck5vdGlmaWNhdGlvbnNQcmVmZXJlbmNlcyksXG4gICAgfSk7XG5cbiAgICBjdHguZGlzcGF0Y2gobmV3IFVwZGF0ZVVzZXJTZXR0aW5nc0FjdGlvbihzZXR0aW5nKSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZVVzZXJOb3RpZmljYWl0b25zUHJlZmVyZW5jZXNBY3Rpb24pXG4gIG9uVXBkYXRlVXNlck5vdGlmaWNhaXRvbnNQcmVmZXJlbmNlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCBhY3Rpb246IFVwZGF0ZVVzZXJOb3RpZmljYWl0b25zUHJlZmVyZW5jZXNBY3Rpb24pIHtcbiAgICBjb25zdCBzZXR0aW5nOiBTcGFya1NldHRpbmdzRHRvID0gbmV3IFNwYXJrU2V0dGluZ3NEdG8oe1xuICAgICAgY2F0ZWdvcnk6IFNldHRpbmdzQ2F0ZWdvcnkuTm90aWZpY2F0aW9uUHJlZmVyZW5jZXMsXG4gICAgICBzZXR0aW5nc0pzb246IEpTT04uc3RyaW5naWZ5KGFjdGlvbi51c2VyTm90aWZpY2F0aW9uc1ByZWZlcmVuY2VzKSxcbiAgICB9KTtcblxuICAgIGN0eC5kaXNwYXRjaChuZXcgVXBkYXRlVXNlclNldHRpbmdzQWN0aW9uKHNldHRpbmcpKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNBY3Rpb24pXG4gIG9uTG9hZEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwgeyBtaW51dGVzQWdvIH06IExvYWRBbGVydHNBbmROb3RpZmljYXRpb25zQWN0aW9uKSB7XG4gICAgY29uc3QgYWxlcnRzQW5kTm90aWZpY2F0aW9ucyQgPSB0aGlzLmFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNDbG91ZFNlcnZpY2VQcm94eS5nZXRBbGVydHNBbmROb3RpZmljYXRpb25zKG1pbnV0ZXNBZ28pO1xuICAgIHJldHVybiBhbGVydHNBbmROb3RpZmljYXRpb25zJC5waXBlKHN3aXRjaE1hcChhbGVydHNBbmROb3RpZmljYXRpb25zID0+XG4gICAgICBmcm9tKHRoaXMuYWxlcnRzQW5kTm90aWZpY2F0aW9uc1NlcnZpY2UucG9wdWxhdGVBbGVydHNBbmROb3RpZmljYXRpb25zKGFsZXJ0c0FuZE5vdGlmaWNhdGlvbnMuZGF0YSkpLnBpcGUodGFwKHBvcHVsYXRlTm90aWZpY2F0aW9ucyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBhbGVydHM6IHBvcHVsYXRlTm90aWZpY2F0aW9ucy5hbGVydHMgPz8gW10sXG4gICAgICAgICAgbm90aWZpY2F0aW9uczogcG9wdWxhdGVOb3RpZmljYXRpb25zLm5vdGlmaWNhdGlvbnMgPz8gW10sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGVCYWRnZUFuZFNldmVyaXR5KGN0eCk7XG4gICAgICB9KSlcbiAgICApKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZE1vYmlsZU5vdGlmaWNhdGlvbnNBY3Rpb24pXG4gIG9uTG9hZE1vYmlsZU5vdGlmaWNhdGlvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwgeyBtaW51dGVzQWdvIH06IExvYWRNb2JpbGVOb3RpZmljYXRpb25zQWN0aW9uKSB7XG4gICAgY29uc3QgYWxlcnRzQW5kTm90aWZpY2F0aW9ucyQgPSB0aGlzLm1vYmlsZUNsb3VkU2VydmljZVByb3h5Lm1vYmlsZUdldEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNWMihtaW51dGVzQWdvLCBWRVJTSU9OX01PQklMRV9MQVRFU1QpO1xuXG4gICAgcmV0dXJuIGFsZXJ0c0FuZE5vdGlmaWNhdGlvbnMkLnBpcGUodGFwKGFsZXJ0c0FuZE5vdGlmaWNhdGlvbnMgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBhbGVydHM6IGFsZXJ0c0FuZE5vdGlmaWNhdGlvbnMuZGF0YS5hbGVydHMgPz8gW10sXG4gICAgICAgIG5vdGlmaWNhdGlvbnM6IGFsZXJ0c0FuZE5vdGlmaWNhdGlvbnMuZGF0YS5ub3RpZmljYXRpb25zID8/IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVjYWxjdWxhdGVCYWRnZUFuZFNldmVyaXR5KGN0eCk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNBY3Rpb24pXG4gIG9uQ2xlYXJBbGVydHNBbmROb3RpZmljYXRpb25zQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbD4sIF86IENsZWFyQWxlcnRzQW5kTm90aWZpY2F0aW9uc0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGFsZXJ0czogW10sXG4gICAgICBub3RpZmljYXRpb25zOiBbXSxcbiAgICAgIGFnZ3JlZ2F0ZWROb3RpZmljYXRpb25TZXZlcml0eTogTm90aWZpY2F0aW9uU2V2ZXJpdHkuTG93LFxuICAgICAgYmFkZ2VWYWx1ZTogMCxcbiAgICAgIGRpc3BsYXlCYWRnZTogZmFsc2UsXG4gICAgICBub3RpZmljYXRpb25zTWFwOiB7fVxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihSZW1vdmVFeHBpcmVkQWxlcnRzQW5kTm90aWZpY2F0aW9uc0FjdGlvbilcbiAgb25SZW1vdmVFeHBpcmVkQWxlcnRzQW5kTm90aWZpY2F0aW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCBhY3Rpb246IFJlbW92ZUV4cGlyZWRBbGVydHNBbmROb3RpZmljYXRpb25zQWN0aW9uKSB7XG4gICAgY29uc3Qgbm93VXRjID0gbW9tZW50LnV0YygpOyAvLyBDdXJyZW50IFVUQyB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzXG4gICAgY29uc3QgbWludXRlc0FnbyA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5hY3RpdmVOb3RpZmljYXRpb25zLm1pbnV0ZXNBZ287XG4gICAgY29uc3QgYWxlcnRzID0gY3R4LmdldFN0YXRlKCkuYWxlcnRzLmZpbHRlcihhbGVydCA9PiBtb21lbnQudXRjKGFsZXJ0LmNsb3VkRXZlbnREYXRlVGltZSkuYWRkKG1pbnV0ZXNBZ28sICdtaW51dGVzJykuaXNBZnRlcihub3dVdGMpKTtcblxuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGFsZXJ0c1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZWNhbGN1bGF0ZUJhZGdlQW5kU2V2ZXJpdHkoY3R4KTtcbiAgfVxuXG4gIEBBY3Rpb24oQWxlcnRDaGFuZ2VkQWN0aW9uKVxuICBvbkFsZXJ0Q2hhbmdlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCB7IGFsZXJ0LCBndWlkIH06IEFsZXJ0Q2hhbmdlZEFjdGlvbikge1xuICAgIGlmIChhbGVydCAmJiB0aGlzLmFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNTZXJ2aWNlLmlzQWxlcnRUeXBlRGVmaW5lZChhbGVydC5ldmVudERlc2NyaXB0aW9uKSkge1xuICAgICAgdGhpcy5oYW5kbGVBbGVydEZvckNsb3NpbmcoY3R4LCBhbGVydCwgZ3VpZCk7XG5cbiAgICAgIGlmIChhbGVydC5ldmVudFN0YXRlKSB7XG5cbiAgICAgICAgaWYgKCFhbGVydC5kZXZpY2VOYW1lKSB7XG4gICAgICAgICAgY29uc3QgcGFya0RldmljZXMgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFBhcmtNYW5hZ2VyU3RhdGUuZGV2aWNlcyk7XG4gICAgICAgICAgYWxlcnQuZGV2aWNlTmFtZSA9IHBhcmtEZXZpY2VzPy5maW5kKGQgPT4gZC5pZCA9PT0gYWxlcnQuZGV2aWNlSUQpPy5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhbGVydC5wYXJrTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGxvdHNNYXAgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZmFjaWxpdHlEaWN0aW9uYXJ5KVtndWlkXTtcbiAgICAgICAgICBpZiAobG90c01hcCkge1xuICAgICAgICAgICAgYWxlcnQucGFya05hbWUgPSBsb3RzTWFwW2FsZXJ0LnBhcmtJZF0/Lm5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzQW5kRGlzcGxheUFsZXJ0KGN0eCwgYWxlcnQsIGd1aWQpO1xuXG4gICAgICAgIC8vIFB1c2ggdGhlIG5ldyBhbGVydCB0byB0aGUgYXJyYXkgYW5kIHNhdmUgaW4gc3RhdGVcbiAgICAgICAgY29uc3QgYWxlcnRzID0gY3R4LmdldFN0YXRlKCkuYWxlcnRzO1xuICAgICAgICBhbGVydHMudW5zaGlmdChhbGVydCk7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBhbGVydHNcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZWNhbGN1bGF0ZUJhZGdlQW5kU2V2ZXJpdHkoY3R4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKE5vdGlmaWNhdGlvbkNoYW5nZWRBY3Rpb24pXG4gIG9uTm90aWZpY2F0aW9uQ2hhbmdlQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbD4sIHtcbiAgICBub3RpZmljYXRpb24sXG4gICAgZ3VpZFxuICB9OiBOb3RpZmljYXRpb25DaGFuZ2VkQWN0aW9uKSB7XG4gICAgc3dpdGNoIChub3RpZmljYXRpb24udHlwZSkge1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOlxuICAgICAgICB0aGlzLm9uRHluYW1pY1ByaWNpbmdDb25kaXRpb25DaGFuZ2UoY3R4LCBub3RpZmljYXRpb24sIGd1aWQpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5sb2coXCJ1bnN1cHBvcnRlZCBub3RpZmljYXRpb24gdHlwZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihIYW5kbGVkTm90aWZpY2F0aW9uQWN0aW9uKVxuICBvbkhhbmRsZWROb3RpZmljYXRpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwge1xuICAgIG5vdGlmaWNhdGlvbkR0byxcbiAgICBndWlkXG4gIH06IEhhbmRsZWROb3RpZmljYXRpb25BY3Rpb24pIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0gY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9ucztcbiAgICBjb25zdCBub3RpZmljYXRpb25zTWFwID0geyAuLi5jdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zTWFwIH07XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG5cbiAgICAvLyBXaGV0aGVyIHdlIHdhbnQgdG8gY2xvc2Ugb3IgaGF2ZSBhIGR1cGxpY2F0ZSBhbGVydFxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbkV4aXN0cyA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT4gdGhpcy5wa01hdGNoZXMobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25QSykpO1xuICAgIGlmIChub3RpZmljYXRpb25FeGlzdHMpIHtcbiAgICAgIGNvbnN0IHRvYXN0SWQgPSBub3RpZmljYXRpb25zTWFwW25vdGlmaWNhdGlvblBLXTtcbiAgICAgIHRoaXMuYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlLmNsZWFyVG9hc3RzKHRvYXN0SWQpO1xuICAgICAgZGVsZXRlIG5vdGlmaWNhdGlvbnNNYXBbbm90aWZpY2F0aW9uUEtdO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmZpbHRlcihub3RpZmljYXRpb24gPT5cbiAgICAgICAgISh0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLmd1aWQpID09PSBub3RpZmljYXRpb25QSykpO1xuXG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNNYXAsXG4gICAgICAgIG5vdGlmaWNhdGlvbnM6IGZpbHRlcmVkTm90aWZpY2F0aW9ucyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlY2FsY3VsYXRlQmFkZ2VBbmRTZXZlcml0eShjdHgpO1xuICAgICAgdGhpcy5jbG9zZU5vdGlmaWNhdGlvbkRpYWxvZ3Mobm90aWZpY2F0aW9uUEspO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oSGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uKVxuICBvbkhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCB7XG4gICAgbm90aWZpY2F0aW9uRHRvLFxuICAgIGd1aWRcbiAgfTogSGFuZGxlTm90aWZpY2F0aW9uQWN0aW9uKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IGN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIG5vdGlmaWNhdGlvbiB3aXRoIHRoZSBoYW5kbGUgdXNlciAtIGFuZCBzYXZlIGluIHN0YXRlXG4gICAgc3dpdGNoIChub3RpZmljYXRpb25EdG8udHlwZSkge1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOlxuICAgICAgICB0aGlzLnVwZGF0ZUhhbmRsZWRVc2VyRm9yRHluYW1pY1ByaWNpbmdOb3RpZmljYXRpb24oY3R4LCBub3RpZmljYXRpb25zLCBub3RpZmljYXRpb25EdG8sIG5vdGlmaWNhdGlvblBLKTtcbiAgICAgICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYGR5bmFtaWMtcHJpY2luZy1jb25maXJtYXRpb24tbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIENsb3NlIGNyaXRpY2FsIGFsZXJ0IG1vZGFsXG4gICAgdGhpcy5jbG9zZURpYWxvZ0J5SWQoYG5vdGlmaWNhdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWApO1xuICB9XG5cbiAgQEFjdGlvbihIYW5kbGVBbGVydHNBY3Rpb24pXG4gIG9uSGFuZGxlQWxlcnRzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbD4sIHsgYWxlcnREdG8sIGd1aWQgfTogSGFuZGxlQWxlcnRzQWN0aW9uKSB7XG4gICAgY29uc3QgYWxlcnRQSyA9IHRoaXMuYWxlcnRQSyhhbGVydER0bywgZ3VpZCk7XG4gICAgY29uc3QgYWxlcnRzID0gY3R4LmdldFN0YXRlKCkuYWxlcnRzO1xuICAgIGNvbnN0IGV4aXN0QWxlcnRJbmRleCA9IGFsZXJ0cy5maW5kSW5kZXgoYWxlcnQgPT4gdGhpcy5hbGVydFBLKGFsZXJ0LCBndWlkKSA9PT0gYWxlcnRQSyAmJlxuICAgICAgdGhpcy5zdGF0ZU1hdGNoZXMoYWxlcnQsIGFsZXJ0RHRvLmV2ZW50U3RhdGUpKTtcblxuICAgIGlmIChleGlzdEFsZXJ0SW5kZXggIT09IC0xKSB7XG4gICAgICBhbGVydHNbZXhpc3RBbGVydEluZGV4XS5oYW5kbGluZ0J5VXNlciA9IGFsZXJ0RHRvLmhhbmRsaW5nQnlVc2VyO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBhbGVydHMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlQWxlcnREaWFsb2dzKGFsZXJ0UEspO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ3JpdGljYWxBbGVydERpYWxvZyhhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFsZXJ0VHlwZU5hbWUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3JbYWxlcnQuZXZlbnREZXNjcmlwdGlvbl0pO1xuICAgIGNvbnN0IGNsb3VkQ29uZmlybURpYWxvZ0RhdGE6IENsb3VkQ29uZmlybURpYWxvZ0RhdGEgPSB7XG4gICAgICBjb25maXJtTWVzc2FnZXM6IFt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uY3JpdGljYWxfYWxlcnRfbWVzc2FnZSwge1xuICAgICAgICBhbGVydFR5cGVOYW1lXG4gICAgICB9KV0sXG4gICAgICBjb25maXJtVGl0bGU6IGFsZXJ0VHlwZU5hbWUsXG4gICAgICBva1RleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi55ZXMpLFxuICAgICAgY2FuY2VsVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNhbmNlbCksXG4gICAgICBkZXZpY2U6IHtcbiAgICAgICAgY29tbUlkOiBhbGVydC5yZWFkZXJJRC50b1N0cmluZygpLFxuICAgICAgICBuYW1lOiBhbGVydC5kZXZpY2VOYW1lXG4gICAgICB9LFxuICAgICAgcGFya05hbWU6IGFsZXJ0LnBhcmtOYW1lLFxuICAgICAgem9uZU5hbWU6IGFsZXJ0LnBhcmtab25lTmFtZSxcbiAgICAgIG5vdGlmaWNhdGlvblNldmVyaXR5OiBOb3RpZmljYXRpb25TZXZlcml0eS5Dcml0aWNhbCxcbiAgICAgIG5vdGlmaWNhdGlvblNldmVyaXR5SW52ZXJ0OiB0cnVlLFxuICAgICAgZGVzY3JpcHRpb246IGFsZXJ0LmRlc2NyaXB0aW9uLFxuICAgICAgY2FyUGxhdGU6IGFsZXJ0LmNhclBsYXRlLFxuICAgIH07XG5cbiAgICBjb25zdCBhbGVydFBLID0gdGhpcy5hbGVydFBLKGFsZXJ0LCBndWlkKTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuPGJvb2xlYW4+KENsb3VkQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgcGFuZWxDbGFzczogYHRiLWNyaXRpY2FsLW1vZGFsLSR7YWxlcnRQS31gLFxuICAgICAgZGF0YTogY2xvdWRDb25maXJtRGlhbG9nRGF0YSxcbiAgICAgIGlkOiBgbm90aWZpY2F0aW9uLW1vZGFsLSR7YWxlcnRQS31gLFxuICAgICAgZW5hYmxlZE1pbmltaXplZDogdHJ1ZSxcbiAgICB9KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3QgdXNlckluZm8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS51c2VySW5mbyk7XG4gICAgICAgIGNvbnN0IGhhbmRsZUFsZXJ0OiBIYW5kbGluZ0FsZXJ0RHRvID0gbmV3IEhhbmRsaW5nQWxlcnREdG8oe1xuICAgICAgICAgIGd1aWQ6IGd1aWQsXG4gICAgICAgICAgcGFya0lkOiBhbGVydC5wYXJrSWQsXG4gICAgICAgICAgcGFya05hbWU6IGFsZXJ0LnBhcmtOYW1lLFxuICAgICAgICAgIGRldmljZUlkOiBhbGVydC5kZXZpY2VJRCxcbiAgICAgICAgICBldmVudERlc2NyaXB0aW9uOiBhbGVydC5ldmVudERlc2NyaXB0aW9uLFxuICAgICAgICAgIHVzZXJGdWxsTmFtZTogdXNlckluZm8uZGlzcGxheU5hbWUsXG4gICAgICAgICAgaWQ6IGFsZXJ0LmlkLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hbGVydHNBbmROb3RpZmljYXRpb25zQ2xvdWRTZXJ2aWNlUHJveHkuaGFuZGxlQWxlcnROb3RpZmljYXRpb24oYWxlcnQucGFya0lkLCBoYW5kbGVBbGVydCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5hbGVydHNBbmROb3RpZmljYXRpb25zU2VydmljZS50cmlnZ2VyQWxlcnRUb2FzdEV2ZW50KHJlcy5kYXRhIHx8IGFsZXJ0LCBndWlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbk5vdGlmaWNhdGlvbkRpYWxvZyhub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY2xvdWRDb25maXJtRGlhbG9nRGF0YTogQ2xvdWRDb25maXJtRGlhbG9nRGF0YSA9IHtcbiAgICAgIGNvbmZpcm1NZXNzYWdlczogW3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5keW5hbWljX3ByaWNpbmdfYWxlcnRfbWVzc2FnZSldLFxuICAgICAgY29uZmlybVRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZHluYW1pY19wcmljaW5nX2FsZXJ0X3RpdGxlKSxcbiAgICAgIGNvbmZpcm1TdWJUaXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmR5bmFtaWNfcHJpY2luZ19hbGVydF9zdWJfdGl0bGUsIHsgY29uZGl0aW9uTmFtZTogbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmNvbmRpdGlvbk5hbWUgfSksXG4gICAgICBwYXJrTmFtZTogbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLnBhcmtpbmdMb3ROYW1lLFxuICAgICAgem9uZU5hbWU6IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi56b25lPy5uYW1lLFxuICAgICAgb2tUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24ueWVzKSxcbiAgICAgIGNhbmNlbFRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5jYW5jZWwpLFxuICAgIH07XG5cbiAgICBjb25zdCBub3RpZmljYXRpb25QSyA9IHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uLCBndWlkKTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuPGJvb2xlYW4+KENsb3VkQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgcGFuZWxDbGFzczogYHRiLWR5bmFtaWMtcHJpY2luZy1jb25kaXRpb24tbW9kYWwtJHtub3RpZmljYXRpb24uaWR9YCxcbiAgICAgIGRhdGE6IGNsb3VkQ29uZmlybURpYWxvZ0RhdGEsXG4gICAgICBpZDogYG5vdGlmaWNhdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWAsXG4gICAgICBlbmFibGVkTWluaW1pemVkOiB0cnVlLFxuICAgIH0pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBjb25zdCB1c2VySW5mbyA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2Vzc2lvblN0YXRlLnVzZXJJbmZvKTtcbiAgICAgICAgY29uc3QgaGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bzogSGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0byA9IG5ldyBIYW5kbGluZ0R5bmFtaWNQcmljaW5nQ29uZGl0aW9uRHRvKHtcbiAgICAgICAgICBjbG91ZFBhcmtJZDogbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmNsb3VkUGFya0lkLFxuICAgICAgICAgIHVzZXJGdWxsTmFtZTogdXNlckluZm8uZGlzcGxheU5hbWUsXG4gICAgICAgICAgaWQ6IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5pZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hbGVydHNBbmROb3RpZmljYXRpb25zQ2xvdWRTZXJ2aWNlUHJveHkuaGFuZGxlRHluYW1pY1ByaWNpbmdDb25kaXRpb25Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmNsb3VkUGFya0lkLCBoYW5kbGluZ0R5bmFtaWNQcmljaW5nQ29uZGl0aW9uRHRvKS5waXBlKHN3aXRjaE1hcChyZXMgPT4ge1xuICAgICAgICAgIGNvbnN0IGRwYyA9IHJlcy5kYXRhIHx8IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbjtcbiAgICAgICAgICByZXR1cm4gdGhpcy5mYWNpbGl0eVJwY1NlcnZpY2VQcm94eS5nZXRCYXNlUmF0ZUJ5SWQoZHBjLmd1aWQsIGRwYy5wYXJraW5nTG90SWQsIGRwYy5yYXRlSWQpLnBpcGUoXG4gICAgICAgICAgICB0YXAocmF0ZSA9PiB7XG4gICAgICAgICAgICAgIGRwYy5yYXRlTmFtZSA9IHJhdGU/LmRhdGE/Lm5hbWU7XG4gICAgICAgICAgICAgIHRoaXMuYWxlcnRzQW5kTm90aWZpY2F0aW9uc1NlcnZpY2UudHJpZ2dlckR5bmFtaWNQcmljaW5nVG9hc3RFdmVudChkcGMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KSkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlBbGVydChjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCBhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHRoaXMuYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlLmRpc3BsYXlBbGVydChhbGVydCwgZ3VpZCk7XG4gICAgaWYgKG5vdGlmaWNhdGlvbikge1xuICAgICAgY29uc3Qgbm90aWZpY2F0aW9uc01hcCA9IHsgLi4uY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9uc01hcCB9O1xuICAgICAgY29uc3QgYWxlcnRQSyA9IHRoaXMuYWxlcnRQSyhhbGVydCwgZ3VpZCk7XG4gICAgICBub3RpZmljYXRpb25zTWFwW2FsZXJ0UEtdID0gbm90aWZpY2F0aW9uLnRvYXN0SWQ7XG5cbiAgICAgIG5vdGlmaWNhdGlvbi5vblRhcC5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRzQW5kTm90aWZpY2F0aW9uc1NlcnZpY2UudHJpZ2dlckFsZXJ0VG9hc3RFdmVudChhbGVydCwgZ3VpZCk7XG4gICAgICB9KTtcblxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zTWFwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZURpYWxvZ3MoZGlhbG9nSWRzOiBTZXQ8c3RyaW5nPik6IHZvaWQge1xuICAgIHRoaXMubW9kYWxTZXJ2aWNlLmdldE9wZW5EaWFsb2dzKCk/LmZvckVhY2goZGlhbG9nID0+IHtcbiAgICAgIGlmIChkaWFsb2dJZHMuaGFzKGRpYWxvZy5pZCkpIHtcbiAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlRGlhbG9nQnlJZChkaWFsb2dJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgb3BlbkRpYWxvZ3MgPSB0aGlzLm1vZGFsU2VydmljZS5nZXRPcGVuRGlhbG9ncygpO1xuICAgIGNvbnN0IGRpYWxvZyA9IG9wZW5EaWFsb2dzLmZpbmQoZGlhbG9nID0+IGRpYWxvZy5pZCA9PT0gZGlhbG9nSWQpO1xuXG4gICAgaWYgKGRpYWxvZykge1xuICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUFsZXJ0RGlhbG9ncyhhbGVydFBLOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbEtleXMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICAgICAgYG5vdGlmaWNhdGlvbi1tb2RhbC0ke2FsZXJ0UEt9YCxcbiAgICAgIGBscHItbWlzbWF0Y2gtbW9kYWwtJHthbGVydFBLfWAsXG4gICAgICBgbG9zdC10aWNrZXQtbW9kYWwtJHthbGVydFBLfWAsXG4gICAgXSk7XG5cbiAgICB0aGlzLmNsb3NlRGlhbG9ncyhtb2RhbEtleXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZU5vdGlmaWNhdGlvbkRpYWxvZ3Mobm90aWZpY2F0aW9uUEs6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG1vZGFsS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gICAgICBgbm90aWZpY2F0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCxcbiAgICAgIGBkeW5hbWljLXByaWNpbmctY29uZmlybWF0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCxcbiAgICBdKTtcblxuICAgIHRoaXMuY2xvc2VEaWFsb2dzKG1vZGFsS2V5cyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFsZXJ0Rm9yQ2xvc2luZyhjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCBhbGVydER0bzogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFsZXJ0cyA9IGN0eC5nZXRTdGF0ZSgpLmFsZXJ0cztcbiAgICBjb25zdCBub3RpZmljYXRpb25zTWFwID0geyAuLi5jdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zTWFwIH07XG4gICAgY29uc3QgYWxlcnRQSyA9IHRoaXMuYWxlcnRQSyhhbGVydER0bywgZ3VpZCk7XG5cbiAgICAvLyBXaGV0aGVyIHdlIHdhbnQgdG8gY2xvc2Ugb3IgaGF2ZSBhIGR1cGxpY2F0ZSBhbGVydFxuICAgIGNvbnN0IGFsZXJ0RXhpc3RzID0gYWxlcnRzLmZpbmQoYWxlcnQgPT5cbiAgICAgIHRoaXMuYWxlcnRQSyhhbGVydCwgZ3VpZCkgPT09IGFsZXJ0UEsgJiYgdGhpcy5zdGF0ZU1hdGNoZXMoYWxlcnQsIGFsZXJ0RHRvLmV2ZW50U3RhdGUpXG4gICAgKTtcblxuICAgIGlmICghYWxlcnREdG8uZXZlbnRTdGF0ZSB8fCBhbGVydEV4aXN0cykge1xuICAgICAgY29uc3QgdG9hc3RJZCA9IG5vdGlmaWNhdGlvbnNNYXBbYWxlcnRQS107XG4gICAgICB0aGlzLmFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZS5jbGVhclRvYXN0cyh0b2FzdElkKTtcbiAgICAgIGRlbGV0ZSBub3RpZmljYXRpb25zTWFwW2FsZXJ0UEtdO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZEFsZXJ0cyA9IGFsZXJ0cy5maWx0ZXIoYWxlcnQgPT4gdGhpcy5hbGVydFBLKGFsZXJ0LCBndWlkKSAhPT0gYWxlcnRQSyk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNNYXAsXG4gICAgICAgIGFsZXJ0czogZmlsdGVyZWRBbGVydHNcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlY2FsY3VsYXRlQmFkZ2VBbmRTZXZlcml0eShjdHgpO1xuICAgICAgdGhpcy5jbG9zZUFsZXJ0RGlhbG9ncyhhbGVydFBLKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRyaWdnZXJlZER5bmFtaWNQcmljaW5nQ29uZGl0aW9uTm90aWZpY2F0aW9uKGN0eDogU3RhdGVDb250ZXh0PEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbD4sIG5vdGlmaWNhdGlvbkR0bzogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0gY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9ucztcbiAgICBjb25zdCBub3RpZmljYXRpb25zTWFwID0geyAuLi5jdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zTWFwIH07XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG5cbiAgICAvLyBXaGV0aGVyIHdlIHdhbnQgdG8gY2xvc2Ugb3IgaGF2ZSBhIGR1cGxpY2F0ZSBhbGVydFxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbkV4aXN0cyA9IG5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24gPT4gdGhpcy5wa01hdGNoZXMobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25QSykpO1xuICAgIGlmIChub3RpZmljYXRpb25FeGlzdHMpIHtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblBLID0gdGhpcy5ub3RpZmljYXRpb25QSyhub3RpZmljYXRpb25FeGlzdHMsIGd1aWQpO1xuICAgICAgY29uc3QgdG9hc3RJZCA9IG5vdGlmaWNhdGlvbnNNYXBbbm90aWZpY2F0aW9uUEtdO1xuICAgICAgdGhpcy5hbGVydE5vdGlmaWNhdGlvblNlcnZpY2UuY2xlYXJUb2FzdHModG9hc3RJZCk7XG4gICAgICBkZWxldGUgbm90aWZpY2F0aW9uc01hcFtub3RpZmljYXRpb25QS107XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkTm90aWZpY2F0aW9ucyA9IG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PlxuICAgICAgICAhKHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24uZ3VpZCkgPT09IG5vdGlmaWNhdGlvblBLKSk7XG5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbm90aWZpY2F0aW9uc01hcCxcbiAgICAgICAgbm90aWZpY2F0aW9uczogZmlsdGVyZWROb3RpZmljYXRpb25zLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVjYWxjdWxhdGVCYWRnZUFuZFNldmVyaXR5KGN0eCk7XG4gICAgICB0aGlzLmNsb3NlTm90aWZpY2F0aW9uRGlhbG9ncyhub3RpZmljYXRpb25QSyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVRyaWdnZXJlZER5bmFtaWNQcmljaW5nQ29uZGl0aW9ucyhjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IGN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uc01hcCA9IHsgLi4uY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9uc01hcCB9O1xuICAgIGNvbnN0IHBhcmtJZCA9IG5vdGlmaWNhdGlvbkR0bz8uZHluYW1pY1ByaWNpbmdDb25kaXRpb24/LnBhcmtJZDtcblxuICAgIC8vIGZpbmQgYWxsIHRoZSBkeW5hbWljIHByaWNpbmcgdHJpZ2dlcmVkIGNvbmRpdGlvbnMgb2Ygc2FtZSBndWlkIGFuZCBwYXJrSWQgdG8gYmUgY2xvc2VcbiAgICBjb25zdCBkeW5hbWljUHJpY2luZ05vdGlmaWNhdGlvbkV4aXN0cyA9IG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PiAhIW5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbiAmJlxuICAgICAgbm90aWZpY2F0aW9uLmd1aWQgPT09IGd1aWQgJiYgbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLnBhcmtJZCA9PT0gcGFya0lkKTtcblxuICAgIGlmIChkeW5hbWljUHJpY2luZ05vdGlmaWNhdGlvbkV4aXN0cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGRwIG9mIGR5bmFtaWNQcmljaW5nTm90aWZpY2F0aW9uRXhpc3RzKSB7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvblBLID0gdGhpcy5ub3RpZmljYXRpb25QSyhkcCwgZ3VpZCk7XG4gICAgICAgIGRlbGV0ZSBub3RpZmljYXRpb25zTWFwW25vdGlmaWNhdGlvblBLXTtcblxuICAgICAgICB0aGlzLmNsb3NlTm90aWZpY2F0aW9uRGlhbG9ncyhub3RpZmljYXRpb25QSyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkTm90aWZpY2F0aW9ucyA9IG5vdGlmaWNhdGlvbnMuZmlsdGVyKG5vdGlmaWNhdGlvbiA9PiAhbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uIHx8ICEobm90aWZpY2F0aW9uLmd1aWQgPT09IGd1aWQgJiYgbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLnBhcmtJZCA9PT0gcGFya0lkKSk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNNYXAsXG4gICAgICAgIG5vdGlmaWNhdGlvbnM6IGZpbHRlcmVkTm90aWZpY2F0aW9ucyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZWNhbGN1bGF0ZUJhZGdlQW5kU2V2ZXJpdHkoY3R4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dSYXRlQXV0b21hdGljU3dpdGNoVG9hc3RNZXNzYWdlKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvKSB7XG4gICAgY29uc3QgZHBjID0gbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uO1xuICAgIGNvbnN0IHJhdGUgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmZhY2lsaXR5UnBjU2VydmljZVByb3h5LmdldEJhc2VSYXRlQnlJZChkcGMuZ3VpZCwgZHBjLnBhcmtpbmdMb3RJZCwgZHBjLnJhdGVJZCkpO1xuICAgIGRwYy5yYXRlTmFtZSA9IHJhdGU/LmRhdGE/Lm5hbWU7XG4gICAgY29uc3QgbWVzc2FnZXMgPSB0aGlzLmZhY2lsaXR5Q29tbWFuZHNDb25maWdTZXJ2aWNlLmdldENvbW1hbmROb3RpZmljYXRpb25Db25maWdNZXNzYWdlcyhGYWNpbGl0eVJlbW90ZUNvbW1hbmRUeXBlcy5TZXRBY3RpdmVSYXRlLCBudWxsLCBkcGMpO1xuICAgIGNvbnN0IGNvbmZpZzogQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZyA9IHtcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgY29tbWFuZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmZhY2lsaXR5X3JlbW90ZV9jb21tYW5kX3NldF9hY3RpdmVfcmF0ZSksXG4gICAgICBoUG9zaXRpb246IE5vdGlmaWNhdGlvbkhQb3NpdGlvbnMuUmlnaHQsXG4gICAgICB2UG9zaXRpb246IE5vdGlmaWNhdGlvblZQb3NpdGlvbnMuQm90dG9tLFxuICAgICAgZHVyYXRpb246IDcgKiBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyxcbiAgICAgIGNsYXNzOiBDb21tYW5kTm90aWZpY2F0aW9uQm9yZGVyQ2xhc3MuU3VjY2VzcyxcbiAgICAgIHR5cGU6IENvbW1hbmROb3RpZmljYXRpb25UeXBlLlN1Y2Nlc3NcbiAgICB9O1xuXG4gICAgdGhpcy5jb21tYW5kTm90aWZpY2F0aW9uU2VydmljZS5zaG93KGNvbmZpZywgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbXBvbmVudCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dSYXRlRmFsbGVuQmFja1RvRGVmYXVsdFJhdGVUb2FzdE1lc3NhZ2Uobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25EdG8pIHtcbiAgICBjb25zdCBkcGMgPSBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb247XG4gICAgY29uc3QgdGl0bGUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZHluYW1pY19wcmljaW5nX3JldmVydGVkX3RvX2RlZmF1bHRfcmF0ZSk7XG4gICAgY29uc3Qgc3ViVGl0bGUgPSBgJHtkcGMucGFya2luZ0xvdE5hbWV9JHtkcGMuem9uZT8ubmFtZSA/ICcgfCAnICsgZHBjLnpvbmU/Lm5hbWUgOiAnJ31gO1xuICAgIGNvbnN0IGNvbmZpZzogQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZyA9IHtcbiAgICAgIG1lc3NhZ2VzOiBbe1xuICAgICAgICB2YWx1ZTogdGl0bGUsXG4gICAgICAgIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy50aXRsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBzdWJUaXRsZSxcbiAgICAgICAgY2xhc3M6IE5vdGlmaWNhdGlvbkNsYXNzLnN1YlRpdGxlLFxuICAgICAgfV0sXG4gICAgICBjb21tYW5kOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZmFjaWxpdHlfcmVtb3RlX2NvbW1hbmRfc2V0X2FjdGl2ZV9yYXRlKSxcbiAgICAgIGhQb3NpdGlvbjogTm90aWZpY2F0aW9uSFBvc2l0aW9ucy5SaWdodCxcbiAgICAgIHZQb3NpdGlvbjogTm90aWZpY2F0aW9uVlBvc2l0aW9ucy5Cb3R0b20sXG4gICAgICBkdXJhdGlvbjogNyAqIE9ORV9TRUNPTkRfSU5fTUlMTElTRUNPTkRTLFxuICAgICAgY2xhc3M6IENvbW1hbmROb3RpZmljYXRpb25Cb3JkZXJDbGFzcy5TdWNjZXNzLFxuICAgICAgdHlwZTogQ29tbWFuZE5vdGlmaWNhdGlvblR5cGUuU3VjY2Vzc1xuICAgIH07XG5cbiAgICB0aGlzLmNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLnNob3coY29uZmlnLCBDb21tYW5kTm90aWZpY2F0aW9uQ29tcG9uZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgb25EeW5hbWljUHJpY2luZ0NvbmRpdGlvbkNoYW5nZShjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5vbkhhbmRsZWROb3RpZmljYXRpb25BY3Rpb24oY3R4LCB7IG5vdGlmaWNhdGlvbkR0bywgZ3VpZCB9KTtcblxuICAgIHRoaXMuaGFuZGxlVHJpZ2dlcmVkRHluYW1pY1ByaWNpbmdDb25kaXRpb25Ob3RpZmljYXRpb24oY3R4LCBub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuXG4gICAgaWYgKG5vdGlmaWNhdGlvbkR0by5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5pc1RyaWdnZXJlZCkge1xuICAgICAgdGhpcy5wcm9jZXNzQW5kRGlzcGxheU5vdGlmaWNhdGlvbihub3RpZmljYXRpb25EdG8sIGd1aWQsIGN0eCk7XG4gICAgfSBlbHNlIGlmIChub3RpZmljYXRpb25EdG8uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uaXNBY3RpdmF0ZWQpIHtcbiAgICAgIC8vIGhhbmRsZSBub3RpZmljYXRpb24gaW5kaWNhdGluZyB0aGUgcmF0ZSBoYXMgZmFsbGVuIGJhY2sgdG8gdGhlIGRlZmF1bHQgcmF0ZVxuICAgICAgdGhpcy5zaG93UmF0ZUZhbGxlbkJhY2tUb0RlZmF1bHRSYXRlVG9hc3RNZXNzYWdlKG5vdGlmaWNhdGlvbkR0bykudGhlbigpO1xuICAgIH0gZWxzZSBpZiAobm90aWZpY2F0aW9uRHRvLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLnRyaWdnZXJBY3Rpb24gPT09IER5bmFtaWNQcmljaW5nVHJpZ2dlckFjdGlvbi5BdXRvbWF0aWNTd2l0Y2hSYXRlKSB7XG4gICAgICAvLyBoYW5kbGUgbm90aWZpY2F0aW9uIGluZGljYXRpbmcgdGhlIHJhdGUgaGFzIGF1dG9tYXRpYyBzd2l0Y2hcbiAgICAgIHRoaXMuc2hvd1JhdGVBdXRvbWF0aWNTd2l0Y2hUb2FzdE1lc3NhZ2Uobm90aWZpY2F0aW9uRHRvKS50aGVuKCk7XG4gICAgICB0aGlzLmNsb3NlVHJpZ2dlcmVkRHluYW1pY1ByaWNpbmdDb25kaXRpb25zKGN0eCwgbm90aWZpY2F0aW9uRHRvLCBndWlkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENsb3VkUGFya0lkKGFsZXJ0OiBBbGVydER0bywgZ3VpZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBhbGVydFBhcmtJZCA9IGFsZXJ0Lm11bHRpUGFya1BhcmVudElkID4gMCA/IGFsZXJ0Lm11bHRpUGFya1BhcmVudElkIDogYWxlcnQucGFya0lkO1xuICAgIGNvbnN0IGxvdHNNYXAgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZmFjaWxpdHlEaWN0aW9uYXJ5KVtndWlkXTtcbiAgICByZXR1cm4gbG90c01hcFthbGVydFBhcmtJZF0/LmNsb3VkSWQ7XG4gIH1cblxuICBwcml2YXRlIHBrTWF0Y2hlcyA9IChub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgbm90aWZpY2F0aW9uUEs6IHN0cmluZykgPT4gdGhpcy5ub3RpZmljYXRpb25QSyhub3RpZmljYXRpb25EdG8sIG5vdGlmaWNhdGlvbkR0by5ndWlkKSA9PT0gbm90aWZpY2F0aW9uUEs7XG4gIHByaXZhdGUgc3RhdGVNYXRjaGVzID0gKGFsZXJ0RHRvOiBBbGVydER0bywgZXZlbnRTdGF0ZTogYm9vbGVhbikgPT4gYWxlcnREdG8uZXZlbnRTdGF0ZSA9PT0gZXZlbnRTdGF0ZTtcbiAgcHJpdmF0ZSBhbGVydFBLID0gKGFsZXJ0RHRvOiBBbGVydER0bywgZ3VpZDogc3RyaW5nKSA9PlxuICAgIGAke2d1aWR9XyR7YWxlcnREdG8ucGFya0lkfV8ke2FsZXJ0RHRvLnJlYWRlcklEfV8ke2FsZXJ0RHRvLmRldmljZUlEfV8ke2FsZXJ0RHRvLmV2ZW50RGVzY3JpcHRpb259YDtcblxuICBwcml2YXRlIG5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbkR0bzogTm90aWZpY2F0aW9uRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBsZXQga2V5OiBzdHJpbmcgPSAnJztcbiAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbkR0by50eXBlKSB7XG4gICAgICBjYXNlIE5vdGlmaWNhdGlvblR5cGUuRHluYW1pY1ByaWNpbmdDb25kaXRpb246XG4gICAgICAgIGNvbnN0IHsgaWQsIHpvbmUgfSA9IG5vdGlmaWNhdGlvbkR0by5keW5hbWljUHJpY2luZ0NvbmRpdGlvbjtcbiAgICAgICAga2V5ID0gem9uZSA/IGAke2d1aWR9XyR7aWR9XyR7em9uZS5pZH1gIDogYCR7Z3VpZH1fJHtpZH1gO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5sb2coXCJ1bnN1cHBvcnRlZCBub3RpZmljYXRpb24gdHlwZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjYWxjdWxhdGVCYWRnZUFuZFNldmVyaXR5KGN0eDogU3RhdGVDb250ZXh0PEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbD4pOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IGN0eC5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IGFsZXJ0cyA9IHN0YXRlLmFsZXJ0cztcbiAgICBjb25zdCBub3RpZmljYXRpb25zID0gc3RhdGUubm90aWZpY2F0aW9ucztcblxuICAgIGNvbnN0IGJhZGdlVmFsdWUgPSBhbGVydHMubGVuZ3RoICsgbm90aWZpY2F0aW9ucy5sZW5ndGg7XG4gICAgY29uc3QgYWdncmVnYXRlZE5vdGlmaWNhdGlvblNldmVyaXR5ID0gdGhpcy5hbGVydHNBbmROb3RpZmljYXRpb25zU2VydmljZS5nZXRBZ2dyZWdhdGVkTm90aWZpY2F0aW9uVHlwZShhbGVydHMsIG5vdGlmaWNhdGlvbnMpO1xuXG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgYmFkZ2VWYWx1ZSxcbiAgICAgIGFnZ3JlZ2F0ZWROb3RpZmljYXRpb25TZXZlcml0eSxcbiAgICAgIGRpc3BsYXlCYWRnZTogYmFkZ2VWYWx1ZSA+IDBcbiAgICB9KTtcbiAgfVxuXG4gIC8vIE1ldGhvZCB0aGF0IHByb2Nlc3NlcyBhbmQgZGlzcGxheXMgdGhlIGFsZXJ0IGJhc2VkIG9uIGNvbmRpdGlvbnNcbiAgcHJpdmF0ZSBwcm9jZXNzQW5kRGlzcGxheUFsZXJ0KGN0eDogU3RhdGVDb250ZXh0PEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbD4sIGFsZXJ0OiBBbGVydER0bywgZ3VpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXNNb2JpbGVBcHBNb2RlID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldENvbmZpZygpLmFwcFR5cGUgPT09IEFwcFR5cGUuTW9iaWxlO1xuICAgIGNvbnN0IGlzQ2NNb2R1bGUgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNpZGVuYXZTdGF0ZS5hcHBNb2R1bGUpID09PSBBcHBNb2R1bGUuQ2M7XG5cbiAgICBpZiAoIWlzTW9iaWxlQXBwTW9kZSAmJiBpc0NjTW9kdWxlKSB7XG4gICAgICBzd2l0Y2ggKGFsZXJ0LmV2ZW50RGVzY3JpcHRpb24pIHtcbiAgICAgICAgY2FzZSBQZXJpcGhlcmFsRXF1aXBtZW50RXJyb3IuTE9TVF9USUNLRVQ6XG4gICAgICAgIGNhc2UgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLkxSUF9OT1RfTUFUQ0g6XG4gICAgICAgICAgdGhpcy5vcGVuQ3JpdGljYWxBbGVydERpYWxvZyhhbGVydCwgZ3VpZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhpcy5kaXNwbGF5QWxlcnQoY3R4LCBhbGVydCwgZ3VpZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTWV0aG9kIHRoYXQgcHJvY2Vzc2VzIGFuZCBkaXNwbGF5cyB0aGUgbm90aWZpY2F0aW9uIGJhc2VkIG9uIGNvbmRpdGlvbnNcbiAgcHJpdmF0ZSBwcm9jZXNzQW5kRGlzcGxheU5vdGlmaWNhdGlvbihub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nLCBjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+KTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHVzZXIgaGFzIHBlcm1pc3Npb25cbiAgICBjb25zdCBmYWNpbGl0eURpY3Rpb25hcnkgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZmFjaWxpdHlEaWN0aW9uYXJ5KTtcbiAgICBjb25zdCBmZWF0dXJlUGVybWlzc2lvbnMgPSBmYWNpbGl0eURpY3Rpb25hcnlbZ3VpZF1bbm90aWZpY2F0aW9uRHRvLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLnBhcmtpbmdMb3RJZF0uZmVhdHVyZVBlcm1pc3Npb25zO1xuICAgIGNvbnN0IGhhc1Blcm1pc3Npb24gPSBmZWF0dXJlUGVybWlzc2lvbnM/LmluY2x1ZGVzKFBlcm1pc3Npb25UeXBlLlNldEFjdGl2ZVJhdGUpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGFwcCBpcyBpbiBtb2JpbGUgbW9kZSBvciBpZiBpdCdzIGluIHRoZSBjb3JyZWN0IG1vZHVsZVxuICAgIGNvbnN0IGlzTW9iaWxlQXBwTW9kZSA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5hcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZTtcbiAgICBjb25zdCBpc0NjTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuYXBwTW9kdWxlKSA9PT0gQXBwTW9kdWxlLkNjO1xuXG4gICAgLy8gUHJvY2VlZCBpZiB0aGUgY29uZGl0aW9ucyBhcmUgbWV0XG4gICAgaWYgKCFpc01vYmlsZUFwcE1vZGUgJiYgaXNDY01vZHVsZSAmJiBoYXNQZXJtaXNzaW9uKSB7XG4gICAgICB0aGlzLm9wZW5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbk5vdGlmaWNhdGlvbkRpYWxvZyhub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuXG4gICAgICAvLyBQdXNoIHRoZSBuZXcgbm90aWZpY2F0aW9uIHRvIHRoZSBhcnJheSBhbmQgc2F2ZSBpbiBzdGF0ZVxuICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IGN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnM7XG4gICAgICBub3RpZmljYXRpb25zLnVuc2hpZnQobm90aWZpY2F0aW9uRHRvKTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbm90aWZpY2F0aW9ucyxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBSZWNhbGN1bGF0ZSBiYWRnZSBhbmQgc2V2ZXJpdHlcbiAgICAgIHRoaXMucmVjYWxjdWxhdGVCYWRnZUFuZFNldmVyaXR5KGN0eCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIYW5kbGVkVXNlckZvckR5bmFtaWNQcmljaW5nTm90aWZpY2F0aW9uKFxuICAgIGN0eDogU3RhdGVDb250ZXh0PEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbD4sXG4gICAgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uRHRvW10sXG4gICAgbm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sXG4gICAgbm90aWZpY2F0aW9uUEs6IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICBpZiAobm90aWZpY2F0aW9ucykge1xuICAgICAgY29uc3QgZXhpc3ROb3RpZmljYXRpb25JbmRleCA9IG5vdGlmaWNhdGlvbnMuZmluZEluZGV4KG5vdGlmaWNhdGlvbiA9PiB0aGlzLnBrTWF0Y2hlcyhub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvblBLKSk7XG5cbiAgICAgIGlmIChleGlzdE5vdGlmaWNhdGlvbkluZGV4ICE9PSAtMSAmJiBub3RpZmljYXRpb25zW2V4aXN0Tm90aWZpY2F0aW9uSW5kZXhdLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uKSB7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNbZXhpc3ROb3RpZmljYXRpb25JbmRleF0uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uaGFuZGxpbmdCeVVzZXIgPVxuICAgICAgICAgIG5vdGlmaWNhdGlvbkR0bz8uZHluYW1pY1ByaWNpbmdDb25kaXRpb24/LmhhbmRsaW5nQnlVc2VyO1xuXG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHsgbm90aWZpY2F0aW9ucyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
566
|
+
}], ctorParameters: () => [{ type: i1.Store }, { type: i2.AppConfigService }, { type: i3.ModalService }, { type: i4.TranslateService }, { type: i5.AlertsAndNotificationsCloudServiceProxy }, { type: i6.AlertNotificationService }, { type: i7.AlertsAndNotificationsService }, { type: i8.CommandNotificationService }, { type: i9.BaseFacilityCommandsConfigService }, { type: i10.FacilityRpcServiceProxy }], propDecorators: { onUpdateUserAlertsPreferencesAction: [], onUpdateUserNotificaitonsPreferencesAction: [], onLoadAlertsAndNotificationsAction: [], onClearAlertsAndNotificationsAction: [], onRemoveExpiredAlertsAndNotificationsAction: [], onAlertChangedAction: [], onNotificationChangeAction: [], onHandledNotificationAction: [], onHandleNotificationAction: [], onHandleAlertsAction: [] } });
|
|
567
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnRzLWFuZC1ub3RpZmljYXRpb25zLnN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL2FsZXJ0cy1hbmQtbm90aWZpY2F0aW9ucy9hbGVydHMtYW5kLW5vdGlmaWNhdGlvbnMuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFFbkgsT0FBTyxFQUFFLDhCQUE4QixFQUE2Qix1QkFBdUIsRUFBRSxNQUFNLGdGQUFnRixDQUFDO0FBQ3BMLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1GQUFtRixDQUFDO0FBRWpJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3RJLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFN0QsT0FBTyxFQUM4QyxTQUFTLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsZ0JBQWdCLEVBQ3ZJLGtDQUFr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QXlCLENBQUM7NkVBY2pDO0FBR0Q7SUFEQyxNQUFNLENBQUMseUJBQXlCLENBQUM7OEVBMkJqQztBQUdEO0lBREMsTUFBTSxDQUFDLHdCQUF3QixDQUFDOzZFQXNCaEM7QUFHRDtJQURDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQzt1RUFlMUI7QUF6TU07SUFETixRQUFRLEVBQUU7K0NBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTtzREFHVjtBQUdNO0lBRE4sUUFBUSxFQUFFO3VFQUdWO0FBR007SUFETixRQUFRLEVBQUU7bURBR1Y7QUFHTTtJQUROLFFBQVEsRUFBRTtxREFHVjtBQXJDVSwyQkFBMkI7SUFadkMsS0FBSyxDQUE4QjtRQUNsQyxJQUFJLEVBQUUsd0JBQXdCO1FBQzlCLFFBQVEsRUFBRTtZQUNSLE1BQU0sRUFBRSxFQUFFO1lBQ1YsYUFBYSxFQUFFLEVBQUU7WUFDakIsOEJBQThCLEVBQUUsb0JBQW9CLENBQUMsR0FBRztZQUN4RCxVQUFVLEVBQUUsQ0FBQztZQUNiLFlBQVksRUFBRSxLQUFLO1lBQ25CLGdCQUFnQixFQUFFLEVBQUU7U0FDckI7S0FDRixDQUFDO0dBRVcsMkJBQTJCLENBcWxCdkM7OzRGQXJsQlksMkJBQTJCO2tCQUR2QyxVQUFVOzRhQXlDVCxtQ0FBbUMsTUFVbkMsMENBQTBDLE1BVTFDLGtDQUFrQyxNQWVsQyxtQ0FBbUMsTUFZbkMsMkNBQTJDLE1BYTNDLG9CQUFvQixNQWlDcEIsMEJBQTBCLE1BZ0IxQiwyQkFBMkIsTUE2QjNCLDBCQUEwQixNQXdCMUIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uLCBTZWxlY3RvciwgU3RhdGUsIFN0YXRlQ29udGV4dCwgU3RvcmUgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgZnJvbSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDbG91ZENvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Nsb3VkLWNvbmZpcm0tZGlhbG9nL2Nsb3VkLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbGVydE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9hbGVydC1ub3RpZmljYXRpb24vYWxlcnQtbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWFuZE5vdGlmaWNhdGlvbkJvcmRlckNsYXNzLCBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnLCBDb21tYW5kTm90aWZpY2F0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uL2NvbW1hbmQtbm90aWZpY2F0aW9uLWNvbmZpZyc7XG5pbXBvcnQgeyBDb21tYW5kTm90aWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25DbGFzcywgTm90aWZpY2F0aW9uSFBvc2l0aW9ucywgTm90aWZpY2F0aW9uVlBvc2l0aW9ucyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvZ2xvYmFsLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBBcHBUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvYXBwLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb24gfSBmcm9tICcuLi8uLi9lbnVtcy9sb2NhbGl6YXRpb24uZW51bSc7XG5pbXBvcnQgeyBDbG91ZENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jbG91ZC1jb25maXJtLWRpYWxvZy1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBBbGVydER0bywgQWxlcnRzQW5kTm90aWZpY2F0aW9uc0Nsb3VkU2VydmljZVByb3h5LCBBcHBNb2R1bGUsIER5bmFtaWNQcmljaW5nVHJpZ2dlckFjdGlvbiwgRmFjaWxpdHlSZW1vdGVDb21tYW5kVHlwZXMsIEhhbmRsaW5nQWxlcnREdG8sXG4gIEhhbmRsaW5nRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG8sIE5vdGlmaWNhdGlvbkR0bywgTm90aWZpY2F0aW9uU2V2ZXJpdHksIE5vdGlmaWNhdGlvblR5cGUsXG4gIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvciwgUGVybWlzc2lvblR5cGUsIFNldHRpbmdzQ2F0ZWdvcnksIFNwYXJrU2V0dGluZ3NEdG9cbn0gZnJvbSAnLi4vLi4vc2VydmljZS1wcm94eS9jbG91ZC1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgRmFjaWxpdHlScGNTZXJ2aWNlUHJveHkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLXByb3h5L3JwYy1zZXJ2aWNlLXByb3hpZXMnO1xuaW1wb3J0IHsgQmFzZUZhY2lsaXR5Q29tbWFuZHNDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IE51bWJlck1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL2xhbmcudXRpbCc7XG5pbXBvcnQgeyBTZXNzaW9uU3RhdGUgfSBmcm9tICcuLi9hdXRoL3Nlc3Npb24uc3RhdGUnO1xuaW1wb3J0IHsgRmFjaWxpdHlTdGF0ZSB9IGZyb20gJy4uL2ZhY2lsaXR5L2ZhY2lsaXR5LnN0YXRlJztcbmltcG9ydCB7IFBhcmtNYW5hZ2VyU3RhdGUgfSBmcm9tICcuLi9wYXJrLW1hbmFnZXIvcGFyay1tYW5hZ2VyLnN0YXRlJztcbmltcG9ydCB7IFNpZGVuYXZTdGF0ZSB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi5zdGF0ZSc7XG5pbXBvcnQgeyBVcGRhdGVVc2VyU2V0dGluZ3NBY3Rpb24gfSBmcm9tICcuLi91c2VyLXNldHRpbmdzL3VzZXItc2V0dGluZ3MuYWN0aW9ucyc7XG5pbXBvcnQge1xuICBBbGVydENoYW5nZWRBY3Rpb24sIENsZWFyQWxlcnRzQW5kTm90aWZpY2F0aW9uc0FjdGlvbiwgSGFuZGxlQWxlcnRzQWN0aW9uLCBIYW5kbGVkTm90aWZpY2F0aW9uQWN0aW9uLCBIYW5kbGVOb3RpZmljYXRpb25BY3Rpb24sXG4gIExvYWRBbGVydHNBbmROb3RpZmljYXRpb25zQWN0aW9uLFxuICBOb3RpZmljYXRpb25DaGFuZ2VkQWN0aW9uLCBSZW1vdmVFeHBpcmVkQWxlcnRzQW5kTm90aWZpY2F0aW9uc0FjdGlvbixcbiAgVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uLCBVcGRhdGVVc2VyTm90aWZpY2FpdG9uc1ByZWZlcmVuY2VzQWN0aW9uXG59IGZyb20gJy4vYWxlcnRzLWFuZC1ub3RpZmljYXRpb25zLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWxlcnRzQW5kTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuL2FsZXJ0cy1hbmQtbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWwge1xuICBhbGVydHM6IEFsZXJ0RHRvW107XG4gIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdO1xuICBhZ2dyZWdhdGVkTm90aWZpY2F0aW9uU2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5O1xuICBiYWRnZVZhbHVlOiBudW1iZXIsXG4gIGRpc3BsYXlCYWRnZTogYm9vbGVhbixcbiAgbm90aWZpY2F0aW9uc01hcDogTnVtYmVyTWFwPG51bWJlcj47XG59XG5cbkBTdGF0ZTxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+KHtcbiAgbmFtZTogJ2FsZXJ0c0FuZE5vdGlmaWNhdGlvbnMnLFxuICBkZWZhdWx0czoge1xuICAgIGFsZXJ0czogW10sXG4gICAgbm90aWZpY2F0aW9uczogW10sXG4gICAgYWdncmVnYXRlZE5vdGlmaWNhdGlvblNldmVyaXR5OiBOb3RpZmljYXRpb25TZXZlcml0eS5Mb3csXG4gICAgYmFkZ2VWYWx1ZTogMCxcbiAgICBkaXNwbGF5QmFkZ2U6IGZhbHNlLFxuICAgIG5vdGlmaWNhdGlvbnNNYXA6IHt9LFxuICB9LFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBbGVydHNBbmROb3RpZmljYXRpb25zU3RhdGUge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNDbG91ZFNlcnZpY2VQcm94eTogQWxlcnRzQW5kTm90aWZpY2F0aW9uc0Nsb3VkU2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlOiBBbGVydE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydHNBbmROb3RpZmljYXRpb25zU2VydmljZTogQWxlcnRzQW5kTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tYW5kTm90aWZpY2F0aW9uU2VydmljZTogQ29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYWNpbGl0eUNvbW1hbmRzQ29uZmlnU2VydmljZTogQmFzZUZhY2lsaXR5Q29tbWFuZHNDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmFjaWxpdHlScGNTZXJ2aWNlUHJveHk6IEZhY2lsaXR5UnBjU2VydmljZVByb3h5KSB7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgYWxlcnRzKHN0YXRlOiBBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWwpOiBBbGVydER0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuYWxlcnRzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIG5vdGlmaWNhdGlvbnMoc3RhdGU6IEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbCk6IE5vdGlmaWNhdGlvbkR0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUubm90aWZpY2F0aW9ucztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHN0YXRpYyBhZ2dyZWdhdGVkTm90aWZpY2F0aW9uU2V2ZXJpdHkoc3RhdGU6IEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbCk6IE5vdGlmaWNhdGlvblNldmVyaXR5IHtcbiAgICByZXR1cm4gc3RhdGUuYWdncmVnYXRlZE5vdGlmaWNhdGlvblNldmVyaXR5O1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgc3RhdGljIGJhZGdlVmFsdWUoc3RhdGU6IEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLmJhZGdlVmFsdWU7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBzdGF0aWMgZGlzcGxheUJhZGdlKHN0YXRlOiBBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWwpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdGUuZGlzcGxheUJhZGdlO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVVc2VyQWxlcnRzUHJlZmVyZW5jZXNBY3Rpb24pXG4gIG9uVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbD4sIGFjdGlvbjogVXBkYXRlVXNlckFsZXJ0c1ByZWZlcmVuY2VzQWN0aW9uKSB7XG4gICAgY29uc3Qgc2V0dGluZzogU3BhcmtTZXR0aW5nc0R0byA9IG5ldyBTcGFya1NldHRpbmdzRHRvKHtcbiAgICAgIGNhdGVnb3J5OiBTZXR0aW5nc0NhdGVnb3J5LkFsZXJ0c1ByZWZlcmVuY2VzLFxuICAgICAgc2V0dGluZ3NKc29uOiBKU09OLnN0cmluZ2lmeShhY3Rpb24udXNlck5vdGlmaWNhdGlvbnNQcmVmZXJlbmNlcyksXG4gICAgfSk7XG5cbiAgICBjdHguZGlzcGF0Y2gobmV3IFVwZGF0ZVVzZXJTZXR0aW5nc0FjdGlvbihzZXR0aW5nKSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZVVzZXJOb3RpZmljYWl0b25zUHJlZmVyZW5jZXNBY3Rpb24pXG4gIG9uVXBkYXRlVXNlck5vdGlmaWNhaXRvbnNQcmVmZXJlbmNlc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCBhY3Rpb246IFVwZGF0ZVVzZXJOb3RpZmljYWl0b25zUHJlZmVyZW5jZXNBY3Rpb24pIHtcbiAgICBjb25zdCBzZXR0aW5nOiBTcGFya1NldHRpbmdzRHRvID0gbmV3IFNwYXJrU2V0dGluZ3NEdG8oe1xuICAgICAgY2F0ZWdvcnk6IFNldHRpbmdzQ2F0ZWdvcnkuTm90aWZpY2F0aW9uUHJlZmVyZW5jZXMsXG4gICAgICBzZXR0aW5nc0pzb246IEpTT04uc3RyaW5naWZ5KGFjdGlvbi51c2VyTm90aWZpY2F0aW9uc1ByZWZlcmVuY2VzKSxcbiAgICB9KTtcblxuICAgIGN0eC5kaXNwYXRjaChuZXcgVXBkYXRlVXNlclNldHRpbmdzQWN0aW9uKHNldHRpbmcpKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNBY3Rpb24pXG4gIG9uTG9hZEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwgeyBtaW51dGVzQWdvIH06IExvYWRBbGVydHNBbmROb3RpZmljYXRpb25zQWN0aW9uKSB7XG4gICAgY29uc3QgYWxlcnRzQW5kTm90aWZpY2F0aW9ucyQgPSB0aGlzLmFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNDbG91ZFNlcnZpY2VQcm94eS5nZXRBbGVydHNBbmROb3RpZmljYXRpb25zKG1pbnV0ZXNBZ28pO1xuICAgIHJldHVybiBhbGVydHNBbmROb3RpZmljYXRpb25zJC5waXBlKHN3aXRjaE1hcChhbGVydHNBbmROb3RpZmljYXRpb25zID0+XG4gICAgICBmcm9tKHRoaXMuYWxlcnRzQW5kTm90aWZpY2F0aW9uc1NlcnZpY2UucG9wdWxhdGVBbGVydHNBbmROb3RpZmljYXRpb25zKGFsZXJ0c0FuZE5vdGlmaWNhdGlvbnMuZGF0YSkpLnBpcGUodGFwKHBvcHVsYXRlTm90aWZpY2F0aW9ucyA9PiB7XG4gICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICBhbGVydHM6IHBvcHVsYXRlTm90aWZpY2F0aW9ucy5hbGVydHMgPz8gW10sXG4gICAgICAgICAgbm90aWZpY2F0aW9uczogcG9wdWxhdGVOb3RpZmljYXRpb25zLm5vdGlmaWNhdGlvbnMgPz8gW10sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGVCYWRnZUFuZFNldmVyaXR5KGN0eCk7XG4gICAgICB9KSlcbiAgICApKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJBbGVydHNBbmROb3RpZmljYXRpb25zQWN0aW9uKVxuICBvbkNsZWFyQWxlcnRzQW5kTm90aWZpY2F0aW9uc0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCBfOiBDbGVhckFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNBY3Rpb24pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBhbGVydHM6IFtdLFxuICAgICAgbm90aWZpY2F0aW9uczogW10sXG4gICAgICBhZ2dyZWdhdGVkTm90aWZpY2F0aW9uU2V2ZXJpdHk6IE5vdGlmaWNhdGlvblNldmVyaXR5LkxvdyxcbiAgICAgIGJhZGdlVmFsdWU6IDAsXG4gICAgICBkaXNwbGF5QmFkZ2U6IGZhbHNlLFxuICAgICAgbm90aWZpY2F0aW9uc01hcDoge31cbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oUmVtb3ZlRXhwaXJlZEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNBY3Rpb24pXG4gIG9uUmVtb3ZlRXhwaXJlZEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwgYWN0aW9uOiBSZW1vdmVFeHBpcmVkQWxlcnRzQW5kTm90aWZpY2F0aW9uc0FjdGlvbikge1xuICAgIGNvbnN0IG5vd1V0YyA9IG1vbWVudC51dGMoKTsgLy8gQ3VycmVudCBVVEMgdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kc1xuICAgIGNvbnN0IG1pbnV0ZXNBZ28gPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuYWN0aXZlTm90aWZpY2F0aW9ucy5taW51dGVzQWdvO1xuICAgIGNvbnN0IGFsZXJ0cyA9IGN0eC5nZXRTdGF0ZSgpLmFsZXJ0cy5maWx0ZXIoYWxlcnQgPT4gbW9tZW50LnV0YyhhbGVydC5jbG91ZEV2ZW50RGF0ZVRpbWUpLmFkZChtaW51dGVzQWdvLCAnbWludXRlcycpLmlzQWZ0ZXIobm93VXRjKSk7XG5cbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBhbGVydHNcbiAgICB9KTtcblxuICAgIHRoaXMucmVjYWxjdWxhdGVCYWRnZUFuZFNldmVyaXR5KGN0eCk7XG4gIH1cblxuICBAQWN0aW9uKEFsZXJ0Q2hhbmdlZEFjdGlvbilcbiAgb25BbGVydENoYW5nZWRBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwgeyBhbGVydCwgZ3VpZCB9OiBBbGVydENoYW5nZWRBY3Rpb24pIHtcbiAgICBpZiAoYWxlcnQgJiYgdGhpcy5hbGVydHNBbmROb3RpZmljYXRpb25zU2VydmljZS5pc0FsZXJ0VHlwZURlZmluZWQoYWxlcnQuZXZlbnREZXNjcmlwdGlvbikpIHtcbiAgICAgIHRoaXMuaGFuZGxlQWxlcnRGb3JDbG9zaW5nKGN0eCwgYWxlcnQsIGd1aWQpO1xuXG4gICAgICBpZiAoYWxlcnQuZXZlbnRTdGF0ZSkge1xuXG4gICAgICAgIGlmICghYWxlcnQuZGV2aWNlTmFtZSkge1xuICAgICAgICAgIGNvbnN0IHBhcmtEZXZpY2VzID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChQYXJrTWFuYWdlclN0YXRlLmRldmljZXMpO1xuICAgICAgICAgIGFsZXJ0LmRldmljZU5hbWUgPSBwYXJrRGV2aWNlcz8uZmluZChkID0+IGQuaWQgPT09IGFsZXJ0LmRldmljZUlEKT8ubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYWxlcnQucGFya05hbWUpIHtcbiAgICAgICAgICBjb25zdCBsb3RzTWFwID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmZhY2lsaXR5RGljdGlvbmFyeSlbZ3VpZF07XG4gICAgICAgICAgaWYgKGxvdHNNYXApIHtcbiAgICAgICAgICAgIGFsZXJ0LnBhcmtOYW1lID0gbG90c01hcFthbGVydC5wYXJrSWRdPy5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvY2Vzc0FuZERpc3BsYXlBbGVydChjdHgsIGFsZXJ0LCBndWlkKTtcblxuICAgICAgICAvLyBQdXNoIHRoZSBuZXcgYWxlcnQgdG8gdGhlIGFycmF5IGFuZCBzYXZlIGluIHN0YXRlXG4gICAgICAgIGNvbnN0IGFsZXJ0cyA9IGN0eC5nZXRTdGF0ZSgpLmFsZXJ0cztcbiAgICAgICAgYWxlcnRzLnVuc2hpZnQoYWxlcnQpO1xuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgYWxlcnRzXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucmVjYWxjdWxhdGVCYWRnZUFuZFNldmVyaXR5KGN0eCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihOb3RpZmljYXRpb25DaGFuZ2VkQWN0aW9uKVxuICBvbk5vdGlmaWNhdGlvbkNoYW5nZUFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCB7XG4gICAgbm90aWZpY2F0aW9uLFxuICAgIGd1aWRcbiAgfTogTm90aWZpY2F0aW9uQ2hhbmdlZEFjdGlvbikge1xuICAgIHN3aXRjaCAobm90aWZpY2F0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbjpcbiAgICAgICAgdGhpcy5vbkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uQ2hhbmdlKGN0eCwgbm90aWZpY2F0aW9uLCBndWlkKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIEBBY3Rpb24oSGFuZGxlZE5vdGlmaWNhdGlvbkFjdGlvbilcbiAgb25IYW5kbGVkTm90aWZpY2F0aW9uQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNNb2RlbD4sIHtcbiAgICBub3RpZmljYXRpb25EdG8sXG4gICAgZ3VpZFxuICB9OiBIYW5kbGVkTm90aWZpY2F0aW9uQWN0aW9uKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IGN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uc01hcCA9IHsgLi4uY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9uc01hcCB9O1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvblBLID0gdGhpcy5ub3RpZmljYXRpb25QSyhub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuXG4gICAgLy8gV2hldGhlciB3ZSB3YW50IHRvIGNsb3NlIG9yIGhhdmUgYSBkdXBsaWNhdGUgYWxlcnRcbiAgICBjb25zdCBub3RpZmljYXRpb25FeGlzdHMgPSBub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uID0+IHRoaXMucGtNYXRjaGVzKG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uUEspKTtcbiAgICBpZiAobm90aWZpY2F0aW9uRXhpc3RzKSB7XG4gICAgICBjb25zdCB0b2FzdElkID0gbm90aWZpY2F0aW9uc01hcFtub3RpZmljYXRpb25QS107XG4gICAgICB0aGlzLmFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZS5jbGVhclRvYXN0cyh0b2FzdElkKTtcbiAgICAgIGRlbGV0ZSBub3RpZmljYXRpb25zTWFwW25vdGlmaWNhdGlvblBLXTtcblxuICAgICAgY29uc3QgZmlsdGVyZWROb3RpZmljYXRpb25zID0gbm90aWZpY2F0aW9ucy5maWx0ZXIobm90aWZpY2F0aW9uID0+XG4gICAgICAgICEodGhpcy5ub3RpZmljYXRpb25QSyhub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbi5ndWlkKSA9PT0gbm90aWZpY2F0aW9uUEspKTtcblxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zTWFwLFxuICAgICAgICBub3RpZmljYXRpb25zOiBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWNhbGN1bGF0ZUJhZGdlQW5kU2V2ZXJpdHkoY3R4KTtcbiAgICAgIHRoaXMuY2xvc2VOb3RpZmljYXRpb25EaWFsb2dzKG5vdGlmaWNhdGlvblBLKTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbilcbiAgb25IYW5kbGVOb3RpZmljYXRpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwge1xuICAgIG5vdGlmaWNhdGlvbkR0byxcbiAgICBndWlkXG4gIH06IEhhbmRsZU5vdGlmaWNhdGlvbkFjdGlvbikge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBjdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvblBLID0gdGhpcy5ub3RpZmljYXRpb25QSyhub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBub3RpZmljYXRpb24gd2l0aCB0aGUgaGFuZGxlIHVzZXIgLSBhbmQgc2F2ZSBpbiBzdGF0ZVxuICAgIHN3aXRjaCAobm90aWZpY2F0aW9uRHRvLnR5cGUpIHtcbiAgICAgIGNhc2UgTm90aWZpY2F0aW9uVHlwZS5EeW5hbWljUHJpY2luZ0NvbmRpdGlvbjpcbiAgICAgICAgdGhpcy51cGRhdGVIYW5kbGVkVXNlckZvckR5bmFtaWNQcmljaW5nTm90aWZpY2F0aW9uKGN0eCwgbm90aWZpY2F0aW9ucywgbm90aWZpY2F0aW9uRHRvLCBub3RpZmljYXRpb25QSyk7XG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBkeW5hbWljLXByaWNpbmctY29uZmlybWF0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uUEt9YCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmxvZyhcInVuc3VwcG9ydGVkIG5vdGlmaWNhdGlvbiB0eXBlXCIpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBDbG9zZSBjcml0aWNhbCBhbGVydCBtb2RhbFxuICAgIHRoaXMuY2xvc2VEaWFsb2dCeUlkKGBub3RpZmljYXRpb24tbW9kYWwtJHtub3RpZmljYXRpb25QS31gKTtcbiAgfVxuXG4gIEBBY3Rpb24oSGFuZGxlQWxlcnRzQWN0aW9uKVxuICBvbkhhbmRsZUFsZXJ0c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCB7IGFsZXJ0RHRvLCBndWlkIH06IEhhbmRsZUFsZXJ0c0FjdGlvbikge1xuICAgIGNvbnN0IGFsZXJ0UEsgPSB0aGlzLmFsZXJ0UEsoYWxlcnREdG8sIGd1aWQpO1xuICAgIGNvbnN0IGFsZXJ0cyA9IGN0eC5nZXRTdGF0ZSgpLmFsZXJ0cztcbiAgICBjb25zdCBleGlzdEFsZXJ0SW5kZXggPSBhbGVydHMuZmluZEluZGV4KGFsZXJ0ID0+IHRoaXMuYWxlcnRQSyhhbGVydCwgZ3VpZCkgPT09IGFsZXJ0UEsgJiZcbiAgICAgIHRoaXMuc3RhdGVNYXRjaGVzKGFsZXJ0LCBhbGVydER0by5ldmVudFN0YXRlKSk7XG5cbiAgICBpZiAoZXhpc3RBbGVydEluZGV4ICE9PSAtMSkge1xuICAgICAgYWxlcnRzW2V4aXN0QWxlcnRJbmRleF0uaGFuZGxpbmdCeVVzZXIgPSBhbGVydER0by5oYW5kbGluZ0J5VXNlcjtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgYWxlcnRzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZUFsZXJ0RGlhbG9ncyhhbGVydFBLKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNyaXRpY2FsQWxlcnREaWFsb2coYWxlcnQ6IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhbGVydFR5cGVOYW1lID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yW2FsZXJ0LmV2ZW50RGVzY3JpcHRpb25dKTtcbiAgICBjb25zdCBjbG91ZENvbmZpcm1EaWFsb2dEYXRhOiBDbG91ZENvbmZpcm1EaWFsb2dEYXRhID0ge1xuICAgICAgY29uZmlybU1lc3NhZ2VzOiBbdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyaXRpY2FsX2FsZXJ0X21lc3NhZ2UsIHtcbiAgICAgICAgYWxlcnRUeXBlTmFtZVxuICAgICAgfSldLFxuICAgICAgY29uZmlybVRpdGxlOiBhbGVydFR5cGVOYW1lLFxuICAgICAgb2tUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24ueWVzKSxcbiAgICAgIGNhbmNlbFRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5jYW5jZWwpLFxuICAgICAgZGV2aWNlOiB7XG4gICAgICAgIGNvbW1JZDogYWxlcnQucmVhZGVySUQudG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogYWxlcnQuZGV2aWNlTmFtZVxuICAgICAgfSxcbiAgICAgIHBhcmtOYW1lOiBhbGVydC5wYXJrTmFtZSxcbiAgICAgIHpvbmVOYW1lOiBhbGVydC5wYXJrWm9uZU5hbWUsXG4gICAgICBub3RpZmljYXRpb25TZXZlcml0eTogTm90aWZpY2F0aW9uU2V2ZXJpdHkuQ3JpdGljYWwsXG4gICAgICBub3RpZmljYXRpb25TZXZlcml0eUludmVydDogdHJ1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBhbGVydC5kZXNjcmlwdGlvbixcbiAgICAgIGNhclBsYXRlOiBhbGVydC5jYXJQbGF0ZSxcbiAgICB9O1xuXG4gICAgY29uc3QgYWxlcnRQSyA9IHRoaXMuYWxlcnRQSyhhbGVydCwgZ3VpZCk7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbjxib29sZWFuPihDbG91ZENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHBhbmVsQ2xhc3M6IGB0Yi1jcml0aWNhbC1tb2RhbC0ke2FsZXJ0UEt9YCxcbiAgICAgIGRhdGE6IGNsb3VkQ29uZmlybURpYWxvZ0RhdGEsXG4gICAgICBpZDogYG5vdGlmaWNhdGlvbi1tb2RhbC0ke2FsZXJ0UEt9YCxcbiAgICAgIGVuYWJsZWRNaW5pbWl6ZWQ6IHRydWUsXG4gICAgfSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmZvID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTZXNzaW9uU3RhdGUudXNlckluZm8pO1xuICAgICAgICBjb25zdCBoYW5kbGVBbGVydDogSGFuZGxpbmdBbGVydER0byA9IG5ldyBIYW5kbGluZ0FsZXJ0RHRvKHtcbiAgICAgICAgICBndWlkOiBndWlkLFxuICAgICAgICAgIHBhcmtJZDogYWxlcnQucGFya0lkLFxuICAgICAgICAgIHBhcmtOYW1lOiBhbGVydC5wYXJrTmFtZSxcbiAgICAgICAgICBkZXZpY2VJZDogYWxlcnQuZGV2aWNlSUQsXG4gICAgICAgICAgZXZlbnREZXNjcmlwdGlvbjogYWxlcnQuZXZlbnREZXNjcmlwdGlvbixcbiAgICAgICAgICB1c2VyRnVsbE5hbWU6IHVzZXJJbmZvLmRpc3BsYXlOYW1lLFxuICAgICAgICAgIGlkOiBhbGVydC5pZCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWxlcnRzQW5kTm90aWZpY2F0aW9uc0Nsb3VkU2VydmljZVByb3h5LmhhbmRsZUFsZXJ0Tm90aWZpY2F0aW9uKGFsZXJ0LnBhcmtJZCwgaGFuZGxlQWxlcnQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnRzQW5kTm90aWZpY2F0aW9uc1NlcnZpY2UudHJpZ2dlckFsZXJ0VG9hc3RFdmVudChyZXMuZGF0YSB8fCBhbGVydCwgZ3VpZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRHluYW1pY1ByaWNpbmdDb25kaXRpb25Ob3RpZmljYXRpb25EaWFsb2cobm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNsb3VkQ29uZmlybURpYWxvZ0RhdGE6IENsb3VkQ29uZmlybURpYWxvZ0RhdGEgPSB7XG4gICAgICBjb25maXJtTWVzc2FnZXM6IFt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uZHluYW1pY19wcmljaW5nX2FsZXJ0X21lc3NhZ2UpXSxcbiAgICAgIGNvbmZpcm1UaXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmR5bmFtaWNfcHJpY2luZ19hbGVydF90aXRsZSksXG4gICAgICBjb25maXJtU3ViVGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5keW5hbWljX3ByaWNpbmdfYWxlcnRfc3ViX3RpdGxlLCB7IGNvbmRpdGlvbk5hbWU6IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5jb25kaXRpb25OYW1lIH0pLFxuICAgICAgcGFya05hbWU6IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5wYXJraW5nTG90TmFtZSxcbiAgICAgIHpvbmVOYW1lOiBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uem9uZT8ubmFtZSxcbiAgICAgIG9rVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnllcyksXG4gICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24uY2FuY2VsKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgbm90aWZpY2F0aW9uUEsgPSB0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgZ3VpZCk7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbjxib29sZWFuPihDbG91ZENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHBhbmVsQ2xhc3M6IGB0Yi1keW5hbWljLXByaWNpbmctY29uZGl0aW9uLW1vZGFsLSR7bm90aWZpY2F0aW9uLmlkfWAsXG4gICAgICBkYXRhOiBjbG91ZENvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgaWQ6IGBub3RpZmljYXRpb24tbW9kYWwtJHtub3RpZmljYXRpb25QS31gLFxuICAgICAgZW5hYmxlZE1pbmltaXplZDogdHJ1ZSxcbiAgICB9KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgY29uc3QgdXNlckluZm8gPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KFNlc3Npb25TdGF0ZS51c2VySW5mbyk7XG4gICAgICAgIGNvbnN0IGhhbmRsaW5nRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG86IEhhbmRsaW5nRHluYW1pY1ByaWNpbmdDb25kaXRpb25EdG8gPSBuZXcgSGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0byh7XG4gICAgICAgICAgY2xvdWRQYXJrSWQ6IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5jbG91ZFBhcmtJZCxcbiAgICAgICAgICB1c2VyRnVsbE5hbWU6IHVzZXJJbmZvLmRpc3BsYXlOYW1lLFxuICAgICAgICAgIGlkOiBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uaWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWxlcnRzQW5kTm90aWZpY2F0aW9uc0Nsb3VkU2VydmljZVByb3h5LmhhbmRsZUR5bmFtaWNQcmljaW5nQ29uZGl0aW9uTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5jbG91ZFBhcmtJZCwgaGFuZGxpbmdEeW5hbWljUHJpY2luZ0NvbmRpdGlvbkR0bykucGlwZShzd2l0Y2hNYXAocmVzID0+IHtcbiAgICAgICAgICBjb25zdCBkcGMgPSByZXMuZGF0YSB8fCBub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb247XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmFjaWxpdHlScGNTZXJ2aWNlUHJveHkuZ2V0QmFzZVJhdGVCeUlkKGRwYy5ndWlkLCBkcGMucGFya2luZ0xvdElkLCBkcGMucmF0ZUlkKS5waXBlKFxuICAgICAgICAgICAgdGFwKHJhdGUgPT4ge1xuICAgICAgICAgICAgICBkcGMucmF0ZU5hbWUgPSByYXRlPy5kYXRhPy5uYW1lO1xuICAgICAgICAgICAgICB0aGlzLmFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnRyaWdnZXJEeW5hbWljUHJpY2luZ1RvYXN0RXZlbnQoZHBjKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSkpLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5QWxlcnQoY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwgYWxlcnQ6IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBub3RpZmljYXRpb24gPSB0aGlzLmFsZXJ0Tm90aWZpY2F0aW9uU2VydmljZS5kaXNwbGF5QWxlcnQoYWxlcnQsIGd1aWQpO1xuICAgIGlmIChub3RpZmljYXRpb24pIHtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNNYXAgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnNNYXAgfTtcbiAgICAgIGNvbnN0IGFsZXJ0UEsgPSB0aGlzLmFsZXJ0UEsoYWxlcnQsIGd1aWQpO1xuICAgICAgbm90aWZpY2F0aW9uc01hcFthbGVydFBLXSA9IG5vdGlmaWNhdGlvbi50b2FzdElkO1xuXG4gICAgICBub3RpZmljYXRpb24ub25UYXAucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0c0FuZE5vdGlmaWNhdGlvbnNTZXJ2aWNlLnRyaWdnZXJBbGVydFRvYXN0RXZlbnQoYWxlcnQsIGd1aWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgbm90aWZpY2F0aW9uc01hcCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VEaWFsb2dzKGRpYWxvZ0lkczogU2V0PHN0cmluZz4pOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5nZXRPcGVuRGlhbG9ncygpPy5mb3JFYWNoKGRpYWxvZyA9PiB7XG4gICAgICBpZiAoZGlhbG9nSWRzLmhhcyhkaWFsb2cuaWQpKSB7XG4gICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZURpYWxvZ0J5SWQoZGlhbG9nSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG9wZW5EaWFsb2dzID0gdGhpcy5tb2RhbFNlcnZpY2UuZ2V0T3BlbkRpYWxvZ3MoKTtcbiAgICBjb25zdCBkaWFsb2cgPSBvcGVuRGlhbG9ncy5maW5kKGRpYWxvZyA9PiBkaWFsb2cuaWQgPT09IGRpYWxvZ0lkKTtcblxuICAgIGlmIChkaWFsb2cpIHtcbiAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VBbGVydERpYWxvZ3MoYWxlcnRQSzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbW9kYWxLZXlzID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgICAgIGBub3RpZmljYXRpb24tbW9kYWwtJHthbGVydFBLfWAsXG4gICAgICBgbHByLW1pc21hdGNoLW1vZGFsLSR7YWxlcnRQS31gLFxuICAgICAgYGxvc3QtdGlja2V0LW1vZGFsLSR7YWxlcnRQS31gLFxuICAgIF0pO1xuXG4gICAgdGhpcy5jbG9zZURpYWxvZ3MobW9kYWxLZXlzKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VOb3RpZmljYXRpb25EaWFsb2dzKG5vdGlmaWNhdGlvblBLOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbEtleXMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICAgICAgYG5vdGlmaWNhdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWAsXG4gICAgICBgZHluYW1pYy1wcmljaW5nLWNvbmZpcm1hdGlvbi1tb2RhbC0ke25vdGlmaWNhdGlvblBLfWAsXG4gICAgXSk7XG5cbiAgICB0aGlzLmNsb3NlRGlhbG9ncyhtb2RhbEtleXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBbGVydEZvckNsb3NpbmcoY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwgYWxlcnREdG86IEFsZXJ0RHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhbGVydHMgPSBjdHguZ2V0U3RhdGUoKS5hbGVydHM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uc01hcCA9IHsgLi4uY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9uc01hcCB9O1xuICAgIGNvbnN0IGFsZXJ0UEsgPSB0aGlzLmFsZXJ0UEsoYWxlcnREdG8sIGd1aWQpO1xuXG4gICAgLy8gV2hldGhlciB3ZSB3YW50IHRvIGNsb3NlIG9yIGhhdmUgYSBkdXBsaWNhdGUgYWxlcnRcbiAgICBjb25zdCBhbGVydEV4aXN0cyA9IGFsZXJ0cy5maW5kKGFsZXJ0ID0+XG4gICAgICB0aGlzLmFsZXJ0UEsoYWxlcnQsIGd1aWQpID09PSBhbGVydFBLICYmIHRoaXMuc3RhdGVNYXRjaGVzKGFsZXJ0LCBhbGVydER0by5ldmVudFN0YXRlKVxuICAgICk7XG5cbiAgICBpZiAoIWFsZXJ0RHRvLmV2ZW50U3RhdGUgfHwgYWxlcnRFeGlzdHMpIHtcbiAgICAgIGNvbnN0IHRvYXN0SWQgPSBub3RpZmljYXRpb25zTWFwW2FsZXJ0UEtdO1xuICAgICAgdGhpcy5hbGVydE5vdGlmaWNhdGlvblNlcnZpY2UuY2xlYXJUb2FzdHModG9hc3RJZCk7XG4gICAgICBkZWxldGUgbm90aWZpY2F0aW9uc01hcFthbGVydFBLXTtcblxuICAgICAgY29uc3QgZmlsdGVyZWRBbGVydHMgPSBhbGVydHMuZmlsdGVyKGFsZXJ0ID0+IHRoaXMuYWxlcnRQSyhhbGVydCwgZ3VpZCkgIT09IGFsZXJ0UEspO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zTWFwLFxuICAgICAgICBhbGVydHM6IGZpbHRlcmVkQWxlcnRzXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWNhbGN1bGF0ZUJhZGdlQW5kU2V2ZXJpdHkoY3R4KTtcbiAgICAgIHRoaXMuY2xvc2VBbGVydERpYWxvZ3MoYWxlcnRQSyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVUcmlnZ2VyZWREeW5hbWljUHJpY2luZ0NvbmRpdGlvbk5vdGlmaWNhdGlvbihjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCBub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IGN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uc01hcCA9IHsgLi4uY3R4LmdldFN0YXRlKCkubm90aWZpY2F0aW9uc01hcCB9O1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvblBLID0gdGhpcy5ub3RpZmljYXRpb25QSyhub3RpZmljYXRpb25EdG8sIGd1aWQpO1xuXG4gICAgLy8gV2hldGhlciB3ZSB3YW50IHRvIGNsb3NlIG9yIGhhdmUgYSBkdXBsaWNhdGUgYWxlcnRcbiAgICBjb25zdCBub3RpZmljYXRpb25FeGlzdHMgPSBub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uID0+IHRoaXMucGtNYXRjaGVzKG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uUEspKTtcbiAgICBpZiAobm90aWZpY2F0aW9uRXhpc3RzKSB7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25QSyA9IHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uRXhpc3RzLCBndWlkKTtcbiAgICAgIGNvbnN0IHRvYXN0SWQgPSBub3RpZmljYXRpb25zTWFwW25vdGlmaWNhdGlvblBLXTtcbiAgICAgIHRoaXMuYWxlcnROb3RpZmljYXRpb25TZXJ2aWNlLmNsZWFyVG9hc3RzKHRvYXN0SWQpO1xuICAgICAgZGVsZXRlIG5vdGlmaWNhdGlvbnNNYXBbbm90aWZpY2F0aW9uUEtdO1xuXG4gICAgICBjb25zdCBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmZpbHRlcihub3RpZmljYXRpb24gPT5cbiAgICAgICAgISh0aGlzLm5vdGlmaWNhdGlvblBLKG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLmd1aWQpID09PSBub3RpZmljYXRpb25QSykpO1xuXG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnNNYXAsXG4gICAgICAgIG5vdGlmaWNhdGlvbnM6IGZpbHRlcmVkTm90aWZpY2F0aW9ucyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlY2FsY3VsYXRlQmFkZ2VBbmRTZXZlcml0eShjdHgpO1xuICAgICAgdGhpcy5jbG9zZU5vdGlmaWNhdGlvbkRpYWxvZ3Mobm90aWZpY2F0aW9uUEspO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VUcmlnZ2VyZWREeW5hbWljUHJpY2luZ0NvbmRpdGlvbnMoY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwgbm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBjdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zO1xuICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNNYXAgPSB7IC4uLmN0eC5nZXRTdGF0ZSgpLm5vdGlmaWNhdGlvbnNNYXAgfTtcbiAgICBjb25zdCBwYXJrSWQgPSBub3RpZmljYXRpb25EdG8/LmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uPy5wYXJrSWQ7XG5cbiAgICAvLyBmaW5kIGFsbCB0aGUgZHluYW1pYyBwcmljaW5nIHRyaWdnZXJlZCBjb25kaXRpb25zIG9mIHNhbWUgZ3VpZCBhbmQgcGFya0lkIHRvIGJlIGNsb3NlXG4gICAgY29uc3QgZHluYW1pY1ByaWNpbmdOb3RpZmljYXRpb25FeGlzdHMgPSBub3RpZmljYXRpb25zLmZpbHRlcihub3RpZmljYXRpb24gPT4gISFub3RpZmljYXRpb24uZHluYW1pY1ByaWNpbmdDb25kaXRpb24gJiZcbiAgICAgIG5vdGlmaWNhdGlvbi5ndWlkID09PSBndWlkICYmIG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5wYXJrSWQgPT09IHBhcmtJZCk7XG5cbiAgICBpZiAoZHluYW1pY1ByaWNpbmdOb3RpZmljYXRpb25FeGlzdHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBkcCBvZiBkeW5hbWljUHJpY2luZ05vdGlmaWNhdGlvbkV4aXN0cykge1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb25QSyA9IHRoaXMubm90aWZpY2F0aW9uUEsoZHAsIGd1aWQpO1xuICAgICAgICBkZWxldGUgbm90aWZpY2F0aW9uc01hcFtub3RpZmljYXRpb25QS107XG5cbiAgICAgICAgdGhpcy5jbG9zZU5vdGlmaWNhdGlvbkRpYWxvZ3Mobm90aWZpY2F0aW9uUEspO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMgPSBub3RpZmljYXRpb25zLmZpbHRlcihub3RpZmljYXRpb24gPT4gIW5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbiB8fCAhKG5vdGlmaWNhdGlvbi5ndWlkID09PSBndWlkICYmIG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5wYXJrSWQgPT09IHBhcmtJZCkpO1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zTWFwLFxuICAgICAgICBub3RpZmljYXRpb25zOiBmaWx0ZXJlZE5vdGlmaWNhdGlvbnMsXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVjYWxjdWxhdGVCYWRnZUFuZFNldmVyaXR5KGN0eCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaG93UmF0ZUF1dG9tYXRpY1N3aXRjaFRvYXN0TWVzc2FnZShub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbkR0bykge1xuICAgIGNvbnN0IGRwYyA9IG5vdGlmaWNhdGlvbi5keW5hbWljUHJpY2luZ0NvbmRpdGlvbjtcbiAgICBjb25zdCByYXRlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5mYWNpbGl0eVJwY1NlcnZpY2VQcm94eS5nZXRCYXNlUmF0ZUJ5SWQoZHBjLmd1aWQsIGRwYy5wYXJraW5nTG90SWQsIGRwYy5yYXRlSWQpKTtcbiAgICBkcGMucmF0ZU5hbWUgPSByYXRlPy5kYXRhPy5uYW1lO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gdGhpcy5mYWNpbGl0eUNvbW1hbmRzQ29uZmlnU2VydmljZS5nZXRDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnTWVzc2FnZXMoRmFjaWxpdHlSZW1vdGVDb21tYW5kVHlwZXMuU2V0QWN0aXZlUmF0ZSwgbnVsbCwgZHBjKTtcbiAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBtZXNzYWdlcyxcbiAgICAgIGNvbW1hbmQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5mYWNpbGl0eV9yZW1vdGVfY29tbWFuZF9zZXRfYWN0aXZlX3JhdGUpLFxuICAgICAgaFBvc2l0aW9uOiBOb3RpZmljYXRpb25IUG9zaXRpb25zLlJpZ2h0LFxuICAgICAgdlBvc2l0aW9uOiBOb3RpZmljYXRpb25WUG9zaXRpb25zLkJvdHRvbSxcbiAgICAgIGR1cmF0aW9uOiA3ICogT05FX1NFQ09ORF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICBjbGFzczogQ29tbWFuZE5vdGlmaWNhdGlvbkJvcmRlckNsYXNzLlN1Y2Nlc3MsXG4gICAgICB0eXBlOiBDb21tYW5kTm90aWZpY2F0aW9uVHlwZS5TdWNjZXNzXG4gICAgfTtcblxuICAgIHRoaXMuY29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvdyhjb25maWcsIENvbW1hbmROb3RpZmljYXRpb25Db21wb25lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzaG93UmF0ZUZhbGxlbkJhY2tUb0RlZmF1bHRSYXRlVG9hc3RNZXNzYWdlKG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uRHRvKSB7XG4gICAgY29uc3QgZHBjID0gbm90aWZpY2F0aW9uLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uO1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmR5bmFtaWNfcHJpY2luZ19yZXZlcnRlZF90b19kZWZhdWx0X3JhdGUpO1xuICAgIGNvbnN0IHN1YlRpdGxlID0gYCR7ZHBjLnBhcmtpbmdMb3ROYW1lfSR7ZHBjLnpvbmU/Lm5hbWUgPyAnIHwgJyArIGRwYy56b25lPy5uYW1lIDogJyd9YDtcbiAgICBjb25zdCBjb25maWc6IENvbW1hbmROb3RpZmljYXRpb25Db25maWcgPSB7XG4gICAgICBtZXNzYWdlczogW3tcbiAgICAgICAgdmFsdWU6IHRpdGxlLFxuICAgICAgICBjbGFzczogTm90aWZpY2F0aW9uQ2xhc3MudGl0bGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB2YWx1ZTogc3ViVGl0bGUsXG4gICAgICAgIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5zdWJUaXRsZSxcbiAgICAgIH1dLFxuICAgICAgY29tbWFuZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLmZhY2lsaXR5X3JlbW90ZV9jb21tYW5kX3NldF9hY3RpdmVfcmF0ZSksXG4gICAgICBoUG9zaXRpb246IE5vdGlmaWNhdGlvbkhQb3NpdGlvbnMuUmlnaHQsXG4gICAgICB2UG9zaXRpb246IE5vdGlmaWNhdGlvblZQb3NpdGlvbnMuQm90dG9tLFxuICAgICAgZHVyYXRpb246IDcgKiBPTkVfU0VDT05EX0lOX01JTExJU0VDT05EUyxcbiAgICAgIGNsYXNzOiBDb21tYW5kTm90aWZpY2F0aW9uQm9yZGVyQ2xhc3MuU3VjY2VzcyxcbiAgICAgIHR5cGU6IENvbW1hbmROb3RpZmljYXRpb25UeXBlLlN1Y2Nlc3NcbiAgICB9O1xuXG4gICAgdGhpcy5jb21tYW5kTm90aWZpY2F0aW9uU2VydmljZS5zaG93KGNvbmZpZywgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbXBvbmVudCk7XG4gIH1cblxuICBwcml2YXRlIG9uRHluYW1pY1ByaWNpbmdDb25kaXRpb25DaGFuZ2UoY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPiwgbm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZykge1xuICAgIHRoaXMub25IYW5kbGVkTm90aWZpY2F0aW9uQWN0aW9uKGN0eCwgeyBub3RpZmljYXRpb25EdG8sIGd1aWQgfSk7XG5cbiAgICB0aGlzLmhhbmRsZVRyaWdnZXJlZER5bmFtaWNQcmljaW5nQ29uZGl0aW9uTm90aWZpY2F0aW9uKGN0eCwgbm90aWZpY2F0aW9uRHRvLCBndWlkKTtcblxuICAgIGlmIChub3RpZmljYXRpb25EdG8uZHluYW1pY1ByaWNpbmdDb25kaXRpb24uaXNUcmlnZ2VyZWQpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0FuZERpc3BsYXlOb3RpZmljYXRpb24obm90aWZpY2F0aW9uRHRvLCBndWlkLCBjdHgpO1xuICAgIH0gZWxzZSBpZiAobm90aWZpY2F0aW9uRHRvLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmlzQWN0aXZhdGVkKSB7XG4gICAgICAvLyBoYW5kbGUgbm90aWZpY2F0aW9uIGluZGljYXRpbmcgdGhlIHJhdGUgaGFzIGZhbGxlbiBiYWNrIHRvIHRoZSBkZWZhdWx0IHJhdGVcbiAgICAgIHRoaXMuc2hvd1JhdGVGYWxsZW5CYWNrVG9EZWZhdWx0UmF0ZVRvYXN0TWVzc2FnZShub3RpZmljYXRpb25EdG8pLnRoZW4oKTtcbiAgICB9IGVsc2UgaWYgKG5vdGlmaWNhdGlvbkR0by5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi50cmlnZ2VyQWN0aW9uID09PSBEeW5hbWljUHJpY2luZ1RyaWdnZXJBY3Rpb24uQXV0b21hdGljU3dpdGNoUmF0ZSkge1xuICAgICAgLy8gaGFuZGxlIG5vdGlmaWNhdGlvbiBpbmRpY2F0aW5nIHRoZSByYXRlIGhhcyBhdXRvbWF0aWMgc3dpdGNoXG4gICAgICB0aGlzLnNob3dSYXRlQXV0b21hdGljU3dpdGNoVG9hc3RNZXNzYWdlKG5vdGlmaWNhdGlvbkR0bykudGhlbigpO1xuICAgICAgdGhpcy5jbG9zZVRyaWdnZXJlZER5bmFtaWNQcmljaW5nQ29uZGl0aW9ucyhjdHgsIG5vdGlmaWNhdGlvbkR0bywgZ3VpZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDbG91ZFBhcmtJZChhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgYWxlcnRQYXJrSWQgPSBhbGVydC5tdWx0aVBhcmtQYXJlbnRJZCA+IDAgPyBhbGVydC5tdWx0aVBhcmtQYXJlbnRJZCA6IGFsZXJ0LnBhcmtJZDtcbiAgICBjb25zdCBsb3RzTWFwID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmZhY2lsaXR5RGljdGlvbmFyeSlbZ3VpZF07XG4gICAgcmV0dXJuIGxvdHNNYXBbYWxlcnRQYXJrSWRdPy5jbG91ZElkO1xuICB9XG5cbiAgcHJpdmF0ZSBwa01hdGNoZXMgPSAobm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIG5vdGlmaWNhdGlvblBLOiBzdHJpbmcpID0+IHRoaXMubm90aWZpY2F0aW9uUEsobm90aWZpY2F0aW9uRHRvLCBub3RpZmljYXRpb25EdG8uZ3VpZCkgPT09IG5vdGlmaWNhdGlvblBLO1xuICBwcml2YXRlIHN0YXRlTWF0Y2hlcyA9IChhbGVydER0bzogQWxlcnREdG8sIGV2ZW50U3RhdGU6IGJvb2xlYW4pID0+IGFsZXJ0RHRvLmV2ZW50U3RhdGUgPT09IGV2ZW50U3RhdGU7XG4gIHByaXZhdGUgYWxlcnRQSyA9IChhbGVydER0bzogQWxlcnREdG8sIGd1aWQ6IHN0cmluZykgPT5cbiAgICBgJHtndWlkfV8ke2FsZXJ0RHRvLnBhcmtJZH1fJHthbGVydER0by5yZWFkZXJJRH1fJHthbGVydER0by5kZXZpY2VJRH1fJHthbGVydER0by5ldmVudERlc2NyaXB0aW9ufWA7XG5cbiAgcHJpdmF0ZSBub3RpZmljYXRpb25QSyhub3RpZmljYXRpb25EdG86IE5vdGlmaWNhdGlvbkR0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgbGV0IGtleTogc3RyaW5nID0gJyc7XG4gICAgc3dpdGNoIChub3RpZmljYXRpb25EdG8udHlwZSkge1xuICAgICAgY2FzZSBOb3RpZmljYXRpb25UeXBlLkR5bmFtaWNQcmljaW5nQ29uZGl0aW9uOlxuICAgICAgICBjb25zdCB7IGlkLCB6b25lIH0gPSBub3RpZmljYXRpb25EdG8uZHluYW1pY1ByaWNpbmdDb25kaXRpb247XG4gICAgICAgIGtleSA9IHpvbmUgPyBgJHtndWlkfV8ke2lkfV8ke3pvbmUuaWR9YCA6IGAke2d1aWR9XyR7aWR9YDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnNvbGUubG9nKFwidW5zdXBwb3J0ZWQgbm90aWZpY2F0aW9uIHR5cGVcIik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICBwcml2YXRlIHJlY2FsY3VsYXRlQmFkZ2VBbmRTZXZlcml0eShjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+KTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSBjdHguZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBhbGVydHMgPSBzdGF0ZS5hbGVydHM7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHN0YXRlLm5vdGlmaWNhdGlvbnM7XG5cbiAgICBjb25zdCBiYWRnZVZhbHVlID0gYWxlcnRzLmxlbmd0aCArIG5vdGlmaWNhdGlvbnMubGVuZ3RoO1xuICAgIGNvbnN0IGFnZ3JlZ2F0ZWROb3RpZmljYXRpb25TZXZlcml0eSA9IHRoaXMuYWxlcnRzQW5kTm90aWZpY2F0aW9uc1NlcnZpY2UuZ2V0QWdncmVnYXRlZE5vdGlmaWNhdGlvblR5cGUoYWxlcnRzLCBub3RpZmljYXRpb25zKTtcblxuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGJhZGdlVmFsdWUsXG4gICAgICBhZ2dyZWdhdGVkTm90aWZpY2F0aW9uU2V2ZXJpdHksXG4gICAgICBkaXNwbGF5QmFkZ2U6IGJhZGdlVmFsdWUgPiAwXG4gICAgfSk7XG4gIH1cblxuICAvLyBNZXRob2QgdGhhdCBwcm9jZXNzZXMgYW5kIGRpc3BsYXlzIHRoZSBhbGVydCBiYXNlZCBvbiBjb25kaXRpb25zXG4gIHByaXZhdGUgcHJvY2Vzc0FuZERpc3BsYXlBbGVydChjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LCBhbGVydDogQWxlcnREdG8sIGd1aWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGlzTW9iaWxlQXBwTW9kZSA9IHRoaXMuYXBwQ29uZmlnU2VydmljZS5nZXRDb25maWcoKS5hcHBUeXBlID09PSBBcHBUeXBlLk1vYmlsZTtcbiAgICBjb25zdCBpc0NjTW9kdWxlID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChTaWRlbmF2U3RhdGUuYXBwTW9kdWxlKSA9PT0gQXBwTW9kdWxlLkNjO1xuXG4gICAgaWYgKCFpc01vYmlsZUFwcE1vZGUgJiYgaXNDY01vZHVsZSkge1xuICAgICAgc3dpdGNoIChhbGVydC5ldmVudERlc2NyaXB0aW9uKSB7XG4gICAgICAgIGNhc2UgUGVyaXBoZXJhbEVxdWlwbWVudEVycm9yLkxPU1RfVElDS0VUOlxuICAgICAgICBjYXNlIFBlcmlwaGVyYWxFcXVpcG1lbnRFcnJvci5MUlBfTk9UX01BVENIOlxuICAgICAgICAgIHRoaXMub3BlbkNyaXRpY2FsQWxlcnREaWFsb2coYWxlcnQsIGd1aWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMuZGlzcGxheUFsZXJ0KGN0eCwgYWxlcnQsIGd1aWQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1ldGhvZCB0aGF0IHByb2Nlc3NlcyBhbmQgZGlzcGxheXMgdGhlIG5vdGlmaWNhdGlvbiBiYXNlZCBvbiBjb25kaXRpb25zXG4gIHByaXZhdGUgcHJvY2Vzc0FuZERpc3BsYXlOb3RpZmljYXRpb24obm90aWZpY2F0aW9uRHRvOiBOb3RpZmljYXRpb25EdG8sIGd1aWQ6IHN0cmluZywgY3R4OiBTdGF0ZUNvbnRleHQ8QWxlcnRzQW5kTm90aWZpY2F0aW9uc01vZGVsPik6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9uXG4gICAgY29uc3QgZmFjaWxpdHlEaWN0aW9uYXJ5ID0gdGhpcy5zdG9yZS5zZWxlY3RTbmFwc2hvdChGYWNpbGl0eVN0YXRlLmZhY2lsaXR5RGljdGlvbmFyeSk7XG4gICAgY29uc3QgZmVhdHVyZVBlcm1pc3Npb25zID0gZmFjaWxpdHlEaWN0aW9uYXJ5W2d1aWRdW25vdGlmaWNhdGlvbkR0by5keW5hbWljUHJpY2luZ0NvbmRpdGlvbi5wYXJraW5nTG90SWRdLmZlYXR1cmVQZXJtaXNzaW9ucztcbiAgICBjb25zdCBoYXNQZXJtaXNzaW9uID0gZmVhdHVyZVBlcm1pc3Npb25zPy5pbmNsdWRlcyhQZXJtaXNzaW9uVHlwZS5TZXRBY3RpdmVSYXRlKTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBhcHAgaXMgaW4gbW9iaWxlIG1vZGUgb3IgaWYgaXQncyBpbiB0aGUgY29ycmVjdCBtb2R1bGVcbiAgICBjb25zdCBpc01vYmlsZUFwcE1vZGUgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCkuYXBwVHlwZSA9PT0gQXBwVHlwZS5Nb2JpbGU7XG4gICAgY29uc3QgaXNDY01vZHVsZSA9IHRoaXMuc3RvcmUuc2VsZWN0U25hcHNob3QoU2lkZW5hdlN0YXRlLmFwcE1vZHVsZSkgPT09IEFwcE1vZHVsZS5DYztcblxuICAgIC8vIFByb2NlZWQgaWYgdGhlIGNvbmRpdGlvbnMgYXJlIG1ldFxuICAgIGlmICghaXNNb2JpbGVBcHBNb2RlICYmIGlzQ2NNb2R1bGUgJiYgaGFzUGVybWlzc2lvbikge1xuICAgICAgdGhpcy5vcGVuRHluYW1pY1ByaWNpbmdDb25kaXRpb25Ob3RpZmljYXRpb25EaWFsb2cobm90aWZpY2F0aW9uRHRvLCBndWlkKTtcblxuICAgICAgLy8gUHVzaCB0aGUgbmV3IG5vdGlmaWNhdGlvbiB0byB0aGUgYXJyYXkgYW5kIHNhdmUgaW4gc3RhdGVcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBjdHguZ2V0U3RhdGUoKS5ub3RpZmljYXRpb25zO1xuICAgICAgbm90aWZpY2F0aW9ucy51bnNoaWZ0KG5vdGlmaWNhdGlvbkR0byk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnMsXG4gICAgICB9KTtcblxuICAgICAgLy8gUmVjYWxjdWxhdGUgYmFkZ2UgYW5kIHNldmVyaXR5XG4gICAgICB0aGlzLnJlY2FsY3VsYXRlQmFkZ2VBbmRTZXZlcml0eShjdHgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSGFuZGxlZFVzZXJGb3JEeW5hbWljUHJpY2luZ05vdGlmaWNhdGlvbihcbiAgICBjdHg6IFN0YXRlQ29udGV4dDxBbGVydHNBbmROb3RpZmljYXRpb25zTW9kZWw+LFxuICAgIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbkR0b1tdLFxuICAgIG5vdGlmaWNhdGlvbkR0bzogTm90aWZpY2F0aW9uRHRvLFxuICAgIG5vdGlmaWNhdGlvblBLOiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgaWYgKG5vdGlmaWNhdGlvbnMpIHtcbiAgICAgIGNvbnN0IGV4aXN0Tm90aWZpY2F0aW9uSW5kZXggPSBub3RpZmljYXRpb25zLmZpbmRJbmRleChub3RpZmljYXRpb24gPT4gdGhpcy5wa01hdGNoZXMobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25QSykpO1xuXG4gICAgICBpZiAoZXhpc3ROb3RpZmljYXRpb25JbmRleCAhPT0gLTEgJiYgbm90aWZpY2F0aW9uc1tleGlzdE5vdGlmaWNhdGlvbkluZGV4XS5keW5hbWljUHJpY2luZ0NvbmRpdGlvbikge1xuICAgICAgICBub3RpZmljYXRpb25zW2V4aXN0Tm90aWZpY2F0aW9uSW5kZXhdLmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uLmhhbmRsaW5nQnlVc2VyID1cbiAgICAgICAgICBub3RpZmljYXRpb25EdG8/LmR5bmFtaWNQcmljaW5nQ29uZGl0aW9uPy5oYW5kbGluZ0J5VXNlcjtcblxuICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7IG5vdGlmaWNhdGlvbnMgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -41,11 +41,6 @@ export class AuditLogoutAction {
|
|
|
41
41
|
// constructor() {
|
|
42
42
|
// }
|
|
43
43
|
// }
|
|
44
|
-
export class AuditLogoutMobileAction {
|
|
45
|
-
static { this.type = '[Session] AuditLogoutMobile'; }
|
|
46
|
-
constructor() {
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
44
|
export class InitSessionFromLocalStorageAction {
|
|
50
45
|
static { this.type = '[Session] Load Session From Storage'; }
|
|
51
46
|
constructor() {
|
|
@@ -118,10 +113,6 @@ export class LoadBackofficeAppConfigurationAction {
|
|
|
118
113
|
static { this.type = '[Session] Backoffice App Configuration Load'; }
|
|
119
114
|
constructor() { }
|
|
120
115
|
}
|
|
121
|
-
export class LoadAppConfigurationMobileAction {
|
|
122
|
-
static { this.type = '[Session] App Configuration Mobile Load'; }
|
|
123
|
-
constructor() { }
|
|
124
|
-
}
|
|
125
116
|
export class Authenticate2FAforUser {
|
|
126
117
|
static { this.type = '[Session] Authenticate2FAforUser'; }
|
|
127
118
|
constructor() { }
|
|
@@ -136,4 +127,4 @@ export class ClearConflictDetected {
|
|
|
136
127
|
static { this.type = '[Session] Clear ConflictDetected'; }
|
|
137
128
|
constructor() { }
|
|
138
129
|
}
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXNoYXJlZC1saWIvc3JjL2xpYnJhcmllcy9tb2R1bGVzL2F1dGgvc2Vzc2lvbi5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE1BQU0sT0FBTyxrQkFBa0I7YUFDTixTQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFFaEQsWUFBbUIsUUFBZ0IsRUFBUyxRQUFnQixFQUFTLGlCQUEwQixLQUFLO1FBQWpGLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWlCO0lBQ3BHLENBQUM7O0FBR0gsTUFBTSxPQUFPLHVCQUF1QjthQUNYLFNBQUksR0FBRywwQkFBMEIsQ0FBQztJQUV6RCxZQUFtQixjQUF1QjtRQUF2QixtQkFBYyxHQUFkLGNBQWMsQ0FBUztJQUMxQyxDQUFDOztBQUdILE1BQU0sT0FBTyxZQUFZO2FBQ0EsU0FBSSxHQUFHLGtCQUFrQixDQUFDO0lBRWpELFlBQW1CLGNBQXVCLElBQUksRUFBUyx3QkFBaUMsS0FBSztRQUExRSxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFBUywwQkFBcUIsR0FBckIscUJBQXFCLENBQWlCO0lBQzdGLENBQUM7O0FBR0gsTUFBTSxPQUFPLGtCQUFrQjthQUNOLFNBQUksR0FBRyx3QkFBd0IsQ0FBQztJQUV2RCxZQUFtQixjQUF1QixJQUFJO1FBQTNCLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtJQUM5QyxDQUFDOztBQUdILE1BQU0sT0FBTyxrQkFBa0I7YUFDTixTQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFDdkQ7SUFDQSxDQUFDOztBQUdILE1BQU0sT0FBTyxpQkFBaUI7YUFDTCxTQUFJLEdBQUcsdUJBQXVCLENBQUM7SUFFdEQ7SUFDQSxDQUFDOztBQUdILGdGQUFnRjtBQUNoRix1Q0FBdUM7QUFDdkMsK0RBQStEO0FBRS9ELG9CQUFvQjtBQUNwQixNQUFNO0FBQ04sSUFBSTtBQUVKLE1BQU0sT0FBTyxpQ0FBaUM7YUFDckIsU0FBSSxHQUFHLHFDQUFxQyxDQUFDO0lBRXBFO0lBQ0EsQ0FBQzs7QUFHSCxNQUFNLE9BQU8sY0FBYzthQUNGLFNBQUksR0FBRyxxQkFBcUIsQ0FBQztJQUVwRCxZQUFtQixTQUFpQixFQUFTLE9BQW9CO1FBQTlDLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFhO0lBQ2pFLENBQUM7O0FBR0gsTUFBTSxPQUFPLHFCQUFxQjthQUNULFNBQUksR0FBRyw2QkFBNkIsQ0FBQztJQUU1RCxZQUFtQixTQUFpQixFQUFTLFlBQW9CO1FBQTlDLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtJQUNqRSxDQUFDOztBQUdILE1BQU0sT0FBTyxpQkFBaUI7YUFDTCxTQUFJLEdBQUcsdUJBQXVCLENBQUM7SUFFdEQsWUFBbUIsUUFBZ0I7UUFBaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtJQUNuQyxDQUFDOztBQUdILE1BQU0sT0FBTyxZQUFZO2FBQ0EsU0FBSSxHQUFHLHlCQUF5QixDQUFDO0lBRXhEO0lBQ0EsQ0FBQzs7QUFHSCxNQUFNLE9BQU8sZ0JBQWdCO2FBQ0osU0FBSSxHQUFHLHdCQUF3QixDQUFDO0lBRXZELFlBQW1CLE1BQWtCO1FBQWxCLFdBQU0sR0FBTixNQUFNLENBQVk7SUFDckMsQ0FBQzs7QUFHSCxNQUFNLE9BQU8saUJBQWlCO2FBQ0wsU0FBSSxHQUFHLHlCQUF5QixDQUFDO0lBRXhEO0lBQ0EsQ0FBQzs7QUFHSCxNQUFNLE9BQU8sWUFBWTthQUNBLFNBQUksR0FBRyx1QkFBdUIsQ0FBQztJQUV0RDtJQUNBLENBQUM7O0FBR0gsTUFBTSxPQUFPLGlDQUFpQzthQUNyQixTQUFJLEdBQUcsK0JBQStCLENBQUM7SUFFOUQsWUFBbUIsWUFBZ0M7UUFBaEMsaUJBQVksR0FBWixZQUFZLENBQW9CO0lBQ25ELENBQUM7O0FBR0gsTUFBTSxPQUFPLHFCQUFxQjthQUNULFNBQUksR0FBRyxvQ0FBb0MsQ0FBQztJQUVuRSxZQUFtQixLQUFVO1FBQVYsVUFBSyxHQUFMLEtBQUssQ0FBSztJQUM3QixDQUFDOztBQUdILE1BQU0sT0FBTyxtQkFBbUI7YUFDUCxTQUFJLEdBQUcsMkJBQTJCLENBQUM7SUFFMUQsWUFBbUIsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFBSSxDQUFDOztBQUdwRCxNQUFNLE9BQU8sMEJBQTBCO2FBQ2QsU0FBSSxHQUFHLGtDQUFrQyxDQUFDO0lBRWpFLGdCQUFnQixDQUFDOztBQUduQixNQUFNLE9BQU8sb0NBQW9DO2FBQ3hCLFNBQUksR0FBRyw2Q0FBNkMsQ0FBQztJQUU1RSxnQkFBZ0IsQ0FBQzs7QUFHbkIsTUFBTSxPQUFPLHNCQUFzQjthQUNWLFNBQUksR0FBRyxrQ0FBa0MsQ0FBQztJQUVqRSxnQkFBZ0IsQ0FBQzs7QUFHbkIsTUFBTSxPQUFPLG1CQUFtQjthQUNQLFNBQUksR0FBRyw0QkFBNEIsQ0FBQztJQUUzRCxZQUFtQixLQUF3QjtRQUF4QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtJQUFJLENBQUM7O0FBR2xELE1BQU0sT0FBTyxxQkFBcUI7YUFDVCxTQUFJLEdBQUcsa0NBQWtDLENBQUM7SUFFakUsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFNwYXJrU2Vzc2lvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc3Bhcmstc2Vzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3BhcmtTZXR0aW5nc0R0byB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHkvY2xvdWQtc2VydmljZS1wcm94aWVzJztcbmltcG9ydCB7IExvZ2luUmVxdWVzdCB9IGZyb20gJy4vbW9kZWwvbG9naW4tcmVxdWVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVmcmVzaEluZm8gfSBmcm9tICcuL21vZGVsL3JlZnJlc2gtaW5mby5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGVuYW50SW5mbyB9IGZyb20gJy4vbW9kZWwvdGVuYW50LWluZm8uaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIExvZ2luUmVxdWVzdEFjdGlvbiBpbXBsZW1lbnRzIExvZ2luUmVxdWVzdCB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbU2Vzc2lvbl0gTG9naW4nO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1c2VybmFtZTogc3RyaW5nLCBwdWJsaWMgcGFzc3dvcmQ6IHN0cmluZywgcHVibGljIGtlZXBNZUxvZ2dlZEluOiBib29sZWFuID0gZmFsc2UpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0a2VlcE1lTG9nZ2VkSW5BY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIGtlZXBNZUxvZ2dlZEluJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMga2VlcE1lTG9nZ2VkSW46IGJvb2xlYW4pIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTG9nb3V0QWN0aW9uIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tTZXNzaW9uXSBMb2dvdXQnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsb2dvdXRBdWRpdDogYm9vbGVhbiA9IHRydWUsIHB1YmxpYyBsb2dvdXRCYWNrb2ZmaWNlQXVkaXQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNb2JpbGVMb2dvdXRBY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIE1vYmlsZUxvZ291dCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGxvZ291dEF1ZGl0OiBib29sZWFuID0gdHJ1ZSkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMb2dvdXRNb2JpbGVBY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIExvZ291dE1vYmlsZSc7XG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBdWRpdExvZ291dEFjdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbU2Vzc2lvbl0gQXVkaXRMb2dvdXQnO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG59XG5cbi8vVE9ETyAsIGVuYWJsZSBiYWNrb2ZmaWNlIGxvZ291dCB3aGVuICwgQkUgQXVkaXQgZm9yIGJhY2tvZmZpY2UgaXMgaW1wbGVtZW50ZWQgXG4vLyBleHBvcnQgY2xhc3MgQXVkaXRCYWNrb2ZmaWNlQWN0aW9uIHtcbi8vICAgcHVibGljIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tTZXNzaW9uXSBBdWRpdEJhY2tvZmZpY2UnO1xuXG4vLyAgIGNvbnN0cnVjdG9yKCkge1xuLy8gICB9XG4vLyB9XG5cbmV4cG9ydCBjbGFzcyBJbml0U2Vzc2lvbkZyb21Mb2NhbFN0b3JhZ2VBY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIExvYWQgU2Vzc2lvbiBGcm9tIFN0b3JhZ2UnO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXRTdGF0ZUFjdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbU2Vzc2lvbl0gU2V0IFN0YXRlJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYXV0aFRva2VuOiBzdHJpbmcsIHB1YmxpYyByZWZyZXNoOiBSZWZyZXNoSW5mbykge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVBdXRoVG9rZW5BY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIFVwZGF0ZSBBdXRoIFRva2VuJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYXV0aFRva2VuOiBzdHJpbmcsIHB1YmxpYyByZWZyZXNoVG9rZW46IHN0cmluZykge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXRVc2VyTmFtZUFjdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbU2Vzc2lvbl0gU2V0VXNlck5hbWUnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1c2VyTmFtZTogc3RyaW5nKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIExvZ2luU3VjY2VzcyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbU2Vzc2lvbl0gTG9naW4gU3VjY2Vzcyc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbmFudExvYWRBY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIFRlbmFudCBMb2FkICc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRlbmFudDogVGVuYW50SW5mbykge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW5hbnRDbGVhckFjdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbU2Vzc2lvbl0gVGVuYW50IENsZWFyICc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhlYWx0aEFjdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbU2Vzc2lvbl0gSGVhbHRoIExvYWQnO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVVc2VyU2V0dGluZ3NJblNlc3Npb25BY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIFVwZGF0ZSBVc2VyIFNldHRpbmcnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1c2VyU2V0dGluZ3M6IFNwYXJrU2V0dGluZ3NEdG9bXSkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcGRhdGVUZW5hbnRJbmZvUHJvcHMge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIFVwZGF0ZSBUZW5hbnQgSW5mbyBQcm9wcyc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHByb3BzOiBhbnkpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0VGVuYW50VXNlckFjdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbU2Vzc2lvbl0gU2V0IFRlbmFudCBVc2VyJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3BhcmtTZXNzaW9uOiBTcGFya1Nlc3Npb24pIHsgfVxufVxuXG5leHBvcnQgY2xhc3MgTG9hZEFwcENvbmZpZ3VyYXRpb25BY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIEFwcCBDb25maWd1cmF0aW9uIExvYWQnO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG59XG5cbmV4cG9ydCBjbGFzcyBMb2FkQmFja29mZmljZUFwcENvbmZpZ3VyYXRpb25BY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIEJhY2tvZmZpY2UgQXBwIENvbmZpZ3VyYXRpb24gTG9hZCc7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cbn1cblxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0ZTJGQWZvclVzZXIge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1Nlc3Npb25dIEF1dGhlbnRpY2F0ZTJGQWZvclVzZXInO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXRDb25mbGljdERldGVjdGVkIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tTZXNzaW9uXSBDb25mbGljdERldGVjdGVkJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSB7IH1cbn1cblxuZXhwb3J0IGNsYXNzIENsZWFyQ29uZmxpY3REZXRlY3RlZCB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbU2Vzc2lvbl0gQ2xlYXIgQ29uZmxpY3REZXRlY3RlZCc7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cbn1cbiJdfQ==
|