@colijnit/sharedcomponents 1.0.70 → 253.1.1

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 (88) hide show
  1. package/bundles/colijnit-sharedcomponents.umd.js +707 -181
  2. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
  3. package/colijnit-sharedcomponents.d.ts +2 -0
  4. package/colijnit-sharedcomponents.metadata.json +1 -1
  5. package/esm2015/colijnit-sharedcomponents.js +3 -1
  6. package/esm2015/lib/businessobject/co-document-right.bo.js +1 -1
  7. package/esm2015/lib/components/activity-overview-component/component-activity-overview.component.js +8 -7
  8. package/esm2015/lib/components/activity-overview-component/components/base-activity-overview.component.js +15 -21
  9. package/esm2015/lib/components/image-display/image-display.component.js +7 -7
  10. package/esm2015/lib/components/modify-task-form/components/base-activity-summary.component.js +8 -10
  11. package/esm2015/lib/components/modify-task-form/components/creation-summary-block/creation-summary-block.component.js +2 -2
  12. package/esm2015/lib/components/modify-task-form/components/executive-summary-block/executive-summary-block.component.js +5 -5
  13. package/esm2015/lib/components/modify-task-form/components/notification-summary-block/notification-summary-block.component.js +2 -2
  14. package/esm2015/lib/components/modify-task-form/components/status-summary-block/status-summary-block.component.js +7 -4
  15. package/esm2015/lib/components/modify-task-form/components/task-details/task-details.component.js +7 -4
  16. package/esm2015/lib/components/modify-task-form/modify-task-form.component.js +39 -13
  17. package/esm2015/lib/components/modify-task-form/modify-task-form.module.js +10 -3
  18. package/esm2015/lib/components/open-activity-list/component-activity-list.component.js +42 -57
  19. package/esm2015/lib/components/open-activity-list/components/base-open-activity-list.component.js +5 -3
  20. package/esm2015/lib/components/simple-tags/simple-tags.component.js +5 -147
  21. package/esm2015/lib/components/simple-tags/simple-tags.module.js +4 -2
  22. package/esm2015/lib/components/simple-tags-form/simple-tags-form.component.js +196 -0
  23. package/esm2015/lib/components/simple-tags-form/simple-tags-form.module.js +26 -0
  24. package/esm2015/lib/components/stock/components/stock-location/components/stock-location-popup/stock-location-popup.component.js +3 -3
  25. package/esm2015/lib/components/stock/components/stock-location/stock-location.component.js +28 -2
  26. package/esm2015/lib/components/stock/localization/translation.js +3 -1
  27. package/esm2015/lib/components/stock/stock-tabs/stock-tabs.component.js +7 -2
  28. package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +144 -85
  29. package/esm2015/lib/components/stock/stock.component.js +11 -42
  30. package/esm2015/lib/components/stock/stock.module.js +4 -3
  31. package/esm2015/lib/components/task-modifyer/task-modifier.component.js +9 -9
  32. package/esm2015/lib/components/workflow-info-tiles/components/workflow-info-tile.component.js +45 -0
  33. package/esm2015/lib/components/workflow-info-tiles/components/workflow-info-tile.module.js +22 -0
  34. package/esm2015/lib/components/workflow-info-tiles/workflow-info-tiles.component.js +55 -0
  35. package/esm2015/lib/components/workflow-info-tiles/workflow-info-tiles.module.js +22 -0
  36. package/esm2015/lib/interface/operation-callback-simple-function.js +1 -1
  37. package/esm2015/lib/service/shared-connector.service.js +93 -1
  38. package/esm2015/lib/service/shared.service.js +44 -1
  39. package/esm2015/public-api.js +5 -1
  40. package/fesm2015/colijnit-sharedcomponents.js +759 -353
  41. package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
  42. package/lib/components/activity-overview-component/component-activity-overview.component.d.ts +3 -1
  43. package/lib/components/activity-overview-component/components/base-activity-overview.component.d.ts +3 -8
  44. package/lib/components/modify-task-form/components/base-activity-summary.component.d.ts +3 -4
  45. package/lib/components/modify-task-form/components/executive-summary-block/executive-summary-block.component.d.ts +2 -2
  46. package/lib/components/modify-task-form/components/status-summary-block/status-summary-block.component.d.ts +3 -1
  47. package/lib/components/modify-task-form/components/task-details/task-details.component.d.ts +3 -1
  48. package/lib/components/modify-task-form/modify-task-form.component.d.ts +9 -4
  49. package/lib/components/modify-task-form/style/_layout.scss +4 -0
  50. package/lib/components/open-activity-list/component-activity-list.component.d.ts +9 -11
  51. package/lib/components/open-activity-list/components/base-open-activity-list.component.d.ts +2 -0
  52. package/lib/components/simple-tags/simple-tags.component.d.ts +1 -8
  53. package/lib/components/simple-tags-form/simple-tags-form.component.d.ts +29 -0
  54. package/lib/components/simple-tags-form/simple-tags-form.module.d.ts +2 -0
  55. package/lib/components/simple-tags-form/style/_layout.scss +257 -0
  56. package/lib/components/simple-tags-form/style/_material-definition.scss +39 -0
  57. package/lib/components/simple-tags-form/style/_theme.scss +4 -0
  58. package/lib/components/simple-tags-form/style/material.scss +4 -0
  59. package/lib/components/stock/components/stock-location/stock-location.component.d.ts +7 -1
  60. package/lib/components/stock/localization/translation.d.ts +2 -0
  61. package/lib/components/stock/stock-tabs/stock-tabs.component.d.ts +2 -0
  62. package/lib/components/stock/stock-transfer/stock-transfer.component.d.ts +19 -6
  63. package/lib/components/stock/stock.component.d.ts +3 -0
  64. package/lib/components/stock/style/_layout.scss +64 -31
  65. package/lib/components/task-modifyer/task-modifier.component.d.ts +3 -5
  66. package/lib/components/workflow-info-tiles/components/style/_layout.scss +49 -0
  67. package/lib/components/workflow-info-tiles/components/style/_material-definition.scss +0 -0
  68. package/lib/components/workflow-info-tiles/components/style/_theme.scss +4 -0
  69. package/lib/components/workflow-info-tiles/components/style/material.scss +4 -0
  70. package/lib/components/workflow-info-tiles/components/workflow-info-tile.component.d.ts +15 -0
  71. package/lib/components/workflow-info-tiles/components/workflow-info-tile.module.d.ts +2 -0
  72. package/lib/components/workflow-info-tiles/style/_layout.scss +16 -0
  73. package/lib/components/workflow-info-tiles/style/_material-definition.scss +0 -0
  74. package/lib/components/workflow-info-tiles/style/_theme.scss +4 -0
  75. package/lib/components/workflow-info-tiles/style/material.scss +4 -0
  76. package/lib/components/workflow-info-tiles/workflow-info-tiles.component.d.ts +21 -0
  77. package/lib/components/workflow-info-tiles/workflow-info-tiles.module.d.ts +2 -0
  78. package/lib/service/shared-connector.service.d.ts +10 -0
  79. package/lib/service/shared.service.d.ts +12 -0
  80. package/package.json +7 -6
  81. package/public-api.d.ts +4 -0
  82. package/3rdpartylicenses.txt +0 -1203
  83. package/favicon.ico +0 -0
  84. package/index.html +0 -12
  85. package/main.36b466467ac98ce720f9.js +0 -1
  86. package/polyfills.907fe9d1887c5de17993.js +0 -1
  87. package/runtime.8aac21847ed3d3829cca.js +0 -1
  88. package/styles.6375d1d30814ecba5d0c.css +0 -1
@@ -1,20 +1,20 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
2
  import { Component, EventEmitter, forwardRef, HostBinding, Input, Output } from "@angular/core";
3
3
  import { Activity } from "@colijnit/mainapi/build/model/activity.bo";
4
- import { Icon } from "../../enum/icon.enum";
5
- import { FormMasterService, SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME } from "@colijnit/corecomponents_v12";
4
+ import { FormMasterService, IconCacheService, SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME } from "@colijnit/corecomponents_v12";
6
5
  import { TableName } from "@colijnit/mainapi/build/enum/table-name.enum";
7
6
  import { BusinessObjectFactory } from "@colijnit/ioneconnector/build/service/business-object-factory";
8
7
  import { InputBoolean } from "../../decorator/input-boolean.decorator";
9
8
  import { SharedService } from "../../service/shared.service";
