@alfresco/aca-content 5.2.0 → 5.3.0-11955434723

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 (80) hide show
  1. package/esm2022/folder-rules/manage-rules/manage-rules.smart-component.mjs +13 -17
  2. package/esm2022/folder-rules/rule-details/actions/rule-action.ui-component.mjs +9 -12
  3. package/esm2022/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.mjs +8 -12
  4. package/esm2022/folder-rules/rule-details/rule-details.ui-component.mjs +8 -12
  5. package/esm2022/folder-rules/rule-list/rule-list/rule-list.ui-component.mjs +5 -7
  6. package/esm2022/folder-rules/rule-set-picker/rule-set-picker.smart-component.mjs +7 -10
  7. package/esm2022/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.mjs +8 -11
  8. package/esm2022/lib/components/common/toggle-shared/toggle-shared.component.mjs +6 -11
  9. package/esm2022/lib/components/context-menu/context-menu-outside-event.directive.mjs +7 -12
  10. package/esm2022/lib/components/context-menu/context-menu.component.mjs +2 -2
  11. package/esm2022/lib/components/details/details.component.mjs +4 -3
  12. package/esm2022/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.mjs +5 -10
  13. package/esm2022/lib/components/dl-custom-components/name-column/name-column.component.mjs +8 -12
  14. package/esm2022/lib/components/files/files.component.mjs +9 -8
  15. package/esm2022/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.mjs +12 -15
  16. package/esm2022/lib/components/info-drawer/metadata-tab/metadata-tab.component.mjs +12 -16
  17. package/esm2022/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.mjs +7 -10
  18. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.mjs +6 -11
  19. package/esm2022/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.mjs +5 -8
  20. package/esm2022/lib/components/search/search-input/search-input.component.mjs +6 -9
  21. package/esm2022/lib/components/search/search-input-control/search-input-control.component.mjs +2 -8
  22. package/esm2022/lib/components/search/search-libraries-results/search-libraries-results.component.mjs +3 -3
  23. package/esm2022/lib/components/search/search-results/search-results.component.mjs +2 -3
  24. package/esm2022/lib/components/search/search-results-row/search-results-row.component.mjs +7 -11
  25. package/esm2022/lib/components/search/search-save/sidenav/save-search-sidenav.component.mjs +5 -10
  26. package/esm2022/lib/components/shared-link-view/shared-link-view.component.mjs +8 -11
  27. package/esm2022/lib/components/sidenav/components/sidenav-header.component.mjs +5 -10
  28. package/esm2022/lib/components/sidenav/directives/active-link.directive.mjs +6 -6
  29. package/esm2022/lib/components/sidenav/directives/expansion-panel.directive.mjs +7 -11
  30. package/esm2022/lib/components/sidenav/directives/menu-panel.directive.mjs +7 -11
  31. package/esm2022/lib/components/sidenav/sidenav.component.mjs +9 -13
  32. package/esm2022/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.mjs +6 -10
  33. package/esm2022/lib/components/upload-files-dialog/upload-files-dialog.component.mjs +4 -9
  34. package/esm2022/lib/components/view-profile/view-profile.component.mjs +4 -9
  35. package/esm2022/lib/directives/document-list.directive.mjs +8 -12
  36. package/esm2022/viewer/lib/components/preview/preview.component.mjs +9 -11
  37. package/esm2022/viewer/lib/components/viewer/viewer.component.mjs +15 -16
  38. package/fesm2022/alfresco-aca-content-folder-rules.mjs +27 -49
  39. package/fesm2022/alfresco-aca-content-folder-rules.mjs.map +1 -1
  40. package/fesm2022/alfresco-aca-content-viewer.mjs +16 -20
  41. package/fesm2022/alfresco-aca-content-viewer.mjs.map +1 -1
  42. package/fesm2022/alfresco-aca-content.mjs +73 -168
  43. package/fesm2022/alfresco-aca-content.mjs.map +1 -1
  44. package/folder-rules/manage-rules/manage-rules.smart-component.d.ts +3 -5
  45. package/folder-rules/rule-details/actions/rule-action.ui-component.d.ts +4 -5
  46. package/folder-rules/rule-details/conditions/rule-simple-condition.ui-component.d.ts +3 -4
  47. package/folder-rules/rule-details/rule-details.ui-component.d.ts +4 -5
  48. package/folder-rules/rule-list/rule-list/rule-list.ui-component.d.ts +3 -4
  49. package/folder-rules/rule-set-picker/rule-set-picker.smart-component.d.ts +3 -5
  50. package/lib/components/bulk-actions-dropdown/bulk-actions-dropdown.component.d.ts +3 -4
  51. package/lib/components/common/toggle-shared/toggle-shared.component.d.ts +4 -5
  52. package/lib/components/context-menu/context-menu-outside-event.directive.d.ts +3 -4
  53. package/lib/components/context-menu/context-menu.component.d.ts +1 -1
  54. package/lib/components/details/details.component.d.ts +1 -2
  55. package/lib/components/dl-custom-components/datatable-cell-badges/datatable-cell-badges.component.d.ts +3 -4
  56. package/lib/components/dl-custom-components/name-column/name-column.component.d.ts +3 -4
  57. package/lib/components/files/files.component.d.ts +1 -1
  58. package/lib/components/info-drawer/library-metadata-tab/library-metadata-form.component.d.ts +4 -6
  59. package/lib/components/info-drawer/metadata-tab/metadata-tab.component.d.ts +6 -7
  60. package/lib/components/knowledge-retrieval/search-ai/agents-button/agents-button.component.d.ts +3 -4
  61. package/lib/components/knowledge-retrieval/search-ai/search-ai-input/search-ai-input.component.d.ts +3 -4
  62. package/lib/components/knowledge-retrieval/search-ai/search-ai-results/search-ai-results.component.d.ts +2 -3
  63. package/lib/components/search/search-input/search-input.component.d.ts +1 -2
  64. package/lib/components/search/search-input-control/search-input-control.component.d.ts +2 -5
  65. package/lib/components/search/search-results/search-results.component.d.ts +0 -1
  66. package/lib/components/search/search-results-row/search-results-row.component.d.ts +3 -4
  67. package/lib/components/search/search-save/sidenav/save-search-sidenav.component.d.ts +3 -5
  68. package/lib/components/shared-link-view/shared-link-view.component.d.ts +4 -5
  69. package/lib/components/sidenav/components/sidenav-header.component.d.ts +3 -4
  70. package/lib/components/sidenav/directives/active-link.directive.d.ts +1 -1
  71. package/lib/components/sidenav/directives/expansion-panel.directive.d.ts +3 -4
  72. package/lib/components/sidenav/directives/menu-panel.directive.d.ts +3 -4
  73. package/lib/components/sidenav/sidenav.component.d.ts +3 -4
  74. package/lib/components/toolbar/toggle-favorite-library/toggle-favorite-library.component.d.ts +3 -4
  75. package/lib/components/upload-files-dialog/upload-files-dialog.component.d.ts +1 -27
  76. package/lib/components/view-profile/view-profile.component.d.ts +2 -4
  77. package/lib/directives/document-list.directive.d.ts +3 -5
  78. package/package.json +5 -5
  79. package/viewer/lib/components/preview/preview.component.d.ts +3 -4
  80. package/viewer/lib/components/viewer/viewer.component.d.ts +2 -2
@@ -21,7 +21,7 @@
21
21
  * You should have received a copy of the GNU Lesser General Public License
22
22
  * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
23
23
  */
24
- import { Component, Input, ViewEncapsulation } from '@angular/core';
24
+ import { Component, DestroyRef, inject, Input, ViewEncapsulation } from '@angular/core';
25
25
  import { CommonModule } from '@angular/common';
26
26
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
27
27
  import { MatButtonModule } from '@angular/material/button';
@@ -31,15 +31,14 @@ import { MatInputModule } from '@angular/material/input';
31
31
  import { A11yModule } from '@angular/cdk/a11y';
32
32
  import { AvatarComponent, IconComponent, NotificationService, UserPreferencesService } from '@alfresco/adf-core';
33
33
  import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
34
- import { Subject } from 'rxjs';
35
34
  import { Store } from '@ngrx/store';
36
35
  import { getAppSelection, SearchByTermAiAction, ToggleAISearchInput } from '@alfresco/aca-shared/store';
37
- import { takeUntil } from 'rxjs/operators';
38
36
  import { MatSelectModule } from '@angular/material/select';
39
37
  import { AgentService, SearchAiService } from '@alfresco/adf-content-services';
40
38
  import { MatCardModule } from '@angular/material/card';
41
39
  import { MAT_TOOLTIP_DEFAULT_OPTIONS, MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY, MatTooltipModule } from '@angular/material/tooltip';
42
40
  import { ModalAiService } from '../../../../services/modal-ai.service';
41
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
43
42
  import * as i0 from "@angular/core";
44
43
  import * as i1 from "@ngrx/store";
45
44
  import * as i2 from "@alfresco/adf-content-services";
