@hmcts/ccd-case-ui-toolkit 5.0.24-case-file-view-document-count-v4 → 5.0.26-angular11-upgrade

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 (86) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +10354 -10852
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/app.config.js +1 -1
  6. package/esm2015/lib/shared/components/case-editor/case-create/case-create.component.js +2 -4
  7. package/esm2015/lib/shared/components/case-editor/case-edit/case-edit.component.js +33 -15
  8. package/esm2015/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.js +110 -109
  9. package/esm2015/lib/shared/components/case-editor/case-editor.module.js +3 -1
  10. package/esm2015/lib/shared/components/case-editor/case-progress/case-progress.component.js +2 -4
  11. package/esm2015/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.js +2 -5
  12. package/esm2015/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.js +31 -50
  13. package/esm2015/lib/shared/components/case-viewer/case-viewer.module.js +4 -1
  14. package/esm2015/lib/shared/components/palette/index.js +1 -2
  15. package/esm2015/lib/shared/components/palette/palette.module.js +9 -24
  16. package/esm2015/lib/shared/components/palette/palette.service.js +1 -18
  17. package/esm2015/lib/shared/components/search-result/search-result.component.js +17 -17
  18. package/esm2015/lib/shared/directives/substitutor/label-substitutor.directive.js +7 -3
  19. package/esm2015/lib/shared/domain/definition/field-type-enum.model.js +1 -1
  20. package/esm2015/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.js +2 -2
  21. package/esm2015/lib/shared/services/index.js +1 -2
  22. package/esm2015/lib/shared/services/jurisdiction/jurisdiction.service.js +2 -2
  23. package/esm2015/lib/shared/services/window/window.service.js +4 -1
  24. package/esm2015/public-api.js +1 -3
  25. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +9011 -9469
  26. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  27. package/lib/app.config.d.ts +0 -4
  28. package/lib/app.config.d.ts.map +1 -1
  29. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +12 -12
  30. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  31. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +28 -29
  32. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  33. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +4 -11
  34. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  35. package/lib/shared/components/palette/index.d.ts +0 -1
  36. package/lib/shared/components/palette/index.d.ts.map +1 -1
  37. package/lib/shared/components/palette/palette.module.d.ts +21 -24
  38. package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
  39. package/lib/shared/components/palette/palette.service.d.ts +0 -2
  40. package/lib/shared/components/palette/palette.service.d.ts.map +1 -1
  41. package/lib/shared/components/search-result/search-result.component.d.ts +3 -2
  42. package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -1
  43. package/lib/shared/directives/substitutor/label-substitutor.directive.d.ts.map +1 -1
  44. package/lib/shared/domain/definition/field-type-enum.model.d.ts +1 -1
  45. package/lib/shared/domain/definition/field-type-enum.model.d.ts.map +1 -1
  46. package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -1
  47. package/lib/shared/services/index.d.ts +0 -1
  48. package/lib/shared/services/index.d.ts.map +1 -1
  49. package/lib/shared/services/window/window.service.d.ts +1 -0
  50. package/lib/shared/services/window/window.service.d.ts.map +1 -1
  51. package/package.json +1 -1
  52. package/public-api.d.ts +0 -2
  53. package/public-api.d.ts.map +1 -1
  54. package/esm2015/lib/shared/components/palette/case-file-view/case-file-view-field.component.js +0 -70
  55. package/esm2015/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.js +0 -307
  56. package/esm2015/lib/shared/components/palette/case-file-view/components/index.js +0 -2
  57. package/esm2015/lib/shared/components/palette/case-file-view/index.js +0 -3
  58. package/esm2015/lib/shared/domain/case-file-view/case-file-view-category.model.js +0 -3
  59. package/esm2015/lib/shared/domain/case-file-view/case-file-view-document.model.js +0 -3
  60. package/esm2015/lib/shared/domain/case-file-view/categories-and-documents.model.js +0 -7
  61. package/esm2015/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.js +0 -28
  62. package/esm2015/lib/shared/domain/case-file-view/index.js +0 -5
  63. package/esm2015/lib/shared/services/case-file-view/case-file-view.service.js +0 -47
  64. package/esm2015/lib/shared/services/case-file-view/index.js +0 -2
  65. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts +0 -19
  66. package/lib/shared/components/palette/case-file-view/case-file-view-field.component.d.ts.map +0 -1
  67. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts +0 -25
  68. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts.map +0 -1
  69. package/lib/shared/components/palette/case-file-view/components/index.d.ts +0 -2
  70. package/lib/shared/components/palette/case-file-view/components/index.d.ts.map +0 -1
  71. package/lib/shared/components/palette/case-file-view/index.d.ts +0 -3
  72. package/lib/shared/components/palette/case-file-view/index.d.ts.map +0 -1
  73. package/lib/shared/domain/case-file-view/case-file-view-category.model.d.ts +0 -9
  74. package/lib/shared/domain/case-file-view/case-file-view-category.model.d.ts.map +0 -1
  75. package/lib/shared/domain/case-file-view/case-file-view-document.model.d.ts +0 -8
  76. package/lib/shared/domain/case-file-view/case-file-view-document.model.d.ts.map +0 -1
  77. package/lib/shared/domain/case-file-view/categories-and-documents.model.d.ts +0 -12
  78. package/lib/shared/domain/case-file-view/categories-and-documents.model.d.ts.map +0 -1
  79. package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts +0 -7
  80. package/lib/shared/domain/case-file-view/document-tree-node/document-tree-node.model.d.ts.map +0 -1
  81. package/lib/shared/domain/case-file-view/index.d.ts +0 -5
  82. package/lib/shared/domain/case-file-view/index.d.ts.map +0 -1
  83. package/lib/shared/services/case-file-view/case-file-view.service.d.ts +0 -22
  84. package/lib/shared/services/case-file-view/case-file-view.service.d.ts.map +0 -1
  85. package/lib/shared/services/case-file-view/index.d.ts +0 -2
  86. package/lib/shared/services/case-file-view/index.d.ts.map +0 -1
@@ -376,7 +376,6 @@ function CaseEditSubmitComponent_ccd_case_event_completion_1_Template(rf, ctx) {
376
376
  const ctx_r1 = i0.ɵɵnextContext();
377
377
  i0.ɵɵproperty("eventCompletionParams", ctx_r1.eventCompletionParams);
378
378
  } }
