@hmcts/ccd-case-ui-toolkit 7.2.50-srt-rc3 → 7.2.50-srt-rc4

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 (20) hide show
  1. package/esm2022/lib/components/form/date-input/date-input.component.mjs +19 -56
  2. package/esm2022/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +3 -24
  3. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +2 -4
  4. package/esm2022/lib/shared/components/palette/datetime-picker/datetime-picker.component.mjs +10 -41
  5. package/esm2022/lib/shared/services/form/field-type-sanitiser.mjs +1 -2
  6. package/esm2022/lib/shared/services/form/form-value.service.mjs +1 -58
  7. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +30 -179
  8. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  9. package/lib/components/form/date-input/date-input.component.d.ts +0 -4
  10. package/lib/components/form/date-input/date-input.component.d.ts.map +1 -1
  11. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts +0 -1
  12. package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts.map +1 -1
  13. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  14. package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts +0 -2
  15. package/lib/shared/components/palette/datetime-picker/datetime-picker.component.d.ts.map +1 -1
  16. package/lib/shared/services/form/field-type-sanitiser.d.ts +0 -1
  17. package/lib/shared/services/form/field-type-sanitiser.d.ts.map +1 -1
  18. package/lib/shared/services/form/form-value.service.d.ts +0 -2
  19. package/lib/shared/services/form/form-value.service.d.ts.map +1 -1
  20. package/package.json +1 -1