@@ -73,7 +72,6 @@ class SearchAiInputComponent {
73
72
  storedNodesKey = 'knowledgeRetrievalNodes';
74
73
  _agentControl = new FormControl(null);
75
74
  _agents = [];
76
- onDestroy$ = new Subject();
77
75
  selectedNodesState;
78
76
  _queryControl = new FormControl('');
79
77
  _initialsByAgentId = {};
@@ -89,6 +87,7 @@ class SearchAiInputComponent {
89
87
  get initialsByAgentId() {
90
88
  return this._initialsByAgentId;
91
89
  }
90
+ destroyRef = inject(DestroyRef);
92
91
  constructor(store, searchAiService, notificationService, agentService, userPreferencesService, translateService, modalAiService) {
93
92
  this.store = store;
94
93
  this.searchAiService = searchAiService;
@@ -104,7 +103,7 @@ class SearchAiInputComponent {
104
103
  if (!this.usedInAiResultsPage) {
105
104
  this.store
106
105
  .select(getAppSelection)
107
- .pipe(takeUntil(this.onDestroy$))
106
+ .pipe(takeUntilDestroyed(this.destroyRef))
108
107
  .subscribe((selection) => {
109
108
  this.selectedNodesState = selection;
110
109
  });
@@ -114,7 +113,7 @@ class SearchAiInputComponent {
114
113
  }
115
114
  this.agentService
116
115
  .getAgents()
117
- .pipe(takeUntil(this.onDestroy$))
116
+ .pipe(takeUntilDestroyed(this.destroyRef))
118
117
  .subscribe((agents) => {
119
118
  this._agents = agents;
120
119
  this.agentControl.setValue(this._agents.find((agent) => agent.id === this.agentId));
@@ -125,10 +124,6 @@ class SearchAiInputComponent {
125
124
  }, {});
126
125
  }, () => this.notificationService.showError(this.translateService.instant('KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.AGENTS_FETCHING')));
127
126
  }
128
- ngOnDestroy() {
129
- this.onDestroy$.next();
130
- this.onDestroy$.complete();
131
- }
132
127
  onSearchSubmit() {
133
128
  this.modalAiService.openUnsavedChangesModal(() => this.search());
134
129
  }
@@ -178,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
178
173
  }], searchTerm: [{
179
174
  type: Input
180
175
  }] } });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktaW5wdXQvc2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktaW5wdXQvc2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakgsT0FBTyxFQUFFLFdBQVcs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QUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ25HO0lBQ0gsQ0FBQzt1R0F2R1Usc0JBQXNCOzJGQUF0QixzQkFBc0Isb01BRnRCLENBQUMsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUMsMEJDOUVwRixtMEZBNkRBLHduSURGSSxZQUFZLDJKQUNaLGVBQWUsMkZBQ2YsZUFBZSwyUUFDZixhQUFhLDhCQUNiLGtCQUFrQiw4QkFDbEIsY0FBYywwV0FDZCxVQUFVLDhCQUNWLFdBQVcsc1pBQ1gsbUJBQW1CLGlOQUNuQixlQUFlLDZZQUNmLGFBQWEsNEZBQ2IsZUFBZSxnSEFDZixhQUFhLHlVQUNiLGdCQUFnQjs7U0FRUCxzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkF4QmxDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQixZQUNTLHFCQUFxQixpQkFHaEIsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDO3dSQUlsRixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQsIEljb25Db21wb25lbnQsIE5vdGlmaWNhdGlvblNlcnZpY2UsIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBaVNlYXJjaEJ5VGVybVBheWxvYWQsIEFwcFN0b3JlLCBnZXRBcHBTZWxlY3Rpb24sIFNlYXJjaEJ5VGVybUFpQWN0aW9uLCBUb2dnbGVBSVNlYXJjaElucHV0IH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU3RhdGUgfSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IEFnZW50U2VydmljZSwgU2VhcmNoQWlTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7XG4gIE1BVF9UT09MVElQX0RFRkFVTFRfT1BUSU9OUyxcbiAgTUFUX1RPT0xUSVBfREVGQVVMVF9PUFRJT05TX0ZBQ1RPUlksXG4gIE1hdFRvb2x0aXBEZWZhdWx0T3B0aW9ucyxcbiAgTWF0VG9vbHRpcE1vZHVsZVxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1vZGFsQWlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvbW9kYWwtYWkuc2VydmljZSc7XG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuXG5jb25zdCBNYXRUb29sdGlwT3B0aW9uczogTWF0VG9vbHRpcERlZmF1bHRPcHRpb25zID0ge1xuICAuLi5NQVRfVE9PTFRJUF9ERUZBVUxUX09QVElPTlNfRkFDVE9SWSgpLFxuICBkaXNhYmxlVG9vbHRpcEludGVyYWN0aXZpdHk6IHRydWVcbn07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIEF2YXRhckNvbXBvbmVudCxcbiAgICBNYXRDYXJkTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGVcbiAgXSxcbiAgc2VsZWN0b3I6ICdhY2Etc2VhcmNoLWFpLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1haS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1haS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1BVF9UT09MVElQX0RFRkFVTFRfT1BUSU9OUywgdXNlVmFsdWU6IE1hdFRvb2x0aXBPcHRpb25zIH1dXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEFpSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgYWdlbnRJZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHVzZWRJbkFpUmVzdWx0c1BhZ2U6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmVkTm9kZXNLZXkgPSAna25vd2xlZGdlUmV0cmlldmFsTm9kZXMnO1xuXG4gIHByaXZhdGUgX2FnZW50Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxBZ2VudD4obnVsbCk7XG4gIHByaXZhdGUgX2FnZW50czogQWdlbnRbXSA9IFtdO1xuICBwcml2YXRlIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHNlbGVjdGVkTm9kZXNTdGF0ZTogU2VsZWN0aW9uU3RhdGU7XG4gIHByaXZhdGUgX3F1ZXJ5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHByaXZhdGUgX2luaXRpYWxzQnlBZ2VudElkOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgZ2V0IGFnZW50Q29udHJvbCgpOiBGb3JtQ29udHJvbDxBZ2VudD4ge1xuICAgIHJldHVybiB0aGlzLl9hZ2VudENvbnRyb2w7XG4gIH1cblxuICBnZXQgYWdlbnRzKCk6IEFnZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9hZ2VudHM7XG4gIH1cblxuICBnZXQgcXVlcnlDb250cm9sKCk6IEZvcm1Db250cm9sPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeUNvbnRyb2w7XG4gIH1cblxuICBnZXQgaW5pdGlhbHNCeUFnZW50SWQoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxzQnlBZ2VudElkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByaXZhdGUgc2VhcmNoQWlTZXJ2aWNlOiBTZWFyY2hBaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZXNTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsQWlTZXJ2aWNlOiBNb2RhbEFpU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgcXVlcnlWYWx1ZSA9IHRoaXMudXNlZEluQWlSZXN1bHRzUGFnZSA/ICcnIDogdGhpcy5zZWFyY2hUZXJtIHx8ICcnO1xuICAgIHRoaXMucXVlcnlDb250cm9sLnNldFZhbHVlKHF1ZXJ5VmFsdWUpO1xuXG4gICAgaWYgKCF0aGlzLnVzZWRJbkFpUmVzdWx0c1BhZ2UpIHtcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChnZXRBcHBTZWxlY3Rpb24pXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXNTdGF0ZSA9IHNlbGVjdGlvbjtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWROb2Rlc1N0YXRlID0gSlNPTi5wYXJzZSh0aGlzLnVzZXJQcmVmZXJlbmNlc1NlcnZpY2UuZ2V0KHRoaXMuc3RvcmVkTm9kZXNLZXkpKTtcbiAgICB9XG5cbiAgICB0aGlzLmFnZW50U2VydmljZVxuICAgICAgLmdldEFnZW50cygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChhZ2VudHMpID0+IHtcbiAgICAgICAgICB0aGlzLl9hZ2VudHMgPSBhZ2VudHM7XG5cbiAgICAgICAgICB0aGlzLmFnZW50Q29udHJvbC5zZXRWYWx1ZSh0aGlzLl9hZ2VudHMuZmluZCgoYWdlbnQpID0+IGFnZW50LmlkID09PSB0aGlzLmFnZW50SWQpKTtcbiAgICAgICAgICB0aGlzLl9pbml0aWFsc0J5QWdlbnRJZCA9IHRoaXMuYWdlbnRzLnJlZHVjZSgoaW5pdGlhbHMsIGFnZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3b3JkcyA9IGFnZW50Lm5hbWUuc3BsaXQoJyAnKS5maWx0ZXIoKHdvcmQpID0+ICF3b3JkLm1hdGNoKC9bXmEtekEtWl0rL2cpKTtcbiAgICAgICAgICAgIGluaXRpYWxzW2FnZW50LmlkXSA9IGAke3dvcmRzWzBdWzBdfSR7d29yZHNbMV0/LlswXSB8fCAnJ31gO1xuICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxzO1xuICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4gdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcih0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guRVJST1JTLkFHRU5UU19GRVRDSElORycpKVxuICAgICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBvblNlYXJjaFN1Ym1pdCgpIHtcbiAgICB0aGlzLm1vZGFsQWlTZXJ2aWNlLm9wZW5VbnNhdmVkQ2hhbmdlc01vZGFsKCgpID0+IHRoaXMuc2VhcmNoKCkpO1xuICB9XG5cbiAgc2VhcmNoKCkge1xuICAgIGNvbnN0IGVycm9yID0gdGhpcy5zZWFyY2hBaVNlcnZpY2UuY2hlY2tTZWFyY2hBdmFpbGFiaWxpdHkodGhpcy5zZWxlY3RlZE5vZGVzU3RhdGUpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcihlcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBheWxvYWQ6IEFpU2VhcmNoQnlUZXJtUGF5bG9hZCA9IHtcbiAgICAgICAgc2VhcmNoVGVybTogdGhpcy5xdWVyeUNvbnRyb2wudmFsdWUsXG4gICAgICAgIGFnZW50SWQ6IHRoaXMuYWdlbnRDb250cm9sLnZhbHVlLmlkXG4gICAgICB9O1xuICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLnNldCh0aGlzLnN0b3JlZE5vZGVzS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkTm9kZXNTdGF0ZSkpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2VhcmNoQnlUZXJtQWlBY3Rpb24ocGF5bG9hZCkpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVG9nZ2xlQUlTZWFyY2hJbnB1dCh0aGlzLmFnZW50Q29udHJvbC52YWx1ZS5pZCwgdGhpcy5xdWVyeUNvbnRyb2wudmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LWNvbnRhaW5lclwiPlxuICA8bWF0LXNlbGVjdFxuICAgIFtmb3JtQ29udHJvbF09XCJhZ2VudENvbnRyb2xcIlxuICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1zZWxlY3RcIlxuICAgIHBhbmVsQ2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXNlbGVjdC1vcHRpb25zIGFjYS1zZWFyY2gtYWktaW5wdXQtYWdlbnQtc2VsZWN0LWFnZW50c1wiXG4gICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWNhLXNlYXJjaC1haS1hZ2VudHMtc2VsZWN0XCJcbiAgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiPlxuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXNlbGVjdC1kaXNwbGF5ZWQtdmFsdWVcIj5cbiAgICAgIDxhZGYtYXZhdGFyXG4gICAgICAgIFtzcmNdPVwiYWdlbnRDb250cm9sLnZhbHVlPy5hdmF0YXJVcmxcIlxuICAgICAgICBbaW5pdGlhbHNdPVwiaW5pdGlhbHNCeUFnZW50SWRbYWdlbnRDb250cm9sLnZhbHVlPy5pZF1cIlxuICAgICAgICBzaXplPVwiMjZweFwiIC8+XG4gICAgICA8c3BhbiBjbGFzcz1cImFjYS1zZWFyY2gtYWktaW5wdXQtYWdlbnQtc2VsZWN0LWRpc3BsYXllZC12YWx1ZS10ZXh0XCI+e3sgYWdlbnRDb250cm9sLnZhbHVlPy5uYW1lIH19PC9zcGFuPlxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgIDxtYXQtb3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgYWdlbnQgb2YgYWdlbnRzXCJcbiAgICAgIFt2YWx1ZV09XCJhZ2VudFwiXG4gICAgICBjbGFzcz1cImFjYS1zZWFyY2gtYWktaW5wdXQtYWdlbnQtc2VsZWN0LW9wdGlvbnMtb3B0aW9uXCJcbiAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC0nICsgYWdlbnQuaWRcIj48ZGl2IGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1zZWxlY3Qtb3B0aW9ucy1vcHRpb24tY29udGVudFwiPlxuICAgICAgICA8YWRmLWF2YXRhciBbc3JjXT1cImFnZW50Py5hdmF0YXJVcmxcIiBbaW5pdGlhbHNdPVwiaW5pdGlhbHNCeUFnZW50SWRbYWdlbnQuaWRdXCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXNlbGVjdC1vcHRpb25zLW9wdGlvbi1jb250ZW50LXRleHRcIiBbbWF0VG9vbHRpcF09XCJhZ2VudC5uYW1lXCIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCI+e3sgYWdlbnQubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgPC9tYXQtc2VsZWN0PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXBvcHVwLWhvdmVyLWNhcmRcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXBvcHVwLWhvdmVyLWNhcmQtY29udGFpbmVyXCI+XG4gICAgICA8bWF0LWNhcmQtdGl0bGUgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXBvcHVwLWhvdmVyLWNhcmQtY29udGFpbmVyLXRpdGxlXCI+XG4gICAgICAgIDxhZGYtYXZhdGFyXG4gICAgICAgICAgW2luaXRpYWxzXT1cImluaXRpYWxzQnlBZ2VudElkW2FnZW50Q29udHJvbC52YWx1ZT8uaWRdXCJcbiAgICAgICAgICBbc3JjXT1cImFnZW50Q29udHJvbC52YWx1ZT8uYXZhdGFyVXJsXCJcbiAgICAgICAgICBzaXplPVwiNTBweFwiIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1wb3B1cC1ob3Zlci1jYXJkLWNvbnRhaW5lci10aXRsZS1uYW1lXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiYWdlbnRDb250cm9sLnZhbHVlPy5uYW1lXCI+XG4gICAgICAgICAgICB7eyBhZ2VudENvbnRyb2wudmFsdWU/Lm5hbWUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1wb3B1cC1ob3Zlci1jYXJkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgICAgIHt7IGFnZW50Q29udHJvbC52YWx1ZT8uZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGlucHV0XG4gIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC10ZXh0XCJcbiAgbWF0SW5wdXRcbiAgW2Zvcm1Db250cm9sXT1cInF1ZXJ5Q29udHJvbFwiXG4gIGRhdGEtYXV0b21hdGlvbi1pZD1cImFjYS1zZWFyY2gtYWktaW5wdXRcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAoa2V5dXAuZW50ZXIpPVwib25TZWFyY2hTdWJtaXQoKVwiLz5cbjxidXR0b25cbiAgbWF0LWZsYXQtYnV0dG9uXG4gIGNvbG9yPVwicHJpbWFyeVwiXG4gIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1hc2tpbmctYnV0dG9uXCJcbiAgKGNsaWNrKT1cIm9uU2VhcmNoU3VibWl0KClcIlxuICBbZGlzYWJsZWRdPVwiIXF1ZXJ5Q29udHJvbC52YWx1ZVwiXG4gIGRhdGEtYXV0b21hdGlvbi1pZD1cImFjYS1zZWFyY2gtYWktYXNraW5nLWJ1dHRvblwiPlxuICA8YWRmLWljb24gW3ZhbHVlXT1cIidhZGY6dGhyZWVfbWFnaWNfc3RhcnNfYWknXCIgLz5cbiAgPHNwYW4gY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWFza2luZy1idXR0b24tbGFiZWxcIj57eyAnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guU0VBUkNIX0lOUFVULkFTS19CVVRUT05fTEFCRUwnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktaW5wdXQvc2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktaW5wdXQvc2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FB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QXRCLHNCQUFzQixvTUFGdEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQywwQkM3RXBGLG0wRkE2REEsd25JREhJLFlBQVksMkpBQ1osZUFBZSwyRkFDZixlQUFlLDJRQUNmLGFBQWEsOEJBQ2Isa0JBQWtCLDhCQUNsQixjQUFjLDBXQUNkLFVBQVUsOEJBQ1YsV0FBVyxzWkFDWCxtQkFBbUIsaU5BQ25CLGVBQWUsNllBQ2YsYUFBYSw0RkFDYixlQUFlLGdIQUNmLGFBQWEseVVBQ2IsZ0JBQWdCOztTQVFQLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQXhCbEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsVUFBVTt3QkFDVixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCLFlBQ1MscUJBQXFCLGlCQUdoQixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUM7d1JBSWxGLFdBQVc7c0JBRFYsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCwgSWNvbkNvbXBvbmVudCwgTm90aWZpY2F0aW9uU2VydmljZSwgVXNlclByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEFpU2VhcmNoQnlUZXJtUGF5bG9hZCwgQXBwU3RvcmUsIGdldEFwcFNlbGVjdGlvbiwgU2VhcmNoQnlUZXJtQWlBY3Rpb24sIFRvZ2dsZUFJU2VhcmNoSW5wdXQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TdGF0ZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgQWdlbnRTZXJ2aWNlLCBTZWFyY2hBaVNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHtcbiAgTUFUX1RPT0xUSVBfREVGQVVMVF9PUFRJT05TLFxuICBNQVRfVE9PTFRJUF9ERUZBVUxUX09QVElPTlNfRkFDVE9SWSxcbiAgTWF0VG9vbHRpcERlZmF1bHRPcHRpb25zLFxuICBNYXRUb29sdGlwTW9kdWxlXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTW9kYWxBaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC1haS5zZXJ2aWNlJztcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmNvbnN0IE1hdFRvb2x0aXBPcHRpb25zOiBNYXRUb29sdGlwRGVmYXVsdE9wdGlvbnMgPSB7XG4gIC4uLk1BVF9UT09MVElQX0RFRkFVTFRfT1BUSU9OU19GQUNUT1JZKCksXG4gIGRpc2FibGVUb29sdGlwSW50ZXJhY3Rpdml0eTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIEljb25Db21wb25lbnQsXG4gICAgQXZhdGFyQ29tcG9uZW50LFxuICAgIE1hdENhcmRNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZVxuICBdLFxuICBzZWxlY3RvcjogJ2FjYS1zZWFyY2gtYWktaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWFpLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTUFUX1RPT0xUSVBfREVGQVVMVF9PUFRJT05TLCB1c2VWYWx1ZTogTWF0VG9vbHRpcE9wdGlvbnMgfV1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQWlJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgYWdlbnRJZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHVzZWRJbkFpUmVzdWx0c1BhZ2U6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmVkTm9kZXNLZXkgPSAna25vd2xlZGdlUmV0cmlldmFsTm9kZXMnO1xuXG4gIHByaXZhdGUgX2FnZW50Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxBZ2VudD4obnVsbCk7XG4gIHByaXZhdGUgX2FnZW50czogQWdlbnRbXSA9IFtdO1xuICBwcml2YXRlIHNlbGVjdGVkTm9kZXNTdGF0ZTogU2VsZWN0aW9uU3RhdGU7XG4gIHByaXZhdGUgX3F1ZXJ5Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHByaXZhdGUgX2luaXRpYWxzQnlBZ2VudElkOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgZ2V0IGFnZW50Q29udHJvbCgpOiBGb3JtQ29udHJvbDxBZ2VudD4ge1xuICAgIHJldHVybiB0aGlzLl9hZ2VudENvbnRyb2w7XG4gIH1cblxuICBnZXQgYWdlbnRzKCk6IEFnZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9hZ2VudHM7XG4gIH1cblxuICBnZXQgcXVlcnlDb250cm9sKCk6IEZvcm1Db250cm9sPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeUNvbnRyb2w7XG4gIH1cblxuICBnZXQgaW5pdGlhbHNCeUFnZW50SWQoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxzQnlBZ2VudElkO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPEFwcFN0b3JlPixcbiAgICBwcml2YXRlIHNlYXJjaEFpU2VydmljZTogU2VhcmNoQWlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VzU2VydmljZTogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbEFpU2VydmljZTogTW9kYWxBaVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHF1ZXJ5VmFsdWUgPSB0aGlzLnVzZWRJbkFpUmVzdWx0c1BhZ2UgPyAnJyA6IHRoaXMuc2VhcmNoVGVybSB8fCAnJztcbiAgICB0aGlzLnF1ZXJ5Q29udHJvbC5zZXRWYWx1ZShxdWVyeVZhbHVlKTtcblxuICAgIGlmICghdGhpcy51c2VkSW5BaVJlc3VsdHNQYWdlKSB7XG4gICAgICB0aGlzLnN0b3JlXG4gICAgICAgIC5zZWxlY3QoZ2V0QXBwU2VsZWN0aW9uKVxuICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgLnN1YnNjcmliZSgoc2VsZWN0aW9uKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzU3RhdGUgPSBzZWxlY3Rpb247XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXNTdGF0ZSA9IEpTT04ucGFyc2UodGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmdldCh0aGlzLnN0b3JlZE5vZGVzS2V5KSk7XG4gICAgfVxuXG4gICAgdGhpcy5hZ2VudFNlcnZpY2VcbiAgICAgIC5nZXRBZ2VudHMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoYWdlbnRzKSA9PiB7XG4gICAgICAgICAgdGhpcy5fYWdlbnRzID0gYWdlbnRzO1xuXG4gICAgICAgICAgdGhpcy5hZ2VudENvbnRyb2wuc2V0VmFsdWUodGhpcy5fYWdlbnRzLmZpbmQoKGFnZW50KSA9PiBhZ2VudC5pZCA9PT0gdGhpcy5hZ2VudElkKSk7XG4gICAgICAgICAgdGhpcy5faW5pdGlhbHNCeUFnZW50SWQgPSB0aGlzLmFnZW50cy5yZWR1Y2UoKGluaXRpYWxzLCBhZ2VudCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd29yZHMgPSBhZ2VudC5uYW1lLnNwbGl0KCcgJykuZmlsdGVyKCh3b3JkKSA9PiAhd29yZC5tYXRjaCgvW15hLXpBLVpdKy9nKSk7XG4gICAgICAgICAgICBpbml0aWFsc1thZ2VudC5pZF0gPSBgJHt3b3Jkc1swXVswXX0ke3dvcmRzWzFdPy5bMF0gfHwgJyd9YDtcbiAgICAgICAgICAgIHJldHVybiBpbml0aWFscztcbiAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0tOT1dMRURHRV9SRVRSSUVWQUwuU0VBUkNILkVSUk9SUy5BR0VOVFNfRkVUQ0hJTkcnKSlcbiAgICAgICk7XG4gIH1cblxuICBvblNlYXJjaFN1Ym1pdCgpIHtcbiAgICB0aGlzLm1vZGFsQWlTZXJ2aWNlLm9wZW5VbnNhdmVkQ2hhbmdlc01vZGFsKCgpID0+IHRoaXMuc2VhcmNoKCkpO1xuICB9XG5cbiAgc2VhcmNoKCkge1xuICAgIGNvbnN0IGVycm9yID0gdGhpcy5zZWFyY2hBaVNlcnZpY2UuY2hlY2tTZWFyY2hBdmFpbGFiaWxpdHkodGhpcy5zZWxlY3RlZE5vZGVzU3RhdGUpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dFcnJvcihlcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBheWxvYWQ6IEFpU2VhcmNoQnlUZXJtUGF5bG9hZCA9IHtcbiAgICAgICAgc2VhcmNoVGVybTogdGhpcy5xdWVyeUNvbnRyb2wudmFsdWUsXG4gICAgICAgIGFnZW50SWQ6IHRoaXMuYWdlbnRDb250cm9sLnZhbHVlLmlkXG4gICAgICB9O1xuICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLnNldCh0aGlzLnN0b3JlZE5vZGVzS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkTm9kZXNTdGF0ZSkpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2VhcmNoQnlUZXJtQWlBY3Rpb24ocGF5bG9hZCkpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgVG9nZ2xlQUlTZWFyY2hJbnB1dCh0aGlzLmFnZW50Q29udHJvbC52YWx1ZS5pZCwgdGhpcy5xdWVyeUNvbnRyb2wudmFsdWUpKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LWNvbnRhaW5lclwiPlxuICA8bWF0LXNlbGVjdFxuICAgIFtmb3JtQ29udHJvbF09XCJhZ2VudENvbnRyb2xcIlxuICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1zZWxlY3RcIlxuICAgIHBhbmVsQ2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXNlbGVjdC1vcHRpb25zIGFjYS1zZWFyY2gtYWktaW5wdXQtYWdlbnQtc2VsZWN0LWFnZW50c1wiXG4gICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWNhLXNlYXJjaC1haS1hZ2VudHMtc2VsZWN0XCJcbiAgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiPlxuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXIgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXNlbGVjdC1kaXNwbGF5ZWQtdmFsdWVcIj5cbiAgICAgIDxhZGYtYXZhdGFyXG4gICAgICAgIFtzcmNdPVwiYWdlbnRDb250cm9sLnZhbHVlPy5hdmF0YXJVcmxcIlxuICAgICAgICBbaW5pdGlhbHNdPVwiaW5pdGlhbHNCeUFnZW50SWRbYWdlbnRDb250cm9sLnZhbHVlPy5pZF1cIlxuICAgICAgICBzaXplPVwiMjZweFwiIC8+XG4gICAgICA8c3BhbiBjbGFzcz1cImFjYS1zZWFyY2gtYWktaW5wdXQtYWdlbnQtc2VsZWN0LWRpc3BsYXllZC12YWx1ZS10ZXh0XCI+e3sgYWdlbnRDb250cm9sLnZhbHVlPy5uYW1lIH19PC9zcGFuPlxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgIDxtYXQtb3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgYWdlbnQgb2YgYWdlbnRzXCJcbiAgICAgIFt2YWx1ZV09XCJhZ2VudFwiXG4gICAgICBjbGFzcz1cImFjYS1zZWFyY2gtYWktaW5wdXQtYWdlbnQtc2VsZWN0LW9wdGlvbnMtb3B0aW9uXCJcbiAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC0nICsgYWdlbnQuaWRcIj48ZGl2IGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1zZWxlY3Qtb3B0aW9ucy1vcHRpb24tY29udGVudFwiPlxuICAgICAgICA8YWRmLWF2YXRhciBbc3JjXT1cImFnZW50Py5hdmF0YXJVcmxcIiBbaW5pdGlhbHNdPVwiaW5pdGlhbHNCeUFnZW50SWRbYWdlbnQuaWRdXCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXNlbGVjdC1vcHRpb25zLW9wdGlvbi1jb250ZW50LXRleHRcIiBbbWF0VG9vbHRpcF09XCJhZ2VudC5uYW1lXCIgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCI+e3sgYWdlbnQubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgPC9tYXQtc2VsZWN0PlxuXG4gIDxkaXYgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXBvcHVwLWhvdmVyLWNhcmRcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXBvcHVwLWhvdmVyLWNhcmQtY29udGFpbmVyXCI+XG4gICAgICA8bWF0LWNhcmQtdGl0bGUgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWlucHV0LWFnZW50LXBvcHVwLWhvdmVyLWNhcmQtY29udGFpbmVyLXRpdGxlXCI+XG4gICAgICAgIDxhZGYtYXZhdGFyXG4gICAgICAgICAgW2luaXRpYWxzXT1cImluaXRpYWxzQnlBZ2VudElkW2FnZW50Q29udHJvbC52YWx1ZT8uaWRdXCJcbiAgICAgICAgICBbc3JjXT1cImFnZW50Q29udHJvbC52YWx1ZT8uYXZhdGFyVXJsXCJcbiAgICAgICAgICBzaXplPVwiNTBweFwiIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1wb3B1cC1ob3Zlci1jYXJkLWNvbnRhaW5lci10aXRsZS1uYW1lXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCIncmlnaHQnXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiYWdlbnRDb250cm9sLnZhbHVlPy5uYW1lXCI+XG4gICAgICAgICAgICB7eyBhZ2VudENvbnRyb2wudmFsdWU/Lm5hbWUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC1hZ2VudC1wb3B1cC1ob3Zlci1jYXJkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgICAgIHt7IGFnZW50Q29udHJvbC52YWx1ZT8uZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGlucHV0XG4gIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1pbnB1dC10ZXh0XCJcbiAgbWF0SW5wdXRcbiAgW2Zvcm1Db250cm9sXT1cInF1ZXJ5Q29udHJvbFwiXG4gIGRhdGEtYXV0b21hdGlvbi1pZD1cImFjYS1zZWFyY2gtYWktaW5wdXRcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAoa2V5dXAuZW50ZXIpPVwib25TZWFyY2hTdWJtaXQoKVwiLz5cbjxidXR0b25cbiAgbWF0LWZsYXQtYnV0dG9uXG4gIGNvbG9yPVwicHJpbWFyeVwiXG4gIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1hc2tpbmctYnV0dG9uXCJcbiAgKGNsaWNrKT1cIm9uU2VhcmNoU3VibWl0KClcIlxuICBbZGlzYWJsZWRdPVwiIXF1ZXJ5Q29udHJvbC52YWx1ZVwiXG4gIGRhdGEtYXV0b21hdGlvbi1pZD1cImFjYS1zZWFyY2gtYWktYXNraW5nLWJ1dHRvblwiPlxuICA8YWRmLWljb24gW3ZhbHVlXT1cIidhZGY6dGhyZWVfbWFnaWNfc3RhcnNfYWknXCIgLz5cbiAgPHNwYW4gY2xhc3M9XCJhY2Etc2VhcmNoLWFpLWFza2luZy1idXR0b24tbGFiZWxcIj57eyAnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guU0VBUkNIX0lOUFVULkFTS19CVVRUT05fTEFCRUwnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