9
+ import { TagCategory } from "@colijnit/mainapi/build/enum/tab-category.enum";
10
10
  export class ModifyTaskFormComponent {
11
- constructor(_boFactory, sharedService
11
+ constructor(_boFactory, sharedService, iconCacheService
12
12
  //private _mediaMonitor: MediaMonitorService,
13
13
  /*private _activityService: ActivityService*/
14
14
  ) {
15
15
  this._boFactory = _boFactory;
16
16
  this.sharedService = sharedService;
17
- this.Icon = Icon;
17
+ this.iconCacheService = iconCacheService;
18
18
  //public readonly TagCategory: typeof TagCategory = TagCategory;
19
19
  this.TableNames = TableName;
20
20
  this.readonly = false;
@@ -26,6 +26,7 @@ export class ModifyTaskFormComponent {
26
26
  this.activities = [];
27
27
  this.table = TableName.Tasks;
28
28
  this.expandActivities = false;
29
+ this.showTagPopup = false;
29
30
  }
30
31
  /* @ViewChild(ActivityActivitiesComponent, { static: true })
31
32
  public activityActivities: ActivityActivitiesComponent;*/
@@ -54,6 +55,7 @@ export class ModifyTaskFormComponent {
54
55
  }
55
56
  ngOnInit() {
56
57
  this._getActivities();
58
+ this._getTags();
57
59
  }
58
60
  showContent(menu) {
59
61
  this.selectedMenu = menu;
@@ -91,6 +93,13 @@ export class ModifyTaskFormComponent {
91
93
  this.expandActivities = true;
92
94
  this.showWorkLog.emit();
93
95
  }
96
+ handleEditTags() {
97
+ this._getTags();
98
+ this.showTagPopup = true;
99
+ }
100
+ handleSaveTags(tags) {
101
+ this.activity.task.tags = tags;
102
+ }
94
103
  _updateTaskObject(activity, prop) {
95
104
  const cloneActivity = this._boFactory.makeWithRawBackendData(Activity, activity);
96
105
  if (cloneActivity.isNew) {
@@ -115,6 +124,20 @@ export class ModifyTaskFormComponent {
115
124
  this.activities = yield this.sharedService.getActivities(this.table, this.key.toString());
116
125
  });
117
126
  }
127
+ _getTags() {
128
+ return __awaiter(this, void 0, void 0, function* () {
129
+ this.allTags = yield this.sharedService.getTagsFullTree(TagCategory.tasks, true);
130
+ /*if (!this.key) {
131
+ return;
132
+ } else {
133
+ this.editingTags = await this.sharedService.getJoinedTags(this.table, this.key.toString());
134
+ }*/ /*if (!this.key) {
135
+ return;
136
+ } else {
137
+ this.editingTags = await this.sharedService.getJoinedTags(this.table, this.key.toString());
138
+ }*/
139
+ });
140
+ }
118
141
  }
119
142
  ModifyTaskFormComponent.decorators = [
120
143
  { type: Component, args: [{
@@ -216,15 +239,17 @@ ModifyTaskFormComponent.decorators = [
216
239
  (activityChange)="activityChange.emit($event)" noBorder
217
240
  ></co-notification-summary-block>
218
241
 
219
- <!--TODO implement tags here-->
220
- <!--<tags
221
- [(joinedTags)]="activity.task.tags"
222
- [readonly]="readonly"
223
- [tagCategory]="TagCategory.tasks"
224
- [collapseable]="false"
225
- ></tags>-->
242
+ <div class="edit-tags-wrapper">
243
+ <co-simple-tags-form [tags]="allTags"
244
+ [linkedTags]="activity.task.tags">
245
+ </co-simple-tags-form>
246
+ </div>
247
+ <div class="transaction-tag-wrapper" *ngFor="let tag of activity.task.tags">
248
+ <div class="tag" [textContent]="tag.description"></div>
249
+ </div>
226
250
  </div>
227
251
  </div>
252
+
228
253
  </div>
229
254
  `,
230
255
  providers: [
@@ -238,7 +263,8 @@ ModifyTaskFormComponent.decorators = [
238
263
  ];
239
264
  ModifyTaskFormComponent.ctorParameters = () => [
240
265
  { type: BusinessObjectFactory },
241
- { type: SharedService }
266
+ { type: SharedService },
267
+ { type: IconCacheService }
242
268
  ];
243
269
  ModifyTaskFormComponent.propDecorators = {
244
270
  activity: [{ type: Input }],
@@ -255,4 +281,4 @@ ModifyTaskFormComponent.propDecorators = {
255
281
  __decorate([
256
282
  InputBoolean()
257
283
  ], ModifyTaskFormComponent.prototype, "forceReadonly", null);
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZ5LXRhc2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tb2RpZnktdGFzay1mb3JtL21vZGlmeS10YXNrLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLDhDQUE4QyxFQUUvQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUd2RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBd0gzRCxNQUFNLE9BQU8sdUJBQXVCO0lBaUZsQyxZQUNVLFVBQWlDLEVBQ2pDLGFBQTRCO0lBQ3BDLDZDQUE2QztJQUM3Qyw2Q0FBNkM7O1FBSHJDLGVBQVUsR0FBVixVQUFVLENBQXVCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBakZ0QixTQUFJLEdBQWdCLElBQUksQ0FBQztRQUN6QyxnRUFBZ0U7UUFDaEQsZUFBVSxHQUFxQixTQUFTLENBQUM7UUE0QmxELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFZOUIsbUJBQWMsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUd0RSxpQkFBWSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBR2xFLGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFM0QsaUJBQVksR0FBVyxlQUFlLENBQUE7UUFDdEMsZUFBVSxHQUFlLEVBQUUsQ0FBQztRQUM1QixVQUFLLEdBQWMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUVuQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUE0QnpDLENBQUM7SUFqRkQ7OERBQzBEO0lBRTFELElBQ1csUUFBUSxDQUFDLEtBQWU7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFHTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxZQUFZOztRQUNyQixPQUFPLENBQUMsQ0FBQSxNQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxJQUFJLDBDQUFFLFNBQVMsMENBQUUsTUFBTSxJQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFhRCxJQUFXLGFBQWEsQ0FBQyxLQUFjO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFnQ00sa0JBQWtCLENBQUMsSUFBa0I7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0saUJBQWlCLENBQUMsR0FBZTtRQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFVTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBWTtRQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZDs7O2VBR0c7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxRQUFrQjtRQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUUsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQ25DO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhO0lBQzNELENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxRQUFrQjtRQUM1QyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqRDthQUFNLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLFFBQWtCLEVBQUUsSUFBWTtRQUN4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqRixJQUFLLGFBQTBCLENBQUMsS0FBSyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztTQUMxRDthQUFNO1lBQ0wsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQy9ELE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzRCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUM3RDtTQUNGO1FBQ0QsUUFBUSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUIsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVhLGNBQWM7O1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNiLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM1RixDQUFDO0tBQUE7OztZQS9RRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJHVDtnQkFDRCxTQUFTLEVBQUU7b0JBQ1QsaUJBQWlCO29CQUNqQjt3QkFDRSxPQUFPLEVBQUUsOENBQThDO3dCQUN2RCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO3FCQUN2RDtpQkFDRjthQUNGOzs7WUF6SE8scUJBQXFCO1lBRXJCLGFBQWE7Ozt1QkFpSWxCLEtBQUs7d0JBTUwsV0FBVyxTQUFDLDJCQUEyQjtzQ0FhdkMsS0FBSzt1QkFHTCxLQUFLOzJCQUdMLEtBQUs7NEJBR0wsS0FBSztxQkFNTCxXQUFXLFNBQUMsY0FBYzs2QkFHMUIsTUFBTTsyQkFHTixNQUFNOzBCQUdOLE1BQU07O0FBYlA7SUFEQyxZQUFZLEVBQUU7NERBR2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0FjdGl2aXR5fSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvYWN0aXZpdHkuYm9cIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtcclxuICBGb3JtTWFzdGVyU2VydmljZSxcclxuICBTQ1JFRU5fQ09ORklHX0FEQVBURVJfQ09NUE9ORU5UX0lOVEVSRkFDRV9OQU1FLFxyXG4gIFNjcmVlbkNvbmZpZ0FkYXB0ZXJDb21wb25lbnRcclxufSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge1RhYmxlTmFtZX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vdGFibGUtbmFtZS5lbnVtXCI7XHJcbmltcG9ydCB7Q29Eb2N1bWVudH0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvY3VtZW50XCI7XHJcbmltcG9ydCB7QWN0aXZpdGllc1Rhc2tDb25maWdOYW1lc30gZnJvbSBcIi4uLy4uL2ludGVyZmFjZS9hY3Rpdml0aWVzLXRhc2stY29uZmlnLW5hbWVzXCI7XHJcbmltcG9ydCB7QnVzaW5lc3NPYmplY3RGYWN0b3J5fSBmcm9tIFwiQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvc2VydmljZS9idXNpbmVzcy1vYmplY3QtZmFjdG9yeVwiO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbn0gZnJvbSBcIi4uLy4uL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvclwiO1xyXG5pbXBvcnQge1NoYXJlZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlL3NoYXJlZC5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1tb2RpZnktdGFzay1mb3JtXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RpZnktdGFzay1oZWFkZXItd3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RpZnktdGFzay1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlci1tZW51XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkTWVudSA9PT0gJ2NvbnRlbnQtbWVudTEnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiJ1RBU0tfREVUQUlMUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dDb250ZW50KCdjb250ZW50LW1lbnUxJylcIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlci1tZW51XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRNZW51ID09PSAnY29udGVudC1tZW51MidcIlxyXG4gICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIidUQVNLX0lORk9STUFUSU9OJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93Q29udGVudCgnY29udGVudC1tZW51MicpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItbWVudVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkTWVudSA9PT0gJ2NvbnRlbnQtbWVudTMnXCJcclxuICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCInUExBTk5JTkcnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dDb250ZW50KCdjb250ZW50LW1lbnUzJylcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1tZW51LXdyYXBwZXIgbmFycm93LXNjcm9sbGJhclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LW1lbnVcIiBbaGlkZGVuXT1cInNlbGVjdGVkTWVudSAhPT0gJ2NvbnRlbnQtbWVudTEnXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1yb3ctd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgPGNvLXRhc2stZGV0YWlscyBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmxlXT1cIlRhYmxlTmFtZXMuVGFza3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tleV09XCJrZXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhhY3Rpdml0eSldPVwiYWN0aXZpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5Q2hhbmdlKT1cImFjdGl2aXR5Q2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2hvd1dvcmtMb2cpPVwiaGFuZGxlU2hvd1dvcmtMb3coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub0JvcmRlclxyXG4gICAgICAgICAgICAgID48L2NvLXRhc2stZGV0YWlscz5cclxuICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW52b2ljZS1jaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ01BUktFRCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJhY3Rpdml0eS50YXNrLmlzSW52b2ljZWRcIj5cclxuICAgICAgICAgICAgICA8L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXJrZWQtdGltZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiYWN0aXZpdHkudGFzay53b3JrTWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidUSU1FUkVHSVNUUkFUSU9OX01BTkRBVE9SWScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgIG5vTW9kdWxlU2VydmljZT5cclxuICAgICAgICAgICAgICAgIDwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFRPRE8gaW1wbGVtZW50IGJhY2sgbGF0ZXItLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGFycm93LWxpbmsgKm5nSWY9XCIhcmVhZG9ubHlcIiBsYWJlbD1cIlJFR0lTVEVSX1RJTUVfSEVSRVwiIChjbGljayk9XCJoYW5kbGVSZWdpc3RlcldvcmsoKVwiPjwvYXJyb3ctbGluaz4tLT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpdml0eS1jb250ZW50LWhlYWRlclwiIFt0ZXh0Q29udGVudF09XCInUEVSU09OUycgfCBsb2NhbGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxjby1leGVjdXRpdmUtc3VtbWFyeS1ibG9ja1xyXG4gICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgIFsoYWN0aXZpdHkpXT1cImFjdGl2aXR5XCJcclxuICAgICAgICAgICAgICAgIChhY3Rpdml0eUNoYW5nZSk9XCJhY3Rpdml0eUNoYW5nZS5lbWl0KCRldmVudClcIiBub0JvcmRlclxyXG4gICAgICAgICAgICAgID48L2NvLWV4ZWN1dGl2ZS1zdW1tYXJ5LWJsb2NrPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tVE9ETyBpbXBsZW1lbnQgbmV3IGZpbGUgdXBsb2FkIGhlcmUtLT5cclxuICAgICAgICAgICAgICA8IS0tIDxhY3Rpdml0eS1hdHRhY2htZW50c1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFsoYWN0aXZpdHkpXT1cImFjdGl2aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtrZXldPVwiYWN0aXZpdHkudGFzay5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW25vRm9yY2VJbnB1dF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZpdHlDaGFuZ2UpPVwiYWN0aXZpdHlDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBub0JvcmRlclxyXG4gICAgICAgICAgICAgICA+PC9hY3Rpdml0eS1hdHRhY2htZW50cz4tLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpdml0aWVzLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGNvLWFjdGl2aXR5LWxpc3QgW2FjdGl2aXRpZXNdPVwiYWN0aXZpdGllc1wiPlxyXG5cclxuICAgICAgICAgICAgPC9jby1hY3Rpdml0eS1saXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbWVudVwiIFtoaWRkZW5dPVwic2VsZWN0ZWRNZW51ICE9PSAnY29udGVudC1tZW51MidcIj5cclxuICAgICAgICAgIDxjby1zdGF0dXMtc3VtbWFyeS1ibG9ja1xyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICBbKGFjdGl2aXR5KV09XCJhY3Rpdml0eVwiXHJcbiAgICAgICAgICAgIFt0YWJsZV09XCJUYWJsZU5hbWVzLlRhc2tzXCJcclxuICAgICAgICAgICAgW2tleV09XCJrZXlcIlxyXG4gICAgICAgICAgICAoYWN0aXZpdHlDaGFuZ2UpPVwiYWN0aXZpdHlDaGFuZ2UuZW1pdCgkZXZlbnQpXCIgbm9Cb3JkZXJcclxuICAgICAgICAgID48L2NvLXN0YXR1cy1zdW1tYXJ5LWJsb2NrPlxyXG4gICAgICAgICAgPGNvLWNyZWF0aW9uLXN1bW1hcnktYmxvY2tcclxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgWyhhY3Rpdml0eSldPVwiYWN0aXZpdHlcIlxyXG4gICAgICAgICAgICAoYWN0aXZpdHlDaGFuZ2UpPVwiYWN0aXZpdHlDaGFuZ2UuZW1pdCgkZXZlbnQpXCIgbm9Cb3JkZXJcclxuICAgICAgICAgID48L2NvLWNyZWF0aW9uLXN1bW1hcnktYmxvY2s+XHJcbiAgICAgICAgICA8IS0tPHBsYW5uaW5nLXN1bW1hcnktYmxvY2tcclxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgWyhhY3Rpdml0eSldPVwiYWN0aXZpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAoYWN0aXZpdHlDaGFuZ2UpPVwiYWN0aXZpdHlDaGFuZ2UuZW1pdCgkZXZlbnQpXCIgbm9Cb3JkZXJcclxuICAgICAgICAgID48L3BsYW5uaW5nLXN1bW1hcnktYmxvY2s+LS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbWVudVwiIFtoaWRkZW5dPVwic2VsZWN0ZWRNZW51ICE9PSAnY29udGVudC1tZW51MydcIj5cclxuICAgICAgICAgIDxjby1ub3RpZmljYXRpb24tc3VtbWFyeS1ibG9ja1xyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICBbKGFjdGl2aXR5KV09XCJhY3Rpdml0eVwiXHJcbiAgICAgICAgICAgIChhY3Rpdml0eUNoYW5nZSk9XCJhY3Rpdml0eUNoYW5nZS5lbWl0KCRldmVudClcIiBub0JvcmRlclxyXG4gICAgICAgICAgPjwvY28tbm90aWZpY2F0aW9uLXN1bW1hcnktYmxvY2s+XHJcblxyXG4gICAgICAgICAgPCEtLVRPRE8gaW1wbGVtZW50IHRhZ3MgaGVyZS0tPlxyXG4gICAgICAgICAgPCEtLTx0YWdzXHJcbiAgICAgICAgICAgICAgICAgIFsoam9pbmVkVGFncyldPVwiYWN0aXZpdHkudGFzay50YWdzXCJcclxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgW3RhZ0NhdGVnb3J5XT1cIlRhZ0NhdGVnb3J5LnRhc2tzXCJcclxuICAgICAgICAgICAgICAgICAgW2NvbGxhcHNlYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICA+PC90YWdzPi0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBGb3JtTWFzdGVyU2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9kaWZ5VGFza0Zvcm1Db21wb25lbnQpXHJcbiAgICB9XHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGlmeVRhc2tGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50IHtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IEljb246IHR5cGVvZiBJY29uID0gSWNvbjtcclxuICAvL3B1YmxpYyByZWFkb25seSBUYWdDYXRlZ29yeTogdHlwZW9mIFRhZ0NhdGVnb3J5ID0gVGFnQ2F0ZWdvcnk7XHJcbiAgcHVibGljIHJlYWRvbmx5IFRhYmxlTmFtZXM6IHR5cGVvZiBUYWJsZU5hbWUgPSBUYWJsZU5hbWU7XHJcblxyXG4gIC8qIEBWaWV3Q2hpbGQoQWN0aXZpdHlBY3Rpdml0aWVzQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICBwdWJsaWMgYWN0aXZpdHlBY3Rpdml0aWVzOiBBY3Rpdml0eUFjdGl2aXRpZXNDb21wb25lbnQ7Ki9cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGFjdGl2aXR5KHZhbHVlOiBBY3Rpdml0eSkge1xyXG4gICAgdGhpcy5fYWN0aXZpdHkgPSB2YWx1ZTtcclxuICAgIHRoaXMua2V5ID0gdGhpcy5fYWN0aXZpdHkudGFzay50YXNrSWQgKyBcIlwiO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tbW9kaWZ5LXRhc2stZm9ybVwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYWN0aXZpdHkoKTogQWN0aXZpdHkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2aXR5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoYXNEb2N1bWVudHMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKHRoaXMuX2FjdGl2aXR5Py50YXNrPy5kb2N1bWVudHM/Lmxlbmd0aCA+IDApO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWN0aXZpdHlUYXNrQ29uZmlnTmFtZXM6IEFjdGl2aXRpZXNUYXNrQ29uZmlnTmFtZXM7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBvcHVwQ29udGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBzZXQgZm9yY2VSZWFkb25seSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5yZWFkb25seSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaGlkZGVuXCIpXHJcbiAgcHVibGljIGhpZGRlbjogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGFjdGl2aXR5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8QWN0aXZpdHk+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpdml0eT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2hvd1dvcmtMb2c6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIHNlbGVjdGVkTWVudTogc3RyaW5nID0gJ2NvbnRlbnQtbWVudTEnXHJcbiAgcHVibGljIGFjdGl2aXRpZXM6IEFjdGl2aXR5W10gPSBbXTtcclxuICBwdWJsaWMgdGFibGU6IFRhYmxlTmFtZSA9IFRhYmxlTmFtZS5UYXNrcztcclxuICBwdWJsaWMga2V5OiBzdHJpbmc7XHJcbiAgcHVibGljIGV4cGFuZEFjdGl2aXRpZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIG9iamVjdENvbmZpZ05hbWU6IHN0cmluZztcclxuICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIG1heExlbmd0aDogbnVtYmVyO1xyXG4gIHB1YmxpYyBkZWNpbWFsczogbnVtYmVyO1xyXG4gIHB1YmxpYyByZWRFcnJvckJhY2tncm91bmQ6IGJvb2xlYW47XHJcblxyXG4gIC8qcHVibGljIGdldCBtb2JpbGUoKTogYm9vbGVhbiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9tZWRpYU1vbml0b3IuaXNFeHRyYVNtYWxsKCk7XHJcbiAgfSovXHJcblxyXG4gIHByaXZhdGUgX2FjdGl2aXR5OiBBY3Rpdml0eTtcclxuXHJcbiAgcHVibGljIGhhbmRsZUFkZERvY3VtZW50cyhkb2NzOiBDb0RvY3VtZW50W10pOiB2b2lkIHtcclxuICAgIGRvY3MuZm9yRWFjaChkb2MgPT4gdGhpcy5hY3Rpdml0eS50YXNrLmRvY3VtZW50cy5wdXNoKGRvYykpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUFkZERvY3VtZW50KGRvYzogQ29Eb2N1bWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3Rpdml0eS50YXNrLmRvY3VtZW50cy5wdXNoKGRvYyk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5LFxyXG4gICAgcHJpdmF0ZSBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlXHJcbiAgICAvL3ByaXZhdGUgX21lZGlhTW9uaXRvcjogTWVkaWFNb25pdG9yU2VydmljZSxcclxuICAgIC8qcHJpdmF0ZSBfYWN0aXZpdHlTZXJ2aWNlOiBBY3Rpdml0eVNlcnZpY2UqL1xyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZ2V0QWN0aXZpdGllcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dDb250ZW50KG1lbnU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1lbnUgPSBtZW51O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVJlZ2lzdGVyV29yaygpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvKmlmICh0aGlzLmFjdGl2aXR5QWN0aXZpdGllcykge1xyXG4gICAgICAgICAgdGhpcy5leHBhbmRBY3Rpdml0aWVzID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlBY3Rpdml0aWVzLnNob3dSZWdpc3RlcldvcmtMZWFmKCk7XHJcbiAgICAgIH0qL1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2F2ZUFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdXBkYXRlVGFza09iamVjdChhY3Rpdml0eSwgYWN0aXZpdHkuSXNXb3JrID8gXCJ3b3JrTG9nXCIgOiBcInJlbWFya3NcIik7XHJcbiAgICBjb25zdCBpbmRleDogbnVtYmVyID0gdGhpcy5hY3Rpdml0aWVzLmZpbmRJbmRleCgoc3JjKSA9PiB7XHJcbiAgICAgIHJldHVybiBzcmMuZ2V0SWQoKSA9PT0gYWN0aXZpdHkuZ2V0SWQoKTtcclxuICAgIH0pO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy5hY3Rpdml0aWVzW2luZGV4XSA9IGFjdGl2aXR5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY3Rpdml0aWVzLnB1c2goYWN0aXZpdHkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3Rpdml0aWVzID0gdGhpcy5hY3Rpdml0aWVzLnNsaWNlKDApOyAvLyByZXNldCB2aWV3XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRGVsZXRlQWN0aXZpdHkoYWN0aXZpdHk6IEFjdGl2aXR5KTogdm9pZCB7XHJcbiAgICBpZiAoYWN0aXZpdHkuSXNXb3JrKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHkudGFzay5kZWxldGVXb3JrTG9nKGFjdGl2aXR5LndvcmspO1xyXG4gICAgfSBlbHNlIGlmIChhY3Rpdml0eS5Jc1JlbWFyaykge1xyXG4gICAgICB0aGlzLmFjdGl2aXR5LnRhc2suZGVsZXRlUmVtYXJrKGFjdGl2aXR5LnJlbWFyayk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2hvd1dvcmtMb3coKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZEFjdGl2aXRpZXMgPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93V29ya0xvZy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVUYXNrT2JqZWN0KGFjdGl2aXR5OiBBY3Rpdml0eSwgcHJvcDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBjbG9uZUFjdGl2aXR5ID0gdGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoQWN0aXZpdHksIGFjdGl2aXR5KTtcclxuICAgIGlmICgoY2xvbmVBY3Rpdml0eSBhcyBBY3Rpdml0eSkuaXNOZXcpIHtcclxuICAgICAgdGhpcy5hY3Rpdml0eS50YXNrW3Byb3BdLnB1c2goYWN0aXZpdHkuZ2V0QmFzZUNvbnRlbnQoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpbmRleDogbnVtYmVyID0gdGhpcy5hY3Rpdml0eS50YXNrW3Byb3BdLmZpbmRJbmRleCgoc3JjKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHNyYy5nZXRJZCgpID09PSBhY3Rpdml0eS5nZXRCYXNlQ29udGVudCgpLmdldElkKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZpdHkudGFza1twcm9wXVtpbmRleF0gPSBhY3Rpdml0eS5nZXRCYXNlQ29udGVudCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpdml0eS5lZGl0dGluZyA9IGZhbHNlO1xyXG4gICAgYWN0aXZpdHkuaXNOZXcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2dldEFjdGl2aXRpZXMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMua2V5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZpdGllcyA9IGF3YWl0IHRoaXMuc2hhcmVkU2VydmljZS5nZXRBY3Rpdml0aWVzKHRoaXMudGFibGUsIHRoaXMua2V5LnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZ5LXRhc2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tb2RpZnktdGFzay1mb3JtL21vZGlmeS10YXNrLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFDbkMsOENBQThDLEVBRS9DLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBR3ZFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBMkgzRSxNQUFNLE9BQU8sdUJBQXVCO0lBbUZsQyxZQUNVLFVBQWlDLEVBQ2pDLGFBQTRCLEVBQzdCLGdCQUFrQztJQUN6Qyw2Q0FBNkM7SUFDN0MsNkNBQTZDOztRQUpyQyxlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM3QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBckYzQyxnRUFBZ0U7UUFDaEQsZUFBVSxHQUFxQixTQUFTLENBQUM7UUE0QmxELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFHMUIsaUJBQVksR0FB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QUVyQixhQUFhO1lBVEEsZ0JBQWdCOzs7dUJBNElsQyxLQUFLO3dCQU1MLFdBQVcsU0FBQywyQkFBMkI7c0NBYXZDLEtBQUs7dUJBR0wsS0FBSzsyQkFHTCxLQUFLOzRCQUdMLEtBQUs7cUJBTUwsV0FBVyxTQUFDLGNBQWM7NkJBRzFCLE1BQU07MkJBR04sTUFBTTswQkFHTixNQUFNOztBQWJQO0lBREMsWUFBWSxFQUFFOzREQUdkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtBY3Rpdml0eX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2FjdGl2aXR5LmJvXCI7XHJcbmltcG9ydCB7XHJcbiAgRm9ybU1hc3RlclNlcnZpY2UsIEljb25DYWNoZVNlcnZpY2UsXHJcbiAgU0NSRUVOX0NPTkZJR19BREFQVEVSX0NPTVBPTkVOVF9JTlRFUkZBQ0VfTkFNRSxcclxuICBTY3JlZW5Db25maWdBZGFwdGVyQ29tcG9uZW50XHJcbn0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcclxuaW1wb3J0IHtUYWJsZU5hbWV9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL3RhYmxlLW5hbWUuZW51bVwiO1xyXG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudFwiO1xyXG5pbXBvcnQge0FjdGl2aXRpZXNUYXNrQ29uZmlnTmFtZXN9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2UvYWN0aXZpdGllcy10YXNrLWNvbmZpZy1uYW1lc1wiO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSBcIkBjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3NlcnZpY2UvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnlcIjtcclxuaW1wb3J0IHtJbnB1dEJvb2xlYW59IGZyb20gXCIuLi8uLi9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3JcIjtcclxuaW1wb3J0IHtTaGFyZWRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9zaGFyZWQuc2VydmljZVwiO1xyXG5pbXBvcnQge1RhZ0NhdGVnb3J5fSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS90YWItY2F0ZWdvcnkuZW51bVwiO1xyXG5pbXBvcnQge1RhZ1RyZWVJdGVtfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvdGFnLXRyZWUtaXRlbS5ib1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tbW9kaWZ5LXRhc2stZm9ybVwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kaWZ5LXRhc2staGVhZGVyLXdyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kaWZ5LXRhc2staGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItbWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZE1lbnUgPT09ICdjb250ZW50LW1lbnUxJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIidUQVNLX0RFVEFJTFMnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93Q29udGVudCgnY29udGVudC1tZW51MScpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItbWVudVwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkTWVudSA9PT0gJ2NvbnRlbnQtbWVudTInXCJcclxuICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCInVEFTS19JTkZPUk1BVElPTicgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0NvbnRlbnQoJ2NvbnRlbnQtbWVudTInKVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLW1lbnVcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZE1lbnUgPT09ICdjb250ZW50LW1lbnUzJ1wiXHJcbiAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiJ1BMQU5OSU5HJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93Q29udGVudCgnY29udGVudC1tZW51MycpXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbWVudS13cmFwcGVyIG5hcnJvdy1zY3JvbGxiYXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1tZW51XCIgW2hpZGRlbl09XCJzZWxlY3RlZE1lbnUgIT09ICdjb250ZW50LW1lbnUxJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtcm93LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgIDxjby10YXNrLWRldGFpbHMgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJsZV09XCJUYWJsZU5hbWVzLlRhc2tzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrZXldPVwia2V5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoYWN0aXZpdHkpXT1cImFjdGl2aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpdml0eUNoYW5nZSk9XCJhY3Rpdml0eUNoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNob3dXb3JrTG9nKT1cImhhbmRsZVNob3dXb3JrTG93KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9Cb3JkZXJcclxuICAgICAgICAgICAgICA+PC9jby10YXNrLWRldGFpbHM+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImludm9pY2UtY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidNQVJLRUQnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiYWN0aXZpdHkudGFzay5pc0ludm9pY2VkXCI+XHJcbiAgICAgICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFya2VkLXRpbWUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImFjdGl2aXR5LnRhc2sud29ya01hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVElNRVJFR0lTVFJBVElPTl9NQU5EQVRPUlknIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICBub01vZHVsZVNlcnZpY2U+XHJcbiAgICAgICAgICAgICAgICA8L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBUT0RPIGltcGxlbWVudCBiYWNrIGxhdGVyLS0+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxhcnJvdy1saW5rICpuZ0lmPVwiIXJlYWRvbmx5XCIgbGFiZWw9XCJSRUdJU1RFUl9USU1FX0hFUkVcIiAoY2xpY2spPVwiaGFuZGxlUmVnaXN0ZXJXb3JrKClcIj48L2Fycm93LWxpbms+LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aXZpdHktY29udGVudC1oZWFkZXJcIiBbdGV4dENvbnRlbnRdPVwiJ1BFUlNPTlMnIHwgbG9jYWxpemVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8Y28tZXhlY3V0aXZlLXN1bW1hcnktYmxvY2tcclxuICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICBbKGFjdGl2aXR5KV09XCJhY3Rpdml0eVwiXHJcbiAgICAgICAgICAgICAgICAoYWN0aXZpdHlDaGFuZ2UpPVwiYWN0aXZpdHlDaGFuZ2UuZW1pdCgkZXZlbnQpXCIgbm9Cb3JkZXJcclxuICAgICAgICAgICAgICA+PC9jby1leGVjdXRpdmUtc3VtbWFyeS1ibG9jaz5cclxuXHJcbiAgICAgICAgICAgICAgPCEtLVRPRE8gaW1wbGVtZW50IG5ldyBmaWxlIHVwbG9hZCBoZXJlLS0+XHJcbiAgICAgICAgICAgICAgPCEtLSA8YWN0aXZpdHktYXR0YWNobWVudHNcclxuICAgICAgICAgICAgICAgICAgICAgICBbKGFjdGl2aXR5KV09XCJhY3Rpdml0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBba2V5XT1cImFjdGl2aXR5LnRhc2suaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtub0ZvcmNlSW5wdXRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5Q2hhbmdlKT1cImFjdGl2aXR5Q2hhbmdlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbm9Cb3JkZXJcclxuICAgICAgICAgICAgICAgPjwvYWN0aXZpdHktYXR0YWNobWVudHM+LS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aXZpdGllcy13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxjby1hY3Rpdml0eS1saXN0IFthY3Rpdml0aWVzXT1cImFjdGl2aXRpZXNcIj5cclxuXHJcbiAgICAgICAgICAgIDwvY28tYWN0aXZpdHktbGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LW1lbnVcIiBbaGlkZGVuXT1cInNlbGVjdGVkTWVudSAhPT0gJ2NvbnRlbnQtbWVudTInXCI+XHJcbiAgICAgICAgICA8Y28tc3RhdHVzLXN1bW1hcnktYmxvY2tcclxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgWyhhY3Rpdml0eSldPVwiYWN0aXZpdHlcIlxyXG4gICAgICAgICAgICBbdGFibGVdPVwiVGFibGVOYW1lcy5UYXNrc1wiXHJcbiAgICAgICAgICAgIFtrZXldPVwia2V5XCJcclxuICAgICAgICAgICAgKGFjdGl2aXR5Q2hhbmdlKT1cImFjdGl2aXR5Q2hhbmdlLmVtaXQoJGV2ZW50KVwiIG5vQm9yZGVyXHJcbiAgICAgICAgICA+PC9jby1zdGF0dXMtc3VtbWFyeS1ibG9jaz5cclxuICAgICAgICAgIDxjby1jcmVhdGlvbi1zdW1tYXJ5LWJsb2NrXHJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgIFsoYWN0aXZpdHkpXT1cImFjdGl2aXR5XCJcclxuICAgICAgICAgICAgKGFjdGl2aXR5Q2hhbmdlKT1cImFjdGl2aXR5Q2hhbmdlLmVtaXQoJGV2ZW50KVwiIG5vQm9yZGVyXHJcbiAgICAgICAgICA+PC9jby1jcmVhdGlvbi1zdW1tYXJ5LWJsb2NrPlxyXG4gICAgICAgICAgPCEtLTxwbGFubmluZy1zdW1tYXJ5LWJsb2NrXHJcbiAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgIFsoYWN0aXZpdHkpXT1cImFjdGl2aXR5XCJcclxuICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5Q2hhbmdlKT1cImFjdGl2aXR5Q2hhbmdlLmVtaXQoJGV2ZW50KVwiIG5vQm9yZGVyXHJcbiAgICAgICAgICA+PC9wbGFubmluZy1zdW1tYXJ5LWJsb2NrPi0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LW1lbnVcIiBbaGlkZGVuXT1cInNlbGVjdGVkTWVudSAhPT0gJ2NvbnRlbnQtbWVudTMnXCI+XHJcbiAgICAgICAgICA8Y28tbm90aWZpY2F0aW9uLXN1bW1hcnktYmxvY2tcclxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgWyhhY3Rpdml0eSldPVwiYWN0aXZpdHlcIlxyXG4gICAgICAgICAgICAoYWN0aXZpdHlDaGFuZ2UpPVwiYWN0aXZpdHlDaGFuZ2UuZW1pdCgkZXZlbnQpXCIgbm9Cb3JkZXJcclxuICAgICAgICAgID48L2NvLW5vdGlmaWNhdGlvbi1zdW1tYXJ5LWJsb2NrPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LXRhZ3Mtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8Y28tc2ltcGxlLXRhZ3MtZm9ybSBbdGFnc109XCJhbGxUYWdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtlZFRhZ3NdPVwiYWN0aXZpdHkudGFzay50YWdzXCI+XHJcbiAgICAgICAgICAgIDwvY28tc2ltcGxlLXRhZ3MtZm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLXRhZy13cmFwcGVyXCIgKm5nRm9yPVwibGV0IHRhZyBvZiBhY3Rpdml0eS50YXNrLnRhZ3NcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ1wiIFt0ZXh0Q29udGVudF09XCJ0YWcuZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgRm9ybU1hc3RlclNlcnZpY2UsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IFNDUkVFTl9DT05GSUdfQURBUFRFUl9DT01QT05FTlRfSU5URVJGQUNFX05BTUUsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vZGlmeVRhc2tGb3JtQ29tcG9uZW50KVxyXG4gICAgfVxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2RpZnlUYXNrRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgU2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudCB7XHJcbiAgLy9wdWJsaWMgcmVhZG9ubHkgVGFnQ2F0ZWdvcnk6IHR5cGVvZiBUYWdDYXRlZ29yeSA9IFRhZ0NhdGVnb3J5O1xyXG4gIHB1YmxpYyByZWFkb25seSBUYWJsZU5hbWVzOiB0eXBlb2YgVGFibGVOYW1lID0gVGFibGVOYW1lO1xyXG5cclxuICAvKiBAVmlld0NoaWxkKEFjdGl2aXR5QWN0aXZpdGllc0NvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgcHVibGljIGFjdGl2aXR5QWN0aXZpdGllczogQWN0aXZpdHlBY3Rpdml0aWVzQ29tcG9uZW50OyovXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBhY3Rpdml0eSh2YWx1ZTogQWN0aXZpdHkpIHtcclxuICAgIHRoaXMuX2FjdGl2aXR5ID0gdmFsdWU7XHJcbiAgICB0aGlzLmtleSA9IHRoaXMuX2FjdGl2aXR5LnRhc2sudGFza0lkICsgXCJcIjtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLW1vZGlmeS10YXNrLWZvcm1cIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGFjdGl2aXR5KCk6IEFjdGl2aXR5IHtcclxuICAgIHJldHVybiB0aGlzLl9hY3Rpdml0eTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaGFzRG9jdW1lbnRzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICh0aGlzLl9hY3Rpdml0eT8udGFzaz8uZG9jdW1lbnRzPy5sZW5ndGggPiAwKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFjdGl2aXR5VGFza0NvbmZpZ05hbWVzOiBBY3Rpdml0aWVzVGFza0NvbmZpZ05hbWVzO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwb3B1cENvbnRleHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgc2V0IGZvcmNlUmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMucmVhZG9ubHkgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmhpZGRlblwiKVxyXG4gIHB1YmxpYyBoaWRkZW46IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhY3Rpdml0eUNoYW5nZTogRXZlbnRFbWl0dGVyPEFjdGl2aXR5PiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aXZpdHk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzdGF0dXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNob3dXb3JrTG9nOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZE1lbnU6IHN0cmluZyA9ICdjb250ZW50LW1lbnUxJ1xyXG4gIHB1YmxpYyBhY3Rpdml0aWVzOiBBY3Rpdml0eVtdID0gW107XHJcbiAgcHVibGljIHRhYmxlOiBUYWJsZU5hbWUgPSBUYWJsZU5hbWUuVGFza3M7XHJcbiAgcHVibGljIGtleTogc3RyaW5nO1xyXG4gIHB1YmxpYyBleHBhbmRBY3Rpdml0aWVzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBvYmplY3RDb25maWdOYW1lOiBzdHJpbmc7XHJcbiAgcHVibGljIHJlcXVpcmVkOiBib29sZWFuO1xyXG4gIHB1YmxpYyBtYXhMZW5ndGg6IG51bWJlcjtcclxuICBwdWJsaWMgZGVjaW1hbHM6IG51bWJlcjtcclxuICBwdWJsaWMgcmVkRXJyb3JCYWNrZ3JvdW5kOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgc2hvd1RhZ1BvcHVwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGFsbFRhZ3M6IFRhZ1RyZWVJdGVtW107XHJcbiAgLy9wdWJsaWMgZWRpdGluZ1RhZ3M6IFRhZ1RyZWVJdGVtW10gPSBbXTtcclxuXHJcbiAgLypwdWJsaWMgZ2V0IG1vYmlsZSgpOiBib29sZWFuIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX21lZGlhTW9uaXRvci5pc0V4dHJhU21hbGwoKTtcclxuICB9Ki9cclxuXHJcbiAgcHJpdmF0ZSBfYWN0aXZpdHk6IEFjdGl2aXR5O1xyXG5cclxuICBwdWJsaWMgaGFuZGxlQWRkRG9jdW1lbnRzKGRvY3M6IENvRG9jdW1lbnRbXSk6IHZvaWQge1xyXG4gICAgZG9jcy5mb3JFYWNoKGRvYyA9PiB0aGlzLmFjdGl2aXR5LnRhc2suZG9jdW1lbnRzLnB1c2goZG9jKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQWRkRG9jdW1lbnQoZG9jOiBDb0RvY3VtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2aXR5LnRhc2suZG9jdW1lbnRzLnB1c2goZG9jKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfYm9GYWN0b3J5OiBCdXNpbmVzc09iamVjdEZhY3RvcnksXHJcbiAgICBwcml2YXRlIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZVxyXG4gICAgLy9wcml2YXRlIF9tZWRpYU1vbml0b3I6IE1lZGlhTW9uaXRvclNlcnZpY2UsXHJcbiAgICAvKnByaXZhdGUgX2FjdGl2aXR5U2VydmljZTogQWN0aXZpdHlTZXJ2aWNlKi9cclxuICApIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2dldEFjdGl2aXRpZXMoKTtcclxuICAgIHRoaXMuX2dldFRhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93Q29udGVudChtZW51OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRNZW51ID0gbWVudTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVSZWdpc3RlcldvcmsoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLyppZiAodGhpcy5hY3Rpdml0eUFjdGl2aXRpZXMpIHtcclxuICAgICAgICAgIHRoaXMuZXhwYW5kQWN0aXZpdGllcyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5QWN0aXZpdGllcy5zaG93UmVnaXN0ZXJXb3JrTGVhZigpO1xyXG4gICAgICB9Ki9cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNhdmVBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VwZGF0ZVRhc2tPYmplY3QoYWN0aXZpdHksIGFjdGl2aXR5LklzV29yayA/IFwid29ya0xvZ1wiIDogXCJyZW1hcmtzXCIpO1xyXG4gICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuYWN0aXZpdGllcy5maW5kSW5kZXgoKHNyYykgPT4ge1xyXG4gICAgICByZXR1cm4gc3JjLmdldElkKCkgPT09IGFjdGl2aXR5LmdldElkKCk7XHJcbiAgICB9KTtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZpdGllc1tpbmRleF0gPSBhY3Rpdml0eTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZpdGllcy5wdXNoKGFjdGl2aXR5KTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZpdGllcyA9IHRoaXMuYWN0aXZpdGllcy5zbGljZSgwKTsgLy8gcmVzZXQgdmlld1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURlbGV0ZUFjdGl2aXR5KGFjdGl2aXR5OiBBY3Rpdml0eSk6IHZvaWQge1xyXG4gICAgaWYgKGFjdGl2aXR5LklzV29yaykge1xyXG4gICAgICB0aGlzLmFjdGl2aXR5LnRhc2suZGVsZXRlV29ya0xvZyhhY3Rpdml0eS53b3JrKTtcclxuICAgIH0gZWxzZSBpZiAoYWN0aXZpdHkuSXNSZW1hcmspIHtcclxuICAgICAgdGhpcy5hY3Rpdml0eS50YXNrLmRlbGV0ZVJlbWFyayhhY3Rpdml0eS5yZW1hcmspO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNob3dXb3JrTG93KCk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBhbmRBY3Rpdml0aWVzID0gdHJ1ZTtcclxuICAgIHRoaXMuc2hvd1dvcmtMb2cuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZUVkaXRUYWdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZ2V0VGFncygpO1xyXG4gICAgdGhpcy5zaG93VGFnUG9wdXAgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNhdmVUYWdzKHRhZ3M6IFRhZ1RyZWVJdGVtW10pOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZpdHkudGFzay50YWdzID0gdGFncztcclxuICB9XHJcblxyXG5cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlVGFza09iamVjdChhY3Rpdml0eTogQWN0aXZpdHksIHByb3A6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgY2xvbmVBY3Rpdml0eSA9IHRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEFjdGl2aXR5LCBhY3Rpdml0eSk7XHJcbiAgICBpZiAoKGNsb25lQWN0aXZpdHkgYXMgQWN0aXZpdHkpLmlzTmV3KSB7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHkudGFza1twcm9wXS5wdXNoKGFjdGl2aXR5LmdldEJhc2VDb250ZW50KCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5kZXg6IG51bWJlciA9IHRoaXMuYWN0aXZpdHkudGFza1twcm9wXS5maW5kSW5kZXgoKHNyYykgPT4ge1xyXG4gICAgICAgIHJldHVybiBzcmMuZ2V0SWQoKSA9PT0gYWN0aXZpdHkuZ2V0QmFzZUNvbnRlbnQoKS5nZXRJZCgpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICB0aGlzLmFjdGl2aXR5LnRhc2tbcHJvcF1baW5kZXhdID0gYWN0aXZpdHkuZ2V0QmFzZUNvbnRlbnQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aXZpdHkuZWRpdHRpbmcgPSBmYWxzZTtcclxuICAgIGFjdGl2aXR5LmlzTmV3ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9nZXRBY3Rpdml0aWVzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmtleSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2aXRpZXMgPSBhd2FpdCB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0QWN0aXZpdGllcyh0aGlzLnRhYmxlLCB0aGlzLmtleS50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2dldFRhZ3MoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmFsbFRhZ3MgPSBhd2FpdCB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0VGFnc0Z1bGxUcmVlKFRhZ0NhdGVnb3J5LnRhc2tzLCB0cnVlKTtcclxuXHJcbiAgICAvKmlmICghdGhpcy5rZXkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0aW5nVGFncyA9IGF3YWl0IHRoaXMuc2hhcmVkU2VydmljZS5nZXRKb2luZWRUYWdzKHRoaXMudGFibGUsIHRoaXMua2V5LnRvU3RyaW5nKCkpO1xyXG4gICAgfSovLyppZiAoIXRoaXMua2V5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZWRpdGluZ1RhZ3MgPSBhd2FpdCB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0Sm9pbmVkVGFncyh0aGlzLnRhYmxlLCB0aGlzLmtleS50b1N0cmluZygpKTtcclxuICAgIH0qL1xyXG4gIH1cclxuXHJcbn1cclxuIl19
@@ -2,12 +2,15 @@ import { NgModule } from "@angular/core";
2
2
  import { ModifyTaskFormComponent } from "./modify-task-form.component";
3
3
  import { LocalizationModule } from "../../localization/localization.module";
4
4
  import { TaskDetailsModule } from "./components/task-details/task-details.module";
5
- import { InputCheckboxModule } from "@colijnit/corecomponents_v12";
5
+ import { ButtonModule, InputCheckboxModule } from "@colijnit/corecomponents_v12";
6
6
  import { StatusSummaryBlockModule } from "./components/status-summary-block/status-summary-block.module";
7
7
  import { CreationSummaryBlockModule } from "./components/creation-summary-block/creation-summary-block.module";
8
8
  import { ExecutiveSummaryBlockModule } from "./components/executive-summary-block/executive-summary-block.module";
9
9
  import { NotificationSummaryBlockModule } from "./components/notification-summary-block/notification-summary-block.module";
10
10
  import { ActivityListModule } from "../activity-list/activity-list.module";
11
+ import { SimpleTagsModule } from "../simple-tags/simple-tags.module";
12
+ import { CommonModule } from "@angular/common";
13
+ import { SimpleTagsFormModule } from "../simple-tags-form/simple-tags-form.module";
11
14
  export class ModifyTaskFormModule {
12
15
  }
13
16
  ModifyTaskFormModule.decorators = [
@@ -20,7 +23,11 @@ ModifyTaskFormModule.decorators = [
20
23
  StatusSummaryBlockModule,
21
24
  CreationSummaryBlockModule,
22
25
  NotificationSummaryBlockModule,
23
- ActivityListModule
26
+ ActivityListModule,
27
+ SimpleTagsModule,
28
+ ButtonModule,
29
+ CommonModule,
30
+ SimpleTagsFormModule
24
31
  ],
25
32
  declarations: [
26
33
  ModifyTaskFormComponent
@@ -30,4 +37,4 @@ ModifyTaskFormModule.decorators = [
30
37
  ]
31
38
  },] }
32
39
  ];
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZ5LXRhc2stZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tb2RpZnktdGFzay1mb3JtL21vZGlmeS10YXNrLWZvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDdkcsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFDN0csT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0scUVBQXFFLENBQUM7QUFDaEgsT0FBTyxFQUNMLDhCQUE4QixFQUMvQixNQUFNLDJFQUEyRSxDQUFDO0FBQ25GLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBcUJ6RSxNQUFNLE9BQU8sb0JBQW9COzs7WUFsQmhDLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1Asa0JBQWtCO29CQUNsQixpQkFBaUI7b0JBQ2pCLG1CQUFtQjtvQkFDbkIsMkJBQTJCO29CQUMzQix3QkFBd0I7b0JBQ3hCLDBCQUEwQjtvQkFDMUIsOEJBQThCO29CQUM5QixrQkFBa0I7aUJBQ25CO2dCQUNELFlBQVksRUFBRTtvQkFDWix1QkFBdUI7aUJBQ3hCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCx1QkFBdUI7aUJBQ3hCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge01vZGlmeVRhc2tGb3JtQ29tcG9uZW50fSBmcm9tIFwiLi9tb2RpZnktdGFzay1mb3JtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0xvY2FsaXphdGlvbk1vZHVsZX0gZnJvbSBcIi4uLy4uL2xvY2FsaXphdGlvbi9sb2NhbGl6YXRpb24ubW9kdWxlXCI7XHJcbmltcG9ydCB7VGFza0RldGFpbHNNb2R1bGV9IGZyb20gXCIuL2NvbXBvbmVudHMvdGFzay1kZXRhaWxzL3Rhc2stZGV0YWlscy5tb2R1bGVcIjtcclxuaW1wb3J0IHtJbnB1dENoZWNrYm94TW9kdWxlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge1N0YXR1c1N1bW1hcnlCbG9ja01vZHVsZX0gZnJvbSBcIi4vY29tcG9uZW50cy9zdGF0dXMtc3VtbWFyeS1ibG9jay9zdGF0dXMtc3VtbWFyeS1ibG9jay5tb2R1bGVcIjtcclxuaW1wb3J0IHtDcmVhdGlvblN1bW1hcnlCbG9ja01vZHVsZX0gZnJvbSBcIi4vY29tcG9uZW50cy9jcmVhdGlvbi1zdW1tYXJ5LWJsb2NrL2NyZWF0aW9uLXN1bW1hcnktYmxvY2subW9kdWxlXCI7XHJcbmltcG9ydCB7RXhlY3V0aXZlU3VtbWFyeUJsb2NrTW9kdWxlfSBmcm9tIFwiLi9jb21wb25lbnRzL2V4ZWN1dGl2ZS1zdW1tYXJ5LWJsb2NrL2V4ZWN1dGl2ZS1zdW1tYXJ5LWJsb2NrLm1vZHVsZVwiO1xyXG5pbXBvcnQge1xyXG4gIE5vdGlmaWNhdGlvblN1bW1hcnlCbG9ja01vZHVsZVxyXG59IGZyb20gXCIuL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLXN1bW1hcnktYmxvY2svbm90aWZpY2F0aW9uLXN1bW1hcnktYmxvY2subW9kdWxlXCI7XHJcbmltcG9ydCB7QWN0aXZpdHlMaXN0TW9kdWxlfSBmcm9tIFwiLi4vYWN0aXZpdHktbGlzdC9hY3Rpdml0eS1saXN0Lm1vZHVsZVwiO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgTG9jYWxpemF0aW9uTW9kdWxlLFxyXG4gICAgVGFza0RldGFpbHNNb2R1bGUsXHJcbiAgICBJbnB1dENoZWNrYm94TW9kdWxlLFxyXG4gICAgRXhlY3V0aXZlU3VtbWFyeUJsb2NrTW9kdWxlLFxyXG4gICAgU3RhdHVzU3VtbWFyeUJsb2NrTW9kdWxlLFxyXG4gICAgQ3JlYXRpb25TdW1tYXJ5QmxvY2tNb2R1bGUsXHJcbiAgICBOb3RpZmljYXRpb25TdW1tYXJ5QmxvY2tNb2R1bGUsXHJcbiAgICBBY3Rpdml0eUxpc3RNb2R1bGVcclxuICBdLFxyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgTW9kaWZ5VGFza0Zvcm1Db21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIE1vZGlmeVRhc2tGb3JtQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9kaWZ5VGFza0Zvcm1Nb2R1bGUge1xyXG5cclxufVxyXG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZ5LXRhc2stZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9tb2RpZnktdGFzay1mb3JtL21vZGlmeS10YXNrLWZvcm0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQy9FLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLCtEQUErRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBQzdHLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHFFQUFxRSxDQUFDO0FBQ2hILE9BQU8sRUFDTCw4QkFBOEIsRUFDL0IsTUFBTSwyRUFBMkUsQ0FBQztBQUNuRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUF5QmpGLE1BQU0sT0FBTyxvQkFBb0I7OztZQXRCaEMsUUFBUSxTQUFDO2dCQUNOLE9BQU8sRUFBRTtvQkFDTCxrQkFBa0I7b0JBQ2xCLGlCQUFpQjtvQkFDakIsbUJBQW1CO29CQUNuQiwyQkFBMkI7b0JBQzNCLHdCQUF3QjtvQkFDeEIsMEJBQTBCO29CQUMxQiw4QkFBOEI7b0JBQzlCLGtCQUFrQjtvQkFDbEIsZ0JBQWdCO29CQUNoQixZQUFZO29CQUNaLFlBQVk7b0JBQ1osb0JBQW9CO2lCQUN2QjtnQkFDSCxZQUFZLEVBQUU7b0JBQ1osdUJBQXVCO2lCQUN4QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsdUJBQXVCO2lCQUN4QjthQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtNb2RpZnlUYXNrRm9ybUNvbXBvbmVudH0gZnJvbSBcIi4vbW9kaWZ5LXRhc2stZm9ybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtMb2NhbGl6YXRpb25Nb2R1bGV9IGZyb20gXCIuLi8uLi9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLm1vZHVsZVwiO1xyXG5pbXBvcnQge1Rhc2tEZXRhaWxzTW9kdWxlfSBmcm9tIFwiLi9jb21wb25lbnRzL3Rhc2stZGV0YWlscy90YXNrLWRldGFpbHMubW9kdWxlXCI7XHJcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBJbnB1dENoZWNrYm94TW9kdWxlfSBmcm9tIFwiQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMlwiO1xyXG5pbXBvcnQge1N0YXR1c1N1bW1hcnlCbG9ja01vZHVsZX0gZnJvbSBcIi4vY29tcG9uZW50cy9zdGF0dXMtc3VtbWFyeS1ibG9jay9zdGF0dXMtc3VtbWFyeS1ibG9jay5tb2R1bGVcIjtcclxuaW1wb3J0IHtDcmVhdGlvblN1bW1hcnlCbG9ja01vZHVsZX0gZnJvbSBcIi4vY29tcG9uZW50cy9jcmVhdGlvbi1zdW1tYXJ5LWJsb2NrL2NyZWF0aW9uLXN1bW1hcnktYmxvY2subW9kdWxlXCI7XHJcbmltcG9ydCB7RXhlY3V0aXZlU3VtbWFyeUJsb2NrTW9kdWxlfSBmcm9tIFwiLi9jb21wb25lbnRzL2V4ZWN1dGl2ZS1zdW1tYXJ5LWJsb2NrL2V4ZWN1dGl2ZS1zdW1tYXJ5LWJsb2NrLm1vZHVsZVwiO1xyXG5pbXBvcnQge1xyXG4gIE5vdGlmaWNhdGlvblN1bW1hcnlCbG9ja01vZHVsZVxyXG59IGZyb20gXCIuL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uLXN1bW1hcnktYmxvY2svbm90aWZpY2F0aW9uLXN1bW1hcnktYmxvY2subW9kdWxlXCI7XHJcbmltcG9ydCB7QWN0aXZpdHlMaXN0TW9kdWxlfSBmcm9tIFwiLi4vYWN0aXZpdHktbGlzdC9hY3Rpdml0eS1saXN0Lm1vZHVsZVwiO1xyXG5pbXBvcnQge1NpbXBsZVRhZ3NNb2R1bGV9IGZyb20gXCIuLi9zaW1wbGUtdGFncy9zaW1wbGUtdGFncy5tb2R1bGVcIjtcclxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtTaW1wbGVUYWdzRm9ybU1vZHVsZX0gZnJvbSBcIi4uL3NpbXBsZS10YWdzLWZvcm0vc2ltcGxlLXRhZ3MtZm9ybS5tb2R1bGVcIjtcclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIExvY2FsaXphdGlvbk1vZHVsZSxcclxuICAgICAgICBUYXNrRGV0YWlsc01vZHVsZSxcclxuICAgICAgICBJbnB1dENoZWNrYm94TW9kdWxlLFxyXG4gICAgICAgIEV4ZWN1dGl2ZVN1bW1hcnlCbG9ja01vZHVsZSxcclxuICAgICAgICBTdGF0dXNTdW1tYXJ5QmxvY2tNb2R1bGUsXHJcbiAgICAgICAgQ3JlYXRpb25TdW1tYXJ5QmxvY2tNb2R1bGUsXHJcbiAgICAgICAgTm90aWZpY2F0aW9uU3VtbWFyeUJsb2NrTW9kdWxlLFxyXG4gICAgICAgIEFjdGl2aXR5TGlzdE1vZHVsZSxcclxuICAgICAgICBTaW1wbGVUYWdzTW9kdWxlLFxyXG4gICAgICAgIEJ1dHRvbk1vZHVsZSxcclxuICAgICAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAgICAgU2ltcGxlVGFnc0Zvcm1Nb2R1bGVcclxuICAgIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBNb2RpZnlUYXNrRm9ybUNvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgTW9kaWZ5VGFza0Zvcm1Db21wb25lbnRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2RpZnlUYXNrRm9ybU1vZHVsZSB7XHJcblxyXG59XHJcbiJdfQ==
@@ -11,9 +11,11 @@ import { ActivitySortType } from "@colijnit/mainapi/build/enum/activity-sort-typ
11
11
  import { OperationWithAlwaysSuccessCallback } from "../../interface/operation-callback-simple-function";
12
12
  import { PersonalActivityOverviewComponent } from "./components/personal-activity-overview/personal-activity-overview.component";
13
13
  import { OperationWithValidationCallback } from "../../interface/operation-callback-function-with-validation";
14
+ import { SharedService } from "../../service/shared.service";
14
15
  export class ComponentActivityListComponent extends BaseActivityListComponent {
15
- constructor() {
16
+ constructor(sharedService) {
16
17
  super();
18
+ this.sharedService = sharedService;
17
19
  this.tabs = PersonalActivityTabEnum;
18
20
  this.icons = Icon;
19
21
  this.activityClass = Activity;
@@ -21,19 +23,12 @@ export class ComponentActivityListComponent extends BaseActivityListComponent {
21
23
  this.hideTitle = false;
22
24
  this.noFreeTasks = false;
23
25
  this.componentActivitiesMethod = OperationWithAlwaysSuccessCallback;
24
- this.fireGenericTriggerOperation = OperationWithValidationCallback;
25
- this.fireTriggerOperation = OperationWithValidationCallback;
26
- this.canFireTriggerOperation = OperationWithAlwaysSuccessCallback;
27
26
  this.setHasPausedNotificationsForWorkflowProcessOperation = OperationWithValidationCallback;
28
- this.lockTaskOperation = OperationWithAlwaysSuccessCallback;
29
- this.deleteActivityOperation = OperationWithAlwaysSuccessCallback;
30
- this.upsertActivityOperation = OperationWithAlwaysSuccessCallback;
31
27
  this.openLinkClick = new EventEmitter();
32
28
  this.amountActivityChanged = new EventEmitter();
33
29
  this.linkClicked = new EventEmitter();
34
30
  this.formCreated = new EventEmitter();
35
- this.genericTriggerFired = new EventEmitter();
36
- this.triggerFired = new EventEmitter();
31
+ this.refreshRequested = new EventEmitter();
37
32
  this.showUsergroupActivitiesChanged = new EventEmitter();
38
33
  this.activeTab = PersonalActivityTabEnum.TODO;
39
34
  /*public activitySortList: boolean[] = [];*/
@@ -61,24 +56,38 @@ export class ComponentActivityListComponent extends BaseActivityListComponent {
61
56
  trackByFn(index, vm) {
62
57
  return vm.activity.id + '_' + vm.activity.workflow.combinedTriggerIds;
63
58
  }
64
- //TODO do we still need this?
65
- /*async ngOnInit(): Promise<void> {
66
- this._subs.push(
67
- this._appEventService.taskCreated.subscribe(() => {
68
- this.getTheActivities();
69
- }),
70
- this._appEventService.taskModified.subscribe(() => {
71
- this.getTheActivities();
72
- }),
73
- this._appEventService.triggerFired.subscribe(() => {
74
- this.getTheActivities();
75
- })
76
- );
77
- }*/
59
+ ngOnInit() {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ this.getTheActivities();
62
+ /*this._subs.push(
63
+ this._appEventService.taskCreated.subscribe(() => {
64
+ this.getTheActivities();
65
+ }),
66
+ this._appEventService.taskModified.subscribe(() => {
67
+ this.getTheActivities();
68
+ })
69
+ );*/
70
+ });
71
+ }
78
72
  ngOnDestroy() {
79
- this._subs.forEach(s => s.unsubscribe());
73
+ //this._subs.forEach(s => s.unsubscribe());
80
74
  super.ngOnDestroy();
81
75
  }
76
+ getActivities() {
77
+ return __awaiter(this, void 0, void 0, function* () {
78
+ if (this.table && this.key) {
79
+ const allActivities = yield this.sharedService.getComponentActivitiesWithoutRelationFiltering(this.table, this.key);
80
+ if (allActivities) {
81
+ this.activities = this.noFreeTasks ? allActivities.filter(aa => !aa.task && aa.activityType !== ActivityType.WorkflowTask) :
82
+ allActivities.filter(aa => aa.activityType !== ActivityType.WorkflowTask);
83
+ }
84
+ else {
85
+ this.activities = [];
86
+ }
87
+ this.amountActivityChanged.next(this.activities.length);
88
+ }
89
+ });
90
+ }
82
91
  set activitiesList(allActivities) {
83
92
  this._activitiesList = allActivities;
84
93
  if (allActivities) {
@@ -92,18 +101,6 @@ export class ComponentActivityListComponent extends BaseActivityListComponent {
92
101
  get activitiesList() {
93
102
  return this._activitiesList;
94
103
  }
95
- /*public async getActivities(): Promise<void> {
96
- if (this.table && this.key) {
97
- const allActivities: Activity[] = await this._activityRepo.getComponentActivities(this.table, this.key);
98
- if (allActivities) {
99
- this.activities = this.noFreeTasks ? allActivities.filter(aa => !aa.task && aa.activityType !== ActivityType.WorkflowTask) :
100
- allActivities.filter(aa => aa.activityType !== ActivityType.WorkflowTask);
101
- } else {
102
- this.activities = [];
103
- }
104
- this.amountActivityChanged.next(this.activities.length);
105
- }
106
- }*/
107
104
  getDelegatedActivities() {
108
105
  return __awaiter(this, void 0, void 0, function* () {
109
106
  // const allActivities: Activity[] = await this._activityRepo.getComponentActivities(this.table, this.key);
@@ -118,10 +115,12 @@ export class ComponentActivityListComponent extends BaseActivityListComponent {
118
115
  this.showUsergroupActivitiesChanged.next();
119
116
  }
120
117
  handleTriggerFired(activity) {
121
- this.triggerFired.next(activity);
118
+ this.getTheActivities();
119
+ this.refreshRequested.emit();
122
120
  }
123
121
  handleGenericTriggerFired(activity) {
124
- this.genericTriggerFired.next(activity);
122
+ this.getTheActivities();
123
+ this.refreshRequested.emit();
125
124
  }
126
125
  handleFormCreation() {
127
126
  this.formCreated.next();
@@ -197,15 +196,9 @@ ComponentActivityListComponent.decorators = [
197
196
  [(expanded)]="activityListViewModel.expanded">
198
197
  <ng-container *ngFor="let activityViewModel of activityListViewModel.activities; trackBy: trackByFn; let index = index">
199
198
  <co-component-activity-overview *ngIf="activityViewModel.showing"
200
- [fireGenericTriggerOperation]="fireGenericTriggerOperation"
201
- [fireTriggerOperation]="fireTriggerOperation"
202
- [canFireTriggerOperation]="canFireTriggerOperation"
203
199
  [viewModel]="activityViewModel"
204
200
  [userRelationId]="relationId"
205
201
  [userGroupId]="userGroupId"
206
- [lockTaskOperation]="lockTaskOperation"
207
- [deleteActivityOperation]="deleteActivityOperation"
208
- [upsertActivityOperation]="upsertActivityOperation"
209
202
  (activityChange)="handleChangedActivity(index, $event)"
210
203
  (activityDeleted)="deleteActivity($event)"
211
204
  (genericTriggerFired)="handleGenericTriggerFired($event)"
@@ -223,9 +216,6 @@ ComponentActivityListComponent.decorators = [
223
216
  [(expanded)]="activityListViewModel.expanded">
224
217
  <ng-container *ngFor="let activityViewModel of activityListViewModel.activities; trackBy: trackByFn; let index = index">
225
218
  <co-component-activity-overview *ngIf="activityViewModel.showing"
226
- [fireGenericTriggerOperation]="fireGenericTriggerOperation"
227
- [fireTriggerOperation]="fireTriggerOperation"
228
- [canFireTriggerOperation]="canFireTriggerOperation"
229
219
  [viewModel]="activityViewModel"
230
220
  [userRelationId]="relationId"
231
221
  [userGroupId]="userGroupId"
@@ -256,7 +246,9 @@ ComponentActivityListComponent.decorators = [
256
246
  ]
257
247
  },] }
258
248
  ];
259
- ComponentActivityListComponent.ctorParameters = () => [];
249
+ ComponentActivityListComponent.ctorParameters = () => [
250
+ { type: SharedService }
251
+ ];
260
252
  ComponentActivityListComponent.propDecorators = {
261
253
  activityOverviewList: [{ type: ViewChildren, args: [PersonalActivityOverviewComponent,] }],
262
254
  showClass: [{ type: HostBinding, args: ["class.co-component-activity-list",] }],
@@ -268,19 +260,12 @@ ComponentActivityListComponent.propDecorators = {
268
260
  userGroupId: [{ type: Input }],
269
261
  relationId: [{ type: Input }],
270
262
  componentActivitiesMethod: [{ type: Input }],
271
- fireGenericTriggerOperation: [{ type: Input }],
272
- fireTriggerOperation: [{ type: Input }],
273
- canFireTriggerOperation: [{ type: Input }],
274
263
  setHasPausedNotificationsForWorkflowProcessOperation: [{ type: Input }],
275
- lockTaskOperation: [{ type: Input }],
276
- deleteActivityOperation: [{ type: Input }],
277
- upsertActivityOperation: [{ type: Input }],
278
264
  openLinkClick: [{ type: Output }],
279
265
  amountActivityChanged: [{ type: Output }],
280
266
  linkClicked: [{ type: Output }],
281
267
  formCreated: [{ type: Output }],
282
- genericTriggerFired: [{ type: Output }],
283
- triggerFired: [{ type: Output }],
268
+ refreshRequested: [{ type: Output }],
284
269
  showUsergroupActivitiesChanged: [{ type: Output }],
285
270
  activitiesList: [{ type: Input }]
286
271
  };
@@ -290,4 +275,4 @@ __decorate([
290
275
  __decorate([
291
276
  InputBoolean()
292
277
  ], ComponentActivityListComponent.prototype, "noFreeTasks", void 0);
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWFjdGl2aXR5LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb3Blbi1hY3Rpdml0eS1saXN0L2NvbXBvbmVudC1hY3Rpdml0eS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFBRSxXQUFXLEVBQ3pCLEtBQUssRUFFTCxNQUFNLEVBRU4sWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUV4RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUNoRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUN0RixPQUFPLEVBRUwsa0NBQWtDLEVBQ25DLE1BQU0sb0RBQW9ELENBQUM7QUFDNUQsT0FBTyxFQUNMLGlDQUFpQyxFQUNsQyxNQUFNLDhFQUE4RSxDQUFDO0FBQ3RGLE9BQU8sRUFFTCwrQkFBK0IsRUFDaEMsTUFBTSw2REFBNkQsQ0FBQztBQW9GckUsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQWdIM0U7UUFFTSxL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LENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFDLFNBQVMsRUFBRSxnQ0FBZ0MsRUFBQyxDQUFDLENBQUM7d0JBQ3hFLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztxQkFDakUsQ0FBQztpQkFDTDthQUNKOzs7O21DQU9JLFlBQVksU0FBQyxpQ0FBaUM7d0JBRzlDLFdBQVcsU0FBQyxrQ0FBa0M7b0JBSzlDLEtBQUs7a0JBVUwsS0FBSzt3QkFVTCxLQUFLOzBCQUlMLEtBQUs7MEJBSUwsS0FBSzswQkFHTCxLQUFLO3lCQUdMLEtBQUs7d0NBR0wsS0FBSzswQ0FHTCxLQUFLO21DQUdMLEtBQUs7c0NBR0wsS0FBSzttRUFHTCxLQUFLO2dDQUdMLEtBQUs7c0NBR0wsS0FBSztzQ0FHTCxLQUFLOzRCQUdMLE1BQU07b0NBR04sTUFBTTswQkFHTixNQUFNOzBCQUdOLE1BQU07a0NBR04sTUFBTTsyQkFHTixNQUFNOzZDQUdOLE1BQU07NkJBMkNOLEtBQUs7O0FBcEdOO0lBREMsWUFBWSxFQUFFO2lFQUNtQjtBQUlsQztJQURDLFlBQVksRUFBRTttRUFDcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcclxuaW1wb3J0IHtCYXNlQWN0aXZpdHlMaXN0Q29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2Jhc2Utb3Blbi1hY3Rpdml0eS1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7QWN0aXZpdHl9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9hY3Rpdml0eS5ib1wiO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbn0gZnJvbSBcIi4uLy4uL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvclwiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtBY3Rpdml0eVR5cGV9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2FjdGl2aXR5LXR5cGVcIjtcclxuaW1wb3J0IHtBY3Rpdml0eVZpZXdNb2RlbH0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2FjdGl2aXR5LXZpZXctbW9kZWxcIjtcclxuaW1wb3J0IHtQZXJzb25hbEFjdGl2aXR5VGFiRW51bX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vcGVyc29uYWwtYWN0aXZpdHktdGFiLmVudW1cIjtcclxuaW1wb3J0IHtBY3Rpdml0eVNvcnRUeXBlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9hY3Rpdml0eS1zb3J0LXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge1xyXG4gIE9wZXJhdGlvbkNhbGxiYWNrU2ltcGxlRnVuY3Rpb24sXHJcbiAgT3BlcmF0aW9uV2l0aEFsd2F5c1N1Y2Nlc3NDYWxsYmFja1xyXG59IGZyb20gXCIuLi8uLi9pbnRlcmZhY2Uvb3BlcmF0aW9uLWNhbGxiYWNrLXNpbXBsZS1mdW5jdGlvblwiO1xyXG5pbXBvcnQge1xyXG4gIFBlcnNvbmFsQWN0aXZpdHlPdmVydmlld0NvbXBvbmVudFxyXG59IGZyb20gXCIuL2NvbXBvbmVudHMvcGVyc29uYWwtYWN0aXZpdHktb3ZlcnZpZXcvcGVyc29uYWwtYWN0aXZpdHktb3ZlcnZpZXcuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgT3BlcmF0aW9uQ2FsbGJhY2tGdW5jdGlvbldpdGhWYWxpZGF0aW9uLFxyXG4gIE9wZXJhdGlvbldpdGhWYWxpZGF0aW9uQ2FsbGJhY2tcclxufSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlL29wZXJhdGlvbi1jYWxsYmFjay1mdW5jdGlvbi13aXRoLXZhbGlkYXRpb25cIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImNvLWNvbXBvbmVudC1hY3Rpdml0eS1saXN0XCIsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICAgIDxjby1hY3Rpdml0eS1saXN0LWhlYWRlclxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidBQ1RJVklUSUVTJ1wiXHJcbiAgICAgICAgICAgICAgICBbdGFibGVdPVwidGFibGVcIlxyXG4gICAgICAgICAgICAgICAgW2tleV09XCJrZXlcIlxyXG4gICAgICAgICAgICAgICAgWyhzaG93VXNlcmdyb3VwQWN0aXZpdGllcyldPVwic2hvd1VzZXJncm91cEFjdGl2aXRpZXNcIlxyXG4gICAgICAgICAgICAgICAgWyhzZWFyY2hUZXh0KV09XCJzZWFyY2hUZXh0XCJcclxuICAgICAgICAgICAgICAgIChwZXJpb2RGaWx0ZXJDbGlja2VkKT1cImRvRmlsdGVyQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChzZWFyY2hUZXh0Q2hhbmdlKT1cImFwcGx5RmlsdGVyKClcIlxyXG4gICAgICAgICAgICAgICAgKHNob3dVc2VyZ3JvdXBBY3Rpdml0aWVzQ2hhbmdlKT1cInNob3dVc2VyZ3JvdXBBY3Rpdml0aWVzQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgW3NldEhhc1BhdXNlZE5vdGlmaWNhdGlvbnNGb3JXb3JrZmxvd1Byb2Nlc3NPcGVyYXRpb25dPVwic2V0SGFzUGF1c2VkTm90aWZpY2F0aW9uc0ZvcldvcmtmbG93UHJvY2Vzc09wZXJhdGlvblwiXHJcbiAgICAgICAgPjwvY28tYWN0aXZpdHktbGlzdC1oZWFkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGl2aXR5LWxpc3QtY29udGVudFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aXZpdHktd3JhcHBlclwiIFtAc2hvd0hpZGVUYWJdPVwiYWN0aXZlVGFiXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aXZpdHktdGFiLWNvbnRlbnQgbWluaS1zY3JvbGxiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpdml0eUxpc3RWaWV3TW9kZWwgb2YgcHJpdmF0ZUFjdGl2aXR5TGlzdFZpZXdNb2RlbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1jb2xsYXBzaWJsZSAqbmdJZj1cImFjdGl2aXR5TGlzdFZpZXdNb2RlbC5zaG93aW5nXCIgI2NvbGxhcHNlYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJUaXRsZV09XCJhY3Rpdml0eUxpc3RWaWV3TW9kZWwubGFiZWwgKyAnICcgKyBhY3Rpdml0eUxpc3RWaWV3TW9kZWwuYW1vdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGV4cGFuZGVkKV09XCJhY3Rpdml0eUxpc3RWaWV3TW9kZWwuZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGl2aXR5Vmlld01vZGVsIG9mIGFjdGl2aXR5TGlzdFZpZXdNb2RlbC5hY3Rpdml0aWVzOyB0cmFja0J5OiB0cmFja0J5Rm47IGxldCBpbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tY29tcG9uZW50LWFjdGl2aXR5LW92ZXJ2aWV3ICpuZ0lmPVwiYWN0aXZpdHlWaWV3TW9kZWwuc2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaXJlR2VuZXJpY1RyaWdnZXJPcGVyYXRpb25dPVwiZmlyZUdlbmVyaWNUcmlnZ2VyT3BlcmF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpcmVUcmlnZ2VyT3BlcmF0aW9uXT1cImZpcmVUcmlnZ2VyT3BlcmF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbkZpcmVUcmlnZ2VyT3BlcmF0aW9uXT1cImNhbkZpcmVUcmlnZ2VyT3BlcmF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3TW9kZWxdPVwiYWN0aXZpdHlWaWV3TW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJSZWxhdGlvbklkXT1cInJlbGF0aW9uSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJHcm91cElkXT1cInVzZXJHcm91cElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2NrVGFza09wZXJhdGlvbl09XCJsb2NrVGFza09wZXJhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVsZXRlQWN0aXZpdHlPcGVyYXRpb25dPVwiZGVsZXRlQWN0aXZpdHlPcGVyYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Vwc2VydEFjdGl2aXR5T3BlcmF0aW9uXT1cInVwc2VydEFjdGl2aXR5T3BlcmF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpdml0eUNoYW5nZSk9XCJoYW5kbGVDaGFuZ2VkQWN0aXZpdHkoaW5kZXgsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5RGVsZXRlZCk9XCJkZWxldGVBY3Rpdml0eSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZW5lcmljVHJpZ2dlckZpcmVkKT1cImhhbmRsZUdlbmVyaWNUcmlnZ2VyRmlyZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJpZ2dlckZpcmVkKT1cImhhbmRsZVRyaWdnZXJGaXJlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rQ2xpY2tlZCk9XCJsaW5rQ2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1DcmVhdGVkKT1cImhhbmRsZUZvcm1DcmVhdGlvbigpXCI+PC9jby1jb21wb25lbnQtYWN0aXZpdHktb3ZlcnZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWNvbGxhcHNpYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aXZpdHktdGFiLWNvbnRlbnQgbWluaS1zY3JvbGxiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpdml0eUxpc3RWaWV3TW9kZWwgb2YgcHJpdmF0ZURlbGVnYXRlZEFjdGl2aXR5TGlzdFZpZXdNb2RlbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWNvbGxhcHNpYmxlICpuZ0lmPVwiYWN0aXZpdHlMaXN0Vmlld01vZGVsLnNob3dpbmdcIiAjY29sbGFwc2VhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyVGl0bGVdPVwiYWN0aXZpdHlMaXN0Vmlld01vZGVsLmxhYmVsICsgJyAnICsgYWN0aXZpdHlMaXN0Vmlld01vZGVsLmFtb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGV4cGFuZGVkKV09XCJhY3Rpdml0eUxpc3RWaWV3TW9kZWwuZXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGl2aXR5Vmlld01vZGVsIG9mIGFjdGl2aXR5TGlzdFZpZXdNb2RlbC5hY3Rpdml0aWVzOyB0cmFja0J5OiB0cmFja0J5Rm47IGxldCBpbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tY29tcG9uZW50LWFjdGl2aXR5LW92ZXJ2aWV3ICpuZ0lmPVwiYWN0aXZpdHlWaWV3TW9kZWwuc2hvd2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlyZUdlbmVyaWNUcmlnZ2VyT3BlcmF0aW9uXT1cImZpcmVHZW5lcmljVHJpZ2dlck9wZXJhdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlyZVRyaWdnZXJPcGVyYXRpb25dPVwiZmlyZVRyaWdnZXJPcGVyYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbkZpcmVUcmlnZ2VyT3BlcmF0aW9uXT1cImNhbkZpcmVUcmlnZ2VyT3BlcmF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3TW9kZWxdPVwiYWN0aXZpdHlWaWV3TW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJSZWxhdGlvbklkXT1cInJlbGF0aW9uSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJHcm91cElkXT1cInVzZXJHcm91cElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpdml0eUNoYW5nZSk9XCJoYW5kbGVDaGFuZ2VkQWN0aXZpdHkoaW5kZXgsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5RGVsZXRlZCk9XCJkZWxldGVBY3Rpdml0eSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZW5lcmljVHJpZ2dlckZpcmVkKT1cImhhbmRsZUdlbmVyaWNUcmlnZ2VyRmlyZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJpZ2dlckZpcmVkKT1cImhhbmRsZVRyaWdnZXJGaXJlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rQ2xpY2tlZCk9XCJsaW5rQ2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1DcmVhdGVkKT1cImhhbmRsZUZvcm1DcmVhdGlvbigpXCI+PC9jby1jb21wb25lbnQtYWN0aXZpdHktb3ZlcnZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1jb2xsYXBzaWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgICBhbmltYXRpb25zOiBbXHJcbiAgICAgICAgdHJpZ2dlcihcInNob3dIaWRlQ29udGVudFwiLCBbXHJcbiAgICAgICAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7dHJhbnNmb3JtOiBcInNjYWxlWSgwKVwiLCBvcGFjaXR5OiAwfSkpLFxyXG4gICAgICAgICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJzY2FsZVkoMSlcIiwgb3BhY2l0eTogMX0pKSxcclxuICAgICAgICAgICAgdHJhbnNpdGlvbihgdm9pZCA8PT4gKmAsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKSlcclxuICAgICAgICBdKSxcclxuICAgICAgICB0cmlnZ2VyKFwic2hvd0hpZGVUYWJcIiwgW1xyXG4gICAgICAgICAgICBzdGF0ZShcIlRPRE9cIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDApXCJ9KSksXHJcbiAgICAgICAgICAgIHN0YXRlKFwiREVMRUdBVEVEXCIsIHN0eWxlKHt0cmFuc2Zvcm06IFwidHJhbnNsYXRlWChjYWxjKC0xMDAlIC0gMjBweCkpXCJ9KSksXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oYFRPRE8gPD0+IERFTEVHQVRFRGAsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKSlcclxuICAgICAgICBdKVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QWN0aXZpdHlMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUFjdGl2aXR5TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGFiczogdHlwZW9mIFBlcnNvbmFsQWN0aXZpdHlUYWJFbnVtID0gUGVyc29uYWxBY3Rpdml0eVRhYkVudW07XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuICAgIHB1YmxpYyByZWFkb25seSBhY3Rpdml0eUNsYXNzOiB0eXBlb2YgQWN0aXZpdHkgPSBBY3Rpdml0eTtcclxuICAgIHB1YmxpYyByZWFkb25seSBhY3Rpdml0eVNvcnRUeXBlOiB0eXBlb2YgQWN0aXZpdHlTb3J0VHlwZSA9IEFjdGl2aXR5U29ydFR5cGU7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihQZXJzb25hbEFjdGl2aXR5T3ZlcnZpZXdDb21wb25lbnQpXHJcbiAgICBwdWJsaWMgYWN0aXZpdHlPdmVydmlld0xpc3Q6IFF1ZXJ5TGlzdDxQZXJzb25hbEFjdGl2aXR5T3ZlcnZpZXdDb21wb25lbnQ+O1xyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWNvbXBvbmVudC1hY3Rpdml0eS1saXN0XCIpXHJcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB0YWJsZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fdGFibGUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmdldFRoZUFjdGl2aXRpZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHRhYmxlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGtleSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fa2V5ID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5nZXRUaGVBY3Rpdml0aWVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBrZXkoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fa2V5O1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBoaWRlVGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgbm9GcmVlVGFza3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGN1c3RvbVRpdGxlOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB1c2VyR3JvdXBJZDogbnVtYmVyO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVsYXRpb25JZDogbnVtYmVyO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY29tcG9uZW50QWN0aXZpdGllc01ldGhvZDogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmaXJlR2VuZXJpY1RyaWdnZXJPcGVyYXRpb246IE9wZXJhdGlvbkNhbGxiYWNrRnVuY3Rpb25XaXRoVmFsaWRhdGlvbiA9IE9wZXJhdGlvbldpdGhWYWxpZGF0aW9uQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmaXJlVHJpZ2dlck9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tGdW5jdGlvbldpdGhWYWxpZGF0aW9uID0gT3BlcmF0aW9uV2l0aFZhbGlkYXRpb25DYWxsYmFjaztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNhbkZpcmVUcmlnZ2VyT3BlcmF0aW9uOiBPcGVyYXRpb25DYWxsYmFja1NpbXBsZUZ1bmN0aW9uID0gT3BlcmF0aW9uV2l0aEFsd2F5c1N1Y2Nlc3NDYWxsYmFjaztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldEhhc1BhdXNlZE5vdGlmaWNhdGlvbnNGb3JXb3JrZmxvd1Byb2Nlc3NPcGVyYXRpb246IE9wZXJhdGlvbkNhbGxiYWNrRnVuY3Rpb25XaXRoVmFsaWRhdGlvbiA9IE9wZXJhdGlvbldpdGhWYWxpZGF0aW9uQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsb2NrVGFza09wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkZWxldGVBY3Rpdml0eU9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB1cHNlcnRBY3Rpdml0eU9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgb3BlbkxpbmtDbGljazogRXZlbnRFbWl0dGVyPEFjdGl2aXR5PiA9IG5ldyBFdmVudEVtaXR0ZXI8QWN0aXZpdHk+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgYW1vdW50QWN0aXZpdHlDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGxpbmtDbGlja2VkOiBFdmVudEVtaXR0ZXI8e21vZHVsZTogc3RyaW5nLCBpZDogc3RyaW5nfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHttb2R1bGU6IHN0cmluZywgaWQ6IHN0cmluZ30+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZm9ybUNyZWF0ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBnZW5lcmljVHJpZ2dlckZpcmVkOiBFdmVudEVtaXR0ZXI8QWN0aXZpdHk+ID0gbmV3IEV2ZW50RW1pdHRlcjxBY3Rpdml0eT4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyB0cmlnZ2VyRmlyZWQ6IEV2ZW50RW1pdHRlcjxBY3Rpdml0eT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGl2aXR5PigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNob3dVc2VyZ3JvdXBBY3Rpdml0aWVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHB1YmxpYyBhY3RpdmVUYWI6IFBlcnNvbmFsQWN0aXZpdHlUYWJFbnVtID0gUGVyc29uYWxBY3Rpdml0eVRhYkVudW0uVE9ETztcclxuXHJcbiAgICAvKnB1YmxpYyBhY3Rpdml0eVNvcnRMaXN0OiBib29sZWFuW10gPSBbXTsqL1xyXG5cclxuICAgIHB1YmxpYyBhY3Rpdml0eUxpc3Q6IEFjdGl2aXR5Vmlld01vZGVsW10gPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIHZtOiBBY3Rpdml0eVZpZXdNb2RlbCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHZtLmFjdGl2aXR5LmlkICsgJ18nICsgdm0uYWN0aXZpdHkud29ya2Zsb3cuY29tYmluZWRUcmlnZ2VySWRzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3RhYmxlOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIF9rZXk6IHN0cmluZztcclxuICAgIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgICBwcml2YXRlIF9hY3Rpdml0aWVzTGlzdDogQWN0aXZpdHlbXSA9IFtdO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vVE9ETyBkbyB3ZSBzdGlsbCBuZWVkIHRoaXM/XHJcbiAgICAvKmFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLnRhc2tDcmVhdGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldFRoZUFjdGl2aXRpZXMoKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS50YXNrTW9kaWZpZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGhlQWN0aXZpdGllcygpO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLnRyaWdnZXJGaXJlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRUaGVBY3Rpdml0aWVzKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH0qL1xyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIH1cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGFjdGl2aXRpZXNMaXN0KGFsbEFjdGl2aXRpZXM6IEFjdGl2aXR5W10pIHtcclxuICAgICAgdGhpcy5fYWN0aXZpdGllc0xpc3QgPSBhbGxBY3Rpdml0aWVzO1xyXG4gICAgICBpZiAoYWxsQWN0aXZpdGllcykge1xyXG4gICAgICAgIHRoaXMuYWN0aXZpdGllcyA9IHRoaXMubm9GcmVlVGFza3MgPyBhbGxBY3Rpdml0aWVzLmZpbHRlcihhYSA9PiAhYWEudGFzayAmJiBhYS5hY3Rpdml0eVR5cGUgIT09IEFjdGl2aXR5VHlwZS5Xb3JrZmxvd1Rhc2spIDpcclxuICAgICAgICAgIGFsbEFjdGl2aXRpZXMuZmlsdGVyKGFhID0+IGFhLmFjdGl2aXR5VHlwZSAhPT0gQWN0aXZpdHlUeXBlLldvcmtmbG93VGFzayk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpdml0aWVzID0gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGFjdGl2aXRpZXNMaXN0KCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWN0aXZpdGllc0xpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLypwdWJsaWMgYXN5bmMgZ2V0QWN0aXZpdGllcygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAodGhpcy50YWJsZSAmJiB0aGlzLmtleSkge1xyXG4gICAgICAgICAgICBjb25zdCBhbGxBY3Rpdml0aWVzOiBBY3Rpdml0eVtdID0gYXdhaXQgdGhpcy5fYWN0aXZpdHlSZXBvLmdldENvbXBvbmVudEFjdGl2aXRpZXModGhpcy50YWJsZSwgdGhpcy5rZXkpO1xyXG4gICAgICAgICAgICBpZiAoYWxsQWN0aXZpdGllcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpdml0aWVzID0gdGhpcy5ub0ZyZWVUYXNrcyA/IGFsbEFjdGl2aXRpZXMuZmlsdGVyKGFhID0+ICFhYS50YXNrICYmIGFhLmFjdGl2aXR5VHlwZSAhPT0gQWN0aXZpdHlUeXBlLldvcmtmbG93VGFzaykgOlxyXG4gICAgICAgICAgICAgICAgICAgIGFsbEFjdGl2aXRpZXMuZmlsdGVyKGFhID0+IGFhLmFjdGl2aXR5VHlwZSAhPT0gQWN0aXZpdHlUeXBlLldvcmtmbG93VGFzayk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2aXRpZXMgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFtb3VudEFjdGl2aXR5Q2hhbmdlZC5uZXh0KHRoaXMuYWN0aXZpdGllcy5sZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgIH0qL1xyXG5cclxuXHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldERlbGVnYXRlZEFjdGl2aXRpZXMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgLy8gY29uc3QgYWxsQWN0aXZpdGllczogQWN0aXZpdHlbXSA9IGF3YWl0IHRoaXMuX2FjdGl2aXR5UmVwby5nZXRDb21wb25lbnRBY3Rpdml0aWVzKHRoaXMudGFibGUsIHRoaXMua2V5KTtcclxuICAgICAgICAvLyB0aGlzLmRlbGVnYXRlZEFjdGl2aXRpZXMgPSBhbGxBY3Rpdml0aWVzID8gYWxsQWN0aXZpdGllcy5maWx0ZXIoYWEgPT4gYWEuYWN0aXZpdHlUeXBlICE9PSBBY3Rpdml0eVR5cGUuV29ya2Zsb3dUYXNrKSA6IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIC8qLy9UT0RPIHRoZXJlIHdlcmUgYWxyZWFkeSB1bnVzZWQgYmVmb3JlIHRoZSBtb3ZlLiBDYW4gdGhleSBnbz9cclxuICAgIHB1YmxpYyBoYW5kbGVPcGVuTGluayhhY3Rpdml0eTogQWN0aXZpdHkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9wZW5MaW5rQ2xpY2submV4dChhY3Rpdml0eSk7XHJcbiAgICB9Ki9cclxuXHJcbiAgICBwdWJsaWMgc2hvd1VzZXJncm91cEFjdGl2aXRpZXNDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaG93VXNlcmdyb3VwQWN0aXZpdGllc0NoYW5nZWQubmV4dCgpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZVRyaWdnZXJGaXJlZChhY3Rpdml0eTogQWN0aXZpdHkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyaWdnZXJGaXJlZC5uZXh0KGFjdGl2aXR5KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlR2VuZXJpY1RyaWdnZXJGaXJlZChhY3Rpdml0eTogQWN0aXZpdHkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdlbmVyaWNUcmlnZ2VyRmlyZWQubmV4dChhY3Rpdml0eSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUZvcm1DcmVhdGlvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1DcmVhdGVkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2hhbmdlZEFjdGl2aXR5KGlkeDogbnVtYmVyLCBhY3Rpdml0eTogQWN0aXZpdHkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hY3Rpdml0aWVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZpdGllc1tpZHhdID0gYWN0aXZpdHk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkZWxldGVBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmFtb3VudEFjdGl2aXR5Q2hhbmdlZC5uZXh0KHRoaXMuYWN0aXZpdGllcy5sZW5ndGggLSAxKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmFjdGl2aXR5TGlzdCA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkb0ZpbHRlckNsaWNrZWQoZmlsdGVyOiB7IGZyb206IERhdGUsIHRvOiBEYXRlIH0pOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmlsdGVyLmZyb20gJiYgZmlsdGVyLnRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRnJvbSA9IG5ldyBEYXRlKGZpbHRlci5mcm9tKTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGcm9tLnNldEhvdXJzKDApO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckZyb20uc2V0TWludXRlcygwKTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGcm9tLnNldFNlY29uZHMoMCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVG8gPSBuZXcgRGF0ZShmaWx0ZXIudG8pO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclRvLnNldEhvdXJzKDApO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclRvLnNldE1pbnV0ZXMoMCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVG8uc2V0U2Vjb25kcygwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckZyb20gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVG8gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlbkZpcnN0VGFzaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuYWN0aXZpdGllcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRhc2tzOiBBY3Rpdml0eVtdID0gdGhpcy5hY3Rpdml0aWVzLmZpbHRlcigodmFsdWUgPT4gdmFsdWUuSXNUYXNrKSk7XHJcbiAgICAgICAgaWYgKHRhc2tzICYmIHRhc2tzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgYWN0aXZpdHlPdmVydmlld3M6IFBlcnNvbmFsQWN0aXZpdHlPdmVydmlld0NvbXBvbmVudFtdID0gdGhpcy5hY3Rpdml0eU92ZXJ2aWV3TGlzdC50b0FycmF5KCk7XHJcbiAgICAgICAgICAgIGlmIChhY3Rpdml0eU92ZXJ2aWV3cyAmJiBhY3Rpdml0eU92ZXJ2aWV3cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlbjogbnVtYmVyID0gYWN0aXZpdHlPdmVydmlld3MubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2aXR5T3ZlcnZpZXdzW2ldLmFjdGl2aXR5LmdldElkKCkgPT09IHRhc2tzWzBdLmdldElkKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlPdmVydmlld3NbaV0uc3RhcnRNb2RpZnlpbmdUYXNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWFjdGl2aXR5LWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb3Blbi1hY3Rpdml0eS1saXN0L2NvbXBvbmVudC1hY3Rpdml0eS1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFBRSxXQUFXLEVBQ3pCLEtBQUssRUFFTCxNQUFNLEVBRU4sWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUV4RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUNoRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUN0RixPQUFPLEVBRUwsa0NBQWtDLEVBQ25DLE1BQU0sb0RBQW9ELENBQUM7QUFDNUQsT0FBTyxFQUNMLGlDQUFpQyxFQUNsQyxNQUFNLDhFQUE4RSxDQUFDO0FBQ3RGLE9BQU8sRUFFTCwrQkFBK0IsRUFDaEMsTUFBTSw2REFBNkQsQ0FBQztBQUNyRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUE0RTNE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Q29udGVudCI6WyJpbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcclxuaW1wb3J0IHtCYXNlQWN0aXZpdHlMaXN0Q29tcG9uZW50fSBmcm9tIFwiLi9jb21wb25lbnRzL2Jhc2Utb3Blbi1hY3Rpdml0eS1saXN0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZHJlblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7QWN0aXZpdHl9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9hY3Rpdml0eS5ib1wiO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbn0gZnJvbSBcIi4uLy4uL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvclwiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtBY3Rpdml0eVR5cGV9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2FjdGl2aXR5LXR5cGVcIjtcclxuaW1wb3J0IHtBY3Rpdml0eVZpZXdNb2RlbH0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2FjdGl2aXR5LXZpZXctbW9kZWxcIjtcclxuaW1wb3J0IHtQZXJzb25hbEFjdGl2aXR5VGFiRW51bX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vcGVyc29uYWwtYWN0aXZpdHktdGFiLmVudW1cIjtcclxuaW1wb3J0IHtBY3Rpdml0eVNvcnRUeXBlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9hY3Rpdml0eS1zb3J0LXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge1xyXG4gIE9wZXJhdGlvbkNhbGxiYWNrU2ltcGxlRnVuY3Rpb24sXHJcbiAgT3BlcmF0aW9uV2l0aEFsd2F5c1N1Y2Nlc3NDYWxsYmFja1xyXG59IGZyb20gXCIuLi8uLi9pbnRlcmZhY2Uvb3BlcmF0aW9uLWNhbGxiYWNrLXNpbXBsZS1mdW5jdGlvblwiO1xyXG5pbXBvcnQge1xyXG4gIFBlcnNvbmFsQWN0aXZpdHlPdmVydmlld0NvbXBvbmVudFxyXG59IGZyb20gXCIuL2NvbXBvbmVudHMvcGVyc29uYWwtYWN0aXZpdHktb3ZlcnZpZXcvcGVyc29uYWwtYWN0aXZpdHktb3ZlcnZpZXcuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7XHJcbiAgT3BlcmF0aW9uQ2FsbGJhY2tGdW5jdGlvbldpdGhWYWxpZGF0aW9uLFxyXG4gIE9wZXJhdGlvbldpdGhWYWxpZGF0aW9uQ2FsbGJhY2tcclxufSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlL29wZXJhdGlvbi1jYWxsYmFjay1mdW5jdGlvbi13aXRoLXZhbGlkYXRpb25cIjtcclxuaW1wb3J0IHtTaGFyZWRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9zaGFyZWQuc2VydmljZVwiO1xyXG5pbXBvcnQge1RhYmxlTmFtZX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vdGFibGUtbmFtZS5lbnVtXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJjby1jb21wb25lbnQtYWN0aXZpdHktbGlzdFwiLFxyXG4gICAgdGVtcGxhdGU6IGBcclxuICAgICAgICA8Y28tYWN0aXZpdHktbGlzdC1oZWFkZXJcclxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQUNUSVZJVElFUydcIlxyXG4gICAgICAgICAgICAgICAgW3RhYmxlXT1cInRhYmxlXCJcclxuICAgICAgICAgICAgICAgIFtrZXldPVwia2V5XCJcclxuICAgICAgICAgICAgICAgIFsoc2hvd1VzZXJncm91cEFjdGl2aXRpZXMpXT1cInNob3dVc2VyZ3JvdXBBY3Rpdml0aWVzXCJcclxuICAgICAgICAgICAgICAgIFsoc2VhcmNoVGV4dCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAocGVyaW9kRmlsdGVyQ2xpY2tlZCk9XCJkb0ZpbHRlckNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoc2VhcmNoVGV4dENoYW5nZSk9XCJhcHBseUZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgIChzaG93VXNlcmdyb3VwQWN0aXZpdGllc0NoYW5nZSk9XCJzaG93VXNlcmdyb3VwQWN0aXZpdGllc0NoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgIFtzZXRIYXNQYXVzZWROb3RpZmljYXRpb25zRm9yV29ya2Zsb3dQcm9jZXNzT3BlcmF0aW9uXT1cInNldEhhc1BhdXNlZE5vdGlmaWNhdGlvbnNGb3JXb3JrZmxvd1Byb2Nlc3NPcGVyYXRpb25cIlxyXG4gICAgICAgID48L2NvLWFjdGl2aXR5LWxpc3QtaGVhZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpdml0eS1saXN0LWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGl2aXR5LXdyYXBwZXJcIiBbQHNob3dIaWRlVGFiXT1cImFjdGl2ZVRhYlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGl2aXR5LXRhYi1jb250ZW50IG1pbmktc2Nyb2xsYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aXZpdHlMaXN0Vmlld01vZGVsIG9mIHByaXZhdGVBY3Rpdml0eUxpc3RWaWV3TW9kZWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8Y28tY29sbGFwc2libGUgKm5nSWY9XCJhY3Rpdml0eUxpc3RWaWV3TW9kZWwuc2hvd2luZ1wiICNjb2xsYXBzZWFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyVGl0bGVdPVwiYWN0aXZpdHlMaXN0Vmlld01vZGVsLmxhYmVsICsgJyAnICsgYWN0aXZpdHlMaXN0Vmlld01vZGVsLmFtb3VudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhleHBhbmRlZCldPVwiYWN0aXZpdHlMaXN0Vmlld01vZGVsLmV4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpdml0eVZpZXdNb2RlbCBvZiBhY3Rpdml0eUxpc3RWaWV3TW9kZWwuYWN0aXZpdGllczsgdHJhY2tCeTogdHJhY2tCeUZuOyBsZXQgaW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWNvbXBvbmVudC1hY3Rpdml0eS1vdmVydmlldyAqbmdJZj1cImFjdGl2aXR5Vmlld01vZGVsLnNob3dpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpZXdNb2RlbF09XCJhY3Rpdml0eVZpZXdNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlclJlbGF0aW9uSWRdPVwicmVsYXRpb25JZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlckdyb3VwSWRdPVwidXNlckdyb3VwSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5Q2hhbmdlKT1cImhhbmRsZUNoYW5nZWRBY3Rpdml0eShpbmRleCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZpdHlEZWxldGVkKT1cImRlbGV0ZUFjdGl2aXR5KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdlbmVyaWNUcmlnZ2VyRmlyZWQpPVwiaGFuZGxlR2VuZXJpY1RyaWdnZXJGaXJlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmlnZ2VyRmlyZWQpPVwiaGFuZGxlVHJpZ2dlckZpcmVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmtDbGlja2VkKT1cImxpbmtDbGlja2VkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybUNyZWF0ZWQpPVwiaGFuZGxlRm9ybUNyZWF0aW9uKClcIj48L2NvLWNvbXBvbmVudC1hY3Rpdml0eS1vdmVydmlldz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDwvY28tY29sbGFwc2libGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpdml0eS10YWItY29udGVudCBtaW5pLXNjcm9sbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFjdGl2aXR5TGlzdFZpZXdNb2RlbCBvZiBwcml2YXRlRGVsZWdhdGVkQWN0aXZpdHlMaXN0Vmlld01vZGVsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y28tY29sbGFwc2libGUgKm5nSWY9XCJhY3Rpdml0eUxpc3RWaWV3TW9kZWwuc2hvd2luZ1wiICNjb2xsYXBzZWFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJUaXRsZV09XCJhY3Rpdml0eUxpc3RWaWV3TW9kZWwubGFiZWwgKyAnICcgKyBhY3Rpdml0eUxpc3RWaWV3TW9kZWwuYW1vdW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZXhwYW5kZWQpXT1cImFjdGl2aXR5TGlzdFZpZXdNb2RlbC5leHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aXZpdHlWaWV3TW9kZWwgb2YgYWN0aXZpdHlMaXN0Vmlld01vZGVsLmFjdGl2aXRpZXM7IHRyYWNrQnk6IHRyYWNrQnlGbjsgbGV0IGluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1jb21wb25lbnQtYWN0aXZpdHktb3ZlcnZpZXcgKm5nSWY9XCJhY3Rpdml0eVZpZXdNb2RlbC5zaG93aW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3TW9kZWxdPVwiYWN0aXZpdHlWaWV3TW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJSZWxhdGlvbklkXT1cInJlbGF0aW9uSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJHcm91cElkXT1cInVzZXJHcm91cElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpdml0eUNoYW5nZSk9XCJoYW5kbGVDaGFuZ2VkQWN0aXZpdHkoaW5kZXgsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGl2aXR5RGVsZXRlZCk9XCJkZWxldGVBY3Rpdml0eSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZW5lcmljVHJpZ2dlckZpcmVkKT1cImhhbmRsZUdlbmVyaWNUcmlnZ2VyRmlyZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJpZ2dlckZpcmVkKT1cImhhbmRsZVRyaWdnZXJGaXJlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rQ2xpY2tlZCk9XCJsaW5rQ2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1DcmVhdGVkKT1cImhhbmRsZUZvcm1DcmVhdGlvbigpXCI+PC9jby1jb21wb25lbnQtYWN0aXZpdHktb3ZlcnZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1jb2xsYXBzaWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIGAsXHJcbiAgICBhbmltYXRpb25zOiBbXHJcbiAgICAgICAgdHJpZ2dlcihcInNob3dIaWRlQ29udGVudFwiLCBbXHJcbiAgICAgICAgICAgIHN0YXRlKFwidm9pZFwiLCBzdHlsZSh7dHJhbnNmb3JtOiBcInNjYWxlWSgwKVwiLCBvcGFjaXR5OiAwfSkpLFxyXG4gICAgICAgICAgICBzdGF0ZShcIipcIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJzY2FsZVkoMSlcIiwgb3BhY2l0eTogMX0pKSxcclxuICAgICAgICAgICAgdHJhbnNpdGlvbihgdm9pZCA8PT4gKmAsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKSlcclxuICAgICAgICBdKSxcclxuICAgICAgICB0cmlnZ2VyKFwic2hvd0hpZGVUYWJcIiwgW1xyXG4gICAgICAgICAgICBzdGF0ZShcIlRPRE9cIiwgc3R5bGUoe3RyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKDApXCJ9KSksXHJcbiAgICAgICAgICAgIHN0YXRlKFwiREVMRUdBVEVEXCIsIHN0eWxlKHt0cmFuc2Zvcm06IFwidHJhbnNsYXRlWChjYWxjKC0xMDAlIC0gMjBweCkpXCJ9KSksXHJcbiAgICAgICAgICAgIHRyYW5zaXRpb24oYFRPRE8gPD0+IERFTEVHQVRFRGAsIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluLW91dFwiKSlcclxuICAgICAgICBdKVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QWN0aXZpdHlMaXN0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUFjdGl2aXR5TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGFiczogdHlwZW9mIFBlcnNvbmFsQWN0aXZpdHlUYWJFbnVtID0gUGVyc29uYWxBY3Rpdml0eVRhYkVudW07XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuICAgIHB1YmxpYyByZWFkb25seSBhY3Rpdml0eUNsYXNzOiB0eXBlb2YgQWN0aXZpdHkgPSBBY3Rpdml0eTtcclxuICAgIHB1YmxpYyByZWFkb25seSBhY3Rpdml0eVNvcnRUeXBlOiB0eXBlb2YgQWN0aXZpdHlTb3J0VHlwZSA9IEFjdGl2aXR5U29ydFR5cGU7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihQZXJzb25hbEFjdGl2aXR5T3ZlcnZpZXdDb21wb25lbnQpXHJcbiAgICBwdWJsaWMgYWN0aXZpdHlPdmVydmlld0xpc3Q6IFF1ZXJ5TGlzdDxQZXJzb25hbEFjdGl2aXR5T3ZlcnZpZXdDb21wb25lbnQ+O1xyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLWNvbXBvbmVudC1hY3Rpdml0eS1saXN0XCIpXHJcbiAgICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB0YWJsZSh2YWx1ZTogVGFibGVOYW1lKSB7XHJcbiAgICAgICAgdGhpcy5fdGFibGUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmdldFRoZUFjdGl2aXRpZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHRhYmxlKCk6IFRhYmxlTmFtZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGtleSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fa2V5ID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5nZXRUaGVBY3Rpdml0aWVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBrZXkoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fa2V5O1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBoaWRlVGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgbm9GcmVlVGFza3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGN1c3RvbVRpdGxlOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB1c2VyR3JvdXBJZDogbnVtYmVyO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVsYXRpb25JZDogbnVtYmVyO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY29tcG9uZW50QWN0aXZpdGllc01ldGhvZDogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXRIYXNQYXVzZWROb3RpZmljYXRpb25zRm9yV29ya2Zsb3dQcm9jZXNzT3BlcmF0aW9uOiBPcGVyYXRpb25DYWxsYmFja0Z1bmN0aW9uV2l0aFZhbGlkYXRpb24gPSBPcGVyYXRpb25XaXRoVmFsaWRhdGlvbkNhbGxiYWNrO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIG9wZW5MaW5rQ2xpY2s6IEV2ZW50RW1pdHRlcjxBY3Rpdml0eT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGl2aXR5PigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGFtb3VudEFjdGl2aXR5Q2hhbmdlZDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBsaW5rQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHttb2R1bGU6IHN0cmluZywgaWQ6IHN0cmluZ30+ID0gbmV3IEV2ZW50RW1pdHRlcjx7bW9kdWxlOiBzdHJpbmcsIGlkOiBzdHJpbmd9PigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGZvcm1DcmVhdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVmcmVzaFJlcXVlc3RlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNob3dVc2VyZ3JvdXBBY3Rpdml0aWVzQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHB1YmxpYyBhY3RpdmVUYWI6IFBlcnNvbmFsQWN0aXZpdHlUYWJFbnVtID0gUGVyc29uYWxBY3Rpdml0eVRhYkVudW0uVE9ETztcclxuXHJcbiAgICAvKnB1YmxpYyBhY3Rpdml0eVNvcnRMaXN0OiBib29sZWFuW10gPSBbXTsqL1xyXG5cclxuICAgIHB1YmxpYyBhY3Rpdml0eUxpc3Q6IEFjdGl2aXR5Vmlld01vZGVsW10gPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIHZtOiBBY3Rpdml0eVZpZXdNb2RlbCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHZtLmFjdGl2aXR5LmlkICsgJ18nICsgdm0uYWN0aXZpdHkud29ya2Zsb3cuY29tYmluZWRUcmlnZ2VySWRzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3RhYmxlOiBUYWJsZU5hbWU7XHJcbiAgICBwcml2YXRlIF9rZXk6IHN0cmluZztcclxuICAgIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgICBwcml2YXRlIF9hY3Rpdml0aWVzTGlzdDogQWN0aXZpdHlbXSA9IFtdO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgdGhpcy5nZXRUaGVBY3Rpdml0aWVzKCk7XHJcbiAgICAgICAgLyp0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS50YXNrQ3JlYXRlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRUaGVBY3Rpdml0aWVzKCk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2UudGFza01vZGlmaWVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldFRoZUFjdGl2aXRpZXMoKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApOyovXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgLy90aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldEFjdGl2aXRpZXMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlICYmIHRoaXMua2V5KSB7XHJcbiAgICAgICAgY29uc3QgYWxsQWN0aXZpdGllczogQWN0aXZpdHlbXSA9IGF3YWl0IHRoaXMuc2hhcmVkU2VydmljZS5nZXRDb21wb25lbnRBY3Rpdml0aWVzV2l0aG91dFJlbGF0aW9uRmlsdGVyaW5nKHRoaXMudGFibGUsIHRoaXMua2V5KTtcclxuICAgICAgICBpZiAoYWxsQWN0aXZpdGllcykge1xyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0aWVzID0gdGhpcy5ub0ZyZWVUYXNrcyA/IGFsbEFjdGl2aXRpZXMuZmlsdGVyKGFhID0+ICFhYS50YXNrICYmIGFhLmFjdGl2aXR5VHlwZSAhPT0gQWN0aXZpdHlUeXBlLldvcmtmbG93VGFzaykgOlxyXG4gICAgICAgICAgICBhbGxBY3Rpdml0aWVzLmZpbHRlcihhYSA9PiBhYS5hY3Rpdml0eVR5cGUgIT09IEFjdGl2aXR5VHlwZS5Xb3JrZmxvd1Rhc2spO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXRpZXMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hbW91bnRBY3Rpdml0eUNoYW5nZWQubmV4dCh0aGlzLmFjdGl2aXRpZXMubGVuZ3RoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGFjdGl2aXRpZXNMaXN0KGFsbEFjdGl2aXRpZXM6IEFjdGl2aXR5W10pIHtcclxuICAgICAgdGhpcy5fYWN0aXZpdGllc0xpc3QgPSBhbGxBY3Rpdml0aWVzO1xyXG4gICAgICBpZiAoYWxsQWN0aXZpdGllcykge1xyXG4gICAgICAgIHRoaXMuYWN0aXZpdGllcyA9IHRoaXMubm9GcmVlVGFza3MgPyBhbGxBY3Rpdml0aWVzLmZpbHRlcihhYSA9PiAhYWEudGFzayAmJiBhYS5hY3Rpdml0eVR5cGUgIT09IEFjdGl2aXR5VHlwZS5Xb3JrZmxvd1Rhc2spIDpcclxuICAgICAgICAgIGFsbEFjdGl2aXRpZXMuZmlsdGVyKGFhID0+IGFhLmFjdGl2aXR5VHlwZSAhPT0gQWN0aXZpdHlUeXBlLldvcmtmbG93VGFzayk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpdml0aWVzID0gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGFjdGl2aXRpZXNMaXN0KCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWN0aXZpdGllc0xpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldERlbGVnYXRlZEFjdGl2aXRpZXMoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgLy8gY29uc3QgYWxsQWN0aXZpdGllczogQWN0aXZpdHlbXSA9IGF3YWl0IHRoaXMuX2FjdGl2aXR5UmVwby5nZXRDb21wb25lbnRBY3Rpdml0aWVzKHRoaXMudGFibGUsIHRoaXMua2V5KTtcclxuICAgICAgICAvLyB0aGlzLmRlbGVnYXRlZEFjdGl2aXRpZXMgPSBhbGxBY3Rpdml0aWVzID8gYWxsQWN0aXZpdGllcy5maWx0ZXIoYWEgPT4gYWEuYWN0aXZpdHlUeXBlICE9PSBBY3Rpdml0eVR5cGUuV29ya2Zsb3dUYXNrKSA6IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIC8qLy9UT0RPIHRoZXJlIHdlcmUgYWxyZWFkeSB1bnVzZWQgYmVmb3JlIHRoZSBtb3ZlLiBDYW4gdGhleSBnbz9cclxuICAgIHB1YmxpYyBoYW5kbGVPcGVuTGluayhhY3Rpdml0eTogQWN0aXZpdHkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9wZW5MaW5rQ2xpY2submV4dChhY3Rpdml0eSk7XHJcbiAgICB9Ki9cclxuXHJcbiAgICBwdWJsaWMgc2hvd1VzZXJncm91cEFjdGl2aXRpZXNDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaG93VXNlcmdyb3VwQWN0aXZpdGllc0NoYW5nZWQubmV4dCgpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZVRyaWdnZXJGaXJlZChhY3Rpdml0eTogQWN0aXZpdHkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdldFRoZUFjdGl2aXRpZXMoKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hSZXF1ZXN0ZWQuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVHZW5lcmljVHJpZ2dlckZpcmVkKGFjdGl2aXR5OiBBY3Rpdml0eSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZ2V0VGhlQWN0aXZpdGllcygpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaFJlcXVlc3RlZC5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhbmRsZUZvcm1DcmVhdGlvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1DcmVhdGVkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQ2hhbmdlZEFjdGl2aXR5KGlkeDogbnVtYmVyLCBhY3Rpdml0eTogQWN0aXZpdHkpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hY3Rpdml0aWVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZpdGllc1tpZHhdID0gYWN0aXZpdHk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkZWxldGVBY3Rpdml0eShhY3Rpdml0eTogQWN0aXZpdHkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmFtb3VudEFjdGl2aXR5Q2hhbmdlZC5uZXh0KHRoaXMuYWN0aXZpdGllcy5sZW5ndGggLSAxKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIucmVzZXQoKTtcclxuICAgICAgICB0aGlzLmFjdGl2aXR5TGlzdCA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkb0ZpbHRlckNsaWNrZWQoZmlsdGVyOiB7IGZyb206IERhdGUsIHRvOiBEYXRlIH0pOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmlsdGVyLmZyb20gJiYgZmlsdGVyLnRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRnJvbSA9IG5ldyBEYXRlKGZpbHRlci5mcm9tKTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGcm9tLnNldEhvdXJzKDApO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckZyb20uc2V0TWludXRlcygwKTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJGcm9tLnNldFNlY29uZHMoMCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVG8gPSBuZXcgRGF0ZShmaWx0ZXIudG8pO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclRvLnNldEhvdXJzKDApO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclRvLnNldE1pbnV0ZXMoMCk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVG8uc2V0U2Vjb25kcygwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlckZyb20gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVG8gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXIoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlbkZpcnN0VGFzaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuYWN0aXZpdGllcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRhc2tzOiBBY3Rpdml0eVtdID0gdGhpcy5hY3Rpdml0aWVzLmZpbHRlcigodmFsdWUgPT4gdmFsdWUuSXNUYXNrKSk7XHJcbiAgICAgICAgaWYgKHRhc2tzICYmIHRhc2tzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgYWN0aXZpdHlPdmVydmlld3M6IFBlcnNvbmFsQWN0aXZpdHlPdmVydmlld0NvbXBvbmVudFtdID0gdGhpcy5hY3Rpdml0eU92ZXJ2aWV3TGlzdC50b0FycmF5KCk7XHJcbiAgICAgICAgICAgIGlmIChhY3Rpdml0eU92ZXJ2aWV3cyAmJiBhY3Rpdml0eU92ZXJ2aWV3cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxlbjogbnVtYmVyID0gYWN0aXZpdHlPdmVydmlld3MubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2aXR5T3ZlcnZpZXdzW2ldLmFjdGl2aXR5LmdldElkKCkgPT09IHRhc2tzWzBdLmdldElkKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlPdmVydmlld3NbaV0uc3RhcnRNb2RpZnlpbmdUYXNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==