@reusa/ngx-reusa-app-lib 0.0.1342 → 0.0.1343

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.
@@ -394,14 +394,20 @@ export class WeeklyCertificationComponent extends BasePage {
394
394
  'label_maxRtwDate': this.parsedMaxRTWDate,
395
395
  };
396
396
  // if the user is navigating to weeklies from interim confirmation to continue filing data will be stored
397
- const storedData = localStorage.getItem('interimConfirmationData');
398
- if (storedData) {
399
- const deencodedParams = atob((storedData));
400
- this.receivedData = JSON.parse(decodeURIComponent(deencodedParams));
401
- if (this.dynamicParam.claimantId != this.receivedData.claimantId) {
402
- this.receivedData = null;
397
+ try {
398
+ const storedData = localStorage?.getItem('interimConfirmationData');
399
+ if (storedData) {
400
+ const decoded = decodeURIComponent(atob(storedData));
401
+ this.receivedData = JSON.parse(decoded);
402
+ if (this.dynamicParam.claimantId != this.receivedData.claimantId) {
403
+ this.receivedData = null;
404
+ }
403
405
  }
404
406
  }
407
+ catch (err) {
408
+ console.error('localStorage parsing failed:', err);
409
+ this.receivedData = null;
410
+ }
405
411
  // checking data for flag to continue to file for multiple weeks
406
412
  if (this.receivedData && (this.dynamicParam.claimantId == this.receivedData.claimantId) &&
407
413
  this.receivedData.continueToFileForMultipleWeeks == true) {
@@ -410,6 +416,7 @@ export class WeeklyCertificationComponent extends BasePage {
410
416
  this.dynamicParam.nextCertificationToFileCount = this.receivedData.currentNumberFiling;
411
417
  this.dynamicParam.totalToCertify = this.receivedData.total;
412
418
  // this.numberOfMultipleWeeksDue = this.receivedData.count;
419
+ console.error("Eligibility Success");
413
420
  // if more weeks are due set the next sunday and saturday days
414
421
  if (this.wcService.weeklyCertServerData.weeksToBeCertified.length > 1) {
415
422
  this.dynamicParam.next_saturday = this.wcService.weeklyCertServerData.weeksToBeCertified[1];
@@ -463,6 +470,7 @@ export class WeeklyCertificationComponent extends BasePage {
463
470
  this.wcService.weeklyCertServerData.hidReemWorkSearchRecordCount = this.reemWorkSearchRecordCount;
464
471
  //
465
472
  this.wcService.getClaimantWorkSearchJournalRecords(this.wcService.getSaturdayDateAsString()).subscribe(res => {
473
+ console.error("WS Result");
466
474
  this.wcService.workSearchJournal = res;
467
475
  this.wcService.weeklyCertData.workSearchRecords = res.workSearchRecords;
468
476
  if (this.isME() && this.wcService.weeklyCertData.workSearchRecords) {
@@ -480,6 +488,7 @@ export class WeeklyCertificationComponent extends BasePage {
480
488
  }
481
489
  }
482
490
  openNextPage() {
491
+ console.error("ONP");
483
492
  if (this.workSearchComponent) {
484
493
  if (this.wcService.getDisplayWorkSearchScreen()) {
485
494
  this.workSearchComponent.submitForm();
@@ -496,6 +505,7 @@ export class WeeklyCertificationComponent extends BasePage {
496
505
  }
497
506
  }
498
507
  goToWeeklyCert() {
508
+ console.error("GTW");
499
509
  if (this.isMS()) {
500
510
  if (this.activeIndex == 0) {
501
511
  this.activeIndex = 1;
@@ -548,6 +558,7 @@ export class WeeklyCertificationComponent extends BasePage {
548
558
  this.wcService.weeklyCertData.available = (this.wcService.weeklyCertData.availableSeap);
549
559
  }
550
560
  this.wcService.determineQuestionniareToOpen().subscribe(res => {
561
+ console.error("qes Success");
551
562
  this.statusModel = res.statusModel;
552
563
  this.qeQueryModels = res.statusModel.qeQueryModels;
553
564
  this.wcService.weeklyCertData.potentialIssues = res.potentialIssueIds;
@@ -650,7 +661,9 @@ export class WeeklyCertificationComponent extends BasePage {
650
661
  localStorage.setItem('interimConfirmationData', data);
651
662
  }
652
663
  this.wcService.resetWeeklyCertData();
653
- window.location.reload();
664
+ setTimeout(() => {
665
+ window.location.replace(window.location.href);
666
+ }, 100);
654
667
  }
655
668
  goHome() {
656
669
  if (this.ls.isClaimant()) {
@@ -803,4 +816,4 @@ export class WeeklyCertificationComponent extends BasePage {
803
816
  args: ['weeklyQuestions']
804
817
  }] }); })();
805
818
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WeeklyCertificationComponent, { className: "WeeklyCertificationComponent", filePath: "lib\\components\\weekly-certification\\weekly-certification.component.ts", lineNumber: 32 }); })();
806
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vla2x5LWNlcnRpZmljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dlZWtseS1jZXJ0aWZpY2F0aW9uL3dlZWtseS1jZXJ0aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy93ZWVrbHktY2VydGlmaWNhdGlvbi93ZWVrbHktY2VydGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBTWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUlwSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3BCckgsd0NBQWtGOztJQUF2QywrQkFBaUI7OztJQUN4RCw4QkFBK0M7SUFDM0MsaUNBQXVDO0lBQzNDLGlCQUFNOzs7SUFFTiw4QkFBdUc7SUFDckcsOEJBQTBHLGFBQUE7SUFFNUcsaUJBQU07OztJQURDLGVBQXlEO0lBQXpELHdHQUF5RDs7O0lBTTFELG1DQUF1SCxhQUFBO0lBQzdGLFlBQXdEOztJQUFBLGlCQUFLLEVBQUE7OztJQUE3RCxlQUF3RDtJQUF4RCwyRkFB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QUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4RCxPQUFPLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzZGQWpnQlUsNEJBQTRCO29FQUE1Qiw0QkFBNEI7MkJBRTlCLDZCQUE2QjsyQkFJM0IsMEJBQTBCOzJCQUcxQixrQkFBa0I7Ozs7Ozs7OztZQ3hDL0IsMkdBQWtGLGdFQUFBLGdFQUFBLGtFQUFBOztZQUE3RCx5Q0FBb0I7WUFDL0IsZUFBZTtZQUFmLG9DQUFlO1lBSWYsZUFBNEI7WUFBNUIscURBQTRCO1lBSzVCLGVBQTZCO1lBQTdCLHNEQUE2Qjs7O2lGRHFCMUIsNEJBQTRCO2NBTHhDLFNBQVM7MkJBQ0UsMEJBQTBCO3NTQU9wQyxtQkFBbUI7a0JBRHBCLFNBQVM7bUJBQUMsNkJBQTZCO1lBS3RDLDBCQUEwQjtrQkFEekIsU0FBUzttQkFBQywwQkFBMEI7WUFJckMsZ0JBQWdCO2tCQURmLFNBQVM7bUJBQUMsa0JBQWtCO1lBR0MsZUFBZTtrQkFBNUMsU0FBUzttQkFBQyxpQkFBaUI7O2tGQVpqQiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IExpYkNvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9MaWJDb25zdGFudHMnO1xyXG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcclxuaW1wb3J0IHsgQ2xhaW1hbnRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NsYWltYW50LWNvbnRleHQvY2xhaW1hbnQtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9naW4vbG9naW4uc2VydmljZSc7XHJcbmltcG9ydCB7IEhlbHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGVscC9oZWxwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlUXVlcnlNb2RlbCB9IGZyb20gJy4uLy4uLy9tb2RlbHMvcXVlc3Rpb25uYWlyZS9RdWVzdGlvbm5haXJlUXVlcnlNb2RlbCc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBIZWxwQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0hlbHBDb25zdGFudHMnO1xyXG5pbXBvcnQgeyBXZWVrbHlDZXJ0U2VydmljZVYyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2Vla2x5LWNlcnQvd2Vla2x5LWNlcnQtdjIuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1bW1hcnlDb21wb25lbnRWMiB9IGZyb20gJy4uL3dlZWtseS1zdW1tYXJ5LXYyL3N1bW1hcnkuY29tcG9uZW50LXYyJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXJQYWdlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2Zvcm0tYnVpbGRlci9mb3JtLWJ1aWxkZXIucGFnZSc7XHJcbmltcG9ydCB7IFdvcmtTZWFyY2hRdWVzdGlvbkNvbXBvbmVudFYyIH0gZnJvbSAnLi4vd2Vla2x5LXdvcmstc2VhcmNoLXF1ZXN0aW9uLXYyL3dvcmstc2VhcmNoLXF1ZXN0aW9uLmNvbXBvbmVudC12Mic7XHJcbmltcG9ydCB7IFdlZWtseUNlcnRpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy93ZWVrbHktY2VydC93ZWVrbHktY2VydGlmaWNhdGlvbi12Mi1tb2RlbCc7XHJcbmltcG9ydCB7IFdlZWtseUNlcnRFbGlnaWJpbGl0eU1vZGVsVjIgfSBmcm9tICcuLi8uLi9tb2RlbHMvd2Vla2x5LWNlcnQvd2Vla2x5LWNlcnQtZWxpZ2liaWxpdHktdjItbW9kZWwnO1xyXG5pbXBvcnQgeyBTdGF0dXNNb2RlbCB9IGZyb20gJy4uLy4uLy9tb2RlbHMvcXVlc3Rpb25uYWlyZS9TdGF0dXNNb2RlbCc7XHJcbmltcG9ydCB7IEFja25vd2xlZGdlbWVudE1zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy93ZWVrbHktYWNrbm93bGVkZ2VtZW50LW1zL2Fja25vd2xlZGdlbWVudC1tcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBXb3JrU2VhcmNoTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvd2Vla2x5LWNlcnQvd29yay1zZWFyY2gtdjItbW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFdvcmtTZWFyY2hSZWNvcmRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy93ZWVrbHktY2VydC93b3JrLXNlYXJjaC1yZWNvcmQtdjItbW9kZWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtd2Vla2x5LWNlcnRpZmljYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93ZWVrbHktY2VydGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3dlZWtseS1jZXJ0aWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV2Vla2x5Q2VydGlmaWNhdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VQYWdlIGltcGxlbWVudHMgT25Jbml0e1xyXG5cclxuQFZpZXdDaGlsZChXb3JrU2VhcmNoUXVlc3Rpb25Db21wb25lbnRWMilcclxuICB3b3JrU2VhcmNoQ29tcG9uZW50OiBXb3JrU2VhcmNoUXVlc3Rpb25Db21wb25lbnRWMjtcclxuXHJcbiAgLy9UcmlnZ2VyaW5nIFN1Ym1pdCBpbiB0aGUgY29tcG9uZW50XHJcbiAgQFZpZXdDaGlsZChBY2tub3dsZWRnZW1lbnRNc0NvbXBvbmVudClcclxuICBhY2tub3dsZWRnZW1lbnRNc0NvbXBvbmVudDogQWNrbm93bGVkZ2VtZW50TXNDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoU3VtbWFyeUNvbXBvbmVudFYyKVxyXG4gIHN1bW1hcnlDb21wb25lbnQ6IFN1bW1hcnlDb21wb25lbnRWMjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnd2Vla2x5UXVlc3Rpb25zJykgd2Vla2x5UXVlc3Rpb25zOiBGb3JtQnVpbGRlclBhZ2VcclxuXHJcbiAgcHVibGljIHNob3dBY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0NvbmZpcm1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjb25maXJtYXRpb25EYXRhOiBhbnk7XHJcblxyXG4gIHB1YmxpYyBpdGVtczogTWVudUl0ZW1bXTtcclxuICBwdWJsaWMgY29udGVudHM6IHN0cmluZ1tdO1xyXG4gIHB1YmxpYyBhY3RpdmVJbmRleCA9IDA7XHJcbiAgcHVibGljIGVycm9yTXNnOiBzdHJpbmc7XHJcbiAgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93V29ya1NlYXJjaDogYm9vbGVhbjtcclxuICBwdWJsaWMgZHluYW1pY1BhcmFtOiBhbnk7XHJcbiAgaXNPcGVuUWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBxZVF1ZXJ5TW9kZWxzOiBRdWVzdGlvbm5haXJlUXVlcnlNb2RlbFtdO1xyXG4gIHBvdGVudGlhbElzc3VlczogbnVtYmVyW107XHJcbiAgc3RhdHVzTW9kZWw6IFN0YXR1c01vZGVsO1xyXG4gIHJlYWRPbmx5RmllbGRzOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgcmVhZE9ubHlEYXRhOiBhbnk7XHJcbiAgZGF0YVRvTG9hZDogYW55O1xyXG4gIHB1YmxpYyB3b3JrU2VhcmNoV2FpdmVkOiBhbnk7XHJcbiAgcHVibGljIHdhaXZlclJlYXNvbjogU3RyaW5nID0gbnVsbDtcclxuICBwdWJsaWMgd29ya1NlYXJjaERhdGFNczogV29ya1NlYXJjaE1vZGVsO1xyXG5cclxuICBwdWJsaWMgbXVsdGlwbGVXZWVrc0R1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93SW50ZXJpbUNvbmZpcm1hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBudW1iZXJPZk11bHRpcGxlV2Vla3NEdWU6IG51bWJlcjtcclxuICByZWNlaXZlZERhdGE6IGFueTtcclxuICBwdWJsaWMgZGlzcGxheUNvbnRpbnVlZFdlZWtzRmlsZWRIZWFkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFyc2VkTWF4UlRXRGF0ZTogYW55O1xyXG4gIHB1YmxpYyB3ZWVrbHlXb3JrUGVyZm9ybWVkUG9wdXBGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgd29ya1NlYXJjaFJlY29yZHM6IFdvcmtTZWFyY2hSZWNvcmRNb2RlbFtdO1xyXG5cclxuICBjb3VudCA9IDA7XHJcbiAgcmVlbVdvcmtTZWFyY2hSZWNvcmRDb3VudCA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgd2NTZXJ2aWNlOiBXZWVrbHlDZXJ0U2VydmljZVYyLCBwdWJsaWMgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIHV0aWw6IFV0aWxTZXJ2aWNlLCBwcml2YXRlIG5hdjogTmF2Q29udHJvbGxlcixcclxuICAgIHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplciwgcHVibGljIGhzOiBIZWxwU2VydmljZSwgcHVibGljIGxzOiBMb2dpblNlcnZpY2UsIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENsYWltYW50Q29udGV4dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGVwaXBlOkRhdGVQaXBlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLndjU2VydmljZS5yZXNldFdlZWtseUNlcnREYXRhKCk7XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy53Y1NlcnZpY2UuY2hlY2tXZWVrbHlFbGlnaWJpbGl0eSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgIHRoaXMucHJvY2Vzc1dlZWtseUNlcnRFbGlnaWJpbHR5U3VjY2VzcyhyZXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMucHJvY2Vzc1dlZWtseUNlcnRFbGlnaWJpbGl0eUVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG5cclxuICB9XHJcblxyXG4gIG9uU3RlcENoYW5nZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzV2Vla2x5Q2VydEVsaWdpYmlsdHlTdWNjZXNzKHJlczogV2Vla2x5Q2VydEVsaWdpYmlsaXR5TW9kZWxWMikge1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEgPSByZXM7XHJcbiAgICB0aGlzLmVycm9yTXNnID0gbnVsbDtcclxuICAgIHRoaXMuZ2V0TGFiZWxNYXhSVFdEYXRlKCk7XHJcbiAgICB0aGlzLmR5bmFtaWNQYXJhbSA9IHtcclxuICAgICAgJ3NhdHVyZGF5X2RhdGUnOiB0aGlzLndjU2VydmljZS5nZXRTYXR1cmRheURhdGVBc1N0cmluZygpLFxyXG4gICAgICAnc3VuZGF5X2RhdGUnOiB0aGlzLndjU2VydmljZS5nZXRTdW5kYXlEYXRlQXNTdHJpbmcoKSxcclxuICAgICAgJ21pbl9ydHdfZGF0ZSc6IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLm1pbkFsbG93ZWRSdHdEYXRlLFxyXG4gICAgICAnbWF4X3J0d19kYXRlJzogdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEubWF4QWxsb3dlZFJ0d0RhdGUsXHJcbiAgICAgICdwZW5zaW9uX2VtcGxveWVycyc6IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLnBlbnNpb25FbXBsb3llcnMsXHJcbiAgICAgICdkdWFEZWNsYXJhdGlvbic6IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmR1YURlY2xhcmF0aW9uLFxyXG4gICAgICAnY2xhaW1XZWVrRW5kRGF0ZSc6IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmNsYWltV2Vla0VuZERhdGUsXHJcbiAgICAgICdjbGFpbWFudElkJzogdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEuY2xhaW1hbnRJZCxcclxuICAgICAgJ2xhYmVsX21heFJ0d0RhdGUnOiB0aGlzLnBhcnNlZE1heFJUV0RhdGUsXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIGlmIHRoZSB1c2VyIGlzIG5hdmlnYXRpbmcgdG8gd2Vla2xpZXMgZnJvbSBpbnRlcmltIGNvbmZpcm1hdGlvbiB0byBjb250aW51ZSBmaWxpbmcgZGF0YSB3aWxsIGJlIHN0b3JlZFxyXG4gICAgY29uc3Qgc3RvcmVkRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdpbnRlcmltQ29uZmlybWF0aW9uRGF0YScpO1xyXG4gICAgaWYgKHN0b3JlZERhdGEpIHtcclxuICAgICAgY29uc3QgZGVlbmNvZGVkUGFyYW1zID0gYXRvYigoc3RvcmVkRGF0YSkpO1xyXG4gICAgICB0aGlzLnJlY2VpdmVkRGF0YSA9IEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KGRlZW5jb2RlZFBhcmFtcykpO1xyXG4gICAgICBpZih0aGlzLmR5bmFtaWNQYXJhbS5jbGFpbWFudElkICE9IHRoaXMucmVjZWl2ZWREYXRhLmNsYWltYW50SWQpXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnJlY2VpdmVkRGF0YSA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICAgLy8gY2hlY2tpbmcgZGF0YSBmb3IgZmxhZyB0byBjb250aW51ZSB0byBmaWxlIGZvciBtdWx0aXBsZSB3ZWVrc1xyXG4gICAgICBpZih0aGlzLnJlY2VpdmVkRGF0YSAmJiAodGhpcy5keW5hbWljUGFyYW0uY2xhaW1hbnRJZCA9PSB0aGlzLnJlY2VpdmVkRGF0YS5jbGFpbWFudElkKSAmJlxyXG4gICAgICAgIHRoaXMucmVjZWl2ZWREYXRhLmNvbnRpbnVlVG9GaWxlRm9yTXVsdGlwbGVXZWVrcyA9PSB0cnVlKVxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5tdWx0aXBsZVdlZWtzRHVlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb250aW51ZWRXZWVrc0ZpbGVkSGVhZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5keW5hbWljUGFyYW0ubmV4dENlcnRpZmljYXRpb25Ub0ZpbGVDb3VudCA9IHRoaXMucmVjZWl2ZWREYXRhLmN1cnJlbnROdW1iZXJGaWxpbmc7IFxyXG4gICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLnRvdGFsVG9DZXJ0aWZ5ID0gdGhpcy5yZWNlaXZlZERhdGEudG90YWw7XHJcbiAgICAgICAgLy8gdGhpcy5udW1iZXJPZk11bHRpcGxlV2Vla3NEdWUgPSB0aGlzLnJlY2VpdmVkRGF0YS5jb3VudDtcclxuXHJcbiAgICAgICAgLy8gaWYgbW9yZSB3ZWVrcyBhcmUgZHVlIHNldCB0aGUgbmV4dCBzdW5kYXkgYW5kIHNhdHVyZGF5IGRheXNcclxuICAgICAgICBpZih0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWQubGVuZ3RoPjEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljUGFyYW0ubmV4dF9zYXR1cmRheSA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLndlZWtzVG9CZUNlcnRpZmllZFsxXTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLm5leHRfc3VuZGF5ID0gdGhpcy5nZXRQcmV2aW91c1N1bmRheSh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWRbMV0pXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5udW1iZXJPZk11bHRpcGxlV2Vla3NEdWUgPSB0aGlzLnJlY2VpdmVkRGF0YS50b3RhbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gXHJcbiAgICAgIC8vIGlmIGNsYWltYW50IGZpbGluZyBhbmQgaGFzIG11bHRpcGxlIGNlcnRpZmljYXRpb25zIGR1ZVxyXG4gICAgICAvLyB3aWxsIGdvIHRocm91Z2ggaW50ZXJpbSBwcm9jZXNzIHVudGlsIGZpbmFsIGxhdGVzdCB3ZWVrIGZpbGVkXHJcbiAgICAgIGVsc2UgaWYodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkLmxlbmd0aD4xKVxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJPZk11bHRpcGxlV2Vla3NEdWUgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWQubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5keW5hbWljUGFyYW0ubnVtYmVyT2ZNdWx0aXBsZVdlZWtzRHVlID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkLmxlbmd0aDtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5uZXh0X3NhdHVyZGF5ID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkWzFdO1xyXG4gICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLm5leHRfc3VuZGF5ID0gdGhpcy5nZXRQcmV2aW91c1N1bmRheSh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWRbMV0pXHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgaWYgKExpYkNvbnN0YW50cy5sZWdhY3lNZW51ID09ICdmYWxzZScpIHtcclxuICAgICAgdGhpcy5ocy5zaG93RGlhbG9nSWZQcmVmZXJlbmNlQWxsb3coSGVscENvbnN0YW50cy5XRUVLTFlfSEVMUCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVIaWRkZW5GaWVsZHMocmVzKTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhRm9yV29ya1NlYXJjaEZvcm0oKTtcclxuICAgIGlmICh0aGlzLmlzTVMoKSkge1xyXG4gICAgICB0aGlzLml0ZW1zID0gW1xyXG4gICAgICAgIHsgbGFiZWw6ICcnLCBjb21tYW5kOiAoKSA9PiB7IHRoaXMub25TdGVwQ2hhbmdlKDApOyB9IH0sXHJcbiAgICAgICAgeyBsYWJlbDogJycsIGNvbW1hbmQ6ICgpID0+IHsgdGhpcy5vblN0ZXBDaGFuZ2UoMSk7IH0gfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgY29tbWFuZDogKCkgPT4geyB0aGlzLm9uU3RlcENoYW5nZSgyKTsgfSB9XHJcbiAgICAgIF07XHJcbiAgICB9IFxyXG5cclxuICAgIHRoaXMuY29udGVudHMgPSBbJyAgIFdvcmsgU2VhcmNoIEFjdGl2aXRpZXMnLCAnICAgV2Vla2x5IFF1ZXN0aW9ucycsICcgICBBY2tub3dsZWRnZSAmIENlcnRpZnknXTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsTWF4UlRXRGF0ZSgpe1xyXG4gICAgdGhpcy5wYXJzZWRNYXhSVFdEYXRlID0gbmV3IERhdGUodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEubWF4QWxsb3dlZFJ0d0RhdGUpO1xyXG4gICAgdGhpcy5wYXJzZWRNYXhSVFdEYXRlLnNldERhdGUodGhpcy5wYXJzZWRNYXhSVFdEYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgdGhpcy5wYXJzZWRNYXhSVFdEYXRlPXRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKHRoaXMucGFyc2VkTWF4UlRXRGF0ZSwgJ01NL2RkL3l5eXknKTtcclxuICB9XHJcblxyXG4gIHByb2Nlc3NXZWVrbHlDZXJ0RWxpZ2liaWxpdHlFcnJvcihlcnI6IGFueSkge1xyXG4gICAgaWYgKGVyci5tc2cgIT0gbnVsbCAmJiBlcnIubXNnWzBdID09ICdObyBXZWVrcyBhcmUgcGVuZGluZyB0byBiZSBmaWxlZC4nKSB7XHJcbiAgICAgIHRoaXMudXRpbC5nZXRTdGF0ZSgpPT09J0NUJyA/IHRoaXMubmF2Lm5hdmlnYXRlUm9vdChcIndlZWtseS1ub3QtZWxpZ2libGVcIikgOiB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCJ3b3JrLXNlYXJjaC1qb3VybmFsXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lcnJvck1zZyA9IGVyci5tc2c7XHJcbiAgICB9XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YSA9IG51bGw7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZURhdGFGb3JXb3JrU2VhcmNoRm9ybSgpIHtcclxuICAgIHRoaXMud29ya1NlYXJjaFdhaXZlZCA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmlzV29ya1NlYXJjaFdhaXZlZDtcclxuICAgIHRoaXMud2FpdmVyUmVhc29uID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2FpdmVyUmVhc29uO1xyXG4gICAgLy9SRUVNIEFDVElWSVRZIFRZUEUgQ09VTlQgQVNTSUdOTUVOVFxyXG4gICAgdGhpcy5yZWVtV29ya1NlYXJjaFJlY29yZENvdW50ID0gTnVtYmVyKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhPy5oaWRSZWVtV29ya1NlYXJjaFJlY29yZENvdW50ID8/IDApO1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEuaGlkUmVlbVdvcmtTZWFyY2hSZWNvcmRDb3VudCA9IHRoaXMucmVlbVdvcmtTZWFyY2hSZWNvcmRDb3VudDtcclxuICAgIC8vXHJcbiAgICB0aGlzLndjU2VydmljZS5nZXRDbGFpbWFudFdvcmtTZWFyY2hKb3VybmFsUmVjb3Jkcyh0aGlzLndjU2VydmljZS5nZXRTYXR1cmRheURhdGVBc1N0cmluZygpKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud29ya1NlYXJjaEpvdXJuYWwgPSByZXM7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaFJlY29yZHMgPSByZXMud29ya1NlYXJjaFJlY29yZHM7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNNRSgpICYmIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtTZWFyY2hSZWNvcmRzKSB7XHJcbiAgICAgICAgICBjb25zdCBoYXNTdGFydGVkV29ya2luZyA9ICh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoUmVjb3JkcyA/PyBbXSkuc29tZShcclxuICAgICAgICAgICAgcmVjID0+IHJlYz8uc2VhcmNoUmVzdWx0ID09PSAnU1RXSydcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZihoYXNTdGFydGVkV29ya2luZyl7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzV29ya2VkRnVsbFRpbWVPclN0YXJ0ZWRXb3JraW5nU3RhdHVzKHRydWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnIgPT4ge1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndvcmtTZWFyY2hKb3VybmFsID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMuaXNNUygpKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3Blbk5leHRQYWdlKCkge1xyXG4gICAgaWYgKHRoaXMud29ya1NlYXJjaENvbXBvbmVudCkge1xyXG4gICAgICBpZiAodGhpcy53Y1NlcnZpY2UuZ2V0RGlzcGxheVdvcmtTZWFyY2hTY3JlZW4oKSkge1xyXG4gICAgICAgIHRoaXMud29ya1NlYXJjaENvbXBvbmVudC5zdWJtaXRGb3JtKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nb1RvV2Vla2x5Q2VydCgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMud29ya1NlYXJjaFdhaXZlZCkge1xyXG4gICAgICB0aGlzLmdvVG9XZWVrbHlDZXJ0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdvVG9XZWVrbHlDZXJ0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb1RvV2Vla2x5Q2VydCgpIHtcclxuICAgIGlmICh0aGlzLmlzTVMoKSkge1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA9PSAwKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IDE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHRoaXMud2Vla2x5UXVlc3Rpb25zKSB7XHJcbiAgICAgICAgICB0aGlzLmNvdW50ID0gdGhpcy5jb3VudCArIDE7XHJcbiAgICAgICAgICBpZih0aGlzLmNvdW50ID4gMSAmJiB0aGlzLmxzLmlzQ3NyKCkpe1xyXG4gICAgICAgICAgICB0aGlzLndlZWtseVF1ZXN0aW9ucy5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmUucXVlc3Rpb25uYWlyZUZvcm0uZm9ybS5jb250cm9sc1snaGlkQ3NyRmlyc3RQYXNzJ10uc2V0VmFsdWUoJ1knKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMud2Vla2x5UXVlc3Rpb25zLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLndlZWtseVF1ZXN0aW9ucykge1xyXG4gICAgICAgIHRoaXMud2Vla2x5UXVlc3Rpb25zLnN1Ym1pdFF1ZXN0aW9ubmFpcmUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuIFxyXG4gIHN1Y2Nlc3Mod2Vla2x5UXVlc3Rpb25zUmVzcG9uc2UpIHtcclxuICAgIGNvbnN0IGZvcm1EYXRhOiBXZWVrbHlDZXJ0aWZpY2F0aW9uTW9kZWwgPVxyXG4gICAgICBKU09OLnBhcnNlKHdlZWtseVF1ZXN0aW9uc1Jlc3BvbnNlLnNjcmVlblF1ZXN0aW9ubmFpcmVEYXRhWzBdKTtcclxuICAgIGZvcm1EYXRhLndvcmtTZWFyY2hSZWNvcmRzID0gdGhpcy53Y1NlcnZpY2UuZ2V0V29ya1NlYXJjaFJlY29yZHMoKTtcclxuICAgIGZvcm1EYXRhLndvcmtTZWFyY2hEYXRhID0gdGhpcy53Y1NlcnZpY2UuZ2V0V29ya1NlYXJjaERhdGEoKTtcclxuICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhID0gZm9ybURhdGE7XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5jbGFpbVdlZWtFbmREYXRlID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla1RvQ2VydGlmeTtcclxuICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmhpZEluQXBwcm92ZWRUcmFpbmluZyA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmhpZEluQXBwcm92ZWRUcmFpbmluZztcclxuICAgIHRoaXMub3BlbkZvbGxvd3VwUXVlc3Rpb25zKCk7XHJcbiAgfVxyXG5cclxuICBvcGVuRm9sbG93dXBRdWVzdGlvbnMoKSB7XHJcbiAgICB0aGlzLnV0aWwuc2hvd0xvYWRlcigpO1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuc2hvd1dvcmtTZWFyY2hTY3JlZW4gPSB0aGlzLndjU2VydmljZS5nZXREaXNwbGF5V29ya1NlYXJjaFNjcmVlbigpO1xyXG4gICAgaWYgKHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzQ291bnQoKSA+IDApIHtcclxuICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEuaXNXb3JrU2VhcmNoUGVyZm9ybWVkRmxhZyA9ICcxJztcclxuICAgIH0gZWxzZSBpZiAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5pc1dvcmtTZWFyY2hQZXJmb3JtZWRGbGFnID0gJzAnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLndjU2VydmljZS5nZXRFbXBsb3llclJlY29yZHNDb3VudCgpID4gMCkge1xyXG4gICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrUGVyZm9ybWVkID0gJ1knO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1BlcmZvcm1lZCA9ICdOJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrUGVyZm9ybWVkU2VhcE5vdFBhcnR0aW1lID0gKHRoaXMud2NTZXJ2aWNlLmdldEVtcGxveWVyUmVjb3Jkc0NvdW50KCkgPiAwICYmIHRoaXMud2NTZXJ2aWNlLmdldEhpZElzU2VhcFBhcnRpY2lwYW50KCkpID8gJ1knIDogJ04nO1xyXG5cclxuICAgIGlmKHRoaXMuaXNNUygpICYmIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmhpZElzU2VhcFBhcnRpY2lwYW50PT0nWScpe1xyXG4gICAgICAvL0RvbmUgdG8gaGFuZGxlIG5ldyB2ZXJiaWFnZSBmb3Igd29ya1BlcmZvcm1lZCBmb3IgU2VhcCBQYXJ0aWNpcGFudHMuXHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrUGVyZm9ybWVkID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1BlcmZvcm1lZFNlYXBOb3RQYXJ0dGltZTtcclxuXHJcbiAgICAvL0RvbmUgdG8gaGFuZGxlIG5ldyB2ZXJiaWFnZSBmb3IgU0VBUCBQYXJ0aWNpcGFudHMgZm9yIGF2YWlsYWJsZSBxdWVzdGlvbi5cclxuICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmF2YWlsYWJsZSA9ICh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5hdmFpbGFibGVTZWFwKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLndjU2VydmljZS5kZXRlcm1pbmVRdWVzdGlvbm5pYXJlVG9PcGVuKCkuc3Vic2NyaWJlKFxyXG4gICAgICByZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RhdHVzTW9kZWwgPSByZXMuc3RhdHVzTW9kZWw7XHJcbiAgICAgICAgdGhpcy5xZVF1ZXJ5TW9kZWxzID0gcmVzLnN0YXR1c01vZGVsLnFlUXVlcnlNb2RlbHM7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEucG90ZW50aWFsSXNzdWVzID0gcmVzLnBvdGVudGlhbElzc3VlSWRzO1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLnBlbnNpb25EZW5pZWRQb3RlbnRpYWxJc3N1ZXMgPSByZXMucGVuc2lvbkRlbmllZFBvdGVudGlhbElzc3VlcztcclxuICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5ib251c1BheVBvdGVudGlhbElzc3VlcyA9IHJlcy5ib251c1BheVBvdGVudGlhbElzc3VlcztcclxuICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5vdGhlclBheVBvdGVudGlhbElzc3VlcyA9IHJlcy5vdGhlclBheVBvdGVudGlhbElzc3VlcztcclxuICAgICAgICBpZiAodGhpcy5zdGF0dXNNb2RlbC5zaG93UWUpIHtcclxuICAgICAgICAgIHRoaXMuaXNPcGVuUWUgPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmVtcGxveWVyRGV0YWlsc0xpc3QgIT0gbnVsbFxyXG4gICAgICAgICAgICAmJiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5lbXBsb3llckRldGFpbHNMaXN0Lmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgJiYgcmVzLnRlbXBFbXBsb3llclNlcFBvdGVudGlhbElzc3VlTWFwICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEudGVtcEVtcGxveWVyU2VwUG90ZW50aWFsSXNzdWVNYXAgPSByZXMudGVtcEVtcGxveWVyU2VwUG90ZW50aWFsSXNzdWVNYXA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd0Fja25vd2xlZGdlbWVudCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnIgPT4ge1xyXG4gICAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoZXJyLm1zZyk7XHJcbiAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9wZW5TdW1tYXJ5UG9zdFF1ZXN0aW9ubmFpcmVzKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCAmJiBldmVudC5zaXplID4gMCkge1xyXG4gICAgICBpZiAoZXZlbnQuaGFzKDkwMDEpKSB7XHJcbiAgICAgICAgbGV0IHdvcmtTZWFyY2hSZWFzb24gPSBldmVudC5nZXQoOTAwMSkucmVhc29uSW5hZGVxdWF0ZVdvcmtTZWFyY2g7XHJcbiAgICAgICAgaWYodGhpcy5pc0NUKCkpe1xyXG4gICAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEucmVhc29uSW5hZGVxdWF0ZVdvcmtTZWFyY2ggPSB3b3JrU2VhcmNoUmVhc29uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEuaXNXb3JrU2VhcmNoUGVyZm9ybWVkRmxhZyA9PSAnMSdcclxuICAgICAgICAgICYmIHRoaXMud2NTZXJ2aWNlLmNoZWNrSWZJbmFkZXF1YXRlV29ya1NlYXJjaFF1ZXN0aW9ubmFpcmVTaG91bGRCZU9wZW5lZCgpXHJcbiAgICAgICAgICAmJiB0aGlzLmlzTVMoKSkge1xyXG4gICAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEucmVhc29uSW5hZGVxdWF0ZVdvcmtTZWFyY2ggPSB3b3JrU2VhcmNoUmVhc29uO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEuaXNXb3JrU2VhcmNoUGVyZm9ybWVkRmxhZyA9PSAnMCcpIHtcclxuICAgICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtTZWFyY2hEYXRhLmV4cGxhaW5XaHlEaWROb3RMb29rRm9yV29yayA9IHdvcmtTZWFyY2hSZWFzb247XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChldmVudC5oYXMoMTc5KSkge1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmFkbWluTGVhdmVEZXRhaWxzID0gZXZlbnQuZ2V0KDE3OSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV2ZW50Lmhhcyg5MDAyKSkge1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmFkbWluTGVhdmVEZXRhaWxzID0gZXZlbnQuZ2V0KDkwMDIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93QWNrbm93bGVkZ2VtZW50KCk7XHJcbiAgICB0aGlzLmlzT3BlblFlID0gZmFsc2U7XHJcbiAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gIH1cclxuXHJcbiAgb25RZUNsb3NlKCkge1xyXG4gICAgdGhpcy5pc09wZW5RZSA9IGZhbHNlO1xyXG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICB9XHJcblxyXG4gIGdvVG9TdW1tYXJ5KCkge1xyXG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IDE7XHJcbiAgfVxyXG5cclxuICBjbG9zZUFjaygpIHtcclxuICAgIHRoaXMuc2hvd0FjayA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZmlsZVdlZWtseUNlcnREb25lKGV2ZW50KSB7XHJcbiAgICB0aGlzLnNob3dBY2sgPSBmYWxzZTtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uRGF0YSA9IGV2ZW50O1xyXG4gICAgaWYodGhpcy5pc01TKCkgJiYgdGhpcy5tdWx0aXBsZVdlZWtzRHVlID09IHRydWUgJiYgdGhpcy5yZWNlaXZlZERhdGEpXHJcbiAgICB7XHJcbiAgICAgIC8vIGlmIHRoaXMgaXMgdGhlIGxhc3QgdGltZSBmaWxpbmcgd2Vla2xpZXMgdGhyb3VnaCBpbnRlcmltIGNvbmZpcm1hdGlvbiBmbG93IFxyXG4gICAgICBpZih0aGlzLnJlY2VpdmVkRGF0YS5jdXJyZW50TnVtYmVyRmlsaW5nID09IHRoaXMucmVjZWl2ZWREYXRhLnRvdGFsICYmIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLndlZWtzVG9CZUNlcnRpZmllZC5sZW5ndGg9PTEpXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnNob3dJbnRlcmltQ29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPSBmYWxzZTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnaW50ZXJpbUNvbmZpcm1hdGlvbkRhdGEnKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBpZiBtb3JlIHdlZWtzIHJlbWFpbiBmb3Igd2Vla2xpZXMgdGhyb3VnaCBpbnRlcmltIGNvbmZpcm1hdGlvbiBmbG93IFxyXG4gICAgICBlbHNlIGlmICh0aGlzLnJlY2VpdmVkRGF0YS5jb3VudCA8PSB0aGlzLnJlY2VpdmVkRGF0YS50b3RhbCAgJiYgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkLmxlbmd0aD4xKVxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5zaG93SW50ZXJpbUNvbmZpcm1hdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gLy8gaWYgZmlyc3QgdGltZSBmaWxpbmcgd2Vla2xpZXMgdGhyb3VnaCBpbnRlcmltIGNvbmZpcm1hdGlvbiBmbG93XHJcbiAgICBpZih0aGlzLmlzTVMoKSAmJiB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPT0gdHJ1ZSAmJiAhdGhpcy5yZWNlaXZlZERhdGEpXHJcbiAgICB7XHJcbiAgICAgIHRoaXMuc2hvd0ludGVyaW1Db25maXJtYXRpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCghdGhpcy5pc01TKCkpIHx8ICh0aGlzLmlzTVMoKSAmJiB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPT0gZmFsc2UpKSB7XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGNsb3NlQ29uZmlybWF0aW9uUG9wdXAoKSB7XHJcbiAgICBpZih0aGlzLmlzTVMoKSAmJiB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPT0gdHJ1ZSlcclxuICAgIHtcclxuICAgICAgdGhpcy5zaG93SW50ZXJpbUNvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy53Y1NlcnZpY2UucmVzZXRXZWVrbHlDZXJ0RGF0YSgpO1xyXG5cclxuICAgIC8vIFRoaXMgaXMgYWRkZWQgYXMgdGhlIG5hdmlnYXRpb24gd2FzIHRvbyBxdWljayBmb3IgdGhlIGNvbmZpcm1hdGlvbiB0byBjbG9zZSBpbiB0aW1lLCBsZWF2aW5nIGNvbmZpcm1hdGlvbiBvcGVuLCBldmVuIHRob3VnaCB0aGUgcGFnZSB3YXMgdXBkYXRlZCBpbiBiYWNrZW5kXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZ29Ib21lKCksIDEwMCk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvV2Vla2xpZXMoZGF0YTogYW55KSB7XHJcbiAgICBpZih0aGlzLmlzTVMoKSAmJiB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPT0gdHJ1ZSlcclxuICAgIHtcclxuICAgICAgdGhpcy5zaG93SW50ZXJpbUNvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2ludGVyaW1Db25maXJtYXRpb25EYXRhJywgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy53Y1NlcnZpY2UucmVzZXRXZWVrbHlDZXJ0RGF0YSgpO1xyXG5cclxuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ29Ib21lKCkge1xyXG4gICAgaWYgKHRoaXMubHMuaXNDbGFpbWFudCgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJ3dlbGNvbWU/d2NEb25lPXRydWUnKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5scy5pc0NzcigpKSB7XHJcbiAgICAgIHRoaXMudXRpbC5vcGVuUGFnZUJ5Q29udGV4dFJvb3RXaXRoRGF0YSh0aGlzLnV0aWwuZ2V0U2VjdXJpdHlBcHBDb250ZXh0Um9vdCgpLCBcInNlYXJjaC1zc25cIiwgdGhpcy5jb250ZXh0U2VydmljZS5nZXRVbkVuY29kZWRTc24oKSwgdGhpcy5uYXYpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL3dlbGNvbWUnKTtcclxuICAgIH1cclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgfVxyXG5cclxuICBzaG93QWNrbm93bGVkZ2VtZW50KCkge1xyXG4gICAgaWYgKHRoaXMuc3VtbWFyeUNvbXBvbmVudCkge1xyXG4gICAgICB0aGlzLnN1bW1hcnlDb21wb25lbnQuc3VibWl0Rm9ybSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuaXNNUygpKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IDI7XHJcbiAgICAgICAgaWYgKHRoaXMuYWNrbm93bGVkZ2VtZW50TXNDb21wb25lbnQpIHtcclxuICAgICAgICAgIHRoaXMuYWNrbm93bGVkZ2VtZW50TXNDb21wb25lbnQuc3VibWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2hvd0FjayA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblFlU3VjY2VzcygpIHtcclxuICAgIHRoaXMuc2hvd0FjayA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpb25WaWV3V2lsbExlYXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ocy5zZXRIZWxwQXZhaWxhYmlsaXR5KGZhbHNlKTtcclxuICB9XHJcblxyXG4gIGlvblZpZXdEaWRFbnRlcigpIHtcclxuICAgIHRoaXMud2NTZXJ2aWNlLnJlc2V0V2Vla2x5Q2VydERhdGEoKTtcclxuICAgIHRoaXMuaHMuc2V0SGVscEF2YWlsYWJpbGl0eSh0cnVlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yKGVycikge1xyXG4gICAgdGhpcy5lcnJvck1zZyA9IGVyci5tc2c7XHJcbiAgfVxyXG5cclxuICBoYXNIaXJlZFN0YXR1cyhzdGF0dXM6IGJvb2xlYW4pIHtcclxuICAgIC8vVE9ETzogVXBkYXRlIHRoaXMgZm9yIHJldHVybiB0byB3b3JrIGZvciBoaXJlZCBjYXNlc1xyXG4gICAgIGlmICghdGhpcy5pc01FKCkpIHtcclxuICAgICAgdGhpcy5yZWFkT25seUZpZWxkcyA9IHN0YXR1cyA/IFsncmV0dXJuaW5nVG9Xb3JrJ10gOiBudWxsO1xyXG4gICAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgICAgdGhpcy5yZWFkT25seURhdGEgPSB7IHJldHVybmluZ1RvV29yazogXCJZXCJ9O1xyXG4gICAgICB9XHJcbiAgICB9IFxyXG4gIH1cclxuXHJcbiAgaGFzV29ya2VkRnVsbFRpbWVPclN0YXJ0ZWRXb3JraW5nU3RhdHVzKHN0YXR1czogYm9vbGVhbil7XHJcbiAgICBjb25zdCBmb3JtID0gdGhpcy53ZWVrbHlRdWVzdGlvbnM/LnF1ZXN0aW9ubmFpcmU/LnF1ZXN0aW9ubmFpcmU/LnF1ZXN0aW9ubmFpcmVGb3JtPy5mb3JtO1xyXG4gICAgaWYodGhpcy5pc01FKCkpe1xyXG4gICAgICBpZihzdGF0dXMgJiYgZm9ybSl7XHJcbiAgICAgICAgdGhpcy5yZWFkT25seUZpZWxkcyA9IHN0YXR1cyA/IFsnd29ya1BlcmZvcm1lZCddOiBudWxsO1xyXG4gICAgICAgIHRoaXMucmVhZE9ubHlEYXRhID0ge3dvcmtQZXJmb3JtZWQ6IFwiWVwifTtcclxuICAgICAgICBmb3JtLmdldCgnd29ya1BlcmZvcm1lZCcpPy5zZXRWYWx1ZSgnWScpO1xyXG4gICAgICB9IGVsc2V7XHJcbiAgICAgICAgdGhpcy5yZWFkT25seUZpZWxkcyA9IHN0YXR1cyA/IFsnd29ya1BlcmZvcm1lZCddOiBudWxsO1xyXG4gICAgICAgIHRoaXMucmVhZE9ubHlEYXRhID0ge3dvcmtQZXJmb3JtZWQ6IG51bGx9O1xyXG4gICAgICAgIGlmKGZvcm0pe1xyXG4gICAgICAgICAgZm9ybS5nZXQoJ3dvcmtQZXJmb3JtZWQnKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUhpZGRlbkZpZWxkcyhyZXM6IFdlZWtseUNlcnRFbGlnaWJpbGl0eU1vZGVsVjIpIHtcclxuXHJcbiAgICB0aGlzLnJlYWRPbmx5RmllbGRzID0gWydoaWRTaG93UmV0dXJuVG9Xb3JrUXVlc3Rpb24nLCAnaGlkU2hvd1JldHVybmVkVG9Xb3JrUXVlc3Rpb24nLCAnaGlkU2hvd05ld1BlbnNpb25RdWVzdGlvbicsICdoaWRTaG93UGVuc2lvbkNoYW5nZWRRdWVzdGlvbicsICdoaWRTaG93RGlzbWlzc2FsUGF5Q2hhbmdlZFF1ZXN0aW9uJywgJ2hpZFBhcnRUaW1lRW1wbG95ZXJBdmFpbGFibGUnLCAnaGlkUmVtdW5lcmF0aW9uSXNzdWVFeGlzdHMnLCAnaGlkSXNFbGlnaWJsZUZvckR1YScsICdjbGFpbWFudElkJywgJ2NsYWltV2Vla0VuZERhdGUnLCdkdWFBcHBJZCcsJ2hpZFBhcnRpYWxDbGFpbUVtcGxveW1lbnRGbGFnJywnaGlkV29ya1NlYXJjaEF1ZGl0RmxhZyddO1xyXG4gICAgdGhpcy5yZWFkT25seURhdGEgPSB7IGhpZFNob3dSZXR1cm5Ub1dvcmtRdWVzdGlvbjogcmVzLmhpZFNob3dSZXR1cm5Ub1dvcmtRdWVzdGlvbiwgaGlkU2hvd1JldHVybmVkVG9Xb3JrUXVlc3Rpb246IHJlcy5oaWRTaG93UmV0dXJuZWRUb1dvcmtRdWVzdGlvbiwgaGlkU2hvd05ld1BlbnNpb25RdWVzdGlvbjogcmVzLmhpZFNob3dOZXdQZW5zaW9uUXVlc3Rpb24sIGhpZFNob3dQZW5zaW9uQ2hhbmdlZFF1ZXN0aW9uOiByZXMuaGlkU2hvd1BlbnNpb25DaGFuZ2VkUXVlc3Rpb24sIGhpZFNob3dEaXNtaXNzYWxQYXlDaGFuZ2VkUXVlc3Rpb246IHJlcy5oaWRTaG93RGlzbWlzc2FsUGF5Q2hhbmdlZFF1ZXN0aW9uLCBoaWRQYXJ0VGltZUVtcGxveWVyQXZhaWxhYmxlOiByZXMuaGlkUGFydFRpbWVFbXBsb3llckF2YWlsYWJsZSwgaGlkUmVtdW5lcmF0aW9uSXNzdWVFeGlzdHM6IHJlcy5oaWRSZW11bmVyYXRpb25Jc3N1ZUV4aXN0cywgaGlkSXNFbGlnaWJsZUZvckR1YTogcmVzLmhpZElzRWxpZ2libGVGb3JEdWEsIGNsYWltYW50SWQ6IHJlcy5jbGFpbWFudElkLCBjbGFpbVdlZWtFbmREYXRlOiByZXMuY2xhaW1XZWVrRW5kRGF0ZSwgZHVhQXBwSWQ6cmVzLmR1YUFwcElkLCBoaWRQYXJ0aWFsQ2xhaW1FbXBsb3ltZW50RmxhZzogcmVzLmhpZFBhcnRpYWxDbGFpbUVtcGxveW1lbnRGbGFnLCBoaWRXb3JrU2VhcmNoQXVkaXRGbGFnOiByZXMuaGlkV29ya1NlYXJjaEF1ZGl0RmxhZyB9O1xyXG5cclxuICB9XHJcblxyXG5cclxuXHJcbiAgbG9hZENvbXBsZXRlKGV2ZW50KSB7XHJcbiAgICAgLyogRm9yIE1TLCB0aGUgYmFjayBidXR0b24gbmVlZHMgdG8gbG9hZCBjb21wbGV0ZSBmaWxsZWQgZGF0YSBhbG9uZyB3aXRoIGVsaWdpYmlsaXR5IGRhdGEuXHJcbiAgICAgRm9yIG90aGVyIHN0YXRlcywgZXZlcnl0aGluZyBpcyBpbiBwb3B1cCwgc28gb24gY2xvc2UsIGRhdGEgc3RpbGwgaXMgdGhlcmUgaW4gbW9kZWwuXHJcbiAgICAgTmVlZHMgd29yayAqL1xyXG4gICAvKiAgaWYgKHRoaXMuaXNNUygpICYmIHRoaXMuYWN0aXZlSW5kZXggPT0gMSAmJiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YSkge1xyXG4gICAgICBcclxuICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud2Vla2x5Y2VydEVsaWdpYmlsaXR5TW9kZWxWMiA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhO1xyXG4gICAgICB0aGlzLmRhdGFUb0xvYWQgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YTtcclxuICAgICAgdGhpcy5oYW5kbGVIaWRkZW5GaWVsZHModGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEpO1xyXG4gICAgfSBlbHNle1xyXG4gICAgICB0aGlzLmRhdGFUb0xvYWQgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YTtcclxuICAgIH0gKi9cclxuICAgICAgdGhpcy5kYXRhVG9Mb2FkID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGE7XHJcbiAgICAvKiogTkVXOiBGb3IgTG9hZGluZyB0aGUgUHJlLXNlbGVjdGVkIHF1ZXN0aW9uIGluIGNhc2Ugb2YgU3RhcnRlZCBXb3JraW5nKFNUV0spIGZvciBXUyBSZWNvcmRzIGFuZCBzZXR0aW5nIHRoZSB2YWx1ZSBZIGZvciB3b3JrUGVyZm9ybWVkICovXHJcbiAgICAgIHRoaXMud29ya1NlYXJjaFJlY29yZHMgPSB0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoUmVjb3JkcygpO1xyXG4gICAgaWYgKHRoaXMuaXNNRSgpICYmIHRoaXMud29ya1NlYXJjaFJlY29yZHMpIHtcclxuICAgICAgY29uc3QgaGFzU3RhcnRlZFdvcmtpbmcgPSAodGhpcy53b3JrU2VhcmNoUmVjb3JkcyA/PyBbXSkuc29tZShcclxuICAgICAgICByZWMgPT4gcmVjPy5zZWFyY2hSZXN1bHQgPT09ICdTVFdLJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoaGFzU3RhcnRlZFdvcmtpbmcpIHtcclxuICAgICAgICB0aGlzLmRhdGFUb0xvYWQud29ya1BlcmZvcm1lZCA9IFwiWVwiO1xyXG4gICAgICAgIHRoaXMucmVhZE9ubHlGaWVsZHMgPSBbJ3dvcmtQZXJmb3JtZWQnXTtcclxuICAgICAgICB0aGlzLnJlYWRPbmx5RGF0YSA9IHsgd29ya1BlcmZvcm1lZDogXCJZXCIgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqIEVORCAqL1xyXG4gICAgICBpZiAodGhpcy53Y1NlcnZpY2UuZ2V0V29ya1NlYXJjaFJlY29yZHNDb3VudFdpdGhIaXJlZFN0YXR1cygpID4gMCkgeyAgICAgICAgXHJcbiAgICAgICAgdGhpcy5oYXNIaXJlZFN0YXR1cyh0cnVlKTtcclxuICAgICAgICB0aGlzLmRhdGFUb0xvYWQucmV0dXJuaW5nVG9Xb3JrID0gXCJZXCI7XHJcbiAgICAgIH1cclxuICAgICAgLy9XZWVrbHkgRWFybmluZ3MgcmVtaW5kZXIgcG9wdXAgLSBzaG93biBldmVyeSB3ZWVrIGV4Y2VwdCBmb3Igd2FpdGluZyBwZXJpb2Qgd2Vla1xyXG4gICAgICBpZih0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5pc1dhaXRpbmdXZWVrU2VydmVkID09PSB0cnVlKXtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLndlZWtseVdvcmtQZXJmb3JtZWRQb3B1cEZsYWcgPSB0cnVlKSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGdldFByZXZpb3VzU3VuZGF5KGlucHV0RGF0ZSlcclxuICB7XHJcbiAgICBsZXQgdXRjRGF0ZSA9IG5ldyBEYXRlKGlucHV0RGF0ZSArIFwiVDAwOjAwOjAwWlwiKTtcclxuICAgIHV0Y0RhdGUuc2V0VVRDRGF0ZSh1dGNEYXRlLmdldFVUQ0RhdGUoKSAtIDYpO1xyXG4gICAgbGV0IHllYXIgPSB1dGNEYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XHJcbiAgICBsZXQgbW9udGggPSBTdHJpbmcodXRjRGF0ZS5nZXRVVENNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgIGxldCBkYXkgPSBTdHJpbmcodXRjRGF0ZS5nZXRVVENEYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YDtcclxuICB9XHJcblxyXG59XHJcbiIsIjxhcHAtZGFzaGJvYXJkLWhlbHAgKm5nSWY9XCJocy5pc1Nob3dpbmcoKVwiIFthY3RpdmVJbmRleF09XCI0XCI+PC9hcHAtZGFzaGJvYXJkLWhlbHA+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgZXJyb3JNc2dcIiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tcGFkZGluZy10b3BcIiBzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O1wiPlxyXG4gICAgICA8aW9uLWljb24gbmFtZT1cImFsZXJ0LWNpcmNsZS1vdXRsaW5lXCIgc3R5bGU9XCJmb250LXNpemU6IDYwcHg7IGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTtcIj48L2lvbi1pY29uPlxyXG4gICAgICA8ZGl2IFtpbm5lckhUTUxdPVwic2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGVycm9yTXNnKVwiIHN0eWxlPVwiY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIpOyBmb250LXNpemU6IGxhcmdlcjtcIiBjbGFzcz1cImlvbi10ZXh0LWNlbnRlciBpb24tcGFkZGluZ1wiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIWVycm9yTXNnXCI+XHJcbiAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIG9mZnNldFhsPVwiMVwiICpuZ0lmPVwiIWlzTVMoKSB8fCAoaXNNUygpICYmICFtdWx0aXBsZVdlZWtzRHVlICYmICFkaXNwbGF5Q29udGludWVkV2Vla3NGaWxlZEhlYWRpbmcpXCI+XHJcbiAgICAgICAgICAgIDxoMSBjbGFzcz1cImFwcC1oZWFkaW5nXCI+e3snd2Vla2xpZXMudjIudGFzay5oZWFkaW5nJyB8IHRyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfX08L2gxPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIG9mZnNldFhsPVwiMVwiICpuZ0lmPVwiKGlzTVMoKSAmJiBtdWx0aXBsZVdlZWtzRHVlICYmICFkaXNwbGF5Q29udGludWVkV2Vla3NGaWxlZEhlYWRpbmcpXCI+XHJcbiAgICAgICAgICAgIDxoMSBjbGFzcz1cImFwcC1oZWFkaW5nXCI+e3snd2Vla2xpZXMudjIudGFzay5tdWx0aXBsZS53ZWVrcy5oZWFkaW5nJyB8IHRyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfX08L2gxPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIG9mZnNldFhsPVwiMVwiICpuZ0lmPVwiKGlzTVMoKSAmJiBtdWx0aXBsZVdlZWtzRHVlICYmIGRpc3BsYXlDb250aW51ZWRXZWVrc0ZpbGVkSGVhZGluZylcIj5cclxuICAgICAgICAgICAgPGgxIGNsYXNzPVwiYXBwLWhlYWRpbmdcIj57eyd3ZWVrbGllcy52Mi50YXNrLm11bHRpcGxlLndlZWtzLmhlYWRpbmcuY29udGludWVkJyB8IHRyYW5zbGF0ZTpkeW5hbWljUGFyYW0gfX08L2gxPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgPC9pb24tZ3JpZD5cclxuXHJcbiAgICAgIDxzZWN0aW9uICpuZ0lmPVwiIWlzTVMoKVwiPlxyXG4gICAgICAgIDxpb24tZ3JpZD5cclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplWGw9XCI1XCIgb2Zmc2V0WGw9XCIxXCIgc2l6ZUxnPVwiNlwiPlxyXG4gICAgICAgICAgICAgIDxhcHAtd29yay1zZWFyY2gtcXVlc3Rpb24tdjIgICpuZ0lmPVwiIWlzTG9hZGluZyAmJiAhZXJyb3JNc2dcIiAoc3VjY2Vzcyk9XCJnb1RvV2Vla2x5Q2VydCgpXCIgW3Nob3dDb3VudGVyXT1cInRydWVcIiAoaGFzSGlyZWRTdGF0dXMpPVwiaGFzSGlyZWRTdGF0dXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGhhc1dvcmtlZEZ1bGxUaW1lT3JTdGFydGVkV29ya2luZ1N0YXR1cyk9XCJoYXNXb3JrZWRGdWxsVGltZU9yU3RhcnRlZFdvcmtpbmdTdGF0dXMoJGV2ZW50KVwiPjwvYXBwLXdvcmstc2VhcmNoLXF1ZXN0aW9uLXYyPlxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemVYbD1cIjVcIiBzaXplTGc9XCI2XCI+ICAgXHJcbiAgICAgICAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI3dlZWtseVF1ZXN0aW9ucyBbZmxvd0tleV09XCInd2Vla2x5LWNlcnQnXCIgW2F1dG9TYXZlXT1cImZhbHNlXCIgW3Nob3dPbmx5UXVlc3Rpb25dPVwidHJ1ZVwiIFtoaWRlSGVhZGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCIgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiBcclxuICAgICAgICAgICAgICAgKG9uRXJyb3IpPVwiaGFuZGxlRXJyb3IoJGV2ZW50KVwiIChvbkNvbXBsZXRlKT1cInN1Y2Nlc3MoJGV2ZW50KVwiIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCIgW2RhdGFdPVwiZGF0YVRvTG9hZFwiIFxyXG4gICAgICAgICAgICAgICBbbXVsdGlNb2RlXT1cInRydWVcIiBbcmVhZE9ubHlGaWVsZHNdPVwicmVhZE9ubHlGaWVsZHNcIiAob25Mb2FkQ29tcGxldGUpPVwibG9hZENvbXBsZXRlKCRldmVudClcIj5cclxuICAgICAgICAgICAgIDwvYXBwLWZvcm0tYnVpbGRlcj4gICAgICAgICBcclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICAgIDxzZWN0aW9uICpuZ0lmPVwiaXNNUygpXCI+XHJcbiAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiM1wiIG9mZnNldExnPVwiM1wiIG9mZnNldFhsPVwiM1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkXCI+XHJcbiAgICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJhY3RpdmVJbmRleCA9PSAwIHx8IGFjdGl2ZUluZGV4ID09IDFcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmctd2Vla2xpZXNcIj48Yj4ge3sgY29udGVudHNbYWN0aXZlSW5kZXhdIH19IDwvYj48L2gxPlxyXG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICA8c2VjdGlvbiAqbmdJZj1cImFjdGl2ZUluZGV4ID09IDJcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImhlYWRpbmctd2Vla2xpZXMtYWNrXCI+PGI+IHt7IGNvbnRlbnRzW2FjdGl2ZUluZGV4XSB9fSA8L2I+PC9oMT5cclxuICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIyXCI+PC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJ3ZWVrbGllcy1zdGVwc1wiIHNpemU9XCIxXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWRcIiA+XHJcbiAgICAgICAgICAgICAgPHAtc3RlcHMgW21vZGVsXT1cIml0ZW1zXCIgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCIgW3N0eWxlQ2xhc3NdPVwiJ2NvbXBsZXRlZC0nK2FjdGl2ZUluZGV4XCIgW25nU3R5bGVdPVwieyctLXN0ZXAtd2lkdGgnOic1MHB4JywnLS1zdGVwLWhlaWdodCc6JzUwcHgnfVwiPlxyXG4gICAgICAgICAgICAgIDwvcC1zdGVwcz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjNcIj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICA8aW9uLWNvbCBzdHlsZT1cIm1hcmdpbi10b3A6IC0zNXB4O1wic2l6ZT1cIjEyXCIgc2l6ZVNtPVwiOFwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiOFwiIHNpemVMZz1cIjZcIiBzaXplWGw9XCI1XCIgb2Zmc2V0TGc9XCIzXCIgb2Zmc2V0WGw9XCIzXCIgb2Zmc2V0TWQ9XCIxXCI+XHJcbiAgICAgICAgICAgIDxwLWRpdmlkZXI+PC9wLWRpdmlkZXI+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+ICAgICAgXHJcbiAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxpb24tZ3JpZCAqbmdJZj1cImFjdGl2ZUluZGV4ID09IDBcIj5cclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplU209XCI4XCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCI4XCIgc2l6ZUxnPVwiNlwiIHNpemVYbD1cIjVcIiBvZmZzZXRMZz1cIjNcIiBvZmZzZXRYbD1cIjNcIiBvZmZzZXRNZD1cIjFcIj5cclxuICAgICAgICAgICAgICA8YXBwLXdvcmstc2VhcmNoLXF1ZXN0aW9uLXYyICAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIWVycm9yTXNnXCIgKHN1Y2Nlc3MpPVwiZ29Ub1dlZWtseUNlcnQoKVwiIFtzaG93Q291bnRlcl09XCJ0cnVlXCIgKGhhc0hpcmVkU3RhdHVzKT1cImhhc0hpcmVkU3RhdHVzKCRldmVudClcIj48L2FwcC13b3JrLXNlYXJjaC1xdWVzdGlvbi12Mj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgPGlvbi1ncmlkICpuZ0lmPVwiYWN0aXZlSW5kZXggPT0gMVwiPlxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjUuMjVcIiBzaXplWGw9XCI1LjI1XCIgb2Zmc2V0TGc9XCIzXCIgb2Zmc2V0WGw9XCIzXCIgb2Zmc2V0TWQ9XCIxXCI+ICAgXHJcbiAgICAgICAgICAgICAgPGFwcC1mb3JtLWJ1aWxkZXIgI3dlZWtseVF1ZXN0aW9ucyBbZmxvd0tleV09XCInd2Vla2x5LWNlcnQnXCIgW2F1dG9TYXZlXT1cInRydWVcIiBbc2hvd09ubHlRdWVzdGlvbl09XCJ0cnVlXCIgW2hpZGVIZWFkZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2hpZGVGb290ZXJdPVwidHJ1ZVwiIFtzaXplWHNdPVwiMTJcIiBbc2l6ZVNtXT1cIjEyXCIgW3NpemVNZF09XCIxMlwiIFtzaXplTGddPVwiMTJcIiBbc2l6ZVhsXT1cIjEyXCIgW29mZnNldFhsXT1cIjBcIiBbb2Zmc2V0TGddPVwiMFwiIFxyXG4gICAgICAgICAgICAgICAob25FcnJvcik9XCJoYW5kbGVFcnJvcigkZXZlbnQpXCIgKG9uQ29tcGxldGUpPVwic3VjY2VzcygkZXZlbnQpXCIgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIiBbZGF0YV09XCJkYXRhVG9Mb2FkXCIgXHJcbiAgICAgICAgICAgICAgIFttdWx0aU1vZGVdPVwidHJ1ZVwiIFtyZWFkT25seUZpZWxkc109XCJyZWFkT25seUZpZWxkc1wiIChvbkxvYWRDb21wbGV0ZSk9XCJsb2FkQ29tcGxldGUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgPC9hcHAtZm9ybS1idWlsZGVyPiAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICA8IS0tIFdlZWtseSBFYXJuaW5ncyByZW1pbmRlciBwb3B1cCAtIHNob3duIGV2ZXJ5IHdlZWsgZXhjZXB0IGZvciB3YWl0aW5nIHBlcmlvZCB3ZWVrIC0tPlxyXG4gICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJ3ZWVrbHlXb3JrUGVyZm9ybWVkUG9wdXBGbGFnXCI+XHJcbiAgICAgICAgICAgIDxhcHAtd2Vla2x5LXdvcmstcGVyZm9ybWVkLXBvcHVwIFtzaG93V2Vla2x5V29ya1BlcmZvcm1lZFBvcHVwXT1cInRydWVcIj48L2FwcC13ZWVrbHktd29yay1wZXJmb3JtZWQtcG9wdXA+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgICA8aW9uLWdyaWQgKm5nSWY9XCJhY3RpdmVJbmRleCA9PSAyXCI+XHJcbiAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjEwXCIgc2l6ZUxnPVwiNlwiIHNpemVYbD1cIjZcIiBvZmZzZXRMZz1cIjNcIiBvZmZzZXRYbD1cIjNcIiBvZmZzZXRNZD1cIjFcIj5cclxuICAgICAgICAgICAgICA8YXBwLWFja25vd2xlZGdlbWVudC1tcyAqbmdJZj1cInNob3dBY2tcIiAoc3VjY2Vzcyk9XCJmaWxlV2Vla2x5Q2VydERvbmUoJGV2ZW50KVwiIChvbkNsb3NlKT1cImNsb3NlQWNrKClcIj5cclxuICAgICAgICAgICAgICA8L2FwcC1hY2tub3dsZWRnZW1lbnQtbXM+ICAgXHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICA8YXBwLW11bHRpLXF1ZXN0aW9ubmFpcmUgW3FlUXVlcnlNb2RlbHNdPVwicWVRdWVyeU1vZGVsc1wiICpuZ0lmPVwiaXNPcGVuUWVcIiBcclxuICAgIChvbkNvbXBsZXRlKT1cIm9wZW5TdW1tYXJ5UG9zdFF1ZXN0aW9ubmFpcmVzKCRldmVudClcIiAobW9kZWxDYW5jZWwpPVwib25RZUNsb3NlKClcIiBcclxuICAgIFtoZWFkZXJdPVwiJ0ZvbGxvdy11cCBRdWVzdGlvbnMnIHwgdHJhbnNsYXRlXCIgW3Nob3dRdWVzdGlvbk51bWJlcl09XCJ0cnVlXCI+PC9hcHAtbXVsdGktcXVlc3Rpb25uYWlyZT5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNNUygpXCI+XHJcbiAgICAgICAgPGFwcC1hY2tub3dsZWRnZW1lbnQtdjIgKm5nSWY9XCJzaG93QWNrXCIgKHN1Y2Nlc3MpPVwiZmlsZVdlZWtseUNlcnREb25lKCRldmVudClcIiAob25DbG9zZSk9XCJjbG9zZUFjaygpXCI+XHJcbiAgICAgICAgPC9hcHAtYWNrbm93bGVkZ2VtZW50LXYyPiBcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8YXBwLWNvbmZpcm1hdGlvbiAqbmdJZj1cInNob3dDb25maXJtYXRpb25cIiAob25DbG9zZSk9XCJjbG9zZUNvbmZpcm1hdGlvblBvcHVwKClcIiBbZGF0YV09XCJjb25maXJtYXRpb25EYXRhXCIgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIj48L2FwcC1jb25maXJtYXRpb24+XHJcbiAgICAgIFxyXG4gICAgICA8YXBwLWludGVyaW0tY29uZmlybWF0aW9uICpuZ0lmPVwic2hvd0ludGVyaW1Db25maXJtYXRpb25cIiAob25DbG9zZSk9XCJjbG9zZUNvbmZpcm1hdGlvblBvcHVwKClcIiAob25OZXh0KT1cIm5hdmlnYXRlVG9XZWVrbGllcygkZXZlbnQpXCIgW2RhdGFdPVwiY29uZmlybWF0aW9uRGF0YVwiIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCI+PC9hcHAtaW50ZXJpbS1jb25maXJtYXRpb24+XHJcblxyXG4gICAgICA8aW9uLWZvb3RlciAqbmdJZj1cIiFpc01TKClcIj5cclxuICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XHJcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBpb24tY29sIHNpemU9XCIxMlwiIHNpemVYbD1cIjVcIiBvZmZzZXRYbD1cIjFcIiBzaXplTGc9XCI2XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIChjbGljayk9XCJnb0hvbWUoKVwiPkNsb3NlXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBzaXplPVwiMTJcIiBzaXplWGw9XCI1XCIgc2l6ZUxnPVwiNlwiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cInNvbGlkXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJvcGVuTmV4dFBhZ2UoKVwiID5TdWJtaXRcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgPC9pb24tZm9vdGVyPlxyXG4gICAgICA8c2VjdGlvbiAqbmdJZj1cImlzTVMoKVwiPlxyXG4gICAgICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLXBhZGRpbmcgYnV0dG9ucy1yb3dcIj5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzXCI+PC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJ3ZWVrbGllcy1sZWZ0LWJ1dHRvbnNcIiBzaXplPVwiM1wiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImNsb3NlXCIgc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKm5nSWY9XCJhY3RpdmVJbmRleCA9PSAwXCIgKGNsaWNrKT1cImdvSG9tZSgpXCI+Q2xvc2VcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBpZD1cImJhY2tcIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiAqbmdJZj1cImFjdGl2ZUluZGV4ICE9IDBcIiAoY2xpY2spPVwiYWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleCAtIDFcIj5cclxuICAgICAgICAgICAgICBCYWNrPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJ3ZWVrbGllcy1yaWdodC1idXR0b25zXCIgc2l6ZT1cIjNcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJuZXh0XCIgc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJzb2xpZFwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwib3Blbk5leHRQYWdlKClcIiAqbmdJZj1cImFjdGl2ZUluZGV4ICE9IDJcIj5OZXh0XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJzdWJtaXRcIiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cInNvbGlkXCIgdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJzaG93QWNrbm93bGVkZ2VtZW50KClcIiAqbmdJZj1cImFjdGl2ZUluZGV4ID09IDJcIj5cclxuICAgICAgICAgICAgICBTdWJtaXQ8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiM1wiPjwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuICAgIDwvZGl2PiJdfQ==
819
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vla2x5LWNlcnRpZmljYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL3dlZWtseS1jZXJ0aWZpY2F0aW9uL3dlZWtseS1jZXJ0aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy93ZWVrbHktY2VydGlmaWNhdGlvbi93ZWVrbHktY2VydGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBTWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUlwSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ3BCckgsd0NBQWtGOztJQUF2QywrQkFBaUI7OztJQUN4RCw4QkFBK0M7SUFDM0MsaUNBQXVDO0lBQzNDLGlCQUFNOzs7SUFFTiw4QkFBdUc7SUFDckcsOEJBQTBHLGFBQUE7SUFFNUcsaUJBQU07OztJQURDLGVBQXlEO0lBQXpELHdHQUF5RDs7O0lBTTFELG1DQUF1SCxhQUFBO0lBQzdGLFlBQXdEOztJQUFBLGlCQUFLLEVBQUE7OztJQUE3RCxlQUF3RDtJQUF4RCwyRkFB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QTVDLFNBQVM7bUJBQUMsaUJBQWlCOztrRkFaakIsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcclxuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tICcuLi8uLi9wYWdlcy9CYXNlUGFnZSc7XHJcbmltcG9ydCB7IENsYWltYW50Q29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jbGFpbWFudC1jb250ZXh0L2NsYWltYW50LWNvbnRleHQuc2VydmljZSc7XHJcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIZWxwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2hlbHAvaGVscC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWwgfSBmcm9tICcuLi8uLi8vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWwnO1xyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgSGVscENvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9IZWxwQ29uc3RhbnRzJztcclxuaW1wb3J0IHsgV2Vla2x5Q2VydFNlcnZpY2VWMiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dlZWtseS1jZXJ0L3dlZWtseS1jZXJ0LXYyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdW1tYXJ5Q29tcG9uZW50VjIgfSBmcm9tICcuLi93ZWVrbHktc3VtbWFyeS12Mi9zdW1tYXJ5LmNvbXBvbmVudC12Mic7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyUGFnZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9mb3JtLWJ1aWxkZXIvZm9ybS1idWlsZGVyLnBhZ2UnO1xyXG5pbXBvcnQgeyBXb3JrU2VhcmNoUXVlc3Rpb25Db21wb25lbnRWMiB9IGZyb20gJy4uL3dlZWtseS13b3JrLXNlYXJjaC1xdWVzdGlvbi12Mi93b3JrLXNlYXJjaC1xdWVzdGlvbi5jb21wb25lbnQtdjInO1xyXG5pbXBvcnQgeyBXZWVrbHlDZXJ0aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvd2Vla2x5LWNlcnQvd2Vla2x5LWNlcnRpZmljYXRpb24tdjItbW9kZWwnO1xyXG5pbXBvcnQgeyBXZWVrbHlDZXJ0RWxpZ2liaWxpdHlNb2RlbFYyIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dlZWtseS1jZXJ0L3dlZWtseS1jZXJ0LWVsaWdpYmlsaXR5LXYyLW1vZGVsJztcclxuaW1wb3J0IHsgU3RhdHVzTW9kZWwgfSBmcm9tICcuLi8uLi8vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvU3RhdHVzTW9kZWwnO1xyXG5pbXBvcnQgeyBBY2tub3dsZWRnZW1lbnRNc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvd2Vla2x5LWFja25vd2xlZGdlbWVudC1tcy9hY2tub3dsZWRnZW1lbnQtbXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgV29ya1NlYXJjaE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dlZWtseS1jZXJ0L3dvcmstc2VhcmNoLXYyLW1vZGVsJztcclxuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBXb3JrU2VhcmNoUmVjb3JkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvd2Vla2x5LWNlcnQvd29yay1zZWFyY2gtcmVjb3JkLXYyLW1vZGVsJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXdlZWtseS1jZXJ0aWZpY2F0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd2Vla2x5LWNlcnRpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi93ZWVrbHktY2VydGlmaWNhdGlvbi5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFdlZWtseUNlcnRpZmljYXRpb25Db21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdHtcclxuXHJcbkBWaWV3Q2hpbGQoV29ya1NlYXJjaFF1ZXN0aW9uQ29tcG9uZW50VjIpXHJcbiAgd29ya1NlYXJjaENvbXBvbmVudDogV29ya1NlYXJjaFF1ZXN0aW9uQ29tcG9uZW50VjI7XHJcblxyXG4gIC8vVHJpZ2dlcmluZyBTdWJtaXQgaW4gdGhlIGNvbXBvbmVudFxyXG4gIEBWaWV3Q2hpbGQoQWNrbm93bGVkZ2VtZW50TXNDb21wb25lbnQpXHJcbiAgYWNrbm93bGVkZ2VtZW50TXNDb21wb25lbnQ6IEFja25vd2xlZGdlbWVudE1zQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFN1bW1hcnlDb21wb25lbnRWMilcclxuICBzdW1tYXJ5Q29tcG9uZW50OiBTdW1tYXJ5Q29tcG9uZW50VjI7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3dlZWtseVF1ZXN0aW9ucycpIHdlZWtseVF1ZXN0aW9uczogRm9ybUJ1aWxkZXJQYWdlXHJcblxyXG4gIHB1YmxpYyBzaG93QWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dDb25maXJtYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgY29uZmlybWF0aW9uRGF0YTogYW55O1xyXG5cclxuICBwdWJsaWMgaXRlbXM6IE1lbnVJdGVtW107XHJcbiAgcHVibGljIGNvbnRlbnRzOiBzdHJpbmdbXTtcclxuICBwdWJsaWMgYWN0aXZlSW5kZXggPSAwO1xyXG4gIHB1YmxpYyBlcnJvck1zZzogc3RyaW5nO1xyXG4gIHB1YmxpYyBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1dvcmtTZWFyY2g6IGJvb2xlYW47XHJcbiAgcHVibGljIGR5bmFtaWNQYXJhbTogYW55O1xyXG4gIGlzT3BlblFlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcWVRdWVyeU1vZGVsczogUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWxbXTtcclxuICBwb3RlbnRpYWxJc3N1ZXM6IG51bWJlcltdO1xyXG4gIHN0YXR1c01vZGVsOiBTdGF0dXNNb2RlbDtcclxuICByZWFkT25seUZpZWxkczogc3RyaW5nW10gPSBudWxsO1xyXG4gIHJlYWRPbmx5RGF0YTogYW55O1xyXG4gIGRhdGFUb0xvYWQ6IGFueTtcclxuICBwdWJsaWMgd29ya1NlYXJjaFdhaXZlZDogYW55O1xyXG4gIHB1YmxpYyB3YWl2ZXJSZWFzb246IFN0cmluZyA9IG51bGw7XHJcbiAgcHVibGljIHdvcmtTZWFyY2hEYXRhTXM6IFdvcmtTZWFyY2hNb2RlbDtcclxuXHJcbiAgcHVibGljIG11bHRpcGxlV2Vla3NEdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd0ludGVyaW1Db25maXJtYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgbnVtYmVyT2ZNdWx0aXBsZVdlZWtzRHVlOiBudW1iZXI7XHJcbiAgcmVjZWl2ZWREYXRhOiBhbnk7XHJcbiAgcHVibGljIGRpc3BsYXlDb250aW51ZWRXZWVrc0ZpbGVkSGVhZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBhcnNlZE1heFJUV0RhdGU6IGFueTtcclxuICBwdWJsaWMgd2Vla2x5V29ya1BlcmZvcm1lZFBvcHVwRmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHdvcmtTZWFyY2hSZWNvcmRzOiBXb3JrU2VhcmNoUmVjb3JkTW9kZWxbXTtcclxuXHJcbiAgY291bnQgPSAwO1xyXG4gIHJlZW1Xb3JrU2VhcmNoUmVjb3JkQ291bnQgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdjU2VydmljZTogV2Vla2x5Q2VydFNlcnZpY2VWMiwgcHVibGljIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSB1dGlsOiBVdGlsU2VydmljZSwgcHJpdmF0ZSBuYXY6IE5hdkNvbnRyb2xsZXIsXHJcbiAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsIHB1YmxpYyBoczogSGVscFNlcnZpY2UsIHB1YmxpYyBsczogTG9naW5TZXJ2aWNlLCBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDbGFpbWFudENvbnRleHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkYXRlcGlwZTpEYXRlUGlwZSwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy53Y1NlcnZpY2UucmVzZXRXZWVrbHlDZXJ0RGF0YSgpO1xyXG5cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMud2NTZXJ2aWNlLmNoZWNrV2Vla2x5RWxpZ2liaWxpdHkoKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NXZWVrbHlDZXJ0RWxpZ2liaWx0eVN1Y2Nlc3MocmVzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NXZWVrbHlDZXJ0RWxpZ2liaWxpdHlFcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgfVxyXG5cclxuICBvblN0ZXBDaGFuZ2UoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHJvY2Vzc1dlZWtseUNlcnRFbGlnaWJpbHR5U3VjY2VzcyhyZXM6IFdlZWtseUNlcnRFbGlnaWJpbGl0eU1vZGVsVjIpIHtcclxuICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhID0gcmVzO1xyXG4gICAgdGhpcy5lcnJvck1zZyA9IG51bGw7XHJcbiAgICB0aGlzLmdldExhYmVsTWF4UlRXRGF0ZSgpO1xyXG4gICAgdGhpcy5keW5hbWljUGFyYW0gPSB7XHJcbiAgICAgICdzYXR1cmRheV9kYXRlJzogdGhpcy53Y1NlcnZpY2UuZ2V0U2F0dXJkYXlEYXRlQXNTdHJpbmcoKSxcclxuICAgICAgJ3N1bmRheV9kYXRlJzogdGhpcy53Y1NlcnZpY2UuZ2V0U3VuZGF5RGF0ZUFzU3RyaW5nKCksXHJcbiAgICAgICdtaW5fcnR3X2RhdGUnOiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5taW5BbGxvd2VkUnR3RGF0ZSxcclxuICAgICAgJ21heF9ydHdfZGF0ZSc6IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLm1heEFsbG93ZWRSdHdEYXRlLFxyXG4gICAgICAncGVuc2lvbl9lbXBsb3llcnMnOiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5wZW5zaW9uRW1wbG95ZXJzLFxyXG4gICAgICAnZHVhRGVjbGFyYXRpb24nOiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5kdWFEZWNsYXJhdGlvbixcclxuICAgICAgJ2NsYWltV2Vla0VuZERhdGUnOiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5jbGFpbVdlZWtFbmREYXRlLFxyXG4gICAgICAnY2xhaW1hbnRJZCc6IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmNsYWltYW50SWQsXHJcbiAgICAgICdsYWJlbF9tYXhSdHdEYXRlJzogdGhpcy5wYXJzZWRNYXhSVFdEYXRlLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBpZiB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nIHRvIHdlZWtsaWVzIGZyb20gaW50ZXJpbSBjb25maXJtYXRpb24gdG8gY29udGludWUgZmlsaW5nIGRhdGEgd2lsbCBiZSBzdG9yZWRcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHN0b3JlZERhdGEgPSBsb2NhbFN0b3JhZ2U/LmdldEl0ZW0oJ2ludGVyaW1Db25maXJtYXRpb25EYXRhJyk7XHJcbiAgICAgIGlmIChzdG9yZWREYXRhKSB7XHJcbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVVSSUNvbXBvbmVudChhdG9iKHN0b3JlZERhdGEpKTtcclxuICAgICAgICB0aGlzLnJlY2VpdmVkRGF0YSA9IEpTT04ucGFyc2UoZGVjb2RlZCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZHluYW1pY1BhcmFtLmNsYWltYW50SWQgIT0gdGhpcy5yZWNlaXZlZERhdGEuY2xhaW1hbnRJZCkge1xyXG4gICAgICAgICAgdGhpcy5yZWNlaXZlZERhdGEgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2xvY2FsU3RvcmFnZSBwYXJzaW5nIGZhaWxlZDonLCBlcnIpO1xyXG4gICAgICB0aGlzLnJlY2VpdmVkRGF0YSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICAgIC8vIGNoZWNraW5nIGRhdGEgZm9yIGZsYWcgdG8gY29udGludWUgdG8gZmlsZSBmb3IgbXVsdGlwbGUgd2Vla3NcclxuICAgICAgaWYodGhpcy5yZWNlaXZlZERhdGEgJiYgKHRoaXMuZHluYW1pY1BhcmFtLmNsYWltYW50SWQgPT0gdGhpcy5yZWNlaXZlZERhdGEuY2xhaW1hbnRJZCkgJiZcclxuICAgICAgICB0aGlzLnJlY2VpdmVkRGF0YS5jb250aW51ZVRvRmlsZUZvck11bHRpcGxlV2Vla3MgPT0gdHJ1ZSlcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29udGludWVkV2Vla3NGaWxlZEhlYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLm5leHRDZXJ0aWZpY2F0aW9uVG9GaWxlQ291bnQgPSB0aGlzLnJlY2VpdmVkRGF0YS5jdXJyZW50TnVtYmVyRmlsaW5nOyBcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS50b3RhbFRvQ2VydGlmeSA9IHRoaXMucmVjZWl2ZWREYXRhLnRvdGFsO1xyXG4gICAgICAgIC8vIHRoaXMubnVtYmVyT2ZNdWx0aXBsZVdlZWtzRHVlID0gdGhpcy5yZWNlaXZlZERhdGEuY291bnQ7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkVsaWdpYmlsaXR5IFN1Y2Nlc3NcIik7XHJcbiAgICAgICAgLy8gaWYgbW9yZSB3ZWVrcyBhcmUgZHVlIHNldCB0aGUgbmV4dCBzdW5kYXkgYW5kIHNhdHVyZGF5IGRheXNcclxuICAgICAgICBpZih0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWQubGVuZ3RoPjEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljUGFyYW0ubmV4dF9zYXR1cmRheSA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLndlZWtzVG9CZUNlcnRpZmllZFsxXTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLm5leHRfc3VuZGF5ID0gdGhpcy5nZXRQcmV2aW91c1N1bmRheSh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWRbMV0pXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5udW1iZXJPZk11bHRpcGxlV2Vla3NEdWUgPSB0aGlzLnJlY2VpdmVkRGF0YS50b3RhbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gXHJcbiAgICAgIC8vIGlmIGNsYWltYW50IGZpbGluZyBhbmQgaGFzIG11bHRpcGxlIGNlcnRpZmljYXRpb25zIGR1ZVxyXG4gICAgICAvLyB3aWxsIGdvIHRocm91Z2ggaW50ZXJpbSBwcm9jZXNzIHVudGlsIGZpbmFsIGxhdGVzdCB3ZWVrIGZpbGVkXHJcbiAgICAgIGVsc2UgaWYodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkLmxlbmd0aD4xKVxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJPZk11bHRpcGxlV2Vla3NEdWUgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWQubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5keW5hbWljUGFyYW0ubnVtYmVyT2ZNdWx0aXBsZVdlZWtzRHVlID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkLmxlbmd0aDtcclxuICAgICAgICB0aGlzLmR5bmFtaWNQYXJhbS5uZXh0X3NhdHVyZGF5ID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkWzFdO1xyXG4gICAgICAgIHRoaXMuZHluYW1pY1BhcmFtLm5leHRfc3VuZGF5ID0gdGhpcy5nZXRQcmV2aW91c1N1bmRheSh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWRbMV0pXHJcbiAgICAgIH1cclxuICAgIFxyXG4gICAgaWYgKExpYkNvbnN0YW50cy5sZWdhY3lNZW51ID09ICdmYWxzZScpIHtcclxuICAgICAgdGhpcy5ocy5zaG93RGlhbG9nSWZQcmVmZXJlbmNlQWxsb3coSGVscENvbnN0YW50cy5XRUVLTFlfSEVMUCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVIaWRkZW5GaWVsZHMocmVzKTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhRm9yV29ya1NlYXJjaEZvcm0oKTtcclxuICAgIGlmICh0aGlzLmlzTVMoKSkge1xyXG4gICAgICB0aGlzLml0ZW1zID0gW1xyXG4gICAgICAgIHsgbGFiZWw6ICcnLCBjb21tYW5kOiAoKSA9PiB7IHRoaXMub25TdGVwQ2hhbmdlKDApOyB9IH0sXHJcbiAgICAgICAgeyBsYWJlbDogJycsIGNvbW1hbmQ6ICgpID0+IHsgdGhpcy5vblN0ZXBDaGFuZ2UoMSk7IH0gfSxcclxuICAgICAgICB7IGxhYmVsOiAnJywgY29tbWFuZDogKCkgPT4geyB0aGlzLm9uU3RlcENoYW5nZSgyKTsgfSB9XHJcbiAgICAgIF07XHJcbiAgICB9IFxyXG5cclxuICAgIHRoaXMuY29udGVudHMgPSBbJyAgIFdvcmsgU2VhcmNoIEFjdGl2aXRpZXMnLCAnICAgV2Vla2x5IFF1ZXN0aW9ucycsICcgICBBY2tub3dsZWRnZSAmIENlcnRpZnknXTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsTWF4UlRXRGF0ZSgpe1xyXG4gICAgdGhpcy5wYXJzZWRNYXhSVFdEYXRlID0gbmV3IERhdGUodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEubWF4QWxsb3dlZFJ0d0RhdGUpO1xyXG4gICAgdGhpcy5wYXJzZWRNYXhSVFdEYXRlLnNldERhdGUodGhpcy5wYXJzZWRNYXhSVFdEYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgdGhpcy5wYXJzZWRNYXhSVFdEYXRlPXRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKHRoaXMucGFyc2VkTWF4UlRXRGF0ZSwgJ01NL2RkL3l5eXknKTtcclxuICB9XHJcblxyXG4gIHByb2Nlc3NXZWVrbHlDZXJ0RWxpZ2liaWxpdHlFcnJvcihlcnI6IGFueSkge1xyXG4gICAgaWYgKGVyci5tc2cgIT0gbnVsbCAmJiBlcnIubXNnWzBdID09ICdObyBXZWVrcyBhcmUgcGVuZGluZyB0byBiZSBmaWxlZC4nKSB7XHJcbiAgICAgIHRoaXMudXRpbC5nZXRTdGF0ZSgpPT09J0NUJyA/IHRoaXMubmF2Lm5hdmlnYXRlUm9vdChcIndlZWtseS1ub3QtZWxpZ2libGVcIikgOiB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCJ3b3JrLXNlYXJjaC1qb3VybmFsXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lcnJvck1zZyA9IGVyci5tc2c7XHJcbiAgICB9XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YSA9IG51bGw7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZURhdGFGb3JXb3JrU2VhcmNoRm9ybSgpIHtcclxuICAgIHRoaXMud29ya1NlYXJjaFdhaXZlZCA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLmlzV29ya1NlYXJjaFdhaXZlZDtcclxuICAgIHRoaXMud2FpdmVyUmVhc29uID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2FpdmVyUmVhc29uO1xyXG4gICAgLy9SRUVNIEFDVElWSVRZIFRZUEUgQ09VTlQgQVNTSUdOTUVOVFxyXG4gICAgdGhpcy5yZWVtV29ya1NlYXJjaFJlY29yZENvdW50ID0gTnVtYmVyKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhPy5oaWRSZWVtV29ya1NlYXJjaFJlY29yZENvdW50ID8/IDApO1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEuaGlkUmVlbVdvcmtTZWFyY2hSZWNvcmRDb3VudCA9IHRoaXMucmVlbVdvcmtTZWFyY2hSZWNvcmRDb3VudDtcclxuICAgIC8vXHJcbiAgICB0aGlzLndjU2VydmljZS5nZXRDbGFpbWFudFdvcmtTZWFyY2hKb3VybmFsUmVjb3Jkcyh0aGlzLndjU2VydmljZS5nZXRTYXR1cmRheURhdGVBc1N0cmluZygpKS5zdWJzY3JpYmUoXHJcbiAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIldTIFJlc3VsdFwiKTtcclxuICAgICAgICB0aGlzLndjU2VydmljZS53b3JrU2VhcmNoSm91cm5hbCA9IHJlcztcclxuICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoUmVjb3JkcyA9IHJlcy53b3JrU2VhcmNoUmVjb3JkcztcclxuICAgICAgICBpZiAodGhpcy5pc01FKCkgJiYgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaFJlY29yZHMpIHtcclxuICAgICAgICAgIGNvbnN0IGhhc1N0YXJ0ZWRXb3JraW5nID0gKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtTZWFyY2hSZWNvcmRzID8/IFtdKS5zb21lKFxyXG4gICAgICAgICAgICByZWMgPT4gcmVjPy5zZWFyY2hSZXN1bHQgPT09ICdTVFdLJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmKGhhc1N0YXJ0ZWRXb3JraW5nKXtcclxuICAgICAgICAgICAgdGhpcy5oYXNXb3JrZWRGdWxsVGltZU9yU3RhcnRlZFdvcmtpbmdTdGF0dXModHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud29ya1NlYXJjaEpvdXJuYWwgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5pc01TKCkpIHtcclxuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcGVuTmV4dFBhZ2UoKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKFwiT05QXCIpO1xyXG4gICAgaWYgKHRoaXMud29ya1NlYXJjaENvbXBvbmVudCkge1xyXG4gICAgICBpZiAodGhpcy53Y1NlcnZpY2UuZ2V0RGlzcGxheVdvcmtTZWFyY2hTY3JlZW4oKSkge1xyXG4gICAgICAgIHRoaXMud29ya1NlYXJjaENvbXBvbmVudC5zdWJtaXRGb3JtKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nb1RvV2Vla2x5Q2VydCgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMud29ya1NlYXJjaFdhaXZlZCkge1xyXG4gICAgICB0aGlzLmdvVG9XZWVrbHlDZXJ0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdvVG9XZWVrbHlDZXJ0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnb1RvV2Vla2x5Q2VydCgpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoXCJHVFdcIik7XHJcbiAgICBpZiAodGhpcy5pc01TKCkpIHtcclxuICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPT0gMCkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLndlZWtseVF1ZXN0aW9ucykge1xyXG4gICAgICAgICAgdGhpcy5jb3VudCA9IHRoaXMuY291bnQgKyAxO1xyXG4gICAgICAgICAgaWYodGhpcy5jb3VudCA+IDEgJiYgdGhpcy5scy5pc0NzcigpKXtcclxuICAgICAgICAgICAgdGhpcy53ZWVrbHlRdWVzdGlvbnMucXVlc3Rpb25uYWlyZS5xdWVzdGlvbm5haXJlLnF1ZXN0aW9ubmFpcmVGb3JtLmZvcm0uY29udHJvbHNbJ2hpZENzckZpcnN0UGFzcyddLnNldFZhbHVlKCdZJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLndlZWtseVF1ZXN0aW9ucy5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy53ZWVrbHlRdWVzdGlvbnMpIHtcclxuICAgICAgICB0aGlzLndlZWtseVF1ZXN0aW9ucy5zdWJtaXRRdWVzdGlvbm5haXJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiBcclxuICBzdWNjZXNzKHdlZWtseVF1ZXN0aW9uc1Jlc3BvbnNlKSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YTogV2Vla2x5Q2VydGlmaWNhdGlvbk1vZGVsID1cclxuICAgICAgSlNPTi5wYXJzZSh3ZWVrbHlRdWVzdGlvbnNSZXNwb25zZS5zY3JlZW5RdWVzdGlvbm5haXJlRGF0YVswXSk7XHJcbiAgICBmb3JtRGF0YS53b3JrU2VhcmNoUmVjb3JkcyA9IHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzKCk7XHJcbiAgICBmb3JtRGF0YS53b3JrU2VhcmNoRGF0YSA9IHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hEYXRhKCk7XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YSA9IGZvcm1EYXRhO1xyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuY2xhaW1XZWVrRW5kRGF0ZSA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhLndlZWtUb0NlcnRpZnk7XHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5oaWRJbkFwcHJvdmVkVHJhaW5pbmcgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5oaWRJbkFwcHJvdmVkVHJhaW5pbmc7XHJcbiAgICB0aGlzLm9wZW5Gb2xsb3d1cFF1ZXN0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkZvbGxvd3VwUXVlc3Rpb25zKCkge1xyXG4gICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcclxuICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLnNob3dXb3JrU2VhcmNoU2NyZWVuID0gdGhpcy53Y1NlcnZpY2UuZ2V0RGlzcGxheVdvcmtTZWFyY2hTY3JlZW4oKTtcclxuICAgIGlmICh0aGlzLndjU2VydmljZS5nZXRXb3JrU2VhcmNoUmVjb3Jkc0NvdW50KCkgPiAwKSB7XHJcbiAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtTZWFyY2hEYXRhLmlzV29ya1NlYXJjaFBlcmZvcm1lZEZsYWcgPSAnMSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtTZWFyY2hEYXRhICE9IG51bGwpIHtcclxuICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEuaXNXb3JrU2VhcmNoUGVyZm9ybWVkRmxhZyA9ICcwJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy53Y1NlcnZpY2UuZ2V0RW1wbG95ZXJSZWNvcmRzQ291bnQoKSA+IDApIHtcclxuICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1BlcmZvcm1lZCA9ICdZJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtQZXJmb3JtZWQgPSAnTic7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1BlcmZvcm1lZFNlYXBOb3RQYXJ0dGltZSA9ICh0aGlzLndjU2VydmljZS5nZXRFbXBsb3llclJlY29yZHNDb3VudCgpID4gMCAmJiB0aGlzLndjU2VydmljZS5nZXRIaWRJc1NlYXBQYXJ0aWNpcGFudCgpKSA/ICdZJyA6ICdOJztcclxuXHJcbiAgICBpZih0aGlzLmlzTVMoKSAmJiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS5oaWRJc1NlYXBQYXJ0aWNpcGFudD09J1knKXtcclxuICAgICAgLy9Eb25lIHRvIGhhbmRsZSBuZXcgdmVyYmlhZ2UgZm9yIHdvcmtQZXJmb3JtZWQgZm9yIFNlYXAgUGFydGljaXBhbnRzLlxyXG4gICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1BlcmZvcm1lZCA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndvcmtQZXJmb3JtZWRTZWFwTm90UGFydHRpbWU7XHJcblxyXG4gICAgLy9Eb25lIHRvIGhhbmRsZSBuZXcgdmVyYmlhZ2UgZm9yIFNFQVAgUGFydGljaXBhbnRzIGZvciBhdmFpbGFibGUgcXVlc3Rpb24uXHJcbiAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5hdmFpbGFibGUgPSAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuYXZhaWxhYmxlU2VhcCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy53Y1NlcnZpY2UuZGV0ZXJtaW5lUXVlc3Rpb25uaWFyZVRvT3BlbigpLnN1YnNjcmliZShcclxuICAgICAgcmVzID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwicWVzIFN1Y2Nlc3NcIik7XHJcbiAgICAgICAgdGhpcy5zdGF0dXNNb2RlbCA9IHJlcy5zdGF0dXNNb2RlbDtcclxuICAgICAgICB0aGlzLnFlUXVlcnlNb2RlbHMgPSByZXMuc3RhdHVzTW9kZWwucWVRdWVyeU1vZGVscztcclxuICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS5wb3RlbnRpYWxJc3N1ZXMgPSByZXMucG90ZW50aWFsSXNzdWVJZHM7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEucGVuc2lvbkRlbmllZFBvdGVudGlhbElzc3VlcyA9IHJlcy5wZW5zaW9uRGVuaWVkUG90ZW50aWFsSXNzdWVzO1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmJvbnVzUGF5UG90ZW50aWFsSXNzdWVzID0gcmVzLmJvbnVzUGF5UG90ZW50aWFsSXNzdWVzO1xyXG4gICAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLm90aGVyUGF5UG90ZW50aWFsSXNzdWVzID0gcmVzLm90aGVyUGF5UG90ZW50aWFsSXNzdWVzO1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXR1c01vZGVsLnNob3dRZSkge1xyXG4gICAgICAgICAgdGhpcy5pc09wZW5RZSA9IHRydWU7XHJcbiAgICAgICAgICBpZiAodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuZW1wbG95ZXJEZXRhaWxzTGlzdCAhPSBudWxsXHJcbiAgICAgICAgICAgICYmIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLmVtcGxveWVyRGV0YWlsc0xpc3QubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICAmJiByZXMudGVtcEVtcGxveWVyU2VwUG90ZW50aWFsSXNzdWVNYXAgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS50ZW1wRW1wbG95ZXJTZXBQb3RlbnRpYWxJc3N1ZU1hcCA9IHJlcy50ZW1wRW1wbG95ZXJTZXBQb3RlbnRpYWxJc3N1ZU1hcDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93QWNrbm93bGVkZ2VtZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcihlcnIubXNnKTtcclxuICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb3BlblN1bW1hcnlQb3N0UXVlc3Rpb25uYWlyZXMoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnNpemUgPiAwKSB7XHJcbiAgICAgIGlmIChldmVudC5oYXMoOTAwMSkpIHtcclxuICAgICAgICBsZXQgd29ya1NlYXJjaFJlYXNvbiA9IGV2ZW50LmdldCg5MDAxKS5yZWFzb25JbmFkZXF1YXRlV29ya1NlYXJjaDtcclxuICAgICAgICBpZih0aGlzLmlzQ1QoKSl7XHJcbiAgICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5yZWFzb25JbmFkZXF1YXRlV29ya1NlYXJjaCA9IHdvcmtTZWFyY2hSZWFzb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5pc1dvcmtTZWFyY2hQZXJmb3JtZWRGbGFnID09ICcxJ1xyXG4gICAgICAgICAgJiYgdGhpcy53Y1NlcnZpY2UuY2hlY2tJZkluYWRlcXVhdGVXb3JrU2VhcmNoUXVlc3Rpb25uYWlyZVNob3VsZEJlT3BlbmVkKClcclxuICAgICAgICAgICYmIHRoaXMuaXNNUygpKSB7XHJcbiAgICAgICAgICB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5yZWFzb25JbmFkZXF1YXRlV29ya1NlYXJjaCA9IHdvcmtTZWFyY2hSZWFzb247XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0RGF0YS53b3JrU2VhcmNoRGF0YS5pc1dvcmtTZWFyY2hQZXJmb3JtZWRGbGFnID09ICcwJykge1xyXG4gICAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEud29ya1NlYXJjaERhdGEuZXhwbGFpbldoeURpZE5vdExvb2tGb3JXb3JrID0gd29ya1NlYXJjaFJlYXNvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV2ZW50LmhhcygxNzkpKSB7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuYWRtaW5MZWF2ZURldGFpbHMgPSBldmVudC5nZXQoMTc5KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXZlbnQuaGFzKDkwMDIpKSB7XHJcbiAgICAgICAgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEuYWRtaW5MZWF2ZURldGFpbHMgPSBldmVudC5nZXQoOTAwMik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dBY2tub3dsZWRnZW1lbnQoKTtcclxuICAgIHRoaXMuaXNPcGVuUWUgPSBmYWxzZTtcclxuICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XHJcbiAgfVxyXG5cclxuICBvblFlQ2xvc2UoKSB7XHJcbiAgICB0aGlzLmlzT3BlblFlID0gZmFsc2U7XHJcbiAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1N1bW1hcnkoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMTtcclxuICB9XHJcblxyXG4gIGNsb3NlQWNrKCkge1xyXG4gICAgdGhpcy5zaG93QWNrID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBmaWxlV2Vla2x5Q2VydERvbmUoZXZlbnQpIHtcclxuICAgIHRoaXMuc2hvd0FjayA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25EYXRhID0gZXZlbnQ7XHJcbiAgICBpZih0aGlzLmlzTVMoKSAmJiB0aGlzLm11bHRpcGxlV2Vla3NEdWUgPT0gdHJ1ZSAmJiB0aGlzLnJlY2VpdmVkRGF0YSlcclxuICAgIHtcclxuICAgICAgLy8gaWYgdGhpcyBpcyB0aGUgbGFzdCB0aW1lIGZpbGluZyB3ZWVrbGllcyB0aHJvdWdoIGludGVyaW0gY29uZmlybWF0aW9uIGZsb3cgXHJcbiAgICAgIGlmKHRoaXMucmVjZWl2ZWREYXRhLmN1cnJlbnROdW1iZXJGaWxpbmcgPT0gdGhpcy5yZWNlaXZlZERhdGEudG90YWwgJiYgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEud2Vla3NUb0JlQ2VydGlmaWVkLmxlbmd0aD09MSlcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMuc2hvd0ludGVyaW1Db25maXJtYXRpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdpbnRlcmltQ29uZmlybWF0aW9uRGF0YScpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGlmIG1vcmUgd2Vla3MgcmVtYWluIGZvciB3ZWVrbGllcyB0aHJvdWdoIGludGVyaW0gY29uZmlybWF0aW9uIGZsb3cgXHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucmVjZWl2ZWREYXRhLmNvdW50IDw9IHRoaXMucmVjZWl2ZWREYXRhLnRvdGFsICAmJiB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YS53ZWVrc1RvQmVDZXJ0aWZpZWQubGVuZ3RoPjEpXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnNob3dJbnRlcmltQ29uZmlybWF0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSAvLyBpZiBmaXJzdCB0aW1lIGZpbGluZyB3ZWVrbGllcyB0aHJvdWdoIGludGVyaW0gY29uZmlybWF0aW9uIGZsb3dcclxuICAgIGlmKHRoaXMuaXNNUygpICYmIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9PSB0cnVlICYmICF0aGlzLnJlY2VpdmVkRGF0YSlcclxuICAgIHtcclxuICAgICAgdGhpcy5zaG93SW50ZXJpbUNvbmZpcm1hdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoKCF0aGlzLmlzTVMoKSkgfHwgKHRoaXMuaXNNUygpICYmIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9PSBmYWxzZSkpIHtcclxuICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgY2xvc2VDb25maXJtYXRpb25Qb3B1cCgpIHtcclxuICAgIGlmKHRoaXMuaXNNUygpICYmIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9PSB0cnVlKVxyXG4gICAge1xyXG4gICAgICB0aGlzLnNob3dJbnRlcmltQ29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLndjU2VydmljZS5yZXNldFdlZWtseUNlcnREYXRhKCk7XHJcblxyXG4gICAgLy8gVGhpcyBpcyBhZGRlZCBhcyB0aGUgbmF2aWdhdGlvbiB3YXMgdG9vIHF1aWNrIGZvciB0aGUgY29uZmlybWF0aW9uIHRvIGNsb3NlIGluIHRpbWUsIGxlYXZpbmcgY29uZmlybWF0aW9uIG9wZW4sIGV2ZW4gdGhvdWdoIHRoZSBwYWdlIHdhcyB1cGRhdGVkIGluIGJhY2tlbmRcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5nb0hvbWUoKSwgMTAwKTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9XZWVrbGllcyhkYXRhOiBhbnkpIHtcclxuICAgIGlmKHRoaXMuaXNNUygpICYmIHRoaXMubXVsdGlwbGVXZWVrc0R1ZSA9PSB0cnVlKVxyXG4gICAge1xyXG4gICAgICB0aGlzLnNob3dJbnRlcmltQ29uZmlybWF0aW9uID0gZmFsc2U7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaW50ZXJpbUNvbmZpcm1hdGlvbkRhdGEnLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLndjU2VydmljZS5yZXNldFdlZWtseUNlcnREYXRhKCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGdvSG9tZSgpIHtcclxuICAgIGlmICh0aGlzLmxzLmlzQ2xhaW1hbnQoKSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCd3ZWxjb21lP3djRG9uZT10cnVlJyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubHMuaXNDc3IoKSkge1xyXG4gICAgICB0aGlzLnV0aWwub3BlblBhZ2VCeUNvbnRleHRSb290V2l0aERhdGEodGhpcy51dGlsLmdldFNlY3VyaXR5QXBwQ29udGV4dFJvb3QoKSwgXCJzZWFyY2gtc3NuXCIsIHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0VW5FbmNvZGVkU3NuKCksIHRoaXMubmF2KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy93ZWxjb21lJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0Fja25vd2xlZGdlbWVudCgpIHtcclxuICAgIGlmICh0aGlzLnN1bW1hcnlDb21wb25lbnQpIHtcclxuICAgICAgdGhpcy5zdW1tYXJ5Q29tcG9uZW50LnN1Ym1pdEZvcm0oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmlzTVMoKSkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSAyO1xyXG4gICAgICAgIGlmICh0aGlzLmFja25vd2xlZGdlbWVudE1zQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICB0aGlzLmFja25vd2xlZGdlbWVudE1zQ29tcG9uZW50LnN1Ym1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNob3dBY2sgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25RZVN1Y2Nlc3MoKSB7XHJcbiAgICB0aGlzLnNob3dBY2sgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaW9uVmlld1dpbGxMZWF2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaHMuc2V0SGVscEF2YWlsYWJpbGl0eShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBpb25WaWV3RGlkRW50ZXIoKSB7XHJcbiAgICB0aGlzLndjU2VydmljZS5yZXNldFdlZWtseUNlcnREYXRhKCk7XHJcbiAgICB0aGlzLmhzLnNldEhlbHBBdmFpbGFiaWxpdHkodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVFcnJvcihlcnIpIHtcclxuICAgIHRoaXMuZXJyb3JNc2cgPSBlcnIubXNnO1xyXG4gIH1cclxuXHJcbiAgaGFzSGlyZWRTdGF0dXMoc3RhdHVzOiBib29sZWFuKSB7XHJcbiAgICAvL1RPRE86IFVwZGF0ZSB0aGlzIGZvciByZXR1cm4gdG8gd29yayBmb3IgaGlyZWQgY2FzZXNcclxuICAgICBpZiAoIXRoaXMuaXNNRSgpKSB7XHJcbiAgICAgIHRoaXMucmVhZE9ubHlGaWVsZHMgPSBzdGF0dXMgPyBbJ3JldHVybmluZ1RvV29yayddIDogbnVsbDtcclxuICAgICAgaWYgKHN0YXR1cykge1xyXG4gICAgICAgIHRoaXMucmVhZE9ubHlEYXRhID0geyByZXR1cm5pbmdUb1dvcms6IFwiWVwifTtcclxuICAgICAgfVxyXG4gICAgfSBcclxuICB9XHJcblxyXG4gIGhhc1dvcmtlZEZ1bGxUaW1lT3JTdGFydGVkV29ya2luZ1N0YXR1cyhzdGF0dXM6IGJvb2xlYW4pe1xyXG4gICAgY29uc3QgZm9ybSA9IHRoaXMud2Vla2x5UXVlc3Rpb25zPy5xdWVzdGlvbm5haXJlPy5xdWVzdGlvbm5haXJlPy5xdWVzdGlvbm5haXJlRm9ybT8uZm9ybTtcclxuICAgIGlmKHRoaXMuaXNNRSgpKXtcclxuICAgICAgaWYoc3RhdHVzICYmIGZvcm0pe1xyXG4gICAgICAgIHRoaXMucmVhZE9ubHlGaWVsZHMgPSBzdGF0dXMgPyBbJ3dvcmtQZXJmb3JtZWQnXTogbnVsbDtcclxuICAgICAgICB0aGlzLnJlYWRPbmx5RGF0YSA9IHt3b3JrUGVyZm9ybWVkOiBcIllcIn07XHJcbiAgICAgICAgZm9ybS5nZXQoJ3dvcmtQZXJmb3JtZWQnKT8uc2V0VmFsdWUoJ1knKTtcclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgIHRoaXMucmVhZE9ubHlGaWVsZHMgPSBzdGF0dXMgPyBbJ3dvcmtQZXJmb3JtZWQnXTogbnVsbDtcclxuICAgICAgICB0aGlzLnJlYWRPbmx5RGF0YSA9IHt3b3JrUGVyZm9ybWVkOiBudWxsfTtcclxuICAgICAgICBpZihmb3JtKXtcclxuICAgICAgICAgIGZvcm0uZ2V0KCd3b3JrUGVyZm9ybWVkJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVIaWRkZW5GaWVsZHMocmVzOiBXZWVrbHlDZXJ0RWxpZ2liaWxpdHlNb2RlbFYyKSB7XHJcblxyXG4gICAgdGhpcy5yZWFkT25seUZpZWxkcyA9IFsnaGlkU2hvd1JldHVyblRvV29ya1F1ZXN0aW9uJywgJ2hpZFNob3dSZXR1cm5lZFRvV29ya1F1ZXN0aW9uJywgJ2hpZFNob3dOZXdQZW5zaW9uUXVlc3Rpb24nLCAnaGlkU2hvd1BlbnNpb25DaGFuZ2VkUXVlc3Rpb24nLCAnaGlkU2hvd0Rpc21pc3NhbFBheUNoYW5nZWRRdWVzdGlvbicsICdoaWRQYXJ0VGltZUVtcGxveWVyQXZhaWxhYmxlJywgJ2hpZFJlbXVuZXJhdGlvbklzc3VlRXhpc3RzJywgJ2hpZElzRWxpZ2libGVGb3JEdWEnLCAnY2xhaW1hbnRJZCcsICdjbGFpbVdlZWtFbmREYXRlJywnZHVhQXBwSWQnLCdoaWRQYXJ0aWFsQ2xhaW1FbXBsb3ltZW50RmxhZycsJ2hpZFdvcmtTZWFyY2hBdWRpdEZsYWcnXTtcclxuICAgIHRoaXMucmVhZE9ubHlEYXRhID0geyBoaWRTaG93UmV0dXJuVG9Xb3JrUXVlc3Rpb246IHJlcy5oaWRTaG93UmV0dXJuVG9Xb3JrUXVlc3Rpb24sIGhpZFNob3dSZXR1cm5lZFRvV29ya1F1ZXN0aW9uOiByZXMuaGlkU2hvd1JldHVybmVkVG9Xb3JrUXVlc3Rpb24sIGhpZFNob3dOZXdQZW5zaW9uUXVlc3Rpb246IHJlcy5oaWRTaG93TmV3UGVuc2lvblF1ZXN0aW9uLCBoaWRTaG93UGVuc2lvbkNoYW5nZWRRdWVzdGlvbjogcmVzLmhpZFNob3dQZW5zaW9uQ2hhbmdlZFF1ZXN0aW9uLCBoaWRTaG93RGlzbWlzc2FsUGF5Q2hhbmdlZFF1ZXN0aW9uOiByZXMuaGlkU2hvd0Rpc21pc3NhbFBheUNoYW5nZWRRdWVzdGlvbiwgaGlkUGFydFRpbWVFbXBsb3llckF2YWlsYWJsZTogcmVzLmhpZFBhcnRUaW1lRW1wbG95ZXJBdmFpbGFibGUsIGhpZFJlbXVuZXJhdGlvbklzc3VlRXhpc3RzOiByZXMuaGlkUmVtdW5lcmF0aW9uSXNzdWVFeGlzdHMsIGhpZElzRWxpZ2libGVGb3JEdWE6IHJlcy5oaWRJc0VsaWdpYmxlRm9yRHVhLCBjbGFpbWFudElkOiByZXMuY2xhaW1hbnRJZCwgY2xhaW1XZWVrRW5kRGF0ZTogcmVzLmNsYWltV2Vla0VuZERhdGUsIGR1YUFwcElkOnJlcy5kdWFBcHBJZCwgaGlkUGFydGlhbENsYWltRW1wbG95bWVudEZsYWc6IHJlcy5oaWRQYXJ0aWFsQ2xhaW1FbXBsb3ltZW50RmxhZywgaGlkV29ya1NlYXJjaEF1ZGl0RmxhZzogcmVzLmhpZFdvcmtTZWFyY2hBdWRpdEZsYWcgfTtcclxuXHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGxvYWRDb21wbGV0ZShldmVudCkge1xyXG4gICAgIC8qIEZvciBNUywgdGhlIGJhY2sgYnV0dG9uIG5lZWRzIHRvIGxvYWQgY29tcGxldGUgZmlsbGVkIGRhdGEgYWxvbmcgd2l0aCBlbGlnaWJpbGl0eSBkYXRhLlxyXG4gICAgIEZvciBvdGhlciBzdGF0ZXMsIGV2ZXJ5dGhpbmcgaXMgaW4gcG9wdXAsIHNvIG9uIGNsb3NlLCBkYXRhIHN0aWxsIGlzIHRoZXJlIGluIG1vZGVsLlxyXG4gICAgIE5lZWRzIHdvcmsgKi9cclxuICAgLyogIGlmICh0aGlzLmlzTVMoKSAmJiB0aGlzLmFjdGl2ZUluZGV4ID09IDEgJiYgdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGEpIHtcclxuICAgICAgXHJcbiAgICAgIHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnREYXRhLndlZWtseWNlcnRFbGlnaWJpbGl0eU1vZGVsVjIgPSB0aGlzLndjU2VydmljZS53ZWVrbHlDZXJ0U2VydmVyRGF0YTtcclxuICAgICAgdGhpcy5kYXRhVG9Mb2FkID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydERhdGE7XHJcbiAgICAgIHRoaXMuaGFuZGxlSGlkZGVuRmllbGRzKHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhKTtcclxuICAgIH0gZWxzZXtcclxuICAgICAgdGhpcy5kYXRhVG9Mb2FkID0gdGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGE7XHJcbiAgICB9ICovXHJcbiAgICAgIHRoaXMuZGF0YVRvTG9hZCA9IHRoaXMud2NTZXJ2aWNlLndlZWtseUNlcnRTZXJ2ZXJEYXRhO1xyXG4gICAgLyoqIE5FVzogRm9yIExvYWRpbmcgdGhlIFByZS1zZWxlY3RlZCBxdWVzdGlvbiBpbiBjYXNlIG9mIFN0YXJ0ZWQgV29ya2luZyhTVFdLKSBmb3IgV1MgUmVjb3JkcyBhbmQgc2V0dGluZyB0aGUgdmFsdWUgWSBmb3Igd29ya1BlcmZvcm1lZCAqL1xyXG4gICAgICB0aGlzLndvcmtTZWFyY2hSZWNvcmRzID0gdGhpcy53Y1NlcnZpY2UuZ2V0V29ya1NlYXJjaFJlY29yZHMoKTtcclxuICAgIGlmICh0aGlzLmlzTUUoKSAmJiB0aGlzLndvcmtTZWFyY2hSZWNvcmRzKSB7XHJcbiAgICAgIGNvbnN0IGhhc1N0YXJ0ZWRXb3JraW5nID0gKHRoaXMud29ya1NlYXJjaFJlY29yZHMgPz8gW10pLnNvbWUoXHJcbiAgICAgICAgcmVjID0+IHJlYz8uc2VhcmNoUmVzdWx0ID09PSAnU1RXSydcclxuICAgICAgKTtcclxuICAgICAgaWYgKGhhc1N0YXJ0ZWRXb3JraW5nKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhVG9Mb2FkLndvcmtQZXJmb3JtZWQgPSBcIllcIjtcclxuICAgICAgICB0aGlzLnJlYWRPbmx5RmllbGRzID0gWyd3b3JrUGVyZm9ybWVkJ107XHJcbiAgICAgICAgdGhpcy5yZWFkT25seURhdGEgPSB7IHdvcmtQZXJmb3JtZWQ6IFwiWVwiIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKiBFTkQgKi9cclxuICAgICAgaWYgKHRoaXMud2NTZXJ2aWNlLmdldFdvcmtTZWFyY2hSZWNvcmRzQ291bnRXaXRoSGlyZWRTdGF0dXMoKSA+IDApIHsgICAgICAgIFxyXG4gICAgICAgIHRoaXMuaGFzSGlyZWRTdGF0dXModHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5kYXRhVG9Mb2FkLnJldHVybmluZ1RvV29yayA9IFwiWVwiO1xyXG4gICAgICB9XHJcbiAgICAgIC8vV2Vla2x5IEVhcm5pbmdzIHJlbWluZGVyIHBvcHVwIC0gc2hvd24gZXZlcnkgd2VlayBleGNlcHQgZm9yIHdhaXRpbmcgcGVyaW9kIHdlZWtcclxuICAgICAgaWYodGhpcy53Y1NlcnZpY2Uud2Vla2x5Q2VydFNlcnZlckRhdGEuaXNXYWl0aW5nV2Vla1NlcnZlZCA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy53ZWVrbHlXb3JrUGVyZm9ybWVkUG9wdXBGbGFnID0gdHJ1ZSksIDEwMDApO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQcmV2aW91c1N1bmRheShpbnB1dERhdGUpXHJcbiAge1xyXG4gICAgbGV0IHV0Y0RhdGUgPSBuZXcgRGF0ZShpbnB1dERhdGUgKyBcIlQwMDowMDowMFpcIik7XHJcbiAgICB1dGNEYXRlLnNldFVUQ0RhdGUodXRjRGF0ZS5nZXRVVENEYXRlKCkgLSA2KTtcclxuICAgIGxldCB5ZWFyID0gdXRjRGF0ZS5nZXRVVENGdWxsWWVhcigpO1xyXG4gICAgbGV0IG1vbnRoID0gU3RyaW5nKHV0Y0RhdGUuZ2V0VVRDTW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICBsZXQgZGF5ID0gU3RyaW5nKHV0Y0RhdGUuZ2V0VVRDRGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWA7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YXBwLWRhc2hib2FyZC1oZWxwICpuZ0lmPVwiaHMuaXNTaG93aW5nKClcIiBbYWN0aXZlSW5kZXhdPVwiNFwiPjwvYXBwLWRhc2hib2FyZC1oZWxwPlxyXG4gICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJkb3RzXCI+PC9pb24tc3Bpbm5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmIGVycm9yTXNnXCIgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLXBhZGRpbmctdG9wXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogNTBweDtcIj5cclxuICAgICAgPGlvbi1pY29uIG5hbWU9XCJhbGVydC1jaXJjbGUtb3V0bGluZVwiIHN0eWxlPVwiZm9udC1zaXplOiA2MHB4OyBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlcik7XCI+PC9pb24taWNvbj5cclxuICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cInNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChlcnJvck1zZylcIiBzdHlsZT1cImNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFuZ2VyKTsgZm9udC1zaXplOiBsYXJnZXI7XCIgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgaW9uLXBhZGRpbmdcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFlcnJvck1zZ1wiPlxyXG4gICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBvZmZzZXRYbD1cIjFcIiAqbmdJZj1cIiFpc01TKCkgfHwgKGlzTVMoKSAmJiAhbXVsdGlwbGVXZWVrc0R1ZSAmJiAhZGlzcGxheUNvbnRpbnVlZFdlZWtzRmlsZWRIZWFkaW5nKVwiPlxyXG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJhcHAtaGVhZGluZ1wiPnt7J3dlZWtsaWVzLnYyLnRhc2suaGVhZGluZycgfCB0cmFuc2xhdGU6ZHluYW1pY1BhcmFtIH19PC9oMT5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuXHJcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBvZmZzZXRYbD1cIjFcIiAqbmdJZj1cIihpc01TKCkgJiYgbXVsdGlwbGVXZWVrc0R1ZSAmJiAhZGlzcGxheUNvbnRpbnVlZFdlZWtzRmlsZWRIZWFkaW5nKVwiPlxyXG4gICAgICAgICAgICA8aDEgY2xhc3M9XCJhcHAtaGVhZGluZ1wiPnt7J3dlZWtsaWVzLnYyLnRhc2subXVsdGlwbGUud2Vla3MuaGVhZGluZycgfCB0cmFuc2xhdGU6ZHluYW1pY1BhcmFtIH19PC9oMT5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuXHJcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBvZmZzZXRYbD1cIjFcIiAqbmdJZj1cIihpc01TKCkgJiYgbXVsdGlwbGVXZWVrc0R1ZSAmJiBkaXNwbGF5Q29udGludWVkV2Vla3NGaWxlZEhlYWRpbmcpXCI+XHJcbiAgICAgICAgICAgIDxoMSBjbGFzcz1cImFwcC1oZWFkaW5nXCI+e3snd2Vla2xpZXMudjIudGFzay5tdWx0aXBsZS53ZWVrcy5oZWFkaW5nLmNvbnRpbnVlZCcgfCB0cmFuc2xhdGU6ZHluYW1pY1BhcmFtIH19PC9oMT5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgIDwvaW9uLWdyaWQ+XHJcblxyXG4gICAgICA8c2VjdGlvbiAqbmdJZj1cIiFpc01TKClcIj5cclxuICAgICAgICA8aW9uLWdyaWQ+XHJcbiAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgc2l6ZVhsPVwiNVwiIG9mZnNldFhsPVwiMVwiIHNpemVMZz1cIjZcIj5cclxuICAgICAgICAgICAgICA8YXBwLXdvcmstc2VhcmNoLXF1ZXN0aW9uLXYyICAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgIWVycm9yTXNnXCIgKHN1Y2Nlc3MpPVwiZ29Ub1dlZWtseUNlcnQoKVwiIFtzaG93Q291bnRlcl09XCJ0cnVlXCIgKGhhc0hpcmVkU3RhdHVzKT1cImhhc0hpcmVkU3RhdHVzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChoYXNXb3JrZWRGdWxsVGltZU9yU3RhcnRlZFdvcmtpbmdTdGF0dXMpPVwiaGFzV29ya2VkRnVsbFRpbWVPclN0YXJ0ZWRXb3JraW5nU3RhdHVzKCRldmVudClcIj48L2FwcC13b3JrLXNlYXJjaC1xdWVzdGlvbi12Mj5cclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplWGw9XCI1XCIgc2l6ZUxnPVwiNlwiPiAgIFxyXG4gICAgICAgICAgICAgIDxhcHAtZm9ybS1idWlsZGVyICN3ZWVrbHlRdWVzdGlvbnMgW2Zsb3dLZXldPVwiJ3dlZWtseS1jZXJ0J1wiIFthdXRvU2F2ZV09XCJmYWxzZVwiIFtzaG93T25seVF1ZXN0aW9uXT1cInRydWVcIiBbaGlkZUhlYWRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbaGlkZUZvb3Rlcl09XCJ0cnVlXCIgW3NpemVYc109XCIxMlwiIFtzaXplU21dPVwiMTJcIiBbc2l6ZU1kXT1cIjEyXCIgW3NpemVMZ109XCIxMlwiIFtzaXplWGxdPVwiMTJcIiBbb2Zmc2V0WGxdPVwiMFwiIFtvZmZzZXRMZ109XCIwXCIgXHJcbiAgICAgICAgICAgICAgIChvbkVycm9yKT1cImhhbmRsZUVycm9yKCRldmVudClcIiAob25Db21wbGV0ZSk9XCJzdWNjZXNzKCRldmVudClcIiBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiIFtkYXRhXT1cImRhdGFUb0xvYWRcIiBcclxuICAgICAgICAgICAgICAgW211bHRpTW9kZV09XCJ0cnVlXCIgW3JlYWRPbmx5RmllbGRzXT1cInJlYWRPbmx5RmllbGRzXCIgKG9uTG9hZENvbXBsZXRlKT1cImxvYWRDb21wbGV0ZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICA8L2FwcC1mb3JtLWJ1aWxkZXI+ICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICA8c2VjdGlvbiAqbmdJZj1cImlzTVMoKVwiPlxyXG4gICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjNcIiBvZmZzZXRMZz1cIjNcIiBvZmZzZXRYbD1cIjNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZFwiPlxyXG4gICAgICAgICAgICAgIDxzZWN0aW9uICpuZ0lmPVwiYWN0aXZlSW5kZXggPT0gMCB8fCBhY3RpdmVJbmRleCA9PSAxXCI+XHJcbiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLXdlZWtsaWVzXCI+PGI+IHt7IGNvbnRlbnRzW2FjdGl2ZUluZGV4XSB9fSA8L2I+PC9oMT5cclxuICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgPHNlY3Rpb24gKm5nSWY9XCJhY3RpdmVJbmRleCA9PSAyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLXdlZWtsaWVzLWFja1wiPjxiPiB7eyBjb250ZW50c1thY3RpdmVJbmRleF0gfX0gPC9iPjwvaDE+XHJcbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMlwiPjwvaW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwid2Vla2xpZXMtc3RlcHNcIiBzaXplPVwiMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkXCIgPlxyXG4gICAgICAgICAgICAgIDxwLXN0ZXBzIFttb2RlbF09XCJpdGVtc1wiIFthY3RpdmVJbmRleF09XCJhY3RpdmVJbmRleFwiIFtzdHlsZUNsYXNzXT1cIidjb21wbGV0ZWQtJythY3RpdmVJbmRleFwiIFtuZ1N0eWxlXT1cInsnLS1zdGVwLXdpZHRoJzonNTBweCcsJy0tc3RlcC1oZWlnaHQnOic1MHB4J31cIj5cclxuICAgICAgICAgICAgICA8L3Atc3RlcHM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tY29sIHNpemU9XCIzXCI+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgPGlvbi1jb2wgc3R5bGU9XCJtYXJnaW4tdG9wOiAtMzVweDtcInNpemU9XCIxMlwiIHNpemVTbT1cIjhcIiBzaXplWHM9XCIxMlwiIHNpemVNZD1cIjhcIiBzaXplTGc9XCI2XCIgc2l6ZVhsPVwiNVwiIG9mZnNldExnPVwiM1wiIG9mZnNldFhsPVwiM1wiIG9mZnNldE1kPVwiMVwiPlxyXG4gICAgICAgICAgICA8cC1kaXZpZGVyPjwvcC1kaXZpZGVyPlxyXG4gICAgICAgICAgPC9pb24tY29sPiAgICAgIFxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICBcclxuICAgICAgICA8aW9uLWdyaWQgKm5nSWY9XCJhY3RpdmVJbmRleCA9PSAwXCI+XHJcbiAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiOFwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiOFwiIHNpemVMZz1cIjZcIiBzaXplWGw9XCI1XCIgb2Zmc2V0TGc9XCIzXCIgb2Zmc2V0WGw9XCIzXCIgb2Zmc2V0TWQ9XCIxXCI+XHJcbiAgICAgICAgICAgICAgPGFwcC13b3JrLXNlYXJjaC1xdWVzdGlvbi12MiAgKm5nSWY9XCIhaXNMb2FkaW5nICYmICFlcnJvck1zZ1wiIChzdWNjZXNzKT1cImdvVG9XZWVrbHlDZXJ0KClcIiBbc2hvd0NvdW50ZXJdPVwidHJ1ZVwiIChoYXNIaXJlZFN0YXR1cyk9XCJoYXNIaXJlZFN0YXR1cygkZXZlbnQpXCI+PC9hcHAtd29yay1zZWFyY2gtcXVlc3Rpb24tdjI+XHJcbiAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICA8L2lvbi1ncmlkPlxyXG4gICAgICAgIDxpb24tZ3JpZCAqbmdJZj1cImFjdGl2ZUluZGV4ID09IDFcIj5cclxuICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgc2l6ZU1kPVwiMTBcIiBzaXplTGc9XCI1LjI1XCIgc2l6ZVhsPVwiNS4yNVwiIG9mZnNldExnPVwiM1wiIG9mZnNldFhsPVwiM1wiIG9mZnNldE1kPVwiMVwiPiAgIFxyXG4gICAgICAgICAgICAgIDxhcHAtZm9ybS1idWlsZGVyICN3ZWVrbHlRdWVzdGlvbnMgW2Zsb3dLZXldPVwiJ3dlZWtseS1jZXJ0J1wiIFthdXRvU2F2ZV09XCJ0cnVlXCIgW3Nob3dPbmx5UXVlc3Rpb25dPVwidHJ1ZVwiIFtoaWRlSGVhZGVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtoaWRlRm9vdGVyXT1cInRydWVcIiBbc2l6ZVhzXT1cIjEyXCIgW3NpemVTbV09XCIxMlwiIFtzaXplTWRdPVwiMTJcIiBbc2l6ZUxnXT1cIjEyXCIgW3NpemVYbF09XCIxMlwiIFtvZmZzZXRYbF09XCIwXCIgW29mZnNldExnXT1cIjBcIiBcclxuICAgICAgICAgICAgICAgKG9uRXJyb3IpPVwiaGFuZGxlRXJyb3IoJGV2ZW50KVwiIChvbkNvbXBsZXRlKT1cInN1Y2Nlc3MoJGV2ZW50KVwiIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCIgW2RhdGFdPVwiZGF0YVRvTG9hZFwiIFxyXG4gICAgICAgICAgICAgICBbbXVsdGlNb2RlXT1cInRydWVcIiBbcmVhZE9ubHlGaWVsZHNdPVwicmVhZE9ubHlGaWVsZHNcIiAob25Mb2FkQ29tcGxldGUpPVwibG9hZENvbXBsZXRlKCRldmVudClcIj5cclxuICAgICAgICAgICAgIDwvYXBwLWZvcm0tYnVpbGRlcj4gICAgICAgICBcclxuICAgICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgPCEtLSBXZWVrbHkgRWFybmluZ3MgcmVtaW5kZXIgcG9wdXAgLSBzaG93biBldmVyeSB3ZWVrIGV4Y2VwdCBmb3Igd2FpdGluZyBwZXJpb2Qgd2VlayAtLT5cclxuICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwid2Vla2x5V29ya1BlcmZvcm1lZFBvcHVwRmxhZ1wiPlxyXG4gICAgICAgICAgICA8YXBwLXdlZWtseS13b3JrLXBlcmZvcm1lZC1wb3B1cCBbc2hvd1dlZWtseVdvcmtQZXJmb3JtZWRQb3B1cF09XCJ0cnVlXCI+PC9hcHAtd2Vla2x5LXdvcmstcGVyZm9ybWVkLXBvcHVwPlxyXG4gICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgIDwvaW9uLWdyaWQ+XHJcbiAgICAgICAgPGlvbi1ncmlkICpuZ0lmPVwiYWN0aXZlSW5kZXggPT0gMlwiPlxyXG4gICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIHNpemVTbT1cIjEyXCIgc2l6ZVhzPVwiMTJcIiBzaXplTWQ9XCIxMFwiIHNpemVMZz1cIjZcIiBzaXplWGw9XCI2XCIgb2Zmc2V0TGc9XCIzXCIgb2Zmc2V0WGw9XCIzXCIgb2Zmc2V0TWQ9XCIxXCI+XHJcbiAgICAgICAgICAgICAgPGFwcC1hY2tub3dsZWRnZW1lbnQtbXMgKm5nSWY9XCJzaG93QWNrXCIgKHN1Y2Nlc3MpPVwiZmlsZVdlZWtseUNlcnREb25lKCRldmVudClcIiAob25DbG9zZSk9XCJjbG9zZUFjaygpXCI+XHJcbiAgICAgICAgICAgICAgPC9hcHAtYWNrbm93bGVkZ2VtZW50LW1zPiAgIFxyXG4gICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgPC9pb24tZ3JpZD5cclxuICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgICAgPGFwcC1tdWx0aS1xdWVzdGlvbm5haXJlIFtxZVF1ZXJ5TW9kZWxzXT1cInFlUXVlcnlNb2RlbHNcIiAqbmdJZj1cImlzT3BlblFlXCIgXHJcbiAgICAob25Db21wbGV0ZSk9XCJvcGVuU3VtbWFyeVBvc3RRdWVzdGlvbm5haXJlcygkZXZlbnQpXCIgKG1vZGVsQ2FuY2VsKT1cIm9uUWVDbG9zZSgpXCIgXHJcbiAgICBbaGVhZGVyXT1cIidGb2xsb3ctdXAgUXVlc3Rpb25zJyB8IHRyYW5zbGF0ZVwiIFtzaG93UXVlc3Rpb25OdW1iZXJdPVwidHJ1ZVwiPjwvYXBwLW11bHRpLXF1ZXN0aW9ubmFpcmU+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWlzTVMoKVwiPlxyXG4gICAgICAgIDxhcHAtYWNrbm93bGVkZ2VtZW50LXYyICpuZ0lmPVwic2hvd0Fja1wiIChzdWNjZXNzKT1cImZpbGVXZWVrbHlDZXJ0RG9uZSgkZXZlbnQpXCIgKG9uQ2xvc2UpPVwiY2xvc2VBY2soKVwiPlxyXG4gICAgICAgIDwvYXBwLWFja25vd2xlZGdlbWVudC12Mj4gXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGFwcC1jb25maXJtYXRpb24gKm5nSWY9XCJzaG93Q29uZmlybWF0aW9uXCIgKG9uQ2xvc2UpPVwiY2xvc2VDb25maXJtYXRpb25Qb3B1cCgpXCIgW2RhdGFdPVwiY29uZmlybWF0aW9uRGF0YVwiIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCI+PC9hcHAtY29uZmlybWF0aW9uPlxyXG4gICAgICBcclxuICAgICAgPGFwcC1pbnRlcmltLWNvbmZpcm1hdGlvbiAqbmdJZj1cInNob3dJbnRlcmltQ29uZmlybWF0aW9uXCIgKG9uQ2xvc2UpPVwiY2xvc2VDb25maXJtYXRpb25Qb3B1cCgpXCIgKG9uTmV4dCk9XCJuYXZpZ2F0ZVRvV2Vla2xpZXMoJGV2ZW50KVwiIFtkYXRhXT1cImNvbmZpcm1hdGlvbkRhdGFcIiBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiPjwvYXBwLWludGVyaW0tY29uZmlybWF0aW9uPlxyXG5cclxuICAgICAgPGlvbi1mb290ZXIgKm5nSWY9XCIhaXNNUygpXCI+XHJcbiAgICAgICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgaW9uLWNvbCBzaXplPVwiMTJcIiBzaXplWGw9XCI1XCIgb2Zmc2V0WGw9XCIxXCIgc2l6ZUxnPVwiNlwiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiAoY2xpY2spPVwiZ29Ib21lKClcIj5DbG9zZVxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgc2l6ZT1cIjEyXCIgc2l6ZVhsPVwiNVwiIHNpemVMZz1cIjZcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJzb2xpZFwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwib3Blbk5leHRQYWdlKClcIiA+U3VibWl0XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgIDwvaW9uLWZvb3Rlcj5cclxuICAgICAgPHNlY3Rpb24gKm5nSWY9XCJpc01TKClcIj5cclxuICAgICAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1wYWRkaW5nIGJ1dHRvbnMtcm93XCI+XHJcbiAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiM1wiPjwvaW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwid2Vla2xpZXMtbGVmdC1idXR0b25zXCIgc2l6ZT1cIjNcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJjbG9zZVwiIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiICpuZ0lmPVwiYWN0aXZlSW5kZXggPT0gMFwiIChjbGljayk9XCJnb0hvbWUoKVwiPkNsb3NlXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gaWQ9XCJiYWNrXCIgc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgKm5nSWY9XCJhY3RpdmVJbmRleCAhPSAwXCIgKGNsaWNrKT1cImFjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXggLSAxXCI+XHJcbiAgICAgICAgICAgICAgQmFjazwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwid2Vla2xpZXMtcmlnaHQtYnV0dG9uc1wiIHNpemU9XCIzXCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGlkPVwibmV4dFwiIHNoYXBlPVwicm91bmRcIiBmaWxsPVwic29saWRcIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cIm9wZW5OZXh0UGFnZSgpXCIgKm5nSWY9XCJhY3RpdmVJbmRleCAhPSAyXCI+TmV4dFxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIGlkPVwic3VibWl0XCIgc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJzb2xpZFwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwic2hvd0Fja25vd2xlZGdlbWVudCgpXCIgKm5nSWY9XCJhY3RpdmVJbmRleCA9PSAyXCI+XHJcbiAgICAgICAgICAgICAgU3VibWl0PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjNcIj48L2lvbi1jb2w+XHJcbiAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICA8L2Rpdj4iXX0=
@@ -49447,14 +49447,20 @@ class WeeklyCertificationComponent extends BasePage {
49447
49447
  'label_maxRtwDate': this.parsedMaxRTWDate,
49448
49448
  };
49449
49449
  // if the user is navigating to weeklies from interim confirmation to continue filing data will be stored
49450
- const storedData = localStorage.getItem('interimConfirmationData');
49451
- if (storedData) {
49452
- const deencodedParams = atob((storedData));
49453
- this.receivedData = JSON.parse(decodeURIComponent(deencodedParams));
49454
- if (this.dynamicParam.claimantId != this.receivedData.claimantId) {
49455
- this.receivedData = null;
49450
+ try {
49451
+ const storedData = localStorage?.getItem('interimConfirmationData');
49452
+ if (storedData) {
49453
+ const decoded = decodeURIComponent(atob(storedData));
49454
+ this.receivedData = JSON.parse(decoded);
49455
+ if (this.dynamicParam.claimantId != this.receivedData.claimantId) {
49456
+ this.receivedData = null;
49457
+ }
49456
49458
  }
49457
49459
  }
49460
+ catch (err) {
49461
+ console.error('localStorage parsing failed:', err);
49462
+ this.receivedData = null;
49463
+ }
49458
49464
  // checking data for flag to continue to file for multiple weeks
49459
49465
  if (this.receivedData && (this.dynamicParam.claimantId == this.receivedData.claimantId) &&
49460
49466
  this.receivedData.continueToFileForMultipleWeeks == true) {
@@ -49463,6 +49469,7 @@ class WeeklyCertificationComponent extends BasePage {
49463
49469
  this.dynamicParam.nextCertificationToFileCount = this.receivedData.currentNumberFiling;
49464
49470
  this.dynamicParam.totalToCertify = this.receivedData.total;
49465
49471
  // this.numberOfMultipleWeeksDue = this.receivedData.count;
49472
+ console.error("Eligibility Success");
49466
49473
  // if more weeks are due set the next sunday and saturday days
49467
49474
  if (this.wcService.weeklyCertServerData.weeksToBeCertified.length > 1) {
49468
49475
  this.dynamicParam.next_saturday = this.wcService.weeklyCertServerData.weeksToBeCertified[1];
@@ -49516,6 +49523,7 @@ class WeeklyCertificationComponent extends BasePage {
49516
49523
  this.wcService.weeklyCertServerData.hidReemWorkSearchRecordCount = this.reemWorkSearchRecordCount;
49517
49524
  //
49518
49525
  this.wcService.getClaimantWorkSearchJournalRecords(this.wcService.getSaturdayDateAsString()).subscribe(res => {
49526
+ console.error("WS Result");
49519
49527
  this.wcService.workSearchJournal = res;
49520
49528
  this.wcService.weeklyCertData.workSearchRecords = res.workSearchRecords;
49521
49529
  if (this.isME() && this.wcService.weeklyCertData.workSearchRecords) {
@@ -49533,6 +49541,7 @@ class WeeklyCertificationComponent extends BasePage {
49533
49541
  }
49534
49542
  }
49535
49543
  openNextPage() {
49544
+ console.error("ONP");
49536
49545
  if (this.workSearchComponent) {
49537
49546
  if (this.wcService.getDisplayWorkSearchScreen()) {
49538
49547
  this.workSearchComponent.submitForm();
@@ -49549,6 +49558,7 @@ class WeeklyCertificationComponent extends BasePage {
49549
49558
  }
49550
49559
  }
49551
49560
  goToWeeklyCert() {
49561
+ console.error("GTW");
49552
49562
  if (this.isMS()) {
49553
49563
  if (this.activeIndex == 0) {
49554
49564
  this.activeIndex = 1;
@@ -49601,6 +49611,7 @@ class WeeklyCertificationComponent extends BasePage {
49601
49611
  this.wcService.weeklyCertData.available = (this.wcService.weeklyCertData.availableSeap);
49602
49612
  }
49603
49613
  this.wcService.determineQuestionniareToOpen().subscribe(res => {
49614
+ console.error("qes Success");
49604
49615
  this.statusModel = res.statusModel;
49605
49616
  this.qeQueryModels = res.statusModel.qeQueryModels;
49606
49617
  this.wcService.weeklyCertData.potentialIssues = res.potentialIssueIds;
@@ -49703,7 +49714,9 @@ class WeeklyCertificationComponent extends BasePage {
49703
49714
  localStorage.setItem('interimConfirmationData', data);
49704
49715
  }
49705
49716
  this.wcService.resetWeeklyCertData();
49706
- window.location.reload();
49717
+ setTimeout(() => {
49718
+ window.location.replace(window.location.href);
49719
+ }, 100);
49707
49720
  }
49708
49721
  goHome() {
49709
49722
  if (this.ls.isClaimant()) {