@hmcts/ccd-case-ui-toolkit 7.2.35 → 7.2.36-3044-2761

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/esm2022/lib/components/banners/notification-banner/notification-banner.component.mjs +4 -4
  2. package/esm2022/lib/components/header/header-bar/header-bar.component.mjs +5 -5
  3. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +3 -3
  4. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +5 -5
  5. package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +5 -5
  6. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +9 -5
  7. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +9 -5
  8. package/esm2022/lib/shared/components/case-timeline/case-timeline.component.mjs +4 -4
  9. package/esm2022/lib/shared/components/case-viewer/case-basic-access-view/case-basic-access-view.component.mjs +4 -4
  10. package/esm2022/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +4 -4
  11. package/esm2022/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.mjs +9 -4
  12. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +16 -3
  13. package/esm2022/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +15 -8
  14. package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.mjs +13 -9
  15. package/esm2022/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +4 -4
  16. package/esm2022/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +4 -4
  17. package/esm2022/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +4 -2
  18. package/esm2022/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.mjs +9 -5
  19. package/esm2022/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.mjs +9 -5
  20. package/esm2022/lib/shared/components/event-start/components/task-assigned/task-assigned.component.mjs +10 -6
  21. package/esm2022/lib/shared/components/event-start/components/task-conflict/task-conflict.component.mjs +3 -3
  22. package/esm2022/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.mjs +9 -5
  23. package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +3 -3
  24. package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +6 -6
  25. package/esm2022/lib/shared/components/palette/address/write-address-field.component.mjs +4 -4
  26. package/esm2022/lib/shared/components/palette/case-file-view/case-file-view-field.component.mjs +4 -4
  27. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder-selector/case-file-view-folder-selector.component.mjs +4 -4
  28. package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +9 -9
  29. package/esm2022/lib/shared/components/palette/complex/read-complex-field-collection-table.component.mjs +5 -4
  30. package/esm2022/lib/shared/components/palette/document/read-document-field.component.mjs +7 -7
  31. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +6 -6
  32. package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +5 -5
  33. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-from-table.component.mjs +12 -12
  34. package/esm2022/lib/shared/components/palette/linked-cases/components/linked-cases-table/linked-cases-to-table.component.mjs +7 -7
  35. package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +6 -6
  36. package/esm2022/lib/shared/components/palette/linked-cases/read-linked-cases-field.component.mjs +7 -7
  37. package/esm2022/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +5 -5
  38. package/esm2022/lib/shared/components/palette/palette.module.mjs +6 -2
  39. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +26 -15
  40. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.mjs +6 -2
  41. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +71 -69
  42. package/esm2022/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.mjs +23 -19
  43. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +5 -5
  44. package/esm2022/lib/shared/components/palette/query-management/components/query-list/query-list.component.mjs +5 -5
  45. package/esm2022/lib/shared/components/search-result/search-result.component.mjs +5 -5
  46. package/esm2022/lib/shared/directives/index.mjs +2 -1
  47. package/esm2022/lib/shared/directives/welsh-translated-markdown/index.mjs +3 -0
  48. package/esm2022/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.directive.mjs +104 -0
  49. package/esm2022/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.module.mjs +21 -0
  50. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +601 -404
  51. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  52. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts +2 -0
  53. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -1
  54. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +2 -0
  55. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  56. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts +2 -0
  57. package/lib/shared/components/case-viewer/case-challenged-access-success/case-challenged-access-success.component.d.ts.map +1 -1
  58. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +1 -0
  59. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  60. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  61. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts +2 -0
  62. package/lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.d.ts.map +1 -1
  63. package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts.map +1 -1
  64. package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts +2 -0
  65. package/lib/shared/components/event-start/components/multiple-tasks-exist/multiple-tasks-exist.component.d.ts.map +1 -1
  66. package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts +2 -0
  67. package/lib/shared/components/event-start/components/no-tasks-available/no-tasks-available.component.d.ts.map +1 -1
  68. package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts +2 -0
  69. package/lib/shared/components/event-start/components/task-assigned/task-assigned.component.d.ts.map +1 -1
  70. package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts +2 -0
  71. package/lib/shared/components/event-start/components/task-unassigned/task-unassigned.component.d.ts.map +1 -1
  72. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +2 -2
  73. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -1
  74. package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts.map +1 -1
  75. package/lib/shared/components/palette/palette.module.d.ts +18 -17
  76. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  77. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts +2 -0
  78. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-options/qualifying-question-options.component.d.ts.map +1 -1
  79. package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts +2 -0
  80. package/lib/shared/components/palette/query-management/components/query-confirmation/query-confirmation.component.d.ts.map +1 -1
  81. package/lib/shared/directives/index.d.ts +1 -0
  82. package/lib/shared/directives/index.d.ts.map +1 -1
  83. package/lib/shared/directives/welsh-translated-markdown/index.d.ts +3 -0
  84. package/lib/shared/directives/welsh-translated-markdown/index.d.ts.map +1 -0
  85. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.directive.d.ts +76 -0
  86. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.directive.d.ts.map +1 -0
  87. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.module.d.ts +8 -0
  88. package/lib/shared/directives/welsh-translated-markdown/welsh-translated-markdown.module.d.ts.map +1 -0
  89. package/package.json +1 -1
@@ -492,7 +492,7 @@ export class CaseFullAccessViewComponent {
492
492
  }
493
493
  // found tasks or hearing tab
