@sunbird-cb/utils-v2 0.0.21 → 0.0.22

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.
@@ -11,6 +11,7 @@ export class EventService {
11
11
  this.utilitySvc = utilitySvc;
12
12
  this.todaysEvents = [];
13
13
  this.todaysLiveEvents = [];
14
+ this.keySpeakerEvents = [];
14
15
  this.eventsSubject = new Subject();
15
16
  this.events$ = this.eventsSubject.asObservable();
16
17
  this.eventsChatbotSubject = new Subject();
@@ -159,6 +160,7 @@ export class EventService {
159
160
  if (eventObj !== undefined) {
160
161
  this.todaysEvents = [];
161
162
  this.todaysLiveEvents = [];
163
+ this.keySpeakerEvents = [];
162
164
  const data = eventObj;
163
165
  let isEventLive = false;
164
166
  let isEventRecording = false;
@@ -240,8 +242,10 @@ export class EventService {
240
242
  if (isToday && isEventLive) {
241
243
  this.todaysLiveEvents.push(eventDataObj);
242
244
  }
245
+ this.keySpeakerEvents.push(eventDataObj);
243
246
  }));
244
247
  this.todaysLiveEvents = this.sortItemByTime(this.todaysLiveEvents);
248
+ this.keySpeakerEvents = this.getKeySpeakerEvents(this.keySpeakerEvents);
245
249
  this.todaysEvents = this.getTodaysEvents(this.todaysEvents);
246
250
  }
247
251
  }
@@ -258,6 +262,19 @@ export class EventService {
258
262
  this.todaysEvents = [...liveEvents, ...futureEvents, ...pastEvents];
259
263
  return this.todaysEvents;
260
264
  }
265
+ getKeySpeakerEvents(eventData) {
266
+ let liveEvents = [];
267
+ let pastEvents = [];
268
+ let futureEvents = [];
269
+ liveEvents = this.todaysLiveEvents;
270
+ pastEvents = eventData.filter(((pastEvent) => pastEvent.isEventPast));
271
+ futureEvents = eventData.filter(((futureEvent) => futureEvent.isEventFuture));
272
+ liveEvents = this.sortItemByTimeAsc(liveEvents);
273
+ futureEvents = this.sortItemByTimeAsc(futureEvents);
274
+ pastEvents = this.sortItemByTime(pastEvents);
275
+ this.keySpeakerEvents = [...liveEvents, ...futureEvents, ...pastEvents];
276
+ return this.keySpeakerEvents;
277
+ }
261
278
  }
