vcomply-workflow-engine 6.1.30 → 6.1.32

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.
@@ -71,14 +71,8 @@ export class DueDateComponent {
71
71
  this.initializeDeadlineValues(deadline);
72
72
  this.initializeStageAssignees(deadline);
73
73
  }
74
- parseDateString(dateStr) {
75
- const dateOnly = dateStr.split('T')[0];
76
- return new Date(dateOnly + 'T00:00:00');
77
- }
78
74
  initializeDeadlineValues(deadline) {
79
- if (deadline?.due_date) {
80
- this.dueDate = this.parseDateString(deadline.due_date);
81
- }
75
+ this.dueDate = new Date(deadline?.due_date);
82
76
  this.emailReminder =
83
77
  deadline.assignee_remind_before || EMAIL_REMINDERS.email_reminder;
84
78
  this.escalationEmail =
@@ -257,6 +251,8 @@ export class DueDateComponent {
257
251
  }
258
252
  formatDueDate(date) {
259
253
  const localDate = new Date(date);
254
+ // Add one day to the date
255
+ localDate.setDate(localDate.getDate() + 1);
260
256
  // Set time to midnight
261
257
  localDate.setHours(0, 0, 0, 0);
262
258
  return localDate.toISOString();
@@ -285,7 +281,7 @@ export class DueDateComponent {
285
281
  };
286
282
  }
287
283
  setPayload() {
288
- const formattedDate = this.formatDueDate(this.dueDate);
284
+ const formattedDate = this.dueDate;
289
285
  this.payload.caseToWorkflow.resolution_deadline.due_date = formattedDate;
290
286
  this.setDeadlineReminders();
291
287
  const stagesAssignees = this.setStagesAssignees();
@@ -351,4 +347,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
351
347
  type: HostListener,
352
348
  args: ['document:click', ['$event']]
353
349
  }] } });
