@vendasta/meetings 0.99.1 → 0.99.3

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.
Files changed (44) hide show
  1. package/esm2020/lib/_internal/google-meet.api.service.mjs +7 -2
  2. package/esm2020/lib/_internal/index.mjs +1 -2
  3. package/esm2020/lib/_internal/interfaces/google-meet.interface.mjs +1 -1
  4. package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
  5. package/esm2020/lib/_internal/interfaces/meeting-guest.interface.mjs +1 -1
  6. package/esm2020/lib/_internal/interfaces/meeting-type.interface.mjs +1 -1
  7. package/esm2020/lib/_internal/interfaces/shared.interface.mjs +1 -1
  8. package/esm2020/lib/_internal/objects/google-meet.mjs +109 -1
  9. package/esm2020/lib/_internal/objects/index.mjs +3 -4
  10. package/esm2020/lib/_internal/objects/meeting-guest.mjs +33 -1
  11. package/esm2020/lib/_internal/objects/meeting-type.mjs +16 -1
  12. package/esm2020/lib/_internal/objects/shared.mjs +4 -1
  13. package/esm2020/lib/guest/guest.service.mjs +1 -1
  14. package/esm2020/lib/index.mjs +1 -2
  15. package/esm2020/lib/shared/host-user.mjs +3 -2
  16. package/esm2020/lib/shared/meeting-type.mjs +8 -2
  17. package/fesm2015/vendasta-meetings.mjs +499 -411
  18. package/fesm2015/vendasta-meetings.mjs.map +1 -1
  19. package/fesm2020/vendasta-meetings.mjs +211 -123
  20. package/fesm2020/vendasta-meetings.mjs.map +1 -1
  21. package/lib/_internal/google-meet.api.service.d.ts +3 -2
  22. package/lib/_internal/index.d.ts +0 -1
  23. package/lib/_internal/interfaces/google-meet.interface.d.ts +20 -0
  24. package/lib/_internal/interfaces/index.d.ts +2 -3
  25. package/lib/_internal/interfaces/meeting-guest.interface.d.ts +6 -0
  26. package/lib/_internal/interfaces/meeting-type.interface.d.ts +3 -0
  27. package/lib/_internal/interfaces/shared.interface.d.ts +1 -0
  28. package/lib/_internal/objects/google-meet.d.ts +29 -0
  29. package/lib/_internal/objects/index.d.ts +2 -3
  30. package/lib/_internal/objects/meeting-guest.d.ts +9 -0
  31. package/lib/_internal/objects/meeting-type.d.ts +3 -0
  32. package/lib/_internal/objects/shared.d.ts +1 -0
  33. package/lib/index.d.ts +0 -1
  34. package/lib/shared/host-user.d.ts +1 -0
  35. package/lib/shared/meeting-type.d.ts +3 -0
  36. package/package.json +1 -1
  37. package/esm2020/lib/_internal/interfaces/meeting-bot.interface.mjs +0 -8
  38. package/esm2020/lib/_internal/meeting-bot-api.api.service.mjs +0 -38
  39. package/esm2020/lib/_internal/objects/meeting-bot.mjs +0 -36
  40. package/esm2020/lib/meeting-bot.service.mjs +0 -24
  41. package/lib/_internal/interfaces/meeting-bot.interface.d.ts +0 -5
  42. package/lib/_internal/meeting-bot-api.api.service.d.ts +0 -14
  43. package/lib/_internal/objects/meeting-bot.d.ts +0 -10
  44. package/lib/meeting-bot.service.d.ts +0 -10
@@ -251,6 +251,79 @@ export class GoogleMeetEntryPoint {
251
251
  return toReturn;
252
252
  }
253
253
  }
