@bizdoc/core 1.10.0-next.3 → 1.10.0-next.7

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 (79) hide show
  1. package/assets/bizdoc-schema.json +7 -1
  2. package/assets/themes/brown.min.css +1 -1
  3. package/assets/themes/deep-purple-light-blue.min.css +1 -1
  4. package/assets/themes/default.min.css +1 -1
  5. package/assets/themes/green.min.css +1 -1
  6. package/assets/themes/indigo.min.css +1 -1
  7. package/esm2020/lib/browse/browse-items.component.mjs +3 -3
  8. package/esm2020/lib/compose/compose.mobile.component.mjs +25 -15
  9. package/esm2020/lib/compose/compose.pane.component.mjs +3 -3
  10. package/esm2020/lib/compose/trace/flow.component.mjs +23 -8
  11. package/esm2020/lib/core/animations.mjs +7 -1
  12. package/esm2020/lib/core/controls/combination-picker-body.mjs +5 -2
  13. package/esm2020/lib/core/functions.mjs +4 -1
  14. package/esm2020/lib/core/mailbox.service.mjs +20 -23
  15. package/esm2020/lib/core/models.mjs +1 -1
  16. package/esm2020/lib/core/pipes/translate.pipe.mjs +17 -2
  17. package/esm2020/lib/cube/chart/chart.component.mjs +5 -5
  18. package/esm2020/lib/cube/cube-info.service.mjs +5 -5
  19. package/esm2020/lib/cube/cube-view.component.mjs +11 -10
  20. package/esm2020/lib/cube/grid/spreadsheet.component.mjs +1 -1
  21. package/esm2020/lib/cube/matrix/matrix.base.mjs +1 -1
  22. package/esm2020/lib/cube/matrix/matrix.component.mjs +9 -9
  23. package/esm2020/lib/cube/matrix/matrix.mobile.component.mjs +4 -4
  24. package/esm2020/lib/cube/matrix/matrix.pane.component.mjs +4 -4
  25. package/esm2020/lib/cube/matrix/table.component.mjs +207 -149
  26. package/esm2020/lib/cube/parallel/parallel.component.mjs +8 -8
  27. package/esm2020/lib/cube/pivot/pivot.component.mjs +3 -3
  28. package/esm2020/lib/cube/sum/sum.component.mjs +13 -13
  29. package/esm2020/lib/cube/view.mobile.component.mjs +4 -7
  30. package/esm2020/lib/cube/view.pane.component.mjs +3 -3
  31. package/esm2020/lib/dashboard/cube/cube-analysis.base.mjs +1 -1
  32. package/esm2020/lib/dashboard/cube/cube-analysis.widget.mjs +3 -1
  33. package/esm2020/lib/dashboard/cube/cube-chart.widget.mjs +2 -2
  34. package/esm2020/lib/dashboard/cube/documents.widget.mjs +1 -1
  35. package/esm2020/lib/dashboard/cube/filter/filter.component.mjs +10 -6
  36. package/esm2020/lib/home/home.mobile.component.mjs +3 -3
  37. package/esm2020/lib/modules/chart.module.mjs +4 -4
  38. package/esm2020/lib/notifications/notifications-table.component.mjs +3 -3
  39. package/esm2020/lib/routes.desktop.mjs +2 -2
  40. package/esm2020/lib/routes.mobile.mjs +9 -9
  41. package/esm2020/lib/shared.module.mjs +4 -4
  42. package/esm2020/lib/views/cube/chart.component.mjs +5 -5
  43. package/esm2020/lib/views/cube/matrix.component.mjs +6 -6
  44. package/esm2020/lib/views/cube/parallel.component.mjs +3 -3
  45. package/esm2020/lib/views/cube/pivot.component.mjs +3 -3
  46. package/esm2020/lib/views/cube/sum.component.mjs +3 -3
  47. package/esm2020/lib/views/cube/view.component.mjs +3 -3
  48. package/esm2020/lib/views/views.mobile.component.mjs +10 -14
  49. package/esm2020/public-api.mjs +1 -1
  50. package/fesm2015/bizdoc-core.mjs +397 -296
  51. package/fesm2015/bizdoc-core.mjs.map +1 -1
  52. package/fesm2020/bizdoc-core.mjs +404 -297
  53. package/fesm2020/bizdoc-core.mjs.map +1 -1
  54. package/lib/compose/compose.mobile.component.d.ts +2 -2
  55. package/lib/compose/trace/flow.component.d.ts +1 -1
  56. package/lib/core/animations.d.ts +1 -0
  57. package/lib/core/controls/combination-picker-body.d.ts +4 -6
  58. package/lib/core/functions.d.ts +1 -0
  59. package/lib/core/mailbox.service.d.ts +4 -8
  60. package/lib/core/models.d.ts +2 -2
  61. package/lib/core/pipes/translate.pipe.d.ts +9 -1
  62. package/lib/cube/chart/chart.component.d.ts +2 -2
  63. package/lib/cube/cube-info.service.d.ts +3 -6
  64. package/lib/cube/cube-view.component.d.ts +2 -2
  65. package/lib/cube/matrix/matrix.base.d.ts +3 -7
  66. package/lib/cube/matrix/matrix.component.d.ts +3 -3
  67. package/lib/cube/matrix/table.component.d.ts +21 -31
  68. package/lib/cube/parallel/parallel.component.d.ts +2 -2
  69. package/lib/cube/pivot/pivot.component.d.ts +2 -2
  70. package/lib/cube/sum/sum.component.d.ts +3 -3
  71. package/lib/dashboard/cube/cube-analysis.base.d.ts +1 -1
  72. package/lib/shared.module.d.ts +1 -1
  73. package/lib/views/cube/chart.component.d.ts +2 -2
  74. package/lib/views/cube/matrix.component.d.ts +5 -15
  75. package/lib/views/cube/pivot.component.d.ts +1 -1
  76. package/lib/views/cube/sum.component.d.ts +2 -2
  77. package/lib/views/views.mobile.component.d.ts +1 -5
  78. package/package.json +2 -2
  79. package/public-api.d.ts +1 -1