@@ -24,7 +24,7 @@
24
24
  import { Component, ViewEncapsulation } from '@angular/core';
25
25
  import { ActivatedRoute } from '@angular/router';
26
26
  import { PageComponent, PageLayoutComponent, ToolbarActionComponent, ToolbarComponent } from '@alfresco/aca-shared';
27
- import { concatMap, delay, filter, finalize, retryWhen, skipWhile, switchMap, takeUntil } from 'rxjs/operators';
27
+ import { concatMap, delay, filter, finalize, retryWhen, skipWhile, switchMap } from 'rxjs/operators';
28
28
  import { AvatarComponent, ClipboardService, EmptyContentComponent, ThumbnailService, ToolbarModule, UnsavedChangesGuard } from '@alfresco/adf-core';
29
29
  import { CommonModule } from '@angular/common';
30
30
  import { SearchAiInputContainerComponent } from '../search-ai-input-container/search-ai-input-container.component';
@@ -39,6 +39,7 @@ import { MatTooltipModule } from '@angular/material/tooltip';
39
39
  import { ModalAiService } from '../../../../services/modal-ai.service';
40
40
  import { ViewNodeAction } from '@alfresco/aca-shared/store';
41
41
  import { ViewerService } from '@alfresco/aca-content/viewer';
42
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
42
43
  import * as i0 from "@angular/core";
43
44
  import * as i1 from "@angular/router";
44
45
  import * as i2 from "@alfresco/adf-core";
