@bnsights/bbsf-admin-portal 1.1.4 → 1.1.6

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 (120) hide show
  1. package/README.md +6 -2
  2. package/bnsights-bbsf-admin-portal-1.1.6.tgz +0 -0
  3. package/esm2022/lib/Pages/ActiveDirectories/active-directories.component.mjs +1 -1
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +146 -146
  5. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +152 -152
  6. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +1 -1
  7. package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +1 -1
  8. package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +15 -15
  9. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +1 -1
  10. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +1 -1
  11. package/esm2022/lib/Pages/anonymouslayout/error/error.component.mjs +7 -7
  12. package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +12 -12
  13. package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +19 -19
  14. package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +15 -15
  15. package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +12 -12
  16. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +102 -102
  17. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +7 -7
  18. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +271 -271
  19. package/esm2022/lib/Pages/core/auth.module.mjs +1 -1
  20. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +1 -1
  21. package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +3 -3
  22. package/esm2022/lib/Pages/departments/department/department.component.mjs +48 -48
  23. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +32 -32
  24. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +52 -52
  25. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +20 -20
  26. package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +100 -100
  27. package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +151 -151
  28. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +72 -72
  29. package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +27 -27
  30. package/esm2022/lib/Pages/empty-data/empty-data.component.mjs +1 -1
  31. package/esm2022/lib/Pages/empty-data/empty-data.module.mjs +1 -1
  32. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +84 -84
  33. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +1 -1
  34. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +56 -56
  35. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +58 -58
  36. package/esm2022/lib/Pages/home/home.component.mjs +7 -7
  37. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +129 -129
  38. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +14 -14
  39. package/esm2022/lib/Pages/license/license/license.component.mjs +11 -11
  40. package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +41 -41
  41. package/esm2022/lib/Pages/localizations/localizations.component.mjs +125 -125
  42. package/esm2022/lib/Pages/logs/log/log.component.mjs +11 -11
  43. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +120 -120
  44. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +34 -34
  45. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +83 -83
  46. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +35 -35
  47. package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +53 -53
  48. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +50 -50
  49. package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +16 -16
  50. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +20 -20
  51. package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +135 -135
  52. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +186 -186
  53. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +122 -122
  54. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +120 -120
  55. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +29 -29
  56. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +57 -57
  57. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +79 -79
  58. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +35 -35
  59. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +27 -27
  60. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +27 -27
  61. package/esm2022/lib/Pages/shared/Services/AccountService.service.mjs +1 -1
  62. package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +1 -1
  63. package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +1 -1
  64. package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +1 -1
  65. package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +1 -1
  66. package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +1 -1
  67. package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +1 -1
  68. package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +1 -1
  69. package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +1 -1
  70. package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +1 -1
  71. package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +1 -1
  72. package/esm2022/lib/Pages/shared/Services/LogsService.mjs +1 -1
  73. package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +1 -1
  74. package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +1 -1
  75. package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +1 -1
  76. package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +1 -1
  77. package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +1 -1
  78. package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +1 -1
  79. package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +1 -1
  80. package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +1 -1
  81. package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +1 -1
  82. package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +1 -1
  83. package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +1 -1
  84. package/esm2022/lib/Pages/shared/Services/provider.service.mjs +1 -1
  85. package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +36 -36
  86. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +74 -74
  87. package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +8 -8
  88. package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +10 -10
  89. package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +89 -89
  90. package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +7 -7
  91. package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +9 -9
  92. package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +10 -10
  93. package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +222 -222
  94. package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +7 -7
  95. package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +257 -257
  96. package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +25 -25
  97. package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +24 -24
  98. package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +6 -6
  99. package/esm2022/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +52 -52
  100. package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +16 -16
  101. package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +20 -20
  102. package/esm2022/lib/Pages/shared/components/survey/survey.component.mjs +69 -69
  103. package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +180 -180
  104. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +3 -3
  105. package/esm2022/lib/Pages/users/users.component.mjs +190 -190
  106. package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +176 -176
  107. package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +364 -364
  108. package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +67 -67
  109. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +227 -227
  110. package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +31 -31
  111. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +56 -56
  112. package/fesm2022/bnsights-bbsf-admin-portal.mjs +5187 -5187
  113. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
  114. package/lib/Pages/ActiveDirectories/active-directories.component.d.ts +0 -1
  115. package/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.d.ts +2 -2
  116. package/lib/Pages/workflows/tabs/tabs.component.d.ts +1 -1
  117. package/package.json +3 -3
  118. package/esm2022/bnsights-test-test-admin-portal.mjs +0 -5
  119. package/fesm2022/bnsights-test-test-admin-portal.mjs +0 -27181
  120. package/fesm2022/bnsights-test-test-admin-portal.mjs.map +0 -1