354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvcmVwb3J0LWEtY2FzZS9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3JlcG9ydC1hLWNhc2UvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQ0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxlQUFlLEVBRWYsdUNBQXVDLEdBQ3hDLE1BQU0sdUNBQXVDLENBQUM7QUFHL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLGdCQUFnQjtJQW1DM0IsSUFBYSxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixDQUFDO1lBQ3hFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQVFELFlBQ1UsaUJBQWdDLEVBQ2hDLGdC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QUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQztTQUNsRTtJQUNILENBQUM7K0dBNVdVLGdCQUFnQjttR0FBaEIsZ0JBQWdCLHlwQkFFYyxVQUFVLDZCQy9CckQsdW9aQXlVQTs7NEZENVNhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjO21JQUtTLFVBQVU7c0JBQTFDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUUvQixNQUFNO3NCQURMLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBMkIzRCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBT0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQTJTUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50LCBJRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuXG5pbXBvcnQge1xuICBSRVBPUlRfQ0FTRSxcbiAgSEVMUEVSX1RFWFQsXG4gIEVNQUlMX1JFTUlOREVSUyxcbiAgTU9OVEhfTkFNRVMsXG4gIEJBTk5FUl9DQVNFX1JFU09MVVRJT05fREVBRExJTkVfV0FSTklORyxcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3JlcG9ydC1jYXNlLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWR1ZS1kYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2R1ZS1kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHVlLWRhdGUuY29tcG9uZW50Lmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRHVlRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2RlYWRsaW5lRGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdkZWFkbGluZURhdGVQaWNrZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBhbmltYXRpb24gPSB0cnVlO1xuICBkYXRlUGlja2VyUG9wVXAhOiBFbGVtZW50UmVmO1xuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xuICBkYXRlQ29uZmlnOiBJRGF0ZVBpY2tlckNvbmZpZyA9IHtcbiAgICBkaXNhYmxlS2V5cHJlc3M6IHRydWUsXG4gICAgZm9ybWF0OiAnREQgTU0gWVlZWScsXG4gICAgdW5TZWxlY3RPbkNsaWNrOiB0cnVlLFxuICAgIG9wZW5PbkNsaWNrOiBmYWxzZSxcbiAgICBvcGVuT25Gb2N1czogZmFsc2UsXG4gICAgbWluOiAnJyxcbiAgfTtcbiAgY29tbW9uU2VydmljZTogYW55O1xuICBkdWVEYXRlVGV4dHMgPSBSRVBPUlRfQ0FTRTtcbiAgaGVscGVyVGV4dCA9IEhFTFBFUl9URVhUO1xuICBhc3NpZ25lZUNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYXNzaWduZWVMaXN0OiBhbnlbXSA9IFtdO1xuICBhc3NpZ25lZURhdGE6IHsgW2tleTogbnVtYmVyXTogYW55W10gfSA9IHt9O1xuICBjdXJyZW50U3RhZ2VJbmRleDogbnVtYmVyID0gLTE7XG4gIGFjdGl2ZUFzc2lnbmVlOiBhbnlbXSA9IFtdO1xuICBlbWFpbFJlbWluZGVyOiBudW1iZXIgPSBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gIGVzY2FsYXRpb25FbWFpbDogbnVtYmVyID0gRU1BSUxfUkVNSU5ERVJTLmVzY2FsYXRpb25fZW1haWxfcmVtaW5kZXI7XG4gIHNob3dFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93QXNzaWduZWVFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgQ2FzZURlYWRsaW5lV2FybmluZyA9IEJBTk5FUl9DQVNFX1JFU09MVVRJT05fREVBRExJTkVfV0FSTklORztcblxuICBASW5wdXQoKSBwYXlsb2FkOiBhbnk7XG4gIEBJbnB1dCgpIGR1ZURhdGU6IGFueTtcbiAgQElucHV0KCkgd29ya2Zsb3dEZXRhaWxzOiBhbnk7XG4gIEBJbnB1dCgpIHVzZXJMaXN0OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBncm91cExpc3Q6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIG1vZGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZXQgaW5pdGlhbFNlbGVjdGlvbih2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5kdWVEYXRlID0gdmFsdWU/LnJlc29sdXRpb25fZGVhZGxpbmU/LmR1ZV9kYXRlO1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5lbWFpbFJlbWluZGVyID0gdmFsdWU/LnJlc29sdXRpb25fZGVhZGxpbmU/LmFzc2lnbmVlX3JlbWluZF9iZWZvcmU7XG4gICAgICB0aGlzLmVzY2FsYXRpb25FbWFpbCA9IHZhbHVlPy5yZXNvbHV0aW9uX2RlYWRsaW5lPy5vd25lcl9yZW1pbmRfYmVmb3JlO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBtaW46IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0YXNrQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHZhbGlkRGVhZGxpbmU6IHN0cmluZyA9ICcnO1xuXG4gIEBPdXRwdXQoKSBjbG9zZUR1ZURhdGVSZXNvbHV0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VEdWVEYXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb21tb25EYXRlU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldE1pbkRhdGUoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgMzAwKTtcbiAgICB0aGlzLnNldEFzc2lnbmVlTGlzdCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUVkaXRNb2RlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVFZGl0TW9kZSgpIHtcbiAgICBpZiAoIXRoaXMucGF5bG9hZD8uY2FzZVRvV29ya2Zsb3c/LnJlc29sdXRpb25fZGVhZGxpbmU/LmR1ZV9kYXRlKSByZXR1cm47XG5cbiAgICBjb25zdCBkZWFkbGluZSA9IHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lO1xuICAgIHRoaXMuaW5pdGlhbGl6ZURlYWRsaW5lVmFsdWVzKGRlYWRsaW5lKTtcbiAgICB0aGlzLmluaXRpYWxpemVTdGFnZUFzc2lnbmVlcyhkZWFkbGluZSk7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlRGF0ZVN0cmluZyhkYXRlU3RyOiBzdHJpbmcpOiBEYXRlIHtcbiAgICBjb25zdCBkYXRlT25seSA9IGRhdGVTdHIuc3BsaXQoJ1QnKVswXTtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZU9ubHkgKyAnVDAwOjAwOjAwJyk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVEZWFkbGluZVZhbHVlcyhkZWFkbGluZTogYW55KSB7XG4gICAgaWYgKGRlYWRsaW5lPy5kdWVfZGF0ZSkge1xuICAgICAgdGhpcy5kdWVEYXRlID0gdGhpcy5wYXJzZURhdGVTdHJpbmcoZGVhZGxpbmUuZHVlX2RhdGUpO1xuICAgIH1cbiAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPVxuICAgICAgZGVhZGxpbmUuYXNzaWduZWVfcmVtaW5kX2JlZm9yZSB8fCBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPVxuICAgICAgZGVhZGxpbmUub3duZXJfcmVtaW5kX2JlZm9yZSB8fCBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0YWdlQXNzaWduZWVzKGRlYWRsaW5lOiBhbnkpIHtcbiAgICBpZiAoIWRlYWRsaW5lPy5zdGFnZXNfYXNzaWduZWVzPy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IHN0YWdlQXNzaWduZWVNYXAgPSB0aGlzLmNyZWF0ZVN0YWdlQXNzaWduZWVNYXAoXG4gICAgICBkZWFkbGluZS5zdGFnZXNfYXNzaWduZWVzXG4gICAgKTtcbiAgICB0aGlzLm1hcFdvcmtmbG93U3RhZ2VzKHN0YWdlQXNzaWduZWVNYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRNaW5EYXRlKCkge1xuICAgIGlmICh0aGlzLnRhc2tDb3VudCA+IDAgJiYgdGhpcy52YWxpZERlYWRsaW5lKSB7XG4gICAgICB0aGlzLmRhdGVDb25maWcubWluID0gZGF5anModGhpcy52YWxpZERlYWRsaW5lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRlQ29uZmlnLm1pbiA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5mb3JtYXREYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdGFnZUFzc2lnbmVlTWFwKHN0YWdlc0Fzc2lnbmVlczogYW55W10pOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IE1hcChcbiAgICAgIHN0YWdlc0Fzc2lnbmVlcy5tYXAoKHN0YWdlOiBhbnkpID0+IFtzdGFnZT8uc3RhZ2VfaWQsIHN0YWdlPy5hc3NpZ25lZV9pZF0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwV29ya2Zsb3dTdGFnZXMoc3RhZ2VBc3NpZ25lZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPikge1xuICAgIHRoaXMud29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzPy5mb3JFYWNoKFxuICAgICAgKHdvcmtmbG93U3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBhc3NpZ25lZUlkID0gc3RhZ2VBc3NpZ25lZU1hcD8uZ2V0KHdvcmtmbG93U3RhZ2U/LnN0YWdlX2lkKTtcbiAgICAgICAgaWYgKCFhc3NpZ25lZUlkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmFzc2lnbmVlTGlzdD8uZmluZChcbiAgICAgICAgICAoYXNzaWduZWU6IGFueSkgPT4gYXNzaWduZWU/Ll9pZCA9PT0gYXNzaWduZWVJZFxuICAgICAgICApO1xuICAgICAgICBpZiAoYXNzaWduZWUpIHtcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlRGF0YVtpbmRleF0gPSBbYXNzaWduZWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG9wZW5EYXRlUGlja2VyKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogY2xvc2VzIHRoZSBkYXRlIHBpY2tlciBmcm9tIHBvbGljeSBmb3JtXG4gICAqL1xuICBjbG9zZURhdGVQaWNrZXIoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XG5cbiAgICBpZiAoIWV2dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZ0Py5kYXRlPy4kZCkge1xuICAgICAgbGV0IG1vbnRoQXJyYXkgPSBbXG4gICAgICAgICdKYW4nLFxuICAgICAgICAnRmViJyxcbiAgICAgICAgJ01hcicsXG4gICAgICAgICdBcHInLFxuICAgICAgICAnTWF5JyxcbiAgICAgICAgJ0p1bicsXG4gICAgICAgICdKdWwnLFxuICAgICAgICAnQXVnJyxcbiAgICAgICAgJ1NlcCcsXG4gICAgICAgICdPY3QnLFxuICAgICAgICAnTm92JyxcbiAgICAgICAgJ0RlYycsXG4gICAgICBdO1xuICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0RGF0ZSgpO1xuICAgICAgY29uc3QgbW9udGhWYWx1ZSA9IG1vbnRoQXJyYXlbbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0TW9udGgoKV07XG4gICAgICBjb25zdCB5ZWFyVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/LiRkKS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgZGF0ZVN0ciA9IGAke2RhdGVWYWx1ZX0gJHttb250aFZhbHVlfSAke3llYXJWYWx1ZX1gO1xuICAgIH1cbiAgICBpZiAoZXZ0Py5kYXRlPy4kZCkge1xuICAgICAgdGhpcy5kdWVEYXRlID0gbmV3IERhdGUoZXZ0LmRhdGUuJGQpO1xuICAgICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XG4gIH1cblxuICBjbG9zZUR1ZURhdGUoKSB7XG4gICAgdGhpcy5jbG9zZUR1ZURhdGVFdmVudC5lbWl0KCk7XG4gIH1cblxuICBhY3RpdmF0ZVNlbGVjdG9yKGFjdGl2ZTogYm9vbGVhbiwgc3RhZ2VJbmRleD86IG51bWJlcikge1xuICAgIHRoaXMuYXNzaWduZWVDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuY3VycmVudFN0YWdlSW5kZXggPSBzdGFnZUluZGV4ID8/IC0xO1xuICAgICAgdGhpcy5hY3RpdmVBc3NpZ25lZSA9XG4gICAgICAgIHRoaXMuY3VycmVudFN0YWdlSW5kZXggIT09IC0xXG4gICAgICAgICAgPyB0aGlzLmFzc2lnbmVlRGF0YVt0aGlzLmN1cnJlbnRTdGFnZUluZGV4XVxuICAgICAgICAgIDogW107XG4gICAgfVxuICB9XG5cbiAgc2V0QXNzaWduZWVMaXN0KCkge1xuICAgIGNvbnN0IGRpcmVjdEFzc2lnbmVlcyA9IHRoaXMuZ2V0QXNzaWduZWVzKCk7XG4gICAgY29uc3QgZ3JvdXBBc3NpZ25lZXMgPSB0aGlzLmdldEdyb3VwQXNzaWduZWVzKCk7XG4gICAgdGhpcy5hc3NpZ25lZUxpc3QgPSB0aGlzLmdldFVuaXF1ZUFzc2lnbmVlcyhcbiAgICAgIGRpcmVjdEFzc2lnbmVlcyxcbiAgICAgIGdyb3VwQXNzaWduZWVzXG4gICAgKTtcbiAgfVxuXG4gIGdldEFzc2lnbmVlcygpOiBhbnlbXSB7XG4gICAgY29uc3QgYXNzaWduZWVJZHMgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlcyB8fCBbXTtcblxuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnVzZXJMaXN0XG4gICAgICAgID8uZmlsdGVyKCh1c2VyOiBhbnkpID0+IGFzc2lnbmVlSWRzLmluY2x1ZGVzKHVzZXI/Ll9pZCkpXG4gICAgICAgID8ubWFwKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB1c2VyR3JvdXBzID0gdGhpcy5nZXRVc2VyR3JvdXBzKHVzZXIpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgYXNzb2NpYXRlZEdyb3VwczogdXNlckdyb3VwcyxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSB8fCBbXVxuICAgICk7XG4gIH1cblxuICBnZXRVc2VyR3JvdXBzKHVzZXI6IGFueSk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cExpc3Q/LmZpbHRlcigoZ3JvdXA6IGFueSkgPT5cbiAgICAgIHVzZXI/LnVzZXJncm91cF9pZD8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVxuICAgICk7XG4gIH1cblxuICBnZXRHcm91cEFzc2lnbmVlcygpOiBhbnlbXSB7XG4gICAgY29uc3QgYXNzaWduZWVHcm91cElkcyA9IHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdz8uYXNzaWduZWVzX2dyb3VwIHx8IFtdO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIGFzc2lnbmVlR3JvdXBJZHMuZmxhdE1hcCgoZ3JvdXBJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5maW5kR3JvdXBCeUlkKGdyb3VwSWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBc3NpZ25lZXNGcm9tR3JvdXAoZ3JvdXApO1xuICAgICAgfSkgfHwgW11cbiAgICApO1xuICB9XG5cbiAgZmluZEdyb3VwQnlJZChncm91cElkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdyb3VwTGlzdD8uZmluZCgoZ3JvdXA6IGFueSkgPT4gZ3JvdXA/Ll9pZCA9PT0gZ3JvdXBJZCk7XG4gIH1cblxuICBnZXRBc3NpZ25lZXNGcm9tR3JvdXAoZ3JvdXA6IGFueSk6IGFueVtdIHtcbiAgICByZXR1cm4gKFxuICAgICAgZ3JvdXA/LmFzc29jaWF0ZWRVc2Vyc1xuICAgICAgICA/Lm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXNlckZyb21MaXN0ID0gdGhpcy5maW5kVXNlckJ5SWQodXNlcj8udXNlcklkPy5faWQpO1xuICAgICAgICAgIGlmICh1c2VyRnJvbUxpc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJHcm91cHMgPSB0aGlzLmdldFVzZXJHcm91cHModXNlckZyb21MaXN0KTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnVzZXJGcm9tTGlzdCxcbiAgICAgICAgICAgICAgYXNzb2NpYXRlZEdyb3VwczogdXNlckdyb3VwcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKCh1c2VyOiBhbnkpID0+IHVzZXIgIT09IG51bGwpIHx8IFtdXG4gICAgKTtcbiAgfVxuXG4gIGZpbmRVc2VyQnlJZCh1c2VySWQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMudXNlckxpc3Q/LmZpbmQoKHVzZXI6IGFueSkgPT4gdXNlcj8uX2lkID09PSB1c2VySWQpO1xuICB9XG5cbiAgZ2V0VW5pcXVlQXNzaWduZWVzKGRpcmVjdEFzc2lnbmVlczogYW55W10sIGdyb3VwQXNzaWduZWVzOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gWy4uLmRpcmVjdEFzc2lnbmVlcywgLi4uZ3JvdXBBc3NpZ25lZXNdLnJlZHVjZShcbiAgICAgIChhY2M6IGFueVtdLCB1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCFhY2Muc29tZSgodTogYW55KSA9PiB1Py5faWQgPT09IHVzZXI/Ll9pZCkpIHtcbiAgICAgICAgICBhY2MucHVzaCh1c2VyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIFtdXG4gICAgKTtcbiAgfVxuXG4gIHNlbGVjdGVkQXNzaWduZWUoZXZlbnQ6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFN0YWdlSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmFzc2lnbmVlRGF0YVt0aGlzLmN1cnJlbnRTdGFnZUluZGV4XSA9IGV2ZW50O1xuICAgIH1cbiAgICB0aGlzLmFzc2lnbmVlQ2xpY2tlZCA9IGZhbHNlO1xuICAgIGlmIChldmVudD8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zaG93QXNzaWduZWVFcnJvciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVDYXNlUmVzb2x1dGlvbkRlYWRsaW5lKCkge1xuICAgIGlmICghdGhpcy5pc0R1ZURhdGVWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghdGhpcy5hcmVBc3NpZ25lZXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZXRQYXlsb2FkKCk7XG4gICAgdGhpcy5jbG9zZUR1ZURhdGVSZXNvbHV0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIGlzRHVlRGF0ZVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5kdWVEYXRlKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMudGFza0NvdW50ID4gMCAmJiB0aGlzLnZhbGlkRGVhZGxpbmUpIHtcbiAgICAgIGNvbnN0IHZhbGlkRGVhZGxpbmVEYXRlID0gZGF5anModGhpcy52YWxpZERlYWRsaW5lKTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZSA9IGRheWpzKHRoaXMuZHVlRGF0ZSk7XG4gICAgICByZXR1cm4gc2VsZWN0ZWREYXRlLmlzVmFsaWQoKSAmJiBzZWxlY3RlZERhdGUuaXNBZnRlcih2YWxpZERlYWRsaW5lRGF0ZSk7XG4gICAgfVxuICAgIHJldHVybiBkYXlqcyh0aGlzLmR1ZURhdGUpLmlzVmFsaWQoKTtcbiAgfVxuXG4gIGFyZUFzc2lnbmVlc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndvcmtmbG93RGV0YWlscz8uc3RhZ2VzX2Fzc2lnbmVlcz8uZXZlcnkoXG4gICAgICAoc3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdICYmIHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XT8ubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICBmb3JtYXREdWVEYXRlKGRhdGU6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgbG9jYWxEYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgLy8gU2V0IHRpbWUgdG8gbWlkbmlnaHRcbiAgICBsb2NhbERhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGxvY2FsRGF0ZS50b0lTT1N0cmluZygpO1xuICB9XG5cbiAgc2V0RGVhZGxpbmVSZW1pbmRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuYXNzaWduZWVfcmVtaW5kX2JlZm9yZSA9XG4gICAgICB0aGlzLmVtYWlsUmVtaW5kZXI7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUub3duZXJfcmVtaW5kX2JlZm9yZSA9XG4gICAgICB0aGlzLmVzY2FsYXRpb25FbWFpbDtcbiAgfVxuXG4gIHNldFN0YWdlc0Fzc2lnbmVlcygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMud29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzXG4gICAgICAubWFwKChzdGFnZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlRGF0YSA9IHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XTtcbiAgICAgICAgcmV0dXJuIGFzc2lnbmVlRGF0YVxuICAgICAgICAgID8gdGhpcy5jcmVhdGVTdGFnZUFzc2lnbmVlKHN0YWdlLCBhc3NpZ25lZURhdGEpXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICBjcmVhdGVTdGFnZUFzc2lnbmVlKHN0YWdlOiBhbnksIGFzc2lnbmVlRGF0YTogYW55W10pOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFnZV9pZDogc3RhZ2U/LnN0YWdlX2lkIHx8ICcnLFxuICAgICAgYXNzaWduZWVfaWQ6IGFzc2lnbmVlRGF0YVswXT8uX2lkIHx8ICcnLFxuICAgICAgZHVlX2RhdGU6IHN0YWdlPy5kdWVfZGF0ZSB8fCAnJyxcbiAgICB9O1xuICB9XG5cbiAgc2V0UGF5bG9hZCgpIHtcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy5mb3JtYXREdWVEYXRlKHRoaXMuZHVlRGF0ZSk7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuZHVlX2RhdGUgPSBmb3JtYXR0ZWREYXRlO1xuICAgIHRoaXMuc2V0RGVhZGxpbmVSZW1pbmRlcnMoKTtcbiAgICBjb25zdCBzdGFnZXNBc3NpZ25lZXMgPSB0aGlzLnNldFN0YWdlc0Fzc2lnbmVlcygpO1xuICAgIHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lLnN0YWdlc19hc3NpZ25lZXMgPVxuICAgICAgc3RhZ2VzQXNzaWduZWVzO1xuICAgIHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy53b3JrZmxvd19pZCA9IHRoaXMud29ya2Zsb3dEZXRhaWxzPy5faWQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIGRvY3VtZW50Q2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGVQaWNrZXJPYmplY3QgPSB7XG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICBjbGFzczogJ2RlYWRsaW5lLWRhdGUnLFxuICAgICAgcG9wdXA6IHRoaXMuZGF0ZVBpY2tlclBvcFVwLFxuICAgICAgY29tcG9uZW50OiB0aGlzLmRhdGVQaWNrZXIsXG4gICAgICBvdmVybGF5OiB0aGlzLmRhdGVQaWNrZXJPdmVybGF5LFxuICAgIH07XG4gICAgdGhpcy5jb21tb25EYXRlU2VydmljZS5oYW5kbGVEb2N1bWVudENsaWNrKGRhdGVQaWNrZXJPYmplY3QpO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5lbWFpbFJlbWluZGVyID09PSAwKSB7XG4gICAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPSBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmVzY2FsYXRpb25FbWFpbCA9PT0gMCkge1xuICAgICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlxuICAgICAgQ29uZmlndXJlIFJlc29sdXRpb24gRGVhZGxpbmUgJiBTdGFnZSBEZXRhaWxzXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1ib2R5LWlubmVyXCI+XG4gICAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJmYWxzZVwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJmYWxzZVwiXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIlxuICAgICAgICBbbm9EYXRhVGV4dF09XCInTm8gZGF0YSB0byBkaXNwbGF5J1wiXG4gICAgICA+PC9hcHAtbm8tZGF0YT5cblxuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBTUEVDSUZZIFRIRSBERUFETElORSBUTyBDTE9TRSBUSElTIENBU0VcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkIHZ4LWZzLTE2IHZ4LWZ3LTQwMFwiPio8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLWJhbm5lciAqbmdJZj1cIm1vZGUgPT09ICdFRElUJyAmJiB0YXNrQ291bnQgPiAwXCI+XG4gICAgICAgICAgPHAgYmFubmVyPlxuICAgICAgICAgICAge3sgQ2FzZURlYWRsaW5lV2FybmluZyB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9hcHAtYmFubmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS1jYWxlbmRhciB2eC1tYi0zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhc2UtY2FsZW5kYXItaW5uZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xuICAgICAgICAgICAgICAgIGR1ZURhdGVUZXh0cy5jYXNlX2RldGFpbHMuZHVlX2RhdGUuZGVhZGxpbmVfcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJkdWVEYXRlIHwgZGF0ZSA6ICdkZCBNTU0geXl5eSdcIlxuICAgICAgICAgICAgICBpZD1cImRlYWRsaW5lLWRhdGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cbiAgICAgICAgICAgIDxkcC1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAjZGVhZGxpbmVEYXRlUGlja2VyXG4gICAgICAgICAgICAgIChvblNlbGVjdCk9XCJkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlOyBjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZHVlRGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2RwLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yXCIgY2xhc3M9XCJlcnJvck1zZyB2eC1mcy0xMSB2eC1saC00IHZ4LW10LTFcIj5cbiAgICAgICAgICAgIHt7IGR1ZURhdGVUZXh0cy5lcnJvck1lc3NhZ2UuZHVlRGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW1iLTFcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDT05GSUdVUkUgREVBRExJTkUgJiBBU1NJR05FRSBGT1IgRUFDSCBTVEFHRSBJTiBUSEUgV09SS0ZMT1dcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b2dnbGUtYXJlYSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaD5BbGxvdyBSZW9wZW5pbmcgb2YgUHJldmlvdXMgU3RhZ2U8L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMlwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBlbmFibGVkLCB0aGlzIG9wdGlvbiBhbGxvd3MgdGhlIGFzc2lnbmVlIHRvIHJldmlzaXQgYW5kIHJlb3BlbiBhIHByZXZpb3VzbHkgY29tcGxldGVkIHN0YWdlLiBUaGUgc3RhZ2Ugd2lsbCBiZSByZXNldCwgYW5kIHRoZSBhc3NpZ25lZCB1c2VyIHdpbGwgbmVlZCB0byBjb21wbGV0ZSBpdCBhZ2Fpbi4nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tdGFibGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICNcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc3RhZ2UtbmFtZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTVEFHRSBOQU1FXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHN0YXR1c1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBUUkFOU0lUSU9OIFNUQVRVU1xuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LnRyYW5zaXRpb25fc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhc3NpZ25lZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBU1NJR05FRVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmFzc2lnbmVlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBERUFETElORVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmRlYWRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcm93XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgb2Ygd29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW5vIHZ4LWZzLTEzIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiaSArIDFcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGFnZS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUgdngtZnMtMTMgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJkYXRhPy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGF0dXNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyXCI+XG4gICAgICAgICAgICAgICAgICB7eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8uZnJvbU5hbWUgfX08YnIgLz48c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICA+VG88L3NwYW5cbiAgICAgICAgICAgICAgICAgID57eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8udG9OYW1lIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgYXNzaWduZWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC0zIHZ4LXByLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xM1wiPlNlbGVjdCBhIFVzZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgYXJyb3cgdngtZnMtMTJcIj4mI3hlOWU4OzwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFmdGVyLXNlbGVjdC1ib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtMyB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUtY2hpcCB2eC1mcy0xMSB2eC1wbC0yIHZ4LXByLTIgdngtbGgtNlwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFzc2lnbmVlRGF0YVtpXVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWVEYXRhW2ldWzBdPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbXItMVwiPiYjeGU5YmE7PC9pXG4gICAgICAgICAgICAgICAgICAgID5FRElUXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNhc2UtY2FsZW5kYXIgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wdC0zIHZ4LXBiLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXNlLWNhbGVuZGFyLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3sgZHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJzdGFnZS1kZWFkbGluZS1kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAjZGF0ZVBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7IGNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGVDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0Fzc2lnbmVlRXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvck1zZyB2eC1mcy0xMSB2eC1saC00IHZ4LW10LTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGR1ZURhdGVUZXh0cy5lcnJvck1lc3NhZ2Uuc3RhZ2VBc3NpZ25lZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBFTUFJTCBSRU1JTkRFUiBDT05GSUdVUkFUSU9OXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXIgdngtbWItMlwiPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC10b3AgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1saC00IHZ4LW1iLTEgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIFJFTUlOREVSIEVNQUlMXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJlbWFpbC1jb25maWd1cmUtYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwIHZ4LXAtMiB2eC1wbC0zIHZ4LXByLTMgdngtbWItMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbXItMVwiPlxuICAgICAgICAgICAgU2VuZCByZWd1bGFyIGVtYWlsIHJlbWluZGVycyB0byB0aGUgYXNzaWduZWVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbWFpbFJlbWluZGVyXCJcbiAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXkgIT09ICcuJ1wiXG4gICAgICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tbC0xXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsYWNrLXRleHRcIj5kYXlzPC9zcGFuPiBiZWZvcmUgdGhlIHN0YWdlIGRlYWRsaW5lLlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBFU0NBTEFUSU9OIEVNQUlMXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJlbWFpbC1jb25maWd1cmUtYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwIHZ4LXAtMiB2eC1wbC0zIHZ4LXByLTMgdngtbWItMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbXItMVwiPlxuICAgICAgICAgICAgU2VuZCBlbWFpbCBlc2NhbGF0aW9uIHRvIHRoZSBDYXNlIE93bmVyXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZXNjYWxhdGlvbkVtYWlsXCJcbiAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXkgIT09ICcuJ1wiXG4gICAgICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tbC0xXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsYWNrLXRleHRcIj5kYXlzPC9zcGFuPiBiZWZvcmUgdGhlIG92ZXJhbGwgY2FzZVxuICAgICAgICAgICAgZGVhZGxpbmUsIGlmIHRoZSBjYXNlIGlzIHN0aWxsIG9wZW4uXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1mbG9hdGluZy1iYXJcbiAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2VEdWVEYXRlKClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZUNhc2VSZXNvbHV0aW9uRGVhZGxpbmUoKVwiXG4gICAgPjwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxhcHAtYXNzaWduZWVcbiAgKm5nSWY9XCJhc3NpZ25lZUNsaWNrZWRcIlxuICBbcGF5bG9hZF09XCJwYXlsb2FkXCJcbiAgW2Fzc2lnbmVlTGlzdF09XCJhc3NpZ25lZUxpc3RcIlxuICBbYWN0aXZlQXNzaWduZWVdPVwiYWN0aXZlQXNzaWduZWVcIlxuICAoc2VsZWN0ZWRBc3NpZ25lZUV2ZW50KT1cInNlbGVjdGVkQXNzaWduZWUoJGV2ZW50KVwiXG4gIChjbG9zZUV2ZW50KT1cImFjdGl2YXRlU2VsZWN0b3IoZmFsc2UpXCJcbj48L2FwcC1hc3NpZ25lZT5cbiJdfQ==
350
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvcmVwb3J0LWEtY2FzZS9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3JlcG9ydC1hLWNhc2UvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQ0wsV0FBVyxFQUNYLFdBQVcsRUFDWCxlQUFlLEVBRWYsdUNBQXVDLEdBQ3hDLE1BQU0sdUNBQXVDLENBQUM7QUFHL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLGdCQUFnQjtJQW1DM0IsSUFBYSxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixDQUFDO1lBQ3hFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQVFELFlBQ1UsaUJBQWdDLEVBQ2hDLGdC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LGVBQWUsS0FBSyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUMseUJBQXlCLENBQUM7U0FDbEU7SUFDSCxDQUFDOytHQXZXVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQix5cEJBRWMsVUFBVSw2QkMvQnJELHVvWkF5VUE7OzRGRDVTYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzttSUFLUyxVQUFVO3NCQUExQyxTQUFTO3VCQUFDLG9CQUFvQjtnQkFFL0IsTUFBTTtzQkFETCxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQTJCM0QsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ08sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQU9HLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksc0JBQXNCO3NCQUEvQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFzU1AsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCwgSURhdGVQaWNrZXJDb25maWcgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcblxuaW1wb3J0IHtcbiAgUkVQT1JUX0NBU0UsXG4gIEhFTFBFUl9URVhULFxuICBFTUFJTF9SRU1JTkRFUlMsXG4gIE1PTlRIX05BTUVTLFxuICBCQU5ORVJfQ0FTRV9SRVNPTFVUSU9OX0RFQURMSU5FX1dBUk5JTkcsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cy9yZXBvcnQtY2FzZS5jb25zdGFudHMnO1xuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kdWUtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R1ZS1kYXRlLmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIER1ZURhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCdkZWFkbGluZURhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZGVhZGxpbmVEYXRlUGlja2VyJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIEFTU0VUUyA9IEFTU0VUUztcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgZGF0ZVBpY2tlclBvcFVwITogRWxlbWVudFJlZjtcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcbiAgZGF0ZUNvbmZpZzogSURhdGVQaWNrZXJDb25maWcgPSB7XG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxuICAgIGZvcm1hdDogJ0REIE1NIFlZWVknLFxuICAgIHVuU2VsZWN0T25DbGljazogdHJ1ZSxcbiAgICBvcGVuT25DbGljazogZmFsc2UsXG4gICAgb3Blbk9uRm9jdXM6IGZhbHNlLFxuICAgIG1pbjogJycsXG4gIH07XG4gIGNvbW1vblNlcnZpY2U6IGFueTtcbiAgZHVlRGF0ZVRleHRzID0gUkVQT1JUX0NBU0U7XG4gIGhlbHBlclRleHQgPSBIRUxQRVJfVEVYVDtcbiAgYXNzaWduZWVDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGFzc2lnbmVlTGlzdDogYW55W10gPSBbXTtcbiAgYXNzaWduZWVEYXRhOiB7IFtrZXk6IG51bWJlcl06IGFueVtdIH0gPSB7fTtcbiAgY3VycmVudFN0YWdlSW5kZXg6IG51bWJlciA9IC0xO1xuICBhY3RpdmVBc3NpZ25lZTogYW55W10gPSBbXTtcbiAgZW1haWxSZW1pbmRlcjogbnVtYmVyID0gRU1BSUxfUkVNSU5ERVJTLmVtYWlsX3JlbWluZGVyO1xuICBlc2NhbGF0aW9uRW1haWw6IG51bWJlciA9IEVNQUlMX1JFTUlOREVSUy5lc2NhbGF0aW9uX2VtYWlsX3JlbWluZGVyO1xuICBzaG93RXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0Fzc2lnbmVlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIENhc2VEZWFkbGluZVdhcm5pbmcgPSBCQU5ORVJfQ0FTRV9SRVNPTFVUSU9OX0RFQURMSU5FX1dBUk5JTkc7XG5cbiAgQElucHV0KCkgcGF5bG9hZDogYW55O1xuICBASW5wdXQoKSBkdWVEYXRlOiBhbnk7XG4gIEBJbnB1dCgpIHdvcmtmbG93RGV0YWlsczogYW55O1xuICBASW5wdXQoKSB1c2VyTGlzdDogYW55W10gPSBbXTtcbiAgQElucHV0KCkgZ3JvdXBMaXN0OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBtb2RlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2V0IGluaXRpYWxTZWxlY3Rpb24odmFsdWU6IGFueSkge1xuICAgIHRoaXMuZHVlRGF0ZSA9IHZhbHVlPy5yZXNvbHV0aW9uX2RlYWRsaW5lPy5kdWVfZGF0ZTtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgIHRoaXMuZW1haWxSZW1pbmRlciA9IHZhbHVlPy5yZXNvbHV0aW9uX2RlYWRsaW5lPy5hc3NpZ25lZV9yZW1pbmRfYmVmb3JlO1xuICAgICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8ub3duZXJfcmVtaW5kX2JlZm9yZTtcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgbWluOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdGFza0NvdW50OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSB2YWxpZERlYWRsaW5lOiBzdHJpbmcgPSAnJztcblxuICBAT3V0cHV0KCkgY2xvc2VEdWVEYXRlUmVzb2x1dGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNsb3NlRHVlRGF0ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29tbW9uRGF0ZVNlcnZpY2U6IENvbW1vblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRNaW5EYXRlKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIH0sIDMwMCk7XG4gICAgdGhpcy5zZXRBc3NpZ25lZUxpc3QoKTtcbiAgICB0aGlzLmluaXRpYWxpemVFZGl0TW9kZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRWRpdE1vZGUoKSB7XG4gICAgaWYgKCF0aGlzLnBheWxvYWQ/LmNhc2VUb1dvcmtmbG93Py5yZXNvbHV0aW9uX2RlYWRsaW5lPy5kdWVfZGF0ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGVhZGxpbmUgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZTtcbiAgICB0aGlzLmluaXRpYWxpemVEZWFkbGluZVZhbHVlcyhkZWFkbGluZSk7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhZ2VBc3NpZ25lZXMoZGVhZGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRGVhZGxpbmVWYWx1ZXMoZGVhZGxpbmU6IGFueSkge1xuICAgIHRoaXMuZHVlRGF0ZSA9IG5ldyBEYXRlKGRlYWRsaW5lPy5kdWVfZGF0ZSk7XG4gICAgdGhpcy5lbWFpbFJlbWluZGVyID1cbiAgICAgIGRlYWRsaW5lLmFzc2lnbmVlX3JlbWluZF9iZWZvcmUgfHwgRU1BSUxfUkVNSU5ERVJTLmVtYWlsX3JlbWluZGVyO1xuICAgIHRoaXMuZXNjYWxhdGlvbkVtYWlsID1cbiAgICAgIGRlYWRsaW5lLm93bmVyX3JlbWluZF9iZWZvcmUgfHwgRU1BSUxfUkVNSU5ERVJTLmVzY2FsYXRpb25fZW1haWxfcmVtaW5kZXI7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTdGFnZUFzc2lnbmVlcyhkZWFkbGluZTogYW55KSB7XG4gICAgaWYgKCFkZWFkbGluZT8uc3RhZ2VzX2Fzc2lnbmVlcz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBzdGFnZUFzc2lnbmVlTWFwID0gdGhpcy5jcmVhdGVTdGFnZUFzc2lnbmVlTWFwKFxuICAgICAgZGVhZGxpbmUuc3RhZ2VzX2Fzc2lnbmVlc1xuICAgICk7XG4gICAgdGhpcy5tYXBXb3JrZmxvd1N0YWdlcyhzdGFnZUFzc2lnbmVlTWFwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWluRGF0ZSgpIHtcbiAgICBpZiAodGhpcy50YXNrQ291bnQgPiAwICYmIHRoaXMudmFsaWREZWFkbGluZSkge1xuICAgICAgdGhpcy5kYXRlQ29uZmlnLm1pbiA9IGRheWpzKHRoaXMudmFsaWREZWFkbGluZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0ZUNvbmZpZy5taW4gPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZm9ybWF0RGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3RhZ2VBc3NpZ25lZU1hcChzdGFnZXNBc3NpZ25lZXM6IGFueVtdKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBNYXAoXG4gICAgICBzdGFnZXNBc3NpZ25lZXMubWFwKChzdGFnZTogYW55KSA9PiBbc3RhZ2U/LnN0YWdlX2lkLCBzdGFnZT8uYXNzaWduZWVfaWRdKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1hcFdvcmtmbG93U3RhZ2VzKHN0YWdlQXNzaWduZWVNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4pIHtcbiAgICB0aGlzLndvcmtmbG93RGV0YWlscz8uc3RhZ2VzX2Fzc2lnbmVlcz8uZm9yRWFjaChcbiAgICAgICh3b3JrZmxvd1N0YWdlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWVJZCA9IHN0YWdlQXNzaWduZWVNYXA/LmdldCh3b3JrZmxvd1N0YWdlPy5zdGFnZV9pZCk7XG4gICAgICAgIGlmICghYXNzaWduZWVJZCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGFzc2lnbmVlID0gdGhpcy5hc3NpZ25lZUxpc3Q/LmZpbmQoXG4gICAgICAgICAgKGFzc2lnbmVlOiBhbnkpID0+IGFzc2lnbmVlPy5faWQgPT09IGFzc2lnbmVlSWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGFzc2lnbmVlKSB7XG4gICAgICAgICAgdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdID0gW2Fzc2lnbmVlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBvcGVuRGF0ZVBpY2tlcigpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIGNsb3NlcyB0aGUgZGF0ZSBwaWNrZXIgZnJvbSBwb2xpY3kgZm9ybVxuICAgKi9cbiAgY2xvc2VEYXRlUGlja2VyKGV2dDogYW55KSB7XG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xuXG4gICAgaWYgKCFldnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcbiAgICAgIGxldCBtb250aEFycmF5ID0gW1xuICAgICAgICAnSmFuJyxcbiAgICAgICAgJ0ZlYicsXG4gICAgICAgICdNYXInLFxuICAgICAgICAnQXByJyxcbiAgICAgICAgJ01heScsXG4gICAgICAgICdKdW4nLFxuICAgICAgICAnSnVsJyxcbiAgICAgICAgJ0F1ZycsXG4gICAgICAgICdTZXAnLFxuICAgICAgICAnT2N0JyxcbiAgICAgICAgJ05vdicsXG4gICAgICAgICdEZWMnLFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGRhdGVWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldERhdGUoKTtcbiAgICAgIGNvbnN0IG1vbnRoVmFsdWUgPSBtb250aEFycmF5W25ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldE1vbnRoKCldO1xuICAgICAgY29uc3QgeWVhclZhbHVlID0gbmV3IERhdGUoZXZ0Py5kYXRlPy4kZCkuZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSBgJHtkYXRlVmFsdWV9ICR7bW9udGhWYWx1ZX0gJHt5ZWFyVmFsdWV9YDtcbiAgICB9XG4gICAgaWYgKGV2dD8uZGF0ZT8uJGQpIHtcbiAgICAgIHRoaXMuZHVlRGF0ZSA9IG5ldyBEYXRlKGV2dC5kYXRlLiRkKTtcbiAgICAgIHRoaXMuc2hvd0Vycm9yID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5jbG9zZSgpO1xuICB9XG5cbiAgY2xvc2VEdWVEYXRlKCkge1xuICAgIHRoaXMuY2xvc2VEdWVEYXRlRXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgYWN0aXZhdGVTZWxlY3RvcihhY3RpdmU6IGJvb2xlYW4sIHN0YWdlSW5kZXg/OiBudW1iZXIpIHtcbiAgICB0aGlzLmFzc2lnbmVlQ2xpY2tlZCA9IGFjdGl2ZTtcbiAgICBpZiAoYWN0aXZlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTdGFnZUluZGV4ID0gc3RhZ2VJbmRleCA/PyAtMTtcbiAgICAgIHRoaXMuYWN0aXZlQXNzaWduZWUgPVxuICAgICAgICB0aGlzLmN1cnJlbnRTdGFnZUluZGV4ICE9PSAtMVxuICAgICAgICAgID8gdGhpcy5hc3NpZ25lZURhdGFbdGhpcy5jdXJyZW50U3RhZ2VJbmRleF1cbiAgICAgICAgICA6IFtdO1xuICAgIH1cbiAgfVxuXG4gIHNldEFzc2lnbmVlTGlzdCgpIHtcbiAgICBjb25zdCBkaXJlY3RBc3NpZ25lZXMgPSB0aGlzLmdldEFzc2lnbmVlcygpO1xuICAgIGNvbnN0IGdyb3VwQXNzaWduZWVzID0gdGhpcy5nZXRHcm91cEFzc2lnbmVlcygpO1xuICAgIHRoaXMuYXNzaWduZWVMaXN0ID0gdGhpcy5nZXRVbmlxdWVBc3NpZ25lZXMoXG4gICAgICBkaXJlY3RBc3NpZ25lZXMsXG4gICAgICBncm91cEFzc2lnbmVlc1xuICAgICk7XG4gIH1cblxuICBnZXRBc3NpZ25lZXMoKTogYW55W10ge1xuICAgIGNvbnN0IGFzc2lnbmVlSWRzID0gdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93Py5hc3NpZ25lZXMgfHwgW107XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy51c2VyTGlzdFxuICAgICAgICA/LmZpbHRlcigodXNlcjogYW55KSA9PiBhc3NpZ25lZUlkcy5pbmNsdWRlcyh1c2VyPy5faWQpKVxuICAgICAgICA/Lm1hcCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgdXNlckdyb3VwcyA9IHRoaXMuZ2V0VXNlckdyb3Vwcyh1c2VyKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgIGFzc29jaWF0ZWRHcm91cHM6IHVzZXJHcm91cHMsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSkgfHwgW11cbiAgICApO1xuICB9XG5cbiAgZ2V0VXNlckdyb3Vwcyh1c2VyOiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBMaXN0Py5maWx0ZXIoKGdyb3VwOiBhbnkpID0+XG4gICAgICB1c2VyPy51c2VyZ3JvdXBfaWQ/LmluY2x1ZGVzKGdyb3VwPy5ncm91cF9pZClcbiAgICApO1xuICB9XG5cbiAgZ2V0R3JvdXBBc3NpZ25lZXMoKTogYW55W10ge1xuICAgIGNvbnN0IGFzc2lnbmVlR3JvdXBJZHMgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlc19ncm91cCB8fCBbXTtcblxuICAgIHJldHVybiAoXG4gICAgICBhc3NpZ25lZUdyb3VwSWRzLmZsYXRNYXAoKGdyb3VwSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwQnlJZChncm91cElkKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXNzaWduZWVzRnJvbUdyb3VwKGdyb3VwKTtcbiAgICAgIH0pIHx8IFtdXG4gICAgKTtcbiAgfVxuXG4gIGZpbmRHcm91cEJ5SWQoZ3JvdXBJZDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5ncm91cExpc3Q/LmZpbmQoKGdyb3VwOiBhbnkpID0+IGdyb3VwPy5faWQgPT09IGdyb3VwSWQpO1xuICB9XG5cbiAgZ2V0QXNzaWduZWVzRnJvbUdyb3VwKGdyb3VwOiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdyb3VwPy5hc3NvY2lhdGVkVXNlcnNcbiAgICAgICAgPy5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVzZXJGcm9tTGlzdCA9IHRoaXMuZmluZFVzZXJCeUlkKHVzZXI/LnVzZXJJZD8uX2lkKTtcbiAgICAgICAgICBpZiAodXNlckZyb21MaXN0KSB7XG4gICAgICAgICAgICBjb25zdCB1c2VyR3JvdXBzID0gdGhpcy5nZXRVc2VyR3JvdXBzKHVzZXJGcm9tTGlzdCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi51c2VyRnJvbUxpc3QsXG4gICAgICAgICAgICAgIGFzc29jaWF0ZWRHcm91cHM6IHVzZXJHcm91cHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigodXNlcjogYW55KSA9PiB1c2VyICE9PSBudWxsKSB8fCBbXVxuICAgICk7XG4gIH1cblxuICBmaW5kVXNlckJ5SWQodXNlcklkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnVzZXJMaXN0Py5maW5kKCh1c2VyOiBhbnkpID0+IHVzZXI/Ll9pZCA9PT0gdXNlcklkKTtcbiAgfVxuXG4gIGdldFVuaXF1ZUFzc2lnbmVlcyhkaXJlY3RBc3NpZ25lZXM6IGFueVtdLCBncm91cEFzc2lnbmVlczogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIFsuLi5kaXJlY3RBc3NpZ25lZXMsIC4uLmdyb3VwQXNzaWduZWVzXS5yZWR1Y2UoXG4gICAgICAoYWNjOiBhbnlbXSwgdXNlcjogYW55KSA9PiB7XG4gICAgICAgIGlmICghYWNjLnNvbWUoKHU6IGFueSkgPT4gdT8uX2lkID09PSB1c2VyPy5faWQpKSB7XG4gICAgICAgICAgYWNjLnB1c2godXNlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICBbXVxuICAgICk7XG4gIH1cblxuICBzZWxlY3RlZEFzc2lnbmVlKGV2ZW50OiBhbnlbXSkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTdGFnZUluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5hc3NpZ25lZURhdGFbdGhpcy5jdXJyZW50U3RhZ2VJbmRleF0gPSBldmVudDtcbiAgICB9XG4gICAgdGhpcy5hc3NpZ25lZUNsaWNrZWQgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQ/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2hvd0Fzc2lnbmVlRXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzYXZlQ2FzZVJlc29sdXRpb25EZWFkbGluZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNEdWVEYXRlVmFsaWQoKSkge1xuICAgICAgdGhpcy5zaG93RXJyb3IgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuYXJlQXNzaWduZWVzVmFsaWQoKSkge1xuICAgICAgdGhpcy5zaG93QXNzaWduZWVFcnJvciA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2hvd0Vycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zaG93QXNzaWduZWVFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuc2V0UGF5bG9hZCgpO1xuICAgIHRoaXMuY2xvc2VEdWVEYXRlUmVzb2x1dGlvbi5lbWl0KCk7XG4gIH1cblxuICBpc0R1ZURhdGVWYWxpZCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZHVlRGF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0aGlzLnRhc2tDb3VudCA+IDAgJiYgdGhpcy52YWxpZERlYWRsaW5lKSB7XG4gICAgICBjb25zdCB2YWxpZERlYWRsaW5lRGF0ZSA9IGRheWpzKHRoaXMudmFsaWREZWFkbGluZSk7XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSBkYXlqcyh0aGlzLmR1ZURhdGUpO1xuICAgICAgcmV0dXJuIHNlbGVjdGVkRGF0ZS5pc1ZhbGlkKCkgJiYgc2VsZWN0ZWREYXRlLmlzQWZ0ZXIodmFsaWREZWFkbGluZURhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gZGF5anModGhpcy5kdWVEYXRlKS5pc1ZhbGlkKCk7XG4gIH1cblxuICBhcmVBc3NpZ25lZXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy53b3JrZmxvd0RldGFpbHM/LnN0YWdlc19hc3NpZ25lZXM/LmV2ZXJ5KFxuICAgICAgKHN0YWdlOiBhbnksIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgIHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XSAmJiB0aGlzLmFzc2lnbmVlRGF0YVtpbmRleF0/Lmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgZm9ybWF0RHVlRGF0ZShkYXRlOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxvY2FsRGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIC8vIEFkZCBvbmUgZGF5IHRvIHRoZSBkYXRlXG4gICAgbG9jYWxEYXRlLnNldERhdGUobG9jYWxEYXRlLmdldERhdGUoKSArIDEpO1xuICAgIC8vIFNldCB0aW1lIHRvIG1pZG5pZ2h0XG4gICAgbG9jYWxEYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiBsb2NhbERhdGUudG9JU09TdHJpbmcoKTtcbiAgfVxuXG4gIHNldERlYWRsaW5lUmVtaW5kZXJzKCk6IHZvaWQge1xuICAgIHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lLmFzc2lnbmVlX3JlbWluZF9iZWZvcmUgPVxuICAgICAgdGhpcy5lbWFpbFJlbWluZGVyO1xuICAgIHRoaXMucGF5bG9hZC5jYXNlVG9Xb3JrZmxvdy5yZXNvbHV0aW9uX2RlYWRsaW5lLm93bmVyX3JlbWluZF9iZWZvcmUgPVxuICAgICAgdGhpcy5lc2NhbGF0aW9uRW1haWw7XG4gIH1cblxuICBzZXRTdGFnZXNBc3NpZ25lZXMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLndvcmtmbG93RGV0YWlscz8uc3RhZ2VzX2Fzc2lnbmVlc1xuICAgICAgLm1hcCgoc3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBhc3NpZ25lZURhdGEgPSB0aGlzLmFzc2lnbmVlRGF0YVtpbmRleF07XG4gICAgICAgIHJldHVybiBhc3NpZ25lZURhdGFcbiAgICAgICAgICA/IHRoaXMuY3JlYXRlU3RhZ2VBc3NpZ25lZShzdGFnZSwgYXNzaWduZWVEYXRhKVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgY3JlYXRlU3RhZ2VBc3NpZ25lZShzdGFnZTogYW55LCBhc3NpZ25lZURhdGE6IGFueVtdKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhZ2VfaWQ6IHN0YWdlPy5zdGFnZV9pZCB8fCAnJyxcbiAgICAgIGFzc2lnbmVlX2lkOiBhc3NpZ25lZURhdGFbMF0/Ll9pZCB8fCAnJyxcbiAgICAgIGR1ZV9kYXRlOiBzdGFnZT8uZHVlX2RhdGUgfHwgJycsXG4gICAgfTtcbiAgfVxuXG4gIHNldFBheWxvYWQoKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuZHVlRGF0ZTtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5kdWVfZGF0ZSA9IGZvcm1hdHRlZERhdGU7XG4gICAgdGhpcy5zZXREZWFkbGluZVJlbWluZGVycygpO1xuICAgIGNvbnN0IHN0YWdlc0Fzc2lnbmVlcyA9IHRoaXMuc2V0U3RhZ2VzQXNzaWduZWVzKCk7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuc3RhZ2VzX2Fzc2lnbmVlcyA9XG4gICAgICBzdGFnZXNBc3NpZ25lZXM7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LndvcmtmbG93X2lkID0gdGhpcy53b3JrZmxvd0RldGFpbHM/Ll9pZDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgZG9jdW1lbnRDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZVBpY2tlck9iamVjdCA9IHtcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNsYXNzOiAnZGVhZGxpbmUtZGF0ZScsXG4gICAgICBwb3B1cDogdGhpcy5kYXRlUGlja2VyUG9wVXAsXG4gICAgICBjb21wb25lbnQ6IHRoaXMuZGF0ZVBpY2tlcixcbiAgICAgIG92ZXJsYXk6IHRoaXMuZGF0ZVBpY2tlck92ZXJsYXksXG4gICAgfTtcbiAgICB0aGlzLmNvbW1vbkRhdGVTZXJ2aWNlLmhhbmRsZURvY3VtZW50Q2xpY2soZGF0ZVBpY2tlck9iamVjdCk7XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKCkge1xuICAgIGlmICh0aGlzLmVtYWlsUmVtaW5kZXIgPT09IDApIHtcbiAgICAgIHRoaXMuZW1haWxSZW1pbmRlciA9IEVNQUlMX1JFTUlOREVSUy5lbWFpbF9yZW1pbmRlcjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZXNjYWxhdGlvbkVtYWlsID09PSAwKSB7XG4gICAgICB0aGlzLmVzY2FsYXRpb25FbWFpbCA9IEVNQUlMX1JFTUlOREVSUy5lc2NhbGF0aW9uX2VtYWlsX3JlbWluZGVyO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS1yZXNvbHV0aW9uXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNvbmZpZ3VyZS1yZXNvbHV0aW9uLWhlYWQgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtNCB2eC1wci00XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xNCB2eC1mdy01MDAgdngtbGFiZWwtdHh0XCI+XG4gICAgICBDb25maWd1cmUgUmVzb2x1dGlvbiBEZWFkbGluZSAmIFN0YWdlIERldGFpbHNcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyZS1yZXNvbHV0aW9uLWJvZHktaW5uZXJcIj5cbiAgICAgIDxhcHAtbG9hZGVyLWlubGluZSAqbmdJZj1cImZhbHNlXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cbiAgICAgIDxhcHAtbm8tZGF0YVxuICAgICAgICAqbmdJZj1cImZhbHNlXCJcbiAgICAgICAgW25vRGF0YUltYWdlXT1cIkFTU0VUUy5zZWFyY2hfZGF0YVwiXG4gICAgICAgIFtub0RhdGFUZXh0XT1cIidObyBkYXRhIHRvIGRpc3BsYXknXCJcbiAgICAgID48L2FwcC1uby1kYXRhPlxuXG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC10b3AgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1saC00IHZ4LW1iLTEgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIFNQRUNJRlkgVEhFIERFQURMSU5FIFRPIENMT1NFIFRISVMgQ0FTRVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhcHAtYmFubmVyICpuZ0lmPVwibW9kZSA9PT0gJ0VESVQnICYmIHRhc2tDb3VudCA+IDBcIj5cbiAgICAgICAgICA8cCBiYW5uZXI+XG4gICAgICAgICAgICB7eyBDYXNlRGVhZGxpbmVXYXJuaW5nIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2FwcC1iYW5uZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXNlLWNhbGVuZGFyIHZ4LW1iLTNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS1jYWxlbmRhci1pbm5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XG4gICAgICAgICAgICAgICAgZHVlRGF0ZVRleHRzLmNhc2VfZGV0YWlscy5kdWVfZGF0ZS5kZWFkbGluZV9wbGFjZWhvbGRlclxuICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImR1ZURhdGUgfCBkYXRlIDogJ2RkIE1NTSB5eXl5J1wiXG4gICAgICAgICAgICAgIGlkPVwiZGVhZGxpbmUtZGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICNkZWFkbGluZURhdGVQaWNrZXJcbiAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cImRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7IGNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRlQ29uZmlnXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkdWVEYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidngtb3ZlcmxheVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVBpY2tlck92ZXJsYXlcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RXJyb3JcIiBjbGFzcz1cImVycm9yTXNnIHZ4LWZzLTExIHZ4LWxoLTQgdngtbXQtMVwiPlxuICAgICAgICAgICAge3sgZHVlRGF0ZVRleHRzLmVycm9yTWVzc2FnZS5kdWVEYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItMVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIENPTkZJR1VSRSBERUFETElORSAmIEFTU0lHTkVFIEZPUiBFQUNIIFNUQUdFIElOIFRIRSBXT1JLRkxPV1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRvZ2dsZS1hcmVhIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxhcHAtY3Mtc3dpdGNoPkFsbG93IFJlb3BlbmluZyBvZiBQcmV2aW91cyBTdGFnZTwvYXBwLWNzLXN3aXRjaD5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgaW5mbyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0yXCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0lmIGVuYWJsZWQsIHRoaXMgb3B0aW9uIGFsbG93cyB0aGUgYXNzaWduZWUgdG8gcmV2aXNpdCBhbmQgcmVvcGVuIGEgcHJldmlvdXNseSBjb21wbGV0ZWQgc3RhZ2UuIFRoZSBzdGFnZSB3aWxsIGJlIHJlc2V0LCBhbmQgdGhlIGFzc2lnbmVkIHVzZXIgd2lsbCBuZWVkIHRvIGNvbXBsZXRlIGl0IGFnYWluLidcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi10YWJsZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzZXJpYWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgI1xuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGFnZS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFNUQUdFIE5BTUVcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc3RhdHVzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFRSQU5TSVRJT04gU1RBVFVTXG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgaW5mbyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xXCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImhlbHBlclRleHQudHJhbnNpdGlvbl9zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGFzc2lnbmVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEFTU0lHTkVFXG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgaW5mbyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xXCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImhlbHBlclRleHQuYXNzaWduZWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGRlYWRsaW5lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIERFQURMSU5FXG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgaW5mbyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tbC0xXCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImhlbHBlclRleHQuZGVhZGxpbmVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yb3dcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSBvZiB3b3JrZmxvd0RldGFpbHM/LnN0YWdlc19hc3NpZ25lZXM7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Itbm8gdngtZnMtMTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJpICsgMVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBpICsgMSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHN0YWdlLW5hbWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMyB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImRhdGE/Lm5hbWVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZGF0YT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHN0YXR1c1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTJcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/LnN0YXR1c190cmFuc2l0aW9uPy5mcm9tTmFtZSB9fTxiciAvPjxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAgID5Ubzwvc3BhblxuICAgICAgICAgICAgICAgICAgPnt7IGRhdGE/LnN0YXR1c190cmFuc2l0aW9uPy50b05hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhc3NpZ25lZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IodHJ1ZSwgaSlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYXNzaWduZWVEYXRhW2ldPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTMgdngtcHItM1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEzXCI+U2VsZWN0IGEgVXNlcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBhcnJvdyB2eC1mcy0xMlwiPiYjeGU5ZTg7PC9pPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXNzaWduZWVEYXRhW2ldPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWZ0ZXItc2VsZWN0LWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC0zIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZS1jaGlwIHZ4LWZzLTExIHZ4LXBsLTIgdngtcHItMiB2eC1saC02XCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXNzaWduZWVEYXRhW2ldWzBdPy5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBhc3NpZ25lZURhdGFbaV1bMF0/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IodHJ1ZSwgaSlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVkaXQtYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10eHQtYmx1ZSB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMiB2eC10eHQtYmx1ZSB2eC1tci0xXCI+JiN4ZTliYTs8L2lcbiAgICAgICAgICAgICAgICAgICAgPkVESVRcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMiB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGRlYWRsaW5lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FzZS1jYWxlbmRhciB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXB0LTMgdngtcGItM1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhc2UtY2FsZW5kYXItaW5uZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyBkdWVEYXRlIHwgZGF0ZSA6ICdkZCBNTU0geXl5eScgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInN0YWdlLWRlYWRsaW5lLWRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkyZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxkcC1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTsgY2xvc2VEYXRlUGlja2VyKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9kcC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtb3ZlcmxheVwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJzaG93QXNzaWduZWVFcnJvclwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yTXNnIHZ4LWZzLTExIHZ4LWxoLTQgdngtbXQtMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZHVlRGF0ZVRleHRzLmVycm9yTWVzc2FnZS5zdGFnZUFzc2lnbmVlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC10b3AgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1saC00IHZ4LW1iLTEgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIEVNQUlMIFJFTUlOREVSIENPTkZJR1VSQVRJT05cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkIHZ4LWZzLTE2IHZ4LWZ3LTQwMFwiPio8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlciB2eC1tYi0yXCI+PC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtbWItMSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgUkVNSU5ERVIgRU1BSUxcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImVtYWlsLWNvbmZpZ3VyZS1ib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1mbGV4LXdyYXAgdngtcC0yIHZ4LXBsLTMgdngtcHItMyB2eC1tYi0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tci0xXCI+XG4gICAgICAgICAgICBTZW5kIHJlZ3VsYXIgZW1haWwgcmVtaW5kZXJzIHRvIHRoZSBhc3NpZ25lZVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtYWlsUmVtaW5kZXJcIlxuICAgICAgICAgICAgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleSAhPT0gJy4nXCJcbiAgICAgICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbklucHV0Q2hhbmdlKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LW1sLTFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmxhY2stdGV4dFwiPmRheXM8L3NwYW4+IGJlZm9yZSB0aGUgc3RhZ2UgZGVhZGxpbmUuXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC10b3AgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1saC00IHZ4LW1iLTEgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIEVTQ0FMQVRJT04gRU1BSUxcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImVtYWlsLWNvbmZpZ3VyZS1ib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1mbGV4LXdyYXAgdngtcC0yIHZ4LXBsLTMgdngtcHItMyB2eC1tYi0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tci0xXCI+XG4gICAgICAgICAgICBTZW5kIGVtYWlsIGVzY2FsYXRpb24gdG8gdGhlIENhc2UgT3duZXJcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlc2NhbGF0aW9uRW1haWxcIlxuICAgICAgICAgICAgb25rZXlkb3duPVwicmV0dXJuIGV2ZW50LmtleSAhPT0gJy4nXCJcbiAgICAgICAgICAgIG9uaW5wdXQ9XCJ0aGlzLnZhbHVlID0gTWF0aC5hYnModGhpcy52YWx1ZSlcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbklucHV0Q2hhbmdlKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTEzIHZ4LW1sLTFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmxhY2stdGV4dFwiPmRheXM8L3NwYW4+IGJlZm9yZSB0aGUgb3ZlcmFsbCBjYXNlXG4gICAgICAgICAgICBkZWFkbGluZSwgaWYgdGhlIGNhc2UgaXMgc3RpbGwgb3Blbi5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWZsb2F0aW5nLWJhclxuICAgICAgKGNsb3NlTGlzdCk9XCJjbG9zZUR1ZURhdGUoKVwiXG4gICAgICAoY2xvc2VFdmVudCk9XCJzYXZlQ2FzZVJlc29sdXRpb25EZWFkbGluZSgpXCJcbiAgICA+PC9hcHAtZmxvYXRpbmctYmFyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGFwcC1hc3NpZ25lZVxuICAqbmdJZj1cImFzc2lnbmVlQ2xpY2tlZFwiXG4gIFtwYXlsb2FkXT1cInBheWxvYWRcIlxuICBbYXNzaWduZWVMaXN0XT1cImFzc2lnbmVlTGlzdFwiXG4gIFthY3RpdmVBc3NpZ25lZV09XCJhY3RpdmVBc3NpZ25lZVwiXG4gIChzZWxlY3RlZEFzc2lnbmVlRXZlbnQpPVwic2VsZWN0ZWRBc3NpZ25lZSgkZXZlbnQpXCJcbiAgKGNsb3NlRXZlbnQpPVwiYWN0aXZhdGVTZWxlY3RvcihmYWxzZSlcIlxuPjwvYXBwLWFzc2lnbmVlPlxuIl19