@@ -111,7 +112,7 @@ class SearchAiResultsComponent extends PageComponent {
111
112
  const openedViewerPreviously = this.openedViewer;
112
113
  this.openedViewer = !!params.location;
113
114
  return !this.openedViewer && (!openedViewerPreviously || !this.queryAnswer);
114
- }), takeUntil(this.onDestroy$))
115
+ }), takeUntilDestroyed(this.destroyRef))
115
116
  .subscribe((params) => {
116
117
  this._agentId = params.agentId;
117
118
  this._searchQuery = params.query ? decodeURIComponent(params.query) : '';
@@ -131,10 +132,6 @@ class SearchAiResultsComponent extends PageComponent {
131
132
  headerText: 'KNOWLEDGE_RETRIEVAL.SEARCH.DISCARD_CHANGES.WARNING'
132
133
  };
133
134
  }
134
- ngOnDestroy() {
135
- this.onDestroy$.next();
136
- this.onDestroy$.complete();
137
- }
138
135
  copyResponseToClipboard() {
139
136
  this.clipboardService.copyContentToClipboard(this.queryAnswer.answer, this.translateService.instant('KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.COPY_MESSAGE'));
140
137
  }
@@ -155,7 +152,7 @@ class SearchAiResultsComponent extends PageComponent {
155
152
  }
156
153
  this._queryAnswer = response.entry;
157
154
  return forkJoin(this.queryAnswer.references.map((reference) => this.nodesApiService.getNode(reference.referenceId)));
158
- }), retryWhen((errors) => this.aiSearchRetryWhen(errors)), finalize(() => (this._loading = false)), takeUntil(this.onDestroy$))
155
+ }), retryWhen((errors) => this.aiSearchRetryWhen(errors)), finalize(() => (this._loading = false)), takeUntilDestroyed(this.destroyRef))
159
156
  .subscribe((nodes) => {
160
157
  nodes.forEach((node) => {
161
158
  this._mimeTypeIconsByNodeId[node.id] = this.thumbnailService.getMimeTypeIcon(node.content?.mimeType);
@@ -207,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
207
204
  MatTooltipModule
208
205
  ], selector: 'aca-search-ai-results', encapsulation: ViewEncapsulation.None, host: { class: 'aca-search-ai-results' }, template: "<aca-page-layout>\n <aca-search-ai-input-container\n class=\"aca-page-layout-header\"\n placeholder=\"KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.QUERY_INPUT_PLACEHOLDER\"\n [agentId]=\"agentId\"\n [usedInAiResultsPage]=\"true\"\n *ngIf=\"!hasError && agentId\" />\n <div\n class=\"aca-page-layout-content\"\n *ngIf=\"!hasError\">\n <div class=\"aca-search-ai-results-container\">\n <div\n class=\"aca-search-ai-results-container-query\"\n data-automation-id=\"aca-search-ai-results-query\">\n {{ searchQuery }}\n </div>\n <div\n class=\"aca-search-ai-response-container\"\n [class.aca-search-ai-response-container-error]=\"hasAnsweringError\">\n <ng-container *ngIf=\"!loading else skeleton\">\n <div\n class=\"aca-search-ai-response-container-body\"\n *ngIf=\"!hasAnsweringError\">\n <div\n class=\"aca-search-ai-response-container-body-response\"\n data-automation-id=\"aca-search-ai-results-response\">\n {{ queryAnswer?.answer }}\n </div>\n <button\n class=\"aca-search-ai-response-container-body-response-action aca-search-ai-response-container-body-response-action-regeneration\"\n mat-icon-button\n (click)=\"checkUnsavedChangesAndSearch()\"\n data-automation-id=\"aca-search-ai-results-regeneration-button\"\n [title]=\"'KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.REGENERATION_BUTTON_LABEL' | translate\">\n <mat-icon>cached</mat-icon>\n </button>\n <button\n class=\"aca-search-ai-response-container-body-response-action\"\n mat-icon-button\n (click)=\"copyResponseToClipboard()\"\n data-automation-id=\"aca-search-ai-results-copying-button\"\n [title]=\"'KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.COPY_BUTTON_LABEL' | translate\">\n <mat-icon>copy</mat-icon>\n </button>\n <ng-container *ngIf=\"nodes?.length\">\n <mat-divider class=\"aca-search-ai-response-container-body-divider\" />\n <div class=\"aca-search-ai-response-container-body-references-container\">\n <p class=\"aca-search-ai-response-container-body-references-container-header\">\n {{ 'KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.REFERENCED_DOCUMENTS_HEADER' | translate }}\n </p>\n <div class=\"aca-search-ai-response-container-body-references-container-documents\">\n <a\n class=\"aca-search-ai-response-container-body-references-container-documents-document\"\n *ngFor=\"let node of nodes\"\n [attr.data-automation-id]=\"'aca-search-ai-results-' + node.id + '-document'\"\n (click)=\"openFile(node.id)\"\n (keyup.enter)=\"openFile(node.id)\"\n tabindex=\"0\">\n <mat-icon\n mat-list-icon\n class=\"aca-search-ai-response-container-body-references-container-documents-document-icon\">\n <img [alt]=\"node.content?.mimeType\" [src]=\"mimeTypeIconsByNodeId[node.id]\"/>\n </mat-icon>\n <div class=\"aca-search-ai-response-container-body-references-container-documents-document-name\">\n {{ node.name }}\n </div>\n </a>\n </div>\n </div>\n </ng-container>\n </div>\n <div\n *ngIf=\"hasAnsweringError\"\n class=\"aca-search-ai-response-container-error-message\">\n {{ 'KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.LOADING_ERROR' | translate }}\n <button\n mat-flat-button\n (click)=\"performAiSearch()\"\n class=\"aca-search-ai-response-container-error-message-regeneration-button\"\n data-automation-id=\"aca-search-ai-results-error-regeneration-button\">\n <mat-icon class=\"aca-search-ai-response-container-error-message-regeneration-button-icon\">cached</mat-icon>\n {{ 'KNOWLEDGE_RETRIEVAL.SEARCH.RESULTS_PAGE.REGENERATION_BUTTON_LABEL' | translate }}\n </button>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n <adf-empty-content\n class=\"aca-page-layout-content\"\n icon=\"star\"\n title=\"KNOWLEDGE_RETRIEVAL.SEARCH.ERRORS.PAGE_NOT_AVAILABLE_ERROR\"\n *ngIf=\"hasError\" />\n</aca-page-layout>\n\n<ng-template #skeleton>\n <div class=\"adf-skeleton\"></div>\n <div class=\"adf-skeleton\"></div>\n <div class=\"adf-skeleton adf-skeleton-half\"></div>\n</ng-template>\n", styles: [".aca-search-ai-results aca-page-layout .aca-page-layout-content{display:flex;justify-content:center;align-items:center;height:100%;width:100%;background-color:#fff;border-top:1px solid var(--theme-grey-background-color);padding-top:28px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-results-container{display:flex;flex-direction:column;height:100%;overflow-y:auto;padding-right:24%;padding-left:24%;min-width:51%}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-results-container-query{border-radius:12px;padding:20px 15px 19px;background:var(--theme-card-background-grey-color)}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container{padding:18px 20px;display:flex;flex-direction:column;border:1px solid var(--adf-card-view-border-color);border-radius:12px;margin:16px 0 75px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-references-container-header{padding-left:8px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container .adf-skeleton{position:relative;background-image:linear-gradient(to left,var(--theme-light-grey-1-color) 0%,var(--theme-light-grey-2-color) 20%,var(--theme-light-grey-3-color) 40%,var(--theme-light-grey-1-color) 100%);background-size:200%;display:inline-block;height:1em;overflow:hidden;width:100%;margin-bottom:.5rem;border-radius:.25rem}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container .adf-skeleton-half{width:50%;margin-bottom:8px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container .adf-skeleton:after{position:absolute;inset:0;transform:translate(-100%);background-image:linear-gradient(90deg,#fff0 0,#fff3 20%,#ffffff80 60%,#fff0);animation:shimmer 2s infinite;content:\"\"}@keyframes shimmer{to{transform:translate(100%)}}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-error{border-color:var(--adf-error-color);padding:32px 18px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-error-message{display:flex;justify-content:space-between;align-items:center}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-error-message-regeneration-button{background-color:var(--adf-secondary-button-background)}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-error-message-regeneration-button-icon{font-size:24px;height:24px;width:23px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-response{margin-bottom:17px;overflow-wrap:break-word;white-space:pre-wrap}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-response-action{width:max-content;padding:0}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-response-action mat-icon{font-size:17.25px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-response-action-regeneration{margin-left:2px;margin-right:2px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-response-action .mat-mdc-button-touch-target{width:24px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-divider{margin-top:9px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-references-container{padding-right:8px;padding-left:8px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-references-container-header{margin-top:16px;color:var(--theme-text-light-color);font-weight:400;margin-bottom:3px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-references-container-documents{padding-right:5px;padding-top:5px;margin-left:-2px;display:flex;flex-wrap:wrap;gap:21px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-references-container-documents-document{display:flex;flex-direction:row;padding-top:7px;padding-bottom:7px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-references-container-documents-document-icon{padding-right:11px}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-references-container-documents-document-name{display:flex;flex-direction:column;width:100%;justify-content:center}.aca-search-ai-results aca-page-layout .aca-page-layout-content .aca-search-ai-response-container-body-references-container-documents-document:hover{text-decoration:underline;text-decoration-color:var(--theme-primary-color);color:var(--theme-primary-color);cursor:pointer}\n"] }]
209
206
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.ClipboardService }, { type: i2.ThumbnailService }, { type: i3.NodesApiService }, { type: i4.TranslateService }, { type: i2.UnsavedChangesGuard }, { type: i5.ModalAiService }, { type: i6.ViewerService }]; } });
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWFpLXJlc3VsdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL2tub3dsZWRnZS1yZXRyaWV2YWwvc2VhcmNoLWFpL3NlYXJjaC1haS1yZXN1bHRzL3NlYXJjaC1haS1yZXN1bHRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktcmVzdWx0cy9zZWFyY2gtYWktcmVzdWx0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBKLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxr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QU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RCO1lBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7dUdBdEtVLHdCQUF3QjsyRkFBeEIsd0JBQXdCLDJKQ3JFckMsaXZKQW9HQSw4OUpEcERJLFlBQVksZ1FBQ1osbUJBQW1CLGlGQUVuQixhQUFhLCtCQUViLCtCQUErQixvSUFDL0IsZUFBZSwyRkFDZixhQUFhLG1MQUNiLGVBQWUsd2FBQ2YsYUFBYSxvSUFDYixxQkFBcUIsb0dBQ3JCLGFBQWEsOEJBRWIsZ0JBQWdCOztTQVFQLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQXhCcEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLCtCQUErQjt3QkFDL0IsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7cUJBQ2pCLFlBQ1MsdUJBQXVCLGlCQUdsQixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI0IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbi5cbiAqIElmIHRoZSBzb2Z0d2FyZSB3YXMgcHVyY2hhc2VkIHVuZGVyIGEgcGFpZCBBbGZyZXNjbyBsaWNlbnNlLCB0aGUgdGVybXMgb2ZcbiAqIHRoZSBwYWlkIGxpY2Vuc2UgYWdyZWVtZW50IHdpbGwgcHJldmFpbC4gT3RoZXJ3aXNlLCB0aGUgc29mdHdhcmUgaXNcbiAqIHByb3ZpZGVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgb3BlbiBzb3VyY2UgbGljZW5zZSB0ZXJtczpcbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBmcm9tIEh5bGFuZCBTb2Z0d2FyZS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQYWdlQ29tcG9uZW50LCBQYWdlTGF5b3V0Q29tcG9uZW50LCBUb29sYmFyQWN0aW9uQ29tcG9uZW50LCBUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBkZWxheSwgZmlsdGVyLCBmaW5hbGl6ZSwgcmV0cnlXaGVuLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50LCBDbGlwYm9hcmRTZXJ2aWNlLCBFbXB0eUNvbnRlbnRDb21wb25lbnQsIFRodW1ibmFpbFNlcnZpY2UsIFRvb2xiYXJNb2R1bGUsIFVuc2F2ZWRDaGFuZ2VzR3VhcmQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQWlBbnN3ZXIsIE5vZGUgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTZWFyY2hBaUlucHV0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWFpLWlucHV0LWNvbnRhaW5lci9zZWFyY2gtYWktaW5wdXQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE5vZGVzQXBpU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlbGVjdGlvblN0YXRlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1leHRlbnNpb25zJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNb2RhbEFpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsLWFpLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld05vZGVBY3Rpb24gfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBWaWV3ZXJTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1jb250ZW50L3ZpZXdlcic7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgVG9vbGJhckFjdGlvbkNvbXBvbmVudCxcbiAgICBUb29sYmFyTW9kdWxlLFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgU2VhcmNoQWlJbnB1dENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0TGlzdE1vZHVsZSxcbiAgICBFbXB0eUNvbnRlbnRDb21wb25lbnQsXG4gICAgTWF0Q2FyZE1vZHVsZSxcbiAgICBBdmF0YXJDb21wb25lbnQsXG4gICAgTWF0VG9vbHRpcE1vZHVsZVxuICBdLFxuICBzZWxlY3RvcjogJ2FjYS1zZWFyY2gtYWktcmVzdWx0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtYWktcmVzdWx0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1haS1yZXN1bHRzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdhY2Etc2VhcmNoLWFpLXJlc3VsdHMnIH1cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQWlSZXN1bHRzQ29tcG9uZW50IGV4dGVuZHMgUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfYWdlbnRJZDogc3RyaW5nO1xuICBwcml2YXRlIF9oYXNBbnN3ZXJpbmdFcnJvciA9IGZhbHNlO1xuICBwcml2YXRlIF9oYXNFcnJvciA9IGZhbHNlO1xuICBwcml2YXRlIF9sb2FkaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgX21pbWVUeXBlSWNvbnNCeU5vZGVJZDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICBwcml2YXRlIF9ub2RlczogTm9kZVtdID0gW107XG4gIHByaXZhdGUgb3BlbmVkVmlld2VyID0gZmFsc2U7XG4gIHByaXZhdGUgX3NlbGVjdGVkTm9kZXNTdGF0ZTogU2VsZWN0aW9uU3RhdGU7XG4gIHByaXZhdGUgX3NlYXJjaFF1ZXJ5ID0gJyc7XG4gIHByaXZhdGUgX3F1ZXJ5QW5zd2VyOiBBaUFuc3dlcjtcblxuICBnZXQgYWdlbnRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hZ2VudElkO1xuICB9XG5cbiAgZ2V0IGhhc0Fuc3dlcmluZ0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNBbnN3ZXJpbmdFcnJvcjtcbiAgfVxuXG4gIGdldCBoYXNFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRXJyb3I7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgfVxuXG4gIGdldCBtaW1lVHlwZUljb25zQnlOb2RlSWQoKTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbWVUeXBlSWNvbnNCeU5vZGVJZDtcbiAgfVxuXG4gIGdldCBub2RlcygpOiBOb2RlW10ge1xuICAgIHJldHVybiB0aGlzLl9ub2RlcztcbiAgfVxuXG4gIGdldCBxdWVyeUFuc3dlcigpOiBBaUFuc3dlciB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5QW5zd2VyO1xuICB9XG5cbiAgZ2V0IHNlYXJjaFF1ZXJ5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFF1ZXJ5O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZTogVGh1bWJuYWlsU2VydmljZSxcbiAgICBwcml2YXRlIG5vZGVzQXBpU2VydmljZTogTm9kZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHVuc2F2ZWRDaGFuZ2VzR3VhcmQ6IFVuc2F2ZWRDaGFuZ2VzR3VhcmQsXG4gICAgcHJpdmF0ZSBtb2RhbEFpU2VydmljZTogTW9kYWxBaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2aWV3ZXJTZXJ2aWNlOiBWaWV3ZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdlclNlcnZpY2UuY3VzdG9tTm9kZXNPcmRlciA9IEpTT04ucGFyc2UodGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmdldCgnYWlSZWZlcmVuY2VzJywgJ1tdJykpO1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHBhcmFtcykgPT4ge1xuICAgICAgICAgIGNvbnN0IG9wZW5lZFZpZXdlclByZXZpb3VzbHkgPSB0aGlzLm9wZW5lZFZpZXdlcjtcbiAgICAgICAgICB0aGlzLm9wZW5lZFZpZXdlciA9ICEhcGFyYW1zLmxvY2F0aW9uO1xuICAgICAgICAgIHJldHVybiAhdGhpcy5vcGVuZWRWaWV3ZXIgJiYgKCFvcGVuZWRWaWV3ZXJQcmV2aW91c2x5IHx8ICF0aGlzLnF1ZXJ5QW5zd2VyKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgICAgdGhpcy5fYWdlbnRJZCA9IHBhcmFtcy5hZ2VudElkO1xuICAgICAgICB0aGlzLl9zZWFyY2hRdWVyeSA9IHBhcmFtcy5xdWVyeSA/IGRlY29kZVVSSUNvbXBvbmVudChwYXJhbXMucXVlcnkpIDogJyc7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZXNTdGF0ZSA9IHRoaXMudXNlclByZWZlcmVuY2VzU2VydmljZS5nZXQoJ2tub3dsZWRnZVJldHJpZXZhbE5vZGVzJyk7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hRdWVyeSB8fCAhdGhpcy5hZ2VudElkIHx8ICFzZWxlY3RlZE5vZGVzU3RhdGUpIHtcbiAgICAgICAgICB0aGlzLl9oYXNFcnJvciA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkTm9kZXNTdGF0ZSA9IEpTT04ucGFyc2Uoc2VsZWN0ZWROb2Rlc1N0YXRlKTtcbiAgICAgICAgdGhpcy5wZXJmb3JtQWlTZWFyY2goKTtcbiAgICAgIH0pO1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLnVuc2F2ZWRDaGFuZ2VzR3VhcmQudW5zYXZlZCA9IHRoaXMucm91dGUuc25hcHNob3Q/LnF1ZXJ5UGFyYW1zPy5xdWVyeT8ubGVuZ3RoID4gMCAmJiAhdGhpcy5oYXNFcnJvcjtcbiAgICB0aGlzLnVuc2F2ZWRDaGFuZ2VzR3VhcmQuZGF0YSA9IHtcbiAgICAgIGRlc2NyaXB0aW9uVGV4dDogJ0tOT1dMRURHRV9SRVRSSUVWQUwuU0VBUkNILkRJU0NBUkRfQ0hBTkdFUy5DT05WRVJTQVRJT05fRElTQ0FSREVEJyxcbiAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guRElTQ0FSRF9DSEFOR0VTLk9LQVknLFxuICAgICAgaGVhZGVyVGV4dDogJ0tOT1dMRURHRV9SRVRSSUVWQUwuU0VBUkNILkRJU0NBUkRfQ0hBTkdFUy5XQVJOSU5HJ1xuICAgIH07XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgY29weVJlc3BvbnNlVG9DbGlwYm9hcmQoKTogdm9pZCB7XG4gICAgdGhpcy5jbGlwYm9hcmRTZXJ2aWNlLmNvcHlDb250ZW50VG9DbGlwYm9hcmQoXG4gICAgICB0aGlzLnF1ZXJ5QW5zd2VyLmFuc3dlcixcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdLTk9XTEVER0VfUkVUUklFVkFMLlNFQVJDSC5SRVNVTFRTX1BBR0UuQ09QWV9NRVNTQUdFJylcbiAgICApO1xuICB9XG5cbiAgY2hlY2tVbnNhdmVkQ2hhbmdlc0FuZFNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsQWlTZXJ2aWNlLm9wZW5VbnNhdmVkQ2hhbmdlc01vZGFsKCgpID0+IHRoaXMucGVyZm9ybUFpU2VhcmNoKCkpO1xuICB9XG5cbiAgcGVyZm9ybUFpU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuX2xvYWRpbmcgPSB0cnVlO1xuXG4gICAgdGhpcy5zZWFyY2hBaVNlcnZpY2VcbiAgICAgIC5hc2soe1xuICAgICAgICBxdWVzdGlvbjogdGhpcy5zZWFyY2hRdWVyeSxcbiAgICAgICAgbm9kZUlkczogdGhpcy5fc2VsZWN0ZWROb2Rlc1N0YXRlPy5ub2Rlcz8ubGVuZ3RoID8gdGhpcy5fc2VsZWN0ZWROb2Rlc1N0YXRlLm5vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS5lbnRyeS5pZCkgOiBbXSxcbiAgICAgICAgYWdlbnRJZDogdGhpcy5fYWdlbnRJZFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlKSA9PiB0aGlzLnNlYXJjaEFpU2VydmljZS5nZXRBbnN3ZXIocmVzcG9uc2UucXVlc3Rpb25JZCkpLFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKCFyZXNwb25zZS5lbnRyeT8uYW5zd2VyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoZSkgPT4gZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX3F1ZXJ5QW5zd2VyID0gcmVzcG9uc2UuZW50cnk7XG4gICAgICAgICAgcmV0dXJuIGZvcmtKb2luKHRoaXMucXVlcnlBbnN3ZXIucmVmZXJlbmNlcy5tYXAoKHJlZmVyZW5jZSkgPT4gdGhpcy5ub2Rlc0FwaVNlcnZpY2UuZ2V0Tm9kZShyZWZlcmVuY2UucmVmZXJlbmNlSWQpKSk7XG4gICAgICAgIH0pLFxuICAgICAgICByZXRyeVdoZW4oKGVycm9yczogT2JzZXJ2YWJsZTxFcnJvcj4pID0+IHRoaXMuYWlTZWFyY2hSZXRyeVdoZW4oZXJyb3JzKSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+ICh0aGlzLl9sb2FkaW5nID0gZmFsc2UpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChub2RlcykgPT4ge1xuICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21pbWVUeXBlSWNvbnNCeU5vZGVJZFtub2RlLmlkXSA9IHRoaXMudGh1bWJuYWlsU2VydmljZS5nZXRNaW1lVHlwZUljb24obm9kZS5jb250ZW50Py5taW1lVHlwZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5fbm9kZXMgPSBub2RlcztcbiAgICAgICAgICBjb25zdCBub2Rlc0lkcyA9IG5vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS5pZCk7XG4gICAgICAgICAgdGhpcy52aWV3ZXJTZXJ2aWNlLmN1c3RvbU5vZGVzT3JkZXIgPSBub2Rlc0lkcztcbiAgICAgICAgICB0aGlzLnVzZXJQcmVmZXJlbmNlc1NlcnZpY2Uuc2V0KCdhaVJlZmVyZW5jZXMnLCBKU09OLnN0cmluZ2lmeShub2Rlc0lkcykpO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiAodGhpcy5faGFzQW5zd2VyaW5nRXJyb3IgPSB0cnVlKVxuICAgICAgKTtcbiAgfVxuXG4gIG9wZW5GaWxlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgbmV3IFZpZXdOb2RlQWN0aW9uKGlkLCB7XG4gICAgICAgIGxvY2F0aW9uOiB0aGlzLnJvdXRlci51cmxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWlTZWFyY2hSZXRyeVdoZW4oZXJyb3JzOiBPYnNlcnZhYmxlPEVycm9yPik6IE9ic2VydmFibGU8RXJyb3I+IHtcbiAgICB0aGlzLl9oYXNBbnN3ZXJpbmdFcnJvciA9IGZhbHNlO1xuICAgIGNvbnN0IGRlbGF5QmV0d2VlblJldHJpZXMgPSAzMDAwO1xuICAgIGNvbnN0IG1heFJldHJpZXMgPSA5O1xuXG4gICAgcmV0dXJuIGVycm9ycy5waXBlKFxuICAgICAgc2tpcFdoaWxlKCgpID0+IHRoaXMuaGFzQW5zd2VyaW5nRXJyb3IpLFxuICAgICAgZGVsYXkoZGVsYXlCZXR3ZWVuUmV0cmllcyksXG4gICAgICBjb25jYXRNYXAoKGUsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gbWF4UmV0cmllcykge1xuICAgICAgICAgIHRoaXMuX2hhc0Fuc3dlcmluZ0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8YWNhLXBhZ2UtbGF5b3V0PlxuICA8YWNhLXNlYXJjaC1haS1pbnB1dC1jb250YWluZXJcbiAgICBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1oZWFkZXJcIlxuICAgIHBsYWNlaG9sZGVyPVwiS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guUkVTVUxUU19QQUdFLlFVRVJZX0lOUFVUX1BMQUNFSE9MREVSXCJcbiAgICBbYWdlbnRJZF09XCJhZ2VudElkXCJcbiAgICBbdXNlZEluQWlSZXN1bHRzUGFnZV09XCJ0cnVlXCJcbiAgICAqbmdJZj1cIiFoYXNFcnJvciAmJiBhZ2VudElkXCIgLz5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYWNhLXBhZ2UtbGF5b3V0LWNvbnRlbnRcIlxuICAgICpuZ0lmPVwiIWhhc0Vycm9yXCI+XG4gICAgPGRpdiBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzdWx0cy1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLXJlc3VsdHMtY29udGFpbmVyLXF1ZXJ5XCJcbiAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWNhLXNlYXJjaC1haS1yZXN1bHRzLXF1ZXJ5XCI+XG4gICAgICAgIHt7IHNlYXJjaFF1ZXJ5IH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLXJlc3BvbnNlLWNvbnRhaW5lclwiXG4gICAgICAgIFtjbGFzcy5hY2Etc2VhcmNoLWFpLXJlc3BvbnNlLWNvbnRhaW5lci1lcnJvcl09XCJoYXNBbnN3ZXJpbmdFcnJvclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRpbmcgZWxzZSBza2VsZXRvblwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keVwiXG4gICAgICAgICAgICAqbmdJZj1cIiFoYXNBbnN3ZXJpbmdFcnJvclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWJvZHktcmVzcG9uc2VcIlxuICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhY2Etc2VhcmNoLWFpLXJlc3VsdHMtcmVzcG9uc2VcIj5cbiAgICAgICAgICAgICAge3sgcXVlcnlBbnN3ZXI/LmFuc3dlciB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keS1yZXNwb25zZS1hY3Rpb24gYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keS1yZXNwb25zZS1hY3Rpb24tcmVnZW5lcmF0aW9uXCJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJjaGVja1Vuc2F2ZWRDaGFuZ2VzQW5kU2VhcmNoKClcIlxuICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhY2Etc2VhcmNoLWFpLXJlc3VsdHMtcmVnZW5lcmF0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guUkVTVUxUU19QQUdFLlJFR0VORVJBVElPTl9CVVRUT05fTEFCRUwnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jYWNoZWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keS1yZXNwb25zZS1hY3Rpb25cIlxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlSZXNwb25zZVRvQ2xpcGJvYXJkKClcIlxuICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhY2Etc2VhcmNoLWFpLXJlc3VsdHMtY29weWluZy1idXR0b25cIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0tOT1dMRURHRV9SRVRSSUVWQUwuU0VBUkNILlJFU1VMVFNfUEFHRS5DT1BZX0JVVFRPTl9MQUJFTCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNvcHk8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8bWF0LWRpdmlkZXIgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLXJlc3BvbnNlLWNvbnRhaW5lci1ib2R5LWRpdmlkZXJcIiAvPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keS1yZWZlcmVuY2VzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keS1yZWZlcmVuY2VzLWNvbnRhaW5lci1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdLTk9XTEVER0VfUkVUUklFVkFMLlNFQVJDSC5SRVNVTFRTX1BBR0UuUkVGRVJFTkNFRF9ET0NVTUVOVFNfSEVBREVSJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keS1yZWZlcmVuY2VzLWNvbnRhaW5lci1kb2N1bWVudHNcIj5cbiAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keS1yZWZlcmVuY2VzLWNvbnRhaW5lci1kb2N1bWVudHMtZG9jdW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbm9kZSBvZiBub2Rlc1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCInYWNhLXNlYXJjaC1haS1yZXN1bHRzLScgKyBub2RlLmlkICsgJy1kb2N1bWVudCdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkZpbGUobm9kZS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib3BlbkZpbGUobm9kZS5pZClcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgbWF0LWxpc3QtaWNvblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keS1yZWZlcmVuY2VzLWNvbnRhaW5lci1kb2N1bWVudHMtZG9jdW1lbnQtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW2FsdF09XCJub2RlLmNvbnRlbnQ/Lm1pbWVUeXBlXCIgW3NyY109XCJtaW1lVHlwZUljb25zQnlOb2RlSWRbbm9kZS5pZF1cIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLXJlc3BvbnNlLWNvbnRhaW5lci1ib2R5LXJlZmVyZW5jZXMtY29udGFpbmVyLWRvY3VtZW50cy1kb2N1bWVudC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiaGFzQW5zd2VyaW5nRXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLXJlc3BvbnNlLWNvbnRhaW5lci1lcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICB7eyAnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guRVJST1JTLkxPQURJTkdfRVJST1InIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwicGVyZm9ybUFpU2VhcmNoKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWVycm9yLW1lc3NhZ2UtcmVnZW5lcmF0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFjYS1zZWFyY2gtYWktcmVzdWx0cy1lcnJvci1yZWdlbmVyYXRpb24tYnV0dG9uXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWVycm9yLW1lc3NhZ2UtcmVnZW5lcmF0aW9uLWJ1dHRvbi1pY29uXCI+Y2FjaGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAge3sgJ0tOT1dMRURHRV9SRVRSSUVWQUwuU0VBUkNILlJFU1VMVFNfUEFHRS5SRUdFTkVSQVRJT05fQlVUVE9OX0xBQkVMJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8YWRmLWVtcHR5LWNvbnRlbnRcbiAgICBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1jb250ZW50XCJcbiAgICBpY29uPVwic3RhclwiXG4gICAgdGl0bGU9XCJLTk9XTEVER0VfUkVUUklFVkFMLlNFQVJDSC5FUlJPUlMuUEFHRV9OT1RfQVZBSUxBQkxFX0VSUk9SXCJcbiAgICAqbmdJZj1cImhhc0Vycm9yXCIgLz5cbjwvYWNhLXBhZ2UtbGF5b3V0PlxuXG48bmctdGVtcGxhdGUgI3NrZWxldG9uPlxuICA8ZGl2IGNsYXNzPVwiYWRmLXNrZWxldG9uXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhZGYtc2tlbGV0b25cIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFkZi1za2VsZXRvbiBhZGYtc2tlbGV0b24taGFsZlwiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWFpLXJlc3VsdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLWNvbnRlbnQvc3JjL2xpYi9jb21wb25lbnRzL2tub3dsZWRnZS1yZXRyaWV2YWwvc2VhcmNoLWFpL3NlYXJjaC1haS1yZXN1bHRzL3NlYXJjaC1haS1yZXN1bHRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9rbm93bGVkZ2UtcmV0cmlldmFsL3NlYXJjaC1haS9zZWFyY2gtYWktcmVzdWx0cy9zZWFyY2gtYWktcmVzdWx0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQVUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckcsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7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Q0FBQztRQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzt1R0FqS1Usd0JBQXdCOzJGQUF4Qix3QkFBd0IsMkpDdEVyQyxpdkpBb0dBLDg5SkRuREksWUFBWSxnUUFDWixtQkFBbUIsaUZBRW5CLGFBQWEsK0JBRWIsK0JBQStCLG9JQUMvQixlQUFlLDJGQUNmLGFBQWEsbUxBQ2IsZUFBZSx3YUFDZixhQUFhLG9JQUNiLHFCQUFxQixvR0FDckIsYUFBYSw4QkFFYixnQkFBZ0I7O1NBUVAsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBeEJwQyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsK0JBQStCO3dCQUMvQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixhQUFhO3dCQUNiLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGdCQUFnQjtxQkFDakIsWUFDUyx1QkFBdUIsaUJBR2xCLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjQgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBQYWdlQ29tcG9uZW50LCBQYWdlTGF5b3V0Q29tcG9uZW50LCBUb29sYmFyQWN0aW9uQ29tcG9uZW50LCBUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBkZWxheSwgZmlsdGVyLCBmaW5hbGl6ZSwgcmV0cnlXaGVuLCBza2lwV2hpbGUsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCwgQ2xpcGJvYXJkU2VydmljZSwgRW1wdHlDb250ZW50Q29tcG9uZW50LCBUaHVtYm5haWxTZXJ2aWNlLCBUb29sYmFyTW9kdWxlLCBVbnNhdmVkQ2hhbmdlc0d1YXJkIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEFpQW5zd2VyLCBOb2RlIH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2VhcmNoQWlJbnB1dENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1haS1pbnB1dC1jb250YWluZXIvc2VhcmNoLWFpLWlucHV0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOb2Rlc0FwaVNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TdGF0ZSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTW9kYWxBaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC1haS5zZXJ2aWNlJztcbmltcG9ydCB7IFZpZXdOb2RlQWN0aW9uIH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHsgVmlld2VyU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hY2EtY29udGVudC92aWV3ZXInO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIFRvb2xiYXJBY3Rpb25Db21wb25lbnQsXG4gICAgVG9vbGJhck1vZHVsZSxcbiAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgIFNlYXJjaEFpSW5wdXRDb250YWluZXJDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgRW1wdHlDb250ZW50Q29tcG9uZW50LFxuICAgIE1hdENhcmRNb2R1bGUsXG4gICAgQXZhdGFyQ29tcG9uZW50LFxuICAgIE1hdFRvb2x0aXBNb2R1bGVcbiAgXSxcbiAgc2VsZWN0b3I6ICdhY2Etc2VhcmNoLWFpLXJlc3VsdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWFpLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtYWktcmVzdWx0cy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYWNhLXNlYXJjaC1haS1yZXN1bHRzJyB9XG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaEFpUmVzdWx0c0NvbXBvbmVudCBleHRlbmRzIFBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9hZ2VudElkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2hhc0Fuc3dlcmluZ0Vycm9yID0gZmFsc2U7XG4gIHByaXZhdGUgX2hhc0Vycm9yID0gZmFsc2U7XG4gIHByaXZhdGUgX2xvYWRpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbWltZVR5cGVJY29uc0J5Tm9kZUlkOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gIHByaXZhdGUgX25vZGVzOiBOb2RlW10gPSBbXTtcbiAgcHJpdmF0ZSBvcGVuZWRWaWV3ZXIgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWROb2Rlc1N0YXRlOiBTZWxlY3Rpb25TdGF0ZTtcbiAgcHJpdmF0ZSBfc2VhcmNoUXVlcnkgPSAnJztcbiAgcHJpdmF0ZSBfcXVlcnlBbnN3ZXI6IEFpQW5zd2VyO1xuXG4gIGdldCBhZ2VudElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2FnZW50SWQ7XG4gIH1cblxuICBnZXQgaGFzQW5zd2VyaW5nRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0Fuc3dlcmluZ0Vycm9yO1xuICB9XG5cbiAgZ2V0IGhhc0Vycm9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNFcnJvcjtcbiAgfVxuXG4gIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nO1xuICB9XG5cbiAgZ2V0IG1pbWVUeXBlSWNvbnNCeU5vZGVJZCgpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gdGhpcy5fbWltZVR5cGVJY29uc0J5Tm9kZUlkO1xuICB9XG5cbiAgZ2V0IG5vZGVzKCk6IE5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzO1xuICB9XG5cbiAgZ2V0IHF1ZXJ5QW5zd2VyKCk6IEFpQW5zd2VyIHtcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlBbnN3ZXI7XG4gIH1cblxuICBnZXQgc2VhcmNoUXVlcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoUXVlcnk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNsaXBib2FyZFNlcnZpY2U6IENsaXBib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aHVtYm5haWxTZXJ2aWNlOiBUaHVtYm5haWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm9kZXNBcGlTZXJ2aWNlOiBOb2Rlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdW5zYXZlZENoYW5nZXNHdWFyZDogVW5zYXZlZENoYW5nZXNHdWFyZCxcbiAgICBwcml2YXRlIG1vZGFsQWlTZXJ2aWNlOiBNb2RhbEFpU2VydmljZSxcbiAgICBwcml2YXRlIHZpZXdlclNlcnZpY2U6IFZpZXdlclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmlld2VyU2VydmljZS5jdXN0b21Ob2Rlc09yZGVyID0gSlNPTi5wYXJzZSh0aGlzLnVzZXJQcmVmZXJlbmNlc1NlcnZpY2UuZ2V0KCdhaVJlZmVyZW5jZXMnLCAnW10nKSk7XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigocGFyYW1zKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3BlbmVkVmlld2VyUHJldmlvdXNseSA9IHRoaXMub3BlbmVkVmlld2VyO1xuICAgICAgICAgIHRoaXMub3BlbmVkVmlld2VyID0gISFwYXJhbXMubG9jYXRpb247XG4gICAgICAgICAgcmV0dXJuICF0aGlzLm9wZW5lZFZpZXdlciAmJiAoIW9wZW5lZFZpZXdlclByZXZpb3VzbHkgfHwgIXRoaXMucXVlcnlBbnN3ZXIpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuICAgICAgICB0aGlzLl9hZ2VudElkID0gcGFyYW1zLmFnZW50SWQ7XG4gICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gcGFyYW1zLnF1ZXJ5ID8gZGVjb2RlVVJJQ29tcG9uZW50KHBhcmFtcy5xdWVyeSkgOiAnJztcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWROb2Rlc1N0YXRlID0gdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLmdldCgna25vd2xlZGdlUmV0cmlldmFsTm9kZXMnKTtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFF1ZXJ5IHx8ICF0aGlzLmFnZW50SWQgfHwgIXNlbGVjdGVkTm9kZXNTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuX2hhc0Vycm9yID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWROb2Rlc1N0YXRlID0gSlNPTi5wYXJzZShzZWxlY3RlZE5vZGVzU3RhdGUpO1xuICAgICAgICB0aGlzLnBlcmZvcm1BaVNlYXJjaCgpO1xuICAgICAgfSk7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMudW5zYXZlZENoYW5nZXNHdWFyZC51bnNhdmVkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdD8ucXVlcnlQYXJhbXM/LnF1ZXJ5Py5sZW5ndGggPiAwICYmICF0aGlzLmhhc0Vycm9yO1xuICAgIHRoaXMudW5zYXZlZENoYW5nZXNHdWFyZC5kYXRhID0ge1xuICAgICAgZGVzY3JpcHRpb25UZXh0OiAnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guRElTQ0FSRF9DSEFOR0VTLkNPTlZFUlNBVElPTl9ESVNDQVJERUQnLFxuICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdLTk9XTEVER0VfUkVUUklFVkFMLlNFQVJDSC5ESVNDQVJEX0NIQU5HRVMuT0tBWScsXG4gICAgICBoZWFkZXJUZXh0OiAnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guRElTQ0FSRF9DSEFOR0VTLldBUk5JTkcnXG4gICAgfTtcbiAgfVxuXG4gIGNvcHlSZXNwb25zZVRvQ2xpcGJvYXJkKCk6IHZvaWQge1xuICAgIHRoaXMuY2xpcGJvYXJkU2VydmljZS5jb3B5Q29udGVudFRvQ2xpcGJvYXJkKFxuICAgICAgdGhpcy5xdWVyeUFuc3dlci5hbnN3ZXIsXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guUkVTVUxUU19QQUdFLkNPUFlfTUVTU0FHRScpXG4gICAgKTtcbiAgfVxuXG4gIGNoZWNrVW5zYXZlZENoYW5nZXNBbmRTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbEFpU2VydmljZS5vcGVuVW5zYXZlZENoYW5nZXNNb2RhbCgoKSA9PiB0aGlzLnBlcmZvcm1BaVNlYXJjaCgpKTtcbiAgfVxuXG4gIHBlcmZvcm1BaVNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2FkaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuc2VhcmNoQWlTZXJ2aWNlXG4gICAgICAuYXNrKHtcbiAgICAgICAgcXVlc3Rpb246IHRoaXMuc2VhcmNoUXVlcnksXG4gICAgICAgIG5vZGVJZHM6IHRoaXMuX3NlbGVjdGVkTm9kZXNTdGF0ZT8ubm9kZXM/Lmxlbmd0aCA/IHRoaXMuX3NlbGVjdGVkTm9kZXNTdGF0ZS5ub2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUuZW50cnkuaWQpIDogW10sXG4gICAgICAgIGFnZW50SWQ6IHRoaXMuX2FnZW50SWRcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChyZXNwb25zZSkgPT4gdGhpcy5zZWFyY2hBaVNlcnZpY2UuZ2V0QW5zd2VyKHJlc3BvbnNlLnF1ZXN0aW9uSWQpKSxcbiAgICAgICAgc3dpdGNoTWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmICghcmVzcG9uc2UuZW50cnk/LmFuc3dlcikge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKGUpID0+IGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9xdWVyeUFuc3dlciA9IHJlc3BvbnNlLmVudHJ5O1xuICAgICAgICAgIHJldHVybiBmb3JrSm9pbih0aGlzLnF1ZXJ5QW5zd2VyLnJlZmVyZW5jZXMubWFwKChyZWZlcmVuY2UpID0+IHRoaXMubm9kZXNBcGlTZXJ2aWNlLmdldE5vZGUocmVmZXJlbmNlLnJlZmVyZW5jZUlkKSkpO1xuICAgICAgICB9KSxcbiAgICAgICAgcmV0cnlXaGVuKChlcnJvcnM6IE9ic2VydmFibGU8RXJyb3I+KSA9PiB0aGlzLmFpU2VhcmNoUmV0cnlXaGVuKGVycm9ycykpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiAodGhpcy5fbG9hZGluZyA9IGZhbHNlKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAobm9kZXMpID0+IHtcbiAgICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9taW1lVHlwZUljb25zQnlOb2RlSWRbbm9kZS5pZF0gPSB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKG5vZGUuY29udGVudD8ubWltZVR5cGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuX25vZGVzID0gbm9kZXM7XG4gICAgICAgICAgY29uc3Qgbm9kZXNJZHMgPSBub2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUuaWQpO1xuICAgICAgICAgIHRoaXMudmlld2VyU2VydmljZS5jdXN0b21Ob2Rlc09yZGVyID0gbm9kZXNJZHM7XG4gICAgICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLnNldCgnYWlSZWZlcmVuY2VzJywgSlNPTi5zdHJpbmdpZnkobm9kZXNJZHMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4gKHRoaXMuX2hhc0Fuc3dlcmluZ0Vycm9yID0gdHJ1ZSlcbiAgICAgICk7XG4gIH1cblxuICBvcGVuRmlsZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgIG5ldyBWaWV3Tm9kZUFjdGlvbihpZCwge1xuICAgICAgICBsb2NhdGlvbjogdGhpcy5yb3V0ZXIudXJsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFpU2VhcmNoUmV0cnlXaGVuKGVycm9yczogT2JzZXJ2YWJsZTxFcnJvcj4pOiBPYnNlcnZhYmxlPEVycm9yPiB7XG4gICAgdGhpcy5faGFzQW5zd2VyaW5nRXJyb3IgPSBmYWxzZTtcbiAgICBjb25zdCBkZWxheUJldHdlZW5SZXRyaWVzID0gMzAwMDtcbiAgICBjb25zdCBtYXhSZXRyaWVzID0gOTtcblxuICAgIHJldHVybiBlcnJvcnMucGlwZShcbiAgICAgIHNraXBXaGlsZSgoKSA9PiB0aGlzLmhhc0Fuc3dlcmluZ0Vycm9yKSxcbiAgICAgIGRlbGF5KGRlbGF5QmV0d2VlblJldHJpZXMpLFxuICAgICAgY29uY2F0TWFwKChlLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPT09IG1heFJldHJpZXMpIHtcbiAgICAgICAgICB0aGlzLl9oYXNBbnN3ZXJpbmdFcnJvciA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPGFjYS1wYWdlLWxheW91dD5cbiAgPGFjYS1zZWFyY2gtYWktaW5wdXQtY29udGFpbmVyXG4gICAgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtaGVhZGVyXCJcbiAgICBwbGFjZWhvbGRlcj1cIktOT1dMRURHRV9SRVRSSUVWQUwuU0VBUkNILlJFU1VMVFNfUEFHRS5RVUVSWV9JTlBVVF9QTEFDRUhPTERFUlwiXG4gICAgW2FnZW50SWRdPVwiYWdlbnRJZFwiXG4gICAgW3VzZWRJbkFpUmVzdWx0c1BhZ2VdPVwidHJ1ZVwiXG4gICAgKm5nSWY9XCIhaGFzRXJyb3IgJiYgYWdlbnRJZFwiIC8+XG4gIDxkaXZcbiAgICBjbGFzcz1cImFjYS1wYWdlLWxheW91dC1jb250ZW50XCJcbiAgICAqbmdJZj1cIiFoYXNFcnJvclwiPlxuICAgIDxkaXYgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLXJlc3VsdHMtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXN1bHRzLWNvbnRhaW5lci1xdWVyeVwiXG4gICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFjYS1zZWFyY2gtYWktcmVzdWx0cy1xdWVyeVwiPlxuICAgICAgICB7eyBzZWFyY2hRdWVyeSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXJcIlxuICAgICAgICBbY2xhc3MuYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItZXJyb3JdPVwiaGFzQW5zd2VyaW5nRXJyb3JcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nIGVsc2Ugc2tlbGV0b25cIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWJvZHlcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaGFzQW5zd2VyaW5nRXJyb3JcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLXJlc3BvbnNlLWNvbnRhaW5lci1ib2R5LXJlc3BvbnNlXCJcbiAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWNhLXNlYXJjaC1haS1yZXN1bHRzLXJlc3BvbnNlXCI+XG4gICAgICAgICAgICAgIHt7IHF1ZXJ5QW5zd2VyPy5hbnN3ZXIgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWJvZHktcmVzcG9uc2UtYWN0aW9uIGFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWJvZHktcmVzcG9uc2UtYWN0aW9uLXJlZ2VuZXJhdGlvblwiXG4gICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2hlY2tVbnNhdmVkQ2hhbmdlc0FuZFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWNhLXNlYXJjaC1haS1yZXN1bHRzLXJlZ2VuZXJhdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0tOT1dMRURHRV9SRVRSSUVWQUwuU0VBUkNILlJFU1VMVFNfUEFHRS5SRUdFTkVSQVRJT05fQlVUVE9OX0xBQkVMJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2FjaGVkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWJvZHktcmVzcG9uc2UtYWN0aW9uXCJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb3B5UmVzcG9uc2VUb0NsaXBib2FyZCgpXCJcbiAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWNhLXNlYXJjaC1haS1yZXN1bHRzLWNvcHlpbmctYnV0dG9uXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidLTk9XTEVER0VfUkVUUklFVkFMLlNFQVJDSC5SRVNVTFRTX1BBR0UuQ09QWV9CVVRUT05fTEFCRUwnIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jb3B5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keS1kaXZpZGVyXCIgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWJvZHktcmVmZXJlbmNlcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWJvZHktcmVmZXJlbmNlcy1jb250YWluZXItaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guUkVTVUxUU19QQUdFLlJFRkVSRU5DRURfRE9DVU1FTlRTX0hFQURFUicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWJvZHktcmVmZXJlbmNlcy1jb250YWluZXItZG9jdW1lbnRzXCI+XG4gICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWJvZHktcmVmZXJlbmNlcy1jb250YWluZXItZG9jdW1lbnRzLWRvY3VtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXNcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FjYS1zZWFyY2gtYWktcmVzdWx0cy0nICsgbm9kZS5pZCArICctZG9jdW1lbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWxlKG5vZGUuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm9wZW5GaWxlKG5vZGUuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgIG1hdC1saXN0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjYS1zZWFyY2gtYWktcmVzcG9uc2UtY29udGFpbmVyLWJvZHktcmVmZXJlbmNlcy1jb250YWluZXItZG9jdW1lbnRzLWRvY3VtZW50LWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFthbHRdPVwibm9kZS5jb250ZW50Py5taW1lVHlwZVwiIFtzcmNdPVwibWltZVR5cGVJY29uc0J5Tm9kZUlkW25vZGUuaWRdXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItYm9keS1yZWZlcmVuY2VzLWNvbnRhaW5lci1kb2N1bWVudHMtZG9jdW1lbnQtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImhhc0Fuc3dlcmluZ0Vycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWNhLXNlYXJjaC1haS1yZXNwb25zZS1jb250YWluZXItZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAge3sgJ0tOT1dMRURHRV9SRVRSSUVWQUwuU0VBUkNILkVSUk9SUy5MT0FESU5HX0VSUk9SJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBtYXQtZmxhdC1idXR0b25cbiAgICAgICAgICAgICAgKGNsaWNrKT1cInBlcmZvcm1BaVNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhY2Etc2VhcmNoLWFpLXJlc3BvbnNlLWNvbnRhaW5lci1lcnJvci1tZXNzYWdlLXJlZ2VuZXJhdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhY2Etc2VhcmNoLWFpLXJlc3VsdHMtZXJyb3ItcmVnZW5lcmF0aW9uLWJ1dHRvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJhY2Etc2VhcmNoLWFpLXJlc3BvbnNlLWNvbnRhaW5lci1lcnJvci1tZXNzYWdlLXJlZ2VuZXJhdGlvbi1idXR0b24taWNvblwiPmNhY2hlZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgIHt7ICdLTk9XTEVER0VfUkVUUklFVkFMLlNFQVJDSC5SRVNVTFRTX1BBR0UuUkVHRU5FUkFUSU9OX0JVVFRPTl9MQUJFTCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGFkZi1lbXB0eS1jb250ZW50XG4gICAgY2xhc3M9XCJhY2EtcGFnZS1sYXlvdXQtY29udGVudFwiXG4gICAgaWNvbj1cInN0YXJcIlxuICAgIHRpdGxlPVwiS05PV0xFREdFX1JFVFJJRVZBTC5TRUFSQ0guRVJST1JTLlBBR0VfTk9UX0FWQUlMQUJMRV9FUlJPUlwiXG4gICAgKm5nSWY9XCJoYXNFcnJvclwiIC8+XG48L2FjYS1wYWdlLWxheW91dD5cblxuPG5nLXRlbXBsYXRlICNza2VsZXRvbj5cbiAgPGRpdiBjbGFzcz1cImFkZi1za2VsZXRvblwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWRmLXNrZWxldG9uXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJhZGYtc2tlbGV0b24gYWRmLXNrZWxldG9uLWhhbGZcIj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -25,12 +25,10 @@ import { AppHookService, AppService } from '@alfresco/aca-shared';
25
25
  import { SearchByTermAction, SearchOptionIds } from '@alfresco/aca-shared/store';
