oxygen-cli 1.43.1 → 1.43.2-beta.2

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.
@@ -23,7 +23,7 @@ class ReportPortalReporter extends _ReporterBase.default {
23
23
  constructor(options, reporterOpts, aggregator) {
24
24
  super(options);
25
25
  this.reporterOpts = reporterOpts || options.rp;
26
- this.reportSteps = reporterOpts.reportSteps || true;
26
+ this.reportSteps = !reporterOpts.reportSteps && reporterOpts.reportSteps !== false ? true : reporterOpts.reportSteps;
27
27
  this.reportLogs = reporterOpts.reportLogs || false;
28
28
  this.cbSuiteToRpIdHash = {};
29
29
  this.cbCaseToRpIdHash = {};
@@ -76,7 +76,7 @@ class ReportPortalReporter extends _ReporterBase.default {
76
76
  await Promise.all(this.promises);
77
77
  const {
78
78
  promise
79
- } = await this.rpClient.finishLaunch(this.tempLaunchId, {
79
+ } = this.rpClient.finishLaunch(this.tempLaunchId, {
80
80
  status: hasFailed ? 'FAILED' : 'PASSED'
81
81
  });
82
82
  await promise;
@@ -342,7 +342,16 @@ class ReportPortalReporter extends _ReporterBase.default {
342
342
  if (!this.tempLaunchId) {
343
343
  return;
344
344
  }
345
- const rpParentId = stepId ? this.cbStepToRpIdHash[stepId] : caseId ? this.cbCaseToRpIdHash[caseId] : suiteId ? this.cbSuiteToRpIdHash[suiteId] : undefined;
345
+ let rpParentId;
346
+ if (stepId) {
347
+ rpParentId = this.cbStepToRpIdHash[stepId];
348
+ }
349
+ if (!rpParentId && caseId) {
350
+ rpParentId = this.cbCaseToRpIdHash[caseId];
351
+ }
352
+ if (!rpParentId && suiteId) {
353
+ rpParentId = this.cbSuiteToRpIdHash[suiteId];
354
+ }
346
355
  const rpLevel = this._getRpLevel(level);
347
356
  const logMsg = this._stringify(msg);
348
357
  if (logMsg) {
@@ -475,4 +484,4 @@ class ReportPortalReporter extends _ReporterBase.default {
475
484
  }
476
485
  }
477
486
  exports.default = ReportPortalReporter;
478
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUmVwb3J0ZXJCYXNlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc3RhdHVzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUlBDbGllbnQiLCJMQVVOQ0hfTU9ERVMiLCJERUZBVUxUIiwiREVCVUciLCJURVNUX0lURU1fVFlQRVMiLCJTVUlURSIsIlRFU1QiLCJTVEVQIiwiTUFYX05BTUVfTEVOR1RIIiwiUmVwb3J0UG9ydGFsUmVwb3J0ZXIiLCJSZXBvcnRlckJhc2UiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJyZXBvcnRlck9wdHMiLCJhZ2dyZWdhdG9yIiwicnAiLCJyZXBvcnRTdGVwcyIsInJlcG9ydExvZ3MiLCJjYlN1aXRlVG9ScElkSGFzaCIsImNiQ2FzZVRvUnBJZEhhc2giLCJjYlN0ZXBUb1JwSWRIYXNoIiwiY2JTdWl0ZVJlc3VsdExpc3RCeVJlZklkIiwiY2JDYXNlVG9DdXJyZW50VHJhbnNhY3Rpb25JZCIsImNiQ2FzZVRvQ3VycmVudFN1YlN0ZXBJZCIsInByb21pc2VzIiwiYXBpS2V5IiwiZW5kcG9pbnQiLCJwcm9qZWN0IiwiRXJyb3IiLCJycENsaWVudCIsImxhdW5jaCIsIm5hbWUiLCJpbml0IiwiY2hlY2tDb25uZWN0IiwibWVzc2FnZSIsImdlbmVyYXRlIiwicmVzdWx0cyIsIm9uTGF1bmNoU3RhcnQiLCJ0ZW1wSWQiLCJwcm9taXNlIiwic3RhcnRMYXVuY2giLCJtb2RlIiwiZGVidWciLCJhdHRyaWJ1dGVzIiwidGVtcExhdW5jaElkIiwiaGFuZGxlUHJvbWlzZSIsImNvbnNvbGUiLCJkaXIiLCJvbkxhdW5jaEVuZCIsIl9yZXBvcnRFbmRPZlN0YXJ0ZWRTdWl0ZXMiLCJoYXNGYWlsZWQiLCJzb21lIiwieCIsInN0YXR1cyIsIlN0YXR1cyIsIkZBSUxFRCIsIlByb21pc2UiLCJhbGwiLCJmaW5pc2hMYXVuY2giLCJvblJ1bm5lclN0YXJ0IiwicmlkIiwib3B0cyIsImNhcHMiLCJvblJ1bm5lckVuZCIsInJlc3VsdCIsIm9uU3VpdGVTdGFydCIsInN1aXRlSWQiLCJzdWl0ZSIsInN1aXRlRGVmIiwic3VpdGVSZWZJZCIsInJlZklkIiwic3RhcnRUZXN0SXRlbVJlcSIsInR5cGUiLCJzdGFydFRlc3RJdGVtIiwib25TdWl0ZUVuZCIsInB1c2giLCJvbkNhc2VTdGFydCIsImNhc2VJZCIsImNhc2VEZWYiLCJjb2RlUmVmIiwicGF0aCIsInJwU3VpdGVJZCIsIm9uQ2FzZUVuZCIsInJwVGVzdElkIiwidG9Mb3dlckNhc2UiLCJmYWlsdXJlIiwicnBGaWxlIiwic2NyZWVuc2hvdCIsImNvbnRlbnQiLCJ1bmRlZmluZWQiLCJsb2dNc2ciLCJfc3RyaW5naWZ5IiwibG9nUmVxIiwibGV2ZWwiLCJzZW5kTG9nIiwidHJhbnNJZCIsImZpbmlzaFRyYW5zYWN0aW9uUmVxIiwidHJhbnNScElkIiwiZmluaXNoVGVzdEl0ZW0iLCJmaW5pc2hUZXN0SXRlbVJlcSIsIm9uU3RlcFN0YXJ0Iiwic3RlcCIsIm1vZHVsZSIsInJlcG9ydExvZ1N0ZXAiLCJycENhc2VJZCIsInJwUGFyZW50SWQiLCJpZCIsInN0ZXBOYW1lIiwiX2dldFN0ZXBOYW1lIiwibG9jYXRpb24iLCJ0ZXN0Q2FzZUlkIiwiaGFzU3RhdHMiLCJvblN0ZXBFbmQiLCJzdGFydHNXaXRoIiwicnBTdGVwSWQiLCJmaWxlIiwib25Mb2ciLCJzdGVwSWQiLCJtc2ciLCJ0aW1lIiwic3JjIiwicnBMZXZlbCIsIl9nZXRScExldmVsIiwiYXJncyIsImxlbmd0aCIsInNlbmRScExvZyIsIk9iamVjdCIsImtleXMiLCJoYXNGYWlsZWRTdWl0ZSIsIm94TGV2ZWwiLCJzaWduYXR1cmUiLCJzdWJzdHJpbmciLCJTdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwiZXJyb3IiLCJjYXRjaCIsImVyciIsImxvZyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvb3hfcmVwb3J0ZXJzL3JlcG9ydGVyLXJwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIFJlcG9ydGVyIGZvciBSZXBvcnRQb3J0YWxcclxuICovXHJcbmltcG9ydCBSZXBvcnRlckJhc2UgZnJvbSAnLi4vcmVwb3J0ZXIvUmVwb3J0ZXJCYXNlJztcclxuaW1wb3J0IFN0YXR1cyBmcm9tICcuLi9tb2RlbC9zdGF0dXMnO1xyXG5jb25zdCBSUENsaWVudCA9IHJlcXVpcmUoJ0BveHlnZW5ocS9ycC1jbGllbnQtamF2YXNjcmlwdCcpO1xyXG5jb25zdCBMQVVOQ0hfTU9ERVMgPSB7XHJcbiAgICBERUZBVUxUOiAnREVGQVVMVCcsXHJcbiAgICBERUJVRzogJ0RFQlVHJyxcclxufTtcclxuY29uc3QgVEVTVF9JVEVNX1RZUEVTID0ge1xyXG4gICAgU1VJVEU6ICdTVUlURScsXHJcbiAgICBURVNUOiAnVEVTVCcsXHJcbiAgICBTVEVQOiAnU1RFUCcsXHJcbn07XHJcbmNvbnN0IE1BWF9OQU1FX0xFTkdUSCA9IDEyODtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlcG9ydFBvcnRhbFJlcG9ydGVyIGV4dGVuZHMgUmVwb3J0ZXJCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIHJlcG9ydGVyT3B0cywgYWdncmVnYXRvcikge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMucmVwb3J0ZXJPcHRzID0gcmVwb3J0ZXJPcHRzIHx8IG9wdGlvbnMucnA7XHJcbiAgICAgICAgdGhpcy5yZXBvcnRTdGVwcyA9IHJlcG9ydGVyT3B0cy5yZXBvcnRTdGVwcyB8fCB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVwb3J0TG9ncyA9IHJlcG9ydGVyT3B0cy5yZXBvcnRMb2dzIHx8IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2ggPSB7fTtcclxuICAgICAgICB0aGlzLmNiQ2FzZVRvUnBJZEhhc2ggPSB7fTtcclxuICAgICAgICB0aGlzLmNiU3RlcFRvUnBJZEhhc2ggPSB7fTtcclxuICAgICAgICB0aGlzLmNiU3VpdGVSZXN1bHRMaXN0QnlSZWZJZCA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2JDYXNlVG9DdXJyZW50VHJhbnNhY3Rpb25JZCA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2JDYXNlVG9DdXJyZW50U3ViU3RlcElkID0ge307XHJcbiAgICAgICAgdGhpcy5wcm9taXNlcyA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICF0aGlzLnJlcG9ydGVyT3B0c1xyXG4gICAgICAgICAgICB8fCAhdGhpcy5yZXBvcnRlck9wdHMuYXBpS2V5XHJcbiAgICAgICAgICAgIHx8ICF0aGlzLnJlcG9ydGVyT3B0cy5lbmRwb2ludFxyXG4gICAgICAgICAgICB8fCAhdGhpcy5yZXBvcnRlck9wdHMucHJvamVjdFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcG9ydFBvcnRhbCBvcHRpb25zIGFyZSBtaXNzaW5nIGluIG94eWdlbi5jb25mIGZpbGUuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYWdncmVnYXRvciA9IGFnZ3JlZ2F0b3I7XHJcbiAgICAgICAgdGhpcy5ycENsaWVudCA9IG5ldyBSUENsaWVudCh7XHJcbiAgICAgICAgICAgIGxhdW5jaDogdGhpcy5yZXBvcnRlck9wdHMubGF1bmNoIHx8IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICAgICAgICAuLi50aGlzLnJlcG9ydGVyT3B0c1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXQoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5ycENsaWVudC5jaGVja0Nvbm5lY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSUCAtIEVycm9yIGNvbm5lY3RpbmcgdG8gdGhlIHNlcnZlcjogJHtlLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgZ2VuZXJhdGUocmVzdWx0cykge1xyXG4gICAgfVxyXG4gICAgLy8gRXZlbnRzXHJcbiAgICBhc3luYyBvbkxhdW5jaFN0YXJ0KHsgb3B0aW9ucyB9KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgeyB0ZW1wSWQsIHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuc3RhcnRMYXVuY2goe1xyXG4gICAgICAgICAgICAgICAgbW9kZTogdGhpcy5yZXBvcnRlck9wdHMubW9kZSB8fCBMQVVOQ0hfTU9ERVMuREVGQVVMVCxcclxuICAgICAgICAgICAgICAgIGRlYnVnOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRoaXMucmVwb3J0ZXJPcHRzLmF0dHJpYnV0ZXNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMudGVtcExhdW5jaElkID0gdGVtcElkO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVQcm9taXNlKHByb21pc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gc3RhcnQgbGF1bmNoOiAke2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgb25MYXVuY2hFbmQoeyByZXN1bHRzIH0pIHtcclxuICAgICAgICAvLyByZXBvcnQgdGhlIGVuZCBvZiBhbGwgc3RhcnRlZCBzdWl0ZXNcclxuICAgICAgICBhd2FpdCB0aGlzLl9yZXBvcnRFbmRPZlN0YXJ0ZWRTdWl0ZXMoKTtcclxuICAgICAgICAvLyBDYWxjdWxhdGUgbGF1bmNoIHN0YXR1c1xyXG4gICAgICAgIGNvbnN0IGhhc0ZhaWxlZCA9IHJlc3VsdHMuc29tZSh4ID0+IHguc3RhdHVzID09PSBTdGF0dXMuRkFJTEVEKTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5wcm9taXNlcyk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IGF3YWl0IHRoaXMucnBDbGllbnQuZmluaXNoTGF1bmNoKHRoaXMudGVtcExhdW5jaElkLCB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IGhhc0ZhaWxlZCA/ICdGQUlMRUQnIDogJ1BBU1NFRCdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBlbmQgbGF1bmNoOiAke2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgb25SdW5uZXJTdGFydCh7IHJpZCwgb3B0cywgY2FwcyB9KSB7XHJcbiAgICB9XHJcbiAgICBhc3luYyBvblJ1bm5lckVuZCh7IHJpZCwgcmVzdWx0IH0pIHtcclxuICAgIH1cclxuICAgIGFzeW5jIG9uU3VpdGVTdGFydCh7IHJpZCwgc3VpdGVJZCwgc3VpdGU6IHN1aXRlRGVmIH0pIHtcclxuICAgICAgICAvLyBpbiBwYXJhbGxlbCB0ZXN0IGV4ZWN1dGlvbiwgb25TdWl0ZVN0YXJ0IHdpbGwgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciB0aGUgc2FtZSBzdWl0ZSBcclxuICAgICAgICAvLyBtYWtlIHN1cmUgd2UgY2FsbCBcInN0YXJ0VGVzdEl0ZW1cIiB0aGUgc2FtZSBzdWl0ZSBvbmx5IG9uY2VcclxuICAgICAgICBjb25zdCBzdWl0ZVJlZklkID0gc3VpdGVEZWYucmVmSWQ7XHJcbiAgICAgICAgaWYgKHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2hbc3VpdGVSZWZJZF0pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBhc3NpZ24gZW1wdHkgb2JqZWN0IGFzIGEgZm9ybSBvZiBtdWx0aS10aHJlYWQgbG9jayxcclxuICAgICAgICAvLyBzbyB0aGUgcGFyYWxsZWwgY2FsbCB0byBvblN1aXRlU3RhcnQgZnJvbSB0aGUgbmV4dCB0aHJlYWRcclxuICAgICAgICAvLyB3aWxsIG5vdCB0cnkgdG8gcHJvY2VlZCB3aXRoIHRoZSBjb2RlIGJlbG93XHJcbiAgICAgICAgdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZVJlZklkXSA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2JTdWl0ZVJlc3VsdExpc3RCeVJlZklkW3N1aXRlUmVmSWRdID0gW107XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgbmFtZTogc3VpdGVEZWYubmFtZSB8fCB0aGlzLm9wdGlvbnMubmFtZSxcclxuICAgICAgICAgICAgdHlwZTogVEVTVF9JVEVNX1RZUEVTLlNVSVRFLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGVtcElkLCBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnN0YXJ0VGVzdEl0ZW0oc3RhcnRUZXN0SXRlbVJlcSwgdGhpcy50ZW1wTGF1bmNoSWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNiU3VpdGVUb1JwSWRIYXNoW3N1aXRlUmVmSWRdID0gdGVtcElkO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2UocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBzdGFydCBzdWl0ZSBpdGVtOiAke2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgb25TdWl0ZUVuZCh7IHJpZCwgc3VpdGVJZCwgcmVzdWx0IH0pIHtcclxuICAgICAgICBjb25zdCBzdWl0ZVJlZklkID0gcmVzdWx0LnJlZklkO1xyXG4gICAgICAgIHRoaXMuY2JTdWl0ZVJlc3VsdExpc3RCeVJlZklkW3N1aXRlUmVmSWRdICYmIHRoaXMuY2JTdWl0ZVJlc3VsdExpc3RCeVJlZklkW3N1aXRlUmVmSWRdLnB1c2gocmVzdWx0KTtcclxuICAgIH1cclxuICAgIGFzeW5jIG9uQ2FzZVN0YXJ0KHsgcmlkLCBzdWl0ZUlkLCBzdWl0ZVJlZklkLCBjYXNlSWQsICdjYXNlJzogY2FzZURlZiB9KSB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgbmFtZTogY2FzZURlZi5uYW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBURVNUX0lURU1fVFlQRVMuVEVTVCxcclxuICAgICAgICAgICAgY29kZVJlZjogY2FzZURlZi5wYXRoLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgcnBTdWl0ZUlkID0gdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZVJlZklkXTtcclxuICAgICAgICBpZiAoIXJwU3VpdGVJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRlbXBJZCwgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zdGFydFRlc3RJdGVtKHN0YXJ0VGVzdEl0ZW1SZXEsIHRoaXMudGVtcExhdW5jaElkLCBycFN1aXRlSWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNiQ2FzZVRvUnBJZEhhc2hbY2FzZUlkXSA9IHRlbXBJZDtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVQcm9taXNlKHByb21pc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gc3RhcnQgY2FzZSBpdGVtOiAke2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgb25DYXNlRW5kKHsgcmlkLCBzdWl0ZUlkLCBzdWl0ZVJlZklkLCBjYXNlSWQsIHJlc3VsdCB9KSB7XHJcbiAgICAgICAgY29uc3QgcnBUZXN0SWQgPSB0aGlzLmNiQ2FzZVRvUnBJZEhhc2hbY2FzZUlkXTtcclxuICAgICAgICBpZiAoIXJwVGVzdElkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVzdWx0LnN0YXR1cy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdmYWlsZWQnICYmIHJlc3VsdC5mYWlsdXJlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJwRmlsZSA9IHJlc3VsdC5zY3JlZW5zaG90ID9cclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3NjcmVlbnNob3QnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiByZXN1bHQuc2NyZWVuc2hvdCxcclxuICAgICAgICAgICAgfSA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGxvZ01zZyA9IHRoaXMuX3N0cmluZ2lmeShyZXN1bHQuZmFpbHVyZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgaWYgKGxvZ01zZykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9nUmVxID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGxvZ01zZyxcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogJ2Vycm9yJ1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zZW5kTG9nKHJwVGVzdElkLCBsb2dSZXEsIHJwRmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVQcm9taXNlKHByb21pc2UpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBzZW5kIGxvZyBmb3IgZmluaXNoZWQgY2FzZSBpdGVtOiAke2V9YCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHRyYW5zSWQgPSB0aGlzLmNiQ2FzZVRvQ3VycmVudFRyYW5zYWN0aW9uSWRbY2FzZUlkXTtcclxuXHJcbiAgICAgICAgaWYgKHRyYW5zSWQpIHtcclxuICAgICAgICAgICAgLy8gRklYTUU6IHNob3VsZCBjYWxjdWxhdGUgcHJvcGVyIHN0YXR1c1xyXG4gICAgICAgICAgICBjb25zdCBmaW5pc2hUcmFuc2FjdGlvblJlcSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3Bhc3NlZCcgLy9yZXN1bHQuc3RhdHVzLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdHJhbnNScElkID0gdGhpcy5jYlN0ZXBUb1JwSWRIYXNoW3RyYW5zSWRdO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5maW5pc2hUZXN0SXRlbSh0cmFuc1JwSWQsIGZpbmlzaFRyYW5zYWN0aW9uUmVxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZShwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGZpbmlzaCB0cmFuc2FjdGlvbiBpdGVtIG9uIGNhc2UgZW5kOiAke2V9YCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmNiQ2FzZVRvQ3VycmVudFRyYW5zYWN0aW9uSWRbY2FzZUlkXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZpbmlzaFRlc3RJdGVtUmVxID0ge1xyXG4gICAgICAgICAgICBzdGF0dXM6IHJlc3VsdC5zdGF0dXMudG9Mb3dlckNhc2UoKSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuZmluaXNoVGVzdEl0ZW0ocnBUZXN0SWQsIGZpbmlzaFRlc3RJdGVtUmVxKTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVQcm9taXNlKHByb21pc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gZmluaXNoIGNhc2UgaXRlbTogJHtlfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvblN0ZXBTdGFydCh7IHJpZCwgY2FzZUlkLCBzdGVwIH0pIHtcclxuICAgICAgICBpZiAoIXRoaXMucmVwb3J0U3RlcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc3RlcC5tb2R1bGUgJiYgc3RlcC5tb2R1bGUgPT09ICdsb2cnKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVwb3J0TG9nU3RlcChjYXNlSWQsIHN0ZXApO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJwQ2FzZUlkID0gdGhpcy5jYkNhc2VUb1JwSWRIYXNoW2Nhc2VJZF07XHJcbiAgICAgICAgbGV0IHJwUGFyZW50SWQ7XHJcblxyXG4gICAgICAgIGNvbnN0IHRyYW5zSWQgPSB0aGlzLmNiQ2FzZVRvQ3VycmVudFRyYW5zYWN0aW9uSWRbY2FzZUlkXTtcclxuXHJcbiAgICAgICAgaWYgKHN0ZXAubmFtZSA9PT0gJ3RyYW5zYWN0aW9uJykge1xyXG4gICAgICAgICAgICBpZiAodHJhbnNJZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gRklYTUU6IHNob3VsZCBjYWxjdWxhdGUgcHJvcGVyIHN0YXR1c1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmluaXNoVHJhbnNhY3Rpb25SZXEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAncGFzc2VkJyAvL3Jlc3VsdC5zdGF0dXMudG9Mb3dlckNhc2UoKSxcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc1JwSWQgPSB0aGlzLmNiU3RlcFRvUnBJZEhhc2hbdHJhbnNJZF07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LmZpbmlzaFRlc3RJdGVtKHRyYW5zUnBJZCwgZmluaXNoVHJhbnNhY3Rpb25SZXEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZShwcm9taXNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGZpbmlzaCB0cmFuc2FjdGlvbiBpdGVtIG9uIGNhc2UgZW5kOiAke2V9YCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2JDYXNlVG9DdXJyZW50VHJhbnNhY3Rpb25JZFtjYXNlSWRdID0gc3RlcC5pZDtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2JDYXNlVG9DdXJyZW50U3ViU3RlcElkW2Nhc2VJZF07XHJcbiAgICAgICAgICAgIHJwUGFyZW50SWQgPSBycENhc2VJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2JDYXNlVG9DdXJyZW50U3ViU3RlcElkW2Nhc2VJZF0gPSBzdGVwLmlkO1xyXG4gICAgICAgICAgICBycFBhcmVudElkID0gdHJhbnNJZCA/IHRoaXMuY2JTdGVwVG9ScElkSGFzaFt0cmFuc0lkXSA6IHJwQ2FzZUlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFycFBhcmVudElkIHx8ICFycENhc2VJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN0ZXBOYW1lID0gdGhpcy5fZ2V0U3RlcE5hbWUoc3RlcCk7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgbmFtZTogc3RlcE5hbWUsXHJcbiAgICAgICAgICAgIHR5cGU6IFRFU1RfSVRFTV9UWVBFUy5TVEVQLFxyXG4gICAgICAgICAgICAvLyBcImNvZGVSZWZcIiArIFwicGFyYW1ldGVyc1wiIHVzZWQgYnkgUlAgbGliIHRvIGdlbmVyYXRlIHRlc3RDYXNlSWQgaWYgdGVzdENhc2VJZCBpcyBub3QgZGVmaW5lZFxyXG4gICAgICAgICAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlcG9ydHBvcnRhbC9jbGllbnQtamF2YXNjcmlwdC9ibG9iLzQ4NmVmNzBjNjM4YTlhMjMyNjcyOTBjNjJkZjFmYWY5MDBmN2RmNmEvbGliL3JlcG9ydC1wb3J0YWwtY2xpZW50LmpzI0w0OTdcclxuICAgICAgICAgICAgLy8gdGhpcyBpcyBkaXNhYmxlZCBmb3Igbm93LiBub3Qgc3VyZSBpZiBhY3R1YWxseSBuZWVkZWQuLi5cclxuICAgICAgICAgICAgLy9wYXJhbWV0ZXJzOiB0aGlzLl9nZXRScEFyZ3Moc3RlcC5hcmdzKSxcclxuICAgICAgICAgICAgY29kZVJlZjogc3RlcC5sb2NhdGlvbixcclxuICAgICAgICAgICAgdGVzdENhc2VJZDogcnBDYXNlSWQsXHJcbiAgICAgICAgICAgIGhhc1N0YXRzOiBmYWxzZSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRlbXBJZCwgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zdGFydFRlc3RJdGVtKHN0YXJ0VGVzdEl0ZW1SZXEsIHRoaXMudGVtcExhdW5jaElkLCBycFBhcmVudElkKTtcclxuICAgICAgICAgICAgdGhpcy5jYlN0ZXBUb1JwSWRIYXNoW3N0ZXAuaWRdID0gdGVtcElkO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2UocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBzdGFydCBzdGVwIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvblN0ZXBFbmQoeyByaWQsIGNhc2VJZCwgc3RlcDogcmVzdWx0IH0pIHtcclxuICAgICAgICBpZiAoIXRoaXMucmVwb3J0U3RlcHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzdWx0Lm5hbWUgJiYgKHJlc3VsdC5uYW1lLnN0YXJ0c1dpdGgoJ2xvZy4nKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5hbWUuc3RhcnRzV2l0aCgnd2ViLnRyYW5zYWN0aW9uJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uYW1lLnN0YXJ0c1dpdGgoJ21vYi50cmFuc2FjdGlvbicpKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJwU3RlcElkID0gdGhpcy5jYlN0ZXBUb1JwSWRIYXNoW3Jlc3VsdC5pZF07XHJcbiAgICAgICAgaWYgKCFycFN0ZXBJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZWxldGUgdGhpcy5jYkNhc2VUb0N1cnJlbnRTdWJTdGVwSWRbY2FzZUlkXTtcclxuXHJcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVzdWx0LnN0YXR1cy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdmYWlsZWQnICYmIHJlc3VsdC5mYWlsdXJlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJwRmlsZSA9IHJlc3VsdC5zY3JlZW5zaG90ID9cclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3NjcmVlbnNob3QnLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiByZXN1bHQuc2NyZWVuc2hvdCxcclxuICAgICAgICAgICAgfSA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGxvZ01zZyA9IHRoaXMuX3N0cmluZ2lmeShyZXN1bHQuZmFpbHVyZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgaWYgKGxvZ01zZykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbG9nUmVxID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGxvZ01zZyxcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICAgICBmaWxlOiBycEZpbGUsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnNlbmRMb2cocnBTdGVwSWQsIGxvZ1JlcSwgcnBGaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2UocHJvbWlzZSk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIHNlbmQgbG9nIGZvciBmaW5pc2hlZCBzdGVwIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBmaW5pc2hUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LmZpbmlzaFRlc3RJdGVtKHJwU3RlcElkLCBmaW5pc2hUZXN0SXRlbVJlcSk7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZShwcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGZpbmlzaCBzdGVwIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvbkxvZyh7IHN1aXRlSWQsIGNhc2VJZCwgc3RlcElkLCBsZXZlbCwgbXNnLCB0aW1lLCBzcmMgfSkge1xyXG4gICAgICAgIGlmICghdGhpcy5yZXBvcnRMb2dzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gT3h5Z2VuIG1pZ2h0IHN0YXJ0IGdlbmVyYXRpbmcgbG9ncyBiZWZvcmUgb25SdW5uZXJTdGFydCBldmVudCwgaWdub3JlIHRoZW1cclxuICAgICAgICBpZiAoIXRoaXMudGVtcExhdW5jaElkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcnBQYXJlbnRJZCA9IHN0ZXBJZCA/XHJcbiAgICAgICAgICAgIHRoaXMuY2JTdGVwVG9ScElkSGFzaFtzdGVwSWRdXHJcbiAgICAgICAgICAgIDogY2FzZUlkID8gdGhpcy5jYkNhc2VUb1JwSWRIYXNoW2Nhc2VJZF1cclxuICAgICAgICAgICAgOiBzdWl0ZUlkID8gdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZUlkXVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zdCBycExldmVsID0gdGhpcy5fZ2V0UnBMZXZlbChsZXZlbCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGxvZ01zZyA9IHRoaXMuX3N0cmluZ2lmeShtc2cpO1xyXG4gICAgICAgIGlmIChsb2dNc2cpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9nUmVxID0ge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogbG9nTXNnLFxyXG4gICAgICAgICAgICAgICAgbGV2ZWw6IHJwTGV2ZWwsXHJcbiAgICAgICAgICAgICAgICB0aW1lOiB0aW1lLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zZW5kTG9nKHJwUGFyZW50SWQgfHwgdGhpcy50ZW1wTGF1bmNoSWQsIGxvZ1JlcSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2UocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBjcmVhdGUgbG9nIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIHJlcG9ydExvZ1N0ZXAoY2FzZUlkLCBzdGVwKSB7XHJcbiAgICAgICAgaWYgKCFzdGVwLmFyZ3MgfHwgIXN0ZXAuYXJncy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsZXZlbCA9IHN0ZXAubmFtZTtcclxuICAgICAgICBjb25zdCBtc2cgPSBzdGVwLmFyZ3NbMF07XHJcbiAgICAgICAgY29uc3QgdGltZSA9IHN0ZXAudGltZTtcclxuICAgICAgICBsZXQgc3RlcElkID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0aGlzLmNiQ2FzZVRvQ3VycmVudFN1YlN0ZXBJZFtjYXNlSWRdKSB7XHJcbiAgICAgICAgICAgIHN0ZXBJZCA9IHRoaXMuY2JDYXNlVG9DdXJyZW50U3ViU3RlcElkW2Nhc2VJZF07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNiQ2FzZVRvQ3VycmVudFRyYW5zYWN0aW9uSWRbY2FzZUlkXSkge1xyXG4gICAgICAgICAgICBzdGVwSWQgPSB0aGlzLmNiQ2FzZVRvQ3VycmVudFRyYW5zYWN0aW9uSWRbY2FzZUlkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZW5kUnBMb2coeyBzdWl0ZUlkOiB1bmRlZmluZWQsIGNhc2VJZCwgc3RlcElkLCBsZXZlbCwgbXNnLCB0aW1lIH0pO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgc2VuZFJwTG9nKHsgc3VpdGVJZCwgY2FzZUlkLCBzdGVwSWQsIGxldmVsLCBtc2csIHRpbWUgfSkge1xyXG4gICAgICAgIC8vIE94eWdlbiBtaWdodCBzdGFydCBnZW5lcmF0aW5nIGxvZ3MgYmVmb3JlIG9uUnVubmVyU3RhcnQgZXZlbnQsIGlnbm9yZSB0aGVtXHJcbiAgICAgICAgaWYgKCF0aGlzLnRlbXBMYXVuY2hJZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJwUGFyZW50SWQgPSBzdGVwSWQgP1xyXG4gICAgICAgICAgICB0aGlzLmNiU3RlcFRvUnBJZEhhc2hbc3RlcElkXVxyXG4gICAgICAgICAgICA6IGNhc2VJZCA/IHRoaXMuY2JDYXNlVG9ScElkSGFzaFtjYXNlSWRdXHJcbiAgICAgICAgICAgIDogc3VpdGVJZCA/IHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2hbc3VpdGVJZF1cclxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgY29uc3QgcnBMZXZlbCA9IHRoaXMuX2dldFJwTGV2ZWwobGV2ZWwpO1xyXG5cclxuICAgICAgICBjb25zdCBsb2dNc2cgPSB0aGlzLl9zdHJpbmdpZnkobXNnKTtcclxuICAgICAgICBpZiAobG9nTXNnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvZ1JlcSA9IHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGxvZ01zZyxcclxuICAgICAgICAgICAgICAgIGxldmVsOiBycExldmVsLFxyXG4gICAgICAgICAgICAgICAgdGltZTogdGltZSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuc2VuZExvZyhycFBhcmVudElkIHx8IHRoaXMudGVtcExhdW5jaElkLCBsb2dSZXEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVQcm9taXNlKHByb21pc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gY3JlYXRlIGxvZyBpdGVtOiAke2V9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBfcmVwb3J0RW5kT2ZTdGFydGVkU3VpdGVzKCkge1xyXG4gICAgICAgIGZvciAoY29uc3Qgc3VpdGVSZWZJZCBvZiBPYmplY3Qua2V5cyh0aGlzLmNiU3VpdGVUb1JwSWRIYXNoKSkge1xyXG4gICAgICAgICAgICBjb25zdCBycFN1aXRlSWQgPSB0aGlzLmNiU3VpdGVUb1JwSWRIYXNoW3N1aXRlUmVmSWRdO1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHRzID0gdGhpcy5jYlN1aXRlUmVzdWx0TGlzdEJ5UmVmSWRbc3VpdGVSZWZJZF07XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmNiU3VpdGVUb1JwSWRIYXNoW3N1aXRlUmVmSWRdO1xyXG4gICAgICAgICAgICBjb25zdCBoYXNGYWlsZWRTdWl0ZSA9IHJlc3VsdHMuc29tZSh4ID0+IHguc3RhdHVzID09PSBTdGF0dXMuRkFJTEVEKTtcclxuICAgICAgICAgICAgY29uc3QgZmluaXNoVGVzdEl0ZW1SZXEgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IGhhc0ZhaWxlZFN1aXRlID8gJ2ZhaWxlZCcgOiAncGFzc2VkJyxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuZmluaXNoVGVzdEl0ZW0ocnBTdWl0ZUlkLCBmaW5pc2hUZXN0SXRlbVJlcSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2UocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBmaW5pc2ggc3VpdGUgaXRlbTogJHtlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgX2dldFJwTGV2ZWwob3hMZXZlbCkge1xyXG4gICAgICAgIGlmIChveExldmVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBveExldmVsLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAnaW5mbyc7XHJcbiAgICB9XHJcbiAgICAvKl9nZXRScEFyZ3MoY2JBcmdzKSB7XHJcbiAgICAgICAgaWYgKCFjYkFyZ3MgfHwgIWNiQXJncy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcnBBcmdzID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgY2JBcmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyZyA9IGNiQXJnc1tpXTtcclxuICAgICAgICAgICAgbGV0IGFyZ1N0ciA9IHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8IGFyZyBpbnN0YW5jZW9mIFN0cmluZyA/IGFyZyA6IEpTT04uc3RyaW5naWZ5KGFyZyk7XHJcbiAgICAgICAgICAgIHJwQXJncy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleTogYGFyZyR7aX1gLFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6IGFyZ1N0clxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJwQXJncztcclxuICAgIH0qL1xyXG4gICAgX2dldFN0ZXBOYW1lKHN0ZXApIHtcclxuICAgICAgICBsZXQgbmFtZTtcclxuXHJcbiAgICAgICAgaWYgKHN0ZXAubmFtZSA9PT0gJ3RyYW5zYWN0aW9uJyAmJiBzdGVwLmFyZ3MubGVuZ3RoID4gMCkgeyAgLy8gRklYTUU6IHN0ZXBzIG5lZWQgdG8gYmUgbmVzdGVkIHVuZGVyIHRyYW5zYWN0aW9uc1xyXG4gICAgICAgICAgICBuYW1lID0gc3RlcC5hcmdzWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzdGVwLnNpZ25hdHVyZSkge1xyXG4gICAgICAgICAgICBuYW1lID0gc3RlcC5zaWduYXR1cmU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHN0ZXAubW9kdWxlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBpcyB0aGlzIGV2ZXIgcmVhY2hlZD8gXCJzdGVwLnNpZ25hdHVyZVwiIHNlZW1zIHRvIGFsd2F5cyBleGlzdFxyXG4gICAgICAgICAgICBuYW1lID0gYCR7c3RlcC5tb2R1bGV9LiR7c3RlcC5uYW1lfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBuYW1lID0gc3RlcC5uYW1lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbWF4aW11bSBhbGxvd2VkIG5hbWUgbGVuZ3RoIGluIFJQIGlzIDEwMjQgYnl0ZXNcclxuICAgICAgICAvLyB3ZSB0cnVuY2F0ZSBpdCBldmVuIGxvd2VyIHNvIGl0IHdpbGwgZGlzcGxheSBuaWNlbHlcclxuICAgICAgICBpZiAobmFtZS5sZW5ndGggPiBNQVhfTkFNRV9MRU5HVEgpIHtcclxuICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKDAsIE1BWF9OQU1FX0xFTkdUSC0zKSArICcuLi4nO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyByZXR1cm5zIG51bGwgaWYgbXNnIGNhbm5vdCBiZSBzdHJpbmdpZmllZCwgb3Igc3RyaWdpZmllcyBpdCBpZiBpdCdzIG5vdCBhIHN0cmluZyBhbHJlYWR5XHJcbiAgICBfc3RyaW5naWZ5KG1zZykge1xyXG4gICAgICAgIC8vIHdlIHRlc3QgZm9yIHVuZGVmaW5lZCBhbmQgbnVsbCBleHBsaWNpdGx5IG9uIHB1cnBvc2UgYmVjYXVzZSBvdGhlciBmYWxzeSB2YWx1ZXMgKGUuZy4gMCkgYXJlIG9rXHJcbiAgICAgICAgaWYgKHR5cGVvZiBtc2cgPT09ICd1bmRlZmluZWQnIHx8IG1zZyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgbXNnID09PSAnc3RyaW5nJyB8fCBtc2cgaW5zdGFuY2VvZiBTdHJpbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1zZztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShtc2cpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignUlAgLSBlcnJvciBzZW5kaW5nIGxvZzogbXNnIG9iamVjdCBjYW5ub3QgYmUgc2VyaWFsaXplZCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVQcm9taXNlKHByb21pc2UpIHtcclxuICAgICAgICBwcm9taXNlLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1JQIGVycm9yOiAnLCBlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucHJvbWlzZXMucHVzaChwcm9taXNlKTtcclxuICAgIH1cclxufVxyXG5cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBWUEsSUFBQUEsYUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQXFDLFNBQUFELHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQ3JDLE1BQU1HLFFBQVEsR0FBR0wsT0FBTyxDQUFDLGdDQUFnQyxDQUFDO0FBQzFELE1BQU1NLFlBQVksR0FBRztFQUNqQkMsT0FBTyxFQUFFLFNBQVM7RUFDbEJDLEtB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
487
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUmVwb3J0ZXJCYXNlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc3RhdHVzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUlBDbGllbnQiLCJMQVVOQ0hfTU9ERVMiLCJERUZBVUxUIiwiREVCVUciLCJURVNUX0lURU1fVFlQRVMiLCJTVUlURSIsIlRFU1QiLCJTVEVQIiwiTUFYX05BTUVfTEVOR1RIIiwiUmVwb3J0UG9ydGFsUmVwb3J0ZXIiLCJSZXBvcnRlckJhc2UiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJyZXBvcnRlck9wdHMiLCJhZ2dyZWdhdG9yIiwicnAiLCJyZXBvcnRTdGVwcyIsInJlcG9ydExvZ3MiLCJjYlN1aXRlVG9ScElkSGFzaCIsImNiQ2FzZVRvUnBJZEhhc2giLCJjYlN0ZXBUb1JwSWRIYXNoIiwiY2JTdWl0ZVJlc3VsdExpc3RCeVJlZklkIiwiY2JDYXNlVG9DdXJyZW50VHJhbnNhY3Rpb25JZCIsImNiQ2FzZVRvQ3VycmVudFN1YlN0ZXBJZCIsInByb21pc2VzIiwiYXBpS2V5IiwiZW5kcG9pbnQiLCJwcm9qZWN0IiwiRXJyb3IiLCJycENsaWVudCIsImxhdW5jaCIsIm5hbWUiLCJpbml0IiwiY2hlY2tDb25uZWN0IiwibWVzc2FnZSIsImdlbmVyYXRlIiwicmVzdWx0cyIsIm9uTGF1bmNoU3RhcnQiLCJ0ZW1wSWQiLCJwcm9taXNlIiwic3RhcnRMYXVuY2giLCJtb2RlIiwiZGVidWciLCJhdHRyaWJ1dGVzIiwidGVtcExhdW5jaElkIiwiaGFuZGxlUHJvbWlzZSIsImNvbnNvbGUiLCJkaXIiLCJvbkxhdW5jaEVuZCIsIl9yZXBvcnRFbmRPZlN0YXJ0ZWRTdWl0ZXMiLCJoYXNGYWlsZWQiLCJzb21lIiwieCIsInN0YXR1cyIsIlN0YXR1cyIsIkZBSUxFRCIsIlByb21pc2UiLCJhbGwiLCJmaW5pc2hMYXVuY2giLCJvblJ1bm5lclN0YXJ0IiwicmlkIiwib3B0cyIsImNhcHMiLCJvblJ1bm5lckVuZCIsInJlc3VsdCIsIm9uU3VpdGVTdGFydCIsInN1aXRlSWQiLCJzdWl0ZSIsInN1aXRlRGVmIiwic3VpdGVSZWZJZCIsInJlZklkIiwic3RhcnRUZXN0SXRlbVJlcSIsInR5cGUiLCJzdGFydFRlc3RJdGVtIiwib25TdWl0ZUVuZCIsInB1c2giLCJvbkNhc2VTdGFydCIsImNhc2VJZCIsImNhc2VEZWYiLCJjb2RlUmVmIiwicGF0aCIsInJwU3VpdGVJZCIsIm9uQ2FzZUVuZCIsInJwVGVzdElkIiwidG9Mb3dlckNhc2UiLCJmYWlsdXJlIiwicnBGaWxlIiwic2NyZWVuc2hvdCIsImNvbnRlbnQiLCJ1bmRlZmluZWQiLCJsb2dNc2ciLCJfc3RyaW5naWZ5IiwibG9nUmVxIiwibGV2ZWwiLCJzZW5kTG9nIiwidHJhbnNJZCIsImZpbmlzaFRyYW5zYWN0aW9uUmVxIiwidHJhbnNScElkIiwiZmluaXNoVGVzdEl0ZW0iLCJmaW5pc2hUZXN0SXRlbVJlcSIsIm9uU3RlcFN0YXJ0Iiwic3RlcCIsIm1vZHVsZSIsInJlcG9ydExvZ1N0ZXAiLCJycENhc2VJZCIsInJwUGFyZW50SWQiLCJpZCIsInN0ZXBOYW1lIiwiX2dldFN0ZXBOYW1lIiwibG9jYXRpb24iLCJ0ZXN0Q2FzZUlkIiwiaGFzU3RhdHMiLCJvblN0ZXBFbmQiLCJzdGFydHNXaXRoIiwicnBTdGVwSWQiLCJmaWxlIiwib25Mb2ciLCJzdGVwSWQiLCJtc2ciLCJ0aW1lIiwic3JjIiwicnBMZXZlbCIsIl9nZXRScExldmVsIiwiYXJncyIsImxlbmd0aCIsInNlbmRScExvZyIsIk9iamVjdCIsImtleXMiLCJoYXNGYWlsZWRTdWl0ZSIsIm94TGV2ZWwiLCJzaWduYXR1cmUiLCJzdWJzdHJpbmciLCJTdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwiZXJyb3IiLCJjYXRjaCIsImVyciIsImxvZyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvb3hfcmVwb3J0ZXJzL3JlcG9ydGVyLXJwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIFJlcG9ydGVyIGZvciBSZXBvcnRQb3J0YWxcclxuICovXHJcbmltcG9ydCBSZXBvcnRlckJhc2UgZnJvbSAnLi4vcmVwb3J0ZXIvUmVwb3J0ZXJCYXNlJztcclxuaW1wb3J0IFN0YXR1cyBmcm9tICcuLi9tb2RlbC9zdGF0dXMnO1xyXG5jb25zdCBSUENsaWVudCA9IHJlcXVpcmUoJ0BveHlnZW5ocS9ycC1jbGllbnQtamF2YXNjcmlwdCcpO1xyXG5jb25zdCBMQVVOQ0hfTU9ERVMgPSB7XHJcbiAgICBERUZBVUxUOiAnREVGQVVMVCcsXHJcbiAgICBERUJVRzogJ0RFQlVHJyxcclxufTtcclxuY29uc3QgVEVTVF9JVEVNX1RZUEVTID0ge1xyXG4gICAgU1VJVEU6ICdTVUlURScsXHJcbiAgICBURVNUOiAnVEVTVCcsXHJcbiAgICBTVEVQOiAnU1RFUCcsXHJcbn07XHJcbmNvbnN0IE1BWF9OQU1FX0xFTkdUSCA9IDEyODtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlcG9ydFBvcnRhbFJlcG9ydGVyIGV4dGVuZHMgUmVwb3J0ZXJCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIHJlcG9ydGVyT3B0cywgYWdncmVnYXRvcikge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMucmVwb3J0ZXJPcHRzID0gcmVwb3J0ZXJPcHRzIHx8IG9wdGlvbnMucnA7XHJcbiAgICAgICAgdGhpcy5yZXBvcnRTdGVwcyA9ICFyZXBvcnRlck9wdHMucmVwb3J0U3RlcHMgJiYgcmVwb3J0ZXJPcHRzLnJlcG9ydFN0ZXBzICE9PSBmYWxzZSA/IHRydWUgOiByZXBvcnRlck9wdHMucmVwb3J0U3RlcHM7XHJcbiAgICAgICAgdGhpcy5yZXBvcnRMb2dzID0gcmVwb3J0ZXJPcHRzLnJlcG9ydExvZ3MgfHwgZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYlN1aXRlVG9ScElkSGFzaCA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2JDYXNlVG9ScElkSGFzaCA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2JTdGVwVG9ScElkSGFzaCA9IHt9O1xyXG4gICAgICAgIHRoaXMuY2JTdWl0ZVJlc3VsdExpc3RCeVJlZklkID0ge307XHJcbiAgICAgICAgdGhpcy5jYkNhc2VUb0N1cnJlbnRUcmFuc2FjdGlvbklkID0ge307XHJcbiAgICAgICAgdGhpcy5jYkNhc2VUb0N1cnJlbnRTdWJTdGVwSWQgPSB7fTtcclxuICAgICAgICB0aGlzLnByb21pc2VzID0gW107XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgIXRoaXMucmVwb3J0ZXJPcHRzXHJcbiAgICAgICAgICAgIHx8ICF0aGlzLnJlcG9ydGVyT3B0cy5hcGlLZXlcclxuICAgICAgICAgICAgfHwgIXRoaXMucmVwb3J0ZXJPcHRzLmVuZHBvaW50XHJcbiAgICAgICAgICAgIHx8ICF0aGlzLnJlcG9ydGVyT3B0cy5wcm9qZWN0XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVwb3J0UG9ydGFsIG9wdGlvbnMgYXJlIG1pc3NpbmcgaW4gb3h5Z2VuLmNvbmYgZmlsZS4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hZ2dyZWdhdG9yID0gYWdncmVnYXRvcjtcclxuICAgICAgICB0aGlzLnJwQ2xpZW50ID0gbmV3IFJQQ2xpZW50KHtcclxuICAgICAgICAgICAgbGF1bmNoOiB0aGlzLnJlcG9ydGVyT3B0cy5sYXVuY2ggfHwgdGhpcy5vcHRpb25zLm5hbWUsXHJcbiAgICAgICAgICAgIC4uLnRoaXMucmVwb3J0ZXJPcHRzXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdCgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJwQ2xpZW50LmNoZWNrQ29ubmVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJQIC0gRXJyb3IgY29ubmVjdGluZyB0byB0aGUgc2VydmVyOiAke2UubWVzc2FnZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBnZW5lcmF0ZShyZXN1bHRzKSB7XHJcbiAgICB9XHJcbiAgICAvLyBFdmVudHNcclxuICAgIGFzeW5jIG9uTGF1bmNoU3RhcnQoeyBvcHRpb25zIH0pIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHRlbXBJZCwgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zdGFydExhdW5jaCh7XHJcbiAgICAgICAgICAgICAgICBtb2RlOiB0aGlzLnJlcG9ydGVyT3B0cy5tb2RlIHx8IExBVU5DSF9NT0RFUy5ERUZBVUxULFxyXG4gICAgICAgICAgICAgICAgZGVidWc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogdGhpcy5yZXBvcnRlck9wdHMuYXR0cmlidXRlc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy50ZW1wTGF1bmNoSWQgPSB0ZW1wSWQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2UocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBzdGFydCBsYXVuY2g6ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvbkxhdW5jaEVuZCh7IHJlc3VsdHMgfSkge1xyXG4gICAgICAgIC8vIHJlcG9ydCB0aGUgZW5kIG9mIGFsbCBzdGFydGVkIHN1aXRlc1xyXG4gICAgICAgIGF3YWl0IHRoaXMuX3JlcG9ydEVuZE9mU3RhcnRlZFN1aXRlcygpO1xyXG4gICAgICAgIC8vIENhbGN1bGF0ZSBsYXVuY2ggc3RhdHVzXHJcbiAgICAgICAgY29uc3QgaGFzRmFpbGVkID0gcmVzdWx0cy5zb21lKHggPT4geC5zdGF0dXMgPT09IFN0YXR1cy5GQUlMRUQpO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLnByb21pc2VzKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5maW5pc2hMYXVuY2godGhpcy50ZW1wTGF1bmNoSWQsIHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogaGFzRmFpbGVkID8gJ0ZBSUxFRCcgOiAnUEFTU0VEJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYXdhaXQgcHJvbWlzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGVuZCBsYXVuY2g6ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvblJ1bm5lclN0YXJ0KHsgcmlkLCBvcHRzLCBjYXBzIH0pIHtcclxuICAgIH1cclxuICAgIGFzeW5jIG9uUnVubmVyRW5kKHsgcmlkLCByZXN1bHQgfSkge1xyXG4gICAgfVxyXG4gICAgYXN5bmMgb25TdWl0ZVN0YXJ0KHsgcmlkLCBzdWl0ZUlkLCBzdWl0ZTogc3VpdGVEZWYgfSkge1xyXG4gICAgICAgIC8vIGluIHBhcmFsbGVsIHRlc3QgZXhlY3V0aW9uLCBvblN1aXRlU3RhcnQgd2lsbCBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgZm9yIHRoZSBzYW1lIHN1aXRlIFxyXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBjYWxsIFwic3RhcnRUZXN0SXRlbVwiIHRoZSBzYW1lIHN1aXRlIG9ubHkgb25jZVxyXG4gICAgICAgIGNvbnN0IHN1aXRlUmVmSWQgPSBzdWl0ZURlZi5yZWZJZDtcclxuICAgICAgICBpZiAodGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZVJlZklkXSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGFzc2lnbiBlbXB0eSBvYmplY3QgYXMgYSBmb3JtIG9mIG11bHRpLXRocmVhZCBsb2NrLFxyXG4gICAgICAgIC8vIHNvIHRoZSBwYXJhbGxlbCBjYWxsIHRvIG9uU3VpdGVTdGFydCBmcm9tIHRoZSBuZXh0IHRocmVhZFxyXG4gICAgICAgIC8vIHdpbGwgbm90IHRyeSB0byBwcm9jZWVkIHdpdGggdGhlIGNvZGUgYmVsb3dcclxuICAgICAgICB0aGlzLmNiU3VpdGVUb1JwSWRIYXNoW3N1aXRlUmVmSWRdID0ge307XHJcbiAgICAgICAgdGhpcy5jYlN1aXRlUmVzdWx0TGlzdEJ5UmVmSWRbc3VpdGVSZWZJZF0gPSBbXTtcclxuICAgICAgICBjb25zdCBzdGFydFRlc3RJdGVtUmVxID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBzdWl0ZURlZi5uYW1lIHx8IHRoaXMub3B0aW9ucy5uYW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBURVNUX0lURU1fVFlQRVMuU1VJVEUsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgeyB0ZW1wSWQsIHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuc3RhcnRUZXN0SXRlbShzdGFydFRlc3RJdGVtUmVxLCB0aGlzLnRlbXBMYXVuY2hJZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2hbc3VpdGVSZWZJZF0gPSB0ZW1wSWQ7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZShwcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIHN0YXJ0IHN1aXRlIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvblN1aXRlRW5kKHsgcmlkLCBzdWl0ZUlkLCByZXN1bHQgfSkge1xyXG4gICAgICAgIGNvbnN0IHN1aXRlUmVmSWQgPSByZXN1bHQucmVmSWQ7XHJcbiAgICAgICAgdGhpcy5jYlN1aXRlUmVzdWx0TGlzdEJ5UmVmSWRbc3VpdGVSZWZJZF0gJiYgdGhpcy5jYlN1aXRlUmVzdWx0TGlzdEJ5UmVmSWRbc3VpdGVSZWZJZF0ucHVzaChyZXN1bHQpO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgb25DYXNlU3RhcnQoeyByaWQsIHN1aXRlSWQsIHN1aXRlUmVmSWQsIGNhc2VJZCwgJ2Nhc2UnOiBjYXNlRGVmIH0pIHtcclxuICAgICAgICBjb25zdCBzdGFydFRlc3RJdGVtUmVxID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBjYXNlRGVmLm5hbWUsXHJcbiAgICAgICAgICAgIHR5cGU6IFRFU1RfSVRFTV9UWVBFUy5URVNULFxyXG4gICAgICAgICAgICBjb2RlUmVmOiBjYXNlRGVmLnBhdGgsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBycFN1aXRlSWQgPSB0aGlzLmNiU3VpdGVUb1JwSWRIYXNoW3N1aXRlUmVmSWRdO1xyXG4gICAgICAgIGlmICghcnBTdWl0ZUlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGVtcElkLCBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnN0YXJ0VGVzdEl0ZW0oc3RhcnRUZXN0SXRlbVJlcSwgdGhpcy50ZW1wTGF1bmNoSWQsIHJwU3VpdGVJZCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2JDYXNlVG9ScElkSGFzaFtjYXNlSWRdID0gdGVtcElkO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2UocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBzdGFydCBjYXNlIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBhc3luYyBvbkNhc2VFbmQoeyByaWQsIHN1aXRlSWQsIHN1aXRlUmVmSWQsIGNhc2VJZCwgcmVzdWx0IH0pIHtcclxuICAgICAgICBjb25zdCBycFRlc3RJZCA9IHRoaXMuY2JDYXNlVG9ScElkSGFzaFtjYXNlSWRdO1xyXG4gICAgICAgIGlmICghcnBUZXN0SWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdGF0dXMgPSByZXN1bHQuc3RhdHVzLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ2ZhaWxlZCcgJiYgcmVzdWx0LmZhaWx1cmUpIHtcclxuICAgICAgICAgICAgY29uc3QgcnBGaWxlID0gcmVzdWx0LnNjcmVlbnNob3QgP1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2NyZWVuc2hvdCcsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW1hZ2UvcG5nJyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHJlc3VsdC5zY3JlZW5zaG90LFxyXG4gICAgICAgICAgICB9IDogdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgbG9nTXNnID0gdGhpcy5fc3RyaW5naWZ5KHJlc3VsdC5mYWlsdXJlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBpZiAobG9nTXNnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2dSZXEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbG9nTXNnLFxyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiAnZXJyb3InXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnNlbmRMb2cocnBUZXN0SWQsIGxvZ1JlcSwgcnBGaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2UocHJvbWlzZSk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIHNlbmQgbG9nIGZvciBmaW5pc2hlZCBjYXNlIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdHJhbnNJZCA9IHRoaXMuY2JDYXNlVG9DdXJyZW50VHJhbnNhY3Rpb25JZFtjYXNlSWRdO1xyXG5cclxuICAgICAgICBpZiAodHJhbnNJZCkge1xyXG4gICAgICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNhbGN1bGF0ZSBwcm9wZXIgc3RhdHVzXHJcbiAgICAgICAgICAgIGNvbnN0IGZpbmlzaFRyYW5zYWN0aW9uUmVxID0ge1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncGFzc2VkJyAvL3Jlc3VsdC5zdGF0dXMudG9Mb3dlckNhc2UoKSxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFuc1JwSWQgPSB0aGlzLmNiU3RlcFRvUnBJZEhhc2hbdHJhbnNJZF07XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LmZpbmlzaFRlc3RJdGVtKHRyYW5zUnBJZCwgZmluaXNoVHJhbnNhY3Rpb25SZXEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVQcm9taXNlKHByb21pc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gZmluaXNoIHRyYW5zYWN0aW9uIGl0ZW0gb24gY2FzZSBlbmQ6ICR7ZX1gKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2JDYXNlVG9DdXJyZW50VHJhbnNhY3Rpb25JZFtjYXNlSWRdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmluaXNoVGVzdEl0ZW1SZXEgPSB7XHJcbiAgICAgICAgICAgIHN0YXR1czogcmVzdWx0LnN0YXR1cy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5maW5pc2hUZXN0SXRlbShycFRlc3RJZCwgZmluaXNoVGVzdEl0ZW1SZXEpO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2UocHJvbWlzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBmaW5pc2ggY2FzZSBpdGVtOiAke2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uU3RlcFN0YXJ0KHsgcmlkLCBjYXNlSWQsIHN0ZXAgfSkge1xyXG4gICAgICAgIGlmICghdGhpcy5yZXBvcnRTdGVwcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdGVwLm1vZHVsZSAmJiBzdGVwLm1vZHVsZSA9PT0gJ2xvZycpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXBvcnRMb2dTdGVwKGNhc2VJZCwgc3RlcCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcnBDYXNlSWQgPSB0aGlzLmNiQ2FzZVRvUnBJZEhhc2hbY2FzZUlkXTtcclxuICAgICAgICBsZXQgcnBQYXJlbnRJZDtcclxuXHJcbiAgICAgICAgY29uc3QgdHJhbnNJZCA9IHRoaXMuY2JDYXNlVG9DdXJyZW50VHJhbnNhY3Rpb25JZFtjYXNlSWRdO1xyXG5cclxuICAgICAgICBpZiAoc3RlcC5uYW1lID09PSAndHJhbnNhY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGlmICh0cmFuc0lkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNhbGN1bGF0ZSBwcm9wZXIgc3RhdHVzXHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5pc2hUcmFuc2FjdGlvblJlcSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6ICdwYXNzZWQnIC8vcmVzdWx0LnN0YXR1cy50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zUnBJZCA9IHRoaXMuY2JTdGVwVG9ScElkSGFzaFt0cmFuc0lkXTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuZmluaXNoVGVzdEl0ZW0odHJhbnNScElkLCBmaW5pc2hUcmFuc2FjdGlvblJlcSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVQcm9taXNlKHByb21pc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gZmluaXNoIHRyYW5zYWN0aW9uIGl0ZW0gb24gY2FzZSBlbmQ6ICR7ZX1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jYkNhc2VUb0N1cnJlbnRUcmFuc2FjdGlvbklkW2Nhc2VJZF0gPSBzdGVwLmlkO1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5jYkNhc2VUb0N1cnJlbnRTdWJTdGVwSWRbY2FzZUlkXTtcclxuICAgICAgICAgICAgcnBQYXJlbnRJZCA9IHJwQ2FzZUlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jYkNhc2VUb0N1cnJlbnRTdWJTdGVwSWRbY2FzZUlkXSA9IHN0ZXAuaWQ7XHJcbiAgICAgICAgICAgIHJwUGFyZW50SWQgPSB0cmFuc0lkID8gdGhpcy5jYlN0ZXBUb1JwSWRIYXNoW3RyYW5zSWRdIDogcnBDYXNlSWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXJwUGFyZW50SWQgfHwgIXJwQ2FzZUlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3RlcE5hbWUgPSB0aGlzLl9nZXRTdGVwTmFtZShzdGVwKTtcclxuICAgICAgICBjb25zdCBzdGFydFRlc3RJdGVtUmVxID0ge1xyXG4gICAgICAgICAgICBuYW1lOiBzdGVwTmFtZSxcclxuICAgICAgICAgICAgdHlwZTogVEVTVF9JVEVNX1RZUEVTLlNURVAsXHJcbiAgICAgICAgICAgIC8vIFwiY29kZVJlZlwiICsgXCJwYXJhbWV0ZXJzXCIgdXNlZCBieSBSUCBsaWIgdG8gZ2VuZXJhdGUgdGVzdENhc2VJZCBpZiB0ZXN0Q2FzZUlkIGlzIG5vdCBkZWZpbmVkXHJcbiAgICAgICAgICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVwb3J0cG9ydGFsL2NsaWVudC1qYXZhc2NyaXB0L2Jsb2IvNDg2ZWY3MGM2MzhhOWEyMzI2NzI5MGM2MmRmMWZhZjkwMGY3ZGY2YS9saWIvcmVwb3J0LXBvcnRhbC1jbGllbnQuanMjTDQ5N1xyXG4gICAgICAgICAgICAvLyB0aGlzIGlzIGRpc2FibGVkIGZvciBub3cuIG5vdCBzdXJlIGlmIGFjdHVhbGx5IG5lZWRlZC4uLlxyXG4gICAgICAgICAgICAvL3BhcmFtZXRlcnM6IHRoaXMuX2dldFJwQXJncyhzdGVwLmFyZ3MpLFxyXG4gICAgICAgICAgICBjb2RlUmVmOiBzdGVwLmxvY2F0aW9uLFxyXG4gICAgICAgICAgICB0ZXN0Q2FzZUlkOiBycENhc2VJZCxcclxuICAgICAgICAgICAgaGFzU3RhdHM6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgdGVtcElkLCBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnN0YXJ0VGVzdEl0ZW0oc3RhcnRUZXN0SXRlbVJlcSwgdGhpcy50ZW1wTGF1bmNoSWQsIHJwUGFyZW50SWQpO1xyXG4gICAgICAgICAgICB0aGlzLmNiU3RlcFRvUnBJZEhhc2hbc3RlcC5pZF0gPSB0ZW1wSWQ7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZShwcm9taXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIHN0YXJ0IHN0ZXAgaXRlbTogJHtlfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIG9uU3RlcEVuZCh7IHJpZCwgY2FzZUlkLCBzdGVwOiByZXN1bHQgfSkge1xyXG4gICAgICAgIGlmICghdGhpcy5yZXBvcnRTdGVwcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXN1bHQubmFtZSAmJiAocmVzdWx0Lm5hbWUuc3RhcnRzV2l0aCgnbG9nLicpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubmFtZS5zdGFydHNXaXRoKCd3ZWIudHJhbnNhY3Rpb24nKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5hbWUuc3RhcnRzV2l0aCgnbW9iLnRyYW5zYWN0aW9uJykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcnBTdGVwSWQgPSB0aGlzLmNiU3RlcFRvUnBJZEhhc2hbcmVzdWx0LmlkXTtcclxuICAgICAgICBpZiAoIXJwU3RlcElkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRlbGV0ZSB0aGlzLmNiQ2FzZVRvQ3VycmVudFN1YlN0ZXBJZFtjYXNlSWRdO1xyXG5cclxuICAgICAgICBjb25zdCBzdGF0dXMgPSByZXN1bHQuc3RhdHVzLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ2ZhaWxlZCcgJiYgcmVzdWx0LmZhaWx1cmUpIHtcclxuICAgICAgICAgICAgY29uc3QgcnBGaWxlID0gcmVzdWx0LnNjcmVlbnNob3QgP1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2NyZWVuc2hvdCcsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW1hZ2UvcG5nJyxcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHJlc3VsdC5zY3JlZW5zaG90LFxyXG4gICAgICAgICAgICB9IDogdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgbG9nTXNnID0gdGhpcy5fc3RyaW5naWZ5KHJlc3VsdC5mYWlsdXJlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICBpZiAobG9nTXNnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2dSZXEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogbG9nTXNnLFxyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGU6IHJwRmlsZSxcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuc2VuZExvZyhycFN0ZXBJZCwgbG9nUmVxLCBycEZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZShwcm9taXNlKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gc2VuZCBsb2cgZm9yIGZpbmlzaGVkIHN0ZXAgaXRlbTogJHtlfWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZpbmlzaFRlc3RJdGVtUmVxID0ge1xyXG4gICAgICAgICAgICBzdGF0dXM6IHJlc3VsdC5zdGF0dXMudG9Mb3dlckNhc2UoKSxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHByb21pc2UgfSA9IHRoaXMucnBDbGllbnQuZmluaXNoVGVzdEl0ZW0ocnBTdGVwSWQsIGZpbmlzaFRlc3RJdGVtUmVxKTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVQcm9taXNlKHByb21pc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmRpcihgUlAgLSBGYWlsZWQgdG8gZmluaXNoIHN0ZXAgaXRlbTogJHtlfWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIG9uTG9nKHsgc3VpdGVJZCwgY2FzZUlkLCBzdGVwSWQsIGxldmVsLCBtc2csIHRpbWUsIHNyYyB9KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlcG9ydExvZ3MpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBPeHlnZW4gbWlnaHQgc3RhcnQgZ2VuZXJhdGluZyBsb2dzIGJlZm9yZSBvblJ1bm5lclN0YXJ0IGV2ZW50LCBpZ25vcmUgdGhlbVxyXG4gICAgICAgIGlmICghdGhpcy50ZW1wTGF1bmNoSWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHJwUGFyZW50SWQ7XHJcblxyXG4gICAgICAgIGlmIChzdGVwSWQpIHtcclxuICAgICAgICAgICAgcnBQYXJlbnRJZCA9IHRoaXMuY2JTdGVwVG9ScElkSGFzaFtzdGVwSWRdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFycFBhcmVudElkICYmIGNhc2VJZCkge1xyXG4gICAgICAgICAgICBycFBhcmVudElkID0gdGhpcy5jYkNhc2VUb1JwSWRIYXNoW2Nhc2VJZF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXJwUGFyZW50SWQgJiYgc3VpdGVJZCkge1xyXG4gICAgICAgICAgICBycFBhcmVudElkID0gdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZUlkXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJwTGV2ZWwgPSB0aGlzLl9nZXRScExldmVsKGxldmVsKTtcclxuXHJcbiAgICAgICAgY29uc3QgbG9nTXNnID0gdGhpcy5fc3RyaW5naWZ5KG1zZyk7XHJcbiAgICAgICAgaWYgKGxvZ01zZykge1xyXG4gICAgICAgICAgICBjb25zdCBsb2dSZXEgPSB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBsb2dNc2csXHJcbiAgICAgICAgICAgICAgICBsZXZlbDogcnBMZXZlbCxcclxuICAgICAgICAgICAgICAgIHRpbWU6IHRpbWUsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBwcm9taXNlIH0gPSB0aGlzLnJwQ2xpZW50LnNlbmRMb2cocnBQYXJlbnRJZCB8fCB0aGlzLnRlbXBMYXVuY2hJZCwgbG9nUmVxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZShwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGNyZWF0ZSBsb2cgaXRlbTogJHtlfWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXN5bmMgcmVwb3J0TG9nU3RlcChjYXNlSWQsIHN0ZXApIHtcclxuICAgICAgICBpZiAoIXN0ZXAuYXJncyB8fCAhc3RlcC5hcmdzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxldmVsID0gc3RlcC5uYW1lO1xyXG4gICAgICAgIGNvbnN0IG1zZyA9IHN0ZXAuYXJnc1swXTtcclxuICAgICAgICBjb25zdCB0aW1lID0gc3RlcC50aW1lO1xyXG4gICAgICAgIGxldCBzdGVwSWQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHRoaXMuY2JDYXNlVG9DdXJyZW50U3ViU3RlcElkW2Nhc2VJZF0pIHtcclxuICAgICAgICAgICAgc3RlcElkID0gdGhpcy5jYkNhc2VUb0N1cnJlbnRTdWJTdGVwSWRbY2FzZUlkXTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2JDYXNlVG9DdXJyZW50VHJhbnNhY3Rpb25JZFtjYXNlSWRdKSB7XHJcbiAgICAgICAgICAgIHN0ZXBJZCA9IHRoaXMuY2JDYXNlVG9DdXJyZW50VHJhbnNhY3Rpb25JZFtjYXNlSWRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCB0aGlzLnNlbmRScExvZyh7IHN1aXRlSWQ6IHVuZGVmaW5lZCwgY2FzZUlkLCBzdGVwSWQsIGxldmVsLCBtc2csIHRpbWUgfSk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBzZW5kUnBMb2coeyBzdWl0ZUlkLCBjYXNlSWQsIHN0ZXBJZCwgbGV2ZWwsIG1zZywgdGltZSB9KSB7XHJcbiAgICAgICAgLy8gT3h5Z2VuIG1pZ2h0IHN0YXJ0IGdlbmVyYXRpbmcgbG9ncyBiZWZvcmUgb25SdW5uZXJTdGFydCBldmVudCwgaWdub3JlIHRoZW1cclxuICAgICAgICBpZiAoIXRoaXMudGVtcExhdW5jaElkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcnBQYXJlbnRJZCA9IHN0ZXBJZCA/XHJcbiAgICAgICAgICAgIHRoaXMuY2JTdGVwVG9ScElkSGFzaFtzdGVwSWRdXHJcbiAgICAgICAgICAgIDogY2FzZUlkID8gdGhpcy5jYkNhc2VUb1JwSWRIYXNoW2Nhc2VJZF1cclxuICAgICAgICAgICAgOiBzdWl0ZUlkID8gdGhpcy5jYlN1aXRlVG9ScElkSGFzaFtzdWl0ZUlkXVxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgICBjb25zdCBycExldmVsID0gdGhpcy5fZ2V0UnBMZXZlbChsZXZlbCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGxvZ01zZyA9IHRoaXMuX3N0cmluZ2lmeShtc2cpO1xyXG4gICAgICAgIGlmIChsb2dNc2cpIHtcclxuICAgICAgICAgICAgY29uc3QgbG9nUmVxID0ge1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogbG9nTXNnLFxyXG4gICAgICAgICAgICAgICAgbGV2ZWw6IHJwTGV2ZWwsXHJcbiAgICAgICAgICAgICAgICB0aW1lOiB0aW1lLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5zZW5kTG9nKHJwUGFyZW50SWQgfHwgdGhpcy50ZW1wTGF1bmNoSWQsIGxvZ1JlcSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVByb21pc2UocHJvbWlzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGlyKGBSUCAtIEZhaWxlZCB0byBjcmVhdGUgbG9nIGl0ZW06ICR7ZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGFzeW5jIF9yZXBvcnRFbmRPZlN0YXJ0ZWRTdWl0ZXMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBzdWl0ZVJlZklkIG9mIE9iamVjdC5rZXlzKHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2gpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJwU3VpdGVJZCA9IHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2hbc3VpdGVSZWZJZF07XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0aGlzLmNiU3VpdGVSZXN1bHRMaXN0QnlSZWZJZFtzdWl0ZVJlZklkXTtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2JTdWl0ZVRvUnBJZEhhc2hbc3VpdGVSZWZJZF07XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc0ZhaWxlZFN1aXRlID0gcmVzdWx0cy5zb21lKHggPT4geC5zdGF0dXMgPT09IFN0YXR1cy5GQUlMRUQpO1xyXG4gICAgICAgICAgICBjb25zdCBmaW5pc2hUZXN0SXRlbVJlcSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogaGFzRmFpbGVkU3VpdGUgPyAnZmFpbGVkJyA6ICdwYXNzZWQnLFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJvbWlzZSB9ID0gdGhpcy5ycENsaWVudC5maW5pc2hUZXN0SXRlbShycFN1aXRlSWQsIGZpbmlzaFRlc3RJdGVtUmVxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUHJvbWlzZShwcm9taXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5kaXIoYFJQIC0gRmFpbGVkIHRvIGZpbmlzaCBzdWl0ZSBpdGVtOiAke2V9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfZ2V0UnBMZXZlbChveExldmVsKSB7XHJcbiAgICAgICAgaWYgKG94TGV2ZWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG94TGV2ZWwudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICdpbmZvJztcclxuICAgIH1cclxuICAgIC8qX2dldFJwQXJncyhjYkFyZ3MpIHtcclxuICAgICAgICBpZiAoIWNiQXJncyB8fCAhY2JBcmdzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBycEFyZ3MgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBjYkFyZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgYXJnID0gY2JBcmdzW2ldO1xyXG4gICAgICAgICAgICBsZXQgYXJnU3RyID0gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwgYXJnIGluc3RhbmNlb2YgU3RyaW5nID8gYXJnIDogSlNPTi5zdHJpbmdpZnkoYXJnKTtcclxuICAgICAgICAgICAgcnBBcmdzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAga2V5OiBgYXJnJHtpfWAsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogYXJnU3RyXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcnBBcmdzO1xyXG4gICAgfSovXHJcbiAgICBfZ2V0U3RlcE5hbWUoc3RlcCkge1xyXG4gICAgICAgIGxldCBuYW1lO1xyXG5cclxuICAgICAgICBpZiAoc3RlcC5uYW1lID09PSAndHJhbnNhY3Rpb24nICYmIHN0ZXAuYXJncy5sZW5ndGggPiAwKSB7ICAvLyBGSVhNRTogc3RlcHMgbmVlZCB0byBiZSBuZXN0ZWQgdW5kZXIgdHJhbnNhY3Rpb25zXHJcbiAgICAgICAgICAgIG5hbWUgPSBzdGVwLmFyZ3NbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHN0ZXAuc2lnbmF0dXJlKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBzdGVwLnNpZ25hdHVyZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc3RlcC5tb2R1bGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgZXZlciByZWFjaGVkPyBcInN0ZXAuc2lnbmF0dXJlXCIgc2VlbXMgdG8gYWx3YXlzIGV4aXN0XHJcbiAgICAgICAgICAgIG5hbWUgPSBgJHtzdGVwLm1vZHVsZX0uJHtzdGVwLm5hbWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBzdGVwLm5hbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBtYXhpbXVtIGFsbG93ZWQgbmFtZSBsZW5ndGggaW4gUlAgaXMgMTAyNCBieXRlc1xyXG4gICAgICAgIC8vIHdlIHRydW5jYXRlIGl0IGV2ZW4gbG93ZXIgc28gaXQgd2lsbCBkaXNwbGF5IG5pY2VseVxyXG4gICAgICAgIGlmIChuYW1lLmxlbmd0aCA+IE1BWF9OQU1FX0xFTkdUSCkge1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgTUFYX05BTUVfTEVOR1RILTMpICsgJy4uLic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHJldHVybnMgbnVsbCBpZiBtc2cgY2Fubm90IGJlIHN0cmluZ2lmaWVkLCBvciBzdHJpZ2lmaWVzIGl0IGlmIGl0J3Mgbm90IGEgc3RyaW5nIGFscmVhZHlcclxuICAgIF9zdHJpbmdpZnkobXNnKSB7XHJcbiAgICAgICAgLy8gd2UgdGVzdCBmb3IgdW5kZWZpbmVkIGFuZCBudWxsIGV4cGxpY2l0bHkgb24gcHVycG9zZSBiZWNhdXNlIG90aGVyIGZhbHN5IHZhbHVlcyAoZS5nLiAwKSBhcmUgb2tcclxuICAgICAgICBpZiAodHlwZW9mIG1zZyA9PT0gJ3VuZGVmaW5lZCcgfHwgbXNnID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnIHx8IG1zZyBpbnN0YW5jZW9mIFN0cmluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gbXNnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG1zZyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdSUCAtIGVycm9yIHNlbmRpbmcgbG9nOiBtc2cgb2JqZWN0IGNhbm5vdCBiZSBzZXJpYWxpemVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZVByb21pc2UocHJvbWlzZSkge1xyXG4gICAgICAgIHByb21pc2UuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUlAgZXJyb3I6ICcsIGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5wcm9taXNlcy5wdXNoKHByb21pc2UpO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFZQSxJQUFBQSxhQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNC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
@@ -139,19 +139,13 @@ class WorkerProcess extends _events.EventEmitter {
139
139
  const afterTime = new Date().getTime();
140
140
  const duration = afterTime - beforeTime;
141
141
  this._isInitialized = true;
142
- let start = '';
143
- if (this._name) {
144
- start = this._name + ' ';
145
- }
146
- log.info(start + 'Worker initialized in ' + duration + ' ms');
142
+ const engineName = this._name ? this._name + ' ' : '';
143
+ log.info(engineName + 'Worker initialized in ' + duration + ' ms');
147
144
  }
148
145
  }
149
146
  async startSession() {
150
- let start = '';
151
- if (this._name) {
152
- start = this._name + ' ';
153
- }
154
- log.info(start + 'Session started');
147
+ const engineName = this._name ? this._name + ' ' : '';
148
+ log.info(engineName + 'Session started');
155
149
  }
156
150
  async endSession(status = null, disposeModules = true) {
157
151
  if (this._childProc) {
@@ -384,4 +378,4 @@ class WorkerProcess extends _events.EventEmitter {
384
378
  }
385
379
  }
386
380
  exports.default = WorkerProcess;
387
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hpbGRfcHJvY2VzcyIsInJlcXVpcmUiLCJfZXZlbnRzIiwiX3doZW4iLCJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9kZWJ1Z2dlciIsIl91dGlsIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwibG9nIiwibG9nZ2VyIiwic25vb3plIiwibXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJXb3JrZXJQcm9jZXNzIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJwaWQiLCJ3b3JrZXJQYXRoIiwiZGVidWdNb2RlIiwiZGVidWdQb3J0IiwibmFtZSIsIm5wbUdSb290RXhlY3V0aW9uIiwiX25hbWUiLCJfaXNSdW5uaW5nIiwiX2lzSW5pdGlhbGl6ZWQiLCJfc3RvcHBlZEJ5VXNlciIsIl9waWQiLCJfY2hpbGRQcm9jIiwiX2RlYnVnTW9kZSIsIl9kZWJ1Z1BvcnQiLCJfd29ya2VyUGF0aCIsIl9ucG1HUm9vdEV4ZWN1dGlvbiIsIl9icmVha3BvaW50RXJyb3JzIiwiX2NhbGxzIiwiX2V2ZW50SGFuZGxlcnMiLCJzdGFydCIsImVudiIsIk9iamVjdCIsImFzc2lnbiIsInByb2Nlc3MiLCJPWF9XT1JLRVIiLCJERUJVRyIsImlzTmFOIiwiTk9fVVBEQVRFX05PVElGSUVSIiwiaW5mbyIsImZvcmtPcHRzIiwiY3dkIiwiZXhlY0FyZ3YiLCJkZXRhY2hlZCIsInB1c2giLCJnbG9iYWxOcG1Nb2R1bGVzUGF0aCIsInBsYXRmb3JtIiwicmVqZWN0IiwiZXhlYyIsImVyciIsInN0ZG91dCIsImNvbnNvbGUiLCJ0b1N0cmluZyIsInRyaW0iLCJleGVjUmVzdWx0IiwiZXhlY1N5bmMiLCJOT0RFX1BBVEgiLCJmb3JrIiwiX2hvb2tDaGlsZFByb2NFdmVudHMiLCJzdGFydERlYnVnZ2VyIiwiX2luaXRpYWxpemVEZWJ1Z2dlciIsInN0b3BEZWJ1Z2dlciIsImNsb3NlIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RvcCIsInN0YXR1cyIsIl9wYXVzZWQiLCJkaXNhYmxlIiwicmVzdW1lVGVybWluYXRlIiwiaW52b2tlIiwiX3NlbmQiLCJ0eXBlIiwia2lsbCIsIl9yZXNldCIsImluaXRPeHlnZW4iLCJyaWQiLCJvcHRpb25zIiwiY2FwcyIsImJlZm9yZVRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsImFmdGVyVGltZSIsImR1cmF0aW9uIiwic3RhcnRTZXNzaW9uIiwiZW5kU2Vzc2lvbiIsImRpc3Bvc2VNb2R1bGVzIiwiZGlzcG9zZSIsImRlYnVnZ2VyIiwiaXNSdW5uaW5nIiwiaXNJbml0aWFsaXplZCIsInJ1biIsInJ1bk9wdHMiLCJzdWJzY3JpYmUiLCJldmVudE5hbWUiLCJoYW5kbGVyIiwiZXZlbnQiLCJtZXRob2QiLCJhcmdzIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJzbGljZSIsImNhbGwiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzaGlmdCIsImNhbGxJZCIsIm94dXRpbCIsImdlbmVyYXRlVW5pcXVlSWQiLCJkZWZlciIsInByb21pc2UiLCJpbnZva2VUZXN0SG9vayIsImhvb2tOYW1lIiwiaG9va0FyZ3MiLCJtZXNzYWdlIiwic2VuZCIsIl93aGVuT3h5Z2VuRGlzcG9zZWQiLCJfd2hlbk94eWdlbkluaXRpYWxpemVkIiwiX3doZW5Nb2R1bGVzRGlzcG9zZWQiLCJvbiIsIl9oYW5kbGVDaGlsZE1lc3NhZ2UiLCJiaW5kIiwiX2hhbmRsZUNoaWxkRXJyb3IiLCJfaGFuZGxlQ2hpbGRFeGl0IiwiX2hhbmRsZUNoaWxkRGlzY29ubmVjdCIsIl9oYW5kbGVDaGlsZFVuY2F1Z2h0RXhjZXB0aW9uIiwiX2hhbmRsZUNoaWxkU2lnSW50IiwibXNnIiwiaGFzT3duUHJvcGVydHkiLCJlcnJvciIsInJldHZhbCIsImVtaXQiLCJfaGFuZGxlV29ya2VyRXZlbnQiLCJhcHBseSIsInVuZGVmaW5lZCIsImRlYnVnIiwiZXhpdENvZGUiLCJzaWduYWwiLCJEZWJ1Z2dlciIsIndoZW5EZWJ1Z2dlclJlYWR5IiwiX3RoaXMiLCJjb250aW51ZSIsImlzUmVzb2x2ZWQiLCJicmVha3BvaW50RGF0YSIsImJyZWFrRXJyb3IiLCJpbmNsdWRlcyIsImNvbm5lY3QiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bm5lcnMvV29ya2VyUHJvY2Vzcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JrLCBleGVjU3luYywgZXhlYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xyXG5pbXBvcnQgeyBkZWZlciB9IGZyb20gJ3doZW4nO1xyXG5cclxuLy8gc2V0dXAgbG9nZ2VyXHJcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbGliL2xvZ2dlcic7XHJcbmNvbnN0IGxvZyA9IGxvZ2dlcignV29ya2VyUHJvY2VzcycpO1xyXG5cclxuaW1wb3J0IERlYnVnZ2VyIGZyb20gJy4uL2xpYi9kZWJ1Z2dlcic7XHJcbmltcG9ydCBveHV0aWwgZnJvbSAnLi4vbGliL3V0aWwnO1xyXG5cclxuLy8gc25vb3plIGZ1bmN0aW9uIC0gYXN5bmMgd3JhcHBlciBhcm91bmQgc2V0VGltZW91dCBmdW5jdGlvblxyXG5jb25zdCBzbm9vemUgPSBtcyA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcclxuXHJcbi8qKlxyXG4gKiBXb3JrZXJQcm9jZXNzIHJlc3BvbnNpYmxlIGZvciBzcGF3bmluZyBhIHdvcmtlciBwcm9jZXNzIHRoZSB0ZXN0IGluc3RhbmNlLlxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV29ya2VyUHJvY2VzcyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XHJcbiAgICBjb25zdHJ1Y3RvcihwaWQsIHdvcmtlclBhdGgsIGRlYnVnTW9kZSwgZGVidWdQb3J0LCBuYW1lID0gbnVsbCwgbnBtR1Jvb3RFeGVjdXRpb24gPSB0cnVlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fc3RvcHBlZEJ5VXNlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fcGlkID0gcGlkO1xyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fZGVidWdNb2RlID0gZGVidWdNb2RlO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnUG9ydCA9IGRlYnVnUG9ydDtcclxuICAgICAgICB0aGlzLl9kZWJ1Z2dlciA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fd29ya2VyUGF0aCA9IHdvcmtlclBhdGg7XHJcbiAgICAgICAgdGhpcy5fbnBtR1Jvb3RFeGVjdXRpb24gPSBucG1HUm9vdEV4ZWN1dGlvbjtcclxuICAgICAgICB0aGlzLl9icmVha3BvaW50RXJyb3JzID0gW107XHJcbiAgICAgICAgLy8gaG9sZCB0aGUgcmVtb3RlIGludm9jYXRpb24gcHJvbWlzZVxyXG4gICAgICAgIHRoaXMuX2NhbGxzID0ge307XHJcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVycyA9IHt9O1xyXG4gICAgfVxyXG4gICAgYXN5bmMgc3RhcnQoKSB7XHJcbiAgICAgICAgY29uc3QgZW52ID0gT2JqZWN0LmFzc2lnbihwcm9jZXNzLmVudiwge1xyXG4gICAgICAgICAgICBPWF9XT1JLRVI6IHRydWUsXHJcbiAgICAgICAgICAgIERFQlVHOiAhaXNOYU4odGhpcy5fZGVidWdQb3J0KSxcclxuICAgICAgICAgICAgTk9fVVBEQVRFX05PVElGSUVSOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxvZy5pbmZvKGBTdGFydGluZyB3b3JrZXIgcHJvY2VzcyAke3RoaXMuX3BpZH0uYCk7XHJcbiAgICAgICAgbGV0IGZvcmtPcHRzID0ge1xyXG4gICAgICAgICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXHJcbiAgICAgICAgICAgIGVudixcclxuICAgICAgICAgICAgZXhlY0FyZ3Y6IFtdLFxyXG4gICAgICAgICAgICBkZXRhY2hlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIC8vc2lsZW50OiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnUG9ydCkge1xyXG4gICAgICAgICAgICAvLyBhZGQgLS1pbnNwZWN0LWJyayBhcmd1bWVudCBpZiBkZWJ1ZyBwb3J0IGlzIHNwZWNpZmllZFxyXG4gICAgICAgICAgICBmb3JrT3B0cy5leGVjQXJndiA9IE9iamVjdC5hc3NpZ24oZm9ya09wdHMuZXhlY0FyZ3YsIFsnLS1pbnNwZWN0LWJyaz0nICsgdGhpcy5fZGVidWdQb3J0XSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBwcmludCBtb3JlIGluZm9ybWF0aW9uIGZvciBub2RlanMgZXJyb3JzXHJcbiAgICAgICAgZm9ya09wdHMuZXhlY0FyZ3YucHVzaCgnLS10cmFjZS13YXJuaW5ncycpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fbnBtR1Jvb3RFeGVjdXRpb24pIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGxldCBnbG9iYWxOcG1Nb2R1bGVzUGF0aDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjKCducG0gcm9vdCAtZycsIHtjd2Q6IHByb2Nlc3MuY3dkKCl9LCBmdW5jdGlvbiAoZXJyLCBzdGRvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2RhcndpbiBucG0gcm9vdCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGRvdXQgJiYgc3Rkb3V0LnRvU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxOcG1Nb2R1bGVzUGF0aCA9IHN0ZG91dC50b1N0cmluZygpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhlY1Jlc3VsdCA9IGV4ZWNTeW5jKCducG0gcm9vdCAtZycpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXhlY1Jlc3VsdCAmJiBleGVjUmVzdWx0LnRvU3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE5wbU1vZHVsZXNQYXRoID0gZXhlY1Jlc3VsdC50b1N0cmluZygpLnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGdsb2JhbE5wbU1vZHVsZXNQYXRoICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ya09wdHMgJiZcclxuICAgICAgICAgICAgICAgICAgICBmb3JrT3B0cy5lbnZcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcmtPcHRzLmVudi5OT0RFX1BBVEggPSBnbG9iYWxOcG1Nb2R1bGVzUGF0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25wbSByb290IGVycm9yOicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBmb3JrIHdvcmtlclxyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYyA9IGZvcmsodGhpcy5fd29ya2VyUGF0aCwgZm9ya09wdHMpO1xyXG5cclxuICAgICAgICB0aGlzLl9ob29rQ2hpbGRQcm9jRXZlbnRzKCk7XHJcbiAgICAgICAgLy8gaWYgd2UgYXJlIGluIGRlYnVnIG1vZGUsIGluaXRpYWxpemUgZGVidWdnZXIgYW5kIG9ubHkgdGhlbiBzdGFydCBtb2R1bGVzICdpbml0J1xyXG5cclxuICAgICAgICB0aGlzLl9pc1J1bm5pbmcgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlsZFByb2M7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc3RhcnREZWJ1Z2dlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5fZGVidWdNb2RlKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2luaXRpYWxpemVEZWJ1Z2dlcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzdG9wRGVidWdnZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnZ2VyKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlYnVnZ2VyLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RlYnVnZ2VyLnJlbW92ZUFsbExpc3RlbmVycygpO1xyXG4gICAgICAgICAgICB0aGlzLl9kZWJ1Z2dlciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHN0b3Aoc3RhdHVzID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemVkICYmIHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWdnZXIgJiYgdGhpcy5fZGVidWdnZXIuX3BhdXNlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCdDQU5DRUxFRCcgPT09IHN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlYnVnZ2VyLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVidWdnZXIucmVzdW1lVGVybWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5pbnZva2UoJ2Rpc3Bvc2UnLCBzdGF0dXMpO1xyXG4gICAgICAgICAgICBhd2FpdCBzbm9vemUoMTAwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICBhd2FpdCBzbm9vemUoMTAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnZ2VyKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlYnVnZ2VyLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zZW5kKHtcclxuICAgICAgICAgICAgdHlwZTogJ2V4aXQnLFxyXG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmtpbGwoKTtcclxuICAgICAgICB0aGlzLl9yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGtpbGwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICB0aGlzLl9jaGlsZFByb2Mua2lsbCgnU0lHSU5UJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXRPeHlnZW4ocmlkLCBvcHRpb25zLCBjYXBzKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5pbnZva2UoJ2luaXQnLCByaWQsIG9wdGlvbnMsIGNhcHMpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgYWZ0ZXJUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uID0gYWZ0ZXJUaW1lIC0gYmVmb3JlVGltZTtcclxuICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGxldCBzdGFydCA9ICcnO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnQgPSB0aGlzLl9uYW1lICsgJyAnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKHN0YXJ0ICsgJ1dvcmtlciBpbml0aWFsaXplZCBpbiAnICsgZHVyYXRpb24gKyAnIG1zJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHN0YXJ0U2Vzc2lvbigpIHtcclxuICAgICAgICBsZXQgc3RhcnQgPSAnJztcclxuICAgICAgICBpZiAodGhpcy5fbmFtZSkge1xyXG4gICAgICAgICAgICBzdGFydCA9IHRoaXMuX25hbWUgKyAnICc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxvZy5pbmZvKHN0YXJ0ICsgJ1Nlc3Npb24gc3RhcnRlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuZFNlc3Npb24oc3RhdHVzID0gbnVsbCwgZGlzcG9zZU1vZHVsZXMgPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICBjb25zdCBiZWZvcmVUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW52b2tlKCdlbmRTZXNzaW9uJywgc3RhdHVzLCBkaXNwb3NlTW9kdWxlcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBkdXJhdGlvbiA9IGFmdGVyVGltZSAtIGJlZm9yZVRpbWU7XHJcbiAgICAgICAgICAgIGxldCBzdGFydCA9ICcnO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnQgPSB0aGlzLl9uYW1lICsgJyAnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKHN0YXJ0ICsgJ1Nlc3Npb24gZW5kZWQgaW4gJyArIGR1cmF0aW9uICsgJyBtcycpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkaXNwb3NlKHN0YXR1cyA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5fZGVidWdnZXIpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVidWdnZXIuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzSW5pdGlhbGl6ZWQgJiYgdGhpcy5fY2hpbGRQcm9jKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW52b2tlKCdkaXNwb3NlJywgc3RhdHVzKTtcclxuICAgICAgICAgICAgdGhpcy5fc2VuZCh7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnZXhpdCcsXHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMua2lsbCgpO1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlbmQoe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2V4aXQnLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmtpbGwoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRlYnVnZ2VyICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGVidWdnZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzUnVubmluZyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUnVubmluZztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNJbml0aWFsaXplZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXNJbml0aWFsaXplZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBydW4ocnVuT3B0cykge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmludm9rZSgncnVuJywgcnVuT3B0cyk7XHJcbiAgICB9XHJcblxyXG4gICAgc3Vic2NyaWJlKGV2ZW50TmFtZSwgaGFuZGxlcikge1xyXG4gICAgICAgIGlmICghdGhpcy5fZXZlbnRIYW5kbGVyc1tldmVudE5hbWVdICYmIHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50SGFuZGxlcnNbZXZlbnROYW1lXSA9IGhhbmRsZXI7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlbmQoe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3N1YnNjcmliZScsXHJcbiAgICAgICAgICAgICAgICBldmVudDogZXZlbnROYW1lLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW52b2tlKG1ldGhvZCkge1xyXG4gICAgICAgIGxldCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcclxuICAgICAgICAvLyBpZ25vcmUgZmlyc3QgYXJndW1lbnQgLSBlLmcuIG1ldGhvZFxyXG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgYXJncy5zaGlmdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fY2hpbGRQcm9jKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhbGxJZCA9IG94dXRpbC5nZW5lcmF0ZVVuaXF1ZUlkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlbmQoe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2ludm9rZScsXHJcbiAgICAgICAgICAgICAgICBtZXRob2Q6IG1ldGhvZCxcclxuICAgICAgICAgICAgICAgIGNhbGxJZDogY2FsbElkLFxyXG4gICAgICAgICAgICAgICAgYXJnczogYXJnc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5fY2FsbHNbY2FsbElkXSA9IGRlZmVyKCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jYWxsc1tjYWxsSWRdLnByb21pc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGludm9rZVRlc3RIb29rKGhvb2tOYW1lLCBob29rQXJncykge1xyXG4gICAgICAgIGNvbnN0IGNhbGxJZCA9IG94dXRpbC5nZW5lcmF0ZVVuaXF1ZUlkKCk7XHJcbiAgICAgICAgdGhpcy5fc2VuZCh7XHJcbiAgICAgICAgICAgIHR5cGU6ICdpbnZva2U6aG9vaycsXHJcbiAgICAgICAgICAgIG1ldGhvZDogaG9va05hbWUsXHJcbiAgICAgICAgICAgIGNhbGxJZDogY2FsbElkLFxyXG4gICAgICAgICAgICBhcmdzOiBob29rQXJnc1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2NhbGxzW2NhbGxJZF0gPSBkZWZlcigpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxsc1tjYWxsSWRdLnByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgX3NlbmQobWVzc2FnZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5fY2hpbGRQcm9jKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY2hpbGRQcm9jLnNlbmQobWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgX3Jlc2V0KCkge1xyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fZGVidWdnZXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2lzUnVubmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnTW9kZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fZGVidWdQb3J0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLl93aGVuT3h5Z2VuRGlzcG9zZWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3doZW5PeHlnZW5Jbml0aWFsaXplZCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fd2hlbk1vZHVsZXNEaXNwb3NlZCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIF9ob29rQ2hpbGRQcm9jRXZlbnRzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fY2hpbGRQcm9jKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY2hpbGRQcm9jLm9uKCdtZXNzYWdlJywgdGhpcy5faGFuZGxlQ2hpbGRNZXNzYWdlLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5vbignZXJyb3InLCB0aGlzLl9oYW5kbGVDaGlsZEVycm9yLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5vbignZXhpdCcsIHRoaXMuX2hhbmRsZUNoaWxkRXhpdC5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2Mub24oJ2Rpc2Nvbm5lY3QnLCB0aGlzLl9oYW5kbGVDaGlsZERpc2Nvbm5lY3QuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5fY2hpbGRQcm9jLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIHRoaXMuX2hhbmRsZUNoaWxkVW5jYXVnaHRFeGNlcHRpb24uYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5fY2hpbGRQcm9jLm9uKCdTSUdJTlQnLCB0aGlzLl9oYW5kbGVDaGlsZFNpZ0ludC5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQ2hpbGRNZXNzYWdlKG1zZykge1xyXG4gICAgICAgIGlmIChtc2cuZXZlbnQpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChtc2cuZXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2ludm9rZTpyZXN1bHQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtc2cuY2FsbElkICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLl9jYWxscywgbXNnLmNhbGxJZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuX2NhbGxzW21zZy5jYWxsSWRdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXNnLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChtc2cuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG1zZy5yZXR2YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jYWxsc1ttc2cuY2FsbElkXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdyZXBvcnRlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1zZy5tZXRob2QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdyZXBvcnRlcicsIHsgcGlkOiB0aGlzLl9waWQsIG1ldGhvZDogbXNnLm1ldGhvZCwgYXJnczogbXNnLmFyZ3MgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZXZlbnQnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVdvcmtlckV2ZW50KG1zZy5uYW1lLCBtc2cuYXJncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbWl0KCdtZXNzYWdlJywgT2JqZWN0LmFzc2lnbihtc2csIHsgcGlkOiB0aGlzLl9waWQgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9oYW5kbGVXb3JrZXJFdmVudChuYW1lLCBhcmdzKSB7XHJcbiAgICAgICAgaWYgKG5hbWUgJiYgdGhpcy5fZXZlbnRIYW5kbGVycyAmJiB0aGlzLl9ldmVudEhhbmRsZXJzW25hbWVdKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9ldmVudEhhbmRsZXJzW25hbWVdLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGxvZy5lcnJvcignRXJyb3IgdGhyb3duIGJ5IHdvcmtlciBldmVudCBoYW5kbGVyIFwiJHtuYW1lfTonLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQ2hpbGRFcnJvcihlcnJvcikge1xyXG4gICAgICAgIGxvZy5kZWJ1ZyhgV29ya2VyICR7dGhpcy5fcGlkfSB0aHJvd24gYW4gZXJyb3I6ICR7ZXJyb3J9LmApO1xyXG4gICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBPYmplY3QuYXNzaWduKHsgZXJyb3IgOiBlcnJvciB9LCB7IHBpZDogdGhpcy5fcGlkIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQ2hpbGRFeGl0KGV4aXRDb2RlLCBzaWduYWwpIHtcclxuICAgICAgICBsb2cuZGVidWcoYFdvcmtlciAke3RoaXMuX3BpZH0gZmluaXNoZWQgd2l0aCBleGl0IGNvZGUgJHtleGl0Q29kZX0gYW5kIHNpZ25hbCAke3NpZ25hbH0uYCk7XHJcbiAgICAgICAgdGhpcy5fcmVzZXQoKTtcclxuICAgICAgICB0aGlzLmVtaXQoJ2V4aXQnLCB7IHBpZDogdGhpcy5fcGlkLCBleGl0Q29kZSwgc2lnbmFsIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVDaGlsZERpc2Nvbm5lY3QoKSB7XHJcbiAgICAgICAgbG9nLmRlYnVnKGBXb3JrZXIgJHt0aGlzLl9waWR9IGRpc2Nvbm5lY3RlZC5gKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQ2hpbGRVbmNhdWdodEV4Y2VwdGlvbihlcnJvcikge1xyXG4gICAgICAgIGxvZy5kZWJ1ZyhgV29ya2VyICR7dGhpcy5fcGlkfSB0aHJvd24gYW4gdW5jYXVnaHQgZXJyb3I6ICR7ZXJyb3J9LmApO1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIE9iamVjdC5hc3NpZ24oeyBlcnJvciA6IGVycm9yIH0sIHsgcGlkOiB0aGlzLl9waWQgfSkpO1xyXG4gICAgICAgIHRoaXMuZW1pdCgnZXhpdCcsIHsgcGlkOiB0aGlzLl9waWQsIGV4aXRDb2RlOiAxIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVDaGlsZFNpZ0ludCgpIHtcclxuICAgICAgICBsb2cuZGVidWcoYFdvcmtlciAke3RoaXMuX3BpZH0gcmVjZWl2ZWQgU0lHSU5UIHNpZ25hbC5gKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfaW5pdGlhbGl6ZURlYnVnZ2VyKCkge1xyXG4gICAgICAgIHRoaXMuX2RlYnVnZ2VyID0gbmV3IERlYnVnZ2VyKHRoaXMuX3BpZCk7XHJcbiAgICAgICAgbGV0IHdoZW5EZWJ1Z2dlclJlYWR5ID0gZGVmZXIoKTtcclxuICAgICAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgLy8gaGFuZGxlIGRlYnVnZ2VyIGV2ZW50c1xyXG4gICAgICAgIHRoaXMuX2RlYnVnZ2VyLm9uKCdyZWFkeScsIGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgICAvLyByZXN1bWUgdGhlIGZpcnN0IGJyZWFrcG9pbnQgd2hpY2ggaXMgYXV0b21hdGljYWxseSBhZGRlZCBieSB0aGUgZGVidWdnZXJcclxuICAgICAgICAgICAgaWYgKF90aGlzLl9kZWJ1Z2dlciAmJiBfdGhpcy5fZGVidWdnZXIuY29udGludWUpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLl9kZWJ1Z2dlci5jb250aW51ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHdoZW5EZWJ1Z2dlclJlYWR5LnJlc29sdmUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z2dlci5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpIHtcclxuXHJcbiAgICAgICAgICAgIGxvZy5lcnJvcignRGVidWdnZXIgZXJyb3IgOicsIGVycik7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2RlYnVnZ2VyOmVycm9yJywgT2JqZWN0LmFzc2lnbihlcnIsIHsgcGlkOiB0aGlzLl9waWQgfSkpO1xyXG4gICAgICAgICAgICAvLyByZWplY3QgdGhlIHByb21pc2Ugb25seSBpZiB3ZSBnb3QgYW4gZXJyb3IgcmlnaHQgYWZ0ZXIgX2RlYnVnZ2VyLmNvbm5lY3QoKSBjYWxsIGJlbG93IC0gd2UgbmVlZCB0aGlzIHRvIGluZGljYXRlIGRlYnVnZ2VyIGluaXRpYWxpemF0aW9uIGVycm9yXHJcbiAgICAgICAgICAgIGlmICghd2hlbkRlYnVnZ2VyUmVhZHkuaXNSZXNvbHZlZCkge1xyXG4gICAgICAgICAgICAgICAgd2hlbkRlYnVnZ2VyUmVhZHkucmVqZWN0KGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnZ2VyLm9uKCdicmVhaycsIGZ1bmN0aW9uKGJyZWFrcG9pbnREYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnZGVidWdnZXI6YnJlYWsnLCBicmVha3BvaW50RGF0YSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fZGVidWdnZXIub24oJ2JyZWFrRXJyb3InLCBhc3luYyBmdW5jdGlvbihicmVha0Vycm9yKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoYnJlYWtFcnJvciAmJiBicmVha0Vycm9yLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChfdGhpcy5fYnJlYWtwb2ludEVycm9ycy5pbmNsdWRlcyhicmVha0Vycm9yLm1lc3NhZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9icmVha3BvaW50RXJyb3JzLnB1c2goYnJlYWtFcnJvci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2RlYnVnZ2VyOmJyZWFrRXJyb3InLCBicmVha0Vycm9yKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsb2cuaW5mbyhgQ29ubmVjdGluZyB0byBkZWJ1Z2dlciBvbiBwb3J0ICR7dGhpcy5fZGVidWdQb3J0fS4uLmApO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9kZWJ1Z2dlci5jb25uZWN0KHRoaXMuX2RlYnVnUG9ydCwgJzEyNy4wLjAuMScpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgbG9nLmVycm9yKCdDYW5ub3QgY29ubmVjdCB0byB0aGUgZGVidWdnZXI6ICcsIGUpO1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ0Nhbm5vdCBjb25uZWN0IHRvIHRoZSBkZWJ1Z2dlcjogJyArIGUubWVzc2FnZTtcclxuICAgICAgICAgICAgd2hlbkRlYnVnZ2VyUmVhZHkucmVqZWN0KG1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHdoZW5EZWJ1Z2dlclJlYWR5LnByb21pc2U7XHJcbiAgICB9XHJcbn0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxjQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFHQSxJ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
381
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hpbGRfcHJvY2VzcyIsInJlcXVpcmUiLCJfZXZlbnRzIiwiX3doZW4iLCJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9kZWJ1Z2dlciIsIl91dGlsIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwibG9nIiwibG9nZ2VyIiwic25vb3plIiwibXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJXb3JrZXJQcm9jZXNzIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJwaWQiLCJ3b3JrZXJQYXRoIiwiZGVidWdNb2RlIiwiZGVidWdQb3J0IiwibmFtZSIsIm5wbUdSb290RXhlY3V0aW9uIiwiX25hbWUiLCJfaXNSdW5uaW5nIiwiX2lzSW5pdGlhbGl6ZWQiLCJfc3RvcHBlZEJ5VXNlciIsIl9waWQiLCJfY2hpbGRQcm9jIiwiX2RlYnVnTW9kZSIsIl9kZWJ1Z1BvcnQiLCJfd29ya2VyUGF0aCIsIl9ucG1HUm9vdEV4ZWN1dGlvbiIsIl9icmVha3BvaW50RXJyb3JzIiwiX2NhbGxzIiwiX2V2ZW50SGFuZGxlcnMiLCJzdGFydCIsImVudiIsIk9iamVjdCIsImFzc2lnbiIsInByb2Nlc3MiLCJPWF9XT1JLRVIiLCJERUJVRyIsImlzTmFOIiwiTk9fVVBEQVRFX05PVElGSUVSIiwiaW5mbyIsImZvcmtPcHRzIiwiY3dkIiwiZXhlY0FyZ3YiLCJkZXRhY2hlZCIsInB1c2giLCJnbG9iYWxOcG1Nb2R1bGVzUGF0aCIsInBsYXRmb3JtIiwicmVqZWN0IiwiZXhlYyIsImVyciIsInN0ZG91dCIsImNvbnNvbGUiLCJ0b1N0cmluZyIsInRyaW0iLCJleGVjUmVzdWx0IiwiZXhlY1N5bmMiLCJOT0RFX1BBVEgiLCJmb3JrIiwiX2hvb2tDaGlsZFByb2NFdmVudHMiLCJzdGFydERlYnVnZ2VyIiwiX2luaXRpYWxpemVEZWJ1Z2dlciIsInN0b3BEZWJ1Z2dlciIsImNsb3NlIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RvcCIsInN0YXR1cyIsIl9wYXVzZWQiLCJkaXNhYmxlIiwicmVzdW1lVGVybWluYXRlIiwiaW52b2tlIiwiX3NlbmQiLCJ0eXBlIiwia2lsbCIsIl9yZXNldCIsImluaXRPeHlnZW4iLCJyaWQiLCJvcHRpb25zIiwiY2FwcyIsImJlZm9yZVRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsImFmdGVyVGltZSIsImR1cmF0aW9uIiwiZW5naW5lTmFtZSIsInN0YXJ0U2Vzc2lvbiIsImVuZFNlc3Npb24iLCJkaXNwb3NlTW9kdWxlcyIsImRpc3Bvc2UiLCJkZWJ1Z2dlciIsImlzUnVubmluZyIsImlzSW5pdGlhbGl6ZWQiLCJydW4iLCJydW5PcHRzIiwic3Vic2NyaWJlIiwiZXZlbnROYW1lIiwiaGFuZGxlciIsImV2ZW50IiwibWV0aG9kIiwiYXJncyIsIkFycmF5IiwicHJvdG90eXBlIiwic2xpY2UiLCJjYWxsIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic2hpZnQiLCJjYWxsSWQiLCJveHV0aWwiLCJnZW5lcmF0ZVVuaXF1ZUlkIiwiZGVmZXIiLCJwcm9taXNlIiwiaW52b2tlVGVzdEhvb2siLCJob29rTmFtZSIsImhvb2tBcmdzIiwibWVzc2FnZSIsInNlbmQiLCJfd2hlbk94eWdlbkRpc3Bvc2VkIiwiX3doZW5PeHlnZW5Jbml0aWFsaXplZCIsIl93aGVuTW9kdWxlc0Rpc3Bvc2VkIiwib24iLCJfaGFuZGxlQ2hpbGRNZXNzYWdlIiwiYmluZCIsIl9oYW5kbGVDaGlsZEVycm9yIiwiX2hhbmRsZUNoaWxkRXhpdCIsIl9oYW5kbGVDaGlsZERpc2Nvbm5lY3QiLCJfaGFuZGxlQ2hpbGRVbmNhdWdodEV4Y2VwdGlvbiIsIl9oYW5kbGVDaGlsZFNpZ0ludCIsIm1zZyIsImhhc093blByb3BlcnR5IiwiZXJyb3IiLCJyZXR2YWwiLCJlbWl0IiwiX2hhbmRsZVdvcmtlckV2ZW50IiwiYXBwbHkiLCJ1bmRlZmluZWQiLCJkZWJ1ZyIsImV4aXRDb2RlIiwic2lnbmFsIiwiRGVidWdnZXIiLCJ3aGVuRGVidWdnZXJSZWFkeSIsIl90aGlzIiwiY29udGludWUiLCJpc1Jlc29sdmVkIiwiYnJlYWtwb2ludERhdGEiLCJicmVha0Vycm9yIiwiaW5jbHVkZXMiLCJjb25uZWN0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5uZXJzL1dvcmtlclByb2Nlc3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9yaywgZXhlY1N5bmMsIGV4ZWMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcclxuaW1wb3J0IHsgZGVmZXIgfSBmcm9tICd3aGVuJztcclxuXHJcbi8vIHNldHVwIGxvZ2dlclxyXG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2xpYi9sb2dnZXInO1xyXG5jb25zdCBsb2cgPSBsb2dnZXIoJ1dvcmtlclByb2Nlc3MnKTtcclxuXHJcbmltcG9ydCBEZWJ1Z2dlciBmcm9tICcuLi9saWIvZGVidWdnZXInO1xyXG5pbXBvcnQgb3h1dGlsIGZyb20gJy4uL2xpYi91dGlsJztcclxuXHJcbi8vIHNub296ZSBmdW5jdGlvbiAtIGFzeW5jIHdyYXBwZXIgYXJvdW5kIHNldFRpbWVvdXQgZnVuY3Rpb25cclxuY29uc3Qgc25vb3plID0gbXMgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XHJcblxyXG4vKipcclxuICogV29ya2VyUHJvY2VzcyByZXNwb25zaWJsZSBmb3Igc3Bhd25pbmcgYSB3b3JrZXIgcHJvY2VzcyB0aGUgdGVzdCBpbnN0YW5jZS5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdvcmtlclByb2Nlc3MgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xyXG4gICAgY29uc3RydWN0b3IocGlkLCB3b3JrZXJQYXRoLCBkZWJ1Z01vZGUsIGRlYnVnUG9ydCwgbmFtZSA9IG51bGwsIG5wbUdSb290RXhlY3V0aW9uID0gdHJ1ZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5faXNSdW5uaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3N0b3BwZWRCeVVzZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX3BpZCA9IHBpZDtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2MgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnTW9kZSA9IGRlYnVnTW9kZTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z1BvcnQgPSBkZWJ1Z1BvcnQ7XHJcbiAgICAgICAgdGhpcy5fZGVidWdnZXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3dvcmtlclBhdGggPSB3b3JrZXJQYXRoO1xyXG4gICAgICAgIHRoaXMuX25wbUdSb290RXhlY3V0aW9uID0gbnBtR1Jvb3RFeGVjdXRpb247XHJcbiAgICAgICAgdGhpcy5fYnJlYWtwb2ludEVycm9ycyA9IFtdO1xyXG4gICAgICAgIC8vIGhvbGQgdGhlIHJlbW90ZSBpbnZvY2F0aW9uIHByb21pc2VcclxuICAgICAgICB0aGlzLl9jYWxscyA9IHt9O1xyXG4gICAgICAgIHRoaXMuX2V2ZW50SGFuZGxlcnMgPSB7fTtcclxuICAgIH1cclxuICAgIGFzeW5jIHN0YXJ0KCkge1xyXG4gICAgICAgIGNvbnN0IGVudiA9IE9iamVjdC5hc3NpZ24ocHJvY2Vzcy5lbnYsIHtcclxuICAgICAgICAgICAgT1hfV09SS0VSOiB0cnVlLFxyXG4gICAgICAgICAgICBERUJVRzogIWlzTmFOKHRoaXMuX2RlYnVnUG9ydCksXHJcbiAgICAgICAgICAgIE5PX1VQREFURV9OT1RJRklFUjogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsb2cuaW5mbyhgU3RhcnRpbmcgd29ya2VyIHByb2Nlc3MgJHt0aGlzLl9waWR9LmApO1xyXG4gICAgICAgIGxldCBmb3JrT3B0cyA9IHtcclxuICAgICAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxyXG4gICAgICAgICAgICBlbnYsXHJcbiAgICAgICAgICAgIGV4ZWNBcmd2OiBbXSxcclxuICAgICAgICAgICAgZGV0YWNoZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAvL3NpbGVudDogZmFsc2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1Z1BvcnQpIHtcclxuICAgICAgICAgICAgLy8gYWRkIC0taW5zcGVjdC1icmsgYXJndW1lbnQgaWYgZGVidWcgcG9ydCBpcyBzcGVjaWZpZWRcclxuICAgICAgICAgICAgZm9ya09wdHMuZXhlY0FyZ3YgPSBPYmplY3QuYXNzaWduKGZvcmtPcHRzLmV4ZWNBcmd2LCBbJy0taW5zcGVjdC1icms9JyArIHRoaXMuX2RlYnVnUG9ydF0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gcHJpbnQgbW9yZSBpbmZvcm1hdGlvbiBmb3Igbm9kZWpzIGVycm9yc1xyXG4gICAgICAgIGZvcmtPcHRzLmV4ZWNBcmd2LnB1c2goJy0tdHJhY2Utd2FybmluZ3MnKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX25wbUdSb290RXhlY3V0aW9uKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZ2xvYmFsTnBtTW9kdWxlc1BhdGg7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdkYXJ3aW4nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYygnbnBtIHJvb3QgLWcnLCB7Y3dkOiBwcm9jZXNzLmN3ZCgpfSwgZnVuY3Rpb24gKGVyciwgc3Rkb3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdkYXJ3aW4gbnBtIHJvb3QgZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Rkb3V0ICYmIHN0ZG91dC50b1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsTnBtTW9kdWxlc1BhdGggPSBzdGRvdXQudG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4ZWNSZXN1bHQgPSBleGVjU3luYygnbnBtIHJvb3QgLWcnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZWNSZXN1bHQgJiYgZXhlY1Jlc3VsdC50b1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxOcG1Nb2R1bGVzUGF0aCA9IGV4ZWNSZXN1bHQudG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICBnbG9iYWxOcG1Nb2R1bGVzUGF0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcmtPcHRzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ya09wdHMuZW52XHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JrT3B0cy5lbnYuTk9ERV9QQVRIID0gZ2xvYmFsTnBtTW9kdWxlc1BhdGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCducG0gcm9vdCBlcnJvcjonLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZm9yayB3b3JrZXJcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2MgPSBmb3JrKHRoaXMuX3dvcmtlclBhdGgsIGZvcmtPcHRzKTtcclxuXHJcbiAgICAgICAgdGhpcy5faG9va0NoaWxkUHJvY0V2ZW50cygpO1xyXG4gICAgICAgIC8vIGlmIHdlIGFyZSBpbiBkZWJ1ZyBtb2RlLCBpbml0aWFsaXplIGRlYnVnZ2VyIGFuZCBvbmx5IHRoZW4gc3RhcnQgbW9kdWxlcyAnaW5pdCdcclxuXHJcbiAgICAgICAgdGhpcy5faXNSdW5uaW5nID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGRQcm9jO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHN0YXJ0RGVidWdnZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnTW9kZSkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9pbml0aWFsaXplRGVidWdnZXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc3RvcERlYnVnZ2VyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlcikge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9kZWJ1Z2dlci5jbG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9kZWJ1Z2dlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcclxuICAgICAgICAgICAgdGhpcy5fZGVidWdnZXIgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzdG9wKHN0YXR1cyA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5faXNJbml0aWFsaXplZCAmJiB0aGlzLl9jaGlsZFByb2MpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2RlYnVnZ2VyICYmIHRoaXMuX2RlYnVnZ2VyLl9wYXVzZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICgnQ0FOQ0VMRUQnID09PSBzdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9kZWJ1Z2dlci5kaXNhYmxlKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlYnVnZ2VyLnJlc3VtZVRlcm1pbmF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW52b2tlKCdkaXNwb3NlJywgc3RhdHVzKTtcclxuICAgICAgICAgICAgYXdhaXQgc25vb3plKDEwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jaGlsZFByb2MpIHtcclxuICAgICAgICAgICAgYXdhaXQgc25vb3plKDEwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlcikge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9kZWJ1Z2dlci5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fc2VuZCh7XHJcbiAgICAgICAgICAgIHR5cGU6ICdleGl0JyxcclxuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5raWxsKCk7XHJcbiAgICAgICAgdGhpcy5fcmVzZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBraWxsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jaGlsZFByb2MpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2hpbGRQcm9jLmtpbGwoJ1NJR0lOVCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbml0T3h5Z2VuKHJpZCwgb3B0aW9ucywgY2Fwcykge1xyXG4gICAgICAgIGlmICghdGhpcy5faXNJbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICBjb25zdCBiZWZvcmVUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW52b2tlKCdpbml0JywgcmlkLCBvcHRpb25zLCBjYXBzKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGFmdGVyVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBjb25zdCBkdXJhdGlvbiA9IGFmdGVyVGltZSAtIGJlZm9yZVRpbWU7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBlbmdpbmVOYW1lID0gdGhpcy5fbmFtZSA/IHRoaXMuX25hbWUgKyAnICcgOiAnJztcclxuICAgICAgICAgICAgbG9nLmluZm8oZW5naW5lTmFtZSArICdXb3JrZXIgaW5pdGlhbGl6ZWQgaW4gJyArIGR1cmF0aW9uICsgJyBtcycpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzdGFydFNlc3Npb24oKSB7XHJcbiAgICAgICAgY29uc3QgZW5naW5lTmFtZSA9IHRoaXMuX25hbWUgPyB0aGlzLl9uYW1lICsgJyAnIDogJyc7XHJcbiAgICAgICAgbG9nLmluZm8oZW5naW5lTmFtZSArICdTZXNzaW9uIHN0YXJ0ZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBlbmRTZXNzaW9uKHN0YXR1cyA9IG51bGwsIGRpc3Bvc2VNb2R1bGVzID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9jaGlsZFByb2MpIHtcclxuICAgICAgICAgICAgY29uc3QgYmVmb3JlVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZSgnZW5kU2Vzc2lvbicsIHN0YXR1cywgZGlzcG9zZU1vZHVsZXMpO1xyXG4gICAgICAgICAgICBjb25zdCBhZnRlclRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc3QgZHVyYXRpb24gPSBhZnRlclRpbWUgLSBiZWZvcmVUaW1lO1xyXG4gICAgICAgICAgICBsZXQgc3RhcnQgPSAnJztcclxuICAgICAgICAgICAgaWYgKHRoaXMuX25hbWUpIHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0ID0gdGhpcy5fbmFtZSArICcgJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsb2cuaW5mbyhzdGFydCArICdTZXNzaW9uIGVuZGVkIGluICcgKyBkdXJhdGlvbiArICcgbXMnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGlzcG9zZShzdGF0dXMgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnZ2VyKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlYnVnZ2VyLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemVkICYmIHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZSgnZGlzcG9zZScsIHN0YXR1cyk7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlbmQoe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2V4aXQnLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmtpbGwoKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jaGlsZFByb2MpIHtcclxuICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl9zZW5kKHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdleGl0JyxcclxuICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5raWxsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBkZWJ1Z2dlciAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlYnVnZ2VyO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc1J1bm5pbmcgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1J1bm5pbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzSW5pdGlhbGl6ZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW5pdGlhbGl6ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcnVuKHJ1bk9wdHMpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5pbnZva2UoJ3J1bicsIHJ1bk9wdHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN1YnNjcmliZShldmVudE5hbWUsIGhhbmRsZXIpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2V2ZW50SGFuZGxlcnNbZXZlbnROYW1lXSAmJiB0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXJzW2V2ZW50TmFtZV0gPSBoYW5kbGVyO1xyXG4gICAgICAgICAgICB0aGlzLl9zZW5kKHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLFxyXG4gICAgICAgICAgICAgICAgZXZlbnQ6IGV2ZW50TmFtZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGludm9rZShtZXRob2QpIHtcclxuICAgICAgICBsZXQgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XHJcbiAgICAgICAgLy8gaWdub3JlIGZpcnN0IGFyZ3VtZW50IC0gZS5nLiBtZXRob2RcclxuICAgICAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGFyZ3Muc2hpZnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICBjb25zdCBjYWxsSWQgPSBveHV0aWwuZ2VuZXJhdGVVbmlxdWVJZCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9zZW5kKHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdpbnZva2UnLFxyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBtZXRob2QsXHJcbiAgICAgICAgICAgICAgICBjYWxsSWQ6IGNhbGxJZCxcclxuICAgICAgICAgICAgICAgIGFyZ3M6IGFyZ3NcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NhbGxzW2NhbGxJZF0gPSBkZWZlcigpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY2FsbHNbY2FsbElkXS5wcm9taXNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbnZva2VUZXN0SG9vayhob29rTmFtZSwgaG9va0FyZ3MpIHtcclxuICAgICAgICBjb25zdCBjYWxsSWQgPSBveHV0aWwuZ2VuZXJhdGVVbmlxdWVJZCgpO1xyXG4gICAgICAgIHRoaXMuX3NlbmQoe1xyXG4gICAgICAgICAgICB0eXBlOiAnaW52b2tlOmhvb2snLFxyXG4gICAgICAgICAgICBtZXRob2Q6IGhvb2tOYW1lLFxyXG4gICAgICAgICAgICBjYWxsSWQ6IGNhbGxJZCxcclxuICAgICAgICAgICAgYXJnczogaG9va0FyZ3NcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9jYWxsc1tjYWxsSWRdID0gZGVmZXIoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbHNbY2FsbElkXS5wcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIF9zZW5kKG1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5zZW5kKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIF9yZXNldCgpIHtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2MgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnZ2VyID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z01vZGUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnUG9ydCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fd2hlbk94eWdlbkRpc3Bvc2VkID0gbnVsbDtcclxuICAgICAgICB0aGlzLl93aGVuT3h5Z2VuSW5pdGlhbGl6ZWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3doZW5Nb2R1bGVzRGlzcG9zZWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBfaG9va0NoaWxkUHJvY0V2ZW50cygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5vbignbWVzc2FnZScsIHRoaXMuX2hhbmRsZUNoaWxkTWVzc2FnZS5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2Mub24oJ2Vycm9yJywgdGhpcy5faGFuZGxlQ2hpbGRFcnJvci5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2Mub24oJ2V4aXQnLCB0aGlzLl9oYW5kbGVDaGlsZEV4aXQuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5fY2hpbGRQcm9jLm9uKCdkaXNjb25uZWN0JywgdGhpcy5faGFuZGxlQ2hpbGREaXNjb25uZWN0LmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCB0aGlzLl9oYW5kbGVDaGlsZFVuY2F1Z2h0RXhjZXB0aW9uLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5vbignU0lHSU5UJywgdGhpcy5faGFuZGxlQ2hpbGRTaWdJbnQuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUNoaWxkTWVzc2FnZShtc2cpIHtcclxuICAgICAgICBpZiAobXNnLmV2ZW50KSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAobXNnLmV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdpbnZva2U6cmVzdWx0JzpcclxuICAgICAgICAgICAgICAgICAgICBpZiAobXNnLmNhbGxJZCAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fY2FsbHMsIG1zZy5jYWxsSWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9jYWxsc1ttc2cuY2FsbElkXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1zZy5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobXNnLmVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShtc2cucmV0dmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fY2FsbHNbbXNnLmNhbGxJZF07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAncmVwb3J0ZXInOlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtc2cubWV0aG9kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgncmVwb3J0ZXInLCB7IHBpZDogdGhpcy5fcGlkLCBtZXRob2Q6IG1zZy5tZXRob2QsIGFyZ3M6IG1zZy5hcmdzIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2V2ZW50JzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVXb3JrZXJFdmVudChtc2cubmFtZSwgbXNnLmFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZScsIE9iamVjdC5hc3NpZ24obXNnLCB7IHBpZDogdGhpcy5fcGlkIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfaGFuZGxlV29ya2VyRXZlbnQobmFtZSwgYXJncykge1xyXG4gICAgICAgIGlmIChuYW1lICYmIHRoaXMuX2V2ZW50SGFuZGxlcnMgJiYgdGhpcy5fZXZlbnRIYW5kbGVyc1tuYW1lXSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZXZlbnRIYW5kbGVyc1tuYW1lXS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBsb2cuZXJyb3IoJ0Vycm9yIHRocm93biBieSB3b3JrZXIgZXZlbnQgaGFuZGxlciBcIiR7bmFtZX06JywgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUNoaWxkRXJyb3IoZXJyb3IpIHtcclxuICAgICAgICBsb2cuZGVidWcoYFdvcmtlciAke3RoaXMuX3BpZH0gdGhyb3duIGFuIGVycm9yOiAke2Vycm9yfS5gKTtcclxuICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgT2JqZWN0LmFzc2lnbih7IGVycm9yIDogZXJyb3IgfSwgeyBwaWQ6IHRoaXMuX3BpZCB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUNoaWxkRXhpdChleGl0Q29kZSwgc2lnbmFsKSB7XHJcbiAgICAgICAgbG9nLmRlYnVnKGBXb3JrZXIgJHt0aGlzLl9waWR9IGZpbmlzaGVkIHdpdGggZXhpdCBjb2RlICR7ZXhpdENvZGV9IGFuZCBzaWduYWwgJHtzaWduYWx9LmApO1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdleGl0JywgeyBwaWQ6IHRoaXMuX3BpZCwgZXhpdENvZGUsIHNpZ25hbCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQ2hpbGREaXNjb25uZWN0KCkge1xyXG4gICAgICAgIGxvZy5kZWJ1ZyhgV29ya2VyICR7dGhpcy5fcGlkfSBkaXNjb25uZWN0ZWQuYCk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUNoaWxkVW5jYXVnaHRFeGNlcHRpb24oZXJyb3IpIHtcclxuICAgICAgICBsb2cuZGVidWcoYFdvcmtlciAke3RoaXMuX3BpZH0gdGhyb3duIGFuIHVuY2F1Z2h0IGVycm9yOiAke2Vycm9yfS5gKTtcclxuICAgICAgICB0aGlzLl9yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBPYmplY3QuYXNzaWduKHsgZXJyb3IgOiBlcnJvciB9LCB7IHBpZDogdGhpcy5fcGlkIH0pKTtcclxuICAgICAgICB0aGlzLmVtaXQoJ2V4aXQnLCB7IHBpZDogdGhpcy5fcGlkLCBleGl0Q29kZTogMSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQ2hpbGRTaWdJbnQoKSB7XHJcbiAgICAgICAgbG9nLmRlYnVnKGBXb3JrZXIgJHt0aGlzLl9waWR9IHJlY2VpdmVkIFNJR0lOVCBzaWduYWwuYCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX2luaXRpYWxpemVEZWJ1Z2dlcigpIHtcclxuICAgICAgICB0aGlzLl9kZWJ1Z2dlciA9IG5ldyBEZWJ1Z2dlcih0aGlzLl9waWQpO1xyXG4gICAgICAgIGxldCB3aGVuRGVidWdnZXJSZWFkeSA9IGRlZmVyKCk7XHJcbiAgICAgICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIC8vIGhhbmRsZSBkZWJ1Z2dlciBldmVudHNcclxuICAgICAgICB0aGlzLl9kZWJ1Z2dlci5vbigncmVhZHknLCBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgICAgLy8gcmVzdW1lIHRoZSBmaXJzdCBicmVha3BvaW50IHdoaWNoIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgYnkgdGhlIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgIGlmIChfdGhpcy5fZGVidWdnZXIgJiYgX3RoaXMuX2RlYnVnZ2VyLmNvbnRpbnVlKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5fZGVidWdnZXIuY29udGludWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3aGVuRGVidWdnZXJSZWFkeS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fZGVidWdnZXIub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKSB7XHJcblxyXG4gICAgICAgICAgICBsb2cuZXJyb3IoJ0RlYnVnZ2VyIGVycm9yIDonLCBlcnIpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5lbWl0KCdkZWJ1Z2dlcjplcnJvcicsIE9iamVjdC5hc3NpZ24oZXJyLCB7IHBpZDogdGhpcy5fcGlkIH0pKTtcclxuICAgICAgICAgICAgLy8gcmVqZWN0IHRoZSBwcm9taXNlIG9ubHkgaWYgd2UgZ290IGFuIGVycm9yIHJpZ2h0IGFmdGVyIF9kZWJ1Z2dlci5jb25uZWN0KCkgY2FsbCBiZWxvdyAtIHdlIG5lZWQgdGhpcyB0byBpbmRpY2F0ZSBkZWJ1Z2dlciBpbml0aWFsaXphdGlvbiBlcnJvclxyXG4gICAgICAgICAgICBpZiAoIXdoZW5EZWJ1Z2dlclJlYWR5LmlzUmVzb2x2ZWQpIHtcclxuICAgICAgICAgICAgICAgIHdoZW5EZWJ1Z2dlclJlYWR5LnJlamVjdChlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z2dlci5vbignYnJlYWsnLCBmdW5jdGlvbihicmVha3BvaW50RGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2RlYnVnZ2VyOmJyZWFrJywgYnJlYWtwb2ludERhdGEpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnZ2VyLm9uKCdicmVha0Vycm9yJywgYXN5bmMgZnVuY3Rpb24oYnJlYWtFcnJvcikge1xyXG5cclxuICAgICAgICAgICAgaWYgKGJyZWFrRXJyb3IgJiYgYnJlYWtFcnJvci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuX2JyZWFrcG9pbnRFcnJvcnMuaW5jbHVkZXMoYnJlYWtFcnJvci5tZXNzYWdlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fYnJlYWtwb2ludEVycm9ycy5wdXNoKGJyZWFrRXJyb3IubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdkZWJ1Z2dlcjpicmVha0Vycm9yJywgYnJlYWtFcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbG9nLmluZm8oYENvbm5lY3RpbmcgdG8gZGVidWdnZXIgb24gcG9ydCAke3RoaXMuX2RlYnVnUG9ydH0uLi5gKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVidWdnZXIuY29ubmVjdCh0aGlzLl9kZWJ1Z1BvcnQsICcxMjcuMC4wLjEnKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGxvZy5lcnJvcignQ2Fubm90IGNvbm5lY3QgdG8gdGhlIGRlYnVnZ2VyOiAnLCBlKTtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdDYW5ub3QgY29ubmVjdCB0byB0aGUgZGVidWdnZXI6ICcgKyBlLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIHdoZW5EZWJ1Z2dlclJlYWR5LnJlamVjdChtZXNzYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB3aGVuRGVidWdnZXJSZWFkeS5wcm9taXNlO1xyXG4gICAgfVxyXG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBRixPQUFBO0FBR0EsSUFBQUcsT0FBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBR0EsSUFBQUssU0FBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQ0Es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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxygen-cli",
3
- "version": "1.43.1",
3
+ "version": "1.43.2-beta.2",
4
4
  "description": "Automation framework for testing modern applications",
5
5
  "main": "./build/index.js",
6
6
  "bin": {
@@ -57,7 +57,7 @@
57
57
  "@lambdatest/node-rest-client": "1.0.5",
58
58
  "@oxygenhq/logger": "0.5.1",
59
59
  "@oxygenhq/mitmproxy-node": "1.0.1",
60
- "@oxygenhq/rp-client-javascript": "5.4.0",
60
+ "@oxygenhq/rp-client-javascript": "5.5.8-beta.1",
61
61
  "@wdio/cli": "7.30.0",
62
62
  "@wdio/devtools-service": "7.30.0",
63
63
  "@wdio/sync": "7.30.0",