@@ -101,40 +101,20 @@ export class DateInputComponent {
101
101
  writeValue(obj) {
102
102
  if (obj) {
103
103
  this.rawValue = this.removeMilliseconds(obj);
104
- this.getLocalDateTimeString(this.rawValue);
105
- }
106
- }
107
- getLocalDateTimeString(dateInput) {
108
- const date = new Date(dateInput);
109
- if (isNaN(date.getTime())) {
110
- // Not a valid date
111
- this.year = this.displayYear = '';
112
- this.month = this.displayMonth = '';
113
- this.day = this.displayDay = '';
114
- this.hour = this.displayHour = '';
115
- this.minute = this.displayMinute = '';
116
- this.second = this.displaySecond = '';
117
- return;
118
- }
119
- const localDate = this.getOffsetDate(date);
120
- this.year = this.displayYear = String(localDate.getFullYear());
121
- this.month = this.displayMonth = this.padZero(localDate.getMonth() + 1);
122
- this.day = this.displayDay = this.padZero(localDate.getDate());
123
- if (dateInput.includes('T')) {
124
- this.hour = this.displayHour = this.padZero(localDate.getHours());
125
- this.minute = this.displayMinute = this.padZero(localDate.getMinutes());
126
- this.second = this.displaySecond = this.padZero(localDate.getSeconds());
127
- }
128
- else {
129
- this.hour = this.displayHour = '';
130
- this.minute = this.displayMinute = '';
131
- this.second = this.displaySecond = '';
104
+ // needs to handle also partial dates, e.g. -05-2016 (missing day)
105
+ const [datePart, timePart] = this.rawValue.split('T');
106
+ const dateValues = datePart.split('-');
107
+ this.year = this.displayYear = dateValues[0] || '';
108
+ this.month = this.displayMonth = dateValues[1] || '';
109
+ this.day = this.displayDay = dateValues[2] || '';
110
+ if (timePart) {
111
+ const timeParts = timePart.split(':');
112
+ this.hour = this.displayHour = timeParts[0] || '';
113
+ this.minute = this.displayMinute = timeParts[1] || '';
114
+ this.second = this.displaySecond = timeParts[2] || '';
115
+ }
132
116
  }
133
117
  }
134
- getOffsetDate(date) {
135
- const localOffset = -date.getTimezoneOffset() / 60;
136
- return new Date(date.getTime() + localOffset * 3600 * 1000);
137
- }
138
118
  validate(control) {
139
119
  if (this.mandatory && !this.viewValue()) {
140
120
  return {
@@ -162,42 +142,42 @@ export class DateInputComponent {
162
142
  dayChange(value) {
163
143
  // get value from input
164
144
  this.day = value;
165
- this.rawValue = this.isDateFormat(this.viewValue()) && this.viewValue().includes('T') ? this.convertToUTC(this.viewValue()) : this.viewValue();
145
+ this.rawValue = this.viewValue();
166
146
  // update the form
167
147
  this.propagateChange(this.rawValue);
168
148
  }
169
149
  monthChange(value) {
170
150
  // get value from input
171
151
  this.month = value;
172
- this.rawValue = this.isDateFormat(this.viewValue()) && this.viewValue().includes('T') ? this.convertToUTC(this.viewValue()) : this.viewValue();
152
+ this.rawValue = this.viewValue();
173
153
  // update the form
174
154
  this.propagateChange(this.rawValue);
175
155
  }
176
156
  yearChange(value) {
177
157
  // get value from input
178
158
  this.year = value;
179
- this.rawValue = this.isDateFormat(this.viewValue()) && this.viewValue().includes('T') ? this.convertToUTC(this.viewValue()) : this.viewValue();
159
+ this.rawValue = this.viewValue();
180
160
  // update the form
181
161
  this.propagateChange(this.rawValue);
182
162
  }
183
163
  hourChange(value) {
184
164
  // get value from input
185
165
  this.hour = value;
186
- this.rawValue = this.isDateFormat(this.viewValue()) ? this.convertToUTC(this.viewValue()) : this.viewValue();
166
+ this.rawValue = this.viewValue();
187
167
  // update the form
188
168
  this.propagateChange(this.rawValue);
189
169
  }
190
170
  minuteChange(value) {
191
171
  // get value from input
192
172
  this.minute = value;
193
- this.rawValue = this.isDateFormat(this.viewValue()) ? this.convertToUTC(this.viewValue()) : this.viewValue();
173
+ this.rawValue = this.viewValue();
194
174
  // update the form
195
175
  this.propagateChange(this.rawValue);
196
176
  }
197
177
  secondChange(value) {
198
178
  // get value from input
199
179
  this.second = value;
200
- this.rawValue = this.isDateFormat(this.viewValue()) ? this.convertToUTC(this.viewValue()) : this.viewValue();
180
+ this.rawValue = this.viewValue();
201
181
  // update the form
202
182
  this.propagateChange(this.rawValue);
203
183
  }
@@ -232,23 +212,6 @@ export class DateInputComponent {
232
212
  secondId() {
233
213
  return this.id + '-second';
234
214
  }
235
- // convert the dates to UTC before sending to the backend
236
- convertToUTC(input) {
237
- if (!input)
238
- return null;
239
- const date = new Date(input);
240
- const year = date.getUTCFullYear();
241
- const month = this.padZero(date.getUTCMonth() + 1);
242
- const day = this.padZero(date.getUTCDate());
243
- const hour = this.padZero(date.getUTCHours());
244
- const minute = this.padZero(date.getUTCMinutes());
245
- const second = this.padZero(date.getUTCSeconds());
246
- const ms = date.getUTCMilliseconds().toString().padStart(3, '0');
247
- return `${year}-${month}-${day}T${hour}:${minute}:${second}.${ms}`;
248
- }
249
- padZero(value) {
250
- return value.toString().padStart(2, '0');
251
- }
252
215
  viewValue() {
253
216
  if (this.day || this.month || this.year || this.hour || this.minute || this.second) {
254
217
  const date = [
@@ -381,4 +344,4 @@ export class DateInputComponent {
381
344
  type: Input
382
345
  }] }); })();
383
346
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DateInputComponent, { className: "DateInputComponent", filePath: "lib/components/form/date-input/date-input.component.ts", lineNumber: 20 }); })();
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUF5QyxXQUFXLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUErQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0lDb0QvSSxBQURGLCtCQUEyRCxjQUNJO0lBQUEsWUFBeUI7O0lBQUEsaUJBQU87SUFDN0Ysb0NBWXFEO0lBRDlDLEFBREEsQUFEQSxzTkFBUyxxQ0FBMkIsS0FBQyx5TUFDNUIscUNBQTJCLEtBQUMsaUtBQzVCLG1CQUFZLEtBQUM7SUFFL0IsQUFiRSxpQkFZcUQsRUFDakQ7OztJQWRxQixjQUFtQzs7SUFBQyxjQUF5QjtJQUF6QixrREFBeUI7SUFHL0UsZUFBZTtJQVVmLEFBSkEsQUFMQSxBQURBLG9DQUFlLHlCQUNFLDZCQUtJLHlEQUl3Qjs7Ozs7SUFJcEQsQUFERiwrQkFBNkQsY0FDSTtJQUFBLFlBQTJCOztJQUFBLGlCQUFPO0lBQ2pHLG9DQVlxRDtJQUQ5QyxBQURBLEFBREEsd05BQVMseUNBQStCLEtBQUMsMk1BQ2hDLHlDQUErQixLQUFDLGlLQUNoQyxtQkFBWSxLQUFDO0lBRS9CLEFBYkUsaUJBWXFELEVBQ2pEOzs7SUFkcUIsY0FBcUM7O0lBQUMsY0FBMkI7SUFBM0Isb0RBQTJCO0lBR25GLGVB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Q0FBQztJQUN0QyxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWE7UUFDN0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRTdHLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQWE7UUFDL0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRTdHLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV0QyxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQWE7UUFDL0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRTdHLGtCQUFrQjtR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RSxtQkFBbUIsQ0FBQzt3QkFDakQsS0FBSyxFQUFFLElBQUk7cUJBQ1o7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGFBQWE7d0JBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDO3dCQUNqRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFJTSxFQUFFO2tCQURSLEtBQUs7WUFJQyxTQUFTO2tCQURmLEtBQUs7WUFJQyxVQUFVO2tCQURoQixLQUFLO1lBSUMsV0FBVztrQkFEakIsS0FBSztZQUlDLFNBQVM7a0JBRGYsS0FBSzs7a0ZBYkssa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjdXQtZGF0ZS1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWFuZGF0b3J5OiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc0RhdGVUaW1lOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzSW52YWxpZDogYm9vbGVhbjtcblxuICBwdWJsaWMgaXNUb3VjaGVkID0gZmFsc2U7XG4gIHB1YmxpYyBkaXNwbGF5RGF5OiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGlzcGxheU1vbnRoOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGlzcGxheVllYXI6IHN0cmluZyA9IG51bGw7XG5cbiAgcHVibGljIGRpc3BsYXlIb3VyOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGlzcGxheU1pbnV0ZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGRpc3BsYXlTZWNvbmQ6IHN0cmluZyA9IG51bGw7XG4gIC8vIFdvcmtzIHdpdGhcbiAgLy8gMjAxOC0wNC0wOVQwODowMjoyNy41NDJcbiAgLy8gMjAxOC0wNC0wOVQwODowMjoyNy41NDJaXG4gIC8vIDIwMTgtMDQtMDlUMDg6MDI6MjcuNTQyKzAxOjAwXG4gIHByaXZhdGUgcmVhZG9ubHkgREFURV9GT1JNQVQgPVxuICAgIC9eKDE5fDIwKVxcZHsyfS0/KFxcZFxcZCktPyhcXGRcXGQpKD86VChcXGRcXGQpKD86Oj8oXFxkXFxkKSg/Ojo/KFxcZFxcZCkoPzpcXC4oXFxkKykpPyk/KT8oWnwoWystXSkoXFxkXFxkKTo/KFxcZFxcZCkpP3xaKT8kLztcbiAgLy8gICAgeWVhciAtIG1vbnRoIC0gIGRheSAgICAgVCAgIEhIICAgICA6ICAgTU0gICAgICA6ICBTUyAgICAgICAuMDAwICAgICAgICBaIG9yICsgICAgIDAxIDogICAwMFxuICBwcml2YXRlIHByb3BhZ2F0ZUNoYW5nZTogKF86IGFueSkgPT4ge307XG4gIHByaXZhdGUgcmF3VmFsdWUgPSAnJztcbiAgcHJpdmF0ZSBkYXk6IHN0cmluZztcbiAgcHJpdmF0ZSBtb250aDogc3RyaW5nO1xuICBwcml2YXRlIHllYXI6IHN0cmluZztcbiAgcHJpdmF0ZSBob3VyOiBzdHJpbmc7XG4gIHByaXZhdGUgbWludXRlOiBzdHJpbmc7XG4gIHByaXZhdGUgc2Vjb25kOiBzdHJpbmc7XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiB0aGlzLmlzRGF0ZVRpbWUpIHtcbiAgICAgIHRoaXMuZGlzcGxheUhvdXIgPSAnMDAnO1xuICAgICAgdGhpcy5kaXNwbGF5TWludXRlID0gJzAwJztcbiAgICAgIHRoaXMuZGlzcGxheVNlY29uZCA9ICcwMCc7XG4gICAgICB0aGlzLmhvdXIgPSAnMDAnO1xuICAgICAgdGhpcy5taW51dGUgPSAnMDAnO1xuICAgICAgdGhpcy5zZWNvbmQgPSAnMDAnO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogc3RyaW5nKTogdm9pZCB7IC8vIDIwMTgtMDQtMDlUMDg6MDI6MjcuNTQyXG4gICAgaWYgKG9iaikge1xuICAgICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMucmVtb3ZlTWlsbGlzZWNvbmRzKG9iaik7XG4gICAgICB0aGlzLmdldExvY2FsRGF0ZVRpbWVTdHJpbmcodGhpcy5yYXdWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbERhdGVUaW1lU3RyaW5nKGRhdGVJbnB1dDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVJbnB1dCk7XG4gICAgaWYgKGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgLy8gTm90IGEgdmFsaWQgZGF0ZVxuICAgICAgdGhpcy55ZWFyID0gdGhpcy5kaXNwbGF5WWVhciA9ICcnO1xuICAgICAgdGhpcy5tb250aCA9IHRoaXMuZGlzcGxheU1vbnRoID0gJyc7XG4gICAgICB0aGlzLmRheSA9IHRoaXMuZGlzcGxheURheSA9ICcnO1xuICAgICAgdGhpcy5ob3VyID0gdGhpcy5kaXNwbGF5SG91ciA9ICcnO1xuICAgICAgdGhpcy5taW51dGUgPSB0aGlzLmRpc3BsYXlNaW51dGUgPSAnJztcbiAgICAgIHRoaXMuc2Vjb25kID0gdGhpcy5kaXNwbGF5U2Vjb25kID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxEYXRlID0gdGhpcy5nZXRPZmZzZXREYXRlKGRhdGUpO1xuICAgIHRoaXMueWVhciA9IHRoaXMuZGlzcGxheVllYXIgPSBTdHJpbmcobG9jYWxEYXRlLmdldEZ1bGxZZWFyKCkpO1xuICAgIHRoaXMubW9udGggPSB0aGlzLmRpc3BsYXlNb250aCA9IHRoaXMucGFkWmVybyhsb2NhbERhdGUuZ2V0TW9udGgoKSArIDEpO1xuICAgIHRoaXMuZGF5ID0gdGhpcy5kaXNwbGF5RGF5ID0gdGhpcy5wYWRaZXJvKGxvY2FsRGF0ZS5nZXREYXRlKCkpO1xuXG4gICAgaWYgKGRhdGVJbnB1dC5pbmNsdWRlcygnVCcpKSB7XG4gICAgICB0aGlzLmhvdXIgPSB0aGlzLmRpc3BsYXlIb3VyID0gdGhpcy5wYWRaZXJvKGxvY2FsRGF0ZS5nZXRIb3VycygpKTtcbiAgICAgIHRoaXMubWludXRlID0gdGhpcy5kaXNwbGF5TWludXRlID0gdGhpcy5wYWRaZXJvKGxvY2FsRGF0ZS5nZXRNaW51dGVzKCkpO1xuICAgICAgdGhpcy5zZWNvbmQgPSB0aGlzLmRpc3BsYXlTZWNvbmQgPSB0aGlzLnBhZFplcm8obG9jYWxEYXRlLmdldFNlY29uZHMoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG91ciA9IHRoaXMuZGlzcGxheUhvdXIgPSAnJztcbiAgICAgIHRoaXMubWludXRlID0gdGhpcy5kaXNwbGF5TWludXRlID0gJyc7XG4gICAgICB0aGlzLnNlY29uZCA9IHRoaXMuZGlzcGxheVNlY29uZCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2Zmc2V0RGF0ZShkYXRlOiBEYXRlKTogRGF0ZSB7XG4gICAgY29uc3QgbG9jYWxPZmZzZXQgPSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAvIDYwO1xuICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSArIGxvY2FsT2Zmc2V0ICogMzYwMCAqIDEwMDApO1xuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiAhdGhpcy52aWV3VmFsdWUoKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJ1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgIXRoaXMuaXNEYXRlRm9ybWF0KHRoaXMuZ2V0VmFsdWVGb3JWYWxpZGF0aW9uKGNvbnRyb2wpKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0dGVybjogJ0RhdGUgaXMgbm90IHZhbGlkJ1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBEbyBub3RoaW5nLlxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudmFsaWRhdGUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyA9PiB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZGF5Q2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMuZGF5ID0gdmFsdWU7XG5cbiAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5pc0RhdGVGb3JtYXQodGhpcy52aWV3VmFsdWUoKSkgJiYgdGhpcy52aWV3VmFsdWUoKS5pbmNsdWRlcygnVCcpID8gdGhpcy5jb252ZXJ0VG9VVEModGhpcy52aWV3VmFsdWUoKSkgOiB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgbW9udGhDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIC8vIGdldCB2YWx1ZSBmcm9tIGlucHV0XG4gICAgdGhpcy5tb250aCA9IHZhbHVlO1xuXG4gICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMuaXNEYXRlRm9ybWF0KHRoaXMudmlld1ZhbHVlKCkpICYmIHRoaXMudmlld1ZhbHVlKCkuaW5jbHVkZXMoJ1QnKSA/IHRoaXMuY29udmVydFRvVVRDKHRoaXMudmlld1ZhbHVlKCkpIDogdGhpcy52aWV3VmFsdWUoKTtcblxuICAgIC8vIHVwZGF0ZSB0aGUgZm9ybVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMucmF3VmFsdWUpO1xuXG4gIH1cblxuICBwdWJsaWMgeWVhckNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gZ2V0IHZhbHVlIGZyb20gaW5wdXRcbiAgICB0aGlzLnllYXIgPSB2YWx1ZTtcblxuICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLmlzRGF0ZUZvcm1hdCh0aGlzLnZpZXdWYWx1ZSgpKSAmJiB0aGlzLnZpZXdWYWx1ZSgpLmluY2x1ZGVzKCdUJykgPyB0aGlzLmNvbnZlcnRUb1VUQyh0aGlzLnZpZXdWYWx1ZSgpKSA6IHRoaXMudmlld1ZhbHVlKCk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGZvcm1cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnJhd1ZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBob3VyQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMuaG91ciA9IHZhbHVlO1xuXG4gICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMuaXNEYXRlRm9ybWF0KHRoaXMudmlld1ZhbHVlKCkpID8gdGhpcy5jb252ZXJ0VG9VVEModGhpcy52aWV3VmFsdWUoKSkgOiB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgbWludXRlQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMubWludXRlID0gdmFsdWU7XG5cbiAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5pc0RhdGVGb3JtYXQodGhpcy52aWV3VmFsdWUoKSkgPyB0aGlzLmNvbnZlcnRUb1VUQyh0aGlzLnZpZXdWYWx1ZSgpKSA6IHRoaXMudmlld1ZhbHVlKCk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGZvcm1cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnJhd1ZhbHVlKTtcblxuICB9XG5cbiAgcHVibGljIHNlY29uZENoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gZ2V0IHZhbHVlIGZyb20gaW5wdXRcbiAgICB0aGlzLnNlY29uZCA9IHZhbHVlO1xuXG4gICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMuaXNEYXRlRm9ybWF0KHRoaXMudmlld1ZhbHVlKCkpID8gdGhpcy5jb252ZXJ0VG9VVEModGhpcy52aWV3VmFsdWUoKSkgOiB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaW5wdXRGb2N1cygpIHtcbiAgICB0aGlzLmlzVG91Y2hlZCA9IGZhbHNlO1xuICAgIHRoaXMudG91Y2goKTtcbiAgfVxuXG4gIHB1YmxpYyB0b3VjaCgpIHtcbiAgICBpZiAodGhpcy5pc1RvdWNoZWQpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRheUlkKCkge1xuICAgIHJldHVybiB0aGlzLmlkICsgJy1kYXknO1xuICB9XG5cbiAgcHVibGljIG1vbnRoSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgKyAnLW1vbnRoJztcbiAgfVxuXG4gIHB1YmxpYyB5ZWFySWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgKyAnLXllYXInO1xuICB9XG5cbiAgcHVibGljIGhvdXJJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pZCArICctaG91cic7XG4gIH1cblxuICBwdWJsaWMgbWludXRlSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgKyAnLW1pbnV0ZSc7XG4gIH1cblxuICBwdWJsaWMgc2Vjb25kSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgKyAnLXNlY29uZCc7XG4gIH1cblxuICAvLyBjb252ZXJ0IHRoZSBkYXRlcyB0byBVVEMgYmVmb3JlIHNlbmRpbmcgdG8gdGhlIGJhY2tlbmRcbiAgcHJpdmF0ZSBjb252ZXJ0VG9VVEMoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghaW5wdXQpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGlucHV0KTtcblxuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLnBhZFplcm8oZGF0ZS5nZXRVVENNb250aCgpICsgMSk7XG4gICAgY29uc3QgZGF5ID0gdGhpcy5wYWRaZXJvKGRhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICBjb25zdCBob3VyID0gdGhpcy5wYWRaZXJvKGRhdGUuZ2V0VVRDSG91cnMoKSk7XG4gICAgY29uc3QgbWludXRlID0gdGhpcy5wYWRaZXJvKGRhdGUuZ2V0VVRDTWludXRlcygpKTtcbiAgICBjb25zdCBzZWNvbmQgPSB0aGlzLnBhZFplcm8oZGF0ZS5nZXRVVENTZWNvbmRzKCkpO1xuICAgIGNvbnN0IG1zID0gZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDMsICcwJyk7XG5cbiAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9VCR7aG91cn06JHttaW51dGV9OiR7c2Vjb25kfS4ke21zfWA7XG4gIH1cblxuICBwcml2YXRlIHBhZFplcm8odmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgfVxuXG4gIHByaXZhdGUgdmlld1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZGF5IHx8IHRoaXMubW9udGggfHwgdGhpcy55ZWFyIHx8IHRoaXMuaG91ciB8fCB0aGlzLm1pbnV0ZSB8fCB0aGlzLnNlY29uZCkge1xuICAgICAgY29uc3QgZGF0ZSA9IFtcbiAgICAgICAgdGhpcy55ZWFyID8gdGhpcy55ZWFyIDogJycsXG4gICAgICAgIHRoaXMubW9udGggPyB0aGlzLnBhZCh0aGlzLm1vbnRoKSA6ICcnLFxuICAgICAgICB0aGlzLmRheSA/IHRoaXMucGFkKHRoaXMuZGF5KSA6ICcnXG4gICAgICBdLmpvaW4oJy0nKTtcbiAgICAgIGlmICh0aGlzLmlzRGF0ZVRpbWUpIHtcbiAgICAgICAgY29uc3QgdGltZSA9IFtcbiAgICAgICAgICB0aGlzLmhvdXIgPyB0aGlzLnBhZCh0aGlzLmhvdXIpIDogJycsXG4gICAgICAgICAgdGhpcy5taW51dGUgPyB0aGlzLnBhZCh0aGlzLm1pbnV0ZSkgOiAnJyxcbiAgICAgICAgICB0aGlzLnNlY29uZCA/IHRoaXMucGFkKHRoaXMuc2Vjb25kKSA6ICcnXG4gICAgICAgIF0uam9pbignOicpO1xuICAgICAgICByZXR1cm4gYCR7ZGF0ZX1UJHt0aW1lfS4wMDBgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0RhdGVGb3JtYXQodmFsOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5EQVRFX0ZPUk1BVC50ZXN0KHZhbCk7XG4gIH1cblxuICBwcml2YXRlIHBhZChudW06IGFueSwgcGFkTnVtID0gMik6IHN0cmluZyB7XG4gICAgY29uc3QgdmFsID0gbnVtICE9PSB1bmRlZmluZWQgPyBudW0udG9TdHJpbmcoKSA6ICcnO1xuICAgIHJldHVybiB2YWwubGVuZ3RoID49IHBhZE51bSA/IHZhbCA6IG5ldyBBcnJheShwYWROdW0gLSB2YWwubGVuZ3RoICsgMSkuam9pbignMCcpICsgdmFsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWx1ZUZvclZhbGlkYXRpb24oY29udHJvbDogYW55KSB7XG4gICAgaWYgKHRoaXMuaXNEYXRlVGltZSkge1xuICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb250cm9sLnZhbHVlLnJlcGxhY2UoL1ouKi8sICdUMDA6MDA6MDBaJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVNaWxsaXNlY29uZHMoZGF0ZVRpbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGVUaW1lLnJlcGxhY2UoL1xcLi4qLywgJycpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1kYXRlXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtZGF5XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2F0dHIuaWRdPVwiJ2RheS1sYWJlbC0nK2RheUlkKClcIj57eydEYXknIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgPGlucHV0ICNkYXlJbnB1dFxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgIFtpZF09XCJkYXlJZCgpXCJcbiAgICAgICAgICAgW25hbWVdPVwiZGF5SWQoKVwiXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgcGF0dGVybj1cIlswLTldKlwiXG4gICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2RheS1sYWJlbC0nK2RheUlkKClcIlxuICAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheURheVwiXG4gICAgICAgICAgIChjaGFuZ2UpPVwiZGF5Q2hhbmdlKGRheUlucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChrZXl1cCk9XCJkYXlDaGFuZ2UoZGF5SW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLW1vbnRoXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2F0dHIuaWRdPVwiJ21vbnRoLWxhYmVsLScrIG1vbnRoSWQoKVwiPnt7J01vbnRoJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgIDxpbnB1dCAjbW9udGhJbnB1dFxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgIFtpZF09XCJtb250aElkKClcIlxuICAgICAgICAgICBbbmFtZV09XCJtb250aElkKClcIlxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxuICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidtb250aC1sYWJlbC0nKyBtb250aElkKClcIlxuICAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheU1vbnRoXCJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJtb250aENoYW5nZShtb250aElucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChrZXl1cCk9XCJtb250aENoYW5nZShtb250aElucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJpbnB1dEZvY3VzKClcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWlucHV0LS1lcnJvcic6IGlzSW52YWxpZH1cIj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC15ZWFyXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsXCIgW2F0dHIuaWRdPVwiJ3llYXItbGFiZWwtJysgeWVhcklkKClcIj57eydZZWFyJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgIDxpbnB1dCAjeWVhcklucHV0XG4gICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgW2lkXT1cInllYXJJZCgpXCJcbiAgICAgICAgICAgW25hbWVdPVwieWVhcklkKClcIlxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxuICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIid5ZWFyLWxhYmVsLScrIHllYXJJZCgpXCJcbiAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlZZWFyXCJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKHllYXJJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoa2V5dXApPVwieWVhckNoYW5nZSh5ZWFySW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLWhvdXJcIiAqbmdJZj1cImlzRGF0ZVRpbWVcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbYXR0ci5pZF09XCInaG91ci1sYWJlbC0nKyBob3VySWQoKVwiPnt7J0hvdXInIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgPGlucHV0ICNob3VySW5wdXRcbiAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICBbaWRdPVwiaG91cklkKClcIlxuICAgICAgICAgICBbbmFtZV09XCJob3VySWQoKVwiXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgcGF0dGVybj1cIlswLTldKlwiXG4gICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2hvdXItbGFiZWwtJysgaG91cklkKClcIlxuICAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheUhvdXJcIlxuICAgICAgICAgICAoaW5wdXQpPVwiaG91ckNoYW5nZShob3VySW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGtleXVwKT1cImhvdXJDaGFuZ2UoaG91cklucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJpbnB1dEZvY3VzKClcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWlucHV0LS1lcnJvcic6IGlzSW52YWxpZH1cIj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1taW51dGVcIiAqbmdJZj1cImlzRGF0ZVRpbWVcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbYXR0ci5pZF09XCInbWludXRlLWxhYmVsLScrIGhvdXJJZCgpXCI+e3snTWludXRlJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgIDxpbnB1dCAjbWludXRlSW5wdXRcbiAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICBbaWRdPVwibWludXRlSWQoKVwiXG4gICAgICAgICAgIFtuYW1lXT1cIm1pbnV0ZUlkKClcIlxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxuICAgICAgICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcbiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidtaW51dGUtbGFiZWwtJysgbWludXRlSWQoKVwiXG4gICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5TWludXRlXCJcbiAgICAgICAgICAgKGlucHV0KT1cIm1pbnV0ZUNoYW5nZShtaW51dGVJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoa2V5dXApPVwibWludXRlQ2hhbmdlKG1pbnV0ZUlucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJpbnB1dEZvY3VzKClcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2dvdnVrLWlucHV0LS1lcnJvcic6IGlzSW52YWxpZH1cIj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1zZWNvbmRcIiAqbmdJZj1cImlzRGF0ZVRpbWVcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbYXR0ci5pZF09XCInc2Vjb25kLWxhYmVsLScrIHNlY29uZElkKClcIj57eydTZWNvbmQnIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgPGlucHV0ICNzZWNvbmRJbnB1dFxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgIFtpZF09XCJzZWNvbmRJZCgpXCJcbiAgICAgICAgICAgW25hbWVdPVwic2Vjb25kSWQoKVwiXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgcGF0dGVybj1cIlswLTldKlwiXG4gICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ3NlY29uZC1sYWJlbC0nKyBzZWNvbmRJZCgpXCJcbiAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlTZWNvbmRcIlxuICAgICAgICAgICAoaW5wdXQpPVwic2Vjb25kQ2hhbmdlKHNlY29uZElucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChrZXl1cCk9XCJzZWNvbmRDaGFuZ2Uoc2Vjb25kSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUF5QyxXQUFXLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUErQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0lDb0QvSSxBQURGLCtCQUEyRCxjQUNJO0lBQUEsWUFBeUI7O0lBQUEsaUJBQU87SUFDN0Ysb0NBWXFEO0lBRDlDLEFBREEsQUFEQSxzTkFBUyxxQ0FBMkIsS0FBQyx5TUFDNUIscUNBQTJCLEtBQUMsaUtBQzVCLG1CQUFZLEtBQUM7SUFFL0IsQUFiRSxpQkFZcUQsRUFDakQ7OztJQWRxQixjQUFtQzs7SUFBQyxjQUF5QjtJQUF6QixrREFBeUI7SUFHL0UsZUFBZTtJQVVmLEFBSkEsQUFMQSxBQURBLG9DQUFlLHlCQUNFLDZCQUtJLHlEQUl3Qjs7Ozs7SUFJcEQsQUFERiwrQkFBNkQsY0FDSTtJQUFBLFlBQTJCOztJQUFBLGlCQUFPO0lBQ2pHLG9DQVlxRDtJQUQ5QyxBQURBLEFBREEsd05BQVMseUNBQStCLEtBQUMsMk1BQ2hDLHlDQUErQixLQUFDLGlLQUNoQyxtQkFBWSxLQUFDO0lBRS9CLEFBYkUsaUJBWXFELEVBQ2pEOzs7SUFkcUIsY0FBcUM7O0lBQUMsY0FBMkI7SUFBM0Isb0RBQTJCO0lBR25GLGVB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QyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWE7UUFDOUIsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV0QyxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWE7UUFDN0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWE7UUFDN0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQWE7UUFDL0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV0QyxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQWE7UUFDL0IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpDLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLO1FBQ1YsT0FBTyxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25GLE1BQU0sSUFBSSxHQUFHO2dCQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTthQUNuQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNaLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixNQUFNLElBQUksR0FBRztvQkFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2lCQUN6QyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDWixPQUFPLEdBQUcsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDO1lBQy9CLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQVE7UUFDM0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sR0FBRyxDQUFDLEdBQVEsRUFBRSxNQUFNLEdBQUcsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDekYsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE9BQVk7UUFDeEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxRQUFnQjtRQUN6QyxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7NEdBN09VLGtCQUFrQjs2REFBbEIsa0JBQWtCLGdNQWJsQjtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNqRCxLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDakQsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjs7WUNmQyxBQURGLEFBREYsOEJBQXVCLGFBQ2tCLGNBQ3FCO1lBQUEsWUFBd0I7O1lBQUEsaUJBQU87WUFDekYsbUNBWXFEO1lBRDlDLEFBREEsQUFEQSw2S0FBVSxnQ0FBeUIsS0FBQyw4SkFDM0IsZ0NBQXlCLEtBQUMsdUhBQzFCLGdCQUFZLEtBQUM7WUFFL0IsQUFiRSxpQkFZcUQsRUFDakQ7WUFHSixBQURGLCtCQUF5QyxjQUN3QjtZQUFBLFlBQTBCOztZQUFBLGlCQUFPO1lBQ2hHLG9DQVlxRDtZQUQ5QyxBQURBLEFBREEsaUxBQVUsb0NBQTZCLEtBQUMsa0tBQy9CLG9DQUE2QixLQUFDLHdIQUM5QixnQkFBWSxLQUFDO1lBRS9CLEFBYkUsaUJBWXFELEVBQ2pEO1lBR0osQUFERixnQ0FBd0MsZUFDdUI7WUFBQSxhQUF5Qjs7WUFBQSxpQkFBTztZQUM3RixvQ0FZcUQ7WUFEOUMsQUFEQSxBQURBLGdMQUFVLGtDQUEyQixLQUFDLGlLQUM3QixrQ0FBMkIsS0FBQyx3SEFDNUIsZ0JBQVksS0FBQztZQUUvQixBQWJFLGlCQVlxRCxFQUNqRDtZQW9DTixBQWpCQSxBQWpCQSx1RUFBMkQsMERBaUJFLDBEQWlCQTtZQWdCL0QsaUJBQU07O1lBcEd1QixlQUFnQzs7WUFBQyxjQUF3QjtZQUF4QixrREFBd0I7WUFHM0UsZUFBYztZQVVkLEFBSkEsQUFMQSxBQURBLGdDQUFjLHFCQUNFLHlCQUtJLHVEQUl5Qjs7WUFJM0IsZUFBcUM7O1lBQUMsY0FBMEI7WUFBMUIscURBQTBCO1lBR2xGLGVBQWdCO1lBVWhCLEFBSkEsQUFMQSxBQURBLGtDQUFnQix1QkFDRSwyQkFLSSx1REFJdUI7O1lBSTNCLGVBQW1DOztZQUFDLGNBQXlCO1lBQXpCLG9EQUF5QjtZQUcvRSxlQUFlO1lBVWYsQUFKQSxBQUxBLEFBREEsaUNBQWUsc0JBQ0UsMEJBS0ksdURBSXdCOztZQUdiLGVBQWdCO1lBQWhCLHFDQUFnQjtZQWlCZCxjQUFnQjtZQUFoQixxQ0FBZ0I7WUFpQmhCLGNBQWdCO1lBQWhCLHFDQUFnQjs7O2lGRG5FaEQsa0JBQWtCO2NBaEI5QixTQUFTOzJCQUNFLGdCQUFnQixhQUVmO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDO3dCQUNqRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtvQkFDRDt3QkFDRSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7d0JBQ2pELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2dCQUlNLEVBQUU7a0JBRFIsS0FBSztZQUlDLFNBQVM7a0JBRGYsS0FBSztZQUlDLFVBQVU7a0JBRGhCLEtBQUs7WUFJQyxXQUFXO2tCQURqQixLQUFLO1lBSUMsU0FBUztrQkFEZixLQUFLOztrRkFiSyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2N1dC1kYXRlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtaW5wdXQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUlucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZUlucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYW5kYXRvcnk6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlzRGF0ZVRpbWU6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNJbnZhbGlkOiBib29sZWFuO1xuXG4gIHB1YmxpYyBpc1RvdWNoZWQgPSBmYWxzZTtcbiAgcHVibGljIGRpc3BsYXlEYXk6IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBkaXNwbGF5TW9udGg6IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBkaXNwbGF5WWVhcjogc3RyaW5nID0gbnVsbDtcblxuICBwdWJsaWMgZGlzcGxheUhvdXI6IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBkaXNwbGF5TWludXRlOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGlzcGxheVNlY29uZDogc3RyaW5nID0gbnVsbDtcbiAgLy8gV29ya3Mgd2l0aFxuICAvLyAyMDE4LTA0LTA5VDA4OjAyOjI3LjU0MlxuICAvLyAyMDE4LTA0LTA5VDA4OjAyOjI3LjU0MlpcbiAgLy8gMjAxOC0wNC0wOVQwODowMjoyNy41NDIrMDE6MDBcbiAgcHJpdmF0ZSByZWFkb25seSBEQVRFX0ZPUk1BVCA9XG4gICAgL14oMTl8MjApXFxkezJ9LT8oXFxkXFxkKS0/KFxcZFxcZCkoPzpUKFxcZFxcZCkoPzo6PyhcXGRcXGQpKD86Oj8oXFxkXFxkKSg/OlxcLihcXGQrKSk/KT8pPyhafChbKy1dKShcXGRcXGQpOj8oXFxkXFxkKSk/fFopPyQvO1xuICAvLyAgICB5ZWFyIC0gbW9udGggLSAgZGF5ICAgICBUICAgSEggICAgIDogICBNTSAgICAgIDogIFNTICAgICAgIC4wMDAgICAgICAgIFogb3IgKyAgICAgMDEgOiAgIDAwXG4gIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlOiAoXzogYW55KSA9PiB7fTtcbiAgcHJpdmF0ZSByYXdWYWx1ZSA9ICcnO1xuICBwcml2YXRlIGRheTogc3RyaW5nO1xuICBwcml2YXRlIG1vbnRoOiBzdHJpbmc7XG4gIHByaXZhdGUgeWVhcjogc3RyaW5nO1xuICBwcml2YXRlIGhvdXI6IHN0cmluZztcbiAgcHJpdmF0ZSBtaW51dGU6IHN0cmluZztcbiAgcHJpdmF0ZSBzZWNvbmQ6IHN0cmluZztcblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubWFuZGF0b3J5ICYmIHRoaXMuaXNEYXRlVGltZSkge1xuICAgICAgdGhpcy5kaXNwbGF5SG91ciA9ICcwMCc7XG4gICAgICB0aGlzLmRpc3BsYXlNaW51dGUgPSAnMDAnO1xuICAgICAgdGhpcy5kaXNwbGF5U2Vjb25kID0gJzAwJztcbiAgICAgIHRoaXMuaG91ciA9ICcwMCc7XG4gICAgICB0aGlzLm1pbnV0ZSA9ICcwMCc7XG4gICAgICB0aGlzLnNlY29uZCA9ICcwMCc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBzdHJpbmcpOiB2b2lkIHsgLy8gMjAxOC0wNC0wOVQwODowMjoyNy41NDJcbiAgICBpZiAob2JqKSB7XG4gICAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy5yZW1vdmVNaWxsaXNlY29uZHMob2JqKTtcbiAgICAgIC8vIG5lZWRzIHRvIGhhbmRsZSBhbHNvIHBhcnRpYWwgZGF0ZXMsIGUuZy4gLTA1LTIwMTYgKG1pc3NpbmcgZGF5KVxuICAgICAgY29uc3QgW2RhdGVQYXJ0LCB0aW1lUGFydF0gPSB0aGlzLnJhd1ZhbHVlLnNwbGl0KCdUJyk7XG4gICAgICBjb25zdCBkYXRlVmFsdWVzID0gZGF0ZVBhcnQuc3BsaXQoJy0nKTtcbiAgICAgIHRoaXMueWVhciA9IHRoaXMuZGlzcGxheVllYXIgPSBkYXRlVmFsdWVzWzBdIHx8ICcnO1xuICAgICAgdGhpcy5tb250aCA9IHRoaXMuZGlzcGxheU1vbnRoID0gZGF0ZVZhbHVlc1sxXSB8fCAnJztcbiAgICAgIHRoaXMuZGF5ID0gdGhpcy5kaXNwbGF5RGF5ID0gZGF0ZVZhbHVlc1syXSB8fCAnJztcbiAgICAgIGlmICh0aW1lUGFydCkge1xuICAgICAgICBjb25zdCB0aW1lUGFydHMgPSB0aW1lUGFydC5zcGxpdCgnOicpO1xuICAgICAgICB0aGlzLmhvdXIgPSB0aGlzLmRpc3BsYXlIb3VyID0gdGltZVBhcnRzWzBdIHx8ICcnO1xuICAgICAgICB0aGlzLm1pbnV0ZSA9IHRoaXMuZGlzcGxheU1pbnV0ZSA9IHRpbWVQYXJ0c1sxXSB8fCAnJztcbiAgICAgICAgdGhpcy5zZWNvbmQgPSB0aGlzLmRpc3BsYXlTZWNvbmQgPSB0aW1lUGFydHNbMl0gfHwgJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiAhdGhpcy52aWV3VmFsdWUoKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJ1xuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgIXRoaXMuaXNEYXRlRm9ybWF0KHRoaXMuZ2V0VmFsdWVGb3JWYWxpZGF0aW9uKGNvbnRyb2wpKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0dGVybjogJ0RhdGUgaXMgbm90IHZhbGlkJ1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBEbyBub3RoaW5nLlxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudmFsaWRhdGUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyA9PiB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZGF5Q2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMuZGF5ID0gdmFsdWU7XG5cbiAgICB0aGlzLnJhd1ZhbHVlID0gdGhpcy52aWV3VmFsdWUoKTtcblxuICAgIC8vIHVwZGF0ZSB0aGUgZm9ybVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMucmF3VmFsdWUpO1xuICB9XG5cbiAgcHVibGljIG1vbnRoQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMubW9udGggPSB2YWx1ZTtcblxuICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG5cbiAgfVxuXG4gIHB1YmxpYyB5ZWFyQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMueWVhciA9IHZhbHVlO1xuXG4gICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMudmlld1ZhbHVlKCk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGZvcm1cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnJhd1ZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBob3VyQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBnZXQgdmFsdWUgZnJvbSBpbnB1dFxuICAgIHRoaXMuaG91ciA9IHZhbHVlO1xuXG4gICAgdGhpcy5yYXdWYWx1ZSA9IHRoaXMudmlld1ZhbHVlKCk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGZvcm1cbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnJhd1ZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBtaW51dGVDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIC8vIGdldCB2YWx1ZSBmcm9tIGlucHV0XG4gICAgdGhpcy5taW51dGUgPSB2YWx1ZTtcblxuICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG5cbiAgfVxuXG4gIHB1YmxpYyBzZWNvbmRDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIC8vIGdldCB2YWx1ZSBmcm9tIGlucHV0XG4gICAgdGhpcy5zZWNvbmQgPSB2YWx1ZTtcblxuICAgIHRoaXMucmF3VmFsdWUgPSB0aGlzLnZpZXdWYWx1ZSgpO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBmb3JtXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgaW5wdXRGb2N1cygpIHtcbiAgICB0aGlzLmlzVG91Y2hlZCA9IGZhbHNlO1xuICAgIHRoaXMudG91Y2goKTtcbiAgfVxuXG4gIHB1YmxpYyB0b3VjaCgpIHtcbiAgICBpZiAodGhpcy5pc1RvdWNoZWQpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5yYXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRheUlkKCkge1xuICAgIHJldHVybiB0aGlzLmlkICsgJy1kYXknO1xuICB9XG5cbiAgcHVibGljIG1vbnRoSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgKyAnLW1vbnRoJztcbiAgfVxuXG4gIHB1YmxpYyB5ZWFySWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgKyAnLXllYXInO1xuICB9XG5cbiAgcHVibGljIGhvdXJJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pZCArICctaG91cic7XG4gIH1cblxuICBwdWJsaWMgbWludXRlSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgKyAnLW1pbnV0ZSc7XG4gIH1cblxuICBwdWJsaWMgc2Vjb25kSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgKyAnLXNlY29uZCc7XG4gIH1cblxuICBwcml2YXRlIHZpZXdWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmRheSB8fCB0aGlzLm1vbnRoIHx8IHRoaXMueWVhciB8fCB0aGlzLmhvdXIgfHwgdGhpcy5taW51dGUgfHwgdGhpcy5zZWNvbmQpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBbXG4gICAgICAgIHRoaXMueWVhciA/IHRoaXMueWVhciA6ICcnLFxuICAgICAgICB0aGlzLm1vbnRoID8gdGhpcy5wYWQodGhpcy5tb250aCkgOiAnJyxcbiAgICAgICAgdGhpcy5kYXkgPyB0aGlzLnBhZCh0aGlzLmRheSkgOiAnJ1xuICAgICAgXS5qb2luKCctJyk7XG4gICAgICBpZiAodGhpcy5pc0RhdGVUaW1lKSB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBbXG4gICAgICAgICAgdGhpcy5ob3VyID8gdGhpcy5wYWQodGhpcy5ob3VyKSA6ICcnLFxuICAgICAgICAgIHRoaXMubWludXRlID8gdGhpcy5wYWQodGhpcy5taW51dGUpIDogJycsXG4gICAgICAgICAgdGhpcy5zZWNvbmQgPyB0aGlzLnBhZCh0aGlzLnNlY29uZCkgOiAnJ1xuICAgICAgICBdLmpvaW4oJzonKTtcbiAgICAgICAgcmV0dXJuIGAke2RhdGV9VCR7dGltZX0uMDAwYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgaXNEYXRlRm9ybWF0KHZhbDogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuREFURV9GT1JNQVQudGVzdCh2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWQobnVtOiBhbnksIHBhZE51bSA9IDIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbCA9IG51bSAhPT0gdW5kZWZpbmVkID8gbnVtLnRvU3RyaW5nKCkgOiAnJztcbiAgICByZXR1cm4gdmFsLmxlbmd0aCA+PSBwYWROdW0gPyB2YWwgOiBuZXcgQXJyYXkocGFkTnVtIC0gdmFsLmxlbmd0aCArIDEpLmpvaW4oJzAnKSArIHZhbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWVGb3JWYWxpZGF0aW9uKGNvbnRyb2w6IGFueSkge1xuICAgIGlmICh0aGlzLmlzRGF0ZVRpbWUpIHtcbiAgICAgIHJldHVybiBjb250cm9sLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29udHJvbC52YWx1ZS5yZXBsYWNlKC9aLiovLCAnVDAwOjAwOjAwWicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTWlsbGlzZWNvbmRzKGRhdGVUaW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlVGltZS5yZXBsYWNlKC9cXC4uKi8sICcnKTtcbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJmb3JtLWRhdGVcIj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1kYXlcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbYXR0ci5pZF09XCInZGF5LWxhYmVsLScrZGF5SWQoKVwiPnt7J0RheScgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICA8aW5wdXQgI2RheUlucHV0XG4gICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgW2lkXT1cImRheUlkKClcIlxuICAgICAgICAgICBbbmFtZV09XCJkYXlJZCgpXCJcbiAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInZGF5LWxhYmVsLScrZGF5SWQoKVwiXG4gICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5RGF5XCJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJkYXlDaGFuZ2UoZGF5SW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGtleXVwKT1cImRheUNoYW5nZShkYXlJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoZm9jdXMpPVwiaW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBpc0ludmFsaWR9XCI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtbW9udGhcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbYXR0ci5pZF09XCInbW9udGgtbGFiZWwtJysgbW9udGhJZCgpXCI+e3snTW9udGgnIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgPGlucHV0ICNtb250aElucHV0XG4gICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgW2lkXT1cIm1vbnRoSWQoKVwiXG4gICAgICAgICAgIFtuYW1lXT1cIm1vbnRoSWQoKVwiXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgcGF0dGVybj1cIlswLTldKlwiXG4gICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ21vbnRoLWxhYmVsLScrIG1vbnRoSWQoKVwiXG4gICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5TW9udGhcIlxuICAgICAgICAgICAoY2hhbmdlKT1cIm1vbnRoQ2hhbmdlKG1vbnRoSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGtleXVwKT1cIm1vbnRoQ2hhbmdlKG1vbnRoSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLXllYXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbYXR0ci5pZF09XCIneWVhci1sYWJlbC0nKyB5ZWFySWQoKVwiPnt7J1llYXInIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgPGlucHV0ICN5ZWFySW5wdXRcbiAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICBbaWRdPVwieWVhcklkKClcIlxuICAgICAgICAgICBbbmFtZV09XCJ5ZWFySWQoKVwiXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgcGF0dGVybj1cIlswLTldKlwiXG4gICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ3llYXItbGFiZWwtJysgeWVhcklkKClcIlxuICAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheVllYXJcIlxuICAgICAgICAgICAoY2hhbmdlKT1cInllYXJDaGFuZ2UoeWVhcklucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChrZXl1cCk9XCJ5ZWFyQ2hhbmdlKHllYXJJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoZm9jdXMpPVwiaW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBpc0ludmFsaWR9XCI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtaG91clwiICpuZ0lmPVwiaXNEYXRlVGltZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFthdHRyLmlkXT1cIidob3VyLWxhYmVsLScrIGhvdXJJZCgpXCI+e3snSG91cicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICA8aW5wdXQgI2hvdXJJbnB1dFxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgIFtpZF09XCJob3VySWQoKVwiXG4gICAgICAgICAgIFtuYW1lXT1cImhvdXJJZCgpXCJcbiAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInaG91ci1sYWJlbC0nKyBob3VySWQoKVwiXG4gICAgICAgICAgIFt2YWx1ZV09XCJkaXNwbGF5SG91clwiXG4gICAgICAgICAgIChpbnB1dCk9XCJob3VyQ2hhbmdlKGhvdXJJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoa2V5dXApPVwiaG91ckNoYW5nZShob3VySW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLW1pbnV0ZVwiICpuZ0lmPVwiaXNEYXRlVGltZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFthdHRyLmlkXT1cIidtaW51dGUtbGFiZWwtJysgaG91cklkKClcIj57eydNaW51dGUnIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgPGlucHV0ICNtaW51dGVJbnB1dFxuICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgIFtpZF09XCJtaW51dGVJZCgpXCJcbiAgICAgICAgICAgW25hbWVdPVwibWludXRlSWQoKVwiXG4gICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgcGF0dGVybj1cIlswLTldKlwiXG4gICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ21pbnV0ZS1sYWJlbC0nKyBtaW51dGVJZCgpXCJcbiAgICAgICAgICAgW3ZhbHVlXT1cImRpc3BsYXlNaW51dGVcIlxuICAgICAgICAgICAoaW5wdXQpPVwibWludXRlQ2hhbmdlKG1pbnV0ZUlucHV0LnZhbHVlKVwiXG4gICAgICAgICAgIChrZXl1cCk9XCJtaW51dGVDaGFuZ2UobWludXRlSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGZvY3VzKT1cImlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogaXNJbnZhbGlkfVwiPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLXNlY29uZFwiICpuZ0lmPVwiaXNEYXRlVGltZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFthdHRyLmlkXT1cIidzZWNvbmQtbGFiZWwtJysgc2Vjb25kSWQoKVwiPnt7J1NlY29uZCcgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICA8aW5wdXQgI3NlY29uZElucHV0XG4gICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgW2lkXT1cInNlY29uZElkKClcIlxuICAgICAgICAgICBbbmFtZV09XCJzZWNvbmRJZCgpXCJcbiAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBwYXR0ZXJuPVwiWzAtOV0qXCJcbiAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInc2Vjb25kLWxhYmVsLScrIHNlY29uZElkKClcIlxuICAgICAgICAgICBbdmFsdWVdPVwiZGlzcGxheVNlY29uZFwiXG4gICAgICAgICAgIChpbnB1dCk9XCJzZWNvbmRDaGFuZ2Uoc2Vjb25kSW5wdXQudmFsdWUpXCJcbiAgICAgICAgICAgKGtleXVwKT1cInNlY29uZENoYW5nZShzZWNvbmRJbnB1dC52YWx1ZSlcIlxuICAgICAgICAgICAoZm9jdXMpPVwiaW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBpc0ludmFsaWR9XCI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -112,29 +112,8 @@ export class CaseEditFormComponent {
112
112
  this.initial = JSON.stringify(this.formValueService.sanitise(this.formGroup.value));
113
113
  }
114
114
  detectChangesAndEmit(changes) {
115
- const current = this.formValueService.sanitise(changes);
116
- const isEqual = this.deepEqual(this.initial, current);
117
- this.valuesChanged.emit(!isEqual);
118
- }
119
- deepEqual(obj1, obj2) {
120
- // Simple deep equality check
121
- if (obj1 === obj2) {
122
- return true;
123
- }
124
- if (typeof obj1 !== 'object' || typeof obj2 !== 'object' || obj1 == null || obj2 == null) {
125
- return false;
126
- }
127
- const keys1 = Object.keys(obj1);
128
- const keys2 = Object.keys(obj2);
129
- if (keys1.length !== keys2.length) {
130
- return false;
131
- }
132
- for (const key of keys1) {
133
- if (!this.deepEqual(obj1[key], obj2[key])) {
134
- return false;
135
- }
136
- }
137
- return true;
115
+ const current = JSON.stringify(this.formValueService.sanitise(changes));
116
+ this.initial !== current ? this.valuesChanged.emit(true) : this.valuesChanged.emit(false);
138
117
  }
139
118
  static ɵfac = function CaseEditFormComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CaseEditFormComponent)(i0.ɵɵdirectiveInject(i1.FormValueService)); };