262
279
  EventService.decorators = [
263
280
  { type: Injectable, args: [{
@@ -272,6 +289,7 @@ EventService.ctorParameters = () => [
272
289
  if (false) {
273
290
  EventService.prototype.todaysEvents;
274
291
  EventService.prototype.todaysLiveEvents;
292
+ EventService.prototype.keySpeakerEvents;
275
293
  EventService.prototype.eventsSubject;
276
294
  EventService.prototype.events$;
277
295
  EventService.prototype.eventsChatbotSubject;
@@ -283,4 +301,4 @@ if (false) {
283
301
  EventService.prototype.environment;
284
302
  EventService.prototype.utilitySvc;
285
303
  }
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVsRCxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUE7QUFDdEIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFBOzs7QUFJM0IsTUFBTSxPQUFPLFlBQVk7SUFpQnZCLFlBQ3lCLFdBQWdCLEVBQy9CLFVBQTBCO1FBQTFCLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBbEJwQyxpQkFBWSxHQUFRLEVBQUUsQ0FBQTtRQUN0QixxQkFBZ0IsR0FBUSxFQUFFLENBQUE7UUFFbEIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQTtRQUN2RCxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUUxQyx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQTtRQUM5RCxtQkFBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUV4RCwwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQTtRQUMvRCxvQkFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUUxRCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFBO1FBQ3pELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQU92RCxJQUFJLENB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RCxtQ0FBZ0I7SUFHZCxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgV3NFdmVudHMgfSBmcm9tICcuL2V2ZW50Lm1vZGVsJ1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4vdXRpbGl0eS5zZXJ2aWNlJ1xyXG4vKiB0c2xpbnQ6ZGlzYWJsZSovXHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xyXG4gIHRvZGF5c0V2ZW50czogYW55ID0gW11cclxuICB0b2RheXNMaXZlRXZlbnRzOiBhbnkgPSBbXVxyXG4gIFxyXG4gIHByaXZhdGUgZXZlbnRzU3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGV2ZW50cyQgPSB0aGlzLmV2ZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgcHJpdmF0ZSBldmVudHNDaGF0Ym90U3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGNoYXRib3RFdmVudHMkID0gdGhpcy5ldmVudHNDaGF0Ym90U3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cclxuICBwcml2YXRlIGV2ZW50c0dldFN0YXJ0U3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGdldFN0YXJ0RXZlbnRzJCA9IHRoaXMuZXZlbnRzR2V0U3RhcnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIHByaXZhdGUgZXZlbnRzUFJTdWJqZWN0ID0gbmV3IFN1YmplY3Q8V3NFdmVudHMuSVdzRXZlbnRzPGFueT4+KClcclxuICBwdWJsaWMgZ2V0UFJFdmVudHMkID0gdGhpcy5ldmVudHNQUlN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgZW52aXJvbm1lbnQ6IGFueVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55LFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5U3ZjOiBVdGlsaXR5U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudFxyXG4gICAgLy8gdGhpcy5mb2N1c0NoYW5nZUV2ZW50TGlzdGVuZXIoKVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hFdmVudDxUPihldmVudDogV3NFdmVudHMuSVdzRXZlbnRzPFQ+KSB7XHJcbiAgICBldmVudC5wYWdlQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dChldmVudC5wYWdlQ29udGV4dClcclxuICAgIHRoaXMuZXZlbnRzU3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgdGhpcy5ldmVudHNDaGF0Ym90U3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hHZXRTdGFydGVkRXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgdGhpcy5ldmVudHNHZXRTdGFydFN1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoUGxhdGZvcm1SYXRpbmdFdmVudDxUPihldmVudDogV3NFdmVudHMuSVdzRXZlbnRzPFQ+KSB7XHJcbiAgICB0aGlzLmV2ZW50c1BSU3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGhlbHBlciBmdW5jdGlvbnNcclxuICByYWlzZUludGVyYWN0VGVsZW1ldHJ5KGVkYXRhOiBXc0V2ZW50cy5JVGVsZW1ldHJ5RWRhdGEsIG9iamVjdDogYW55LCBwYWdlQ29udGV4dD86IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCkge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZWRhdGEsXHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIHBhZ2VDb250ZXh0OiB0aGlzLmdldENvbnRleHQocGFnZUNvbnRleHQpLFxyXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW50ZXJhY3QsXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmFpc2VGZWVkYmFja1RlbGVtZXRyeShlZGF0YTogV3NFdmVudHMuSVRlbGVtZXRyeUVkYXRhLCBvYmplY3Q6IGFueSwgZnJvbT86IHN0cmluZykge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZWRhdGEsXHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuRmVlZGJhY2ssXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206IGZyb20gfHwgJycsXHJcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyBSYWlzZSBjdXN0b20gaW1wcmVzc2lvbiBldmVudHMgZWc6b24gdGFiIGNoYW5nZVxyXG4gIHJhaXNlQ3VzdG9tSW1wcmVzc2lvbihvYmplY3Q6IGFueSwgcGFnZUNvbnRleHQ/OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUltcHJlc3Npb24+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIHBhZ2VDb250ZXh0OiB0aGlzLmdldENvbnRleHQocGFnZUNvbnRleHQpLFxyXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW1wcmVzc2lvbixcclxuICAgICAgfSxcclxuICAgICAgZnJvbTogJycsXHJcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGZvY3VzQ2hhbmdlRXZlbnRMaXN0ZW5lcigpIHtcclxuICAvLyAgIGZyb21FdmVudCh3aW5kb3csICdmb2N1cycpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgLy8gICAgIHRoaXMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeSgnZm9jdXMnLCAnZ2FpbmVkJywge30pXHJcbiAgLy8gICB9KVxyXG4gIC8vICAgZnJvbUV2ZW50KHdpbmRvdywgJ2JsdXInKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoJ2ZvY3VzJywgJ2xvc3QnLCB7fSlcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICAvLyBNZXRob2QgdG8gZ2V0IHRoZSBjb250ZXh0IGluZm9ybWF0aW9uIGFib3V0IHRoZSB0ZWxlbWV0cnkgaW50ZXJhY3QgZXZlbnRcclxuICBwcml2YXRlIGdldENvbnRleHQocGFnZUNvbnRleHQ6IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCB8IHVuZGVmaW5lZCk6IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCB7XHJcbiAgICBjb25zdCByb3V0ZURhdGFDb250ZXh0ID0gdGhpcy51dGlsaXR5U3ZjLnJvdXRlRGF0YVxyXG4gICAgLy8gaW5pdGlhbGl6ZSB3aXRoIHRoZSByb3V0ZSBkYXRhIGNvbmZpZ3VyYXRpb24gLSBjdXJyZW50IHJvdXRlJ3MgcGFnZUlEICYgbW9kdWxlXHJcbiAgICBjb25zdCBmaW5hbENvbnRleHQ6IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCA9IHtcclxuICAgICAgcGFnZUlkOiByb3V0ZURhdGFDb250ZXh0LnBhZ2VJZCxcclxuICAgICAgbW9kdWxlOiByb3V0ZURhdGFDb250ZXh0Lm1vZHVsZSxcclxuICAgIH1cclxuICAgIGlmIChwYWdlQ29udGV4dCkge1xyXG4gICAgICAvLyBpZiBjb250ZXh0IGhhcyBwYWdlSWRFeHQsIGFwcGVuZCBpdCB0byB0aGUgcm91dGUncyBwYWdlSWRcclxuICAgICAgaWYgKHBhZ2VDb250ZXh0LnBhZ2VJZEV4dCkge1xyXG4gICAgICAgIGZpbmFsQ29udGV4dC5wYWdlSWQgPSBgJHtyb3V0ZURhdGFDb250ZXh0LnBhZ2VJZH1fJHtwYWdlQ29udGV4dC5wYWdlSWRFeHR9YFxyXG4gICAgICB9IGVsc2UgaWYgKHBhZ2VDb250ZXh0LnBhZ2VJZCkge1xyXG4gICAgICAgIC8vIGVsc2UgY29udGV4dCBoYXMgcGFnZUlkLCBvdmVycmlkZSBpdCB0byB0aGUgZmluYWwgcGFnZUlEXHJcbiAgICAgICAgZmluYWxDb250ZXh0LnBhZ2VJZCA9IHBhZ2VDb250ZXh0LnBhZ2VJZFxyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmIGNvbnRleHQgaGFzIG1vZHVsZSwgb3ZlcnJpZGUgaXQgdG8gdGhlIGZpbmFsIG1vZHVsZVxyXG4gICAgICBpZiAocGFnZUNvbnRleHQubW9kdWxlKSB7XHJcbiAgICAgICAgZmluYWxDb250ZXh0Lm1vZHVsZSA9IHBhZ2VDb250ZXh0Lm1vZHVsZVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsQ29udGV4dFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVRhYlRlbGVtZXRyeShzdWJUeXBlOiBzdHJpbmcsIGRhdGE6IFdzRXZlbnRzLklUZWxlbWV0cnlUYWJEYXRhLCBvYmplY3Q/OmFueSkge1xyXG4gICAgLy8gcmFpc2UgYSB0YWIgY2xpY2sgaW50ZXJhY3QgZXZlbnRcclxuICAgIHRoaXMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeShcclxuICAgICAge1xyXG4gICAgICAgIHN1YlR5cGUsXHJcbiAgICAgICAgdHlwZTogV3NFdmVudHMuRW51bUludGVyYWN0VHlwZXMuQ0xJQ0ssXHJcbiAgICAgICAgaWQ6IGAke18uY2FtZWxDYXNlKGRhdGEubGFiZWwpfS10YWJgLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgLy8gY29udGV4dDoge1xyXG4gICAgICAgIC8vICAgcG9zaXRpb246IGRhdGEuaW5kZXgsXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgICAuLi5vYmplY3RcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICBwYWdlSWRFeHQ6IGAke18uY2FtZWxDYXNlKGRhdGEubGFiZWwpfS10YWJgLFxyXG4gICAgfSlcclxuXHJcbiAgICAvLyByYWlzZSBhIHRhYiBjbGljayBpbXByZXNzaW9uIGV2ZW50XHJcbiAgICB0aGlzLnJhaXNlQ3VzdG9tSW1wcmVzc2lvbih7XHJcbiAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IGRhdGEuaW5kZXgsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ub2JqZWN0XHJcbiAgICAgIH0se1xyXG4gICAgICBwYWdlSWRFeHQ6IGAke18uY2FtZWxDYXNlKGRhdGEubGFiZWwpfS10YWJgLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFB1YmxpY1VybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYWluVXJsID0gdXJsLnNwbGl0KCcvY29udGVudCcpLnBvcCgpIHx8ICcnXHJcbiAgICByZXR1cm4gYCR7dGhpcy5lbnZpcm9ubWVudC5jb250ZW50SG9zdH0vJHt0aGlzLmVudmlyb25tZW50LmNvbnRlbnRCdWNrZXR9L2NvbnRlbnQke21haW5Vcmx9YFxyXG4gIH1cclxuXHJcbiAgYWxsRXZlbnREYXRlRm9ybWF0KGRhdGV0aW1lOiBhbnkpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0RGF0ZSgpXHJcbiAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldEZ1bGxZZWFyKClcclxuICAgIGNvbnN0IG1vbnRoID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldE1vbnRoKClcclxuICAgIGNvbnN0IGhvdXJzID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldEhvdXJzKClcclxuICAgIGNvbnN0IG1pbnV0ZXMgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0TWludXRlcygpXHJcbiAgICBjb25zdCBzZWNvbmRzID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldFNlY29uZHMoKVxyXG4gICAgY29uc3QgZm9ybWF0ZWREYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRhdGUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCAwKVxyXG4gICAgLy8gbGV0IGZvcm1hdCA9ICdZWVlZLU1NLUREIGhoOm1tIGEnXHJcbiAgICAvLyBpZiAoIXRpbWVBbGxvdykge1xyXG4gICAgY29uc3QgZm9ybWF0ID0gJ1lZWVktTU0tREQnXHJcbiAgICAvLyB9XHJcbiAgICBjb25zdCByZWFkYWJsZURhdGVNb250aCA9IG1vbWVudChmb3JtYXRlZERhdGUpLmZvcm1hdChmb3JtYXQpXHJcbiAgICBjb25zdCBmaW5hbERhdGVUaW1lVmFsdWUgPSBgJHtyZWFkYWJsZURhdGVNb250aH1gXHJcbiAgICByZXR1cm4gZmluYWxEYXRlVGltZVZhbHVlXHJcbiAgfVxyXG5cclxuICBjb21wYXJlRGF0ZShzdGFydERhdGU6IGFueSkge1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItdGVtcGxhdGVcclxuICAgIGNvbnN0IGRheSA9ICAoJzAnICsgKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpKSkuc2xpY2UoLTIpXHJcbiAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLXRlbXBsYXRlXHJcbiAgICBjb25zdCBtb250aCA9ICgnMCcgKyAobm93LmdldE1vbnRoKCkgKyAxKSkuc2xpY2UoLTIpXHJcbiAgICBjb25zdCB0b2RheXNkYXRlID0gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YFxyXG4gICAgaWYgKHN0YXJ0RGF0ZSA9PT0gdG9kYXlzZGF0ZSkgIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgY3VzdG9tRGF0ZUZvcm1hdChkYXRlOiBhbnksIHRpbWU6IGFueSkge1xyXG4gICAgY29uc3Qgc3RpbWUgPSB0aW1lLnNwbGl0KCcrJylbMF1cclxuICAgIGNvbnN0IGhvdXIgPSBzdGltZS5zdWJzdHIoMCwgMilcclxuICAgIGNvbnN0IG1pbiA9IHN0aW1lLnN1YnN0cigyLCAzKVxyXG4gICAgcmV0dXJuIGAke2RhdGV9ICR7aG91cn0ke21pbn1gXHJcbiB9XHJcbiBzb3J0SXRlbUJ5VGltZShldmVudHNkYXRhOiBhbnkpIHtcclxuICByZXR1cm4gZXZlbnRzZGF0YS5zb3J0KChhOmFueSwgYjphbnkpPT4ge1xyXG4gICAgY29uc3QgZmlyc3REYXRlOiBhbnkgPSBuZXcgRGF0ZShhLmV2ZW50RGF0ZSlcclxuICAgICAgY29uc3Qgc2Vjb25kRGF0ZTogYW55ID0gbmV3IERhdGUoYi5ldmVudERhdGUpXHJcbiAgICAgIHJldHVybiAgc2Vjb25kRGF0ZSA+IGZpcnN0RGF0ZSAgPyAxIDogLTFcclxuICB9KTtcclxufVxyXG5zb3J0SXRlbUJ5VGltZUFzYyhldmVudHNkYXRhOiBhbnkpIHtcclxuICByZXR1cm4gZXZlbnRzZGF0YS5zb3J0KChhOmFueSwgYjphbnkpPT4ge1xyXG4gICAgY29uc3QgZmlyc3REYXRlOiBhbnkgPSBuZXcgRGF0ZShhLmV2ZW50RGF0ZSlcclxuICAgICAgY29uc3Qgc2Vjb25kRGF0ZTogYW55ID0gbmV3IERhdGUoYi5ldmVudERhdGUpXHJcbiAgICAgIHJldHVybiAgc2Vjb25kRGF0ZSA8IGZpcnN0RGF0ZSAgPyAxIDogLTFcclxuICB9KTtcclxufVxyXG5cclxuXHJcbiBzZXRFdmVudExpc3REYXRhKGV2ZW50T2JqOiBhbnkpIHtcclxuICBpZiAoZXZlbnRPYmogIT09IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy50b2RheXNFdmVudHMgPSBbXVxyXG4gICAgdGhpcy50b2RheXNMaXZlRXZlbnRzID0gW11cclxuICAgIGNvbnN0IGRhdGEgPSBldmVudE9ialxyXG4gICAgbGV0IGlzRXZlbnRMaXZlIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICBsZXQgaXNFdmVudFJlY29yZGluZyA6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICAgbGV0IGlzRXZlbnRQYXN0IDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICBsZXQgaXNFdmVudEZ1dHVyZSA6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICAvLyBjb25zb2xlLmxvZygnc3RyaXAgY29tcCcsIGRhdGEpXHJcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIFxyXG4gICAgICBpc0V2ZW50UmVjb3JkaW5nID0gZmFsc2VcclxuICAgICAgaXNFdmVudExpdmUgPSBmYWxzZVxyXG4gICAgICBpc0V2ZW50UGFzdCA9IGZhbHNlXHJcbiAgICAgIGlzRXZlbnRGdXR1cmUgPSBmYWxzZVxyXG4gICAgICBjb25zdCBvYmogPSBkYXRhW2luZGV4XVxyXG4gICAgICBjb25zdCBmbG9vciA9IE1hdGguZmxvb3JcclxuICAgICAgY29uc3QgaG91cnMgPSBmbG9vcihvYmouZHVyYXRpb24gLyA2MClcclxuICAgICAgY29uc3QgbWludXRlcyA9IG9iai5kdXJhdGlvbiAlIDYwXHJcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gKGhvdXJzID09PSAwKSA/ICgobWludXRlcyA9PT0gMCkgPyAnLS0tJyA6IGAke21pbnV0ZXN9IG1pbnV0ZXNgKSA6IChtaW51dGVzID09PSAwKSA/IChob3VycyA9PT0gMSkgP1xyXG4gICAgICAgIGAke2hvdXJzfSBob3VyYCA6IGAke2hvdXJzfSBob3Vyc2AgOiAoaG91cnMgPT09IDEpID8gYCR7aG91cnN9IGhvdXIgJHttaW51dGVzfSBtaW51dGVzYCA6XHJcbiAgICAgICAgYCR7aG91cnN9IGhvdXJzICR7bWludXRlc30gbWludXRlc2BcclxuICAgICAgY29uc3QgY3JlYXRvcmRhdGEgPSBvYmouY3JlYXRvckRldGFpbHMgIT09IHVuZGVmaW5lZCA/IG9iai5jcmVhdG9yRGV0YWlscyA6IFtdXHJcbiAgICAgIGNvbnN0IHN0ciA9IGNyZWF0b3JkYXRhICYmIGNyZWF0b3JkYXRhLmxlbmd0aCA+IDAgPyBjcmVhdG9yZGF0YS5yZXBsYWNlKC9cXFxcL2csICcnKSA6IFtdXHJcbiAgICAgIGNvbnN0IGNyZWF0b3JEZXRhaWxzID0gc3RyICYmIHN0ci5sZW5ndGggPiAwID8gSlNPTi5wYXJzZShzdHIpIDogY3JlYXRvcmRhdGFcclxuXHJcbiAgICAgIGNvbnN0IHN0aW1lID0gb2JqLnN0YXJ0VGltZS5zcGxpdCgnKycpWzBdXHJcbiAgICAgIGNvbnN0IGhvdXIgPSBzdGltZS5zdWJzdHIoMCwgMilcclxuICAgICAgY29uc3QgbWluID0gc3RpbWUuc3Vic3RyKDIsIDMpXHJcbiAgICAgIGNvbnN0IHN0YXJ0dGltZSA9IGAke2hvdXJ9JHttaW59YFxyXG5cclxuICAgICAgY29uc3QgZXRpbWUgPSBvYmouZW5kVGltZS5zcGxpdCgnKycpWzBdXHJcbiAgICAgIGNvbnN0IGVob3VyID0gZXRpbWUuc3Vic3RyKDAsIDIpXHJcbiAgICAgIGNvbnN0IGVtaW4gPSBldGltZS5zdWJzdHIoMiwgMylcclxuICAgICAgY29uc3QgZW5kdGltZSA9IGAke2Vob3VyfSR7ZW1pbn1gXHJcbiAgICAgIGNvbnN0IGV2ZW50RGF0ZSA9IHRoaXMuY3VzdG9tRGF0ZUZvcm1hdChvYmouc3RhcnREYXRlLCBvYmouc3RhcnRUaW1lKVxyXG4gICAgICBjb25zdCBldmVudGVuZERhdGUgPSB0aGlzLmN1c3RvbURhdGVGb3JtYXQob2JqLmVuZERhdGUsIG9iai5lbmRUaW1lKVxyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXHJcbiAgICAgIGNvbnN0IHRvZGF5ID0gbW9tZW50KG5vdykuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tJylcclxuICAgICAgaWYgKG1vbWVudCh0b2RheSkuaXNCZXR3ZWVuKGV2ZW50RGF0ZSwgZXZlbnRlbmREYXRlKSkge1xyXG4gICAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSBmYWxzZVxyXG4gICAgICAgIGlzRXZlbnRMaXZlID0gdHJ1ZVxyXG4gICAgICAgIGlmICh0b2RheSA+PSBldmVudGVuZERhdGUpIHtcclxuICAgICAgICAgIGlmIChvYmoucmVjb3JkZWRMaW5rcyAmJiBvYmoucmVjb3JkZWRMaW5rcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSB0cnVlXHJcbiAgICAgICAgICAgIGlzRXZlbnRMaXZlID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodG9kYXkgPj0gZXZlbnRlbmREYXRlKSB7XHJcbiAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IHRydWVcclxuICAgICAgICBpc0V2ZW50TGl2ZSA9IGZhbHNlXHJcbiAgICAgICAgaWYobW9tZW50KHRvZGF5KS5pc0FmdGVyKGV2ZW50ZW5kRGF0ZSkgJiYgbW9tZW50KHRvZGF5KS5pc0FmdGVyKGV2ZW50RGF0ZSkpIHtcclxuICAgICAgICAgIGlzRXZlbnRQYXN0ID0gdHJ1ZVxyXG4gICAgICAgIH0gXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYobW9tZW50KHRvZGF5KS5pc0JlZm9yZShldmVudERhdGUpICYmIG1vbWVudCh0b2RheSkuaXNCZWZvcmUoZXZlbnRlbmREYXRlKSkge1xyXG4gICAgICAgICAgaXNFdmVudEZ1dHVyZSA9IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZXZlbnREYXRhT2JqID0ge1xyXG4gICAgICAgIGV2ZW50RGF0ZSxcclxuICAgICAgICBldmVudGVuZERhdGUsXHJcbiAgICAgICAgaXNFdmVudExpdmUsXHJcbiAgICAgICAgaXNFdmVudEZ1dHVyZSxcclxuICAgICAgICBpc0V2ZW50UGFzdCxcclxuICAgICAgICBpc0V2ZW50UmVjb3JkaW5nLFxyXG4gICAgICAgIGV2ZW50OiBvYmosXHJcbiAgICAgICAgZXZlbnROYW1lOiBvYmoubmFtZSxcclxuICAgICAgICBldmVudFN0YXJ0VGltZTogc3RhcnR0aW1lLFxyXG4gICAgICAgIGV2ZW50RW5kVGltZTogZW5kdGltZSxcclxuICAgICAgICBldmVudFN0YXJ0RGF0ZTogb2JqLnN0YXJ0RGF0ZSxcclxuICAgICAgICBldmVudENyZWF0ZWRPbjogdGhpcy5hbGxFdmVudERhdGVGb3JtYXQob2JqLmNyZWF0ZWRPbiksXHJcbiAgICAgICAgZXZlbnREdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgZXZlbnRqb2luZWQ6IGNyZWF0b3JEZXRhaWxzLmxlbmd0aCxcclxuICAgICAgICBldmVudFRodW1ibmFpbDogb2JqLmFwcEljb24gJiYgKG9iai5hcHBJY29uICE9PSBudWxsIHx8IG9iai5hcHBJY29uICE9PSB1bmRlZmluZWQpID9cclxuICAgICAgICAgIHRoaXMuZ2V0UHVibGljVXJsKG9iai5hcHBJY29uKSA6XHJcbiAgICAgICAgICAnL2Fzc2V0cy9pY29ucy9FdmVudHNfZGVmYXVsdC5wbmcnLFxyXG4gICAgICAgIHBhc3RldmVudDogZmFsc2UsXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaXNUb2RheSA9IHRoaXMuY29tcGFyZURhdGUob2JqLnN0YXJ0RGF0ZSlcclxuICAgICAgaWYgKGlzVG9kYXkpIHtcclxuICAgICAgICB0aGlzLnRvZGF5c0V2ZW50cy5wdXNoKGV2ZW50RGF0YU9iailcclxuICAgICAgfVxyXG4gICAgICBpZihpc1RvZGF5ICYmIGlzRXZlbnRMaXZlKSB7XHJcbiAgICAgICAgdGhpcy50b2RheXNMaXZlRXZlbnRzLnB1c2goZXZlbnREYXRhT2JqKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudG9kYXlzTGl2ZUV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWUodGhpcy50b2RheXNMaXZlRXZlbnRzKVxyXG4gICAgdGhpcy50b2RheXNFdmVudHMgPSB0aGlzLmdldFRvZGF5c0V2ZW50cyh0aGlzLnRvZGF5c0V2ZW50cylcclxuICB9XHJcbiAgfVxyXG4gIGdldFRvZGF5c0V2ZW50cyhldmVudERhdGE6IGFueSkge1xyXG4gICAgbGV0IGxpdmVFdmVudHM6IGFueSA9IFtdXHJcbiAgICBsZXQgcGFzdEV2ZW50czogYW55ID0gW11cclxuICAgIGxldCBmdXR1cmVFdmVudHM6IGFueSA9IFtdXHJcblxyXG4gICAgbGl2ZUV2ZW50cyA9IHRoaXMudG9kYXlzTGl2ZUV2ZW50c1xyXG4gICAgcGFzdEV2ZW50cyA9IGV2ZW50RGF0YS5maWx0ZXIoKHBhc3RFdmVudDogYW55KSA9PiBwYXN0RXZlbnQuaXNFdmVudFBhc3QpXHJcbiAgICBmdXR1cmVFdmVudHMgPSBldmVudERhdGEuZmlsdGVyKChmdXR1cmVFdmVudDogYW55KSA9PiBmdXR1cmVFdmVudC5pc0V2ZW50RnV0dXJlKVxyXG4gICAgbGl2ZUV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWVBc2MobGl2ZUV2ZW50cylcclxuICAgIGZ1dHVyZUV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWVBc2MoZnV0dXJlRXZlbnRzKVxyXG4gICAgcGFzdEV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWUocGFzdEV2ZW50cylcclxuICAgIHRoaXMudG9kYXlzRXZlbnRzICA9IFsuLi5saXZlRXZlbnRzLCAuLi5mdXR1cmVFdmVudHMsIC4uLnBhc3RFdmVudHNdXHJcbiAgICBcclxuICAgIHJldHVybiB0aGlzLnRvZGF5c0V2ZW50c1xyXG4gIH1cclxuICBcclxufVxyXG4iXX0=
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVsRCxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUE7QUFDdEIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFBOzs7QUFJM0IsTUFBTSxPQUFPLFlBQVk7SUFrQnZCLFlBQ3lCLFdBQWdCLEVBQy9CLFVBQTBCO1FBQTFCLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBbkJwQyxpQkFBWSxHQUFRLEVBQUUsQ0FBQTtRQUN0QixxQkFBZ0IsR0FBUSxFQUFFLENBQUE7UUFDMUIscUJBQWdCLEdBQVEsRUFBRSxDQUFBO1FBRWxCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDdkQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFMUMseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDOUQsbUJBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFeEQsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDL0Qsb0JBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFMUQsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQTtRQUN6RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMs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O1lBQzVCLFVBQVUsR0FBUSxFQUFFO1lBQ3BCLFVBQVUsR0FBUSxFQUFFO1lBQ3BCLFlBQVksR0FBUSxFQUFFO1FBRTFCLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUE7UUFDbEMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUMsQ0FBQTtRQUN4RSxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBQyxDQUFDLFdBQWdCLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUMsQ0FBQTtRQUNoRixVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQy9DLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDbkQsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxVQUFVLENBQUMsQ0FBQTtRQUV2RSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQTtJQUM5QixDQUFDOzs7WUFyVkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7NENBb0JJLE1BQU0sU0FBQyxhQUFhO1lBMUJoQixjQUFjOzs7O0lBUXJCLG9DQUFzQjtJQUN0Qix3Q0FBMEI7SUFDMUIsd0NBQTBCO0lBRTFCLHFDQUE4RDtJQUM5RCwrQkFBa0Q7SUFFbEQsNENBQXFFO0lBQ3JFLHNDQUFnRTtJQUVoRSw2Q0FBc0U7SUFDdEUsdUNBQWtFO0lBRWxFLHVDQUFnRTtJQUNoRSxvQ0FBeUQ7SUFFekQsbUNBQWdCO0lBR2Qsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IFdzRXZlbnRzIH0gZnJvbSAnLi9ldmVudC5tb2RlbCdcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuL3V0aWxpdHkuc2VydmljZSdcclxuLyogdHNsaW50OmRpc2FibGUqL1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXZlbnRTZXJ2aWNlIHtcclxuICB0b2RheXNFdmVudHM6IGFueSA9IFtdXHJcbiAgdG9kYXlzTGl2ZUV2ZW50czogYW55ID0gW11cclxuICBrZXlTcGVha2VyRXZlbnRzOiBhbnkgPSBbXVxyXG5cclxuICBwcml2YXRlIGV2ZW50c1N1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBldmVudHMkID0gdGhpcy5ldmVudHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIHByaXZhdGUgZXZlbnRzQ2hhdGJvdFN1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBjaGF0Ym90RXZlbnRzJCA9IHRoaXMuZXZlbnRzQ2hhdGJvdFN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgcHJpdmF0ZSBldmVudHNHZXRTdGFydFN1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBnZXRTdGFydEV2ZW50cyQgPSB0aGlzLmV2ZW50c0dldFN0YXJ0U3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cclxuICBwcml2YXRlIGV2ZW50c1BSU3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGdldFBSRXZlbnRzJCA9IHRoaXMuZXZlbnRzUFJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIGVudmlyb25tZW50OiBhbnlcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVN2YzogVXRpbGl0eVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnRcclxuICAgIC8vIHRoaXMuZm9jdXNDaGFuZ2VFdmVudExpc3RlbmVyKClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoRXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgZXZlbnQucGFnZUNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoZXZlbnQucGFnZUNvbnRleHQpXHJcbiAgICB0aGlzLmV2ZW50c1N1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoQ2hhdGJvdEV2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIHRoaXMuZXZlbnRzQ2hhdGJvdFN1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoR2V0U3RhcnRlZEV2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIHRoaXMuZXZlbnRzR2V0U3RhcnRTdWJqZWN0Lm5leHQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaFBsYXRmb3JtUmF0aW5nRXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgdGhpcy5ldmVudHNQUlN1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG5cclxuICAvLyBoZWxwZXIgZnVuY3Rpb25zXHJcbiAgcmFpc2VJbnRlcmFjdFRlbGVtZXRyeShlZGF0YTogV3NFdmVudHMuSVRlbGVtZXRyeUVkYXRhLCBvYmplY3Q6IGFueSwgcGFnZUNvbnRleHQ/OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0Pih7XHJcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxyXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGVkYXRhLFxyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBwYWdlQ29udGV4dDogdGhpcy5nZXRDb250ZXh0KHBhZ2VDb250ZXh0KSxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxyXG4gICAgICB9LFxyXG4gICAgICBmcm9tOiAnJyxcclxuICAgICAgdG86ICdUZWxlbWV0cnknLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJhaXNlRmVlZGJhY2tUZWxlbWV0cnkoZWRhdGE6IFdzRXZlbnRzLklUZWxlbWV0cnlFZGF0YSwgb2JqZWN0OiBhbnksIGZyb20/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0Pih7XHJcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxyXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGVkYXRhLFxyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkZlZWRiYWNrLFxyXG4gICAgICB9LFxyXG4gICAgICBmcm9tOiBmcm9tIHx8ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gUmFpc2UgY3VzdG9tIGltcHJlc3Npb24gZXZlbnRzIGVnOm9uIHRhYiBjaGFuZ2VcclxuICByYWlzZUN1c3RvbUltcHJlc3Npb24ob2JqZWN0OiBhbnksIHBhZ2VDb250ZXh0PzogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0KSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbXByZXNzaW9uPih7XHJcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxyXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBwYWdlQ29udGV4dDogdGhpcy5nZXRDb250ZXh0KHBhZ2VDb250ZXh0KSxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkltcHJlc3Npb24sXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBmb2N1c0NoYW5nZUV2ZW50TGlzdGVuZXIoKSB7XHJcbiAgLy8gICBmcm9tRXZlbnQod2luZG93LCAnZm9jdXMnKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoJ2ZvY3VzJywgJ2dhaW5lZCcsIHt9KVxyXG4gIC8vICAgfSlcclxuICAvLyAgIGZyb21FdmVudCh3aW5kb3csICdibHVyJykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KCdmb2N1cycsICdsb3N0Jywge30pXHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gTWV0aG9kIHRvIGdldCB0aGUgY29udGV4dCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGVsZW1ldHJ5IGludGVyYWN0IGV2ZW50XHJcbiAgcHJpdmF0ZSBnZXRDb250ZXh0KHBhZ2VDb250ZXh0OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQgfCB1bmRlZmluZWQpOiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQge1xyXG4gICAgY29uc3Qgcm91dGVEYXRhQ29udGV4dCA9IHRoaXMudXRpbGl0eVN2Yy5yb3V0ZURhdGFcclxuICAgIC8vIGluaXRpYWxpemUgd2l0aCB0aGUgcm91dGUgZGF0YSBjb25maWd1cmF0aW9uIC0gY3VycmVudCByb3V0ZSdzIHBhZ2VJRCAmIG1vZHVsZVxyXG4gICAgY29uc3QgZmluYWxDb250ZXh0OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQgPSB7XHJcbiAgICAgIHBhZ2VJZDogcm91dGVEYXRhQ29udGV4dC5wYWdlSWQsXHJcbiAgICAgIG1vZHVsZTogcm91dGVEYXRhQ29udGV4dC5tb2R1bGUsXHJcbiAgICB9XHJcbiAgICBpZiAocGFnZUNvbnRleHQpIHtcclxuICAgICAgLy8gaWYgY29udGV4dCBoYXMgcGFnZUlkRXh0LCBhcHBlbmQgaXQgdG8gdGhlIHJvdXRlJ3MgcGFnZUlkXHJcbiAgICAgIGlmIChwYWdlQ29udGV4dC5wYWdlSWRFeHQpIHtcclxuICAgICAgICBmaW5hbENvbnRleHQucGFnZUlkID0gYCR7cm91dGVEYXRhQ29udGV4dC5wYWdlSWR9XyR7cGFnZUNvbnRleHQucGFnZUlkRXh0fWBcclxuICAgICAgfSBlbHNlIGlmIChwYWdlQ29udGV4dC5wYWdlSWQpIHtcclxuICAgICAgICAvLyBlbHNlIGNvbnRleHQgaGFzIHBhZ2VJZCwgb3ZlcnJpZGUgaXQgdG8gdGhlIGZpbmFsIHBhZ2VJRFxyXG4gICAgICAgIGZpbmFsQ29udGV4dC5wYWdlSWQgPSBwYWdlQ29udGV4dC5wYWdlSWRcclxuICAgICAgfVxyXG4gICAgICAvLyBpZiBjb250ZXh0IGhhcyBtb2R1bGUsIG92ZXJyaWRlIGl0IHRvIHRoZSBmaW5hbCBtb2R1bGVcclxuICAgICAgaWYgKHBhZ2VDb250ZXh0Lm1vZHVsZSkge1xyXG4gICAgICAgIGZpbmFsQ29udGV4dC5tb2R1bGUgPSBwYWdlQ29udGV4dC5tb2R1bGVcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaW5hbENvbnRleHRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVUYWJUZWxlbWV0cnkoc3ViVHlwZTogc3RyaW5nLCBkYXRhOiBXc0V2ZW50cy5JVGVsZW1ldHJ5VGFiRGF0YSwgb2JqZWN0PzogYW55KSB7XHJcbiAgICAvLyByYWlzZSBhIHRhYiBjbGljayBpbnRlcmFjdCBldmVudFxyXG4gICAgdGhpcy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxyXG4gICAgICB7XHJcbiAgICAgICAgc3ViVHlwZSxcclxuICAgICAgICB0eXBlOiBXc0V2ZW50cy5FbnVtSW50ZXJhY3RUeXBlcy5DTElDSyxcclxuICAgICAgICBpZDogYCR7Xy5jYW1lbENhc2UoZGF0YS5sYWJlbCl9LXRhYmAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICAvLyBjb250ZXh0OiB7XHJcbiAgICAgICAgLy8gICBwb3NpdGlvbjogZGF0YS5pbmRleCxcclxuICAgICAgICAvLyB9LFxyXG4gICAgICAgIC4uLm9iamVjdFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcGFnZUlkRXh0OiBgJHtfLmNhbWVsQ2FzZShkYXRhLmxhYmVsKX0tdGFiYCxcclxuICAgICAgfSlcclxuXHJcbiAgICAvLyByYWlzZSBhIHRhYiBjbGljayBpbXByZXNzaW9uIGV2ZW50XHJcbiAgICB0aGlzLnJhaXNlQ3VzdG9tSW1wcmVzc2lvbih7XHJcbiAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICBwb3NpdGlvbjogZGF0YS5pbmRleCxcclxuICAgICAgfSxcclxuICAgICAgLi4ub2JqZWN0XHJcbiAgICB9LCB7XHJcbiAgICAgIHBhZ2VJZEV4dDogYCR7Xy5jYW1lbENhc2UoZGF0YS5sYWJlbCl9LXRhYmAsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0UHVibGljVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1haW5VcmwgPSB1cmwuc3BsaXQoJy9jb250ZW50JykucG9wKCkgfHwgJydcclxuICAgIHJldHVybiBgJHt0aGlzLmVudmlyb25tZW50LmNvbnRlbnRIb3N0fS8ke3RoaXMuZW52aXJvbm1lbnQuY29udGVudEJ1Y2tldH0vY29udGVudCR7bWFpblVybH1gXHJcbiAgfVxyXG5cclxuICBhbGxFdmVudERhdGVGb3JtYXQoZGF0ZXRpbWU6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXREYXRlKClcclxuICAgIGNvbnN0IHllYXIgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0RnVsbFllYXIoKVxyXG4gICAgY29uc3QgbW9udGggPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0TW9udGgoKVxyXG4gICAgY29uc3QgaG91cnMgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0SG91cnMoKVxyXG4gICAgY29uc3QgbWludXRlcyA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRNaW51dGVzKClcclxuICAgIGNvbnN0IHNlY29uZHMgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0U2Vjb25kcygpXHJcbiAgICBjb25zdCBmb3JtYXRlZERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIDApXHJcbiAgICAvLyBsZXQgZm9ybWF0ID0gJ1lZWVktTU0tREQgaGg6bW0gYSdcclxuICAgIC8vIGlmICghdGltZUFsbG93KSB7XHJcbiAgICBjb25zdCBmb3JtYXQgPSAnWVlZWS1NTS1ERCdcclxuICAgIC8vIH1cclxuICAgIGNvbnN0IHJlYWRhYmxlRGF0ZU1vbnRoID0gbW9tZW50KGZvcm1hdGVkRGF0ZSkuZm9ybWF0KGZvcm1hdClcclxuICAgIGNvbnN0IGZpbmFsRGF0ZVRpbWVWYWx1ZSA9IGAke3JlYWRhYmxlRGF0ZU1vbnRofWBcclxuICAgIHJldHVybiBmaW5hbERhdGVUaW1lVmFsdWVcclxuICB9XHJcblxyXG4gIGNvbXBhcmVEYXRlKHN0YXJ0RGF0ZTogYW55KSB7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci10ZW1wbGF0ZVxyXG4gICAgY29uc3QgZGF5ID0gKCcwJyArIChuZXcgRGF0ZSgpLmdldERhdGUoKSkpLnNsaWNlKC0yKVxyXG4gICAgY29uc3QgeWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKVxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci10ZW1wbGF0ZVxyXG4gICAgY29uc3QgbW9udGggPSAoJzAnICsgKG5vdy5nZXRNb250aCgpICsgMSkpLnNsaWNlKC0yKVxyXG4gICAgY29uc3QgdG9kYXlzZGF0ZSA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWBcclxuICAgIGlmIChzdGFydERhdGUgPT09IHRvZGF5c2RhdGUpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgY3VzdG9tRGF0ZUZvcm1hdChkYXRlOiBhbnksIHRpbWU6IGFueSkge1xyXG4gICAgY29uc3Qgc3RpbWUgPSB0aW1lLnNwbGl0KCcrJylbMF1cclxuICAgIGNvbnN0IGhvdXIgPSBzdGltZS5zdWJzdHIoMCwgMilcclxuICAgIGNvbnN0IG1pbiA9IHN0aW1lLnN1YnN0cigyLCAzKVxyXG4gICAgcmV0dXJuIGAke2RhdGV9ICR7aG91cn0ke21pbn1gXHJcbiAgfVxyXG4gIHNvcnRJdGVtQnlUaW1lKGV2ZW50c2RhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIGV2ZW50c2RhdGEuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZmlyc3REYXRlOiBhbnkgPSBuZXcgRGF0ZShhLmV2ZW50RGF0ZSlcclxuICAgICAgY29uc3Qgc2Vjb25kRGF0ZTogYW55ID0gbmV3IERhdGUoYi5ldmVudERhdGUpXHJcbiAgICAgIHJldHVybiBzZWNvbmREYXRlID4gZmlyc3REYXRlID8gMSA6IC0xXHJcbiAgICB9KVxyXG4gIH1cclxuICBzb3J0SXRlbUJ5VGltZUFzYyhldmVudHNkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiBldmVudHNkYXRhLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpcnN0RGF0ZTogYW55ID0gbmV3IERhdGUoYS5ldmVudERhdGUpXHJcbiAgICAgIGNvbnN0IHNlY29uZERhdGU6IGFueSA9IG5ldyBEYXRlKGIuZXZlbnREYXRlKVxyXG4gICAgICByZXR1cm4gc2Vjb25kRGF0ZSA8IGZpcnN0RGF0ZSA/IDEgOiAtMVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuICBzZXRFdmVudExpc3REYXRhKGV2ZW50T2JqOiBhbnkpIHtcclxuICAgIGlmIChldmVudE9iaiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMudG9kYXlzRXZlbnRzID0gW11cclxuICAgICAgdGhpcy50b2RheXNMaXZlRXZlbnRzID0gW11cclxuICAgICAgdGhpcy5rZXlTcGVha2VyRXZlbnRzID0gW11cclxuICAgICAgY29uc3QgZGF0YSA9IGV2ZW50T2JqXHJcbiAgICAgIGxldCBpc0V2ZW50TGl2ZTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICAgIGxldCBpc0V2ZW50UmVjb3JkaW5nOiBib29sZWFuID0gZmFsc2VcclxuICAgICAgbGV0IGlzRXZlbnRQYXN0OiBib29sZWFuID0gZmFsc2VcclxuICAgICAgbGV0IGlzRXZlbnRGdXR1cmU6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICAgICAvLyBjb25zb2xlLmxvZygnc3RyaXAgY29tcCcsIGRhdGEpXHJcbiAgICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGluZGV4OiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IGZhbHNlXHJcbiAgICAgICAgaXNFdmVudExpdmUgPSBmYWxzZVxyXG4gICAgICAgIGlzRXZlbnRQYXN0ID0gZmFsc2VcclxuICAgICAgICBpc0V2ZW50RnV0dXJlID0gZmFsc2VcclxuICAgICAgICBjb25zdCBvYmogPSBkYXRhW2luZGV4XVxyXG4gICAgICAgIGNvbnN0IGZsb29yID0gTWF0aC5mbG9vclxyXG4gICAgICAgIGNvbnN0IGhvdXJzID0gZmxvb3Iob2JqLmR1cmF0aW9uIC8gNjApXHJcbiAgICAgICAgY29uc3QgbWludXRlcyA9IG9iai5kdXJhdGlvbiAlIDYwXHJcbiAgICAgICAgY29uc3QgZHVyYXRpb24gPSAoaG91cnMgPT09IDApID8gKChtaW51dGVzID09PSAwKSA/ICctLS0nIDogYCR7bWludXRlc30gbWludXRlc2ApIDogKG1pbnV0ZXMgPT09IDApID8gKGhvdXJzID09PSAxKSA/XHJcbiAgICAgICAgICBgJHtob3Vyc30gaG91cmAgOiBgJHtob3Vyc30gaG91cnNgIDogKGhvdXJzID09PSAxKSA/IGAke2hvdXJzfSBob3VyICR7bWludXRlc30gbWludXRlc2AgOlxyXG4gICAgICAgICAgYCR7aG91cnN9IGhvdXJzICR7bWludXRlc30gbWludXRlc2BcclxuICAgICAgICBjb25zdCBjcmVhdG9yZGF0YSA9IG9iai5jcmVhdG9yRGV0YWlscyAhPT0gdW5kZWZpbmVkID8gb2JqLmNyZWF0b3JEZXRhaWxzIDogW11cclxuICAgICAgICBjb25zdCBzdHIgPSBjcmVhdG9yZGF0YSAmJiBjcmVhdG9yZGF0YS5sZW5ndGggPiAwID8gY3JlYXRvcmRhdGEucmVwbGFjZSgvXFxcXC9nLCAnJykgOiBbXVxyXG4gICAgICAgIGNvbnN0IGNyZWF0b3JEZXRhaWxzID0gc3RyICYmIHN0ci5sZW5ndGggPiAwID8gSlNPTi5wYXJzZShzdHIpIDogY3JlYXRvcmRhdGFcclxuXHJcbiAgICAgICAgY29uc3Qgc3RpbWUgPSBvYmouc3RhcnRUaW1lLnNwbGl0KCcrJylbMF1cclxuICAgICAgICBjb25zdCBob3VyID0gc3RpbWUuc3Vic3RyKDAsIDIpXHJcbiAgICAgICAgY29uc3QgbWluID0gc3RpbWUuc3Vic3RyKDIsIDMpXHJcbiAgICAgICAgY29uc3Qgc3RhcnR0aW1lID0gYCR7aG91cn0ke21pbn1gXHJcblxyXG4gICAgICAgIGNvbnN0IGV0aW1lID0gb2JqLmVuZFRpbWUuc3BsaXQoJysnKVswXVxyXG4gICAgICAgIGNvbnN0IGVob3VyID0gZXRpbWUuc3Vic3RyKDAsIDIpXHJcbiAgICAgICAgY29uc3QgZW1pbiA9IGV0aW1lLnN1YnN0cigyLCAzKVxyXG4gICAgICAgIGNvbnN0IGVuZHRpbWUgPSBgJHtlaG91cn0ke2VtaW59YFxyXG4gICAgICAgIGNvbnN0IGV2ZW50RGF0ZSA9IHRoaXMuY3VzdG9tRGF0ZUZvcm1hdChvYmouc3RhcnREYXRlLCBvYmouc3RhcnRUaW1lKVxyXG4gICAgICAgIGNvbnN0IGV2ZW50ZW5kRGF0ZSA9IHRoaXMuY3VzdG9tRGF0ZUZvcm1hdChvYmouZW5kRGF0ZSwgb2JqLmVuZFRpbWUpXHJcbiAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxyXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gbW9tZW50KG5vdykuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tJylcclxuICAgICAgICBpZiAobW9tZW50KHRvZGF5KS5pc0JldHdlZW4oZXZlbnREYXRlLCBldmVudGVuZERhdGUpKSB7XHJcbiAgICAgICAgICBpc0V2ZW50UmVjb3JkaW5nID0gZmFsc2VcclxuICAgICAgICAgIGlzRXZlbnRMaXZlID0gdHJ1ZVxyXG4gICAgICAgICAgaWYgKHRvZGF5ID49IGV2ZW50ZW5kRGF0ZSkge1xyXG4gICAgICAgICAgICBpZiAob2JqLnJlY29yZGVkTGlua3MgJiYgb2JqLnJlY29yZGVkTGlua3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSB0cnVlXHJcbiAgICAgICAgICAgICAgaXNFdmVudExpdmUgPSBmYWxzZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0b2RheSA+PSBldmVudGVuZERhdGUpIHtcclxuICAgICAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSB0cnVlXHJcbiAgICAgICAgICBpc0V2ZW50TGl2ZSA9IGZhbHNlXHJcbiAgICAgICAgICBpZiAobW9tZW50KHRvZGF5KS5pc0FmdGVyKGV2ZW50ZW5kRGF0ZSkgJiYgbW9tZW50KHRvZGF5KS5pc0FmdGVyKGV2ZW50RGF0ZSkpIHtcclxuICAgICAgICAgICAgaXNFdmVudFBhc3QgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChtb21lbnQodG9kYXkpLmlzQmVmb3JlKGV2ZW50RGF0ZSkgJiYgbW9tZW50KHRvZGF5KS5pc0JlZm9yZShldmVudGVuZERhdGUpKSB7XHJcbiAgICAgICAgICAgIGlzRXZlbnRGdXR1cmUgPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YU9iaiA9IHtcclxuICAgICAgICAgIGV2ZW50RGF0ZSxcclxuICAgICAgICAgIGV2ZW50ZW5kRGF0ZSxcclxuICAgICAgICAgIGlzRXZlbnRMaXZlLFxyXG4gICAgICAgICAgaXNFdmVudEZ1dHVyZSxcclxuICAgICAgICAgIGlzRXZlbnRQYXN0LFxyXG4gICAgICAgICAgaXNFdmVudFJlY29yZGluZyxcclxuICAgICAgICAgIGV2ZW50OiBvYmosXHJcbiAgICAgICAgICBldmVudE5hbWU6IG9iai5uYW1lLFxyXG4gICAgICAgICAgZXZlbnRTdGFydFRpbWU6IHN0YXJ0dGltZSxcclxuICAgICAgICAgIGV2ZW50RW5kVGltZTogZW5kdGltZSxcclxuICAgICAgICAgIGV2ZW50U3RhcnREYXRlOiBvYmouc3RhcnREYXRlLFxyXG4gICAgICAgICAgZXZlbnRDcmVhdGVkT246IHRoaXMuYWxsRXZlbnREYXRlRm9ybWF0KG9iai5jcmVhdGVkT24pLFxyXG4gICAgICAgICAgZXZlbnREdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgICBldmVudGpvaW5lZDogY3JlYXRvckRldGFpbHMubGVuZ3RoLFxyXG4gICAgICAgICAgZXZlbnRUaHVtYm5haWw6IG9iai5hcHBJY29uICYmIChvYmouYXBwSWNvbiAhPT0gbnVsbCB8fCBvYmouYXBwSWNvbiAhPT0gdW5kZWZpbmVkKSA/XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UHVibGljVXJsKG9iai5hcHBJY29uKSA6XHJcbiAgICAgICAgICAgICcvYXNzZXRzL2ljb25zL0V2ZW50c19kZWZhdWx0LnBuZycsXHJcbiAgICAgICAgICBwYXN0ZXZlbnQ6IGZhbHNlLFxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBpc1RvZGF5ID0gdGhpcy5jb21wYXJlRGF0ZShvYmouc3RhcnREYXRlKVxyXG4gICAgICAgIGlmIChpc1RvZGF5KSB7XHJcbiAgICAgICAgICB0aGlzLnRvZGF5c0V2ZW50cy5wdXNoKGV2ZW50RGF0YU9iailcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzVG9kYXkgJiYgaXNFdmVudExpdmUpIHtcclxuICAgICAgICAgIHRoaXMudG9kYXlzTGl2ZUV2ZW50cy5wdXNoKGV2ZW50RGF0YU9iailcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5rZXlTcGVha2VyRXZlbnRzLnB1c2goZXZlbnREYXRhT2JqKVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgdGhpcy50b2RheXNMaXZlRXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZSh0aGlzLnRvZGF5c0xpdmVFdmVudHMpXHJcbiAgICAgIHRoaXMua2V5U3BlYWtlckV2ZW50cyA9IHRoaXMuZ2V0S2V5U3BlYWtlckV2ZW50cyh0aGlzLmtleVNwZWFrZXJFdmVudHMpXHJcbiAgICAgIHRoaXMudG9kYXlzRXZlbnRzID0gdGhpcy5nZXRUb2RheXNFdmVudHModGhpcy50b2RheXNFdmVudHMpXHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRUb2RheXNFdmVudHMoZXZlbnREYXRhOiBhbnkpIHtcclxuICAgIGxldCBsaXZlRXZlbnRzOiBhbnkgPSBbXVxyXG4gICAgbGV0IHBhc3RFdmVudHM6IGFueSA9IFtdXHJcbiAgICBsZXQgZnV0dXJlRXZlbnRzOiBhbnkgPSBbXVxyXG5cclxuICAgIGxpdmVFdmVudHMgPSB0aGlzLnRvZGF5c0xpdmVFdmVudHNcclxuICAgIHBhc3RFdmVudHMgPSBldmVudERhdGEuZmlsdGVyKChwYXN0RXZlbnQ6IGFueSkgPT4gcGFzdEV2ZW50LmlzRXZlbnRQYXN0KVxyXG4gICAgZnV0dXJlRXZlbnRzID0gZXZlbnREYXRhLmZpbHRlcigoZnV0dXJlRXZlbnQ6IGFueSkgPT4gZnV0dXJlRXZlbnQuaXNFdmVudEZ1dHVyZSlcclxuICAgIGxpdmVFdmVudHMgPSB0aGlzLnNvcnRJdGVtQnlUaW1lQXNjKGxpdmVFdmVudHMpXHJcbiAgICBmdXR1cmVFdmVudHMgPSB0aGlzLnNvcnRJdGVtQnlUaW1lQXNjKGZ1dHVyZUV2ZW50cylcclxuICAgIHBhc3RFdmVudHMgPSB0aGlzLnNvcnRJdGVtQnlUaW1lKHBhc3RFdmVudHMpXHJcbiAgICB0aGlzLnRvZGF5c0V2ZW50cyA9IFsuLi5saXZlRXZlbnRzLCAuLi5mdXR1cmVFdmVudHMsIC4uLnBhc3RFdmVudHNdXHJcblxyXG4gICAgcmV0dXJuIHRoaXMudG9kYXlzRXZlbnRzXHJcbiAgfVxyXG5cclxuICBnZXRLZXlTcGVha2VyRXZlbnRzKGV2ZW50RGF0YTogYW55KSB7XHJcbiAgICBsZXQgbGl2ZUV2ZW50czogYW55ID0gW11cclxuICAgIGxldCBwYXN0RXZlbnRzOiBhbnkgPSBbXVxyXG4gICAgbGV0IGZ1dHVyZUV2ZW50czogYW55ID0gW11cclxuXHJcbiAgICBsaXZlRXZlbnRzID0gdGhpcy50b2RheXNMaXZlRXZlbnRzXHJcbiAgICBwYXN0RXZlbnRzID0gZXZlbnREYXRhLmZpbHRlcigocGFzdEV2ZW50OiBhbnkpID0+IHBhc3RFdmVudC5pc0V2ZW50UGFzdClcclxuICAgIGZ1dHVyZUV2ZW50cyA9IGV2ZW50RGF0YS5maWx0ZXIoKGZ1dHVyZUV2ZW50OiBhbnkpID0+IGZ1dHVyZUV2ZW50LmlzRXZlbnRGdXR1cmUpXHJcbiAgICBsaXZlRXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZUFzYyhsaXZlRXZlbnRzKVxyXG4gICAgZnV0dXJlRXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZUFzYyhmdXR1cmVFdmVudHMpXHJcbiAgICBwYXN0RXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZShwYXN0RXZlbnRzKVxyXG4gICAgdGhpcy5rZXlTcGVha2VyRXZlbnRzID0gWy4uLmxpdmVFdmVudHMsIC4uLmZ1dHVyZUV2ZW50cywgLi4ucGFzdEV2ZW50c11cclxuXHJcbiAgICByZXR1cm4gdGhpcy5rZXlTcGVha2VyRXZlbnRzXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -12,6 +12,7 @@ var EventService = (function () {
12
12
  this.utilitySvc = utilitySvc;
13
13
  this.todaysEvents = [];
14
14
  this.todaysLiveEvents = [];
15
+ this.keySpeakerEvents = [];
15
16
  this.eventsSubject = new Subject();
16
17
  this.events$ = this.eventsSubject.asObservable();
17
18
  this.eventsChatbotSubject = new Subject();
@@ -161,6 +162,7 @@ var EventService = (function () {
161
162
  if (eventObj !== undefined) {
162
163
  this.todaysEvents = [];
163
164
  this.todaysLiveEvents = [];
165
+ this.keySpeakerEvents = [];
164
166
  var data_1 = eventObj;
165
167
  var isEventLive_1 = false;
166
168
  var isEventRecording_1 = false;
@@ -242,8 +244,10 @@ var EventService = (function () {
242
244
  if (isToday && isEventLive_1) {
243
245
  _this.todaysLiveEvents.push(eventDataObj);
244
246
  }
247
+ _this.keySpeakerEvents.push(eventDataObj);
245
248
  }));
246
249
  this.todaysLiveEvents = this.sortItemByTime(this.todaysLiveEvents);
250
+ this.keySpeakerEvents = this.getKeySpeakerEvents(this.keySpeakerEvents);
247
251
  this.todaysEvents = this.getTodaysEvents(this.todaysEvents);
248
252
  }
249
253
  };
@@ -260,6 +264,19 @@ var EventService = (function () {
260
264
  this.todaysEvents = tslib_1.__spread(liveEvents, futureEvents, pastEvents);
261
265
  return this.todaysEvents;
262
266
  };
267
+ EventService.prototype.getKeySpeakerEvents = function (eventData) {
268
+ var liveEvents = [];
269
+ var pastEvents = [];
270
+ var futureEvents = [];
271
+ liveEvents = this.todaysLiveEvents;
272
+ pastEvents = eventData.filter((function (pastEvent) { return pastEvent.isEventPast; }));
273
+ futureEvents = eventData.filter((function (futureEvent) { return futureEvent.isEventFuture; }));
274
+ liveEvents = this.sortItemByTimeAsc(liveEvents);
275
+ futureEvents = this.sortItemByTimeAsc(futureEvents);
276
+ pastEvents = this.sortItemByTime(pastEvents);
277
+ this.keySpeakerEvents = tslib_1.__spread(liveEvents, futureEvents, pastEvents);
278
+ return this.keySpeakerEvents;
279
+ };
263
280
  EventService.decorators = [
264
281
  { type: Injectable, args: [{
265
282
  providedIn: 'root',
@@ -276,6 +293,7 @@ export { EventService };
276
293
  if (false) {
277
294
  EventService.prototype.todaysEvents;
278
295
  EventService.prototype.todaysLiveEvents;
296
+ EventService.prototype.keySpeakerEvents;
279
297
  EventService.prototype.eventsSubject;
280
298
  EventService.prototype.events$;
281
299
  EventService.prototype.eventsChatbotSubject;
@@ -287,4 +305,4 @@ if (false) {
287
305
  EventService.prototype.environment;
288
306
  EventService.prototype.utilitySvc;
289
307
  }
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQTs7O0FBQzNCO0lBb0JFLHNCQUN5QixXQUFnQixFQUMvQixVQUEwQjtRQUExQixlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQWxCcEMsaUJBQVksR0FBUSxFQUFFLENBQUE7UUFDdEIscUJBQWdCLEdBQVEsRUFBRSxDQUFBO1FBRWxCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDdkQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFMUMseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDOUQsbUJBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFeEQsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDL0Qsb0JBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFMUQsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQTtRQUN6RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUE7UUFPdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxX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QUFrRDtJQUVsRCw0Q0FBcUU7SUFDckUsc0NBQWdFO0lBRWhFLDZDQUFzRTtJQUN0RSx1Q0FBa0U7SUFFbEUsdUNBQWdFO0lBQ2hFLG9DQUF5RDtJQUV6RCxtQ0FBZ0I7SUFHZCxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgV3NFdmVudHMgfSBmcm9tICcuL2V2ZW50Lm1vZGVsJ1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4vdXRpbGl0eS5zZXJ2aWNlJ1xyXG4vKiB0c2xpbnQ6ZGlzYWJsZSovXHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xyXG4gIHRvZGF5c0V2ZW50czogYW55ID0gW11cclxuICB0b2RheXNMaXZlRXZlbnRzOiBhbnkgPSBbXVxyXG4gIFxyXG4gIHByaXZhdGUgZXZlbnRzU3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGV2ZW50cyQgPSB0aGlzLmV2ZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgcHJpdmF0ZSBldmVudHNDaGF0Ym90U3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGNoYXRib3RFdmVudHMkID0gdGhpcy5ldmVudHNDaGF0Ym90U3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cclxuICBwcml2YXRlIGV2ZW50c0dldFN0YXJ0U3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGdldFN0YXJ0RXZlbnRzJCA9IHRoaXMuZXZlbnRzR2V0U3RhcnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIHByaXZhdGUgZXZlbnRzUFJTdWJqZWN0ID0gbmV3IFN1YmplY3Q8V3NFdmVudHMuSVdzRXZlbnRzPGFueT4+KClcclxuICBwdWJsaWMgZ2V0UFJFdmVudHMkID0gdGhpcy5ldmVudHNQUlN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgZW52aXJvbm1lbnQ6IGFueVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55LFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5U3ZjOiBVdGlsaXR5U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudFxyXG4gICAgLy8gdGhpcy5mb2N1c0NoYW5nZUV2ZW50TGlzdGVuZXIoKVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hFdmVudDxUPihldmVudDogV3NFdmVudHMuSVdzRXZlbnRzPFQ+KSB7XHJcbiAgICBldmVudC5wYWdlQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dChldmVudC5wYWdlQ29udGV4dClcclxuICAgIHRoaXMuZXZlbnRzU3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgdGhpcy5ldmVudHNDaGF0Ym90U3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hHZXRTdGFydGVkRXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgdGhpcy5ldmVudHNHZXRTdGFydFN1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoUGxhdGZvcm1SYXRpbmdFdmVudDxUPihldmVudDogV3NFdmVudHMuSVdzRXZlbnRzPFQ+KSB7XHJcbiAgICB0aGlzLmV2ZW50c1BSU3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGhlbHBlciBmdW5jdGlvbnNcclxuICByYWlzZUludGVyYWN0VGVsZW1ldHJ5KGVkYXRhOiBXc0V2ZW50cy5JVGVsZW1ldHJ5RWRhdGEsIG9iamVjdDogYW55LCBwYWdlQ29udGV4dD86IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCkge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZWRhdGEsXHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIHBhZ2VDb250ZXh0OiB0aGlzLmdldENvbnRleHQocGFnZUNvbnRleHQpLFxyXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW50ZXJhY3QsXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmFpc2VGZWVkYmFja1RlbGVtZXRyeShlZGF0YTogV3NFdmVudHMuSVRlbGVtZXRyeUVkYXRhLCBvYmplY3Q6IGFueSwgZnJvbT86IHN0cmluZykge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZWRhdGEsXHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuRmVlZGJhY2ssXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206IGZyb20gfHwgJycsXHJcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyBSYWlzZSBjdXN0b20gaW1wcmVzc2lvbiBldmVudHMgZWc6b24gdGFiIGNoYW5nZVxyXG4gIHJhaXNlQ3VzdG9tSW1wcmVzc2lvbihvYmplY3Q6IGFueSwgcGFnZUNvbnRleHQ/OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUltcHJlc3Npb24+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIHBhZ2VDb250ZXh0OiB0aGlzLmdldENvbnRleHQocGFnZUNvbnRleHQpLFxyXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW1wcmVzc2lvbixcclxuICAgICAgfSxcclxuICAgICAgZnJvbTogJycsXHJcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGZvY3VzQ2hhbmdlRXZlbnRMaXN0ZW5lcigpIHtcclxuICAvLyAgIGZyb21FdmVudCh3aW5kb3csICdmb2N1cycpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgLy8gICAgIHRoaXMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeSgnZm9jdXMnLCAnZ2FpbmVkJywge30pXHJcbiAgLy8gICB9KVxyXG4gIC8vICAgZnJvbUV2ZW50KHdpbmRvdywgJ2JsdXInKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoJ2ZvY3VzJywgJ2xvc3QnLCB7fSlcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICAvLyBNZXRob2QgdG8gZ2V0IHRoZSBjb250ZXh0IGluZm9ybWF0aW9uIGFib3V0IHRoZSB0ZWxlbWV0cnkgaW50ZXJhY3QgZXZlbnRcclxuICBwcml2YXRlIGdldENvbnRleHQocGFnZUNvbnRleHQ6IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCB8IHVuZGVmaW5lZCk6IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCB7XHJcbiAgICBjb25zdCByb3V0ZURhdGFDb250ZXh0ID0gdGhpcy51dGlsaXR5U3ZjLnJvdXRlRGF0YVxyXG4gICAgLy8gaW5pdGlhbGl6ZSB3aXRoIHRoZSByb3V0ZSBkYXRhIGNvbmZpZ3VyYXRpb24gLSBjdXJyZW50IHJvdXRlJ3MgcGFnZUlEICYgbW9kdWxlXHJcbiAgICBjb25zdCBmaW5hbENvbnRleHQ6IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCA9IHtcclxuICAgICAgcGFnZUlkOiByb3V0ZURhdGFDb250ZXh0LnBhZ2VJZCxcclxuICAgICAgbW9kdWxlOiByb3V0ZURhdGFDb250ZXh0Lm1vZHVsZSxcclxuICAgIH1cclxuICAgIGlmIChwYWdlQ29udGV4dCkge1xyXG4gICAgICAvLyBpZiBjb250ZXh0IGhhcyBwYWdlSWRFeHQsIGFwcGVuZCBpdCB0byB0aGUgcm91dGUncyBwYWdlSWRcclxuICAgICAgaWYgKHBhZ2VDb250ZXh0LnBhZ2VJZEV4dCkge1xyXG4gICAgICAgIGZpbmFsQ29udGV4dC5wYWdlSWQgPSBgJHtyb3V0ZURhdGFDb250ZXh0LnBhZ2VJZH1fJHtwYWdlQ29udGV4dC5wYWdlSWRFeHR9YFxyXG4gICAgICB9IGVsc2UgaWYgKHBhZ2VDb250ZXh0LnBhZ2VJZCkge1xyXG4gICAgICAgIC8vIGVsc2UgY29udGV4dCBoYXMgcGFnZUlkLCBvdmVycmlkZSBpdCB0byB0aGUgZmluYWwgcGFnZUlEXHJcbiAgICAgICAgZmluYWxDb250ZXh0LnBhZ2VJZCA9IHBhZ2VDb250ZXh0LnBhZ2VJZFxyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmIGNvbnRleHQgaGFzIG1vZHVsZSwgb3ZlcnJpZGUgaXQgdG8gdGhlIGZpbmFsIG1vZHVsZVxyXG4gICAgICBpZiAocGFnZUNvbnRleHQubW9kdWxlKSB7XHJcbiAgICAgICAgZmluYWxDb250ZXh0Lm1vZHVsZSA9IHBhZ2VDb250ZXh0Lm1vZHVsZVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsQ29udGV4dFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVRhYlRlbGVtZXRyeShzdWJUeXBlOiBzdHJpbmcsIGRhdGE6IFdzRXZlbnRzLklUZWxlbWV0cnlUYWJEYXRhLCBvYmplY3Q/OmFueSkge1xyXG4gICAgLy8gcmFpc2UgYSB0YWIgY2xpY2sgaW50ZXJhY3QgZXZlbnRcclxuICAgIHRoaXMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeShcclxuICAgICAge1xyXG4gICAgICAgIHN1YlR5cGUsXHJcbiAgICAgICAgdHlwZTogV3NFdmVudHMuRW51bUludGVyYWN0VHlwZXMuQ0xJQ0ssXHJcbiAgICAgICAgaWQ6IGAke18uY2FtZWxDYXNlKGRhdGEubGFiZWwpfS10YWJgLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgLy8gY29udGV4dDoge1xyXG4gICAgICAgIC8vICAgcG9zaXRpb246IGRhdGEuaW5kZXgsXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgICAuLi5vYmplY3RcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICBwYWdlSWRFeHQ6IGAke18uY2FtZWxDYXNlKGRhdGEubGFiZWwpfS10YWJgLFxyXG4gICAgfSlcclxuXHJcbiAgICAvLyByYWlzZSBhIHRhYiBjbGljayBpbXByZXNzaW9uIGV2ZW50XHJcbiAgICB0aGlzLnJhaXNlQ3VzdG9tSW1wcmVzc2lvbih7XHJcbiAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IGRhdGEuaW5kZXgsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ub2JqZWN0XHJcbiAgICAgIH0se1xyXG4gICAgICBwYWdlSWRFeHQ6IGAke18uY2FtZWxDYXNlKGRhdGEubGFiZWwpfS10YWJgLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFB1YmxpY1VybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBtYWluVXJsID0gdXJsLnNwbGl0KCcvY29udGVudCcpLnBvcCgpIHx8ICcnXHJcbiAgICByZXR1cm4gYCR7dGhpcy5lbnZpcm9ubWVudC5jb250ZW50SG9zdH0vJHt0aGlzLmVudmlyb25tZW50LmNvbnRlbnRCdWNrZXR9L2NvbnRlbnQke21haW5Vcmx9YFxyXG4gIH1cclxuXHJcbiAgYWxsRXZlbnREYXRlRm9ybWF0KGRhdGV0aW1lOiBhbnkpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0RGF0ZSgpXHJcbiAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldEZ1bGxZZWFyKClcclxuICAgIGNvbnN0IG1vbnRoID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldE1vbnRoKClcclxuICAgIGNvbnN0IGhvdXJzID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldEhvdXJzKClcclxuICAgIGNvbnN0IG1pbnV0ZXMgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0TWludXRlcygpXHJcbiAgICBjb25zdCBzZWNvbmRzID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldFNlY29uZHMoKVxyXG4gICAgY29uc3QgZm9ybWF0ZWREYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRhdGUsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCAwKVxyXG4gICAgLy8gbGV0IGZvcm1hdCA9ICdZWVlZLU1NLUREIGhoOm1tIGEnXHJcbiAgICAvLyBpZiAoIXRpbWVBbGxvdykge1xyXG4gICAgY29uc3QgZm9ybWF0ID0gJ1lZWVktTU0tREQnXHJcbiAgICAvLyB9XHJcbiAgICBjb25zdCByZWFkYWJsZURhdGVNb250aCA9IG1vbWVudChmb3JtYXRlZERhdGUpLmZvcm1hdChmb3JtYXQpXHJcbiAgICBjb25zdCBmaW5hbERhdGVUaW1lVmFsdWUgPSBgJHtyZWFkYWJsZURhdGVNb250aH1gXHJcbiAgICByZXR1cm4gZmluYWxEYXRlVGltZVZhbHVlXHJcbiAgfVxyXG5cclxuICBjb21wYXJlRGF0ZShzdGFydERhdGU6IGFueSkge1xyXG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxyXG5cclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItdGVtcGxhdGVcclxuICAgIGNvbnN0IGRheSA9ICAoJzAnICsgKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpKSkuc2xpY2UoLTIpXHJcbiAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLXRlbXBsYXRlXHJcbiAgICBjb25zdCBtb250aCA9ICgnMCcgKyAobm93LmdldE1vbnRoKCkgKyAxKSkuc2xpY2UoLTIpXHJcbiAgICBjb25zdCB0b2RheXNkYXRlID0gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YFxyXG4gICAgaWYgKHN0YXJ0RGF0ZSA9PT0gdG9kYXlzZGF0ZSkgIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgY3VzdG9tRGF0ZUZvcm1hdChkYXRlOiBhbnksIHRpbWU6IGFueSkge1xyXG4gICAgY29uc3Qgc3RpbWUgPSB0aW1lLnNwbGl0KCcrJylbMF1cclxuICAgIGNvbnN0IGhvdXIgPSBzdGltZS5zdWJzdHIoMCwgMilcclxuICAgIGNvbnN0IG1pbiA9IHN0aW1lLnN1YnN0cigyLCAzKVxyXG4gICAgcmV0dXJuIGAke2RhdGV9ICR7aG91cn0ke21pbn1gXHJcbiB9XHJcbiBzb3J0SXRlbUJ5VGltZShldmVudHNkYXRhOiBhbnkpIHtcclxuICByZXR1cm4gZXZlbnRzZGF0YS5zb3J0KChhOmFueSwgYjphbnkpPT4ge1xyXG4gICAgY29uc3QgZmlyc3REYXRlOiBhbnkgPSBuZXcgRGF0ZShhLmV2ZW50RGF0ZSlcclxuICAgICAgY29uc3Qgc2Vjb25kRGF0ZTogYW55ID0gbmV3IERhdGUoYi5ldmVudERhdGUpXHJcbiAgICAgIHJldHVybiAgc2Vjb25kRGF0ZSA+IGZpcnN0RGF0ZSAgPyAxIDogLTFcclxuICB9KTtcclxufVxyXG5zb3J0SXRlbUJ5VGltZUFzYyhldmVudHNkYXRhOiBhbnkpIHtcclxuICByZXR1cm4gZXZlbnRzZGF0YS5zb3J0KChhOmFueSwgYjphbnkpPT4ge1xyXG4gICAgY29uc3QgZmlyc3REYXRlOiBhbnkgPSBuZXcgRGF0ZShhLmV2ZW50RGF0ZSlcclxuICAgICAgY29uc3Qgc2Vjb25kRGF0ZTogYW55ID0gbmV3IERhdGUoYi5ldmVudERhdGUpXHJcbiAgICAgIHJldHVybiAgc2Vjb25kRGF0ZSA8IGZpcnN0RGF0ZSAgPyAxIDogLTFcclxuICB9KTtcclxufVxyXG5cclxuXHJcbiBzZXRFdmVudExpc3REYXRhKGV2ZW50T2JqOiBhbnkpIHtcclxuICBpZiAoZXZlbnRPYmogIT09IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy50b2RheXNFdmVudHMgPSBbXVxyXG4gICAgdGhpcy50b2RheXNMaXZlRXZlbnRzID0gW11cclxuICAgIGNvbnN0IGRhdGEgPSBldmVudE9ialxyXG4gICAgbGV0IGlzRXZlbnRMaXZlIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICBsZXQgaXNFdmVudFJlY29yZGluZyA6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICAgbGV0IGlzRXZlbnRQYXN0IDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICBsZXQgaXNFdmVudEZ1dHVyZSA6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICAvLyBjb25zb2xlLmxvZygnc3RyaXAgY29tcCcsIGRhdGEpXHJcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIFxyXG4gICAgICBpc0V2ZW50UmVjb3JkaW5nID0gZmFsc2VcclxuICAgICAgaXNFdmVudExpdmUgPSBmYWxzZVxyXG4gICAgICBpc0V2ZW50UGFzdCA9IGZhbHNlXHJcbiAgICAgIGlzRXZlbnRGdXR1cmUgPSBmYWxzZVxyXG4gICAgICBjb25zdCBvYmogPSBkYXRhW2luZGV4XVxyXG4gICAgICBjb25zdCBmbG9vciA9IE1hdGguZmxvb3JcclxuICAgICAgY29uc3QgaG91cnMgPSBmbG9vcihvYmouZHVyYXRpb24gLyA2MClcclxuICAgICAgY29uc3QgbWludXRlcyA9IG9iai5kdXJhdGlvbiAlIDYwXHJcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gKGhvdXJzID09PSAwKSA/ICgobWludXRlcyA9PT0gMCkgPyAnLS0tJyA6IGAke21pbnV0ZXN9IG1pbnV0ZXNgKSA6IChtaW51dGVzID09PSAwKSA/IChob3VycyA9PT0gMSkgP1xyXG4gICAgICAgIGAke2hvdXJzfSBob3VyYCA6IGAke2hvdXJzfSBob3Vyc2AgOiAoaG91cnMgPT09IDEpID8gYCR7aG91cnN9IGhvdXIgJHttaW51dGVzfSBtaW51dGVzYCA6XHJcbiAgICAgICAgYCR7aG91cnN9IGhvdXJzICR7bWludXRlc30gbWludXRlc2BcclxuICAgICAgY29uc3QgY3JlYXRvcmRhdGEgPSBvYmouY3JlYXRvckRldGFpbHMgIT09IHVuZGVmaW5lZCA/IG9iai5jcmVhdG9yRGV0YWlscyA6IFtdXHJcbiAgICAgIGNvbnN0IHN0ciA9IGNyZWF0b3JkYXRhICYmIGNyZWF0b3JkYXRhLmxlbmd0aCA+IDAgPyBjcmVhdG9yZGF0YS5yZXBsYWNlKC9cXFxcL2csICcnKSA6IFtdXHJcbiAgICAgIGNvbnN0IGNyZWF0b3JEZXRhaWxzID0gc3RyICYmIHN0ci5sZW5ndGggPiAwID8gSlNPTi5wYXJzZShzdHIpIDogY3JlYXRvcmRhdGFcclxuXHJcbiAgICAgIGNvbnN0IHN0aW1lID0gb2JqLnN0YXJ0VGltZS5zcGxpdCgnKycpWzBdXHJcbiAgICAgIGNvbnN0IGhvdXIgPSBzdGltZS5zdWJzdHIoMCwgMilcclxuICAgICAgY29uc3QgbWluID0gc3RpbWUuc3Vic3RyKDIsIDMpXHJcbiAgICAgIGNvbnN0IHN0YXJ0dGltZSA9IGAke2hvdXJ9JHttaW59YFxyXG5cclxuICAgICAgY29uc3QgZXRpbWUgPSBvYmouZW5kVGltZS5zcGxpdCgnKycpWzBdXHJcbiAgICAgIGNvbnN0IGVob3VyID0gZXRpbWUuc3Vic3RyKDAsIDIpXHJcbiAgICAgIGNvbnN0IGVtaW4gPSBldGltZS5zdWJzdHIoMiwgMylcclxuICAgICAgY29uc3QgZW5kdGltZSA9IGAke2Vob3VyfSR7ZW1pbn1gXHJcbiAgICAgIGNvbnN0IGV2ZW50RGF0ZSA9IHRoaXMuY3VzdG9tRGF0ZUZvcm1hdChvYmouc3RhcnREYXRlLCBvYmouc3RhcnRUaW1lKVxyXG4gICAgICBjb25zdCBldmVudGVuZERhdGUgPSB0aGlzLmN1c3RvbURhdGVGb3JtYXQob2JqLmVuZERhdGUsIG9iai5lbmRUaW1lKVxyXG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXHJcbiAgICAgIGNvbnN0IHRvZGF5ID0gbW9tZW50KG5vdykuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tJylcclxuICAgICAgaWYgKG1vbWVudCh0b2RheSkuaXNCZXR3ZWVuKGV2ZW50RGF0ZSwgZXZlbnRlbmREYXRlKSkge1xyXG4gICAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSBmYWxzZVxyXG4gICAgICAgIGlzRXZlbnRMaXZlID0gdHJ1ZVxyXG4gICAgICAgIGlmICh0b2RheSA+PSBldmVudGVuZERhdGUpIHtcclxuICAgICAgICAgIGlmIChvYmoucmVjb3JkZWRMaW5rcyAmJiBvYmoucmVjb3JkZWRMaW5rcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSB0cnVlXHJcbiAgICAgICAgICAgIGlzRXZlbnRMaXZlID0gZmFsc2VcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodG9kYXkgPj0gZXZlbnRlbmREYXRlKSB7XHJcbiAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IHRydWVcclxuICAgICAgICBpc0V2ZW50TGl2ZSA9IGZhbHNlXHJcbiAgICAgICAgaWYobW9tZW50KHRvZGF5KS5pc0FmdGVyKGV2ZW50ZW5kRGF0ZSkgJiYgbW9tZW50KHRvZGF5KS5pc0FmdGVyKGV2ZW50RGF0ZSkpIHtcclxuICAgICAgICAgIGlzRXZlbnRQYXN0ID0gdHJ1ZVxyXG4gICAgICAgIH0gXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYobW9tZW50KHRvZGF5KS5pc0JlZm9yZShldmVudERhdGUpICYmIG1vbWVudCh0b2RheSkuaXNCZWZvcmUoZXZlbnRlbmREYXRlKSkge1xyXG4gICAgICAgICAgaXNFdmVudEZ1dHVyZSA9IHRydWVcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZXZlbnREYXRhT2JqID0ge1xyXG4gICAgICAgIGV2ZW50RGF0ZSxcclxuICAgICAgICBldmVudGVuZERhdGUsXHJcbiAgICAgICAgaXNFdmVudExpdmUsXHJcbiAgICAgICAgaXNFdmVudEZ1dHVyZSxcclxuICAgICAgICBpc0V2ZW50UGFzdCxcclxuICAgICAgICBpc0V2ZW50UmVjb3JkaW5nLFxyXG4gICAgICAgIGV2ZW50OiBvYmosXHJcbiAgICAgICAgZXZlbnROYW1lOiBvYmoubmFtZSxcclxuICAgICAgICBldmVudFN0YXJ0VGltZTogc3RhcnR0aW1lLFxyXG4gICAgICAgIGV2ZW50RW5kVGltZTogZW5kdGltZSxcclxuICAgICAgICBldmVudFN0YXJ0RGF0ZTogb2JqLnN0YXJ0RGF0ZSxcclxuICAgICAgICBldmVudENyZWF0ZWRPbjogdGhpcy5hbGxFdmVudERhdGVGb3JtYXQob2JqLmNyZWF0ZWRPbiksXHJcbiAgICAgICAgZXZlbnREdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgZXZlbnRqb2luZWQ6IGNyZWF0b3JEZXRhaWxzLmxlbmd0aCxcclxuICAgICAgICBldmVudFRodW1ibmFpbDogb2JqLmFwcEljb24gJiYgKG9iai5hcHBJY29uICE9PSBudWxsIHx8IG9iai5hcHBJY29uICE9PSB1bmRlZmluZWQpID9cclxuICAgICAgICAgIHRoaXMuZ2V0UHVibGljVXJsKG9iai5hcHBJY29uKSA6XHJcbiAgICAgICAgICAnL2Fzc2V0cy9pY29ucy9FdmVudHNfZGVmYXVsdC5wbmcnLFxyXG4gICAgICAgIHBhc3RldmVudDogZmFsc2UsXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgaXNUb2RheSA9IHRoaXMuY29tcGFyZURhdGUob2JqLnN0YXJ0RGF0ZSlcclxuICAgICAgaWYgKGlzVG9kYXkpIHtcclxuICAgICAgICB0aGlzLnRvZGF5c0V2ZW50cy5wdXNoKGV2ZW50RGF0YU9iailcclxuICAgICAgfVxyXG4gICAgICBpZihpc1RvZGF5ICYmIGlzRXZlbnRMaXZlKSB7XHJcbiAgICAgICAgdGhpcy50b2RheXNMaXZlRXZlbnRzLnB1c2goZXZlbnREYXRhT2JqKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudG9kYXlzTGl2ZUV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWUodGhpcy50b2RheXNMaXZlRXZlbnRzKVxyXG4gICAgdGhpcy50b2RheXNFdmVudHMgPSB0aGlzLmdldFRvZGF5c0V2ZW50cyh0aGlzLnRvZGF5c0V2ZW50cylcclxuICB9XHJcbiAgfVxyXG4gIGdldFRvZGF5c0V2ZW50cyhldmVudERhdGE6IGFueSkge1xyXG4gICAgbGV0IGxpdmVFdmVudHM6IGFueSA9IFtdXHJcbiAgICBsZXQgcGFzdEV2ZW50czogYW55ID0gW11cclxuICAgIGxldCBmdXR1cmVFdmVudHM6IGFueSA9IFtdXHJcblxyXG4gICAgbGl2ZUV2ZW50cyA9IHRoaXMudG9kYXlzTGl2ZUV2ZW50c1xyXG4gICAgcGFzdEV2ZW50cyA9IGV2ZW50RGF0YS5maWx0ZXIoKHBhc3RFdmVudDogYW55KSA9PiBwYXN0RXZlbnQuaXNFdmVudFBhc3QpXHJcbiAgICBmdXR1cmVFdmVudHMgPSBldmVudERhdGEuZmlsdGVyKChmdXR1cmVFdmVudDogYW55KSA9PiBmdXR1cmVFdmVudC5pc0V2ZW50RnV0dXJlKVxyXG4gICAgbGl2ZUV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWVBc2MobGl2ZUV2ZW50cylcclxuICAgIGZ1dHVyZUV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWVBc2MoZnV0dXJlRXZlbnRzKVxyXG4gICAgcGFzdEV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWUocGFzdEV2ZW50cylcclxuICAgIHRoaXMudG9kYXlzRXZlbnRzICA9IFsuLi5saXZlRXZlbnRzLCAuLi5mdXR1cmVFdmVudHMsIC4uLnBhc3RFdmVudHNdXHJcbiAgICBcclxuICAgIHJldHVybiB0aGlzLnRvZGF5c0V2ZW50c1xyXG4gIH1cclxuICBcclxufVxyXG4iXX0=
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQTs7O0FBQzNCO0lBcUJFLHNCQUN5QixXQUFnQixFQUMvQixVQUEwQjtRQUExQixlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQW5CcEMsaUJBQVksR0FBUSxFQUFFLENBQUE7UUFDdEIscUJBQWdCLEdBQVEsRUFBRSxDQUFBO1FBQzFCLHFCQUFnQixHQUFRLEVBQUUsQ0FBQTtRQUVsQixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFBO1FBQ3ZELFlBQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBRTFDLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUEyQixDQUFBO1FBQzlELG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRXhELDBCQUFxQixHQUFHLElBQUksT0FBTyxFQUEyQixDQUFBO1FBQy9ELG9CQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRTFELG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDekQsaUJBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgV3NFdmVudHMgfSBmcm9tICcuL2V2ZW50Lm1vZGVsJ1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4vdXRpbGl0eS5zZXJ2aWNlJ1xyXG4vKiB0c2xpbnQ6ZGlzYWJsZSovXHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xyXG4gIHRvZGF5c0V2ZW50czogYW55ID0gW11cclxuICB0b2RheXNMaXZlRXZlbnRzOiBhbnkgPSBbXVxyXG4gIGtleVNwZWFrZXJFdmVudHM6IGFueSA9IFtdXHJcblxyXG4gIHByaXZhdGUgZXZlbnRzU3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGV2ZW50cyQgPSB0aGlzLmV2ZW50c1N1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgcHJpdmF0ZSBldmVudHNDaGF0Ym90U3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGNoYXRib3RFdmVudHMkID0gdGhpcy5ldmVudHNDaGF0Ym90U3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cclxuICBwcml2YXRlIGV2ZW50c0dldFN0YXJ0U3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGdldFN0YXJ0RXZlbnRzJCA9IHRoaXMuZXZlbnRzR2V0U3RhcnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIHByaXZhdGUgZXZlbnRzUFJTdWJqZWN0ID0gbmV3IFN1YmplY3Q8V3NFdmVudHMuSVdzRXZlbnRzPGFueT4+KClcclxuICBwdWJsaWMgZ2V0UFJFdmVudHMkID0gdGhpcy5ldmVudHNQUlN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgZW52aXJvbm1lbnQ6IGFueVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBlbnZpcm9ubWVudDogYW55LFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5U3ZjOiBVdGlsaXR5U2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudFxyXG4gICAgLy8gdGhpcy5mb2N1c0NoYW5nZUV2ZW50TGlzdGVuZXIoKVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hFdmVudDxUPihldmVudDogV3NFdmVudHMuSVdzRXZlbnRzPFQ+KSB7XHJcbiAgICBldmVudC5wYWdlQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dChldmVudC5wYWdlQ29udGV4dClcclxuICAgIHRoaXMuZXZlbnRzU3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hDaGF0Ym90RXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgdGhpcy5ldmVudHNDaGF0Ym90U3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hHZXRTdGFydGVkRXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgdGhpcy5ldmVudHNHZXRTdGFydFN1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoUGxhdGZvcm1SYXRpbmdFdmVudDxUPihldmVudDogV3NFdmVudHMuSVdzRXZlbnRzPFQ+KSB7XHJcbiAgICB0aGlzLmV2ZW50c1BSU3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGhlbHBlciBmdW5jdGlvbnNcclxuICByYWlzZUludGVyYWN0VGVsZW1ldHJ5KGVkYXRhOiBXc0V2ZW50cy5JVGVsZW1ldHJ5RWRhdGEsIG9iamVjdDogYW55LCBwYWdlQ29udGV4dD86IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCkge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZWRhdGEsXHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIHBhZ2VDb250ZXh0OiB0aGlzLmdldENvbnRleHQocGFnZUNvbnRleHQpLFxyXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW50ZXJhY3QsXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcmFpc2VGZWVkYmFja1RlbGVtZXRyeShlZGF0YTogV3NFdmVudHMuSVRlbGVtZXRyeUVkYXRhLCBvYmplY3Q6IGFueSwgZnJvbT86IHN0cmluZykge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW50ZXJhY3Q+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZWRhdGEsXHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuRmVlZGJhY2ssXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206IGZyb20gfHwgJycsXHJcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyBSYWlzZSBjdXN0b20gaW1wcmVzc2lvbiBldmVudHMgZWc6b24gdGFiIGNoYW5nZVxyXG4gIHJhaXNlQ3VzdG9tSW1wcmVzc2lvbihvYmplY3Q6IGFueSwgcGFnZUNvbnRleHQ/OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUltcHJlc3Npb24+KHtcclxuICAgICAgZXZlbnRUeXBlOiBXc0V2ZW50cy5Xc0V2ZW50VHlwZS5UZWxlbWV0cnksXHJcbiAgICAgIGV2ZW50TG9nTGV2ZWw6IFdzRXZlbnRzLldzRXZlbnRMb2dMZXZlbC5JbmZvLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgb2JqZWN0LFxyXG4gICAgICAgIHBhZ2VDb250ZXh0OiB0aGlzLmdldENvbnRleHQocGFnZUNvbnRleHQpLFxyXG4gICAgICAgIGV2ZW50U3ViVHlwZTogV3NFdmVudHMuRW51bVRlbGVtZXRyeVN1YlR5cGUuSW1wcmVzc2lvbixcclxuICAgICAgfSxcclxuICAgICAgZnJvbTogJycsXHJcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGZvY3VzQ2hhbmdlRXZlbnRMaXN0ZW5lcigpIHtcclxuICAvLyAgIGZyb21FdmVudCh3aW5kb3csICdmb2N1cycpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgLy8gICAgIHRoaXMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeSgnZm9jdXMnLCAnZ2FpbmVkJywge30pXHJcbiAgLy8gICB9KVxyXG4gIC8vICAgZnJvbUV2ZW50KHdpbmRvdywgJ2JsdXInKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoJ2ZvY3VzJywgJ2xvc3QnLCB7fSlcclxuICAvLyAgIH0pXHJcbiAgLy8gfVxyXG5cclxuICAvLyBNZXRob2QgdG8gZ2V0IHRoZSBjb250ZXh0IGluZm9ybWF0aW9uIGFib3V0IHRoZSB0ZWxlbWV0cnkgaW50ZXJhY3QgZXZlbnRcclxuICBwcml2YXRlIGdldENvbnRleHQocGFnZUNvbnRleHQ6IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCB8IHVuZGVmaW5lZCk6IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCB7XHJcbiAgICBjb25zdCByb3V0ZURhdGFDb250ZXh0ID0gdGhpcy51dGlsaXR5U3ZjLnJvdXRlRGF0YVxyXG4gICAgLy8gaW5pdGlhbGl6ZSB3aXRoIHRoZSByb3V0ZSBkYXRhIGNvbmZpZ3VyYXRpb24gLSBjdXJyZW50IHJvdXRlJ3MgcGFnZUlEICYgbW9kdWxlXHJcbiAgICBjb25zdCBmaW5hbENvbnRleHQ6IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCA9IHtcclxuICAgICAgcGFnZUlkOiByb3V0ZURhdGFDb250ZXh0LnBhZ2VJZCxcclxuICAgICAgbW9kdWxlOiByb3V0ZURhdGFDb250ZXh0Lm1vZHVsZSxcclxuICAgIH1cclxuICAgIGlmIChwYWdlQ29udGV4dCkge1xyXG4gICAgICAvLyBpZiBjb250ZXh0IGhhcyBwYWdlSWRFeHQsIGFwcGVuZCBpdCB0byB0aGUgcm91dGUncyBwYWdlSWRcclxuICAgICAgaWYgKHBhZ2VDb250ZXh0LnBhZ2VJZEV4dCkge1xyXG4gICAgICAgIGZpbmFsQ29udGV4dC5wYWdlSWQgPSBgJHtyb3V0ZURhdGFDb250ZXh0LnBhZ2VJZH1fJHtwYWdlQ29udGV4dC5wYWdlSWRFeHR9YFxyXG4gICAgICB9IGVsc2UgaWYgKHBhZ2VDb250ZXh0LnBhZ2VJZCkge1xyXG4gICAgICAgIC8vIGVsc2UgY29udGV4dCBoYXMgcGFnZUlkLCBvdmVycmlkZSBpdCB0byB0aGUgZmluYWwgcGFnZUlEXHJcbiAgICAgICAgZmluYWxDb250ZXh0LnBhZ2VJZCA9IHBhZ2VDb250ZXh0LnBhZ2VJZFxyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmIGNvbnRleHQgaGFzIG1vZHVsZSwgb3ZlcnJpZGUgaXQgdG8gdGhlIGZpbmFsIG1vZHVsZVxyXG4gICAgICBpZiAocGFnZUNvbnRleHQubW9kdWxlKSB7XHJcbiAgICAgICAgZmluYWxDb250ZXh0Lm1vZHVsZSA9IHBhZ2VDb250ZXh0Lm1vZHVsZVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZpbmFsQ29udGV4dFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVRhYlRlbGVtZXRyeShzdWJUeXBlOiBzdHJpbmcsIGRhdGE6IFdzRXZlbnRzLklUZWxlbWV0cnlUYWJEYXRhLCBvYmplY3Q/OiBhbnkpIHtcclxuICAgIC8vIHJhaXNlIGEgdGFiIGNsaWNrIGludGVyYWN0IGV2ZW50XHJcbiAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXHJcbiAgICAgIHtcclxuICAgICAgICBzdWJUeXBlLFxyXG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFR5cGVzLkNMSUNLLFxyXG4gICAgICAgIGlkOiBgJHtfLmNhbWVsQ2FzZShkYXRhLmxhYmVsKX0tdGFiYCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIC8vIGNvbnRleHQ6IHtcclxuICAgICAgICAvLyAgIHBvc2l0aW9uOiBkYXRhLmluZGV4LFxyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgICAgLi4ub2JqZWN0XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBwYWdlSWRFeHQ6IGAke18uY2FtZWxDYXNlKGRhdGEubGFiZWwpfS10YWJgLFxyXG4gICAgICB9KVxyXG5cclxuICAgIC8vIHJhaXNlIGEgdGFiIGNsaWNrIGltcHJlc3Npb24gZXZlbnRcclxuICAgIHRoaXMucmFpc2VDdXN0b21JbXByZXNzaW9uKHtcclxuICAgICAgY29udGV4dDoge1xyXG4gICAgICAgIHBvc2l0aW9uOiBkYXRhLmluZGV4LFxyXG4gICAgICB9LFxyXG4gICAgICAuLi5vYmplY3RcclxuICAgIH0sIHtcclxuICAgICAgcGFnZUlkRXh0OiBgJHtfLmNhbWVsQ2FzZShkYXRhLmxhYmVsKX0tdGFiYCxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRQdWJsaWNVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbWFpblVybCA9IHVybC5zcGxpdCgnL2NvbnRlbnQnKS5wb3AoKSB8fCAnJ1xyXG4gICAgcmV0dXJuIGAke3RoaXMuZW52aXJvbm1lbnQuY29udGVudEhvc3R9LyR7dGhpcy5lbnZpcm9ubWVudC5jb250ZW50QnVja2V0fS9jb250ZW50JHttYWluVXJsfWBcclxuICB9XHJcblxyXG4gIGFsbEV2ZW50RGF0ZUZvcm1hdChkYXRldGltZTogYW55KSB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldERhdGUoKVxyXG4gICAgY29uc3QgeWVhciA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRGdWxsWWVhcigpXHJcbiAgICBjb25zdCBtb250aCA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRNb250aCgpXHJcbiAgICBjb25zdCBob3VycyA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRIb3VycygpXHJcbiAgICBjb25zdCBtaW51dGVzID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldE1pbnV0ZXMoKVxyXG4gICAgY29uc3Qgc2Vjb25kcyA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRTZWNvbmRzKClcclxuICAgIGNvbnN0IGZvcm1hdGVkRGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VycywgbWludXRlcywgc2Vjb25kcywgMClcclxuICAgIC8vIGxldCBmb3JtYXQgPSAnWVlZWS1NTS1ERCBoaDptbSBhJ1xyXG4gICAgLy8gaWYgKCF0aW1lQWxsb3cpIHtcclxuICAgIGNvbnN0IGZvcm1hdCA9ICdZWVlZLU1NLUREJ1xyXG4gICAgLy8gfVxyXG4gICAgY29uc3QgcmVhZGFibGVEYXRlTW9udGggPSBtb21lbnQoZm9ybWF0ZWREYXRlKS5mb3JtYXQoZm9ybWF0KVxyXG4gICAgY29uc3QgZmluYWxEYXRlVGltZVZhbHVlID0gYCR7cmVhZGFibGVEYXRlTW9udGh9YFxyXG4gICAgcmV0dXJuIGZpbmFsRGF0ZVRpbWVWYWx1ZVxyXG4gIH1cclxuXHJcbiAgY29tcGFyZURhdGUoc3RhcnREYXRlOiBhbnkpIHtcclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLXRlbXBsYXRlXHJcbiAgICBjb25zdCBkYXkgPSAoJzAnICsgKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpKSkuc2xpY2UoLTIpXHJcbiAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLXRlbXBsYXRlXHJcbiAgICBjb25zdCBtb250aCA9ICgnMCcgKyAobm93LmdldE1vbnRoKCkgKyAxKSkuc2xpY2UoLTIpXHJcbiAgICBjb25zdCB0b2RheXNkYXRlID0gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YFxyXG4gICAgaWYgKHN0YXJ0RGF0ZSA9PT0gdG9kYXlzZGF0ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBjdXN0b21EYXRlRm9ybWF0KGRhdGU6IGFueSwgdGltZTogYW55KSB7XHJcbiAgICBjb25zdCBzdGltZSA9IHRpbWUuc3BsaXQoJysnKVswXVxyXG4gICAgY29uc3QgaG91ciA9IHN0aW1lLnN1YnN0cigwLCAyKVxyXG4gICAgY29uc3QgbWluID0gc3RpbWUuc3Vic3RyKDIsIDMpXHJcbiAgICByZXR1cm4gYCR7ZGF0ZX0gJHtob3VyfSR7bWlufWBcclxuICB9XHJcbiAgc29ydEl0ZW1CeVRpbWUoZXZlbnRzZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gZXZlbnRzZGF0YS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBmaXJzdERhdGU6IGFueSA9IG5ldyBEYXRlKGEuZXZlbnREYXRlKVxyXG4gICAgICBjb25zdCBzZWNvbmREYXRlOiBhbnkgPSBuZXcgRGF0ZShiLmV2ZW50RGF0ZSlcclxuICAgICAgcmV0dXJuIHNlY29uZERhdGUgPiBmaXJzdERhdGUgPyAxIDogLTFcclxuICAgIH0pXHJcbiAgfVxyXG4gIHNvcnRJdGVtQnlUaW1lQXNjKGV2ZW50c2RhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIGV2ZW50c2RhdGEuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgZmlyc3REYXRlOiBhbnkgPSBuZXcgRGF0ZShhLmV2ZW50RGF0ZSlcclxuICAgICAgY29uc3Qgc2Vjb25kRGF0ZTogYW55ID0gbmV3IERhdGUoYi5ldmVudERhdGUpXHJcbiAgICAgIHJldHVybiBzZWNvbmREYXRlIDwgZmlyc3REYXRlID8gMSA6IC0xXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIHNldEV2ZW50TGlzdERhdGEoZXZlbnRPYmo6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50T2JqICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy50b2RheXNFdmVudHMgPSBbXVxyXG4gICAgICB0aGlzLnRvZGF5c0xpdmVFdmVudHMgPSBbXVxyXG4gICAgICB0aGlzLmtleVNwZWFrZXJFdmVudHMgPSBbXVxyXG4gICAgICBjb25zdCBkYXRhID0gZXZlbnRPYmpcclxuICAgICAgbGV0IGlzRXZlbnRMaXZlOiBib29sZWFuID0gZmFsc2VcclxuICAgICAgbGV0IGlzRXZlbnRSZWNvcmRpbmc6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICAgICBsZXQgaXNFdmVudFBhc3Q6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICAgICBsZXQgaXNFdmVudEZ1dHVyZTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdzdHJpcCBjb21wJywgZGF0YSlcclxuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoaW5kZXg6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICBpc0V2ZW50UmVjb3JkaW5nID0gZmFsc2VcclxuICAgICAgICBpc0V2ZW50TGl2ZSA9IGZhbHNlXHJcbiAgICAgICAgaXNFdmVudFBhc3QgPSBmYWxzZVxyXG4gICAgICAgIGlzRXZlbnRGdXR1cmUgPSBmYWxzZVxyXG4gICAgICAgIGNvbnN0IG9iaiA9IGRhdGFbaW5kZXhdXHJcbiAgICAgICAgY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yXHJcbiAgICAgICAgY29uc3QgaG91cnMgPSBmbG9vcihvYmouZHVyYXRpb24gLyA2MClcclxuICAgICAgICBjb25zdCBtaW51dGVzID0gb2JqLmR1cmF0aW9uICUgNjBcclxuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IChob3VycyA9PT0gMCkgPyAoKG1pbnV0ZXMgPT09IDApID8gJy0tLScgOiBgJHttaW51dGVzfSBtaW51dGVzYCkgOiAobWludXRlcyA9PT0gMCkgPyAoaG91cnMgPT09IDEpID9cclxuICAgICAgICAgIGAke2hvdXJzfSBob3VyYCA6IGAke2hvdXJzfSBob3Vyc2AgOiAoaG91cnMgPT09IDEpID8gYCR7aG91cnN9IGhvdXIgJHttaW51dGVzfSBtaW51dGVzYCA6XHJcbiAgICAgICAgICBgJHtob3Vyc30gaG91cnMgJHttaW51dGVzfSBtaW51dGVzYFxyXG4gICAgICAgIGNvbnN0IGNyZWF0b3JkYXRhID0gb2JqLmNyZWF0b3JEZXRhaWxzICE9PSB1bmRlZmluZWQgPyBvYmouY3JlYXRvckRldGFpbHMgOiBbXVxyXG4gICAgICAgIGNvbnN0IHN0ciA9IGNyZWF0b3JkYXRhICYmIGNyZWF0b3JkYXRhLmxlbmd0aCA+IDAgPyBjcmVhdG9yZGF0YS5yZXBsYWNlKC9cXFxcL2csICcnKSA6IFtdXHJcbiAgICAgICAgY29uc3QgY3JlYXRvckRldGFpbHMgPSBzdHIgJiYgc3RyLmxlbmd0aCA+IDAgPyBKU09OLnBhcnNlKHN0cikgOiBjcmVhdG9yZGF0YVxyXG5cclxuICAgICAgICBjb25zdCBzdGltZSA9IG9iai5zdGFydFRpbWUuc3BsaXQoJysnKVswXVxyXG4gICAgICAgIGNvbnN0IGhvdXIgPSBzdGltZS5zdWJzdHIoMCwgMilcclxuICAgICAgICBjb25zdCBtaW4gPSBzdGltZS5zdWJzdHIoMiwgMylcclxuICAgICAgICBjb25zdCBzdGFydHRpbWUgPSBgJHtob3VyfSR7bWlufWBcclxuXHJcbiAgICAgICAgY29uc3QgZXRpbWUgPSBvYmouZW5kVGltZS5zcGxpdCgnKycpWzBdXHJcbiAgICAgICAgY29uc3QgZWhvdXIgPSBldGltZS5zdWJzdHIoMCwgMilcclxuICAgICAgICBjb25zdCBlbWluID0gZXRpbWUuc3Vic3RyKDIsIDMpXHJcbiAgICAgICAgY29uc3QgZW5kdGltZSA9IGAke2Vob3VyfSR7ZW1pbn1gXHJcbiAgICAgICAgY29uc3QgZXZlbnREYXRlID0gdGhpcy5jdXN0b21EYXRlRm9ybWF0KG9iai5zdGFydERhdGUsIG9iai5zdGFydFRpbWUpXHJcbiAgICAgICAgY29uc3QgZXZlbnRlbmREYXRlID0gdGhpcy5jdXN0b21EYXRlRm9ybWF0KG9iai5lbmREYXRlLCBvYmouZW5kVGltZSlcclxuICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBtb21lbnQobm93KS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW0nKVxyXG4gICAgICAgIGlmIChtb21lbnQodG9kYXkpLmlzQmV0d2VlbihldmVudERhdGUsIGV2ZW50ZW5kRGF0ZSkpIHtcclxuICAgICAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgaXNFdmVudExpdmUgPSB0cnVlXHJcbiAgICAgICAgICBpZiAodG9kYXkgPj0gZXZlbnRlbmREYXRlKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmoucmVjb3JkZWRMaW5rcyAmJiBvYmoucmVjb3JkZWRMaW5rcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IHRydWVcclxuICAgICAgICAgICAgICBpc0V2ZW50TGl2ZSA9IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRvZGF5ID49IGV2ZW50ZW5kRGF0ZSkge1xyXG4gICAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IHRydWVcclxuICAgICAgICAgIGlzRXZlbnRMaXZlID0gZmFsc2VcclxuICAgICAgICAgIGlmIChtb21lbnQodG9kYXkpLmlzQWZ0ZXIoZXZlbnRlbmREYXRlKSAmJiBtb21lbnQodG9kYXkpLmlzQWZ0ZXIoZXZlbnREYXRlKSkge1xyXG4gICAgICAgICAgICBpc0V2ZW50UGFzdCA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKG1vbWVudCh0b2RheSkuaXNCZWZvcmUoZXZlbnREYXRlKSAmJiBtb21lbnQodG9kYXkpLmlzQmVmb3JlKGV2ZW50ZW5kRGF0ZSkpIHtcclxuICAgICAgICAgICAgaXNFdmVudEZ1dHVyZSA9IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZXZlbnREYXRhT2JqID0ge1xyXG4gICAgICAgICAgZXZlbnREYXRlLFxyXG4gICAgICAgICAgZXZlbnRlbmREYXRlLFxyXG4gICAgICAgICAgaXNFdmVudExpdmUsXHJcbiAgICAgICAgICBpc0V2ZW50RnV0dXJlLFxyXG4gICAgICAgICAgaXNFdmVudFBhc3QsXHJcbiAgICAgICAgICBpc0V2ZW50UmVjb3JkaW5nLFxyXG4gICAgICAgICAgZXZlbnQ6IG9iaixcclxuICAgICAgICAgIGV2ZW50TmFtZTogb2JqLm5hbWUsXHJcbiAgICAgICAgICBldmVudFN0YXJ0VGltZTogc3RhcnR0aW1lLFxyXG4gICAgICAgICAgZXZlbnRFbmRUaW1lOiBlbmR0aW1lLFxyXG4gICAgICAgICAgZXZlbnRTdGFydERhdGU6IG9iai5zdGFydERhdGUsXHJcbiAgICAgICAgICBldmVudENyZWF0ZWRPbjogdGhpcy5hbGxFdmVudERhdGVGb3JtYXQob2JqLmNyZWF0ZWRPbiksXHJcbiAgICAgICAgICBldmVudER1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICAgIGV2ZW50am9pbmVkOiBjcmVhdG9yRGV0YWlscy5sZW5ndGgsXHJcbiAgICAgICAgICBldmVudFRodW1ibmFpbDogb2JqLmFwcEljb24gJiYgKG9iai5hcHBJY29uICE9PSBudWxsIHx8IG9iai5hcHBJY29uICE9PSB1bmRlZmluZWQpID9cclxuICAgICAgICAgICAgdGhpcy5nZXRQdWJsaWNVcmwob2JqLmFwcEljb24pIDpcclxuICAgICAgICAgICAgJy9hc3NldHMvaWNvbnMvRXZlbnRzX2RlZmF1bHQucG5nJyxcclxuICAgICAgICAgIHBhc3RldmVudDogZmFsc2UsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGlzVG9kYXkgPSB0aGlzLmNvbXBhcmVEYXRlKG9iai5zdGFydERhdGUpXHJcbiAgICAgICAgaWYgKGlzVG9kYXkpIHtcclxuICAgICAgICAgIHRoaXMudG9kYXlzRXZlbnRzLnB1c2goZXZlbnREYXRhT2JqKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNUb2RheSAmJiBpc0V2ZW50TGl2ZSkge1xyXG4gICAgICAgICAgdGhpcy50b2RheXNMaXZlRXZlbnRzLnB1c2goZXZlbnREYXRhT2JqKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmtleVNwZWFrZXJFdmVudHMucHVzaChldmVudERhdGFPYmopXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLnRvZGF5c0xpdmVFdmVudHMgPSB0aGlzLnNvcnRJdGVtQnlUaW1lKHRoaXMudG9kYXlzTGl2ZUV2ZW50cylcclxuICAgICAgdGhpcy5rZXlTcGVha2VyRXZlbnRzID0gdGhpcy5nZXRLZXlTcGVha2VyRXZlbnRzKHRoaXMua2V5U3BlYWtlckV2ZW50cylcclxuICAgICAgdGhpcy50b2RheXNFdmVudHMgPSB0aGlzLmdldFRvZGF5c0V2ZW50cyh0aGlzLnRvZGF5c0V2ZW50cylcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFRvZGF5c0V2ZW50cyhldmVudERhdGE6IGFueSkge1xyXG4gICAgbGV0IGxpdmVFdmVudHM6IGFueSA9IFtdXHJcbiAgICBsZXQgcGFzdEV2ZW50czogYW55ID0gW11cclxuICAgIGxldCBmdXR1cmVFdmVudHM6IGFueSA9IFtdXHJcblxyXG4gICAgbGl2ZUV2ZW50cyA9IHRoaXMudG9kYXlzTGl2ZUV2ZW50c1xyXG4gICAgcGFzdEV2ZW50cyA9IGV2ZW50RGF0YS5maWx0ZXIoKHBhc3RFdmVudDogYW55KSA9PiBwYXN0RXZlbnQuaXNFdmVudFBhc3QpXHJcbiAgICBmdXR1cmVFdmVudHMgPSBldmVudERhdGEuZmlsdGVyKChmdXR1cmVFdmVudDogYW55KSA9PiBmdXR1cmVFdmVudC5pc0V2ZW50RnV0dXJlKVxyXG4gICAgbGl2ZUV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWVBc2MobGl2ZUV2ZW50cylcclxuICAgIGZ1dHVyZUV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWVBc2MoZnV0dXJlRXZlbnRzKVxyXG4gICAgcGFzdEV2ZW50cyA9IHRoaXMuc29ydEl0ZW1CeVRpbWUocGFzdEV2ZW50cylcclxuICAgIHRoaXMudG9kYXlzRXZlbnRzID0gWy4uLmxpdmVFdmVudHMsIC4uLmZ1dHVyZUV2ZW50cywgLi4ucGFzdEV2ZW50c11cclxuXHJcbiAgICByZXR1cm4gdGhpcy50b2RheXNFdmVudHNcclxuICB9XHJcblxyXG4gIGdldEtleVNwZWFrZXJFdmVudHMoZXZlbnREYXRhOiBhbnkpIHtcclxuICAgIGxldCBsaXZlRXZlbnRzOiBhbnkgPSBbXVxyXG4gICAgbGV0IHBhc3RFdmVudHM6IGFueSA9IFtdXHJcbiAgICBsZXQgZnV0dXJlRXZlbnRzOiBhbnkgPSBbXVxyXG5cclxuICAgIGxpdmVFdmVudHMgPSB0aGlzLnRvZGF5c0xpdmVFdmVudHNcclxuICAgIHBhc3RFdmVudHMgPSBldmVudERhdGEuZmlsdGVyKChwYXN0RXZlbnQ6IGFueSkgPT4gcGFzdEV2ZW50LmlzRXZlbnRQYXN0KVxyXG4gICAgZnV0dXJlRXZlbnRzID0gZXZlbnREYXRhLmZpbHRlcigoZnV0dXJlRXZlbnQ6IGFueSkgPT4gZnV0dXJlRXZlbnQuaXNFdmVudEZ1dHVyZSlcclxuICAgIGxpdmVFdmVudHMgPSB0aGlzLnNvcnRJdGVtQnlUaW1lQXNjKGxpdmVFdmVudHMpXHJcbiAgICBmdXR1cmVFdmVudHMgPSB0aGlzLnNvcnRJdGVtQnlUaW1lQXNjKGZ1dHVyZUV2ZW50cylcclxuICAgIHBhc3RFdmVudHMgPSB0aGlzLnNvcnRJdGVtQnlUaW1lKHBhc3RFdmVudHMpXHJcbiAgICB0aGlzLmtleVNwZWFrZXJFdmVudHMgPSBbLi4ubGl2ZUV2ZW50cywgLi4uZnV0dXJlRXZlbnRzLCAuLi5wYXN0RXZlbnRzXVxyXG5cclxuICAgIHJldHVybiB0aGlzLmtleVNwZWFrZXJFdmVudHNcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1867,6 +1867,7 @@ class EventService {
1867
1867
  this.utilitySvc = utilitySvc;
1868
1868
  this.todaysEvents = [];
1869
1869
  this.todaysLiveEvents = [];
1870
+ this.keySpeakerEvents = [];
1870
1871
  this.eventsSubject = new Subject();
1871
1872
  this.events$ = this.eventsSubject.asObservable();
1872
1873
  this.eventsChatbotSubject = new Subject();
@@ -2015,6 +2016,7 @@ class EventService {
2015
2016
  if (eventObj !== undefined) {
2016
2017
  this.todaysEvents = [];
2017
2018
  this.todaysLiveEvents = [];
2019
+ this.keySpeakerEvents = [];
2018
2020
  const data = eventObj;
2019
2021
  let isEventLive = false;
2020
2022
  let isEventRecording = false;
@@ -2096,8 +2098,10 @@ class EventService {
2096
2098
  if (isToday && isEventLive) {
2097
2099
  this.todaysLiveEvents.push(eventDataObj);
2098
2100
  }
2101
+ this.keySpeakerEvents.push(eventDataObj);
2099
2102
  }));
2100
2103
  this.todaysLiveEvents = this.sortItemByTime(this.todaysLiveEvents);
2104
+ this.keySpeakerEvents = this.getKeySpeakerEvents(this.keySpeakerEvents);
2101
2105
  this.todaysEvents = this.getTodaysEvents(this.todaysEvents);
2102
2106
  }
2103
2107
  }
@@ -2114,6 +2118,19 @@ class EventService {
2114
2118
  this.todaysEvents = [...liveEvents, ...futureEvents, ...pastEvents];
2115
2119
  return this.todaysEvents;
2116
2120
  }
2121
+ getKeySpeakerEvents(eventData) {
2122
+ let liveEvents = [];
2123
+ let pastEvents = [];
2124
+ let futureEvents = [];
2125
+ liveEvents = this.todaysLiveEvents;
2126
+ pastEvents = eventData.filter(((pastEvent) => pastEvent.isEventPast));
2127
+ futureEvents = eventData.filter(((futureEvent) => futureEvent.isEventFuture));
2128
+ liveEvents = this.sortItemByTimeAsc(liveEvents);
2129
+ futureEvents = this.sortItemByTimeAsc(futureEvents);
2130
+ pastEvents = this.sortItemByTime(pastEvents);
2131
+ this.keySpeakerEvents = [...liveEvents, ...futureEvents, ...pastEvents];
2132
+ return this.keySpeakerEvents;
2133
+ }
2117
2134
  }
2118
2135
  EventService.decorators = [
2119
2136
  { type: Injectable, args: [{
@@ -2128,6 +2145,7 @@ EventService.ctorParameters = () => [
2128
2145
  if (false) {
2129
2146
  EventService.prototype.todaysEvents;
2130
2147
  EventService.prototype.todaysLiveEvents;
2148
+ EventService.prototype.keySpeakerEvents;
2131
2149
  EventService.prototype.eventsSubject;
2132
2150
  EventService.prototype.events$;
2133
2151
  EventService.prototype.eventsChatbotSubject;