@sabstravtech/obtservices 0.0.22042501 → 0.0.22051001
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 +8 -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-cancellation-info.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-irl-supplier-station.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/enterprise-basket.service.d.ts +4 -3
- package/angular/lib/vendor/services/search.service.d.ts +10 -3
- package/angular/lib/vendor/services/ticket-queue.service.d.ts +6 -0
- package/angular/lib/vendor/services/user.service.d.ts +5 -3
- package/angular/lib/vendor/types/graphql.angular.types.d.ts +438 -16
- 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 +16 -13
- package/angular/sabstravtech-obtservices-angular.metadata.json +1 -1
- package/angular/services.d.ts +1 -0
- package/base/fetchers.d.ts +10 -0
- package/base/interfaces.d.ts +2 -0
- package/base/lib/vendor/classes/cabhire-enterprise-search.d.ts +2 -1
- package/base/lib/vendor/classes/carhire-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/classes/eurostar-enterprise-search.d.ts +8 -2
- package/base/lib/vendor/classes/fast-track-enterprise-search.d.ts +57 -0
- package/base/lib/vendor/classes/flight-enterprise-search.d.ts +2 -1
- package/base/lib/vendor/classes/hotel-enterprise-search.d.ts +3 -1
- package/base/lib/vendor/classes/irl-enterprise-search.d.ts +27 -7
- package/base/lib/vendor/classes/lounges-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/classes/management-info-and-valid.d.ts +6 -1
- package/base/lib/vendor/classes/modal-types.enum.d.ts +2 -0
- package/base/lib/vendor/classes/parking-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/classes/rail-enterprise-search.d.ts +3 -2
- 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-cancellation-info.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-irl-supplier-station.fetcher.d.ts +21 -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/Icabhire-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Icarhire-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Ienterprise-basket.service.d.ts +6 -3
- package/base/lib/vendor/interfaces/Ieurostar-enterprise-search.d.ts +2 -0
- package/base/lib/vendor/interfaces/Ifast-track-enterprise-search.d.ts +26 -0
- package/base/lib/vendor/interfaces/Iflight-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Ihotel-enterprise-search.d.ts +2 -0
- package/base/lib/vendor/interfaces/Iirl-enterprise-search.d.ts +11 -3
- package/base/lib/vendor/interfaces/Ilounges-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Iparking-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Irail-enterprise-search.d.ts +1 -0
- package/base/lib/vendor/interfaces/Isearch.service.d.ts +7 -1
- package/base/lib/vendor/interfaces/Iuser.service.d.ts +2 -1
- package/base/lib/vendor/interfaces/eurostar-search-arg.interface.d.ts +2 -0
- package/base/lib/vendor/interfaces/fast-track-filters.interface.d.ts +4 -0
- package/base/lib/vendor/interfaces/rail-basket-item.interface.d.ts +2 -0
- package/base/lib/vendor/interfaces/summary-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/enterprise-basket.service.d.ts +13 -6
- package/base/lib/vendor/services/requires-reason.service.d.ts +20 -0
- package/base/lib/vendor/services/search.service.d.ts +30 -5
- package/base/lib/vendor/services/user.service.d.ts +12 -5
- package/base/lib/vendor/services/webtoken.service.d.ts +1 -0
- package/base/lib/vendor/types/graphql.types.d.ts +398 -16
- package/base/lib/vendor/types/types.d.ts +53 -16
- 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/services.d.ts +1 -0
- package/base/updaters.d.ts +2 -0
- package/bundles/sabstravtech-obtservices-angular.umd.js +499 -91
- 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 +3204 -176
- 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 +9 -1
- 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-cancellation-info.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-irl-supplier-station.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/enterprise-basket.service.js +8 -5
- package/esm2015/angular/lib/vendor/services/http-call.service.js +6 -2
- package/esm2015/angular/lib/vendor/services/search.service.js +58 -37
- package/esm2015/angular/lib/vendor/services/ticket-queue.service.js +23 -0
- package/esm2015/angular/lib/vendor/services/user.service.js +12 -6
- package/esm2015/angular/lib/vendor/types/graphql.angular.types.js +583 -5
- 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/obtservices.module.js +3 -1
- package/esm2015/angular/sabstravtech-obtservices-angular.js +17 -14
- package/esm2015/angular/services.js +2 -1
- package/esm2015/base/fetchers.js +11 -1
- package/esm2015/base/interfaces.js +3 -1
- package/esm2015/base/lib/vendor/classes/basket-info-mi-details.impl.js +4 -1
- package/esm2015/base/lib/vendor/classes/cabhire-enterprise-search.js +37 -5
- package/esm2015/base/lib/vendor/classes/carhire-enterprise-search.js +46 -16
- package/esm2015/base/lib/vendor/classes/eurostar-enterprise-search.js +77 -10
- package/esm2015/base/lib/vendor/classes/fast-track-enterprise-search.js +296 -0
- package/esm2015/base/lib/vendor/classes/flight-enterprise-search.js +44 -5
- package/esm2015/base/lib/vendor/classes/helpers.js +6 -2
- package/esm2015/base/lib/vendor/classes/hotel-enterprise-search.js +58 -19
- package/esm2015/base/lib/vendor/classes/irl-enterprise-search.js +214 -25
- package/esm2015/base/lib/vendor/classes/lounges-enterprise-search.js +22 -6
- package/esm2015/base/lib/vendor/classes/management-info-and-valid.js +1 -1
- package/esm2015/base/lib/vendor/classes/modal-types.enum.js +3 -1
- package/esm2015/base/lib/vendor/classes/parking-enterprise-search.js +27 -7
- package/esm2015/base/lib/vendor/classes/rail-enterprise-search.js +62 -13
- package/esm2015/base/lib/vendor/classes/supplementary-booking-info-impl.js +2 -2
- 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-cancellation-info.fetcher.js +10 -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-irl-supplier-station.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/Icabhire-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Icarhire-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Ienterprise-basket.service.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/Iflight-enterprise-search.js +1 -1
- 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/Ilounges-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Iparking-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Irail-enterprise-search.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Isearch.service.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/Iuser.service.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/eurostar-search-arg.interface.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/fast-track-filters.interface.js +2 -0
- package/esm2015/base/lib/vendor/interfaces/rail-basket-item.interface.js +1 -1
- package/esm2015/base/lib/vendor/interfaces/summary-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/enterprise-basket.service.js +63 -17
- package/esm2015/base/lib/vendor/services/hotel-avallibility.service.js +16 -12
- package/esm2015/base/lib/vendor/services/requires-reason.service.js +49 -0
- package/esm2015/base/lib/vendor/services/search.service.js +166 -20
- package/esm2015/base/lib/vendor/services/user.service.js +44 -6
- package/esm2015/base/lib/vendor/services/webtoken.service.js +9 -5
- package/esm2015/base/lib/vendor/types/graphql.types.js +9 -1
- package/esm2015/base/lib/vendor/types/types.js +1704 -1
- 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/services.js +2 -1
- package/esm2015/base/updaters.js +3 -1
- package/fesm2015/sabstravtech-obtservices-angular.js +790 -19
- package/fesm2015/sabstravtech-obtservices-angular.js.map +1 -1
- package/fesm2015/sabstravtech-obtservices-base.js +3041 -169
- package/fesm2015/sabstravtech-obtservices-base.js.map +1 -1
- package/package.json +1 -1
|
@@ -38,16 +38,21 @@ export class BaseHotelAvalibilityService {
|
|
|
38
38
|
if ((_a = fullHotel === null || fullHotel === void 0 ? void 0 : fullHotel.availableRates) === null || _a === void 0 ? void 0 : _a.rooms) {
|
|
39
39
|
// add this data to the behaviours array and return it (if it dosen't already exist)
|
|
40
40
|
if (this.behaviours[hotel.hotel]) {
|
|
41
|
-
return
|
|
41
|
+
return this.behaviours[hotel.hotel];
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
44
|
// add the data to the array
|
|
45
|
-
this.behaviours[hotel.hotel] =
|
|
45
|
+
this.behaviours[hotel.hotel] =
|
|
46
|
+
new BehaviorSubject(null);
|
|
46
47
|
const newBehaviourObject = fullHotel.availableRates;
|
|
47
|
-
newBehaviourObject.minprice = fullHotel.availableRates.rooms[0]
|
|
48
|
-
|
|
48
|
+
newBehaviourObject.minprice = fullHotel.availableRates.rooms[0]
|
|
49
|
+
? fullHotel.availableRates.rooms[0].total
|
|
50
|
+
: 0;
|
|
51
|
+
newBehaviourObject.maxprice = newBehaviourObject.minprice
|
|
52
|
+
? fullHotel.availableRates.rooms[fullHotel.availableRates.rooms.length - 1].total
|
|
53
|
+
: 0;
|
|
49
54
|
this.behaviours[hotel.hotel].next(newBehaviourObject);
|
|
50
|
-
return
|
|
55
|
+
return this.behaviours[hotel.hotel];
|
|
51
56
|
}
|
|
52
57
|
}
|
|
53
58
|
this.data = this.data || this.readFromSession();
|
|
@@ -67,11 +72,9 @@ export class BaseHotelAvalibilityService {
|
|
|
67
72
|
return hotel;
|
|
68
73
|
}
|
|
69
74
|
setHotelAvalability(hotel) {
|
|
70
|
-
if (
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
this.behaviours[hotel.availableRates.hotelId].next(hotel.availableRates);
|
|
74
|
-
}
|
|
75
|
+
if (hotel.availableRates && (hotel === null || hotel === void 0 ? void 0 : hotel.availableRates.hotelId)) {
|
|
76
|
+
this.data[hotel.availableRates.hotelId] = hotel.availableRates;
|
|
77
|
+
this.behaviours[hotel.availableRates.hotelId].next(hotel.availableRates);
|
|
75
78
|
}
|
|
76
79
|
return hotel;
|
|
77
80
|
}
|
|
@@ -173,7 +176,8 @@ export class BaseHotelAvalibilityService {
|
|
|
173
176
|
else {
|
|
174
177
|
this.fetching.next(false);
|
|
175
178
|
}
|
|
176
|
-
}, error => {
|
|
179
|
+
}, (error) => {
|
|
180
|
+
// might need to refine this
|
|
177
181
|
console.error(`+++ Error recovering hotel availabilty: ${error} - reseting availabilty +++`);
|
|
178
182
|
this.fetching.next(false);
|
|
179
183
|
return null;
|
|
@@ -201,4 +205,4 @@ export class BaseHotelAvalibilityService {
|
|
|
201
205
|
return count;
|
|
202
206
|
}
|
|
203
207
|
}
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90ZWwtYXZhbGxpYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYnRzZXJ2aWNlcy9iYXNlL3NyYy9saWIvdmVuZG9yL3NlcnZpY2VzL2hvdGVsLWF2YWxsaWJpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBeUJ0QyxNQUFNLFlBQVksR0FBRyw0QkFBNEIsQ0FBQztBQUVsRCxNQUFNLE9BQU8sMkJBQTJCO0lBYXRDLFlBQ1Usa0JBQXVELEVBQ3ZELGNBQWtDLEVBQ2xDLE9BQTJCLEVBQzNCLFdBQTRCO1FBSDVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUM7UUFDdkQsbUJBQWMsR0FBZCxjQUFjLENBQW9CO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQWQ5QixTQUFJLEdBQWUsSUFBSSxDQUFDO1FBQ3hCLGVBQVUsR0FFZCxFQUFFLENBQUM7UUFFQyxZQUFPLEdBQTRCLEVBQUUsQ0FBQztRQUN2QyxhQUFRLEdBQTZCLElBQUksZUFBZSxDQUM3RCxLQUFLLENBQ04sQ0FBQztRQUNGLGVBQVUsR0FBb0IsRUFBRSxDQUFDO0lBTTlCLENBQUM7SUFFSSxlQUFlO1FBQ3JCLE1BQU0sSUFBSSxHQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFhLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQXVCLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FD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USxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzFCLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUztTQUMzQixDQUNGLENBQUMsUUFBUSxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdUJBQXVCO1FBQ3JCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDcEQsSUFBSSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsSUFBSSxFQUFFO29CQUNmLEtBQUssRUFBRSxDQUFDO2lCQUNUO2FBQ0Y7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJhc2VFbnZpcm9ubWVudCB9IGZyb20gJy4uL2NsYXNzZXMvZW52aXJvbWVudCc7XHJcbmltcG9ydCB7IEJhc2VIZWxwZXJSb3V0aW5lcyB9IGZyb20gJy4uL2NsYXNzZXMvaGVscGVycyc7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUhvdGVsQXZhbGliaWxpdHlRdW90ZUZldGNoZXIsXHJcbiAgSG90ZWxBdmFsaW5pbGl0eUZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vZmV0Y2hlcnMvaG90ZWwtYXZhbGlhYmlsaXR5LWZldGNoZXInO1xyXG5pbXBvcnQge1xyXG4gIEhvdGVsQXZhaWxhYmlsaXR5LFxyXG4gIEhvdGVsSXRpbmVyYXJ5LFxyXG4gIFF1ZXJ5R2V0TXVsdGlwbGVIb3RlbHNBdmFpbGFiaWxpdHlBcmdzXHJcbn0gZnJvbSAnLi4vdHlwZXMvZ3JhcGhxbC50eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgQ3VycmVuY3lEZXRhaWxzLFxyXG4gIEhvdGVsQXZhbGliaWxpdHlRdWVyeSxcclxuICBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQsXHJcbiAgSG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0QXJyYXksXHJcbiAgSG90ZWxEZXRhaWxzLFxyXG4gIEhvdGVsUm9vbVdpdGhMb2NhbFByaWNlXHJcbn0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5cclxudHlwZSBTdG9yZWREYXRhID0geyBba2V5OiBzdHJpbmddOiBIb3RlbEF2YWlsYWJpbGl0eSB9O1xyXG5cclxuY29uc3QgU0VTU0lPTl9OQU1FID0gJ3Jlc3VsdHNfaG90ZWxfYXZhbGxpYmlsaXR5JztcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNlSG90ZWxBdmFsaWJpbGl0eVNlcnZpY2U8XHJcbiAgUSBleHRlbmRzIEhvdGVsQXZhbGluaWxpdHlGZXRjaGVyVHlwZVxyXG4+IHtcclxuICBwcml2YXRlIGRhdGE6IFN0b3JlZERhdGEgPSBudWxsO1xyXG4gIHByaXZhdGUgYmVoYXZpb3Vyczoge1xyXG4gICAgW2tleTogc3RyaW5nXTogQmVoYXZpb3JTdWJqZWN0PEhvdGVsQXZhaWxhYmlsaXR5PjtcclxuICB9ID0ge307XHJcbiAgcHJpdmF0ZSB0aW1lb3V0OiBudW1iZXI7XHJcbiAgcHJpdmF0ZSB0b0ZldGNoOiBIb3RlbEF2YWxpYmlsaXR5UXVlcnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBmZXRjaGluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihcclxuICAgIGZhbHNlXHJcbiAgKTtcclxuICBjdXJyZW5jaWVzOiBDdXJyZW5jeURldGFpbHMgPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXZhbGliaWxpdHlGZXRoY2VyOiBCYXNlSG90ZWxBdmFsaWJpbGl0eVF1b3RlRmV0Y2hlcjxRPixcclxuICAgIHByaXZhdGUgc2Vzc2lvblN0b3JhZ2U6IEJhc2VTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgaGVscGVyczogQmFzZUhlbHBlclJvdXRpbmVzLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudDogQmFzZUVudmlyb25tZW50LFxyXG4gICkge31cclxuXHJcbiAgcHJpdmF0ZSByZWFkRnJvbVNlc3Npb24oKSB7XHJcbiAgICBjb25zdCBkYXRhID1cclxuICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZS5nZXRTZXNzaW9uSXRlbTxTdG9yZWREYXRhPihTRVNTSU9OX05BTUUpIHx8IHt9O1xyXG4gICAgT2JqZWN0LnZhbHVlcyhkYXRhKS5mb3JFYWNoKChpdGVtOiBIb3RlbEF2YWlsYWJpbGl0eSkgPT4ge1xyXG4gICAgICB0aGlzLmJlaGF2aW91cnNbaXRlbS5ob3RlbElkXSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SG90ZWxBdmFpbGFiaWxpdHk+KFxyXG4gICAgICAgIGl0ZW1cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuZGF0YSA9IHt9O1xyXG4gICAgdGhpcy5jdXJyZW5jaWVzID0ge307XHJcbiAgICB0aGlzLnRvRmV0Y2ggPSBbXTtcclxuICAgIHRoaXMuZmV0Y2hpbmcubmV4dChmYWxzZSk7XHJcbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlLnJlbW92ZVNlc3Npb25JdGVtKFNFU1NJT05fTkFNRSk7XHJcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZGF0YSkuZm9yRWFjaCgoaXRlbTogSG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tpdGVtLmhvdGVsSWRdLmNvbXBsZXRlKCk7XHJcbiAgICAgIGRlbGV0ZSB0aGlzLmJlaGF2aW91cnNbaXRlbS5ob3RlbElkXTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5iZWhhdmlvdXJzID0ge307XHJcbiAgfVxyXG5cclxuICBnZXRBdmFpbGFiaWxpdHlGb3JJZChcclxuICAgIGhvdGVsOiBIb3RlbEF2YWxpYmlsaXR5UXVlcnksXHJcbiAgICBmdWxsSG90ZWw/OiBIb3RlbEl0aW5lcmFyeVxyXG4gICk6IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQ+IHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCcrKysgRmV0Y2hpbmcgd2l0aCBmdWxsIGhvdGVsIGRhdGE6ICcsIGZ1bGxIb3RlbCwgJyArKysnKTtcclxuXHJcbiAgICBpZiAoZnVsbEhvdGVsPy5hdmFpbGFibGVSYXRlcz8ucm9vbXMpIHtcclxuICAgICAgLy8gYWRkIHRoaXMgZGF0YSB0byB0aGUgYmVoYXZpb3VycyBhcnJheSBhbmQgcmV0dXJuIGl0IChpZiBpdCBkb3Nlbid0IGFscmVhZHkgZXhpc3QpXHJcblxyXG4gICAgICBpZiAodGhpcy5iZWhhdmlvdXJzW2hvdGVsLmhvdGVsIGFzIHN0cmluZ10pIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbCBhcyBzdHJpbmddKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBhZGQgdGhlIGRhdGEgdG8gdGhlIGFycmF5XHJcbiAgICAgICAgdGhpcy5iZWhhdmlvdXJzW2hvdGVsLmhvdGVsIGFzIHN0cmluZ10gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdD4obnVsbCk7XHJcblxyXG4gICAgICAgIGNvbnN0IG5ld0JlaGF2aW91ck9iamVjdDogSG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0ID0gZnVsbEhvdGVsLmF2YWlsYWJsZVJhdGVzO1xyXG4gICAgICAgIG5ld0JlaGF2aW91ck9iamVjdC5taW5wcmljZSA9IGZ1bGxIb3RlbC5hdmFpbGFibGVSYXRlcy5yb29tc1swXSA/ICBmdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXMucm9vbXNbMF0udG90YWwgOiAgMDtcclxuICAgICAgICBuZXdCZWhhdmlvdXJPYmplY3QubWF4cHJpY2UgPSBuZXdCZWhhdmlvdXJPYmplY3QubWlucHJpY2UgPyAgZnVsbEhvdGVsLmF2YWlsYWJsZVJhdGVzLnJvb21zW2Z1bGxIb3RlbC5hdmFpbGFibGVSYXRlcy5yb29tcy5sZW5ndGggLSAxXS50b3RhbCA6ICAwO1xyXG4gICAgICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbCBhcyBzdHJpbmddLm5leHQobmV3QmVoYXZpb3VyT2JqZWN0KTtcclxuICAgICAgICByZXR1cm4gKHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbCBhcyBzdHJpbmddKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEgfHwgdGhpcy5yZWFkRnJvbVNlc3Npb24oKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbCBhcyBzdHJpbmddIHx8XHJcbiAgICAgIHRoaXMuX2dldEF2YWlsYWJpbGl0eUZvcklkKGhvdGVsKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEF2YWlsYWJpbGl0eVZhbHVlKGhvdGVsOiBIb3RlbERldGFpbHMpOiBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQge1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhIHx8IHRoaXMucmVhZEZyb21TZXNzaW9uKCk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmJlaGF2aW91cnNbaG90ZWwuaWQgYXMgc3RyaW5nXT8udmFsdWUgfHxcclxuICAgICAgKHt9IGFzIEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVIb3RlbChob3RlbDogSG90ZWxEZXRhaWxzKTogSG90ZWxEZXRhaWxzIHtcclxuICAgIGlmICghaG90ZWwuYXZhaWxhYmxlUmF0ZXMpIHtcclxuICAgICAgaG90ZWwuYXZhaWxhYmxlUmF0ZXMgPSB0aGlzLmdldEF2YWlsYWJpbGl0eVZhbHVlKGhvdGVsKTtcclxuICAgIH1cclxuICAgIHJldHVybiBob3RlbDtcclxuICB9XHJcblxyXG4gIHNldEhvdGVsQXZhbGFiaWxpdHkoaG90ZWw6IEhvdGVsRGV0YWlscyk6IEhvdGVsRGV0YWlscyB7XHJcbiAgICBpZiAoIWhvdGVsLmF2YWlsYWJsZVJhdGVzKSB7XHJcbiAgICAgIGlmIChob3RlbD8uYXZhaWxhYmxlUmF0ZXMuaG90ZWxJZCkge1xyXG4gICAgICAgIHRoaXMuZGF0YVtob3RlbC5hdmFpbGFibGVSYXRlcy5ob3RlbElkXSA9IGhvdGVsLmF2YWlsYWJsZVJhdGVzO1xyXG4gICAgICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5hdmFpbGFibGVSYXRlcy5ob3RlbElkXS5uZXh0KFxyXG4gICAgICAgICAgaG90ZWwuYXZhaWxhYmxlUmF0ZXNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaG90ZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRBdmFpbGFiaWxpdHlGb3JJZChcclxuICAgIGhvdGVsOiBIb3RlbEF2YWxpYmlsaXR5UXVlcnlcclxuICApOiBCZWhhdmlvclN1YmplY3Q8SG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0PiB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnKysrIEZldGNoaW5nIGF2YWlsYWJpbHR5IGZvcjogJywgaG90ZWwsICcgKysrJyk7XHJcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XHJcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcclxuICAgICAgdGhpcy50aW1lb3V0ID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuZmV0Y2hpbmcudmFsdWUpIHtcclxuICAgICAgdGhpcy50aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoXHJcbiAgICAgICAgdGhpcy5mZXRjaEF2YWxpbGJpbGl0eS5iaW5kKHRoaXMpLFxyXG4gICAgICAgIHRoaXMuZW52aXJvbm1lbnQuYXV0b0ZldGNoSG90ZWxUaW1lb3V0XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRvRmV0Y2gucHVzaChob3RlbCk7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmZldGNoaW5nLnZhbHVlICYmXHJcbiAgICAgIHRoaXMudG9GZXRjaC5sZW5ndGggPj0gdGhpcy5lbnZpcm9ubWVudC5udW1iZXJPZkhvdGVsc1RvRmV0Y2hcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZldGNoQXZhbGlsYmlsaXR5KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmJlaGF2aW91cnNbaG90ZWwuaG90ZWwgYXMgc3RyaW5nXSA9XHJcbiAgICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8SG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0PihudWxsKTtcclxuICAgIHJldHVybiB0aGlzLmJlaGF2aW91cnNbaG90ZWwuaG90ZWwgYXMgc3RyaW5nXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hBdmFsaWxiaWxpdHkoKSB7XHJcbiAgICB0aGlzLmZldGNoaW5nLm5leHQodHJ1ZSk7XHJcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XHJcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcclxuICAgICAgdGhpcy50aW1lb3V0ID0gMDtcclxuICAgIH1cclxuICAgIGNvbnN0IHRvRmV0Y2ggPSB0aGlzLnRvRmV0Y2guc2xpY2UoXHJcbiAgICAgIDAsXHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQubnVtYmVyT2ZIb3RlbHNUb0ZldGNoXHJcbiAgICApO1xyXG4gICAgdGhpcy50b0ZldGNoID0gdGhpcy50b0ZldGNoLnNsaWNlKHRoaXMuZW52aXJvbm1lbnQubnVtYmVyT2ZIb3RlbHNUb0ZldGNoKTtcclxuXHJcbiAgICBjb25zb2xlLmxvZygnSG90ZWxzIHN0aWxsIHRvIGZldGNoJywgdGhpcy50b0ZldGNoLmxlbmd0aCk7XHJcblxyXG4gICAgY29uc3QgcXVlcnk6IFF1ZXJ5R2V0TXVsdGlwbGVIb3RlbHNBdmFpbGFiaWxpdHlBcmdzID0ge1xyXG4gICAgICBob3RlbDogdG9GZXRjaC5tYXAoKGhvdGVsKSA9PiBob3RlbC5ob3RlbCkgYXMgc3RyaW5nW10sXHJcbiAgICAgIGN1cnJlbmN5OiB0b0ZldGNoWzBdLmN1cnJlbmN5LFxyXG4gICAgICBlbmREYXRlOiB0b0ZldGNoWzBdLmVuZERhdGUsXHJcbiAgICAgIHN0YXJ0RGF0ZTogdG9GZXRjaFswXS5zdGFydERhdGUsXHJcbiAgICAgIG9jY3VwYW50czogdG9GZXRjaFswXS5vY2N1cGFudHMsXHJcbiAgICAgIHJvb21zOiB0b0ZldGNoWzBdLnJvb21zXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuYXZhbGliaWxpdHlGZXRoY2VyXHJcbiAgICAgIC5mZXRjaExpc3QocXVlcnkpXHJcbiAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGhvdGVsczogSG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0QXJyYXkpID0+IHtcclxuICAgICAgICBob3RlbHMuZm9yRWFjaCgoaG90ZWw6IEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaG90ZWwgPSB0aGlzLmhlbHBlcnMuY2xvbmUoaG90ZWwpO1xyXG4gICAgICAgICAgaG90ZWwucm9vbXMgPSAoaG90ZWwucm9vbXMgfHwgW10pXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKHJvb206IEhvdGVsUm9vbVdpdGhMb2NhbFByaWNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJvb20udG90YWwgPiAwO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAubWFwKChyb29tOiBIb3RlbFJvb21XaXRoTG9jYWxQcmljZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJvb20gPSB0aGlzLmhlbHBlcnMuY2xvbmU8SG90ZWxSb29tV2l0aExvY2FsUHJpY2U+KHJvb20pO1xyXG4gICAgICAgICAgICAgIHJvb20uTG9jYWxQcmljZSA9IHJvb20uY3VycmVuY3lDb252ZXJzaW9uXHJcbiAgICAgICAgICAgICAgICA/IHJvb20uY3VycmVuY3lDb252ZXJzaW9uLmxvY2FsVG90YWxcclxuICAgICAgICAgICAgICAgIDogcm9vbS50b3RhbDtcclxuICAgICAgICAgICAgICByb29tLkxvY2FsQ3VycmVuY3kgPSByb29tLmN1cnJlbmN5Q29udmVyc2lvblxyXG4gICAgICAgICAgICAgICAgPyByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5sb2NhbENvZGVcclxuICAgICAgICAgICAgICAgIDogcm9vbS5jdXJyZW5jeUNvZGU7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJvb207XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaG90ZWwuY3VycmVuY2llcyA9IGhvdGVsLnJvb21zLnJlZHVjZShcclxuICAgICAgICAgICAgKGRldGFpbHM6IEN1cnJlbmN5RGV0YWlscywgcm9vbTogSG90ZWxSb29tV2l0aExvY2FsUHJpY2UpID0+IHtcclxuICAgICAgICAgICAgICBpZiAocm9vbS5jdXJyZW5jeUNvbnZlcnNpb24pIHtcclxuICAgICAgICAgICAgICAgIGRldGFpbHNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0gPSBkZXRhaWxzW1xyXG4gICAgICAgICAgICAgICAgICByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRDb2RlXHJcbiAgICAgICAgICAgICAgICBdIHx8IHtcclxuICAgICAgICAgICAgICAgICAgbWF4cHJpY2U6IE51bWJlci5NSU5fVkFMVUUsXHJcbiAgICAgICAgICAgICAgICAgIG1pbnByaWNlOiBOdW1iZXIuTUFYX1ZBTFVFXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgZGV0YWlsc1tyb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRDb2RlXS5tYXhwcmljZSA9XHJcbiAgICAgICAgICAgICAgICAgIE1hdGgubWF4KFxyXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbHNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0ubWF4cHJpY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkVG90YWxcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRldGFpbHNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0ubWlucHJpY2UgPVxyXG4gICAgICAgICAgICAgICAgICBNYXRoLm1pbihcclxuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZENvZGVdLm1pbnByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHJvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZFRvdGFsXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW5jaWVzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZENvZGVdID0gdGhpc1xyXG4gICAgICAgICAgICAgICAgICAuY3VycmVuY2llc1tyb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRDb2RlXSB8fCB7XHJcbiAgICAgICAgICAgICAgICAgIG1heHByaWNlOiBOdW1iZXIuTUlOX1ZBTFVFLFxyXG4gICAgICAgICAgICAgICAgICBtaW5wcmljZTogTnVtYmVyLk1BWF9WQUxVRVxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY2llc1tcclxuICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZVxyXG4gICAgICAgICAgICAgICAgXS5taW5wcmljZSA9IE1hdGguY2VpbChcclxuICAgICAgICAgICAgICAgICAgTWF0aC5taW4oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW5jaWVzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZENvZGVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAubWlucHJpY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkVG90YWxcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY2llc1tcclxuICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZVxyXG4gICAgICAgICAgICAgICAgXS5tYXhwcmljZSA9IE1hdGguY2VpbChcclxuICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW5jaWVzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZENvZGVdXHJcbiAgICAgICAgICAgICAgICAgICAgICAubWF4cHJpY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkVG90YWxcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGRldGFpbHM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHt9IGFzIEN1cnJlbmN5RGV0YWlsc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IHJvb21QcmljZXMgPSBob3RlbC5yb29tcy5tYXAoXHJcbiAgICAgICAgICAgIHRoaXMuaGVscGVycy5tYXBGaWVsZEZyb21PYmplY3Q8c3RyaW5nLCBudW1iZXI+KCd0b3RhbCcpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKCFyb29tUHJpY2VzLmxlbmd0aCkgcm9vbVByaWNlcy5wdXNoKDApO1xyXG4gICAgICAgICAgaG90ZWwubWlucHJpY2UgPSBNYXRoLm1pbiguLi5yb29tUHJpY2VzKTtcclxuICAgICAgICAgIGhvdGVsLm1heHByaWNlID0gTWF0aC5tYXgoLi4ucm9vbVByaWNlcyk7XHJcblxyXG4gICAgICAgICAgaG90ZWwucm9vbXMgPSBob3RlbC5yb29tcztcclxuICAgICAgICAgIGlmIChob3RlbD8uaG90ZWxJZCAmJiB0aGlzLmJlaGF2aW91cnNbaG90ZWwuaG90ZWxJZF0pIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhW2hvdGVsLmhvdGVsSWRdID0gaG90ZWw7XHJcbiAgICAgICAgICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbElkXS5uZXh0KGhvdGVsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gdGhpcy5zZXNzaW9uU3RvcmFnZS5zZXRTZXNzaW9uSXRlbShTRVNTSU9OX05BTUUsIHRoaXMuZGF0YSk7XHJcbiAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZS5zZXRTZXNzaW9uSXRlbShTRVNTSU9OX05BTUUsIGhvdGVscyk7XHJcbiAgICAgICAgaWYgKHRoaXMudG9GZXRjaC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaEF2YWxpbGJpbGl0eSgpO1xyXG4gICAgICAgICAgfSwgdGhpcy5lbnZpcm9ubWVudC5ob3RlbEF2YWxpYmlsaXR5VGltZW91dCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hpbmcubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBlcnJvciA9PiB7IC8vIG1pZ2h0IG5lZWQgdG8gcmVmaW5lIHRoaXNcclxuICAgICAgICBjb25zb2xlLmVycm9yKGArKysgRXJyb3IgcmVjb3ZlcmluZyBob3RlbCBhdmFpbGFiaWx0eTogJHtlcnJvcn0gLSByZXNldGluZyBhdmFpbGFiaWx0eSArKytgKTtcclxuICAgICAgICB0aGlzLmZldGNoaW5nLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIC8vIHRoaXMucmVzZXQoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBtYXhQcmljZUZvckN1cnJlbmN5KGN1cnJlbmN5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuY3VycmVuY2llc1tjdXJyZW5jeV0gfHwge1xyXG4gICAgICAgIG1heHByaWNlOiBOdW1iZXIuTUFYX1ZBTFVFLFxyXG4gICAgICAgIG1pbnByaWNlOiBOdW1iZXIuTUlOX1ZBTFVFXHJcbiAgICAgIH1cclxuICAgICkubWF4cHJpY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVzY3JpcHRpb24gLSByZXR1cm4gdGhlIG51bWJlciBvZiBob3RlbHMgdGhhdCBoYXZlIGEgcHJpY2UgKHBycG4gdmFsdWUpXHJcbiAgICovXHJcbiAgbnVtYmVyT2ZIb3RlbHNXaXRoUHJpY2UoKTogbnVtYmVyIHtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuZGF0YSkpIHtcclxuICAgICAgICBpZiAodmFsdWU/LnBycG4pIHtcclxuICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90ZWwtYXZhbGxpYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYnRzZXJ2aWNlcy9iYXNlL3NyYy9saWIvdmVuZG9yL3NlcnZpY2VzL2hvdGVsLWF2YWxsaWJpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBeUJ0QyxNQUFNLFlBQVksR0FBRyw0QkFBNEIsQ0FBQztBQUVsRCxNQUFNLE9BQU8sMkJBQTJCO0lBYXRDLFlBQ1Usa0JBQXVELEVBQ3ZELGNBQWtDLEVBQ2xDLE9BQTJCLEVBQzNCLFdBQTRCO1FBSDVCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUM7UUFDdkQsbUJBQWMsR0FBZCxjQUFjLENBQW9CO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQWQ5QixTQUFJLEdBQWUsSUFBSSxDQUFDO1FBQ3hCLGVBQVUsR0FFZCxFQUFFLENBQUM7UUFFQyxZQUFPLEdBQTRCLEVBQUUsQ0FBQztRQUN2QyxhQUFRLEdBQTZCLElBQUksZUFBZSxDQUM3RCxLQUFLLENBQ04sQ0FBQztRQUNGLGVBQVUsR0FBb0IsRUFBRSxDQUFDO0lBTTlCLENBQUM7SUFFSSxlQUFlO1FBQ3JCLE1BQU0sSUFBSSxHQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFhLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQXVCLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLGVBQWUsQ0FD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Q0FBQyxTQUFTO1lBQzFCLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUztTQUMzQixDQUNGLENBQUMsUUFBUSxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdUJBQXVCO1FBQ3JCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDcEQsSUFBSSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsSUFBSSxFQUFFO29CQUNmLEtBQUssRUFBRSxDQUFDO2lCQUNUO2FBQ0Y7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEJhc2VFbnZpcm9ubWVudCB9IGZyb20gJy4uL2NsYXNzZXMvZW52aXJvbWVudCc7XHJcbmltcG9ydCB7IEJhc2VIZWxwZXJSb3V0aW5lcyB9IGZyb20gJy4uL2NsYXNzZXMvaGVscGVycyc7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUhvdGVsQXZhbGliaWxpdHlRdW90ZUZldGNoZXIsXHJcbiAgSG90ZWxBdmFsaW5pbGl0eUZldGNoZXJUeXBlXHJcbn0gZnJvbSAnLi4vZmV0Y2hlcnMvaG90ZWwtYXZhbGlhYmlsaXR5LWZldGNoZXInO1xyXG5pbXBvcnQge1xyXG4gIEhvdGVsQXZhaWxhYmlsaXR5LFxyXG4gIEhvdGVsSXRpbmVyYXJ5LFxyXG4gIFF1ZXJ5R2V0TXVsdGlwbGVIb3RlbHNBdmFpbGFiaWxpdHlBcmdzXHJcbn0gZnJvbSAnLi4vdHlwZXMvZ3JhcGhxbC50eXBlcyc7XHJcbmltcG9ydCB7XHJcbiAgQ3VycmVuY3lEZXRhaWxzLFxyXG4gIEhvdGVsQXZhbGliaWxpdHlRdWVyeSxcclxuICBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQsXHJcbiAgSG90ZWxBdmFsaWJpbGl0eVF1b3RlUmVzdWx0QXJyYXksXHJcbiAgSG90ZWxEZXRhaWxzLFxyXG4gIEhvdGVsUm9vbVdpdGhMb2NhbFByaWNlXHJcbn0gZnJvbSAnLi4vdHlwZXMvdHlwZXMnO1xyXG5cclxuaW1wb3J0IHsgQmFzZVN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5cclxudHlwZSBTdG9yZWREYXRhID0geyBba2V5OiBzdHJpbmddOiBIb3RlbEF2YWlsYWJpbGl0eSB9O1xyXG5cclxuY29uc3QgU0VTU0lPTl9OQU1FID0gJ3Jlc3VsdHNfaG90ZWxfYXZhbGxpYmlsaXR5JztcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNlSG90ZWxBdmFsaWJpbGl0eVNlcnZpY2U8XHJcbiAgUSBleHRlbmRzIEhvdGVsQXZhbGluaWxpdHlGZXRjaGVyVHlwZVxyXG4+IHtcclxuICBwcml2YXRlIGRhdGE6IFN0b3JlZERhdGEgPSBudWxsO1xyXG4gIHByaXZhdGUgYmVoYXZpb3Vyczoge1xyXG4gICAgW2tleTogc3RyaW5nXTogQmVoYXZpb3JTdWJqZWN0PEhvdGVsQXZhaWxhYmlsaXR5PjtcclxuICB9ID0ge307XHJcbiAgcHJpdmF0ZSB0aW1lb3V0OiBudW1iZXI7XHJcbiAgcHJpdmF0ZSB0b0ZldGNoOiBIb3RlbEF2YWxpYmlsaXR5UXVlcnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBmZXRjaGluZzogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihcclxuICAgIGZhbHNlXHJcbiAgKTtcclxuICBjdXJyZW5jaWVzOiBDdXJyZW5jeURldGFpbHMgPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXZhbGliaWxpdHlGZXRoY2VyOiBCYXNlSG90ZWxBdmFsaWJpbGl0eVF1b3RlRmV0Y2hlcjxRPixcclxuICAgIHByaXZhdGUgc2Vzc2lvblN0b3JhZ2U6IEJhc2VTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgaGVscGVyczogQmFzZUhlbHBlclJvdXRpbmVzLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudDogQmFzZUVudmlyb25tZW50XHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIHJlYWRGcm9tU2Vzc2lvbigpIHtcclxuICAgIGNvbnN0IGRhdGEgPVxyXG4gICAgICB0aGlzLnNlc3Npb25TdG9yYWdlLmdldFNlc3Npb25JdGVtPFN0b3JlZERhdGE+KFNFU1NJT05fTkFNRSkgfHwge307XHJcbiAgICBPYmplY3QudmFsdWVzKGRhdGEpLmZvckVhY2goKGl0ZW06IEhvdGVsQXZhaWxhYmlsaXR5KSA9PiB7XHJcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tpdGVtLmhvdGVsSWRdID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWlsYWJpbGl0eT4oXHJcbiAgICAgICAgaXRlbVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5kYXRhID0ge307XHJcbiAgICB0aGlzLmN1cnJlbmNpZXMgPSB7fTtcclxuICAgIHRoaXMudG9GZXRjaCA9IFtdO1xyXG4gICAgdGhpcy5mZXRjaGluZy5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlU2Vzc2lvbkl0ZW0oU0VTU0lPTl9OQU1FKTtcclxuICAgIE9iamVjdC52YWx1ZXModGhpcy5kYXRhKS5mb3JFYWNoKChpdGVtOiBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5iZWhhdmlvdXJzW2l0ZW0uaG90ZWxJZF0uY29tcGxldGUoKTtcclxuICAgICAgZGVsZXRlIHRoaXMuYmVoYXZpb3Vyc1tpdGVtLmhvdGVsSWRdO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmJlaGF2aW91cnMgPSB7fTtcclxuICB9XHJcblxyXG4gIGdldEF2YWlsYWJpbGl0eUZvcklkKFxyXG4gICAgaG90ZWw6IEhvdGVsQXZhbGliaWxpdHlRdWVyeSxcclxuICAgIGZ1bGxIb3RlbD86IEhvdGVsSXRpbmVyYXJ5XHJcbiAgKTogQmVoYXZpb3JTdWJqZWN0PEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdD4ge1xyXG4gICAgLy8gY29uc29sZS5sb2coJysrKyBGZXRjaGluZyB3aXRoIGZ1bGwgaG90ZWwgZGF0YTogJywgZnVsbEhvdGVsLCAnICsrKycpO1xyXG5cclxuICAgIGlmIChmdWxsSG90ZWw/LmF2YWlsYWJsZVJhdGVzPy5yb29tcykge1xyXG4gICAgICAvLyBhZGQgdGhpcyBkYXRhIHRvIHRoZSBiZWhhdmlvdXJzIGFycmF5IGFuZCByZXR1cm4gaXQgKGlmIGl0IGRvc2VuJ3QgYWxyZWFkeSBleGlzdClcclxuXHJcbiAgICAgIGlmICh0aGlzLmJlaGF2aW91cnNbaG90ZWwuaG90ZWwgYXMgc3RyaW5nXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJlaGF2aW91cnNbaG90ZWwuaG90ZWwgYXMgc3RyaW5nXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBhZGQgdGhlIGRhdGEgdG8gdGhlIGFycmF5XHJcbiAgICAgICAgdGhpcy5iZWhhdmlvdXJzW2hvdGVsLmhvdGVsIGFzIHN0cmluZ10gPVxyXG4gICAgICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQ+KG51bGwpO1xyXG5cclxuICAgICAgICBjb25zdCBuZXdCZWhhdmlvdXJPYmplY3Q6IEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdCA9XHJcbiAgICAgICAgICBmdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXM7XHJcbiAgICAgICAgbmV3QmVoYXZpb3VyT2JqZWN0Lm1pbnByaWNlID0gZnVsbEhvdGVsLmF2YWlsYWJsZVJhdGVzLnJvb21zWzBdXHJcbiAgICAgICAgICA/IGZ1bGxIb3RlbC5hdmFpbGFibGVSYXRlcy5yb29tc1swXS50b3RhbFxyXG4gICAgICAgICAgOiAwO1xyXG4gICAgICAgIG5ld0JlaGF2aW91ck9iamVjdC5tYXhwcmljZSA9IG5ld0JlaGF2aW91ck9iamVjdC5taW5wcmljZVxyXG4gICAgICAgICAgPyBmdWxsSG90ZWwuYXZhaWxhYmxlUmF0ZXMucm9vbXNbXHJcbiAgICAgICAgICAgICAgZnVsbEhvdGVsLmF2YWlsYWJsZVJhdGVzLnJvb21zLmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgXS50b3RhbFxyXG4gICAgICAgICAgOiAwO1xyXG4gICAgICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbCBhcyBzdHJpbmddLm5leHQobmV3QmVoYXZpb3VyT2JqZWN0KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5iZWhhdmlvdXJzW2hvdGVsLmhvdGVsIGFzIHN0cmluZ107XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEgfHwgdGhpcy5yZWFkRnJvbVNlc3Npb24oKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbCBhcyBzdHJpbmddIHx8XHJcbiAgICAgIHRoaXMuX2dldEF2YWlsYWJpbGl0eUZvcklkKGhvdGVsKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEF2YWlsYWJpbGl0eVZhbHVlKGhvdGVsOiBIb3RlbERldGFpbHMpOiBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQge1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhIHx8IHRoaXMucmVhZEZyb21TZXNzaW9uKCk7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmJlaGF2aW91cnNbaG90ZWwuaWQgYXMgc3RyaW5nXT8udmFsdWUgfHxcclxuICAgICAgKHt9IGFzIEhvdGVsQXZhbGliaWxpdHlRdW90ZVJlc3VsdClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVIb3RlbChob3RlbDogSG90ZWxEZXRhaWxzKTogSG90ZWxEZXRhaWxzIHtcclxuICAgIGlmICghaG90ZWwuYXZhaWxhYmxlUmF0ZXMpIHtcclxuICAgICAgaG90ZWwuYXZhaWxhYmxlUmF0ZXMgPSB0aGlzLmdldEF2YWlsYWJpbGl0eVZhbHVlKGhvdGVsKTtcclxuICAgIH1cclxuICAgIHJldHVybiBob3RlbDtcclxuICB9XHJcblxyXG4gIHNldEhvdGVsQXZhbGFiaWxpdHkoaG90ZWw6IEhvdGVsRGV0YWlscyk6IEhvdGVsRGV0YWlscyB7XHJcbiAgICBpZiAoaG90ZWwuYXZhaWxhYmxlUmF0ZXMgJiYgaG90ZWw/LmF2YWlsYWJsZVJhdGVzLmhvdGVsSWQpIHtcclxuICAgICAgdGhpcy5kYXRhW2hvdGVsLmF2YWlsYWJsZVJhdGVzLmhvdGVsSWRdID0gaG90ZWwuYXZhaWxhYmxlUmF0ZXM7XHJcbiAgICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5hdmFpbGFibGVSYXRlcy5ob3RlbElkXS5uZXh0KGhvdGVsLmF2YWlsYWJsZVJhdGVzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBob3RlbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2dldEF2YWlsYWJpbGl0eUZvcklkKFxyXG4gICAgaG90ZWw6IEhvdGVsQXZhbGliaWxpdHlRdWVyeVxyXG4gICk6IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQ+IHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCcrKysgRmV0Y2hpbmcgYXZhaWxhYmlsdHkgZm9yOiAnLCBob3RlbCwgJyArKysnKTtcclxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcclxuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgICB0aGlzLnRpbWVvdXQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5mZXRjaGluZy52YWx1ZSkge1xyXG4gICAgICB0aGlzLnRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dChcclxuICAgICAgICB0aGlzLmZldGNoQXZhbGlsYmlsaXR5LmJpbmQodGhpcyksXHJcbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudC5hdXRvRmV0Y2hIb3RlbFRpbWVvdXRcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMudG9GZXRjaC5wdXNoKGhvdGVsKTtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuZmV0Y2hpbmcudmFsdWUgJiZcclxuICAgICAgdGhpcy50b0ZldGNoLmxlbmd0aCA+PSB0aGlzLmVudmlyb25tZW50Lm51bWJlck9mSG90ZWxzVG9GZXRjaFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZmV0Y2hBdmFsaWxiaWxpdHkoKTtcclxuICAgIH1cclxuICAgIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbCBhcyBzdHJpbmddID1cclxuICAgICAgbmV3IEJlaGF2aW9yU3ViamVjdDxIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQ+KG51bGwpO1xyXG4gICAgcmV0dXJuIHRoaXMuYmVoYXZpb3Vyc1tob3RlbC5ob3RlbCBhcyBzdHJpbmddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaEF2YWxpbGJpbGl0eSgpIHtcclxuICAgIHRoaXMuZmV0Y2hpbmcubmV4dCh0cnVlKTtcclxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcclxuICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgICB0aGlzLnRpbWVvdXQgPSAwO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG9GZXRjaCA9IHRoaXMudG9GZXRjaC5zbGljZShcclxuICAgICAgMCxcclxuICAgICAgdGhpcy5lbnZpcm9ubWVudC5udW1iZXJPZkhvdGVsc1RvRmV0Y2hcclxuICAgICk7XHJcbiAgICB0aGlzLnRvRmV0Y2ggPSB0aGlzLnRvRmV0Y2guc2xpY2UodGhpcy5lbnZpcm9ubWVudC5udW1iZXJPZkhvdGVsc1RvRmV0Y2gpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdIb3RlbHMgc3RpbGwgdG8gZmV0Y2gnLCB0aGlzLnRvRmV0Y2gubGVuZ3RoKTtcclxuXHJcbiAgICBjb25zdCBxdWVyeTogUXVlcnlHZXRNdWx0aXBsZUhvdGVsc0F2YWlsYWJpbGl0eUFyZ3MgPSB7XHJcbiAgICAgIGhvdGVsOiB0b0ZldGNoLm1hcCgoaG90ZWwpID0+IGhvdGVsLmhvdGVsKSBhcyBzdHJpbmdbXSxcclxuICAgICAgY3VycmVuY3k6IHRvRmV0Y2hbMF0uY3VycmVuY3ksXHJcbiAgICAgIGVuZERhdGU6IHRvRmV0Y2hbMF0uZW5kRGF0ZSxcclxuICAgICAgc3RhcnREYXRlOiB0b0ZldGNoWzBdLnN0YXJ0RGF0ZSxcclxuICAgICAgb2NjdXBhbnRzOiB0b0ZldGNoWzBdLm9jY3VwYW50cyxcclxuICAgICAgcm9vbXM6IHRvRmV0Y2hbMF0ucm9vbXNcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5hdmFsaWJpbGl0eUZldGhjZXJcclxuICAgICAgLmZldGNoTGlzdChxdWVyeSlcclxuICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoaG90ZWxzOiBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHRBcnJheSkgPT4ge1xyXG4gICAgICAgICAgaG90ZWxzLmZvckVhY2goKGhvdGVsOiBIb3RlbEF2YWxpYmlsaXR5UXVvdGVSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgaG90ZWwgPSB0aGlzLmhlbHBlcnMuY2xvbmUoaG90ZWwpO1xyXG4gICAgICAgICAgICBob3RlbC5yb29tcyA9IChob3RlbC5yb29tcyB8fCBbXSlcclxuICAgICAgICAgICAgICAuZmlsdGVyKChyb29tOiBIb3RlbFJvb21XaXRoTG9jYWxQcmljZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvb20udG90YWwgPiAwO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLm1hcCgocm9vbTogSG90ZWxSb29tV2l0aExvY2FsUHJpY2UpID0+IHtcclxuICAgICAgICAgICAgICAgIHJvb20gPSB0aGlzLmhlbHBlcnMuY2xvbmU8SG90ZWxSb29tV2l0aExvY2FsUHJpY2U+KHJvb20pO1xyXG4gICAgICAgICAgICAgICAgcm9vbS5Mb2NhbFByaWNlID0gcm9vbS5jdXJyZW5jeUNvbnZlcnNpb25cclxuICAgICAgICAgICAgICAgICAgPyByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5sb2NhbFRvdGFsXHJcbiAgICAgICAgICAgICAgICAgIDogcm9vbS50b3RhbDtcclxuICAgICAgICAgICAgICAgIHJvb20uTG9jYWxDdXJyZW5jeSA9IHJvb20uY3VycmVuY3lDb252ZXJzaW9uXHJcbiAgICAgICAgICAgICAgICAgID8gcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24ubG9jYWxDb2RlXHJcbiAgICAgICAgICAgICAgICAgIDogcm9vbS5jdXJyZW5jeUNvZGU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcm9vbTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaG90ZWwuY3VycmVuY2llcyA9IGhvdGVsLnJvb21zLnJlZHVjZShcclxuICAgICAgICAgICAgICAoZGV0YWlsczogQ3VycmVuY3lEZXRhaWxzLCByb29tOiBIb3RlbFJvb21XaXRoTG9jYWxQcmljZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJvb20uY3VycmVuY3lDb252ZXJzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRldGFpbHNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0gPSBkZXRhaWxzW1xyXG4gICAgICAgICAgICAgICAgICAgIHJvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZENvZGVcclxuICAgICAgICAgICAgICAgICAgXSB8fCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF4cHJpY2U6IE51bWJlci5NSU5fVkFMVUUsXHJcbiAgICAgICAgICAgICAgICAgICAgbWlucHJpY2U6IE51bWJlci5NQVhfVkFMVUVcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgZGV0YWlsc1tyb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRDb2RlXS5tYXhwcmljZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZENvZGVdLm1heHByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkVG90YWxcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICBkZXRhaWxzW3Jvb20uY3VycmVuY3lDb252ZXJzaW9uLmNvbnZlcnRlZENvZGVdLm1pbnByaWNlID1cclxuICAgICAgICAgICAgICAgICAgICBNYXRoLm1pbihcclxuICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0ubWlucHJpY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRUb3RhbFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmNpZXNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0gPSB0aGlzXHJcbiAgICAgICAgICAgICAgICAgICAgLmN1cnJlbmNpZXNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV0gfHwge1xyXG4gICAgICAgICAgICAgICAgICAgIG1heHByaWNlOiBOdW1iZXIuTUlOX1ZBTFVFLFxyXG4gICAgICAgICAgICAgICAgICAgIG1pbnByaWNlOiBOdW1iZXIuTUFYX1ZBTFVFXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY2llc1tcclxuICAgICAgICAgICAgICAgICAgICByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRDb2RlXHJcbiAgICAgICAgICAgICAgICAgIF0ubWlucHJpY2UgPSBNYXRoLmNlaWwoXHJcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5taW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmNpZXNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLm1pbnByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkVG90YWxcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVuY2llc1tcclxuICAgICAgICAgICAgICAgICAgICByb29tLmN1cnJlbmN5Q29udmVyc2lvbi5jb252ZXJ0ZWRDb2RlXHJcbiAgICAgICAgICAgICAgICAgIF0ubWF4cHJpY2UgPSBNYXRoLmNlaWwoXHJcbiAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbmNpZXNbcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkQ29kZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLm1heHByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcm9vbS5jdXJyZW5jeUNvbnZlcnNpb24uY29udmVydGVkVG90YWxcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGV0YWlscztcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHt9IGFzIEN1cnJlbmN5RGV0YWlsc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCByb29tUHJpY2VzID0gaG90ZWwucm9vbXMubWFwKFxyXG4gICAgICAgICAgICAgIHRoaXMuaGVscGVycy5tYXBGaWVsZEZyb21PYmplY3Q8c3RyaW5nLCBudW1iZXI+KCd0b3RhbCcpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICghcm9vbVByaWNlcy5sZW5ndGgpIHJvb21QcmljZXMucHVzaCgwKTtcclxuICAgICAgICAgICAgaG90ZWwubWlucHJpY2UgPSBNYXRoLm1pbiguLi5yb29tUHJpY2VzKTtcclxuICAgICAgICAgICAgaG90ZWwubWF4cHJpY2UgPSBNYXRoLm1heCguLi5yb29tUHJpY2VzKTtcclxuXHJcbiAgICAgICAgICAgIGhvdGVsLnJvb21zID0gaG90ZWwucm9vbXM7XHJcbiAgICAgICAgICAgIGlmIChob3RlbD8uaG90ZWxJZCAmJiB0aGlzLmJlaGF2aW91cnNbaG90ZWwuaG90ZWxJZF0pIHtcclxuICAgICAgICAgICAgICB0aGlzLmRhdGFbaG90ZWwuaG90ZWxJZF0gPSBob3RlbDtcclxuICAgICAgICAgICAgICB0aGlzLmJlaGF2aW91cnNbaG90ZWwuaG90ZWxJZF0ubmV4dChob3RlbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIC8vIHRoaXMuc2Vzc2lvblN0b3JhZ2Uuc2V0U2Vzc2lvbkl0ZW0oU0VTU0lPTl9OQU1FLCB0aGlzLmRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5zZXNzaW9uU3RvcmFnZS5zZXRTZXNzaW9uSXRlbShTRVNTSU9OX05BTUUsIGhvdGVscyk7XHJcbiAgICAgICAgICBpZiAodGhpcy50b0ZldGNoLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mZXRjaEF2YWxpbGJpbGl0eSgpO1xyXG4gICAgICAgICAgICB9LCB0aGlzLmVudmlyb25tZW50LmhvdGVsQXZhbGliaWxpdHlUaW1lb3V0KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hpbmcubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIC8vIG1pZ2h0IG5lZWQgdG8gcmVmaW5lIHRoaXNcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgIGArKysgRXJyb3IgcmVjb3ZlcmluZyBob3RlbCBhdmFpbGFiaWx0eTogJHtlcnJvcn0gLSByZXNldGluZyBhdmFpbGFiaWx0eSArKytgXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgLy8gdGhpcy5yZXNldCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIG1heFByaWNlRm9yQ3VycmVuY3koY3VycmVuY3k6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5jdXJyZW5jaWVzW2N1cnJlbmN5XSB8fCB7XHJcbiAgICAgICAgbWF4cHJpY2U6IE51bWJlci5NQVhfVkFMVUUsXHJcbiAgICAgICAgbWlucHJpY2U6IE51bWJlci5NSU5fVkFMVUVcclxuICAgICAgfVxyXG4gICAgKS5tYXhwcmljZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXNjcmlwdGlvbiAtIHJldHVybiB0aGUgbnVtYmVyIG9mIGhvdGVscyB0aGF0IGhhdmUgYSBwcmljZSAocHJwbiB2YWx1ZSlcclxuICAgKi9cclxuICBudW1iZXJPZkhvdGVsc1dpdGhQcmljZSgpOiBudW1iZXIge1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5kYXRhKSkge1xyXG4gICAgICAgIGlmICh2YWx1ZT8ucHJwbikge1xyXG4gICAgICAgICAgY291bnQrKztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjb3VudDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { ModalTypes } from '../classes/modal-types.enum';
|
|
3
|
+
export class BaseRequiresReasonService {
|
|
4
|
+
constructor(modalService, basketService) {
|
|
5
|
+
this.modalService = modalService;
|
|
6
|
+
this.basketService = basketService;
|
|
7
|
+
}
|
|
8
|
+
addBasketItem(basket) {
|
|
9
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
10
|
+
if (basket.id !== this.currentBasketid || this.workingOn) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const basketItems = basket.basketItems.filter((bi) => {
|
|
14
|
+
return (bi.requiresReason &&
|
|
15
|
+
bi.managementInfo.filter((mi) => {
|
|
16
|
+
return mi.reason && mi.selectedValues.length === 0;
|
|
17
|
+
}).length !== 0);
|
|
18
|
+
});
|
|
19
|
+
if (basketItems.length > 0) {
|
|
20
|
+
this.workingOn = {
|
|
21
|
+
basket,
|
|
22
|
+
required: basketItems.reduce((required, bi) => {
|
|
23
|
+
required[bi.id] = bi.managementInfo.filter((mi) => {
|
|
24
|
+
return mi.reason && mi.selectedValues.length === 0;
|
|
25
|
+
});
|
|
26
|
+
return required;
|
|
27
|
+
}, {})
|
|
28
|
+
};
|
|
29
|
+
const results = yield this.modalService.open(ModalTypes.RequiresReasonDialogComponent, { backdrop: 'static' }, this.workingOn);
|
|
30
|
+
if (results) {
|
|
31
|
+
this.workingOn.basket.basketItems.forEach((bi) => {
|
|
32
|
+
(bi.managementInfo || []).forEach((mi) => {
|
|
33
|
+
if (results[mi.id]) {
|
|
34
|
+
this.basketService.setMiSelectedValue(this.workingOn.basket.id, mi, results[mi.id], null);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
Object.entries(this.workingOn.required).forEach(([biId, mis]) => {
|
|
41
|
+
this.basketService.removeBasketItem(this.workingOn.basket.id, this.workingOn.basket.basketItems.find((bi) => bi.id === biId));
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
this.workingOn = null;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZXMtcmVhc29uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYnRzZXJ2aWNlcy9iYXNlL3NyYy9saWIvdmVuZG9yL3NlcnZpY2VzL3JlcXVpcmVzLXJlYXNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFjekQsTUFBTSxPQUFPLHlCQUF5QjtJQU1wQyxZQUNVLFlBQW9DLEVBQ3BDLGFBQStDO1FBRC9DLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQUNwQyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0M7SUFDdEQsQ0FBQztJQUVFLGFBQWEsQ0FBQyxNQUF3Qjs7WUFDMUMsSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDeEQsT0FBTzthQUNSO1lBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFjLEVBQUUsRUFBRTtnQkFDL0QsT0FBTyxDQUNMLEVBQUUsQ0FBQyxjQUFjO29CQUNqQixFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQWtCLEVBQUUsRUFBRTt3QkFDOUMsT0FBTyxFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztvQkFDckQsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FDaEIsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRztvQkFDZixNQUFNO29CQUNOLFFBQVEsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBa0IsRUFBRSxFQUFjLEVBQUUsRUFBRTt3QkFDbEUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQWtCLEVBQUUsRUFBRTs0QkFDaEUsT0FBTyxFQUFFLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQzt3QkFDckQsQ0FBQyxDQUFDLENBQUM7d0JBQ0gsT0FBTyxRQUFRLENBQUM7b0JBQ2xCLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQ1AsQ0FBQztnQkFFRixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUMxQyxVQUFVLENBQUMsNkJBQTZCLEVBQ3hDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUN0QixJQUFJLENBQUMsU0FBUyxDQUNmLENBQUM7Z0JBQ0YsSUFBSSxPQUFPLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQWMsRUFBRSxFQUFFO3dCQUMzRCxDQUFDLEVBQUUsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBa0IsRUFBRSxFQUFFOzRCQUN2RCxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0NBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFDeEIsRUFBRSxFQUNGLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQ2QsSUFBSSxDQUNMLENBQUM7NkJBQ0g7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FDN0MsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQTZCLEVBQUUsRUFBRTt3QkFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNwQyxDQUFDLEVBQWMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQ25DLENBQ0YsQ0FBQztvQkFDSixDQUFDLENBQ0YsQ0FBQztpQkFDSDtnQkFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzthQUN2QjtRQUNILENBQUM7S0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGFsT3BlbmVyU2VydmljZSB9IGZyb20gJy4vbW9kYWwtb3BlbmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNrZXRJdGVtLCBNYW5hZ2VtZW50SW5mbyB9IGZyb20gJy4uL3R5cGVzL2dyYXBocWwudHlwZXMnO1xyXG5pbXBvcnQgeyBNb2RhbFR5cGVzIH0gZnJvbSAnLi4vY2xhc3Nlcy9tb2RhbC10eXBlcy5lbnVtJztcclxuaW1wb3J0IHsgVXNlckJhc2tldFJlc3VsdCB9IGZyb20gJy4uL3R5cGVzL3R5cGVzJztcclxuaW1wb3J0IHsgRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL0llbnRlcnByaXNlLWJhc2tldC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCB0eXBlIFJlcXVpcmVkID0gUmVjb3JkPHN0cmluZywgTWFuYWdlbWVudEluZm9bXT47XHJcbmV4cG9ydCB0eXBlIFJlcXVpcmVzUmVhc29uVHlwZSA9IHtcclxuICBiYXNrZXQ6IFVzZXJCYXNrZXRSZXN1bHQ7XHJcbiAgcmVxdWlyZWQ6IFJlcXVpcmVkO1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZXF1aXJlc1JlYXNvblNlcnZpY2VJbnRlcmZhY2Uge1xyXG4gIGN1cnJlbnRCYXNrZXRpZDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQmFzZVJlcXVpcmVzUmVhc29uU2VydmljZVxyXG4gIGltcGxlbWVudHMgUmVxdWlyZXNSZWFzb25TZXJ2aWNlSW50ZXJmYWNlXHJcbntcclxuICBwdWJsaWMgY3VycmVudEJhc2tldGlkOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB3b3JraW5nT246IFJlcXVpcmVzUmVhc29uVHlwZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogQmFzZU1vZGFsT3BlbmVyU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFza2V0U2VydmljZTogRW50ZXJwcmlzZUJhc2tldFNlcnZpY2VJbnRlcmZhY2VcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIGFkZEJhc2tldEl0ZW0oYmFza2V0OiBVc2VyQmFza2V0UmVzdWx0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoYmFza2V0LmlkICE9PSB0aGlzLmN1cnJlbnRCYXNrZXRpZCB8fCB0aGlzLndvcmtpbmdPbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYmFza2V0SXRlbXMgPSBiYXNrZXQuYmFza2V0SXRlbXMuZmlsdGVyKChiaTogQmFza2V0SXRlbSkgPT4ge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIGJpLnJlcXVpcmVzUmVhc29uICYmXHJcbiAgICAgICAgYmkubWFuYWdlbWVudEluZm8uZmlsdGVyKChtaTogTWFuYWdlbWVudEluZm8pID0+IHtcclxuICAgICAgICAgIHJldHVybiBtaS5yZWFzb24gJiYgbWkuc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwO1xyXG4gICAgICAgIH0pLmxlbmd0aCAhPT0gMFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGJhc2tldEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy53b3JraW5nT24gPSB7XHJcbiAgICAgICAgYmFza2V0LFxyXG4gICAgICAgIHJlcXVpcmVkOiBiYXNrZXRJdGVtcy5yZWR1Y2UoKHJlcXVpcmVkOiBSZXF1aXJlZCwgYmk6IEJhc2tldEl0ZW0pID0+IHtcclxuICAgICAgICAgIHJlcXVpcmVkW2JpLmlkXSA9IGJpLm1hbmFnZW1lbnRJbmZvLmZpbHRlcigobWk6IE1hbmFnZW1lbnRJbmZvKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBtaS5yZWFzb24gJiYgbWkuc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gcmVxdWlyZWQ7XHJcbiAgICAgICAgfSwge30pXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihcclxuICAgICAgICBNb2RhbFR5cGVzLlJlcXVpcmVzUmVhc29uRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgICAgIHsgYmFja2Ryb3A6ICdzdGF0aWMnIH0sXHJcbiAgICAgICAgdGhpcy53b3JraW5nT25cclxuICAgICAgKTtcclxuICAgICAgaWYgKHJlc3VsdHMpIHtcclxuICAgICAgICB0aGlzLndvcmtpbmdPbi5iYXNrZXQuYmFza2V0SXRlbXMuZm9yRWFjaCgoYmk6IEJhc2tldEl0ZW0pID0+IHtcclxuICAgICAgICAgIChiaS5tYW5hZ2VtZW50SW5mbyB8fCBbXSkuZm9yRWFjaCgobWk6IE1hbmFnZW1lbnRJbmZvKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHRzW21pLmlkXSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYmFza2V0U2VydmljZS5zZXRNaVNlbGVjdGVkVmFsdWUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLndvcmtpbmdPbi5iYXNrZXQuaWQsXHJcbiAgICAgICAgICAgICAgICBtaSxcclxuICAgICAgICAgICAgICAgIHJlc3VsdHNbbWkuaWRdLFxyXG4gICAgICAgICAgICAgICAgbnVsbFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMud29ya2luZ09uLnJlcXVpcmVkKS5mb3JFYWNoKFxyXG4gICAgICAgICAgKFtiaUlkLCBtaXNdOiBbc3RyaW5nLCBNYW5hZ2VtZW50SW5mb1tdXSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmJhc2tldFNlcnZpY2UucmVtb3ZlQmFza2V0SXRlbShcclxuICAgICAgICAgICAgICB0aGlzLndvcmtpbmdPbi5iYXNrZXQuaWQsXHJcbiAgICAgICAgICAgICAgdGhpcy53b3JraW5nT24uYmFza2V0LmJhc2tldEl0ZW1zLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoYmk6IEJhc2tldEl0ZW0pID0+IGJpLmlkID09PSBiaUlkXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy53b3JraW5nT24gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|