494
494
  if (foundTab) {
495
- this.router.navigate(['cases', 'case-details', this.caseDetails.case_id, foundTab.id]).then(() => {
495
+ this.router.navigate(['cases', 'case-details', this.caseDetails.case_type.jurisdiction.id, this.caseDetails.case_type.id, this.caseDetails.case_id, foundTab.id]).then(() => {
496
496
  matTab = this.tabGroup._tabs.find((x) => x.textLabel === foundTab.label);
497
497
  // Update selectedIndex only if matTab.position is a non-zero number (positive or negative); this means the
498
498
  // matTab is not already selected (position is relative; positive = right, negative = left) or it would be 0
@@ -507,7 +507,7 @@ export class CaseFullAccessViewComponent {
507
507
  this.caseDetails.tabs.sort((aTab, bTab) => aTab.order > bTab.order ? 1 : (bTab.order > aTab.order ? -1 : 0));
508
508
  // select the first tab checking if the tab is visible
509
509
  const preSelectTab = this.findPreSelectedActiveTab();
510
- this.router.navigate(['cases', 'case-details', this.caseDetails.case_id], { fragment: preSelectTab.label }).then(() => {
510
+ this.router.navigate(['cases', 'case-details', this.caseDetails.case_type.jurisdiction.id, this.caseDetails.case_type.id, this.caseDetails.case_id], { fragment: preSelectTab.label }).then(() => {
511
511
  matTab = this.tabGroup._tabs.find((x) => x.textLabel === preSelectTab.label);
512
512
  // Update selectedIndex only if matTab.position is a non-zero number (positive or negative); this means the
513
513
  // matTab is not already selected (position is relative; positive = right, negative = left) or it would be 0
@@ -554,14 +554,21 @@ export class CaseFullAccessViewComponent {
554
554
  // Hack to get ID from tab as it's not easily achieved through Angular Material Tabs
555
555
  const tab = matTab['_viewContainerRef'];
556
556
  const id = tab.element.nativeElement.id;
557
- // cases/case-details/:caseId/hearings
558
- // cases/case-details/:caseId/roles-and-access
559
- this.router.navigate([id], { relativeTo: this.route });
557
+ // cases/case-details/:jurisdiction/:caseType/:caseId/hearings
558
+ // cases/case-details/:jurisdiction/:caseType/:caseId/roles-and-access
559
+ this.router.navigate([
560
+ 'cases',
561
+ 'case-details',
562
+ this.caseDetails.case_type.jurisdiction.id,
563
+ this.caseDetails.case_type.id,
564
+ this.caseDetails.case_id,
565
+ id
566
+ ], { relativeTo: this.route.root });
560
567
  }
561
568
  else {
562
569
  // Routing here is based on tab label, not ideal
563
- // cases/case-details/:caseId#tabLabel
564
- this.router.navigate(['cases', 'case-details', this.caseDetails.case_id], { fragment: tabLabel });
570
+ // cases/case-details/:jurisdiction/:caseType/:caseId#tabLabel
571
+ this.router.navigate(['cases', 'case-details', this.caseDetails.case_type.jurisdiction.id, this.caseDetails.case_type.id, this.caseDetails.case_id], { fragment: tabLabel });
565
572
  }
566
573
  }
567
574
  onLinkClicked(triggerOutputEventText) {
@@ -722,4 +729,4 @@ export class CaseFullAccessViewComponent {
722
729
  args: ['tabGroup', { static: false }]
723
730
  }] }); })();
724
731
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFullAccessViewComponent, { className: "CaseFullAccessViewComponent", filePath: "lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.ts", lineNumber: 46 }); })();
725
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQzVCLFNBQVMsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6SCxPQUFPLEVBQTBCLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMs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M0UsOENBSXlEO1lBQXZELDJKQUF5QixnQ0FBNEIsSUFBQztZQUN4RCxpQkFBc0I7WUFDdEIsa0NBQW1GO1lBRWpGLEFBREYsOEJBQXNCLGFBQ1M7WUFDM0IscUNBQStEO1lBQy9ELDRFQUFxRjtZQUd2RixpQkFBTTtZQUNOLDRFQUFzRDtZQU94RCxpQkFBTTtZQUNOLDRFQUF3RTtZQU90RSxBQURGLCtCQUFzQixlQUNLO1lBQ3ZCLGlHQUF1QztZQStDM0MsQUFERSxpQkFBTSxFQUNGOztZQXZHQSxrSEFBaUY7WUFjakYsY0FBNEI7WUFBNUIscURBQTRCO1lBYWhDLGNBQXdDO1lBRXhDLEFBREEsQUFEQSwwREFBd0Msb0RBQ08sb0RBQ0E7WUFHbkMsY0FBOEI7WUFBQyxBQUEvQixnREFBOEIsMkJBQXVCO1lBRzlDLGVBQTJCO1lBQTNCLDZDQUEyQjtZQUNULGNBQWdEO1lBQWhELDZFQUFnRDtZQUkvRSxjQUFzQjtZQUF0QiwyQ0FBc0I7WUFRUCxjQUErQztZQUEvQyx3RUFBK0M7WUFRbkQsZUFBc0I7WUFBdEIsMkNBQXNCOzs7aUZEWjVCLDJCQUEyQjtjQUx2QyxTQUFTOzJCQUNFLDJCQUEyQjs0akJBWXJCLFFBQVE7a0JBQXZCLEtBQUs7WUFDVSxnQkFBZ0I7a0JBQS9CLEtBQUs7WUFDVSxXQUFXO2tCQUExQixLQUFLO1lBQ1UsYUFBYTtrQkFBNUIsS0FBSztZQUNVLFlBQVk7a0JBQTNCLEtBQUs7WUEyQjJDLFFBQVE7a0JBQXhELFNBQVM7bUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7a0ZBdkM3QiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZywgTWF0TGVnYWN5RGlhbG9nQ29uZmlnIGFzIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHsgTWF0TGVnYWN5VGFiIGFzIE1hdFRhYiwgTWF0TGVnYWN5VGFiR3JvdXAgYXMgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktdGFicyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgUnB4VHJhbnNsYXRlUGlwZSB9IGZyb20gJ3JweC14dWktdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBOb3RpZmljYXRpb25CYW5uZXJDb25maWcsXG4gIE5vdGlmaWNhdGlvbkJhbm5lckhlYWRlckNsYXNzLFxuICBOb3RpZmljYXRpb25CYW5uZXJUeXBlXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvYmFubmVycy9ub3RpZmljYXRpb24tYmFubmVyJztcbmltcG9ydCB7IFNob3dDb25kaXRpb24gfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEFjdGl2aXR5LCBDYXNlRmllbGQsIENhc2VUYWIsIENhc2VWaWV3LCBDYXNlVmlld1RyaWdnZXIsIERSQUZUX1FVRVJZX1BBUkFNLCBEaXNwbGF5TW9kZSwgRHJhZnQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZVZpZXdFdmVudElkcyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLXZpZXcvY2FzZS12aWV3LWV2ZW50LWlkcy5lbnVtJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5UG9sbGluZ1NlcnZpY2UsXG4gIEFsZXJ0U2VydmljZSxcbiAgRHJhZnRTZXJ2aWNlLFxuICBFcnJvck5vdGlmaWVyU2VydmljZSxcbiAgRmllbGRzVXRpbHMsXG4gIExvYWRpbmdTZXJ2aWNlLFxuICBOYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLFxuICBOYXZpZ2F0aW9uT3JpZ2luLFxuICBPcmRlclNlcnZpY2UsXG4gIFNlc3Npb25TdG9yYWdlU2VydmljZVxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2NvbnZlcnQtaHJlZi10by1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEZWxldGVPckNhbmNlbERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZ3MnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb250ZXh0IH0gZnJvbSAnLi4vLi4vZXJyb3InO1xuaW1wb3J0IHsgaW5pdERpYWxvZyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgTGlua2VkQ2FzZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGFsZXR0ZS9saW5rZWQtY2FzZXMvc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jYXNlLWZsYWctc3RhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZ1bGwtYWNjZXNzLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT1JJR0lOX1FVRVJZX1BBUkFNID0gJ29yaWdpbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX1NUQVJUID0gJ0dvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfQ09OVElOVUUgPSAnSWdub3JlIFdhcm5pbmcgYW5kIEdvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVTklDT0RFX1NQQUNFID0gJyUyMCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU1BBQ0UgPSAnICc7XG4gIHByaXZhdGUgcmVhZG9ubHkgSEVBUklOR1NfVEFCX0xBQkVMID0gJ0hlYXJpbmdzJztcblxuICBASW5wdXQoKSBwdWJsaWMgaGFzUHJpbnQgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzRXZlbnRTZWxlY3RvciA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcmVwZW5kZWRUYWJzOiBDYXNlVGFiW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG5cbiAgcHVibGljIEJBTk5FUiA9IERpc3BsYXlNb2RlLkJBTk5FUjtcbiAgcHVibGljIHNvcnRlZFRhYnM6IENhc2VUYWJbXTtcbiAgcHVibGljIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBlcnJvcjogYW55O1xuICBwdWJsaWMgdHJpZ2dlclRleHRTdGFydCA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9DT05USU5VRTtcbiAgcHVibGljIHRyaWdnZXJUZXh0OiBzdHJpbmcgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICBwdWJsaWMgYWN0aXZpdHlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGVycm9yU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZztcbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcbiAgcHVibGljIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uQmFubmVyQ29uZmlnOiBOb3RpZmljYXRpb25CYW5uZXJDb25maWc7XG4gIHB1YmxpYyBzZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgcHVibGljIGFjdGl2ZUNhc2VGbGFncyA9IGZhbHNlO1xuICBwdWJsaWMgY2FzZUZsYWdzRXh0ZXJuYWxVc2VyID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZsYWdzUmVhZEV4dGVybmFsTW9kZSA9ICcjQVJHVU1FTlQoUkVBRCxFWFRFUk5BTCknO1xuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHB1YmxpYyBldmVudElkOiBzdHJpbmc7XG4gIHB1YmxpYyBpc0V2ZW50QnV0dG9uQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6ICAgT2JzZXJ2YWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKCd0YWJHcm91cCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2U6IE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5UG9sbGluZ1NlcnZpY2U6IEFjdGl2aXR5UG9sbGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRTZXJ2aWNlOiBEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvck5vdGlmaWVyU2VydmljZTogRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZTogQ29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBycHhUcmFuc2xhdGlvblBpcGU6IFJweFRyYW5zbGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaW5rZWRDYXNlc1NlcnZpY2U6IExpbmtlZENhc2VzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGbGFnU3RhdGVTZXJ2aWNlOiBDYXNlRmxhZ1N0YXRlU2VydmljZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdCA9IHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuZXJyb3JTb3VyY2UucGlwZShmaWx0ZXIoKHgpID0+IHtcbiAgICAgIGlmICh4ICYmIHguc3RhdHVzICE9PSA0MDEgJiYgeC5zdGF0dXMgIT09IDQwMykge1xuICAgICAgICB0aGlzLmVycm9yID0geDtcbiAgICAgICAgdGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KSk7XG4gICAgXG4gICAgaW5pdERpYWxvZygpO1xuICAgIHRoaXMuaW5pdCgpO1xuXG4gICAgdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2U/LnJlbW92ZUl0ZW0oJ2V2ZW50VXJsJyk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY29udmVydEhyZWZUb1JvdXRlclNlcnZpY2U/LmdldEhyZWZNYXJrZG93bkxpbmtDb250ZW50KCkuc3Vic2NyaWJlKChocmVmTWFya2Rvd25MaW5rQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBkbyBub3QgY29udmVydCByb3V0ZXIgd2l0aCBpbml0aWFsIGRlZmF1bHQgdmFsdWU7IGNvbnZlcnQgdG8gcm91dGVyIG9ubHkgb24gdXBkYXRlZCBsaW5rIGNvbnRlbnRcbiAgICAgIGlmIChocmVmTWFya2Rvd25MaW5rQ29udGVudCAhPT0gJ0RlZmF1bHQnKSB7XG4gICAgICAgIHRoaXMuY29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UuY2FsbEFuZ3VsYXJSb3V0ZXIoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5pc0VuYWJsZWQgJiYgIXRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbiA9IHRoaXMucG9zdFZpZXdBY3Rpdml0eSgpLnN1YnNjcmliZSgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5jaGVja1JvdXRlQW5kU2V0Q2FzZVZpZXdUYWIoKTtcblxuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgQ2FzZSBGbGFnc1xuICAgIHRoaXMuYWN0aXZlQ2FzZUZsYWdzID0gdGhpcy5oYXNBY3RpdmVDYXNlRmxhZ3MoKTtcbiAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5yZXNldExpbmtlZENhc2VEYXRhKCk7XG4gICAgdGhpcy5jYXNlRmxhZ1N0YXRlU2VydmljZS5yZXNldEluaXRpYWxDYXNlRmxhZ3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlcy5wcmVwZW5kZWRUYWJzICYmICFjaGFuZ2VzLnByZXBlbmRlZFRhYnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgdGhpcy5jcmYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5vcmdhbmlzZVRhYlBvc2l0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzUHJpbnRFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5wcmludEVuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5pc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIGlmICghdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5jYXNlU3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmVycm9yU3Vic2NyaXB0aW9uKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuc3Vic2NyaXB0aW9uKTtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwdWJsaWMgdW5zdWJzY3JpYmUoc3Vic2NyaXB0aW9uOiBhbnkpIHtcbiAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrUm91dGVBbmRTZXRDYXNlVmlld1RhYigpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBldmVudCAmJiAoZXZlbnQgYXMgYW55KS51cmw7XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICBjb25zdCB0YWJVcmwgPSB1cmwgPyB1cmwuc3BsaXQoJyMnKSA6IG51bGw7XG4gICAgICAgICAgY29uc3QgdGFiID0gdGFiVXJsICYmIHRhYlVybC5sZW5ndGggPiAxID8gdGFiVXJsW3RhYlVybC5sZW5ndGggLSAxXS5yZXBsYWNlQWxsKCclMjAnLCAnICcpIDogJyc7XG4gICAgICAgICAgY29uc3QgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PiB4LnRleHRMYWJlbC50b0xvd2VyQ2FzZSgpID09PSB0YWIudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHBvc3RWaWV3QWN0aXZpdHkoKTogT2JzZXJ2YWJsZTxBY3Rpdml0eVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlQb2xsaW5nU2VydmljZS5wb3N0Vmlld0FjdGl2aXR5KHRoaXMuY2FzZURldGFpbHM/LmNhc2VfaWQpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRXJyb3JzQW5kV2FybmluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICAgIHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhcHBseVRyaWdnZXIodHJpZ2dlcjogQ2FzZVZpZXdUcmlnZ2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQpe1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzRXZlbnRCdXR0b25DbGlja2VkID0gdHJ1ZTtcbiAgICBjb25zdCBzcGlubmVyID0gdGhpcy5sb2FkaW5nU2VydmljZS5yZWdpc3RlcigpO1xuICAgIHRoaXMubG9hZGluZ1NlcnZpY2UuYWRkU2hhcmVkU3Bpbm5lcihzcGlubmVyKTtcbiAgICB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlRXJyb3IobnVsbCk7XG4gICAgY29uc3QgdGhlUXVlcnlQYXJhbXM6IFBhcmFtcyA9IHt9O1xuXG4gICAgaWYgKHRoaXMuaWdub3JlV2FybmluZykge1xuICAgICAgdGhlUXVlcnlQYXJhbXNbJ2lnbm9yZVdhcm5pbmcnXSA9IHRoaXMuaWdub3JlV2FybmluZztcbiAgICB9XG5cbiAgICAvLyB3ZSBtYXkgbmVlZCB0byB0YWtlIGNhcmUgb2YgZGlmZmVyZW50IHRyaWdnZXJzIGluIHRoZSBmdXR1cmVcbiAgICBpZiAodHJpZ2dlci5pZCA9PT0gQ2FzZVZpZXdFdmVudElkcy5RdWVyeU1hbmFnZW1lbnRSYWlzZVF1ZXJ5KSB7XG4gICAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9xdWVyeS1tYW5hZ2VtZW50L3F1ZXJ5LyR7dGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkfWBdKTtcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2UudW5yZWdpc3RlcihzcGlubmVyKTtcbiAgICB9IGVsc2UgaWYgKHRyaWdnZXIuaWQgPT09IENhc2VWaWV3RXZlbnRJZHMuREVMRVRFKSB7XG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERlbGV0ZU9yQ2FuY2VsRGlhbG9nQ29tcG9uZW50LCB0aGlzLmRpYWxvZ0NvbmZpZyk7XG4gICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICB0aGlzLmRyYWZ0U2VydmljZS5kZWxldGVEcmFmdCh0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKHsgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkRSQUZUX0RFTEVURUQgfSk7XG4gICAgICAgICAgICB9LCBfID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbih7IGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5FUlJPUl9ERUxFVElOR19EUkFGVCB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEcmFmdCgpICYmIHRyaWdnZXIuaWQgIT09IENhc2VWaWV3RXZlbnRJZHMuREVMRVRFKSB7XG4gICAgICB0aGVRdWVyeVBhcmFtc1tEUkFGVF9RVUVSWV9QQVJBTV0gPSB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQ7XG4gICAgICB0aGVRdWVyeVBhcmFtc1tDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuT1JJR0lOX1FVRVJZX1BBUkFNXSA9ICd2aWV3RHJhZnQnO1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9SRVNVTUVELFxuICAgICAgICAgIGppZDogdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkLFxuICAgICAgICAgIGN0aWQ6IHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmlkLFxuICAgICAgICAgIGV0aWQ6IHRyaWdnZXIuaWQsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHRoZVF1ZXJ5UGFyYW1zXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkVWRU5UX1RSSUdHRVJFRCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogdGhlUXVlcnlQYXJhbXMsXG4gICAgICAgICAgZXRpZDogdHJpZ2dlci5pZCxcbiAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNUYWJzUHJlc2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWRUYWJzLmxlbmd0aCA+IDAgfHwgdGhpcy5wcmVwZW5kZWRUYWJzLmxlbmd0aCA+IDAgfHwgdGhpcy5hcHBlbmRlZFRhYnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShjYWxsYmFja0Vycm9yc0NvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGNhbGxiYWNrRXJyb3JzQ29udGV4dC5pZ25vcmVXYXJuaW5nO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBjYWxsYmFja0Vycm9yc0NvbnRleHQudHJpZ2dlclRleHQ7XG4gICAgdGhpcy5ldmVudElkID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0LmV2ZW50SWQ7XG4gIH1cblxuICBwdWJsaWMgaXNEcmFmdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRHJhZnQuaXNEcmFmdCh0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQpO1xuICB9XG5cbiAgcHVibGljIGlzVHJpZ2dlckJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5lcnJvclxuICAgICAgJiYgdGhpcy5lcnJvci5jYWxsYmFja0Vycm9yc1xuICAgICAgJiYgdGhpcy5lcnJvci5jYWxsYmFja0Vycm9ycy5sZW5ndGgpXG4gICAgICB8fCAodGhpcy5lcnJvclxuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHNcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1xuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzLmxlbmd0aCk7XG4gIH1cblxuICBwdWJsaWMgb3JnYW5pc2VUYWJQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgbWF0VGFiOiBNYXRUYWI7XG4gICAgY29uc3QgdXJsID0gdGhpcy5sb2NhdGlvbi5wYXRoKHRydWUpO1xuICAgIGxldCBoYXNoVmFsdWUgPSB1cmwuc3Vic3RyaW5nKHVybC5pbmRleE9mKCcjJykgKyAxKTtcbiAgICBpZiAoIXVybC5pbmNsdWRlcygnIycpICYmICF1cmwuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSAmJiAhdXJsLmluY2x1ZGVzKCd0YXNrcycpICYmICF1cmwuaW5jbHVkZXMoJ2hlYXJpbmdzJykpIHtcbiAgICAgIGNvbnN0IHBhdGhzID0gdXJsLnNwbGl0KCcvJyk7XG4gICAgICAvLyBsYXN0UGF0aCBjYW4gYmUgL2Nhc2VJZCwgb3IgdGhlIHRhYnMgL3Rhc2tzLCAvaGVhcmluZ3MgZXRjLlxuICAgICAgY29uc3QgbGFzdFBhdGggPSBkZWNvZGVVUklDb21wb25lbnQocGF0aHNbcGF0aHMubGVuZ3RoIC0gMV0pO1xuICAgICAgbGV0IGZvdW5kVGFiOiBDYXNlVGFiID0gbnVsbDtcbiAgICAgIGlmICghdGhpcy5wcmVwZW5kZWRUYWJzKSB7XG4gICAgICAgIHRoaXMucHJlcGVuZGVkVGFicyA9IFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgYWRkaXRpb25hbFRhYnMgPSBbLi4udGhpcy5wcmVwZW5kZWRUYWJzLCAuLi50aGlzLmFwcGVuZGVkVGFic107XG4gICAgICBpZiAoYWRkaXRpb25hbFRhYnMgJiYgYWRkaXRpb25hbFRhYnMubGVuZ3RoKSB7XG4gICAgICAgIGZvdW5kVGFiID0gYWRkaXRpb25hbFRhYnMuZmluZCgoY2FzZVRhYjogQ2FzZVRhYikgPT4gY2FzZVRhYi5pZC50b0xvd2VyQ2FzZSgpID09PSBsYXN0UGF0aC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGZvdW5kIHRhc2tzIG9yIGhlYXJpbmcgdGFiXG4gICAgICBpZiAoZm91bmRUYWIpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjYXNlcycsICdjYXNlLWRldGFpbHMnLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQsIGZvdW5kVGFiLmlkXSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PiB4LnRleHRMYWJlbCA9PT0gZm91bmRUYWIubGFiZWwpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBsYXN0IHBhdGggaXMgY2FzZUlkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzb3J0IHdpdGggdGhlIG9yZGVyIG9mIENDRCBwcmVkZWZpbmVkIHRhYnNcbiAgICAgICAgdGhpcy5jYXNlRGV0YWlscy50YWJzLnNvcnQoKGFUYWIsIGJUYWIpID0+IGFUYWIub3JkZXIgPiBiVGFiLm9yZGVyID8gMSA6IChiVGFiLm9yZGVyID4gYVRhYi5vcmRlciA/IC0xIDogMCkpO1xuICAgICAgICAvLyBzZWxlY3QgdGhlIGZpcnN0IHRhYiBjaGVja2luZyBpZiB0aGUgdGFiIGlzIHZpc2libGVcbiAgICAgICAgY29uc3QgcHJlU2VsZWN0VGFiOiBDYXNlVGFiID0gdGhpcy5maW5kUHJlU2VsZWN0ZWRBY3RpdmVUYWIoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjYXNlcycsICdjYXNlLWRldGFpbHMnLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWRdLCB7IGZyYWdtZW50OiBwcmVTZWxlY3RUYWIubGFiZWwgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PiB4LnRleHRMYWJlbCA9PT0gcHJlU2VsZWN0VGFiLmxhYmVsKTtcbiAgICAgICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVU5JQ09ERV9TUEFDRSwgJ2cnKTtcbiAgICAgIGhhc2hWYWx1ZSA9IGhhc2hWYWx1ZS5yZXBsYWNlKHJlZ0V4cCwgQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFKTtcbiAgICAgIGlmIChoYXNoVmFsdWUuaW5jbHVkZXMoJ2hlYXJpbmdzJykpIHtcbiAgICAgICAgaGFzaFZhbHVlID0gJ2hlYXJpbmdzJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChoYXNoVmFsdWUuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSB8fCBoYXNoVmFsdWUuaW5jbHVkZXMoJ3Rhc2tzJykpIHtcbiAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUuaW5jbHVkZXMoJ3JvbGVzLWFuZC1hY2Nlc3MnKSA/ICdyb2xlcyBhbmQgYWNjZXNzJyA6ICd0YXNrcyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT5cbiAgICAgICAgeC50ZXh0TGFiZWwucmVwbGFjZShDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuRU1QVFlfU1BBQ0UsICcnKS50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICBoYXNoVmFsdWUucmVwbGFjZShDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuRU1QVFlfU1BBQ0UsICcnKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmluZFByZVNlbGVjdGVkQWN0aXZlVGFiKCk6IENhc2VUYWIge1xuICAgIGNvbnN0IHVuT3JkZXJlZFRhYnNJblNvcnRlZFRhYnMgPSB0aGlzLmNhc2VEZXRhaWxzLnRhYnNcbiAgICAgIC5maWx0ZXIoKHRhYikgPT4gIXRhYi5vcmRlciAmJiB0aGlzLnNvcnRlZFRhYnMuc29tZSgoc29ydGVkVGFiKSA9PiBzb3J0ZWRUYWIuaWQgPT09IHRhYi5pZCkpO1xuICAgIHJldHVybiB1bk9yZGVyZWRUYWJzSW5Tb3J0ZWRUYWJzLmxlbmd0aCA/IHVuT3JkZXJlZFRhYnNJblNvcnRlZFRhYnNbMF0gOiB0aGlzLnNvcnRlZFRhYnNbMF07XG4gIH1cblxuICAvLyBSZWZhY3RvcmVkIHVuZGVyIEVYVUktMTEwIHRvIGFkZHJlc3MgaW5maW5pdGUgdGFiIGxvb3AgdG8gdXNlIHRhYkluZGV4Q2hhbmdlZCBpbnN0ZWFkXG4gIHB1YmxpYyB0YWJDaGFuZ2VkKHRhYkluZGV4Q2hhbmdlZDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKHRhYiA9PiB0YWIuaXNBY3RpdmUpO1xuICAgIGNvbnN0IHRhYkxhYmVsID0gbWF0VGFiLnRleHRMYWJlbDtcbiAgICAvLyBzb3J0ZWRUYWJzIGFyZSBmcmFnbWVudHNcbiAgICAvLyBhcHBlbmRlZC9wcmVwZXBlbmRlZCB0YWJzIHVzZSByb3V0ZXIgbmF2aWdhdGlvblxuICAgIGlmICgodGFiSW5kZXhDaGFuZ2VkIDw9IDEgJiYgdGhpcy5wcmVwZW5kZWRUYWJzICYmIHRoaXMucHJlcGVuZGVkVGFicy5sZW5ndGgpIHx8XG4gICAgICAodGhpcy5hcHBlbmRlZFRhYnM/Lmxlbmd0aCAmJiAodGFiTGFiZWwgPT09IHRoaXMuSEVBUklOR1NfVEFCX0xBQkVMXG4gICAgICAgIHx8IHRhYkxhYmVsID09PSB0aGlzLnJweFRyYW5zbGF0aW9uUGlwZS50cmFuc2Zvcm0odGhpcy5IRUFSSU5HU19UQUJfTEFCRUwpKSkpIHtcbiAgICAgIC8vIEhhY2sgdG8gZ2V0IElEIGZyb20gdGFiIGFzIGl0J3Mgbm90IGVhc2lseSBhY2hpZXZlZCB0aHJvdWdoIEFuZ3VsYXIgTWF0ZXJpYWwgVGFic1xuICAgICAgY29uc3QgdGFiID0gbWF0VGFiWydfdmlld0NvbnRhaW5lclJlZiddIGFzIFZpZXdDb250YWluZXJSZWY7XG4gICAgICBjb25zdCBpZCA9ICh0YWIuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5pZDtcbiAgICAgIC8vIGNhc2VzL2Nhc2UtZGV0YWlscy86Y2FzZUlkL2hlYXJpbmdzXG4gICAgICAvLyBjYXNlcy9jYXNlLWRldGFpbHMvOmNhc2VJZC9yb2xlcy1hbmQtYWNjZXNzXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaWRdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJvdXRpbmcgaGVyZSBpcyBiYXNlZCBvbiB0YWIgbGFiZWwsIG5vdCBpZGVhbFxuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpjYXNlSWQjdGFiTGFiZWxcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkXSwgeyBmcmFnbWVudDogdGFiTGFiZWwgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTGlua0NsaWNrZWQodHJpZ2dlck91dHB1dEV2ZW50VGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gR2V0IHRoZSAqYWJzb2x1dGUqIChub3QgcmVsYXRpdmUpIGluZGV4IG9mIHRoZSB0YXJnZXQgdGFiIGFuZCBzZXQgYXMgdGhlIGFjdGl2ZSB0YWIsIHVzaW5nIHRoZSBzZWxlY3RlZEluZGV4IGlucHV0XG4gICAgLy8gb2YgbWF0LXRhYi1ncm91cCAoYm91bmQgdG8gc2VsZWN0ZWRUYWJJbmRleClcbiAgICBjb25zdCB0YXJnZXRUYWJJbmRleCA9IHRoaXMudGFiR3JvdXAuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCh0YWIgPT4gdGFiLnRleHRMYWJlbCA9PT0gdHJpZ2dlck91dHB1dEV2ZW50VGV4dCk7XG4gICAgaWYgKHRhcmdldFRhYkluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IHRhcmdldFRhYkluZGV4O1xuICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gdGFyZ2V0VGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc0FjdGl2ZUNhc2VGbGFncygpOiBib29sZWFuIHtcbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggdGFiIGNvbnRhaW5zIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIHR5cGUsIGZyb20gdGhlIENhc2VWaWV3IG9iamVjdCBpbiB0aGUgc25hcHNob3QgZGF0YVxuICAgIGNvbnN0IGNhc2VGbGFnc1RhYiA9IHRoaXMuY2FzZURldGFpbHM/LnRhYnNcbiAgICAgID8gKHRoaXMuY2FzZURldGFpbHMudGFicykuZmlsdGVyKFxuICAgICAgICB0YWIgPT4gdGFiLmZpZWxkcyAmJiB0YWIuZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpKVswXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKGNhc2VGbGFnc1RhYikge1xuICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCBpcyBpbiBleHRlcm5hbCBtb2RlIG9yIG5vdDsgdGhlIG5vdGlmaWNhdGlvbiBiYW5uZXIgc2hvdWxkIG5vdCBiZVxuICAgICAgLy8gZGlzcGxheWVkIGZvciBleHRlcm5hbCB1c2Vyc1xuICAgICAgdGhpcy5jYXNlRmxhZ3NFeHRlcm5hbFVzZXIgPSBjYXNlRmxhZ3NUYWIuZmllbGRzLmZpbmQoXG4gICAgICAgIGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpKS5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSB0aGlzLmNhc2VGbGFnc1JlYWRFeHRlcm5hbE1vZGU7XG5cbiAgICAgIC8vIEdldCB0aGUgYWN0aXZlIGNhc2UgZmxhZ3MgY291bnRcbiAgICAgIC8vIENhbm5vdCBmaWx0ZXIgb3V0IGFueXRoaW5nIG90aGVyIHRoYW4gdG8gcmVtb3ZlIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIGJlY2F1c2UgRmxhZ3MgZmllbGRzIG1heSBiZVxuICAgICAgLy8gY29udGFpbmVkIGluIG90aGVyIENhc2VGaWVsZCBpbnN0YW5jZXMsIGVpdGhlciBhcyBhIHN1Yi1maWVsZCBvZiBhIENvbXBsZXggZmllbGQsIG9yIGZpZWxkcyBpbiBhIGNvbGxlY3Rpb25cbiAgICAgIC8vIChvciBzdWItZmllbGRzIG9mIENvbXBsZXggZmllbGRzIGluIGEgY29sbGVjdGlvbilcbiAgICAgIGNvbnN0IGFjdGl2ZUNhc2VGbGFncyA9IGNhc2VGbGFnc1RhYi5maWVsZHNcbiAgICAgICAgLmZpbHRlcihjYXNlRmllbGQgPT4gIUZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkgJiYgY2FzZUZpZWxkLnZhbHVlKVxuICAgICAgICAucmVkdWNlKChhY3RpdmUsIGNhc2VGbGFnKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmNvdW50QWN0aXZlRmxhZ3NJbkNhc2VGaWVsZChhY3RpdmUsIGNhc2VGbGFnKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgIGlmIChhY3RpdmVDYXNlRmxhZ3MgPiAwKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYWN0aXZlQ2FzZUZsYWdzID4gMVxuICAgICAgICAgID8gYFRoZXJlIGFyZSAke2FjdGl2ZUNhc2VGbGFnc30gYWN0aXZlIGZsYWdzIG9uIHRoaXMgY2FzZS5gIDogJ1RoZXJlIGlzIDEgYWN0aXZlIGZsYWcgb24gdGhpcyBjYXNlLic7XG4gICAgICAgIC8vIEluaXRpYWxpc2UgYW5kIGRpc3BsYXkgbm90aWZpY2F0aW9uIGJhbm5lclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZyA9IHtcbiAgICAgICAgICBiYW5uZXJUeXBlOiBOb3RpZmljYXRpb25CYW5uZXJUeXBlLklORk9STUFUSU9OLFxuICAgICAgICAgIGhlYWRpbmdUZXh0OiAnSW1wb3J0YW50JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICBzaG93TGluazogdHJ1ZSxcbiAgICAgICAgICBsaW5rVGV4dDogJ1ZpZXcgY2FzZSBmbGFncycsXG4gICAgICAgICAgdHJpZ2dlck91dHB1dEV2ZW50OiB0cnVlLFxuICAgICAgICAgIHRyaWdnZXJPdXRwdXRFdmVudFRleHQ6IGNhc2VGbGFnc1RhYi5sYWJlbCxcbiAgICAgICAgICBoZWFkZXJDbGFzczogTm90aWZpY2F0aW9uQmFubmVySGVhZGVyQ2xhc3MuSU5GT1JNQVRJT05cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgYSBDYXNlRmllbGQgaXMgdG8gYmUgZGlzcGxheWVkIHdpdGhvdXQgYSBsYWJlbCwgYXMgaXMgZXhwZWN0ZWQgZm9yIGFsbCBDb21wb25lbnRMYXVuY2hlci10eXBlXG4gICAqIGZpZWxkcy5cbiAgICogQHBhcmFtIGNhc2VGaWVsZCBUaGUgYENhc2VGaWVsZGAgaW5zdGFuY2UgdG8gY2hlY2tcbiAgICogQHJldHVybnMgYHRydWVgIGlmIGl0IHNob3VsZCBub3QgaGF2ZSBhIGxhYmVsOyBgZmFsc2VgIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGlzRmllbGRUb0hhdmVOb0xhYmVsKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wb25lbnRMYXVuY2hlcidcbiAgICAgICYmIGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSAnI0FSR1VNRU5UKENhc2VGaWxlVmlldyknO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIC8vIENsb25lIGFuZCBzb3J0IHRhYnMgYXJyYXlcbiAgICB0aGlzLnNvcnRlZFRhYnMgPSB0aGlzLm9yZGVyU2VydmljZS5zb3J0KHRoaXMuY2FzZURldGFpbHM/LnRhYnMpO1xuICAgIHRoaXMuY2FzZUZpZWxkcyA9IHRoaXMuZ2V0VGFiRmllbGRzKCk7XG4gICAgdGhpcy5zb3J0ZWRUYWJzID0gdGhpcy5zb3J0VGFiRmllbGRzQW5kRmlsdGVyVGFicyh0aGlzLnNvcnRlZFRhYnMpO1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5idWlsZEZvcm1Hcm91cCh0aGlzLmNhc2VGaWVsZHMpO1xuICAgIGlmICh0aGlzLmNhc2VEZXRhaWxzPy50cmlnZ2VycyAmJiB0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzb3J0VGFiRmllbGRzQW5kRmlsdGVyVGFicyh0YWJzOiBDYXNlVGFiW10pOiBDYXNlVGFiW10ge1xuICAgIHJldHVybiB0YWJzPy5tYXAodGFiID0+IE9iamVjdC5hc3NpZ24oe30sIHRhYiwgeyBmaWVsZHM6IHRoaXMub3JkZXJTZXJ2aWNlLnNvcnQodGFiLmZpZWxkcykgfSkpXG4gICAgICAuZmlsdGVyKHRhYiA9PiBTaG93Q29uZGl0aW9uLmdldEluc3RhbmNlKHRhYi5zaG93X2NvbmRpdGlvbikubWF0Y2hCeUNvbnRleHRGaWVsZHModGhpcy5jYXNlRmllbGRzKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYkZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgY2FzZURhdGFGaWVsZHMgPSB0aGlzLnNvcnRlZFRhYnM/LnJlZHVjZSgoYWNjLCB0YWIpID0+IHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KHBsYWluVG9DbGFzcyhDYXNlRmllbGQsIHRhYi5maWVsZHMpKTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gY2FzZURhdGFGaWVsZHM/LmNvbmNhdCh0aGlzLmNhc2VEZXRhaWxzLm1ldGFkYXRhRmllbGRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgRVVJLTM4MjU6XG4gICAqIEJ1aWxkcyBhIEZvcm1Hcm91cCBmcm9tIGFsbCB0aGUgQ2FzZUZpZWxkcyBjb250YWluZWQgd2l0aGluIHRoZSB2aWV3LlxuICAgKiBUaGlzIEZvcm1Hcm91cCBpcyBuZWNlc3NhcnkgZm9yIGV2YWx1YXRpb24gdGhlIHNob3cvaGlkZSBjb25kaXRpb25zIG9mXG4gICAqIGZpZWxkcyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gYSBmaWVsZCBvbmx5IGF2YWlsYWJsZSBvbiBhIERJRkZFUkVOVCB0YWIuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRm9ybUdyb3VwKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgdmFsdWU6IG9iamVjdCA9IHt9O1xuICAgIGlmIChjYXNlRmllbGRzKSB7XG4gICAgICBjYXNlRmllbGRzLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgW2Nhc2VGaWVsZC5pZF06IGNhc2VGaWVsZC52YWx1ZVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKHsgZGF0YTogbmV3IEZvcm1Db250cm9sKHZhbHVlKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFcnJvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvck5vdGlmaWVyU2VydmljZS5hbm5vdW5jZUVycm9yKG51bGwpO1xuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmNsZWFyKCk7XG4gIH1cbn1cbiIsIjwhLS0gR2VuZXJpYyBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjYWxsYmFjayBlcnJvcnMgb3Igd2FybmluZ3MsIG9yIG5vIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIShlcnJvci5jYWxsYmFja0Vycm9ycyB8fCBlcnJvci5jYWxsYmFja1dhcm5pbmdzIHx8IGVycm9yLmRldGFpbHMpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCJcbiAgICAgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgPGgxIGNsYXNzPVwiaGVhZGluZy1oMSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICB7eydTb21ldGhpbmcgd2VudCB3cm9uZycgfCBycHhUcmFuc2xhdGV9fVxuICA8L2gxPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktYm9keVwiPlxuICAgIDxwPnt7XCJXZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuXCIgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgICA8cD5cbiAgICAgIDxhIGhyZWY9XCJnZXQtaGVscFwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICB7e1wiQ29udGFjdCB1c1wiIHwgcnB4VHJhbnNsYXRlfX08L2E+IHt7XCJpZiB5b3UncmUgc3RpbGwgaGF2aW5nIHByb2JsZW1zLlwiIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIENhbGxiYWNrIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmIGVycm9yLmRldGFpbHNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIlxuICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgIHt7J1RoZSBjYWxsYmFjayBkYXRhIGZhaWxlZCB2YWxpZGF0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDI+XG4gIDxwPnt7ZXJyb3IubWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICA8dWwgKm5nSWY9XCJlcnJvci5kZXRhaWxzPy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnktbGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZmllbGRFcnJvciBvZiBlcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1wiPlxuICAgICAge3tmaWVsZEVycm9yLm1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbjxjY2QtY2FsbGJhY2stZXJyb3JzXG4gIFt0cmlnZ2VyVGV4dENvbnRpbnVlXT1cInRyaWdnZXJUZXh0U3RhcnRcIlxuICBbdHJpZ2dlclRleHRJZ25vcmVdPVwidHJpZ2dlclRleHRJZ25vcmVXYXJuaW5nc1wiXG4gIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgKGNhbGxiYWNrRXJyb3JzQ29udGV4dCk9XCJjYWxsYmFja0Vycm9yc05vdGlmeSgkZXZlbnQpXCI+XG48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG48Y2NkLWFjdGl2aXR5IFtjYXNlSWRdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiIFtkaXNwbGF5TW9kZV09XCJCQU5ORVJcIj48L2NjZC1hY3Rpdml0eT5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLW9uZS1oYWxmXCI+XG4gICAgPGNjZC1jYXNlLWhlYWRlciBbY2FzZURldGFpbHNdPVwiY2FzZURldGFpbHNcIj48L2NjZC1jYXNlLWhlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItY29udHJvbHNcIiAqbmdJZj1cImhhc1ByaW50ICYmICFpc0RyYWZ0KCkgJiYgaXNQcmludEVuYWJsZWQoKVwiPlxuICAgICAgPGEgaWQ9XCJjYXNlLXZpZXdlci1jb250cm9sLXByaW50XCIgcm91dGVyTGluaz1cInByaW50XCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiPnt7J1ByaW50JyB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImhhc0V2ZW50U2VsZWN0b3JcIiBjbGFzcz1cImNvbHVtbi1vbmUtaGFsZlwiPlxuICAgIDxjY2QtZXZlbnQtdHJpZ2dlciBbaXNEaXNhYmxlZF09XCJpc1RyaWdnZXJCdXR0b25EaXNhYmxlZCgpXCIgW3RyaWdnZXJzXT1cImNhc2VEZXRhaWxzLnRyaWdnZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RyaWdnZXJUZXh0XT1cInRyaWdnZXJUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2V2ZW50SWRdPVwiZXZlbnRJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChvblRyaWdnZXJDaGFuZ2UpPVwiY2xlYXJFcnJvcnNBbmRXYXJuaW5ncygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uVHJpZ2dlclN1Ym1pdCk9XCJhcHBseVRyaWdnZXIoJGV2ZW50KVwiPjwvY2NkLWV2ZW50LXRyaWdnZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIiAqbmdJZj1cImFjdGl2ZUNhc2VGbGFncyAmJiAhY2FzZUZsYWdzRXh0ZXJuYWxVc2VyXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tZnVsbFwiPlxuICAgIDxjY2Qtbm90aWZpY2F0aW9uLWJhbm5lciBbbm90aWZpY2F0aW9uQmFubmVyQ29uZmlnXT1cIm5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZ1wiIChsaW5rQ2xpY2tlZCk9XCJvbkxpbmtDbGlja2VkKCRldmVudClcIj5cbiAgICA8L2NjZC1ub3RpZmljYXRpb24tYmFubmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tZnVsbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNUYWJzUHJlc2VudCgpXCI+XG4gICAgICA8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXAgYW5pbWF0aW9uRHVyYXRpb249XCIwbXNcIiAoc2VsZWN0ZWRJbmRleENoYW5nZSk9XCJ0YWJDaGFuZ2VkKCRldmVudClcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRUYWJJbmRleFwiPlxuICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiIG9mIHByZXBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2Ygc29ydGVkVGFiczsgbGV0IGN1cklkeD1pbmRleFwiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCIgW2FyaWEtbGFiZWxdPVwiY3VySWR4ID09PSAwID8gdGFiLmxhYmVsICsgJywgUGxlYXNlIHVzZSBsZWZ0IGFuZCByaWdodCBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGNhc2UgdGFicycgOiAnJyB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgPHRhYmxlIFtjbGFzc109XCJ0YWIuaWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidjYXNlIHZpZXdlciB0YWJsZScgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiB0YWIgfCBjY2RUYWJGaWVsZHMgfCBjY2RSZWFkRmllbGRzRmlsdGVyOmZhbHNlIDp1bmRlZmluZWQgOnRydWUgOiBmb3JtR3JvdXA/LmNvbnRyb2xzWydkYXRhJ11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBpZD1cImNhc2Utdmlld2VyLWZpZWxkLWxhYmVsXCIgKm5nSWY9XCIhaXNGaWVsZFRvSGF2ZU5vTGFiZWwoZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItbGFiZWwgdGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbaWRdPVwiJ2Nhc2Utdmlld2VyLWZpZWxkLXJlYWQtLScgKyBmaWVsZC5pZFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJmb3JtR3JvdXA/LmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjYXNlUmVmZXJlbmNlXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCIgY2xhc3M9XCJjb21wb3VuZC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBbaWRdPVwiJ2Nhc2Utdmlld2VyLWZpZWxkLXJlYWQtLScgKyBmaWVsZC5pZFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJmb3JtR3JvdXAuY29udHJvbHNbJ2RhdGEnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Nhc2VSZWZlcmVuY2VdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBhcHBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgICA8cm91dGVyLW91dGxldCAqbmdJZj1cIihwcmVwZW5kZWRUYWJzICYmIHByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fCAoYXBwZW5kZWRUYWJzICYmIGFwcGVuZGVkVGFicy5sZW5ndGgpXCI+PC9yb3V0ZXItb3V0bGV0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
732
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQzVCLFNBQVMsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6SCxPQUFPLEVBQTBCLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMs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QiwyQkFBMkI7Y0FMdkMsU0FBUzsyQkFDRSwyQkFBMkI7NGpCQVlyQixRQUFRO2tCQUF2QixLQUFLO1lBQ1UsZ0JBQWdCO2tCQUEvQixLQUFLO1lBQ1UsV0FBVztrQkFBMUIsS0FBSztZQUNVLGFBQWE7a0JBQTVCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBMkIyQyxRQUFRO2tCQUF4RCxTQUFTO21CQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O2tGQXZDN0IsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2csIE1hdExlZ2FjeURpYWxvZ0NvbmZpZyBhcyBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7IE1hdExlZ2FjeVRhYiBhcyBNYXRUYWIsIE1hdExlZ2FjeVRhYkdyb3VwIGFzIE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXRhYnMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFBhcmFtcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFJweFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdycHgteHVpLXRyYW5zbGF0aW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTm90aWZpY2F0aW9uQmFubmVyQ29uZmlnLFxuICBOb3RpZmljYXRpb25CYW5uZXJIZWFkZXJDbGFzcyxcbiAgTm90aWZpY2F0aW9uQmFubmVyVHlwZVxufSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL2Jhbm5lcnMvbm90aWZpY2F0aW9uLWJhbm5lcic7XG5pbXBvcnQgeyBTaG93Q29uZGl0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBBY3Rpdml0eSwgQ2FzZUZpZWxkLCBDYXNlVGFiLCBDYXNlVmlldywgQ2FzZVZpZXdUcmlnZ2VyLCBEUkFGVF9RVUVSWV9QQVJBTSwgRGlzcGxheU1vZGUsIERyYWZ0IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VWaWV3RXZlbnRJZHMgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY2FzZS12aWV3L2Nhc2Utdmlldy1ldmVudC1pZHMuZW51bSc7XG5pbXBvcnQge1xuICBBY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLFxuICBBbGVydFNlcnZpY2UsXG4gIERyYWZ0U2VydmljZSxcbiAgRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gIEZpZWxkc1V0aWxzLFxuICBMb2FkaW5nU2VydmljZSxcbiAgTmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZSxcbiAgTmF2aWdhdGlvbk9yaWdpbixcbiAgT3JkZXJTZXJ2aWNlLFxuICBTZXNzaW9uU3RvcmFnZVNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jb252ZXJ0LWhyZWYtdG8tcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVsZXRlT3JDYW5jZWxEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2dzJztcbmltcG9ydCB7IENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yJztcbmltcG9ydCB7IGluaXREaWFsb2cgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IExpbmtlZENhc2VzU2VydmljZSB9IGZyb20gJy4uLy4uL3BhbGV0dGUvbGlua2VkLWNhc2VzL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VGbGFnU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMvY2FzZS1mbGFnLXN0YXRlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1mdWxsLWFjY2Vzcy12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtZnVsbC1hY2Nlc3Mtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtZnVsbC1hY2Nlc3Mtdmlldy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9SSUdJTl9RVUVSWV9QQVJBTSA9ICdvcmlnaW4nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9TVEFSVCA9ICdHbyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX0NPTlRJTlVFID0gJ0lnbm9yZSBXYXJuaW5nIGFuZCBHbyc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVU5JQ09ERV9TUEFDRSA9ICclMjAnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVNUFRZX1NQQUNFID0gJyAnO1xuICBwcml2YXRlIHJlYWRvbmx5IEhFQVJJTkdTX1RBQl9MQUJFTCA9ICdIZWFyaW5ncyc7XG5cbiAgQElucHV0KCkgcHVibGljIGhhc1ByaW50ID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGhhc0V2ZW50U2VsZWN0b3IgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgY2FzZURldGFpbHM6IENhc2VWaWV3O1xuICBASW5wdXQoKSBwdWJsaWMgcHJlcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlbmRlZFRhYnM6IENhc2VUYWJbXSA9IFtdO1xuXG4gIHB1YmxpYyBCQU5ORVIgPSBEaXNwbGF5TW9kZS5CQU5ORVI7XG4gIHB1YmxpYyBzb3J0ZWRUYWJzOiBDYXNlVGFiW107XG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgZXJyb3I6IGFueTtcbiAgcHVibGljIHRyaWdnZXJUZXh0U3RhcnQgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgdHJpZ2dlclRleHRJZ25vcmVXYXJuaW5ncyA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfQ09OVElOVUU7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgcHVibGljIGlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgcHVibGljIGFjdGl2aXR5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjYXNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBlcnJvclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc7XG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmc7XG4gIHB1YmxpYyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIG5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZzogTm90aWZpY2F0aW9uQmFubmVyQ29uZmlnO1xuICBwdWJsaWMgc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gIHB1YmxpYyBhY3RpdmVDYXNlRmxhZ3MgPSBmYWxzZTtcbiAgcHVibGljIGNhc2VGbGFnc0V4dGVybmFsVXNlciA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGbGFnc1JlYWRFeHRlcm5hbE1vZGUgPSAnI0FSR1VNRU5UKFJFQUQsRVhURVJOQUwpJztcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwdWJsaWMgZXZlbnRJZDogc3RyaW5nO1xuICBwdWJsaWMgaXNFdmVudEJ1dHRvbkNsaWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNTdWJqZWN0OiAgIE9ic2VydmFibGU8YW55PjtcbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIHRhYkdyb3VwOiBNYXRUYWJHcm91cDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlOiBOYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpdml0eVBvbGxpbmdTZXJ2aWNlOiBBY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyYWZ0U2VydmljZTogRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JOb3RpZmllclNlcnZpY2U6IEVycm9yTm90aWZpZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydEhyZWZUb1JvdXRlclNlcnZpY2U6IENvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3JmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcnB4VHJhbnNsYXRpb25QaXBlOiBScHhUcmFuc2xhdGVQaXBlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9hZGluZ1NlcnZpY2U6IExvYWRpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua2VkQ2FzZXNTZXJ2aWNlOiBMaW5rZWRDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRmxhZ1N0YXRlU2VydmljZTogQ2FzZUZsYWdTdGF0ZVNlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QgPSB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmVycm9yU291cmNlLnBpcGUoZmlsdGVyKCh4KSA9PiB7XG4gICAgICBpZiAoeCAmJiB4LnN0YXR1cyAhPT0gNDAxICYmIHguc3RhdHVzICE9PSA0MDMpIHtcbiAgICAgICAgdGhpcy5lcnJvciA9IHg7XG4gICAgICAgIHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkpO1xuICAgIFxuICAgIGluaXREaWFsb2coKTtcbiAgICB0aGlzLmluaXQoKTtcblxuICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlPy5yZW1vdmVJdGVtKCdldmVudFVybCcpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlPy5nZXRIcmVmTWFya2Rvd25MaW5rQ29udGVudCgpLnN1YnNjcmliZSgoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgLy8gZG8gbm90IGNvbnZlcnQgcm91dGVyIHdpdGggaW5pdGlhbCBkZWZhdWx0IHZhbHVlOyBjb252ZXJ0IHRvIHJvdXRlciBvbmx5IG9uIHVwZGF0ZWQgbGluayBjb250ZW50XG4gICAgICBpZiAoaHJlZk1hcmtkb3duTGlua0NvbnRlbnQgIT09ICdEZWZhdWx0Jykge1xuICAgICAgICB0aGlzLmNvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlLmNhbGxBbmd1bGFyUm91dGVyKGhyZWZNYXJrZG93bkxpbmtDb250ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UuaXNFbmFibGVkICYmICF0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24gPSB0aGlzLnBvc3RWaWV3QWN0aXZpdHkoKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuY2hlY2tSb3V0ZUFuZFNldENhc2VWaWV3VGFiKCk7XG5cbiAgICAvLyBDaGVjayBmb3IgYWN0aXZlIENhc2UgRmxhZ3NcbiAgICB0aGlzLmFjdGl2ZUNhc2VGbGFncyA9IHRoaXMuaGFzQWN0aXZlQ2FzZUZsYWdzKCk7XG4gICAgdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UucmVzZXRMaW5rZWRDYXNlRGF0YSgpO1xuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZVNlcnZpY2UucmVzZXRJbml0aWFsQ2FzZUZsYWdzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXMucHJlcGVuZGVkVGFicyAmJiAhY2hhbmdlcy5wcmVwZW5kZWRUYWJzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLmluaXQoKTtcbiAgICAgIHRoaXMuY3JmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMub3JnYW5pc2VUYWJQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1ByaW50RW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUucHJpbnRFbmFibGVkO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UuaXNFbmFibGVkKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuYWN0aXZpdHlTdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuY2FzZVN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5lcnJvclN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLnN1YnNjcmlwdGlvbik7XG4gICAgdGhpcy5zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHVibGljIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbjogYW55KSB7XG4gICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1JvdXRlQW5kU2V0Q2FzZVZpZXdUYWIoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgICAgY29uc3QgdXJsID0gZXZlbnQgJiYgKGV2ZW50IGFzIGFueSkudXJsO1xuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgY29uc3QgdGFiVXJsID0gdXJsID8gdXJsLnNwbGl0KCcjJykgOiBudWxsO1xuICAgICAgICAgIGNvbnN0IHRhYiA9IHRhYlVybCAmJiB0YWJVcmwubGVuZ3RoID4gMSA/IHRhYlVybFt0YWJVcmwubGVuZ3RoIC0gMV0ucmVwbGFjZUFsbCgnJTIwJywgJyAnKSA6ICcnO1xuICAgICAgICAgIGNvbnN0IG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwudG9Mb3dlckNhc2UoKSA9PT0gdGFiLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0Vmlld0FjdGl2aXR5KCk6IE9ic2VydmFibGU8QWN0aXZpdHlbXT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5UG9sbGluZ1NlcnZpY2UucG9zdFZpZXdBY3Rpdml0eSh0aGlzLmNhc2VEZXRhaWxzPy5jYXNlX2lkKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckVycm9yc0FuZFdhcm5pbmdzKCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRFcnJvcnMoKTtcbiAgICB0aGlzLmlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgICB0aGlzLmlzRXZlbnRCdXR0b25DbGlja2VkID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYXBwbHlUcmlnZ2VyKHRyaWdnZXI6IENhc2VWaWV3VHJpZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzRXZlbnRCdXR0b25DbGlja2VkKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCA9IHRydWU7XG4gICAgY29uc3Qgc3Bpbm5lciA9IHRoaXMubG9hZGluZ1NlcnZpY2UucmVnaXN0ZXIoKTtcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLmFkZFNoYXJlZFNwaW5uZXIoc3Bpbm5lcik7XG4gICAgdGhpcy5lcnJvck5vdGlmaWVyU2VydmljZS5hbm5vdW5jZUVycm9yKG51bGwpO1xuICAgIGNvbnN0IHRoZVF1ZXJ5UGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmICh0aGlzLmlnbm9yZVdhcm5pbmcpIHtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zWydpZ25vcmVXYXJuaW5nJ10gPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG4gICAgfVxuXG4gICAgLy8gd2UgbWF5IG5lZWQgdG8gdGFrZSBjYXJlIG9mIGRpZmZlcmVudCB0cmlnZ2VycyBpbiB0aGUgZnV0dXJlXG4gICAgaWYgKHRyaWdnZXIuaWQgPT09IENhc2VWaWV3RXZlbnRJZHMuUXVlcnlNYW5hZ2VtZW50UmFpc2VRdWVyeSkge1xuICAgICAgYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvcXVlcnktbWFuYWdlbWVudC9xdWVyeS8ke3RoaXMuY2FzZURldGFpbHMuY2FzZV9pZH1gXSk7XG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnVucmVnaXN0ZXIoc3Bpbm5lcik7XG4gICAgfSBlbHNlIGlmICh0cmlnZ2VyLmlkID09PSBDYXNlVmlld0V2ZW50SWRzLkRFTEVURSkge1xuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEZWxldGVPckNhbmNlbERpYWxvZ0NvbXBvbmVudCwgdGhpcy5kaWFsb2dDb25maWcpO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgdGhpcy5kcmFmdFNlcnZpY2UuZGVsZXRlRHJhZnQodGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkKVxuICAgICAgICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbih7IGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5EUkFGVF9ERUxFVEVEIH0pO1xuICAgICAgICAgICAgfSwgXyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oeyBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRVJST1JfREVMRVRJTkdfRFJBRlQgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRHJhZnQoKSAmJiB0cmlnZ2VyLmlkICE9PSBDYXNlVmlld0V2ZW50SWRzLkRFTEVURSkge1xuICAgICAgdGhlUXVlcnlQYXJhbXNbRFJBRlRfUVVFUllfUEFSQU1dID0gdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkO1xuICAgICAgdGhlUXVlcnlQYXJhbXNbQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTV0gPSAndmlld0RyYWZ0JztcbiAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRFJBRlRfUkVTVU1FRCxcbiAgICAgICAgICBqaWQ6IHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZCxcbiAgICAgICAgICBjdGlkOiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5pZCxcbiAgICAgICAgICBldGlkOiB0cmlnZ2VyLmlkLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGVRdWVyeVBhcmFtc1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIGFjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5FVkVOVF9UUklHR0VSRUQsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHRoZVF1ZXJ5UGFyYW1zLFxuICAgICAgICAgIGV0aWQ6IHRyaWdnZXIuaWQsXG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzVGFic1ByZXNlbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc29ydGVkVGFicy5sZW5ndGggPiAwIHx8IHRoaXMucHJlcGVuZGVkVGFicy5sZW5ndGggPiAwIHx8IHRoaXMuYXBwZW5kZWRUYWJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNOb3RpZnkoY2FsbGJhY2tFcnJvcnNDb250ZXh0OiBDYWxsYmFja0Vycm9yc0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZVdhcm5pbmcgPSBjYWxsYmFja0Vycm9yc0NvbnRleHQuaWdub3JlV2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0LnRyaWdnZXJUZXh0O1xuICAgIHRoaXMuZXZlbnRJZCA9IGNhbGxiYWNrRXJyb3JzQ29udGV4dC5ldmVudElkO1xuICB9XG5cbiAgcHVibGljIGlzRHJhZnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIERyYWZ0LmlzRHJhZnQodGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RyaWdnZXJCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuZXJyb3JcbiAgICAgICYmIHRoaXMuZXJyb3IuY2FsbGJhY2tFcnJvcnNcbiAgICAgICYmIHRoaXMuZXJyb3IuY2FsbGJhY2tFcnJvcnMubGVuZ3RoKVxuICAgICAgfHwgKHRoaXMuZXJyb3JcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcbiAgICAgICAgJiYgdGhpcy5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9ycy5sZW5ndGgpO1xuICB9XG5cbiAgcHVibGljIG9yZ2FuaXNlVGFiUG9zaXRpb24oKTogdm9pZCB7XG4gICAgbGV0IG1hdFRhYjogTWF0VGFiO1xuICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb24ucGF0aCh0cnVlKTtcbiAgICBsZXQgaGFzaFZhbHVlID0gdXJsLnN1YnN0cmluZyh1cmwuaW5kZXhPZignIycpICsgMSk7XG4gICAgaWYgKCF1cmwuaW5jbHVkZXMoJyMnKSAmJiAhdXJsLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgJiYgIXVybC5pbmNsdWRlcygndGFza3MnKSAmJiAhdXJsLmluY2x1ZGVzKCdoZWFyaW5ncycpKSB7XG4gICAgICBjb25zdCBwYXRocyA9IHVybC5zcGxpdCgnLycpO1xuICAgICAgLy8gbGFzdFBhdGggY2FuIGJlIC9jYXNlSWQsIG9yIHRoZSB0YWJzIC90YXNrcywgL2hlYXJpbmdzIGV0Yy5cbiAgICAgIGNvbnN0IGxhc3RQYXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhzW3BhdGhzLmxlbmd0aCAtIDFdKTtcbiAgICAgIGxldCBmb3VuZFRhYjogQ2FzZVRhYiA9IG51bGw7XG4gICAgICBpZiAoIXRoaXMucHJlcGVuZGVkVGFicykge1xuICAgICAgICB0aGlzLnByZXBlbmRlZFRhYnMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFkZGl0aW9uYWxUYWJzID0gWy4uLnRoaXMucHJlcGVuZGVkVGFicywgLi4udGhpcy5hcHBlbmRlZFRhYnNdO1xuICAgICAgaWYgKGFkZGl0aW9uYWxUYWJzICYmIGFkZGl0aW9uYWxUYWJzLmxlbmd0aCkge1xuICAgICAgICBmb3VuZFRhYiA9IGFkZGl0aW9uYWxUYWJzLmZpbmQoKGNhc2VUYWI6IENhc2VUYWIpID0+IGNhc2VUYWIuaWQudG9Mb3dlckNhc2UoKSA9PT0gbGFzdFBhdGgudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9XG4gICAgICAvLyBmb3VuZCB0YXNrcyBvciBoZWFyaW5nIHRhYlxuICAgICAgaWYgKGZvdW5kVGFiKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5pZCwgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkLCBmb3VuZFRhYi5pZF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwgPT09IGZvdW5kVGFiLmxhYmVsKTtcbiAgICAgICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gbGFzdCBwYXRoIGlzIGNhc2VJZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc29ydCB3aXRoIHRoZSBvcmRlciBvZiBDQ0QgcHJlZGVmaW5lZCB0YWJzXG4gICAgICAgIHRoaXMuY2FzZURldGFpbHMudGFicy5zb3J0KChhVGFiLCBiVGFiKSA9PiBhVGFiLm9yZGVyID4gYlRhYi5vcmRlciA/IDEgOiAoYlRhYi5vcmRlciA+IGFUYWIub3JkZXIgPyAtMSA6IDApKTtcbiAgICAgICAgLy8gc2VsZWN0IHRoZSBmaXJzdCB0YWIgY2hlY2tpbmcgaWYgdGhlIHRhYiBpcyB2aXNpYmxlXG4gICAgICAgIGNvbnN0IHByZVNlbGVjdFRhYjogQ2FzZVRhYiA9IHRoaXMuZmluZFByZVNlbGVjdGVkQWN0aXZlVGFiKCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5pZCwgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkXSwgeyBmcmFnbWVudDogcHJlU2VsZWN0VGFiLmxhYmVsIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCgoeCkgPT4geC50ZXh0TGFiZWwgPT09IHByZVNlbGVjdFRhYi5sYWJlbCk7XG4gICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlVOSUNPREVfU1BBQ0UsICdnJyk7XG4gICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZShyZWdFeHAsIENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSk7XG4gICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdoZWFyaW5ncycpKSB7XG4gICAgICAgIGhhc2hWYWx1ZSA9ICdoZWFyaW5ncyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgfHwgaGFzaFZhbHVlLmluY2x1ZGVzKCd0YXNrcycpKSB7XG4gICAgICAgICAgaGFzaFZhbHVlID0gaGFzaFZhbHVlLmluY2x1ZGVzKCdyb2xlcy1hbmQtYWNjZXNzJykgPyAncm9sZXMgYW5kIGFjY2VzcycgOiAndGFza3MnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+XG4gICAgICAgIHgudGV4dExhYmVsLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgaGFzaFZhbHVlLnJlcGxhY2UoQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LkVNUFRZX1NQQUNFLCAnJykudG9Mb3dlckNhc2UoKSk7XG4gICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbmRQcmVTZWxlY3RlZEFjdGl2ZVRhYigpOiBDYXNlVGFiIHtcbiAgICBjb25zdCB1bk9yZGVyZWRUYWJzSW5Tb3J0ZWRUYWJzID0gdGhpcy5jYXNlRGV0YWlscy50YWJzXG4gICAgICAuZmlsdGVyKCh0YWIpID0+ICF0YWIub3JkZXIgJiYgdGhpcy5zb3J0ZWRUYWJzLnNvbWUoKHNvcnRlZFRhYikgPT4gc29ydGVkVGFiLmlkID09PSB0YWIuaWQpKTtcbiAgICByZXR1cm4gdW5PcmRlcmVkVGFic0luU29ydGVkVGFicy5sZW5ndGggPyB1bk9yZGVyZWRUYWJzSW5Tb3J0ZWRUYWJzWzBdIDogdGhpcy5zb3J0ZWRUYWJzWzBdO1xuICB9XG5cbiAgLy8gUmVmYWN0b3JlZCB1bmRlciBFWFVJLTExMCB0byBhZGRyZXNzIGluZmluaXRlIHRhYiBsb29wIHRvIHVzZSB0YWJJbmRleENoYW5nZWQgaW5zdGVhZFxuICBwdWJsaWMgdGFiQ2hhbmdlZCh0YWJJbmRleENoYW5nZWQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG1hdFRhYiA9IHRoaXMudGFiR3JvdXAuX3RhYnMuZmluZCh0YWIgPT4gdGFiLmlzQWN0aXZlKTtcbiAgICBjb25zdCB0YWJMYWJlbCA9IG1hdFRhYi50ZXh0TGFiZWw7XG4gICAgLy8gc29ydGVkVGFicyBhcmUgZnJhZ21lbnRzXG4gICAgLy8gYXBwZW5kZWQvcHJlcGVwZW5kZWQgdGFicyB1c2Ugcm91dGVyIG5hdmlnYXRpb25cbiAgICBpZiAoKHRhYkluZGV4Q2hhbmdlZCA8PSAxICYmIHRoaXMucHJlcGVuZGVkVGFicyAmJiB0aGlzLnByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fFxuICAgICAgKHRoaXMuYXBwZW5kZWRUYWJzPy5sZW5ndGggJiYgKHRhYkxhYmVsID09PSB0aGlzLkhFQVJJTkdTX1RBQl9MQUJFTFxuICAgICAgICB8fCB0YWJMYWJlbCA9PT0gdGhpcy5ycHhUcmFuc2xhdGlvblBpcGUudHJhbnNmb3JtKHRoaXMuSEVBUklOR1NfVEFCX0xBQkVMKSkpKSB7XG4gICAgICAvLyBIYWNrIHRvIGdldCBJRCBmcm9tIHRhYiBhcyBpdCdzIG5vdCBlYXNpbHkgYWNoaWV2ZWQgdGhyb3VnaCBBbmd1bGFyIE1hdGVyaWFsIFRhYnNcbiAgICAgIGNvbnN0IHRhYiA9IG1hdFRhYlsnX3ZpZXdDb250YWluZXJSZWYnXSBhcyBWaWV3Q29udGFpbmVyUmVmO1xuICAgICAgY29uc3QgaWQgPSAodGFiLmVsZW1lbnQubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaWQ7XG4gICAgICAvLyBjYXNlcy9jYXNlLWRldGFpbHMvOmp1cmlzZGljdGlvbi86Y2FzZVR5cGUvOmNhc2VJZC9oZWFyaW5nc1xuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpqdXJpc2RpY3Rpb24vOmNhc2VUeXBlLzpjYXNlSWQvcm9sZXMtYW5kLWFjY2Vzc1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xuICAgICAgICAnY2FzZXMnLFxuICAgICAgICAnY2FzZS1kZXRhaWxzJyxcbiAgICAgICAgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkLFxuICAgICAgICB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5pZCxcbiAgICAgICAgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkLFxuICAgICAgICBpZFxuICAgICAgXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLnJvb3QgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJvdXRpbmcgaGVyZSBpcyBiYXNlZCBvbiB0YWIgbGFiZWwsIG5vdCBpZGVhbFxuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpqdXJpc2RpY3Rpb24vOmNhc2VUeXBlLzpjYXNlSWQjdGFiTGFiZWxcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY2FzZXMnLCAnY2FzZS1kZXRhaWxzJywgdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5pZCwgdGhpcy5jYXNlRGV0YWlscy5jYXNlX2lkXSwgeyBmcmFnbWVudDogdGFiTGFiZWwgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTGlua0NsaWNrZWQodHJpZ2dlck91dHB1dEV2ZW50VGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gR2V0IHRoZSAqYWJzb2x1dGUqIChub3QgcmVsYXRpdmUpIGluZGV4IG9mIHRoZSB0YXJnZXQgdGFiIGFuZCBzZXQgYXMgdGhlIGFjdGl2ZSB0YWIsIHVzaW5nIHRoZSBzZWxlY3RlZEluZGV4IGlucHV0XG4gICAgLy8gb2YgbWF0LXRhYi1ncm91cCAoYm91bmQgdG8gc2VsZWN0ZWRUYWJJbmRleClcbiAgICBjb25zdCB0YXJnZXRUYWJJbmRleCA9IHRoaXMudGFiR3JvdXAuX3RhYnMudG9BcnJheSgpLmZpbmRJbmRleCh0YWIgPT4gdGFiLnRleHRMYWJlbCA9PT0gdHJpZ2dlck91dHB1dEV2ZW50VGV4dCk7XG4gICAgaWYgKHRhcmdldFRhYkluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9IHRhcmdldFRhYkluZGV4O1xuICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gdGFyZ2V0VGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc0FjdGl2ZUNhc2VGbGFncygpOiBib29sZWFuIHtcbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggdGFiIGNvbnRhaW5zIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIHR5cGUsIGZyb20gdGhlIENhc2VWaWV3IG9iamVjdCBpbiB0aGUgc25hcHNob3QgZGF0YVxuICAgIGNvbnN0IGNhc2VGbGFnc1RhYiA9IHRoaXMuY2FzZURldGFpbHM/LnRhYnNcbiAgICAgID8gKHRoaXMuY2FzZURldGFpbHMudGFicykuZmlsdGVyKFxuICAgICAgICB0YWIgPT4gdGFiLmZpZWxkcyAmJiB0YWIuZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpKVswXVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKGNhc2VGbGFnc1RhYikge1xuICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgRmxhZ0xhdW5jaGVyIENhc2VGaWVsZCBpcyBpbiBleHRlcm5hbCBtb2RlIG9yIG5vdDsgdGhlIG5vdGlmaWNhdGlvbiBiYW5uZXIgc2hvdWxkIG5vdCBiZVxuICAgICAgLy8gZGlzcGxheWVkIGZvciBleHRlcm5hbCB1c2Vyc1xuICAgICAgdGhpcy5jYXNlRmxhZ3NFeHRlcm5hbFVzZXIgPSBjYXNlRmxhZ3NUYWIuZmllbGRzLmZpbmQoXG4gICAgICAgIGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlRmllbGQpKS5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSB0aGlzLmNhc2VGbGFnc1JlYWRFeHRlcm5hbE1vZGU7XG5cbiAgICAgIC8vIEdldCB0aGUgYWN0aXZlIGNhc2UgZmxhZ3MgY291bnRcbiAgICAgIC8vIENhbm5vdCBmaWx0ZXIgb3V0IGFueXRoaW5nIG90aGVyIHRoYW4gdG8gcmVtb3ZlIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIGJlY2F1c2UgRmxhZ3MgZmllbGRzIG1heSBiZVxuICAgICAgLy8gY29udGFpbmVkIGluIG90aGVyIENhc2VGaWVsZCBpbnN0YW5jZXMsIGVpdGhlciBhcyBhIHN1Yi1maWVsZCBvZiBhIENvbXBsZXggZmllbGQsIG9yIGZpZWxkcyBpbiBhIGNvbGxlY3Rpb25cbiAgICAgIC8vIChvciBzdWItZmllbGRzIG9mIENvbXBsZXggZmllbGRzIGluIGEgY29sbGVjdGlvbilcbiAgICAgIGNvbnN0IGFjdGl2ZUNhc2VGbGFncyA9IGNhc2VGbGFnc1RhYi5maWVsZHNcbiAgICAgICAgLmZpbHRlcihjYXNlRmllbGQgPT4gIUZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkgJiYgY2FzZUZpZWxkLnZhbHVlKVxuICAgICAgICAucmVkdWNlKChhY3RpdmUsIGNhc2VGbGFnKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmNvdW50QWN0aXZlRmxhZ3NJbkNhc2VGaWVsZChhY3RpdmUsIGNhc2VGbGFnKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgIGlmIChhY3RpdmVDYXNlRmxhZ3MgPiAwKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYWN0aXZlQ2FzZUZsYWdzID4gMVxuICAgICAgICAgID8gYFRoZXJlIGFyZSAke2FjdGl2ZUNhc2VGbGFnc30gYWN0aXZlIGZsYWdzIG9uIHRoaXMgY2FzZS5gIDogJ1RoZXJlIGlzIDEgYWN0aXZlIGZsYWcgb24gdGhpcyBjYXNlLic7XG4gICAgICAgIC8vIEluaXRpYWxpc2UgYW5kIGRpc3BsYXkgbm90aWZpY2F0aW9uIGJhbm5lclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZyA9IHtcbiAgICAgICAgICBiYW5uZXJUeXBlOiBOb3RpZmljYXRpb25CYW5uZXJUeXBlLklORk9STUFUSU9OLFxuICAgICAgICAgIGhlYWRpbmdUZXh0OiAnSW1wb3J0YW50JyxcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICBzaG93TGluazogdHJ1ZSxcbiAgICAgICAgICBsaW5rVGV4dDogJ1ZpZXcgY2FzZSBmbGFncycsXG4gICAgICAgICAgdHJpZ2dlck91dHB1dEV2ZW50OiB0cnVlLFxuICAgICAgICAgIHRyaWdnZXJPdXRwdXRFdmVudFRleHQ6IGNhc2VGbGFnc1RhYi5sYWJlbCxcbiAgICAgICAgICBoZWFkZXJDbGFzczogTm90aWZpY2F0aW9uQmFubmVySGVhZGVyQ2xhc3MuSU5GT1JNQVRJT05cbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgYSBDYXNlRmllbGQgaXMgdG8gYmUgZGlzcGxheWVkIHdpdGhvdXQgYSBsYWJlbCwgYXMgaXMgZXhwZWN0ZWQgZm9yIGFsbCBDb21wb25lbnRMYXVuY2hlci10eXBlXG4gICAqIGZpZWxkcy5cbiAgICogQHBhcmFtIGNhc2VGaWVsZCBUaGUgYENhc2VGaWVsZGAgaW5zdGFuY2UgdG8gY2hlY2tcbiAgICogQHJldHVybnMgYHRydWVgIGlmIGl0IHNob3VsZCBub3QgaGF2ZSBhIGxhYmVsOyBgZmFsc2VgIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGlzRmllbGRUb0hhdmVOb0xhYmVsKGNhc2VGaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wb25lbnRMYXVuY2hlcidcbiAgICAgICYmIGNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSAnI0FSR1VNRU5UKENhc2VGaWxlVmlldyknO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCk6IHZvaWQge1xuICAgIC8vIENsb25lIGFuZCBzb3J0IHRhYnMgYXJyYXlcbiAgICB0aGlzLnNvcnRlZFRhYnMgPSB0aGlzLm9yZGVyU2VydmljZS5zb3J0KHRoaXMuY2FzZURldGFpbHM/LnRhYnMpO1xuICAgIHRoaXMuY2FzZUZpZWxkcyA9IHRoaXMuZ2V0VGFiRmllbGRzKCk7XG4gICAgdGhpcy5zb3J0ZWRUYWJzID0gdGhpcy5zb3J0VGFiRmllbGRzQW5kRmlsdGVyVGFicyh0aGlzLnNvcnRlZFRhYnMpO1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5idWlsZEZvcm1Hcm91cCh0aGlzLmNhc2VGaWVsZHMpO1xuICAgIGlmICh0aGlzLmNhc2VEZXRhaWxzPy50cmlnZ2VycyAmJiB0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzb3J0VGFiRmllbGRzQW5kRmlsdGVyVGFicyh0YWJzOiBDYXNlVGFiW10pOiBDYXNlVGFiW10ge1xuICAgIHJldHVybiB0YWJzPy5tYXAodGFiID0+IE9iamVjdC5hc3NpZ24oe30sIHRhYiwgeyBmaWVsZHM6IHRoaXMub3JkZXJTZXJ2aWNlLnNvcnQodGFiLmZpZWxkcykgfSkpXG4gICAgICAuZmlsdGVyKHRhYiA9PiBTaG93Q29uZGl0aW9uLmdldEluc3RhbmNlKHRhYi5zaG93X2NvbmRpdGlvbikubWF0Y2hCeUNvbnRleHRGaWVsZHModGhpcy5jYXNlRmllbGRzKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYkZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgY2FzZURhdGFGaWVsZHMgPSB0aGlzLnNvcnRlZFRhYnM/LnJlZHVjZSgoYWNjLCB0YWIpID0+IHtcbiAgICAgIHJldHVybiBhY2MuY29uY2F0KHBsYWluVG9DbGFzcyhDYXNlRmllbGQsIHRhYi5maWVsZHMpKTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gY2FzZURhdGFGaWVsZHM/LmNvbmNhdCh0aGlzLmNhc2VEZXRhaWxzLm1ldGFkYXRhRmllbGRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgRVVJLTM4MjU6XG4gICAqIEJ1aWxkcyBhIEZvcm1Hcm91cCBmcm9tIGFsbCB0aGUgQ2FzZUZpZWxkcyBjb250YWluZWQgd2l0aGluIHRoZSB2aWV3LlxuICAgKiBUaGlzIEZvcm1Hcm91cCBpcyBuZWNlc3NhcnkgZm9yIGV2YWx1YXRpb24gdGhlIHNob3cvaGlkZSBjb25kaXRpb25zIG9mXG4gICAqIGZpZWxkcyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gYSBmaWVsZCBvbmx5IGF2YWlsYWJsZSBvbiBhIERJRkZFUkVOVCB0YWIuXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRm9ybUdyb3VwKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgdmFsdWU6IG9iamVjdCA9IHt9O1xuICAgIGlmIChjYXNlRmllbGRzKSB7XG4gICAgICBjYXNlRmllbGRzLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgICAgdmFsdWUgPSB7XG4gICAgICAgICAgLi4udmFsdWUsXG4gICAgICAgICAgW2Nhc2VGaWVsZC5pZF06IGNhc2VGaWVsZC52YWx1ZVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRm9ybUdyb3VwKHsgZGF0YTogbmV3IEZvcm1Db250cm9sKHZhbHVlKSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFcnJvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvck5vdGlmaWVyU2VydmljZS5hbm5vdW5jZUVycm9yKG51bGwpO1xuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmNsZWFyKCk7XG4gIH1cbn1cbiIsIjwhLS0gR2VuZXJpYyBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBvbmx5IGlmIHRoZXJlIGFyZSBubyBzcGVjaWZpYyBjYWxsYmFjayBlcnJvcnMgb3Igd2FybmluZ3MsIG9yIG5vIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIShlcnJvci5jYWxsYmFja0Vycm9ycyB8fCBlcnJvci5jYWxsYmFja1dhcm5pbmdzIHx8IGVycm9yLmRldGFpbHMpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCJcbiAgICAgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgPGgxIGNsYXNzPVwiaGVhZGluZy1oMSBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICB7eydTb21ldGhpbmcgd2VudCB3cm9uZycgfCBycHhUcmFuc2xhdGV9fVxuICA8L2gxPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktYm9keVwiPlxuICAgIDxwPnt7XCJXZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuXCIgfCBycHhUcmFuc2xhdGV9fTwvcD5cbiAgICA8cD5cbiAgICAgIDxhIGhyZWY9XCJnZXQtaGVscFwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICB7e1wiQ29udGFjdCB1c1wiIHwgcnB4VHJhbnNsYXRlfX08L2E+IHt7XCJpZiB5b3UncmUgc3RpbGwgaGF2aW5nIHByb2JsZW1zLlwiIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L3A+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIENhbGxiYWNrIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmIGVycm9yLmRldGFpbHNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIlxuICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgIHt7J1RoZSBjYWxsYmFjayBkYXRhIGZhaWxlZCB2YWxpZGF0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDI+XG4gIDxwPnt7ZXJyb3IubWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICA8dWwgKm5nSWY9XCJlcnJvci5kZXRhaWxzPy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnktbGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZmllbGRFcnJvciBvZiBlcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1wiPlxuICAgICAge3tmaWVsZEVycm9yLm1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbjxjY2QtY2FsbGJhY2stZXJyb3JzXG4gIFt0cmlnZ2VyVGV4dENvbnRpbnVlXT1cInRyaWdnZXJUZXh0U3RhcnRcIlxuICBbdHJpZ2dlclRleHRJZ25vcmVdPVwidHJpZ2dlclRleHRJZ25vcmVXYXJuaW5nc1wiXG4gIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgKGNhbGxiYWNrRXJyb3JzQ29udGV4dCk9XCJjYWxsYmFja0Vycm9yc05vdGlmeSgkZXZlbnQpXCI+XG48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG48Y2NkLWFjdGl2aXR5IFtjYXNlSWRdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiIFtkaXNwbGF5TW9kZV09XCJCQU5ORVJcIj48L2NjZC1hY3Rpdml0eT5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLW9uZS1oYWxmXCI+XG4gICAgPGNjZC1jYXNlLWhlYWRlciBbY2FzZURldGFpbHNdPVwiY2FzZURldGFpbHNcIj48L2NjZC1jYXNlLWhlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItY29udHJvbHNcIiAqbmdJZj1cImhhc1ByaW50ICYmICFpc0RyYWZ0KCkgJiYgaXNQcmludEVuYWJsZWQoKVwiPlxuICAgICAgPGEgaWQ9XCJjYXNlLXZpZXdlci1jb250cm9sLXByaW50XCIgcm91dGVyTGluaz1cInByaW50XCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiPnt7J1ByaW50JyB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImhhc0V2ZW50U2VsZWN0b3JcIiBjbGFzcz1cImNvbHVtbi1vbmUtaGFsZlwiPlxuICAgIDxjY2QtZXZlbnQtdHJpZ2dlciBbaXNEaXNhYmxlZF09XCJpc1RyaWdnZXJCdXR0b25EaXNhYmxlZCgpXCIgW3RyaWdnZXJzXT1cImNhc2VEZXRhaWxzLnRyaWdnZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3RyaWdnZXJUZXh0XT1cInRyaWdnZXJUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2V2ZW50SWRdPVwiZXZlbnRJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChvblRyaWdnZXJDaGFuZ2UpPVwiY2xlYXJFcnJvcnNBbmRXYXJuaW5ncygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uVHJpZ2dlclN1Ym1pdCk9XCJhcHBseVRyaWdnZXIoJGV2ZW50KVwiPjwvY2NkLWV2ZW50LXRyaWdnZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIiAqbmdJZj1cImFjdGl2ZUNhc2VGbGFncyAmJiAhY2FzZUZsYWdzRXh0ZXJuYWxVc2VyXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tZnVsbFwiPlxuICAgIDxjY2Qtbm90aWZpY2F0aW9uLWJhbm5lciBbbm90aWZpY2F0aW9uQmFubmVyQ29uZmlnXT1cIm5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZ1wiIChsaW5rQ2xpY2tlZCk9XCJvbkxpbmtDbGlja2VkKCRldmVudClcIj5cbiAgICA8L2NjZC1ub3RpZmljYXRpb24tYmFubmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tZnVsbFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNUYWJzUHJlc2VudCgpXCI+XG4gICAgICA8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXAgYW5pbWF0aW9uRHVyYXRpb249XCIwbXNcIiAoc2VsZWN0ZWRJbmRleENoYW5nZSk9XCJ0YWJDaGFuZ2VkKCRldmVudClcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRUYWJJbmRleFwiPlxuICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiIG9mIHByZXBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2Ygc29ydGVkVGFiczsgbGV0IGN1cklkeD1pbmRleFwiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCIgW2FyaWEtbGFiZWxdPVwiY3VySWR4ID09PSAwID8gdGFiLmxhYmVsICsgJywgUGxlYXNlIHVzZSBsZWZ0IGFuZCByaWdodCBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlIGNhc2UgdGFicycgOiAnJyB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRUYWJDb250ZW50PlxuICAgICAgICAgICAgPHRhYmxlIFtjbGFzc109XCJ0YWIuaWRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidjYXNlIHZpZXdlciB0YWJsZScgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiB0YWIgfCBjY2RUYWJGaWVsZHMgfCBjY2RSZWFkRmllbGRzRmlsdGVyOmZhbHNlIDp1bmRlZmluZWQgOnRydWUgOiBmb3JtR3JvdXA/LmNvbnRyb2xzWydkYXRhJ11cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBpZD1cImNhc2Utdmlld2VyLWZpZWxkLWxhYmVsXCIgKm5nSWY9XCIhaXNGaWVsZFRvSGF2ZU5vTGFiZWwoZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FzZS12aWV3ZXItbGFiZWwgdGV4dC0xNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbaWRdPVwiJ2Nhc2Utdmlld2VyLWZpZWxkLXJlYWQtLScgKyBmaWVsZC5pZFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJmb3JtR3JvdXA/LmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjYXNlUmVmZXJlbmNlXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCIgY2xhc3M9XCJjb21wb3VuZC1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBbaWRdPVwiJ2Nhc2Utdmlld2VyLWZpZWxkLXJlYWQtLScgKyBmaWVsZC5pZFwiIHNjb3BlPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJmb3JtR3JvdXAuY29udHJvbHNbJ2RhdGEnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Nhc2VSZWZlcmVuY2VdPVwiY2FzZURldGFpbHMuY2FzZV9pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBhcHBlbmRlZFRhYnNcIiBbaWRdPVwidGFiLmlkXCIgW2xhYmVsXT1cInRhYi5sYWJlbCB8IHJweFRyYW5zbGF0ZVwiPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgICA8cm91dGVyLW91dGxldCAqbmdJZj1cIihwcmVwZW5kZWRUYWJzICYmIHByZXBlbmRlZFRhYnMubGVuZ3RoKSB8fCAoYXBwZW5kZWRUYWJzICYmIGFwcGVuZGVkVGFicy5sZW5ndGgpXCI+PC9yb3V0ZXItb3V0bGV0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -6,6 +6,8 @@ import * as i2 from "rpx-xui-translation";
6
6
  export class CaseReviewSpecificAccessRejectComponent {
7
7
  route;
8
8
  caseId;
9
+ jurisdiction;
10
+ caseType;
9
11
  retunToTask = 'Return to the Tasks tab for this case';
10
12
  returnToMyTask = 'Return to My tasks';
11
13
  constructor(route) {
@@ -13,9 +15,11 @@ export class CaseReviewSpecificAccessRejectComponent {
13
15
  }
14
16
  ngOnInit() {
15
17
  this.caseId = this.route.snapshot.data.case.case_id;
18
+ this.jurisdiction = this.route.snapshot.data.case.case_type.jurisdiction.id;
19
+ this.caseType = this.route.snapshot.data.case.case_type.id;
16
20
  }
17
21
  static ɵfac = function CaseReviewSpecificAccessRejectComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CaseReviewSpecificAccessRejectComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute)); };
18
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseReviewSpecificAccessRejectComponent, selectors: [["case-review-specific-access-reject"]], decls: 24, vars: 17, consts: [[1, "govuk-width-container"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-panel", "govuk-panel--confirmation"], [1, "govuk-panel__title"], [1, "govuk-heading-m"], [1, "govuk-body"], [1, "form-group", "form-group-related"], ["button", "", "href", "tasks/list", 1, "govuk-button", "govuk-!-margin-right-3"], [1, "cancel"], [3, "href"]], template: function CaseReviewSpecificAccessRejectComponent_Template(rf, ctx) { if (rf & 1) {
22
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseReviewSpecificAccessRejectComponent, selectors: [["case-review-specific-access-reject"]], decls: 24, vars: 19, consts: [[1, "govuk-width-container"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-panel", "govuk-panel--confirmation"], [1, "govuk-panel__title"], [1, "govuk-heading-m"], [1, "govuk-body"], [1, "form-group", "form-group-related"], ["button", "", "href", "tasks/list", 1, "govuk-button", "govuk-!-margin-right-3"], [1, "cancel"], [3, "href"]], template: function CaseReviewSpecificAccessRejectComponent_Template(rf, ctx) { if (rf & 1) {
19
23
  i0.ɵɵelement(0, "p");
20
24
  i0.ɵɵelementStart(1, "div", 0)(2, "div", 1)(3, "div", 2)(4, "div", 3)(5, "h1", 4);
21
25
  i0.ɵɵtext(6);
@@ -40,22 +44,22 @@ export class CaseReviewSpecificAccessRejectComponent {
40
44
  i0.ɵɵelementEnd()()();
41
45
  } if (rf & 2) {
42
46
  i0.ɵɵadvance(6);
43
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 7, "Request for access denied"), "");
47
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 9, "Request for access denied"), "");
44
48
  i0.ɵɵadvance(4);
45
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 9, "What happens next"));
49
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 11, "What happens next"));
46
50
  i0.ɵɵadvance(3);