@@ -66,7 +66,6 @@ export class FlowViewComponent extends TraceBase {
66
66
  async _initialize() {
67
67
  const { connectors, nodes, indicators } = await this._prepare();
68
68
  this.diagram && this.diagram.destroy();
69
- //this.layout.type = 'None';
70
69
  this.diagram = new Diagram({
71
70
  width: '100%',
72
71
  height: 380,
@@ -80,7 +79,6 @@ export class FlowViewComponent extends TraceBase {
80
79
  getConnectorDefaults: this.connDefaults.bind(this),
81
80
  getNodeDefaults: this.nodeDefaults.bind(this),
82
81
  }, this._elementRef.nativeElement);
83
- //this.layout.type = 'ComplexHierarchicalTree';
84
82
  this.diagram.doLayout();
85
83
  indicators.forEach((n, i) => {
86
84
  const parent = this.diagram.getNodeObject(n.addInfo.parentId);
@@ -90,7 +88,6 @@ export class FlowViewComponent extends TraceBase {
90
88
  this.diagram.add(n);
91
89
  });
92
90
  this.diagram.fitToPage();
93
- //this.diagram.layoutAnimateModule.;
94
91
  interval(60000).pipe(takeUntil(this._destroy)).subscribe(() => this._refresh());
95
92
  }
96
93
  _refresh() {
@@ -173,7 +170,7 @@ export class FlowViewComponent extends TraceBase {
173
170
  /** */
174
171
  async _prepare() {
175
172
  const indicators = [], connectors = [], nodes = [];
176
- this._submitted = this.model.issued || this.model.log.filter(l => l.type === 'Submit')[0].time;
173
+ this._issued = this.model.issued || this.model.log.filter(l => l.type === 'Submit')[0].time;
177
174
  const nodeMap = {};
178
175
  let zIndex = 500;
179
176
  var i = 0;
@@ -185,7 +182,7 @@ export class FlowViewComponent extends TraceBase {
185
182
  continue;
186
183
  nodeMap[node.id] = node;
187
184
  let recipients = this.model.recipients.
188
- filter(r => r.nodeId === node.id && r.received >= this._submitted);
185
+ filter(r => r.nodeId === node.id && r.received >= this._issued);
189
186
  if (recipients.length) {
190
187
  recipients = recipients.sort(a => a.replied ? -1 : 1);
191
188
  for (var r = 0; r < recipients.length; r++) {
@@ -289,6 +286,24 @@ export class FlowViewComponent extends TraceBase {
289
286
  parentId: nod.id
290
287
  }
291
288
  });
289
+ // if (this.model.log.filter(l => l.time > this._submitted && l.type === 'Escalation' && l.recipientId === recipient.id).length) {
290
+ // const escalateIndicator = {
291
+ // id: nod.id + 'escalate',
292
+ // shape: {
293
+ // type: 'Path',
294
+ // data: ESCALATED_PATH,
295
+ // align: this._session.inverse ? 'XMinYMax' : 'XMaxYMax'
296
+ // },
297
+ // style: {
298
+ // fill: this._session.getAccent(900)
299
+ // },
300
+ // addInfo: {
301
+ // indicator: true,
302
+ // parentId: nod.id
303
+ // } as NodeInfoModel
304
+ // } as NodeModel;
305
+ // indicators.push(escalateIndicator);
306
+ // }
292
307
  }
293
308
  }
294
309
  else {
@@ -408,7 +423,7 @@ export class FlowViewComponent extends TraceBase {
408
423
  if (node.error)
409
424
  tooltip.error = node.error;
410
425
  let annotation, state;
411
- const log = this.model.log.filter(l => l.nodeId === node.id && l.time >= this._submitted);
426
+ const log = this.model.log.filter(l => l.nodeId === node.id && l.time >= this._issued);
412
427
  const stateLog = log.find(l => l.type === 'StateChange');
413
428
  if (stateLog) {
414
429
  state = this._session.profile.states.find(s => s.name === stateLog.state);
@@ -548,7 +563,7 @@ export class FlowViewComponent extends TraceBase {
548
563
  tooltip.substituting = this._translate.personalize('SubstitutingFor', u.gender, u.name);
549
564
  }
550
565
  }
551
- const escalations = this.model.log.filter(l => l.time > this.model.issued && l.type === 'Escalation' && l.recipientId === recipient.id);
566
+ const escalations = this.model.log.filter(l => l.time > this._issued && l.type === 'Escalation' && l.recipientId === recipient.id);
552
567
  if (escalations.length) {
553
568
  const userIds = escalations.map(e => e.userId);
554
569
  const users = await this._accounts.getAll(userIds).toPromise();
@@ -611,4 +626,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
611
626
  }], connectorType: [{
612
627
  type: Input
613
628
  }] } });
614
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvdHJhY2UvZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBMEMsWUFBWSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSw4QkFBOEIsRUFBcUIsWUFBWSxFQUFFLFdBQVcsRUFBOEcscUJBQXFCLEVBQUUsZUFBZSxFQUFtQixlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsYSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBT3JELE9BQU8sQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQSxxREFBcUQsQ0FBQyxDQUFDO0FBRXhILE1BQU0sWUFBWSxHQUFHLHVGQUF1RixFQUMxRyxRQUFRLEdBQUcsa0dBQWtHLEVBQzdHLGNBQWMsR0FBRyxtUUFBbVEsRUFDcFIsYUFBYSxHQUFHLHNUQUFzVCxDQUFDO0FBV3pVLHlCQUF5QjtBQUN6QixNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQXFDOUMseUJBQXlCO0lBQ3pCLFlBQW9CLFNBQXlCLEVBQVUsUUFBd0IsRUFBVSxVQUE0QixFQUMzRyxTQUE2QixFQUM3QixXQUF1QyxFQUMvQyxHQUFlO1FBQ2YsS0FBSyxD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OytCQUNFLGFBQWEsWUFDYixFQUFFLGlCQUVHLENBQUMsOEJBQThCLENBQUMsUUFDekM7d0JBQ0osR0FBRyxFQUFFLEtBQUs7cUJBQ1g7b1BBSVEsS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOb2RlTW9kZWwsIENvbm5lY3Rvck1vZGVsLCBMYXlvdXRNb2RlbCwgRGlhZ3JhbVRvb2xzLCBEaWFncmFtLCBEaWFncmFtQ29uc3RyYWludHMsIENvbXBsZXhIaWVyYXJjaGljYWxUcmVlLCBDb21wbGV4SGllcmFyY2hpY2FsVHJlZVNlcnZpY2UsIENvbm5lY3RvckJyaWRnaW5nLCBCcG1uRGlhZ3JhbXMsIERhdGFCaW5kaW5nLCBTY3JvbGxTZXR0aW5nc01vZGVsLCBTbmFwU2V0dGluZ3NNb2RlbCwgU2VnbWVudHMsIExpbmVSb3V0aW5nLCBUcmVlSW5mbywgSU1vdXNlRXZlbnRBcmdzLCBMaW5lRGlzdHJpYnV0aW9uLCBDb25uZWN0aW9uUG9pbnRPcmlnaW4sIFNuYXBDb25zdHJhaW50cywgTGF5b3V0QW5pbWF0aW9uLCBOb2RlQ29uc3RyYWludHMgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1kaWFncmFtcyc7XHJcbmltcG9ydCB7IGludGVydmFsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHsgRG9jdW1lbnRNb2RlbCwgUmVjaXBpZW50LCBOb2RlSW5mbywgR2VuZGVyLCBGbG93Tm9kZSwgVXNlckluZm8sIFN0YXRlLCBDb25uZWN0b3JJbmZvIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IGdldFdhcm4gfSBmcm9tICcuLi8uLi9jb3JlL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IFRyYWNlQmFzZSwgU1RBUlRfTk9ERSB9IGZyb20gJy4vdHJhY2UuYmFzZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdWJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9odWIuc2VydmljZSc7XHJcbmltcG9ydCB7IER1cmF0aW9uRm9ybWF0UGlwZSB9IGZyb20gJy4uLy4uL2NvcmUvcGlwZXMvZHVyYXRpb24tZm9ybWF0LnBpcGUnO1xyXG5cclxuRGlhZ3JhbS5JbmplY3QoQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUsIEJwbW5EaWFncmFtcywgRGF0YUJpbmRpbmcvKiwgTGF5b3V0QW5pbWF0aW9uLCBMaW5lUm91dGluZywgQ29ubmVjdG9yQnJpZGdpbmcqLyk7XHJcblxyXG5jb25zdCBQRU5ESU5HX1BBVEggPSAnTTE4LDIybC0wLjAxLTZMMTQsMTJsMy45OS00LjAxTDE4LDJINnY2bDQsNGwtNCwzLjk5VjIySDE4eiBNOCw3LjVWNGg4djMuNWwtNCw0TDgsNy41eicsXHJcbiAgRllJX1BBVEggPSAnTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6JyxcclxuICBFU0NBTEFURURfUEFUSCA9ICdNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3Vjh6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3eicsXHJcbiAgV0FSTk5JTkdfUEFUSCA9ICdNIDEzLjc2MzczNSwxLjg0MzM3MzUgSCA2LjMwMzczNDkgbCAtNS4yNyw1LjI3IHYgNy40NTk5OTk1IGwgNS4yNyw1LjI3IGggNy40NjAwMDAxIGwgNS4yNywtNS4yNyBWIDcuMTEzMzczNSBaIG0gLTMuNzMsMTQuMjk5OTk5NSBjIC0wLjcyMDAwMDEsMCAtMS4zMDAwMDAxLC0wLjU4IC0xLjMwMDAwMDEsLTEuMyAwLC0wLjcyIDAuNTgsLTEuMyAxLjMwMDAwMDEsLTEuMyAwLjcyLDAgMS4zLDAuNTggMS4zLDEuMyAwLDAuNzIgLTAuNTgsMS4zIC0xLjMsMS4zIHogbSAxLC00LjMgSCA5LjAzMzczNDkgViA1Ljg0MzM3MzUgaCAyLjAwMDAwMDEgeic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1mbG93JyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmxvdy5jb21wb25lbnQuc2NzcyddLFxyXG4gIHZpZXdQcm92aWRlcnM6IFtDb21wbGV4SGllcmFyY2hpY2FsVHJlZVNlcnZpY2VdLFxyXG4gIGhvc3Q6IHtcclxuICAgIGRpcjogJ2x0cidcclxuICB9XHJcbn0pXHJcbi8qKiBmbG93LXZpZXcgY29tcG9uZW50Ki9cclxuZXhwb3J0IGNsYXNzIEZsb3dWaWV3Q29tcG9uZW50IGV4dGVuZHMgVHJhY2VCYXNlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIG1vZGVsOiBEb2N1bWVudE1vZGVsPGFueT47XHJcbiAgQElucHV0KCkgY29ubmVjdG9yVHlwZTogU2VnbWVudHMgPSAnT3J0aG9nb25hbCc7XHJcbiAgZGlhZ3JhbTogRGlhZ3JhbTtcclxuICByZWFkb25seSB0b29sOiBEaWFncmFtVG9vbHMgPSBEaWFncmFtVG9vbHMuWm9vbVBhbjtcclxuICByZWFkb25seSBkaWFncmFtQ29uc3RyYWludHM6IERpYWdyYW1Db25zdHJhaW50cyA9XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuRGVmYXVsdCB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuUGFuIHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5MaW5lUm91dGluZyB8XHJcbiAgICBEaWFncmFtQ29uc3RyYWludHMuQnJpZGdpbmc7XHJcbiAgcHVibGljIHJlYWRvbmx5IGxheW91dCA9IHtcclxuICAgIHR5cGU6ICdDb21wbGV4SGllcmFyY2hpY2FsVHJlZScsXHJcbiAgICBjb25uZWN0aW9uUG9pbnRPcmlnaW46IENvbm5lY3Rpb25Qb2ludE9yaWdpbi5EaWZmZXJlbnRQb2ludCxcclxuICAgIGhvcml6b250YWxTcGFjaW5nOiA1MCxcclxuICAgIHZlcnRpY2FsU3BhY2luZzogNTAsXHJcbiAgICB2ZXJ0aWNhbEFsaWdubWVudDogJ1RvcCcsXHJcbiAgICBjb25uZWN0aW9uRGlyZWN0aW9uOiAnT3JpZW50YXRpb24nLFxyXG4gICAgb3JpZW50YXRpb246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdSaWdodFRvTGVmdCcgOiAnTGVmdFRvUmlnaHQnLFxyXG4gICAgbWFyZ2luOiB7IGxlZnQ6IDEwLCByaWdodDogMTAsIHRvcDogMTAsIGJvdHRvbTogMTAgfVxyXG4gIH0gYXMgTGF5b3V0TW9kZWw7XHJcblxyXG4gIHJlYWRvbmx5IHNjcm9sbFNldHRpbmdzID0ge1xyXG4gICAgbWluWm9vbTogLjUsXHJcbiAgICBjYW5BdXRvU2Nyb2xsOiB0cnVlLFxyXG4gICAgY3VycmVudFpvb206IDEuMixcclxuICAgIHBhZGRpbmc6IHsgdG9wOiAwLCBib3R0b206IDAgfSxcclxuICAgIGF1dG9TY3JvbGxCb3JkZXI6IHsgdG9wOiAwLCBib3R0b206IDAgfSxcclxuICAgIG1heFpvb206IDIuNVxyXG4gIH0gYXMgU2Nyb2xsU2V0dGluZ3NNb2RlbDtcclxuXHJcbiAgcmVhZG9ubHkgc25hcFNldHRpbmdzID0ge1xyXG4gICAgY29uc3RyYWludHM6IFNuYXBDb25zdHJhaW50cy5Ob25lLFxyXG4gICAgZ3JpZFR5cGU6ICdEb3RzJ1xyXG4gIH0gYXMgU25hcFNldHRpbmdzTW9kZWw7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlndXJhdGlvbjogeyBbbmFtZTogc3RyaW5nXTogRmxvd05vZGUgfSA9IHt9O1xyXG4gIHByaXZhdGUgX3N1Ym1pdHRlZDogRGF0ZTtcclxuICBwcml2YXRlIF9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgLyoqIHdvcmtmbG93LXZpZXcgY3RvciAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjY291bnRzOiBBY2NvdW50U2VydmljZSwgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsIHByaXZhdGUgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2R1cmF0aW9uOiBEdXJhdGlvbkZvcm1hdFBpcGUsXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgIGh1YjogSHViU2VydmljZSkge1xyXG4gICAgc3VwZXIoaHViKTtcclxuICAgIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ub2Rlcy5mb3JFYWNoKG4gPT5cclxuICAgICAgdGhpcy5fY29uZmlndXJhdGlvbltuLm5hbWVdID0gbik7XHJcbiAgICBfc2Vzc2lvbi50aGVtZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuXHJcbiAgICAgIHN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fYWNjZW50Q29sb3IgPSB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCgpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuX2luaXRpYWxpemUoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfaW5pdGlhbGl6ZSgpIHtcclxuICAgIGNvbnN0IHsgY29ubmVjdG9ycywgbm9kZXMsIGluZGljYXRvcnMgfSA9IGF3YWl0IHRoaXMuX3ByZXBhcmUoKTtcclxuICAgIHRoaXMuZGlhZ3JhbSAmJiB0aGlzLmRpYWdyYW0uZGVzdHJveSgpO1xyXG4gICAgLy90aGlzLmxheW91dC50eXBlID0gJ05vbmUnO1xyXG4gICAgdGhpcy5kaWFncmFtID0gbmV3IERpYWdyYW0oe1xyXG4gICAgICB3aWR0aDogJzEwMCUnLFxyXG4gICAgICBoZWlnaHQ6IDM4MCxcclxuICAgICAgbm9kZXMsXHJcbiAgICAgIGNvbm5lY3RvcnMsXHJcbiAgICAgIGxheW91dDogdGhpcy5sYXlvdXQsXHJcbiAgICAgIHRvb2w6IHRoaXMudG9vbCxcclxuICAgICAgc2Nyb2xsU2V0dGluZ3M6IHRoaXMuc2Nyb2xsU2V0dGluZ3MsXHJcbiAgICAgIHNuYXBTZXR0aW5nczogdGhpcy5zbmFwU2V0dGluZ3MsXHJcbiAgICAgIGNvbnN0cmFpbnRzOiB0aGlzLmRpYWdyYW1Db25zdHJhaW50cyxcclxuICAgICAgZ2V0Q29ubmVjdG9yRGVmYXVsdHM6IHRoaXMuY29ubkRlZmF1bHRzLmJpbmQodGhpcyksXHJcbiAgICAgIGdldE5vZGVEZWZhdWx0czogdGhpcy5ub2RlRGVmYXVsdHMuYmluZCh0aGlzKSxcclxuICAgIH0sIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcbiAgICAvL3RoaXMubGF5b3V0LnR5cGUgPSAnQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUnO1xyXG4gICAgdGhpcy5kaWFncmFtLmRvTGF5b3V0KCk7XHJcbiAgICBpbmRpY2F0b3JzLmZvckVhY2goKG4sIGkpID0+IHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5kaWFncmFtLmdldE5vZGVPYmplY3QoKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS5wYXJlbnRJZCk7XHJcbiAgICAgIG4ub2Zmc2V0WCA9IHBhcmVudC5vZmZzZXRYICsgKHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/IC0yNSA6IDI1KTtcclxuICAgICAgbi5vZmZzZXRZID0gcGFyZW50Lm9mZnNldFkgKyAyNTtcclxuICAgICAgbi56SW5kZXggPSAxMDAwICsgaTtcclxuICAgICAgdGhpcy5kaWFncmFtLmFkZChuKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFncmFtLmZpdFRvUGFnZSgpO1xyXG4gICAgLy90aGlzLmRpYWdyYW0ubGF5b3V0QW5pbWF0ZU1vZHVsZS47XHJcbiAgICBpbnRlcnZhbCg2MDAwMCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PlxyXG4gICAgICB0aGlzLl9yZWZyZXNoKClcclxuICAgICk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3JlZnJlc2goKSB7XHJcbiAgICBzdXBlci5yZXNldEVzdGltYXRlVGltZSgpO1xyXG4gICAgdGhpcy5kaWFncmFtLm5vZGVzLmZvckVhY2gobiA9PiB7XHJcbiAgICAgIGNvbnN0IHsgbm9kZSwgcmVjaXBpZW50IH0gPSBuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbDtcclxuICAgICAgaWYgKHJlY2lwaWVudCkge1xyXG4gICAgICAgIGlmICghcmVjaXBpZW50LnJlcGxpZWQgJiYgcmVjaXBpZW50LnBlbmRpbmcpIHtcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuZXN0aW1hdGUpIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgICAgICAgZWxzZSBpZiAobm9kZS5zdGFuZGFyZFRpbWUpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZiA9IG5vZGUuc3RhbmRhcmRUaW1lIC0gZGF5anMoKS5kaWZmKG5vZGUudGltZSwgJ3MnKTtcclxuICAgICAgICAgICAgaWYgKGRpZmYgPiAwKVxyXG4gICAgICAgICAgICAgIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKGRpZmYpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG4udG9vbHRpcC5jb250ZW50ID0gdGhpcy5fdG9vbHRpcCgobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS5lc3RpbWF0ZSlcclxuICAgICAgICAgIChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpLFxyXG4gICAgICAgICAgICBuLnRvb2x0aXAuY29udGVudCA9IHRoaXMuX3Rvb2x0aXAoKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBwdWJsaWMgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMubmdPbkNoYW5nZXMobnVsbCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBvYmpcclxuICAgKi9cclxuICBwdWJsaWMgbm9kZURlZmF1bHRzKG9iajogTm9kZU1vZGVsKTogTm9kZU1vZGVsIHtcclxuICAgIGNvbnN0IHsgcmVjaXBpZW50LCBub2RlLCBpbmRpY2F0b3IgfSA9IG9iai5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWw7XHJcblxyXG4gICAgaWYgKGluZGljYXRvcikge1xyXG4gICAgICBvYmoud2lkdGggPSBvYmouaGVpZ2h0ID0gMTU7XHJcbiAgICAgIG9iai5zdHlsZS5zdHJva2VXaWR0aCA9IDA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgb2JqLndpZHRoID0gb2JqLmhlaWdodCA9IDUwO1xyXG4gICAgICBpZiAob2JqLmFubm90YXRpb25zICYmIG9iai5hbm5vdGF0aW9ucy5sZW5ndGgpIG9iai5hbm5vdGF0aW9uc1swXS5zdHlsZS5jb2xvciA9IHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgICBpZiAobm9kZSAmJiBub2RlLmVzdGltYXRlKSB7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9ICcyIDInO1xyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VXaWR0aCA9IDE7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICAgICAgb2JqLnN0eWxlLmZpbGwgPSAndHJhbnNwYXJlbnQnO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VDb2xvciA9IHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICAgIG9iai5zdHlsZS5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgb2JqLnN0eWxlLmZpbGwgPSByZWNpcGllbnQgJiYgcmVjaXBpZW50LnBlbmRpbmcgPyB0aGlzLl9zZXNzaW9uLmdldEFjY2VudCg0MDApIDogJ3RyYW5zcGFyZW50JztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbm5lY3RvclxyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25uRGVmYXVsdHMoY29ubmVjdG9yOiBDb25uZWN0b3JNb2RlbCkge1xyXG4gICAgY29ubmVjdG9yLnR5cGUgPSB0aGlzLmNvbm5lY3RvclR5cGU7XHJcbiAgICBjb25uZWN0b3IuY29ybmVyUmFkaXVzID0gNjtcclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3IuaGVpZ2h0ID0gNztcclxuICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iud2lkdGggPSA3O1xyXG4gICAgaWYgKGNvbm5lY3Rvci50eXBlID09PSAnT3J0aG9nb25hbCcpXHJcbiAgICAgIGNvbm5lY3Rvci5zb3VyY2VQYWRkaW5nID0gY29ubmVjdG9yLnRhcmdldFBhZGRpbmcgPSAxO1xyXG4gICAgaWYgKChjb25uZWN0b3IuYWRkSW5mbyBhcyBDb25uZWN0b3JJbmZvTW9kZWwpLmVzdGltYXRlKSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VEYXNoQXJyYXkgPSAnMiAyJztcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZVdpZHRoID0gMTtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZUNvbG9yID1cclxuICAgICAgICBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPVxyXG4gICAgICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgIHRoaXMuX3Nlc3Npb24udGhlbWUuZGFyayA/ICd3aGl0ZScgOiAnYmxhY2snO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbm5lY3Rvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPSBjb25uZWN0b3IudGFyZ2V0RGVjb3JhdG9yLnN0eWxlLmZpbGwgPSB0aGlzLl9hY2NlbnRDb2xvcjtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZVdpZHRoID0gMjtcclxuICAgIH1cclxuICB9O1xyXG4gIC8qKiAqL1xyXG4gIHByaXZhdGUgYXN5bmMgX3ByZXBhcmUoKTogUHJvbWlzZTx7IG5vZGVzOiBOb2RlTW9kZWxbXTsgY29ubmVjdG9yczogQ29ubmVjdG9yTW9kZWxbXTsgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gfT4ge1xyXG4gICAgY29uc3QgaW5kaWNhdG9yczogTm9kZU1vZGVsW10gPSBbXSwgY29ubmVjdG9yczogQ29ubmVjdG9yTW9kZWxbXSA9IFtdLCBub2RlczogTm9kZU1vZGVsW10gPSBbXTtcclxuICAgIHRoaXMuX3N1Ym1pdHRlZCA9IHRoaXMubW9kZWwuaXNzdWVkIHx8IHRoaXMubW9kZWwubG9nLmZpbHRlcihsID0+IGwudHlwZSA9PT0gJ1N1Ym1pdCcpWzBdLnRpbWU7XHJcbiAgICBjb25zdCBub2RlTWFwID0ge307XHJcbiAgICBsZXQgekluZGV4ID0gNTAwO1xyXG4gICAgdmFyIGkgPSAwO1xyXG4gICAgd2hpbGUgKGkgPCB0aGlzLm1vZGVsLndvcmtmbG93Lm5vZGVzLmxlbmd0aCkge1xyXG4gICAgICBsZXQgbm9kZSA9IHRoaXMubW9kZWwud29ya2Zsb3cubm9kZXNbaV07XHJcbiAgICAgIGkrKztcclxuICAgICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLl9jb25maWd1cmF0aW9uW25vZGUudHlwZV07XHJcbiAgICAgIGlmIChjb25maWd1cmF0aW9uLnZpc2libGUgPT09IGZhbHNlKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICBub2RlTWFwW25vZGUuaWRdID0gbm9kZTtcclxuICAgICAgbGV0IHJlY2lwaWVudHMgPSB0aGlzLm1vZGVsLnJlY2lwaWVudHMuXHJcbiAgICAgICAgZmlsdGVyKHIgPT4gci5ub2RlSWQgPT09IG5vZGUuaWQgJiYgci5yZWNlaXZlZCA+PSB0aGlzLl9zdWJtaXR0ZWQpO1xyXG4gICAgICBpZiAocmVjaXBpZW50cy5sZW5ndGgpIHtcclxuICAgICAgICByZWNpcGllbnRzID0gcmVjaXBpZW50cy5zb3J0KGEgPT4gYS5yZXBsaWVkID8gLTEgOiAxKTtcclxuICAgICAgICBmb3IgKHZhciByID0gMDsgciA8IHJlY2lwaWVudHMubGVuZ3RoOyByKyspIHtcclxuICAgICAgICAgIGxldCByZWNpcGllbnQgPSByZWNpcGllbnRzW3JdO1xyXG4gICAgICAgICAgY29uc3QgeyBhbm5vdGF0aW9uLCB0b29sdGlwIH0gPSBhd2FpdCB0aGlzLl9ub3RlKG5vZGUsIHJlY2lwaWVudCk7XHJcbiAgICAgICAgICBjb25zdCBub2QgPSB7XHJcbiAgICAgICAgICAgIGlkOiByID09PSAwID8gbm9kZS5pZCA6IG5vZGUuaWQgKyByLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHNoYXBlOiB0aGlzLl9jb25maWd1cmF0aW9uW25vZGUudHlwZV0uc2hhcGUsXHJcbiAgICAgICAgICAgIHpJbmRleDogekluZGV4KyssXHJcbiAgICAgICAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICAgICAgICBjb250ZW50OiB0aGlzLl90b29sdGlwKHRvb2x0aXApLFxyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAnVG9wQ2VudGVyJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25zdHJhaW50czogTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCxcclxuICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgIHRvb2x0aXAsXHJcbiAgICAgICAgICAgICAgcmVjaXBpZW50LFxyXG4gICAgICAgICAgICAgIG5vZGVcclxuICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsLFxyXG4gICAgICAgICAgICBhbm5vdGF0aW9uczogW3tcclxuICAgICAgICAgICAgICBjb250ZW50OiBhbm5vdGF0aW9uLFxyXG4gICAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDQgfSxcclxuICAgICAgICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogJ1RvcCcsXHJcbiAgICAgICAgICAgICAgb2Zmc2V0OiB7XHJcbiAgICAgICAgICAgICAgICB5OiAxLFxyXG4gICAgICAgICAgICAgICAgeDogLjVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1dXHJcbiAgICAgICAgICB9IGFzIE5vZGVNb2RlbDtcclxuICAgICAgICAgIGlmIChyID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGVsLndvcmtmbG93LmNvbm5lY3RvcnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYy50YXJnZXRJZCA9PT0gbm9kZS5pZCkgY29ubmVjdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHNvdXJjZUlEOiBjLnNvdXJjZUlkLFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0SUQ6IG5vZC5pZCxcclxuICAgICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgICAgZXN0aW1hdGU6IGMuZXN0aW1hdGVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBpZiAoYy5zb3VyY2VJZCA9PT0gbm9kZS5pZCAmJiAhbm9kZS5meWkpXHJcbiAgICAgICAgICAgICAgICBjb25uZWN0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICBzb3VyY2VJRDogbm9kLmlkLFxyXG4gICAgICAgICAgICAgICAgICB0YXJnZXRJRDogYy50YXJnZXRJZCxcclxuICAgICAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGVzdGltYXRlOiBjLmVzdGltYXRlXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG5vZGVzLnB1c2gobm9kKTtcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuYWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5hY3Rpb25zLmZpbmQoYSA9PiBhLm5hbWUgPT09IHJlY2lwaWVudC5hY3Rpb24pO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uICYmIGFjdGlvbi5zaGFwZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGlvbkluZGljYXRvciA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAnYWN0aW9uJyxcclxuICAgICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgICAgZGF0YTogYWN0aW9uLnNoYXBlLFxyXG4gICAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCcsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgZmlsbDogYWN0aW9uLmNvbG9yIHx8IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDkwMClcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgICAgICAgaW5kaWNhdG9ycy5wdXNoKGFjdGlvbkluZGljYXRvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChyZWNpcGllbnQucGVuZGluZyAmJiAhcmVjaXBpZW50LmVzdGltYXRlKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAncGVuZGluZycsXHJcbiAgICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IFBFTkRJTkdfUEFUSCxcclxuICAgICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1heFlNYXgnIDogJ1hNaW5ZTWF4J1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgIGZpbGw6IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDkwMClcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBub2QuaWRcclxuICAgICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWwpO1xyXG4gICAgICAgICAgaWYgKG5vZGUuZnlpKVxyXG4gICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBub2QuaWQgKyAnZnlpJyxcclxuICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogRllJX1BBVEgsXHJcbiAgICAgICAgICAgICAgICBhbGlnbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1hNaW5ZTWF4JyA6ICdYTWF4WU1heCdcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiAnIzE5NzZkMidcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBub2QuaWRcclxuICAgICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgICAgfSBhcyBOb2RlTW9kZWxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgeyBzdGF0ZSwgYW5ub3RhdGlvbiwgdG9vbHRpcCB9ID0gYXdhaXQgdGhpcy5fc2hhcGUobm9kZSk7XHJcbiAgICAgICAgY29uc3QgeyBzaGFwZSB9ID0gY29uZmlndXJhdGlvbjtcclxuICAgICAgICBub2Rlcy5wdXNoKHtcclxuICAgICAgICAgIGlkOiBub2RlLmlkLFxyXG4gICAgICAgICAgc2hhcGUsXHJcbiAgICAgICAgICB6SW5kZXg6IHpJbmRleCsrLFxyXG4gICAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLl90b29sdGlwKHRvb2x0aXApLFxyXG4gICAgICAgICAgICBwb3NpdGlvbjogJ1RvcENlbnRlcidcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjb25zdHJhaW50czogT2JqZWN0LmtleXModG9vbHRpcCkubGVuZ3RoID8gTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQgfCBOb2RlQ29uc3RyYWludHMuVG9vbHRpcCA6IE5vZGVDb25zdHJhaW50cy5EZWZhdWx0LFxyXG4gICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICB0b29sdGlwLFxyXG4gICAgICAgICAgICBub2RlXHJcbiAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWwsXHJcbiAgICAgICAgICBhbm5vdGF0aW9uczogW3tcclxuICAgICAgICAgICAgY29udGVudDogYW5ub3RhdGlvbixcclxuICAgICAgICAgICAgb2Zmc2V0OiBzaGFwZS50eXBlID09PSAnUGF0aCcgPyB7XHJcbiAgICAgICAgICAgICAgeTogMVxyXG4gICAgICAgICAgICB9IDogeyB4OiAuNSB9LFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWdubWVudDogc2hhcGUudHlwZSA9PT0gJ1BhdGgnID8gJ1RvcCcgOiAnQ2VudGVyJ1xyXG4gICAgICAgICAgfV1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoc3RhdGUgJiYgc3RhdGUuc2hhcGUgJiYgIW5vZGUuZXN0aW1hdGUpXHJcbiAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICBpZDogbm9kZS5pZCArICdzdGF0ZScsXHJcbiAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgIGRhdGE6IHN0YXRlLnNoYXBlLFxyXG4gICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1heFlNYXgnIDogJ1hNaW5ZTWF4J1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgIGZpbGw6IHN0YXRlLmNvbG9yIHx8ICdibGFjaydcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5pZCxcclxuICAgICAgICAgICAgICBub2RlOiBub2RlXHJcbiAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKG5vZGUuZXJyb3IpIHtcclxuICAgICAgICAgIGNvbnN0IHdhcm5uaW5nSW5kaWNhdG9yID0ge1xyXG4gICAgICAgICAgICBpZDogbm9kZS5pZCArICdleGNlcHRpb24nLFxyXG4gICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAgICAgICBkYXRhOiBXQVJOTklOR19QQVRILFxyXG4gICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1pbllNYXgnIDogJ1hNYXhZTWF4J1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgIGZpbGw6IGdldFdhcm4oODAwKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiBub2RlLmlkXHJcbiAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgICBpbmRpY2F0b3JzLnB1c2god2Fybm5pbmdJbmRpY2F0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaSA9IDA7XHJcbiAgICBjb25zdCB7IGNvbm5lY3RvcnM6IGRjb25uZWN0b3JzIH0gPSB0aGlzLm1vZGVsLndvcmtmbG93O1xyXG4gICAgd2hpbGUgKGkgPCBkY29ubmVjdG9ycy5sZW5ndGgpIHtcclxuICAgICAgbGV0IGNvbm5lY3RvciA9IGRjb25uZWN0b3JzW2ldO1xyXG4gICAgICBpZiAobm9kZU1hcFtjb25uZWN0b3Iuc291cmNlSWRdKSB7XHJcbiAgICAgICAgaWYgKG5vZGVNYXBbY29ubmVjdG9yLnRhcmdldElkXSkge1xyXG4gICAgICAgICAgY29ubmVjdG9ycy5wdXNoKFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgc291cmNlSUQ6IGNvbm5lY3Rvci5zb3VyY2VJZCxcclxuICAgICAgICAgICAgICB0YXJnZXRJRDogY29ubmVjdG9yLnRhcmdldElkLFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGVzdGltYXRlOiBjb25uZWN0b3IuZXN0aW1hdGUsXHJcbiAgICAgICAgICAgICAgICB0aW1lOiBjb25uZWN0b3IudGltZVxyXG4gICAgICAgICAgICAgIH0gYXMgQ29ubmVjdG9ySW5mb01vZGVsXHJcbiAgICAgICAgICAgIH0gYXMgQ29ubmVjdG9yTW9kZWxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgcmVyb3V0ZShjb25uZWN0b3IsIGkgKyAxKTtcclxuICAgICAgfVxyXG4gICAgICBpKys7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiByZXJvdXRlKGNvbm5lY3RvcjogQ29ubmVjdG9ySW5mbywgaW5kZXg6IG51bWJlciwgdmNvbm5lY3RvcnMgPSBbXSkge1xyXG4gICAgICBpZiAodmNvbm5lY3RvcnMuaW5kZXhPZihjb25uZWN0b3IpID4gLTEpXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB2Y29ubmVjdG9ycy5wdXNoKGNvbm5lY3Rvcik7XHJcbiAgICAgIHdoaWxlIChpbmRleCA8IGRjb25uZWN0b3JzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBsZXQgdGNvbm5lY3RvciA9IGRjb25uZWN0b3JzW2luZGV4XTtcclxuICAgICAgICBpZiAodGNvbm5lY3Rvci5zb3VyY2VJZCA9PT0gY29ubmVjdG9yLnRhcmdldElkKSB7XHJcbiAgICAgICAgICBpZiAobm9kZU1hcFt0Y29ubmVjdG9yLnRhcmdldElkXSlcclxuICAgICAgICAgICAgY29ubmVjdG9ycy5wdXNoKHtcclxuICAgICAgICAgICAgICBzb3VyY2VJRDogY29ubmVjdG9yLnNvdXJjZUlkLFxyXG4gICAgICAgICAgICAgIHRhcmdldElEOiB0Y29ubmVjdG9yLnRhcmdldElkLFxyXG4gICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgIGVzdGltYXRlOiB0Y29ubmVjdG9yLmVzdGltYXRlLFxyXG4gICAgICAgICAgICAgICAgdGltZTogdGNvbm5lY3Rvci50aW1lXHJcbiAgICAgICAgICAgICAgfSBhcyBDb25uZWN0b3JJbmZvTW9kZWxcclxuICAgICAgICAgICAgfSBhcyBDb25uZWN0b3JNb2RlbCk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJlcm91dGUoe1xyXG4gICAgICAgICAgICAgIC4uLnRjb25uZWN0b3IsXHJcbiAgICAgICAgICAgICAgc291cmNlSWQ6IGNvbm5lY3Rvci5zb3VyY2VJZFxyXG4gICAgICAgICAgICB9LCBpbmRleCArIDEsIHZjb25uZWN0b3JzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5kZXgrKztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgY29ubmVjdG9ycywgbm9kZXMsIGluZGljYXRvcnMgfTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG5vZGVcclxuICAgKi9cclxuICBwcml2YXRlIGFzeW5jIF9zaGFwZShub2RlOiBOb2RlSW5mbyk6IFByb21pc2U8eyBzdGF0ZTogU3RhdGU7IGFubm90YXRpb246IHN0cmluZzsgdG9vbHRpcDogTm9kZVRvb2x0aXBNb2RlbDsgfT4ge1xyXG4gICAgY29uc3QgdG9vbHRpcCA9IHt9IGFzIE5vZGVUb29sdGlwTW9kZWw7XHJcbiAgICBpZiAobm9kZS5lcnJvcikgdG9vbHRpcC5lcnJvciA9IG5vZGUuZXJyb3I7XHJcbiAgICBsZXQgYW5ub3RhdGlvbjogc3RyaW5nLCBzdGF0ZTogU3RhdGU7XHJcbiAgICBjb25zdCBsb2cgPSB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLm5vZGVJZCA9PT0gbm9kZS5pZCAmJiBsLnRpbWUgPj0gdGhpcy5fc3VibWl0dGVkKTtcclxuICAgIGNvbnN0IHN0YXRlTG9nID0gbG9nLmZpbmQobCA9PiBsLnR5cGUgPT09ICdTdGF0ZUNoYW5nZScpO1xyXG4gICAgaWYgKHN0YXRlTG9nKSB7XHJcbiAgICAgIHN0YXRlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnN0YXRlcy5maW5kKHMgPT4gcy5uYW1lID09PSBzdGF0ZUxvZy5zdGF0ZSk7XHJcblxyXG4gICAgICBhbm5vdGF0aW9uID0gc3RhdGUgPyAoKG5vZGUuZXN0aW1hdGUgPyBzdGF0ZS5mdXR1cmUgOiBzdGF0ZS5wYXN0KSB8fCBzdGF0ZS50aXRsZSkgOiBzdGF0ZUxvZy5zdGF0ZTtcclxuICAgIH1cclxuICAgIGlmIChub2RlLnR5cGUgPT09IFNUQVJUX05PREUpIHtcclxuICAgICAgaWYgKCFub2RlLmVzdGltYXRlKSB7XHJcbiAgICAgICAgY29uc3QgeyBub3RlLCByb2xlIH0gPSBhd2FpdCB0aGlzLl9zdGFydE5vZGUoKTtcclxuICAgICAgICB0b29sdGlwLm5vdGUgPSBub3RlLFxyXG4gICAgICAgICAgdG9vbHRpcC5yb2xlID0gcm9sZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5lc3RpbWF0ZSlcclxuICAgICAgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgcmV0dXJuIHsgc3RhdGUsIHRvb2x0aXAsIGFubm90YXRpb24gfTtcclxuICB9XHJcbiAgcmVzaXplKCkge1xyXG4gICAgaWYgKHRoaXMuZGlhZ3JhbSkgdGhpcy5kaWFncmFtLndpZHRoID0gJ2F1dG8nO1xyXG4gIH1cclxuICBwcml2YXRlIF90aW1lRXN0aW1hdGUobm9kZTogTm9kZUluZm8pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgeyBtaW4sIG1heCB9ID0gc3VwZXIuX2VzdGltYXRlVGltZShub2RlKTtcclxuICAgIGlmIChtYXgpXHJcbiAgICAgIHJldHVybiAhbWluIHx8IG1pbiA9PT0gbWF4ID9cclxuICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdFc3RpbWF0ZVRpbWUnLCB0aGlzLl9kdXJhdGlvbi50cmFuc2Zvcm0obWF4KSkgOlxyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzdGltYXRlVGltZVJhbmdlJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKG1pbiksIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShtYXgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdG9vbHRpcChvYmo6IE5vZGVUb29sdGlwTW9kZWwpIHtcclxuICAgIGNvbnN0IHsgbm90ZSwgcm9sZSwgc3Vic3RpdHV0aW5nLCBkdXJhdGlvbiwgc3RhbmRhcmRUaW1lLCBlc3RpbWF0ZWRUaW1lLCBlcnJvciwgZnlpIH0gPSBvYmpcclxuICAgIGNvbnN0IHJvd3MgPSBbZXJyb3IsIG5vdGUsIHJvbGUsIHN1YnN0aXR1dGluZywgZnlpLCBkdXJhdGlvbiwgc3RhbmRhcmRUaW1lLCBlc3RpbWF0ZWRUaW1lXTtcclxuICAgIGxldCBkaXY6IEhUTUxEaXZFbGVtZW50O1xyXG4gICAgcm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBpZiAoIXIpIHJldHVybjtcclxuICAgICAgaWYgKCFkaXYpIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICBzcGFuLmlubmVyVGV4dCA9IHI7XHJcbiAgICAgIGRpdi5hcHBlbmQoc3Bhbik7XHJcbiAgICAgIGNvbnN0IGJyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnInKTtcclxuICAgICAgZGl2LmFwcGVuZChicik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkaXY7XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgX3N0YXJ0Tm9kZSgpOiBQcm9taXNlPHtcclxuICAgIG5vdGU6IHN0cmluZywgcm9sZTogc3RyaW5nO1xyXG4gIH0+IHtcclxuICAgIGxldCB3aG86IFVzZXJJbmZvIHwgJ3lvdScsIGJ5OiBVc2VySW5mbyB8ICd5b3UnO1xyXG4gICAgaWYgKHRoaXMubW9kZWwub3duZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnVzZXJJZCAmJiAhdGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgIHdobyA9ICd5b3UnO1xyXG4gICAgZWxzZVxyXG4gICAgICB3aG8gPSBhd2FpdCB0aGlzLl9hY2NvdW50cy5nZXQodGhpcy5tb2RlbC5vd25lcklkKS50b1Byb21pc2UoKTtcclxuICAgIGlmICh0aGlzLm1vZGVsLm93bmVyQnlJZCkge1xyXG4gICAgICBpZiAodGhpcy5tb2RlbC5vd25lckJ5SWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgIGJ5ID0gJ3lvdSc7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBieSA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldCh0aGlzLm1vZGVsLm93bmVyQnlJZCkudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcbiAgICBsZXQgbm90ZTogc3RyaW5nLCByb2xlOiBzdHJpbmc7XHJcbiAgICBpZiAoYnkpIHtcclxuICAgICAgaWYgKGJ5ID09PSAneW91JylcclxuICAgICAgICBub3RlID1cclxuICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N1Ym1pdHRlZE5vdGVCeVlvdScsXHJcbiAgICAgICAgICAgIHdobyA9PT0gJ3lvdScgPyB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3UnKSA6ICh3aG8gYXMgVXNlckluZm8pLm5hbWUsXHJcbiAgICAgICAgICAgIHRoaXMuX2Zyb21Ob3codGhpcy5tb2RlbC5pc3N1ZWQpKTtcclxuXHJcbiAgICAgIGVsc2VcclxuICAgICAgICBub3RlID1cclxuICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N1Ym1pdHRlZE5vdGVCeScsXHJcbiAgICAgICAgICAgIHdobyA9PT0gJ3lvdScgPyB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3UnKSA6ICh3aG8gYXMgVXNlckluZm8pLm5hbWUsXHJcbiAgICAgICAgICAgIChieSBhcyBVc2VySW5mbykubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fZnJvbU5vdyh0aGlzLm1vZGVsLmlzc3VlZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKHdobyA9PT0gJ3lvdScpXHJcbiAgICAgIG5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VTdWJtaXR0ZWROb3RlJywgdGhpcy5fZnJvbU5vdyh0aGlzLm1vZGVsLmlzc3VlZCkpO1xyXG5cclxuICAgIGVsc2VcclxuICAgICAgbm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N1Ym1pdHRlZE5vdGUnLCAod2hvIGFzIFVzZXJJbmZvKS5uYW1lLCB0aGlzLl9mcm9tTm93KHRoaXMubW9kZWwuaXNzdWVkKSk7XHJcbiAgICBpZiAod2hvICE9PSAneW91JyAmJiB3aG8ucm9sZSlcclxuICAgICAgcm9sZSA9IGAtICR7d2hvLnJvbGV9YDtcclxuICAgIHJldHVybiB7IG5vdGUsIHJvbGUgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX25vdGUobm9kZTogTm9kZUluZm8sIHJlY2lwaWVudDogUmVjaXBpZW50KTogUHJvbWlzZTx7IGFubm90YXRpb246IHN0cmluZzsgdG9vbHRpcDogTm9kZVRvb2x0aXBNb2RlbCB9PiB7XHJcbiAgICBjb25zdCB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsID0ge307XHJcbiAgICBsZXQgYW5ub3RhdGlvbjogc3RyaW5nO1xyXG5cclxuICAgIGlmIChyZWNpcGllbnQudXNlcklkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudXNlcklkKSB7XHJcbiAgICAgIGFubm90YXRpb24gPSB0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZyA/IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lIDogdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91Jyk7XHJcbiAgICAgIGlmIChyZWNpcGllbnQuYnlJZCkge1xyXG4gICAgICAgIGNvbnN0IHUgPSBhd2FpdCB0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LmJ5SWQpLnRvUHJvbWlzZSgpXHJcbiAgICAgICAgY29uc3QgcGFzdCA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB1LmdlbmRlciksIHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZXBsaWVkKTtcclxuICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VUYWtlbkFjdGlvbkJ5JywgdS5uYW1lLCBwYXN0LCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZXBsaWVkKTtcclxuICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpIHtcclxuICAgICAgICAgIGNvbnN0IHBhc3QgPSB0aGlzLl9hY3Rpb24ocmVjaXBpZW50LmFjdGlvbiwgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmdlbmRlcik7XHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbicsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sICd5b3UnKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uJywgcGFzdCwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCFub2RlLmVzdGltYXRlKSB7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlY2VpdmVkKTtcclxuICAgICAgICBpZiAodGhpcy5fc2Vzc2lvbi5pc0ltcGVyc29uYXRpbmcpXHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1JlY2VpdmVkQnknLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUubmFtZSwgdGltZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91UmVjZWl2ZWQnLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVjaXBpZW50LnJvbGUpIHtcclxuICAgICAgICBjb25zdCBjcm9sZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKG8gPT4gby5uYW1lID09PSByZWNpcGllbnQucm9sZSk7XHJcbiAgICAgICAgdG9vbHRpcC5yb2xlID0gYC0gJHtjcm9sZSA/IGNyb2xlLnRpdGxlIDogcmVjaXBpZW50LnJvbGV9YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IHdobyA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQudXNlcklkKS50b1Byb21pc2UoKTtcclxuICAgICAgYW5ub3RhdGlvbiA9IHdoby5uYW1lO1xyXG4gICAgICBpZiAod2hvLnJvbGUpIHRvb2x0aXAucm9sZSA9IGAtICR7d2hvLnJvbGV9YDtcclxuICAgICAgZWxzZSBpZiAocmVjaXBpZW50LnJvbGUpIHtcclxuICAgICAgICBjb25zdCBjcm9sZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5yb2xlcy5maW5kKG8gPT4gby5uYW1lID09PSByZWNpcGllbnQucm9sZSk7XHJcbiAgICAgICAgdG9vbHRpcC5yb2xlID0gYC0gJHtjcm9sZSA/IGNyb2xlLnRpdGxlIDogcmVjaXBpZW50LnJvbGV9YDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICAgIGlmIChyZWNpcGllbnQuYnlJZCkge1xyXG4gICAgICAgICAgY29uc3QgYnkgPSBhd2FpdCB0aGlzLl9hY2NvdW50cy5nZXQocmVjaXBpZW50LmJ5SWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgY29uc3QgcGFzdCA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCBieS5nZW5kZXIpLFxyXG4gICAgICAgICAgICB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVwbGllZCk7XHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbkJ5JywgYnkubmFtZSwgcGFzdCwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgcGFzdCA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB3aG8uZ2VuZGVyKSxcclxuICAgICAgICAgICAgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlcGxpZWQpO1xyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQWN0aW9uVGFrZW4nLCB3aG8ubmFtZSwgcGFzdCwgdGltZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKCFyZWNpcGllbnQuZXN0aW1hdGUpIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVjZWl2ZWQpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnUmVjZWl2ZWRUaW1lJywgd2hvLmdlbmRlciwgdGltZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQuc3Vic3RpdHV0aW5nSWQgJiYgcmVjaXBpZW50LmVzdGltYXRlKSB7XHJcbiAgICAgIGlmIChyZWNpcGllbnQuc3Vic3RpdHV0aW5nSWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5ieUlkKVxyXG4gICAgICAgIHRvb2x0aXAuc3Vic3RpdHV0aW5nID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmdZb3UnLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdSA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQuc3Vic3RpdHV0aW5nSWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgIHRvb2x0aXAuc3Vic3RpdHV0aW5nID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmdGb3InLCB1LmdlbmRlciwgdS5uYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgZXNjYWxhdGlvbnMgPSB0aGlzLm1vZGVsLmxvZy5maWx0ZXIobCA9PiBsLnRpbWUgPiB0aGlzLm1vZGVsLmlzc3VlZCAmJiBsLnR5cGUgPT09ICdFc2NhbGF0aW9uJyAmJiBsLnJlY2lwaWVudElkID09PSByZWNpcGllbnQuaWQpO1xyXG4gICAgaWYgKGVzY2FsYXRpb25zLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCB1c2VySWRzID0gZXNjYWxhdGlvbnMubWFwKGUgPT4gZS51c2VySWQpO1xyXG4gICAgICBjb25zdCB1c2VycyA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldEFsbCh1c2VySWRzKS50b1Byb21pc2UoKTtcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLl9kdXJhdGlvbi50cmFuc2Zvcm0oZGF5anMoZXNjYWxhdGlvbnNbZXNjYWxhdGlvbnMubGVuZ3RoIC0gMV0udGltZSkuZGlmZihyZWNpcGllbnQucmVjZWl2ZWQsICdzJykpO1xyXG4gICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzY2FsYXRlZFRvJywgdGhpcy5fdHJhbnNsYXRlLmpvaW4odXNlcnMubWFwKHUgPT4gdS5uYW1lKSksIGR1cmF0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICBjb25zdCBkdXJhdGlvbiA9IGRheWpzKHJlY2lwaWVudC5yZXBsaWVkKS5kaWZmKHJlY2lwaWVudC5yZWNlaXZlZCwgJ3MnKTtcclxuICAgICAgdG9vbHRpcC5kdXJhdGlvbiA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0R1cmF0aW9uVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShkdXJhdGlvbikpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVjaXBpZW50LnBlbmRpbmcpIHtcclxuICAgICAgaWYgKHJlY2lwaWVudC5lc3RpbWF0ZSkgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSkge1xyXG4gICAgICAgIGNvbnN0IGRpZmYgPSBub2RlLnN0YW5kYXJkVGltZSAtIGRheWpzKCkuZGlmZihub2RlLnRpbWUsICdzJyk7XHJcbiAgICAgICAgaWYgKGRpZmYgPiAwKVxyXG4gICAgICAgICAgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKGRpZmYpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5zdGFuZGFyZFRpbWUpXHJcbiAgICAgIHRvb2x0aXAuc3RhbmRhcmRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnTm9kZVN0YW5kYXJkVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShub2RlLnN0YW5kYXJkVGltZSkpO1xyXG4gICAgaWYgKG5vZGUuZnlpKVxyXG4gICAgICB0b29sdGlwLmZ5aSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0ZZSScpO1xyXG4gICAgcmV0dXJuIHsgYW5ub3RhdGlvbiwgdG9vbHRpcCB9O1xyXG4gIH1cclxuICBwcml2YXRlIF9hY3Rpb24obmFtZTogc3RyaW5nLCBnZW5kZXI/OiBHZW5kZXIgfCAneW91Jykge1xyXG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gbmFtZSk7XHJcbiAgICBpZiAoIWFjdGlvbikgcmV0dXJuIG5hbWU7XHJcbiAgICBpZiAoZ2VuZGVyID09PSAneW91Jykge1xyXG4gICAgICBjb25zdCBnZW5kZXIgPSB0aGlzLl9zZXNzaW9uLmdlbmRlciwgcGVyc29uYWwgPVxyXG4gICAgICAgIChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ueW91TWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gKGFjdGlvbi55b3VGZW1hbGUgfHwgYWN0aW9uLnlvdSkgOlxyXG4gICAgICAgICAgICBhY3Rpb24ueW91KTtcclxuICAgICAgcmV0dXJuIChwZXJzb25hbCB8fFxyXG4gICAgICAgIGFjdGlvbi5wYXN0IHx8XHJcbiAgICAgICAgYWN0aW9uLnRpdGxlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFzdCA9ICgoZ2VuZGVyID09PSAnTWFsZScgPyAoYWN0aW9uLnBhc3RNYWxlIHx8IGFjdGlvbi5wYXN0KSA6XHJcbiAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyAoYWN0aW9uLnBhc3RGZW1hbGUgfHwgYWN0aW9uLnBhc3QpIDogYWN0aW9uLnBhc3QpIHx8XHJcbiAgICAgIGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiBwYXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZnJvbU5vdyhkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkuZnJvbU5vdygpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB0aGlzLmRpYWdyYW0gJiYgdGhpcy5kaWFncmFtLmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIENvbm5lY3RvckluZm9Nb2RlbCB7XHJcbiAgZXN0aW1hdGU/OiBib29sZWFuO1xyXG4gIHBhcmVudElkOiBzdHJpbmc7XHJcbiAgdGltZTogRGF0ZVxyXG59XHJcbmludGVyZmFjZSBOb2RlSW5mb01vZGVsIHtcclxuICB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsO1xyXG4gIG5vZGU6IE5vZGVJbmZvO1xyXG4gIHJlY2lwaWVudDogUmVjaXBpZW50XHJcbiAgaW5kaWNhdG9yPzogYm9vbGVhbjtcclxuICBwYXJlbnRJZD86IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgTm9kZVRvb2x0aXBNb2RlbCB7XHJcbiAgZnlpPzogc3RyaW5nO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbiAgcm9sZT86IHN0cmluZztcclxuICBzdWJzdGl0dXRpbmc/OiBzdHJpbmc7XHJcbiAgc3RhbmRhcmRUaW1lPzogc3RyaW5nO1xyXG4gIGR1cmF0aW9uPzogc3RyaW5nO1xyXG4gIGVzdGltYXRlZFRpbWU/OiBzdHJpbmc7XHJcbn1cclxuIl19
629
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2NvbXBvc2UvdHJhY2UvZmxvdy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBMEMsWUFBWSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSw4QkFBOEIsRUFBcUIsWUFBWSxFQUFFLFdBQVcsRUFBOEcscUJBQXFCLEVBQUUsZUFBZSxFQUFtQixlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsYSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBT3JELE9BQU8sQ0FBQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQSxxREFBcUQsQ0FBQyxDQUFDO0FBRXhILE1BQU0sWUFBWSxHQUFHLHVGQUF1RixFQUMxRyxRQUFRLEdBQUcsa0dBQWtHLEVBQzdHLGNBQWMsR0FBRyxtUUFBbVEsRUFDcFIsYUFBYSxHQUFHLHNUQUFzVCxDQUFDO0FBV3pVLHlCQUF5QjtBQUN6QixNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQXFDOUMseUJBQXlCO0lBQ3pCLFlBQW9CLFNBQXlCLEVBQVUsUUFBd0IsRUFBVSxVQUE0QixFQUMzRyxTQUE2QixFQUM3QixXQUF1QyxFQUMvQyxHQUFlO1FBQ2YsS0FBSyxD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VztRQUNULEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekMsQ0FBQzs7OEdBdm1CVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixtTUFSbEIsRUFBRSwrQ0FFRyxDQUFDLDhCQUE4QixDQUFDOzJGQU1wQyxpQkFBaUI7a0JBVjdCLFNBQVM7K0JBQ0UsYUFBYSxZQUNiLEVBQUUsaUJBRUcsQ0FBQyw4QkFBOEIsQ0FBQyxRQUN6Qzt3QkFDSixHQUFHLEVBQUUsS0FBSztxQkFDWDtvUEFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5vZGVNb2RlbCwgQ29ubmVjdG9yTW9kZWwsIExheW91dE1vZGVsLCBEaWFncmFtVG9vbHMsIERpYWdyYW0sIERpYWdyYW1Db25zdHJhaW50cywgQ29tcGxleEhpZXJhcmNoaWNhbFRyZWUsIENvbXBsZXhIaWVyYXJjaGljYWxUcmVlU2VydmljZSwgQ29ubmVjdG9yQnJpZGdpbmcsIEJwbW5EaWFncmFtcywgRGF0YUJpbmRpbmcsIFNjcm9sbFNldHRpbmdzTW9kZWwsIFNuYXBTZXR0aW5nc01vZGVsLCBTZWdtZW50cywgTGluZVJvdXRpbmcsIFRyZWVJbmZvLCBJTW91c2VFdmVudEFyZ3MsIExpbmVEaXN0cmlidXRpb24sIENvbm5lY3Rpb25Qb2ludE9yaWdpbiwgU25hcENvbnN0cmFpbnRzLCBMYXlvdXRBbmltYXRpb24sIE5vZGVDb25zdHJhaW50cyB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWRpYWdyYW1zJztcclxuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBEb2N1bWVudE1vZGVsLCBSZWNpcGllbnQsIE5vZGVJbmZvLCBHZW5kZXIsIEZsb3dOb2RlLCBVc2VySW5mbywgU3RhdGUsIENvbm5lY3RvckluZm8gfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgZ2V0V2FybiB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgVHJhY2VCYXNlLCBTVEFSVF9OT0RFIH0gZnJvbSAnLi90cmFjZS5iYXNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Nlc3Npb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9hY2NvdW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEh1YlNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHVyYXRpb25Gb3JtYXRQaXBlIH0gZnJvbSAnLi4vLi4vY29yZS9waXBlcy9kdXJhdGlvbi1mb3JtYXQucGlwZSc7XHJcblxyXG5EaWFncmFtLkluamVjdChDb21wbGV4SGllcmFyY2hpY2FsVHJlZSwgQnBtbkRpYWdyYW1zLCBEYXRhQmluZGluZy8qLCBMYXlvdXRBbmltYXRpb24sIExpbmVSb3V0aW5nLCBDb25uZWN0b3JCcmlkZ2luZyovKTtcclxuXHJcbmNvbnN0IFBFTkRJTkdfUEFUSCA9ICdNMTgsMjJsLTAuMDEtNkwxNCwxMmwzLjk5LTQuMDFMMTgsMkg2djZsNCw0bC00LDMuOTlWMjJIMTh6IE04LDcuNVY0aDh2My41bC00LDRMOCw3LjV6JyxcclxuICBGWUlfUEFUSCA9ICdNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtNmgydjZ6bTAtOGgtMlY3aDJ2MnonLFxyXG4gIEVTQ0FMQVRFRF9QQVRIID0gJ00yMiA1LjcybC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5TDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMi41IDhIMTF2Nmw0Ljc1IDIuODUuNzUtMS4yMy00LTIuMzdWOHpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6JyxcclxuICBXQVJOTklOR19QQVRIID0gJ00gMTMuNzYzNzM1LDEuODQzMzczNSBIIDYuMzAzNzM0OSBsIC01LjI3LDUuMjcgdiA3LjQ1OTk5OTUgbCA1LjI3LDUuMjcgaCA3LjQ2MDAwMDEgbCA1LjI3LC01LjI3IFYgNy4xMTMzNzM1IFogbSAtMy43MywxNC4yOTk5OTk1IGMgLTAuNzIwMDAwMSwwIC0xLjMwMDAwMDEsLTAuNTggLTEuMzAwMDAwMSwtMS4zIDAsLTAuNzIgMC41OCwtMS4zIDEuMzAwMDAwMSwtMS4zIDAuNzIsMCAxLjMsMC41OCAxLjMsMS4zIDAsMC43MiAtMC41OCwxLjMgLTEuMywxLjMgeiBtIDEsLTQuMyBIIDkuMDMzNzM0OSBWIDUuODQzMzczNSBoIDIuMDAwMDAwMSB6JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWZsb3cnLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBzdHlsZVVybHM6IFsnLi9mbG93LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgdmlld1Byb3ZpZGVyczogW0NvbXBsZXhIaWVyYXJjaGljYWxUcmVlU2VydmljZV0sXHJcbiAgaG9zdDoge1xyXG4gICAgZGlyOiAnbHRyJ1xyXG4gIH1cclxufSlcclxuLyoqIGZsb3ctdmlldyBjb21wb25lbnQqL1xyXG5leHBvcnQgY2xhc3MgRmxvd1ZpZXdDb21wb25lbnQgZXh0ZW5kcyBUcmFjZUJhc2UgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgbW9kZWw6IERvY3VtZW50TW9kZWw8YW55PjtcclxuICBASW5wdXQoKSBjb25uZWN0b3JUeXBlOiBTZWdtZW50cyA9ICdPcnRob2dvbmFsJztcclxuICBkaWFncmFtOiBEaWFncmFtO1xyXG4gIHJlYWRvbmx5IHRvb2w6IERpYWdyYW1Ub29scyA9IERpYWdyYW1Ub29scy5ab29tUGFuO1xyXG4gIHJlYWRvbmx5IGRpYWdyYW1Db25zdHJhaW50czogRGlhZ3JhbUNvbnN0cmFpbnRzID1cclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5EZWZhdWx0IHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5QYW4gfFxyXG4gICAgRGlhZ3JhbUNvbnN0cmFpbnRzLkxpbmVSb3V0aW5nIHxcclxuICAgIERpYWdyYW1Db25zdHJhaW50cy5CcmlkZ2luZztcclxuICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0ID0ge1xyXG4gICAgdHlwZTogJ0NvbXBsZXhIaWVyYXJjaGljYWxUcmVlJyxcclxuICAgIGNvbm5lY3Rpb25Qb2ludE9yaWdpbjogQ29ubmVjdGlvblBvaW50T3JpZ2luLkRpZmZlcmVudFBvaW50LFxyXG4gICAgaG9yaXpvbnRhbFNwYWNpbmc6IDUwLFxyXG4gICAgdmVydGljYWxTcGFjaW5nOiA1MCxcclxuICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnVG9wJyxcclxuICAgIGNvbm5lY3Rpb25EaXJlY3Rpb246ICdPcmllbnRhdGlvbicsXHJcbiAgICBvcmllbnRhdGlvbjogdGhpcy5fc2Vzc2lvbi5pbnZlcnNlID8gJ1JpZ2h0VG9MZWZ0JyA6ICdMZWZ0VG9SaWdodCcsXHJcbiAgICBtYXJnaW46IHsgbGVmdDogMTAsIHJpZ2h0OiAxMCwgdG9wOiAxMCwgYm90dG9tOiAxMCB9XHJcbiAgfSBhcyBMYXlvdXRNb2RlbDtcclxuXHJcbiAgcmVhZG9ubHkgc2Nyb2xsU2V0dGluZ3MgPSB7XHJcbiAgICBtaW5ab29tOiAuNSxcclxuICAgIGNhbkF1dG9TY3JvbGw6IHRydWUsXHJcbiAgICBjdXJyZW50Wm9vbTogMS4yLFxyXG4gICAgcGFkZGluZzogeyB0b3A6IDAsIGJvdHRvbTogMCB9LFxyXG4gICAgYXV0b1Njcm9sbEJvcmRlcjogeyB0b3A6IDAsIGJvdHRvbTogMCB9LFxyXG4gICAgbWF4Wm9vbTogMi41XHJcbiAgfSBhcyBTY3JvbGxTZXR0aW5nc01vZGVsO1xyXG5cclxuICByZWFkb25seSBzbmFwU2V0dGluZ3MgPSB7XHJcbiAgICBjb25zdHJhaW50czogU25hcENvbnN0cmFpbnRzLk5vbmUsXHJcbiAgICBncmlkVHlwZTogJ0RvdHMnXHJcbiAgfSBhcyBTbmFwU2V0dGluZ3NNb2RlbDtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWd1cmF0aW9uOiB7IFtuYW1lOiBzdHJpbmddOiBGbG93Tm9kZSB9ID0ge307XHJcbiAgcHJpdmF0ZSBfaXNzdWVkOiBEYXRlO1xyXG4gIHByaXZhdGUgX2FjY2VudENvbG9yID0gdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoKTtcclxuICAvKiogd29ya2Zsb3ctdmlldyBjdG9yICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYWNjb3VudHM6IEFjY291bnRTZXJ2aWNlLCBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSwgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZHVyYXRpb246IER1cmF0aW9uRm9ybWF0UGlwZSxcclxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LFxyXG4gICAgaHViOiBIdWJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihodWIpO1xyXG4gICAgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5vZGVzLmZvckVhY2gobiA9PlxyXG4gICAgICB0aGlzLl9jb25maWd1cmF0aW9uW24ubmFtZV0gPSBuKTtcclxuICAgIF9zZXNzaW9uLnRoZW1lQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9hY2NlbnRDb2xvciA9IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KCk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhfY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdGlhbGl6ZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIGFzeW5jIF9pbml0aWFsaXplKCkge1xyXG4gICAgY29uc3QgeyBjb25uZWN0b3JzLCBub2RlcywgaW5kaWNhdG9ycyB9ID0gYXdhaXQgdGhpcy5fcHJlcGFyZSgpO1xyXG4gICAgdGhpcy5kaWFncmFtICYmIHRoaXMuZGlhZ3JhbS5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmRpYWdyYW0gPSBuZXcgRGlhZ3JhbSh7XHJcbiAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgIGhlaWdodDogMzgwLFxyXG4gICAgICBub2RlcyxcclxuICAgICAgY29ubmVjdG9ycyxcclxuICAgICAgbGF5b3V0OiB0aGlzLmxheW91dCxcclxuICAgICAgdG9vbDogdGhpcy50b29sLFxyXG4gICAgICBzY3JvbGxTZXR0aW5nczogdGhpcy5zY3JvbGxTZXR0aW5ncyxcclxuICAgICAgc25hcFNldHRpbmdzOiB0aGlzLnNuYXBTZXR0aW5ncyxcclxuICAgICAgY29uc3RyYWludHM6IHRoaXMuZGlhZ3JhbUNvbnN0cmFpbnRzLFxyXG4gICAgICBnZXRDb25uZWN0b3JEZWZhdWx0czogdGhpcy5jb25uRGVmYXVsdHMuYmluZCh0aGlzKSxcclxuICAgICAgZ2V0Tm9kZURlZmF1bHRzOiB0aGlzLm5vZGVEZWZhdWx0cy5iaW5kKHRoaXMpLFxyXG4gICAgfSwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5kb0xheW91dCgpO1xyXG4gICAgaW5kaWNhdG9ycy5mb3JFYWNoKChuLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZGlhZ3JhbS5nZXROb2RlT2JqZWN0KChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkucGFyZW50SWQpO1xyXG4gICAgICBuLm9mZnNldFggPSBwYXJlbnQub2Zmc2V0WCArICh0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAtMjUgOiAyNSk7XHJcbiAgICAgIG4ub2Zmc2V0WSA9IHBhcmVudC5vZmZzZXRZICsgMjU7XHJcbiAgICAgIG4uekluZGV4ID0gMTAwMCArIGk7XHJcbiAgICAgIHRoaXMuZGlhZ3JhbS5hZGQobik7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhZ3JhbS5maXRUb1BhZ2UoKTtcclxuICAgIGludGVydmFsKDYwMDAwKS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+XHJcbiAgICAgIHRoaXMuX3JlZnJlc2goKVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcmVmcmVzaCgpIHtcclxuICAgIHN1cGVyLnJlc2V0RXN0aW1hdGVUaW1lKCk7XHJcbiAgICB0aGlzLmRpYWdyYW0ubm9kZXMuZm9yRWFjaChuID0+IHtcclxuICAgICAgY29uc3QgeyBub2RlLCByZWNpcGllbnQgfSA9IG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsO1xyXG4gICAgICBpZiAocmVjaXBpZW50KSB7XHJcbiAgICAgICAgaWYgKCFyZWNpcGllbnQucmVwbGllZCAmJiByZWNpcGllbnQucGVuZGluZykge1xyXG4gICAgICAgICAgaWYgKHJlY2lwaWVudC5lc3RpbWF0ZSkgKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSk7XHJcbiAgICAgICAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSkge1xyXG4gICAgICAgICAgICBjb25zdCBkaWZmID0gbm9kZS5zdGFuZGFyZFRpbWUgLSBkYXlqcygpLmRpZmYobm9kZS50aW1lLCAncycpO1xyXG4gICAgICAgICAgICBpZiAoZGlmZiA+IDApXHJcbiAgICAgICAgICAgICAgKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdFc3RpbWF0ZVRpbWUnLCB0aGlzLl9kdXJhdGlvbi50cmFuc2Zvcm0oZGlmZikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbi50b29sdGlwLmNvbnRlbnQgPSB0aGlzLl90b29sdGlwKChuLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbCkudG9vbHRpcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBpZiAobm9kZSAmJiBub2RlLmVzdGltYXRlKVxyXG4gICAgICAgICAgKG4uYWRkSW5mbyBhcyBOb2RlSW5mb01vZGVsKS50b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSksXHJcbiAgICAgICAgICAgIG4udG9vbHRpcC5jb250ZW50ID0gdGhpcy5fdG9vbHRpcCgobi5hZGRJbmZvIGFzIE5vZGVJbmZvTW9kZWwpLnRvb2x0aXApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHB1YmxpYyByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5uZ09uQ2hhbmdlcyhudWxsKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIG9ialxyXG4gICAqL1xyXG4gIHB1YmxpYyBub2RlRGVmYXVsdHMob2JqOiBOb2RlTW9kZWwpOiBOb2RlTW9kZWwge1xyXG4gICAgY29uc3QgeyByZWNpcGllbnQsIG5vZGUsIGluZGljYXRvciB9ID0gb2JqLmFkZEluZm8gYXMgTm9kZUluZm9Nb2RlbDtcclxuXHJcbiAgICBpZiAoaW5kaWNhdG9yKSB7XHJcbiAgICAgIG9iai53aWR0aCA9IG9iai5oZWlnaHQgPSAxNTtcclxuICAgICAgb2JqLnN0eWxlLnN0cm9rZVdpZHRoID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBvYmoud2lkdGggPSBvYmouaGVpZ2h0ID0gNTA7XHJcbiAgICAgIGlmIChvYmouYW5ub3RhdGlvbnMgJiYgb2JqLmFubm90YXRpb25zLmxlbmd0aCkgb2JqLmFubm90YXRpb25zWzBdLnN0eWxlLmNvbG9yID0gdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICAgIGlmIChub2RlICYmIG5vZGUuZXN0aW1hdGUpIHtcclxuICAgICAgICBvYmouc3R5bGUuc3Ryb2tlRGFzaEFycmF5ID0gJzIgMic7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZVdpZHRoID0gMTtcclxuICAgICAgICBvYmouc3R5bGUuc3Ryb2tlQ29sb3IgPSB0aGlzLl9zZXNzaW9uLnRoZW1lLmRhcmsgPyAnd2hpdGUnIDogJ2JsYWNrJztcclxuICAgICAgICBvYmouc3R5bGUuZmlsbCA9ICd0cmFuc3BhcmVudCc7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZUNvbG9yID0gdGhpcy5fYWNjZW50Q29sb3I7XHJcbiAgICAgICAgb2JqLnN0eWxlLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICBvYmouc3R5bGUuZmlsbCA9IHJlY2lwaWVudCAmJiByZWNpcGllbnQucGVuZGluZyA/IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDQwMCkgOiAndHJhbnNwYXJlbnQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gY29ubmVjdG9yXHJcbiAgICovXHJcbiAgcHVibGljIGNvbm5EZWZhdWx0cyhjb25uZWN0b3I6IENvbm5lY3Rvck1vZGVsKSB7XHJcbiAgICBjb25uZWN0b3IudHlwZSA9IHRoaXMuY29ubmVjdG9yVHlwZTtcclxuICAgIGNvbm5lY3Rvci5jb3JuZXJSYWRpdXMgPSA2O1xyXG4gICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5oZWlnaHQgPSA3O1xyXG4gICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci53aWR0aCA9IDc7XHJcbiAgICBpZiAoY29ubmVjdG9yLnR5cGUgPT09ICdPcnRob2dvbmFsJylcclxuICAgICAgY29ubmVjdG9yLnNvdXJjZVBhZGRpbmcgPSBjb25uZWN0b3IudGFyZ2V0UGFkZGluZyA9IDE7XHJcbiAgICBpZiAoKGNvbm5lY3Rvci5hZGRJbmZvIGFzIENvbm5lY3RvckluZm9Nb2RlbCkuZXN0aW1hdGUpIHtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZURhc2hBcnJheSA9ICcyIDInO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlV2lkdGggPSAxO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlQ29sb3IgPVxyXG4gICAgICAgIGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuZmlsbCA9XHJcbiAgICAgICAgY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5zdHJva2VDb2xvciA9XHJcbiAgICAgICAgdGhpcy5fc2Vzc2lvbi50aGVtZS5kYXJrID8gJ3doaXRlJyA6ICdibGFjayc7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29ubmVjdG9yLnN0eWxlLnN0cm9rZUNvbG9yID0gY29ubmVjdG9yLnRhcmdldERlY29yYXRvci5zdHlsZS5zdHJva2VDb2xvciA9IGNvbm5lY3Rvci50YXJnZXREZWNvcmF0b3Iuc3R5bGUuZmlsbCA9IHRoaXMuX2FjY2VudENvbG9yO1xyXG4gICAgICBjb25uZWN0b3Iuc3R5bGUuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgLyoqICovXHJcbiAgcHJpdmF0ZSBhc3luYyBfcHJlcGFyZSgpOiBQcm9taXNlPHsgbm9kZXM6IE5vZGVNb2RlbFtdOyBjb25uZWN0b3JzOiBDb25uZWN0b3JNb2RlbFtdOyBpbmRpY2F0b3JzOiBOb2RlTW9kZWxbXSB9PiB7XHJcbiAgICBjb25zdCBpbmRpY2F0b3JzOiBOb2RlTW9kZWxbXSA9IFtdLCBjb25uZWN0b3JzOiBDb25uZWN0b3JNb2RlbFtdID0gW10sIG5vZGVzOiBOb2RlTW9kZWxbXSA9IFtdO1xyXG4gICAgdGhpcy5faXNzdWVkID0gdGhpcy5tb2RlbC5pc3N1ZWQgfHwgdGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50eXBlID09PSAnU3VibWl0JylbMF0udGltZTtcclxuICAgIGNvbnN0IG5vZGVNYXAgPSB7fTtcclxuICAgIGxldCB6SW5kZXggPSA1MDA7XHJcbiAgICB2YXIgaSA9IDA7XHJcbiAgICB3aGlsZSAoaSA8IHRoaXMubW9kZWwud29ya2Zsb3cubm9kZXMubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBub2RlID0gdGhpcy5tb2RlbC53b3JrZmxvdy5ub2Rlc1tpXTtcclxuICAgICAgaSsrO1xyXG4gICAgICBsZXQgY29uZmlndXJhdGlvbiA9IHRoaXMuX2NvbmZpZ3VyYXRpb25bbm9kZS50eXBlXTtcclxuICAgICAgaWYgKGNvbmZpZ3VyYXRpb24udmlzaWJsZSA9PT0gZmFsc2UpXHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIG5vZGVNYXBbbm9kZS5pZF0gPSBub2RlO1xyXG4gICAgICBsZXQgcmVjaXBpZW50cyA9IHRoaXMubW9kZWwucmVjaXBpZW50cy5cclxuICAgICAgICBmaWx0ZXIociA9PiByLm5vZGVJZCA9PT0gbm9kZS5pZCAmJiByLnJlY2VpdmVkID49IHRoaXMuX2lzc3VlZCk7XHJcbiAgICAgIGlmIChyZWNpcGllbnRzLmxlbmd0aCkge1xyXG4gICAgICAgIHJlY2lwaWVudHMgPSByZWNpcGllbnRzLnNvcnQoYSA9PiBhLnJlcGxpZWQgPyAtMSA6IDEpO1xyXG4gICAgICAgIGZvciAodmFyIHIgPSAwOyByIDwgcmVjaXBpZW50cy5sZW5ndGg7IHIrKykge1xyXG4gICAgICAgICAgbGV0IHJlY2lwaWVudCA9IHJlY2lwaWVudHNbcl07XHJcbiAgICAgICAgICBjb25zdCB7IGFubm90YXRpb24sIHRvb2x0aXAgfSA9IGF3YWl0IHRoaXMuX25vdGUobm9kZSwgcmVjaXBpZW50KTtcclxuICAgICAgICAgIGNvbnN0IG5vZCA9IHtcclxuICAgICAgICAgICAgaWQ6IHIgPT09IDAgPyBub2RlLmlkIDogbm9kZS5pZCArIHIudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgc2hhcGU6IHRoaXMuX2NvbmZpZ3VyYXRpb25bbm9kZS50eXBlXS5zaGFwZSxcclxuICAgICAgICAgICAgekluZGV4OiB6SW5kZXgrKyxcclxuICAgICAgICAgICAgdG9vbHRpcDoge1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX3Rvb2x0aXAodG9vbHRpcCksXHJcbiAgICAgICAgICAgICAgcG9zaXRpb246ICdUb3BDZW50ZXInXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzOiBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCB8IE5vZGVDb25zdHJhaW50cy5Ub29sdGlwLFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgdG9vbHRpcCxcclxuICAgICAgICAgICAgICByZWNpcGllbnQsXHJcbiAgICAgICAgICAgICAgbm9kZVxyXG4gICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWwsXHJcbiAgICAgICAgICAgIGFubm90YXRpb25zOiBbe1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGFubm90YXRpb24sXHJcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHRvcDogNCB9LFxyXG4gICAgICAgICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiAnVG9wJyxcclxuICAgICAgICAgICAgICBvZmZzZXQ6IHtcclxuICAgICAgICAgICAgICAgIHk6IDEsXHJcbiAgICAgICAgICAgICAgICB4OiAuNVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfV1cclxuICAgICAgICAgIH0gYXMgTm9kZU1vZGVsO1xyXG4gICAgICAgICAgaWYgKHIgPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kZWwud29ya2Zsb3cuY29ubmVjdG9ycy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChjLnRhcmdldElkID09PSBub2RlLmlkKSBjb25uZWN0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgc291cmNlSUQ6IGMuc291cmNlSWQsXHJcbiAgICAgICAgICAgICAgICB0YXJnZXRJRDogbm9kLmlkLFxyXG4gICAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgICBlc3RpbWF0ZTogYy5lc3RpbWF0ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmIChjLnNvdXJjZUlkID09PSBub2RlLmlkICYmICFub2RlLmZ5aSlcclxuICAgICAgICAgICAgICAgIGNvbm5lY3RvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIHNvdXJjZUlEOiBub2QuaWQsXHJcbiAgICAgICAgICAgICAgICAgIHRhcmdldElEOiBjLnRhcmdldElkLFxyXG4gICAgICAgICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXN0aW1hdGU6IGMuZXN0aW1hdGVcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbm9kZXMucHVzaChub2QpO1xyXG4gICAgICAgICAgaWYgKHJlY2lwaWVudC5hY3Rpb24pIHtcclxuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gcmVjaXBpZW50LmFjdGlvbik7XHJcbiAgICAgICAgICAgIGlmIChhY3Rpb24gJiYgYWN0aW9uLnNoYXBlKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgYWN0aW9uSW5kaWNhdG9yID0ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IG5vZC5pZCArICdhY3Rpb24nLFxyXG4gICAgICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgICBkYXRhOiBhY3Rpb24uc2hhcGUsXHJcbiAgICAgICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1pbllNYXgnIDogJ1hNYXhZTWF4JyxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgICBmaWxsOiBhY3Rpb24uY29sb3IgfHwgdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoOTAwKVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICBwYXJlbnRJZDogbm9kLmlkXHJcbiAgICAgICAgICAgICAgICB9IGFzIE5vZGVJbmZvTW9kZWxcclxuICAgICAgICAgICAgICB9IGFzIE5vZGVNb2RlbDtcclxuICAgICAgICAgICAgICBpbmRpY2F0b3JzLnB1c2goYWN0aW9uSW5kaWNhdG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHJlY2lwaWVudC5wZW5kaW5nICYmICFyZWNpcGllbnQuZXN0aW1hdGUpXHJcbiAgICAgICAgICAgIGluZGljYXRvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IG5vZC5pZCArICdwZW5kaW5nJyxcclxuICAgICAgICAgICAgICBzaGFwZToge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgICAgZGF0YTogUEVORElOR19QQVRILFxyXG4gICAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWF4WU1heCcgOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgICAgICAgZmlsbDogdGhpcy5fc2Vzc2lvbi5nZXRBY2NlbnQoOTAwKVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgICB9IGFzIE5vZGVNb2RlbCk7XHJcbiAgICAgICAgICBpZiAobm9kZS5meWkpXHJcbiAgICAgICAgICAgIGluZGljYXRvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IG5vZC5pZCArICdmeWknLFxyXG4gICAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBGWUlfUEFUSCxcclxuICAgICAgICAgICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1pbllNYXgnIDogJ1hNYXhZTWF4J1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgIGZpbGw6ICcjMTk3NmQyJ1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbFxyXG4gICAgICAgICAgICB9IGFzIE5vZGVNb2RlbFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIC8vICBpZiAodGhpcy5tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC50aW1lID4gdGhpcy5fc3VibWl0dGVkICYmIGwudHlwZSA9PT0gJ0VzY2FsYXRpb24nICYmIGwucmVjaXBpZW50SWQgPT09IHJlY2lwaWVudC5pZCkubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gICAgY29uc3QgZXNjYWxhdGVJbmRpY2F0b3IgPSB7XHJcbiAgICAgICAgLy8gICAgICBpZDogbm9kLmlkICsgJ2VzY2FsYXRlJyxcclxuICAgICAgICAvLyAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgLy8gICAgICAgIHR5cGU6ICdQYXRoJyxcclxuICAgICAgICAvLyAgICAgICAgZGF0YTogRVNDQUxBVEVEX1BBVEgsXHJcbiAgICAgICAgLy8gICAgICAgIGFsaWduOiB0aGlzLl9zZXNzaW9uLmludmVyc2UgPyAnWE1pbllNYXgnIDogJ1hNYXhZTWF4J1xyXG4gICAgICAgIC8vICAgICAgfSxcclxuICAgICAgICAvLyAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgLy8gICAgICAgIGZpbGw6IHRoaXMuX3Nlc3Npb24uZ2V0QWNjZW50KDkwMClcclxuICAgICAgICAvLyAgICAgIH0sXHJcbiAgICAgICAgLy8gICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgLy8gICAgICAgIGluZGljYXRvcjogdHJ1ZSxcclxuICAgICAgICAvLyAgICAgICAgcGFyZW50SWQ6IG5vZC5pZFxyXG4gICAgICAgIC8vICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgLy8gICAgfSBhcyBOb2RlTW9kZWw7XHJcbiAgICAgICAgLy8gICAgaW5kaWNhdG9ycy5wdXNoKGVzY2FsYXRlSW5kaWNhdG9yKTtcclxuICAgICAgICAvLyAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB7IHN0YXRlLCBhbm5vdGF0aW9uLCB0b29sdGlwIH0gPSBhd2FpdCB0aGlzLl9zaGFwZShub2RlKTtcclxuICAgICAgICBjb25zdCB7IHNoYXBlIH0gPSBjb25maWd1cmF0aW9uO1xyXG4gICAgICAgIG5vZGVzLnB1c2goe1xyXG4gICAgICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgICAgICBzaGFwZSxcclxuICAgICAgICAgIHpJbmRleDogekluZGV4KyssXHJcbiAgICAgICAgICB0b29sdGlwOiB7XHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX3Rvb2x0aXAodG9vbHRpcCksXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnVG9wQ2VudGVyJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGNvbnN0cmFpbnRzOiBPYmplY3Qua2V5cyh0b29sdGlwKS5sZW5ndGggPyBOb2RlQ29uc3RyYWludHMuRGVmYXVsdCB8IE5vZGVDb25zdHJhaW50cy5Ub29sdGlwIDogTm9kZUNvbnN0cmFpbnRzLkRlZmF1bHQsXHJcbiAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgIHRvb2x0aXAsXHJcbiAgICAgICAgICAgIG5vZGVcclxuICAgICAgICAgIH0gYXMgTm9kZUluZm9Nb2RlbCxcclxuICAgICAgICAgIGFubm90YXRpb25zOiBbe1xyXG4gICAgICAgICAgICBjb250ZW50OiBhbm5vdGF0aW9uLFxyXG4gICAgICAgICAgICBvZmZzZXQ6IHNoYXBlLnR5cGUgPT09ICdQYXRoJyA/IHtcclxuICAgICAgICAgICAgICB5OiAxXHJcbiAgICAgICAgICAgIH0gOiB7IHg6IC41IH0sXHJcbiAgICAgICAgICAgIHZlcnRpY2FsQWxpZ25tZW50OiBzaGFwZS50eXBlID09PSAnUGF0aCcgPyAnVG9wJyA6ICdDZW50ZXInXHJcbiAgICAgICAgICB9XVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChzdGF0ZSAmJiBzdGF0ZS5zaGFwZSAmJiAhbm9kZS5lc3RpbWF0ZSlcclxuICAgICAgICAgIGluZGljYXRvcnMucHVzaCh7XHJcbiAgICAgICAgICAgIGlkOiBub2RlLmlkICsgJ3N0YXRlJyxcclxuICAgICAgICAgICAgc2hhcGU6IHtcclxuICAgICAgICAgICAgICB0eXBlOiAnUGF0aCcsXHJcbiAgICAgICAgICAgICAgZGF0YTogc3RhdGUuc2hhcGUsXHJcbiAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWF4WU1heCcgOiAnWE1pbllNYXgnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgZmlsbDogc3RhdGUuY29sb3IgfHwgJ2JsYWNrJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhZGRJbmZvOiB7XHJcbiAgICAgICAgICAgICAgaW5kaWNhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHBhcmVudElkOiBub2RlLmlkLFxyXG4gICAgICAgICAgICAgIG5vZGU6IG5vZGVcclxuICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICBpZiAobm9kZS5lcnJvcikge1xyXG4gICAgICAgICAgY29uc3Qgd2Fybm5pbmdJbmRpY2F0b3IgPSB7XHJcbiAgICAgICAgICAgIGlkOiBub2RlLmlkICsgJ2V4Y2VwdGlvbicsXHJcbiAgICAgICAgICAgIHNoYXBlOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ1BhdGgnLFxyXG4gICAgICAgICAgICAgIGRhdGE6IFdBUk5OSU5HX1BBVEgsXHJcbiAgICAgICAgICAgICAgYWxpZ246IHRoaXMuX3Nlc3Npb24uaW52ZXJzZSA/ICdYTWluWU1heCcgOiAnWE1heFlNYXgnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgZmlsbDogZ2V0V2Fybig4MDApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFkZEluZm86IHtcclxuICAgICAgICAgICAgICBpbmRpY2F0b3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgcGFyZW50SWQ6IG5vZGUuaWRcclxuICAgICAgICAgICAgfSBhcyBOb2RlSW5mb01vZGVsXHJcbiAgICAgICAgICB9IGFzIE5vZGVNb2RlbDtcclxuICAgICAgICAgIGluZGljYXRvcnMucHVzaCh3YXJubmluZ0luZGljYXRvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpID0gMDtcclxuICAgIGNvbnN0IHsgY29ubmVjdG9yczogZGNvbm5lY3RvcnMgfSA9IHRoaXMubW9kZWwud29ya2Zsb3c7XHJcbiAgICB3aGlsZSAoaSA8IGRjb25uZWN0b3JzLmxlbmd0aCkge1xyXG4gICAgICBsZXQgY29ubmVjdG9yID0gZGNvbm5lY3RvcnNbaV07XHJcbiAgICAgIGlmIChub2RlTWFwW2Nvbm5lY3Rvci5zb3VyY2VJZF0pIHtcclxuICAgICAgICBpZiAobm9kZU1hcFtjb25uZWN0b3IudGFyZ2V0SWRdKSB7XHJcbiAgICAgICAgICBjb25uZWN0b3JzLnB1c2goXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBzb3VyY2VJRDogY29ubmVjdG9yLnNvdXJjZUlkLFxyXG4gICAgICAgICAgICAgIHRhcmdldElEOiBjb25uZWN0b3IudGFyZ2V0SWQsXHJcbiAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgZXN0aW1hdGU6IGNvbm5lY3Rvci5lc3RpbWF0ZSxcclxuICAgICAgICAgICAgICAgIHRpbWU6IGNvbm5lY3Rvci50aW1lXHJcbiAgICAgICAgICAgICAgfSBhcyBDb25uZWN0b3JJbmZvTW9kZWxcclxuICAgICAgICAgICAgfSBhcyBDb25uZWN0b3JNb2RlbFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSByZXJvdXRlKGNvbm5lY3RvciwgaSArIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIGkrKztcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJlcm91dGUoY29ubmVjdG9yOiBDb25uZWN0b3JJbmZvLCBpbmRleDogbnVtYmVyLCB2Y29ubmVjdG9ycyA9IFtdKSB7XHJcbiAgICAgIGlmICh2Y29ubmVjdG9ycy5pbmRleE9mKGNvbm5lY3RvcikgPiAtMSlcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIHZjb25uZWN0b3JzLnB1c2goY29ubmVjdG9yKTtcclxuICAgICAgd2hpbGUgKGluZGV4IDwgZGNvbm5lY3RvcnMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGxldCB0Y29ubmVjdG9yID0gZGNvbm5lY3RvcnNbaW5kZXhdO1xyXG4gICAgICAgIGlmICh0Y29ubmVjdG9yLnNvdXJjZUlkID09PSBjb25uZWN0b3IudGFyZ2V0SWQpIHtcclxuICAgICAgICAgIGlmIChub2RlTWFwW3Rjb25uZWN0b3IudGFyZ2V0SWRdKVxyXG4gICAgICAgICAgICBjb25uZWN0b3JzLnB1c2goe1xyXG4gICAgICAgICAgICAgIHNvdXJjZUlEOiBjb25uZWN0b3Iuc291cmNlSWQsXHJcbiAgICAgICAgICAgICAgdGFyZ2V0SUQ6IHRjb25uZWN0b3IudGFyZ2V0SWQsXHJcbiAgICAgICAgICAgICAgYWRkSW5mbzoge1xyXG4gICAgICAgICAgICAgICAgZXN0aW1hdGU6IHRjb25uZWN0b3IuZXN0aW1hdGUsXHJcbiAgICAgICAgICAgICAgICB0aW1lOiB0Y29ubmVjdG9yLnRpbWVcclxuICAgICAgICAgICAgICB9IGFzIENvbm5lY3RvckluZm9Nb2RlbFxyXG4gICAgICAgICAgICB9IGFzIENvbm5lY3Rvck1vZGVsKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmVyb3V0ZSh7XHJcbiAgICAgICAgICAgICAgLi4udGNvbm5lY3RvcixcclxuICAgICAgICAgICAgICBzb3VyY2VJZDogY29ubmVjdG9yLnNvdXJjZUlkXHJcbiAgICAgICAgICAgIH0sIGluZGV4ICsgMSwgdmNvbm5lY3RvcnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBjb25uZWN0b3JzLCBub2RlcywgaW5kaWNhdG9ycyB9O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gbm9kZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYXN5bmMgX3NoYXBlKG5vZGU6IE5vZGVJbmZvKTogUHJvbWlzZTx7IHN0YXRlOiBTdGF0ZTsgYW5ub3RhdGlvbjogc3RyaW5nOyB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsOyB9PiB7XHJcbiAgICBjb25zdCB0b29sdGlwID0ge30gYXMgTm9kZVRvb2x0aXBNb2RlbDtcclxuICAgIGlmIChub2RlLmVycm9yKSB0b29sdGlwLmVycm9yID0gbm9kZS5lcnJvcjtcclxuICAgIGxldCBhbm5vdGF0aW9uOiBzdHJpbmcsIHN0YXRlOiBTdGF0ZTtcclxuICAgIGNvbnN0IGxvZyA9IHRoaXMubW9kZWwubG9nLmZpbHRlcihsID0+IGwubm9kZUlkID09PSBub2RlLmlkICYmIGwudGltZSA+PSB0aGlzLl9pc3N1ZWQpO1xyXG4gICAgY29uc3Qgc3RhdGVMb2cgPSBsb2cuZmluZChsID0+IGwudHlwZSA9PT0gJ1N0YXRlQ2hhbmdlJyk7XHJcbiAgICBpZiAoc3RhdGVMb2cpIHtcclxuICAgICAgc3RhdGUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuc3RhdGVzLmZpbmQocyA9PiBzLm5hbWUgPT09IHN0YXRlTG9nLnN0YXRlKTtcclxuXHJcbiAgICAgIGFubm90YXRpb24gPSBzdGF0ZSA/ICgobm9kZS5lc3RpbWF0ZSA/IHN0YXRlLmZ1dHVyZSA6IHN0YXRlLnBhc3QpIHx8IHN0YXRlLnRpdGxlKSA6IHN0YXRlTG9nLnN0YXRlO1xyXG4gICAgfVxyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gU1RBUlRfTk9ERSkge1xyXG4gICAgICBpZiAoIW5vZGUuZXN0aW1hdGUpIHtcclxuICAgICAgICBjb25zdCB7IG5vdGUsIHJvbGUgfSA9IGF3YWl0IHRoaXMuX3N0YXJ0Tm9kZSgpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IG5vdGUsXHJcbiAgICAgICAgICB0b29sdGlwLnJvbGUgPSByb2xlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChub2RlLmVzdGltYXRlKVxyXG4gICAgICB0b29sdGlwLmVzdGltYXRlZFRpbWUgPSB0aGlzLl90aW1lRXN0aW1hdGUobm9kZSk7XHJcbiAgICByZXR1cm4geyBzdGF0ZSwgdG9vbHRpcCwgYW5ub3RhdGlvbiB9O1xyXG4gIH1cclxuICByZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5kaWFncmFtKSB0aGlzLmRpYWdyYW0ud2lkdGggPSAnYXV0byc7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3RpbWVFc3RpbWF0ZShub2RlOiBOb2RlSW5mbyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB7IG1pbiwgbWF4IH0gPSBzdXBlci5fZXN0aW1hdGVUaW1lKG5vZGUpO1xyXG4gICAgaWYgKG1heClcclxuICAgICAgcmV0dXJuICFtaW4gfHwgbWluID09PSBtYXggP1xyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzdGltYXRlVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShtYXgpKSA6XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lUmFuZ2UnLCB0aGlzLl9kdXJhdGlvbi50cmFuc2Zvcm0obWluKSwgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKG1heCkpO1xyXG4gIH1cclxuICBwcml2YXRlIF90b29sdGlwKG9iajogTm9kZVRvb2x0aXBNb2RlbCkge1xyXG4gICAgY29uc3QgeyBub3RlLCByb2xlLCBzdWJzdGl0dXRpbmcsIGR1cmF0aW9uLCBzdGFuZGFyZFRpbWUsIGVzdGltYXRlZFRpbWUsIGVycm9yLCBmeWkgfSA9IG9ialxyXG4gICAgY29uc3Qgcm93cyA9IFtlcnJvciwgbm90ZSwgcm9sZSwgc3Vic3RpdHV0aW5nLCBmeWksIGR1cmF0aW9uLCBzdGFuZGFyZFRpbWUsIGVzdGltYXRlZFRpbWVdO1xyXG4gICAgbGV0IGRpdjogSFRNTERpdkVsZW1lbnQ7XHJcbiAgICByb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGlmICghcikgcmV0dXJuO1xyXG4gICAgICBpZiAoIWRpdikgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgIHNwYW4uaW5uZXJUZXh0ID0gcjtcclxuICAgICAgZGl2LmFwcGVuZChzcGFuKTtcclxuICAgICAgY29uc3QgYnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpO1xyXG4gICAgICBkaXYuYXBwZW5kKGJyKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRpdjtcclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfc3RhcnROb2RlKCk6IFByb21pc2U8e1xyXG4gICAgbm90ZTogc3RyaW5nLCByb2xlOiBzdHJpbmc7XHJcbiAgfT4ge1xyXG4gICAgbGV0IHdobzogVXNlckluZm8gfCAneW91JywgYnk6IFVzZXJJbmZvIHwgJ3lvdSc7XHJcbiAgICBpZiAodGhpcy5tb2RlbC5vd25lcklkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudXNlcklkICYmICF0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgd2hvID0gJ3lvdSc7XHJcbiAgICBlbHNlXHJcbiAgICAgIHdobyA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldCh0aGlzLm1vZGVsLm93bmVySWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgaWYgKHRoaXMubW9kZWwub3duZXJCeUlkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1vZGVsLm93bmVyQnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgYnkgPSAneW91JztcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJ5ID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHRoaXMubW9kZWwub3duZXJCeUlkKS50b1Byb21pc2UoKTtcclxuICAgIH1cclxuICAgIGxldCBub3RlOiBzdHJpbmcsIHJvbGU6IHN0cmluZztcclxuICAgIGlmIChieSkge1xyXG4gICAgICBpZiAoYnkgPT09ICd5b3UnKVxyXG4gICAgICAgIG5vdGUgPVxyXG4gICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnU3VibWl0dGVkTm90ZUJ5WW91JyxcclxuICAgICAgICAgICAgd2hvID09PSAneW91JyA/IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpIDogKHdobyBhcyBVc2VySW5mbykubmFtZSxcclxuICAgICAgICAgICAgdGhpcy5fZnJvbU5vdyh0aGlzLm1vZGVsLmlzc3VlZCkpO1xyXG5cclxuICAgICAgZWxzZVxyXG4gICAgICAgIG5vdGUgPVxyXG4gICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnU3VibWl0dGVkTm90ZUJ5JyxcclxuICAgICAgICAgICAgd2hvID09PSAneW91JyA/IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpIDogKHdobyBhcyBVc2VySW5mbykubmFtZSxcclxuICAgICAgICAgICAgKGJ5IGFzIFVzZXJJbmZvKS5uYW1lLFxyXG4gICAgICAgICAgICB0aGlzLl9mcm9tTm93KHRoaXMubW9kZWwuaXNzdWVkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAod2hvID09PSAneW91JylcclxuICAgICAgbm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVN1Ym1pdHRlZE5vdGUnLCB0aGlzLl9mcm9tTm93KHRoaXMubW9kZWwuaXNzdWVkKSk7XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICBub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnU3VibWl0dGVkTm90ZScsICh3aG8gYXMgVXNlckluZm8pLm5hbWUsIHRoaXMuX2Zyb21Ob3codGhpcy5tb2RlbC5pc3N1ZWQpKTtcclxuICAgIGlmICh3aG8gIT09ICd5b3UnICYmIHdoby5yb2xlKVxyXG4gICAgICByb2xlID0gYC0gJHt3aG8ucm9sZX1gO1xyXG4gICAgcmV0dXJuIHsgbm90ZSwgcm9sZSB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfbm90ZShub2RlOiBOb2RlSW5mbywgcmVjaXBpZW50OiBSZWNpcGllbnQpOiBQcm9taXNlPHsgYW5ub3RhdGlvbjogc3RyaW5nOyB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsIH0+IHtcclxuICAgIGNvbnN0IHRvb2x0aXA6IE5vZGVUb29sdGlwTW9kZWwgPSB7fTtcclxuICAgIGxldCBhbm5vdGF0aW9uOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKHJlY2lwaWVudC51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS51c2VySWQpIHtcclxuICAgICAgYW5ub3RhdGlvbiA9IHRoaXMuX3Nlc3Npb24uaXNJbXBlcnNvbmF0aW5nID8gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUgOiB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3UnKTtcclxuICAgICAgaWYgKHJlY2lwaWVudC5ieUlkKSB7XHJcbiAgICAgICAgY29uc3QgdSA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQuYnlJZCkudG9Qcm9taXNlKClcclxuICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHUuZ2VuZGVyKSwgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlcGxpZWQpO1xyXG4gICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdVRha2VuQWN0aW9uQnknLCB1Lm5hbWUsIHBhc3QsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHJlY2lwaWVudC5yZXBsaWVkKSB7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMuX2Zyb21Ob3cocmVjaXBpZW50LnJlcGxpZWQpO1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZykge1xyXG4gICAgICAgICAgY29uc3QgcGFzdCA9IHRoaXMuX2FjdGlvbihyZWNpcGllbnQuYWN0aW9uLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuZ2VuZGVyKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuJywgdGhpcy5fc2Vzc2lvbi5wcm9maWxlLm5hbWUsIHBhc3QsIHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHBhc3QgPSB0aGlzLl9hY3Rpb24ocmVjaXBpZW50LmFjdGlvbiwgJ3lvdScpO1xyXG4gICAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnWW91VGFrZW5BY3Rpb24nLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIW5vZGUuZXN0aW1hdGUpIHtcclxuICAgICAgICBjb25zdCB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVjZWl2ZWQpO1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzaW9uLmlzSW1wZXJzb25hdGluZylcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnUmVjZWl2ZWRCeScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5uYW1lLCB0aW1lKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3VSZWNlaXZlZCcsIHRpbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZWNpcGllbnQucm9sZSkge1xyXG4gICAgICAgIGNvbnN0IGNyb2xlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnJvbGVzLmZpbmQobyA9PiBvLm5hbWUgPT09IHJlY2lwaWVudC5yb2xlKTtcclxuICAgICAgICB0b29sdGlwLnJvbGUgPSBgLSAke2Nyb2xlID8gY3JvbGUudGl0bGUgOiByZWNpcGllbnQucm9sZX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3Qgd2hvID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC51c2VySWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBhbm5vdGF0aW9uID0gd2hvLm5hbWU7XHJcbiAgICAgIGlmICh3aG8ucm9sZSkgdG9vbHRpcC5yb2xlID0gYC0gJHt3aG8ucm9sZX1gO1xyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQucm9sZSkge1xyXG4gICAgICAgIGNvbnN0IGNyb2xlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnJvbGVzLmZpbmQobyA9PiBvLm5hbWUgPT09IHJlY2lwaWVudC5yb2xlKTtcclxuICAgICAgICB0b29sdGlwLnJvbGUgPSBgLSAke2Nyb2xlID8gY3JvbGUudGl0bGUgOiByZWNpcGllbnQucm9sZX1gO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHJlY2lwaWVudC5yZXBsaWVkKSB7XHJcbiAgICAgICAgaWYgKHJlY2lwaWVudC5ieUlkKSB7XHJcbiAgICAgICAgICBjb25zdCBieSA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldChyZWNpcGllbnQuYnlJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIGJ5LmdlbmRlciksXHJcbiAgICAgICAgICAgIHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZXBsaWVkKTtcclxuICAgICAgICAgIHRvb2x0aXAubm90ZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0FjdGlvblRha2VuQnknLCBieS5uYW1lLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBwYXN0ID0gdGhpcy5fYWN0aW9uKHJlY2lwaWVudC5hY3Rpb24sIHdoby5nZW5kZXIpLFxyXG4gICAgICAgICAgICB0aW1lID0gdGhpcy5fZnJvbU5vdyhyZWNpcGllbnQucmVwbGllZCk7XHJcbiAgICAgICAgICB0b29sdGlwLm5vdGUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdBY3Rpb25UYWtlbicsIHdoby5uYW1lLCBwYXN0LCB0aW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoIXJlY2lwaWVudC5lc3RpbWF0ZSkge1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSB0aGlzLl9mcm9tTm93KHJlY2lwaWVudC5yZWNlaXZlZCk7XHJcbiAgICAgICAgdG9vbHRpcC5ub3RlID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdSZWNlaXZlZFRpbWUnLCB3aG8uZ2VuZGVyLCB0aW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCAmJiByZWNpcGllbnQuZXN0aW1hdGUpIHtcclxuICAgICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCA9PT0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmJ5SWQpXHJcbiAgICAgICAgdG9vbHRpcC5zdWJzdGl0dXRpbmcgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ1lvdScsIHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5nZW5kZXIpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCB1ID0gYXdhaXQgdGhpcy5fYWNjb3VudHMuZ2V0KHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgdG9vbHRpcC5zdWJzdGl0dXRpbmcgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ0ZvcicsIHUuZ2VuZGVyLCB1Lm5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBlc2NhbGF0aW9ucyA9IHRoaXMubW9kZWwubG9nLmZpbHRlcihsID0+IGwudGltZSA+IHRoaXMuX2lzc3VlZCAmJiBsLnR5cGUgPT09ICdFc2NhbGF0aW9uJyAmJiBsLnJlY2lwaWVudElkID09PSByZWNpcGllbnQuaWQpO1xyXG4gICAgaWYgKGVzY2FsYXRpb25zLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCB1c2VySWRzID0gZXNjYWxhdGlvbnMubWFwKGUgPT4gZS51c2VySWQpO1xyXG4gICAgICBjb25zdCB1c2VycyA9IGF3YWl0IHRoaXMuX2FjY291bnRzLmdldEFsbCh1c2VySWRzKS50b1Byb21pc2UoKTtcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLl9kdXJhdGlvbi50cmFuc2Zvcm0oZGF5anMoZXNjYWxhdGlvbnNbZXNjYWxhdGlvbnMubGVuZ3RoIC0gMV0udGltZSkuZGlmZihyZWNpcGllbnQucmVjZWl2ZWQsICdzJykpO1xyXG4gICAgICB0b29sdGlwLnN1YnN0aXR1dGluZyA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzY2FsYXRlZFRvJywgdGhpcy5fdHJhbnNsYXRlLmpvaW4odXNlcnMubWFwKHUgPT4gdS5uYW1lKSksIGR1cmF0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChyZWNpcGllbnQucmVwbGllZCkge1xyXG4gICAgICBjb25zdCBkdXJhdGlvbiA9IGRheWpzKHJlY2lwaWVudC5yZXBsaWVkKS5kaWZmKHJlY2lwaWVudC5yZWNlaXZlZCwgJ3MnKTtcclxuICAgICAgdG9vbHRpcC5kdXJhdGlvbiA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0R1cmF0aW9uVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShkdXJhdGlvbikpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVjaXBpZW50LnBlbmRpbmcpIHtcclxuICAgICAgaWYgKHJlY2lwaWVudC5lc3RpbWF0ZSkgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdGltZUVzdGltYXRlKG5vZGUpO1xyXG4gICAgICBlbHNlIGlmIChub2RlLnN0YW5kYXJkVGltZSkge1xyXG4gICAgICAgIGNvbnN0IGRpZmYgPSBub2RlLnN0YW5kYXJkVGltZSAtIGRheWpzKCkuZGlmZihub2RlLnRpbWUsICdzJyk7XHJcbiAgICAgICAgaWYgKGRpZmYgPiAwKVxyXG4gICAgICAgICAgdG9vbHRpcC5lc3RpbWF0ZWRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXN0aW1hdGVUaW1lJywgdGhpcy5fZHVyYXRpb24udHJhbnNmb3JtKGRpZmYpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobm9kZS5zdGFuZGFyZFRpbWUpXHJcbiAgICAgIHRvb2x0aXAuc3RhbmRhcmRUaW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnTm9kZVN0YW5kYXJkVGltZScsIHRoaXMuX2R1cmF0aW9uLnRyYW5zZm9ybShub2RlLnN0YW5kYXJkVGltZSkpO1xyXG4gICAgaWYgKG5vZGUuZnlpKVxyXG4gICAgICB0b29sdGlwLmZ5aSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0ZZSScpO1xyXG4gICAgcmV0dXJuIHsgYW5ub3RhdGlvbiwgdG9vbHRpcCB9O1xyXG4gIH1cclxuICBwcml2YXRlIF9hY3Rpb24obmFtZTogc3RyaW5nLCBnZW5kZXI/OiBHZW5kZXIgfCAneW91Jykge1xyXG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gbmFtZSk7XHJcbiAgICBpZiAoIWFjdGlvbikgcmV0dXJuIG5hbWU7XHJcbiAgICBpZiAoZ2VuZGVyID09PSAneW91Jykge1xyXG4gICAgICBjb25zdCBnZW5kZXIgPSB0aGlzLl9zZXNzaW9uLmdlbmRlciwgcGVyc29uYWwgPVxyXG4gICAgICAgIChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ueW91TWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgICBnZW5kZXIgPT09ICdGZW1hbGUnID8gKGFjdGlvbi55b3VGZW1hbGUgfHwgYWN0aW9uLnlvdSkgOlxyXG4gICAgICAgICAgICBhY3Rpb24ueW91KTtcclxuICAgICAgcmV0dXJuIChwZXJzb25hbCB8fFxyXG4gICAgICAgIGFjdGlvbi5wYXN0IHx8XHJcbiAgICAgICAgYWN0aW9uLnRpdGxlKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFzdCA9ICgoZ2VuZGVyID09PSAnTWFsZScgPyAoYWN0aW9uLnBhc3RNYWxlIHx8IGFjdGlvbi5wYXN0KSA6XHJcbiAgICAgIGdlbmRlciA9PT0gJ0ZlbWFsZScgPyAoYWN0aW9uLnBhc3RGZW1hbGUgfHwgYWN0aW9uLnBhc3QpIDogYWN0aW9uLnBhc3QpIHx8XHJcbiAgICAgIGFjdGlvbi50aXRsZSkudG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiBwYXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZnJvbU5vdyhkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkuZnJvbU5vdygpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB0aGlzLmRpYWdyYW0gJiYgdGhpcy5kaWFncmFtLmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuaW50ZXJmYWNlIENvbm5lY3RvckluZm9Nb2RlbCB7XHJcbiAgZXN0aW1hdGU/OiBib29sZWFuO1xyXG4gIHBhcmVudElkOiBzdHJpbmc7XHJcbiAgdGltZTogRGF0ZVxyXG59XHJcbmludGVyZmFjZSBOb2RlSW5mb01vZGVsIHtcclxuICB0b29sdGlwOiBOb2RlVG9vbHRpcE1vZGVsO1xyXG4gIG5vZGU6IE5vZGVJbmZvO1xyXG4gIHJlY2lwaWVudDogUmVjaXBpZW50XHJcbiAgaW5kaWNhdG9yPzogYm9vbGVhbjtcclxuICBwYXJlbnRJZD86IHN0cmluZztcclxufVxyXG5pbnRlcmZhY2UgTm9kZVRvb2x0aXBNb2RlbCB7XHJcbiAgZnlpPzogc3RyaW5nO1xyXG4gIGVycm9yPzogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbiAgcm9sZT86IHN0cmluZztcclxuICBzdWJzdGl0dXRpbmc/OiBzdHJpbmc7XHJcbiAgc3RhbmRhcmRUaW1lPzogc3RyaW5nO1xyXG4gIGR1cmF0aW9uPzogc3RyaW5nO1xyXG4gIGVzdGltYXRlZFRpbWU/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -76,6 +76,12 @@ export const SwapAnimation = [
76
76
  transition(':increment', [style({ transform: 'translateX(100px)' }), animate('200ms', style({ transform: 'translateX(0)' }))]),
77
77
  transition(':decrement', [style({ transform: 'translateX(-100px)' }), animate('200ms', style({ transform: 'translateX(0)' }))])
78
78
  ];
79
+ export const matrixAnimation = trigger('table', [transition('void=>*', [
80
+ query('.mat-row', [
81
+ style({ opacity: 0, transform: 'translateX(10px)' }),
82
+ stagger(100, style({ opacity: 1, transform: 'none' }))
83
+ ], { optional: true })
84
+ ])]);
79
85
  export const swapAnimation = trigger('swape', SwapAnimation);
80
86
  export const pageAnimation = trigger('page', [
81
87
  state(':enter', style({ transform: 'translateX(0)' })),
@@ -147,4 +153,4 @@ export const paramAnimation = trigger('param', [state('*', style({ backgroundCol
147
153
  transition('*<=>*', animate(200, style({ backgroundColor: 'unset', transform: 'scale(1)' })))]);
148
154
  export const queryAnimation = trigger('query', [state('*', style({})),
149
155
  transition('*<=>*', animate(0, style({})))]);
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQVksS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFTLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNJLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUU7SUFDN0QsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsVUFBVSxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ2pGLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztDQUNyRixDQUFDLENBQUM7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQztJQUN6SCxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSwwQkFBMEIsRUFBRSxDQUFD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QUcsRUFBRSxLQUFLLENBQUMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3RILFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFDN0IsS0FBSyxDQUFDLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckUsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHJpZ2dlciwgdHJhbnNpdGlvbiwgYW5pbWF0ZSwgc3R5bGUsIHNlcXVlbmNlLCBxdWVyeSwgc3RhZ2dlciwgYW5pbWF0ZUNoaWxkLCBzdGF0ZSwgZ3JvdXAsIGtleWZyYW1lcyB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGV4cGFuZExpc3RJdGVtQW5pbWF0aW9uID0gdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG1pbkhlaWdodDogJzAnLCBkaXNwbGF5OiAnJyB9KSksXHJcbiAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgbWluSGVpZ2h0OiAnNTBweCcsIGRpc3BsYXk6ICcnIH0pKSxcclxuICB0cmFuc2l0aW9uKCdleHBhbmRlZCA9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcxcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXHJcbiAgdHJhbnNpdGlvbignY29sbGFwc2VkID0+IGV4cGFuZGVkJywgYW5pbWF0ZSgnMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpXHJcbl0pO1xyXG5leHBvcnQgY29uc3QgbGlzdEl0ZW1VcGRhdGVkQW5pbWF0aW9uID0gdHJpZ2dlcigndXBkYXRlZCcsIFtzdGF0ZSgndHJ1ZScsIHN0eWxlKHsgb3BhY2l0eTogMSwgLypiYWNrZ3JvdW5kOiAnd2hpdGUnKi8gfSkpLFxyXG50cmFuc2l0aW9uKCcqPT50cnVlJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgLypiYWNrZ3JvdW5kOiAnZGFya2dyYXknKi8gfSkpKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlYXJjaEFuaW1hdGlvbiA9IHRyaWdnZXIoJ3NlYXJjaCcsXHJcbiAgW3N0YXRlKCdmYWxzZScsIHN0eWxlKHsgd2lkdGg6IDAsIHBhZGRpbmc6IDAsIGJvcmRlcldpZHRoOiAwIH0pKSxcclxuICBzdGF0ZSgndHJ1ZScsIHN0eWxlKHsgd2lkdGg6ICczMDBweCcsIHBhZGRpbmc6ICcycHggNnB4JywgYm9yZGVyV2lkdGg6ICcxcHgnIH0pKSxcclxuICB0cmFuc2l0aW9uKCcqIDw9PiAqJywgYW5pbWF0ZSgyMDAsIHN0eWxlKHt9KSkpXSk7XHJcblxyXG5leHBvcnQgY29uc3QgZGVzaGJvYXJkQW5pbWF0aW9uID0gdHJpZ2dlcignZGVzaGJvYXJkJyxcclxuICBbdHJhbnNpdGlvbignKiA8PT4gKicsIFtxdWVyeSgnQGNhcmQnLFxyXG4gICAgc3RhZ2dlcigyNTAsIGFuaW1hdGVDaGlsZCgpKSwgeyBvcHRpb25hbDogdHJ1ZSB9KV0pXSk7XHJcblxyXG5leHBvcnQgY29uc3QgY2FyZHNBbmltYXRpb24gPSB0cmlnZ2VyKCdjYXJkJywgW1xyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHtcclxuICAgICAgdHJhbnNmb3JtOiAncm90YXRlWSgxODBkZWcpJyxcclxuICAgICAgJy13ZWJraXQtdHJhbnNmb3JtJzogJ3JvdGF0ZVkoMTgwZGVnKSdcclxuICAgIH0pLFxyXG4gICAgYW5pbWF0ZShcIi41cyBlYXNlXCIsIHN0eWxlKHtcclxuICAgICAgdHJhbnNmb3JtOiAncm90YXRlWSgwZGVnKScsXHJcbiAgICAgICctd2Via2l0LXRyYW5zZm9ybSc6ICdyb3RhdGVZKDBkZWcpJ1xyXG4gICAgfSkpXHJcbiAgXSlcclxuXSk7XHJcblxyXG5leHBvcnQgY29uc3QgU2hha2VBbmltYXRpb24gPSBbXHJcbiAgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMCknIH0pLFxyXG4gIGFuaW1hdGUoJzAuMXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgyZGVnKScgfSkpLFxyXG4gIGFuaW1hdGUoJzAuMXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgtMmRlZyknIH0pKSxcclxuICBhbmltYXRlKCcwLjFzJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMmRlZyknIH0pKSxcclxuICBhbmltYXRlKCcwLjFzJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMCknIH0pKSxcclxuXTtcclxuZXhwb3J0IGNvbnN0IEVudGVyRXhpdExlZnQgPSBbXHJcbiAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0yMDBweCknIH0pLFxyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pXHJcbiAgICApLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICczMDBtcyBlYXNlLWluJyxcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0yMDBweCknIH0pXHJcbiAgICApXHJcbiAgXSlcclxuXTtcclxuZXhwb3J0IGNvbnN0IEVudGVyRXhpdFJpZ2h0ID0gW1xyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgyMDBweCknIH0pLFxyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pXHJcbiAgICApLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICczMDBtcyBlYXNlLWluJyxcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDIwMHB4KScgfSlcclxuICAgIClcclxuICBdKVxyXG5dO1xyXG5leHBvcnQgY29uc3QgRW50ZXJFeGl0VG9wID0gW1xyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjAwcHgpJyB9KSxcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICczMDBtcyBlYXNlLWluJyxcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KVxyXG4gICAgKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMzAwbXMgZWFzZS1pbicsXHJcbiAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgyMDBweCknIH0pXHJcbiAgICApXHJcbiAgXSlcclxuXTtcclxuZXhwb3J0IGNvbnN0IEZhZGVTbGlkZUluT3V0ID0gdHJpZ2dlcignZmFkZVNsaWRlSW5PdXQnLCBbXHJcbiAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwcHgpJyB9KSxcclxuICAgIGFuaW1hdGUoJzUwMG1zJywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgYW5pbWF0ZSgnNTAwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTBweCknIH0pKSxcclxuICBdKSxcclxuXSk7XHJcbmV4cG9ydCBjb25zdCBQdWxzZUFuaW1hdGlvbiA9IGFuaW1hdGUoJzFzJywga2V5ZnJhbWVzKFtcclxuICBzdHlsZSh7IG9wYWNpdHk6IDAuMSwgb2Zmc2V0OiAwLjEgfSksXHJcbiAgc3R5bGUoeyBvcGFjaXR5OiAwLjYsIG9mZnNldDogMC4yIH0pLFxyXG4gIHN0eWxlKHsgb3BhY2l0eTogMSwgb2Zmc2V0OiAwLjUgfSksXHJcbiAgc3R5bGUoeyBvcGFjaXR5OiAwLjIsIG9mZnNldDogMC43IH0pXHJcbl0pKTtcclxuZXhwb3J0IGNvbnN0IFN3YXBBbmltYXRpb24gPSBbXHJcbiAgICB0cmFuc2l0aW9uKCc6aW5jcmVtZW50JywgW3N0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDBweCknIH0pLCBhbmltYXRlKCcyMDBtcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpXSksXHJcbiAgICB0cmFuc2l0aW9uKCc6ZGVjcmVtZW50JywgW3N0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwcHgpJyB9KSwgYW5pbWF0ZSgnMjAwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKV0pXHJcbl07XHJcbmV4cG9ydCBjb25zdCBzd2FwQW5pbWF0aW9uID0gdHJpZ2dlcignc3dhcGUnLCBTd2FwQW5pbWF0aW9uKVxyXG5cclxuZXhwb3J0IGNvbnN0IHBhZ2VBbmltYXRpb24gPSB0cmlnZ2VyKCdwYWdlJywgW1xyXG4gIHN0YXRlKCc6ZW50ZXInLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKSxcclxuICBzdGF0ZSgnOmxlYXZlJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MCUpJyB9KSksXHJcbiAgdHJhbnNpdGlvbignKiA9PiAqJywgYW5pbWF0ZSgzMDApKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGZhYkFuaW1hdGlvbiA9IHRyaWdnZXIoJ2ZhYkZ1bGwnLCBbXHJcbiAgc3RhdGUoJ3dvcmtpbmcnLCBzdHlsZSh7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH0pKSxcclxuICAvL3F1ZXJ5KCdtYXQtaWNvbicsIHN0eWxlKHsgJ2ZvbnQtc2l6ZSc6ICcyMDBweCcgfSkpXHJcbiAgdHJhbnNpdGlvbignKiA8PT4gd29ya2luZycsIFthbmltYXRlKCczNTBtcycpXSlcclxuXSk7XHJcblxyXG5leHBvcnQgY29uc3Qgc3VibWVudUFuaW1hdGlvbiA9IHRyaWdnZXIoJ3N1Ym1lbnUnLCBbXHJcbiAgc3RhdGUoJ2Z1bGwnLCBzdHlsZSh7IG1pbldpZHRoOiAnMjAwcHgnLCB3aWR0aDogJyonIH0pKSxcclxuICBzdGF0ZSgnc2hyaW5rJywgc3R5bGUoeyBtaW5XaWR0aDogJzYwcHgnLCB3aWR0aDogJzYwcHgnIH0pKSxcclxuICB0cmFuc2l0aW9uKCdmdWxsPD0+c2hyaW5rLCB2b2lkPT5zaHJpbmsnLCBbYW5pbWF0ZSgnMTAwbXMgZWFzZS1vdXQnKV0pLFxyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHsgd2lkdGg6IDAgfSksXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMjAwbXMgZWFzZS1pbicsXHJcbiAgICAgIHN0eWxlKHsgbWluV2lkdGg6ICcyMDBweCcsIHdpZHRoOiAnKicgfSlcclxuICAgICksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzIwMG1zIGVhc2Utb3V0JyxcclxuICAgICAgc3R5bGUoeyBtaW5XaWR0aDogMCwgd2lkdGg6IDAgfSlcclxuICAgIClcclxuICBdKVxyXG5dKTtcclxuXHJcbmV4cG9ydCBjb25zdCBsaXN0QW5pbWF0aW9uID0gdHJpZ2dlcignbGlzdCcsIFtcclxuICAvLyAgdHJhbnNpdGlvbignKiA8PT4gKicsIFtcclxuICAvLyAgICBxdWVyeSgnQGl0ZW0nLFxyXG4gIC8vICAgICAgc3RhZ2dlcig1MCwgYW5pbWF0ZUNoaWxkKCkpLCB7IG9wdGlvbmFsOiB0cnVlIH1cclxuICAvLyAgICApXHJcbiAgLy8gIF0pXHJcbl0pO1xyXG5leHBvcnQgY29uc3QgaXRlbUFuaW1hdGlvbiA9XHJcbiAgdHJpZ2dlcignaXRlbScsIFtcclxuICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMHB4KScgfSksXHJcbiAgICAgIGFuaW1hdGUoXCIyMDBtcyBlYXNlLW91dFwiLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ25vbmUnIH0pKVxyXG4gICAgXSlcclxuICBdKTtcclxuXHJcbmV4cG9ydCBjb25zdCB0YWJzQW5pbWF0aW9uID0gdHJpZ2dlcigndGFicycsIFtcclxuICAvL3RyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAvLyAgc3R5bGUoeyB3aWR0aDogMCB9KSxcclxuICAvLyAgYW5pbWF0ZShcclxuICAvLyAgICAnMjUwbXMgZWFzZS1vdXQnLFxyXG4gIC8vICAgIHN0eWxlKHsgbWluV2lkdGg6ICcyMDBweCcsIHdpZHRoOiAnKicgfSlcclxuICAvLyAgKSxcclxuICAvL10pLFxyXG4gIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICcyMDBtcyBlYXNlLW91dCdcclxuICAgICAgLCBzdHlsZSh7IG1pbldpZHRoOiAwLCB3aWR0aDogMCB9KSlcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqIDw9PiAqJyxcclxuICAgIFtzdHlsZSh7IHdpZHRoOiAne3tzdGFydFdpZHRofX1weCcgfSksIGFuaW1hdGUoJy41cyBlYXNlJyldLCB7IHBhcmFtczogeyBzdGFydFdpZHRoOiAwIH0gfSlcclxuXSk7XHJcblxyXG5leHBvcnQgY29uc3QgdGFiQW5pbWF0aW9uID0gdHJpZ2dlcigndGFiJywgU3dhcEFuaW1hdGlvbik7XHJcblxyXG5leHBvcnQgY29uc3QgcGFuZXNBbmltYXRpb24gPSB0cmlnZ2VyKCdwYW5lcycsIFt0cmFuc2l0aW9uKCc6ZW50ZXIsIDpsZWF2ZScsIFtcclxuICBxdWVyeSgnQHBhbmUnLFxyXG4gICAgc3RhZ2dlcigxNTAsIGFuaW1hdGVDaGlsZCgpKSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXSldKTtcclxuZXhwb3J0IGNvbnN0IHBhbmVzVGl0bGVBbmltYXRpb24gPSB0cmlnZ2VyKCd0aXRsZScsIFtcclxuICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICBxdWVyeSgnaDEnLFxyXG4gICAgICBhbmltYXRlKCc1MDBtcycsIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMHB4KScgfSkpKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqPD0+KicsIFtcclxuICAgIHF1ZXJ5KCdoMScsXHJcbiAgICAgIFtzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTBweCknIH0pLFxyXG4gICAgICBhbmltYXRlKCc1MDBtcycsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpXSksXHJcbiAgXSlcclxuXSk7XHJcbmV4cG9ydCBjb25zdCBwYW5lQW5pbWF0aW9uID0gdHJpZ2dlcigncGFuZScsIFtcclxuICAvL3RyYW5zaXRpb24oJzplbnRlcicsIFtzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pLFxyXG4gIC8vICBhbmltYXRlKCc1MDBtcycsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpXSksXHJcbiAgLy90cmFuc2l0aW9uKCc6bGVhdmUnLCBbYW5pbWF0ZSgnNTAwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTBweCknIH0pKV0pXHJcbl0pO1xyXG5leHBvcnQgY29uc3QgcGFyYW1BbmltYXRpb24gPSB0cmlnZ2VyKCdwYXJhbScsIFtzdGF0ZSgnKicsIHN0eWxlKHsgYmFja2dyb3VuZENvbG9yOiAndW5zZXQnLCB0cmFuc2Zvcm06ICdzY2FsZSgxKScgfSkpLFxyXG50cmFuc2l0aW9uKCcqPD0+KicsIGFuaW1hdGUoMjAwLFxyXG4gIHN0eWxlKHsgYmFja2dyb3VuZENvbG9yOiAndW5zZXQnLCB0cmFuc2Zvcm06ICdzY2FsZSgxKScgfSkpKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHF1ZXJ5QW5pbWF0aW9uID0gdHJpZ2dlcigncXVlcnknLCBbc3RhdGUoJyonLCBzdHlsZSh7fSkpLFxyXG50cmFuc2l0aW9uKCcqPD0+KicsIGFuaW1hdGUoMCwgc3R5bGUoe30pKSldKTtcclxuIl19
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQVksS0FBSyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFTLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNJLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUU7SUFDN0QsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekUsVUFBVSxDQUFDLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ2pGLFVBQVUsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztDQUNyRixDQUFDLENBQUM7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQztJQUN6SCxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSwwQkFBMEIsRUFBRSxDQUFD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LFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JELE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDeEUsQ0FBQztDQUNILENBQUMsQ0FBQztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQzNDLDZFQUE2RTtBQUM3RSwwRUFBMEU7QUFDMUUsZ0dBQWdHO0NBQ2pHLENBQUMsQ0FBQztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3RILFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFDN0IsS0FBSyxDQUFDLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckUsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHJpZ2dlciwgdHJhbnNpdGlvbiwgYW5pbWF0ZSwgc3R5bGUsIHNlcXVlbmNlLCBxdWVyeSwgc3RhZ2dlciwgYW5pbWF0ZUNoaWxkLCBzdGF0ZSwgZ3JvdXAsIGtleWZyYW1lcyB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGV4cGFuZExpc3RJdGVtQW5pbWF0aW9uID0gdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xyXG4gIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG1pbkhlaWdodDogJzAnLCBkaXNwbGF5OiAnJyB9KSksXHJcbiAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgbWluSGVpZ2h0OiAnNTBweCcsIGRpc3BsYXk6ICcnIH0pKSxcclxuICB0cmFuc2l0aW9uKCdleHBhbmRlZCA9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcxcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXHJcbiAgdHJhbnNpdGlvbignY29sbGFwc2VkID0+IGV4cGFuZGVkJywgYW5pbWF0ZSgnMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpXHJcbl0pO1xyXG5leHBvcnQgY29uc3QgbGlzdEl0ZW1VcGRhdGVkQW5pbWF0aW9uID0gdHJpZ2dlcigndXBkYXRlZCcsIFtzdGF0ZSgndHJ1ZScsIHN0eWxlKHsgb3BhY2l0eTogMSwgLypiYWNrZ3JvdW5kOiAnd2hpdGUnKi8gfSkpLFxyXG50cmFuc2l0aW9uKCcqPT50cnVlJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgLypiYWNrZ3JvdW5kOiAnZGFya2dyYXknKi8gfSkpKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlYXJjaEFuaW1hdGlvbiA9IHRyaWdnZXIoJ3NlYXJjaCcsXHJcbiAgW3N0YXRlKCdmYWxzZScsIHN0eWxlKHsgd2lkdGg6IDAsIHBhZGRpbmc6IDAsIGJvcmRlcldpZHRoOiAwIH0pKSxcclxuICBzdGF0ZSgndHJ1ZScsIHN0eWxlKHsgd2lkdGg6ICczMDBweCcsIHBhZGRpbmc6ICcycHggNnB4JywgYm9yZGVyV2lkdGg6ICcxcHgnIH0pKSxcclxuICB0cmFuc2l0aW9uKCcqIDw9PiAqJywgYW5pbWF0ZSgyMDAsIHN0eWxlKHt9KSkpXSk7XHJcblxyXG5leHBvcnQgY29uc3QgZGVzaGJvYXJkQW5pbWF0aW9uID0gdHJpZ2dlcignZGVzaGJvYXJkJyxcclxuICBbdHJhbnNpdGlvbignKiA8PT4gKicsIFtxdWVyeSgnQGNhcmQnLFxyXG4gICAgc3RhZ2dlcigyNTAsIGFuaW1hdGVDaGlsZCgpKSwgeyBvcHRpb25hbDogdHJ1ZSB9KV0pXSk7XHJcblxyXG5leHBvcnQgY29uc3QgY2FyZHNBbmltYXRpb24gPSB0cmlnZ2VyKCdjYXJkJywgW1xyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHtcclxuICAgICAgdHJhbnNmb3JtOiAncm90YXRlWSgxODBkZWcpJyxcclxuICAgICAgJy13ZWJraXQtdHJhbnNmb3JtJzogJ3JvdGF0ZVkoMTgwZGVnKSdcclxuICAgIH0pLFxyXG4gICAgYW5pbWF0ZShcIi41cyBlYXNlXCIsIHN0eWxlKHtcclxuICAgICAgdHJhbnNmb3JtOiAncm90YXRlWSgwZGVnKScsXHJcbiAgICAgICctd2Via2l0LXRyYW5zZm9ybSc6ICdyb3RhdGVZKDBkZWcpJ1xyXG4gICAgfSkpXHJcbiAgXSlcclxuXSk7XHJcblxyXG5leHBvcnQgY29uc3QgU2hha2VBbmltYXRpb24gPSBbXHJcbiAgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMCknIH0pLFxyXG4gIGFuaW1hdGUoJzAuMXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgyZGVnKScgfSkpLFxyXG4gIGFuaW1hdGUoJzAuMXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgtMmRlZyknIH0pKSxcclxuICBhbmltYXRlKCcwLjFzJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMmRlZyknIH0pKSxcclxuICBhbmltYXRlKCcwLjFzJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMCknIH0pKSxcclxuXTtcclxuZXhwb3J0IGNvbnN0IEVudGVyRXhpdExlZnQgPSBbXHJcbiAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0yMDBweCknIH0pLFxyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pXHJcbiAgICApLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICczMDBtcyBlYXNlLWluJyxcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0yMDBweCknIH0pXHJcbiAgICApXHJcbiAgXSlcclxuXTtcclxuZXhwb3J0IGNvbnN0IEVudGVyRXhpdFJpZ2h0ID0gW1xyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgyMDBweCknIH0pLFxyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pXHJcbiAgICApLFxyXG4gIF0pLFxyXG4gIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICczMDBtcyBlYXNlLWluJyxcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDIwMHB4KScgfSlcclxuICAgIClcclxuICBdKVxyXG5dO1xyXG5leHBvcnQgY29uc3QgRW50ZXJFeGl0VG9wID0gW1xyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjAwcHgpJyB9KSxcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICczMDBtcyBlYXNlLWluJyxcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KVxyXG4gICAgKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMzAwbXMgZWFzZS1pbicsXHJcbiAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgyMDBweCknIH0pXHJcbiAgICApXHJcbiAgXSlcclxuXTtcclxuZXhwb3J0IGNvbnN0IEZhZGVTbGlkZUluT3V0ID0gdHJpZ2dlcignZmFkZVNsaWRlSW5PdXQnLCBbXHJcbiAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwcHgpJyB9KSxcclxuICAgIGFuaW1hdGUoJzUwMG1zJywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KSksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgYW5pbWF0ZSgnNTAwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMTBweCknIH0pKSxcclxuICBdKSxcclxuXSk7XHJcbmV4cG9ydCBjb25zdCBQdWxzZUFuaW1hdGlvbiA9IGFuaW1hdGUoJzFzJywga2V5ZnJhbWVzKFtcclxuICBzdHlsZSh7IG9wYWNpdHk6IDAuMSwgb2Zmc2V0OiAwLjEgfSksXHJcbiAgc3R5bGUoeyBvcGFjaXR5OiAwLjYsIG9mZnNldDogMC4yIH0pLFxyXG4gIHN0eWxlKHsgb3BhY2l0eTogMSwgb2Zmc2V0OiAwLjUgfSksXHJcbiAgc3R5bGUoeyBvcGFjaXR5OiAwLjIsIG9mZnNldDogMC43IH0pXHJcbl0pKTtcclxuZXhwb3J0IGNvbnN0IFN3YXBBbmltYXRpb24gPSBbXHJcbiAgICB0cmFuc2l0aW9uKCc6aW5jcmVtZW50JywgW3N0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDBweCknIH0pLCBhbmltYXRlKCcyMDBtcycsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpXSksXHJcbiAgICB0cmFuc2l0aW9uKCc6ZGVjcmVtZW50JywgW3N0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwcHgpJyB9KSwgYW5pbWF0ZSgnMjAwbXMnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKV0pXHJcbl07XHJcbmV4cG9ydCBjb25zdCBtYXRyaXhBbmltYXRpb24gPSB0cmlnZ2VyKCd0YWJsZScsXHJcbiAgW3RyYW5zaXRpb24oJ3ZvaWQ9PionLFxyXG4gICAgW1xyXG4gICAgICBxdWVyeSgnLm1hdC1yb3cnLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMHB4KScgfSksXHJcbiAgICAgICAgICBzdGFnZ2VyKDEwMCxcclxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdub25lJyB9KSlcclxuICAgICAgICBdLFxyXG4gICAgICAgIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgIF0pXSk7XHJcbmV4cG9ydCBjb25zdCBzd2FwQW5pbWF0aW9uID0gdHJpZ2dlcignc3dhcGUnLCBTd2FwQW5pbWF0aW9uKVxyXG5cclxuZXhwb3J0IGNvbnN0IHBhZ2VBbmltYXRpb24gPSB0cmlnZ2VyKCdwYWdlJywgW1xyXG4gIHN0YXRlKCc6ZW50ZXInLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKSxcclxuICBzdGF0ZSgnOmxlYXZlJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MCUpJyB9KSksXHJcbiAgdHJhbnNpdGlvbignKiA9PiAqJywgYW5pbWF0ZSgzMDApKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGZhYkFuaW1hdGlvbiA9IHRyaWdnZXIoJ2ZhYkZ1bGwnLCBbXHJcbiAgc3RhdGUoJ3dvcmtpbmcnLCBzdHlsZSh7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH0pKSxcclxuICAvL3F1ZXJ5KCdtYXQtaWNvbicsIHN0eWxlKHsgJ2ZvbnQtc2l6ZSc6ICcyMDBweCcgfSkpXHJcbiAgdHJhbnNpdGlvbignKiA8PT4gd29ya2luZycsIFthbmltYXRlKCczNTBtcycpXSlcclxuXSk7XHJcblxyXG5leHBvcnQgY29uc3Qgc3VibWVudUFuaW1hdGlvbiA9IHRyaWdnZXIoJ3N1Ym1lbnUnLCBbXHJcbiAgc3RhdGUoJ2Z1bGwnLCBzdHlsZSh7IG1pbldpZHRoOiAnMjAwcHgnLCB3aWR0aDogJyonIH0pKSxcclxuICBzdGF0ZSgnc2hyaW5rJywgc3R5bGUoeyBtaW5XaWR0aDogJzYwcHgnLCB3aWR0aDogJzYwcHgnIH0pKSxcclxuICB0cmFuc2l0aW9uKCdmdWxsPD0+c2hyaW5rLCB2b2lkPT5zaHJpbmsnLCBbYW5pbWF0ZSgnMTAwbXMgZWFzZS1vdXQnKV0pLFxyXG4gIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgIHN0eWxlKHsgd2lkdGg6IDAgfSksXHJcbiAgICBhbmltYXRlKFxyXG4gICAgICAnMjAwbXMgZWFzZS1pbicsXHJcbiAgICAgIHN0eWxlKHsgbWluV2lkdGg6ICcyMDBweCcsIHdpZHRoOiAnKicgfSlcclxuICAgICksXHJcbiAgXSksXHJcbiAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xyXG4gICAgYW5pbWF0ZShcclxuICAgICAgJzIwMG1zIGVhc2Utb3V0JyxcclxuICAgICAgc3R5bGUoeyBtaW5XaWR0aDogMCwgd2lkdGg6IDAgfSlcclxuICAgIClcclxuICBdKVxyXG5dKTtcclxuXHJcbmV4cG9ydCBjb25zdCBsaXN0QW5pbWF0aW9uID0gdHJpZ2dlcignbGlzdCcsIFtcclxuICAvLyAgdHJhbnNpdGlvbignKiA8PT4gKicsIFtcclxuICAvLyAgICBxdWVyeSgnQGl0ZW0nLFxyXG4gIC8vICAgICAgc3RhZ2dlcig1MCwgYW5pbWF0ZUNoaWxkKCkpLCB7IG9wdGlvbmFsOiB0cnVlIH1cclxuICAvLyAgICApXHJcbiAgLy8gIF0pXHJcbl0pO1xyXG5leHBvcnQgY29uc3QgaXRlbUFuaW1hdGlvbiA9XHJcbiAgdHJpZ2dlcignaXRlbScsIFtcclxuICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMHB4KScgfSksXHJcbiAgICAgIGFuaW1hdGUoXCIyMDBtcyBlYXNlLW91dFwiLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ25vbmUnIH0pKVxyXG4gICAgXSlcclxuICBdKTtcclxuXHJcbmV4cG9ydCBjb25zdCB0YWJzQW5pbWF0aW9uID0gdHJpZ2dlcigndGFicycsIFtcclxuICAvL3RyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAvLyAgc3R5bGUoeyB3aWR0aDogMCB9KSxcclxuICAvLyAgYW5pbWF0ZShcclxuICAvLyAgICAnMjUwbXMgZWFzZS1vdXQnLFxyXG4gIC8vICAgIHN0eWxlKHsgbWluV2lkdGg6ICcyMDBweCcsIHdpZHRoOiAnKicgfSlcclxuICAvLyAgKSxcclxuICAvL10pLFxyXG4gIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcclxuICAgIGFuaW1hdGUoXHJcbiAgICAgICcyMDBtcyBlYXNlLW91dCdcclxuICAgICAgLCBzdHlsZSh7IG1pbldpZHRoOiAwLCB3aWR0aDogMCB9KSlcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqIDw9PiAqJyxcclxuICAgIFtzdHlsZSh7IHdpZHRoOiAne3tzdGFydFdpZHRofX1weCcgfSksIGFuaW1hdGUoJy41cyBlYXNlJyldLCB7IHBhcmFtczogeyBzdGFydFdpZHRoOiAwIH0gfSlcclxuXSk7XHJcblxyXG5leHBvcnQgY29uc3QgdGFiQW5pbWF0aW9uID0gdHJpZ2dlcigndGFiJywgU3dhcEFuaW1hdGlvbik7XHJcblxyXG5leHBvcnQgY29uc3QgcGFuZXNBbmltYXRpb24gPSB0cmlnZ2VyKCdwYW5lcycsIFt0cmFuc2l0aW9uKCc6ZW50ZXIsIDpsZWF2ZScsIFtcclxuICBxdWVyeSgnQHBhbmUnLFxyXG4gICAgc3RhZ2dlcigxNTAsIGFuaW1hdGVDaGlsZCgpKSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXSldKTtcclxuZXhwb3J0IGNvbnN0IHBhbmVzVGl0bGVBbmltYXRpb24gPSB0cmlnZ2VyKCd0aXRsZScsIFtcclxuICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICBxdWVyeSgnaDEnLFxyXG4gICAgICBhbmltYXRlKCc1MDBtcycsIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMHB4KScgfSkpKSxcclxuICBdKSxcclxuICB0cmFuc2l0aW9uKCcqPD0+KicsIFtcclxuICAgIHF1ZXJ5KCdoMScsXHJcbiAgICAgIFtzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTBweCknIH0pLFxyXG4gICAgICBhbmltYXRlKCc1MDBtcycsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpXSksXHJcbiAgXSlcclxuXSk7XHJcbmV4cG9ydCBjb25zdCBwYW5lQW5pbWF0aW9uID0gdHJpZ2dlcigncGFuZScsIFtcclxuICAvL3RyYW5zaXRpb24oJzplbnRlcicsIFtzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pLFxyXG4gIC8vICBhbmltYXRlKCc1MDBtcycsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSkpXSksXHJcbiAgLy90cmFuc2l0aW9uKCc6bGVhdmUnLCBbYW5pbWF0ZSgnNTAwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTBweCknIH0pKV0pXHJcbl0pO1xyXG5leHBvcnQgY29uc3QgcGFyYW1BbmltYXRpb24gPSB0cmlnZ2VyKCdwYXJhbScsIFtzdGF0ZSgnKicsIHN0eWxlKHsgYmFja2dyb3VuZENvbG9yOiAndW5zZXQnLCB0cmFuc2Zvcm06ICdzY2FsZSgxKScgfSkpLFxyXG50cmFuc2l0aW9uKCcqPD0+KicsIGFuaW1hdGUoMjAwLFxyXG4gIHN0eWxlKHsgYmFja2dyb3VuZENvbG9yOiAndW5zZXQnLCB0cmFuc2Zvcm06ICdzY2FsZSgxKScgfSkpKV0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHF1ZXJ5QW5pbWF0aW9uID0gdHJpZ2dlcigncXVlcnknLCBbc3RhdGUoJyonLCBzdHlsZSh7fSkpLFxyXG50cmFuc2l0aW9uKCcqPD0+KicsIGFuaW1hdGUoMCwgc3R5bGUoe30pKSldKTtcclxuIl19