140
119
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEditFormComponent, selectors: [["ccd-case-edit-form"]], inputs: { fields: "fields", formGroup: "formGroup", caseFields: "caseFields", pageChangeSubject: "pageChangeSubject" }, outputs: { valuesChanged: "valuesChanged" }, decls: 1, vars: 1, consts: [["CompoundRow", ""], ["ccdConditionalShowForm", "", 3, "formGroup", "caseFields", "contextFields", 4, "ngFor", "ngForOf"], ["ccdConditionalShowForm", "", 3, "formGroup", "caseFields", "contextFields"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields"], [3, "ngSwitch"], [3, "caseField", "caseFields", "withLabel", "formGroup", 4, "ngSwitchCase"], [4, "ngSwitchCase"], [3, "caseField", "caseFields", "withLabel", "formGroup"], [4, "ngIf", "ngIfElse"], [3, "caseField", "caseFields", "formGroup", "idPrefix", "hidden"]], template: function CaseEditFormComponent_Template(rf, ctx) { if (rf & 1) {
@@ -158,4 +137,4 @@ export class CaseEditFormComponent {
158
137
  type: Output
159
138
  }] }); })();
160
139
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEditFormComponent, { className: "CaseEditFormComponent", filePath: "lib/shared/components/case-editor/case-edit-form/case-edit-form.component.ts", lineNumber: 12 }); })();
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdC1mb3JtL2Nhc2UtZWRpdC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtZm9ybS9jYXNlLWVkaXQtZm9ybS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7SUNDdkUsb0NBRTJFOzs7O0lBRDNELEFBRG1FLEFBQTFCLEFBQXBCLG9DQUFtQixpQ0FBMEIsbUJBQW1CLCtCQUM5RDs7OztJQUlyQyw2QkFBaUU7SUFDL0QscUNBT2tCOzs7OztJQVBELGNBQW1CO0lBSW5CLEFBRkEsQUFEQSxBQURBLG9DQUFtQixpQ0FDTSwrQkFDRiwyQkFFQTs7OztJQU94QyxxQ0FNNkU7Ozs7SUFGNUQsQUFEQSxBQURBLEFBREEsQUFEQSxvQ0FBbUIsaUNBQ00sK0JBQ0YsK0JBQ0ksMkJBQ0o7Ozs7SUFsQjVDLDZCQUFvQztJQUVsQyxzSEFBaUU7O0lBV2pFLHFKQUEwQjs7Ozs7SUFYWCxj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ciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRm9ybVZhbHVlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS12YWx1ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZWRpdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICdjYXNlLWVkaXQtZm9ybS5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDYXNlRWRpdEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmaWVsZHM6IENhc2VGaWVsZFtdID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdlQ2hhbmdlU3ViamVjdDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdmFsdWVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIGluaXRpYWw6IGFueTtcbiAgcHVibGljIHBhZ2VDaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGZvcm1Hcm91cENoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZm9ybVZhbHVlU2VydmljZTogRm9ybVZhbHVlU2VydmljZSkgeyB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucGFnZUNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb3JtR3JvdXBDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gV2UgbmVlZCB0aGUgYmVsb3cgdW4vc3Vic2NyaWJlIGNvbXBsZXhpdHkgYXMgd2UgZG8gbm90IGhhdmUgcHJvcGVyIHBhZ2UgY29tcG9uZW50IHBlciBwYWdlIHdpdGggaXRzIEFmdGVyVmlld0luaXQgaG9va1xuICAvLyBiZWluZyBjYWxsZWQgb24gZWFjaCBwYWdlIGxvYWQuIFRoaXMgaXMgZG9uZSBmb3IgXCJDYW5jZWwgYW5kIHJldHVyblwiIG1vZGFsIGZyb20gUkRNLTIzMDIuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXRyaWV2ZUluaXRpYWxGb3JtVmFsdWVzKCk7XG4gICAgdGhpcy5wYWdlQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5wYWdlQ2hhbmdlU3ViamVjdC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICAvLyBUaW1lb3V0IGlzIHJlcXVpcmVkIGZvciB0aGUgZm9ybSB0byBiZSByZW5kZXJlZCBiZWZvcmUgc3Vic2NyaXB0aW9uIHRvIGZvcm0gY2hhbmdlcyBhbmQgaW5pdGlhbCBmb3JtIHZhbHVlcyByZXRyaWV2YWwuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb0Zvcm1DaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMucmV0cmlldmVJbml0aWFsRm9ybVZhbHVlcygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpYmVUb0Zvcm1DaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgc3Vic2NyaWJlVG9Gb3JtQ2hhbmdlcygpIHtcbiAgICB0aGlzLmZvcm1Hcm91cENoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKF8gPT4gdGhpcy5kZXRlY3RDaGFuZ2VzQW5kRW1pdChfKSk7XG4gIH1cblxuICBwdWJsaWMgcmV0cmlldmVJbml0aWFsRm9ybVZhbHVlcygpIHtcbiAgICB0aGlzLmluaXRpYWwgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2UodGhpcy5mb3JtR3JvdXAudmFsdWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXRlY3RDaGFuZ2VzQW5kRW1pdChjaGFuZ2VzKSB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZShjaGFuZ2VzKTtcbiAgICBjb25zdCBpc0VxdWFsID0gdGhpcy5kZWVwRXF1YWwodGhpcy5pbml0aWFsLCBjdXJyZW50KTtcbiAgICB0aGlzLnZhbHVlc0NoYW5nZWQuZW1pdCghaXNFcXVhbCk7XG4gIH1cblxuICBwcml2YXRlIGRlZXBFcXVhbChvYmoxOiBhbnksIG9iajI6IGFueSk6IGJvb2xlYW4ge1xuICAgIC8vIFNpbXBsZSBkZWVwIGVxdWFsaXR5IGNoZWNrXG4gICAgaWYgKG9iajEgPT09IG9iajIpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9iajEgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmoyICE9PSAnb2JqZWN0JyB8fCBvYmoxID09IG51bGwgfHwgb2JqMiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGtleXMxID0gT2JqZWN0LmtleXMob2JqMSk7XG4gICAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyhvYmoyKTtcbiAgICBpZiAoa2V5czEubGVuZ3RoICE9PSBrZXlzMi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5czEpIHtcbiAgICAgIGlmICghdGhpcy5kZWVwRXF1YWwob2JqMVtrZXldLCBvYmoyW2tleV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgY2NkQ29uZGl0aW9uYWxTaG93Rm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtjYXNlRmllbGRzXT1cImZpZWxkc1wiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzXCI+XG5cbiAgPGRpdiBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWVsZCB8IGNjZElzUmVhZE9ubHlBbmROb3RDb2xsZWN0aW9uXCI+XG5cbiAgICAgIDxjY2QtZmllbGQtcmVhZCAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCIgW3dpdGhMYWJlbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFthdHRyLmZpZWxkX2lkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF90eXBlXT1cImZpZWxkLmZpZWxkX3R5cGUudHlwZVwiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGZpZWxkIHwgY2NkSXNDb21wb3VuZCk7IGVsc2UgQ29tcG91bmRSb3dcIj5cbiAgICAgICAgICA8Y2NkLWZpZWxkLXdyaXRlIFtjYXNlRmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZHNdPVwiY2FzZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRQcmVmaXhdPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkX2lkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkX3R5cGVdPVwiZmllbGQuZmllbGRfdHlwZS50eXBlXCI+XG4gICAgICAgICAgPC9jY2QtZmllbGQtd3JpdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjQ29tcG91bmRSb3c+XG4gICAgICAgICAgPGNjZC1maWVsZC13cml0ZSBbY2FzZUZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRzXT1cImNhc2VGaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkUHJlZml4XT1cImZpZWxkLmlkICsgJ18nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkX2lkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkX3R5cGVdPVwiZmllbGQuZmllbGRfdHlwZS50eXBlXCI+PC9jY2QtZmllbGQtd3JpdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdC1mb3JtL2Nhc2UtZWRpdC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtZm9ybS9jYXNlLWVkaXQtZm9ybS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7SUNDdkUsb0NBRTJFOzs7O0lBRDNELEFBRG1FLEFBQTFCLEFBQXBCLG9DQUFtQixpQ0FBMEIsbUJBQW1CLCtCQUM5RDs7OztJQUlyQyw2QkFBaUU7SUFDL0QscUNBT2tCOzs7OztJQVBELGNBQW1CO0lBSW5CLEFBRkEsQUFEQSxBQURBLG9DQUFtQixpQ0FDTSwrQkFDRiwyQkFFQTs7OztJQU94QyxxQ0FNNkU7Ozs7SUFGNUQsQUFEQSxBQURBLEFBREEsQUFEQSxvQ0FBbUIsaUNBQ00sK0JBQ0YsK0JBQ0ksMkJBQ0o7Ozs7SUFsQjVDLDZCQUFvQztJQUVsQyxzSEFBaUU7O0lBV2pFLHFKQUEwQjs7Ozs7SUFYWCxj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QzsrR0E1RFUscUJBQXFCOzZEQUFyQixxQkFBcUI7WUNYbEMseUZBQzJDOztZQUFYLG9DQUFTOzs7aUZEVTVCLHFCQUFxQjtjQUpqQyxTQUFTOzJCQUNFLG9CQUFvQjtpREFNdkIsTUFBTTtrQkFEWixLQUFLO1lBR0MsU0FBUztrQkFEZixLQUFLO1lBR0MsVUFBVTtrQkFEaEIsS0FBSztZQUdDLGlCQUFpQjtrQkFEdkIsS0FBSztZQUdDLGFBQWE7a0JBRG5CLE1BQU07O2tGQVZJLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtVmFsdWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS9mb3JtLXZhbHVlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1lZGl0LWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJ2Nhc2UtZWRpdC1mb3JtLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENhc2VFZGl0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZpZWxkczogQ2FzZUZpZWxkW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBASW5wdXQoKVxuICBwdWJsaWMgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIHBhZ2VDaGFuZ2VTdWJqZWN0OiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB2YWx1ZXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgaW5pdGlhbDogYW55O1xuICBwdWJsaWMgcGFnZUNoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZm9ybUdyb3VwQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmb3JtVmFsdWVTZXJ2aWNlOiBGb3JtVmFsdWVTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnZUNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvcm1Hcm91cENoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5mb3JtR3JvdXBDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBXZSBuZWVkIHRoZSBiZWxvdyB1bi9zdWJzY3JpYmUgY29tcGxleGl0eSBhcyB3ZSBkbyBub3QgaGF2ZSBwcm9wZXIgcGFnZSBjb21wb25lbnQgcGVyIHBhZ2Ugd2l0aCBpdHMgQWZ0ZXJWaWV3SW5pdCBob29rXG4gIC8vIGJlaW5nIGNhbGxlZCBvbiBlYWNoIHBhZ2UgbG9hZC4gVGhpcyBpcyBkb25lIGZvciBcIkNhbmNlbCBhbmQgcmV0dXJuXCIgbW9kYWwgZnJvbSBSRE0tMjMwMi5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJldHJpZXZlSW5pdGlhbEZvcm1WYWx1ZXMoKTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLnBhZ2VDaGFuZ2VTdWJqZWN0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5mb3JtR3JvdXBDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXBDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIC8vIFRpbWVvdXQgaXMgcmVxdWlyZWQgZm9yIHRoZSBmb3JtIHRvIGJlIHJlbmRlcmVkIGJlZm9yZSBzdWJzY3JpcHRpb24gdG8gZm9ybSBjaGFuZ2VzIGFuZCBpbml0aWFsIGZvcm0gdmFsdWVzIHJldHJpZXZhbC5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZVRvRm9ybUNoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5yZXRyaWV2ZUluaXRpYWxGb3JtVmFsdWVzKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmliZVRvRm9ybUNoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJzY3JpYmVUb0Zvcm1DaGFuZ2VzKCkge1xuICAgIHRoaXMuZm9ybUdyb3VwQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB0aGlzLmRldGVjdENoYW5nZXNBbmRFbWl0KF8pKTtcbiAgfVxuXG4gIHB1YmxpYyByZXRyaWV2ZUluaXRpYWxGb3JtVmFsdWVzKCkge1xuICAgIHRoaXMuaW5pdGlhbCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZSh0aGlzLmZvcm1Hcm91cC52YWx1ZSkpO1xuICB9XG5cbiAgcHVibGljIGRldGVjdENoYW5nZXNBbmRFbWl0KGNoYW5nZXMpIHtcbiAgICBjb25zdCBjdXJyZW50ID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnNhbml0aXNlKGNoYW5nZXMpKTtcbiAgICB0aGlzLmluaXRpYWwgIT09IGN1cnJlbnQgPyB0aGlzLnZhbHVlc0NoYW5nZWQuZW1pdCh0cnVlKSA6IHRoaXMudmFsdWVzQ2hhbmdlZC5lbWl0KGZhbHNlKTtcbiAgfVxufSIsIjxuZy1jb250YWluZXIgY2NkQ29uZGl0aW9uYWxTaG93Rm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtjYXNlRmllbGRzXT1cImZpZWxkc1wiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzXCI+XG5cbiAgPGRpdiBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWVsZCB8IGNjZElzUmVhZE9ubHlBbmROb3RDb2xsZWN0aW9uXCI+XG5cbiAgICAgIDxjY2QtZmllbGQtcmVhZCAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCIgW3dpdGhMYWJlbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFthdHRyLmZpZWxkX2lkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5maWVsZF90eXBlXT1cImZpZWxkLmZpZWxkX3R5cGUudHlwZVwiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGZpZWxkIHwgY2NkSXNDb21wb3VuZCk7IGVsc2UgQ29tcG91bmRSb3dcIj5cbiAgICAgICAgICA8Y2NkLWZpZWxkLXdyaXRlIFtjYXNlRmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZHNdPVwiY2FzZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRQcmVmaXhdPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkX2lkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkX3R5cGVdPVwiZmllbGQuZmllbGRfdHlwZS50eXBlXCI+XG4gICAgICAgICAgPC9jY2QtZmllbGQtd3JpdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjQ29tcG91bmRSb3c+XG4gICAgICAgICAgPGNjZC1maWVsZC13cml0ZSBbY2FzZUZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRzXT1cImNhc2VGaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkUHJlZml4XT1cImZpZWxkLmlkICsgJ18nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkX2lkXT1cImZpZWxkLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmZpZWxkX3R5cGVdPVwiZmllbGQuZmllbGRfdHlwZS50eXBlXCI+PC9jY2QtZmllbGQtd3JpdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==