379
- // @dynamic
380
379
  export class CaseEditSubmitComponent {
381
380
  constructor(caseEdit, formValueService, formErrorService, fieldsUtils, caseFieldService, route, router, orderService, profileNotifier, sessionStorageService, caseNotifier) {
382
381
  this.caseEdit = caseEdit;
@@ -422,9 +421,6 @@ export class CaseEditSubmitComponent {
422
421
  this.profileSubscription.unsubscribe();
423
422
  }
424
423
  }
425
- /**
426
- * Handler function for event completion
427
- */
428
424
  submit() {
429
425
  this.isSubmitting = true;
430
426
  // We have to run the event completion checks if task in session storage
@@ -463,104 +459,6 @@ export class CaseEditSubmitComponent {
463
459
  this.router.navigate([`/cases/case-details/${this.getCaseId()}/tasks`], { relativeTo: this.route });
464
460
  }
465
461
  }
466
- navigateToPage(pageId) {
467
- this.caseEdit.navigateToPage(pageId);
468
- }
469
- callbackErrorsNotify(errorContext) {
470
- this.ignoreWarning = errorContext.ignore_warning;
471
- this.triggerText = errorContext.trigger_text;
472
- }
473
- summaryCaseField(field) {
474
- if (!this.editForm.get('data').get(field.id)) {
475
- // If not in form, return field itself
476
- return field;
477
- }
478
- const cloneField = this.fieldsUtils.cloneCaseField(field);
479
- cloneField.value = this.editForm.get('data').get(field.id).value;
480
- return cloneField;
481
- }
482
- cancel() {
483
- if (this.eventTrigger.can_save_draft) {
484
- if (this.route.snapshot.queryParamMap.get(CaseEditComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') {
485
- this.caseEdit.cancelled.emit({ status: CaseEditPageText.RESUMED_FORM_DISCARD });
486
- }
487
- else {
488
- this.caseEdit.cancelled.emit({ status: CaseEditPageText.NEW_FORM_DISCARD });
489
- }
490
- }
491
- else {
492
- this.caseEdit.cancelled.emit();
493
- }
494
- }
495
- isLabel(field) {
496
- return this.caseFieldService.isLabel(field);
497
- }
498
- isChangeAllowed(field) {
499
- return !this.caseFieldService.isReadOnly(field);
500
- }
501
- checkYourAnswerFieldsToDisplayExists() {
502
- if (!this.eventTrigger.show_summary) {
503
- return false;
504
- }
505
- for (const page of this.wizard.pages) {
506
- if (this.isShown(page)) {
507
- for (const field of page.case_fields) {
508
- if (this.canShowFieldInCYA(field)) {
509
- // at least one field needs showing
510
- return true;
511
- }
512
- }
513
- }
514
- }
515
- // found no fields to show in CYA summary page
516
- return false;
517
- }
518
- readOnlySummaryFieldsToDisplayExists() {
519
- return this.eventTrigger.case_fields.some(field => field.show_summary_content_option >= 0);
520
- }
521
- showEventNotes() {
522
- return this.eventTrigger.show_event_notes !== false;
523
- }
524
- previous() {
525
- if (this.hasPrevious()) {
526
- this.navigateToPage(this.getLastPageShown().id);
527
- }
528
- }
529
- hasPrevious() {
530
- return !!this.getLastPageShown();
531
- }
532
- isShown(page) {
533
- const fields = this.fieldsUtils
534
- .mergeCaseFieldsAndFormFields(this.eventTrigger.case_fields, this.editForm.controls['data'].value);
535
- return page.parsedShowCondition.match(fields);
536
- }
537
- canShowFieldInCYA(field) {
538
- return field.show_summary_change_option;
539
- }
540
- isSolicitor() {
541
- return this.profile.isSolicitor();
542
- }
543
- getCaseId() {
544
- return (this.caseEdit.caseDetails ? this.caseEdit.caseDetails.case_id : '');
545
- }
546
- getEventId() {
547
- return this.editForm.value.event.id;
548
- }
549
- getCaseTitle() {
550
- return (this.caseEdit.caseDetails && this.caseEdit.caseDetails.state &&
551
- this.caseEdit.caseDetails.state.title_display ? this.caseEdit.caseDetails.state.title_display : '');
552
- }
553
- getCancelText() {
554
- if (this.eventTrigger.can_save_draft) {
555
- return 'Return to case list';
556
- }
557
- else {
558
- return 'Cancel';
559
- }
560
- }
561
- /**
562
- * Function to generate and return case event data for completing the event
563
- */
564
462
  generateCaseEventData() {
565
463
  const caseEventData = {
566
464
  data: this.replaceEmptyComplexFieldValues(this.formValueService.sanitise(this.replaceHiddenFormValuesWithOriginalCaseData(this.editForm.get('data'), this.eventTrigger.case_fields))),
@@ -579,13 +477,11 @@ export class CaseEditSubmitComponent {
579
477
  }
580
478
  return caseEventData;
581
479
  }
582
- /**
583
- * Function to complete the event
584
- */
585
480
  caseSubmit(caseEventData) {
586
481
  this.caseEdit.submit(caseEventData)
587
482
  .subscribe(response => {
588
483
  this.caseNotifier.cachedCaseView = null;
484
+ this.sessionStorageService.removeItem('eventUrl');
589
485
  const confirmation = this.buildConfirmation(response);
590
486
  if (confirmation && (confirmation.getHeader() || confirmation.getBody())) {
591
487
  this.caseEdit.confirm(confirmation);
@@ -604,7 +500,7 @@ export class CaseEditSubmitComponent {
604
500
  });
605
501
  }
606
502
  /**
607
- * Traverse *all* values of a FormGroup, including those for disabled fields (i.e. hidden ones), replacing the
503
+ * Traverse *all* values of a {@link FormGroup}, including those for disabled fields (i.e. hidden ones), replacing the
608
504
  * value of any that are hidden AND have `retain_hidden_value` set to `true` in the corresponding `CaseField`, with
609
505
  * the *original* value held in the `CaseField` object.
610
506
  *
@@ -616,7 +512,12 @@ export class CaseEditSubmitComponent {
616
512
  *
617
513
  * * For Collection field types, including collections of Complex and Document field types, the replacement is
618
514
  * performed for all fields in the collection.
619
- * returns An object with the *raw* form value data (as key-value pairs), with any value replacements as necessary
515
+ *
516
+ * @param formGroup The `FormGroup` instance whose raw values are to be traversed
517
+ * @param caseFields The array of {@link CaseField} domain model objects corresponding to fields in `formGroup`
518
+ * @param parentField Reference to the parent `CaseField`. Used for retrieving the sub-field values of a Complex field
519
+ * to perform recursive replacement - the sub-field `CaseField`s themselves do *not* contain any values
520
+ * @returns An object with the *raw* form value data (as key-value pairs), with any value replacements as necessary
620
521
  */
621
522
  replaceHiddenFormValuesWithOriginalCaseData(formGroup, caseFields, parentField) {
622
523
  // Get the raw form value data, which includes the values of any disabled controls, as key-value pairs
@@ -648,7 +549,9 @@ export class CaseEditSubmitComponent {
648
549
  if (caseField && caseField.retain_hidden_value &&
649
550
  (caseField.hidden || (caseField.hidden !== false && parentField && parentField.hidden))) {
650
551
  if (caseField.field_type.type === 'Complex') {
651
- if (caseField.value !== null && caseField.value !== undefined) {
552
+ // Note: Deliberate use of equality (==) and non-equality (!=) operators for null checks throughout, to
553
+ // handle both null and undefined values
554
+ if (caseField.value !== null) {
652
555
  // Call this function recursively to replace the Complex field's sub-fields as necessary, passing the
653
556
  // CaseField itself (the sub-fields do not contain any values, so these need to be obtained from the
654
557
  // parent)
@@ -683,6 +586,9 @@ export class CaseEditSubmitComponent {
683
586
  /**
684
587
  * Replaces non-array value objects with `null` for any Complex-type fields whose value is effectively empty, i.e.
685
588
  * all its sub-fields and descendants are `null` or `undefined`.
589
+ *
590
+ * @param data The object tree representing all the form field data
591
+ * @returns The form field data modified accordingly
686
592
  */
687
593
  replaceEmptyComplexFieldValues(data) {
688
594
  Object.keys(data).forEach((key) => {
@@ -698,6 +604,101 @@ export class CaseEditSubmitComponent {
698
604
  hasCallbackFailed(response) {
699
605
  return response['callback_response_status'] !== 'CALLBACK_COMPLETED';
700
606
  }
607
+ navigateToPage(pageId) {
608
+ this.caseEdit.navigateToPage(pageId);
609
+ }
610
+ callbackErrorsNotify(errorContext) {
611
+ this.ignoreWarning = errorContext.ignore_warning;
612
+ this.triggerText = errorContext.trigger_text;
613
+ }
614
+ summaryCaseField(field) {
615
+ if (!this.editForm.get('data').get(field.id)) {
616
+ // If not in form, return field itself
617
+ return field;
618
+ }
619
+ const cloneField = this.fieldsUtils.cloneCaseField(field);
620
+ cloneField.value = this.editForm.get('data').get(field.id).value;
621
+ return cloneField;
622
+ }
623
+ cancel() {
624
+ if (this.eventTrigger.can_save_draft) {
625
+ if (this.route.snapshot.queryParamMap.get(CaseEditComponent.ORIGIN_QUERY_PARAM) === 'viewDraft') {
626
+ this.caseEdit.cancelled.emit({ status: CaseEditPageText.RESUMED_FORM_DISCARD });
627
+ }
628
+ else {
629
+ this.caseEdit.cancelled.emit({ status: CaseEditPageText.NEW_FORM_DISCARD });
630
+ }
631
+ }
632
+ else {
633
+ this.caseEdit.cancelled.emit();
634
+ }
635
+ }
636
+ isLabel(field) {
637
+ return this.caseFieldService.isLabel(field);
638
+ }
639
+ isChangeAllowed(field) {
640
+ return !this.caseFieldService.isReadOnly(field);
641
+ }
642
+ checkYourAnswerFieldsToDisplayExists() {
643
+ if (!this.eventTrigger.show_summary) {
644
+ return false;
645
+ }
646
+ for (const page of this.wizard.pages) {
647
+ if (this.isShown(page)) {
648
+ for (const field of page.case_fields) {
649
+ if (this.canShowFieldInCYA(field)) {
650
+ // at least one field needs showing
651
+ return true;
652
+ }
653
+ }
654
+ }
655
+ }
656
+ // found no fields to show in CYA summary page
657
+ return false;
658
+ }
659
+ readOnlySummaryFieldsToDisplayExists() {
660
+ return this.eventTrigger.case_fields.some(field => field.show_summary_content_option >= 0);
661
+ }
662
+ showEventNotes() {
663
+ return this.eventTrigger.show_event_notes !== false;
664
+ }
665
+ previous() {
666
+ if (this.hasPrevious()) {
667
+ this.navigateToPage(this.getLastPageShown().id);
668
+ }
669
+ }
670
+ hasPrevious() {
671
+ return !!this.getLastPageShown();
672
+ }
673
+ isShown(page) {
674
+ const fields = this.fieldsUtils
675
+ .mergeCaseFieldsAndFormFields(this.eventTrigger.case_fields, this.editForm.controls['data'].value);
676
+ return page.parsedShowCondition.match(fields);
677
+ }
678
+ canShowFieldInCYA(field) {
679
+ return field.show_summary_change_option;
680
+ }
681
+ isSolicitor() {
682
+ return this.profile.isSolicitor();
683
+ }
684
+ getCaseId() {
685
+ return (this.caseEdit.caseDetails ? this.caseEdit.caseDetails.case_id : '');
686
+ }
687
+ getEventId() {
688
+ return this.editForm.value.event.id;
689
+ }
690
+ getCaseTitle() {
691
+ return (this.caseEdit.caseDetails && this.caseEdit.caseDetails.state &&
692
+ this.caseEdit.caseDetails.state.title_display ? this.caseEdit.caseDetails.state.title_display : '');
693
+ }
694
+ getCancelText() {
695
+ if (this.eventTrigger.can_save_draft) {
696
+ return 'Return to case list';
697
+ }
698
+ else {
699
+ return 'Cancel';
700
+ }
701
+ }
701
702
  getLastPageShown() {
702
703
  let lastPage;
703
704
  this.wizard.reverse().forEach(page => {
@@ -756,4 +757,4 @@ CaseEditSubmitComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseEditSubmitCom
756
757
  styleUrls: ['../case-edit.scss']
757
758
  }]
758
759
  }], function () { return [{ type: i1.CaseEditComponent }, { type: i2.FormValueService }, { type: i3.FormErrorService }, { type: i4.FieldsUtils }, { type: i5.CaseFieldService }, { type: i6.ActivatedRoute }, { type: i6.Router }, { type: i7.OrderService }, { type: i8.ProfileNotifier }, { type: i9.SessionStorageService }, { type: i10.CaseNotifier }]; }, null); })();
759
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvY2FzZS1lZGl0LXN1Ym1pdC9jYXNlLWVkaXQtc3VibWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBTzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxN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dUJBQXVCO2NBTG5DLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyxXQUFXLEVBQUUsdUJBQXVCO2dCQUNwQyxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzthQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGFsZXR0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3BhbGV0dGUvYmFzZS1maWVsZC9wYWxldHRlLWNvbnRleHQuZW51bSc7XG5pbXBvcnQgeyBDYXNlRXZlbnREYXRhIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2UtZXZlbnQtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRXZlbnRUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2Utdmlldy9jYXNlLWV2ZW50LXRyaWdnZXIubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBIdHRwRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vaHR0cC9odHRwLWVycm9yLm1vZGVsJztcbmltcG9ydCB7IFByb2ZpbGUgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vcHJvZmlsZS9wcm9maWxlLm1vZGVsJztcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2snO1xuaW1wb3J0IHsgQ2FzZUZpZWxkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Nhc2UtZmllbGRzL2Nhc2UtZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuaW1wb3J0IHsgRm9ybUVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1WYWx1ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUuc2VydmljZSc7XG5pbXBvcnQgeyBPcmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmRlci9vcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2ZpbGVOb3RpZmllciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Byb2ZpbGUvcHJvZmlsZS5ub3RpZmllcic7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zZXNzaW9uL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGxiYWNrRXJyb3JzQ29tcG9uZW50LCBDYWxsYmFja0Vycm9yc0NvbnRleHQgfSBmcm9tICcuLi8uLi9lcnJvcic7XG5pbXBvcnQgeyBDYXNlRWRpdFBhZ2VUZXh0IH0gZnJvbSAnLi4vY2FzZS1lZGl0LXBhZ2UvY2FzZS1lZGl0LXBhZ2UtdGV4dC5lbnVtJztcbmltcG9ydCB7IENhc2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1lZGl0L2Nhc2UtZWRpdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uIH0gZnJvbSAnLi4vZG9tYWluL2NvbmZpcm1hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBFdmVudENvbXBsZXRpb25QYXJhbXMgfSBmcm9tICcuLi9kb21haW4vZXZlbnQtY29tcGxldGlvbi1wYXJhbXMubW9kZWwnO1xuaW1wb3J0IHsgV2l6YXJkUGFnZSB9IGZyb20gJy4uL2RvbWFpbi93aXphcmQtcGFnZS5tb2RlbCc7XG5pbXBvcnQgeyBXaXphcmQgfSBmcm9tICcuLi9kb21haW4vd2l6YXJkLm1vZGVsJztcbmltcG9ydCB7IENhc2VOb3RpZmllciB9IGZyb20gJy4uL3NlcnZpY2VzL2Nhc2Uubm90aWZpZXInO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZWRpdC1zdWJtaXQnLFxuICB0ZW1wbGF0ZVVybDogJ2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi9jYXNlLWVkaXQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VFZGl0U3VibWl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUVkaXQ6IENhc2VFZGl0Q29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZhbHVlU2VydmljZTogRm9ybVZhbHVlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1FcnJvclNlcnZpY2U6IEZvcm1FcnJvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWVsZHNVdGlsczogRmllbGRzVXRpbHMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRmllbGRTZXJ2aWNlOiBDYXNlRmllbGRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2ZpbGVOb3RpZmllcjogUHJvZmlsZU5vdGlmaWVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvLyBFVUktMzQ1Mi5cbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgZWRpdEZvcm0gYXMgaXQgaXMgcmVhZG9ubHkuXG4gICAgLy8gVGhpcyB3YXMgY2F1c2luZyBpc3N1ZXMgd2l0aCBoaWRkZW4gZmllbGRzIHRoYXQgYXJlbid0IHdhbnRlZCBidXQgaGF2ZVxuICAgIC8vIG5vdCBiZWVuIGRpc2FibGVkLlxuICAgIHJldHVybiB0aGlzLmlzU3VibWl0dGluZyB8fCB0aGlzLmhhc0Vycm9ycztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvclxuICAgICAgJiYgdGhpcy5lcnJvci5jYWxsYmFja0Vycm9yc1xuICAgICAgJiYgdGhpcy5lcnJvci5jYWxsYmFja0Vycm9ycy5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyO1xuICBwdWJsaWMgZWRpdEZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIGVycm9yOiBIdHRwRXJyb3I7XG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBpZ25vcmVXYXJuaW5nID0gZmFsc2U7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgd2l6YXJkOiBXaXphcmQ7XG4gIHB1YmxpYyBwcm9maWxlOiBQcm9maWxlO1xuICBwdWJsaWMgc2hvd1N1bW1hcnlGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgcGFsZXR0ZUNvbnRleHQ6IFBhbGV0dGVDb250ZXh0ID0gUGFsZXR0ZUNvbnRleHQuQ0hFQ0tfWU9VUl9BTlNXRVI7XG4gIHB1YmxpYyBpc1N1Ym1pdHRpbmc6IGJvb2xlYW47XG4gIHB1YmxpYyBwcm9maWxlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjb250ZXh0RmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIHRhc2s6IFRhc2s7XG4gIHB1YmxpYyBldmVudENvbXBsZXRpb25QYXJhbXM6IEV2ZW50Q29tcGxldGlvblBhcmFtcztcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkID0gZmFsc2U7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0hPV19TVU1NQVJZX0NPTlRFTlRfQ09NUEFSRV9GVU5DVElPTiA9IChhOiBDYXNlRmllbGQsIGI6IENhc2VGaWVsZCk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgYUNhc2VGaWVsZCA9IGEuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uID09PSAwIHx8IGEuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uO1xuICAgIGNvbnN0IGJDYXNlRmllbGQgPSBiLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiA9PT0gMCB8fCBiLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcblxuICAgIGlmICghYUNhc2VGaWVsZCkge1xuICAgICAgcmV0dXJuICFiQ2FzZUZpZWxkID8gMCA6IDE7XG4gICAgfVxuXG4gICAgaWYgKCFiQ2FzZUZpZWxkKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIHJldHVybiBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiAtIGIuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvZmlsZU5vdGlmaWVyLnByb2ZpbGUuc3Vic2NyaWJlKF8gPT4gdGhpcy5wcm9maWxlID0gXyk7XG4gICAgdGhpcy5ldmVudFRyaWdnZXIgPSB0aGlzLmNhc2VFZGl0LmV2ZW50VHJpZ2dlcjtcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gdGhpcy5ldmVudFRyaWdnZXIuZW5kX2J1dHRvbl9sYWJlbCB8fCBDYWxsYmFja0Vycm9yc0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1VCTUlUO1xuICAgIHRoaXMuZWRpdEZvcm0gPSB0aGlzLmNhc2VFZGl0LmZvcm07XG4gICAgdGhpcy53aXphcmQgPSB0aGlzLmNhc2VFZGl0LndpemFyZDtcbiAgICB0aGlzLnNob3dTdW1tYXJ5RmllbGRzID0gdGhpcy5zb3J0RmllbGRzQnlTaG93U3VtbWFyeUNvbnRlbnQodGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5jb250ZXh0RmllbGRzID0gdGhpcy5nZXRDYXNlRmllbGRzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXIgZnVuY3Rpb24gZm9yIGV2ZW50IGNvbXBsZXRpb25cbiAgICovXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xuXG4gICAgLy8gV2UgaGF2ZSB0byBydW4gdGhlIGV2ZW50IGNvbXBsZXRpb24gY2hlY2tzIGlmIHRhc2sgaW4gc2Vzc2lvbiBzdG9yYWdlXG4gICAgLy8gYW5kIGlmIHRoZSB0YXNrIGlzIGluIHNlc3Npb24gc3RvcmFnZSwgdGhlbiBpcyBpdCBhc3NvY2lhdGVkIHRvIHRoZSBjYXNlXG4gICAgbGV0IHRhc2tJblNlc3Npb25TdG9yYWdlOiBUYXNrO1xuICAgIGNvbnN0IHRhc2tTdHIgPSB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCd0YXNrVG9Db21wbGV0ZScpO1xuICAgIGlmICh0YXNrU3RyKSB7XG4gICAgICB0YXNrSW5TZXNzaW9uU3RvcmFnZSA9IEpTT04ucGFyc2UodGFza1N0cik7XG4gICAgfVxuXG4gICAgaWYgKHRhc2tJblNlc3Npb25TdG9yYWdlICYmIHRhc2tJblNlc3Npb25TdG9yYWdlLmNhc2VfaWQgPT09IHRoaXMuZ2V0Q2FzZUlkKCkpIHtcbiAgICAgIC8vIFNob3cgZXZlbnQgY29tcGxldGlvbiBjb21wb25lbnQgdG8gcGVyZm9ybSBldmVudCBjb21wbGV0aW9uIGNoZWNrc1xuICAgICAgdGhpcy5ldmVudENvbXBsZXRpb25QYXJhbXMgPSB7XG4gICAgICAgIGNhc2VJZDogdGhpcy5nZXRDYXNlSWQoKSxcbiAgICAgICAgZXZlbnRJZDogdGhpcy5nZXRFdmVudElkKCksXG4gICAgICAgIHRhc2s6IHRhc2tJblNlc3Npb25TdG9yYWdlXG4gICAgICB9O1xuICAgICAgdGhpcy5ldmVudENvbXBsZXRpb25DaGVja3NSZXF1aXJlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRhc2sgbm90IGluIHNlc3Npb24gc3RvcmFnZSwgcHJvY2VlZCB0byBzdWJtaXRcbiAgICAgIGNvbnN0IGNhc2VFdmVudERhdGEgPSB0aGlzLmdlbmVyYXRlQ2FzZUV2ZW50RGF0YSgpO1xuICAgICAgdGhpcy5jYXNlU3VibWl0KGNhc2VFdmVudERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGZ1bmN0aW9uIGZvciBldmVudCBlbWl0dGVkIGZyb20gY2FzZSBldmVudCBjb21wbGV0aW9uIGNvbXBvbmVudFxuICAgKi9cbiAgcHVibGljIG9uRXZlbnRDYW5CZUNvbXBsZXRlZChldmVudENhbkJlQ29tcGxldGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50Q2FuQmVDb21wbGV0ZWQpIHtcbiAgICAgIC8vIFN1Ym1pdFxuICAgICAgY29uc3QgY2FzZUV2ZW50RGF0YSA9IHRoaXMuZ2VuZXJhdGVDYXNlRXZlbnREYXRhKCk7XG4gICAgICB0aGlzLmNhc2VTdWJtaXQoY2FzZUV2ZW50RGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5hdmlnYXRlIHRvIHRhc2tzIHRhYiBvbiBjYXNlIGRldGFpbHMgcGFnZVxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvY2FzZXMvY2FzZS1kZXRhaWxzLyR7dGhpcy5nZXRDYXNlSWQoKX0vdGFza3NgXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvUGFnZShwYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQubmF2aWdhdGVUb1BhZ2UocGFnZUlkKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShlcnJvckNvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGVycm9yQ29udGV4dC5pZ25vcmVfd2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gZXJyb3JDb250ZXh0LnRyaWdnZXJfdGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBzdW1tYXJ5Q2FzZUZpZWxkKGZpZWxkOiBDYXNlRmllbGQpOiBDYXNlRmllbGQge1xuICAgIGlmICghdGhpcy5lZGl0Rm9ybS5nZXQoJ2RhdGEnKS5nZXQoZmllbGQuaWQpKSB7XG4gICAgICAvLyBJZiBub3QgaW4gZm9ybSwgcmV0dXJuIGZpZWxkIGl0c2VsZlxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cblxuICAgIGNvbnN0IGNsb25lRmllbGQ6IENhc2VGaWVsZCA9IHRoaXMuZmllbGRzVXRpbHMuY2xvbmVDYXNlRmllbGQoZmllbGQpO1xuICAgIGNsb25lRmllbGQudmFsdWUgPSB0aGlzLmVkaXRGb3JtLmdldCgnZGF0YScpLmdldChmaWVsZC5pZCkudmFsdWU7XG5cbiAgICByZXR1cm4gY2xvbmVGaWVsZDtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChDYXNlRWRpdENvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU0pID09PSAndmlld0RyYWZ0Jykge1xuICAgICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KHtzdGF0dXM6IENhc2VFZGl0UGFnZVRleHQuUkVTVU1FRF9GT1JNX0RJU0NBUkR9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoe3N0YXR1czogQ2FzZUVkaXRQYWdlVGV4dC5ORVdfRk9STV9ESVNDQVJEfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNMYWJlbChmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUZpZWxkU2VydmljZS5pc0xhYmVsKGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NoYW5nZUFsbG93ZWQoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5jYXNlRmllbGRTZXJ2aWNlLmlzUmVhZE9ubHkoZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrWW91ckFuc3dlckZpZWxkc1RvRGlzcGxheUV4aXN0cygpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZXZlbnRUcmlnZ2VyLnNob3dfc3VtbWFyeSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcGFnZSBvZiB0aGlzLndpemFyZC5wYWdlcykge1xuICAgICAgaWYgKHRoaXMuaXNTaG93bihwYWdlKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHBhZ2UuY2FzZV9maWVsZHMpIHtcbiAgICAgICAgICBpZiAodGhpcy5jYW5TaG93RmllbGRJbkNZQShmaWVsZCkpIHtcbiAgICAgICAgICAgIC8vIGF0IGxlYXN0IG9uZSBmaWVsZCBuZWVkcyBzaG93aW5nXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBmb3VuZCBubyBmaWVsZHMgdG8gc2hvdyBpbiBDWUEgc3VtbWFyeSBwYWdlXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHJlYWRPbmx5U3VtbWFyeUZpZWxkc1RvRGlzcGxheUV4aXN0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMuc29tZShmaWVsZCA9PiBmaWVsZC5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPj0gMCApO1xuICB9XG5cbiAgcHVibGljIHNob3dFdmVudE5vdGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5zaG93X2V2ZW50X25vdGVzICE9PSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2aW91cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNQcmV2aW91cygpKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9QYWdlKHRoaXMuZ2V0TGFzdFBhZ2VTaG93bigpLmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzUHJldmlvdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXRMYXN0UGFnZVNob3duKCk7XG4gIH1cblxuICBwdWJsaWMgaXNTaG93bihwYWdlOiBXaXphcmRQYWdlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5maWVsZHNVdGlsc1xuICAgICAgLm1lcmdlQ2FzZUZpZWxkc0FuZEZvcm1GaWVsZHModGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMsIHRoaXMuZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXS52YWx1ZSk7XG4gICAgcmV0dXJuIHBhZ2UucGFyc2VkU2hvd0NvbmRpdGlvbi5tYXRjaChmaWVsZHMpO1xuICB9XG5cbiAgcHVibGljIGNhblNob3dGaWVsZEluQ1lBKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmllbGQuc2hvd19zdW1tYXJ5X2NoYW5nZV9vcHRpb247XG4gIH1cblxuICBwdWJsaWMgaXNTb2xpY2l0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZS5pc1NvbGljaXRvcigpO1xuICB9XG5cbiAgcHVibGljIGdldENhc2VJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuY2FzZV9pZCA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRFdmVudElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdEZvcm0udmFsdWUuZXZlbnQuaWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzICYmIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUgJiZcbiAgICB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgOiAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FuY2VsVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5jYW5fc2F2ZV9kcmFmdCkge1xuICAgICAgcmV0dXJuICdSZXR1cm4gdG8gY2FzZSBsaXN0JztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdDYW5jZWwnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBnZW5lcmF0ZSBhbmQgcmV0dXJuIGNhc2UgZXZlbnQgZGF0YSBmb3IgY29tcGxldGluZyB0aGUgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVDYXNlRXZlbnREYXRhKCk6IENhc2VFdmVudERhdGEge1xuICAgIGNvbnN0IGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB7XG4gICAgICBkYXRhOiB0aGlzLnJlcGxhY2VFbXB0eUNvbXBsZXhGaWVsZFZhbHVlcyhcbiAgICAgICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnNhbml0aXNlKFxuICAgICAgICAgIHRoaXMucmVwbGFjZUhpZGRlbkZvcm1WYWx1ZXNXaXRoT3JpZ2luYWxDYXNlRGF0YShcbiAgICAgICAgICAgIHRoaXMuZWRpdEZvcm0uZ2V0KCdkYXRhJykgYXMgRm9ybUdyb3VwLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykpKSxcbiAgICAgIGV2ZW50OiB0aGlzLmVkaXRGb3JtLnZhbHVlLmV2ZW50XG4gICAgfSBhcyBDYXNlRXZlbnREYXRhO1xuICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5jbGVhck5vbkNhc2VGaWVsZHMoY2FzZUV2ZW50RGF0YS5kYXRhLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU51bGxMYWJlbHMoY2FzZUV2ZW50RGF0YS5kYXRhLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZUVtcHR5RG9jdW1lbnRzKGNhc2VFdmVudERhdGEuZGF0YSwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIC8vIFJlbW92ZSBjb2xsZWN0aW9uIGZpZWxkcyB0aGF0IGhhdmUgXCJtaW5cIiB2YWxpZGF0aW9uIG9mIGdyZWF0ZXIgdGhhbiB6ZXJvIHNldCBvbiB0aGUgRmllbGRUeXBlIGJ1dCBhcmUgZW1wdHk7XG4gICAgLy8gdGhlc2Ugd2lsbCBmYWlsIHZhbGlkYXRpb25cbiAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlRW1wdHlDb2xsZWN0aW9uc1dpdGhNaW5WYWxpZGF0aW9uKGNhc2VFdmVudERhdGEuZGF0YSwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIGNhc2VFdmVudERhdGEuZXZlbnRfdG9rZW4gPSB0aGlzLmV2ZW50VHJpZ2dlci5ldmVudF90b2tlbjtcbiAgICBjYXNlRXZlbnREYXRhLmlnbm9yZV93YXJuaW5nID0gdGhpcy5pZ25vcmVXYXJuaW5nO1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNvbmZpcm1hdGlvbikge1xuICAgICAgY2FzZUV2ZW50RGF0YS5kYXRhID0ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhc2VFdmVudERhdGE7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gY29tcGxldGUgdGhlIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIGNhc2VTdWJtaXQoY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQuc3VibWl0KGNhc2VFdmVudERhdGEpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgICAgdGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcgPSBudWxsO1xuICAgICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uID0gdGhpcy5idWlsZENvbmZpcm1hdGlvbihyZXNwb25zZSk7XG4gICAgICAgICAgaWYgKGNvbmZpcm1hdGlvbiAmJiAoY29uZmlybWF0aW9uLmdldEhlYWRlcigpIHx8IGNvbmZpcm1hdGlvbi5nZXRCb2R5KCkpKSB7XG4gICAgICAgICAgICB0aGlzLmNhc2VFZGl0LmNvbmZpcm0oY29uZmlybWF0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYXNlRWRpdC5zdWJtaXR0ZWQuZW1pdCh7Y2FzZUlkOiByZXNwb25zZVsnaWQnXSwgc3RhdHVzOiB0aGlzLmdldFN0YXR1cyhyZXNwb25zZSl9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dCh0aGlzLmVycm9yKTtcbiAgICAgICAgICBpZiAodGhpcy5lcnJvci5kZXRhaWxzKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1FcnJvclNlcnZpY2VcbiAgICAgICAgICAgICAgLm1hcEZpZWxkRXJyb3JzKHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnMsIHRoaXMuZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXSBhcyBGb3JtR3JvdXAsICd2YWxpZGF0aW9uJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2UgKmFsbCogdmFsdWVzIG9mIGEgRm9ybUdyb3VwLCBpbmNsdWRpbmcgdGhvc2UgZm9yIGRpc2FibGVkIGZpZWxkcyAoaS5lLiBoaWRkZW4gb25lcyksIHJlcGxhY2luZyB0aGVcbiAgICogdmFsdWUgb2YgYW55IHRoYXQgYXJlIGhpZGRlbiBBTkQgaGF2ZSBgcmV0YWluX2hpZGRlbl92YWx1ZWAgc2V0IHRvIGB0cnVlYCBpbiB0aGUgY29ycmVzcG9uZGluZyBgQ2FzZUZpZWxkYCwgd2l0aFxuICAgKiB0aGUgKm9yaWdpbmFsKiB2YWx1ZSBoZWxkIGluIHRoZSBgQ2FzZUZpZWxkYCBvYmplY3QuXG4gICAqXG4gICAqIFRoaXMgaXMgYXMgcGVyIGRlc2lnbiBpbiBFVUktMzYyMiwgd2hlcmUgYW55IHVzZXItZHJpdmVuIHVwZGF0ZXMgdG8gaGlkZGVuIGZpZWxkcyB3aXRoIGByZXRhaW5faGlkZGVuX3ZhbHVlYCA9XG4gICAqIGB0cnVlYCBhcmUgaWdub3JlZCAodGh1cyByZXRhaW5pbmcgdGhlIHZhbHVlIGRpc3BsYXllZCBvcmlnaW5hbGx5KS5cbiAgICpcbiAgICogKiBGb3IgQ29tcGxleCBmaWVsZCB0eXBlcywgdGhlIHJlcGxhY2VtZW50IGFib3ZlIGlzIHBlcmZvcm1lZCByZWN1cnNpdmVseSBmb3IgYWxsIGhpZGRlbiBzdWItZmllbGRzIHdpdGhcbiAgICogYHJldGFpbl9oaWRkZW5fdmFsdWVgID0gYHRydWVgLlxuICAgKlxuICAgKiAqIEZvciBDb2xsZWN0aW9uIGZpZWxkIHR5cGVzLCBpbmNsdWRpbmcgY29sbGVjdGlvbnMgb2YgQ29tcGxleCBhbmQgRG9jdW1lbnQgZmllbGQgdHlwZXMsIHRoZSByZXBsYWNlbWVudCBpc1xuICAgKiBwZXJmb3JtZWQgZm9yIGFsbCBmaWVsZHMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAqIHJldHVybnMgQW4gb2JqZWN0IHdpdGggdGhlICpyYXcqIGZvcm0gdmFsdWUgZGF0YSAoYXMga2V5LXZhbHVlIHBhaXJzKSwgd2l0aCBhbnkgdmFsdWUgcmVwbGFjZW1lbnRzIGFzIG5lY2Vzc2FyeVxuICAgKi9cbiAgcHJpdmF0ZSByZXBsYWNlSGlkZGVuRm9ybVZhbHVlc1dpdGhPcmlnaW5hbENhc2VEYXRhKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSwgcGFyZW50RmllbGQ/OiBDYXNlRmllbGQpOiBvYmplY3Qge1xuICAgIC8vIEdldCB0aGUgcmF3IGZvcm0gdmFsdWUgZGF0YSwgd2hpY2ggaW5jbHVkZXMgdGhlIHZhbHVlcyBvZiBhbnkgZGlzYWJsZWQgY29udHJvbHMsIGFzIGtleS12YWx1ZSBwYWlyc1xuICAgIGNvbnN0IHJhd0Zvcm1WYWx1ZURhdGEgPSBmb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKTtcblxuICAgIC8vIFBsYWNlIGFsbCBjYXNlIGZpZWxkcyBpbiBhIGxvb2t1cCBvYmplY3QsIHNvIHRoZXkgY2FuIGJlIHJldHJpZXZlZCBieSBpZFxuICAgIGNvbnN0IGNhc2VGaWVsZHNMb29rdXAgPSB7fTtcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gY2FzZUZpZWxkcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FzZUZpZWxkc0xvb2t1cFtjYXNlRmllbGRzW2ldLmlkXSA9IGNhc2VGaWVsZHNbaV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZSBhbnkgZm9ybSB2YWx1ZSB3aXRoIHRoZSBvcmlnaW5hbCwgd2hlcmUgaXRzIENhc2VGaWVsZCBpcyBoaWRkZW4gQU5EIGhhcyB0aGUgcmV0YWluX2hpZGRlbl92YWx1ZSBmbGFnIHNldFxuICAgICAqIHRvIHRydWUuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgQ2FzZUZpZWxkJ3MgYGhpZGRlbmAgYXR0cmlidXRlIGlzIG51bGwgb3IgdW5kZWZpbmVkLCB0aGVuIGNoZWNrIHRoaXMgYXR0cmlidXRlIGluIHRoZSBwYXJlbnQgQ2FzZUZpZWxkIChpZlxuICAgICAqIG9uZSBleGlzdHMpLiBUaGlzIGlzIG9jY3VycmluZyAoYW5kIGlzIHBvc3NpYmx5IGEgYnVnKSB3aGVuIGEgQ2FzZUZpZWxkIGlzIGEgc3ViLWZpZWxkIG9mIGEgQ29tcGxleCB0eXBlLCBvciBhblxuICAgICAqIGl0ZW0gaW4gYSBDb2xsZWN0aW9uIHR5cGUuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgZmllbGQgaXMgYSBDb21wbGV4IHR5cGUgd2l0aCByZXRhaW5faGlkZGVuX3ZhbHVlID0gdHJ1ZSwgcGVyZm9ybSBhIHJlY3Vyc2l2ZSByZXBsYWNlbWVudCBmb3IgYWxsIChoaWRkZW4pXG4gICAgICogc3ViLWZpZWxkcyB3aXRoIHJldGFpbl9oaWRkZW5fdmFsdWUgPSB0cnVlLCB1c2luZyB0aGVpciBvcmlnaW5hbCBDYXNlRmllbGQgdmFsdWVzIChmcm9tIHRoZSBgZm9ybWF0dGVkX3ZhbHVlYFxuICAgICAqIGF0dHJpYnV0ZSkuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgZmllbGQgaXMgYSBDb2xsZWN0aW9uIHR5cGUgd2l0aCByZXRhaW5faGlkZGVuX3ZhbHVlID0gdHJ1ZSwgdGhlIGVudGlyZSBjb2xsZWN0aW9uIGlzIHJlcGxhY2VkIHdpdGggdGhlXG4gICAgICogb3JpZ2luYWwgZnJvbSBgZm9ybWF0dGVkX3ZhbHVlYC4gVGhpcyBhcHBsaWVzIHRvICphbGwqIHR5cGVzIG9mIENvbGxlY3Rpb25zLlxuICAgICAqL1xuICAgIE9iamVjdC5rZXlzKHJhd0Zvcm1WYWx1ZURhdGEpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgY2FzZUZpZWxkOiBDYXNlRmllbGQgPSBjYXNlRmllbGRzTG9va3VwW2tleV07XG4gICAgICAvLyBJZiBjYXNlRmllbGQuaGlkZGVuIGlzIE5PVCB0cnV0aHkgYW5kIGFsc28gTk9UIGVxdWFsIHRvIGZhbHNlLCB0aGVuIGl0IG11c3QgYmUgbnVsbC91bmRlZmluZWQgKHJlbWVtYmVyIHRoYXRcbiAgICAgIC8vIGJvdGggbnVsbCBhbmQgdW5kZWZpbmVkIGFyZSBlcXVhbCB0byAqbmVpdGhlciBmYWxzZSBub3IgdHJ1ZSopXG4gICAgICBpZiAoY2FzZUZpZWxkICYmIGNhc2VGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlICYmXG4gICAgICAgIChjYXNlRmllbGQuaGlkZGVuIHx8IChjYXNlRmllbGQuaGlkZGVuICE9PSBmYWxzZSAmJiBwYXJlbnRGaWVsZCAmJiBwYXJlbnRGaWVsZC5oaWRkZW4pKSkge1xuICAgICAgICBpZiAoY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICAgICAgaWYgKGNhc2VGaWVsZC52YWx1ZSAhPT0gbnVsbCAmJiBjYXNlRmllbGQudmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gQ2FsbCB0aGlzIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5IHRvIHJlcGxhY2UgdGhlIENvbXBsZXggZmllbGQncyBzdWItZmllbGRzIGFzIG5lY2Vzc2FyeSwgcGFzc2luZyB0aGVcbiAgICAgICAgICAgIC8vIENhc2VGaWVsZCBpdHNlbGYgKHRoZSBzdWItZmllbGRzIGRvIG5vdCBjb250YWluIGFueSB2YWx1ZXMsIHNvIHRoZXNlIG5lZWQgdG8gYmUgb2J0YWluZWQgZnJvbSB0aGVcbiAgICAgICAgICAgIC8vIHBhcmVudClcbiAgICAgICAgICAgIC8vIFVwZGF0ZSByYXdGb3JtVmFsdWVEYXRhIGZvciB0aGlzIGZpZWxkXG4gICAgICAgICAgICAvLyBjcmVhdGluZyBmb3JtIGdyb3VwIGFuZCBhZGRpbmcgY29udHJvbCBpbnRvIGl0IGluIGNhc2UgY2FzZUZpZWxkIGlzIG9mIGNvbXBsZXh0IHR5cGUgYW5kIGFuZCBwYXJ0IG9mIGZvcm1Hcm91cFxuICAgICAgICAgICAgY29uc3QgZm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgICAgICBpZiAoZm9ybUdyb3VwLmNvbnRyb2xzW2tleV0udmFsdWUpIHtcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzW2tleV0udmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtLmFkZENvbnRyb2woaXRlbSwgbmV3IEZvcm1Db250cm9sKGZvcm1Hcm91cC5jb250cm9sc1trZXldLnZhbHVlW2l0ZW1dKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmF3Rm9ybVZhbHVlRGF0YVtrZXldID0gdGhpcy5yZXBsYWNlSGlkZGVuRm9ybVZhbHVlc1dpdGhPcmlnaW5hbENhc2VEYXRhKFxuICAgICAgICAgICAgICBmb3JtLCBjYXNlRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgY2FzZUZpZWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRGVmYXVsdCBjYXNlIGFsc28gaGFuZGxlcyBjb2xsZWN0aW9ucyBvZiAqYWxsKiB0eXBlczsgdGhlIGVudGlyZSBjb2xsZWN0aW9uIGluIHJhd0Zvcm1WYWx1ZURhdGEgd2lsbCBiZVxuICAgICAgICAgIC8vIHJlcGxhY2VkIHdpdGggdGhlIG9yaWdpbmFsIGZyb20gZm9ybWF0dGVkX3ZhbHVlXG4gICAgICAgICAgLy8gVXNlIHRoZSBDYXNlRmllbGQncyBleGlzdGluZyAqZm9ybWF0dGVkX3ZhbHVlKiBmcm9tIHRoZSBwYXJlbnQsIGlmIGF2YWlsYWJsZS4gKFRoaXMgaXMgbmVjZXNzYXJ5IGZvclxuICAgICAgICAgIC8vIENvbXBsZXggZmllbGRzLCB3aG9zZSBzdWItZmllbGRzIGRvIG5vdCBob2xkIGFueSB2YWx1ZXMgaW4gdGhlIG1vZGVsLikgT3RoZXJ3aXNlLCB1c2UgZm9ybWF0dGVkX3ZhbHVlXG4gICAgICAgICAgLy8gZnJvbSB0aGUgQ2FzZUZpZWxkIGl0c2VsZi5cbiAgICAgICAgICBpZiAocGFyZW50RmllbGQgJiYgcGFyZW50RmllbGQuZm9ybWF0dGVkX3ZhbHVlKSB7XG4gICAgICAgICAgICByYXdGb3JtVmFsdWVEYXRhW2tleV0gPSBwYXJlbnRGaWVsZC5mb3JtYXR0ZWRfdmFsdWVbY2FzZUZpZWxkLmlkXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmF3Rm9ybVZhbHVlRGF0YVtrZXldID0gY2FzZUZpZWxkLmZvcm1hdHRlZF92YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiByYXdGb3JtVmFsdWVEYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIG5vbi1hcnJheSB2YWx1ZSBvYmplY3RzIHdpdGggYG51bGxgIGZvciBhbnkgQ29tcGxleC10eXBlIGZpZWxkcyB3aG9zZSB2YWx1ZSBpcyBlZmZlY3RpdmVseSBlbXB0eSwgaS5lLlxuICAgKiBhbGwgaXRzIHN1Yi1maWVsZHMgYW5kIGRlc2NlbmRhbnRzIGFyZSBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gICAqL1xuICBwcml2YXRlIHJlcGxhY2VFbXB0eUNvbXBsZXhGaWVsZFZhbHVlcyhkYXRhOiBvYmplY3QpOiBvYmplY3Qge1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGFba2V5XSkgJiYgdHlwZW9mIGRhdGFba2V5XSA9PT0gJ29iamVjdCcgJiYgIUZpZWxkc1V0aWxzLmNvbnRhaW5zTm9uRW1wdHlWYWx1ZXMoZGF0YVtrZXldKSkge1xuICAgICAgICBkYXRhW2tleV0gPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YXR1cyhyZXNwb25zZTogb2JqZWN0KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5oYXNDYWxsYmFja0ZhaWxlZChyZXNwb25zZSkgPyByZXNwb25zZVsnY2FsbGJhY2tfcmVzcG9uc2Vfc3RhdHVzJ10gOiByZXNwb25zZVsnZGVsZXRlX2RyYWZ0X3Jlc3BvbnNlX3N0YXR1cyddO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNDYWxsYmFja0ZhaWxlZChyZXNwb25zZTogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlWydjYWxsYmFja19yZXNwb25zZV9zdGF0dXMnXSAhPT0gJ0NBTExCQUNLX0NPTVBMRVRFRCc7XG4gIH1cblxuICBwcml2YXRlIGdldExhc3RQYWdlU2hvd24oKTogV2l6YXJkUGFnZSB7XG4gICAgbGV0IGxhc3RQYWdlOiBXaXphcmRQYWdlO1xuICAgIHRoaXMud2l6YXJkLnJldmVyc2UoKS5mb3JFYWNoKHBhZ2UgPT4ge1xuICAgICAgaWYgKCFsYXN0UGFnZSAmJiB0aGlzLmlzU2hvd24ocGFnZSkpIHtcbiAgICAgICAgbGFzdFBhZ2UgPSBwYWdlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIG5vaW5zcGVjdGlvbiBKU1VudXNlZEFzc2lnbm1lbnRcbiAgICByZXR1cm4gbGFzdFBhZ2U7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ29uZmlybWF0aW9uKHJlc3BvbnNlOiBvYmplY3QpOiBDb25maXJtYXRpb24ge1xuICAgIGlmIChyZXNwb25zZVsnYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlJ10pIHtcbiAgICAgIHJldHVybiBuZXcgQ29uZmlybWF0aW9uKFxuICAgICAgICByZXNwb25zZVsnaWQnXSxcbiAgICAgICAgcmVzcG9uc2VbJ2NhbGxiYWNrX3Jlc3BvbnNlX3N0YXR1cyddLFxuICAgICAgICByZXNwb25zZVsnYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlJ11bJ2NvbmZpcm1hdGlvbl9oZWFkZXInXSxcbiAgICAgICAgcmVzcG9uc2VbJ2FmdGVyX3N1Ym1pdF9jYWxsYmFja19yZXNwb25zZSddWydjb25maXJtYXRpb25fYm9keSddXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNvcnRGaWVsZHNCeVNob3dTdW1tYXJ5Q29udGVudChmaWVsZHM6IENhc2VGaWVsZFtdKTogQ2FzZUZpZWxkW10ge1xuICAgIHJldHVybiB0aGlzLm9yZGVyU2VydmljZVxuICAgICAgLnNvcnQoZmllbGRzLCBDYXNlRWRpdFN1Ym1pdENvbXBvbmVudC5TSE9XX1NVTU1BUllfQ09OVEVOVF9DT01QQVJFX0ZVTkNUSU9OKVxuICAgICAgLmZpbHRlcihjZiA9PiBjZi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRzKCk6IENhc2VGaWVsZFtdIHtcbiAgICBpZiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscykge1xuICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmdldENhc2VGaWVsZHModGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIWV2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkXCI+XG4gIDwhLS0gRXZlbnQgdHJpZ2dlciBuYW1lIC0tPlxuICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57eyBldmVudFRyaWdnZXIubmFtZX19PC9oMT5cblxuICA8IS0tQ2FzZSBJRCBvciBUaXRsZSAtLT5cbiAgPGRpdiAqbmdJZj1cImdldENhc2VUaXRsZSgpOyB0aGVuIHRpdGxlQmxvY2s7IGVsc2UgaWRCbG9ja1wiPjwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3RpdGxlQmxvY2s+XG4gICAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJnZXRDYXNlVGl0bGUoKSB8IGNjZENhc2VUaXRsZTogY29udGV4dEZpZWxkcyA6IGVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIj48L2NjZC1tYXJrZG93bj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNpZEJsb2NrPlxuICAgIDxoMiAqbmdJZj1cImdldENhc2VJZCgpXCIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+I3t7IGdldENhc2VJZCgpIHwgY2NkQ2FzZVJlZmVyZW5jZSB9fTwvaDI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPCEtLSBHZW5lcmljIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIG9ubHkgaWYgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNhbGxiYWNrIGVycm9ycyBvciB3YXJuaW5ncywgb3Igbm8gZXJyb3IgZGV0YWlscyAtLT5cbiAgPGRpdiAqbmdJZj1cImVycm9yICYmICghKGVycm9yLmNhbGxiYWNrRXJyb3JzIHx8IGVycm9yLmNhbGxiYWNrV2FybmluZ3MgfHwgZXJyb3IuZGV0YWlscykgJiYgIWVycm9yLm1lc3NhZ2UpXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cbiAgICA8aDEgY2xhc3M9XCJoZWFkaW5nLWgxIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgICAgU29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgICA8L2gxPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1ib2R5XCI+XG4gICAgICA8cD5XZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuPC9wPlxuICAgICAgPHA+PGEgaHJlZj1cImdldC1oZWxwXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Q29udGFjdCB1czwvYT4gaWYgeW91J3JlIHN0aWxsIGhhdmluZyBwcm9ibGVtcy48L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8IS0tIEV2ZW50IGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBlcnJvciBkZXRhaWxzIC0tPlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgKGVycm9yLmRldGFpbHMgfHwgZXJyb3IubWVzc2FnZSlcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgIDxoMyBjbGFzcz1cImhlYWRpbmctaDMgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgICBUaGUgZXZlbnQgY291bGQgbm90IGJlIGNyZWF0ZWRcbiAgICA8L2gzPlxuICAgIDxwPnt7ZXJyb3IubWVzc2FnZX19PC9wPlxuICAgIDx1bCAqbmdJZj1cImVycm9yLmRldGFpbHM/LmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeS1saXN0XCI+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGZpZWxkRXJyb3Igb2YgZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImNjZC1lcnJvci1zdW1tYXJ5LWxpXCI+e3tmaWVsZEVycm9yLm1lc3NhZ2V9fTwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxjY2QtY2FsbGJhY2stZXJyb3JzIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG5cbiAgPGZvcm0gY2xhc3M9XCJjaGVjay15b3VyLWFuc3dlcnNcIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKHN1Ym1pdCk9XCJzdWJtaXQoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+Q2hlY2sgeW91ciBhbnN3ZXJzPC9oMj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiPkNoZWNrIHRoZSBpbmZvcm1hdGlvbiBiZWxvdyBjYXJlZnVsbHkuPC9zcGFuPlxuXG4gICAgICA8dGFibGUgY2xhc3M9XCJmb3JtLXRhYmxlXCIgYXJpYS1kZXNjcmliZWRieT1cImNoZWNrIHlvdXIgYW5zd2VycyB0YWJsZVwiPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgdGhpcy53aXphcmQucGFnZXNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTaG93bihwYWdlKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgcGFnZVxuICAgICAgICAgICAgfCBjY2RQYWdlRmllbGRzOiBlZGl0Rm9ybVxuICAgICAgICAgICAgfCBjY2RSZWFkRmllbGRzRmlsdGVyOiBmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDogZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVxuICAgICAgICAgICAgfCBjY2RDWUFQYWdlTGFiZWxGaWx0ZXJcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhblNob3dGaWVsZEluQ1lBKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgIDx0ciBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFpc0xhYmVsKGZpZWxkKVwiIGNsYXNzPVwidmFsaWduLXRvcCBjYXNlLWZpZWxkLWxhYmVsXCI+PHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+e3tmaWVsZC5sYWJlbH19PC9zcGFuPjwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWNlbGwgY2FzZS1maWVsZC1jb250ZW50XCIgW2F0dHIuY29sc3Bhbl09XCJpc0xhYmVsKGZpZWxkKSA/ICcyJyA6ICcxJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWRcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbdG9wTGV2ZWxGb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJzdW1tYXJ5Q2FzZUZpZWxkKGZpZWxkKVwiIFtjb250ZXh0XT1cInBhbGV0dGVDb250ZXh0XCIgW2Nhc2VGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidmFsaWduLXRvcCBjaGVjay15b3VyLWFuc3dlcnNfX2NoYW5nZSBjYXNlLWZpZWxkLWNoYW5nZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cImlzQ2hhbmdlQWxsb3dlZChmaWVsZClcIiAoY2xpY2spPVwibmF2aWdhdGVUb1BhZ2UocGFnZS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIj48c3BhbiBjbGFzcz1cInRleHQtMTZcIiBhdHRyLmFyaWEtbGFiZWw9XCJDaGFuZ2Uge3sgZmllbGQubGFiZWwgfX1cIj5DaGFuZ2U8L3NwYW4+PC9hPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlYWRPbmx5U3VtbWFyeUZpZWxkc1RvRGlzcGxheUV4aXN0cygpXCI+XG5cbiAgICAgIDx0YWJsZSBjbGFzcz1cInN1bW1hcnktZmllbGRzXCIgYXJpYS1kZXNjcmliZWRieT1cInN1bW1hcnkgZmllbGRzIHRhYmxlXCI+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiB0aGlzLnNob3dTdW1tYXJ5RmllbGRzXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIiEoZmllbGQgfCBjY2RJc0NvbXBvdW5kKVwiPlxuICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgIDx0aCBpZD1cInN1bW1hcnktZmllbGQtbGFiZWxcIj57e2ZpZWxkLmxhYmVsfX08L3RoPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZm9ybS1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCIgY2xhc3M9XCJjb21wb3VuZC1maWVsZFwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPlxuICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZF09XCJzdW1tYXJ5Q2FzZUZpZWxkKGZpZWxkKVwiIFtjYXNlRmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0V2ZW50Tm90ZXMoKVwiPlxuICAgICAgPGZpZWxkc2V0IGlkPVwiZmllbGRzZXQtZXZlbnRcIiBmb3JtR3JvdXBOYW1lPVwiZXZlbnRcIiAqbmdJZj1cInByb2ZpbGUgJiYgIWlzU29saWNpdG9yKClcIj5cbiAgICAgICAgPGxlZ2VuZCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC9sZWdlbmQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZpZWxkLXRyaWdnZXItc3VtbWFyeVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlxuICAgICAgICAgICAgRXZlbnQgc3VtbWFyeSAob3B0aW9uYWwpXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0taGludFwiPkEgZmV3IHdvcmRzIGRlc2NyaWJpbmcgdGhlIHB1cnBvc2Ugb2YgdGhlIGV2ZW50Ljwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiZmllbGQtdHJpZ2dlci1zdW1tYXJ5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm90dG9tLTMwIHdpZHRoLTUwXCIgZm9ybUNvbnRyb2xOYW1lPVwic3VtbWFyeVwiIG1heGxlbmd0aD1cIjEwMjRcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZpZWxkLXRyaWdnZXItZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FdmVudCBkZXNjcmlwdGlvbiAob3B0aW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICA8dGV4dGFyZWEgaWQ9XCJmaWVsZC10cmlnZ2VyLWRlc2NyaXB0aW9uXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm90dG9tLTMwIHdpZHRoLTUwXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI2NTUzNlwiPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9maWVsZHNldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLXJlbGF0ZWRcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWhhc1ByZXZpb3VzKCkgfHwgaXNTdWJtaXR0aW5nXCIgKGNsaWNrKT1cInByZXZpb3VzKClcIj5QcmV2aW91czwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBjbGFzcz1cImJ1dHRvblwiPnt7dHJpZ2dlclRleHR9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxwIGNsYXNzPVwiY2FuY2VsXCI+PGEgKGNsaWNrKT1cImNhbmNlbCgpXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJpc1N1Ym1pdHRpbmdcIj57e2dldENhbmNlbFRleHQoKX19PC9hPjwvcD5cbiAgPC9mb3JtPlxuPC9kaXY+XG48Y2NkLWNhc2UtZXZlbnQtY29tcGxldGlvbiAqbmdJZj1cImV2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkXCJcbiAgW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJldmVudENvbXBsZXRpb25QYXJhbXNcIlxuICAoZXZlbnRDYW5CZUNvbXBsZXRlZCk9XCJvbkV2ZW50Q2FuQmVDb21wbGV0ZWQoJGV2ZW50KVwiPlxuPC9jY2QtY2FzZS1ldmVudC1jb21wbGV0aW9uPlxuIl19
760
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvY2FzZS1lZGl0LXN1Ym1pdC9jYXNlLWVkaXQtc3VibWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBTzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxN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LHdEQUFtQzs7dUZEckZsRCx1QkFBdUI7Y0FMbkMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLFdBQVcsRUFBRSx1QkFBdUI7Z0JBQ3BDLFNBQVMsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2FBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQYWxldHRlQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvcGFsZXR0ZS9iYXNlLWZpZWxkL3BhbGV0dGUtY29udGV4dC5lbnVtJztcbmltcG9ydCB7IENhc2VFdmVudERhdGEgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY2FzZS1ldmVudC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IENhc2VFdmVudFRyaWdnZXIgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY2FzZS12aWV3L2Nhc2UtZXZlbnQtdHJpZ2dlci5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEh0dHBFcnJvciB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9odHRwL2h0dHAtZXJyb3IubW9kZWwnO1xuaW1wb3J0IHsgUHJvZmlsZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9wcm9maWxlL3Byb2ZpbGUubW9kZWwnO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5pbXBvcnQgeyBDYXNlRmllbGRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2FzZS1maWVsZHMvY2FzZS1maWVsZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmllbGRzL2ZpZWxkcy51dGlscyc7XG5pbXBvcnQgeyBGb3JtRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS9mb3JtLWVycm9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVZhbHVlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS12YWx1ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZGVyL29yZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZmlsZU5vdGlmaWVyIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJvZmlsZS9wcm9maWxlLm5vdGlmaWVyJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Nlc3Npb24vc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb21wb25lbnQsIENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yJztcbmltcG9ydCB7IENhc2VFZGl0UGFnZVRleHQgfSBmcm9tICcuLi9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS10ZXh0LmVudW0nO1xuaW1wb3J0IHsgQ2FzZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQvY2FzZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtYXRpb24gfSBmcm9tICcuLi9kb21haW4vY29uZmlybWF0aW9uLm1vZGVsJztcbmltcG9ydCB7IEV2ZW50Q29tcGxldGlvblBhcmFtcyB9IGZyb20gJy4uL2RvbWFpbi9ldmVudC1jb21wbGV0aW9uLXBhcmFtcy5tb2RlbCc7XG5pbXBvcnQgeyBXaXphcmRQYWdlIH0gZnJvbSAnLi4vZG9tYWluL3dpemFyZC1wYWdlLm1vZGVsJztcbmltcG9ydCB7IFdpemFyZCB9IGZyb20gJy4uL2RvbWFpbi93aXphcmQubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZU5vdGlmaWVyIH0gZnJvbSAnLi4vc2VydmljZXMvY2FzZS5ub3RpZmllcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWVkaXQtc3VibWl0JyxcbiAgdGVtcGxhdGVVcmw6ICdjYXNlLWVkaXQtc3VibWl0Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vY2FzZS1lZGl0LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYXNlRWRpdFN1Ym1pdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0OiBDYXNlRWRpdENvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZVNlcnZpY2U6IEZvcm1WYWx1ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRXJyb3JTZXJ2aWNlOiBGb3JtRXJyb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmllbGRzVXRpbHM6IEZpZWxkc1V0aWxzLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZpZWxkU2VydmljZTogQ2FzZUZpZWxkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlTm90aWZpZXI6IFByb2ZpbGVOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZU5vdGlmaWVyOiBDYXNlTm90aWZpZXIsXG4gICkgeyB9XG5cbiAgcHVibGljIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIEVVSS0zNDUyLlxuICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBlZGl0Rm9ybSBhcyBpdCBpcyByZWFkb25seS5cbiAgICAvLyBUaGlzIHdhcyBjYXVzaW5nIGlzc3VlcyB3aXRoIGhpZGRlbiBmaWVsZHMgdGhhdCBhcmVuJ3Qgd2FudGVkIGJ1dCBoYXZlXG4gICAgLy8gbm90IGJlZW4gZGlzYWJsZWQuXG4gICAgcmV0dXJuIHRoaXMuaXNTdWJtaXR0aW5nIHx8IHRoaXMuaGFzRXJyb3JzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXI7XG4gIHB1YmxpYyBlZGl0Rm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgZXJyb3I6IEh0dHBFcnJvcjtcbiAgcHVibGljIGNhbGxiYWNrRXJyb3JzU3ViamVjdDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHVibGljIGlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgcHVibGljIHRyaWdnZXJUZXh0OiBzdHJpbmc7XG4gIHB1YmxpYyB3aXphcmQ6IFdpemFyZDtcbiAgcHVibGljIHByb2ZpbGU6IFByb2ZpbGU7XG4gIHB1YmxpYyBzaG93U3VtbWFyeUZpZWxkczogQ2FzZUZpZWxkW107XG4gIHB1YmxpYyBwYWxldHRlQ29udGV4dDogUGFsZXR0ZUNvbnRleHQgPSBQYWxldHRlQ29udGV4dC5DSEVDS19ZT1VSX0FOU1dFUjtcbiAgcHVibGljIGlzU3VibWl0dGluZzogYm9vbGVhbjtcbiAgcHVibGljIHByb2ZpbGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNvbnRleHRGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgdGFzazogVGFzaztcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvblBhcmFtczogRXZlbnRDb21wbGV0aW9uUGFyYW1zO1xuICBwdWJsaWMgZXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWQgPSBmYWxzZTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTSE9XX1NVTU1BUllfQ09OVEVOVF9DT01QQVJFX0ZVTkNUSU9OID0gKGE6IENhc2VGaWVsZCwgYjogQ2FzZUZpZWxkKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBhQ2FzZUZpZWxkID0gYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPT09IDAgfHwgYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG4gICAgY29uc3QgYkNhc2VGaWVsZCA9IGIuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uID09PSAwIHx8IGIuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uO1xuXG4gICAgaWYgKCFhQ2FzZUZpZWxkKSB7XG4gICAgICByZXR1cm4gIWJDYXNlRmllbGQgPyAwIDogMTtcbiAgICB9XG5cbiAgICBpZiAoIWJDYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgcmV0dXJuIGEuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uIC0gYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uID0gdGhpcy5wcm9maWxlTm90aWZpZXIucHJvZmlsZS5zdWJzY3JpYmUoXyA9PiB0aGlzLnByb2ZpbGUgPSBfKTtcbiAgICB0aGlzLmV2ZW50VHJpZ2dlciA9IHRoaXMuY2FzZUVkaXQuZXZlbnRUcmlnZ2VyO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSB0aGlzLmV2ZW50VHJpZ2dlci5lbmRfYnV0dG9uX2xhYmVsIHx8IENhbGxiYWNrRXJyb3JzQ29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVUJNSVQ7XG4gICAgdGhpcy5lZGl0Rm9ybSA9IHRoaXMuY2FzZUVkaXQuZm9ybTtcbiAgICB0aGlzLndpemFyZCA9IHRoaXMuY2FzZUVkaXQud2l6YXJkO1xuICAgIHRoaXMuc2hvd1N1bW1hcnlGaWVsZHMgPSB0aGlzLnNvcnRGaWVsZHNCeVNob3dTdW1tYXJ5Q29udGVudCh0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRleHRGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZHMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3VibWl0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gdHJ1ZTtcblxuICAgIC8vIFdlIGhhdmUgdG8gcnVuIHRoZSBldmVudCBjb21wbGV0aW9uIGNoZWNrcyBpZiB0YXNrIGluIHNlc3Npb24gc3RvcmFnZVxuICAgIC8vIGFuZCBpZiB0aGUgdGFzayBpcyBpbiBzZXNzaW9uIHN0b3JhZ2UsIHRoZW4gaXMgaXQgYXNzb2NpYXRlZCB0byB0aGUgY2FzZVxuICAgIGxldCB0YXNrSW5TZXNzaW9uU3RvcmFnZTogVGFzaztcbiAgICBjb25zdCB0YXNrU3RyID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndGFza1RvQ29tcGxldGUnKTtcbiAgICBpZiAodGFza1N0cikge1xuICAgICAgdGFza0luU2Vzc2lvblN0b3JhZ2UgPSBKU09OLnBhcnNlKHRhc2tTdHIpO1xuICAgIH1cblxuICAgIGlmICh0YXNrSW5TZXNzaW9uU3RvcmFnZSAmJiB0YXNrSW5TZXNzaW9uU3RvcmFnZS5jYXNlX2lkID09PSB0aGlzLmdldENhc2VJZCgpKSB7XG4gICAgICAvLyBTaG93IGV2ZW50IGNvbXBsZXRpb24gY29tcG9uZW50IHRvIHBlcmZvcm0gZXZlbnQgY29tcGxldGlvbiBjaGVja3NcbiAgICAgIHRoaXMuZXZlbnRDb21wbGV0aW9uUGFyYW1zID0ge1xuICAgICAgICBjYXNlSWQ6IHRoaXMuZ2V0Q2FzZUlkKCksXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZ2V0RXZlbnRJZCgpLFxuICAgICAgICB0YXNrOiB0YXNrSW5TZXNzaW9uU3RvcmFnZVxuICAgICAgfTtcbiAgICAgIHRoaXMuZXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUYXNrIG5vdCBpbiBzZXNzaW9uIHN0b3JhZ2UsIHByb2NlZWQgdG8gc3VibWl0XG4gICAgICBjb25zdCBjYXNlRXZlbnREYXRhID0gdGhpcy5nZW5lcmF0ZUNhc2VFdmVudERhdGEoKTtcbiAgICAgIHRoaXMuY2FzZVN1Ym1pdChjYXNlRXZlbnREYXRhKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlciBmdW5jdGlvbiBmb3IgZXZlbnQgZW1pdHRlZCBmcm9tIGNhc2UgZXZlbnQgY29tcGxldGlvbiBjb21wb25lbnRcbiAgICovXG4gIHB1YmxpYyBvbkV2ZW50Q2FuQmVDb21wbGV0ZWQoZXZlbnRDYW5CZUNvbXBsZXRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChldmVudENhbkJlQ29tcGxldGVkKSB7XG4gICAgICAvLyBTdWJtaXRcbiAgICAgIGNvbnN0IGNhc2VFdmVudERhdGEgPSB0aGlzLmdlbmVyYXRlQ2FzZUV2ZW50RGF0YSgpO1xuICAgICAgdGhpcy5jYXNlU3VibWl0KGNhc2VFdmVudERhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOYXZpZ2F0ZSB0byB0YXNrcyB0YWIgb24gY2FzZSBkZXRhaWxzIHBhZ2VcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Nhc2VzL2Nhc2UtZGV0YWlscy8ke3RoaXMuZ2V0Q2FzZUlkKCl9L3Rhc2tzYF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDYXNlRXZlbnREYXRhKCk6IENhc2VFdmVudERhdGEge1xuICAgIGNvbnN0IGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB7XG4gICAgICBkYXRhOiB0aGlzLnJlcGxhY2VFbXB0eUNvbXBsZXhGaWVsZFZhbHVlcyhcbiAgICAgICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnNhbml0aXNlKFxuICAgICAgICAgIHRoaXMucmVwbGFjZUhpZGRlbkZvcm1WYWx1ZXNXaXRoT3JpZ2luYWxDYXNlRGF0YShcbiAgICAgICAgICAgIHRoaXMuZWRpdEZvcm0uZ2V0KCdkYXRhJykgYXMgRm9ybUdyb3VwLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykpKSxcbiAgICAgIGV2ZW50OiB0aGlzLmVkaXRGb3JtLnZhbHVlLmV2ZW50XG4gICAgfSBhcyBDYXNlRXZlbnREYXRhO1xuICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5jbGVhck5vbkNhc2VGaWVsZHMoY2FzZUV2ZW50RGF0YS5kYXRhLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZU51bGxMYWJlbHMoY2FzZUV2ZW50RGF0YS5kYXRhLCB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcyk7XG4gICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnJlbW92ZUVtcHR5RG9jdW1lbnRzKGNhc2VFdmVudERhdGEuZGF0YSwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIC8vIFJlbW92ZSBjb2xsZWN0aW9uIGZpZWxkcyB0aGF0IGhhdmUgXCJtaW5cIiB2YWxpZGF0aW9uIG9mIGdyZWF0ZXIgdGhhbiB6ZXJvIHNldCBvbiB0aGUgRmllbGRUeXBlIGJ1dCBhcmUgZW1wdHk7XG4gICAgLy8gdGhlc2Ugd2lsbCBmYWlsIHZhbGlkYXRpb25cbiAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlRW1wdHlDb2xsZWN0aW9uc1dpdGhNaW5WYWxpZGF0aW9uKGNhc2VFdmVudERhdGEuZGF0YSwgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIGNhc2VFdmVudERhdGEuZXZlbnRfdG9rZW4gPSB0aGlzLmV2ZW50VHJpZ2dlci5ldmVudF90b2tlbjtcbiAgICBjYXNlRXZlbnREYXRhLmlnbm9yZV93YXJuaW5nID0gdGhpcy5pZ25vcmVXYXJuaW5nO1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNvbmZpcm1hdGlvbikge1xuICAgICAgY2FzZUV2ZW50RGF0YS5kYXRhID0ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhc2VFdmVudERhdGE7XG4gIH1cblxuICBwcml2YXRlIGNhc2VTdWJtaXQoY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQuc3VibWl0KGNhc2VFdmVudERhdGEpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICByZXNwb25zZSA9PiB7XG4gICAgICAgICAgdGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcgPSBudWxsO1xuICAgICAgICAgIHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLnJlbW92ZUl0ZW0oJ2V2ZW50VXJsJyk7XG4gICAgICAgICAgY29uc3QgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb24gPSB0aGlzLmJ1aWxkQ29uZmlybWF0aW9uKHJlc3BvbnNlKTtcbiAgICAgICAgICBpZiAoY29uZmlybWF0aW9uICYmIChjb25maXJtYXRpb24uZ2V0SGVhZGVyKCkgfHwgY29uZmlybWF0aW9uLmdldEJvZHkoKSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2FzZUVkaXQuY29uZmlybShjb25maXJtYXRpb24pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhc2VFZGl0LnN1Ym1pdHRlZC5lbWl0KHsgY2FzZUlkOiByZXNwb25zZVsnaWQnXSwgc3RhdHVzOiB0aGlzLmdldFN0YXR1cyhyZXNwb25zZSkgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgICAgICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQodGhpcy5lcnJvcik7XG4gICAgICAgICAgaWYgKHRoaXMuZXJyb3IuZGV0YWlscykge1xuICAgICAgICAgICAgdGhpcy5mb3JtRXJyb3JTZXJ2aWNlXG4gICAgICAgICAgICAgIC5tYXBGaWVsZEVycm9ycyh0aGlzLmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzLCB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ10gYXMgRm9ybUdyb3VwLCAndmFsaWRhdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlICphbGwqIHZhbHVlcyBvZiBhIHtAbGluayBGb3JtR3JvdXB9LCBpbmNsdWRpbmcgdGhvc2UgZm9yIGRpc2FibGVkIGZpZWxkcyAoaS5lLiBoaWRkZW4gb25lcyksIHJlcGxhY2luZyB0aGVcbiAgICogdmFsdWUgb2YgYW55IHRoYXQgYXJlIGhpZGRlbiBBTkQgaGF2ZSBgcmV0YWluX2hpZGRlbl92YWx1ZWAgc2V0IHRvIGB0cnVlYCBpbiB0aGUgY29ycmVzcG9uZGluZyBgQ2FzZUZpZWxkYCwgd2l0aFxuICAgKiB0aGUgKm9yaWdpbmFsKiB2YWx1ZSBoZWxkIGluIHRoZSBgQ2FzZUZpZWxkYCBvYmplY3QuXG4gICAqXG4gICAqIFRoaXMgaXMgYXMgcGVyIGRlc2lnbiBpbiBFVUktMzYyMiwgd2hlcmUgYW55IHVzZXItZHJpdmVuIHVwZGF0ZXMgdG8gaGlkZGVuIGZpZWxkcyB3aXRoIGByZXRhaW5faGlkZGVuX3ZhbHVlYCA9XG4gICAqIGB0cnVlYCBhcmUgaWdub3JlZCAodGh1cyByZXRhaW5pbmcgdGhlIHZhbHVlIGRpc3BsYXllZCBvcmlnaW5hbGx5KS5cbiAgICpcbiAgICogKiBGb3IgQ29tcGxleCBmaWVsZCB0eXBlcywgdGhlIHJlcGxhY2VtZW50IGFib3ZlIGlzIHBlcmZvcm1lZCByZWN1cnNpdmVseSBmb3IgYWxsIGhpZGRlbiBzdWItZmllbGRzIHdpdGhcbiAgICogYHJldGFpbl9oaWRkZW5fdmFsdWVgID0gYHRydWVgLlxuICAgKlxuICAgKiAqIEZvciBDb2xsZWN0aW9uIGZpZWxkIHR5cGVzLCBpbmNsdWRpbmcgY29sbGVjdGlvbnMgb2YgQ29tcGxleCBhbmQgRG9jdW1lbnQgZmllbGQgdHlwZXMsIHRoZSByZXBsYWNlbWVudCBpc1xuICAgKiBwZXJmb3JtZWQgZm9yIGFsbCBmaWVsZHMgaW4gdGhlIGNvbGxlY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBmb3JtR3JvdXAgVGhlIGBGb3JtR3JvdXBgIGluc3RhbmNlIHdob3NlIHJhdyB2YWx1ZXMgYXJlIHRvIGJlIHRyYXZlcnNlZFxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBUaGUgYXJyYXkgb2Yge0BsaW5rIENhc2VGaWVsZH0gZG9tYWluIG1vZGVsIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byBmaWVsZHMgaW4gYGZvcm1Hcm91cGBcbiAgICogQHBhcmFtIHBhcmVudEZpZWxkIFJlZmVyZW5jZSB0byB0aGUgcGFyZW50IGBDYXNlRmllbGRgLiBVc2VkIGZvciByZXRyaWV2aW5nIHRoZSBzdWItZmllbGQgdmFsdWVzIG9mIGEgQ29tcGxleCBmaWVsZFxuICAgKiB0byBwZXJmb3JtIHJlY3Vyc2l2ZSByZXBsYWNlbWVudCAtIHRoZSBzdWItZmllbGQgYENhc2VGaWVsZGBzIHRoZW1zZWx2ZXMgZG8gKm5vdCogY29udGFpbiBhbnkgdmFsdWVzXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHRoZSAqcmF3KiBmb3JtIHZhbHVlIGRhdGEgKGFzIGtleS12YWx1ZSBwYWlycyksIHdpdGggYW55IHZhbHVlIHJlcGxhY2VtZW50cyBhcyBuZWNlc3NhcnlcbiAgICovXG4gIHByaXZhdGUgcmVwbGFjZUhpZGRlbkZvcm1WYWx1ZXNXaXRoT3JpZ2luYWxDYXNlRGF0YShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIHBhcmVudEZpZWxkPzogQ2FzZUZpZWxkKTogb2JqZWN0IHtcbiAgICAvLyBHZXQgdGhlIHJhdyBmb3JtIHZhbHVlIGRhdGEsIHdoaWNoIGluY2x1ZGVzIHRoZSB2YWx1ZXMgb2YgYW55IGRpc2FibGVkIGNvbnRyb2xzLCBhcyBrZXktdmFsdWUgcGFpcnNcbiAgICBjb25zdCByYXdGb3JtVmFsdWVEYXRhID0gZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG5cbiAgICAvLyBQbGFjZSBhbGwgY2FzZSBmaWVsZHMgaW4gYSBsb29rdXAgb2JqZWN0LCBzbyB0aGV5IGNhbiBiZSByZXRyaWV2ZWQgYnkgaWRcbiAgICBjb25zdCBjYXNlRmllbGRzTG9va3VwID0ge307XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGNhc2VGaWVsZHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNhc2VGaWVsZHNMb29rdXBbY2FzZUZpZWxkc1tpXS5pZF0gPSBjYXNlRmllbGRzW2ldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2UgYW55IGZvcm0gdmFsdWUgd2l0aCB0aGUgb3JpZ2luYWwsIHdoZXJlIGl0cyBDYXNlRmllbGQgaXMgaGlkZGVuIEFORCBoYXMgdGhlIHJldGFpbl9oaWRkZW5fdmFsdWUgZmxhZyBzZXRcbiAgICAgKiB0byB0cnVlLlxuICAgICAqXG4gICAgICogSWYgdGhlIENhc2VGaWVsZCdzIGBoaWRkZW5gIGF0dHJpYnV0ZSBpcyBudWxsIG9yIHVuZGVmaW5lZCwgdGhlbiBjaGVjayB0aGlzIGF0dHJpYnV0ZSBpbiB0aGUgcGFyZW50IENhc2VGaWVsZCAoaWZcbiAgICAgKiBvbmUgZXhpc3RzKS4gVGhpcyBpcyBvY2N1cnJpbmcgKGFuZCBpcyBwb3NzaWJseSBhIGJ1Zykgd2hlbiBhIENhc2VGaWVsZCBpcyBhIHN1Yi1maWVsZCBvZiBhIENvbXBsZXggdHlwZSwgb3IgYW5cbiAgICAgKiBpdGVtIGluIGEgQ29sbGVjdGlvbiB0eXBlLlxuICAgICAqXG4gICAgICogSWYgdGhlIGZpZWxkIGlzIGEgQ29tcGxleCB0eXBlIHdpdGggcmV0YWluX2hpZGRlbl92YWx1ZSA9IHRydWUsIHBlcmZvcm0gYSByZWN1cnNpdmUgcmVwbGFjZW1lbnQgZm9yIGFsbCAoaGlkZGVuKVxuICAgICAqIHN1Yi1maWVsZHMgd2l0aCByZXRhaW5faGlkZGVuX3ZhbHVlID0gdHJ1ZSwgdXNpbmcgdGhlaXIgb3JpZ2luYWwgQ2FzZUZpZWxkIHZhbHVlcyAoZnJvbSB0aGUgYGZvcm1hdHRlZF92YWx1ZWBcbiAgICAgKiBhdHRyaWJ1dGUpLlxuICAgICAqXG4gICAgICogSWYgdGhlIGZpZWxkIGlzIGEgQ29sbGVjdGlvbiB0eXBlIHdpdGggcmV0YWluX2hpZGRlbl92YWx1ZSA9IHRydWUsIHRoZSBlbnRpcmUgY29sbGVjdGlvbiBpcyByZXBsYWNlZCB3aXRoIHRoZVxuICAgICAqIG9yaWdpbmFsIGZyb20gYGZvcm1hdHRlZF92YWx1ZWAuIFRoaXMgYXBwbGllcyB0byAqYWxsKiB0eXBlcyBvZiBDb2xsZWN0aW9ucy5cbiAgICAgKi9cbiAgICBPYmplY3Qua2V5cyhyYXdGb3JtVmFsdWVEYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IGNhc2VGaWVsZDogQ2FzZUZpZWxkID0gY2FzZUZpZWxkc0xvb2t1cFtrZXldO1xuICAgICAgLy8gSWYgY2FzZUZpZWxkLmhpZGRlbiBpcyBOT1QgdHJ1dGh5IGFuZCBhbHNvIE5PVCBlcXVhbCB0byBmYWxzZSwgdGhlbiBpdCBtdXN0IGJlIG51bGwvdW5kZWZpbmVkIChyZW1lbWJlciB0aGF0XG4gICAgICAvLyBib3RoIG51bGwgYW5kIHVuZGVmaW5lZCBhcmUgZXF1YWwgdG8gKm5laXRoZXIgZmFsc2Ugbm9yIHRydWUqKVxuICAgICAgaWYgKGNhc2VGaWVsZCAmJiBjYXNlRmllbGQucmV0YWluX2hpZGRlbl92YWx1ZSAmJlxuICAgICAgICAoY2FzZUZpZWxkLmhpZGRlbiB8fCAoY2FzZUZpZWxkLmhpZGRlbiAhPT0gZmFsc2UgJiYgcGFyZW50RmllbGQgJiYgcGFyZW50RmllbGQuaGlkZGVuKSkpIHtcbiAgICAgICAgaWYgKGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgICAgIC8vIE5vdGU6IERlbGliZXJhdGUgdXNlIG9mIGVxdWFsaXR5ICg9PSkgYW5kIG5vbi1lcXVhbGl0eSAoIT0pIG9wZXJhdG9ycyBmb3IgbnVsbCBjaGVja3MgdGhyb3VnaG91dCwgdG9cbiAgICAgICAgICAvLyBoYW5kbGUgYm90aCBudWxsIGFuZCB1bmRlZmluZWQgdmFsdWVzXG4gICAgICAgICAgaWYgKGNhc2VGaWVsZC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gQ2FsbCB0aGlzIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5IHRvIHJlcGxhY2UgdGhlIENvbXBsZXggZmllbGQncyBzdWItZmllbGRzIGFzIG5lY2Vzc2FyeSwgcGFzc2luZyB0aGVcbiAgICAgICAgICAgIC8vIENhc2VGaWVsZCBpdHNlbGYgKHRoZSBzdWItZmllbGRzIGRvIG5vdCBjb250YWluIGFueSB2YWx1ZXMsIHNvIHRoZXNlIG5lZWQgdG8gYmUgb2J0YWluZWQgZnJvbSB0aGVcbiAgICAgICAgICAgIC8vIHBhcmVudClcbiAgICAgICAgICAgIC8vIFVwZGF0ZSByYXdGb3JtVmFsdWVEYXRhIGZvciB0aGlzIGZpZWxkXG4gICAgICAgICAgICAvLyBjcmVhdGluZyBmb3JtIGdyb3VwIGFuZCBhZGRpbmcgY29udHJvbCBpbnRvIGl0IGluIGNhc2UgY2FzZUZpZWxkIGlzIG9mIGNvbXBsZXh0IHR5cGUgYW5kIGFuZCBwYXJ0IG9mIGZvcm1Hcm91cFxuICAgICAgICAgICAgY29uc3QgZm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICAgICAgICBpZiAoZm9ybUdyb3VwLmNvbnRyb2xzW2tleV0udmFsdWUpIHtcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzW2tleV0udmFsdWUpLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtLmFkZENvbnRyb2woaXRlbSwgbmV3IEZvcm1Db250cm9sKGZvcm1Hcm91cC5jb250cm9sc1trZXldLnZhbHVlW2l0ZW1dKSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByYXdGb3JtVmFsdWVEYXRhW2tleV0gPSB0aGlzLnJlcGxhY2VIaWRkZW5Gb3JtVmFsdWVzV2l0aE9yaWdpbmFsQ2FzZURhdGEoXG4gICAgICAgICAgICAgIGZvcm0sIGNhc2VGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLCBjYXNlRmllbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBEZWZhdWx0IGNhc2UgYWxzbyBoYW5kbGVzIGNvbGxlY3Rpb25zIG9mICphbGwqIHR5cGVzOyB0aGUgZW50aXJlIGNvbGxlY3Rpb24gaW4gcmF3Rm9ybVZhbHVlRGF0YSB3aWxsIGJlXG4gICAgICAgICAgLy8gcmVwbGFjZWQgd2l0aCB0aGUgb3JpZ2luYWwgZnJvbSBmb3JtYXR0ZWRfdmFsdWVcbiAgICAgICAgICAvLyBVc2UgdGhlIENhc2VGaWVsZCdzIGV4aXN0aW5nICpmb3JtYXR0ZWRfdmFsdWUqIGZyb20gdGhlIHBhcmVudCwgaWYgYXZhaWxhYmxlLiAoVGhpcyBpcyBuZWNlc3NhcnkgZm9yXG4gICAgICAgICAgLy8gQ29tcGxleCBmaWVsZHMsIHdob3NlIHN1Yi1maWVsZHMgZG8gbm90IGhvbGQgYW55IHZhbHVlcyBpbiB0aGUgbW9kZWwuKSBPdGhlcndpc2UsIHVzZSBmb3JtYXR0ZWRfdmFsdWVcbiAgICAgICAgICAvLyBmcm9tIHRoZSBDYXNlRmllbGQgaXRzZWxmLlxuICAgICAgICAgIGlmIChwYXJlbnRGaWVsZCAmJiBwYXJlbnRGaWVsZC5mb3JtYXR0ZWRfdmFsdWUpIHtcbiAgICAgICAgICAgIHJhd0Zvcm1WYWx1ZURhdGFba2V5XSA9IHBhcmVudEZpZWxkLmZvcm1hdHRlZF92YWx1ZVtjYXNlRmllbGQuaWRdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByYXdGb3JtVmFsdWVEYXRhW2tleV0gPSBjYXNlRmllbGQuZm9ybWF0dGVkX3ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJhd0Zvcm1WYWx1ZURhdGE7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgbm9uLWFycmF5IHZhbHVlIG9iamVjdHMgd2l0aCBgbnVsbGAgZm9yIGFueSBDb21wbGV4LXR5cGUgZmllbGRzIHdob3NlIHZhbHVlIGlzIGVmZmVjdGl2ZWx5IGVtcHR5LCBpLmUuXG4gICAqIGFsbCBpdHMgc3ViLWZpZWxkcyBhbmQgZGVzY2VuZGFudHMgYXJlIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIG9iamVjdCB0cmVlIHJlcHJlc2VudGluZyBhbGwgdGhlIGZvcm0gZmllbGQgZGF0YVxuICAgKiBAcmV0dXJucyBUaGUgZm9ybSBmaWVsZCBkYXRhIG1vZGlmaWVkIGFjY29yZGluZ2x5XG4gICAqL1xuICBwcml2YXRlIHJlcGxhY2VFbXB0eUNvbXBsZXhGaWVsZFZhbHVlcyhkYXRhOiBvYmplY3QpOiBvYmplY3Qge1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGFba2V5XSkgJiYgdHlwZW9mIGRhdGFba2V5XSA9PT0gJ29iamVjdCcgJiYgIUZpZWxkc1V0aWxzLmNvbnRhaW5zTm9uRW1wdHlWYWx1ZXMoZGF0YVtrZXldKSkge1xuICAgICAgICBkYXRhW2tleV0gPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YXR1cyhyZXNwb25zZTogb2JqZWN0KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5oYXNDYWxsYmFja0ZhaWxlZChyZXNwb25zZSkgPyByZXNwb25zZVsnY2FsbGJhY2tfcmVzcG9uc2Vfc3RhdHVzJ10gOiByZXNwb25zZVsnZGVsZXRlX2RyYWZ0X3Jlc3BvbnNlX3N0YXR1cyddO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNDYWxsYmFja0ZhaWxlZChyZXNwb25zZTogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlWydjYWxsYmFja19yZXNwb25zZV9zdGF0dXMnXSAhPT0gJ0NBTExCQUNLX0NPTVBMRVRFRCc7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb1BhZ2UocGFnZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0Lm5hdmlnYXRlVG9QYWdlKHBhZ2VJZCk7XG4gIH1cblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNOb3RpZnkoZXJyb3JDb250ZXh0OiBDYWxsYmFja0Vycm9yc0NvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmlnbm9yZVdhcm5pbmcgPSBlcnJvckNvbnRleHQuaWdub3JlX3dhcm5pbmc7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IGVycm9yQ29udGV4dC50cmlnZ2VyX3RleHQ7XG4gIH1cblxuICBwdWJsaWMgc3VtbWFyeUNhc2VGaWVsZChmaWVsZDogQ2FzZUZpZWxkKTogQ2FzZUZpZWxkIHtcbiAgICBpZiAoIXRoaXMuZWRpdEZvcm0uZ2V0KCdkYXRhJykuZ2V0KGZpZWxkLmlkKSkge1xuICAgICAgLy8gSWYgbm90IGluIGZvcm0sIHJldHVybiBmaWVsZCBpdHNlbGZcbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBjb25zdCBjbG9uZUZpZWxkOiBDYXNlRmllbGQgPSB0aGlzLmZpZWxkc1V0aWxzLmNsb25lQ2FzZUZpZWxkKGZpZWxkKTtcbiAgICBjbG9uZUZpZWxkLnZhbHVlID0gdGhpcy5lZGl0Rm9ybS5nZXQoJ2RhdGEnKS5nZXQoZmllbGQuaWQpLnZhbHVlO1xuXG4gICAgcmV0dXJuIGNsb25lRmllbGQ7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5jYW5fc2F2ZV9kcmFmdCkge1xuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoQ2FzZUVkaXRDb21wb25lbnQuT1JJR0lOX1FVRVJZX1BBUkFNKSA9PT0gJ3ZpZXdEcmFmdCcpIHtcbiAgICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlVGV4dC5SRVNVTUVEX0ZPUk1fRElTQ0FSRCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZVRleHQuTkVXX0ZPUk1fRElTQ0FSRCB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0xhYmVsKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRmllbGRTZXJ2aWNlLmlzTGFiZWwoZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGlzQ2hhbmdlQWxsb3dlZChmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmNhc2VGaWVsZFNlcnZpY2UuaXNSZWFkT25seShmaWVsZCk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tZb3VyQW5zd2VyRmllbGRzVG9EaXNwbGF5RXhpc3RzKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5ldmVudFRyaWdnZXIuc2hvd19zdW1tYXJ5KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMud2l6YXJkLnBhZ2VzKSB7XG4gICAgICBpZiAodGhpcy5pc1Nob3duKHBhZ2UpKSB7XG4gICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgcGFnZS5jYXNlX2ZpZWxkcykge1xuICAgICAgICAgIGlmICh0aGlzLmNhblNob3dGaWVsZEluQ1lBKGZpZWxkKSkge1xuICAgICAgICAgICAgLy8gYXQgbGVhc3Qgb25lIGZpZWxkIG5lZWRzIHNob3dpbmdcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGZvdW5kIG5vIGZpZWxkcyB0byBzaG93IGluIENZQSBzdW1tYXJ5IHBhZ2VcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgcmVhZE9ubHlTdW1tYXJ5RmllbGRzVG9EaXNwbGF5RXhpc3RzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5zb21lKGZpZWxkID0+IGZpZWxkLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiA+PSAwKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RXZlbnROb3RlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuc2hvd19ldmVudF9ub3RlcyAhPT0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzUHJldmlvdXMoKSkge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvUGFnZSh0aGlzLmdldExhc3RQYWdlU2hvd24oKS5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0TGFzdFBhZ2VTaG93bigpO1xuICB9XG5cbiAgcHVibGljIGlzU2hvd24ocGFnZTogV2l6YXJkUGFnZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzVXRpbHNcbiAgICAgIC5tZXJnZUNhc2VGaWVsZHNBbmRGb3JtRmllbGRzKHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLCB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ10udmFsdWUpO1xuICAgIHJldHVybiBwYWdlLnBhcnNlZFNob3dDb25kaXRpb24ubWF0Y2goZmllbGRzKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5TaG93RmllbGRJbkNZQShmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkLnNob3dfc3VtbWFyeV9jaGFuZ2Vfb3B0aW9uO1xuICB9XG5cbiAgcHVibGljIGlzU29saWNpdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByb2ZpbGUuaXNTb2xpY2l0b3IoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLmNhc2VfaWQgOiAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RXZlbnRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVkaXRGb3JtLnZhbHVlLmV2ZW50LmlkO1xuICB9XG5cbiAgcHVibGljIGdldENhc2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyAmJiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlICYmXG4gICAgICB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgOiAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FuY2VsVGV4dCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5jYW5fc2F2ZV9kcmFmdCkge1xuICAgICAgcmV0dXJuICdSZXR1cm4gdG8gY2FzZSBsaXN0JztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdDYW5jZWwnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGFzdFBhZ2VTaG93bigpOiBXaXphcmRQYWdlIHtcbiAgICBsZXQgbGFzdFBhZ2U6IFdpemFyZFBhZ2U7XG4gICAgdGhpcy53aXphcmQucmV2ZXJzZSgpLmZvckVhY2gocGFnZSA9PiB7XG4gICAgICBpZiAoIWxhc3RQYWdlICYmIHRoaXMuaXNTaG93bihwYWdlKSkge1xuICAgICAgICBsYXN0UGFnZSA9IHBhZ2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gbm9pbnNwZWN0aW9uIEpTVW51c2VkQXNzaWdubWVudFxuICAgIHJldHVybiBsYXN0UGFnZTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb25maXJtYXRpb24ocmVzcG9uc2U6IG9iamVjdCk6IENvbmZpcm1hdGlvbiB7XG4gICAgaWYgKHJlc3BvbnNlWydhZnRlcl9zdWJtaXRfY2FsbGJhY2tfcmVzcG9uc2UnXSkge1xuICAgICAgcmV0dXJuIG5ldyBDb25maXJtYXRpb24oXG4gICAgICAgIHJlc3BvbnNlWydpZCddLFxuICAgICAgICByZXNwb25zZVsnY2FsbGJhY2tfcmVzcG9uc2Vfc3RhdHVzJ10sXG4gICAgICAgIHJlc3BvbnNlWydhZnRlcl9zdWJtaXRfY2FsbGJhY2tfcmVzcG9uc2UnXVsnY29uZmlybWF0aW9uX2hlYWRlciddLFxuICAgICAgICByZXNwb25zZVsnYWZ0ZXJfc3VibWl0X2NhbGxiYWNrX3Jlc3BvbnNlJ11bJ2NvbmZpcm1hdGlvbl9ib2R5J11cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydEZpZWxkc0J5U2hvd1N1bW1hcnlDb250ZW50KGZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGRbXSB7XG4gICAgcmV0dXJuIHRoaXMub3JkZXJTZXJ2aWNlXG4gICAgICAuc29ydChmaWVsZHMsIENhc2VFZGl0U3VibWl0Q29tcG9uZW50LlNIT1dfU1VNTUFSWV9DT05URU5UX0NPTVBBUkVfRlVOQ1RJT04pXG4gICAgICAuZmlsdGVyKGNmID0+IGNmLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGdldENhc2VGaWVsZHMoKTogQ2FzZUZpZWxkW10ge1xuICAgIGlmICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKSB7XG4gICAgICByZXR1cm4gRmllbGRzVXRpbHMuZ2V0Q2FzZUZpZWxkcyh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHM7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCIhZXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWRcIj5cbiAgPCEtLSBFdmVudCB0cmlnZ2VyIG5hbWUgLS0+XG4gIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPnt7IGV2ZW50VHJpZ2dlci5uYW1lfX08L2gxPlxuXG4gIDwhLS1DYXNlIElEIG9yIFRpdGxlIC0tPlxuICA8ZGl2ICpuZ0lmPVwiZ2V0Q2FzZVRpdGxlKCk7IHRoZW4gdGl0bGVCbG9jazsgZWxzZSBpZEJsb2NrXCI+PC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjdGl0bGVCbG9jaz5cbiAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cImdldENhc2VUaXRsZSgpIHwgY2NkQ2FzZVRpdGxlOiBjb250ZXh0RmllbGRzIDogZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiPjwvY2NkLW1hcmtkb3duPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2lkQmxvY2s+XG4gICAgPGgyICpuZ0lmPVwiZ2V0Q2FzZUlkKClcIiBjbGFzcz1cImhlYWRpbmctaDJcIj4je3sgZ2V0Q2FzZUlkKCkgfCBjY2RDYXNlUmVmZXJlbmNlIH19PC9oMj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIEdlbmVyaWMgZXJyb3IgaGVhZGluZyBhbmQgZXJyb3IgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgb25seSBpZiB0aGVyZSBhcmUgbm8gc3BlY2lmaWMgY2FsbGJhY2sgZXJyb3JzIG9yIHdhcm5pbmdzLCBvciBubyBlcnJvciBkZXRhaWxzIC0tPlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgKCEoZXJyb3IuY2FsbGJhY2tFcnJvcnMgfHwgZXJyb3IuY2FsbGJhY2tXYXJuaW5ncyB8fCBlcnJvci5kZXRhaWxzKSAmJiAhZXJyb3IubWVzc2FnZSlcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgIDxoMSBjbGFzcz1cImhlYWRpbmctaDEgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgICBTb21ldGhpbmcgd2VudCB3cm9uZ1xuICAgIDwvaDE+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWJvZHlcIj5cbiAgICAgIDxwPldlJ3JlIHdvcmtpbmcgdG8gZml4IHRoZSBwcm9ibGVtLiBUcnkgYWdhaW4gc2hvcnRseS48L3A+XG4gICAgICA8cD48YSBocmVmPVwiZ2V0LWhlbHBcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Db250YWN0IHVzPC9hPiBpZiB5b3UncmUgc3RpbGwgaGF2aW5nIHByb2JsZW1zLjwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gRXZlbnQgZXJyb3IgaGVhZGluZyBhbmQgZXJyb3IgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGVycm9yIGRldGFpbHMgLS0+XG4gIDxkaXYgKm5nSWY9XCJlcnJvciAmJiAoZXJyb3IuZGV0YWlscyB8fCBlcnJvci5tZXNzYWdlKVwiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeVwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgPGgzIGNsYXNzPVwiaGVhZGluZy1oMyBlcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIj5cbiAgICAgIFRoZSBldmVudCBjb3VsZCBub3QgYmUgY3JlYXRlZFxuICAgIDwvaDM+XG4gICAgPHA+e3tlcnJvci5tZXNzYWdlfX08L3A+XG4gICAgPHVsICpuZ0lmPVwiZXJyb3IuZGV0YWlscz8uZmllbGRfZXJyb3JzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5LWxpc3RcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZmllbGRFcnJvciBvZiBlcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiY2NkLWVycm9yLXN1bW1hcnktbGlcIj57e2ZpZWxkRXJyb3IubWVzc2FnZX19PC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPGNjZC1jYWxsYmFjay1lcnJvcnMgW2NhbGxiYWNrRXJyb3JzU3ViamVjdF09XCJjYWxsYmFja0Vycm9yc1N1YmplY3RcIlxuICAgICAgICAgICAgICAgICAgICAgIChjYWxsYmFja0Vycm9yc0NvbnRleHQpPVwiY2FsbGJhY2tFcnJvcnNOb3RpZnkoJGV2ZW50KVwiPjwvY2NkLWNhbGxiYWNrLWVycm9ycz5cblxuICA8Zm9ybSBjbGFzcz1cImNoZWNrLXlvdXItYW5zd2Vyc1wiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm1cIiAoc3VibWl0KT1cInN1Ym1pdCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoZWNrWW91ckFuc3dlckZpZWxkc1RvRGlzcGxheUV4aXN0cygpXCI+XG5cbiAgICAgIDxoMiBjbGFzcz1cImhlYWRpbmctaDJcIj5DaGVjayB5b3VyIGFuc3dlcnM8L2gyPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+Q2hlY2sgdGhlIGluZm9ybWF0aW9uIGJlbG93IGNhcmVmdWxseS48L3NwYW4+XG5cbiAgICAgIDx0YWJsZSBjbGFzcz1cImZvcm0tdGFibGVcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiY2hlY2sgeW91ciBhbnN3ZXJzIHRhYmxlXCI+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiB0aGlzLndpemFyZC5wYWdlc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Nob3duKHBhZ2UpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBwYWdlXG4gICAgICAgICAgICB8IGNjZFBhZ2VGaWVsZHM6IGVkaXRGb3JtXG4gICAgICAgICAgICB8IGNjZFJlYWRGaWVsZHNGaWx0ZXI6IGZhbHNlIDp1bmRlZmluZWQgOnRydWUgOiBlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXG4gICAgICAgICAgICB8IGNjZENZQVBhZ2VMYWJlbEZpbHRlclwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FuU2hvd0ZpZWxkSW5DWUEoZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgPHRyIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtoaWRkZW5dPVwiZmllbGQuaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2NvbnRleHRGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWlzTGFiZWwoZmllbGQpXCIgY2xhc3M9XCJ2YWxpZ24tdG9wIGNhc2UtZmllbGQtbGFiZWxcIj48c3BhbiBjbGFzcz1cInRleHQtMTZcIj57e2ZpZWxkLmxhYmVsfX08L3NwYW4+PC90aD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvcm0tY2VsbCBjYXNlLWZpZWxkLWNvbnRlbnRcIiBbYXR0ci5jb2xzcGFuXT1cImlzTGFiZWwoZmllbGQpID8gJzInIDogJzEnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZFxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCIgW2NvbnRleHRdPVwicGFsZXR0ZUNvbnRleHRcIiBbY2FzZUZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ2YWxpZ24tdG9wIGNoZWNrLXlvdXItYW5zd2Vyc19fY2hhbmdlIGNhc2UtZmllbGQtY2hhbmdlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwiaXNDaGFuZ2VBbGxvd2VkKGZpZWxkKVwiIChjbGljayk9XCJuYXZpZ2F0ZVRvUGFnZShwYWdlLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiPjxzcGFuIGNsYXNzPVwidGV4dC0xNlwiIGF0dHIuYXJpYS1sYWJlbD1cIkNoYW5nZSB7eyBmaWVsZC5sYWJlbCB9fVwiPkNoYW5nZTwvc3Bhbj48L2E+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVhZE9ubHlTdW1tYXJ5RmllbGRzVG9EaXNwbGF5RXhpc3RzKClcIj5cblxuICAgICAgPHRhYmxlIGNsYXNzPVwic3VtbWFyeS1maWVsZHNcIiBhcmlhLWRlc2NyaWJlZGJ5PVwic3VtbWFyeSBmaWVsZHMgdGFibGVcIj5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHRoaXMuc2hvd1N1bW1hcnlGaWVsZHNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgPHRyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCIgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2NvbnRleHRGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgPHRoIGlkPVwic3VtbWFyeS1maWVsZC1sYWJlbFwiPnt7ZmllbGQubGFiZWx9fTwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRdPVwic3VtbWFyeUNhc2VGaWVsZChmaWVsZClcIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIiBjbGFzcz1cImNvbXBvdW5kLWZpZWxkXCIgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2NvbnRleHRGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCIgW2Nhc2VGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RXZlbnROb3RlcygpXCI+XG4gICAgICA8ZmllbGRzZXQgaWQ9XCJmaWVsZHNldC1ldmVudFwiIGZvcm1Hcm91cE5hbWU9XCJldmVudFwiICpuZ0lmPVwicHJvZmlsZSAmJiAhaXNTb2xpY2l0b3IoKVwiPlxuICAgICAgICA8bGVnZW5kIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIj48L2xlZ2VuZD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmllbGQtdHJpZ2dlci1zdW1tYXJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XG4gICAgICAgICAgICBFdmVudCBzdW1tYXJ5IChvcHRpb25hbClcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+QSBmZXcgd29yZHMgZGVzY3JpYmluZyB0aGUgcHVycG9zZSBvZiB0aGUgZXZlbnQuPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgaWQ9XCJmaWVsZC10cmlnZ2VyLXN1bW1hcnlcIiBjbGFzcz1cImZvcm0tY29udHJvbCBib3R0b20tMzAgd2lkdGgtNTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzdW1tYXJ5XCIgbWF4bGVuZ3RoPVwiMTAyNFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiZmllbGQtdHJpZ2dlci1kZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkV2ZW50IGRlc2NyaXB0aW9uIChvcHRpb25hbCk8L2xhYmVsPlxuICAgICAgICAgIDx0ZXh0YXJlYSBpZD1cImZpZWxkLXRyaWdnZXItZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tY29udHJvbCBib3R0b20tMzAgd2lkdGgtNTBcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjY1NTM2XCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtcmVsYXRlZFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhaGFzUHJldmlvdXMoKSB8fCBpc1N1Ym1pdHRpbmdcIiAoY2xpY2spPVwicHJldmlvdXMoKVwiPlByZXZpb3VzPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiIGNsYXNzPVwiYnV0dG9uXCI+e3t0cmlnZ2VyVGV4dH19PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPHAgY2xhc3M9XCJjYW5jZWxcIj48YSAoY2xpY2spPVwiY2FuY2VsKClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgW2NsYXNzLmRpc2FibGVkXT1cImlzU3VibWl0dGluZ1wiPnt7Z2V0Q2FuY2VsVGV4dCgpfX08L2E+PC9wPlxuICA8L2Zvcm0+XG48L2Rpdj5cbjxjY2QtY2FzZS1ldmVudC1jb21wbGV0aW9uICpuZ0lmPVwiZXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWRcIlxuICBbZXZlbnRDb21wbGV0aW9uUGFyYW1zXT1cImV2ZW50Q29tcGxldGlvblBhcmFtc1wiXG4gIChldmVudENhbkJlQ29tcGxldGVkKT1cIm9uRXZlbnRDYW5CZUNvbXBsZXRlZCgkZXZlbnQpXCI+XG48L2NjZC1jYXNlLWV2ZW50LWNvbXBsZXRpb24+XG4iXX0=
@@ -185,4 +185,6 @@ CaseEditorModule.ɵinj = i0.ɵɵdefineInjector({ providers: [
185
185
  }]
186
186
  }], null, null); })();
187
187
  i0.ɵɵsetComponentScope(CaseEditSubmitComponent, [i1.NgIf, i2.MarkdownComponent, i1.NgForOf, i3.CallbackErrorsComponent, i4.ɵangular_packages_forms_forms_ba, i4.NgControlStatusGroup, i4.FormGroupDirective, i5.LabelSubstitutorDirective, i6.FieldReadComponent, i1.NgSwitch, i1.NgSwitchCase, i4.FormGroupName, i4.DefaultValueAccessor, i4.NgControlStatus, i4.FormControlName, i4.MaxLengthValidator, CaseEventCompletionComponent], [i7.CcdCaseTitlePipe, i8.CaseReferencePipe, i9.CcdCYAPageLabelFilterPipe, i10.ReadFieldsFilterPipe, i11.CcdPageFieldsPipe, i12.IsCompoundPipe]);
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsK0JBQStCLEVBQ2hDLE1BQU0sK0VBQStFLENBQUM7QUFDdkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDakYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtC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bkIsY0FBYztvQkFDZCxtQkFBbUI7b0JBQ25CLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQixpQkFBaUI7b0JBQ2pCLHFCQUFxQjtvQkFDckIsa0NBQWtDO2lCQUNyQzthQUNKOzt1QkE5Q08sdUJBQXVCLDRWQUN2Qiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Vycm9yJztcbmltcG9ydCB7IENvbmRpdGlvbmFsU2hvd01vZHVsZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29uZGl0aW9uYWwtc2hvdyc7XG5pbXBvcnQge1xuICBDb25kaXRpb25hbFNob3dSZWdpc3RyYXJTZXJ2aWNlXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29uZGl0aW9uYWwtc2hvdy9zZXJ2aWNlcy9jb25kaXRpb25hbC1zaG93LXJlZ2lzdHJhci5zZXJ2aWNlJztcbmltcG9ydCB7IExhYmVsU3Vic3RpdHV0b3JNb2R1bGUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3N1YnN0aXR1dG9yL2xhYmVsLXN1YnN0aXR1dG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBBZGRyZXNzZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWRkcmVzc2VzJztcbmltcG9ydCB7IENhc2VGaWVsZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXNlLWZpZWxkcy9jYXNlLWZpZWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybWF0VHJhbnNsYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXNlLWZpZWxkcy9mb3JtYXQtdHJhbnNsYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb2N1bWVudC1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEZpZWxkc1B1cmdlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMucHVyZ2VyJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmllbGRzL2ZpZWxkcy51dGlscyc7XG5pbXBvcnQgeyBGaWVsZFR5cGVTYW5pdGlzZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtL2ZpZWxkLXR5cGUtc2FuaXRpc2VyJztcbmltcG9ydCB7IEZvcm1FcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtL2Zvcm0tZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtVmFsdWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS9mb3JtLXZhbHVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwL2h0dHAuc2VydmljZSc7XG5pbXBvcnQgeyBPcmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlci9vcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2ZpbGVOb3RpZmllciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2ZpbGUvcHJvZmlsZS5ub3RpZmllcic7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2ZpbGUvcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlckhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yb3V0ZXInO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2Vzc2lvbi9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvcnNNb2R1bGUgfSBmcm9tICcuLi9lcnJvci9lcnJvcnMubW9kdWxlJztcbmltcG9ydCB7IExvYWRpbmdTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGluZy1zcGlubmVyL2xvYWRpbmctc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFsZXR0ZU1vZHVsZSB9IGZyb20gJy4uL3BhbGV0dGUvcGFsZXR0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgQ2FzZUNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1jcmVhdGUvY2FzZS1jcmVhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0Q29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1lZGl0LWNvbmZpcm0vY2FzZS1lZGl0LWNvbmZpcm0uY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1lZGl0LWZvcm0vY2FzZS1lZGl0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0UGFnZUNvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1lZGl0LXBhZ2UvY2FzZS1lZGl0LXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0U3VibWl0Q29tcG9uZW50IH0gZnJvbSAnLi9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi9jYXNlLWVkaXQvY2FzZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDYXNlRXZlbnRDb21wbGV0aW9uQ29tcG9uZW50LFxuICBDYXNlRXZlbnRDb21wbGV0aW9uVGFza0NhbmNlbGxlZENvbXBvbmVudCxcbiAgQ2FzZUV2ZW50Q29tcGxldGlvblRhc2tSZWFzc2lnbmVkQ29tcG9uZW50XG59IGZyb20gJy4vY2FzZS1ldmVudC1jb21wbGV0aW9uJztcbmltcG9ydCB7IENhc2VQcm9ncmVzc0NvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1wcm9ncmVzcy9jYXNlLXByb2dyZXNzLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBFdmVudENvbXBsZXRpb25TdGF0ZU1hY2hpbmVTZXJ2aWNlLFxuICBFdmVudFRyaWdnZXJTZXJ2aWNlLFxuICBKdWRpY2lhbHdvcmtlclNlcnZpY2UsXG4gIFBhZ2VWYWxpZGF0aW9uU2VydmljZSxcbiAgV2l6YXJkRmFjdG9yeVNlcnZpY2UsXG4gIFdvcmtBbGxvY2F0aW9uU2VydmljZVxufSBmcm9tICcuL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VFZGl0V2l6YXJkR3VhcmQgfSBmcm9tICcuL3NlcnZpY2VzL2Nhc2UtZWRpdC13aXphcmQuZ3VhcmQnO1xuaW1wb3J0IHsgQ2FzZXdvcmtlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Nhc2Utd29ya2VyLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBQYWxldHRlTW9kdWxlLFxuICAgICAgICBMYWJlbFN1YnN0aXR1dG9yTW9kdWxlLFxuICAgICAgICBDb25kaXRpb25hbFNob3dNb2R1bGUsXG4gICAgICAgIEVycm9yc01vZHVsZSxcbiAgICAgICAgUG9ydGFsTW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgQ2FzZUVkaXRDb25maXJtQ29tcG9uZW50LFxuICAgICAgICBDYXNlRWRpdENvbXBvbmVudCxcbiAgICAgICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LFxuICAgICAgICBDYXNlRWRpdEZvcm1Db21wb25lbnQsXG4gICAgICAgIENhc2VFZGl0U3VibWl0Q29tcG9uZW50LFxuICAgICAgICBDYXNlRXZlbnRDb21wbGV0aW9uQ29tcG9uZW50LFxuICAgICAgICBDYXNlRXZlbnRDb21wbGV0aW9uVGFza0NhbmNlbGxlZENvbXBvbmVudCxcbiAgICAgICAgQ2FzZUV2ZW50Q29tcGxldGlvblRhc2tSZWFzc2lnbmVkQ29tcG9uZW50LFxuICAgICAgICBDYXNlQ3JlYXRlQ29tcG9uZW50LFxuICAgICAgICBDYXNlUHJvZ3Jlc3NDb21wb25lbnQsXG4gICAgICAgIExvYWRpbmdTcGlubmVyQ29tcG9uZW50XG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIENhc2VFZGl0Q29uZmlybUNvbXBvbmVudCxcbiAgICAgICAgQ2FzZUVkaXRDb21wb25lbnQsXG4gICAgICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudCxcbiAgICAgICAgQ2FzZUVkaXRGb3JtQ29tcG9uZW50LFxuICAgICAgICBDYXNlRWRpdFN1Ym1pdENvbXBvbmVudCxcbiAgICAgICAgQ2FzZUNyZWF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FzZVByb2dyZXNzQ29tcG9uZW50LFxuICAgICAgICBDYWxsYmFja0Vycm9yc0NvbXBvbmVudCxcbiAgICAgICAgTG9hZGluZ1NwaW5uZXJDb21wb25lbnRcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBGaWVsZHNVdGlscyxcbiAgICAgICAgRmllbGRzUHVyZ2VyLFxuICAgICAgICBDb25kaXRpb25hbFNob3dSZWdpc3RyYXJTZXJ2aWNlLFxuICAgICAgICBXaXphcmRGYWN0b3J5U2VydmljZSxcbiAgICAgICAgRmllbGRUeXBlU2FuaXRpc2VyLFxuICAgICAgICBGb3JtVmFsdWVTZXJ2aWNlLFxuICAgICAgICBGb3JtRXJyb3JTZXJ2aWNlLFxuICAgICAgICBGb3JtYXRUcmFuc2xhdG9yU2VydmljZSxcbiAgICAgICAgSHR0cFNlcnZpY2UsXG4gICAgICAgIFBhZ2VWYWxpZGF0aW9uU2VydmljZSxcbiAgICAgICAgQ2FzZUZpZWxkU2VydmljZSxcbiAgICAgICAgT3JkZXJTZXJ2aWNlLFxuICAgICAgICBFdmVudFRyaWdnZXJTZXJ2aWNlLFxuICAgICAgICBQcm9maWxlU2VydmljZSxcbiAgICAgICAgUHJvZmlsZU5vdGlmaWVyLFxuICAgICAgICBBZGRyZXNzZXNTZXJ2aWNlLFxuICAgICAgICBEb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgICAgICBSb3V0ZXJIZWxwZXJTZXJ2aWNlLFxuICAgICAgICBQcm9maWxlU2VydmljZSxcbiAgICAgICAgQ2FzZUVkaXRXaXphcmRHdWFyZCxcbiAgICAgICAgV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgICAgICBKdWRpY2lhbHdvcmtlclNlcnZpY2UsXG4gICAgICAgIENhc2V3b3JrZXJTZXJ2aWNlLFxuICAgICAgICBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgICAgIEV2ZW50Q29tcGxldGlvblN0YXRlTWFjaGluZVNlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENhc2VFZGl0b3JNb2R1bGUge31cbiJdfQ==
188
+ i0.ɵɵsetComponentScope(CaseCreateComponent, [i1.NgIf, CaseEditComponent], []);
189
+ i0.ɵɵsetComponentScope(CaseProgressComponent, [i1.NgIf, CaseEditComponent], []);
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsK0JBQStCLEVBQ2hDLE1BQU0sK0VBQStFLENBQUM7QUFDdkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDakYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtC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bkIsY0FBYztvQkFDZCxtQkFBbUI7b0JBQ25CLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQixpQkFBaUI7b0JBQ2pCLHFCQUFxQjtvQkFDckIsa0NBQWtDO2lCQUNyQzthQUNKOzt1QkE5Q08sdUJBQXVCLDRWQUN2Qiw0QkFBNEI7dUJBRzVCLG1CQUFtQixZQVBuQixpQkFBaUI7dUJBUWpCLHFCQUFxQixZQVJyQixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Vycm9yJztcbmltcG9ydCB7IENvbmRpdGlvbmFsU2hvd01vZHVsZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29uZGl0aW9uYWwtc2hvdyc7XG5pbXBvcnQge1xuICBDb25kaXRpb25hbFNob3dSZWdpc3RyYXJTZXJ2aWNlXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29uZGl0aW9uYWwtc2hvdy9zZXJ2aWNlcy9jb25kaXRpb25hbC1zaG93LXJlZ2lzdHJhci5zZXJ2aWNlJztcbmltcG9ydCB7IExhYmVsU3Vic3RpdHV0b3JNb2R1bGUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3N1YnN0aXR1dG9yL2xhYmVsLXN1YnN0aXR1dG9yLm1vZHVsZSc7XG5pbXBvcnQgeyBBZGRyZXNzZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWRkcmVzc2VzJztcbmltcG9ydCB7IENhc2VGaWVsZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXNlLWZpZWxkcy9jYXNlLWZpZWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybWF0VHJhbnNsYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXNlLWZpZWxkcy9mb3JtYXQtdHJhbnNsYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kb2N1bWVudC1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEZpZWxkc1B1cmdlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMucHVyZ2VyJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmllbGRzL2ZpZWxkcy51dGlscyc7XG5pbXBvcnQgeyBGaWVsZFR5cGVTYW5pdGlzZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtL2ZpZWxkLXR5cGUtc2FuaXRpc2VyJztcbmltcG9ydCB7IEZvcm1FcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtL2Zvcm0tZXJyb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtVmFsdWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS9mb3JtLXZhbHVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9odHRwL2h0dHAuc2VydmljZSc7XG5pbXBvcnQgeyBPcmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlci9vcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2ZpbGVOb3RpZmllciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2ZpbGUvcHJvZmlsZS5ub3RpZmllcic7XG5pbXBvcnQgeyBQcm9maWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2ZpbGUvcHJvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlckhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yb3V0ZXInO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2Vzc2lvbi9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvcnNNb2R1bGUgfSBmcm9tICcuLi9lcnJvci9lcnJvcnMubW9kdWxlJztcbmltcG9ydCB7IExvYWRpbmdTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGluZy1zcGlubmVyL2xvYWRpbmctc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFsZXR0ZU1vZHVsZSB9IGZyb20gJy4uL3BhbGV0dGUvcGFsZXR0ZS5tb2R1bGUnO1xuaW1wb3J0IHsgQ2FzZUNyZWF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1jcmVhdGUvY2FzZS1jcmVhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0Q29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1lZGl0LWNvbmZpcm0vY2FzZS1lZGl0LWNvbmZpcm0uY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1lZGl0LWZvcm0vY2FzZS1lZGl0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0UGFnZUNvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1lZGl0LXBhZ2UvY2FzZS1lZGl0LXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0U3VibWl0Q29tcG9uZW50IH0gZnJvbSAnLi9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi9jYXNlLWVkaXQvY2FzZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDYXNlRXZlbnRDb21wbGV0aW9uQ29tcG9uZW50LFxuICBDYXNlRXZlbnRDb21wbGV0aW9uVGFza0NhbmNlbGxlZENvbXBvbmVudCxcbiAgQ2FzZUV2ZW50Q29tcGxldGlvblRhc2tSZWFzc2lnbmVkQ29tcG9uZW50XG59IGZyb20gJy4vY2FzZS1ldmVudC1jb21wbGV0aW9uJztcbmltcG9ydCB7IENhc2VQcm9ncmVzc0NvbXBvbmVudCB9IGZyb20gJy4vY2FzZS1wcm9ncmVzcy9jYXNlLXByb2dyZXNzLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBFdmVudENvbXBsZXRpb25TdGF0ZU1hY2hpbmVTZXJ2aWNlLFxuICBFdmVudFRyaWdnZXJTZXJ2aWNlLFxuICBKdWRpY2lhbHdvcmtlclNlcnZpY2UsXG4gIFBhZ2VWYWxpZGF0aW9uU2VydmljZSxcbiAgV2l6YXJkRmFjdG9yeVNlcnZpY2UsXG4gIFdvcmtBbGxvY2F0aW9uU2VydmljZVxufSBmcm9tICcuL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VFZGl0V2l6YXJkR3VhcmQgfSBmcm9tICcuL3NlcnZpY2VzL2Nhc2UtZWRpdC13aXphcmQuZ3VhcmQnO1xuaW1wb3J0IHsgQ2FzZXdvcmtlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Nhc2Utd29ya2VyLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBQYWxldHRlTW9kdWxlLFxuICAgICAgICBMYWJlbFN1YnN0aXR1dG9yTW9kdWxlLFxuICAgICAgICBDb25kaXRpb25hbFNob3dNb2R1bGUsXG4gICAgICAgIEVycm9yc01vZHVsZSxcbiAgICAgICAgUG9ydGFsTW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgQ2FzZUVkaXRDb25maXJtQ29tcG9uZW50LFxuICAgICAgICBDYXNlRWRpdENvbXBvbmVudCxcbiAgICAgICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LFxuICAgICAgICBDYXNlRWRpdEZvcm1Db21wb25lbnQsXG4gICAgICAgIENhc2VFZGl0U3VibWl0Q29tcG9uZW50LFxuICAgICAgICBDYXNlRXZlbnRDb21wbGV0aW9uQ29tcG9uZW50LFxuICAgICAgICBDYXNlRXZlbnRDb21wbGV0aW9uVGFza0NhbmNlbGxlZENvbXBvbmVudCxcbiAgICAgICAgQ2FzZUV2ZW50Q29tcGxldGlvblRhc2tSZWFzc2lnbmVkQ29tcG9uZW50LFxuICAgICAgICBDYXNlQ3JlYXRlQ29tcG9uZW50LFxuICAgICAgICBDYXNlUHJvZ3Jlc3NDb21wb25lbnQsXG4gICAgICAgIExvYWRpbmdTcGlubmVyQ29tcG9uZW50XG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIENhc2VFZGl0Q29uZmlybUNvbXBvbmVudCxcbiAgICAgICAgQ2FzZUVkaXRDb21wb25lbnQsXG4gICAgICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudCxcbiAgICAgICAgQ2FzZUVkaXRGb3JtQ29tcG9uZW50LFxuICAgICAgICBDYXNlRWRpdFN1Ym1pdENvbXBvbmVudCxcbiAgICAgICAgQ2FzZUNyZWF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FzZVByb2dyZXNzQ29tcG9uZW50LFxuICAgICAgICBDYWxsYmFja0Vycm9yc0NvbXBvbmVudCxcbiAgICAgICAgTG9hZGluZ1NwaW5uZXJDb21wb25lbnRcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBGaWVsZHNVdGlscyxcbiAgICAgICAgRmllbGRzUHVyZ2VyLFxuICAgICAgICBDb25kaXRpb25hbFNob3dSZWdpc3RyYXJTZXJ2aWNlLFxuICAgICAgICBXaXphcmRGYWN0b3J5U2VydmljZSxcbiAgICAgICAgRmllbGRUeXBlU2FuaXRpc2VyLFxuICAgICAgICBGb3JtVmFsdWVTZXJ2aWNlLFxuICAgICAgICBGb3JtRXJyb3JTZXJ2aWNlLFxuICAgICAgICBGb3JtYXRUcmFuc2xhdG9yU2VydmljZSxcbiAgICAgICAgSHR0cFNlcnZpY2UsXG4gICAgICAgIFBhZ2VWYWxpZGF0aW9uU2VydmljZSxcbiAgICAgICAgQ2FzZUZpZWxkU2VydmljZSxcbiAgICAgICAgT3JkZXJTZXJ2aWNlLFxuICAgICAgICBFdmVudFRyaWdnZXJTZXJ2aWNlLFxuICAgICAgICBQcm9maWxlU2VydmljZSxcbiAgICAgICAgUHJvZmlsZU5vdGlmaWVyLFxuICAgICAgICBBZGRyZXNzZXNTZXJ2aWNlLFxuICAgICAgICBEb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgICAgICBSb3V0ZXJIZWxwZXJTZXJ2aWNlLFxuICAgICAgICBQcm9maWxlU2VydmljZSxcbiAgICAgICAgQ2FzZUVkaXRXaXphcmRHdWFyZCxcbiAgICAgICAgV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgICAgICBKdWRpY2lhbHdvcmtlclNlcnZpY2UsXG4gICAgICAgIENhc2V3b3JrZXJTZXJ2aWNlLFxuICAgICAgICBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgICAgIEV2ZW50Q29tcGxldGlvblN0YXRlTWFjaGluZVNlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENhc2VFZGl0b3JNb2R1bGUge31cbiJdfQ==