47
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 11, "The requester has been denied access to this case."), " ");
51
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 13, "The requester has been denied access to this case."), " ");
48
52
  i0.ɵɵadvance(5);
49
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(19, 13, ctx.returnToMyTask));
53
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(19, 15, ctx.returnToMyTask));
50
54
  i0.ɵɵadvance(3);
51
- i0.ɵɵpropertyInterpolate1("href", "cases/case-details/", ctx.caseId, "", i0.ɵɵsanitizeUrl);
55
+ i0.ɵɵpropertyInterpolate3("href", "cases/case-details/", ctx.jurisdiction, "/", ctx.caseType, "/", ctx.caseId, "", i0.ɵɵsanitizeUrl);
52
56
  i0.ɵɵadvance();
53
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 15, ctx.retunToTask));
57
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 17, ctx.retunToTask));
54
58
  } }, dependencies: [i2.RpxTranslatePipe], encapsulation: 2 });
55
59
  }
56
60
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseReviewSpecificAccessRejectComponent, [{
57
61
  type: Component,
58
- args: [{ selector: 'case-review-specific-access-reject', template: "<p></p>\n<div class=\"govuk-width-container\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n {{'Request for access denied' | rpxTranslate}}<br>\n </h1>\n </div>\n <h2 class=\"govuk-heading-m\">{{'What happens next' | rpxTranslate}}</h2>\n <p class=\"govuk-body\">\n {{'The requester has been denied access to this case.' | rpxTranslate}}\n </p>\n </div>\n </div>\n <div class=\"form-group form-group-related\">\n <p>\n <a button class=\"govuk-button govuk-!-margin-right-3\" href=\"tasks/list\" >{{returnToMyTask | rpxTranslate}}</a>\n </p>\n </div>\n <p class=\"cancel\"><a href=\"cases/case-details/{{caseId}}\" >{{retunToTask | rpxTranslate}}</a></p>\n</div>\n" }]
62
+ args: [{ selector: 'case-review-specific-access-reject', template: "<p></p>\n<div class=\"govuk-width-container\">\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <div class=\"govuk-panel govuk-panel--confirmation\">\n <h1 class=\"govuk-panel__title\">\n {{'Request for access denied' | rpxTranslate}}<br>\n </h1>\n </div>\n <h2 class=\"govuk-heading-m\">{{'What happens next' | rpxTranslate}}</h2>\n <p class=\"govuk-body\">\n {{'The requester has been denied access to this case.' | rpxTranslate}}\n </p>\n </div>\n </div>\n <div class=\"form-group form-group-related\">\n <p>\n <a button class=\"govuk-button govuk-!-margin-right-3\" href=\"tasks/list\" >{{returnToMyTask | rpxTranslate}}</a>\n </p>\n </div>\n <p class=\"cancel\"><a href=\"cases/case-details/{{jurisdiction}}/{{caseType}}/{{caseId}}\" >{{retunToTask | rpxTranslate}}</a></p>\n</div>\n" }]
59
63
  }], () => [{ type: i1.ActivatedRoute }], null); })();