@@ -118,20 +118,20 @@ export class ActiveDirectoryComponent {
118
118
  initializePage() {
119
119
  // TextBox init
120
120
  this.searchTextBox = new TextBoxOptions();
121
- this.searchTextBox.Name = "searchTextBox";
122
- this.searchTextBox.Type = InputType.Text;
123
- this.searchTextBox.Placeholder = this.utilityService.getResourceValue("SearchByName");
124
- this.searchTextBox.HideLabel = true;
121
+ this.searchTextBox.name = "searchTextBox";
122
+ this.searchTextBox.type = InputType.Text;
123
+ this.searchTextBox.placeholder = this.utilityService.getResourceValue("SearchByName");
124
+ this.searchTextBox.hideLabel = true;
125
125
  this.textInputFilter = new FilterItem();
126
126
  this.textInputFilter.FormControlName = "searchTextBox";
127
127
  this.textInputFilter.ActionParameterName = "searchText";
128
128
  this.textInputFilter.IsFormControl = true;
129
129
  this.textInputFilter.FilterType = FilterType.TextBox;
130
130
  this.activeDirectoryPaging = new PagingOptions();
131
- this.activeDirectoryPaging.ActionPostURL = this.apiUrl + 'GetADConnectionByFilter';
132
- this.activeDirectoryPaging.OnKeyPressFiltersControlNames = ["searchTextBox"];
133
- this.activeDirectoryPaging.Filters = [this.textInputFilter];
134
- this.activeDirectoryPaging.ValidationToken = this.authService.authorizationHeaderValue();
131
+ this.activeDirectoryPaging.actionPostURL = this.apiUrl + 'GetADConnectionByFilter';
132
+ this.activeDirectoryPaging.onKeyPressFiltersControlNames = ["searchTextBox"];
133
+ this.activeDirectoryPaging.filters = [this.textInputFilter];
134
+ this.activeDirectoryPaging.validationToken = this.authService.authorizationHeaderValue();
135
135
  this.isFilterLoaded = true;
136
136
  }
137
137
  //Paging functions
@@ -159,107 +159,107 @@ export class ActiveDirectoryComponent {
159
159
  this.mappingPropertiesList = lists.mappingProperties;
160
160
  this.editActiveDirectoryForm = new FormGroup({});
161
161
  this.editActiveDirectoryFormOptions = new FormOptions();
162
- this.editActiveDirectoryFormOptions.FormGroup = this.editActiveDirectoryForm;
163
- this.editActiveDirectoryFormOptions.GetModelFunction = this.getEditADModel;
164
- this.editActiveDirectoryFormOptions.ServiceSubmitFunction = this.getEditADFunction;
165
- this.editActiveDirectoryFormOptions.PagingReference = this.pagingElement;
166
- this.editActiveDirectoryFormOptions.PagingActionMode = PagingActionMode.Update;
162
+ this.editActiveDirectoryFormOptions.formGroup = this.editActiveDirectoryForm;
163
+ this.editActiveDirectoryFormOptions.getModelFunction = this.getEditADModel;
164
+ this.editActiveDirectoryFormOptions.serviceSubmitFunction = this.getEditADFunction;
165
+ this.editActiveDirectoryFormOptions.pagingReference = this.pagingElement;
166
+ this.editActiveDirectoryFormOptions.pagingActionMode = PagingActionMode.Update;
167
167
  this.editName = new TextBoxOptions();
168
- this.editName.Name = "editName";
169
- this.editName.LabelKey = "Name";
170
- this.editName.Type = InputType.Text;
171
- this.editName.IsRequired = true;
172
- this.editName.Value = activeDirectory.connectionName;
173
- this.editName.MaxLength = 100;
168
+ this.editName.name = "editName";
169
+ this.editName.labelKey = "Name";
170
+ this.editName.type = InputType.Text;
171
+ this.editName.isRequired = true;
172
+ this.editName.value = activeDirectory.connectionName;
173
+ this.editName.maxLength = 100;
174
174
  let selectedPermissionSet = this.permissionSetList.filter((item) => { return item.key == activeDirectory.permissionSetID; }).map((item) => item.key)[0];
175
175
  this.editPermissionSetOptions = new DropdownOptions();
176
- this.editPermissionSetOptions.Name = "editPermissionSetOptions";
177
- this.editPermissionSetOptions.LabelKey = "PermissionSet";
178
- this.editPermissionSetOptions.DataSource = this.permissionSetList;
179
- this.editPermissionSetOptions.SingleSelection = true;
180
- this.editPermissionSetOptions.AllowSearchFilter = true;
181
- this.editPermissionSetOptions.Placeholder = "";
182
- this.editPermissionSetOptions.IsRequired = true;
183
- this.editPermissionSetOptions.SelectedItems = selectedPermissionSet;
176
+ this.editPermissionSetOptions.name = "editPermissionSetOptions";
177
+ this.editPermissionSetOptions.labelKey = "PermissionSet";
178
+ this.editPermissionSetOptions.dataSource = this.permissionSetList;
179
+ this.editPermissionSetOptions.singleSelection = true;
180
+ this.editPermissionSetOptions.allowSearchFilter = true;
181
+ this.editPermissionSetOptions.placeholder = "";
182
+ this.editPermissionSetOptions.isRequired = true;
183
+ this.editPermissionSetOptions.selectedItems = selectedPermissionSet;
184
184
  let selectedLanguage = this.languagesList.filter((item) => { return item.key == activeDirectory.langKey; }).map((item) => item.key)[0];
185
185
  this.editLanguageOptions = new DropdownOptions();
186
- this.editLanguageOptions.Name = "editLanguageOptions";
187
- this.editLanguageOptions.LabelValue = "Language";
188
- this.editLanguageOptions.LabelKey = "Language";
189
- this.editLanguageOptions.DataSource = this.languagesList;
190
- this.editLanguageOptions.SingleSelection = true;
191
- this.editLanguageOptions.AllowSearchFilter = true;
192
- this.editLanguageOptions.Placeholder = "";
193
- this.editLanguageOptions.IsRequired = true;
194
- this.editLanguageOptions.SelectedItems = selectedLanguage;
186
+ this.editLanguageOptions.name = "editLanguageOptions";
187
+ this.editLanguageOptions.labelValue = "Language";
188
+ this.editLanguageOptions.labelKey = "Language";
189
+ this.editLanguageOptions.dataSource = this.languagesList;
190
+ this.editLanguageOptions.singleSelection = true;
191
+ this.editLanguageOptions.allowSearchFilter = true;
192
+ this.editLanguageOptions.placeholder = "";
193
+ this.editLanguageOptions.isRequired = true;
194
+ this.editLanguageOptions.selectedItems = selectedLanguage;
195
195
  let selectedWelcomeMsgTemp = activeDirectory.welcomeTemplateID != null ? this.welcomeMsgTempList.filter((item) => { return item.key == activeDirectory.welcomeTemplateID; }).map((item) => item.key)[0] : null;
196
196
  this.editWelcomeMsgTemplateOptions = new DropdownOptions();
197
- this.editWelcomeMsgTemplateOptions.Name = "editWelcomeMsgTemplateOptions";
198
- this.editWelcomeMsgTemplateOptions.LabelKey = "WelcomeMsgTemplate";
199
- this.editWelcomeMsgTemplateOptions.DataSource = this.welcomeMsgTempList;
200
- this.editWelcomeMsgTemplateOptions.SingleSelection = true;
201
- this.editWelcomeMsgTemplateOptions.AllowSearchFilter = true;
202
- this.editWelcomeMsgTemplateOptions.Placeholder = "";
203
- this.editWelcomeMsgTemplateOptions.IsRequired = false;
204
- this.editWelcomeMsgTemplateOptions.SelectedItems = selectedWelcomeMsgTemp;
197
+ this.editWelcomeMsgTemplateOptions.name = "editWelcomeMsgTemplateOptions";
198
+ this.editWelcomeMsgTemplateOptions.labelKey = "WelcomeMsgTemplate";
199
+ this.editWelcomeMsgTemplateOptions.dataSource = this.welcomeMsgTempList;
200
+ this.editWelcomeMsgTemplateOptions.singleSelection = true;
201
+ this.editWelcomeMsgTemplateOptions.allowSearchFilter = true;
202
+ this.editWelcomeMsgTemplateOptions.placeholder = "";
203
+ this.editWelcomeMsgTemplateOptions.isRequired = false;
204
+ this.editWelcomeMsgTemplateOptions.selectedItems = selectedWelcomeMsgTemp;
205
205
  this.editInactive = new ToggleSlideOptions();
206
- this.editInactive.Name = "editInactive";
207
- this.editInactive.Value = activeDirectory.markAsInactive;
208
- this.editInactive.LabelKey = "MarkAsInactive";
209
- this.editInactive.ViewType = ControlLayout.Horizontal;
206
+ this.editInactive.name = "editInactive";
207
+ this.editInactive.value = activeDirectory.markAsInactive;
208
+ this.editInactive.labelKey = "MarkAsInactive";
209
+ this.editInactive.viewType = ControlLayout.Horizontal;
210
210
  this.editDailyJob = new ToggleSlideOptions();
211
- this.editDailyJob.Name = "editDailyJob";
212
- this.editDailyJob.LabelKey = "AddToDailyJob";
213
- this.editDailyJob.Value = activeDirectory.addToDailyJob;
214
- this.editDailyJob.ViewType = ControlLayout.Horizontal;
211
+ this.editDailyJob.name = "editDailyJob";
212
+ this.editDailyJob.labelKey = "AddToDailyJob";
213
+ this.editDailyJob.value = activeDirectory.addToDailyJob;
214
+ this.editDailyJob.viewType = ControlLayout.Horizontal;
215
215
  //Windows mode
216
216
  if (this.editADTypeID == Number(ADType.Windows)) {
217
217
  this.editIdentifier = activeDirectory.identifier;
218
218
  this.editWindowsTypeName = activeDirectory.adTypeName;
219
219
  this.editDomain = new TextBoxOptions();
220
- this.editDomain.Name = "editDomain";
221
- this.editDomain.LabelKey = "Domain";
222
- this.editDomain.Type = InputType.Text;
223
- this.editDomain.IsRequired = true;
224
- this.editDomain.Value = activeDirectory.domain;
225
- this.editDomain.MaxLength = 256;
220
+ this.editDomain.name = "editDomain";
221
+ this.editDomain.labelKey = "Domain";
222
+ this.editDomain.type = InputType.Text;
223
+ this.editDomain.isRequired = true;
224
+ this.editDomain.value = activeDirectory.domain;
225
+ this.editDomain.maxLength = 256;
226
226
  this.editSamAccount = new TextBoxOptions();
227
- this.editSamAccount.Name = "editSamAccount";
228
- this.editSamAccount.LabelKey = "SamAccount";
229
- this.editSamAccount.Type = InputType.Text;
230
- this.editSamAccount.Value = activeDirectory.samAccount;
231
- this.editSamAccount.MaxLength = 20;
227
+ this.editSamAccount.name = "editSamAccount";
228
+ this.editSamAccount.labelKey = "SamAccount";
229
+ this.editSamAccount.type = InputType.Text;
230
+ this.editSamAccount.value = activeDirectory.samAccount;
231
+ this.editSamAccount.maxLength = 20;
232
232
  this.editPassword = new TextBoxOptions();
233
- this.editPassword.Name = "editPassword";
234
- this.editPassword.LabelKey = "Password";
235
- this.editPassword.Type = InputType.Password;
236
- this.editPassword.RemoveDefaultPasswordValidation = true;
237
- this.editPassword.Value = activeDirectory.password;
238
- this.editPassword.MaxLength = 4000;
233
+ this.editPassword.name = "editPassword";
234
+ this.editPassword.labelKey = "Password";
235
+ this.editPassword.type = InputType.Password;
236
+ this.editPassword.removeDefaultPasswordValidation = true;
237
+ this.editPassword.value = activeDirectory.password;
238
+ this.editPassword.maxLength = 4000;
239
239
  this.showWindowsControl = true;
240
240
  }
241
241
  else if (this.editADTypeID == Number(ADType.Azure)) {
242
242
  this.editTenantID = new TextBoxOptions();
243
- this.editTenantID.Name = "editTenantID";
244
- this.editTenantID.LabelKey = "TenantID";
245
- this.editTenantID.Type = InputType.Text;
246
- this.editTenantID.IsRequired = true;
247
- this.editTenantID.Value = activeDirectory.tenantID;
248
- this.editTenantID.MaxLength = 100;
243
+ this.editTenantID.name = "editTenantID";
244
+ this.editTenantID.labelKey = "TenantID";
245
+ this.editTenantID.type = InputType.Text;
246
+ this.editTenantID.isRequired = true;
247
+ this.editTenantID.value = activeDirectory.tenantID;
248
+ this.editTenantID.maxLength = 100;
249
249
  this.editClientID = new TextBoxOptions();
250
- this.editClientID.Name = "editClientID";
251
- this.editClientID.LabelKey = "ClientID";
252
- this.editClientID.Type = InputType.Text;
253
- this.editClientID.IsRequired = true;
254
- this.editClientID.Value = activeDirectory.clientID;
255
- this.editClientID.MaxLength = 100;
250
+ this.editClientID.name = "editClientID";
251
+ this.editClientID.labelKey = "ClientID";
252
+ this.editClientID.type = InputType.Text;
253
+ this.editClientID.isRequired = true;
254
+ this.editClientID.value = activeDirectory.clientID;
255
+ this.editClientID.maxLength = 100;
256
256
  this.editClientSecret = new TextBoxOptions();
257
- this.editClientSecret.Name = "editClientSecret";
258
- this.editClientSecret.LabelKey = "ClientSecret";
259
- this.editClientSecret.Type = InputType.Text;
260
- this.editClientSecret.IsRequired = true;
261
- this.editClientSecret.Value = activeDirectory.clientSecret;
262
- this.editClientSecret.MaxLength = 100;
257
+ this.editClientSecret.name = "editClientSecret";
258
+ this.editClientSecret.labelKey = "ClientSecret";
259
+ this.editClientSecret.type = InputType.Text;
260
+ this.editClientSecret.isRequired = true;
261
+ this.editClientSecret.value = activeDirectory.clientSecret;
262
+ this.editClientSecret.maxLength = 100;
263
263
  this.showAzureControl = true;
264
264
  }
265
265
  let data = this.getADMappingOptions(activeDirectory.adMappings);
@@ -276,36 +276,36 @@ export class ActiveDirectoryComponent {
276
276
  let objectMappingOptions = [];
277
277
  let ADMappingType = new DropdownOptions();
278
278
  let selectedType = this.mappingTypesList.filter((item) => { return item.key == ADMappings[i].adMappingTypeItemID; }).map((item) => item.key)[0];
279
- ADMappingType.Name = "ADMappingType" + i;
280
- ADMappingType.HideLabel = true;
281
- ADMappingType.SingleSelection = true;
282
- ADMappingType.SelectedItems = selectedType;
283
- ADMappingType.ViewType = ControlLayout.Horizontal;
284
- ADMappingType.DataSource = this.mappingTypesList;
279
+ ADMappingType.name = "ADMappingType" + i;
280
+ ADMappingType.hideLabel = true;
281
+ ADMappingType.singleSelection = true;
282
+ ADMappingType.selectedItems = selectedType;
283
+ ADMappingType.viewType = ControlLayout.Horizontal;
284
+ ADMappingType.dataSource = this.mappingTypesList;
285
285
  let ADMappingProperty = new DropdownOptions();
286
286
  let selectedProperty = this.mappingPropertiesList.filter((item) => { return item.key == ADMappings[i].bbsfPropertyName; }).map((item) => item.key)[0];
287
- ADMappingProperty.Name = "ADMappingProperty" + i;
288
- ADMappingProperty.HideLabel = true;
289
- ADMappingProperty.SingleSelection = true;
290
- ADMappingProperty.SelectedItems = selectedProperty;
291
- ADMappingProperty.ViewType = ControlLayout.Horizontal;
292
- ADMappingProperty.DataSource = this.mappingPropertiesList;
287
+ ADMappingProperty.name = "ADMappingProperty" + i;
288
+ ADMappingProperty.hideLabel = true;
289
+ ADMappingProperty.singleSelection = true;
290
+ ADMappingProperty.selectedItems = selectedProperty;
291
+ ADMappingProperty.viewType = ControlLayout.Horizontal;
292
+ ADMappingProperty.dataSource = this.mappingPropertiesList;
293
293
  let ADMappingPropertyName = new TextBoxOptions();
294
- ADMappingPropertyName.Name = "ADMappingPropertyName" + i;
295
- ADMappingPropertyName.HideLabel = true;
296
- ADMappingPropertyName.Type = InputType.Text;
297
- ADMappingPropertyName.Value = ADMappings[i].adPropertyName;
298
- ADMappingPropertyName.ViewType = ControlLayout.Horizontal;
299
- ADMappingPropertyName.MaxLength = 1024;
294
+ ADMappingPropertyName.name = "ADMappingPropertyName" + i;
295
+ ADMappingPropertyName.hideLabel = true;
296
+ ADMappingPropertyName.type = InputType.Text;
297
+ ADMappingPropertyName.value = ADMappings[i].adPropertyName;
298
+ ADMappingPropertyName.viewType = ControlLayout.Horizontal;
299
+ ADMappingPropertyName.maxLength = 1024;
300
300
  let ADMappingIncludeUpdate = new CheckBoxOptions();
301
- ADMappingIncludeUpdate.Name = "ADMappingIncludeUpdate" + i;
302
- ADMappingIncludeUpdate.Value = ADMappings[i].includeInUpdate;
303
- ADMappingIncludeUpdate.IsDisabled = true;
301
+ ADMappingIncludeUpdate.name = "ADMappingIncludeUpdate" + i;
302
+ ADMappingIncludeUpdate.value = ADMappings[i].includeInUpdate;
303
+ ADMappingIncludeUpdate.isDisabled = true;
304
304
  let ADMappingHiddenIncludeUpdate = new TextBoxOptions();
305
- ADMappingHiddenIncludeUpdate.Name = "ADMappingHiddenIncludeUpdate" + i;
306
- ADMappingHiddenIncludeUpdate.HideLabel = true;
307
- ADMappingHiddenIncludeUpdate.Type = InputType.Text;
308
- ADMappingHiddenIncludeUpdate.Value = ADMappings[i].includeInUpdate;
305
+ ADMappingHiddenIncludeUpdate.name = "ADMappingHiddenIncludeUpdate" + i;
306
+ ADMappingHiddenIncludeUpdate.hideLabel = true;
307
+ ADMappingHiddenIncludeUpdate.type = InputType.Text;
308
+ ADMappingHiddenIncludeUpdate.value = ADMappings[i].includeInUpdate;
309
309
  objectMappingOptions.push(ADMappingType, ADMappingProperty, ADMappingPropertyName, ADMappingIncludeUpdate, ADMappingHiddenIncludeUpdate);
310
310
  ADMappingOptions.push(objectMappingOptions);
311
311
  ADMappingCount += 1;
@@ -325,29 +325,29 @@ export class ActiveDirectoryComponent {
325
325
  let index = this.editMappingsCount;
326
326
  let objectMappingOptions = [];
327
327
  let ADMappingType = new DropdownOptions();
328
- ADMappingType.Name = "ADMappingType" + index;
329
- ADMappingType.HideLabel = true;
330
- ADMappingType.SingleSelection = true;
331
- ADMappingType.ViewType = ControlLayout.Horizontal;
332
- ADMappingType.DataSource = this.mappingTypesList;
328
+ ADMappingType.name = "ADMappingType" + index;
329
+ ADMappingType.hideLabel = true;
330
+ ADMappingType.singleSelection = true;
331
+ ADMappingType.viewType = ControlLayout.Horizontal;
332
+ ADMappingType.dataSource = this.mappingTypesList;
333
333
  let ADMappingProperty = new DropdownOptions();
334
- ADMappingProperty.Name = "ADMappingProperty" + index;
335
- ADMappingProperty.HideLabel = true;
336
- ADMappingProperty.SingleSelection = true;
337
- ADMappingProperty.ViewType = ControlLayout.Horizontal;
338
- ADMappingProperty.DataSource = this.mappingPropertiesList;
334
+ ADMappingProperty.name = "ADMappingProperty" + index;
335
+ ADMappingProperty.hideLabel = true;
336
+ ADMappingProperty.singleSelection = true;
337
+ ADMappingProperty.viewType = ControlLayout.Horizontal;
338
+ ADMappingProperty.dataSource = this.mappingPropertiesList;
339
339
  let ADMappingPropertyName = new TextBoxOptions();
340
- ADMappingPropertyName.Name = "ADMappingPropertyName" + index;
341
- ADMappingPropertyName.HideLabel = true;
342
- ADMappingPropertyName.Type = InputType.Text;
343
- ADMappingPropertyName.IsRequired = false;
344
- ADMappingPropertyName.ViewType = ControlLayout.Horizontal;
340
+ ADMappingPropertyName.name = "ADMappingPropertyName" + index;
341
+ ADMappingPropertyName.hideLabel = true;
342
+ ADMappingPropertyName.type = InputType.Text;
343
+ ADMappingPropertyName.isRequired = false;
344
+ ADMappingPropertyName.viewType = ControlLayout.Horizontal;
345
345
  let ADMappingIncludeUpdate = new CheckBoxOptions();
346
- ADMappingIncludeUpdate.Name = "ADMappingIncludeUpdate" + index;
346
+ ADMappingIncludeUpdate.name = "ADMappingIncludeUpdate" + index;
347
347
  let ADMappingHiddenIncludeUpdate = new TextBoxOptions();
348
- ADMappingHiddenIncludeUpdate.Name = "ADMappingHiddenIncludeUpdate" + index;
349
- ADMappingHiddenIncludeUpdate.HideLabel = true;
350
- ADMappingHiddenIncludeUpdate.Type = InputType.Text;
348
+ ADMappingHiddenIncludeUpdate.name = "ADMappingHiddenIncludeUpdate" + index;
349
+ ADMappingHiddenIncludeUpdate.hideLabel = true;
350
+ ADMappingHiddenIncludeUpdate.type = InputType.Text;
351
351
  objectMappingOptions.push(ADMappingType, ADMappingProperty, ADMappingPropertyName, ADMappingIncludeUpdate, ADMappingHiddenIncludeUpdate);
352
352
  this.editMappingsOptions.push(objectMappingOptions);
353
353
  this.editMappingsCount += 1;
@@ -359,9 +359,9 @@ export class ActiveDirectoryComponent {
359
359
  let paramArray = [];
360
360
  paramArray.push(this.deleteActiveDirectoryId);
361
361
  this.deleteConfirmationOptions = new ConfirmationModalOptions();
362
- this.deleteConfirmationOptions.ServiceSubmitFunction = this.deleteActiveDirectory;
363
- this.deleteConfirmationOptions.ServiceSubmitModel = paramArray;
364
- this.deleteConfirmationOptions.PagingReference = this.pagingElement;
362
+ this.deleteConfirmationOptions.serviceSubmitFunction = this.deleteActiveDirectory;
363
+ this.deleteConfirmationOptions.serviceSubmitModel = paramArray;
364
+ this.deleteConfirmationOptions.pagingReference = this.pagingElement;
365
365
  this.deleteControlLoaded = true;
366
366
  setTimeout(() => {
367
367
  this.deleteConfirmationModalControl.showModal();
@@ -374,16 +374,16 @@ export class ActiveDirectoryComponent {
374
374
  let paramArray = [];
375
375
  paramArray.push(this.syncActiveDirectoryId);
376
376
  this.syncConfirmationOptions = new ConfirmationModalOptions();
377
- this.syncConfirmationOptions.ServiceSubmitFunction = this.runSyncronization;
378
- this.syncConfirmationOptions.ServiceSubmitModel = paramArray;
379
- this.syncConfirmationOptions.PagingReference = this.pagingElement;
380
- this.syncConfirmationOptions.PagingActionMode = PagingActionMode.Reinitialize;
381
- this.syncConfirmationOptions.ConfirmationHeader = this.utilityService.getResourceValue("RunSynchronization");
382
- this.syncConfirmationOptions.ConfirmationBody = this.utilityService.getResourceValue("RunSynchronizationConfirmation");
383
- this.syncConfirmationOptions.StyleConfirmationMode = StyleConfirmationMode.Warning;
384
- this.syncConfirmationOptions.SubmitButtonText = this.utilityService.getResourceValue("Yes");
385
- this.syncConfirmationOptions.DisableSuccessNotification = true;
386
- this.syncConfirmationOptions.OnSuccessHandler = this.runSyncOnSuccess;
377
+ this.syncConfirmationOptions.serviceSubmitFunction = this.runSyncronization;
378
+ this.syncConfirmationOptions.serviceSubmitModel = paramArray;
379
+ this.syncConfirmationOptions.pagingReference = this.pagingElement;
380
+ this.syncConfirmationOptions.pagingActionMode = PagingActionMode.Reinitialize;
381
+ this.syncConfirmationOptions.confirmationHeader = this.utilityService.getResourceValue("RunSynchronization");
382
+ this.syncConfirmationOptions.confirmationBody = this.utilityService.getResourceValue("RunSynchronizationConfirmation");
383
+ this.syncConfirmationOptions.styleConfirmationMode = StyleConfirmationMode.Warning;
384
+ this.syncConfirmationOptions.submitButtonText = this.utilityService.getResourceValue("Yes");
385
+ this.syncConfirmationOptions.disableSuccessNotification = true;
386
+ this.syncConfirmationOptions.onSuccessHandler = this.runSyncOnSuccess;
387
387
  this.syncControlLoaded = true;
388
388
  setTimeout(() => {
389
389
  this.syncConfirmationModalControl.showModal();
@@ -403,7 +403,7 @@ export class ActiveDirectoryComponent {
403
403
  this.requestHandlerService.destroyHandler();
404
404
  }
405
405
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ActiveDirectoryComponent, deps: [{ token: i1.AuthService }, { token: i2.PageInfoService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i3.ActiveDirectoryService }, { token: i4.NgbModal }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
406
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ActiveDirectoryComponent, selector: "lib-active-directory", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["activeDirectoryPagingViewElement"], descendants: true }, { propertyName: "deleteConfirmationModalControl", first: true, predicate: ["deleteConfirmationModalControl"], descendants: true }, { propertyName: "syncConfirmationModalControl", first: true, predicate: ["syncConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n<!-- Page Content -->\r\n<div *ngIf=\"showPageContent\" class=\"container-fluid\">\r\n <!-- begin::Header -->\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <form [formGroup]=\"activeDirectoryForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"activeDirectoryForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title='{{utilityService.getResourceValue(\"Add\")}}' [routerLink]=\"['/Admin/ADConnection/Add']\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <!--begin::ActiveDirectory list-->\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"PermissionSet\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"AdConnectionRunningNow\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Actions\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let activeDirectory of clientSidePagingResult\">\r\n\r\n <td class=\"text-dark\">\r\n {{activeDirectory.name}}\r\n </td>\r\n <td>\r\n {{activeDirectory.adTypeName}}\r\n </td>\r\n <td>\r\n {{activeDirectory.permissionSetName}}\r\n </td>\r\n <td>\r\n <span class=\"badge badge-light-success\" *ngIf=\"activeDirectory.isRunningNow;else not_Running\">\r\n {{utilityService.getResourceValue(\"Yes\")}}\r\n </span>\r\n <ng-template #not_Running>\r\n <span class=\"badge badge-light-danger\">\r\n {{utilityService.getResourceValue(\"No\")}}\r\n </span>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <a class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditActiveDirectoryModal(activeDirectory.id,activeDirectory.idEncrypted,editActiveDirectoryModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showDeleteActiveDirectoryModal(activeDirectory.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showADSynchronizationModal(activeDirectory.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"ActiveDirectoryRunSyncronization\")}}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showADLastRunLogsModal(activeDirectory.idEncrypted,lastRunLogsModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"ActiveDirectoryLastRunLogs\")}}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Active directory list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setActiveDirectoryListResult($event)\" *ngIf=\"isFilterLoaded\"\r\n [options]=\"activeDirectoryPaging\" [group]=\"activeDirectoryForm\" #activeDirectoryPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Edit Modal -->\r\n<ng-template #editActiveDirectoryModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"ActiveDirectory\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"editActiveDirectoryFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editName\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editPermissionSetOptions\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editLanguageOptions\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editWelcomeMsgTemplateOptions\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <h6>\r\n {{utilityService.getResourceValue(\"ADType\")}}\r\n </h6>\r\n <label>\r\n {{editADTypeName}}\r\n </label>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showWindowsControl\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <h6>\r\n {{utilityService.getResourceValue(\"Identifier\")}}\r\n </h6>\r\n <label>\r\n {{editIdentifier}}\r\n </label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <h6>\r\n {{utilityService.getResourceValue(\"Type\")}}\r\n </h6>\r\n <label>\r\n {{editWindowsTypeName}}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editDomain\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editSamAccount\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editPassword\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControl\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editTenantID\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editClientID\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editClientSecret\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editInactive\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editDailyJob\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <table class=\"table amsx-table-users\">\r\n <thead>\r\n <tr>\r\n <th>{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th>{{utilityService.getResourceValue(\"Property\")}}</th>\r\n <th>{{utilityService.getResourceValue(\"ActiveDirectory_Property\")}}</th>\r\n <th>{{utilityService.getResourceValue(\"IncludeInUpdate\")}}</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let option of editMappingsOptions;let i=index;\">\r\n\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-CheckBox>\r\n <!--Hidden include in update value-->\r\n <BBSF-TextBox [options]=\"option[4]\" [group]=\"editActiveDirectoryForm\" [hidden]=\"true\">\r\n </BBSF-TextBox>\r\n </td>\r\n\r\n <td class=\"text-center align-middle\">\r\n <a class=\"kt-nav__link\" (click)=\"deleteADMapping(option)\">\r\n <i class=\"kt-nav__link-icon fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addADMapping()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditADModal id=\"CloseEditADModal\" type=\"button\"\r\n data-dismiss=\"modal\" (click)=\"modal.dismiss()\" class=\"btn btn-light me-3 btn-sm\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Delete Modal -->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"deleteConfirmationOptions\" id=\"deleteConfirmationModalControl\" #deleteConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- Synchronization Modal -->\r\n<BBSF-ConfirmationModal *ngIf=\"syncControlLoaded\" [options]=\"syncConfirmationOptions\" id=\"syncConfirmationModalControl\" #syncConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- View Last Run Logs -->\r\n<ng-template #lastRunLogsModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"ActiveDirectoryLastRunLogs\")}} : {{adConnectionName}}</h1>\r\n </div>\r\n <div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p>{{utilityService.getResourceValue(\"Name\")}} : {{adConnectionName}}</p>\r\n <pre class=\"col-md-12\">{{lastRunLogs}}</pre>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseDefaultProviderModal id=\"CloseDefaultProviderModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"Close\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n", dependencies: [{ kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i9.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i9.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i9.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i9.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i9.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i9.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "component", type: i9.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "component", type: i12.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] }); }
406
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ActiveDirectoryComponent, selector: "lib-active-directory", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["activeDirectoryPagingViewElement"], descendants: true }, { propertyName: "deleteConfirmationModalControl", first: true, predicate: ["deleteConfirmationModalControl"], descendants: true }, { propertyName: "syncConfirmationModalControl", first: true, predicate: ["syncConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n<!-- Page Content -->\r\n<div *ngIf=\"showPageContent\" class=\"container-fluid\">\r\n <!-- begin::Header -->\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <form [formGroup]=\"activeDirectoryForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"activeDirectoryForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" class=\"btn btn-sm btn-primary\" title='{{utilityService.getResourceValue(\"Add\")}}' [routerLink]=\"['/Admin/ADConnection/Add']\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{utilityService.getResourceValue(\"Add\")}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <!--begin::ActiveDirectory list-->\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Name\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"PermissionSet\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"AdConnectionRunningNow\")}}</th>\r\n <th class=\"min-w-50px\">{{utilityService.getResourceValue(\"Actions\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let activeDirectory of clientSidePagingResult\">\r\n\r\n <td class=\"text-dark\">\r\n {{activeDirectory.name}}\r\n </td>\r\n <td>\r\n {{activeDirectory.adTypeName}}\r\n </td>\r\n <td>\r\n {{activeDirectory.permissionSetName}}\r\n </td>\r\n <td>\r\n <span class=\"badge badge-light-success\" *ngIf=\"activeDirectory.isRunningNow;else not_Running\">\r\n {{utilityService.getResourceValue(\"Yes\")}}\r\n </span>\r\n <ng-template #not_Running>\r\n <span class=\"badge badge-light-danger\">\r\n {{utilityService.getResourceValue(\"No\")}}\r\n </span>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <a class=\"drop-item px-3\" ngbDropdownItem\r\n (click)=\"showEditActiveDirectoryModal(activeDirectory.id,activeDirectory.idEncrypted,editActiveDirectoryModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showDeleteActiveDirectoryModal(activeDirectory.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"Delete\")}}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showADSynchronizationModal(activeDirectory.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"ActiveDirectoryRunSyncronization\")}}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\"\r\n (click)=\"showADLastRunLogsModal(activeDirectory.idEncrypted,lastRunLogsModal)\">\r\n <span class=\"drop-link px-3\">{{utilityService.getResourceValue(\"ActiveDirectoryLastRunLogs\")}}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Active directory list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging (Items)=\"setActiveDirectoryListResult($event)\" *ngIf=\"isFilterLoaded\"\r\n [options]=\"activeDirectoryPaging\" [group]=\"activeDirectoryForm\" #activeDirectoryPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Edit Modal -->\r\n<ng-template #editActiveDirectoryModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">\r\n {{utilityService.getResourceValue(\"Edit\")}} {{utilityService.getResourceValue(\"ActiveDirectory\")}}\r\n </h1>\r\n </div>\r\n <BBSF-Form [options]=\"editActiveDirectoryFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editName\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editPermissionSetOptions\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editLanguageOptions\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editWelcomeMsgTemplateOptions\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <h6>\r\n {{utilityService.getResourceValue(\"ADType\")}}\r\n </h6>\r\n <label>\r\n {{editADTypeName}}\r\n </label>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showWindowsControl\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <h6>\r\n {{utilityService.getResourceValue(\"Identifier\")}}\r\n </h6>\r\n <label>\r\n {{editIdentifier}}\r\n </label>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <h6>\r\n {{utilityService.getResourceValue(\"Type\")}}\r\n </h6>\r\n <label>\r\n {{editWindowsTypeName}}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editDomain\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editSamAccount\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editPassword\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControl\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editTenantID\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editClientID\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editClientSecret\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editInactive\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editDailyJob\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <table class=\"table amsx-table-users\">\r\n <thead>\r\n <tr>\r\n <th>{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th>{{utilityService.getResourceValue(\"Property\")}}</th>\r\n <th>{{utilityService.getResourceValue(\"ActiveDirectory_Property\")}}</th>\r\n <th>{{utilityService.getResourceValue(\"IncludeInUpdate\")}}</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let option of editMappingsOptions;let i=index;\">\r\n\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"editActiveDirectoryForm\">\r\n </BBSF-CheckBox>\r\n <!--Hidden include in update value-->\r\n <BBSF-TextBox [options]=\"option[4]\" [group]=\"editActiveDirectoryForm\" [hidden]=\"true\">\r\n </BBSF-TextBox>\r\n </td>\r\n\r\n <td class=\"text-center align-middle\">\r\n <a class=\"kt-nav__link\" (click)=\"deleteADMapping(option)\">\r\n <i class=\"kt-nav__link-icon fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addADMapping()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditADModal id=\"CloseEditADModal\" type=\"button\"\r\n data-dismiss=\"modal\" (click)=\"modal.dismiss()\" class=\"btn btn-light me-3 btn-sm\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Delete Modal -->\r\n<BBSF-ConfirmationModal *ngIf=\"deleteControlLoaded\" [options]=\"deleteConfirmationOptions\" id=\"deleteConfirmationModalControl\" #deleteConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- Synchronization Modal -->\r\n<BBSF-ConfirmationModal *ngIf=\"syncControlLoaded\" [options]=\"syncConfirmationOptions\" id=\"syncConfirmationModalControl\" #syncConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- View Last Run Logs -->\r\n<ng-template #lastRunLogsModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"ActiveDirectoryLastRunLogs\")}} : {{adConnectionName}}</h1>\r\n </div>\r\n <div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p>{{utilityService.getResourceValue(\"Name\")}} : {{adConnectionName}}</p>\r\n <pre class=\"col-md-12\">{{lastRunLogs}}</pre>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseDefaultProviderModal id=\"CloseDefaultProviderModal\" type=\"button\"\r\n class=\"btn btn-light btn-sm me-3 \" data-dismiss=\"modal\" (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"Close\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n\r\n", dependencies: [{ kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i9.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i9.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i9.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i9.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "component", type: i9.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "component", type: i12.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] }); }
407
407
  }
408
408
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ActiveDirectoryComponent, decorators: [{
409
409
  type: Component,
@@ -418,4 +418,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
418
418
  type: ViewChild,
419
419
  args: ['syncConfirmationModalControl', { static: false }]
420
420
  }] } });
421
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnkvYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnkvYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBOEIsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQW1CLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3UyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBSXJGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFPbkQsTUFBTSxPQUFPLHdCQUF3QjtJQWtFbkMsWUFBb0IsV0FBd0IsRUFBVSxlQUFnQyxFQUFTLGNBQThCLEVBQ25ILG9CQUEwQyxFQUFVLHNC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Q0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQVFELGVBQWU7SUFDZixzQkFBc0IsQ0FBQyxpQkFBeUIsRUFBRSxnQkFBZ0I7UUFDaEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2pGLElBQUksZ0JBQWdCLEdBQUcsTUFBYSxDQUFDO1lBRXJDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7WUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBRS9DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs4R0FwZlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsaWNDakJyQyx1MWJBMlRBOzsyRkQxU2Esd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLHNCQUFzQjs4UUFnQmtDLGFBQWE7c0JBQTlFLFNBQVM7dUJBQUMsa0NBQWtDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXlDQSw4QkFBOEI7c0JBQTdGLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVVBLDRCQUE0QjtzQkFBekYsU0FBUzt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCwgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIEZpbHRlckl0ZW0sIEZpbHRlclR5cGUsIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIFBhZ2luZ0FjdGlvbk1vZGUsIFBhZ2luZ0NvbXBvbmVudCwgUGFnaW5nT3B0aW9ucywgU3R5bGVDb25maXJtYXRpb25Nb2RlLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0FjdGl2ZURpcmVjdG9yeVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQURNb2RlbHMvQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsJztcclxuaW1wb3J0IHsgQURNYXBwaW5nTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0FETW9kZWxzL0FETWFwcGluZ01vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBRFR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvQURUeXBlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY3RpdmUtZGlyZWN0b3J5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGl2ZURpcmVjdG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIGFwaVVybCA9IFwiL2FwaS9hZG1pbi9BRENvbm5lY3Rpb24vXCI7XHJcbiAgc2hvd1BhZ2VDb250ZW50ID0gZmFsc2U7XHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIGFjdGl2ZURpcmVjdG9yeUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICB0ZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgYWN0aXZlRGlyZWN0b3J5UGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgYWN0aXZlRGlyZWN0b3J5UGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnYWN0aXZlRGlyZWN0b3J5UGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBwZXJtaXNzaW9uU2V0TGlzdDogYW55W10gPSBbXTtcclxuICBsYW5ndWFnZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHdlbGNvbWVNc2dUZW1wTGlzdDogYW55W10gPSBbXTtcclxuICBtYXBwaW5nVHlwZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIG1hcHBpbmdQcm9wZXJ0aWVzTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy8vL0VkaXQgTW9kZWwgQ29udHJvbHNcclxuICAvL1NoYXJlZCBjb250cm9sc1xyXG4gIGVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zOiBGb3JtT3B0aW9uc1xyXG4gIGVkaXROYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0QURUeXBlTmFtZTogc3RyaW5nOyAvL1dpbmRvd3Mgb3IgQXp1cmVcclxuICBlZGl0QURUeXBlSUQ6IG51bWJlcjtcclxuICBlZGl0SW5hY3RpdmU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBlZGl0RGFpbHlKb2I6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBlZGl0UGVybWlzc2lvblNldE9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBlZGl0TGFuZ3VhZ2VPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBlZGl0TWFwcGluZ3NPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIGVkaXRNYXBwaW5nc0NvdW50OiBudW1iZXI7XHJcbiAgYWN0aXZlRGlyZWN0b3J5SWQ6IG51bWJlcjtcclxuICAvL1dpbmRvd3MgTW9kZVxyXG4gIGVkaXREb21haW46IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRTYW1BY2NvdW50OiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0SWRlbnRpZmllcjogc3RyaW5nO1xyXG4gIGVkaXRXaW5kb3dzVHlwZU5hbWU6IHN0cmluZztcclxuICBlZGl0UGFzc3dvcmQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIHNob3dXaW5kb3dzQ29udHJvbDogYm9vbGVhbjtcclxuICAvL0F6dXJlIE1vZGVcclxuICBlZGl0VGVuYW50SUQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRDbGllbnRJRDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdENsaWVudFNlY3JldDogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2hvd0F6dXJlQ29udHJvbDogYm9vbGVhbjtcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlQWN0aXZlRGlyZWN0b3J5SWQ6IHN0cmluZztcclxuICBkZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG5cclxuICAvL0xhc3QgcnVuIGxvZ3NcclxuICBhZENvbm5lY3Rpb25OYW1lOiBzdHJpbmc7XHJcbiAgbGFzdFJ1bkxvZ3M6IHN0cmluZztcclxuXHJcbiAgLy9TeW5jaHJvbml6YXRpb24gbW9kYWxcclxuICBzeW5jQWN0aXZlRGlyZWN0b3J5SWQ6IHN0cmluZztcclxuICBzeW5jQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIHN5bmNDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnc3luY0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBzeW5jQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBhY3RpdmVEaXJlY3RvcnlTZXJ2aWNlOiBBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3JpZXNcIilcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9pbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5OYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWVcclxuXHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuXHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeVBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeVBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5hcGlVcmwgKyAnR2V0QURDb25uZWN0aW9uQnlGaWx0ZXInO1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlQYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdO1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlQYWdpbmcuRmlsdGVycyA9IFt0aGlzLnRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5UGFnaW5nLlZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcblxyXG4gICAgdGhpcy5pc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvL1BhZ2luZyBmdW5jdGlvbnNcclxuICBzZXRBY3RpdmVEaXJlY3RvcnlMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKClcclxuICB9XHJcblxyXG4gIC8vRWRpdCBBY3RpdmVEaXJlY3RvcnlcclxuICBzaG93RWRpdEFjdGl2ZURpcmVjdG9yeU1vZGFsKGFjdGl2ZURpcmVjdG9yeUlEOiBudW1iZXIsIGFjdGl2ZURpcmVjdG9yeUlERW5jOiBzdHJpbmcsIGVkaXRBRE1vZGFsKSB7XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeUlkID0gYWN0aXZlRGlyZWN0b3J5SUQ7XHJcbiAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93QXp1cmVDb250cm9sID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmdldEVkaXRBY3RpdmVEaXJlY3RvcnkoYWN0aXZlRGlyZWN0b3J5SURFbmMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgYWN0aXZlRGlyZWN0b3J5ID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICBsZXQgbGlzdHMgPSByZXN1bHRPYmouZHJvcGRvd25zRGF0YTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdEFEVHlwZUlEID0gYWN0aXZlRGlyZWN0b3J5LmFkVHlwZUl0ZW1JRDtcclxuICAgICAgLy9Mb2FkIGlzdHNcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0TGlzdCA9IGxpc3RzLnBlcm1pc3Npb25TZXRzO1xyXG4gICAgICB0aGlzLmxhbmd1YWdlc0xpc3QgPSBsaXN0cy5sYW5ndWFnZXM7XHJcbiAgICAgIHRoaXMud2VsY29tZU1zZ1RlbXBMaXN0ID0gbGlzdHMudGVtcGxhdGVzO1xyXG4gICAgICB0aGlzLm1hcHBpbmdUeXBlc0xpc3QgPSBsaXN0cy5tYXBwaW5nVHlwZXM7XHJcbiAgICAgIHRoaXMubWFwcGluZ1Byb3BlcnRpZXNMaXN0ID0gbGlzdHMubWFwcGluZ1Byb3BlcnRpZXM7XHJcblxyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEFETW9kZWw7XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEFERnVuY3Rpb247XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGVcclxuXHJcblxyXG4gICAgICB0aGlzLmVkaXROYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWUuTmFtZSA9IFwiZWRpdE5hbWVcIjtcclxuICAgICAgdGhpcy5lZGl0TmFtZS5MYWJlbEtleSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLmVkaXROYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5lZGl0TmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TmFtZS5WYWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS5jb25uZWN0aW9uTmFtZTtcclxuICAgICAgdGhpcy5lZGl0TmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICBsZXQgc2VsZWN0ZWRQZXJtaXNzaW9uU2V0ID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGFjdGl2ZURpcmVjdG9yeS5wZXJtaXNzaW9uU2V0SUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG5cclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zLk5hbWUgPSBcImVkaXRQZXJtaXNzaW9uU2V0T3B0aW9uc1wiXHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zLkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvblNldExpc3RcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucy5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucy5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRQZXJtaXNzaW9uU2V0O1xyXG5cclxuICAgICAgbGV0IHNlbGVjdGVkTGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBhY3RpdmVEaXJlY3RvcnkubGFuZ0tleTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcblxyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5OYW1lID0gXCJlZGl0TGFuZ3VhZ2VPcHRpb25zXCJcclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zLkxhYmVsVmFsdWUgPSBcIkxhbmd1YWdlXCJcclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zLkxhYmVsS2V5ID0gXCJMYW5ndWFnZVwiXHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5sYW5ndWFnZXNMaXN0XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRMYW5ndWFnZTtcclxuXHJcbiAgICAgIGxldCBzZWxlY3RlZFdlbGNvbWVNc2dUZW1wID0gYWN0aXZlRGlyZWN0b3J5LndlbGNvbWVUZW1wbGF0ZUlEICE9IG51bGwgPyB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGFjdGl2ZURpcmVjdG9yeS53ZWxjb21lVGVtcGxhdGVJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF0gOiBudWxsO1xyXG5cclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucy5OYW1lID0gXCJlZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9uc1wiXHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMuTGFiZWxLZXkgPSBcIldlbGNvbWVNc2dUZW1wbGF0ZVwiXHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMud2VsY29tZU1zZ1RlbXBMaXN0XHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucy5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRXZWxjb21lTXNnVGVtcDtcclxuXHJcblxyXG4gICAgICB0aGlzLmVkaXRJbmFjdGl2ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0SW5hY3RpdmUuTmFtZSA9IFwiZWRpdEluYWN0aXZlXCI7XHJcbiAgICAgIHRoaXMuZWRpdEluYWN0aXZlLlZhbHVlID0gYWN0aXZlRGlyZWN0b3J5Lm1hcmtBc0luYWN0aXZlO1xyXG4gICAgICB0aGlzLmVkaXRJbmFjdGl2ZS5MYWJlbEtleSA9IFwiTWFya0FzSW5hY3RpdmVcIlxyXG4gICAgICB0aGlzLmVkaXRJbmFjdGl2ZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdERhaWx5Sm9iID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXREYWlseUpvYi5OYW1lID0gXCJlZGl0RGFpbHlKb2JcIlxyXG4gICAgICB0aGlzLmVkaXREYWlseUpvYi5MYWJlbEtleSA9IFwiQWRkVG9EYWlseUpvYlwiXHJcbiAgICAgIHRoaXMuZWRpdERhaWx5Sm9iLlZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LmFkZFRvRGFpbHlKb2I7XHJcbiAgICAgIHRoaXMuZWRpdERhaWx5Sm9iLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuXHJcbiAgICAgIC8vV2luZG93cyBtb2RlXHJcbiAgICAgIGlmICh0aGlzLmVkaXRBRFR5cGVJRCA9PSBOdW1iZXIoQURUeXBlLldpbmRvd3MpKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0SWRlbnRpZmllciA9IGFjdGl2ZURpcmVjdG9yeS5pZGVudGlmaWVyO1xyXG4gICAgICAgIHRoaXMuZWRpdFdpbmRvd3NUeXBlTmFtZSA9IGFjdGl2ZURpcmVjdG9yeS5hZFR5cGVOYW1lO1xyXG5cclxuICAgICAgICB0aGlzLmVkaXREb21haW4gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmVkaXREb21haW4uTmFtZSA9IFwiZWRpdERvbWFpblwiO1xyXG4gICAgICAgIHRoaXMuZWRpdERvbWFpbi5MYWJlbEtleSA9IFwiRG9tYWluXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLmVkaXREb21haW4uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluLlZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LmRvbWFpbjtcclxuICAgICAgICB0aGlzLmVkaXREb21haW4uTWF4TGVuZ3RoID0gMjU2O1xyXG5cclxuICAgICAgICB0aGlzLmVkaXRTYW1BY2NvdW50ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0U2FtQWNjb3VudC5OYW1lID0gXCJlZGl0U2FtQWNjb3VudFwiO1xyXG4gICAgICAgIHRoaXMuZWRpdFNhbUFjY291bnQuTGFiZWxLZXkgPSBcIlNhbUFjY291bnRcIjtcclxuICAgICAgICB0aGlzLmVkaXRTYW1BY2NvdW50LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLmVkaXRTYW1BY2NvdW50LlZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LnNhbUFjY291bnQ7XHJcbiAgICAgICAgdGhpcy5lZGl0U2FtQWNjb3VudC5NYXhMZW5ndGggPSAyMDtcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0UGFzc3dvcmQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC5OYW1lID0gXCJlZGl0UGFzc3dvcmRcIjtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC5MYWJlbEtleSA9IFwiUGFzc3dvcmRcIjtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC5UeXBlID0gSW5wdXRUeXBlLlBhc3N3b3JkO1xyXG4gICAgICAgIHRoaXMuZWRpdFBhc3N3b3JkLlJlbW92ZURlZmF1bHRQYXNzd29yZFZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdFBhc3N3b3JkLlZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LnBhc3N3b3JkO1xyXG4gICAgICAgIHRoaXMuZWRpdFBhc3N3b3JkLk1heExlbmd0aCA9IDQwMDA7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1dpbmRvd3NDb250cm9sID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmVkaXRBRFR5cGVJRCA9PSBOdW1iZXIoQURUeXBlLkF6dXJlKSkge1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0VGVuYW50SUQuTmFtZSA9IFwiZWRpdFRlbmFudElEXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0VGVuYW50SUQuTGFiZWxLZXkgPSBcIlRlbmFudElEXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0VGVuYW50SUQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELlZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LnRlbmFudElEO1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRJRC5OYW1lID0gXCJlZGl0Q2xpZW50SURcIjtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRJRC5MYWJlbEtleSA9IFwiQ2xpZW50SURcIjtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQuVmFsdWUgPSBhY3RpdmVEaXJlY3RvcnkuY2xpZW50SUQ7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50U2VjcmV0ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50U2VjcmV0Lk5hbWUgPSBcImVkaXRDbGllbnRTZWNyZXRcIjtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRTZWNyZXQuTGFiZWxLZXkgPSBcIkNsaWVudFNlY3JldFwiO1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50U2VjcmV0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldC5WYWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS5jbGllbnRTZWNyZXQ7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50U2VjcmV0Lk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93QXp1cmVDb250cm9sID0gdHJ1ZTtcclxuXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBsZXQgZGF0YTogYW55ID0gdGhpcy5nZXRBRE1hcHBpbmdPcHRpb25zKGFjdGl2ZURpcmVjdG9yeS5hZE1hcHBpbmdzKTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE1hcHBpbmdzT3B0aW9ucyA9IGRhdGFbMF07XHJcbiAgICAgIHRoaXMuZWRpdE1hcHBpbmdzQ291bnQgPSBkYXRhWzFdO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGVkaXRBRE1vZGFsKTtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEFETW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBBY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwoKTtcclxuXHJcbiAgICBFZGl0TW9kZWwuSUQgPSBOdW1iZXIodGhpcy5hY3RpdmVEaXJlY3RvcnlJZCk7XHJcbiAgICBFZGl0TW9kZWwuQ29ubmVjdGlvbk5hbWUgPSByZXN1bHRNb2RlbC5lZGl0TmFtZTtcclxuICAgIEVkaXRNb2RlbC5QZXJtaXNzaW9uU2V0SUQgPSByZXN1bHRNb2RlbC5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMgIT0gbnVsbCA/IHJlc3VsdE1vZGVsLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucyA6IG51bGxcclxuICAgIEVkaXRNb2RlbC5MYW5nS2V5ID0gcmVzdWx0TW9kZWwuZWRpdExhbmd1YWdlT3B0aW9ucztcclxuICAgIEVkaXRNb2RlbC5XZWxjb21lVGVtcGxhdGVJRCA9IHJlc3VsdE1vZGVsLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zICE9IG51bGwgPyBOdW1iZXIocmVzdWx0TW9kZWwuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMpIDogbnVsbFxyXG4gICAgRWRpdE1vZGVsLk1hcmtBc0luYWN0aXZlID0gcmVzdWx0TW9kZWwuZWRpdEluYWN0aXZlO1xyXG4gICAgRWRpdE1vZGVsLkFkZFRvRGFpbHlKb2IgPSByZXN1bHRNb2RlbC5lZGl0RGFpbHlKb2I7XHJcblxyXG4gICAgaWYgKHRoaXMuZWRpdEFEVHlwZUlEID09IE51bWJlcihBRFR5cGUuV2luZG93cykpIHtcclxuICAgICAgRWRpdE1vZGVsLkRvbWFpbiA9IHJlc3VsdE1vZGVsLmVkaXREb21haW47XHJcbiAgICAgIEVkaXRNb2RlbC5TYW1BY2NvdW50ID0gcmVzdWx0TW9kZWwuZWRpdFNhbUFjY291bnQ7XHJcbiAgICAgIEVkaXRNb2RlbC5QYXNzd29yZCA9IHJlc3VsdE1vZGVsLmVkaXRQYXNzd29yZDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuZWRpdEFEVHlwZUlEID09IE51bWJlcihBRFR5cGUuQXp1cmUpKSB7XHJcbiAgICAgIEVkaXRNb2RlbC5UZW5hbnRJRCA9IHJlc3VsdE1vZGVsLmVkaXRUZW5hbnRJRDtcclxuICAgICAgRWRpdE1vZGVsLkNsaWVudElEID0gcmVzdWx0TW9kZWwuZWRpdENsaWVudElEO1xyXG4gICAgICBFZGl0TW9kZWwuQ2xpZW50U2VjcmV0ID0gcmVzdWx0TW9kZWwuZWRpdENsaWVudFNlY3JldDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmVkaXRNYXBwaW5nc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nVHlwZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nVHlwZVwiICsgal07XHJcbiAgICAgIGlmIChlZGl0TUFwcGluZ1R5cGUgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICBsZXQgZWRpdE1BcHBpbmdQcm9wZXJ0eSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nUHJvcGVydHlcIiArIGpdO1xyXG4gICAgICBsZXQgZWRpdE1BcHBpbmdQcm9wZXJ0eU5hbWUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ1Byb3BlcnR5TmFtZVwiICsgal07XHJcbiAgICAgIGxldCBlZGl0TUFwcGluZ0luY2x1ZGVJblVwZGF0ZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgal07XHJcbiAgICAgIGxldCBlZGl0TUFwcGluZ0hpZGRlbkluY2x1ZGVJblVwZGF0ZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZVwiICsgal07XHJcblxyXG4gICAgICBsZXQgYWRNQXBwaW5nT2JqOiBBRE1hcHBpbmdNb2RlbCA9IG5ldyBBRE1hcHBpbmdNb2RlbCgpO1xyXG4gICAgICBhZE1BcHBpbmdPYmouQURNYXBwaW5nVHlwZUl0ZW1JRCA9IGVkaXRNQXBwaW5nVHlwZTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkJCU0ZQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5O1xyXG4gICAgICBhZE1BcHBpbmdPYmouQURQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5TmFtZTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkluY2x1ZGVJblVwZGF0ZSA9IGVkaXRNQXBwaW5nSW5jbHVkZUluVXBkYXRlID09IHVuZGVmaW5lZCA/IGVkaXRNQXBwaW5nSGlkZGVuSW5jbHVkZUluVXBkYXRlIDogZWRpdE1BcHBpbmdJbmNsdWRlSW5VcGRhdGU7XHJcbiAgICAgIEVkaXRNb2RlbC5BRE1hcHBpbmdzLnB1c2goYWRNQXBwaW5nT2JqKTtcclxuICAgIH1cclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0QURGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRGlyZWN0b3J5U2VydmljZS5lZGl0QWN0aXZlRGlyZWN0b3J5KEVkaXRNb2RlbClcclxuICB9XHJcblxyXG4gIC8vQUQgTWFwcGluZyBmdW5jdGlvbnNcclxuICBnZXRBRE1hcHBpbmdPcHRpb25zKEFETWFwcGluZ3M6IGFueVtdKSB7XHJcbiAgICBsZXQgQURNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBBRE1hcHBpbmdDb3VudDogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQURNYXBwaW5ncy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgbGV0IG9iamVjdE1hcHBpbmdPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIGxldCBzZWxlY3RlZFR5cGUgPSB0aGlzLm1hcHBpbmdUeXBlc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBBRE1hcHBpbmdzW2ldLmFkTWFwcGluZ1R5cGVJdGVtSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLk5hbWUgPSBcIkFETWFwcGluZ1R5cGVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFR5cGU7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuRGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1R5cGVzTGlzdDtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgbGV0IHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IEFETWFwcGluZ3NbaV0uYmJzZlByb3BlcnR5TmFtZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5Lk5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRQcm9wZXJ0eTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5LkRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdDtcclxuXHJcblxyXG4gICAgICBsZXQgQURNYXBwaW5nUHJvcGVydHlOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5OYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuVmFsdWUgPSBBRE1hcHBpbmdzW2ldLmFkUHJvcGVydHlOYW1lO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5NYXhMZW5ndGggPSAxMDI0O1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ0luY2x1ZGVVcGRhdGUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUuTmFtZSA9IFwiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgaTtcclxuICAgICAgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZS5WYWx1ZSA9IEFETWFwcGluZ3NbaV0uaW5jbHVkZUluVXBkYXRlO1xyXG4gICAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLklzRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5OYW1lID0gXCJBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLlZhbHVlID0gQURNYXBwaW5nc1tpXS5pbmNsdWRlSW5VcGRhdGU7XHJcblxyXG5cclxuICAgICAgb2JqZWN0TWFwcGluZ09wdGlvbnMucHVzaChBRE1hcHBpbmdUeXBlLCBBRE1hcHBpbmdQcm9wZXJ0eSwgQURNYXBwaW5nUHJvcGVydHlOYW1lLCBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLCBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlKTtcclxuICAgICAgQURNYXBwaW5nT3B0aW9ucy5wdXNoKG9iamVjdE1hcHBpbmdPcHRpb25zKTtcclxuICAgICAgQURNYXBwaW5nQ291bnQgKz0gMTtcclxuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gW0FETWFwcGluZ09wdGlvbnMsIEFETWFwcGluZ0NvdW50XTtcclxuICB9XHJcbiAgZGVsZXRlQURNYXBwaW5nKGRlbGV0ZWRBRE1BcHBpbmc6IGFueSkge1xyXG4gICAgbGV0IGRlbGV0ZWRNYXBwaW5nSW5kZXg6IG51bWJlciA9IHRoaXMuZWRpdE1hcHBpbmdzT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRBRE1BcHBpbmcpO1xyXG4gICAgaWYgKGRlbGV0ZWRNYXBwaW5nSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuZWRpdE1hcHBpbmdzT3B0aW9ucy5zcGxpY2UoZGVsZXRlZE1hcHBpbmdJbmRleCwgMSk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZEFETUFwcGluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkQURNQXBwaW5nW2ldLk5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRBRE1hcHBpbmcoKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmVkaXRNYXBwaW5nc0NvdW50O1xyXG5cclxuICAgIGxldCBvYmplY3RNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1R5cGUuTmFtZSA9IFwiQURNYXBwaW5nVHlwZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdUeXBlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdUeXBlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgQURNYXBwaW5nVHlwZS5EYXRhU291cmNlID0gdGhpcy5tYXBwaW5nVHlwZXNMaXN0O1xyXG5cclxuICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5Lk5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5LkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5EYXRhU291cmNlID0gdGhpcy5tYXBwaW5nUHJvcGVydGllc0xpc3Q7XHJcblxyXG5cclxuICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5OYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUuTmFtZSA9IFwiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgaW5kZXg7XHJcblxyXG4gICAgbGV0IEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuTmFtZSA9IFwiQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICBvYmplY3RNYXBwaW5nT3B0aW9ucy5wdXNoKEFETWFwcGluZ1R5cGUsIEFETWFwcGluZ1Byb3BlcnR5LCBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUsIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUsIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUpO1xyXG5cclxuICAgIHRoaXMuZWRpdE1hcHBpbmdzT3B0aW9ucy5wdXNoKG9iamVjdE1hcHBpbmdPcHRpb25zKTtcclxuICAgIHRoaXMuZWRpdE1hcHBpbmdzQ291bnQgKz0gMTtcclxuXHJcbiAgfVxyXG4gIC8vRGVsZXRlIEFDdGl2ZURpcmVjdG9yeVxyXG4gIHNob3dEZWxldGVBY3RpdmVEaXJlY3RvcnlNb2RhbChhY3RpdmVEaXJlY3RvcnlJRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUFjdGl2ZURpcmVjdG9yeUlkID0gYWN0aXZlRGlyZWN0b3J5SUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuZGVsZXRlQWN0aXZlRGlyZWN0b3J5SWQpO1xyXG5cclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZUFjdGl2ZURpcmVjdG9yeTtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuICBkZWxldGVBY3RpdmVEaXJlY3RvcnkgPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmRlbGV0ZUFjdGl2ZURpcmVjdG9yeShpZCk7XHJcbiAgfVxyXG5cclxuICAvL1N5bmMgQWN0aXZlIERpcmVjdG9yeVxyXG4gIHNob3dBRFN5bmNocm9uaXphdGlvbk1vZGFsKGFjdGl2ZURpcmVjdG9yeUlEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3luY0FjdGl2ZURpcmVjdG9yeUlkID0gYWN0aXZlRGlyZWN0b3J5SUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuc3luY0FjdGl2ZURpcmVjdG9yeUlkKTtcclxuXHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLnJ1blN5bmNyb25pemF0aW9uO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlJlaW5pdGlhbGl6ZTtcclxuICAgIHRoaXMuc3luY0NvbmZpcm1hdGlvbk9wdGlvbnMuQ29uZmlybWF0aW9uSGVhZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUnVuU3luY2hyb25pemF0aW9uXCIpO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5Db25maXJtYXRpb25Cb2R5ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUnVuU3luY2hyb25pemF0aW9uQ29uZmlybWF0aW9uXCIpO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5TdHlsZUNvbmZpcm1hdGlvbk1vZGUgPSBTdHlsZUNvbmZpcm1hdGlvbk1vZGUuV2FybmluZztcclxuICAgIHRoaXMuc3luY0NvbmZpcm1hdGlvbk9wdGlvbnMuU3VibWl0QnV0dG9uVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlllc1wiKTtcclxuICAgIHRoaXMuc3luY0NvbmZpcm1hdGlvbk9wdGlvbnMuRGlzYWJsZVN1Y2Nlc3NOb3RpZmljYXRpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5ydW5TeW5jT25TdWNjZXNzO1xyXG4gICAgdGhpcy5zeW5jQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcbiAgcnVuU3luY3Jvbml6YXRpb24gPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLnJ1bkFEU3luY2hyb25pemF0aW9uKGlkKTtcclxuICB9XHJcblxyXG4gIHJ1blN5bmNPblN1Y2Nlc3MgPSAocmVzdWx0KSA9PiB7XHJcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgfVxyXG4gIC8vTGFzdCBydW4gbG9nc1xyXG4gIHNob3dBRExhc3RSdW5Mb2dzTW9kYWwoYWN0aXZlRGlyZWN0b3J5SUQ6IHN0cmluZywgbGFzdFJ1bkxvZ3NNb2RhbCkge1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmdldExhc3RSdW5Mb2dzKGFjdGl2ZURpcmVjdG9yeUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgbGFzdFJ1bkxvZ3NNb2RlbCA9IHJlc3VsdCBhcyBhbnk7XHJcblxyXG4gICAgICB0aGlzLmFkQ29ubmVjdGlvbk5hbWUgPSBsYXN0UnVuTG9nc01vZGVsLm1vZGVsLmFkQ29ubmVjdGlvbk5hbWU7XHJcbiAgICAgIHRoaXMubGFzdFJ1bkxvZ3MgPSBsYXN0UnVuTG9nc01vZGVsLm1vZGVsLmxvZ3M7XHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGxhc3RSdW5Mb2dzTW9kYWwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuXHJcbjwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG48ZGl2ICpuZ0lmPVwic2hvd1BhZ2VDb250ZW50XCIgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8IS0tIGJlZ2luOjpIZWFkZXIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cImlzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJhY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiYWN0aXZlRGlyZWN0b3J5Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiB0aXRsZT0ne3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX0nIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL0FEQ29ubmVjdGlvbi9BZGQnXVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICA8IS0tYmVnaW46OkFjdGl2ZURpcmVjdG9yeSBsaXN0LS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUeXBlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGVybWlzc2lvblNldFwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkQ29ubmVjdGlvblJ1bm5pbmdOb3dcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvbnNcIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgYWN0aXZlRGlyZWN0b3J5IG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICB7e2FjdGl2ZURpcmVjdG9yeS5uYW1lfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIHt7YWN0aXZlRGlyZWN0b3J5LmFkVHlwZU5hbWV9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAge3thY3RpdmVEaXJlY3RvcnkucGVybWlzc2lvblNldE5hbWV9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCIgKm5nSWY9XCJhY3RpdmVEaXJlY3RvcnkuaXNSdW5uaW5nTm93O2Vsc2Ugbm90X1J1bm5pbmdcIj5cclxuICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiWWVzXCIpfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90X1J1bm5pbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm9cIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdEFjdGl2ZURpcmVjdG9yeU1vZGFsKGFjdGl2ZURpcmVjdG9yeS5pZCxhY3RpdmVEaXJlY3RvcnkuaWRFbmNyeXB0ZWQsZWRpdEFjdGl2ZURpcmVjdG9yeU1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlQWN0aXZlRGlyZWN0b3J5TW9kYWwoYWN0aXZlRGlyZWN0b3J5LmlkRW5jcnlwdGVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dBRFN5bmNocm9uaXphdGlvbk1vZGFsKGFjdGl2ZURpcmVjdG9yeS5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlSdW5TeW5jcm9uaXphdGlvblwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dBRExhc3RSdW5Mb2dzTW9kYWwoYWN0aXZlRGlyZWN0b3J5LmlkRW5jcnlwdGVkLGxhc3RSdW5Mb2dzTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5TGFzdFJ1bkxvZ3NcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8dHIgKm5nSWY9XCJjbGllbnRTaWRlUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLWVuZDo6QWN0aXZlIGRpcmVjdG9yeSBsaXN0LS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldEFjdGl2ZURpcmVjdG9yeUxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiaXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiYWN0aXZlRGlyZWN0b3J5UGFnaW5nXCIgW2dyb3VwXT1cImFjdGl2ZURpcmVjdG9yeUZvcm1cIiAjYWN0aXZlRGlyZWN0b3J5UGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuPCEtLSBFZGl0IE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI2VkaXRBY3RpdmVEaXJlY3RvcnlNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yeVwiKX19XHJcbiAgICAgIDwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE5hbWVcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImVkaXRQZXJtaXNzaW9uU2V0T3B0aW9uc1wiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJlZGl0TGFuZ3VhZ2VPcHRpb25zXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxoNj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQURUeXBlXCIpfX1cclxuICAgICAgICAgIDwvaDY+XHJcbiAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgIHt7ZWRpdEFEVHlwZU5hbWV9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93V2luZG93c0NvbnRyb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPGg2PlxyXG4gICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIklkZW50aWZpZXJcIil9fVxyXG4gICAgICAgICAgICA8L2g2PlxyXG4gICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAge3tlZGl0SWRlbnRpZmllcn19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8aDY+XHJcbiAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19XHJcbiAgICAgICAgICAgIDwvaDY+XHJcbiAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICB7e2VkaXRXaW5kb3dzVHlwZU5hbWV9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXREb21haW5cIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0U2FtQWNjb3VudFwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdFBhc3N3b3JkXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0F6dXJlQ29udHJvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0VGVuYW50SURcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdENsaWVudElEXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRDbGllbnRTZWNyZXRcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZWRpdEluYWN0aXZlXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJlZGl0RGFpbHlKb2JcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbXN4LXRhYmxlLXVzZXJzXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGg+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yeV9Qcm9wZXJ0eVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW5jbHVkZUluVXBkYXRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZWRpdE1hcHBpbmdzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgIDwhLS1IaWRkZW4gaW5jbHVkZSBpbiB1cGRhdGUgdmFsdWUtLT5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzRdXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhbGlnbi1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwia3QtbmF2X19saW5rXCIgKGNsaWNrKT1cImRlbGV0ZUFETWFwcGluZyhvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwia3QtbmF2X19saW5rLWljb24gZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZEFETWFwcGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZE5ld1JlY29yZFwiKX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VFZGl0QURNb2RhbCBpZD1cIkNsb3NlRWRpdEFETW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIERlbGV0ZSAgTW9kYWwgLS0+XHJcbjxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cImRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cImRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuPCEtLSBTeW5jaHJvbml6YXRpb24gIE1vZGFsIC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cInN5bmNDb250cm9sTG9hZGVkXCIgW29wdGlvbnNdPVwic3luY0NvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cInN5bmNDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjc3luY0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbD48L0JCU0YtQ29uZmlybWF0aW9uTW9kYWw+XHJcblxyXG48IS0tIFZpZXcgTGFzdCBSdW4gTG9ncyAtLT5cclxuPG5nLXRlbXBsYXRlICNsYXN0UnVuTG9nc01vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlMYXN0UnVuTG9nc1wiKX19IDoge3thZENvbm5lY3Rpb25OYW1lfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPHA+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19IDoge3thZENvbm5lY3Rpb25OYW1lfX08L3A+XHJcbiAgICAgICAgICA8cHJlIGNsYXNzPVwiY29sLW1kLTEyXCI+e3tsYXN0UnVuTG9nc319PC9wcmU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlRGVmYXVsdFByb3ZpZGVyTW9kYWwgaWQ9XCJDbG9zZURlZmF1bHRQcm92aWRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1lLTMgXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDbG9zZVwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiJdfQ==
421
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnkvYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnkvYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBOEIsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQW1CLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3UyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBSXJGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFPbkQsTUFBTSxPQUFPLHdCQUF3QjtJQWtFbkMsWUFBb0IsV0FBd0IsRUFBVSxlQUFnQyxFQUFTLGNBQThCLEVBQ25ILG9CQUEwQyxFQUFVLHNC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Q0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQVFELGVBQWU7SUFDZixzQkFBc0IsQ0FBQyxpQkFBeUIsRUFBRSxnQkFBZ0I7UUFDaEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2pGLElBQUksZ0JBQWdCLEdBQUcsTUFBYSxDQUFDO1lBRXJDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7WUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBRS9DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs4R0FwZlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsaWNDakJyQyx1MWJBMlRBOzsyRkQxU2Esd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLHNCQUFzQjs4UUFnQmtDLGFBQWE7c0JBQTlFLFNBQVM7dUJBQUMsa0NBQWtDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXlDQSw4QkFBOEI7c0JBQTdGLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVVBLDRCQUE0QjtzQkFBekYsU0FBUzt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCwgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIEZpbHRlckl0ZW0sIEZpbHRlclR5cGUsIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIFBhZ2luZ0FjdGlvbk1vZGUsIFBhZ2luZ0NvbXBvbmVudCwgUGFnaW5nT3B0aW9ucywgU3R5bGVDb25maXJtYXRpb25Nb2RlLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0FjdGl2ZURpcmVjdG9yeVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQURNb2RlbHMvQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsJztcclxuaW1wb3J0IHsgQURNYXBwaW5nTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0FETW9kZWxzL0FETWFwcGluZ01vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBRFR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvQURUeXBlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY3RpdmUtZGlyZWN0b3J5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGl2ZURpcmVjdG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIGFwaVVybCA9IFwiL2FwaS9hZG1pbi9BRENvbm5lY3Rpb24vXCI7XHJcbiAgc2hvd1BhZ2VDb250ZW50ID0gZmFsc2U7XHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIGFjdGl2ZURpcmVjdG9yeUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICB0ZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgYWN0aXZlRGlyZWN0b3J5UGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgYWN0aXZlRGlyZWN0b3J5UGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnYWN0aXZlRGlyZWN0b3J5UGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBwZXJtaXNzaW9uU2V0TGlzdDogYW55W10gPSBbXTtcclxuICBsYW5ndWFnZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHdlbGNvbWVNc2dUZW1wTGlzdDogYW55W10gPSBbXTtcclxuICBtYXBwaW5nVHlwZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIG1hcHBpbmdQcm9wZXJ0aWVzTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy8vL0VkaXQgTW9kZWwgQ29udHJvbHNcclxuICAvL1NoYXJlZCBjb250cm9sc1xyXG4gIGVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zOiBGb3JtT3B0aW9uc1xyXG4gIGVkaXROYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0QURUeXBlTmFtZTogc3RyaW5nOyAvL1dpbmRvd3Mgb3IgQXp1cmVcclxuICBlZGl0QURUeXBlSUQ6IG51bWJlcjtcclxuICBlZGl0SW5hY3RpdmU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBlZGl0RGFpbHlKb2I6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBlZGl0UGVybWlzc2lvblNldE9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBlZGl0TGFuZ3VhZ2VPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBlZGl0TWFwcGluZ3NPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIGVkaXRNYXBwaW5nc0NvdW50OiBudW1iZXI7XHJcbiAgYWN0aXZlRGlyZWN0b3J5SWQ6IG51bWJlcjtcclxuICAvL1dpbmRvd3MgTW9kZVxyXG4gIGVkaXREb21haW46IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRTYW1BY2NvdW50OiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0SWRlbnRpZmllcjogc3RyaW5nO1xyXG4gIGVkaXRXaW5kb3dzVHlwZU5hbWU6IHN0cmluZztcclxuICBlZGl0UGFzc3dvcmQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIHNob3dXaW5kb3dzQ29udHJvbDogYm9vbGVhbjtcclxuICAvL0F6dXJlIE1vZGVcclxuICBlZGl0VGVuYW50SUQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRDbGllbnRJRDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdENsaWVudFNlY3JldDogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2hvd0F6dXJlQ29udHJvbDogYm9vbGVhbjtcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlQWN0aXZlRGlyZWN0b3J5SWQ6IHN0cmluZztcclxuICBkZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG5cclxuICAvL0xhc3QgcnVuIGxvZ3NcclxuICBhZENvbm5lY3Rpb25OYW1lOiBzdHJpbmc7XHJcbiAgbGFzdFJ1bkxvZ3M6IHN0cmluZztcclxuXHJcbiAgLy9TeW5jaHJvbml6YXRpb24gbW9kYWxcclxuICBzeW5jQWN0aXZlRGlyZWN0b3J5SWQ6IHN0cmluZztcclxuICBzeW5jQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIHN5bmNDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnc3luY0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBzeW5jQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsIHB1YmxpYyB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJic2ZUcmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSwgcHJpdmF0ZSBhY3RpdmVEaXJlY3RvcnlTZXJ2aWNlOiBBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3JpZXNcIilcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVCcmVhZGNydW1icygpO1xyXG4gICAgdGhpcy5iYnNmVHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9pbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5uYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5wbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWVcclxuXHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuXHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeVBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeVBhZ2luZy5hY3Rpb25Qb3N0VVJMID0gdGhpcy5hcGlVcmwgKyAnR2V0QURDb25uZWN0aW9uQnlGaWx0ZXInO1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlQYWdpbmcub25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdO1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlQYWdpbmcuZmlsdGVycyA9IFt0aGlzLnRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5UGFnaW5nLnZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcblxyXG4gICAgdGhpcy5pc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvL1BhZ2luZyBmdW5jdGlvbnNcclxuICBzZXRBY3RpdmVEaXJlY3RvcnlMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKClcclxuICB9XHJcblxyXG4gIC8vRWRpdCBBY3RpdmVEaXJlY3RvcnlcclxuICBzaG93RWRpdEFjdGl2ZURpcmVjdG9yeU1vZGFsKGFjdGl2ZURpcmVjdG9yeUlEOiBudW1iZXIsIGFjdGl2ZURpcmVjdG9yeUlERW5jOiBzdHJpbmcsIGVkaXRBRE1vZGFsKSB7XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeUlkID0gYWN0aXZlRGlyZWN0b3J5SUQ7XHJcbiAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93QXp1cmVDb250cm9sID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmdldEVkaXRBY3RpdmVEaXJlY3RvcnkoYWN0aXZlRGlyZWN0b3J5SURFbmMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgYWN0aXZlRGlyZWN0b3J5ID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICBsZXQgbGlzdHMgPSByZXN1bHRPYmouZHJvcGRvd25zRGF0YTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdEFEVHlwZUlEID0gYWN0aXZlRGlyZWN0b3J5LmFkVHlwZUl0ZW1JRDtcclxuICAgICAgLy9Mb2FkIGlzdHNcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0TGlzdCA9IGxpc3RzLnBlcm1pc3Npb25TZXRzO1xyXG4gICAgICB0aGlzLmxhbmd1YWdlc0xpc3QgPSBsaXN0cy5sYW5ndWFnZXM7XHJcbiAgICAgIHRoaXMud2VsY29tZU1zZ1RlbXBMaXN0ID0gbGlzdHMudGVtcGxhdGVzO1xyXG4gICAgICB0aGlzLm1hcHBpbmdUeXBlc0xpc3QgPSBsaXN0cy5tYXBwaW5nVHlwZXM7XHJcbiAgICAgIHRoaXMubWFwcGluZ1Byb3BlcnRpZXNMaXN0ID0gbGlzdHMubWFwcGluZ1Byb3BlcnRpZXM7XHJcblxyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zLmZvcm1Hcm91cCA9IHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuZ2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEFETW9kZWw7XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdEFERnVuY3Rpb247XHJcbiAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5wYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGVcclxuXHJcblxyXG4gICAgICB0aGlzLmVkaXROYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWUubmFtZSA9IFwiZWRpdE5hbWVcIjtcclxuICAgICAgdGhpcy5lZGl0TmFtZS5sYWJlbEtleSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLmVkaXROYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5lZGl0TmFtZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TmFtZS52YWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS5jb25uZWN0aW9uTmFtZTtcclxuICAgICAgdGhpcy5lZGl0TmFtZS5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICBsZXQgc2VsZWN0ZWRQZXJtaXNzaW9uU2V0ID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGFjdGl2ZURpcmVjdG9yeS5wZXJtaXNzaW9uU2V0SUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG5cclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zLm5hbWUgPSBcImVkaXRQZXJtaXNzaW9uU2V0T3B0aW9uc1wiXHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zLmxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvblNldExpc3RcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRQZXJtaXNzaW9uU2V0O1xyXG5cclxuICAgICAgbGV0IHNlbGVjdGVkTGFuZ3VhZ2UgPSB0aGlzLmxhbmd1YWdlc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBhY3RpdmVEaXJlY3RvcnkubGFuZ0tleTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcblxyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5uYW1lID0gXCJlZGl0TGFuZ3VhZ2VPcHRpb25zXCJcclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zLmxhYmVsVmFsdWUgPSBcIkxhbmd1YWdlXCJcclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zLmxhYmVsS2V5ID0gXCJMYW5ndWFnZVwiXHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5kYXRhU291cmNlID0gdGhpcy5sYW5ndWFnZXNMaXN0XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRMYW5ndWFnZTtcclxuXHJcbiAgICAgIGxldCBzZWxlY3RlZFdlbGNvbWVNc2dUZW1wID0gYWN0aXZlRGlyZWN0b3J5LndlbGNvbWVUZW1wbGF0ZUlEICE9IG51bGwgPyB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IGFjdGl2ZURpcmVjdG9yeS53ZWxjb21lVGVtcGxhdGVJRDsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF0gOiBudWxsO1xyXG5cclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucy5uYW1lID0gXCJlZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9uc1wiXHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMubGFiZWxLZXkgPSBcIldlbGNvbWVNc2dUZW1wbGF0ZVwiXHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMud2VsY29tZU1zZ1RlbXBMaXN0XHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zLmlzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRXZWxjb21lTXNnVGVtcDtcclxuXHJcblxyXG4gICAgICB0aGlzLmVkaXRJbmFjdGl2ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5lZGl0SW5hY3RpdmUubmFtZSA9IFwiZWRpdEluYWN0aXZlXCI7XHJcbiAgICAgIHRoaXMuZWRpdEluYWN0aXZlLnZhbHVlID0gYWN0aXZlRGlyZWN0b3J5Lm1hcmtBc0luYWN0aXZlO1xyXG4gICAgICB0aGlzLmVkaXRJbmFjdGl2ZS5sYWJlbEtleSA9IFwiTWFya0FzSW5hY3RpdmVcIlxyXG4gICAgICB0aGlzLmVkaXRJbmFjdGl2ZS52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdERhaWx5Sm9iID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXREYWlseUpvYi5uYW1lID0gXCJlZGl0RGFpbHlKb2JcIlxyXG4gICAgICB0aGlzLmVkaXREYWlseUpvYi5sYWJlbEtleSA9IFwiQWRkVG9EYWlseUpvYlwiXHJcbiAgICAgIHRoaXMuZWRpdERhaWx5Sm9iLnZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LmFkZFRvRGFpbHlKb2I7XHJcbiAgICAgIHRoaXMuZWRpdERhaWx5Sm9iLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuXHJcbiAgICAgIC8vV2luZG93cyBtb2RlXHJcbiAgICAgIGlmICh0aGlzLmVkaXRBRFR5cGVJRCA9PSBOdW1iZXIoQURUeXBlLldpbmRvd3MpKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0SWRlbnRpZmllciA9IGFjdGl2ZURpcmVjdG9yeS5pZGVudGlmaWVyO1xyXG4gICAgICAgIHRoaXMuZWRpdFdpbmRvd3NUeXBlTmFtZSA9IGFjdGl2ZURpcmVjdG9yeS5hZFR5cGVOYW1lO1xyXG5cclxuICAgICAgICB0aGlzLmVkaXREb21haW4gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmVkaXREb21haW4ubmFtZSA9IFwiZWRpdERvbWFpblwiO1xyXG4gICAgICAgIHRoaXMuZWRpdERvbWFpbi5sYWJlbEtleSA9IFwiRG9tYWluXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLmVkaXREb21haW4uaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluLnZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LmRvbWFpbjtcclxuICAgICAgICB0aGlzLmVkaXREb21haW4ubWF4TGVuZ3RoID0gMjU2O1xyXG5cclxuICAgICAgICB0aGlzLmVkaXRTYW1BY2NvdW50ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0U2FtQWNjb3VudC5uYW1lID0gXCJlZGl0U2FtQWNjb3VudFwiO1xyXG4gICAgICAgIHRoaXMuZWRpdFNhbUFjY291bnQubGFiZWxLZXkgPSBcIlNhbUFjY291bnRcIjtcclxuICAgICAgICB0aGlzLmVkaXRTYW1BY2NvdW50LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLmVkaXRTYW1BY2NvdW50LnZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LnNhbUFjY291bnQ7XHJcbiAgICAgICAgdGhpcy5lZGl0U2FtQWNjb3VudC5tYXhMZW5ndGggPSAyMDtcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0UGFzc3dvcmQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC5uYW1lID0gXCJlZGl0UGFzc3dvcmRcIjtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC5sYWJlbEtleSA9IFwiUGFzc3dvcmRcIjtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC50eXBlID0gSW5wdXRUeXBlLlBhc3N3b3JkO1xyXG4gICAgICAgIHRoaXMuZWRpdFBhc3N3b3JkLnJlbW92ZURlZmF1bHRQYXNzd29yZFZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdFBhc3N3b3JkLnZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LnBhc3N3b3JkO1xyXG4gICAgICAgIHRoaXMuZWRpdFBhc3N3b3JkLm1heExlbmd0aCA9IDQwMDA7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1dpbmRvd3NDb250cm9sID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmVkaXRBRFR5cGVJRCA9PSBOdW1iZXIoQURUeXBlLkF6dXJlKSkge1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0VGVuYW50SUQubmFtZSA9IFwiZWRpdFRlbmFudElEXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0VGVuYW50SUQubGFiZWxLZXkgPSBcIlRlbmFudElEXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0VGVuYW50SUQudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELnZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LnRlbmFudElEO1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELm1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRJRC5uYW1lID0gXCJlZGl0Q2xpZW50SURcIjtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRJRC5sYWJlbEtleSA9IFwiQ2xpZW50SURcIjtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRJRC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQudmFsdWUgPSBhY3RpdmVEaXJlY3RvcnkuY2xpZW50SUQ7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQubWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50U2VjcmV0ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50U2VjcmV0Lm5hbWUgPSBcImVkaXRDbGllbnRTZWNyZXRcIjtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRTZWNyZXQubGFiZWxLZXkgPSBcIkNsaWVudFNlY3JldFwiO1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50U2VjcmV0LmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldC52YWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS5jbGllbnRTZWNyZXQ7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50U2VjcmV0Lm1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93QXp1cmVDb250cm9sID0gdHJ1ZTtcclxuXHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBsZXQgZGF0YTogYW55ID0gdGhpcy5nZXRBRE1hcHBpbmdPcHRpb25zKGFjdGl2ZURpcmVjdG9yeS5hZE1hcHBpbmdzKTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdE1hcHBpbmdzT3B0aW9ucyA9IGRhdGFbMF07XHJcbiAgICAgIHRoaXMuZWRpdE1hcHBpbmdzQ291bnQgPSBkYXRhWzFdO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGVkaXRBRE1vZGFsKTtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEFETW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBBY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwoKTtcclxuXHJcbiAgICBFZGl0TW9kZWwuSUQgPSBOdW1iZXIodGhpcy5hY3RpdmVEaXJlY3RvcnlJZCk7XHJcbiAgICBFZGl0TW9kZWwuQ29ubmVjdGlvbk5hbWUgPSByZXN1bHRNb2RlbC5lZGl0TmFtZTtcclxuICAgIEVkaXRNb2RlbC5QZXJtaXNzaW9uU2V0SUQgPSByZXN1bHRNb2RlbC5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMgIT0gbnVsbCA/IHJlc3VsdE1vZGVsLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucyA6IG51bGxcclxuICAgIEVkaXRNb2RlbC5MYW5nS2V5ID0gcmVzdWx0TW9kZWwuZWRpdExhbmd1YWdlT3B0aW9ucztcclxuICAgIEVkaXRNb2RlbC5XZWxjb21lVGVtcGxhdGVJRCA9IHJlc3VsdE1vZGVsLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zICE9IG51bGwgPyBOdW1iZXIocmVzdWx0TW9kZWwuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMpIDogbnVsbFxyXG4gICAgRWRpdE1vZGVsLk1hcmtBc0luYWN0aXZlID0gcmVzdWx0TW9kZWwuZWRpdEluYWN0aXZlO1xyXG4gICAgRWRpdE1vZGVsLkFkZFRvRGFpbHlKb2IgPSByZXN1bHRNb2RlbC5lZGl0RGFpbHlKb2I7XHJcblxyXG4gICAgaWYgKHRoaXMuZWRpdEFEVHlwZUlEID09IE51bWJlcihBRFR5cGUuV2luZG93cykpIHtcclxuICAgICAgRWRpdE1vZGVsLkRvbWFpbiA9IHJlc3VsdE1vZGVsLmVkaXREb21haW47XHJcbiAgICAgIEVkaXRNb2RlbC5TYW1BY2NvdW50ID0gcmVzdWx0TW9kZWwuZWRpdFNhbUFjY291bnQ7XHJcbiAgICAgIEVkaXRNb2RlbC5QYXNzd29yZCA9IHJlc3VsdE1vZGVsLmVkaXRQYXNzd29yZDtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuZWRpdEFEVHlwZUlEID09IE51bWJlcihBRFR5cGUuQXp1cmUpKSB7XHJcbiAgICAgIEVkaXRNb2RlbC5UZW5hbnRJRCA9IHJlc3VsdE1vZGVsLmVkaXRUZW5hbnRJRDtcclxuICAgICAgRWRpdE1vZGVsLkNsaWVudElEID0gcmVzdWx0TW9kZWwuZWRpdENsaWVudElEO1xyXG4gICAgICBFZGl0TW9kZWwuQ2xpZW50U2VjcmV0ID0gcmVzdWx0TW9kZWwuZWRpdENsaWVudFNlY3JldDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmVkaXRNYXBwaW5nc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nVHlwZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nVHlwZVwiICsgal07XHJcbiAgICAgIGlmIChlZGl0TUFwcGluZ1R5cGUgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICBsZXQgZWRpdE1BcHBpbmdQcm9wZXJ0eSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nUHJvcGVydHlcIiArIGpdO1xyXG4gICAgICBsZXQgZWRpdE1BcHBpbmdQcm9wZXJ0eU5hbWUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ1Byb3BlcnR5TmFtZVwiICsgal07XHJcbiAgICAgIGxldCBlZGl0TUFwcGluZ0luY2x1ZGVJblVwZGF0ZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgal07XHJcbiAgICAgIGxldCBlZGl0TUFwcGluZ0hpZGRlbkluY2x1ZGVJblVwZGF0ZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZVwiICsgal07XHJcblxyXG4gICAgICBsZXQgYWRNQXBwaW5nT2JqOiBBRE1hcHBpbmdNb2RlbCA9IG5ldyBBRE1hcHBpbmdNb2RlbCgpO1xyXG4gICAgICBhZE1BcHBpbmdPYmouQURNYXBwaW5nVHlwZUl0ZW1JRCA9IGVkaXRNQXBwaW5nVHlwZTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkJCU0ZQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5O1xyXG4gICAgICBhZE1BcHBpbmdPYmouQURQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5TmFtZTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkluY2x1ZGVJblVwZGF0ZSA9IGVkaXRNQXBwaW5nSW5jbHVkZUluVXBkYXRlID09IHVuZGVmaW5lZCA/IGVkaXRNQXBwaW5nSGlkZGVuSW5jbHVkZUluVXBkYXRlIDogZWRpdE1BcHBpbmdJbmNsdWRlSW5VcGRhdGU7XHJcbiAgICAgIEVkaXRNb2RlbC5BRE1hcHBpbmdzLnB1c2goYWRNQXBwaW5nT2JqKTtcclxuICAgIH1cclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0QURGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRGlyZWN0b3J5U2VydmljZS5lZGl0QWN0aXZlRGlyZWN0b3J5KEVkaXRNb2RlbClcclxuICB9XHJcblxyXG4gIC8vQUQgTWFwcGluZyBmdW5jdGlvbnNcclxuICBnZXRBRE1hcHBpbmdPcHRpb25zKEFETWFwcGluZ3M6IGFueVtdKSB7XHJcbiAgICBsZXQgQURNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBBRE1hcHBpbmdDb3VudDogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQURNYXBwaW5ncy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgbGV0IG9iamVjdE1hcHBpbmdPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIGxldCBzZWxlY3RlZFR5cGUgPSB0aGlzLm1hcHBpbmdUeXBlc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBBRE1hcHBpbmdzW2ldLmFkTWFwcGluZ1R5cGVJdGVtSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLm5hbWUgPSBcIkFETWFwcGluZ1R5cGVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFR5cGU7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuZGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1R5cGVzTGlzdDtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgbGV0IHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IEFETWFwcGluZ3NbaV0uYmJzZlByb3BlcnR5TmFtZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5Lm5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRQcm9wZXJ0eTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5LmRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdDtcclxuXHJcblxyXG4gICAgICBsZXQgQURNYXBwaW5nUHJvcGVydHlOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5uYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUudmFsdWUgPSBBRE1hcHBpbmdzW2ldLmFkUHJvcGVydHlOYW1lO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5tYXhMZW5ndGggPSAxMDI0O1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ0luY2x1ZGVVcGRhdGUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUubmFtZSA9IFwiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgaTtcclxuICAgICAgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZS52YWx1ZSA9IEFETWFwcGluZ3NbaV0uaW5jbHVkZUluVXBkYXRlO1xyXG4gICAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLmlzRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5uYW1lID0gXCJBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLnZhbHVlID0gQURNYXBwaW5nc1tpXS5pbmNsdWRlSW5VcGRhdGU7XHJcblxyXG5cclxuICAgICAgb2JqZWN0TWFwcGluZ09wdGlvbnMucHVzaChBRE1hcHBpbmdUeXBlLCBBRE1hcHBpbmdQcm9wZXJ0eSwgQURNYXBwaW5nUHJvcGVydHlOYW1lLCBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLCBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlKTtcclxuICAgICAgQURNYXBwaW5nT3B0aW9ucy5wdXNoKG9iamVjdE1hcHBpbmdPcHRpb25zKTtcclxuICAgICAgQURNYXBwaW5nQ291bnQgKz0gMTtcclxuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gW0FETWFwcGluZ09wdGlvbnMsIEFETWFwcGluZ0NvdW50XTtcclxuICB9XHJcbiAgZGVsZXRlQURNYXBwaW5nKGRlbGV0ZWRBRE1BcHBpbmc6IGFueSkge1xyXG4gICAgbGV0IGRlbGV0ZWRNYXBwaW5nSW5kZXg6IG51bWJlciA9IHRoaXMuZWRpdE1hcHBpbmdzT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRBRE1BcHBpbmcpO1xyXG4gICAgaWYgKGRlbGV0ZWRNYXBwaW5nSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuZWRpdE1hcHBpbmdzT3B0aW9ucy5zcGxpY2UoZGVsZXRlZE1hcHBpbmdJbmRleCwgMSk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZEFETUFwcGluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkQURNQXBwaW5nW2ldLk5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRBRE1hcHBpbmcoKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmVkaXRNYXBwaW5nc0NvdW50O1xyXG5cclxuICAgIGxldCBvYmplY3RNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1R5cGUubmFtZSA9IFwiQURNYXBwaW5nVHlwZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdUeXBlLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdUeXBlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdUeXBlLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgQURNYXBwaW5nVHlwZS5kYXRhU291cmNlID0gdGhpcy5tYXBwaW5nVHlwZXNMaXN0O1xyXG5cclxuICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5Lm5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5LmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5kYXRhU291cmNlID0gdGhpcy5tYXBwaW5nUHJvcGVydGllc0xpc3Q7XHJcblxyXG5cclxuICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5uYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLmlzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUubmFtZSA9IFwiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgaW5kZXg7XHJcblxyXG4gICAgbGV0IEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUubmFtZSA9IFwiQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICBvYmplY3RNYXBwaW5nT3B0aW9ucy5wdXNoKEFETWFwcGluZ1R5cGUsIEFETWFwcGluZ1Byb3BlcnR5LCBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUsIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUsIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUpO1xyXG5cclxuICAgIHRoaXMuZWRpdE1hcHBpbmdzT3B0aW9ucy5wdXNoKG9iamVjdE1hcHBpbmdPcHRpb25zKTtcclxuICAgIHRoaXMuZWRpdE1hcHBpbmdzQ291bnQgKz0gMTtcclxuXHJcbiAgfVxyXG4gIC8vRGVsZXRlIEFDdGl2ZURpcmVjdG9yeVxyXG4gIHNob3dEZWxldGVBY3RpdmVEaXJlY3RvcnlNb2RhbChhY3RpdmVEaXJlY3RvcnlJRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZUFjdGl2ZURpcmVjdG9yeUlkID0gYWN0aXZlRGlyZWN0b3J5SUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuZGVsZXRlQWN0aXZlRGlyZWN0b3J5SWQpO1xyXG5cclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZUFjdGl2ZURpcmVjdG9yeTtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuICBkZWxldGVBY3RpdmVEaXJlY3RvcnkgPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmRlbGV0ZUFjdGl2ZURpcmVjdG9yeShpZCk7XHJcbiAgfVxyXG5cclxuICAvL1N5bmMgQWN0aXZlIERpcmVjdG9yeVxyXG4gIHNob3dBRFN5bmNocm9uaXphdGlvbk1vZGFsKGFjdGl2ZURpcmVjdG9yeUlEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3luY0FjdGl2ZURpcmVjdG9yeUlkID0gYWN0aXZlRGlyZWN0b3J5SUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuc3luY0FjdGl2ZURpcmVjdG9yeUlkKTtcclxuXHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLnJ1blN5bmNyb25pemF0aW9uO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0TW9kZWwgPSBwYXJhbUFycmF5O1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLnBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlJlaW5pdGlhbGl6ZTtcclxuICAgIHRoaXMuc3luY0NvbmZpcm1hdGlvbk9wdGlvbnMuY29uZmlybWF0aW9uSGVhZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUnVuU3luY2hyb25pemF0aW9uXCIpO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25Cb2R5ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUnVuU3luY2hyb25pemF0aW9uQ29uZmlybWF0aW9uXCIpO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5zdHlsZUNvbmZpcm1hdGlvbk1vZGUgPSBTdHlsZUNvbmZpcm1hdGlvbk1vZGUuV2FybmluZztcclxuICAgIHRoaXMuc3luY0NvbmZpcm1hdGlvbk9wdGlvbnMuc3VibWl0QnV0dG9uVGV4dCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlllc1wiKTtcclxuICAgIHRoaXMuc3luY0NvbmZpcm1hdGlvbk9wdGlvbnMuZGlzYWJsZVN1Y2Nlc3NOb3RpZmljYXRpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5vblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5ydW5TeW5jT25TdWNjZXNzO1xyXG4gICAgdGhpcy5zeW5jQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcbiAgcnVuU3luY3Jvbml6YXRpb24gPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLnJ1bkFEU3luY2hyb25pemF0aW9uKGlkKTtcclxuICB9XHJcblxyXG4gIHJ1blN5bmNPblN1Y2Nlc3MgPSAocmVzdWx0KSA9PiB7XHJcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgfVxyXG4gIC8vTGFzdCBydW4gbG9nc1xyXG4gIHNob3dBRExhc3RSdW5Mb2dzTW9kYWwoYWN0aXZlRGlyZWN0b3J5SUQ6IHN0cmluZywgbGFzdFJ1bkxvZ3NNb2RhbCkge1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmdldExhc3RSdW5Mb2dzKGFjdGl2ZURpcmVjdG9yeUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgbGFzdFJ1bkxvZ3NNb2RlbCA9IHJlc3VsdCBhcyBhbnk7XHJcblxyXG4gICAgICB0aGlzLmFkQ29ubmVjdGlvbk5hbWUgPSBsYXN0UnVuTG9nc01vZGVsLm1vZGVsLmFkQ29ubmVjdGlvbk5hbWU7XHJcbiAgICAgIHRoaXMubGFzdFJ1bkxvZ3MgPSBsYXN0UnVuTG9nc01vZGVsLm1vZGVsLmxvZ3M7XHJcblxyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGxhc3RSdW5Mb2dzTW9kYWwpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuXHJcbjwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG48ZGl2ICpuZ0lmPVwic2hvd1BhZ2VDb250ZW50XCIgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8IS0tIGJlZ2luOjpIZWFkZXIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIiAqbmdJZj1cImlzRmlsdGVyTG9hZGVkXCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJhY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiYWN0aXZlRGlyZWN0b3J5Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiB0aXRsZT0ne3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX0nIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL0FEQ29ubmVjdGlvbi9BZGQnXVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICA8IS0tYmVnaW46OkFjdGl2ZURpcmVjdG9yeSBsaXN0LS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUeXBlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGVybWlzc2lvblNldFwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkQ29ubmVjdGlvblJ1bm5pbmdOb3dcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvbnNcIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5IGlkPVwibGlzdGluZ0NvbnRhaW5lclwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgYWN0aXZlRGlyZWN0b3J5IG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICB7e2FjdGl2ZURpcmVjdG9yeS5uYW1lfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIHt7YWN0aXZlRGlyZWN0b3J5LmFkVHlwZU5hbWV9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAge3thY3RpdmVEaXJlY3RvcnkucGVybWlzc2lvblNldE5hbWV9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCIgKm5nSWY9XCJhY3RpdmVEaXJlY3RvcnkuaXNSdW5uaW5nTm93O2Vsc2Ugbm90X1J1bm5pbmdcIj5cclxuICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiWWVzXCIpfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90X1J1bm5pbmc+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm9cIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVsbGlwc2lzLWhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdEFjdGl2ZURpcmVjdG9yeU1vZGFsKGFjdGl2ZURpcmVjdG9yeS5pZCxhY3RpdmVEaXJlY3RvcnkuaWRFbmNyeXB0ZWQsZWRpdEFjdGl2ZURpcmVjdG9yeU1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlQWN0aXZlRGlyZWN0b3J5TW9kYWwoYWN0aXZlRGlyZWN0b3J5LmlkRW5jcnlwdGVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dBRFN5bmNocm9uaXphdGlvbk1vZGFsKGFjdGl2ZURpcmVjdG9yeS5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlSdW5TeW5jcm9uaXphdGlvblwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dBRExhc3RSdW5Mb2dzTW9kYWwoYWN0aXZlRGlyZWN0b3J5LmlkRW5jcnlwdGVkLGxhc3RSdW5Mb2dzTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5TGFzdFJ1bkxvZ3NcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8dHIgKm5nSWY9XCJjbGllbnRTaWRlUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLWVuZDo6QWN0aXZlIGRpcmVjdG9yeSBsaXN0LS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldEFjdGl2ZURpcmVjdG9yeUxpc3RSZXN1bHQoJGV2ZW50KVwiICpuZ0lmPVwiaXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiYWN0aXZlRGlyZWN0b3J5UGFnaW5nXCIgW2dyb3VwXT1cImFjdGl2ZURpcmVjdG9yeUZvcm1cIiAjYWN0aXZlRGlyZWN0b3J5UGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuPCEtLSBFZGl0IE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI2VkaXRBY3RpdmVEaXJlY3RvcnlNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yeVwiKX19XHJcbiAgICAgIDwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE5hbWVcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImVkaXRQZXJtaXNzaW9uU2V0T3B0aW9uc1wiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJlZGl0TGFuZ3VhZ2VPcHRpb25zXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxoNj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQURUeXBlXCIpfX1cclxuICAgICAgICAgIDwvaDY+XHJcbiAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgIHt7ZWRpdEFEVHlwZU5hbWV9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93V2luZG93c0NvbnRyb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPGg2PlxyXG4gICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIklkZW50aWZpZXJcIil9fVxyXG4gICAgICAgICAgICA8L2g2PlxyXG4gICAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgICAge3tlZGl0SWRlbnRpZmllcn19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8aDY+XHJcbiAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19XHJcbiAgICAgICAgICAgIDwvaDY+XHJcbiAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICB7e2VkaXRXaW5kb3dzVHlwZU5hbWV9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXREb21haW5cIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0U2FtQWNjb3VudFwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdFBhc3N3b3JkXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0F6dXJlQ29udHJvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0VGVuYW50SURcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdENsaWVudElEXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRDbGllbnRTZWNyZXRcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZWRpdEluYWN0aXZlXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJlZGl0RGFpbHlKb2JcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbXN4LXRhYmxlLXVzZXJzXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGg+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yeV9Qcm9wZXJ0eVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSW5jbHVkZUluVXBkYXRlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZWRpdE1hcHBpbmdzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgIDwhLS1IaWRkZW4gaW5jbHVkZSBpbiB1cGRhdGUgdmFsdWUtLT5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzRdXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCIgW2hpZGRlbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhbGlnbi1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwia3QtbmF2X19saW5rXCIgKGNsaWNrKT1cImRlbGV0ZUFETWFwcGluZyhvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwia3QtbmF2X19saW5rLWljb24gZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZEFETWFwcGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZE5ld1JlY29yZFwiKX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VFZGl0QURNb2RhbCBpZD1cIkNsb3NlRWRpdEFETW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIERlbGV0ZSAgTW9kYWwgLS0+XHJcbjxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cImRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cImRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuPCEtLSBTeW5jaHJvbml6YXRpb24gIE1vZGFsIC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cInN5bmNDb250cm9sTG9hZGVkXCIgW29wdGlvbnNdPVwic3luY0NvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cInN5bmNDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjc3luY0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbD48L0JCU0YtQ29uZmlybWF0aW9uTW9kYWw+XHJcblxyXG48IS0tIFZpZXcgTGFzdCBSdW4gTG9ncyAtLT5cclxuPG5nLXRlbXBsYXRlICNsYXN0UnVuTG9nc01vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlMYXN0UnVuTG9nc1wiKX19IDoge3thZENvbm5lY3Rpb25OYW1lfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPHA+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19IDoge3thZENvbm5lY3Rpb25OYW1lfX08L3A+XHJcbiAgICAgICAgICA8cHJlIGNsYXNzPVwiY29sLW1kLTEyXCI+e3tsYXN0UnVuTG9nc319PC9wcmU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlRGVmYXVsdFByb3ZpZGVyTW9kYWwgaWQ9XCJDbG9zZURlZmF1bHRQcm92aWRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1lLTMgXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDbG9zZVwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiJdfQ==