@talrace/ngx-noder 0.0.11 → 0.0.12

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.
@@ -3,6 +3,7 @@ import { ApplyElementStyleModel } from '../../../models/generated/apply-element-
3
3
  import { ApplyImageStyleModel } from '../../../models/generated/apply-image-style.model';
4
4
  import { ApplyParagraphStyleModel } from '../../../models/generated/apply-paragraph-style.model';
5
5
  import { ApplyTextStyleModel } from '../../../models/generated/apply-text-style.model';
6
+ import { CUSTOM_ELEMENT_MARKER } from '../../components/shared/custom-content-markers.const';
6
7
  import { DeleteModel } from '../../../models/generated/delete.model';
7
8
  import { InsertStyledTextModel } from '../../../models/generated/insert-styled-text.model';
8
9
  import { InsertTableColumnsModel } from '../../../models/generated/insert-table-columns.model';
@@ -28,10 +29,10 @@ export class OperationHistory {
28
29
  }
29
30
  pushInsertText(insertIndex, text) {
30
31
  const redoStep = new InsertTextModel({ insertIndex, text });
31
- const undoStep = new DeleteModel({ startIndex: insertIndex, endIndex: insertIndex + text.length });
32
+ const undoStep = new DeleteModel({ startIndex: insertIndex, count: text.length });
32
33
  this.addToHistory(undoStep, redoStep);
33
34
  }
34
- pushInsertParagraph(model, paragraphs) {
35
+ pushInsertParagraph(content, model, paragraphs) {
35
36
  const currentParagraph = paragraphs
36
37
  .slice()
37
38
  .sort((a, b) => a.insertIndex - b.insertIndex)
@@ -41,52 +42,50 @@ export class OperationHistory {
41
42
  .sort((a, b) => b.insertIndex - a.insertIndex)
42
43
  .find(x => x.insertIndex < currentParagraph.insertIndex);
43
44
  let startIndex = model.insertIndex;
44
- let endIndex = model.insertIndex;
45
+ let count = content.length;
45
46
  if (model.insertIndex === 0 || previousParagraph?.insertIndex === model.insertIndex - 1) {
46
- endIndex++;
47
+ count++;
47
48
  }
48
49
  else if (currentParagraph.insertIndex === model.insertIndex) {
49
50
  startIndex++;
50
- endIndex++;
51
51
  }
52
52
  else {
53
- endIndex = startIndex + 2;
53
+ count = count + 2;
54
54
  }
55
- endIndex = endIndex + (model.insertText ? model.insertText.text.length : 1);
56
- const undoStep = new DeleteModel({ startIndex, endIndex });
55
+ const undoStep = new DeleteModel({ startIndex, count });
57
56
  this.addToHistory(undoStep, model);
58
57
  }
59
58
  pushInsertElement(model) {
60
- const undoStep = new DeleteModel({ startIndex: model.element.insertIndex, endIndex: model.element.insertIndex + 1 });
59
+ const undoStep = new DeleteModel({ startIndex: model.element.insertIndex, count: CUSTOM_ELEMENT_MARKER.length });
61
60
  this.addToHistory(undoStep, model);
62
61
  }
63
- pushInsertBreak(model, endIndex) {
64
- const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex });
62
+ pushInsertBreak(model, count) {
63
+ const undoStep = new DeleteModel({ startIndex: model.insertIndex, count });
65
64
  this.addToHistory(undoStep, model);
66
65
  }
67
66
  pushInsertTab(model) {
68
- const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.insertIndex + 1 });
67
+ const undoStep = new DeleteModel({ startIndex: model.insertIndex, count: CUSTOM_ELEMENT_MARKER.length });
69
68
  this.addToHistory(undoStep, model);
70
69
  }
71
70
  pushInsertImage(model) {
72
- const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.insertIndex + 1 });
71
+ const undoStep = new DeleteModel({ startIndex: model.insertIndex, count: CUSTOM_ELEMENT_MARKER.length });
73
72
  this.addToHistory(undoStep, model);
74
73
  }
75
74
  pushInsertLink(model) {
76
- const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.endIndex });
75
+ const undoStep = new DeleteModel({ startIndex: model.insertIndex, count: model.linkDataModel.text.length });
77
76
  this.addToHistory(undoStep, model);
78
77
  }
79
78
  pushInsertTable(model) {
80
- const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.insertIndex + model.content.length });
79
+ const undoStep = new DeleteModel({ startIndex: model.insertIndex, count: model.content.length });
81
80
  this.addToHistory(undoStep, model);
82
81
  }
83
82
  pushInsertStyledText(insertIndex, text, style) {
84
83
  const redoStep = new InsertStyledTextModel({ insertIndex, text, textStyle: style });
85
- const undoStep = new DeleteModel({ startIndex: insertIndex, endIndex: insertIndex + text.length });
84
+ const undoStep = new DeleteModel({ startIndex: insertIndex, count: text.length });
86
85
  this.addToHistory(undoStep, redoStep);
87
86
  }
88
87
  pushDelete(model) {
89
- const redoStep = new DeleteModel({ startIndex: model.startIndex, endIndex: model.startIndex + model.text.length });
88
+ const redoStep = new DeleteModel({ startIndex: model.startIndex, count: model.text.length });
90
89
  this.addToHistory(model, redoStep);
91
90
  }
