@sabstravtech/obtservices 0.0.22041208 → 0.0.22050309
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/angular/fetchers.d.ts +5 -0
- package/angular/lib/vendor/fetchers/email-basket.fetcher.d.ts +7 -0
- package/angular/lib/vendor/fetchers/fast-track-quote.fetcher.d.ts +7 -0
- package/angular/lib/vendor/fetchers/get-all-airlines.fetcher.d.ts +7 -0
- package/angular/lib/vendor/fetchers/get-car-hire-providers.fetcher.d.ts +7 -0
- package/angular/lib/vendor/fetchers/get-hotel-chains.fetcher.d.ts +7 -0
- package/angular/lib/vendor/fetchers/get-rail-providers.fetcher.d.ts +7 -0
- package/angular/lib/vendor/fetchers/send-offline-notification.fetcher.d.ts +7 -0
- package/angular/lib/vendor/services/search.service.d.ts +10 -3
- package/angular/lib/vendor/services/user.service.d.ts +6 -3
- package/angular/lib/vendor/types/graphql.angular.types.d.ts +852 -13
- package/angular/lib/vendor/updaters/edit-user.updater.d.ts +6 -0
- package/angular/lib/vendor/updaters/set-user-language-updater.d.ts +6 -0
- package/angular/sabstravtech-obtservices-angular.d.ts +17 -13
- package/angular/sabstravtech-obtservices-angular.metadata.json +1 -1
- package/base/fetchers.d.ts +7 -0
- package/base/lib/vendor/classes/eurostar-enterprise-search.d.ts +8 -2
- package/base/lib/vendor/classes/fast-track-enterprise-search.d.ts +52 -0
- package/base/lib/vendor/classes/hotel-enterprise-search.d.ts +2 -1
- package/base/lib/vendor/classes/irl-enterprise-search.d.ts +7 -1
- package/base/lib/vendor/classes/modal-types.enum.d.ts +2 -0
- package/base/lib/vendor/classes/rail-enterprise-search.d.ts +2 -0
- package/base/lib/vendor/classes/supplementary-booking-info-impl.d.ts +1 -1
- package/base/lib/vendor/classes/user-favourite.enum.d.ts +1 -0
- package/base/lib/vendor/fetchers/email-basket.fetcher.d.ts +20 -0
- package/base/lib/vendor/fetchers/fast-track-quote.fetcher.d.ts +23 -0
- package/base/lib/vendor/fetchers/get-all-airlines.fetcher.d.ts +20 -0
- package/base/lib/vendor/fetchers/get-car-hire-providers.fetcher.d.ts +20 -0
- package/base/lib/vendor/fetchers/get-hotel-chains.fetcher.d.ts +20 -0
- package/base/lib/vendor/fetchers/get-rail-providers.fetcher.d.ts +20 -0
- package/base/lib/vendor/fetchers/send-offline-notification.fetcher.d.ts +21 -0
- package/base/lib/vendor/fetchers/user-fetcher.d.ts +2 -3
- package/base/lib/vendor/interfaces/Ieurostar-enterprise-search.d.ts +2 -0
- package/base/lib/vendor/interfaces/Ifast-track-enterprise-search.d.ts +22 -0
- package/base/lib/vendor/interfaces/Ihotel-enterprise-search.d.ts +1 -1
- package/base/lib/vendor/interfaces/Iirl-enterprise-search.d.ts +3 -0
- package/base/lib/vendor/interfaces/Isearch.service.d.ts +10 -4
- package/base/lib/vendor/interfaces/Isupplementary-booking-info-impl.d.ts +1 -1
- package/base/lib/vendor/interfaces/eurostar-search-arg.interface.d.ts +2 -0
- package/base/lib/vendor/interfaces/user.data.d.ts +1 -0
- package/base/lib/vendor/models/traveller.object.d.ts +1 -0
- package/base/lib/vendor/services/search.service.d.ts +31 -6
- package/base/lib/vendor/services/url.service.d.ts +2 -1
- package/base/lib/vendor/services/user.service.d.ts +17 -4
- package/base/lib/vendor/types/graphql.types.d.ts +812 -13
- package/base/lib/vendor/types/types.d.ts +27 -3
- package/base/lib/vendor/updaters/edit-user-updater.d.ts +19 -0
- package/base/lib/vendor/updaters/set-user-language-updater.d.ts +19 -0
- package/base/sabstravtech-obtservices-base.d.ts +5 -5
- package/base/sabstravtech-obtservices-base.metadata.json +1 -1
- package/base/updaters.d.ts +2 -0
- package/bundles/sabstravtech-obtservices-angular.umd.js +461 -97
- package/bundles/sabstravtech-obtservices-angular.umd.js.map +1 -1
- package/bundles/sabstravtech-obtservices-angular.umd.min.js +1 -1
- package/bundles/sabstravtech-obtservices-angular.umd.min.js.map +1 -1
- package/bundles/sabstravtech-obtservices-base.umd.js +916 -99
- package/bundles/sabstravtech-obtservices-base.umd.js.map +1 -1
- package/bundles/sabstravtech-obtservices-base.umd.min.js +2 -2
- package/bundles/sabstravtech-obtservices-base.umd.min.js.map +1 -1
- package/esm2015/angular/fetchers.js +6 -1
- package/esm2015/angular/lib/vendor/fetchers/email-basket.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/fetchers/fast-track-quote.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/fetchers/get-all-airlines.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/fetchers/get-car-hire-providers.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/fetchers/get-hotel-chains.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/fetchers/get-rail-providers.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/fetchers/send-offline-notification.fetcher.js +25 -0
- package/esm2015/angular/lib/vendor/services/search.service.js +57 -36
- package/esm2015/angular/lib/vendor/services/user.service.js +19 -10
- package/esm2015/angular/lib/vendor/types/graphql.angular.types.js +1619 -92
- package/esm2015/angular/lib/vendor/updaters/edit-user.updater.js +22 -0
- package/esm2015/angular/lib/vendor/updaters/set-user-language-updater.js +22 -0
- package/esm2015/angular/sabstravtech-obtservices-angular.js +18 -14
- package/esm2015/base/fetchers.js +8 -1
- package/esm2015/base/lib/vendor/classes/carhire-enterprise-search.js +37 -12
- package/esm2015/base/lib/vendor/classes/eurostar-enterprise-search.js +62 -13
- package/esm2015/base/lib/vendor/classes/fast-track-enterprise-search.js +229 -0
- package/esm2015/base/lib/vendor/classes/flight-enterprise-search.js +6 -1
- package/esm2015/base/lib/vendor/classes/hotel-enterprise-search.js +42 -10
- package/esm2015/base/lib/vendor/classes/irl-enterprise-search.js +18 -3
- package/esm2015/base/lib/vendor/classes/lounges-enterprise-search.js +10 -2
- package/esm2015/base/lib/vendor/classes/modal-types.enum.js +3 -1
- package/esm2015/base/lib/vendor/classes/parking-enterprise-search.js +12 -2
- package/esm2015/base/lib/vendor/classes/rail-enterprise-search.js +35 -19
- package/esm2015/base/lib/vendor/classes/supplementary-booking-info-impl.js +3 -3
- package/esm2015/base/lib/vendor/classes/user-favourite.enum.js +2 -1
- package/esm2015/base/lib/vendor/data/euro-stations.json +8 -0
- package/esm2015/base/lib/vendor/fetchers/email-basket.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/fetchers/fast-track-quote.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/fetchers/get-all-airlines.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/fetchers/get-car-hire-providers.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/fetchers/get-hotel-chains.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/fetchers/get-rail-providers.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/fetchers/send-offline-notification.fetcher.js +11 -0
- package/esm2015/base/lib/vendor/fetchers/user-fetcher.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Ieurostar-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Ifast-track-enterprise-search.js +2 -0
- package/esm2015/base/lib/vendor/interfaces/Ihotel-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Iirl-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Isearch.service.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Isupplementary-booking-info-impl.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/eurostar-search-arg.interface.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/user.data.js +1 -1
- package/esm2015/base/lib/vendor/models/traveller.object.js +3 -2
- package/esm2015/base/lib/vendor/services/hotel-avallibility.service.js +2 -1
- package/esm2015/base/lib/vendor/services/search.service.js +163 -18
- package/esm2015/base/lib/vendor/services/url.service.js +2 -1
- package/esm2015/base/lib/vendor/services/user.service.js +37 -3
- package/esm2015/base/lib/vendor/types/graphql.types.js +11 -1
- package/esm2015/base/lib/vendor/types/types.js +65 -3
- package/esm2015/base/lib/vendor/updaters/edit-user-updater.js +11 -0
- package/esm2015/base/lib/vendor/updaters/set-user-language-updater.js +11 -0
- package/esm2015/base/sabstravtech-obtservices-base.js +6 -5
- package/esm2015/base/updaters.js +3 -1
- package/fesm2015/sabstravtech-obtservices-angular.js +1705 -26
- package/fesm2015/sabstravtech-obtservices-angular.js.map +1 -1
- package/fesm2015/sabstravtech-obtservices-base.js +815 -80
- package/fesm2015/sabstravtech-obtservices-base.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,5 +8,6 @@ export var URLS;
|
|
|
8
8
|
URLS["CONFIRMA_INFO_URL"] = "/confermainfo/Info.aspx?mode=hotel&key=MICROSSABS&id=";
|
|
9
9
|
URLS["RECOVER_PASSWORD_URL"] = "password/getResetToken";
|
|
10
10
|
URLS["RESET_PASSWORD"] = "password/resetByToken";
|
|
11
|
+
URLS["ADMIN_USER_PANEL"] = "https://admin-staging.ctmlightning.co.uk/user";
|
|
11
12
|
})(URLS || (URLS = {}));
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYnRzZXJ2aWNlcy9iYXNlL3NyYy9saWIvdmVuZG9yL3NlcnZpY2VzL3VybC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLElBVVg7QUFWRCxXQUFZLElBQUk7SUFDZCxtQ0FBMkIsQ0FBQTtJQUMzQiw2QkFBcUIsQ0FBQTtJQUNyQixnQ0FBd0IsQ0FBQTtJQUN4QixzRkFBOEUsQ0FBQTtJQUM5RSxvRkFBNEUsQ0FBQTtJQUM1RSxtRkFBMkUsQ0FBQTtJQUMzRSx1REFBK0MsQ0FBQTtJQUMvQyxnREFBd0MsQ0FBQTtJQUN4QywwRUFBZ0UsQ0FBQTtBQUNsRSxDQUFDLEVBVlcsSUFBSSxLQUFKLElBQUksUUFVZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VFbnZpcm9ubWVudCB9IGZyb20gJy4uL2NsYXNzZXMvZW52aXJvbWVudCc7XHJcblxyXG5leHBvcnQgZW51bSBVUkxTIHtcclxuICBBY2Nlc3NUb2tlbiA9ICdhY2Nlc3NUb2tlbicsXHJcbiAgTE9HT1VUX1VSTCA9ICdsb2dvdXQnLFxyXG4gIFJlZnJlc2ggPSAncmVmcmVzaFRva2VuJyxcclxuICBDT05GRVJNQV9USFVNQk5BSUxfVVJMID0gJ2h0dHBzOi8vc3NsLmNvbmZlcm1hLmNvbS9JbWFnZXMvUHJvcGVydHlUaHVtYm5haWxzLycsXHJcbiAgQ09ORklSTUFfUEhPVE9fVVJMID0gJy9jb25mZXJtYWluZm8vSW5mby5hc3B4P21vZGU9bWVkaWEma2V5PU1JQ1JPU1NBQlMmaWQ9JyxcclxuICBDT05GSVJNQV9JTkZPX1VSTCA9ICcvY29uZmVybWFpbmZvL0luZm8uYXNweD9tb2RlPWhvdGVsJmtleT1NSUNST1NTQUJTJmlkPScsXHJcbiAgUkVDT1ZFUl9QQVNTV09SRF9VUkwgPSAncGFzc3dvcmQvZ2V0UmVzZXRUb2tlbicsXHJcbiAgUkVTRVRfUEFTU1dPUkQgPSAncGFzc3dvcmQvcmVzZXRCeVRva2VuJyxcclxuICBBRE1JTl9VU0VSX1BBTkVMPVwiaHR0cHM6Ly9hZG1pbi1zdGFnaW5nLmN0bWxpZ2h0bmluZy5jby51ay91c2VyXCJcclxufVxyXG4iXX0=
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
2
3
|
import { Suppliers } from '../classes/user-favourite.enum';
|
|
3
4
|
import { TravellerObject } from '../models/traveller.object';
|
|
4
5
|
import { BookerType } from '../types/graphql.types';
|
|
5
6
|
export const USER_SIGNEDOUT = 'USER_SIGNEDOUT';
|
|
6
7
|
export const USER_SIGNEDIN = 'USER_SIGNEDIN';
|
|
7
8
|
export class BaseUserService {
|
|
8
|
-
constructor(userUiConfigsFetcher, userProductsFetcher, userMessagesFetcher, baseConfirmMessagesUpdater, storageService, helpers) {
|
|
9
|
+
constructor(getUserFetcher, userUiConfigsFetcher, userProductsFetcher, userMessagesFetcher, baseConfirmMessagesUpdater, setUserLanguageUpdater, editUserUpdater, storageService, helpers) {
|
|
10
|
+
this.getUserFetcher = getUserFetcher;
|
|
9
11
|
this.userUiConfigsFetcher = userUiConfigsFetcher;
|
|
10
12
|
this.userProductsFetcher = userProductsFetcher;
|
|
11
13
|
this.userMessagesFetcher = userMessagesFetcher;
|
|
12
14
|
this.baseConfirmMessagesUpdater = baseConfirmMessagesUpdater;
|
|
15
|
+
this.setUserLanguageUpdater = setUserLanguageUpdater;
|
|
16
|
+
this.editUserUpdater = editUserUpdater;
|
|
13
17
|
this.storageService = storageService;
|
|
14
18
|
this.helpers = helpers;
|
|
15
19
|
this.fullUserDetails = {
|
|
@@ -96,6 +100,17 @@ export class BaseUserService {
|
|
|
96
100
|
const user = this.getfullUserDetails();
|
|
97
101
|
return user && user.userData ? user.userData.value.title : '';
|
|
98
102
|
}
|
|
103
|
+
getUserForename() {
|
|
104
|
+
const user = this.getfullUserDetails();
|
|
105
|
+
return user && user.userData ? user.userData.value.forename : '';
|
|
106
|
+
}
|
|
107
|
+
getUserSurname() {
|
|
108
|
+
const user = this.getfullUserDetails();
|
|
109
|
+
return user && user.userData ? user.userData.value.surname : '';
|
|
110
|
+
}
|
|
111
|
+
getFullPhoneNumber() {
|
|
112
|
+
return '';
|
|
113
|
+
}
|
|
99
114
|
getUserEmail() {
|
|
100
115
|
const user = this.getfullUserDetails();
|
|
101
116
|
return user && user.userData ? user.userData.value.username : '';
|
|
@@ -128,7 +143,7 @@ export class BaseUserService {
|
|
|
128
143
|
const ufValue = this.fullUserDetails.userConfigs.value;
|
|
129
144
|
return this.helpers.fromObject(ufValue, uf.value, 'config');
|
|
130
145
|
}
|
|
131
|
-
getUserFavoriteNumber(uf
|
|
146
|
+
getUserFavoriteNumber(uf) {
|
|
132
147
|
const ufValue = this.fullUserDetails.userConfigs.value;
|
|
133
148
|
return this.helpers.fromObject(ufValue, uf.value, 'config', 'value');
|
|
134
149
|
}
|
|
@@ -230,5 +245,24 @@ export class BaseUserService {
|
|
|
230
245
|
confirmMessages(id) {
|
|
231
246
|
return this.baseConfirmMessagesUpdater.updateOne({ messages: id });
|
|
232
247
|
}
|
|
248
|
+
getUser() {
|
|
249
|
+
const user = this.getfullUserDetails();
|
|
250
|
+
return this.getUserFetcher.fetchOne({
|
|
251
|
+
id: user.userData.value.user_id.toString()
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
setUserLanguage(id) {
|
|
255
|
+
return this.setUserLanguageUpdater.updateOne({ language: id });
|
|
256
|
+
}
|
|
257
|
+
getDocuments(type) {
|
|
258
|
+
return this.getUser().pipe(map((user) => user.documents || []), map((docs) => {
|
|
259
|
+
return type
|
|
260
|
+
? docs.filter((doc) => doc.docType === type)
|
|
261
|
+
: docs;
|
|
262
|
+
}));
|
|
263
|
+
}
|
|
264
|
+
editUser(user) {
|
|
265
|
+
return this.editUserUpdater.updateOne(user);
|
|
266
|
+
}
|
|
233
267
|
}
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2J0c2VydmljZXMvYmFzZS9zcmMvbGliL3ZlbmRvci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBMEIsTUFBTSxNQUFNLENBQUM7QUFJL0QsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQW1CM0UsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFDTCxVQUFVLEVBSVgsTUFBTSx3QkFBd0IsQ0FBQztBQUdoQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQU03QyxNQUFNLE9BQU8sZUFBZTtJQW9CMUIsWUFDVSxvQkFBb0QsRUFDcEQsbUJBQWtELEVBQ2xELG1CQUFrRCxFQUNsRCwwQkFBNkQsRUFDN0QsY0FBa0MsRUFDbEMsT0FBMkI7UUFMM0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFnQztRQUNwRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQStCO1FBQ2xELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBK0I7UUFDbEQsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUFtQztRQUM3RCxtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFuQjlCLG9CQUFlLEdBQW9CO1lBQ3hDLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsUUFBUSxFQUFFLElBQUksZUFBZSxDQUFZLElBQUksQ0FBQztZQUM5QyxjQUFjLEVBQUUsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDO1lBQ3BELFdBQVcsRUFBRSxJQUFJLGVBQWUsQ0FFN0IsSUFBSSxDQUFDO1lBQ1IsUUFBUSxFQUFF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Q0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNwRSxDQUFDLEtBQWMsRUFBRSxFQUFFO2dCQUNqQixPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQU0sUUFBbUIsQ0FBQztZQUM3QyxDQUFDLENBQ0YsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFVO1FBQ3BCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzNDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssRUFDdkMsRUFBRSxDQUNILENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsZUFBZSxDQUFDLEVBQXFCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCYXNlSGVscGVyUm91dGluZXMgfSBmcm9tICcuLi9jbGFzc2VzL2hlbHBlcnMnO1xyXG5cclxuaW1wb3J0IHsgU3VwcGxpZXJzLCBVc2VyRmF2b3J1cml0ZSB9IGZyb20gJy4uL2NsYXNzZXMvdXNlci1mYXZvdXJpdGUuZW51bSc7XHJcbmltcG9ydCB7XHJcbiAgQmFzZVVzZXJNZXNzYWdlc0ZldGNoZXIsXHJcbiAgVXNlck1lc3NhZ2VGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL3VzZXItbWVzc2FnZS5mZXRjaGVyJztcclxuaW1wb3J0IHtcclxuICBCYXNlVXNlclByb2R1Y3RzRmV0Y2hlcixcclxuICBVc2VyUHJvZHVjdHNGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL3VzZXItcHJvZHVjdHMtZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZVVzZXJVaUNvbmZpZ3NGZXRjaGVyLFxyXG4gIFVzZXJVaUNvbmZpZ3NGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL3VzZXItdWktY29uZmlncy1mZXRjaGVyJztcclxuaW1wb3J0IHtcclxuICBGdWxsVXNlckRldGFpbHMsXHJcbiAgVXNlclNlcnZpY2VJbnRlcmZhY2UsXHJcbiAgVXNlclNlcnZpY2VzXHJcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9JdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlckRhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3VzZXIuZGF0YSc7XHJcbmltcG9ydCB7IFRyYXZlbGxlciwgVHJhdmVsbGVyT2JqZWN0IH0gZnJvbSAnLi4vbW9kZWxzL3RyYXZlbGxlci5vYmplY3QnO1xyXG5pbXBvcnQge1xyXG4gIEJvb2tlclR5cGUsXHJcbiAgTWVzc2FnZSxcclxuICBTZXJ2aWNlLFxyXG4gIFNlcnZpY2VUeXBlXHJcbn0gZnJvbSAnLi4vdHlwZXMvZ3JhcGhxbC50eXBlcyc7XHJcbmltcG9ydCB7IFNlcnZpY2VQcm92aWRlciwgVW5wYWNrZWQsIFVzZXJVaUNvbmZpZ3NSZXN1bHQsIFJpc2tBbGVydEludGVyZmFjZSwgUmlza0xldmVsUmFua2luZyB9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5leHBvcnQgY29uc3QgVVNFUl9TSUdORURPVVQgPSAnVVNFUl9TSUdORURPVVQnO1xyXG5leHBvcnQgY29uc3QgVVNFUl9TSUdORURJTiA9ICdVU0VSX1NJR05FRElOJztcclxuaW1wb3J0IHtcclxuICBCYXNlQ29uZmlybU1lc3NhZ2VzVXBkYXRlcixcclxuICBDb25maXJtTWVzc2FnZXNGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL3VwZGF0ZXJzL2NvbmZpcm0tbWVzc2FnZXMtdXBkYXRlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgQmFzZVVzZXJTZXJ2aWNlPFxyXG4gIFVDX1EgZXh0ZW5kcyBVc2VyVWlDb25maWdzRmV0Y2hlclR5cGUsXHJcbiAgVVNfUSBleHRlbmRzIFVzZXJQcm9kdWN0c0ZldGNoZXJUeXBlLFxyXG4gIFVNX1EgZXh0ZW5kcyBVc2VyTWVzc2FnZUZldGNoZXJUeXBlLFxyXG4gIENNVV9RIGV4dGVuZHMgQ29uZmlybU1lc3NhZ2VzRmV0Y2hlclR5cGVcclxuPiBpbXBsZW1lbnRzIFVzZXJTZXJ2aWNlSW50ZXJmYWNlXHJcbntcclxuICBwdWJsaWMgZnVsbFVzZXJEZXRhaWxzOiBGdWxsVXNlckRldGFpbHMgPSB7XHJcbiAgICBib29raW5nQWxsb3dlZEZvcjogJycsXHJcbiAgICBtZXNzYWdlczogbmV3IEJlaGF2aW9yU3ViamVjdDxNZXNzYWdlW10+KG51bGwpLFxyXG4gICAgdHJhdmxsZXJPYmplY3Q6IG5ldyBCZWhhdmlvclN1YmplY3Q8VHJhdmVsbGVyPihudWxsKSxcclxuICAgIHVzZXJDb25maWdzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcclxuICAgICAgW2tleTogc3RyaW5nXTogVW5wYWNrZWQ8VXNlclVpQ29uZmlnc1Jlc3VsdD47XHJcbiAgICB9PihudWxsKSxcclxuICAgIHVzZXJEYXRhOiBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXJEYXRhPihudWxsKSxcclxuICAgIHVzZXJTZXJ2aWNlczogbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyU2VydmljZXM+KG51bGwpXHJcbiAgfTtcclxuICBjaGFuZ2VVc2VyOiBCZWhhdmlvclN1YmplY3Q8RnVsbFVzZXJEZXRhaWxzPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEZ1bGxVc2VyRGV0YWlscz4obnVsbCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB1c2VyVWlDb25maWdzRmV0Y2hlcjogQmFzZVVzZXJVaUNvbmZpZ3NGZXRjaGVyPFVDX1E+LFxyXG4gICAgcHJpdmF0ZSB1c2VyUHJvZHVjdHNGZXRjaGVyOiBCYXNlVXNlclByb2R1Y3RzRmV0Y2hlcjxVU19RPixcclxuICAgIHByaXZhdGUgdXNlck1lc3NhZ2VzRmV0Y2hlcjogQmFzZVVzZXJNZXNzYWdlc0ZldGNoZXI8VU1fUT4sXHJcbiAgICBwcml2YXRlIGJhc2VDb25maXJtTWVzc2FnZXNVcGRhdGVyOiBCYXNlQ29uZmlybU1lc3NhZ2VzVXBkYXRlcjxDTVVfUT4sXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBCYXNlU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGhlbHBlcnM6IEJhc2VIZWxwZXJSb3V0aW5lc1xyXG4gICkgeyB9XHJcblxyXG4gIHNldFVzZXIodXNlcl9kYXRhOiBVc2VyRGF0YSk6IHZvaWQge1xyXG4gICAgY29uc3QgdXNlcmRhdGEgPSB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZTtcclxuICAgIGlmICghdXNlcmRhdGEgfHwgdXNlcmRhdGEudXNlcm5hbWUgIT09IHVzZXJfZGF0YS51c2VybmFtZSkge1xyXG4gICAgICB0aGlzLnVzZXJVaUNvbmZpZ3NGZXRjaGVyLmZldGNoS2V5ZWRPYmplY3QoJ2tleScpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzdWx0MTogeyBba2V5OiBzdHJpbmddOiBVbnBhY2tlZDxVc2VyVWlDb25maWdzUmVzdWx0PiB9KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy5uZXh0KHJlc3VsdDEpO1xyXG4gICAgICAgICAgdGhpcy5jaGVja0VtaXRVc2VyKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy51c2VyUHJvZHVjdHNGZXRjaGVyXHJcbiAgICAgICAgLmZldGNoS2V5ZWRPYmplY3RBcnJheSgndHlwZScpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0MjogVXNlclNlcnZpY2VzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMubmV4dChyZXN1bHQyKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNoZWNrRW1pdFVzZXIoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy51c2VyTWVzc2FnZXNGZXRjaGVyLmZldGNoTGlzdCgpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzdWx0MzogTWVzc2FnZVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy5tZXNzYWdlcy5uZXh0KHJlc3VsdDMpO1xyXG4gICAgICAgICAgdGhpcy5jaGVja0VtaXRVc2VyKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnRyYXZsbGVyT2JqZWN0Lm5leHQoXHJcbiAgICAgICAgVHJhdmVsbGVyT2JqZWN0Lm1ha2VUcmF2ZWxsZXJPYmplY3RGcm9tVXNlcih1c2VyX2RhdGEpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEubmV4dCh1c2VyX2RhdGEpO1xyXG5cclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0U2Vzc2lvbkl0ZW0oJ2xpZ2h0bmluZ191c2VyX2RhdGEnLCB1c2VyX2RhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tFbWl0VXNlcigpIHtcclxuICAgIGlmIChcclxuICAgICAgISF0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy52YWx1ZSAmJlxyXG4gICAgICAhIXRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlICYmXHJcbiAgICAgICEhdGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLnZhbHVlICYmXHJcbiAgICAgICEhdGhpcy5mdWxsVXNlckRldGFpbHMubWVzc2FnZXMudmFsdWVcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNoYW5nZVVzZXIubmV4dCh0aGlzLmZ1bGxVc2VyRGV0YWlscyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRmdWxsVXNlckRldGFpbHMoYWRtaW46IGJvb2xlYW4gPSBmYWxzZSk6IEZ1bGxVc2VyRGV0YWlscyB8IG51bGwge1xyXG4gICAgaWYgKGFkbWluKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9nZXRGdWxsVXNlckRldGFpbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0RnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5vbkJlaGFsZlVzZXIgfHwgdGhpcy5fZ2V0VXNlckRldGFpbHMoKTtcclxuICB9XHJcblxyXG4gIF9nZXRGdWxsVXNlckRldGFpbHMoKTogRnVsbFVzZXJEZXRhaWxzIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzIHx8XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvbkl0ZW0oJ2xpZ2h0bmluZ191c2VyX2RhdGEnKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJEcm9wZG93bkluZm8oKToge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgZW1haWw6IHN0cmluZztcclxuICAgIGFjY291bnRfdHlwZTogQm9va2VyVHlwZSB8IHN0cmluZztcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgfSB7XHJcbiAgICBjb25zdCBkcm9wZG93bl9pbmZvID0ge1xyXG4gICAgICBuYW1lOiAnVW5hYmxlIHRvIHJldHJpZXZlIG5hbWUuJyxcclxuICAgICAgZW1haWw6ICdVbmFibGUgdG8gcmVyaWV2ZSBlbWFpbCcsXHJcbiAgICAgIGFjY291bnRfdHlwZTogJ1Vua25vd24nLFxyXG4gICAgICB0aXRsZTogJydcclxuICAgIH07XHJcbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRVc2Vyc0Z1bGxuYW1lKCk7XHJcbiAgICBjb25zdCBlbWFpbCA9IHRoaXMuZ2V0VXNlckVtYWlsKCk7XHJcbiAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRVc2VyQm9va2luZ1R5cGUoKTtcclxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5nZXRVc2VyVGl0bGUoKTtcclxuXHJcbiAgICBpZiAobmFtZSkge1xyXG4gICAgICBkcm9wZG93bl9pbmZvLm5hbWUgPSBuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlbWFpbCkge1xyXG4gICAgICBkcm9wZG93bl9pbmZvLmVtYWlsID0gZW1haWw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUpIHtcclxuICAgICAgZHJvcGRvd25faW5mby5hY2NvdW50X3R5cGUgPSB0eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aXRsZSkge1xyXG4gICAgICBkcm9wZG93bl9pbmZvLnRpdGxlID0gdGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRyb3Bkb3duX2luZm87XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyVGl0bGUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhID8gdXNlci51c2VyRGF0YS52YWx1ZS50aXRsZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckVtYWlsKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB1c2VyOiBGdWxsVXNlckRldGFpbHMgPSB0aGlzLmdldGZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgdXNlci51c2VyRGF0YSA/IHVzZXIudXNlckRhdGEudmFsdWUudXNlcm5hbWUgOiAnJztcclxuICB9XHJcblxyXG4gIGdldFVzZXJCb29raW5nVHlwZSgpOiBCb29rZXJUeXBlIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhID8gdXNlci51c2VyRGF0YS52YWx1ZS5ib29rZXJfdHlwZSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRVc2Vyc0Z1bGxuYW1lKCk6IHN0cmluZyB8IGZhbHNlIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhXHJcbiAgICAgID8gdXNlci51c2VyRGF0YS52YWx1ZS5mb3JlbmFtZSArICcgJyArIHVzZXIudXNlckRhdGEudmFsdWUuc3VybmFtZVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcnNUaXRsZUFuZEZ1bGxOYW1lKCk6IHN0cmluZyB8IGZhbHNlIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhXHJcbiAgICAgID8gdXNlci51c2VyRGF0YS52YWx1ZS50aXRsZSArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIHVzZXIudXNlckRhdGEudmFsdWUuZm9yZW5hbWUgK1xyXG4gICAgICAnICcgK1xyXG4gICAgICB1c2VyLnVzZXJEYXRhLnZhbHVlLnN1cm5hbWVcclxuICAgICAgOiBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0VXNlckZhdm9yaXRlVmFsdWUoXHJcbiAgICB1ZjogVXNlckZhdm9ydXJpdGUsXHJcbiAgICBzdXBwbGllcjogU3VwcGxpZXJzID0gU3VwcGxpZXJzLm5vblxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB1ZlZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MudmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5mcm9tT2JqZWN0KHVmVmFsdWUsIHVmLnZhbHVlLCAnY29uZmlnJywgdWYudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckZhdm9yaXRlT2JqZWN0PFQ+KHVmOiBVc2VyRmF2b3J1cml0ZSk6IFQge1xyXG4gICAgY29uc3QgdWZWYWx1ZTogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLnZhbHVlO1xyXG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5mcm9tT2JqZWN0KHVmVmFsdWUsIHVmLnZhbHVlLCAnY29uZmlnJyk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRmF2b3JpdGVOdW1iZXIoXHJcbiAgICB1ZjogVXNlckZhdm9ydXJpdGUsXHJcbiAgICBzdXBwbGllcjogU3VwcGxpZXJzID0gU3VwcGxpZXJzLm5vblxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB1ZlZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MudmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5mcm9tT2JqZWN0KHVmVmFsdWUsIHVmLnZhbHVlLCAnY29uZmlnJywgJ3ZhbHVlJyk7XHJcbiAgfVxyXG5cclxuICBpc1VzZXJGYXZvcml0ZVNldChcclxuICAgIHVmOiBVc2VyRmF2b3J1cml0ZSxcclxuICAgIHN1cHBsaWVyOiBTdXBwbGllcnMgPSBTdXBwbGllcnMubm9uXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB1ZlZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MudmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5mcm9tT2JqZWN0KHVmVmFsdWUsIHVmLnZhbHVlLCAnY29uZmlnJywgJ3ZhbHVlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyAtIGNyZWF0ZSBhIGR1bW15IHVzZXIgZm9yIHNlbGYgYm9va2Vyc1xyXG4gICAqL1xyXG4gIGNyZWF0ZVNlbGZUcmF2ZWxsZXIoKTogVHJhdmVsbGVyIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy50cmF2bGxlck9iamVjdC52YWx1ZTtcclxuICB9XHJcblxyXG4gIHRyYXZlbGxlcklzVXNlcih0cmF2ZWxsZXI6IFRyYXZlbGxlcik6IGJvb2xlYW4ge1xyXG4gICAgLy8gVE9ETyBjaGVjayB0aGUgdHJhdmVsbGVyIGlzbid0IHRoZSBjdXJyZW50IHVzZXIgb3IgYWdlbnQgYm9va1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZW1wdHlVc2VyRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy5tZXNzYWdlcy5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5jaGFuZ2VVc2VyLm5leHQodGhpcy5mdWxsVXNlckRldGFpbHMpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlR3Vlc3RVc2VyKFxyXG4gICAgdGl0bGU6IHN0cmluZyxcclxuICAgIGZvcmVuYW1lOiBzdHJpbmcsXHJcbiAgICBzdXJuYW1lOiBzdHJpbmcsXHJcbiAgICBlbWFpbDogc3RyaW5nLFxyXG4gICAgZ3Vlc3RNb2JpbGVDb3VudHJ5Tm86IHN0cmluZyxcclxuICAgIGd1ZXN0TW9iaWxlTnVtYmVyOiBzdHJpbmcsXHJcbiAgICBndWVzdF9uYXRpb25hbGl0eTogc3RyaW5nLFxyXG4gICAgZ2VuZGVyOiBzdHJpbmcsXHJcbiAgICBpc0NoaWxkOiBib29sZWFuLFxyXG4gICAgaXNJbmZhbnQ6IGJvb2xlYW4sXHJcbiAgICBjaGlsZERPQjogRGF0ZVxyXG4gICk6IFRyYXZlbGxlciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpc0NoaWxkLFxyXG4gICAgICBpc0luZmFudCxcclxuICAgICAgY2hpbGRET0IsXHJcbiAgICAgIGd1ZXN0OiB0cnVlLFxyXG4gICAgICBpZDogJycsXHJcbiAgICAgIGZvcmVuYW1lLFxyXG4gICAgICBzdXJuYW1lLFxyXG4gICAgICBlbWFpbCxcclxuICAgICAgdGl0bGUsXHJcbiAgICAgIG5hbWU6IFt0aXRsZSwgZm9yZW5hbWUsIHN1cm5hbWVdLmpvaW4oJyAnKVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHVzZXJJc0NsaWVudCgpOiBib29sZWFuIHtcclxuICAgIC8qIFRPRE9cclxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiAhdGhpcy5pc0FnZW5jeVVzZXIoKSAmJiBbJ1RyYXZlbGxlcicsICdNZScsICdPdGhlcnMnLCAnQm9va2VyJ10uaW5jbHVkZXModXNlci5Cb29raW5nQWxsb3dlZEZvcik7XHJcbiAgICAqL1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBoYXNJZ25vcmVQb2xpY3koKTogYm9vbGVhbiB7XHJcbiAgICAvKiBUT0RPXHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgdXNlci5Cb29raW5nUG9saWN5T3ZlcnJpZGUgJiYgdXNlci5Cb29raW5nUG9saWN5T3ZlcnJpZGUgPT09ICc5OTk5LTAxLTAxIDAwOjAwOjAwJzsqL1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICB1c2VBZ2VudENhbkJvb2tGb3IoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTsgLy8gVE9ET1xyXG4gIH1cclxuXHJcbiAgY2FuQm9vayhzZXJ2aWNlOiBTZXJ2aWNlVHlwZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2VydmljZXM6IFVzZXJTZXJ2aWNlcyA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy52YWx1ZTtcclxuICAgIHJldHVybiBzZXJ2aWNlcyAmJiAhIXNlcnZpY2VzW3NlcnZpY2VdO1xyXG4gIH1cclxuXHJcbiAgaXNUcmF2ZWxsZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5ib29rZXJfdHlwZSA9PT0gQm9va2VyVHlwZS5UcmF2ZWxsZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1c2VySXNBZ2VudCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLmJvb2tlcl90eXBlID09PSBCb29rZXJUeXBlLkNvbXBhbnlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1c2VySXNBZG1pbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5hZG1pbjtcclxuICB9XHJcblxyXG4gIHVzZXJJc0NvbXBhbnlBZG1pbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5jb21wYW55X2FkbWluO1xyXG4gIH1cclxuXHJcbiAgaXNTZWxmQm9vaygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLmJvb2tlcl90eXBlID09PSBCb29rZXJUeXBlLlNlbGZCb29rXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNCb29rZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5ib29rZXJfdHlwZSA9PT0gQm9va2VyVHlwZS5Cb29rZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VySWQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS51c2VyX2lkO1xyXG4gIH1cclxuXHJcbiAgdXNlckhhc1NlcnZpY2VQcm92aWRlcihcclxuICAgIHNlcnZpY2U6IFNlcnZpY2VUeXBlLFxyXG4gICAgcHJvdmlkZXI6IFNlcnZpY2VQcm92aWRlclxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gISEodGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLnZhbHVlW3NlcnZpY2VdIHx8IFtdKS5maW5kKFxyXG4gICAgICAgICh2YWx1ZTogU2VydmljZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlLm5hbWUgPT09IChwcm92aWRlciBhcyBzdHJpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbmRTZXJ2aWNlKGlkOiBzdHJpbmcpOiBTZXJ2aWNlIHtcclxuICAgIGlmICh0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGVscGVycy5maW5kU2VydmljZShcclxuICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWUsXHJcbiAgICAgICAgaWRcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlck1lc3NhZ2VzKCk6IE9ic2VydmFibGU8TWVzc2FnZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyTWVzc2FnZXNGZXRjaGVyLmZldGNoTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybU1lc3NhZ2VzKGlkOiBzdHJpbmcgfCBzdHJpbmdbXSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFzZUNvbmZpcm1NZXNzYWdlc1VwZGF0ZXIudXBkYXRlT25lKHsgbWVzc2FnZXM6IGlkIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2J0c2VydmljZXMvYmFzZS9zcmMvbGliL3ZlbmRvci9zZXJ2aWNlcy91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckMsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQXVCM0UsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hFLE9BQU8sRUFFTCxVQUFVLEVBT1gsTUFBTSx3QkFBd0IsQ0FBQztBQUdoQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQWM3QyxNQUFNLE9BQU8sZUFBZTtJQXVCMUIsWUFDVSxjQUF3QyxFQUN4QyxvQkFBb0QsRUFDcEQsbUJBQWtELEVBQ2xELG1CQUFrRCxFQUNsRCwwQkFBNkQsRUFDN0Qsc0JBQXlELEVBQ3pELGVBQTJDLEVBQzNDLGNBQWtDLEVBQ2xDLE9BQTJCO1FBUjNCLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtRQUN4Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWdDO1FBQ3BELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBK0I7UUFDbEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUErQjtRQUNsRCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQW1DO1FBQzdELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBbUM7UUFDekQsb0JBQWUsR0FBZixlQUFlLENBQTRCO1FBQzNDLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQXRCOUIsb0JBQWUs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QUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZUhlbHBlclJvdXRpbmVzIH0gZnJvbSAnLi4vY2xhc3Nlcy9oZWxwZXJzJztcclxuXHJcbmltcG9ydCB7IFN1cHBsaWVycywgVXNlckZhdm9ydXJpdGUgfSBmcm9tICcuLi9jbGFzc2VzL3VzZXItZmF2b3VyaXRlLmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VVc2VyTWVzc2FnZXNGZXRjaGVyLFxyXG4gIFVzZXJNZXNzYWdlRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy91c2VyLW1lc3NhZ2UuZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZVVzZXJQcm9kdWN0c0ZldGNoZXIsXHJcbiAgVXNlclByb2R1Y3RzRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy91c2VyLXByb2R1Y3RzLWZldGNoZXInO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VVc2VyVWlDb25maWdzRmV0Y2hlcixcclxuICBVc2VyVWlDb25maWdzRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi9mZXRjaGVycy91c2VyLXVpLWNvbmZpZ3MtZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUdldFVzZXJGZXRjaGVyLFxyXG4gIFNlYXJjaEdldFVzZXJGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL2ZldGNoZXJzL3VzZXItZmV0Y2hlcic7XHJcbmltcG9ydCB7XHJcbiAgRnVsbFVzZXJEZXRhaWxzLFxyXG4gIFVzZXJTZXJ2aWNlSW50ZXJmYWNlLFxyXG4gIFVzZXJTZXJ2aWNlc1xyXG59IGZyb20gJy4uL2ludGVyZmFjZXMvSXVzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy91c2VyLmRhdGEnO1xyXG5pbXBvcnQgeyBUcmF2ZWxsZXIsIFRyYXZlbGxlck9iamVjdCB9IGZyb20gJy4uL21vZGVscy90cmF2ZWxsZXIub2JqZWN0JztcclxuaW1wb3J0IHtcclxuICBEb2N1bWVudCxcclxuICBCb29rZXJUeXBlLFxyXG4gIE1lc3NhZ2UsXHJcbiAgTXV0YXRpb25FZGl0VXNlckFyZ3MsXHJcbiAgU2VydmljZSxcclxuICBTZXJ2aWNlVHlwZSxcclxuICBVc2VyLFxyXG4gIERvY1R5cGVcclxufSBmcm9tICcuLi90eXBlcy9ncmFwaHFsLnR5cGVzJztcclxuaW1wb3J0IHsgU2VydmljZVByb3ZpZGVyLCBVbnBhY2tlZCwgVXNlclVpQ29uZmlnc1Jlc3VsdCB9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5leHBvcnQgY29uc3QgVVNFUl9TSUdORURPVVQgPSAnVVNFUl9TSUdORURPVVQnO1xyXG5leHBvcnQgY29uc3QgVVNFUl9TSUdORURJTiA9ICdVU0VSX1NJR05FRElOJztcclxuaW1wb3J0IHtcclxuICBCYXNlQ29uZmlybU1lc3NhZ2VzVXBkYXRlcixcclxuICBDb25maXJtTWVzc2FnZXNGZXRjaGVyVHlwZVxyXG59IGZyb20gJy4uL3VwZGF0ZXJzL2NvbmZpcm0tbWVzc2FnZXMtdXBkYXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQmFzZVNldFVzZXJMYW5ndWFnZVVwZGF0ZXIsXHJcbiAgU2V0VXNlckxhbmd1YWdlRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9zZXQtdXNlci1sYW5ndWFnZS11cGRhdGVyJztcclxuaW1wb3J0IHtcclxuICBCYXNlRWRpdFVzZXJVcGRhdGVyLFxyXG4gIEVkaXRVc2VyRmV0Y2hlclR5cGVcclxufSBmcm9tICcuLi91cGRhdGVycy9lZGl0LXVzZXItdXBkYXRlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgQmFzZVVzZXJTZXJ2aWNlPFxyXG4gIEdVX1EgZXh0ZW5kcyBTZWFyY2hHZXRVc2VyRmV0Y2hlclR5cGUsXHJcbiAgVUNfUSBleHRlbmRzIFVzZXJVaUNvbmZpZ3NGZXRjaGVyVHlwZSxcclxuICBVU19RIGV4dGVuZHMgVXNlclByb2R1Y3RzRmV0Y2hlclR5cGUsXHJcbiAgVU1fUSBleHRlbmRzIFVzZXJNZXNzYWdlRmV0Y2hlclR5cGUsXHJcbiAgQ01VX1EgZXh0ZW5kcyBDb25maXJtTWVzc2FnZXNGZXRjaGVyVHlwZSxcclxuICBTTFVfUSBleHRlbmRzIFNldFVzZXJMYW5ndWFnZUZldGNoZXJUeXBlLFxyXG4gIEVVVV9RIGV4dGVuZHMgRWRpdFVzZXJGZXRjaGVyVHlwZVxyXG4+IGltcGxlbWVudHMgVXNlclNlcnZpY2VJbnRlcmZhY2Vcclxue1xyXG4gIHB1YmxpYyBmdWxsVXNlckRldGFpbHM6IEZ1bGxVc2VyRGV0YWlscyA9IHtcclxuICAgIGJvb2tpbmdBbGxvd2VkRm9yOiAnJyxcclxuICAgIG1lc3NhZ2VzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lc3NhZ2VbXT4obnVsbCksXHJcbiAgICB0cmF2bGxlck9iamVjdDogbmV3IEJlaGF2aW9yU3ViamVjdDxUcmF2ZWxsZXI+KG51bGwpLFxyXG4gICAgdXNlckNvbmZpZ3M6IG5ldyBCZWhhdmlvclN1YmplY3Q8e1xyXG4gICAgICBba2V5OiBzdHJpbmddOiBVbnBhY2tlZDxVc2VyVWlDb25maWdzUmVzdWx0PjtcclxuICAgIH0+KG51bGwpLFxyXG4gICAgdXNlckRhdGE6IG5ldyBCZWhhdmlvclN1YmplY3Q8VXNlckRhdGE+KG51bGwpLFxyXG4gICAgdXNlclNlcnZpY2VzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXJTZXJ2aWNlcz4obnVsbClcclxuICB9O1xyXG4gIGNoYW5nZVVzZXI6IEJlaGF2aW9yU3ViamVjdDxGdWxsVXNlckRldGFpbHM+ID1cclxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8RnVsbFVzZXJEZXRhaWxzPihudWxsKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdldFVzZXJGZXRjaGVyOiBCYXNlR2V0VXNlckZldGNoZXI8R1VfUT4sXHJcbiAgICBwcml2YXRlIHVzZXJVaUNvbmZpZ3NGZXRjaGVyOiBCYXNlVXNlclVpQ29uZmlnc0ZldGNoZXI8VUNfUT4sXHJcbiAgICBwcml2YXRlIHVzZXJQcm9kdWN0c0ZldGNoZXI6IEJhc2VVc2VyUHJvZHVjdHNGZXRjaGVyPFVTX1E+LFxyXG4gICAgcHJpdmF0ZSB1c2VyTWVzc2FnZXNGZXRjaGVyOiBCYXNlVXNlck1lc3NhZ2VzRmV0Y2hlcjxVTV9RPixcclxuICAgIHByaXZhdGUgYmFzZUNvbmZpcm1NZXNzYWdlc1VwZGF0ZXI6IEJhc2VDb25maXJtTWVzc2FnZXNVcGRhdGVyPENNVV9RPixcclxuICAgIHByaXZhdGUgc2V0VXNlckxhbmd1YWdlVXBkYXRlcjogQmFzZVNldFVzZXJMYW5ndWFnZVVwZGF0ZXI8U0xVX1E+LFxyXG4gICAgcHJpdmF0ZSBlZGl0VXNlclVwZGF0ZXI6IEJhc2VFZGl0VXNlclVwZGF0ZXI8RVVVX1E+LFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogQmFzZVN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBoZWxwZXJzOiBCYXNlSGVscGVyUm91dGluZXNcclxuICApIHt9XHJcblxyXG4gIHNldFVzZXIodXNlcl9kYXRhOiBVc2VyRGF0YSk6IHZvaWQge1xyXG4gICAgY29uc3QgdXNlcmRhdGEgPSB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZTtcclxuICAgIGlmICghdXNlcmRhdGEgfHwgdXNlcmRhdGEudXNlcm5hbWUgIT09IHVzZXJfZGF0YS51c2VybmFtZSkge1xyXG4gICAgICB0aGlzLnVzZXJVaUNvbmZpZ3NGZXRjaGVyLmZldGNoS2V5ZWRPYmplY3QoJ2tleScpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzdWx0MTogeyBba2V5OiBzdHJpbmddOiBVbnBhY2tlZDxVc2VyVWlDb25maWdzUmVzdWx0PiB9KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy5uZXh0KHJlc3VsdDEpO1xyXG4gICAgICAgICAgdGhpcy5jaGVja0VtaXRVc2VyKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy51c2VyUHJvZHVjdHNGZXRjaGVyXHJcbiAgICAgICAgLmZldGNoS2V5ZWRPYmplY3RBcnJheSgndHlwZScpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0MjogVXNlclNlcnZpY2VzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMubmV4dChyZXN1bHQyKTtcclxuXHJcbiAgICAgICAgICB0aGlzLmNoZWNrRW1pdFVzZXIoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy51c2VyTWVzc2FnZXNGZXRjaGVyLmZldGNoTGlzdCgpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzdWx0MzogTWVzc2FnZVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy5tZXNzYWdlcy5uZXh0KHJlc3VsdDMpO1xyXG4gICAgICAgICAgdGhpcy5jaGVja0VtaXRVc2VyKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnRyYXZsbGVyT2JqZWN0Lm5leHQoXHJcbiAgICAgICAgVHJhdmVsbGVyT2JqZWN0Lm1ha2VUcmF2ZWxsZXJPYmplY3RGcm9tVXNlcih1c2VyX2RhdGEpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckRhdGEubmV4dCh1c2VyX2RhdGEpO1xyXG5cclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0U2Vzc2lvbkl0ZW0oJ2xpZ2h0bmluZ191c2VyX2RhdGEnLCB1c2VyX2RhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tFbWl0VXNlcigpIHtcclxuICAgIGlmIChcclxuICAgICAgISF0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy52YWx1ZSAmJlxyXG4gICAgICAhIXRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlICYmXHJcbiAgICAgICEhdGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLnZhbHVlICYmXHJcbiAgICAgICEhdGhpcy5mdWxsVXNlckRldGFpbHMubWVzc2FnZXMudmFsdWVcclxuICAgICkge1xyXG4gICAgICB0aGlzLmNoYW5nZVVzZXIubmV4dCh0aGlzLmZ1bGxVc2VyRGV0YWlscyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRmdWxsVXNlckRldGFpbHMoYWRtaW46IGJvb2xlYW4gPSBmYWxzZSk6IEZ1bGxVc2VyRGV0YWlscyB8IG51bGwge1xyXG4gICAgaWYgKGFkbWluKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9nZXRGdWxsVXNlckRldGFpbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0RnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5vbkJlaGFsZlVzZXIgfHwgdGhpcy5fZ2V0VXNlckRldGFpbHMoKTtcclxuICB9XHJcblxyXG4gIF9nZXRGdWxsVXNlckRldGFpbHMoKTogRnVsbFVzZXJEZXRhaWxzIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzIHx8XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvbkl0ZW0oJ2xpZ2h0bmluZ191c2VyX2RhdGEnKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJEcm9wZG93bkluZm8oKToge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgZW1haWw6IHN0cmluZztcclxuICAgIGFjY291bnRfdHlwZTogQm9va2VyVHlwZSB8IHN0cmluZztcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgfSB7XHJcbiAgICBjb25zdCBkcm9wZG93bl9pbmZvID0ge1xyXG4gICAgICBuYW1lOiAnVW5hYmxlIHRvIHJldHJpZXZlIG5hbWUuJyxcclxuICAgICAgZW1haWw6ICdVbmFibGUgdG8gcmVyaWV2ZSBlbWFpbCcsXHJcbiAgICAgIGFjY291bnRfdHlwZTogJ1Vua25vd24nLFxyXG4gICAgICB0aXRsZTogJydcclxuICAgIH07XHJcbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXRVc2Vyc0Z1bGxuYW1lKCk7XHJcbiAgICBjb25zdCBlbWFpbCA9IHRoaXMuZ2V0VXNlckVtYWlsKCk7XHJcbiAgICBjb25zdCB0eXBlID0gdGhpcy5nZXRVc2VyQm9va2luZ1R5cGUoKTtcclxuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5nZXRVc2VyVGl0bGUoKTtcclxuXHJcbiAgICBpZiAobmFtZSkge1xyXG4gICAgICBkcm9wZG93bl9pbmZvLm5hbWUgPSBuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlbWFpbCkge1xyXG4gICAgICBkcm9wZG93bl9pbmZvLmVtYWlsID0gZW1haWw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUpIHtcclxuICAgICAgZHJvcGRvd25faW5mby5hY2NvdW50X3R5cGUgPSB0eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aXRsZSkge1xyXG4gICAgICBkcm9wZG93bl9pbmZvLnRpdGxlID0gdGl0bGU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRyb3Bkb3duX2luZm87XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyVGl0bGUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhID8gdXNlci51c2VyRGF0YS52YWx1ZS50aXRsZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckZvcmVuYW1lKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB1c2VyOiBGdWxsVXNlckRldGFpbHMgPSB0aGlzLmdldGZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgdXNlci51c2VyRGF0YSA/IHVzZXIudXNlckRhdGEudmFsdWUuZm9yZW5hbWUgOiAnJztcclxuICB9XHJcblxyXG4gIGdldFVzZXJTdXJuYW1lKCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB1c2VyOiBGdWxsVXNlckRldGFpbHMgPSB0aGlzLmdldGZ1bGxVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgdXNlci51c2VyRGF0YSA/IHVzZXIudXNlckRhdGEudmFsdWUuc3VybmFtZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0RnVsbFBob25lTnVtYmVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyRW1haWwoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiB1c2VyLnVzZXJEYXRhID8gdXNlci51c2VyRGF0YS52YWx1ZS51c2VybmFtZSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckJvb2tpbmdUeXBlKCk6IEJvb2tlclR5cGUge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGEgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLmJvb2tlcl90eXBlIDogbnVsbDtcclxuICB9XHJcblxyXG4gIGdldFVzZXJzRnVsbG5hbWUoKTogc3RyaW5nIHwgZmFsc2Uge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGFcclxuICAgICAgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLmZvcmVuYW1lICsgJyAnICsgdXNlci51c2VyRGF0YS52YWx1ZS5zdXJuYW1lXHJcbiAgICAgIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXRVc2Vyc1RpdGxlQW5kRnVsbE5hbWUoKTogc3RyaW5nIHwgZmFsc2Uge1xyXG4gICAgY29uc3QgdXNlcjogRnVsbFVzZXJEZXRhaWxzID0gdGhpcy5nZXRmdWxsVXNlckRldGFpbHMoKTtcclxuICAgIHJldHVybiB1c2VyICYmIHVzZXIudXNlckRhdGFcclxuICAgICAgPyB1c2VyLnVzZXJEYXRhLnZhbHVlLnRpdGxlICtcclxuICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICB1c2VyLnVzZXJEYXRhLnZhbHVlLmZvcmVuYW1lICtcclxuICAgICAgICAgICcgJyArXHJcbiAgICAgICAgICB1c2VyLnVzZXJEYXRhLnZhbHVlLnN1cm5hbWVcclxuICAgICAgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJGYXZvcml0ZVZhbHVlKFxyXG4gICAgdWY6IFVzZXJGYXZvcnVyaXRlLFxyXG4gICAgc3VwcGxpZXI6IFN1cHBsaWVycyA9IFN1cHBsaWVycy5ub25cclxuICApOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdWZWYWx1ZTogUmVjb3JkPHN0cmluZywgYW55PiA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJDb25maWdzLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZnJvbU9iamVjdCh1ZlZhbHVlLCB1Zi52YWx1ZSwgJ2NvbmZpZycsIHVmLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJGYXZvcml0ZU9iamVjdDxUPih1ZjogVXNlckZhdm9ydXJpdGUpOiBUIHtcclxuICAgIGNvbnN0IHVmVmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy52YWx1ZTtcclxuICAgIHJldHVybiB0aGlzLmhlbHBlcnMuZnJvbU9iamVjdCh1ZlZhbHVlLCB1Zi52YWx1ZSwgJ2NvbmZpZycpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlckZhdm9yaXRlTnVtYmVyKHVmOiBVc2VyRmF2b3J1cml0ZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB1ZlZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MudmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5mcm9tT2JqZWN0KHVmVmFsdWUsIHVmLnZhbHVlLCAnY29uZmlnJywgJ3ZhbHVlJyk7XHJcbiAgfVxyXG5cclxuICBpc1VzZXJGYXZvcml0ZVNldChcclxuICAgIHVmOiBVc2VyRmF2b3J1cml0ZSxcclxuICAgIHN1cHBsaWVyOiBTdXBwbGllcnMgPSBTdXBwbGllcnMubm9uXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB1ZlZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gdGhpcy5mdWxsVXNlckRldGFpbHMudXNlckNvbmZpZ3MudmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5mcm9tT2JqZWN0KHVmVmFsdWUsIHVmLnZhbHVlLCAnY29uZmlnJywgJ3ZhbHVlJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzYyAtIGNyZWF0ZSBhIGR1bW15IHVzZXIgZm9yIHNlbGYgYm9va2Vyc1xyXG4gICAqL1xyXG4gIGNyZWF0ZVNlbGZUcmF2ZWxsZXIoKTogVHJhdmVsbGVyIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy50cmF2bGxlck9iamVjdC52YWx1ZTtcclxuICB9XHJcblxyXG4gIHRyYXZlbGxlcklzVXNlcih0cmF2ZWxsZXI6IFRyYXZlbGxlcik6IGJvb2xlYW4ge1xyXG4gICAgLy8gVE9ETyBjaGVjayB0aGUgdHJhdmVsbGVyIGlzbid0IHRoZSBjdXJyZW50IHVzZXIgb3IgYWdlbnQgYm9va1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZW1wdHlVc2VyRGF0YSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyQ29uZmlncy5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLm5leHQobnVsbCk7XHJcbiAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy5tZXNzYWdlcy5uZXh0KG51bGwpO1xyXG4gICAgdGhpcy5jaGFuZ2VVc2VyLm5leHQodGhpcy5mdWxsVXNlckRldGFpbHMpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlR3Vlc3RVc2VyKFxyXG4gICAgdGl0bGU6IHN0cmluZyxcclxuICAgIGZvcmVuYW1lOiBzdHJpbmcsXHJcbiAgICBzdXJuYW1lOiBzdHJpbmcsXHJcbiAgICBlbWFpbDogc3RyaW5nLFxyXG4gICAgZ3Vlc3RNb2JpbGVDb3VudHJ5Tm86IHN0cmluZyxcclxuICAgIGd1ZXN0TW9iaWxlTnVtYmVyOiBzdHJpbmcsXHJcbiAgICBndWVzdF9uYXRpb25hbGl0eTogc3RyaW5nLFxyXG4gICAgZ2VuZGVyOiBzdHJpbmcsXHJcbiAgICBpc0NoaWxkOiBib29sZWFuLFxyXG4gICAgaXNJbmZhbnQ6IGJvb2xlYW4sXHJcbiAgICBjaGlsZERPQjogRGF0ZVxyXG4gICk6IFRyYXZlbGxlciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpc0NoaWxkLFxyXG4gICAgICBpc0luZmFudCxcclxuICAgICAgY2hpbGRET0IsXHJcbiAgICAgIGd1ZXN0OiB0cnVlLFxyXG4gICAgICBpZDogJycsXHJcbiAgICAgIGZvcmVuYW1lLFxyXG4gICAgICBzdXJuYW1lLFxyXG4gICAgICBlbWFpbCxcclxuICAgICAgdGl0bGUsXHJcbiAgICAgIG5hbWU6IFt0aXRsZSwgZm9yZW5hbWUsIHN1cm5hbWVdLmpvaW4oJyAnKVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHVzZXJJc0NsaWVudCgpOiBib29sZWFuIHtcclxuICAgIC8qIFRPRE9cclxuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmdldFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdXNlciAmJiAhdGhpcy5pc0FnZW5jeVVzZXIoKSAmJiBbJ1RyYXZlbGxlcicsICdNZScsICdPdGhlcnMnLCAnQm9va2VyJ10uaW5jbHVkZXModXNlci5Cb29raW5nQWxsb3dlZEZvcik7XHJcbiAgICAqL1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBoYXNJZ25vcmVQb2xpY3koKTogYm9vbGVhbiB7XHJcbiAgICAvKiBUT0RPXHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5nZXRVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIHVzZXIgJiYgdXNlci5Cb29raW5nUG9saWN5T3ZlcnJpZGUgJiYgdXNlci5Cb29raW5nUG9saWN5T3ZlcnJpZGUgPT09ICc5OTk5LTAxLTAxIDAwOjAwOjAwJzsqL1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICB1c2VBZ2VudENhbkJvb2tGb3IoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHJ1ZTsgLy8gVE9ET1xyXG4gIH1cclxuXHJcbiAgY2FuQm9vayhzZXJ2aWNlOiBTZXJ2aWNlVHlwZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2VydmljZXM6IFVzZXJTZXJ2aWNlcyA9IHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy52YWx1ZTtcclxuICAgIHJldHVybiBzZXJ2aWNlcyAmJiAhIXNlcnZpY2VzW3NlcnZpY2VdO1xyXG4gIH1cclxuXHJcbiAgaXNUcmF2ZWxsZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5ib29rZXJfdHlwZSA9PT0gQm9va2VyVHlwZS5UcmF2ZWxsZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1c2VySXNBZ2VudCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLmJvb2tlcl90eXBlID09PSBCb29rZXJUeXBlLkNvbXBhbnlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1c2VySXNBZG1pbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5hZG1pbjtcclxuICB9XHJcblxyXG4gIHVzZXJJc0NvbXBhbnlBZG1pbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5jb21wYW55X2FkbWluO1xyXG4gIH1cclxuXHJcbiAgaXNTZWxmQm9vaygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJEYXRhLnZhbHVlLmJvb2tlcl90eXBlID09PSBCb29rZXJUeXBlLlNlbGZCb29rXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNCb29rZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS5ib29rZXJfdHlwZSA9PT0gQm9va2VyVHlwZS5Cb29rZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VySWQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyRGF0YS52YWx1ZS51c2VyX2lkO1xyXG4gIH1cclxuXHJcbiAgdXNlckhhc1NlcnZpY2VQcm92aWRlcihcclxuICAgIHNlcnZpY2U6IFNlcnZpY2VUeXBlLFxyXG4gICAgcHJvdmlkZXI6IFNlcnZpY2VQcm92aWRlclxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuZnVsbFVzZXJEZXRhaWxzLnVzZXJTZXJ2aWNlcy52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gISEodGhpcy5mdWxsVXNlckRldGFpbHMudXNlclNlcnZpY2VzLnZhbHVlW3NlcnZpY2VdIHx8IFtdKS5maW5kKFxyXG4gICAgICAgICh2YWx1ZTogU2VydmljZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlLm5hbWUgPT09IChwcm92aWRlciBhcyBzdHJpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbmRTZXJ2aWNlKGlkOiBzdHJpbmcpOiBTZXJ2aWNlIHtcclxuICAgIGlmICh0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGVscGVycy5maW5kU2VydmljZShcclxuICAgICAgICB0aGlzLmZ1bGxVc2VyRGV0YWlscy51c2VyU2VydmljZXMudmFsdWUsXHJcbiAgICAgICAgaWRcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlck1lc3NhZ2VzKCk6IE9ic2VydmFibGU8TWVzc2FnZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyTWVzc2FnZXNGZXRjaGVyLmZldGNoTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybU1lc3NhZ2VzKGlkOiBzdHJpbmcgfCBzdHJpbmdbXSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFzZUNvbmZpcm1NZXNzYWdlc1VwZGF0ZXIudXBkYXRlT25lKHsgbWVzc2FnZXM6IGlkIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlcigpOiBPYnNlcnZhYmxlPFVzZXI+IHtcclxuICAgIGNvbnN0IHVzZXI6IEZ1bGxVc2VyRGV0YWlscyA9IHRoaXMuZ2V0ZnVsbFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRVc2VyRmV0Y2hlci5mZXRjaE9uZSh7XHJcbiAgICAgIGlkOiB1c2VyLnVzZXJEYXRhLnZhbHVlLnVzZXJfaWQudG9TdHJpbmcoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRVc2VyTGFuZ3VhZ2UoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0VXNlckxhbmd1YWdlVXBkYXRlci51cGRhdGVPbmUoeyBsYW5ndWFnZTogaWQgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREb2N1bWVudHModHlwZTogRG9jVHlwZSk6IE9ic2VydmFibGU8RG9jdW1lbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VXNlcigpLnBpcGUoXHJcbiAgICAgIG1hcCgodXNlcjogVXNlcikgPT4gdXNlci5kb2N1bWVudHMgfHwgW10pLFxyXG4gICAgICBtYXAoKGRvY3M6IERvY3VtZW50W10pID0+IHtcclxuICAgICAgICByZXR1cm4gdHlwZVxyXG4gICAgICAgICAgPyBkb2NzLmZpbHRlcigoZG9jOiBEb2N1bWVudCkgPT4gZG9jLmRvY1R5cGUgPT09IHR5cGUpXHJcbiAgICAgICAgICA6IGRvY3M7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBlZGl0VXNlcih1c2VyOiBNdXRhdGlvbkVkaXRVc2VyQXJncyk6IE9ic2VydmFibGU8VXNlcj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdFVzZXJVcGRhdGVyLnVwZGF0ZU9uZSh1c2VyKTtcclxuICB9XHJcbn1cclxuIl19
|