26
26
  import { SearchQueryBuilderService } from '@alfresco/adf-content-services';
27
27
  import { AppConfigService, NotificationService } from '@alfresco/adf-core';
28
- import { Component, inject, ViewChild, ViewEncapsulation } from '@angular/core';
28
+ import { Component, DestroyRef, inject, ViewChild, ViewEncapsulation } from '@angular/core';
29
29
  import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
30
30
  import { ActivatedRoute, PRIMARY_OUTLET, Router } from '@angular/router';
31
31
  import { Store } from '@ngrx/store';
32
- import { Subject } from 'rxjs';
33
- import { takeUntil } from 'rxjs/operators';
34
32
  import { SearchInputControlComponent } from '../search-input-control/search-input-control.component';
35
33
  import { SearchNavigationService } from '../search-navigation.service';
36
34
  import { SearchLibrariesQueryBuilderService } from '../search-libraries-results/search-libraries-query-builder.service';
@@ -44,6 +42,7 @@ import { A11yModule } from '@angular/cdk/a11y';
44
42
  import { MatCheckboxModule } from '@angular/material/checkbox';
45
43
  import { FormsModule } from '@angular/forms';
46
44
  import { extractSearchedWordFromEncodedQuery } from '../../../utils/aca-search-utils';
45
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
47
46
  import * as i0 from "@angular/core";
48
47
  import * as i1 from "@alfresco/adf-content-services";
49
48
  import * as i2 from "../search-libraries-results/search-libraries-query-builder.service";
@@ -73,7 +72,6 @@ class SearchInputComponent {
73
72
  appService;
74
73
  searchInputService;
75
74
  notificationService = inject(NotificationService);
76
- onDestroy$ = new Subject();
77
75
  has400LibraryError = false;
78
76
  hasLibrariesConstraint = false;
79
77
  searchOnChange;
@@ -100,6 +98,7 @@ class SearchInputComponent {
100
98
  ];
101
99
  searchInputControl;
102
100
  trigger;
101
+ destroyRef = inject(DestroyRef);
103
102
  constructor(queryBuilder, queryLibrariesBuilder, config, router, route, store, appHookService, appService, searchInputService) {
104
103
  this.queryBuilder = queryBuilder;
105
104
  this.queryLibrariesBuilder = queryLibrariesBuilder;
@@ -114,14 +113,14 @@ class SearchInputComponent {
114
113
  }
115
114
  ngOnInit() {
116
115
  this.showInputValue();
117
- this.route.queryParams.pipe(takeUntil(this.onDestroy$)).subscribe((params) => {
116
+ this.route.queryParams.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((params) => {
118
117
  const encodedQuery = params['q'];
119
118
  if (encodedQuery && this.searchInputControl) {
120
119
  this.searchedWord = extractSearchedWordFromEncodedQuery(encodedQuery);
121
120
  this.searchInputControl.searchTerm = this.searchedWord;
122
121
  }
123
122
  });
124
- this.appHookService.library400Error.pipe(takeUntil(this.onDestroy$)).subscribe(() => {
123
+ this.appHookService.library400Error.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
125
124
  this.has400LibraryError = true;
126
125
  this.hasLibrariesConstraint = this.evaluateLibrariesConstraint();
127
126
  });
@@ -140,8 +139,6 @@ class SearchInputComponent {
140
139
  }
141
140
  ngOnDestroy() {
142
141
  this.appService.setAppNavbarMode('expanded');
143
- this.onDestroy$.next(true);
144
- this.onDestroy$.complete();
145
142
  this.removeContentFilters();
146
143
  }
147
144
  onMenuOpened() {
@@ -294,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
294
291
  type: ViewChild,
295
292
  args: [MatMenuTrigger, { static: true }]
296
293
  }] } });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLWlucHV0L3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFBWSxrQkFBa0IsRUFBRSxlQUFlLEVBQXFCLE1BQU0sNEJBQTRCLENBQUM7QUFDOUcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQVUsY0FBYyxFQUFFLE1BQU0sRUFBd0MsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSwy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QzVCLFlBQ1Msa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7a1dBaUNuQyxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqRCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBBcHBIb29rU2VydmljZSwgQXBwU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IEFwcFN0b3JlLCBTZWFyY2hCeVRlcm1BY3Rpb24sIFNlYXJjaE9wdGlvbklkcywgU2VhcmNoT3B0aW9uTW9kZWwgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UsIE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlLCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUFJJTUFSWV9PVVRMRVQsIFJvdXRlciwgVXJsU2VnbWVudCwgVXJsU2VnbWVudEdyb3VwLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWlucHV0LWNvbnRyb2wvc2VhcmNoLWlucHV0LWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hMaWJyYXJpZXNRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoLWxpYnJhcmllcy1yZXN1bHRzL3NlYXJjaC1saWJyYXJpZXMtcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBleHRyYWN0U2VhcmNoZWRXb3JkRnJvbUVuY29kZWRRdWVyeSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FjYS1zZWFyY2gtdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTZWFyY2hJbnB1dENvbnRyb2xDb21wb25lbnRcbiAgXSxcbiAgc2VsZWN0b3I6ICdhY2Etc2VhcmNoLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYWNhLXNlYXJjaC1pbnB1dCcgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gIG9uRGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBoYXM0MDBMaWJyYXJ5RXJyb3IgPSBmYWxzZTtcbiAgaGFzTGlicmFyaWVzQ29uc3RyYWludCA9IGZhbHNlO1xuICBzZWFyY2hPbkNoYW5nZTogYm9vbGVhbjtcblxuICBzZWFyY2hlZFdvcmQ6IHN0cmluZyA9IG51bGw7XG4gIHNlYXJjaE9wdGlvbnM6IEFycmF5PFNlYXJjaE9wdGlvbk1vZGVsPiA9IFtcbiAgICB7XG4gICAgICBpZDogU2VhcmNoT3B0aW9uSWRzLkZpbGVzLFxuICAgICAga2V5OiAnU0VBUkNILklOUFVULkZJTEVTJyxcbiAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgIHNob3VsZERpc2FibGU6IHRoaXMuaXNMaWJyYXJpZXNDaGVja2VkLmJpbmQodGhpcylcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBTZWFyY2hPcHRpb25JZHMuRm9sZGVycyxcbiAgICAgIGtleTogJ1NFQVJDSC5JTlBVVC5GT0xERVJTJyxcbiAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgIHNob3VsZERpc2FibGU6IHRoaXMuaXNMaWJyYXJpZXNDaGVja2VkLmJpbmQodGhpcylcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBTZWFyY2hPcHRpb25JZHMuTGlicmFyaWVzLFxuICAgICAga2V5OiAnU0VBUkNILklOUFVULkxJQlJBUklFUycsXG4gICAgICB2YWx1ZTogdGhpcy5vbkxpYnJhcmllc1NlYXJjaFJlc3VsdHMsXG4gICAgICBzaG91bGREaXNhYmxlOiB0aGlzLmlzQ29udGVudENoZWNrZWQuYmluZCh0aGlzKVxuICAgIH1cbiAgXTtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dENvbnRyb2wnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBzZWFyY2hJbnB1dENvbnRyb2w6IFNlYXJjaElucHV0Q29udHJvbENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB0cmlnZ2VyOiBNYXRNZW51VHJpZ2dlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1ZXJ5QnVpbGRlcjogU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1ZXJ5TGlicmFyaWVzQnVpbGRlcjogU2VhcmNoTGlicmFyaWVzUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogQXBwQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFN0b3JlPEFwcFN0b3JlPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IHNlYXJjaElucHV0U2VydmljZTogU2VhcmNoTmF2aWdhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZWFyY2hPbkNoYW5nZSA9IHRoaXMuY29uZmlnLmdldDxib29sZWFuPignc2VhcmNoLmFjYTp0cmlnZ2VyZWRPbkNoYW5nZScsIHRydWUpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zaG93SW5wdXRWYWx1ZSgpO1xuXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKHBhcmFtczogUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBlbmNvZGVkUXVlcnkgPSBwYXJhbXNbJ3EnXTtcbiAgICAgIGlmIChlbmNvZGVkUXVlcnkgJiYgdGhpcy5zZWFyY2hJbnB1dENvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBleHRyYWN0U2VhcmNoZWRXb3JkRnJvbUVuY29kZWRRdWVyeShlbmNvZGVkUXVlcnkpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0Q29udHJvbC5zZWFyY2hUZXJtID0gdGhpcy5zZWFyY2hlZFdvcmQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcEhvb2tTZXJ2aWNlLmxpYnJhcnk0MDBFcnJvci5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5oYXM0MDBMaWJyYXJ5RXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy5oYXNMaWJyYXJpZXNDb25zdHJhaW50ID0gdGhpcy5ldmFsdWF0ZUxpYnJhcmllc0NvbnN0cmFpbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4aXRTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dFNlcnZpY2UubmF2aWdhdGVCYWNrKCk7XG4gIH1cblxuICBzaG93SW5wdXRWYWx1ZSgpIHtcbiAgICB0aGlzLmFwcFNlcnZpY2Uuc2V0QXBwTmF2YmFyTW9kZSgnY29sbGFwc2VkJyk7XG4gICAgdGhpcy5oYXM0MDBMaWJyYXJ5RXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmhhc0xpYnJhcmllc0NvbnN0cmFpbnQgPSB0aGlzLmV2YWx1YXRlTGlicmFyaWVzQ29uc3RyYWludCgpO1xuICAgIHRoaXMuc2VhcmNoZWRXb3JkID0gdGhpcy5nZXRVcmxTZWFyY2hUZXJtKCk7XG5cbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dENvbnRyb2wpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXRDb250cm9sLnNlYXJjaFRlcm0gPSB0aGlzLnNlYXJjaGVkV29yZDtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcFNlcnZpY2Uuc2V0QXBwTmF2YmFyTW9kZSgnZXhwYW5kZWQnKTtcbiAgICB0aGlzLm9uRGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLnJlbW92ZUNvbnRlbnRGaWx0ZXJzKCk7XG4gIH1cblxuICBvbk1lbnVPcGVuZWQoKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXRDb250cm9sKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0Q29udHJvbC5zZWFyY2hJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgc3VibWl0cyB0aGUgc2VhcmNoLCBlLmcuIGhpdHMgZW50ZXIgb3IgY2xpY2tzIHN1Ym1pdFxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgUGFyYW1ldGVycyByZWxhdGluZyB0byB0aGUgc2VhcmNoXG4gICAqL1xuICBvblNlYXJjaFN1Ym1pdChldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IGV2ZW50LnRhcmdldCA/IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgOiBldmVudDtcbiAgICBpZiAoc2VhcmNoVGVybSkge1xuICAgICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBzZWFyY2hUZXJtO1xuXG4gICAgICB0aGlzLnNlYXJjaEJ5T3B0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoJ0FQUC5CUk9XU0UuU0VBUkNILkVNUFRZX1NFQVJDSCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5jbG9zZU1lbnUoKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaENoYW5nZShzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoT25DaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuaGFzTGlicmFyaWVzQ29uc3RyYWludCA9IHRoaXMuZXZhbHVhdGVMaWJyYXJpZXNDb25zdHJhaW50KCk7XG4gICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBzZWFyY2hUZXJtO1xuICB9XG5cbiAgc2VhcmNoQnlPcHRpb24oKSB7XG4gICAgdGhpcy5zeW5jSW5wdXRWYWx1ZXMoKTtcbiAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmlzTGlicmFyaWVzQ2hlY2tlZCgpKSB7XG4gICAgICB0aGlzLmhhc0xpYnJhcmllc0NvbnN0cmFpbnQgPSB0aGlzLmV2YWx1YXRlTGlicmFyaWVzQ29uc3RyYWludCgpO1xuICAgICAgaWYgKHRoaXMub25MaWJyYXJpZXNTZWFyY2hSZXN1bHRzICYmIHRoaXMuaXNTYW1lU2VhcmNoVGVybSgpKSB7XG4gICAgICAgIHRoaXMucXVlcnlMaWJyYXJpZXNCdWlsZGVyLnVwZGF0ZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaGVkV29yZCkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZWFyY2hCeVRlcm1BY3Rpb24odGhpcy5zZWFyY2hlZFdvcmQsIHRoaXMuc2VhcmNoT3B0aW9ucykpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc0ZvbGRlcnNDaGVja2VkKCkgJiYgIXRoaXMuaXNGaWxlc0NoZWNrZWQoKSkge1xuICAgICAgICB0aGlzLmZpbHRlckNvbnRlbnQoU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmlsZXNDaGVja2VkKCkgJiYgIXRoaXMuaXNGb2xkZXJzQ2hlY2tlZCgpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGVudChTZWFyY2hPcHRpb25JZHMuRmlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVDb250ZW50RmlsdGVycygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vblNlYXJjaFJlc3VsdHMgJiYgdGhpcy5pc1NhbWVTZWFyY2hUZXJtKCkpIHtcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIudXBkYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoZWRXb3JkKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNlYXJjaEJ5VGVybUFjdGlvbih0aGlzLnNlYXJjaGVkV29yZCwgdGhpcy5zZWFyY2hPcHRpb25zKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9uTGlicmFyaWVzU2VhcmNoUmVzdWx0cygpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXI/LnVybC5pbmRleE9mKCcvc2VhcmNoLWxpYnJhcmllcycpID09PSAwO1xuICB9XG5cbiAgZ2V0IG9uU2VhcmNoUmVzdWx0cygpIHtcbiAgICByZXR1cm4gIXRoaXMub25MaWJyYXJpZXNTZWFyY2hSZXN1bHRzICYmIHRoaXMucm91dGVyPy51cmwuaW5kZXhPZignL3NlYXJjaCcpID09PSAwO1xuICB9XG5cbiAgaXNGaWxlc0NoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNPcHRpb25DaGVja2VkKFNlYXJjaE9wdGlvbklkcy5GaWxlcyk7XG4gIH1cblxuICBpc0ZvbGRlcnNDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzT3B0aW9uQ2hlY2tlZChTZWFyY2hPcHRpb25JZHMuRm9sZGVycyk7XG4gIH1cblxuICBpc0xpYnJhcmllc0NoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNPcHRpb25DaGVja2VkKFNlYXJjaE9wdGlvbklkcy5MaWJyYXJpZXMpO1xuICB9XG5cbiAgaXNPcHRpb25DaGVja2VkKG9wdGlvbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBsaWJJdGVtID0gdGhpcy5zZWFyY2hPcHRpb25zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG9wdGlvbklkKTtcbiAgICByZXR1cm4gISFsaWJJdGVtICYmIGxpYkl0ZW0udmFsdWU7XG4gIH1cblxuICBpc0NvbnRlbnRDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRmlsZXNDaGVja2VkKCkgfHwgdGhpcy5pc0ZvbGRlcnNDaGVja2VkKCk7XG4gIH1cblxuICBldmFsdWF0ZUxpYnJhcmllc0NvbnN0cmFpbnQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNMaWJyYXJpZXNDaGVja2VkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhczQwMExpYnJhcnlFcnJvciB8fCB0aGlzLnNlYXJjaElucHV0Q29udHJvbC5pc1Rlcm1Ub29TaG9ydCgpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmaWx0ZXJDb250ZW50KG9wdGlvbjogU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMgfCBTZWFyY2hPcHRpb25JZHMuRmlsZXMpIHtcbiAgICBjb25zdCBvcHBvc2l0ZU9wdGlvbiA9IG9wdGlvbiA9PT0gU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMgPyBTZWFyY2hPcHRpb25JZHMuRmlsZXMgOiBTZWFyY2hPcHRpb25JZHMuRm9sZGVycztcblxuICAgIHRoaXMucXVlcnlCdWlsZGVyLmFkZEZpbHRlclF1ZXJ5KGArVFlQRTonY206JHtvcHRpb259J2ApO1xuICAgIHRoaXMucXVlcnlCdWlsZGVyLnJlbW92ZUZpbHRlclF1ZXJ5KGArVFlQRTonY206JHtvcHBvc2l0ZU9wdGlvbn0nYCk7XG4gIH1cblxuICByZW1vdmVDb250ZW50RmlsdGVycygpIHtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5yZW1vdmVGaWx0ZXJRdWVyeShgK1RZUEU6J2NtOiR7U2VhcmNoT3B0aW9uSWRzLkZpbGVzfSdgKTtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5yZW1vdmVGaWx0ZXJRdWVyeShgK1RZUEU6J2NtOiR7U2VhcmNoT3B0aW9uSWRzLkZvbGRlcnN9J2ApO1xuICB9XG5cbiAgc3luY0lucHV0VmFsdWVzKCkge1xuICAgIGlmICh0aGlzLnNlYXJjaElucHV0Q29udHJvbC5zZWFyY2hUZXJtICE9PSB0aGlzLnNlYXJjaGVkV29yZCkge1xuICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXRDb250cm9sLnNlYXJjaFRlcm0pIHtcbiAgICAgICAgdGhpcy5zZWFyY2hlZFdvcmQgPSB0aGlzLnNlYXJjaElucHV0Q29udHJvbC5zZWFyY2hUZXJtO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dENvbnRyb2wuc2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoZWRXb3JkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldFVybFNlYXJjaFRlcm0oKTogc3RyaW5nIHtcbiAgICBsZXQgc2VhcmNoVGVybSA9ICcnO1xuICAgIGlmICh0aGlzLm9uU2VhcmNoUmVzdWx0cyB8fCB0aGlzLm9uTGlicmFyaWVzU2VhcmNoUmVzdWx0cykge1xuICAgICAgY29uc3QgdXJsVHJlZTogVXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCk7XG4gICAgICBjb25zdCB1cmxTZWdtZW50R3JvdXA6IFVybFNlZ21lbnRHcm91cCA9IHVybFRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG5cbiAgICAgIGlmICh1cmxTZWdtZW50R3JvdXApIHtcbiAgICAgICAgY29uc3QgdXJsU2VnbWVudHM6IFVybFNlZ21lbnRbXSA9IHVybFNlZ21lbnRHcm91cC5zZWdtZW50cztcbiAgICAgICAgc2VhcmNoVGVybSA9IGV4dHJhY3RTZWFyY2hlZFdvcmRGcm9tRW5jb2RlZFF1ZXJ5KHVybFNlZ21lbnRzWzBdLnBhcmFtZXRlcnNbJ3EnXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlYXJjaFRlcm07XG4gIH1cblxuICBpc1NhbWVTZWFyY2hUZXJtKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHVybFNlYXJjaFRlcm0gPSB0aGlzLmdldFVybFNlYXJjaFRlcm0oKTtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hlZFdvcmQgPT09IHVybFNlYXJjaFRlcm07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNvbnRhaW5lclwiXG4gIFttYXRNZW51VHJpZ2dlckZvcl09XCJzZWFyY2hPcHRpb25zTWVudVwiXG4gIChtZW51T3BlbmVkKT1cIm9uTWVudU9wZW5lZCgpXCJcbiAgKG1lbnVDbG9zZWQpPVwic3luY0lucHV0VmFsdWVzKClcIlxuPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhcHAtaW5wdXQtZm9ybS1maWVsZFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImFjYS1zZWFyY2gtaW5wdXQtLXNlYXJjaC1idXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0UHJlZml4IChjbGljayk9XCJzZWFyY2hCeU9wdGlvbigpXCIgW3RpdGxlXT1cIidTRUFSQ0guQlVUVE9OLlRPT0xUSVAnIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8bWF0LWljb24gW2F0dHIuYXJpYS1sYWJlbF09XCInU0VBUkNILkJVVFRPTi5BUklBLUxBQkVMJyB8IHRyYW5zbGF0ZVwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTRUFSQ0guSU5QVVQuQVJJQS1MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgIFt2YWx1ZV09XCJzZWFyY2hlZFdvcmRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRUFSQ0guSU5QVVQuUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlXCJcbiAgICAvPlxuXG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJhcHAtc3VmZml4LWljb25cIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYWNhLXNlYXJjaC1pbnB1dC0tY2xvc2UtYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJleGl0U2VhcmNoKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXBwLXN1ZmZpeC1pY29uXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cblxuPG1hdC1tZW51ICNzZWFyY2hPcHRpb25zTWVudT1cIm1hdE1lbnVcIiBbb3ZlcmxhcFRyaWdnZXJdPVwidHJ1ZVwiIGNsYXNzPVwiYXBwLXNlYXJjaC1vcHRpb25zLW1lbnVcIj5cbiAgPGRpdiAoa2V5ZG93bi50YWIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGtleWRvd24uc2hpZnQudGFiKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHRhYmluZGV4PTA+XG4gICAgPGRpdiBjZGtUcmFwRm9jdXM+XG4gICAgICA8YXBwLXNlYXJjaC1pbnB1dC1jb250cm9sXG4gICAgICAgICNzZWFyY2hJbnB1dENvbnRyb2xcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChzdWJtaXQpPVwib25TZWFyY2hTdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgIChzZWFyY2hDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiaGFzTGlicmFyaWVzQ29uc3RyYWludFwiIGNsYXNzPVwiYXBwLXNlYXJjaC1oaW50XCI+e3sgJ1NFQVJDSC5JTlBVVC5ISU5UJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWhpbnQ+XG5cbiAgICAgIDxkaXYgaWQ9XCJzZWFyY2gtb3B0aW9uc1wiIGNsYXNzPVwiYXBwLXNlYXJjaC1vcHRpb25zXCI+XG4gICAgICAgIDxtYXQtY2hlY2tib3ggKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWFyY2hPcHRpb25zXCJcbiAgICAgICAgICBpZD1cInt7IG9wdGlvbi5pZCB9fVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uc2hvdWxkRGlzYWJsZSgpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaEJ5T3B0aW9uKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgb3B0aW9uLmtleSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG4iXX0=
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FjYS1jb250ZW50L3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoLWlucHV0L3NlYXJjaC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY2EtY29udGVudC9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFBWSxrQkFBa0IsRUFBRSxlQUFlLEVBQXFCLE1BQU0sNEJBQTRCLENBQUM7QUFDOUcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFxQixTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0csT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFVLGNBQWMsRUFBRSxNQUFNLEVBQXdDLE1BQU0saUJBQWlCLENBQUM7QUFDdkgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztB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QUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqRCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNCBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBBcHBIb29rU2VydmljZSwgQXBwU2VydmljZSB9IGZyb20gJ0BhbGZyZXNjby9hY2Etc2hhcmVkJztcbmltcG9ydCB7IEFwcFN0b3JlLCBTZWFyY2hCeVRlcm1BY3Rpb24sIFNlYXJjaE9wdGlvbklkcywgU2VhcmNoT3B0aW9uTW9kZWwgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBTZWFyY2hRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb250ZW50LXNlcnZpY2VzJztcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UsIE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlLCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcywgUFJJTUFSWV9PVVRMRVQsIFJvdXRlciwgVXJsU2VnbWVudCwgVXJsU2VnbWVudEdyb3VwLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWlucHV0LWNvbnRyb2wvc2VhcmNoLWlucHV0LWNvbnRyb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hMaWJyYXJpZXNRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoLWxpYnJhcmllcy1yZXN1bHRzL3NlYXJjaC1saWJyYXJpZXMtcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBleHRyYWN0U2VhcmNoZWRXb3JkRnJvbUVuY29kZWRRdWVyeSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FjYS1zZWFyY2gtdXRpbHMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTZWFyY2hJbnB1dENvbnRyb2xDb21wb25lbnRcbiAgXSxcbiAgc2VsZWN0b3I6ICdhY2Etc2VhcmNoLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYWNhLXNlYXJjaC1pbnB1dCcgfVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gIGhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICBoYXNMaWJyYXJpZXNDb25zdHJhaW50ID0gZmFsc2U7XG4gIHNlYXJjaE9uQ2hhbmdlOiBib29sZWFuO1xuXG4gIHNlYXJjaGVkV29yZDogc3RyaW5nID0gbnVsbDtcbiAgc2VhcmNoT3B0aW9uczogQXJyYXk8U2VhcmNoT3B0aW9uTW9kZWw+ID0gW1xuICAgIHtcbiAgICAgIGlkOiBTZWFyY2hPcHRpb25JZHMuRmlsZXMsXG4gICAgICBrZXk6ICdTRUFSQ0guSU5QVVQuRklMRVMnLFxuICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgc2hvdWxkRGlzYWJsZTogdGhpcy5pc0xpYnJhcmllc0NoZWNrZWQuYmluZCh0aGlzKVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFNlYXJjaE9wdGlvbklkcy5Gb2xkZXJzLFxuICAgICAga2V5OiAnU0VBUkNILklOUFVULkZPTERFUlMnLFxuICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgc2hvdWxkRGlzYWJsZTogdGhpcy5pc0xpYnJhcmllc0NoZWNrZWQuYmluZCh0aGlzKVxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IFNlYXJjaE9wdGlvbklkcy5MaWJyYXJpZXMsXG4gICAgICBrZXk6ICdTRUFSQ0guSU5QVVQuTElCUkFSSUVTJyxcbiAgICAgIHZhbHVlOiB0aGlzLm9uTGlicmFyaWVzU2VhcmNoUmVzdWx0cyxcbiAgICAgIHNob3VsZERpc2FibGU6IHRoaXMuaXNDb250ZW50Q2hlY2tlZC5iaW5kKHRoaXMpXG4gICAgfVxuICBdO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Q29udHJvbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNlYXJjaElucHV0Q29udHJvbDogU2VhcmNoSW5wdXRDb250cm9sQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHRyaWdnZXI6IE1hdE1lbnVUcmlnZ2VyO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1ZXJ5QnVpbGRlcjogU2VhcmNoUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHF1ZXJ5TGlicmFyaWVzQnVpbGRlcjogU2VhcmNoTGlicmFyaWVzUXVlcnlCdWlsZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogQXBwQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmU6IFN0b3JlPEFwcFN0b3JlPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcEhvb2tTZXJ2aWNlOiBBcHBIb29rU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcFNlcnZpY2U6IEFwcFNlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IHNlYXJjaElucHV0U2VydmljZTogU2VhcmNoTmF2aWdhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZWFyY2hPbkNoYW5nZSA9IHRoaXMuY29uZmlnLmdldDxib29sZWFuPignc2VhcmNoLmFjYTp0cmlnZ2VyZWRPbkNoYW5nZScsIHRydWUpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zaG93SW5wdXRWYWx1ZSgpO1xuXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHBhcmFtczogUGFyYW1zKSA9PiB7XG4gICAgICBjb25zdCBlbmNvZGVkUXVlcnkgPSBwYXJhbXNbJ3EnXTtcbiAgICAgIGlmIChlbmNvZGVkUXVlcnkgJiYgdGhpcy5zZWFyY2hJbnB1dENvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBleHRyYWN0U2VhcmNoZWRXb3JkRnJvbUVuY29kZWRRdWVyeShlbmNvZGVkUXVlcnkpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0Q29udHJvbC5zZWFyY2hUZXJtID0gdGhpcy5zZWFyY2hlZFdvcmQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcEhvb2tTZXJ2aWNlLmxpYnJhcnk0MDBFcnJvci5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5oYXM0MDBMaWJyYXJ5RXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy5oYXNMaWJyYXJpZXNDb25zdHJhaW50ID0gdGhpcy5ldmFsdWF0ZUxpYnJhcmllc0NvbnN0cmFpbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4aXRTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dFNlcnZpY2UubmF2aWdhdGVCYWNrKCk7XG4gIH1cblxuICBzaG93SW5wdXRWYWx1ZSgpIHtcbiAgICB0aGlzLmFwcFNlcnZpY2Uuc2V0QXBwTmF2YmFyTW9kZSgnY29sbGFwc2VkJyk7XG4gICAgdGhpcy5oYXM0MDBMaWJyYXJ5RXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmhhc0xpYnJhcmllc0NvbnN0cmFpbnQgPSB0aGlzLmV2YWx1YXRlTGlicmFyaWVzQ29uc3RyYWludCgpO1xuICAgIHRoaXMuc2VhcmNoZWRXb3JkID0gdGhpcy5nZXRVcmxTZWFyY2hUZXJtKCk7XG5cbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dENvbnRyb2wpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXRDb250cm9sLnNlYXJjaFRlcm0gPSB0aGlzLnNlYXJjaGVkV29yZDtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcFNlcnZpY2Uuc2V0QXBwTmF2YmFyTW9kZSgnZXhwYW5kZWQnKTtcbiAgICB0aGlzLnJlbW92ZUNvbnRlbnRGaWx0ZXJzKCk7XG4gIH1cblxuICBvbk1lbnVPcGVuZWQoKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXRDb250cm9sKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0Q29udHJvbC5zZWFyY2hJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgc3VibWl0cyB0aGUgc2VhcmNoLCBlLmcuIGhpdHMgZW50ZXIgb3IgY2xpY2tzIHN1Ym1pdFxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnQgUGFyYW1ldGVycyByZWxhdGluZyB0byB0aGUgc2VhcmNoXG4gICAqL1xuICBvblNlYXJjaFN1Ym1pdChldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IGV2ZW50LnRhcmdldCA/IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgOiBldmVudDtcbiAgICBpZiAoc2VhcmNoVGVybSkge1xuICAgICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBzZWFyY2hUZXJtO1xuXG4gICAgICB0aGlzLnNlYXJjaEJ5T3B0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zaG93RXJyb3IoJ0FQUC5CUk9XU0UuU0VBUkNILkVNUFRZX1NFQVJDSCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRyaWdnZXIpIHtcbiAgICAgIHRoaXMudHJpZ2dlci5jbG9zZU1lbnUoKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaENoYW5nZShzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoT25DaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuaGFzTGlicmFyaWVzQ29uc3RyYWludCA9IHRoaXMuZXZhbHVhdGVMaWJyYXJpZXNDb25zdHJhaW50KCk7XG4gICAgdGhpcy5zZWFyY2hlZFdvcmQgPSBzZWFyY2hUZXJtO1xuICB9XG5cbiAgc2VhcmNoQnlPcHRpb24oKSB7XG4gICAgdGhpcy5zeW5jSW5wdXRWYWx1ZXMoKTtcbiAgICB0aGlzLmhhczQwMExpYnJhcnlFcnJvciA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmlzTGlicmFyaWVzQ2hlY2tlZCgpKSB7XG4gICAgICB0aGlzLmhhc0xpYnJhcmllc0NvbnN0cmFpbnQgPSB0aGlzLmV2YWx1YXRlTGlicmFyaWVzQ29uc3RyYWludCgpO1xuICAgICAgaWYgKHRoaXMub25MaWJyYXJpZXNTZWFyY2hSZXN1bHRzICYmIHRoaXMuaXNTYW1lU2VhcmNoVGVybSgpKSB7XG4gICAgICAgIHRoaXMucXVlcnlMaWJyYXJpZXNCdWlsZGVyLnVwZGF0ZSgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaGVkV29yZCkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBTZWFyY2hCeVRlcm1BY3Rpb24odGhpcy5zZWFyY2hlZFdvcmQsIHRoaXMuc2VhcmNoT3B0aW9ucykpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pc0ZvbGRlcnNDaGVja2VkKCkgJiYgIXRoaXMuaXNGaWxlc0NoZWNrZWQoKSkge1xuICAgICAgICB0aGlzLmZpbHRlckNvbnRlbnQoU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmlsZXNDaGVja2VkKCkgJiYgIXRoaXMuaXNGb2xkZXJzQ2hlY2tlZCgpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyQ29udGVudChTZWFyY2hPcHRpb25JZHMuRmlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVDb250ZW50RmlsdGVycygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vblNlYXJjaFJlc3VsdHMgJiYgdGhpcy5pc1NhbWVTZWFyY2hUZXJtKCkpIHtcbiAgICAgICAgdGhpcy5xdWVyeUJ1aWxkZXIudXBkYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoZWRXb3JkKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNlYXJjaEJ5VGVybUFjdGlvbih0aGlzLnNlYXJjaGVkV29yZCwgdGhpcy5zZWFyY2hPcHRpb25zKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9uTGlicmFyaWVzU2VhcmNoUmVzdWx0cygpIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXI/LnVybC5pbmRleE9mKCcvc2VhcmNoLWxpYnJhcmllcycpID09PSAwO1xuICB9XG5cbiAgZ2V0IG9uU2VhcmNoUmVzdWx0cygpIHtcbiAgICByZXR1cm4gIXRoaXMub25MaWJyYXJpZXNTZWFyY2hSZXN1bHRzICYmIHRoaXMucm91dGVyPy51cmwuaW5kZXhPZignL3NlYXJjaCcpID09PSAwO1xuICB9XG5cbiAgaXNGaWxlc0NoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNPcHRpb25DaGVja2VkKFNlYXJjaE9wdGlvbklkcy5GaWxlcyk7XG4gIH1cblxuICBpc0ZvbGRlcnNDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzT3B0aW9uQ2hlY2tlZChTZWFyY2hPcHRpb25JZHMuRm9sZGVycyk7XG4gIH1cblxuICBpc0xpYnJhcmllc0NoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNPcHRpb25DaGVja2VkKFNlYXJjaE9wdGlvbklkcy5MaWJyYXJpZXMpO1xuICB9XG5cbiAgaXNPcHRpb25DaGVja2VkKG9wdGlvbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBsaWJJdGVtID0gdGhpcy5zZWFyY2hPcHRpb25zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG9wdGlvbklkKTtcbiAgICByZXR1cm4gISFsaWJJdGVtICYmIGxpYkl0ZW0udmFsdWU7XG4gIH1cblxuICBpc0NvbnRlbnRDaGVja2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRmlsZXNDaGVja2VkKCkgfHwgdGhpcy5pc0ZvbGRlcnNDaGVja2VkKCk7XG4gIH1cblxuICBldmFsdWF0ZUxpYnJhcmllc0NvbnN0cmFpbnQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNMaWJyYXJpZXNDaGVja2VkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhczQwMExpYnJhcnlFcnJvciB8fCB0aGlzLnNlYXJjaElucHV0Q29udHJvbC5pc1Rlcm1Ub29TaG9ydCgpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmaWx0ZXJDb250ZW50KG9wdGlvbjogU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMgfCBTZWFyY2hPcHRpb25JZHMuRmlsZXMpIHtcbiAgICBjb25zdCBvcHBvc2l0ZU9wdGlvbiA9IG9wdGlvbiA9PT0gU2VhcmNoT3B0aW9uSWRzLkZvbGRlcnMgPyBTZWFyY2hPcHRpb25JZHMuRmlsZXMgOiBTZWFyY2hPcHRpb25JZHMuRm9sZGVycztcblxuICAgIHRoaXMucXVlcnlCdWlsZGVyLmFkZEZpbHRlclF1ZXJ5KGArVFlQRTonY206JHtvcHRpb259J2ApO1xuICAgIHRoaXMucXVlcnlCdWlsZGVyLnJlbW92ZUZpbHRlclF1ZXJ5KGArVFlQRTonY206JHtvcHBvc2l0ZU9wdGlvbn0nYCk7XG4gIH1cblxuICByZW1vdmVDb250ZW50RmlsdGVycygpIHtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5yZW1vdmVGaWx0ZXJRdWVyeShgK1RZUEU6J2NtOiR7U2VhcmNoT3B0aW9uSWRzLkZpbGVzfSdgKTtcbiAgICB0aGlzLnF1ZXJ5QnVpbGRlci5yZW1vdmVGaWx0ZXJRdWVyeShgK1RZUEU6J2NtOiR7U2VhcmNoT3B0aW9uSWRzLkZvbGRlcnN9J2ApO1xuICB9XG5cbiAgc3luY0lucHV0VmFsdWVzKCkge1xuICAgIGlmICh0aGlzLnNlYXJjaElucHV0Q29udHJvbC5zZWFyY2hUZXJtICE9PSB0aGlzLnNlYXJjaGVkV29yZCkge1xuICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXRDb250cm9sLnNlYXJjaFRlcm0pIHtcbiAgICAgICAgdGhpcy5zZWFyY2hlZFdvcmQgPSB0aGlzLnNlYXJjaElucHV0Q29udHJvbC5zZWFyY2hUZXJtO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dENvbnRyb2wuc2VhcmNoVGVybSA9IHRoaXMuc2VhcmNoZWRXb3JkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldFVybFNlYXJjaFRlcm0oKTogc3RyaW5nIHtcbiAgICBsZXQgc2VhcmNoVGVybSA9ICcnO1xuICAgIGlmICh0aGlzLm9uU2VhcmNoUmVzdWx0cyB8fCB0aGlzLm9uTGlicmFyaWVzU2VhcmNoUmVzdWx0cykge1xuICAgICAgY29uc3QgdXJsVHJlZTogVXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCk7XG4gICAgICBjb25zdCB1cmxTZWdtZW50R3JvdXA6IFVybFNlZ21lbnRHcm91cCA9IHVybFRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG5cbiAgICAgIGlmICh1cmxTZWdtZW50R3JvdXApIHtcbiAgICAgICAgY29uc3QgdXJsU2VnbWVudHM6IFVybFNlZ21lbnRbXSA9IHVybFNlZ21lbnRHcm91cC5zZWdtZW50cztcbiAgICAgICAgc2VhcmNoVGVybSA9IGV4dHJhY3RTZWFyY2hlZFdvcmRGcm9tRW5jb2RlZFF1ZXJ5KHVybFNlZ21lbnRzWzBdLnBhcmFtZXRlcnNbJ3EnXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlYXJjaFRlcm07XG4gIH1cblxuICBpc1NhbWVTZWFyY2hUZXJtKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHVybFNlYXJjaFRlcm0gPSB0aGlzLmdldFVybFNlYXJjaFRlcm0oKTtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hlZFdvcmQgPT09IHVybFNlYXJjaFRlcm07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNvbnRhaW5lclwiXG4gIFttYXRNZW51VHJpZ2dlckZvcl09XCJzZWFyY2hPcHRpb25zTWVudVwiXG4gIChtZW51T3BlbmVkKT1cIm9uTWVudU9wZW5lZCgpXCJcbiAgKG1lbnVDbG9zZWQpPVwic3luY0lucHV0VmFsdWVzKClcIlxuPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhcHAtaW5wdXQtZm9ybS1maWVsZFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImFjYS1zZWFyY2gtaW5wdXQtLXNlYXJjaC1idXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0UHJlZml4IChjbGljayk9XCJzZWFyY2hCeU9wdGlvbigpXCIgW3RpdGxlXT1cIidTRUFSQ0guQlVUVE9OLlRPT0xUSVAnIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8bWF0LWljb24gW2F0dHIuYXJpYS1sYWJlbF09XCInU0VBUkNILkJVVFRPTi5BUklBLUxBQkVMJyB8IHRyYW5zbGF0ZVwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTRUFSQ0guSU5QVVQuQVJJQS1MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgIFt2YWx1ZV09XCJzZWFyY2hlZFdvcmRcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRUFSQ0guSU5QVVQuUExBQ0VIT0xERVInIHwgdHJhbnNsYXRlXCJcbiAgICAvPlxuXG4gICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJhcHAtc3VmZml4LWljb25cIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYWNhLXNlYXJjaC1pbnB1dC0tY2xvc2UtYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJleGl0U2VhcmNoKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiYXBwLXN1ZmZpeC1pY29uXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cblxuPG1hdC1tZW51ICNzZWFyY2hPcHRpb25zTWVudT1cIm1hdE1lbnVcIiBbb3ZlcmxhcFRyaWdnZXJdPVwidHJ1ZVwiIGNsYXNzPVwiYXBwLXNlYXJjaC1vcHRpb25zLW1lbnVcIj5cbiAgPGRpdiAoa2V5ZG93bi50YWIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGtleWRvd24uc2hpZnQudGFiKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHRhYmluZGV4PTA+XG4gICAgPGRpdiBjZGtUcmFwRm9jdXM+XG4gICAgICA8YXBwLXNlYXJjaC1pbnB1dC1jb250cm9sXG4gICAgICAgICNzZWFyY2hJbnB1dENvbnRyb2xcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChzdWJtaXQpPVwib25TZWFyY2hTdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgIChzZWFyY2hDaGFuZ2UpPVwib25TZWFyY2hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAvPlxuICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiaGFzTGlicmFyaWVzQ29uc3RyYWludFwiIGNsYXNzPVwiYXBwLXNlYXJjaC1oaW50XCI+e3sgJ1NFQVJDSC5JTlBVVC5ISU5UJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWhpbnQ+XG5cbiAgICAgIDxkaXYgaWQ9XCJzZWFyY2gtb3B0aW9uc1wiIGNsYXNzPVwiYXBwLXNlYXJjaC1vcHRpb25zXCI+XG4gICAgICAgIDxtYXQtY2hlY2tib3ggKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBzZWFyY2hPcHRpb25zXCJcbiAgICAgICAgICBpZD1cInt7IG9wdGlvbi5pZCB9fVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uc2hvdWxkRGlzYWJsZSgpXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInNlYXJjaEJ5T3B0aW9uKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgb3B0aW9uLmtleSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbWF0LW1lbnU+XG4iXX0=