254
+ export class GoogleMeetListMeetingsRequest {
255
+ static fromProto(proto) {
256
+ let m = new GoogleMeetListMeetingsRequest();
257
+ m = Object.assign(m, proto);
258
+ if (proto.pageSize) {
259
+ m.pageSize = parseInt(proto.pageSize, 10);
260
+ }
261
+ if (proto.timeMin) {
262
+ m.timeMin = new Date(proto.timeMin);
263
+ }
264
+ if (proto.timeMax) {
265
+ m.timeMax = new Date(proto.timeMax);
266
+ }
267
+ return m;
268
+ }
269
+ constructor(kwargs) {
270
+ if (!kwargs) {
271
+ return;
272
+ }
273
+ Object.assign(this, kwargs);
274
+ }
275
+ toApiJson() {
276
+ const toReturn = {};
277
+ if (typeof this.userId !== 'undefined') {
278
+ toReturn['userId'] = this.userId;
279
+ }
280
+ if (typeof this.pageSize !== 'undefined') {
281
+ toReturn['pageSize'] = this.pageSize;
282
+ }
283
+ if (typeof this.pageToken !== 'undefined') {
284
+ toReturn['pageToken'] = this.pageToken;
285
+ }
286
+ if (typeof this.syncToken !== 'undefined') {
287
+ toReturn['syncToken'] = this.syncToken;
288
+ }
289
+ if (typeof this.timeMin !== 'undefined' && this.timeMin !== null) {
290
+ toReturn['timeMin'] = 'toApiJson' in this.timeMin ? this.timeMin.toApiJson() : this.timeMin;
291
+ }
292
+ if (typeof this.timeMax !== 'undefined' && this.timeMax !== null) {
293
+ toReturn['timeMax'] = 'toApiJson' in this.timeMax ? this.timeMax.toApiJson() : this.timeMax;
294
+ }
295
+ return toReturn;
296
+ }
297
+ }
298
+ export class GoogleMeetListMeetingsResponse {
299
+ static fromProto(proto) {
300
+ let m = new GoogleMeetListMeetingsResponse();
301
+ m = Object.assign(m, proto);
302
+ if (proto.meetings) {
303
+ m.meetings = proto.meetings.map(GoogleMeetMeeting.fromProto);
304
+ }
305
+ return m;
306
+ }
307
+ constructor(kwargs) {
308
+ if (!kwargs) {
309
+ return;
310
+ }
311
+ Object.assign(this, kwargs);
312
+ }
313
+ toApiJson() {
314
+ const toReturn = {};
315
+ if (typeof this.meetings !== 'undefined' && this.meetings !== null) {
316
+ toReturn['meetings'] = 'toApiJson' in this.meetings ? this.meetings.toApiJson() : this.meetings;
317
+ }
318
+ if (typeof this.nextPageToken !== 'undefined') {
319
+ toReturn['nextPageToken'] = this.nextPageToken;
320
+ }
321
+ if (typeof this.nextSyncToken !== 'undefined') {
322
+ toReturn['nextSyncToken'] = this.nextSyncToken;
323
+ }
324
+ return toReturn;
325
+ }
326
+ }
254
327
  export class GoogleMeetMeeting {
255
328
  static fromProto(proto) {
256
329
  let m = new GoogleMeetMeeting();
@@ -279,6 +352,9 @@ export class GoogleMeetMeeting {
279
352
  if (proto.creator) {
280
353
  m.creator = GoogleMeetMeetingCreator.fromProto(proto.creator);
281
354
  }
355
+ if (proto.organizer) {
356
+ m.organizer = GoogleMeetMeetingOrganizer.fromProto(proto.organizer);
357
+ }
282
358
  return m;
283
359
  }
284
360
  constructor(kwargs) {
@@ -376,6 +452,9 @@ export class GoogleMeetMeeting {
376
452
  if (typeof this.updated !== 'undefined') {
377
453
  toReturn['updated'] = this.updated;
378
454
  }
455
+ if (typeof this.organizer !== 'undefined' && this.organizer !== null) {
456
+ toReturn['organizer'] = 'toApiJson' in this.organizer ? this.organizer.toApiJson() : this.organizer;
457
+ }
379
458
  return toReturn;
380
459
  }
381
460
  }
@@ -484,6 +563,35 @@ export class GoogleMeetMeetingDateTime {
484
563
  return toReturn;
485
564
  }
486
565
  }
566
+ export class GoogleMeetMeetingOrganizer {
567
+ static fromProto(proto) {
568
+ let m = new GoogleMeetMeetingOrganizer();
569
+ m = Object.assign(m, proto);
570
+ return m;
571
+ }
572
+ constructor(kwargs) {
573
+ if (!kwargs) {
574
+ return;
575
+ }
576
+ Object.assign(this, kwargs);
577
+ }
578
+ toApiJson() {
579
+ const toReturn = {};
580
+ if (typeof this.displayName !== 'undefined') {
581
+ toReturn['displayName'] = this.displayName;
582
+ }
583
+ if (typeof this.email !== 'undefined') {
584
+ toReturn['email'] = this.email;
585
+ }
586
+ if (typeof this.id !== 'undefined') {
587
+ toReturn['id'] = this.id;
588
+ }
589
+ if (typeof this.self !== 'undefined') {
590
+ toReturn['self'] = this.self;
591
+ }
592
+ return toReturn;
593
+ }
594
+ }
487
595
  export class GoogleMeetMeetingReminder {
488
596
  static fromProto(proto) {
489
597
  let m = new GoogleMeetMeetingReminder();
@@ -536,4 +644,4 @@ export class GoogleMeetMeetingReminders {
536
644
  return toReturn;
537
645
  }
538
646
  }
539
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1lZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9nb29nbGUtbWVldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sd0JBQXdCO0lBUWpDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDdkMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQUMsQ0FBQyxDQUFDLGtCQUFrQixHQUFHLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUFDO1FBQ3hILElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsaUNBQWlDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUFDO1FBQzlHLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUMvRixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQTRDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQUM7UUFDN0YsSUFBSSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxrQkFBMEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1NBQUM7UUFDM08sSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsYUFBcUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUFDO1FBQzdNLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLFdBQW1CLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7U0FBQztRQUNqTSxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFDO1FBQ3hFLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQUM7UUFDcEYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGlDQUFpQztJQUcxQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxpQ0FBaUMsRUFBRSxDQUFDO1FBQ2hELENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQXFEO1FBQzdELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUM7UUFDdkYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLDRCQUE0QjtJQUtyQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSw0QkFBNEIsRUFBRSxDQUFDO1FBQzNDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFBQyxDQUFDLENBQUMsR0FBRyxHQUFHLCtCQUErQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FBQztRQUM5RSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQWdEO1FBQ3hELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQUM7UUFDOUUsSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsR0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQUM7UUFDakosSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBQztRQUNyRSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sK0JBQStCO0lBR3hDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLCtCQUErQixFQUFFLENBQUM7UUFDOUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBbUQ7UUFDM0QsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBQztRQUNyRSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8saUNBQWlDO0lBSzFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLGlDQUFpQyxFQUFFLENBQUM7UUFDaEQsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLHFCQUFxQixFQUFFO1lBQUMsQ0FBQyxDQUFDLHFCQUFxQixHQUFHLCtCQUErQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUFDO1FBQ3BJLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsaUNBQWlDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUFDO1FBQ3pGLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBcUQ7UUFDN0QsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxxQkFBNkIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1NBQUM7UUFDN1AsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNwRixJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxNQUFjLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FBQztRQUNuSyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sOEJBQThCO0lBSXZDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLDhCQUE4QixFQUFFLENBQUM7UUFDN0MsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUFDO1FBQzVFLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBa0Q7UUFDMUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FBQztRQUN2RixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFlLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUN6SyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sK0JBQStCO0lBS3hDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLCtCQUErQixFQUFFLENBQUM7UUFDOUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUFDO1FBQzVFLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBbUQ7UUFDM0QsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNwRixJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUFDO1FBQ3ZGLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQ3pLLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxvQkFBb0I7SUFZN0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUNuQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUF3QztRQUNoRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUFDO1FBQ3ZGLElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1NBQUM7UUFDL0csSUFBSSxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUFDO1FBQ25HLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUM7UUFDeEUsSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FBQztRQUMxRixJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQ2pGLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQUM7UUFDakYsSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7U0FBQztRQUNsRSxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUFDO1FBQ3ZGLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQUM7UUFDbEUsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtJQStCMUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNoQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUFDO1FBQzlGLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcsd0JBQXdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUFDO1FBQ3hHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcseUJBQXlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUFDO1FBQ3hFLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO1lBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUFDO1FBQ2xILElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsMEJBQTBCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUFDO1FBQzNGLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FBQztRQUNoRSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFBQyxDQUFDLENBQUMsS0FBSyxHQUFHLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FBQztRQUM5RSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFBQyxDQUFDLENBQUMsT0FBTyxHQUFHLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FBQztRQUNuRixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQXFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQUM7UUFDekcsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUFDO1FBQ3JMLElBQUksT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQUM7UUFDekcsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUM5RSxJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLGNBQXNCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7U0FBQztRQUNuTixJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUFDO1FBQzFGLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLEdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUFDO1FBQ2pKLElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1NBQUM7UUFDL0csSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBQztRQUNyRSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUFDO1FBQzlFLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQUM7UUFDL0QsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBQztRQUNyRSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQ2pGLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQUM7UUFDM0UsSUFBSSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxpQkFBeUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQUM7UUFDck8sSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FBQztRQUN2RixJQUFJLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztTQUFDO1FBQy9HLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLFNBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNyTCxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQ2pGLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLEtBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFDO1FBQzdKLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQUM7UUFDM0UsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUM5RSxJQUFJLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUFDO1FBQzdGLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUM7UUFDdkYsSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FBQztRQUMxRixJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQ2pGLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQUM7UUFDOUUsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsT0FBZSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQUM7UUFDekssSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUM5RSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8seUJBQXlCO0lBWWxDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDeEMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FBQztRQUN4RixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQTZDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQUM7UUFDekcsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FBQztRQUM5RSxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUFDO1FBQzFGLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQUM7UUFDeEUsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7U0FBQztRQUMvRCxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQ2pGLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQUM7UUFDcEYsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FBQztRQUNqRixJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1NBQUM7UUFDbkcsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBQztRQUNyRSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sd0JBQXdCO0lBTWpDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDdkMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBNEM7UUFDcEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FBQztRQUMxRixJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFDO1FBQ3hFLElBQUksT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQUM7UUFDL0QsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBQztRQUNyRSxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8seUJBQXlCO0lBS2xDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDeEMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBNkM7UUFDckQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FBQztRQUNyRSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUFDO1FBQ2pGLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQUM7UUFDakYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtJQUlsQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBQ3hDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFBQyxDQUFDLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDN0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUE2QztRQUNyRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUFDO1FBQzNFLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQUM7UUFDOUUsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLDBCQUEwQjtJQUluQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSwwQkFBMEIsRUFBRSxDQUFDO1FBQ3pDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQUM7UUFDOUYsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUE4QztRQUN0RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxTQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQUM7UUFDckwsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FBQztRQUN2RixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRDb25mZXJlbmNlRGF0YSBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhSW50ZXJmYWNlIHtcbiAgICBjb25mZXJlbmNlSWQ6IHN0cmluZztcbiAgICBjb25mZXJlbmNlU29sdXRpb246IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb247XG4gICAgY3JlYXRlUmVxdWVzdDogR29vZ2xlTWVldENyZWF0ZUNvbmZlcmVuY2VSZXF1ZXN0O1xuICAgIGVudHJ5UG9pbnRzOiBHb29nbGVNZWV0RW50cnlQb2ludFtdO1xuICAgIG5vdGVzOiBzdHJpbmc7XG4gICAgc2lnbmF0dXJlOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGEge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGEoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY29uZmVyZW5jZVNvbHV0aW9uKSB7bS5jb25mZXJlbmNlU29sdXRpb24gPSBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uLmZyb21Qcm90byhwcm90by5jb25mZXJlbmNlU29sdXRpb24pO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZVJlcXVlc3QpIHttLmNyZWF0ZVJlcXVlc3QgPSBHb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3QuZnJvbVByb3RvKHByb3RvLmNyZWF0ZVJlcXVlc3QpO31cbiAgICAgICAgaWYgKHByb3RvLmVudHJ5UG9pbnRzKSB7bS5lbnRyeVBvaW50cyA9IHByb3RvLmVudHJ5UG9pbnRzLm1hcChHb29nbGVNZWV0RW50cnlQb2ludC5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q29uZmVyZW5jZURhdGFJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25mZXJlbmNlSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbmZlcmVuY2VJZCddID0gdGhpcy5jb25mZXJlbmNlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmVyZW5jZVNvbHV0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWydjb25mZXJlbmNlU29sdXRpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY29uZmVyZW5jZVNvbHV0aW9uID8gKHRoaXMuY29uZmVyZW5jZVNvbHV0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNyZWF0ZVJlcXVlc3QgIT09IG51bGwpIHt0b1JldHVyblsnY3JlYXRlUmVxdWVzdCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jcmVhdGVSZXF1ZXN0ID8gKHRoaXMuY3JlYXRlUmVxdWVzdCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jcmVhdGVSZXF1ZXN0O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVudHJ5UG9pbnRzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVudHJ5UG9pbnRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VudHJ5UG9pbnRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmVudHJ5UG9pbnRzID8gKHRoaXMuZW50cnlQb2ludHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW50cnlQb2ludHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubm90ZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25vdGVzJ10gPSB0aGlzLm5vdGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNpZ25hdHVyZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2lnbmF0dXJlJ10gPSB0aGlzLnNpZ25hdHVyZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXMgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRDb25mZXJlbmNlUmVxdWVzdFN0YXR1c0ludGVyZmFjZSB7XG4gICAgc3RhdHVzQ29kZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGF0dXNDb2RlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdGF0dXNDb2RlJ10gPSB0aGlzLnN0YXR1c0NvZGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbiBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbkludGVyZmFjZSB7XG4gICAgaWNvblVyaTogc3RyaW5nO1xuICAgIGtleTogR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleTtcbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5rZXkpIHttLmtleSA9IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXkuZnJvbVByb3RvKHByb3RvLmtleSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pY29uVXJpICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpY29uVXJpJ10gPSB0aGlzLmljb25Vcmk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMua2V5ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmtleSAhPT0gbnVsbCkge3RvUmV0dXJuWydrZXknXSA9ICd0b0FwaUpzb24nIGluIHRoaXMua2V5ID8gKHRoaXMua2V5IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmtleTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleSBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleUludGVyZmFjZSB7XG4gICAgdHlwZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0eXBlJ10gPSB0aGlzLnR5cGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENyZWF0ZUNvbmZlcmVuY2VSZXF1ZXN0IGltcGxlbWVudHMgaS5Hb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGNvbmZlcmVuY2VTb2x1dGlvbktleTogR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleTtcbiAgICByZXF1ZXN0SWQ6IHN0cmluZztcbiAgICBzdGF0dXM6IEdvb2dsZU1lZXRDb25mZXJlbmNlUmVxdWVzdFN0YXR1cztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5jb25mZXJlbmNlU29sdXRpb25LZXkpIHttLmNvbmZlcmVuY2VTb2x1dGlvbktleSA9IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXkuZnJvbVByb3RvKHByb3RvLmNvbmZlcmVuY2VTb2x1dGlvbktleSk7fVxuICAgICAgICBpZiAocHJvdG8uc3RhdHVzKSB7bS5zdGF0dXMgPSBHb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXMuZnJvbVByb3RvKHByb3RvLnN0YXR1cyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbktleSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb25mZXJlbmNlU29sdXRpb25LZXkgIT09IG51bGwpIHt0b1JldHVyblsnY29uZmVyZW5jZVNvbHV0aW9uS2V5J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbktleSA/ICh0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbktleSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb25mZXJlbmNlU29sdXRpb25LZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVxdWVzdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZXF1ZXN0SWQnXSA9IHRoaXMucmVxdWVzdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXR1cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdGF0dXMgIT09IG51bGwpIHt0b1JldHVyblsnc3RhdHVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXR1cyA/ICh0aGlzLnN0YXR1cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGF0dXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXF1ZXN0IGltcGxlbWVudHMgaS5Hb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGNhbGVuZGVySWQ6IHN0cmluZztcbiAgICBtZWV0aW5nOiBHb29nbGVNZWV0TWVldGluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5tZWV0aW5nKSB7bS5tZWV0aW5nID0gR29vZ2xlTWVldE1lZXRpbmcuZnJvbVByb3RvKHByb3RvLm1lZXRpbmcpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWxlbmRlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYWxlbmRlcklkJ10gPSB0aGlzLmNhbGVuZGVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWV0aW5nICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZXRpbmcnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVldGluZyA/ICh0aGlzLm1lZXRpbmcgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVldGluZzt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBpYW1Vc2VySWQ6IHN0cmluZztcbiAgICBjYWxlbmRlcklkOiBzdHJpbmc7XG4gICAgbWVldGluZzogR29vZ2xlTWVldE1lZXRpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5tZWV0aW5nKSB7bS5tZWV0aW5nID0gR29vZ2xlTWVldE1lZXRpbmcuZnJvbVByb3RvKHByb3RvLm1lZXRpbmcpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWFtVXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpYW1Vc2VySWQnXSA9IHRoaXMuaWFtVXNlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbGVuZGVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NhbGVuZGVySWQnXSA9IHRoaXMuY2FsZW5kZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLm1lZXRpbmcgIT09IG51bGwpIHt0b1JldHVyblsnbWVldGluZyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZWV0aW5nID8gKHRoaXMubWVldGluZyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZWV0aW5nO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRFbnRyeVBvaW50IGltcGxlbWVudHMgaS5Hb29nbGVNZWV0RW50cnlQb2ludEludGVyZmFjZSB7XG4gICAgYWNjZXNzQ29kZTogc3RyaW5nO1xuICAgIGVudHJ5UG9pbnRGZWF0dXJlczogc3RyaW5nW107XG4gICAgZW50cnlQb2ludFR5cGU6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIG1lZXRpbmdDb2RlOiBzdHJpbmc7XG4gICAgcGFzc2NvZGU6IHN0cmluZztcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIHBpbjogc3RyaW5nO1xuICAgIHJlZ2lvbkNvZGU6IHN0cmluZztcbiAgICB1cmk6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRFbnRyeVBvaW50IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldEVudHJ5UG9pbnQoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRFbnRyeVBvaW50SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjZXNzQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWNjZXNzQ29kZSddID0gdGhpcy5hY2Nlc3NDb2RlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVudHJ5UG9pbnRGZWF0dXJlcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZW50cnlQb2ludEZlYXR1cmVzJ10gPSB0aGlzLmVudHJ5UG9pbnRGZWF0dXJlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbnRyeVBvaW50VHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZW50cnlQb2ludFR5cGUnXSA9IHRoaXMuZW50cnlQb2ludFR5cGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGFiZWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xhYmVsJ10gPSB0aGlzLmxhYmVsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdDb2RlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nQ29kZSddID0gdGhpcy5tZWV0aW5nQ29kZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXNzY29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFzc2NvZGUnXSA9IHRoaXMucGFzc2NvZGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFzc3dvcmQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bhc3N3b3JkJ10gPSB0aGlzLnBhc3N3b3JkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBpbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGluJ10gPSB0aGlzLnBpbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWdpb25Db2RlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWdpb25Db2RlJ10gPSB0aGlzLnJlZ2lvbkNvZGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXJpICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1cmknXSA9IHRoaXMudXJpO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0TWVldGluZ0ludGVyZmFjZSB7XG4gICAgYW55b25lQ2FuQWRkU2VsZjogYm9vbGVhbjtcbiAgICBhdHRlbmRlZXM6IEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWVbXTtcbiAgICBhdHRlbmRlZXNPbWl0dGVkOiBib29sZWFuO1xuICAgIGNvbG9ySWQ6IHN0cmluZztcbiAgICBjb25mZXJlbmNlRGF0YTogR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgZW5kOiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lO1xuICAgIGVuZFRpbWVVbnNwZWNpZmllZDogYm9vbGVhbjtcbiAgICBldGFnOiBzdHJpbmc7XG4gICAgaWNhbFVpZDogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAga2luZDogc3RyaW5nO1xuICAgIGxvY2F0aW9uOiBzdHJpbmc7XG4gICAgbG9ja2VkOiBib29sZWFuO1xuICAgIG9yaWdpbmFsU3RhcnRUaW1lOiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lO1xuICAgIHJlY3VycmVuY2U6IHN0cmluZ1tdO1xuICAgIHJlY3VycmluZ01lZXRpbmdJZDogc3RyaW5nO1xuICAgIHJlbWluZGVyczogR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnM7XG4gICAgc2VxdWVuY2U6IG51bWJlcjtcbiAgICBzdGFydDogR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZTtcbiAgICBzdGF0dXM6IHN0cmluZztcbiAgICBzdW1tYXJ5OiBzdHJpbmc7XG4gICAgdHJhbnNwYXJlbmN5OiBzdHJpbmc7XG4gICAgdmlzaWJpbGl0eTogc3RyaW5nO1xuICAgIGhhbmdvdXRMaW5rOiBzdHJpbmc7XG4gICAgaHRtbExpbms6IHN0cmluZztcbiAgICBjcmVhdGVkOiBzdHJpbmc7XG4gICAgY3JlYXRvcjogR29vZ2xlTWVldE1lZXRpbmdDcmVhdG9yO1xuICAgIHVwZGF0ZWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldE1lZXRpbmcoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYXR0ZW5kZWVzKSB7bS5hdHRlbmRlZXMgPSBwcm90by5hdHRlbmRlZXMubWFwKEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWUuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5jb25mZXJlbmNlRGF0YSkge20uY29uZmVyZW5jZURhdGEgPSBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGEuZnJvbVByb3RvKHByb3RvLmNvbmZlcmVuY2VEYXRhKTt9XG4gICAgICAgIGlmIChwcm90by5lbmQpIHttLmVuZCA9IEdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWUuZnJvbVByb3RvKHByb3RvLmVuZCk7fVxuICAgICAgICBpZiAocHJvdG8ub3JpZ2luYWxTdGFydFRpbWUpIHttLm9yaWdpbmFsU3RhcnRUaW1lID0gR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZS5mcm9tUHJvdG8ocHJvdG8ub3JpZ2luYWxTdGFydFRpbWUpO31cbiAgICAgICAgaWYgKHByb3RvLnJlbWluZGVycykge20ucmVtaW5kZXJzID0gR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnMuZnJvbVByb3RvKHByb3RvLnJlbWluZGVycyk7fVxuICAgICAgICBpZiAocHJvdG8uc2VxdWVuY2UpIHttLnNlcXVlbmNlID0gcGFyc2VJbnQocHJvdG8uc2VxdWVuY2UsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5zdGFydCkge20uc3RhcnQgPSBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lLmZyb21Qcm90byhwcm90by5zdGFydCk7fVxuICAgICAgICBpZiAocHJvdG8uY3JlYXRvcikge20uY3JlYXRvciA9IEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvci5mcm9tUHJvdG8ocHJvdG8uY3JlYXRvcik7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRNZWV0aW5nSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYW55b25lQ2FuQWRkU2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYW55b25lQ2FuQWRkU2VsZiddID0gdGhpcy5hbnlvbmVDYW5BZGRTZWxmO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dGVuZGVlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hdHRlbmRlZXMgIT09IG51bGwpIHt0b1JldHVyblsnYXR0ZW5kZWVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmF0dGVuZGVlcyA/ICh0aGlzLmF0dGVuZGVlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hdHRlbmRlZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXR0ZW5kZWVzT21pdHRlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYXR0ZW5kZWVzT21pdHRlZCddID0gdGhpcy5hdHRlbmRlZXNPbWl0dGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbG9ySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbG9ySWQnXSA9IHRoaXMuY29sb3JJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25mZXJlbmNlRGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb25mZXJlbmNlRGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydjb25mZXJlbmNlRGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jb25mZXJlbmNlRGF0YSA/ICh0aGlzLmNvbmZlcmVuY2VEYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNvbmZlcmVuY2VEYXRhO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkZXNjcmlwdGlvbiddID0gdGhpcy5kZXNjcmlwdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZW5kICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VuZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbmQgPyAodGhpcy5lbmQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW5kO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVuZFRpbWVVbnNwZWNpZmllZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZW5kVGltZVVuc3BlY2lmaWVkJ10gPSB0aGlzLmVuZFRpbWVVbnNwZWNpZmllZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldGFnICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydldGFnJ10gPSB0aGlzLmV0YWc7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWNhbFVpZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWNhbFVpZCddID0gdGhpcy5pY2FsVWlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5raW5kICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydraW5kJ10gPSB0aGlzLmtpbmQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvY2F0aW9uJ10gPSB0aGlzLmxvY2F0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2tlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9ja2VkJ10gPSB0aGlzLmxvY2tlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5hbFN0YXJ0VGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5vcmlnaW5hbFN0YXJ0VGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydvcmlnaW5hbFN0YXJ0VGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5vcmlnaW5hbFN0YXJ0VGltZSA/ICh0aGlzLm9yaWdpbmFsU3RhcnRUaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm9yaWdpbmFsU3RhcnRUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlY3VycmVuY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlY3VycmVuY2UnXSA9IHRoaXMucmVjdXJyZW5jZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWN1cnJpbmdNZWV0aW5nSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlY3VycmluZ01lZXRpbmdJZCddID0gdGhpcy5yZWN1cnJpbmdNZWV0aW5nSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVtaW5kZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnJlbWluZGVycyAhPT0gbnVsbCkge3RvUmV0dXJuWydyZW1pbmRlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucmVtaW5kZXJzID8gKHRoaXMucmVtaW5kZXJzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnJlbWluZGVyczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZXF1ZW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VxdWVuY2UnXSA9IHRoaXMuc2VxdWVuY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnQgPyAodGhpcy5zdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGF0dXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N0YXR1cyddID0gdGhpcy5zdGF0dXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3VtbWFyeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3VtbWFyeSddID0gdGhpcy5zdW1tYXJ5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRyYW5zcGFyZW5jeSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHJhbnNwYXJlbmN5J10gPSB0aGlzLnRyYW5zcGFyZW5jeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52aXNpYmlsaXR5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd2aXNpYmlsaXR5J10gPSB0aGlzLnZpc2liaWxpdHk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGFuZ291dExpbmsgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hhbmdvdXRMaW5rJ10gPSB0aGlzLmhhbmdvdXRMaW5rO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmh0bWxMaW5rICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydodG1sTGluayddID0gdGhpcy5odG1sTGluazt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjcmVhdGVkJ10gPSB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3JlYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jcmVhdG9yICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NyZWF0b3InXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY3JlYXRvciA/ICh0aGlzLmNyZWF0b3IgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY3JlYXRvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51cGRhdGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1cGRhdGVkJ10gPSB0aGlzLnVwZGF0ZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZSBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZUludGVyZmFjZSB7XG4gICAgYWRkaXRpb25hbEd1ZXN0czogbnVtYmVyO1xuICAgIGNvbW1lbnQ6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICBvcHRpb25hbDogYm9vbGVhbjtcbiAgICBvcmdhbml6ZXI6IGJvb2xlYW47XG4gICAgcmVzb3VyY2U6IGJvb2xlYW47XG4gICAgcmVzcG9uc2VTdGF0dXM6IHN0cmluZztcbiAgICBzZWxmOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWUoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYWRkaXRpb25hbEd1ZXN0cykge20uYWRkaXRpb25hbEd1ZXN0cyA9IHBhcnNlSW50KHByb3RvLmFkZGl0aW9uYWxHdWVzdHMsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFkZGl0aW9uYWxHdWVzdHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FkZGl0aW9uYWxHdWVzdHMnXSA9IHRoaXMuYWRkaXRpb25hbEd1ZXN0czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21tZW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb21tZW50J10gPSB0aGlzLmNvbW1lbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzcGxheU5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rpc3BsYXlOYW1lJ10gPSB0aGlzLmRpc3BsYXlOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9uYWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29wdGlvbmFsJ10gPSB0aGlzLm9wdGlvbmFsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yZ2FuaXplciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JnYW5pemVyJ10gPSB0aGlzLm9yZ2FuaXplcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNvdXJjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVzb3VyY2UnXSA9IHRoaXMucmVzb3VyY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzcG9uc2VTdGF0dXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Jlc3BvbnNlU3RhdHVzJ10gPSB0aGlzLnJlc3BvbnNlU3RhdHVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlbGYgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlbGYnXSA9IHRoaXMuc2VsZjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0TWVldGluZ0NyZWF0b3IgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvckludGVyZmFjZSB7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgc2VsZjogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvciB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvcigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdDcmVhdG9ySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzcGxheU5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rpc3BsYXlOYW1lJ10gPSB0aGlzLmRpc3BsYXlOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VsZiddID0gdGhpcy5zZWxmO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWUgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWVJbnRlcmZhY2Uge1xuICAgIGRhdGU6IHN0cmluZztcbiAgICBkYXRlVGltZTogc3RyaW5nO1xuICAgIHRpbWVab25lOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRhdGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RhdGUnXSA9IHRoaXMuZGF0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kYXRlVGltZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGF0ZVRpbWUnXSA9IHRoaXMuZGF0ZVRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZVpvbmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RpbWVab25lJ10gPSB0aGlzLnRpbWVab25lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJJbnRlcmZhY2Uge1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIG1pbnV0ZXM6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLm1pbnV0ZXMpIHttLm1pbnV0ZXMgPSBwYXJzZUludChwcm90by5taW51dGVzLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRob2QgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21ldGhvZCddID0gdGhpcy5tZXRob2Q7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWludXRlcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWludXRlcyddID0gdGhpcy5taW51dGVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0TWVldGluZ1JlbWluZGVyc0ludGVyZmFjZSB7XG4gICAgb3ZlcnJpZGVzOiBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyW107XG4gICAgdXNlRGVmYXVsdDogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ub3ZlcnJpZGVzKSB7bS5vdmVycmlkZXMgPSBwcm90by5vdmVycmlkZXMubWFwKEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vdmVycmlkZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMub3ZlcnJpZGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ292ZXJyaWRlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5vdmVycmlkZXMgPyAodGhpcy5vdmVycmlkZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMub3ZlcnJpZGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZURlZmF1bHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZURlZmF1bHQnXSA9IHRoaXMudXNlRGVmYXVsdDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
647
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1lZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9nb29nbGUtbWVldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sd0JBQXdCO0lBUWpDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDdkMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQUMsQ0FBQyxDQUFDLGtCQUFrQixHQUFHLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUFDO1FBQ3hILElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsaUNBQWlDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUFDO1FBQzlHLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7U0FBQztRQUMvRixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQTRDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFD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Q2IsQ0FBQztJQUVELFlBQVksTUFBOEM7UUFDdEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUFDO1FBQ3JMLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1NBQUM7UUFDdkYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGEgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRDb25mZXJlbmNlRGF0YUludGVyZmFjZSB7XG4gICAgY29uZmVyZW5jZUlkOiBzdHJpbmc7XG4gICAgY29uZmVyZW5jZVNvbHV0aW9uOiBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uO1xuICAgIGNyZWF0ZVJlcXVlc3Q6IEdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdDtcbiAgICBlbnRyeVBvaW50czogR29vZ2xlTWVldEVudHJ5UG9pbnRbXTtcbiAgICBub3Rlczogc3RyaW5nO1xuICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNvbmZlcmVuY2VTb2x1dGlvbikge20uY29uZmVyZW5jZVNvbHV0aW9uID0gR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbi5mcm9tUHJvdG8ocHJvdG8uY29uZmVyZW5jZVNvbHV0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by5jcmVhdGVSZXF1ZXN0KSB7bS5jcmVhdGVSZXF1ZXN0ID0gR29vZ2xlTWVldENyZWF0ZUNvbmZlcmVuY2VSZXF1ZXN0LmZyb21Qcm90byhwcm90by5jcmVhdGVSZXF1ZXN0KTt9XG4gICAgICAgIGlmIChwcm90by5lbnRyeVBvaW50cykge20uZW50cnlQb2ludHMgPSBwcm90by5lbnRyeVBvaW50cy5tYXAoR29vZ2xlTWVldEVudHJ5UG9pbnQuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmVyZW5jZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb25mZXJlbmNlSWQnXSA9IHRoaXMuY29uZmVyZW5jZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb25mZXJlbmNlU29sdXRpb24gIT09IG51bGwpIHt0b1JldHVyblsnY29uZmVyZW5jZVNvbHV0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbiA/ICh0aGlzLmNvbmZlcmVuY2VTb2x1dGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb25mZXJlbmNlU29sdXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3JlYXRlUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jcmVhdGVSZXF1ZXN0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NyZWF0ZVJlcXVlc3QnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY3JlYXRlUmVxdWVzdCA/ICh0aGlzLmNyZWF0ZVJlcXVlc3QgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY3JlYXRlUmVxdWVzdDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbnRyeVBvaW50cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5lbnRyeVBvaW50cyAhPT0gbnVsbCkge3RvUmV0dXJuWydlbnRyeVBvaW50cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5lbnRyeVBvaW50cyA/ICh0aGlzLmVudHJ5UG9pbnRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmVudHJ5UG9pbnRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5vdGVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydub3RlcyddID0gdGhpcy5ub3Rlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaWduYXR1cmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NpZ25hdHVyZSddID0gdGhpcy5zaWduYXR1cmU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXNJbnRlcmZhY2Uge1xuICAgIHN0YXR1c0NvZGU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRDb25mZXJlbmNlUmVxdWVzdFN0YXR1cyB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDb25mZXJlbmNlUmVxdWVzdFN0YXR1cygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhdHVzQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3RhdHVzQ29kZSddID0gdGhpcy5zdGF0dXNDb2RlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb24gaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25JbnRlcmZhY2Uge1xuICAgIGljb25Vcmk6IHN0cmluZztcbiAgICBrZXk6IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXk7XG4gICAgbmFtZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbiB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ua2V5KSB7bS5rZXkgPSBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uS2V5LmZyb21Qcm90byhwcm90by5rZXkpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWNvblVyaSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWNvblVyaSddID0gdGhpcy5pY29uVXJpO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmtleSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5rZXkgIT09IG51bGwpIHt0b1JldHVyblsna2V5J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmtleSA/ICh0aGlzLmtleSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5rZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXkgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXlJbnRlcmZhY2Uge1xuICAgIHR5cGU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXkge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uS2V5KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uS2V5SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHlwZSddID0gdGhpcy50eXBlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdCBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENyZWF0ZUNvbmZlcmVuY2VSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBjb25mZXJlbmNlU29sdXRpb25LZXk6IEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXk7XG4gICAgcmVxdWVzdElkOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBHb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXM7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY29uZmVyZW5jZVNvbHV0aW9uS2V5KSB7bS5jb25mZXJlbmNlU29sdXRpb25LZXkgPSBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uS2V5LmZyb21Qcm90byhwcm90by5jb25mZXJlbmNlU29sdXRpb25LZXkpO31cbiAgICAgICAgaWYgKHByb3RvLnN0YXR1cykge20uc3RhdHVzID0gR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzLmZyb21Qcm90byhwcm90by5zdGF0dXMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25mZXJlbmNlU29sdXRpb25LZXkgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY29uZmVyZW5jZVNvbHV0aW9uS2V5ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NvbmZlcmVuY2VTb2x1dGlvbktleSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jb25mZXJlbmNlU29sdXRpb25LZXkgPyAodGhpcy5jb25mZXJlbmNlU29sdXRpb25LZXkgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY29uZmVyZW5jZVNvbHV0aW9uS2V5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlcXVlc3RJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVxdWVzdElkJ10gPSB0aGlzLnJlcXVlc3RJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGF0dXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhdHVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXR1cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdGF0dXMgPyAodGhpcy5zdGF0dXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhdHVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVxdWVzdCBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBjYWxlbmRlcklkOiBzdHJpbmc7XG4gICAgbWVldGluZzogR29vZ2xlTWVldE1lZXRpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubWVldGluZykge20ubWVldGluZyA9IEdvb2dsZU1lZXRNZWV0aW5nLmZyb21Qcm90byhwcm90by5tZWV0aW5nKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FsZW5kZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FsZW5kZXJJZCddID0gdGhpcy5jYWxlbmRlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmcgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWVldGluZyAhPT0gbnVsbCkge3RvUmV0dXJuWydtZWV0aW5nJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm1lZXRpbmcgPyAodGhpcy5tZWV0aW5nIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1lZXRpbmc7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZSBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZUludGVyZmFjZSB7XG4gICAgaWFtVXNlcklkOiBzdHJpbmc7XG4gICAgY2FsZW5kZXJJZDogc3RyaW5nO1xuICAgIG1lZXRpbmc6IEdvb2dsZU1lZXRNZWV0aW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubWVldGluZykge20ubWVldGluZyA9IEdvb2dsZU1lZXRNZWV0aW5nLmZyb21Qcm90byhwcm90by5tZWV0aW5nKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlhbVVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWFtVXNlcklkJ10gPSB0aGlzLmlhbVVzZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWxlbmRlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYWxlbmRlcklkJ10gPSB0aGlzLmNhbGVuZGVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWV0aW5nICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZXRpbmcnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVldGluZyA/ICh0aGlzLm1lZXRpbmcgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVldGluZzt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0RW50cnlQb2ludCBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldEVudHJ5UG9pbnRJbnRlcmZhY2Uge1xuICAgIGFjY2Vzc0NvZGU6IHN0cmluZztcbiAgICBlbnRyeVBvaW50RmVhdHVyZXM6IHN0cmluZ1tdO1xuICAgIGVudHJ5UG9pbnRUeXBlOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBtZWV0aW5nQ29kZTogc3RyaW5nO1xuICAgIHBhc3Njb2RlOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICBwaW46IHN0cmluZztcbiAgICByZWdpb25Db2RlOiBzdHJpbmc7XG4gICAgdXJpOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0RW50cnlQb2ludCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRFbnRyeVBvaW50KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0RW50cnlQb2ludEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY2Vzc0NvZGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjY2Vzc0NvZGUnXSA9IHRoaXMuYWNjZXNzQ29kZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbnRyeVBvaW50RmVhdHVyZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VudHJ5UG9pbnRGZWF0dXJlcyddID0gdGhpcy5lbnRyeVBvaW50RmVhdHVyZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW50cnlQb2ludFR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VudHJ5UG9pbnRUeXBlJ10gPSB0aGlzLmVudHJ5UG9pbnRUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhYmVsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsYWJlbCddID0gdGhpcy5sYWJlbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ0NvZGUnXSA9IHRoaXMubWVldGluZ0NvZGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFzc2NvZGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Bhc3Njb2RlJ10gPSB0aGlzLnBhc3Njb2RlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhc3N3b3JkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXNzd29yZCddID0gdGhpcy5wYXNzd29yZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5waW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BpbiddID0gdGhpcy5waW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVnaW9uQ29kZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVnaW9uQ29kZSddID0gdGhpcy5yZWdpb25Db2RlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVyaSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXJpJ10gPSB0aGlzLnVyaTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0TGlzdE1lZXRpbmdzUmVxdWVzdCBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldExpc3RNZWV0aW5nc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgcGFnZVRva2VuOiBzdHJpbmc7XG4gICAgc3luY1Rva2VuOiBzdHJpbmc7XG4gICAgdGltZU1pbjogRGF0ZTtcbiAgICB0aW1lTWF4OiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldExpc3RNZWV0aW5nc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0TGlzdE1lZXRpbmdzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wYWdlU2l6ZSkge20ucGFnZVNpemUgPSBwYXJzZUludChwcm90by5wYWdlU2l6ZSwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnRpbWVNaW4pIHttLnRpbWVNaW4gPSBuZXcgRGF0ZShwcm90by50aW1lTWluKTt9XG4gICAgICAgIGlmIChwcm90by50aW1lTWF4KSB7bS50aW1lTWF4ID0gbmV3IERhdGUocHJvdG8udGltZU1heCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRMaXN0TWVldGluZ3NSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VySWQnXSA9IHRoaXMudXNlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhZ2VTaXplICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYWdlU2l6ZSddID0gdGhpcy5wYWdlU2l6ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdlVG9rZW4gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhZ2VUb2tlbiddID0gdGhpcy5wYWdlVG9rZW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3luY1Rva2VuICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzeW5jVG9rZW4nXSA9IHRoaXMuc3luY1Rva2VuO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpbWVNaW4gIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGltZU1pbiAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lTWluJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRpbWVNaW4gPyAodGhpcy50aW1lTWluIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVNaW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZU1heCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lTWF4ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3RpbWVNYXgnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGltZU1heCA/ICh0aGlzLnRpbWVNYXggYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGltZU1heDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0TGlzdE1lZXRpbmdzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRMaXN0TWVldGluZ3NSZXNwb25zZUludGVyZmFjZSB7XG4gICAgbWVldGluZ3M6IEdvb2dsZU1lZXRNZWV0aW5nW107XG4gICAgbmV4dFBhZ2VUb2tlbjogc3RyaW5nO1xuICAgIG5leHRTeW5jVG9rZW46IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRMaXN0TWVldGluZ3NSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRMaXN0TWVldGluZ3NSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5tZWV0aW5ncykge20ubWVldGluZ3MgPSBwcm90by5tZWV0aW5ncy5tYXAoR29vZ2xlTWVldE1lZXRpbmcuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldExpc3RNZWV0aW5nc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ3MgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWVldGluZ3MgIT09IG51bGwpIHt0b1JldHVyblsnbWVldGluZ3MnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVldGluZ3MgPyAodGhpcy5tZWV0aW5ncyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZWV0aW5nczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uZXh0UGFnZVRva2VuICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduZXh0UGFnZVRva2VuJ10gPSB0aGlzLm5leHRQYWdlVG9rZW47fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmV4dFN5bmNUb2tlbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmV4dFN5bmNUb2tlbiddID0gdGhpcy5uZXh0U3luY1Rva2VuO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0TWVldGluZ0ludGVyZmFjZSB7XG4gICAgYW55b25lQ2FuQWRkU2VsZjogYm9vbGVhbjtcbiAgICBhdHRlbmRlZXM6IEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWVbXTtcbiAgICBhdHRlbmRlZXNPbWl0dGVkOiBib29sZWFuO1xuICAgIGNvbG9ySWQ6IHN0cmluZztcbiAgICBjb25mZXJlbmNlRGF0YTogR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgZW5kOiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lO1xuICAgIGVuZFRpbWVVbnNwZWNpZmllZDogYm9vbGVhbjtcbiAgICBldGFnOiBzdHJpbmc7XG4gICAgaWNhbFVpZDogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAga2luZDogc3RyaW5nO1xuICAgIGxvY2F0aW9uOiBzdHJpbmc7XG4gICAgbG9ja2VkOiBib29sZWFuO1xuICAgIG9yaWdpbmFsU3RhcnRUaW1lOiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lO1xuICAgIHJlY3VycmVuY2U6IHN0cmluZ1tdO1xuICAgIHJlY3VycmluZ01lZXRpbmdJZDogc3RyaW5nO1xuICAgIHJlbWluZGVyczogR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnM7XG4gICAgc2VxdWVuY2U6IG51bWJlcjtcbiAgICBzdGFydDogR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZTtcbiAgICBzdGF0dXM6IHN0cmluZztcbiAgICBzdW1tYXJ5OiBzdHJpbmc7XG4gICAgdHJhbnNwYXJlbmN5OiBzdHJpbmc7XG4gICAgdmlzaWJpbGl0eTogc3RyaW5nO1xuICAgIGhhbmdvdXRMaW5rOiBzdHJpbmc7XG4gICAgaHRtbExpbms6IHN0cmluZztcbiAgICBjcmVhdGVkOiBzdHJpbmc7XG4gICAgY3JlYXRvcjogR29vZ2xlTWVldE1lZXRpbmdDcmVhdG9yO1xuICAgIHVwZGF0ZWQ6IHN0cmluZztcbiAgICBvcmdhbml6ZXI6IEdvb2dsZU1lZXRNZWV0aW5nT3JnYW5pemVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldE1lZXRpbmcge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0TWVldGluZygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hdHRlbmRlZXMpIHttLmF0dGVuZGVlcyA9IHByb3RvLmF0dGVuZGVlcy5tYXAoR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLmNvbmZlcmVuY2VEYXRhKSB7bS5jb25mZXJlbmNlRGF0YSA9IEdvb2dsZU1lZXRDb25mZXJlbmNlRGF0YS5mcm9tUHJvdG8ocHJvdG8uY29uZmVyZW5jZURhdGEpO31cbiAgICAgICAgaWYgKHByb3RvLmVuZCkge20uZW5kID0gR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZS5mcm9tUHJvdG8ocHJvdG8uZW5kKTt9XG4gICAgICAgIGlmIChwcm90by5vcmlnaW5hbFN0YXJ0VGltZSkge20ub3JpZ2luYWxTdGFydFRpbWUgPSBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lLmZyb21Qcm90byhwcm90by5vcmlnaW5hbFN0YXJ0VGltZSk7fVxuICAgICAgICBpZiAocHJvdG8ucmVtaW5kZXJzKSB7bS5yZW1pbmRlcnMgPSBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVycy5mcm9tUHJvdG8ocHJvdG8ucmVtaW5kZXJzKTt9XG4gICAgICAgIGlmIChwcm90by5zZXF1ZW5jZSkge20uc2VxdWVuY2UgPSBwYXJzZUludChwcm90by5zZXF1ZW5jZSwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnN0YXJ0KSB7bS5zdGFydCA9IEdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWUuZnJvbVByb3RvKHByb3RvLnN0YXJ0KTt9XG4gICAgICAgIGlmIChwcm90by5jcmVhdG9yKSB7bS5jcmVhdG9yID0gR29vZ2xlTWVldE1lZXRpbmdDcmVhdG9yLmZyb21Qcm90byhwcm90by5jcmVhdG9yKTt9XG4gICAgICAgIGlmIChwcm90by5vcmdhbml6ZXIpIHttLm9yZ2FuaXplciA9IEdvb2dsZU1lZXRNZWV0aW5nT3JnYW5pemVyLmZyb21Qcm90byhwcm90by5vcmdhbml6ZXIpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hb29nbGVNZWV0TWVldGluZ0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFueW9uZUNhbkFkZFNlbGYgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FueW9uZUNhbkFkZFNlbGYnXSA9IHRoaXMuYW55b25lQ2FuQWRkU2VsZjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdHRlbmRlZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXR0ZW5kZWVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2F0dGVuZGVlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hdHRlbmRlZXMgPyAodGhpcy5hdHRlbmRlZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYXR0ZW5kZWVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dGVuZGVlc09taXR0ZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2F0dGVuZGVlc09taXR0ZWQnXSA9IHRoaXMuYXR0ZW5kZWVzT21pdHRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb2xvcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb2xvcklkJ10gPSB0aGlzLmNvbG9ySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmVyZW5jZURhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY29uZmVyZW5jZURhdGEgIT09IG51bGwpIHt0b1JldHVyblsnY29uZmVyZW5jZURhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY29uZmVyZW5jZURhdGEgPyAodGhpcy5jb25mZXJlbmNlRGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb25mZXJlbmNlRGF0YTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGVzY3JpcHRpb24nXSA9IHRoaXMuZGVzY3JpcHRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW5kICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmVuZCAhPT0gbnVsbCkge3RvUmV0dXJuWydlbmQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZW5kID8gKHRoaXMuZW5kIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmVuZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5lbmRUaW1lVW5zcGVjaWZpZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VuZFRpbWVVbnNwZWNpZmllZCddID0gdGhpcy5lbmRUaW1lVW5zcGVjaWZpZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXRhZyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXRhZyddID0gdGhpcy5ldGFnO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmljYWxVaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ljYWxVaWQnXSA9IHRoaXMuaWNhbFVpZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMua2luZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsna2luZCddID0gdGhpcy5raW5kO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2F0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2NhdGlvbiddID0gdGhpcy5sb2NhdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NrZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvY2tlZCddID0gdGhpcy5sb2NrZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luYWxTdGFydFRpbWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMub3JpZ2luYWxTdGFydFRpbWUgIT09IG51bGwpIHt0b1JldHVyblsnb3JpZ2luYWxTdGFydFRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMub3JpZ2luYWxTdGFydFRpbWUgPyAodGhpcy5vcmlnaW5hbFN0YXJ0VGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5vcmlnaW5hbFN0YXJ0VGltZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWN1cnJlbmNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWN1cnJlbmNlJ10gPSB0aGlzLnJlY3VycmVuY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVjdXJyaW5nTWVldGluZ0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZWN1cnJpbmdNZWV0aW5nSWQnXSA9IHRoaXMucmVjdXJyaW5nTWVldGluZ0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlbWluZGVycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5yZW1pbmRlcnMgIT09IG51bGwpIHt0b1JldHVyblsncmVtaW5kZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnJlbWluZGVycyA/ICh0aGlzLnJlbWluZGVycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5yZW1pbmRlcnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VxdWVuY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlcXVlbmNlJ10gPSB0aGlzLnNlcXVlbmNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN0YXJ0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXJ0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXJ0ID8gKHRoaXMuc3RhcnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhcnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhdHVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdGF0dXMnXSA9IHRoaXMuc3RhdHVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1bW1hcnkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N1bW1hcnknXSA9IHRoaXMuc3VtbWFyeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50cmFuc3BhcmVuY3kgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RyYW5zcGFyZW5jeSddID0gdGhpcy50cmFuc3BhcmVuY3k7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmlzaWJpbGl0eSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndmlzaWJpbGl0eSddID0gdGhpcy52aXNpYmlsaXR5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhhbmdvdXRMaW5rICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYW5nb3V0TGluayddID0gdGhpcy5oYW5nb3V0TGluazt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5odG1sTGluayAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaHRtbExpbmsnXSA9IHRoaXMuaHRtbExpbms7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3JlYXRlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3JlYXRlZCddID0gdGhpcy5jcmVhdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0b3IgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRvciAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdG9yJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0b3IgPyAodGhpcy5jcmVhdG9yIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0b3I7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXBkYXRlZCddID0gdGhpcy51cGRhdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yZ2FuaXplciAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5vcmdhbml6ZXIgIT09IG51bGwpIHt0b1JldHVyblsnb3JnYW5pemVyJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm9yZ2FuaXplciA/ICh0aGlzLm9yZ2FuaXplciBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5vcmdhbml6ZXI7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZSBpbXBsZW1lbnRzIGkuR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZUludGVyZmFjZSB7XG4gICAgYWRkaXRpb25hbEd1ZXN0czogbnVtYmVyO1xuICAgIGNvbW1lbnQ6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICBvcHRpb25hbDogYm9vbGVhbjtcbiAgICBvcmdhbml6ZXI6IGJvb2xlYW47XG4gICAgcmVzb3VyY2U6IGJvb2xlYW47XG4gICAgcmVzcG9uc2VTdGF0dXM6IHN0cmluZztcbiAgICBzZWxmOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWUoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYWRkaXRpb25hbEd1ZXN0cykge20uYWRkaXRpb25hbEd1ZXN0cyA9IHBhcnNlSW50KHByb3RvLmFkZGl0aW9uYWxHdWVzdHMsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFkZGl0aW9uYWxHdWVzdHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FkZGl0aW9uYWxHdWVzdHMnXSA9IHRoaXMuYWRkaXRpb25hbEd1ZXN0czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21tZW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb21tZW50J10gPSB0aGlzLmNvbW1lbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzcGxheU5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rpc3BsYXlOYW1lJ10gPSB0aGlzLmRpc3BsYXlOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9uYWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29wdGlvbmFsJ10gPSB0aGlzLm9wdGlvbmFsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yZ2FuaXplciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JnYW5pemVyJ10gPSB0aGlzLm9yZ2FuaXplcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNvdXJjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVzb3VyY2UnXSA9IHRoaXMucmVzb3VyY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzcG9uc2VTdGF0dXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Jlc3BvbnNlU3RhdHVzJ10gPSB0aGlzLnJlc3BvbnNlU3RhdHVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlbGYgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlbGYnXSA9IHRoaXMuc2VsZjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHb29nbGVNZWV0TWVldGluZ0NyZWF0b3IgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvckludGVyZmFjZSB7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgc2VsZjogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvciB7XG4gICAgICAgIGxldCBtID0gbmV3IEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvcigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdDcmVhdG9ySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzcGxheU5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rpc3BsYXlOYW1lJ10gPSB0aGlzLmRpc3BsYXlOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VsZiddID0gdGhpcy5zZWxmO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWUgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWVJbnRlcmZhY2Uge1xuICAgIGRhdGU6IHN0cmluZztcbiAgICBkYXRlVGltZTogc3RyaW5nO1xuICAgIHRpbWVab25lOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRhdGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2RhdGUnXSA9IHRoaXMuZGF0ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kYXRlVGltZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGF0ZVRpbWUnXSA9IHRoaXMuZGF0ZVRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZVpvbmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RpbWVab25lJ10gPSB0aGlzLnRpbWVab25lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nT3JnYW5pemVyIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0TWVldGluZ09yZ2FuaXplckludGVyZmFjZSB7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgc2VsZjogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nT3JnYW5pemVyIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldE1lZXRpbmdPcmdhbml6ZXIoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRNZWV0aW5nT3JnYW5pemVySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzcGxheU5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rpc3BsYXlOYW1lJ10gPSB0aGlzLmRpc3BsYXlOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVtYWlsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydlbWFpbCddID0gdGhpcy5lbWFpbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2VsZiddID0gdGhpcy5zZWxmO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIgaW1wbGVtZW50cyBpLkdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJJbnRlcmZhY2Uge1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIG1pbnV0ZXM6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIge1xuICAgICAgICBsZXQgbSA9IG5ldyBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLm1pbnV0ZXMpIHttLm1pbnV0ZXMgPSBwYXJzZUludChwcm90by5taW51dGVzLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZXRob2QgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21ldGhvZCddID0gdGhpcy5tZXRob2Q7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWludXRlcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWludXRlcyddID0gdGhpcy5taW51dGVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzIGltcGxlbWVudHMgaS5Hb29nbGVNZWV0TWVldGluZ1JlbWluZGVyc0ludGVyZmFjZSB7XG4gICAgb3ZlcnJpZGVzOiBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyW107XG4gICAgdXNlRGVmYXVsdDogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ub3ZlcnJpZGVzKSB7bS5vdmVycmlkZXMgPSBwcm90by5vdmVycmlkZXMubWFwKEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vdmVycmlkZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMub3ZlcnJpZGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ292ZXJyaWRlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5vdmVycmlkZXMgPyAodGhpcy5vdmVycmlkZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMub3ZlcnJpZGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZURlZmF1bHQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZURlZmF1bHQnXSA9IHRoaXMudXNlRGVmYXVsdDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
@@ -6,15 +6,14 @@
6
6
  // *********************************
7
7
  export { MeetingSourceInfo, MeetingSourceListRequest, MeetingSourceListResponse, MeetingSourceQuery, } from './meeting-source';
8
8
  export { CreateZoomMeetingRequest, CreateZoomMeetingResponse, ZoomMeetingRecurrence, ZoomMeetingSettings, ZoomMeetingTrackingField, ZoomOccurrence, } from './zoom';
9
- export { GoogleMeetConferenceData, GoogleMeetConferenceRequestStatus, GoogleMeetConferenceSolution, GoogleMeetConferenceSolutionKey, GoogleMeetCreateConferenceRequest, GoogleMeetCreateMeetingRequest, GoogleMeetCreateMeetingResponse, GoogleMeetEntryPoint, GoogleMeetMeeting, GoogleMeetMeetingAttendee, GoogleMeetMeetingCreator, GoogleMeetMeetingDateTime, GoogleMeetMeetingReminder, GoogleMeetMeetingReminders, } from './google-meet';
9
+ export { GoogleMeetConferenceData, GoogleMeetConferenceRequestStatus, GoogleMeetConferenceSolution, GoogleMeetConferenceSolutionKey, GoogleMeetCreateConferenceRequest, GoogleMeetCreateMeetingRequest, GoogleMeetCreateMeetingResponse, GoogleMeetEntryPoint, GoogleMeetListMeetingsRequest, GoogleMeetListMeetingsResponse, GoogleMeetMeeting, GoogleMeetMeetingAttendee, GoogleMeetMeetingCreator, GoogleMeetMeetingDateTime, GoogleMeetMeetingOrganizer, GoogleMeetMeetingReminder, GoogleMeetMeetingReminders, } from './google-meet';
10
10
  export { Answer, Answers, CalendarApplicationContextEntry, Attachment, Attendee, Calendar, Contact, Host, HostUser, PagedRequestOptions, PagedResponseMetadata, Preferences, TimeRange, } from './shared';
11
11
  export { DateRange, } from './date-range';
12
12
  export { EventTypeDateRange, Field, Form, MeetingType, RelativeDateRange, } from './meeting-type';
13
13
  export { EventGroupAndServiceAssociations, Group, Service, } from './groups-and-services';
14
- export { BookMeetingRequest, BookMeetingResponse, GetCalendarRequest, GetCalendarResponse, GetGroupRequest, GetGroupResponse, GetHostRequest, GetHostResponse, GetMeetingTypeRequest, GetMeetingTypeResponse, GetServiceRequest, GetServiceResponse, GuestCancelMeetingRequest, GuestGetBookedMeetingRequest, GuestGetBookedMeetingResponse, GuestIsHostConfiguredRequest, GuestIsHostConfiguredResponse, GuestRescheduleMeetingRequest, ListAvailableTimeSlotsRequest, ListAvailableTimeSlotsResponse, ListMeetingTypesRequest, ListMeetingTypesResponse, BookMeetingRequestMetadataEntry, } from './meeting-guest';
14
+ export { BookMeetingRequest, BookMeetingResponse, GetCalendarRequest, GetCalendarResponse, GetGroupRequest, GetGroupResponse, GetHostRequest, GetHostResponse, GetMeetingTypeRequest, GetMeetingTypeResponse, GetServiceRequest, GetServiceResponse, GuestCancelMeetingRequest, GuestGetBookedMeetingRequest, GuestGetBookedMeetingResponse, GuestIsHostConfiguredRequest, GuestIsHostConfiguredResponse, GuestRescheduleMeetingRequest, IsoDateTimeRange, ListAvailableTimeSlotsRequest, ListAvailableTimeSlotsResponse, ListMeetingTypesRequest, ListMeetingTypesResponse, BookMeetingRequestMetadataEntry, } from './meeting-guest';
15
15
  export { FieldMask, } from './field-mask';
16
16
  export { EnsurePersonalCalendarExistsRequestApplicationContextPropertiesEntry, BuildHostIdRequestApplicationContextPropertiesEntry, IsCalendarConfiguredRequestApplicationContextPropertiesEntry, AvailabilityRule, AvailabilityRuleList, BuildHostIdRequest, BuildHostIdResponse, GetMeetingTypesForCalendarsResponseCalendarMeetingTypesMapEntry, CalendarMigrationResponse, CancelMeetingRequest, CheckGroupOrServiceSlugExistRequest, CheckGroupOrServiceSlugExistResponse, CreateAvailabilityRequest, CreateAvailabilityResponse, CreateCalendarRequest, CreateCalendarResponse, CreateDefaultMeetingTypesRequest, CreateGroupRequest, CreateGroupResponse, CreateMeetingTypeRequest, CreateMeetingTypeResponse, CreateServiceRequest, CreateServiceResponse, DeleteAvailabilityRequest, DeleteGroupRequest, DeleteMeetingTypeRequest, DeleteServiceRequest, DoesCalendarExistRequest, DoesCalendarExistResponse, EnsureGroupCalendarsExistRequest, EnsureGroupCalendarsExistResponse, EnsurePersonalCalendarExistsRequest, EnsurePersonalCalendarExistsResponse, ListBookedMeetingsRequestFilters, ListAvailabilityRequestFilters, GetEntityAssociationRequest, GetEntityAssociationResponse, GetHostMeetingRequest, GetHostMeetingResponse, GetHostPreferencesRequest, GetHostPreferencesResponse, GetHostsForCalendarRequest, GetHostsForCalendarResponse, GetMeetingTypesForCalendarsRequest, GetMeetingTypesForCalendarsResponse, HostBookMeetingRequest, HostBookMeetingResponse, HostDetails, HostGetCalendarRequest, HostGetCalendarResponse, HostGetMeetingTypeRequest, HostGetMeetingTypeResponse, HostListMeetingTypesRequest, HostListMeetingTypesResponse, GetHostsForCalendarResponseHostUserAvailabilityRuleEntry, IsCalendarConfiguredRequest, IsCalendarConfiguredResponse, IsHostConfiguredRequest, IsHostConfiguredResponse, ListAvailabilityRequest, ListAvailabilityResponse, ListBookedMeetingsRequest, ListBookedMeetingsResponse, ListGroupsRequest, ListGroupsResponse, ListServicesRequest, ListServicesResponse, Meeting, MeetingTypeList, UpdateMeetingMetadataRequestMetadataEntry, MeetingMetadataEntry, RescheduleMeetingRequest, SendMeetingRequestEmailRequest, SetGeneralAvailabilityRequest, UpdateAvailabilityRequest, UpdateCalendarRequest, UpdateGroupRequest, UpdateHostPreferencesRequest, UpdateMeetingMetadataRequest, UpdateMeetingTypeRequest, UpdateServiceRequest, WeekdayAvailability, } from './meeting-host';
17
- export { ScheduleBotRequest, } from './meeting-bot';
18
17
  export { TimeOfDay, } from './timeofday';
19
18
  export { DateTime, TimeZone, } from './datetime';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsaUJBQWlCO0FBQ2pCLG9DQUFvQztBQUNwQyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsa0JBQWtCLEdBQ3JCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUNILHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsY0FBYyxHQUNqQixNQUFNLFFBQVEsQ0FBQztBQUVoQixPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLGlDQUFpQyxFQUNqQyw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDOUIsK0JBQStCLEVBQy9CLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLDBCQUEwQixHQUM3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsTUFBTSxFQUNOLE9BQU8sRUFDUCwrQkFBK0IsRUFDL0IsVUFBVSxFQUNWLFFBQVEsRUFDUixRQUFRLEVBQ1IsT0FBTyxFQUNQLElBQUksRUFDSixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFDSCxTQUFTLEdBQ1osTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNILGtCQUFrQixFQUNsQixLQUFLLEVBQ0wsSUFBSSxFQUNKLFdBQVcsRUFDWCxpQkFBaUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0gsZ0NBQWdDLEVBQ2hDLEtBQUssRUFDTCxPQUFPLEdBQ1YsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsNEJBQTRCLEVBQzVCLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLDhCQUE4QixFQUM5Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLCtCQUErQixHQUNsQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFDSCxTQUFTLEdBQ1osTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNILG9FQUFvRSxFQUNwRSxtREFBbUQsRUFDbkQsNERBQTRELEVBQzVELGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQiwrREFBK0QsRUFDL0QseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQixtQ0FBbUMsRUFDbkMsb0NBQW9DLEVBQ3BDLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsZ0NBQWdDLEVBQ2hDLGlDQUFpQyxFQUNqQyxtQ0FBbUMsRUFDbkMsb0NBQW9DLEVBQ3BDLGdDQUFnQyxFQUNoQyw4QkFBOEIsRUFDOUIsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1QixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsbUNBQW1DLEVBQ25DLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQiwyQkFBMkIsRUFDM0IsNEJBQTRCLEVBQzVCLHdEQUF3RCxFQUN4RCwyQkFBMkIsRUFDM0IsNEJBQTRCLEVBQzVCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsZUFBZSxFQUNmLHlDQUF5QyxFQUN6QyxvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUM5Qiw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUM1Qix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLG1CQUFtQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDSCxrQkFBa0IsR0FDckIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsR0FBRyxNQUFNLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cyBJbmRleC5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuZXhwb3J0IHtcbiAgICBNZWV0aW5nU291cmNlSW5mbyxcbiAgICBNZWV0aW5nU291cmNlTGlzdFJlcXVlc3QsXG4gICAgTWVldGluZ1NvdXJjZUxpc3RSZXNwb25zZSxcbiAgICBNZWV0aW5nU291cmNlUXVlcnksXG59IGZyb20gJy4vbWVldGluZy1zb3VyY2UnO1xuXG5leHBvcnQge1xuICAgIENyZWF0ZVpvb21NZWV0aW5nUmVxdWVzdCxcbiAgICBDcmVhdGVab29tTWVldGluZ1Jlc3BvbnNlLFxuICAgIFpvb21NZWV0aW5nUmVjdXJyZW5jZSxcbiAgICBab29tTWVldGluZ1NldHRpbmdzLFxuICAgIFpvb21NZWV0aW5nVHJhY2tpbmdGaWVsZCxcbiAgICBab29tT2NjdXJyZW5jZSxcbn0gZnJvbSAnLi96b29tJztcblxuZXhwb3J0IHtcbiAgICBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGEsXG4gICAgR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzLFxuICAgIEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb24sXG4gICAgR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleSxcbiAgICBHb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3QsXG4gICAgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXF1ZXN0LFxuICAgIEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVzcG9uc2UsXG4gICAgR29vZ2xlTWVldEVudHJ5UG9pbnQsXG4gICAgR29vZ2xlTWVldE1lZXRpbmcsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZSxcbiAgICBHb29nbGVNZWV0TWVldGluZ0NyZWF0b3IsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZSxcbiAgICBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzLFxufSBmcm9tICcuL2dvb2dsZS1tZWV0JztcblxuZXhwb3J0IHtcbiAgICBBbnN3ZXIsXG4gICAgQW5zd2VycyxcbiAgICBDYWxlbmRhckFwcGxpY2F0aW9uQ29udGV4dEVudHJ5LFxuICAgIEF0dGFjaG1lbnQsXG4gICAgQXR0ZW5kZWUsXG4gICAgQ2FsZW5kYXIsXG4gICAgQ29udGFjdCxcbiAgICBIb3N0LFxuICAgIEhvc3RVc2VyLFxuICAgIFBhZ2VkUmVxdWVzdE9wdGlvbnMsXG4gICAgUGFnZWRSZXNwb25zZU1ldGFkYXRhLFxuICAgIFByZWZlcmVuY2VzLFxuICAgIFRpbWVSYW5nZSxcbn0gZnJvbSAnLi9zaGFyZWQnO1xuXG5leHBvcnQge1xuICAgIERhdGVSYW5nZSxcbn0gZnJvbSAnLi9kYXRlLXJhbmdlJztcblxuZXhwb3J0IHtcbiAgICBFdmVudFR5cGVEYXRlUmFuZ2UsXG4gICAgRmllbGQsXG4gICAgRm9ybSxcbiAgICBNZWV0aW5nVHlwZSxcbiAgICBSZWxhdGl2ZURhdGVSYW5nZSxcbn0gZnJvbSAnLi9tZWV0aW5nLXR5cGUnO1xuXG5leHBvcnQge1xuICAgIEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zLFxuICAgIEdyb3VwLFxuICAgIFNlcnZpY2UsXG59IGZyb20gJy4vZ3JvdXBzLWFuZC1zZXJ2aWNlcyc7XG5cbmV4cG9ydCB7XG4gICAgQm9va01lZXRpbmdSZXF1ZXN0LFxuICAgIEJvb2tNZWV0aW5nUmVzcG9uc2UsXG4gICAgR2V0Q2FsZW5kYXJSZXF1ZXN0LFxuICAgIEdldENhbGVuZGFyUmVzcG9uc2UsXG4gICAgR2V0R3JvdXBSZXF1ZXN0LFxuICAgIEdldEdyb3VwUmVzcG9uc2UsXG4gICAgR2V0SG9zdFJlcXVlc3QsXG4gICAgR2V0SG9zdFJlc3BvbnNlLFxuICAgIEdldE1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICBHZXRNZWV0aW5nVHlwZVJlc3BvbnNlLFxuICAgIEdldFNlcnZpY2VSZXF1ZXN0LFxuICAgIEdldFNlcnZpY2VSZXNwb25zZSxcbiAgICBHdWVzdENhbmNlbE1lZXRpbmdSZXF1ZXN0LFxuICAgIEd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3QsXG4gICAgR3Vlc3RHZXRCb29rZWRNZWV0aW5nUmVzcG9uc2UsXG4gICAgR3Vlc3RJc0hvc3RDb25maWd1cmVkUmVxdWVzdCxcbiAgICBHdWVzdElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZSxcbiAgICBHdWVzdFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCxcbiAgICBMaXN0QXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdCxcbiAgICBMaXN0QXZhaWxhYmxlVGltZVNsb3RzUmVzcG9uc2UsXG4gICAgTGlzdE1lZXRpbmdUeXBlc1JlcXVlc3QsXG4gICAgTGlzdE1lZXRpbmdUeXBlc1Jlc3BvbnNlLFxuICAgIEJvb2tNZWV0aW5nUmVxdWVzdE1ldGFkYXRhRW50cnksXG59IGZyb20gJy4vbWVldGluZy1ndWVzdCc7XG5cbmV4cG9ydCB7XG4gICAgRmllbGRNYXNrLFxufSBmcm9tICcuL2ZpZWxkLW1hc2snO1xuXG5leHBvcnQge1xuICAgIEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXF1ZXN0QXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc0VudHJ5LFxuICAgIEJ1aWxkSG9zdElkUmVxdWVzdEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNFbnRyeSxcbiAgICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3RBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzRW50cnksXG4gICAgQXZhaWxhYmlsaXR5UnVsZSxcbiAgICBBdmFpbGFiaWxpdHlSdWxlTGlzdCxcbiAgICBCdWlsZEhvc3RJZFJlcXVlc3QsXG4gICAgQnVpbGRIb3N0SWRSZXNwb25zZSxcbiAgICBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXNwb25zZUNhbGVuZGFyTWVldGluZ1R5cGVzTWFwRW50cnksXG4gICAgQ2FsZW5kYXJNaWdyYXRpb25SZXNwb25zZSxcbiAgICBDYW5jZWxNZWV0aW5nUmVxdWVzdCxcbiAgICBDaGVja0dyb3VwT3JTZXJ2aWNlU2x1Z0V4aXN0UmVxdWVzdCxcbiAgICBDaGVja0dyb3VwT3JTZXJ2aWNlU2x1Z0V4aXN0UmVzcG9uc2UsXG4gICAgQ3JlYXRlQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBDcmVhdGVBdmFpbGFiaWxpdHlSZXNwb25zZSxcbiAgICBDcmVhdGVDYWxlbmRhclJlcXVlc3QsXG4gICAgQ3JlYXRlQ2FsZW5kYXJSZXNwb25zZSxcbiAgICBDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdCxcbiAgICBDcmVhdGVHcm91cFJlcXVlc3QsXG4gICAgQ3JlYXRlR3JvdXBSZXNwb25zZSxcbiAgICBDcmVhdGVNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgQ3JlYXRlTWVldGluZ1R5cGVSZXNwb25zZSxcbiAgICBDcmVhdGVTZXJ2aWNlUmVxdWVzdCxcbiAgICBDcmVhdGVTZXJ2aWNlUmVzcG9uc2UsXG4gICAgRGVsZXRlQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBEZWxldGVHcm91cFJlcXVlc3QsXG4gICAgRGVsZXRlTWVldGluZ1R5cGVSZXF1ZXN0LFxuICAgIERlbGV0ZVNlcnZpY2VSZXF1ZXN0LFxuICAgIERvZXNDYWxlbmRhckV4aXN0UmVxdWVzdCxcbiAgICBEb2VzQ2FsZW5kYXJFeGlzdFJlc3BvbnNlLFxuICAgIEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0LFxuICAgIEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXNwb25zZSxcbiAgICBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdCxcbiAgICBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVzcG9uc2UsXG4gICAgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnMsXG4gICAgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3RGaWx0ZXJzLFxuICAgIEdldEVudGl0eUFzc29jaWF0aW9uUmVxdWVzdCxcbiAgICBHZXRFbnRpdHlBc3NvY2lhdGlvblJlc3BvbnNlLFxuICAgIEdldEhvc3RNZWV0aW5nUmVxdWVzdCxcbiAgICBHZXRIb3N0TWVldGluZ1Jlc3BvbnNlLFxuICAgIEdldEhvc3RQcmVmZXJlbmNlc1JlcXVlc3QsXG4gICAgR2V0SG9zdFByZWZlcmVuY2VzUmVzcG9uc2UsXG4gICAgR2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3QsXG4gICAgR2V0SG9zdHNGb3JDYWxlbmRhclJlc3BvbnNlLFxuICAgIEdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFyc1JlcXVlc3QsXG4gICAgR2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVzcG9uc2UsXG4gICAgSG9zdEJvb2tNZWV0aW5nUmVxdWVzdCxcbiAgICBIb3N0Qm9va01lZXRpbmdSZXNwb25zZSxcbiAgICBIb3N0RGV0YWlscyxcbiAgICBIb3N0R2V0Q2FsZW5kYXJSZXF1ZXN0LFxuICAgIEhvc3RHZXRDYWxlbmRhclJlc3BvbnNlLFxuICAgIEhvc3RHZXRNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgSG9zdEdldE1lZXRpbmdUeXBlUmVzcG9uc2UsXG4gICAgSG9zdExpc3RNZWV0aW5nVHlwZXNSZXF1ZXN0LFxuICAgIEhvc3RMaXN0TWVldGluZ1R5cGVzUmVzcG9uc2UsXG4gICAgR2V0SG9zdHNGb3JDYWxlbmRhclJlc3BvbnNlSG9zdFVzZXJBdmFpbGFiaWxpdHlSdWxlRW50cnksXG4gICAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXF1ZXN0LFxuICAgIElzQ2FsZW5kYXJDb25maWd1cmVkUmVzcG9uc2UsXG4gICAgSXNIb3N0Q29uZmlndXJlZFJlcXVlc3QsXG4gICAgSXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlLFxuICAgIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgIExpc3RBdmFpbGFiaWxpdHlSZXNwb25zZSxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0LFxuICAgIExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlLFxuICAgIExpc3RHcm91cHNSZXF1ZXN0LFxuICAgIExpc3RHcm91cHNSZXNwb25zZSxcbiAgICBMaXN0U2VydmljZXNSZXF1ZXN0LFxuICAgIExpc3RTZXJ2aWNlc1Jlc3BvbnNlLFxuICAgIE1lZXRpbmcsXG4gICAgTWVldGluZ1R5cGVMaXN0LFxuICAgIFVwZGF0ZU1lZXRpbmdNZXRhZGF0YVJlcXVlc3RNZXRhZGF0YUVudHJ5LFxuICAgIE1lZXRpbmdNZXRhZGF0YUVudHJ5LFxuICAgIFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCxcbiAgICBTZW5kTWVldGluZ1JlcXVlc3RFbWFpbFJlcXVlc3QsXG4gICAgU2V0R2VuZXJhbEF2YWlsYWJpbGl0eVJlcXVlc3QsXG4gICAgVXBkYXRlQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBVcGRhdGVDYWxlbmRhclJlcXVlc3QsXG4gICAgVXBkYXRlR3JvdXBSZXF1ZXN0LFxuICAgIFVwZGF0ZUhvc3RQcmVmZXJlbmNlc1JlcXVlc3QsXG4gICAgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdCxcbiAgICBVcGRhdGVNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgVXBkYXRlU2VydmljZVJlcXVlc3QsXG4gICAgV2Vla2RheUF2YWlsYWJpbGl0eSxcbn0gZnJvbSAnLi9tZWV0aW5nLWhvc3QnO1xuXG5leHBvcnQge1xuICAgIFNjaGVkdWxlQm90UmVxdWVzdCxcbn0gZnJvbSAnLi9tZWV0aW5nLWJvdCc7XG5cbmV4cG9ydCB7IFRpbWVPZkRheSwgfSBmcm9tICcuL3RpbWVvZmRheSc7XG5leHBvcnQgeyBEYXRlVGltZSwgVGltZVpvbmUsIH0gZnJvbSAnLi9kYXRldGltZSc7XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsaUJBQWlCO0FBQ2pCLG9DQUFvQztBQUNwQyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsa0JBQWtCLEdBQ3JCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUNILHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsY0FBYyxHQUNqQixNQUFNLFFBQVEsQ0FBQztBQUVoQixPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLGlDQUFpQyxFQUNqQyw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDOUIsK0JBQStCLEVBQy9CLG9CQUFvQixFQUNwQiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDBCQUEwQixHQUM3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsTUFBTSxFQUNOLE9BQU8sRUFDUCwrQkFBK0IsRUFDL0IsVUFBVSxFQUNWLFFBQVEsRUFDUixRQUFRLEVBQ1IsT0FBTyxFQUNQLElBQUksRUFDSixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFDSCxTQUFTLEdBQ1osTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNILGtCQUFrQixFQUNsQixLQUFLLEVBQ0wsSUFBSSxFQUNKLFdBQVcsRUFDWCxpQkFBaUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0gsZ0NBQWdDLEVBQ2hDLEtBQUssRUFDTCxPQUFPLEdBQ1YsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsNEJBQTRCLEVBQzVCLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0IsZ0JBQWdCLEVBQ2hCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QiwrQkFBK0IsR0FDbEMsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQ0gsU0FBUyxHQUNaLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDSCxvRUFBb0UsRUFDcEUsbURBQW1ELEVBQ25ELDREQUE0RCxFQUM1RCxnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsK0RBQStELEVBQy9ELHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsbUNBQW1DLEVBQ25DLG9DQUFvQyxFQUNwQyx5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsZ0NBQWdDLEVBQ2hDLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMsbUNBQW1DLEVBQ25DLG9DQUFvQyxFQUNwQyxnQ0FBZ0MsRUFDaEMsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQiwyQkFBMkIsRUFDM0Isa0NBQWtDLEVBQ2xDLG1DQUFtQyxFQUNuQyxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1Qix3REFBd0QsRUFDeEQsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLGVBQWUsRUFDZix5Q0FBeUMsRUFDekMsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qiw4QkFBOEIsRUFDOUIsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLDRCQUE0QixFQUM1Qiw0QkFBNEIsRUFDNUIsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQixtQkFBbUIsR0FDdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsU0FBUyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxHQUFHLE1BQU0sWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzIEluZGV4LlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5leHBvcnQge1xuICAgIE1lZXRpbmdTb3VyY2VJbmZvLFxuICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdCxcbiAgICBNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlLFxuICAgIE1lZXRpbmdTb3VyY2VRdWVyeSxcbn0gZnJvbSAnLi9tZWV0aW5nLXNvdXJjZSc7XG5cbmV4cG9ydCB7XG4gICAgQ3JlYXRlWm9vbU1lZXRpbmdSZXF1ZXN0LFxuICAgIENyZWF0ZVpvb21NZWV0aW5nUmVzcG9uc2UsXG4gICAgWm9vbU1lZXRpbmdSZWN1cnJlbmNlLFxuICAgIFpvb21NZWV0aW5nU2V0dGluZ3MsXG4gICAgWm9vbU1lZXRpbmdUcmFja2luZ0ZpZWxkLFxuICAgIFpvb21PY2N1cnJlbmNlLFxufSBmcm9tICcuL3pvb20nO1xuXG5leHBvcnQge1xuICAgIEdvb2dsZU1lZXRDb25mZXJlbmNlRGF0YSxcbiAgICBHb29nbGVNZWV0Q29uZmVyZW5jZVJlcXVlc3RTdGF0dXMsXG4gICAgR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbixcbiAgICBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uS2V5LFxuICAgIEdvb2dsZU1lZXRDcmVhdGVDb25mZXJlbmNlUmVxdWVzdCxcbiAgICBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1JlcXVlc3QsXG4gICAgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXNwb25zZSxcbiAgICBHb29nbGVNZWV0RW50cnlQb2ludCxcbiAgICBHb29nbGVNZWV0TGlzdE1lZXRpbmdzUmVxdWVzdCxcbiAgICBHb29nbGVNZWV0TGlzdE1lZXRpbmdzUmVzcG9uc2UsXG4gICAgR29vZ2xlTWVldE1lZXRpbmcsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdBdHRlbmRlZSxcbiAgICBHb29nbGVNZWV0TWVldGluZ0NyZWF0b3IsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdEYXRlVGltZSxcbiAgICBHb29nbGVNZWV0TWVldGluZ09yZ2FuaXplcixcbiAgICBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVyLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXJzLFxufSBmcm9tICcuL2dvb2dsZS1tZWV0JztcblxuZXhwb3J0IHtcbiAgICBBbnN3ZXIsXG4gICAgQW5zd2VycyxcbiAgICBDYWxlbmRhckFwcGxpY2F0aW9uQ29udGV4dEVudHJ5LFxuICAgIEF0dGFjaG1lbnQsXG4gICAgQXR0ZW5kZWUsXG4gICAgQ2FsZW5kYXIsXG4gICAgQ29udGFjdCxcbiAgICBIb3N0LFxuICAgIEhvc3RVc2VyLFxuICAgIFBhZ2VkUmVxdWVzdE9wdGlvbnMsXG4gICAgUGFnZWRSZXNwb25zZU1ldGFkYXRhLFxuICAgIFByZWZlcmVuY2VzLFxuICAgIFRpbWVSYW5nZSxcbn0gZnJvbSAnLi9zaGFyZWQnO1xuXG5leHBvcnQge1xuICAgIERhdGVSYW5nZSxcbn0gZnJvbSAnLi9kYXRlLXJhbmdlJztcblxuZXhwb3J0IHtcbiAgICBFdmVudFR5cGVEYXRlUmFuZ2UsXG4gICAgRmllbGQsXG4gICAgRm9ybSxcbiAgICBNZWV0aW5nVHlwZSxcbiAgICBSZWxhdGl2ZURhdGVSYW5nZSxcbn0gZnJvbSAnLi9tZWV0aW5nLXR5cGUnO1xuXG5leHBvcnQge1xuICAgIEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zLFxuICAgIEdyb3VwLFxuICAgIFNlcnZpY2UsXG59IGZyb20gJy4vZ3JvdXBzLWFuZC1zZXJ2aWNlcyc7XG5cbmV4cG9ydCB7XG4gICAgQm9va01lZXRpbmdSZXF1ZXN0LFxuICAgIEJvb2tNZWV0aW5nUmVzcG9uc2UsXG4gICAgR2V0Q2FsZW5kYXJSZXF1ZXN0LFxuICAgIEdldENhbGVuZGFyUmVzcG9uc2UsXG4gICAgR2V0R3JvdXBSZXF1ZXN0LFxuICAgIEdldEdyb3VwUmVzcG9uc2UsXG4gICAgR2V0SG9zdFJlcXVlc3QsXG4gICAgR2V0SG9zdFJlc3BvbnNlLFxuICAgIEdldE1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICBHZXRNZWV0aW5nVHlwZVJlc3BvbnNlLFxuICAgIEdldFNlcnZpY2VSZXF1ZXN0LFxuICAgIEdldFNlcnZpY2VSZXNwb25zZSxcbiAgICBHdWVzdENhbmNlbE1lZXRpbmdSZXF1ZXN0LFxuICAgIEd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3QsXG4gICAgR3Vlc3RHZXRCb29rZWRNZWV0aW5nUmVzcG9uc2UsXG4gICAgR3Vlc3RJc0hvc3RDb25maWd1cmVkUmVxdWVzdCxcbiAgICBHdWVzdElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZSxcbiAgICBHdWVzdFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCxcbiAgICBJc29EYXRlVGltZVJhbmdlLFxuICAgIExpc3RBdmFpbGFibGVUaW1lU2xvdHNSZXF1ZXN0LFxuICAgIExpc3RBdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZSxcbiAgICBMaXN0TWVldGluZ1R5cGVzUmVxdWVzdCxcbiAgICBMaXN0TWVldGluZ1R5cGVzUmVzcG9uc2UsXG4gICAgQm9va01lZXRpbmdSZXF1ZXN0TWV0YWRhdGFFbnRyeSxcbn0gZnJvbSAnLi9tZWV0aW5nLWd1ZXN0JztcblxuZXhwb3J0IHtcbiAgICBGaWVsZE1hc2ssXG59IGZyb20gJy4vZmllbGQtbWFzayc7XG5cbmV4cG9ydCB7XG4gICAgRW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0c1JlcXVlc3RBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzRW50cnksXG4gICAgQnVpbGRIb3N0SWRSZXF1ZXN0QXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc0VudHJ5LFxuICAgIElzQ2FsZW5kYXJDb25maWd1cmVkUmVxdWVzdEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNFbnRyeSxcbiAgICBBdmFpbGFiaWxpdHlSdWxlLFxuICAgIEF2YWlsYWJpbGl0eVJ1bGVMaXN0LFxuICAgIEJ1aWxkSG9zdElkUmVxdWVzdCxcbiAgICBCdWlsZEhvc3RJZFJlc3BvbnNlLFxuICAgIEdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFyc1Jlc3BvbnNlQ2FsZW5kYXJNZWV0aW5nVHlwZXNNYXBFbnRyeSxcbiAgICBDYWxlbmRhck1pZ3JhdGlvblJlc3BvbnNlLFxuICAgIENhbmNlbE1lZXRpbmdSZXF1ZXN0LFxuICAgIENoZWNrR3JvdXBPclNlcnZpY2VTbHVnRXhpc3RSZXF1ZXN0LFxuICAgIENoZWNrR3JvdXBPclNlcnZpY2VTbHVnRXhpc3RSZXNwb25zZSxcbiAgICBDcmVhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgIENyZWF0ZUF2YWlsYWJpbGl0eVJlc3BvbnNlLFxuICAgIENyZWF0ZUNhbGVuZGFyUmVxdWVzdCxcbiAgICBDcmVhdGVDYWxlbmRhclJlc3BvbnNlLFxuICAgIENyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXNSZXF1ZXN0LFxuICAgIENyZWF0ZUdyb3VwUmVxdWVzdCxcbiAgICBDcmVhdGVHcm91cFJlc3BvbnNlLFxuICAgIENyZWF0ZU1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICBDcmVhdGVNZWV0aW5nVHlwZVJlc3BvbnNlLFxuICAgIENyZWF0ZVNlcnZpY2VSZXF1ZXN0LFxuICAgIENyZWF0ZVNlcnZpY2VSZXNwb25zZSxcbiAgICBEZWxldGVBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgIERlbGV0ZUdyb3VwUmVxdWVzdCxcbiAgICBEZWxldGVNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgRGVsZXRlU2VydmljZVJlcXVlc3QsXG4gICAgRG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0LFxuICAgIERvZXNDYWxlbmRhckV4aXN0UmVzcG9uc2UsXG4gICAgRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlcXVlc3QsXG4gICAgRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlc3BvbnNlLFxuICAgIEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXF1ZXN0LFxuICAgIEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXNwb25zZSxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0QXZhaWxhYmlsaXR5UmVxdWVzdEZpbHRlcnMsXG4gICAgR2V0RW50aXR5QXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgIEdldEVudGl0eUFzc29jaWF0aW9uUmVzcG9uc2UsXG4gICAgR2V0SG9zdE1lZXRpbmdSZXF1ZXN0LFxuICAgIEdldEhvc3RNZWV0aW5nUmVzcG9uc2UsXG4gICAgR2V0SG9zdFByZWZlcmVuY2VzUmVxdWVzdCxcbiAgICBHZXRIb3N0UHJlZmVyZW5jZXNSZXNwb25zZSxcbiAgICBHZXRIb3N0c0ZvckNhbGVuZGFyUmVxdWVzdCxcbiAgICBHZXRIb3N0c0ZvckNhbGVuZGFyUmVzcG9uc2UsXG4gICAgR2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVxdWVzdCxcbiAgICBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXNwb25zZSxcbiAgICBIb3N0Qm9va01lZXRpbmdSZXF1ZXN0LFxuICAgIEhvc3RCb29rTWVldGluZ1Jlc3BvbnNlLFxuICAgIEhvc3REZXRhaWxzLFxuICAgIEhvc3RHZXRDYWxlbmRhclJlcXVlc3QsXG4gICAgSG9zdEdldENhbGVuZGFyUmVzcG9uc2UsXG4gICAgSG9zdEdldE1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICBIb3N0R2V0TWVldGluZ1R5cGVSZXNwb25zZSxcbiAgICBIb3N0TGlzdE1lZXRpbmdUeXBlc1JlcXVlc3QsXG4gICAgSG9zdExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZSxcbiAgICBHZXRIb3N0c0ZvckNhbGVuZGFyUmVzcG9uc2VIb3N0VXNlckF2YWlsYWJpbGl0eVJ1bGVFbnRyeSxcbiAgICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3QsXG4gICAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXNwb25zZSxcbiAgICBJc0hvc3RDb25maWd1cmVkUmVxdWVzdCxcbiAgICBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UsXG4gICAgTGlzdEF2YWlsYWJpbGl0eVJlcXVlc3QsXG4gICAgTGlzdEF2YWlsYWJpbGl0eVJlc3BvbnNlLFxuICAgIExpc3RCb29rZWRNZWV0aW5nc1JlcXVlc3QsXG4gICAgTGlzdEJvb2tlZE1lZXRpbmdzUmVzcG9uc2UsXG4gICAgTGlzdEdyb3Vwc1JlcXVlc3QsXG4gICAgTGlzdEdyb3Vwc1Jlc3BvbnNlLFxuICAgIExpc3RTZXJ2aWNlc1JlcXVlc3QsXG4gICAgTGlzdFNlcnZpY2VzUmVzcG9uc2UsXG4gICAgTWVldGluZyxcbiAgICBNZWV0aW5nVHlwZUxpc3QsXG4gICAgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdE1ldGFkYXRhRW50cnksXG4gICAgTWVldGluZ01ldGFkYXRhRW50cnksXG4gICAgUmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0LFxuICAgIFNlbmRNZWV0aW5nUmVxdWVzdEVtYWlsUmVxdWVzdCxcbiAgICBTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBVcGRhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgIFVwZGF0ZUNhbGVuZGFyUmVxdWVzdCxcbiAgICBVcGRhdGVHcm91cFJlcXVlc3QsXG4gICAgVXBkYXRlSG9zdFByZWZlcmVuY2VzUmVxdWVzdCxcbiAgICBVcGRhdGVNZWV0aW5nTWV0YWRhdGFSZXF1ZXN0LFxuICAgIFVwZGF0ZU1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICBVcGRhdGVTZXJ2aWNlUmVxdWVzdCxcbiAgICBXZWVrZGF5QXZhaWxhYmlsaXR5LFxufSBmcm9tICcuL21lZXRpbmctaG9zdCc7XG5cbmV4cG9ydCB7IFRpbWVPZkRheSwgfSBmcm9tICcuL3RpbWVvZmRheSc7XG5leHBvcnQgeyBEYXRlVGltZSwgVGltZVpvbmUsIH0gZnJvbSAnLi9kYXRldGltZSc7XG4iXX0=