92
91
  pushApplyTextStyle(startIndex, endIndex, style, formats) {
@@ -203,4 +202,4 @@ export class OperationHistory {
203
202
  this.editorService.historyInfo = new OperationsHistoryInfoModel(this.step, this.storage.length - 1);
204
203
  }
205
204
  }
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLWhpc3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvZ2FkZ2V0cy9oaXN0b3J5L29wZXJhdGlvbi1oaXN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQVVyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUUvRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFJOUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFL0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENB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RyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkTnVtYmVyaW5nTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FkZC1udW1iZXJpbmcubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlFbGVtZW50U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktZWxlbWVudC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBBcHBseUltYWdlU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktaW1hZ2Utc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlQYXJhZ3JhcGhTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9hcHBseS1wYXJhZ3JhcGgtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktdGV4dC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBDdXJzb3JQYXJhZ3JhcGggfSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvcG9zaXRpb25pbmcvY3Vyc29yLXBhcmFncmFwaCc7XG5pbXBvcnQgeyBEZWxldGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZGVsZXRlLm1vZGVsJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9lbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEZvcm1hdE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9mb3JtYXQubW9kZWwnO1xuaW1wb3J0IHsgSW1hZ2VNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW1hZ2UubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0QnJlYWtNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWJyZWFrLm1vZGVsJztcbmltcG9ydCB7IEluc2VydEVsZW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWVsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0SW1hZ2VNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWltYWdlLm1vZGVsJztcbmltcG9ydCB7IEluc2VydExpbmtNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWxpbmsubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0UGFyYWdyYXBoTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC1wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0U3R5bGVkVGV4dE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtc3R5bGVkLXRleHQubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFibGVDb2x1bW5zTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS1jb2x1bW5zLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUYWJsZVJvd3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYmxlLXJvd3MubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFiTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWIubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGV4dE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtdGV4dC5tb2RlbCc7XG5pbXBvcnQgeyBOdW1iZXJpbmdMZXZlbE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9udW1iZXJpbmctbGV2ZWwubW9kZWwnO1xuaW1wb3J0IHsgTnVtYmVyaW5nTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL251bWJlcmluZy5tb2RlbCc7XG5pbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tICcuL29wZXJhdGlvbi50eXBlJztcbmltcG9ydCB7IE9wZXJhdGlvbnNIaXN0b3J5SW5mb01vZGVsIH0gZnJvbSAnLi9vcGVyYXRpb25zLWhpc3RvcnktaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLm1vZGVsJztcbmltcG9ydCB7IFBhcmFncmFwaFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3BhcmFncmFwaC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBSZWd1bGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZXhlY3V0aW9uL3JlZ3VsYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlbW92ZU51bWJlcmluZ3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVtb3ZlLW51bWJlcmluZ3MubW9kZWwnO1xuaW1wb3J0IHsgUmVtb3ZlVGFibGVDb2x1bW5zTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3JlbW92ZS10YWJsZS1jb2x1bW5zLm1vZGVsJztcbmltcG9ydCB7IFJlbW92ZVRhYmxlUm93c01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZW1vdmUtdGFibGUtcm93cy5tb2RlbCc7XG5pbXBvcnQgeyBSZXBsYWNlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3JlcGxhY2UubW9kZWwnO1xuaW1wb3J0IHsgUmVzaXplVGFibGVDb2x1bW5zTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc2l6ZS10YWJsZS1jb2x1bW5zLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlTnVtYmVyaW5nc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLW51bWJlcmluZ3MubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZVBhcmFncmFwaFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLXBhcmFncmFwaC1zdHlsZXMubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZVRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUtdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZVRleHRTdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS10ZXh0LXN0eWxlcy5tb2RlbCc7XG5pbXBvcnQgeyBUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBUYXJnZXRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGFyZ2V0Lm1vZGVsJztcbmltcG9ydCB7IFRleHRTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90ZXh0LXN0eWxlLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbkhpc3Rvcnkge1xuICAgIHJlYWRvbmx5IE1BWF9ISVNUT1JZID0gMTAwO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlOiB7XG4gICAgICAgIHVuZG86IE9wZXJhdGlvbjtcbiAgICAgICAgcmVkbzogT3BlcmF0aW9uO1xuICAgICAgICB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdO1xuICAgICAgICBjdXJzb3I6IEN1cnNvclBhcmFncmFwaDtcbiAgICAgICAgYW5jaG9yOiBDdXJzb3JQYXJhZ3JhcGggfCBudWxsO1xuICAgIH1bXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBzdGVwID0gLTE7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UsIHByaXZhdGUgcmVndWxhdG9yU2VydmljZTogUmVndWxhdG9yU2VydmljZSkge1xuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuaGlzdG9yeUluZm8gPSBuZXcgT3BlcmF0aW9uc0hpc3RvcnlJbmZvTW9kZWwodGhpcy5zdGVwLCB0aGlzLnN0b3JhZ2UubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydFRleHQoaW5zZXJ0SW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IEluc2VydFRleHRNb2RlbCh7IGluc2VydEluZGV4LCB0ZXh0IH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXg6IGluc2VydEluZGV4LCBlbmRJbmRleDogaW5zZXJ0SW5kZXggKyB0ZXh0Lmxlbmd0aCB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0UGFyYWdyYXBoKG1vZGVsOiBJbnNlcnRQYXJhZ3JhcGhNb2RlbCwgcGFyYWdyYXBoczogUGFyYWdyYXBoTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50UGFyYWdyYXBoID0gcGFyYWdyYXBoc1xuICAgICAgICAgICAgLnNsaWNlKClcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluc2VydEluZGV4IC0gYi5pbnNlcnRJbmRleClcbiAgICAgICAgICAgIC5maW5kKHggPT4geC5pbnNlcnRJbmRleCA+PSBtb2RlbC5pbnNlcnRJbmRleCk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzUGFyYWdyYXBoID0gcGFyYWdyYXBoc1xuICAgICAgICAgICAgLnNsaWNlKClcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLmluc2VydEluZGV4IC0gYS5pbnNlcnRJbmRleClcbiAgICAgICAgICAgIC5maW5kKHggPT4geC5pbnNlcnRJbmRleCA8IGN1cnJlbnRQYXJhZ3JhcGguaW5zZXJ0SW5kZXgpO1xuICAgICAgICBsZXQgc3RhcnRJbmRleCA9IG1vZGVsLmluc2VydEluZGV4O1xuICAgICAgICBsZXQgZW5kSW5kZXggPSBtb2RlbC5pbnNlcnRJbmRleDtcbiAgICAgICAgaWYgKG1vZGVsLmluc2VydEluZGV4ID09PSAwIHx8IHByZXZpb3VzUGFyYWdyYXBoPy5pbnNlcnRJbmRleCA9PT0gbW9kZWwuaW5zZXJ0SW5kZXggLSAxKSB7XG4gICAgICAgICAgICBlbmRJbmRleCsrO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRQYXJhZ3JhcGguaW5zZXJ0SW5kZXggPT09IG1vZGVsLmluc2VydEluZGV4KSB7XG4gICAgICAgICAgICBzdGFydEluZGV4Kys7XG4gICAgICAgICAgICBlbmRJbmRleCsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgMjtcbiAgICAgICAgfVxuICAgICAgICBlbmRJbmRleCA9IGVuZEluZGV4ICsgKG1vZGVsLmluc2VydFRleHQgPyBtb2RlbC5pbnNlcnRUZXh0LnRleHQubGVuZ3RoIDogMSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydEVsZW1lbnQobW9kZWw6IEluc2VydEVsZW1lbnRNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXg6IG1vZGVsLmVsZW1lbnQuaW5zZXJ0SW5kZXgsIGVuZEluZGV4OiBtb2RlbC5lbGVtZW50Lmluc2VydEluZGV4ICsgMSB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIG1vZGVsKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0QnJlYWsobW9kZWw6IEluc2VydEJyZWFrTW9kZWwsIGVuZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgRGVsZXRlTW9kZWwoeyBzdGFydEluZGV4OiBtb2RlbC5pbnNlcnRJbmRleCwgZW5kSW5kZXggfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydFRhYihtb2RlbDogSW5zZXJ0VGFiTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgRGVsZXRlTW9kZWwoeyBzdGFydEluZGV4OiBtb2RlbC5pbnNlcnRJbmRleCwgZW5kSW5kZXg6IG1vZGVsLmluc2VydEluZGV4ICsgMSB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIG1vZGVsKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0SW1hZ2UobW9kZWw6IEluc2VydEltYWdlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgRGVsZXRlTW9kZWwoeyBzdGFydEluZGV4OiBtb2RlbC5pbnNlcnRJbmRleCwgZW5kSW5kZXg6IG1vZGVsLmluc2VydEluZGV4ICsgMSB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIG1vZGVsKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0TGluayhtb2RlbDogSW5zZXJ0TGlua01vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleDogbW9kZWwuaW5zZXJ0SW5kZXgsIGVuZEluZGV4OiBtb2RlbC5lbmRJbmRleCB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIG1vZGVsKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0VGFibGUobW9kZWw6IEluc2VydFRhYmxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgRGVsZXRlTW9kZWwoeyBzdGFydEluZGV4OiBtb2RlbC5pbnNlcnRJbmRleCwgZW5kSW5kZXg6IG1vZGVsLmluc2VydEluZGV4ICsgbW9kZWwuY29udGVudC5sZW5ndGggfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydFN0eWxlZFRleHQoaW5zZXJ0SW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nLCBzdHlsZTogVGV4dFN0eWxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgSW5zZXJ0U3R5bGVkVGV4dE1vZGVsKHsgaW5zZXJ0SW5kZXgsIHRleHQsIHRleHRTdHlsZTogc3R5bGUgfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleDogaW5zZXJ0SW5kZXgsIGVuZEluZGV4OiBpbnNlcnRJbmRleCArIHRleHQubGVuZ3RoIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hEZWxldGUobW9kZWw6IFJlc3RvcmVNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZWRvU3RlcCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXg6IG1vZGVsLnN0YXJ0SW5kZXgsIGVuZEluZGV4OiBtb2RlbC5zdGFydEluZGV4ICsgbW9kZWwudGV4dC5sZW5ndGggfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KG1vZGVsLCByZWRvU3RlcCk7XG4gICAgfVxuXG4gICAgcHVzaEFwcGx5VGV4dFN0eWxlKHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgc3R5bGU6IFRleHRTdHlsZU1vZGVsLCBmb3JtYXRzOiBGb3JtYXRNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IEFwcGx5VGV4dFN0eWxlTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dFN0eWxlOiBzdHlsZSB9KTtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgUmVzdG9yZVRleHRTdHlsZXNNb2RlbCh7IGZvcm1hdHMgfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCByZWRvU3RlcCk7XG4gICAgfVxuXG4gICAgcHVzaEFwcGx5UGFyYWdyYXBoU3R5bGUoc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCBzdHlsZTogUGFyYWdyYXBoU3R5bGVNb2RlbCwgcGFyYWdyYXBoczogUGFyYWdyYXBoTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCByZWRvU3RlcCA9IG5ldyBBcHBseVBhcmFncmFwaFN0eWxlTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCwgcGFyYWdyYXBoU3R5bGU6IHN0eWxlIH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBSZXN0b3JlUGFyYWdyYXBoU3R5bGVzTW9kZWwoeyBwYXJhZ3JhcGhzIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hBcHBseUVsZW1lbnRTdHlsZShwcmV2aW91czogRWxlbWVudE1vZGVsLCBjdXJyZW50OiBFbGVtZW50TW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgQXBwbHlFbGVtZW50U3R5bGVNb2RlbCh7IGluc2VydEluZGV4OiBjdXJyZW50Lmluc2VydEluZGV4LCB3aWR0aDogY3VycmVudC53aWR0aCwgaGVpZ2h0OiBjdXJyZW50LmhlaWdodCB9KTtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgQXBwbHlFbGVtZW50U3R5bGVNb2RlbCh7IGluc2VydEluZGV4OiBwcmV2aW91cy5pbnNlcnRJbmRleCwgd2lkdGg6IHByZXZpb3VzLndpZHRoLCBoZWlnaHQ6IHByZXZpb3VzLmhlaWdodCB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0VGFibGVSb3dzKGluc2VydEluZGV4OiBudW1iZXIsIHJvd3NDb3VudDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyLCBpbmhlcml0SW5kZXg6IG51bWJlciwgdGFibGU6IFRhYmxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2xkVGFibGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRhYmxlKSk7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IEluc2VydFRhYmxlUm93c01vZGVsKHsgaW5zZXJ0SW5kZXgsIHJvd3NDb3VudCwgdGFyZ2V0SW5kZXgsIGluaGVyaXRJbmRleCB9KTtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgUmVzdG9yZVRhYmxlTW9kZWwoeyBpbnNlcnRJbmRleCwgb2xkVGFibGUgfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCByZWRvU3RlcCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydFRhYmxlQ29sdW1ucyhpbnNlcnRJbmRleDogbnVtYmVyLCBjb2x1bW5zQ291bnQ6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIsIHRhYmxlOiBUYWJsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9sZFRhYmxlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0YWJsZSkpO1xuICAgICAgICBjb25zdCByZWRvU3RlcCA9IG5ldyBJbnNlcnRUYWJsZUNvbHVtbnNNb2RlbCh7IGluc2VydEluZGV4LCBjb2x1bW5zQ291bnQsIHRhcmdldEluZGV4LCBpbmhlcml0SW5kZXggfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc3RvcmVUYWJsZU1vZGVsKHsgaW5zZXJ0SW5kZXgsIG9sZFRhYmxlIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hSZW1vdmVUYWJsZVJvd3MoaW5zZXJ0SW5kZXg6IG51bWJlciwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCB0YWJsZTogVGFibGVNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvbGRUYWJsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGFibGUpKTtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgUmVtb3ZlVGFibGVSb3dzTW9kZWwoeyBpbnNlcnRJbmRleCwgc3RhcnRJbmRleCwgZW5kSW5kZXggfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc3RvcmVUYWJsZU1vZGVsKHsgaW5zZXJ0SW5kZXgsIG9sZFRhYmxlIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hSZW1vdmVUYWJsZUNvbHVtbnMoaW5zZXJ0SW5kZXg6IG51bWJlciwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCB0YWJsZTogVGFibGVNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvbGRUYWJsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGFibGUpKTtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgUmVtb3ZlVGFibGVDb2x1bW5zTW9kZWwoeyBpbnNlcnRJbmRleCwgc3RhcnRJbmRleCwgZW5kSW5kZXggfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc3RvcmVUYWJsZU1vZGVsKHsgaW5zZXJ0SW5kZXgsIG9sZFRhYmxlIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hSZXNpemVUYWJsZUNvbHVtbnMocmVzaXplVGFibGVDb2x1bW5zOiBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZWRvU3RlcCA9IG5ldyBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCh7XG4gICAgICAgICAgICBjZWxsSW5kZXg6IHJlc2l6ZVRhYmxlQ29sdW1ucy5jZWxsSW5kZXgsXG4gICAgICAgICAgICBjb2x1bW5JbmRleDogcmVzaXplVGFibGVDb2x1bW5zLmNvbHVtbkluZGV4LFxuICAgICAgICAgICAgZGlzdGFuY2U6IHJlc2l6ZVRhYmxlQ29sdW1ucy5kaXN0YW5jZSxcbiAgICAgICAgICAgIGluc2VydEluZGV4OiByZXNpemVUYWJsZUNvbHVtbnMuaW5zZXJ0SW5kZXgsXG4gICAgICAgICAgICByZXNpemVyU2lkZTogcmVzaXplVGFibGVDb2x1bW5zLnJlc2l6ZXJTaWRlLFxuICAgICAgICAgICAgcm93SW5kZXg6IHJlc2l6ZVRhYmxlQ29sdW1ucy5yb3dJbmRleFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgUmVzaXplVGFibGVDb2x1bW5zTW9kZWwoe1xuICAgICAgICAgICAgY2VsbEluZGV4OiByZXNpemVUYWJsZUNvbHVtbnMuY2VsbEluZGV4LFxuICAgICAgICAgICAgY29sdW1uSW5kZXg6IHJlc2l6ZVRhYmxlQ29sdW1ucy5jb2x1bW5JbmRleCxcbiAgICAgICAgICAgIGRpc3RhbmNlOiAtcmVzaXplVGFibGVDb2x1bW5zLmRpc3RhbmNlLFxuICAgICAgICAgICAgaW5zZXJ0SW5kZXg6IHJlc2l6ZVRhYmxlQ29sdW1ucy5pbnNlcnRJbmRleCxcbiAgICAgICAgICAgIHJlc2l6ZXJTaWRlOiByZXNpemVUYWJsZUNvbHVtbnMucmVzaXplclNpZGUsXG4gICAgICAgICAgICByb3dJbmRleDogcmVzaXplVGFibGVDb2x1bW5zLnJvd0luZGV4XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hBcHBseUltYWdlU3R5bGUocHJldmlvdXM6IEltYWdlTW9kZWwsIGN1cnJlbnQ6IEltYWdlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgQXBwbHlJbWFnZVN0eWxlTW9kZWwoeyBpbnNlcnRJbmRleDogY3VycmVudC5pbnNlcnRJbmRleCwgd2lkdGg6IGN1cnJlbnQud2lkdGgsIGhlaWdodDogY3VycmVudC5oZWlnaHQgfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IEFwcGx5SW1hZ2VTdHlsZU1vZGVsKHsgaW5zZXJ0SW5kZXg6IHByZXZpb3VzLmluc2VydEluZGV4LCB3aWR0aDogcHJldmlvdXMud2lkdGgsIGhlaWdodDogcHJldmlvdXMuaGVpZ2h0IH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hBZGROdW1iZXJpbmcoXG4gICAgICAgIHN0YXJ0SW5kZXg6IG51bWJlcixcbiAgICAgICAgZW5kSW5kZXg6IG51bWJlcixcbiAgICAgICAgbGV2ZWxzOiBOdW1iZXJpbmdMZXZlbE1vZGVsW10sXG4gICAgICAgIHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW10sXG4gICAgICAgIG51bWJlcmluZ3M6IE51bWJlcmluZ01vZGVsW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgQWRkTnVtYmVyaW5nTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCwgbGV2ZWxzIH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBSZXN0b3JlTnVtYmVyaW5nc01vZGVsKHsgcGFyYWdyYXBocywgbnVtYmVyaW5ncyB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoUmVtb3ZlTnVtYmVyaW5ncyhzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIsIG51bWJlcmluZ3M6IE51bWJlcmluZ01vZGVsW10sIHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgUmVtb3ZlTnVtYmVyaW5nc01vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc3RvcmVOdW1iZXJpbmdzTW9kZWwoeyBudW1iZXJpbmdzLCBwYXJhZ3JhcGhzIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hSZXBsYWNlKHJlc3RvcmU6IFJlc3RvcmVNb2RlbCwgcmVwbGFjZTogUmVwbGFjZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHJlc3RvcmUsIHJlcGxhY2UpO1xuICAgIH1cblxuICAgIHBvcFVuZG9PcGVyYXRpb24oKToge1xuICAgICAgICBvcGVyYXRpb246IE9wZXJhdGlvbiB8IG51bGw7XG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW107XG4gICAgICAgIGN1cnNvcjogQ3Vyc29yUGFyYWdyYXBoO1xuICAgICAgICBhbmNob3I6IEN1cnNvclBhcmFncmFwaCB8IG51bGw7XG4gICAgfSB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5zdGVwID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5zdG9yYWdlW3RoaXMuc3RlcF0udW5kbztcbiAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMuc3RvcmFnZVt0aGlzLnN0ZXBdLnRhcmdldHM7XG4gICAgICAgIGNvbnN0IGN1cnNvciA9IHRoaXMuc3RvcmFnZVt0aGlzLnN0ZXBdLmN1cnNvcjtcbiAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5zdG9yYWdlW3RoaXMuc3RlcF0uYW5jaG9yO1xuICAgICAgICB0aGlzLnN0ZXAtLTtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmhpc3RvcnlJbmZvID0gbmV3IE9wZXJhdGlvbnNIaXN0b3J5SW5mb01vZGVsKHRoaXMuc3RlcCwgdGhpcy5zdG9yYWdlLmxlbmd0aCAtIDEpO1xuICAgICAgICByZXR1cm4geyBvcGVyYXRpb24sIHRhcmdldHMsIGN1cnNvciwgYW5jaG9yIH07XG4gICAgfVxuXG4gICAgcG9wUmVkb09wZXJhdGlvbigpOiB7XG4gICAgICAgIG9wZXJhdGlvbjogT3BlcmF0aW9uIHwgbnVsbDtcbiAgICAgICAgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXTtcbiAgICAgICAgY3Vyc29yOiBDdXJzb3JQYXJhZ3JhcGg7XG4gICAgICAgIGFuY2hvcjogQ3Vyc29yUGFyYWdyYXBoIHwgbnVsbDtcbiAgICB9IHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLnN0ZXAgPj0gdGhpcy5zdG9yYWdlLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RlcCsrO1xuICAgICAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLnN0b3JhZ2VbdGhpcy5zdGVwXS5yZWRvO1xuICAgICAgICBjb25zdCB0YXJnZXRzID0gdGhpcy5zdG9yYWdlW3RoaXMuc3RlcF0udGFyZ2V0cztcbiAgICAgICAgY29uc3QgY3Vyc29yID0gdGhpcy5zdG9yYWdlW3RoaXMuc3RlcF0uY3Vyc29yO1xuICAgICAgICBjb25zdCBhbmNob3IgPSB0aGlzLnN0b3JhZ2VbdGhpcy5zdGVwXS5hbmNob3I7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5oaXN0b3J5SW5mbyA9IG5ldyBPcGVyYXRpb25zSGlzdG9yeUluZm9Nb2RlbCh0aGlzLnN0ZXAsIHRoaXMuc3RvcmFnZS5sZW5ndGggLSAxKTtcbiAgICAgICAgcmV0dXJuIHsgb3BlcmF0aW9uLCB0YXJnZXRzLCBjdXJzb3IsIGFuY2hvciB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVG9IaXN0b3J5KHVuZG9TdGVwOiBPcGVyYXRpb24sIHJlZG9TdGVwOiBPcGVyYXRpb24pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMucmVndWxhdG9yU2VydmljZS5nZXRDdXJyZW50U2Vzc2lvblRhcmdldHMoKTtcbiAgICAgICAgY29uc3QgY3Vyc29yID0gdGhpcy5yZWd1bGF0b3JTZXJ2aWNlLnNlbGVjdGlvbi5jdXJzb3I7XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHRoaXMucmVndWxhdG9yU2VydmljZS5zZWxlY3Rpb24uYW5jaG9yO1xuICAgICAgICB0aGlzLnN0ZXArKztcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNwbGljZSh0aGlzLnN0ZXAsIHRoaXMuc3RvcmFnZS5sZW5ndGgpO1xuICAgICAgICB0aGlzLnN0b3JhZ2UucHVzaCh7IHVuZG86IHVuZG9TdGVwLCByZWRvOiByZWRvU3RlcCwgdGFyZ2V0cywgY3Vyc29yLCBhbmNob3IgfSk7XG4gICAgICAgIGlmICh0aGlzLnN0b3JhZ2UubGVuZ3RoID4gdGhpcy5NQVhfSElTVE9SWSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnNwbGljZSgwLCAxKTtcbiAgICAgICAgICAgIHRoaXMuc3RlcC0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmhpc3RvcnlJbmZvID0gbmV3IE9wZXJhdGlvbnNIaXN0b3J5SW5mb01vZGVsKHRoaXMuc3RlcCwgdGhpcy5zdG9yYWdlLmxlbmd0aCAtIDEpO1xuICAgIH1cbn1cbiJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLWhpc3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvZ2FkZ2V0cy9oaXN0b3J5L29wZXJhdGlvbi1oaXN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQVVyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUUvRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFJOUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENB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UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkTnVtYmVyaW5nTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FkZC1udW1iZXJpbmcubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlFbGVtZW50U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktZWxlbWVudC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBBcHBseUltYWdlU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktaW1hZ2Utc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlQYXJhZ3JhcGhTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9hcHBseS1wYXJhZ3JhcGgtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktdGV4dC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBDdXJzb3JQYXJhZ3JhcGggfSBmcm9tICcuLi8uLi8uLi9lZGl0b3IvcG9zaXRpb25pbmcvY3Vyc29yLXBhcmFncmFwaCc7XG5pbXBvcnQgeyBDVVNUT01fRUxFTUVOVF9NQVJLRVIgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3NoYXJlZC9jdXN0b20tY29udGVudC1tYXJrZXJzLmNvbnN0JztcbmltcG9ydCB7IERlbGV0ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9kZWxldGUubW9kZWwnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VkaXRvci9pbnRlcmFjdGlvbi9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBFbGVtZW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2VsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgRm9ybWF0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2Zvcm1hdC5tb2RlbCc7XG5pbXBvcnQgeyBJbWFnZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbWFnZS5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRCcmVha01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtYnJlYWsubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0RWxlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtZWxlbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRJbWFnZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtaW1hZ2UubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0TGlua01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtbGluay5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRQYXJhZ3JhcGhNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXBhcmFncmFwaC5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRTdHlsZWRUZXh0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC1zdHlsZWQtdGV4dC5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUYWJsZUNvbHVtbnNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYmxlLWNvbHVtbnMubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYmxlLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFRhYmxlUm93c01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtdGFibGUtcm93cy5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUYWJNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYi5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUZXh0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10ZXh0Lm1vZGVsJztcbmltcG9ydCB7IE51bWJlcmluZ0xldmVsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL251bWJlcmluZy1sZXZlbC5tb2RlbCc7XG5pbXBvcnQgeyBOdW1iZXJpbmdNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvbnVtYmVyaW5nLm1vZGVsJztcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gJy4vb3BlcmF0aW9uLnR5cGUnO1xuaW1wb3J0IHsgT3BlcmF0aW9uc0hpc3RvcnlJbmZvTW9kZWwgfSBmcm9tICcuL29wZXJhdGlvbnMtaGlzdG9yeS1pbmZvLm1vZGVsJztcbmltcG9ydCB7IFBhcmFncmFwaE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgUGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFJlZ3VsYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9leGVjdXRpb24vcmVndWxhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVtb3ZlTnVtYmVyaW5nc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZW1vdmUtbnVtYmVyaW5ncy5tb2RlbCc7XG5pbXBvcnQgeyBSZW1vdmVUYWJsZUNvbHVtbnNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVtb3ZlLXRhYmxlLWNvbHVtbnMubW9kZWwnO1xuaW1wb3J0IHsgUmVtb3ZlVGFibGVSb3dzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3JlbW92ZS10YWJsZS1yb3dzLm1vZGVsJztcbmltcG9ydCB7IFJlcGxhY2VNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVwbGFjZS5tb2RlbCc7XG5pbXBvcnQgeyBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzaXplLXRhYmxlLWNvbHVtbnMubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVOdW1iZXJpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUtbnVtYmVyaW5ncy5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlUGFyYWdyYXBoU3R5bGVzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUtcGFyYWdyYXBoLXN0eWxlcy5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlVGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlVGV4dFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLXRleHQtc3R5bGVzLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFRhcmdldE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YXJnZXQubW9kZWwnO1xuaW1wb3J0IHsgVGV4dFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RleHQtc3R5bGUubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgT3BlcmF0aW9uSGlzdG9yeSB7XG4gICAgcmVhZG9ubHkgTUFYX0hJU1RPUlkgPSAxMDA7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2U6IHtcbiAgICAgICAgdW5kbzogT3BlcmF0aW9uO1xuICAgICAgICByZWRvOiBPcGVyYXRpb247XG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW107XG4gICAgICAgIGN1cnNvcjogQ3Vyc29yUGFyYWdyYXBoO1xuICAgICAgICBhbmNob3I6IEN1cnNvclBhcmFncmFwaCB8IG51bGw7XG4gICAgfVtdID0gW107XG5cbiAgICBwcml2YXRlIHN0ZXAgPSAtMTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSwgcHJpdmF0ZSByZWd1bGF0b3JTZXJ2aWNlOiBSZWd1bGF0b3JTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5oaXN0b3J5SW5mbyA9IG5ldyBPcGVyYXRpb25zSGlzdG9yeUluZm9Nb2RlbCh0aGlzLnN0ZXAsIHRoaXMuc3RvcmFnZS5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0VGV4dChpbnNlcnRJbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgSW5zZXJ0VGV4dE1vZGVsKHsgaW5zZXJ0SW5kZXgsIHRleHQgfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleDogaW5zZXJ0SW5kZXgsIGNvdW50OiB0ZXh0Lmxlbmd0aCB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0UGFyYWdyYXBoKGNvbnRlbnQ6IHN0cmluZywgbW9kZWw6IEluc2VydFBhcmFncmFwaE1vZGVsLCBwYXJhZ3JhcGhzOiBQYXJhZ3JhcGhNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYXJhZ3JhcGggPSBwYXJhZ3JhcGhzXG4gICAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5zZXJ0SW5kZXggLSBiLmluc2VydEluZGV4KVxuICAgICAgICAgICAgLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4ID49IG1vZGVsLmluc2VydEluZGV4KTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNQYXJhZ3JhcGggPSBwYXJhZ3JhcGhzXG4gICAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGIuaW5zZXJ0SW5kZXggLSBhLmluc2VydEluZGV4KVxuICAgICAgICAgICAgLmZpbmQoeCA9PiB4Lmluc2VydEluZGV4IDwgY3VycmVudFBhcmFncmFwaC5pbnNlcnRJbmRleCk7XG4gICAgICAgIGxldCBzdGFydEluZGV4ID0gbW9kZWwuaW5zZXJ0SW5kZXg7XG4gICAgICAgIGxldCBjb3VudCA9IGNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBpZiAobW9kZWwuaW5zZXJ0SW5kZXggPT09IDAgfHwgcHJldmlvdXNQYXJhZ3JhcGg/Lmluc2VydEluZGV4ID09PSBtb2RlbC5pbnNlcnRJbmRleCAtIDEpIHtcbiAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFBhcmFncmFwaC5pbnNlcnRJbmRleCA9PT0gbW9kZWwuaW5zZXJ0SW5kZXgpIHtcbiAgICAgICAgICAgIHN0YXJ0SW5kZXgrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvdW50ID0gY291bnQgKyAyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleCwgY291bnQgfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydEVsZW1lbnQobW9kZWw6IEluc2VydEVsZW1lbnRNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXg6IG1vZGVsLmVsZW1lbnQuaW5zZXJ0SW5kZXgsIGNvdW50OiBDVVNUT01fRUxFTUVOVF9NQVJLRVIubGVuZ3RoIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgbW9kZWwpO1xuICAgIH1cblxuICAgIHB1c2hJbnNlcnRCcmVhayhtb2RlbDogSW5zZXJ0QnJlYWtNb2RlbCwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXg6IG1vZGVsLmluc2VydEluZGV4LCBjb3VudCB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIG1vZGVsKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0VGFiKG1vZGVsOiBJbnNlcnRUYWJNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXg6IG1vZGVsLmluc2VydEluZGV4LCBjb3VudDogQ1VTVE9NX0VMRU1FTlRfTUFSS0VSLmxlbmd0aCB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIG1vZGVsKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0SW1hZ2UobW9kZWw6IEluc2VydEltYWdlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgRGVsZXRlTW9kZWwoeyBzdGFydEluZGV4OiBtb2RlbC5pbnNlcnRJbmRleCwgY291bnQ6IENVU1RPTV9FTEVNRU5UX01BUktFUi5sZW5ndGggfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydExpbmsobW9kZWw6IEluc2VydExpbmtNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXg6IG1vZGVsLmluc2VydEluZGV4LCBjb3VudDogbW9kZWwubGlua0RhdGFNb2RlbC50ZXh0Lmxlbmd0aCB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIG1vZGVsKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0VGFibGUobW9kZWw6IEluc2VydFRhYmxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgRGVsZXRlTW9kZWwoeyBzdGFydEluZGV4OiBtb2RlbC5pbnNlcnRJbmRleCwgY291bnQ6IG1vZGVsLmNvbnRlbnQubGVuZ3RoIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgbW9kZWwpO1xuICAgIH1cblxuICAgIHB1c2hJbnNlcnRTdHlsZWRUZXh0KGluc2VydEluZGV4OiBudW1iZXIsIHRleHQ6IHN0cmluZywgc3R5bGU6IFRleHRTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IEluc2VydFN0eWxlZFRleHRNb2RlbCh7IGluc2VydEluZGV4LCB0ZXh0LCB0ZXh0U3R5bGU6IHN0eWxlIH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXg6IGluc2VydEluZGV4LCBjb3VudDogdGV4dC5sZW5ndGggfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCByZWRvU3RlcCk7XG4gICAgfVxuXG4gICAgcHVzaERlbGV0ZShtb2RlbDogUmVzdG9yZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleDogbW9kZWwuc3RhcnRJbmRleCwgY291bnQ6IG1vZGVsLnRleHQubGVuZ3RoIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeShtb2RlbCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hBcHBseVRleHRTdHlsZShzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIsIHN0eWxlOiBUZXh0U3R5bGVNb2RlbCwgZm9ybWF0czogRm9ybWF0TW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCByZWRvU3RlcCA9IG5ldyBBcHBseVRleHRTdHlsZU1vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHRleHRTdHlsZTogc3R5bGUgfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc3RvcmVUZXh0U3R5bGVzTW9kZWwoeyBmb3JtYXRzIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hBcHBseVBhcmFncmFwaFN0eWxlKHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgc3R5bGU6IFBhcmFncmFwaFN0eWxlTW9kZWwsIHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgQXBwbHlQYXJhZ3JhcGhTdHlsZU1vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHBhcmFncmFwaFN0eWxlOiBzdHlsZSB9KTtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgUmVzdG9yZVBhcmFncmFwaFN0eWxlc01vZGVsKHsgcGFyYWdyYXBocyB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoQXBwbHlFbGVtZW50U3R5bGUocHJldmlvdXM6IEVsZW1lbnRNb2RlbCwgY3VycmVudDogRWxlbWVudE1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IEFwcGx5RWxlbWVudFN0eWxlTW9kZWwoeyBpbnNlcnRJbmRleDogY3VycmVudC5pbnNlcnRJbmRleCwgd2lkdGg6IGN1cnJlbnQud2lkdGgsIGhlaWdodDogY3VycmVudC5oZWlnaHQgfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IEFwcGx5RWxlbWVudFN0eWxlTW9kZWwoeyBpbnNlcnRJbmRleDogcHJldmlvdXMuaW5zZXJ0SW5kZXgsIHdpZHRoOiBwcmV2aW91cy53aWR0aCwgaGVpZ2h0OiBwcmV2aW91cy5oZWlnaHQgfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCByZWRvU3RlcCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydFRhYmxlUm93cyhpbnNlcnRJbmRleDogbnVtYmVyLCByb3dzQ291bnQ6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIsIHRhYmxlOiBUYWJsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9sZFRhYmxlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0YWJsZSkpO1xuICAgICAgICBjb25zdCByZWRvU3RlcCA9IG5ldyBJbnNlcnRUYWJsZVJvd3NNb2RlbCh7IGluc2VydEluZGV4LCByb3dzQ291bnQsIHRhcmdldEluZGV4LCBpbmhlcml0SW5kZXggfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc3RvcmVUYWJsZU1vZGVsKHsgaW5zZXJ0SW5kZXgsIG9sZFRhYmxlIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hJbnNlcnRUYWJsZUNvbHVtbnMoaW5zZXJ0SW5kZXg6IG51bWJlciwgY29sdW1uc0NvdW50OiBudW1iZXIsIHRhcmdldEluZGV4OiBudW1iZXIsIGluaGVyaXRJbmRleDogbnVtYmVyLCB0YWJsZTogVGFibGVNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvbGRUYWJsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGFibGUpKTtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgSW5zZXJ0VGFibGVDb2x1bW5zTW9kZWwoeyBpbnNlcnRJbmRleCwgY29sdW1uc0NvdW50LCB0YXJnZXRJbmRleCwgaW5oZXJpdEluZGV4IH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBSZXN0b3JlVGFibGVNb2RlbCh7IGluc2VydEluZGV4LCBvbGRUYWJsZSB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoUmVtb3ZlVGFibGVSb3dzKGluc2VydEluZGV4OiBudW1iZXIsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgdGFibGU6IFRhYmxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2xkVGFibGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRhYmxlKSk7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IFJlbW92ZVRhYmxlUm93c01vZGVsKHsgaW5zZXJ0SW5kZXgsIHN0YXJ0SW5kZXgsIGVuZEluZGV4IH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBSZXN0b3JlVGFibGVNb2RlbCh7IGluc2VydEluZGV4LCBvbGRUYWJsZSB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoUmVtb3ZlVGFibGVDb2x1bW5zKGluc2VydEluZGV4OiBudW1iZXIsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgdGFibGU6IFRhYmxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2xkVGFibGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRhYmxlKSk7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IFJlbW92ZVRhYmxlQ29sdW1uc01vZGVsKHsgaW5zZXJ0SW5kZXgsIHN0YXJ0SW5kZXgsIGVuZEluZGV4IH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBSZXN0b3JlVGFibGVNb2RlbCh7IGluc2VydEluZGV4LCBvbGRUYWJsZSB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoUmVzaXplVGFibGVDb2x1bW5zKHJlc2l6ZVRhYmxlQ29sdW1uczogUmVzaXplVGFibGVDb2x1bW5zTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgUmVzaXplVGFibGVDb2x1bW5zTW9kZWwoe1xuICAgICAgICAgICAgY2VsbEluZGV4OiByZXNpemVUYWJsZUNvbHVtbnMuY2VsbEluZGV4LFxuICAgICAgICAgICAgY29sdW1uSW5kZXg6IHJlc2l6ZVRhYmxlQ29sdW1ucy5jb2x1bW5JbmRleCxcbiAgICAgICAgICAgIGRpc3RhbmNlOiByZXNpemVUYWJsZUNvbHVtbnMuZGlzdGFuY2UsXG4gICAgICAgICAgICBpbnNlcnRJbmRleDogcmVzaXplVGFibGVDb2x1bW5zLmluc2VydEluZGV4LFxuICAgICAgICAgICAgcmVzaXplclNpZGU6IHJlc2l6ZVRhYmxlQ29sdW1ucy5yZXNpemVyU2lkZSxcbiAgICAgICAgICAgIHJvd0luZGV4OiByZXNpemVUYWJsZUNvbHVtbnMucm93SW5kZXhcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsKHtcbiAgICAgICAgICAgIGNlbGxJbmRleDogcmVzaXplVGFibGVDb2x1bW5zLmNlbGxJbmRleCxcbiAgICAgICAgICAgIGNvbHVtbkluZGV4OiByZXNpemVUYWJsZUNvbHVtbnMuY29sdW1uSW5kZXgsXG4gICAgICAgICAgICBkaXN0YW5jZTogLXJlc2l6ZVRhYmxlQ29sdW1ucy5kaXN0YW5jZSxcbiAgICAgICAgICAgIGluc2VydEluZGV4OiByZXNpemVUYWJsZUNvbHVtbnMuaW5zZXJ0SW5kZXgsXG4gICAgICAgICAgICByZXNpemVyU2lkZTogcmVzaXplVGFibGVDb2x1bW5zLnJlc2l6ZXJTaWRlLFxuICAgICAgICAgICAgcm93SW5kZXg6IHJlc2l6ZVRhYmxlQ29sdW1ucy5yb3dJbmRleFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoQXBwbHlJbWFnZVN0eWxlKHByZXZpb3VzOiBJbWFnZU1vZGVsLCBjdXJyZW50OiBJbWFnZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IEFwcGx5SW1hZ2VTdHlsZU1vZGVsKHsgaW5zZXJ0SW5kZXg6IGN1cnJlbnQuaW5zZXJ0SW5kZXgsIHdpZHRoOiBjdXJyZW50LndpZHRoLCBoZWlnaHQ6IGN1cnJlbnQuaGVpZ2h0IH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBBcHBseUltYWdlU3R5bGVNb2RlbCh7IGluc2VydEluZGV4OiBwcmV2aW91cy5pbnNlcnRJbmRleCwgd2lkdGg6IHByZXZpb3VzLndpZHRoLCBoZWlnaHQ6IHByZXZpb3VzLmhlaWdodCB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoQWRkTnVtYmVyaW5nKFxuICAgICAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGVuZEluZGV4OiBudW1iZXIsXG4gICAgICAgIGxldmVsczogTnVtYmVyaW5nTGV2ZWxNb2RlbFtdLFxuICAgICAgICBwYXJhZ3JhcGhzOiBQYXJhZ3JhcGhNb2RlbFtdLFxuICAgICAgICBudW1iZXJpbmdzOiBOdW1iZXJpbmdNb2RlbFtdXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IEFkZE51bWJlcmluZ01vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXgsIGxldmVscyB9KTtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgUmVzdG9yZU51bWJlcmluZ3NNb2RlbCh7IHBhcmFncmFwaHMsIG51bWJlcmluZ3MgfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCByZWRvU3RlcCk7XG4gICAgfVxuXG4gICAgcHVzaFJlbW92ZU51bWJlcmluZ3Moc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCBudW1iZXJpbmdzOiBOdW1iZXJpbmdNb2RlbFtdLCBwYXJhZ3JhcGhzOiBQYXJhZ3JhcGhNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IFJlbW92ZU51bWJlcmluZ3NNb2RlbCh7IHN0YXJ0SW5kZXgsIGVuZEluZGV4IH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBSZXN0b3JlTnVtYmVyaW5nc01vZGVsKHsgbnVtYmVyaW5ncywgcGFyYWdyYXBocyB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoUmVwbGFjZShyZXN0b3JlOiBSZXN0b3JlTW9kZWwsIHJlcGxhY2U6IFJlcGxhY2VNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeShyZXN0b3JlLCByZXBsYWNlKTtcbiAgICB9XG5cbiAgICBwb3BVbmRvT3BlcmF0aW9uKCk6IHtcbiAgICAgICAgb3BlcmF0aW9uOiBPcGVyYXRpb24gfCBudWxsO1xuICAgICAgICB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdO1xuICAgICAgICBjdXJzb3I6IEN1cnNvclBhcmFncmFwaDtcbiAgICAgICAgYW5jaG9yOiBDdXJzb3JQYXJhZ3JhcGggfCBudWxsO1xuICAgIH0gfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMuc3RvcmFnZVt0aGlzLnN0ZXBdLnVuZG87XG4gICAgICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLnN0b3JhZ2VbdGhpcy5zdGVwXS50YXJnZXRzO1xuICAgICAgICBjb25zdCBjdXJzb3IgPSB0aGlzLnN0b3JhZ2VbdGhpcy5zdGVwXS5jdXJzb3I7XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHRoaXMuc3RvcmFnZVt0aGlzLnN0ZXBdLmFuY2hvcjtcbiAgICAgICAgdGhpcy5zdGVwLS07XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5oaXN0b3J5SW5mbyA9IG5ldyBPcGVyYXRpb25zSGlzdG9yeUluZm9Nb2RlbCh0aGlzLnN0ZXAsIHRoaXMuc3RvcmFnZS5sZW5ndGggLSAxKTtcbiAgICAgICAgcmV0dXJuIHsgb3BlcmF0aW9uLCB0YXJnZXRzLCBjdXJzb3IsIGFuY2hvciB9O1xuICAgIH1cblxuICAgIHBvcFJlZG9PcGVyYXRpb24oKToge1xuICAgICAgICBvcGVyYXRpb246IE9wZXJhdGlvbiB8IG51bGw7XG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW107XG4gICAgICAgIGN1cnNvcjogQ3Vyc29yUGFyYWdyYXBoO1xuICAgICAgICBhbmNob3I6IEN1cnNvclBhcmFncmFwaCB8IG51bGw7XG4gICAgfSB8IG51bGwge1xuICAgICAgICBpZiAodGhpcy5zdGVwID49IHRoaXMuc3RvcmFnZS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0ZXArKztcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5zdG9yYWdlW3RoaXMuc3RlcF0ucmVkbztcbiAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHRoaXMuc3RvcmFnZVt0aGlzLnN0ZXBdLnRhcmdldHM7XG4gICAgICAgIGNvbnN0IGN1cnNvciA9IHRoaXMuc3RvcmFnZVt0aGlzLnN0ZXBdLmN1cnNvcjtcbiAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5zdG9yYWdlW3RoaXMuc3RlcF0uYW5jaG9yO1xuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuaGlzdG9yeUluZm8gPSBuZXcgT3BlcmF0aW9uc0hpc3RvcnlJbmZvTW9kZWwodGhpcy5zdGVwLCB0aGlzLnN0b3JhZ2UubGVuZ3RoIC0gMSk7XG4gICAgICAgIHJldHVybiB7IG9wZXJhdGlvbiwgdGFyZ2V0cywgY3Vyc29yLCBhbmNob3IgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFRvSGlzdG9yeSh1bmRvU3RlcDogT3BlcmF0aW9uLCByZWRvU3RlcDogT3BlcmF0aW9uKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLnJlZ3VsYXRvclNlcnZpY2UuZ2V0Q3VycmVudFNlc3Npb25UYXJnZXRzKCk7XG4gICAgICAgIGNvbnN0IGN1cnNvciA9IHRoaXMucmVndWxhdG9yU2VydmljZS5zZWxlY3Rpb24uY3Vyc29yO1xuICAgICAgICBjb25zdCBhbmNob3IgPSB0aGlzLnJlZ3VsYXRvclNlcnZpY2Uuc2VsZWN0aW9uLmFuY2hvcjtcbiAgICAgICAgdGhpcy5zdGVwKys7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zcGxpY2UodGhpcy5zdGVwLCB0aGlzLnN0b3JhZ2UubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnB1c2goeyB1bmRvOiB1bmRvU3RlcCwgcmVkbzogcmVkb1N0ZXAsIHRhcmdldHMsIGN1cnNvciwgYW5jaG9yIH0pO1xuICAgICAgICBpZiAodGhpcy5zdG9yYWdlLmxlbmd0aCA+IHRoaXMuTUFYX0hJU1RPUlkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zcGxpY2UoMCwgMSk7XG4gICAgICAgICAgICB0aGlzLnN0ZXAtLTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5oaXN0b3J5SW5mbyA9IG5ldyBPcGVyYXRpb25zSGlzdG9yeUluZm9Nb2RlbCh0aGlzLnN0ZXAsIHRoaXMuc3RvcmFnZS5sZW5ndGggLSAxKTtcbiAgICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  export class ContentOperationsHelper {
2
- static removeContent(content, startIndex, endIndex) {
3
- return `${content.slice(0, startIndex)}${content.slice(endIndex + 1, content.length)}`;
2
+ static removeContent(content, startIndex, count) {
3
+ return `${content.slice(0, startIndex)}${content.slice(startIndex + count, content.length)}`;
4
4
  }
5
5
  static insertContent(content, text, index) {
6
6
  const before = content.slice(0, index);
@@ -8,8 +8,8 @@ export class ContentOperationsHelper {
8
8
  return `${before}${text}${after}`;
9
9
  }
10
10
  static replaceContent(content, startIndex, endIndex, text) {
11
- const reduced = this.removeContent(content, startIndex, endIndex);
11
+ const reduced = this.removeContent(content, startIndex, endIndex - startIndex + 1);
12
12
  return this.insertContent(reduced, text, startIndex);
13
13
  }
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1vcGVyYXRpb25zLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9vcGVyYXRpb25zL2hlbHBlcnMvY29udGVudC1vcGVyYXRpb25zLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBZSxFQUFFLFVBQWtCLEVBQUUsUUFBZ0I7UUFDdEUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUMzRixDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFlLEVBQUUsSUFBWSxFQUFFLEtBQWE7UUFDN0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQWUsRUFBRSxVQUFrQixFQUFFLFFBQWdCLEVBQUUsSUFBWTtRQUNyRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEUsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIENvbnRlbnRPcGVyYXRpb25zSGVscGVyIHtcbiAgICBzdGF0aWMgcmVtb3ZlQ29udGVudChjb250ZW50OiBzdHJpbmcsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtjb250ZW50LnNsaWNlKDAsIHN0YXJ0SW5kZXgpfSR7Y29udGVudC5zbGljZShlbmRJbmRleCArIDEsIGNvbnRlbnQubGVuZ3RoKX1gO1xuICAgIH1cblxuICAgIHN0YXRpYyBpbnNlcnRDb250ZW50KGNvbnRlbnQ6IHN0cmluZywgdGV4dDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgYmVmb3JlID0gY29udGVudC5zbGljZSgwLCBpbmRleCk7XG4gICAgICAgIGNvbnN0IGFmdGVyID0gY29udGVudC5zbGljZShpbmRleCwgY29udGVudC5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gYCR7YmVmb3JlfSR7dGV4dH0ke2FmdGVyfWA7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlcGxhY2VDb250ZW50KGNvbnRlbnQ6IHN0cmluZywgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByZWR1Y2VkID0gdGhpcy5yZW1vdmVDb250ZW50KGNvbnRlbnQsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0Q29udGVudChyZWR1Y2VkLCB0ZXh0LCBzdGFydEluZGV4KTtcbiAgICB9XG59XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1vcGVyYXRpb25zLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2VkaXRvci9vcGVyYXRpb25zL2hlbHBlcnMvY29udGVudC1vcGVyYXRpb25zLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBZSxFQUFFLFVBQWtCLEVBQUUsS0FBYTtRQUNuRSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ2pHLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQWUsRUFBRSxJQUFZLEVBQUUsS0FBYTtRQUM3RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBZSxFQUFFLFVBQWtCLEVBQUUsUUFBZ0IsRUFBRSxJQUFZO1FBQ3JGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25GLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb250ZW50T3BlcmF0aW9uc0hlbHBlciB7XG4gICAgc3RhdGljIHJlbW92ZUNvbnRlbnQoY29udGVudDogc3RyaW5nLCBzdGFydEluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7Y29udGVudC5zbGljZSgwLCBzdGFydEluZGV4KX0ke2NvbnRlbnQuc2xpY2Uoc3RhcnRJbmRleCArIGNvdW50LCBjb250ZW50Lmxlbmd0aCl9YDtcbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0Q29udGVudChjb250ZW50OiBzdHJpbmcsIHRleHQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGJlZm9yZSA9IGNvbnRlbnQuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICBjb25zdCBhZnRlciA9IGNvbnRlbnQuc2xpY2UoaW5kZXgsIGNvbnRlbnQubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGAke2JlZm9yZX0ke3RleHR9JHthZnRlcn1gO1xuICAgIH1cblxuICAgIHN0YXRpYyByZXBsYWNlQ29udGVudChjb250ZW50OiBzdHJpbmcsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVkdWNlZCA9IHRoaXMucmVtb3ZlQ29udGVudChjb250ZW50LCBzdGFydEluZGV4LCBlbmRJbmRleCAtIHN0YXJ0SW5kZXggKyAxKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0Q29udGVudChyZWR1Y2VkLCB0ZXh0LCBzdGFydEluZGV4KTtcbiAgICB9XG59XG4iXX0=