60
64
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseReviewSpecificAccessRejectComponent, { className: "CaseReviewSpecificAccessRejectComponent", filePath: "lib/shared/components/case-viewer/case-review-specific-access-reject/case-review-specific-access-reject.component.ts", lineNumber: 8 }); })();
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlamVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS12aWV3ZXIvY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlamVjdC9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVqZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVqZWN0L2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZWplY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFNakQsTUFBTSxPQUFPLHVDQUF1QztJQU1yQjtJQUp0QixNQUFNLENBQVM7SUFDTixXQUFXLEdBQUcsdUNBQXVDLENBQUM7SUFDdEQsY0FBYyxHQUFHLG9CQUFvQixDQUFDO0lBRXRELFlBQTZCLEtBQXFCO1FBQXJCLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBQUksQ0FBQztJQUVoRCxRQUFRO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0RCxDQUFDO2lJQVZVLHVDQUF1Qzs2REFBdkMsdUNBQXVDO1lDUHBELG9CQUFPO1lBS0MsQUFERixBQURGLEFBREYsQUFERiw4QkFBbUMsYUFDTCxhQUNnQixhQUNXLFlBQ2xCO1lBQzdCLFlBQThDOztZQUFBLHFCQUFJO1lBRXRELEFBREUsaUJBQUssRUFDRDtZQUNOLDZCQUE0QjtZQUFBLGFBQXNDOztZQUFBLGlCQUFLO1lBQ3ZFLDZCQUFzQjtZQUNwQixhQUNGOztZQUVKLEFBREUsQUFERSxpQkFBSSxFQUNBLEVBQ0Y7WUFHRixBQURGLEFBREYsK0JBQTJDLFNBQ3RDLFlBQ3dFO1lBQUEsYUFBaUM7O1lBRTlHLEFBREUsQUFENEcsaUJBQUksRUFDNUcsRUFDQTtZQUNZLEFBQWxCLDZCQUFrQixhQUF5QztZQUFBLGFBQThCOztZQUMzRixBQUQrRixBQUFKLGlCQUFJLEVBQUksRUFDN0Y7O1lBZkksZUFBOEM7WUFBOUMsaUZBQThDO1lBR3RCLGVBQXNDO1lBQXRDLGdFQUFzQztZQUVoRSxlQUNGO1lBREUsNkdBQ0Y7WUFLeUUsZUFBaUM7WUFBakMsZ0VBQWlDO1lBR3pGLGVBQW9DO1lBQXBDLDBGQUFvQztZQUFFLGNBQThCO1lBQTlCLDZEQUE4Qjs7O2lGRGI5RSx1Q0FBdUM7Y0FKbkQsU0FBUzsyQkFDRSxvQ0FBb0M7O2tGQUduQyx1Q0FBdUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVqZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZWplY3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENhc2VSZXZpZXdTcGVjaWZpY0FjY2Vzc1JlamVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGNhc2VJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcmV0dW5Ub1Rhc2sgPSAnUmV0dXJuIHRvIHRoZSBUYXNrcyB0YWIgZm9yIHRoaXMgY2FzZSc7XG4gIHB1YmxpYyByZWFkb25seSByZXR1cm5Ub015VGFzayA9ICdSZXR1cm4gdG8gTXkgdGFza3MnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX2lkO1xuICB9XG59XG4iLCI8cD48L3A+XG48ZGl2IGNsYXNzPVwiZ292dWstd2lkdGgtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcGFuZWwgZ292dWstcGFuZWwtLWNvbmZpcm1hdGlvblwiPlxuICAgICAgICA8aDEgY2xhc3M9XCJnb3Z1ay1wYW5lbF9fdGl0bGVcIj5cbiAgICAgICAgICB7eydSZXF1ZXN0IGZvciBhY2Nlc3MgZGVuaWVkJyB8IHJweFRyYW5zbGF0ZX19PGJyPlxuICAgICAgICA8L2gxPlxuICAgICAgPC9kaXY+XG4gICAgICA8aDIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW1cIj57eydXaGF0IGhhcHBlbnMgbmV4dCcgfCBycHhUcmFuc2xhdGV9fTwvaDI+XG4gICAgICA8cCBjbGFzcz1cImdvdnVrLWJvZHlcIj5cbiAgICAgICAge3snVGhlIHJlcXVlc3RlciBoYXMgYmVlbiBkZW5pZWQgYWNjZXNzIHRvIHRoaXMgY2FzZS4nIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtcmVsYXRlZFwiPlxuICAgIDxwPlxuICAgICAgPGEgYnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTNcIiBocmVmPVwidGFza3MvbGlzdFwiID57e3JldHVyblRvTXlUYXNrIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgPC9wPlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJjYW5jZWxcIj48YSBocmVmPVwiY2FzZXMvY2FzZS1kZXRhaWxzL3t7Y2FzZUlkfX1cIiA+e3tyZXR1blRvVGFzayB8IHJweFRyYW5zbGF0ZX19PC9hPjwvcD5cbjwvZGl2PlxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlamVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS12aWV3ZXIvY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlamVjdC9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVqZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVqZWN0L2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZWplY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFNakQsTUFBTSxPQUFPLHVDQUF1QztJQVFyQjtJQU50QixNQUFNLENBQVM7SUFDZixZQUFZLENBQVM7SUFDckIsUUFBUSxDQUFTO0lBQ1IsV0FBVyxHQUFHLHVDQUF1QyxDQUFDO0lBQ3RELGNBQWMsR0FBRyxvQkFBb0IsQ0FBQztJQUV0RCxZQUE2QixLQUFxQjtRQUFyQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtJQUFJLENBQUM7SUFFaEQsUUFBUTtRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQzVFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQzdELENBQUM7aUlBZFUsdUNBQXVDOzZEQUF2Qyx1Q0FBdUM7WUNQcEQsb0JBQU87WUFLQyxBQURGLEFBREYsQUFERixBQURGLDhCQUFtQyxhQUNMLGFBQ2dCLGFBQ1csWUFDbEI7WUFDN0IsWUFBOEM7O1lBQUEscUJBQUk7WUFFdEQsQUFERSxpQkFBSyxFQUNEO1lBQ04sNkJBQTRCO1lBQUEsYUFBc0M7O1lBQUEsaUJBQUs7WUFDdkUsNkJBQXNCO1lBQ3BCLGFBQ0Y7O1lBRUosQUFERSxBQURFLGlCQUFJLEVBQ0EsRUFDRjtZQUdGLEFBREYsQUFERiwrQkFBMkMsU0FDdEMsWUFDd0U7WUFBQSxhQUFpQzs7WUFFOUcsQUFERSxBQUQ0RyxpQkFBSSxFQUM1RyxFQUNBO1lBQ1ksQUFBbEIsNkJBQWtCLGFBQXVFO1lBQUEsYUFBOEI7O1lBQ3pILEFBRDZILEFBQUosaUJBQUksRUFBSSxFQUMzSDs7WUFmSSxlQUE4QztZQUE5QyxpRkFBOEM7WUFHdEIsZUFBc0M7WUFBdEMsaUVBQXNDO1lBRWhFLGVBQ0Y7WUFERSw2R0FDRjtZQUt5RSxlQUFpQztZQUFqQyxnRUFBaUM7WUFHekYsZUFBa0U7WUFBbEUsb0lBQWtFO1lBQUUsY0FBOEI7WUFBOUIsNkRBQThCOzs7aUZEYjVHLHVDQUF1QztjQUpuRCxTQUFTOzJCQUNFLG9DQUFvQzs7a0ZBR25DLHVDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZWplY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlamVjdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FzZVJldmlld1NwZWNpZmljQWNjZXNzUmVqZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgY2FzZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBqdXJpc2RpY3Rpb246IHN0cmluZztcbiAgcHVibGljIGNhc2VUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSByZXR1blRvVGFzayA9ICdSZXR1cm4gdG8gdGhlIFRhc2tzIHRhYiBmb3IgdGhpcyBjYXNlJztcbiAgcHVibGljIHJlYWRvbmx5IHJldHVyblRvTXlUYXNrID0gJ1JldHVybiB0byBNeSB0YXNrcyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfaWQ7XG4gICAgdGhpcy5qdXJpc2RpY3Rpb24gPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuanVyaXNkaWN0aW9uLmlkO1xuICAgIHRoaXMuY2FzZVR5cGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuaWQ7XG4gIH1cbn1cbiIsIjxwPjwvcD5cbjxkaXYgY2xhc3M9XCJnb3Z1ay13aWR0aC1jb250YWluZXJcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1wYW5lbCBnb3Z1ay1wYW5lbC0tY29uZmlybWF0aW9uXCI+XG4gICAgICAgIDxoMSBjbGFzcz1cImdvdnVrLXBhbmVsX190aXRsZVwiPlxuICAgICAgICAgIHt7J1JlcXVlc3QgZm9yIGFjY2VzcyBkZW5pZWQnIHwgcnB4VHJhbnNsYXRlfX08YnI+XG4gICAgICAgIDwvaDE+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxoMiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbVwiPnt7J1doYXQgaGFwcGVucyBuZXh0JyB8IHJweFRyYW5zbGF0ZX19PC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiZ292dWstYm9keVwiPlxuICAgICAgICB7eydUaGUgcmVxdWVzdGVyIGhhcyBiZWVuIGRlbmllZCBhY2Nlc3MgdG8gdGhpcyBjYXNlLicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1yZWxhdGVkXCI+XG4gICAgPHA+XG4gICAgICA8YSBidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstIS1tYXJnaW4tcmlnaHQtM1wiIGhyZWY9XCJ0YXNrcy9saXN0XCIgPnt7cmV0dXJuVG9NeVRhc2sgfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgICA8L3A+XG4gIDwvZGl2PlxuICA8cCBjbGFzcz1cImNhbmNlbFwiPjxhIGhyZWY9XCJjYXNlcy9jYXNlLWRldGFpbHMve3tqdXJpc2RpY3Rpb259fS97e2Nhc2VUeXBlfX0ve3tjYXNlSWR9fVwiID57e3JldHVuVG9UYXNrIHwgcnB4VHJhbnNsYXRlfX08L2E+PC9wPlxuPC9kaXY+XG4iXX0=
@@ -113,7 +113,7 @@ export class CaseReviewSpecificAccessRequestComponent {
113
113
  }
114
114
  }
115
115
  static ɵfac = function CaseReviewSpecificAccessRequestComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CaseReviewSpecificAccessRequestComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.ActivatedRoute), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.AbstractAppConfig)); };
116
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseReviewSpecificAccessRequestComponent, selectors: [["ccd-case-review-specific-access-request"]], decls: 77, vars: 55, consts: [[3, "error", 4, "ngIf"], [3, "submit", "formGroup"], [1, "govuk-form-group"], ["aria-describedby", "reason-hint", 1, "govuk-fieldset"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--l"], [1, "govuk-fieldset__heading"], [1, "govuk-table"], [1, "govuk-table__body"], [1, "govuk-table__row"], ["scope", "row", 1, "govuk-table__header", "leftLabel"], [1, "govuk-table__cell"], [1, "govuk-form-group", 3, "ngClass"], [1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--m"], ["id", "error-message", "class", "govuk-error-message", 4, "ngIf"], [1, "govuk-radios__item"], ["id", "reason-0", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-0", 1, "govuk-label", "govuk-radios__label"], ["id", "reason-1", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-1", 1, "govuk-label", "govuk-radios__label"], ["id", "reason-2", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-2", 1, "govuk-label", "govuk-radios__label"], [1, "govuk-button-group"], ["type", "submit", 1, "govuk-button", "govuk-!-margin-right-3"], [1, "govuk-grid-column-full", "govuk-!-padding-left-0"], ["href", "javascript:void(0)", 1, "govuk-body", 3, "click"], [3, "error"], ["id", "error-message", 1, "govuk-error-message"]], template: function CaseReviewSpecificAccessRequestComponent_Template(rf, ctx) { if (rf & 1) {
116
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseReviewSpecificAccessRequestComponent, selectors: [["ccd-case-review-specific-access-request"]], decls: 77, vars: 55, consts: [[3, "error", 4, "ngIf"], [3, "submit", "formGroup"], [1, "govuk-form-group"], ["aria-describedby", "reason-hint", 1, "govuk-fieldset"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--l"], [1, "govuk-fieldset__heading"], [1, "govuk-table"], [1, "govuk-table__body"], [1, "govuk-table__row"], ["scope", "row", 1, "govuk-table__header", "leftLabel"], [1, "govuk-table__cell"], [1, "govuk-form-group", 3, "ngClass"], [1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--m"], ["id", "error-message", "class", "govuk-error-message", 4, "ngIf"], [1, "govuk-radios__item"], ["id", "reason-0", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-0", 1, "govuk-label", "govuk-radios__label"], ["id", "reason-1", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-1", 1, "govuk-label", "govuk-radios__label"], ["id", "reason-2", "name", "radioSelected", "type", "radio", "formControlName", "radioSelected", 1, "govuk-radios__input", 3, "change", "value", "checked"], ["for", "reason-2", 1, "govuk-label", "govuk-radios__label"], [1, "govuk-button-group"], ["type", "submit", 1, "govuk-button", "govuk-!-margin-right-3"], [1, "govuk-grid-column-full", "govuk-!-padding-left-0"], ["href", "#", 1, "govuk-body", 3, "click"], [3, "error"], ["id", "error-message", 1, "govuk-error-message"]], template: function CaseReviewSpecificAccessRequestComponent_Template(rf, ctx) { if (rf & 1) {
117
117
  i0.ɵɵtemplate(0, CaseReviewSpecificAccessRequestComponent_exui_error_message_0_Template, 1, 1, "exui-error-message", 0);
118
118
  i0.ɵɵelementStart(1, "form", 1);
119
119
  i0.ɵɵlistener("submit", function CaseReviewSpecificAccessRequestComponent_Template_form_submit_1_listener() { return ctx.onSubmit(); });
@@ -194,7 +194,7 @@ export class CaseReviewSpecificAccessRequestComponent {
194
194
  i0.ɵɵpipe(71, "rpxTranslate");
195
195
  i0.ɵɵelementEnd();
196
196
  i0.ɵɵelementStart(72, "div", 25)(73, "p")(74, "a", 26);
197
- i0.ɵɵlistener("click", function CaseReviewSpecificAccessRequestComponent_Template_a_click_74_listener() { return ctx.onCancel(); });
197
+ i0.ɵɵlistener("click", function CaseReviewSpecificAccessRequestComponent_Template_a_click_74_listener($event) { ctx.onCancel(); return $event.preventDefault(); });
198
198
  i0.ɵɵtext(75);
199
199
  i0.ɵɵpipe(76, "rpxTranslate");
200
200
  i0.ɵɵelementEnd()()()()();
@@ -250,7 +250,7 @@ export class CaseReviewSpecificAccessRequestComponent {
250
250
  }
251
251
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseReviewSpecificAccessRequestComponent, [{
252
252
  type: Component,
253
- args: [{ selector: 'ccd-case-review-specific-access-request', template: "<exui-error-message\n *ngIf=\"formGroup.invalid && submitted\"\n [error]=\"errorMessage\">\n</exui-error-message>\n\n<form [formGroup]=\"formGroup\" (submit)=\"onSubmit()\">\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"reason-hint\">\n <div class=\"govuk-grid-column-two-thirds\">\n <p></p>\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ title | rpxTranslate }}\n </h1>\n </legend>\n <p></p>\n <table class=\"govuk-table\">\n <caption></caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Case name' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.caseName }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Case reference' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.caseReference }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Date submitted' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.dateSubmitted }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Request from' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.requestFrom }}<br /></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Reason for case access' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.reasonForCaseAccess | rpxTranslate }}</td>\n </tr>\n </tbody>\n </table>\n\n <div\n class=\"govuk-form-group\"\n [ngClass]=\"{ 'form-group-error': formGroup.invalid && submitted }\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ hint | rpxTranslate }}\n </h1>\n </legend>\n <div\n id=\"error-message\"\n class=\"govuk-error-message\"\n *ngIf=\"formGroup.get('radioSelected').invalid && submitted\">\n {{ errorMessage.description | rpxTranslate }}\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-0\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[0].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[0].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-0\">\n {{ accessReasons[0].reason | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-1\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[1].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[1].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-1\">\n {{ accessReasons[1].reason | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-2\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[2].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[2].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-2\">\n {{ accessReasons[2].reason | rpxTranslate }}\n </label>\n </div>\n </fieldset>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"govuk-button-group\">\n <button class=\"govuk-button govuk-!-margin-right-3\" type=\"submit\">\n {{'Continue' | rpxTranslate}}\n </button>\n <div class=\"govuk-grid-column-full govuk-!-padding-left-0\">\n <p>\n <a class=\"govuk-body\" (click)=\"onCancel()\" href=\"javascript:void(0)\">\n {{'Cancel' | rpxTranslate}}\n </a>\n </p>\n </div>\n </div>\n</form>\n", styles: [".left-label{width:220px}\n"] }]
253
+ args: [{ selector: 'ccd-case-review-specific-access-request', template: "<exui-error-message\n *ngIf=\"formGroup.invalid && submitted\"\n [error]=\"errorMessage\">\n</exui-error-message>\n\n<form [formGroup]=\"formGroup\" (submit)=\"onSubmit()\">\n <div class=\"govuk-form-group\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"reason-hint\">\n <div class=\"govuk-grid-column-two-thirds\">\n <p></p>\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--l\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ title | rpxTranslate }}\n </h1>\n </legend>\n <p></p>\n <table class=\"govuk-table\">\n <caption></caption>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Case name' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.caseName }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Case reference' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.caseReference }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Date submitted' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.dateSubmitted }}</td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Request from' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.requestFrom }}<br /></td>\n </tr>\n <tr class=\"govuk-table__row\">\n <th scope=\"row\" class=\"govuk-table__header leftLabel\" >\n {{'Reason for case access' | rpxTranslate}}\n </th>\n <td class=\"govuk-table__cell\">{{ requestAccessDetails.reasonForCaseAccess | rpxTranslate }}</td>\n </tr>\n </tbody>\n </table>\n\n <div\n class=\"govuk-form-group\"\n [ngClass]=\"{ 'form-group-error': formGroup.invalid && submitted }\">\n <fieldset class=\"govuk-fieldset\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--m\">\n <h1 class=\"govuk-fieldset__heading\">\n {{ hint | rpxTranslate }}\n </h1>\n </legend>\n <div\n id=\"error-message\"\n class=\"govuk-error-message\"\n *ngIf=\"formGroup.get('radioSelected').invalid && submitted\">\n {{ errorMessage.description | rpxTranslate }}\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-0\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[0].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[0].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-0\">\n {{ accessReasons[0].reason | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-1\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[1].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[1].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-1\">\n {{ accessReasons[1].reason | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-radios__item\">\n <input\n class=\"govuk-radios__input\"\n id=\"reason-2\"\n name=\"radioSelected\"\n type=\"radio\"\n [value]=\"accessReasons[2].reason\"\n formControlName=\"radioSelected\"\n [checked]=\"accessReasons[2].checked\"\n (change)=\"onChange()\"/>\n <label class=\"govuk-label govuk-radios__label\" for=\"reason-2\">\n {{ accessReasons[2].reason | rpxTranslate }}\n </label>\n </div>\n </fieldset>\n </div>\n </div>\n </fieldset>\n </div>\n\n <div class=\"govuk-button-group\">\n <button class=\"govuk-button govuk-!-margin-right-3\" type=\"submit\">\n {{'Continue' | rpxTranslate}}\n </button>\n <div class=\"govuk-grid-column-full govuk-!-padding-left-0\">\n <p>\n <a class=\"govuk-body\" (click)=\"onCancel(); $event.preventDefault()\" href=\"#\">\n {{'Cancel' | rpxTranslate}}\n </a>\n </p>\n </div>\n </div>\n</form>\n", styles: [".left-label{width:220px}\n"] }]
254
254
  }], () => [{ type: i1.FormBuilder }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: i3.AbstractAppConfig }], null); })();
255
255
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseReviewSpecificAccessRequestComponent, { className: "CaseReviewSpecificAccessRequestComponent", filePath: "lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.ts", lineNumber: 14 }); })();
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlcXVlc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2Utdmlld2VyL2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0L2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUNBQWlDLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7SUNOaEgseUNBR3FCOzs7SUFEbkIsMkNBQXNCOzs7SUEyRFosK0JBRzhEO0lBQzVELFlBQ0Y7O0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSxzRkFDRjs7QURyRFosTUFBTSxPQUFPLHdDQUF3QztJQW9CaEM7SUFDQTtJQUNBO0lBQ0E7SUFyQlosTUFBTSxDQUFDLHVCQUF1QixHQUFHLG9CQUFvQixDQUFDO0lBQ3RELFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDbEIsS0FBSyxDQUFTO0lBQ2QsSUFBSSxDQUFTO0lBQ2IsWUFBWSxDQUFTO0lBQ3JCLFNBQVMsQ0FBWTtJQUNyQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLFlBQVksQ0FBZTtJQUNsQixhQUFhLENBQTBCO0lBQ2hELG9CQUFvQixDQUF1QjtJQUMzQyxnQkFBZ0IsQ0FBZTtJQUMvQixjQUFjLENBQVM7SUFDdkIsV0FBVyxDQUFXO0lBRVosWUFBWSxHQUFHLG9CQUFvQixDQUFDO0lBQ3BDLHdCQUF3QixHQUFHLGVBQWUsQ0FBQztJQUU1RCxZQUNtQixFQUFlLEVBQ2YsS0FBcUIsRUFDckIsTUFBYyxFQUNkLFNBQTRCO1FBSDVCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFFN0MsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUNuQixFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7WUFDeEQsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1lBQ3ZELEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFO1NBQ2xFLENBQUM7SUFDSixDQUFDO0lBRU0sUUFBUTtRQUNiLDhIQUE4SDtRQUM5SCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsbUNBQW1DLENBQUMsS0FBSyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLEdBQUcsbUNBQW1DLENBQUMsSUFBSSxDQUFDO1FBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsbUNBQW1DLENBQUMsUUFBUSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDN0IsYUFBYSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzFELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsWUFBWSxHQUFHO2dCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ3hCLFdBQVcsRUFBRSxpQ0FBaUMsQ0FBQyxZQUFZO2FBQzVELENBQUM7UUFDSixDQUFDO1FBQ0QsaUNBQWlDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QixvR0FBb0c7WUFDcEcsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDckQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FDM0MsSUFBSSxDQUFDLHdCQUF3QixDQUM5QixDQUFDLEtBQUssQ0FBQztZQUNSLCtHQUErRztZQUMvRyxZQUFZO1lBQ1osTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7aUJBQzNDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMzQixPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMvQiw4REFBOEQ7WUFDOUQsTUFBTSx1QkFBdUIsR0FBRztnQkFDOUIsTUFBTSxFQUFFLFlBQVk7Z0JBQ3BCLE1BQU07YUFDd0IsQ0FBQztZQUNqQyxJQUFJLFlBQVksQ0FBQyxjQUFjLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNqRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsd0NBQXdDLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsMENBQTBDO0lBQ25DLFdBQVc7UUFDaEIsTUFBTSx3QkFBd0IsR0FDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyx5Q0FBeUMsRUFBRSxDQUFDO1FBRTdELElBQUksd0JBQXdCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQztrSUFsR1Usd0NBQXdDOzZEQUF4Qyx3Q0FBd0M7WUNickQsdUhBRXlCO1lBR3pCLCtCQUFvRDtZQUF0QixxSEFBVSxjQUFVLElBQUM7WUFHN0MsQUFERixBQURGLDhCQUE4QixrQkFDb0MsYUFDcEI7WUFDeEMsb0JBQU87WUFFTCxBQURGLGlDQUFpRSxZQUMzQjtZQUNsQyxZQUNGOztZQUNGLEFBREUsaUJBQUssRUFDRTtZQUNULHFCQUFPO1lBQ1AsaUNBQTJCO1lBQ3pCLDJCQUFtQjtZQUdmLEFBREYsQUFERixpQ0FBaUMsYUFDRixjQUM0QjtZQUNyRCxhQUNGOztZQUFBLGlCQUFLO1lBQ0wsK0JBQThCO1lBQUEsYUFBbUM7WUFDbkUsQUFEbUUsaUJBQUssRUFDbkU7WUFFSCxBQURGLDhCQUE2QixjQUM0QjtZQUNyRCxhQUNGOztZQUFBLGlCQUFLO1lBQ0wsK0JBQThCO1lBQUEsYUFBd0M7WUFDeEUsQUFEd0UsaUJBQUssRUFDeEU7WUFFSCxBQURGLDhCQUE2QixjQUM0QjtZQUNyRCxhQUNGOztZQUFBLGlCQUFLO1lBQ0wsK0JBQThCO1lBQUEsYUFBd0M7WUFDeEUsQUFEd0UsaUJBQUssRUFDeEU7WUFFSCxBQURGLDhCQUE2QixjQUM0QjtZQUNyRCxhQUNGOztZQUFBLGlCQUFLO1lBQ0wsK0JBQThCO1lBQUEsYUFBc0M7WUFBQSxzQkFBTTtZQUM1RSxBQUQ0RSxpQkFBSyxFQUM1RTtZQUVILEFBREYsOEJBQTZCLGNBQzRCO1lBQ3JELGFBQ0Y7O1lBQUEsaUJBQUs7WUFDTCwrQkFBOEI7WUFBQSxhQUE2RDs7WUFHakcsQUFERSxBQURFLEFBRDZGLGlCQUFLLEVBQzdGLEVBQ0MsRUFDRjtZQU9GLEFBREYsQUFERixBQUhGLGdDQUVxRSxvQkFDbEMsa0JBQ2tDLGFBQzNCO1lBQ2xDLGFBQ0Y7O1lBQ0YsQUFERSxpQkFBSyxFQUNFO1lBQ1QsNEZBRzhEO1lBSTVELEFBREYsZ0NBQWdDLGlCQVNMO1lBQXZCLHVIQUFVLGNBQVUsSUFBQztZQVJ2QixpQkFReUI7WUFDekIsa0NBQThEO1lBQzVELGFBQ0Y7O1lBQ0YsQUFERSxpQkFBUSxFQUNKO1lBRUosQUFERixnQ0FBZ0MsaUJBU0w7WUFBdkIsdUhBQVUsY0FBVSxJQUFDO1lBUnZCLGlCQVF5QjtZQUN6QixrQ0FBOEQ7WUFDNUQsYUFDRjs7WUFDRixBQURFLGlCQUFRLEVBQ0o7WUFFSixBQURGLGdDQUFnQyxpQkFTTDtZQUF2Qix1SEFBVSxjQUFVLElBQUM7WUFSdkIsaUJBUXlCO1lBQ3pCLGtDQUE4RDtZQUM1RCxhQUNGOztZQU1aLEFBREUsQUFERSxBQURFLEFBREUsQUFERSxBQURFLGlCQUFRLEVBQ0osRUFDRyxFQUNQLEVBQ0YsRUFDRyxFQUNQO1lBR0osQUFERixnQ0FBZ0Msa0JBQ29DO1lBQ2hFLGFBQ0Y7O1lBQUEsaUJBQVM7WUFHTCxBQURGLEFBREYsZ0NBQTJELFNBQ3RELGFBQ29FO1lBQS9DLGlIQUFTLGNBQVUsSUFBQztZQUN4QyxhQUNGOztZQUlSLEFBREUsQUFERSxBQURFLEFBREUsaUJBQUksRUFDRixFQUNBLEVBQ0YsRUFDRDs7WUE5SEosNkRBQW9DO1lBSWpDLGNBQXVCO1lBQXZCLHlDQUF1QjtZQU9qQixlQUNGO1lBREUsaUVBQ0Y7WUFRTSxlQUNGO1lBREUsb0VBQ0Y7WUFDOEIsZUFBbUM7WUFBbkMsdURBQW1DO1lBSS9ELGVBQ0Y7WUFERSx5RUFDRjtZQUM4QixlQUF3QztZQUF4Qyw0REFBd0M7WUFJcEUsZUFDRjtZQURFLHlFQUNGO1lBQzhCLGVBQXdDO1lBQXhDLDREQUF3QztZQUlwRSxlQUNGO1lBREUsdUVBQ0Y7WUFDOEIsZUFBc0M7WUFBdEMsMERBQXNDO1lBSWxFLGVBQ0Y7WUFERSxpRkFDRjtZQUM4QixlQUE2RDtZQUE3RCwwRkFBNkQ7WUFPL0YsZUFBa0U7WUFBbEUsNkZBQWtFO1lBSTVELGVBQ0Y7WUFERSxpRUFDRjtZQUtDLGVBQXlEO1lBQXpELGtGQUF5RDtZQVN4RCxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFRRSxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFRRSxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFVUixlQUNGO1lBREUsbUVBQ0Y7WUFJTSxlQUNGO1lBREUsaUVBQ0Y7OztpRkQ5R0ssd0NBQXdDO2NBTHBELFNBQVM7MkJBQ0UseUNBQXlDOztrRkFJeEMsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IENhc2VWaWV3LCBFcnJvck1lc3NhZ2UsIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBBY2Nlc3NSZWFzb24sIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdEVycm9ycywgUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0UGFnZVRleHQgfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZVJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHN0YXRpYyBDQU5DRUxfTElOS19ERVNUSU5BVElPTiA9ICcvd29yay9teS13b3JrL2xpc3QnO1xuICBwdWJsaWMgY29sbGFwc2VkID0gZmFsc2U7XG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBwdWJsaWMgaGludDogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVJlZkxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgcHVibGljIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlOiBFcnJvck1lc3NhZ2U7XG4gIHB1YmxpYyByZWFkb25seSBhY2Nlc3NSZWFzb25zOiBEaXNwbGF5ZWRBY2Nlc3NSZWFzb25bXTtcbiAgcHVibGljIHJlcXVlc3RBY2Nlc3NEZXRhaWxzOiBSZXF1ZXN0QWNjZXNzRGV0YWlscztcbiAgcHVibGljIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHVzZXJBY2Nlc3NUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmljRXJyb3IgPSAnVGhlcmUgaXMgYSBwcm9ibGVtJztcbiAgcHJpdmF0ZSByZWFkb25seSByYWRpb1NlbGVjdGVkQ29udHJvbE5hbWUgPSAncmFkaW9TZWxlY3RlZCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcsXG4gICkge1xuICAgIHRoaXMuYWNjZXNzUmVhc29ucyA9IFtcbiAgICAgIHsgcmVhc29uOiBBY2Nlc3NSZWFzb24uQVBQUk9WRV9SRVFVRVNULCBjaGVja2VkOiBmYWxzZSB9LFxuICAgICAgeyByZWFzb246IEFjY2Vzc1JlYXNvbi5SRUpFQ1RfUkVRVUVTVCwgY2hlY2tlZDogZmFsc2UgfSxcbiAgICAgIHsgcmVhc29uOiBBY2Nlc3NSZWFzb24uUkVRVUVTVF9NT1JFX0lORk9STUFUSU9OLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gVE9ETzogdGhpcyB0aWNrZXQgaXMgYmxvY2tlZCBzbyBtb2NrZWQgd2l0aCB0aG9zZSBkYXRhIHRvIGdvIHRocm91Z2gsIHRoZXkgd2lsbCBiZSByZW1vdmVkIGFuZCBpbXBsaW1lbnRlZCB3aXRoIGFjdHVhbCBkYXRhXG4gICAgLy8gd2hlbiBkZXBlbmRlbmN5IHJlc29sdmVkXG4gICAgdGhpcy5zZXRNb2NrRGF0YSgpO1xuICAgIHRoaXMudGl0bGUgPSBSZXZpZXdTcGVjaWZpY0FjY2Vzc1JlcXVlc3RQYWdlVGV4dC5USVRMRTtcbiAgICB0aGlzLmhpbnQgPSBSZXZpZXdTcGVjaWZpY0FjY2Vzc1JlcXVlc3RQYWdlVGV4dC5ISU5UO1xuICAgIHRoaXMuY2FzZVJlZkxhYmVsID0gUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0UGFnZVRleHQuQ0FTRV9SRUY7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHJhZGlvU2VsZWN0ZWQ6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNhc2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMucmFkaW9TZWxlY3RlZENvbnRyb2xOYW1lKS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHtcbiAgICAgICAgdGl0bGU6IHRoaXMuZ2VuZXJpY0Vycm9yLFxuICAgICAgICBkZXNjcmlwdGlvbjogUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0RXJyb3JzLk5PX1NFTEVDVElPTixcbiAgICAgIH07XG4gICAgfVxuICAgIC8vIEluaXRpYXRlIFJldmlldyBBY2Nlc3MgUmVxdWVzdFxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgLy8gR2V0IHRoZSBDYXNlIFJlZmVyZW5jZSAoZm9yIHdoaWNoIGFjY2VzcyBpcyBiZWluZyByZXF1ZXN0ZWQpIGZyb20gdGhlIEFjdGl2YXRlZFJvdXRlU25hcHNob3QgZGF0YVxuICAgICAgY29uc3QgY2FzZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV9pZDtcbiAgICAgIGNvbnN0IHJhZGlvU2VsZWN0ZWRWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldChcbiAgICAgICAgdGhpcy5yYWRpb1NlbGVjdGVkQ29udHJvbE5hbWVcbiAgICAgICkudmFsdWU7XG4gICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBBY2Nlc3NSZWFzb24gZW51bSB2YWx1ZS4gQ2FuJ3QgdXNlIE9iamVjdC52YWx1ZXMgYmVjYXVzZSBpdCdzIG5vdCBhdmFpbGFibGUgaW5cbiAgICAgIC8vIDwgRVMyMDE3IVxuICAgICAgY29uc3QgcmVhc29uTnVtYmVyID0gT2JqZWN0LmtleXMoQWNjZXNzUmVhc29uKVxuICAgICAgICAubWFwKChlKSA9PiBBY2Nlc3NSZWFzb25bZV0pXG4gICAgICAgIC5pbmRleE9mKHJhZGlvU2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAvLyByZXF1ZXN0IG1vZGVsIGNyZWF0ZWQgLCBpdCB3aWxsIGJlIHVzZWQgZm9yIHN1Ym1pc3Npb24gcGFydFxuICAgICAgY29uc3QgY2hhbGxlbmdlZEFjY2Vzc1JlcXVlc3QgPSB7XG4gICAgICAgIHJlYXNvbjogcmVhc29uTnVtYmVyLFxuICAgICAgICBjYXNlSWQsXG4gICAgICB9IGFzIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdDtcbiAgICAgIGlmIChBY2Nlc3NSZWFzb24uUkVKRUNUX1JFUVVFU1QgPT09IHJhZGlvU2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3JlamVjdGVkJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChDYXNlUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0Q29tcG9uZW50LkNBTkNFTF9MSU5LX0RFU1RJTkFUSU9OKTtcbiAgfVxuXG4gIC8vIHJlbW92ZSBvbmNlIEFjY2VzcyBtYW5hZ2VtZW50IGdvZXMgbGl2ZVxuICBwdWJsaWMgc2V0TW9ja0RhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgcmVxdWVzdEFjY2Vzc0RldGFpbHNNb2NrID1cbiAgICAgIHRoaXMuYXBwQ29uZmlnLmdldEFjY2Vzc01hbmFnZW1lbnRSZXF1ZXN0UmV2aWV3TW9ja01vZGVsKCk7XG5cbiAgICBpZiAocmVxdWVzdEFjY2Vzc0RldGFpbHNNb2NrLmFjdGl2ZSkge1xuICAgICAgdGhpcy5yZXF1ZXN0QWNjZXNzRGV0YWlscyA9IHJlcXVlc3RBY2Nlc3NEZXRhaWxzTW9jay5kZXRhaWxzO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXllZEFjY2Vzc1JlYXNvbiB7XG4gIHJlYXNvbjogQWNjZXNzUmVhc29uO1xuICBjaGVja2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RBY2Nlc3NEZXRhaWxzIHtcbiAgY2FzZU5hbWU6IHN0cmluZztcbiAgY2FzZVJlZmVyZW5jZTogc3RyaW5nO1xuICBkYXRlU3VibWl0dGVkOiBzdHJpbmc7XG4gIHJlcXVlc3RGcm9tOiBzdHJpbmc7XG4gIHJlYXNvbkZvckNhc2VBY2Nlc3M6IHN0cmluZztcbn1cbiIsIjxleHVpLWVycm9yLW1lc3NhZ2VcbiAgKm5nSWY9XCJmb3JtR3JvdXAuaW52YWxpZCAmJiBzdWJtaXR0ZWRcIlxuICBbZXJyb3JdPVwiZXJyb3JNZXNzYWdlXCI+XG48L2V4dWktZXJyb3ItbWVzc2FnZT5cblxuPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiAoc3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIj5cbiAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJyZWFzb24taGludFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgICAgPHA+PC9wPlxuICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1sXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgIHt7IHRpdGxlIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9oMT5cbiAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgIDxwPjwvcD5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICA8Y2FwdGlvbj48L2NhcHRpb24+XG4gICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGxlZnRMYWJlbFwiID5cbiAgICAgICAgICAgICAgICB7eydDYXNlIG5hbWUnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyByZXF1ZXN0QWNjZXNzRGV0YWlscy5jYXNlTmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J0Nhc2UgcmVmZXJlbmNlJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVxdWVzdEFjY2Vzc0RldGFpbHMuY2FzZVJlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J0RhdGUgc3VibWl0dGVkJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVxdWVzdEFjY2Vzc0RldGFpbHMuZGF0ZVN1Ym1pdHRlZCB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J1JlcXVlc3QgZnJvbScgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHJlcXVlc3RBY2Nlc3NEZXRhaWxzLnJlcXVlc3RGcm9tIH19PGJyIC8+PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBsZWZ0TGFiZWxcIiA+XG4gICAgICAgICAgICAgICAge3snUmVhc29uIGZvciBjYXNlIGFjY2VzcycgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHJlcXVlc3RBY2Nlc3NEZXRhaWxzLnJlYXNvbkZvckNhc2VBY2Nlc3MgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Zvcm0tZ3JvdXAtZXJyb3InOiBmb3JtR3JvdXAuaW52YWxpZCAmJiBzdWJtaXR0ZWQgfVwiPlxuICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCI+XG4gICAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1tXCI+XG4gICAgICAgICAgICAgIDxoMSBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAge3sgaGludCB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGlkPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgncmFkaW9TZWxlY3RlZCcpLmludmFsaWQgJiYgc3VibWl0dGVkXCI+XG4gICAgICAgICAgICAgIHt7IGVycm9yTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJyZWFzb24tMFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInJhZGlvU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImFjY2Vzc1JlYXNvbnNbMF0ucmVhc29uXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhY2Nlc3NSZWFzb25zWzBdLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbFwiIGZvcj1cInJlYXNvbi0wXCI+XG4gICAgICAgICAgICAgICAge3sgYWNjZXNzUmVhc29uc1swXS5yZWFzb24gfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIlxuICAgICAgICAgICAgICAgIGlkPVwicmVhc29uLTFcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJyYWRpb1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhY2Nlc3NSZWFzb25zWzFdLnJlYXNvblwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmFkaW9TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWNjZXNzUmVhc29uc1sxXS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKClcIi8+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBmb3I9XCJyZWFzb24tMVwiPlxuICAgICAgICAgICAgICAgIHt7IGFjY2Vzc1JlYXNvbnNbMV0ucmVhc29uIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCJcbiAgICAgICAgICAgICAgICBpZD1cInJlYXNvbi0yXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicmFkaW9TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYWNjZXNzUmVhc29uc1syXS5yZWFzb25cIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJhZGlvU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFjY2Vzc1JlYXNvbnNbMl0uY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgpXCIvPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwicmVhc29uLTJcIj5cbiAgICAgICAgICAgICAgICB7eyBhY2Nlc3NSZWFzb25zWzJdLnJlYXNvbiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLWdyb3VwXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0zXCIgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAge3snQ29udGludWUnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBnb3Z1ay0hLXBhZGRpbmctbGVmdC0wXCI+XG4gICAgICA8cD5cbiAgICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1ib2R5XCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICAgICAge3snQ2FuY2VsJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvYT5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1yZXZpZXctc3BlY2lmaWMtYWNjZXNzLXJlcXVlc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2Utdmlld2VyL2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0L2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUNBQWlDLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7SUNOaEgseUNBR3FCOzs7SUFEbkIsMkNBQXNCOzs7SUEyRFosK0JBRzhEO0lBQzVELFlBQ0Y7O0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSxzRkFDRjs7QURyRFosTUFBTSxPQUFPLHdDQUF3QztJQW9CaEM7SUFDQTtJQUNBO0lBQ0E7SUFyQlosTUFBTSxD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a0JBQ29DO1lBQ2hFLGFBQ0Y7O1lBQUEsaUJBQVM7WUFHTCxBQURGLEFBREYsZ0NBQTJELFNBQ3RELGFBQzRFO1lBQXZELGdIQUFTLGNBQVUsU0FBRSx1QkFBdUIsSUFBQztZQUNqRSxhQUNGOztZQUlSLEFBREUsQUFERSxBQURFLEFBREUsaUJBQUksRUFDRixFQUNBLEVBQ0YsRUFDRDs7WUE5SEosNkRBQW9DO1lBSWpDLGNBQXVCO1lBQXZCLHlDQUF1QjtZQU9qQixlQUNGO1lBREUsaUVBQ0Y7WUFRTSxlQUNGO1lBREUsb0VBQ0Y7WUFDOEIsZUFBbUM7WUFBbkMsdURBQW1DO1lBSS9ELGVBQ0Y7WUFERSx5RUFDRjtZQUM4QixlQUF3QztZQUF4Qyw0REFBd0M7WUFJcEUsZUFDRjtZQURFLHlFQUNGO1lBQzhCLGVBQXdDO1lBQXhDLDREQUF3QztZQUlwRSxlQUNGO1lBREUsdUVBQ0Y7WUFDOEIsZUFBc0M7WUFBdEMsMERBQXNDO1lBSWxFLGVBQ0Y7WUFERSxpRkFDRjtZQUM4QixlQUE2RDtZQUE3RCwwRkFBNkQ7WUFPL0YsZUFBa0U7WUFBbEUsNkZBQWtFO1lBSTVELGVBQ0Y7WUFERSxpRUFDRjtZQUtDLGVBQXlEO1lBQXpELGtGQUF5RDtZQVN4RCxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFRRSxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFRRSxlQUFpQztZQUVqQyxBQUZBLG1EQUFpQyx5Q0FFRztZQUdwQyxlQUNGO1lBREUsb0ZBQ0Y7WUFVUixlQUNGO1lBREUsbUVBQ0Y7WUFJTSxlQUNGO1lBREUsaUVBQ0Y7OztpRkQ5R0ssd0NBQXdDO2NBTHBELFNBQVM7MkJBQ0UseUNBQXlDOztrRkFJeEMsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IENhc2VWaWV3LCBFcnJvck1lc3NhZ2UsIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBBY2Nlc3NSZWFzb24sIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdEVycm9ycywgUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0UGFnZVRleHQgfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLXJldmlldy1zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhc2UtcmV2aWV3LXNwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZVJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHN0YXRpYyBDQU5DRUxfTElOS19ERVNUSU5BVElPTiA9ICcvd29yay9teS13b3JrL2xpc3QnO1xuICBwdWJsaWMgY29sbGFwc2VkID0gZmFsc2U7XG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBwdWJsaWMgaGludDogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVJlZkxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgcHVibGljIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlOiBFcnJvck1lc3NhZ2U7XG4gIHB1YmxpYyByZWFkb25seSBhY2Nlc3NSZWFzb25zOiBEaXNwbGF5ZWRBY2Nlc3NSZWFzb25bXTtcbiAgcHVibGljIHJlcXVlc3RBY2Nlc3NEZXRhaWxzOiBSZXF1ZXN0QWNjZXNzRGV0YWlscztcbiAgcHVibGljIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHVzZXJBY2Nlc3NUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmljRXJyb3IgPSAnVGhlcmUgaXMgYSBwcm9ibGVtJztcbiAgcHJpdmF0ZSByZWFkb25seSByYWRpb1NlbGVjdGVkQ29udHJvbE5hbWUgPSAncmFkaW9TZWxlY3RlZCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcsXG4gICkge1xuICAgIHRoaXMuYWNjZXNzUmVhc29ucyA9IFtcbiAgICAgIHsgcmVhc29uOiBBY2Nlc3NSZWFzb24uQVBQUk9WRV9SRVFVRVNULCBjaGVja2VkOiBmYWxzZSB9LFxuICAgICAgeyByZWFzb246IEFjY2Vzc1JlYXNvbi5SRUpFQ1RfUkVRVUVTVCwgY2hlY2tlZDogZmFsc2UgfSxcbiAgICAgIHsgcmVhc29uOiBBY2Nlc3NSZWFzb24uUkVRVUVTVF9NT1JFX0lORk9STUFUSU9OLCBjaGVja2VkOiBmYWxzZSB9LFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gVE9ETzogdGhpcyB0aWNrZXQgaXMgYmxvY2tlZCBzbyBtb2NrZWQgd2l0aCB0aG9zZSBkYXRhIHRvIGdvIHRocm91Z2gsIHRoZXkgd2lsbCBiZSByZW1vdmVkIGFuZCBpbXBsaW1lbnRlZCB3aXRoIGFjdHVhbCBkYXRhXG4gICAgLy8gd2hlbiBkZXBlbmRlbmN5IHJlc29sdmVkXG4gICAgdGhpcy5zZXRNb2NrRGF0YSgpO1xuICAgIHRoaXMudGl0bGUgPSBSZXZpZXdTcGVjaWZpY0FjY2Vzc1JlcXVlc3RQYWdlVGV4dC5USVRMRTtcbiAgICB0aGlzLmhpbnQgPSBSZXZpZXdTcGVjaWZpY0FjY2Vzc1JlcXVlc3RQYWdlVGV4dC5ISU5UO1xuICAgIHRoaXMuY2FzZVJlZkxhYmVsID0gUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0UGFnZVRleHQuQ0FTRV9SRUY7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIHJhZGlvU2VsZWN0ZWQ6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXNlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmNhc2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuZ2V0KHRoaXMucmFkaW9TZWxlY3RlZENvbnRyb2xOYW1lKS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHtcbiAgICAgICAgdGl0bGU6IHRoaXMuZ2VuZXJpY0Vycm9yLFxuICAgICAgICBkZXNjcmlwdGlvbjogUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0RXJyb3JzLk5PX1NFTEVDVElPTixcbiAgICAgIH07XG4gICAgfVxuICAgIC8vIEluaXRpYXRlIFJldmlldyBBY2Nlc3MgUmVxdWVzdFxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgLy8gR2V0IHRoZSBDYXNlIFJlZmVyZW5jZSAoZm9yIHdoaWNoIGFjY2VzcyBpcyBiZWluZyByZXF1ZXN0ZWQpIGZyb20gdGhlIEFjdGl2YXRlZFJvdXRlU25hcHNob3QgZGF0YVxuICAgICAgY29uc3QgY2FzZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV9pZDtcbiAgICAgIGNvbnN0IHJhZGlvU2VsZWN0ZWRWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLmdldChcbiAgICAgICAgdGhpcy5yYWRpb1NlbGVjdGVkQ29udHJvbE5hbWVcbiAgICAgICkudmFsdWU7XG4gICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBBY2Nlc3NSZWFzb24gZW51bSB2YWx1ZS4gQ2FuJ3QgdXNlIE9iamVjdC52YWx1ZXMgYmVjYXVzZSBpdCdzIG5vdCBhdmFpbGFibGUgaW5cbiAgICAgIC8vIDwgRVMyMDE3IVxuICAgICAgY29uc3QgcmVhc29uTnVtYmVyID0gT2JqZWN0LmtleXMoQWNjZXNzUmVhc29uKVxuICAgICAgICAubWFwKChlKSA9PiBBY2Nlc3NSZWFzb25bZV0pXG4gICAgICAgIC5pbmRleE9mKHJhZGlvU2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAvLyByZXF1ZXN0IG1vZGVsIGNyZWF0ZWQgLCBpdCB3aWxsIGJlIHVzZWQgZm9yIHN1Ym1pc3Npb24gcGFydFxuICAgICAgY29uc3QgY2hhbGxlbmdlZEFjY2Vzc1JlcXVlc3QgPSB7XG4gICAgICAgIHJlYXNvbjogcmVhc29uTnVtYmVyLFxuICAgICAgICBjYXNlSWQsXG4gICAgICB9IGFzIFJldmlld1NwZWNpZmljQWNjZXNzUmVxdWVzdDtcbiAgICAgIGlmIChBY2Nlc3NSZWFzb24uUkVKRUNUX1JFUVVFU1QgPT09IHJhZGlvU2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3JlamVjdGVkJ10sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChDYXNlUmV2aWV3U3BlY2lmaWNBY2Nlc3NSZXF1ZXN0Q29tcG9uZW50LkNBTkNFTF9MSU5LX0RFU1RJTkFUSU9OKTtcbiAgfVxuXG4gIC8vIHJlbW92ZSBvbmNlIEFjY2VzcyBtYW5hZ2VtZW50IGdvZXMgbGl2ZVxuICBwdWJsaWMgc2V0TW9ja0RhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgcmVxdWVzdEFjY2Vzc0RldGFpbHNNb2NrID1cbiAgICAgIHRoaXMuYXBwQ29uZmlnLmdldEFjY2Vzc01hbmFnZW1lbnRSZXF1ZXN0UmV2aWV3TW9ja01vZGVsKCk7XG5cbiAgICBpZiAocmVxdWVzdEFjY2Vzc0RldGFpbHNNb2NrLmFjdGl2ZSkge1xuICAgICAgdGhpcy5yZXF1ZXN0QWNjZXNzRGV0YWlscyA9IHJlcXVlc3RBY2Nlc3NEZXRhaWxzTW9jay5kZXRhaWxzO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXllZEFjY2Vzc1JlYXNvbiB7XG4gIHJlYXNvbjogQWNjZXNzUmVhc29uO1xuICBjaGVja2VkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RBY2Nlc3NEZXRhaWxzIHtcbiAgY2FzZU5hbWU6IHN0cmluZztcbiAgY2FzZVJlZmVyZW5jZTogc3RyaW5nO1xuICBkYXRlU3VibWl0dGVkOiBzdHJpbmc7XG4gIHJlcXVlc3RGcm9tOiBzdHJpbmc7XG4gIHJlYXNvbkZvckNhc2VBY2Nlc3M6IHN0cmluZztcbn1cbiIsIjxleHVpLWVycm9yLW1lc3NhZ2VcbiAgKm5nSWY9XCJmb3JtR3JvdXAuaW52YWxpZCAmJiBzdWJtaXR0ZWRcIlxuICBbZXJyb3JdPVwiZXJyb3JNZXNzYWdlXCI+XG48L2V4dWktZXJyb3ItbWVzc2FnZT5cblxuPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiAoc3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIj5cbiAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJyZWFzb24taGludFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgICAgPHA+PC9wPlxuICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1sXCI+XG4gICAgICAgICAgPGgxIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgIHt7IHRpdGxlIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9oMT5cbiAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgIDxwPjwvcD5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZ292dWstdGFibGVcIj5cbiAgICAgICAgICA8Y2FwdGlvbj48L2NhcHRpb24+XG4gICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIj5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwicm93XCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyIGxlZnRMYWJlbFwiID5cbiAgICAgICAgICAgICAgICB7eydDYXNlIG5hbWUnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj57eyByZXF1ZXN0QWNjZXNzRGV0YWlscy5jYXNlTmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J0Nhc2UgcmVmZXJlbmNlJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVxdWVzdEFjY2Vzc0RldGFpbHMuY2FzZVJlZmVyZW5jZSB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J0RhdGUgc3VibWl0dGVkJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+e3sgcmVxdWVzdEFjY2Vzc0RldGFpbHMuZGF0ZVN1Ym1pdHRlZCB9fTwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJyb3dcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXIgbGVmdExhYmVsXCIgPlxuICAgICAgICAgICAgICAgIHt7J1JlcXVlc3QgZnJvbScgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHJlcXVlc3RBY2Nlc3NEZXRhaWxzLnJlcXVlc3RGcm9tIH19PGJyIC8+PC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJnb3Z1ay10YWJsZV9fcm93XCI+XG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlciBsZWZ0TGFiZWxcIiA+XG4gICAgICAgICAgICAgICAge3snUmVhc29uIGZvciBjYXNlIGFjY2VzcycgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7IHJlcXVlc3RBY2Nlc3NEZXRhaWxzLnJlYXNvbkZvckNhc2VBY2Nlc3MgfCBycHhUcmFuc2xhdGUgfX08L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2Zvcm0tZ3JvdXAtZXJyb3InOiBmb3JtR3JvdXAuaW52YWxpZCAmJiBzdWJtaXR0ZWQgfVwiPlxuICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0XCI+XG4gICAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1tXCI+XG4gICAgICAgICAgICAgIDxoMSBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAge3sgaGludCB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGlkPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgncmFkaW9TZWxlY3RlZCcpLmludmFsaWQgJiYgc3VibWl0dGVkXCI+XG4gICAgICAgICAgICAgIHt7IGVycm9yTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJyZWFzb24tMFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cInJhZGlvU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImFjY2Vzc1JlYXNvbnNbMF0ucmVhc29uXCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhY2Nlc3NSZWFzb25zWzBdLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoKVwiLz5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstcmFkaW9zX19sYWJlbFwiIGZvcj1cInJlYXNvbi0wXCI+XG4gICAgICAgICAgICAgICAge3sgYWNjZXNzUmVhc29uc1swXS5yZWFzb24gfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIlxuICAgICAgICAgICAgICAgIGlkPVwicmVhc29uLTFcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJyYWRpb1NlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhY2Nlc3NSZWFzb25zWzFdLnJlYXNvblwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmFkaW9TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiYWNjZXNzUmVhc29uc1sxXS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKClcIi8+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBmb3I9XCJyZWFzb24tMVwiPlxuICAgICAgICAgICAgICAgIHt7IGFjY2Vzc1JlYXNvbnNbMV0ucmVhc29uIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCJcbiAgICAgICAgICAgICAgICBpZD1cInJlYXNvbi0yXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicmFkaW9TZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYWNjZXNzUmVhc29uc1syXS5yZWFzb25cIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJhZGlvU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFjY2Vzc1JlYXNvbnNbMl0uY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgpXCIvPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgZm9yPVwicmVhc29uLTJcIj5cbiAgICAgICAgICAgICAgICB7eyBhY2Nlc3NSZWFzb25zWzJdLnJlYXNvbiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLWdyb3VwXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1yaWdodC0zXCIgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAge3snQ29udGludWUnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBnb3Z1ay0hLXBhZGRpbmctbGVmdC0wXCI+XG4gICAgICA8cD5cbiAgICAgICAgPGEgY2xhc3M9XCJnb3Z1ay1ib2R5XCIgKGNsaWNrKT1cIm9uQ2FuY2VsKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgaHJlZj1cIiNcIj5cbiAgICAgICAgICB7eydDYW5jZWwnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9hPlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==