@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
@@ -133,61 +133,61 @@ export class ActiveDirectoryAddComponent {
133
133
  this.mappingTypesList = reultObj.mappingTypes;
134
134
  this.addActiveDirectoryForm = new FormGroup({});
135
135
  this.addActiveDirectoryFormOptions = new FormOptions();
136
- this.addActiveDirectoryFormOptions.FormGroup = this.addActiveDirectoryForm;
137
- this.addActiveDirectoryFormOptions.GetModelFunction = this.getAddADModel;
138
- this.addActiveDirectoryFormOptions.ServiceSubmitFunction = this.getAddADFunction;
139
- this.addActiveDirectoryFormOptions.OnSuccessHandler = this.addADOnSuccess;
136
+ this.addActiveDirectoryFormOptions.formGroup = this.addActiveDirectoryForm;
137
+ this.addActiveDirectoryFormOptions.getModelFunction = this.getAddADModel;
138
+ this.addActiveDirectoryFormOptions.serviceSubmitFunction = this.getAddADFunction;
139
+ this.addActiveDirectoryFormOptions.onSuccessHandler = this.addADOnSuccess;
140
140
  this.addTypeOptions = new DropdownOptions();
141
- this.addTypeOptions.Name = "addTypeOptions";
142
- this.addTypeOptions.LabelKey = "Type";
143
- this.addTypeOptions.ViewType = ControlLayout.Horizontal;
144
- this.addTypeOptions.DataSource = this.adTypesList;
145
- this.addTypeOptions.SingleSelection = true;
146
- this.addTypeOptions.AllowSearchFilter = true;
147
- this.addTypeOptions.IsRequired = true;
141
+ this.addTypeOptions.name = "addTypeOptions";
142
+ this.addTypeOptions.labelKey = "Type";
143
+ this.addTypeOptions.viewType = ControlLayout.Horizontal;
144
+ this.addTypeOptions.dataSource = this.adTypesList;
145
+ this.addTypeOptions.singleSelection = true;
146
+ this.addTypeOptions.allowSearchFilter = true;
147
+ this.addTypeOptions.isRequired = true;
148
148
  this.addName = new TextBoxOptions();
149
- this.addName.Name = "addName";
150
- this.addName.LabelKey = "Name";
151
- this.addName.Type = InputType.Text;
152
- this.addName.Value = null;
153
- this.addName.IsRequired = true;
154
- this.addName.MaxLength = 100;
149
+ this.addName.name = "addName";
150
+ this.addName.labelKey = "Name";
151
+ this.addName.type = InputType.Text;
152
+ this.addName.value = null;
153
+ this.addName.isRequired = true;
154
+ this.addName.maxLength = 100;
155
155
  this.addPermissionSet = new DropdownOptions();
156
- this.addPermissionSet.Name = "addPermissionSet";
157
- this.addPermissionSet.LabelKey = "PermissionSet";
158
- this.addPermissionSet.DataSource = this.permissionSetList;
159
- this.addPermissionSet.SingleSelection = true;
160
- this.addPermissionSet.AllowSearchFilter = true;
161
- this.addPermissionSet.IsRequired = true;
156
+ this.addPermissionSet.name = "addPermissionSet";
157
+ this.addPermissionSet.labelKey = "PermissionSet";
158
+ this.addPermissionSet.dataSource = this.permissionSetList;
159
+ this.addPermissionSet.singleSelection = true;
160
+ this.addPermissionSet.allowSearchFilter = true;
161
+ this.addPermissionSet.isRequired = true;
162
162
  this.addLanguage = new DropdownOptions();
163
- this.addLanguage.Name = "addLanguage";
164
- this.addLanguage.LabelKey = "Language";
165
- this.addLanguage.DataSource = this.languagesList;
166
- this.addLanguage.SingleSelection = true;
167
- this.addLanguage.AllowSearchFilter = true;
168
- this.addLanguage.IsRequired = true;
163
+ this.addLanguage.name = "addLanguage";
164
+ this.addLanguage.labelKey = "Language";
165
+ this.addLanguage.dataSource = this.languagesList;
166
+ this.addLanguage.singleSelection = true;
167
+ this.addLanguage.allowSearchFilter = true;
168
+ this.addLanguage.isRequired = true;
169
169
  this.addWelcomeMsgTemp = new DropdownOptions();
170
- this.addWelcomeMsgTemp.Name = "addWelcomeMsgTemp";
171
- this.addWelcomeMsgTemp.LabelKey = "WelcomeMsgTemplate";
172
- this.addWelcomeMsgTemp.DataSource = this.welcomeMsgTempList;
173
- this.addWelcomeMsgTemp.SingleSelection = true;
174
- this.addWelcomeMsgTemp.AllowSearchFilter = true;
170
+ this.addWelcomeMsgTemp.name = "addWelcomeMsgTemp";
171
+ this.addWelcomeMsgTemp.labelKey = "WelcomeMsgTemplate";
172
+ this.addWelcomeMsgTemp.dataSource = this.welcomeMsgTempList;
173
+ this.addWelcomeMsgTemp.singleSelection = true;
174
+ this.addWelcomeMsgTemp.allowSearchFilter = true;
175
175
  this.addFileProvider = new DropdownOptions();
176
- this.addFileProvider.Name = "addFileProvider";
177
- this.addFileProvider.LabelKey = "FileProvider";
178
- this.addFileProvider.DataSource = this.fileProviders;
179
- this.addFileProvider.SingleSelection = true;
180
- this.addFileProvider.AllowSearchFilter = true;
176
+ this.addFileProvider.name = "addFileProvider";
177
+ this.addFileProvider.labelKey = "FileProvider";
178
+ this.addFileProvider.dataSource = this.fileProviders;
179
+ this.addFileProvider.singleSelection = true;
180
+ this.addFileProvider.allowSearchFilter = true;
181
181
  this.addMarkInactive = new ToggleSlideOptions();
182
- this.addMarkInactive.Name = "addMarkInactive";
183
- this.addMarkInactive.LabelKey = "MarkAsInactive";
184
- this.addMarkInactive.Value = false;
185
- this.addMarkInactive.ViewType = ControlLayout.Horizontal;
182
+ this.addMarkInactive.name = "addMarkInactive";
183
+ this.addMarkInactive.labelKey = "MarkAsInactive";
184
+ this.addMarkInactive.value = false;
185
+ this.addMarkInactive.viewType = ControlLayout.Horizontal;
186
186
  this.addDailyJob = new ToggleSlideOptions();
187
- this.addDailyJob.Name = "addDailyJob";
188
- this.addDailyJob.LabelKey = "AddToDailyJob";
189
- this.addDailyJob.Value = false;
190
- this.addDailyJob.ViewType = ControlLayout.Horizontal;
187
+ this.addDailyJob.name = "addDailyJob";
188
+ this.addDailyJob.labelKey = "AddToDailyJob";
189
+ this.addDailyJob.value = false;
190
+ this.addDailyJob.viewType = ControlLayout.Horizontal;
191
191
  //set AD mapping
192
192
  let data = this.getADMappingOptions(reultObj.adMappings);
193
193
  this.addMappingsOptions = data[0];
@@ -205,40 +205,40 @@ export class ActiveDirectoryAddComponent {
205
205
  let objectMappingOptions = [];
206
206
  let ADMappingType = new DropdownOptions();
207
207
  let selectedType = this.mappingTypesList.filter((item) => { return item.key == ADMappings[i].adMappingTypeItemID; }).map((item) => item.key)[0];
208
- ADMappingType.Name = "ADMappingType" + i;
209
- ADMappingType.HideLabel = true;
210
- ADMappingType.SingleSelection = true;
211
- ADMappingType.SelectedItems = selectedType;
212
- ADMappingType.ViewType = ControlLayout.Horizontal;
213
- ADMappingType.DataSource = this.mappingTypesList;
214
- ADMappingType.IsRequired = true;
208
+ ADMappingType.name = "ADMappingType" + i;
209
+ ADMappingType.hideLabel = true;
210
+ ADMappingType.singleSelection = true;
211
+ ADMappingType.selectedItems = selectedType;
212
+ ADMappingType.viewType = ControlLayout.Horizontal;
213
+ ADMappingType.dataSource = this.mappingTypesList;
214
+ ADMappingType.isRequired = true;
215
215
  let ADMappingProperty = new DropdownOptions();
216
216
  let selectedProperty = this.mappingPropertiesList.filter((item) => { return item.key == ADMappings[i].bbsfPropertyName; }).map((item) => item.key)[0];
217
- ADMappingProperty.Name = "ADMappingProperty" + i;
218
- ADMappingProperty.HideLabel = true;
219
- ADMappingProperty.SingleSelection = true;
220
- ADMappingProperty.SelectedItems = selectedProperty;
221
- ADMappingProperty.ViewType = ControlLayout.Horizontal;
222
- ADMappingProperty.DataSource = this.mappingPropertiesList;
223
- ADMappingProperty.IsRequired = true;
217
+ ADMappingProperty.name = "ADMappingProperty" + i;
218
+ ADMappingProperty.hideLabel = true;
219
+ ADMappingProperty.singleSelection = true;
220
+ ADMappingProperty.selectedItems = selectedProperty;
221
+ ADMappingProperty.viewType = ControlLayout.Horizontal;
222
+ ADMappingProperty.dataSource = this.mappingPropertiesList;
223
+ ADMappingProperty.isRequired = true;
224
224
  let ADMappingPropertyName = new TextBoxOptions();
225
- ADMappingPropertyName.Name = "ADMappingPropertyName" + i;
226
- ADMappingPropertyName.HideLabel = true;
227
- ADMappingPropertyName.Type = InputType.Text;
228
- ADMappingPropertyName.Value = ADMappings[i].adPropertyName;
229
- ADMappingPropertyName.IsRequired = false;
230
- ADMappingPropertyName.ViewType = ControlLayout.Horizontal;
231
- ADMappingPropertyName.IsRequired = true;
232
- ADMappingPropertyName.MaxLength = 1024;
225
+ ADMappingPropertyName.name = "ADMappingPropertyName" + i;
226
+ ADMappingPropertyName.hideLabel = true;
227
+ ADMappingPropertyName.type = InputType.Text;
228
+ ADMappingPropertyName.value = ADMappings[i].adPropertyName;
229
+ ADMappingPropertyName.isRequired = false;
230
+ ADMappingPropertyName.viewType = ControlLayout.Horizontal;
231
+ ADMappingPropertyName.isRequired = true;
232
+ ADMappingPropertyName.maxLength = 1024;
233
233
  let ADMappingIncludeUpdate = new CheckBoxOptions();
234
- ADMappingIncludeUpdate.Name = "ADMappingIncludeUpdate" + i;
235
- ADMappingIncludeUpdate.Value = ADMappings[i].includeInUpdate;
236
- ADMappingIncludeUpdate.IsDisabled = true;
234
+ ADMappingIncludeUpdate.name = "ADMappingIncludeUpdate" + i;
235
+ ADMappingIncludeUpdate.value = ADMappings[i].includeInUpdate;
236
+ ADMappingIncludeUpdate.isDisabled = true;
237
237
  let ADMappingHiddenIncludeUpdate = new TextBoxOptions();
238
- ADMappingHiddenIncludeUpdate.Name = "ADMappingHiddenIncludeUpdate" + i;
239
- ADMappingHiddenIncludeUpdate.HideLabel = true;
240
- ADMappingHiddenIncludeUpdate.Type = InputType.Text;
241
- ADMappingHiddenIncludeUpdate.Value = ADMappings[i].includeInUpdate;
238
+ ADMappingHiddenIncludeUpdate.name = "ADMappingHiddenIncludeUpdate" + i;
239
+ ADMappingHiddenIncludeUpdate.hideLabel = true;
240
+ ADMappingHiddenIncludeUpdate.type = InputType.Text;
241
+ ADMappingHiddenIncludeUpdate.value = ADMappings[i].includeInUpdate;
242
242
  objectMappingOptions.push(ADMappingType, ADMappingProperty, ADMappingPropertyName, ADMappingIncludeUpdate, ADMappingHiddenIncludeUpdate);
243
243
  ADMappingOptions.push(objectMappingOptions);
244
244
  ADMappingCount += 1;
@@ -258,30 +258,30 @@ export class ActiveDirectoryAddComponent {
258
258
  let index = this.addMappingsCount;
259
259
  let objectMappingOptions = [];
260
260
  let ADMappingType = new DropdownOptions();
261
- ADMappingType.Name = "ADMappingType" + index;
262
- ADMappingType.HideLabel = true;
263
- ADMappingType.SingleSelection = true;
264
- ADMappingType.ViewType = ControlLayout.Horizontal;
265
- ADMappingType.DataSource = this.mappingTypesList;
261
+ ADMappingType.name = "ADMappingType" + index;
262
+ ADMappingType.hideLabel = true;
263
+ ADMappingType.singleSelection = true;
264
+ ADMappingType.viewType = ControlLayout.Horizontal;
265
+ ADMappingType.dataSource = this.mappingTypesList;
266
266
  let ADMappingProperty = new DropdownOptions();
267
- ADMappingProperty.Name = "ADMappingProperty" + index;
268
- ADMappingProperty.HideLabel = true;
269
- ADMappingProperty.SingleSelection = true;
270
- ADMappingProperty.ViewType = ControlLayout.Horizontal;
271
- ADMappingProperty.DataSource = this.mappingPropertiesList;
267
+ ADMappingProperty.name = "ADMappingProperty" + index;
268
+ ADMappingProperty.hideLabel = true;
269
+ ADMappingProperty.singleSelection = true;
270
+ ADMappingProperty.viewType = ControlLayout.Horizontal;
271
+ ADMappingProperty.dataSource = this.mappingPropertiesList;
272
272
  let ADMappingPropertyName = new TextBoxOptions();
273
- ADMappingPropertyName.Name = "ADMappingPropertyName" + index;
274
- ADMappingPropertyName.HideLabel = true;
275
- ADMappingPropertyName.Type = InputType.Text;
276
- ADMappingPropertyName.IsRequired = false;
277
- ADMappingPropertyName.ViewType = ControlLayout.Horizontal;
273
+ ADMappingPropertyName.name = "ADMappingPropertyName" + index;
274
+ ADMappingPropertyName.hideLabel = true;
275
+ ADMappingPropertyName.type = InputType.Text;
276
+ ADMappingPropertyName.isRequired = false;
277
+ ADMappingPropertyName.viewType = ControlLayout.Horizontal;
278
278
  let ADMappingIncludeUpdate = new CheckBoxOptions();
279
- ADMappingIncludeUpdate.Name = "ADMappingIncludeUpdate" + index;
280
- ADMappingIncludeUpdate.Value = true;
279
+ ADMappingIncludeUpdate.name = "ADMappingIncludeUpdate" + index;
280
+ ADMappingIncludeUpdate.value = true;
281
281
  let ADMappingHiddenIncludeUpdate = new TextBoxOptions();
282
- ADMappingHiddenIncludeUpdate.Name = "ADMappingHiddenIncludeUpdate" + index;
283
- ADMappingHiddenIncludeUpdate.HideLabel = true;
284
- ADMappingHiddenIncludeUpdate.Type = InputType.Text;
282
+ ADMappingHiddenIncludeUpdate.name = "ADMappingHiddenIncludeUpdate" + index;
283
+ ADMappingHiddenIncludeUpdate.hideLabel = true;
284
+ ADMappingHiddenIncludeUpdate.type = InputType.Text;
285
285
  objectMappingOptions.push(ADMappingType, ADMappingProperty, ADMappingPropertyName, ADMappingIncludeUpdate, ADMappingHiddenIncludeUpdate);
286
286
  this.addMappingsOptions.push(objectMappingOptions);
287
287
  this.addMappingsCount += 1;
@@ -290,11 +290,11 @@ export class ActiveDirectoryAddComponent {
290
290
  windowsTypeChange(typeValue) {
291
291
  if (typeValue == ActiveDirectoryWindowConnectionType.ActiveDirectoryGroup) {
292
292
  this.addShowBuiltInGroups = new ToggleSlideOptions();
293
- this.addShowBuiltInGroups.Name = "addShowBuiltInGroups";
294
- this.addShowBuiltInGroups.LabelValue = "ShowBuiltInGroups";
295
- this.addShowBuiltInGroups.LabelKey = "ShowBuiltInGroups";
296
- this.addShowBuiltInGroups.Value = false;
297
- this.addShowBuiltInGroups.ViewType = ControlLayout.Horizontal;
293
+ this.addShowBuiltInGroups.name = "addShowBuiltInGroups";
294
+ this.addShowBuiltInGroups.labelValue = "ShowBuiltInGroups";
295
+ this.addShowBuiltInGroups.labelKey = "ShowBuiltInGroups";
296
+ this.addShowBuiltInGroups.value = false;
297
+ this.addShowBuiltInGroups.viewType = ControlLayout.Horizontal;
298
298
  this.addShowBuiltInGroupsVisible = true;
299
299
  }
300
300
  else {
@@ -313,33 +313,33 @@ export class ActiveDirectoryAddComponent {
313
313
  this.addActiveDirectoryForm.removeControl("addClientSecret");
314
314
  //Initialize windows controls
315
315
  this.addWindowsTypeOptions = new DropdownOptions();
316
- this.addWindowsTypeOptions.Name = "addWindowsTypeOptions";
317
- this.addWindowsTypeOptions.LabelKey = "WindowsType";
318
- this.addWindowsTypeOptions.ViewType = ControlLayout.Horizontal;
319
- this.addWindowsTypeOptions.DataSource = this.adWindowsTypes;
320
- this.addWindowsTypeOptions.SingleSelection = true;
321
- this.addWindowsTypeOptions.AllowSearchFilter = true;
322
- this.addWindowsTypeOptions.IsRequired = true;
316
+ this.addWindowsTypeOptions.name = "addWindowsTypeOptions";
317
+ this.addWindowsTypeOptions.labelKey = "WindowsType";
318
+ this.addWindowsTypeOptions.viewType = ControlLayout.Horizontal;
319
+ this.addWindowsTypeOptions.dataSource = this.adWindowsTypes;
320
+ this.addWindowsTypeOptions.singleSelection = true;
321
+ this.addWindowsTypeOptions.allowSearchFilter = true;
322
+ this.addWindowsTypeOptions.isRequired = true;
323
323
  this.addDomain = new TextBoxOptions();
324
- this.addDomain.Name = "addDomain";
325
- this.addDomain.LabelKey = "Domain";
326
- this.addDomain.Type = InputType.Text;
327
- this.addDomain.Value = null;
328
- this.addDomain.IsRequired = true;
329
- this.addDomain.MaxLength = 256;
324
+ this.addDomain.name = "addDomain";
325
+ this.addDomain.labelKey = "Domain";
326
+ this.addDomain.type = InputType.Text;
327
+ this.addDomain.value = null;
328
+ this.addDomain.isRequired = true;
329
+ this.addDomain.maxLength = 256;
330
330
  this.addSamAccount = new TextBoxOptions();
331
- this.addSamAccount.Name = "addSamAccount";
332
- this.addSamAccount.LabelKey = "SamAccount";
333
- this.addSamAccount.Type = InputType.Text;
334
- this.addSamAccount.Value = null;
335
- this.addSamAccount.MaxLength = 20;
331
+ this.addSamAccount.name = "addSamAccount";
332
+ this.addSamAccount.labelKey = "SamAccount";
333
+ this.addSamAccount.type = InputType.Text;
334
+ this.addSamAccount.value = null;
335
+ this.addSamAccount.maxLength = 20;
336
336
  this.addPassword = new TextBoxOptions();
337
- this.addPassword.Name = "addPassword";
338
- this.addPassword.LabelKey = "Password";
339
- this.addPassword.Type = InputType.Password;
340
- this.addPassword.Value = null;
341
- this.addPassword.RemoveDefaultPasswordValidation = true;
342
- this.addPassword.MaxLength = 4000;
337
+ this.addPassword.name = "addPassword";
338
+ this.addPassword.labelKey = "Password";
339
+ this.addPassword.type = InputType.Password;
340
+ this.addPassword.value = null;
341
+ this.addPassword.removeDefaultPasswordValidation = true;
342
+ this.addPassword.maxLength = 4000;
343
343
  this.showAzureControls = false;
344
344
  this.showWindowsControls = true;
345
345
  }
@@ -352,26 +352,26 @@ export class ActiveDirectoryAddComponent {
352
352
  this.addActiveDirectoryForm.removeControl("addShowBuiltInGroups");
353
353
  this.addActiveDirectoryForm.removeControl("addWindowsTypeOptions");
354
354
  this.addTenantID = new TextBoxOptions();
355
- this.addTenantID.Name = "addTenantID";
356
- this.addTenantID.LabelKey = "TenantID";
357
- this.addTenantID.Type = InputType.Text;
358
- this.addTenantID.Value = null;
359
- this.addTenantID.IsRequired = true;
360
- this.addTenantID.MaxLength = 100;
355
+ this.addTenantID.name = "addTenantID";
356
+ this.addTenantID.labelKey = "TenantID";
357
+ this.addTenantID.type = InputType.Text;
358
+ this.addTenantID.value = null;
359
+ this.addTenantID.isRequired = true;
360
+ this.addTenantID.maxLength = 100;
361
361
  this.addClientID = new TextBoxOptions();
362
- this.addClientID.Name = "addClientID";
363
- this.addClientID.LabelKey = "ClientID";
364
- this.addClientID.Type = InputType.Text;
365
- this.addClientID.Value = null;
366
- this.addClientID.IsRequired = true;
367
- this.addClientID.MaxLength = 100;
362
+ this.addClientID.name = "addClientID";
363
+ this.addClientID.labelKey = "ClientID";
364
+ this.addClientID.type = InputType.Text;
365
+ this.addClientID.value = null;
366
+ this.addClientID.isRequired = true;
367
+ this.addClientID.maxLength = 100;
368
368
  this.addClientSecret = new TextBoxOptions();
369
- this.addClientSecret.Name = "addClientSecret";
370
- this.addClientSecret.LabelKey = "ClientSecret";
371
- this.addClientSecret.Type = InputType.Text;
372
- this.addClientSecret.Value = null;
373
- this.addClientSecret.IsRequired = true;
374
- this.addClientSecret.MaxLength = 100;
369
+ this.addClientSecret.name = "addClientSecret";
370
+ this.addClientSecret.labelKey = "ClientSecret";
371
+ this.addClientSecret.type = InputType.Text;
372
+ this.addClientSecret.value = null;
373
+ this.addClientSecret.isRequired = true;
374
+ this.addClientSecret.maxLength = 100;
375
375
  this.showAzureControls = true;
376
376
  this.showWindowsControls = false;
377
377
  }
@@ -386,22 +386,22 @@ export class ActiveDirectoryAddComponent {
386
386
  if (ResultModel.addTypeOptions) {
387
387
  if (this.selectedType == ActiveDirectoryType.Windows) {
388
388
  if (!ResultModel.addDomain || !ResultModel.addWindowsTypeOptions) {
389
- this.adDomainControl.IsValid();
390
- this.adWindowsTypeControl.IsValid();
389
+ this.adDomainControl.isValid();
390
+ this.adWindowsTypeControl.isValid();
391
391
  return;
392
392
  }
393
393
  }
394
394
  else {
395
395
  if (!ResultModel.addTenantID || !ResultModel.addClientID || !ResultModel.addClientSecret) {
396
- this.tenantIDControl.IsValid();
397
- this.clientIDControl.IsValid();
398
- this.clientSecretControl.IsValid();
396
+ this.tenantIDControl.isValid();
397
+ this.clientIDControl.isValid();
398
+ this.clientSecretControl.isValid();
399
399
  return;
400
400
  }
401
401
  }
402
402
  }
403
403
  else {
404
- this.adTypeControl.IsValid();
404
+ this.adTypeControl.isValid();
405
405
  return;
406
406
  }
407
407
  }
@@ -467,7 +467,7 @@ export class ActiveDirectoryAddComponent {
467
467
  return;
468
468
  }
469
469
  else {
470
- this.addName.Value = this.identifierName + " connection";
470
+ this.addName.value = this.identifierName + " connection";
471
471
  this.currentStep$.next(nextStep);
472
472
  }
473
473
  }
@@ -501,7 +501,7 @@ export class ActiveDirectoryAddComponent {
501
501
  this.requestHandlerService.destroyHandler();
502
502
  }
503
503
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ActiveDirectoryAddComponent, deps: [{ token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i2.BBSFTranslateService }, { token: i3.ActiveDirectoryService }, { token: i4.Router }, { token: i2.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
504
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ActiveDirectoryAddComponent, selector: "lib-active-directory-add", viewQueries: [{ propertyName: "adTypeControl", first: true, predicate: ["adTypeControl"], descendants: true }, { propertyName: "adDomainControl", first: true, predicate: ["adDomainControl"], descendants: true }, { propertyName: "adWindowsTypeControl", first: true, predicate: ["adWindowsTypeControl"], descendants: true }, { propertyName: "tenantIDControl", first: true, predicate: ["tenantIDControl"], descendants: true }, { propertyName: "clientIDControl", first: true, predicate: ["clientIDControl"], descendants: true }, { propertyName: "clientSecretControl", first: true, predicate: ["clientSecretControl"], descendants: true }], ngImport: i0, template: "\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"stepper stepper-pills stepper-column d-flex flex-column flex-xl-row flex-row-fluid \" id=\"kt_create_account_stepper\">\r\n <div class=\"d-flex justify-content-center rounded justify-content-xl-start flex-row-auto me-9 card\">\r\n <div class=\"card-body px-6 px-lg-10 px-xxl-15 py-20\">\r\n <div class=\"stepper-nav\">\r\n <div class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 1 }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">1</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory\")}}</h3>\r\n\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab1Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showWindowsControls\" class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 2 && showWindowsControls}\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">2</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory_SelectContainer\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab2Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"stepper-item\" [ngClass]=\"{current: (currentStep$.value === formsCount ) }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">{{formsCount}}</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"Options\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab3Note\")}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n <div class=\"card d-flex flex-row-fluid flex-center rounded\">\r\n <div class=\"p-20 w-100 card-body\" *ngIf=\"isAddFormLoaded\">\r\n <BBSF-Form [options]=\"addActiveDirectoryFormOptions\">\r\n <div class=\"current\">\r\n <ng-container *ngIf=\"currentStep$.value === 1\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adTypeControl [options]=\"addTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"typeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div *ngIf=\"showWindowsControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adWindowsTypeControl [options]=\"addWindowsTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"windowsTypeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #adDomainControl [options]=\"addDomain\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n <div *ngIf=\"errorIsFound\" class=\"text-danger\">{{validationError}}</div>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addSamAccount\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addPassword\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\" *ngIf=\"addShowBuiltInGroupsVisible\">\r\n <BBSF-Toggleslide [options]=\"addShowBuiltInGroups\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #tenantIDControl [options]=\"addTenantID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientIDControl [options]=\"addClientID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientSecretControl [options]=\"addClientSecret\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === 2 && showWindowsControls\">\r\n <div id=\"treeDataContainer\" *ngIf=\"treeDataLoaded\">\r\n\r\n\r\n <!--------Helllllllllllllllllllo---------->\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;\" matTreeNodePadding>\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n\r\n <mat-checkbox class=\"checklist-leaf-node\" [checked]=\"selected === node.Index\" (change)=\"setIdentifier($event,node)\" [disabled]=\"node.selectable?false:true\">\r\n {{node.name}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding>\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\" class=\"btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-1 \">\r\n <i *ngIf=\"treeControl.isExpanded(node)\" class=\"fas fa-chevron-down\"></i>\r\n <i *ngIf=\"!treeControl.isExpanded(node)\" class=\"fas fa-chevron-right\"></i>\r\n\r\n </button>\r\n <mat-checkbox [disabled]=\"node.selectable?false:true\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <div class=\"form-group\">\r\n <BBSF-TextBox [options]=\"addName\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addPermissionSet\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addLanguage\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addWelcomeMsgTemp\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addFileProvider\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addMarkInactive\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addDailyJob\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\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(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Property\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"ADProperty\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"IncludeInUpdate\")}}</th>\r\n <th class=\"min-w-50px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of addMappingsOptions;let i=index;\">\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-CheckBox>\r\n <!--Hidden include in update value-->\r\n <BBSF-TextBox [options]=\"option[4]\" [group]=\"addActiveDirectoryForm\" [hidden]=\"true\">\r\n </BBSF-TextBox>\r\n </td>\r\n\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger\" (click)=\"deleteADMapping(option)\">\r\n <i class=\" 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 </ng-container>\r\n </div>\r\n\r\n <div class=\"d-flex flex-stack pt-10\">\r\n <div class=\"mr-2\">\r\n <ng-container *ngIf=\"currentStep$.value !== 1\">\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-light-primary me-3\"\r\n (click)=\"prevStep()\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr063.svg'\"\r\n class=\"svg-icon svg-icon-4 me-1\"></span>\r\n {{utilityService.getResourceValue(\"Previous\")}}\r\n </button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"currentStep$.value !== formsCount\">\r\n <div>\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-primary me-3\"\r\n (click)=\"nextStep()\">\r\n <span class=\"indicator-label\">\r\n <ng-container *ngIf=\"currentStep$.value < formsCount\">\r\n {{utilityService.getResourceValue(\"Next\")}} {{ \" \" }}\r\n <span [inlineSVG]=\"'./src/assets/images/arr064.svg'\"\r\n class=\"svg-icon svg-icon-3 ms-2 me-0\"></span>\r\n </ng-container>\r\n\r\n </span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <button type=\"submit\" class=\"btn btn-lg btn-primary me-3\">\r\n {{utilityService.getResourceValue(\"Submit\")}}\r\n </button>\r\n\r\n </ng-container>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i6.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i6.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "directive", type: i7.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "directive", type: i8.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i8.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i8.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i8.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i8.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
504
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ActiveDirectoryAddComponent, selector: "lib-active-directory-add", viewQueries: [{ propertyName: "adTypeControl", first: true, predicate: ["adTypeControl"], descendants: true }, { propertyName: "adDomainControl", first: true, predicate: ["adDomainControl"], descendants: true }, { propertyName: "adWindowsTypeControl", first: true, predicate: ["adWindowsTypeControl"], descendants: true }, { propertyName: "tenantIDControl", first: true, predicate: ["tenantIDControl"], descendants: true }, { propertyName: "clientIDControl", first: true, predicate: ["clientIDControl"], descendants: true }, { propertyName: "clientSecretControl", first: true, predicate: ["clientSecretControl"], descendants: true }], ngImport: i0, template: "\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"stepper stepper-pills stepper-column d-flex flex-column flex-xl-row flex-row-fluid \" id=\"kt_create_account_stepper\">\r\n <div class=\"d-flex justify-content-center rounded justify-content-xl-start flex-row-auto me-9 card\">\r\n <div class=\"card-body px-6 px-lg-10 px-xxl-15 py-20\">\r\n <div class=\"stepper-nav\">\r\n <div class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 1 }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">1</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory\")}}</h3>\r\n\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab1Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showWindowsControls\" class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 2 && showWindowsControls}\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">2</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory_SelectContainer\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab2Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"stepper-item\" [ngClass]=\"{current: (currentStep$.value === formsCount ) }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">{{formsCount}}</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"Options\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab3Note\")}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n <div class=\"card d-flex flex-row-fluid flex-center rounded\">\r\n <div class=\"p-20 w-100 card-body\" *ngIf=\"isAddFormLoaded\">\r\n <BBSF-Form [options]=\"addActiveDirectoryFormOptions\">\r\n <div class=\"current\">\r\n <ng-container *ngIf=\"currentStep$.value === 1\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adTypeControl [options]=\"addTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"typeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div *ngIf=\"showWindowsControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adWindowsTypeControl [options]=\"addWindowsTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"windowsTypeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #adDomainControl [options]=\"addDomain\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n <div *ngIf=\"errorIsFound\" class=\"text-danger\">{{validationError}}</div>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addSamAccount\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addPassword\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\" *ngIf=\"addShowBuiltInGroupsVisible\">\r\n <BBSF-Toggleslide [options]=\"addShowBuiltInGroups\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #tenantIDControl [options]=\"addTenantID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientIDControl [options]=\"addClientID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientSecretControl [options]=\"addClientSecret\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === 2 && showWindowsControls\">\r\n <div id=\"treeDataContainer\" *ngIf=\"treeDataLoaded\">\r\n\r\n\r\n <!--------Helllllllllllllllllllo---------->\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;\" matTreeNodePadding>\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n\r\n <mat-checkbox class=\"checklist-leaf-node\" [checked]=\"selected === node.Index\" (change)=\"setIdentifier($event,node)\" [disabled]=\"node.selectable?false:true\">\r\n {{node.name}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding>\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\" class=\"btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-1 \">\r\n <i *ngIf=\"treeControl.isExpanded(node)\" class=\"fas fa-chevron-down\"></i>\r\n <i *ngIf=\"!treeControl.isExpanded(node)\" class=\"fas fa-chevron-right\"></i>\r\n\r\n </button>\r\n <mat-checkbox [disabled]=\"node.selectable?false:true\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <div class=\"form-group\">\r\n <BBSF-TextBox [options]=\"addName\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addPermissionSet\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addLanguage\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addWelcomeMsgTemp\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addFileProvider\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addMarkInactive\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addDailyJob\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\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(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Property\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"ADProperty\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"IncludeInUpdate\")}}</th>\r\n <th class=\"min-w-50px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of addMappingsOptions;let i=index;\">\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-CheckBox>\r\n <!--Hidden include in update value-->\r\n <BBSF-TextBox [options]=\"option[4]\" [group]=\"addActiveDirectoryForm\" [hidden]=\"true\">\r\n </BBSF-TextBox>\r\n </td>\r\n\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger\" (click)=\"deleteADMapping(option)\">\r\n <i class=\" 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 </ng-container>\r\n </div>\r\n\r\n <div class=\"d-flex flex-stack pt-10\">\r\n <div class=\"mr-2\">\r\n <ng-container *ngIf=\"currentStep$.value !== 1\">\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-light-primary me-3\"\r\n (click)=\"prevStep()\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr063.svg'\"\r\n class=\"svg-icon svg-icon-4 me-1\"></span>\r\n {{utilityService.getResourceValue(\"Previous\")}}\r\n </button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"currentStep$.value !== formsCount\">\r\n <div>\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-primary me-3\"\r\n (click)=\"nextStep()\">\r\n <span class=\"indicator-label\">\r\n <ng-container *ngIf=\"currentStep$.value < formsCount\">\r\n {{utilityService.getResourceValue(\"Next\")}} {{ \" \" }}\r\n <span [inlineSVG]=\"'./src/assets/images/arr064.svg'\"\r\n class=\"svg-icon svg-icon-3 ms-2 me-0\"></span>\r\n </ng-container>\r\n\r\n </span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <button type=\"submit\" class=\"btn btn-lg btn-primary me-3\">\r\n {{utilityService.getResourceValue(\"Submit\")}}\r\n </button>\r\n\r\n </ng-container>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i6.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i6.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i6.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i6.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "directive", type: i7.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "directive", type: i8.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i8.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i8.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i8.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i8.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
505
505
  }
506
506
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ActiveDirectoryAddComponent, decorators: [{
507
507
  type: Component,
@@ -525,4 +525,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
525
525
  type: ViewChild,
526
526
  args: ['clientSecretControl', { static: false }]
527
527
  }] } });
528
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yeS1hZGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9BY3RpdmVEaXJlY3Rvcmllcy9hY3RpdmUtZGlyZWN0b3J5LWFkZC9hY3RpdmUtZGlyZWN0b3J5LWFkZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnktYWRkL2FjdGl2ZS1kaXJlY3RvcnktYWRkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUEyQyxNQUFNLHlCQUF5QixDQUFDO0FBRS9MLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1DQUFtQyxFQUFFLE1BQU0s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QkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ08sb0JBQW9CO3NCQUF6RSxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFrQkgsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ00sbUJBQW1CO3NCQUF2RSxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvZ2dsZVNsaWRlT3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBJbnB1dFR5cGUsIFRleHRCb3hPcHRpb25zLCBDaGVja0JveE9wdGlvbnMsIEZvcm1PcHRpb25zLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIFRleHRib3hDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvQWN0aXZlRGlyZWN0b3J5U2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9BRE1vZGVscy9BY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwnO1xyXG5pbXBvcnQgeyBBRE1hcHBpbmdNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQURNb2RlbHMvQURNYXBwaW5nTW9kZWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94LCBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgQWN0aXZlRGlyZWN0b3J5VHlwZSwgQWN0aXZlRGlyZWN0b3J5V2luZG93Q29ubmVjdGlvblR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuXHJcbmludGVyZmFjZSBBRE5vZGUge1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBjaGlsZHJlbj86IEFETm9kZVtdO1xyXG4gIGRhdGE6IHN0cmluZztcclxuICBzZWxlY3RhYmxlOiBib29sZWFuO1xyXG4gIGljb246IHN0cmluZztcclxuICBzdGF0ZTogYW55O1xyXG4gIEluZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKiBGbGF0IG5vZGUgd2l0aCBleHBhbmRhYmxlIGFuZCBsZXZlbCBpbmZvcm1hdGlvbiAqL1xyXG5pbnRlcmZhY2UgRmxhdE5vZGUge1xyXG4gIGV4cGFuZGFibGU6IGJvb2xlYW47XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGxldmVsOiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFjdGl2ZS1kaXJlY3RvcnktYWRkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZlLWRpcmVjdG9yeS1hZGQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3RpdmVEaXJlY3RvcnlBZGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLy93aXphcmRcclxuICBmb3Jtc0NvdW50ID0gMjtcclxuICBjdXJyZW50U3RlcCQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgxKTtcclxuICAvL3dpemFyZFxyXG4gIC8vUmVxdWlyZWQgTGlzdHNcclxuICBwZXJtaXNzaW9uU2V0TGlzdDogYW55W10gPSBbXTtcclxuICBsYW5ndWFnZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHdlbGNvbWVNc2dUZW1wTGlzdDogYW55W10gPSBbXTtcclxuICBhZFR5cGVzTGlzdDogYW55W10gPSBbXTtcclxuICBmaWxlUHJvdmlkZXJzOiBhbnlbXSA9IFtdO1xyXG4gIG1hcHBpbmdQcm9wZXJ0aWVzTGlzdDogYW55W10gPSBbXTtcclxuICBtYXBwaW5nVHlwZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIC8vV2luZG93c1xyXG4gIGFkV2luZG93c1R5cGVzOiBhbnlbXSA9IFtdOztcclxuXHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBhZGRBY3RpdmVEaXJlY3RvcnlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zO1xyXG4gIGFkZFR5cGVPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkUGVybWlzc2lvblNldDogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZExhbmd1YWdlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkV2VsY29tZU1zZ1RlbXA6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRGaWxlUHJvdmlkZXI6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRNYXJrSW5hY3RpdmU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBhZGREYWlseUpvYjogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZE1hcHBpbmdzT3B0aW9uczogYW55W10gPSBbXTtcclxuICBhZGRNYXBwaW5nc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIHNlbGVjdGVkVHlwZTogc3RyaW5nO1xyXG4gIGlzQWRkRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2FkVHlwZUNvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWRUeXBlQ29udHJvbDogRHJvcGRvd25MaXN0Q29tcG9uZW50O1xyXG5cclxuICAvLy8vLy8vLy9TdGFydCBXaW5kb3dzIGNvbnRyb2xzLy8vLy9cclxuICBhZGREb21haW46IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFNhbUFjY291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFBhc3N3b3JkOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRXaW5kb3dzVHlwZU9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRTaG93QnVpbHRJbkdyb3VwczogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZFNob3dCdWlsdEluR3JvdXBzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dXaW5kb3dzQ29udHJvbHM6IGJvb2xlYW47XHJcbiAgQFZpZXdDaGlsZCgnYWREb21haW5Db250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFkRG9tYWluQ29udHJvbDogVGV4dGJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZFdpbmRvd3NUeXBlQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBhZFdpbmRvd3NUeXBlQ29udHJvbDogRHJvcGRvd25MaXN0Q29tcG9uZW50O1xyXG4gIC8vVHJlZVxyXG4gIHZhbGlkYXRpb25FcnJvcjogc3RyaW5nO1xyXG4gIGVycm9ySXNGb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRyZWVOb2RlRGF0YTogYW55O1xyXG4gIHRyZWVDb250cm9sOiBhbnk7XHJcbiAgdHJlZUZsYXR0ZW5lcjogYW55O1xyXG4gIGRhdGFTb3VyY2U6IGFueTtcclxuICBoYXNDaGlsZDogYW55O1xyXG4gIHRyZWVEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWQgPSAtMTtcclxuICBpZGVudGlmaWVyOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGlkZW50aWZpZXJOYW1lOiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8vLy8vLy8vL0VuZCBXaW5kb3dzIGNvbnRyb2xzLy8vLy9cclxuICAvL0F6dXJlXHJcbiAgYWRkVGVuYW50SUQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZENsaWVudElEOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRDbGllbnRTZWNyZXQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIEBWaWV3Q2hpbGQoJ3RlbmFudElEQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW5hbnRJRENvbnRyb2w6IFRleHRib3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnY2xpZW50SURDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNsaWVudElEQ29udHJvbDogVGV4dGJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdjbGllbnRTZWNyZXRDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNsaWVudFNlY3JldENvbnRyb2w6IFRleHRib3hDb21wb25lbnQ7XHJcblxyXG4gIHNob3dBenVyZUNvbnRyb2xzOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgQWN0aXZlRGlyZWN0b3J5U2VydmljZTogQWN0aXZlRGlyZWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZEFjdGl2ZURpcmVjdG9yeVwiKTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBRENvbm5lY3Rpb25cIiksIHBhdGg6ICcvQWRtaW4vQURDb25uZWN0aW9uJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXQgcGFnZVxyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgdGhpcy5BY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmV1bHRPYmogPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSByZXVsdE9iai5wZXJtaXNzaW9uU2V0cztcclxuICAgICAgdGhpcy5hZFR5cGVzTGlzdCA9IHJldWx0T2JqLmFkVHlwZXM7XHJcbiAgICAgIHRoaXMuYWRXaW5kb3dzVHlwZXMgPSByZXVsdE9iai5hZFdpbmRvd3NUeXBlcztcclxuICAgICAgdGhpcy5sYW5ndWFnZXNMaXN0ID0gcmV1bHRPYmoubGFuZ3VhZ2VzO1xyXG4gICAgICB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdCA9IHJldWx0T2JqLnRlbXBsYXRlcztcclxuICAgICAgdGhpcy5maWxlUHJvdmlkZXJzID0gcmV1bHRPYmouZmlsZVByb3ZpZGVycztcclxuXHJcbiAgICAgIHRoaXMubWFwcGluZ1Byb3BlcnRpZXNMaXN0ID0gcmV1bHRPYmoubWFwcGluZ1Byb3BlcnRpZXM7XHJcbiAgICAgIHRoaXMubWFwcGluZ1R5cGVzTGlzdCA9IHJldWx0T2JqLm1hcHBpbmdUeXBlcztcclxuXHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtXHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkQURNb2RlbDtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZEFERnVuY3Rpb247XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9IHRoaXMuYWRkQURPblN1Y2Nlc3M7XHJcblxyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLk5hbWUgPSBcImFkZFR5cGVPcHRpb25zXCJcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5MYWJlbEtleSA9IFwiVHlwZVwiXHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWxcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5hZFR5cGVzTGlzdFxyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hZGROYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5OYW1lID0gXCJhZGROYW1lXCI7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5MYWJlbEtleSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLmFkZE5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZE5hbWUuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZE5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5OYW1lID0gXCJhZGRQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0LkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0LkRhdGFTb3VyY2UgPSB0aGlzLnBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLk5hbWUgPSBcImFkZExhbmd1YWdlXCJcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5MYWJlbEtleSA9IFwiTGFuZ3VhZ2VcIlxyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLkRhdGFTb3VyY2UgPSB0aGlzLmxhbmd1YWdlc0xpc3RcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAuTmFtZSA9IFwiYWRkV2VsY29tZU1zZ1RlbXBcIlxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLkxhYmVsS2V5ID0gXCJXZWxjb21lTXNnVGVtcGxhdGVcIlxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLkRhdGFTb3VyY2UgPSB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdFxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hZGRGaWxlUHJvdmlkZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLk5hbWUgPSBcImFkZEZpbGVQcm92aWRlclwiXHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLkxhYmVsS2V5ID0gXCJGaWxlUHJvdmlkZXJcIlxyXG4gICAgICB0aGlzLmFkZEZpbGVQcm92aWRlci5EYXRhU291cmNlID0gdGhpcy5maWxlUHJvdmlkZXJzXHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkTWFya0luYWN0aXZlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5OYW1lID0gXCJhZGRNYXJrSW5hY3RpdmVcIlxyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5MYWJlbEtleSA9IFwiTWFya0FzSW5hY3RpdmVcIlxyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkRGFpbHlKb2IgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRGFpbHlKb2IuTmFtZSA9IFwiYWRkRGFpbHlKb2JcIlxyXG4gICAgICB0aGlzLmFkZERhaWx5Sm9iLkxhYmVsS2V5ID0gXCJBZGRUb0RhaWx5Sm9iXCJcclxuICAgICAgdGhpcy5hZGREYWlseUpvYi5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFkZERhaWx5Sm9iLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgLy9zZXQgQUQgbWFwcGluZ1xyXG4gICAgICBsZXQgZGF0YTogYW55ID0gdGhpcy5nZXRBRE1hcHBpbmdPcHRpb25zKHJldWx0T2JqLmFkTWFwcGluZ3MpO1xyXG4gICAgICB0aGlzLmFkZE1hcHBpbmdzT3B0aW9ucyA9IGRhdGFbMF07XHJcbiAgICAgIHRoaXMuYWRkTWFwcGluZ3NDb3VudCA9IGRhdGFbMV07XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzQWRkRm9ybUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sIDUwKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vQWRkIEFjdGl2ZSBkaXJlY3RvcnkgZnVuY3Rpb25zXHJcbiAgZ2V0QWRkQURNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIC8vY29uc29sZS5sb2coUmVzdWx0TW9kZWwpO1xyXG4gICAgbGV0IEFkZE1vZGVsOiBBY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwgPSBuZXcgQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5Db25uZWN0aW9uTmFtZSA9IHJlc3VsdE1vZGVsLmFkZE5hbWU7XHJcbiAgICBBZGRNb2RlbC5BRFR5cGVJdGVtSURfR1VJRCA9IHJlc3VsdE1vZGVsLmFkZFR5cGVPcHRpb25zXHJcbiAgICBBZGRNb2RlbC5QZXJtaXNzaW9uU2V0SUQgPSByZXN1bHRNb2RlbC5hZGRQZXJtaXNzaW9uU2V0ICE9IG51bGwgPyByZXN1bHRNb2RlbC5hZGRQZXJtaXNzaW9uU2V0IDogbnVsbFxyXG4gICAgQWRkTW9kZWwuTGFuZ0tleSA9IHJlc3VsdE1vZGVsLmFkZExhbmd1YWdlO1xyXG4gICAgQWRkTW9kZWwuV2VsY29tZVRlbXBsYXRlSUQgPSByZXN1bHRNb2RlbC5hZGRXZWxjb21lTXNnVGVtcCAhPSBudWxsID8gTnVtYmVyKHJlc3VsdE1vZGVsLmFkZFdlbGNvbWVNc2dUZW1wKSA6IG51bGxcclxuICAgIEFkZE1vZGVsLkltYWdlc0ZpbGVQcm92aWRlck5hbWUgPSByZXN1bHRNb2RlbC5hZGRGaWxlUHJvdmlkZXJcclxuICAgIEFkZE1vZGVsLk1hcmtBc0luYWN0aXZlID0gcmVzdWx0TW9kZWwuYWRkTWFya0luYWN0aXZlXHJcbiAgICBBZGRNb2RlbC5BZGRUb0RhaWx5Sm9iID0gcmVzdWx0TW9kZWwuYWRkRGFpbHlKb2JcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFR5cGUgPT0gQWN0aXZlRGlyZWN0b3J5VHlwZS5XaW5kb3dzKSB7XHJcbiAgICAgIEFkZE1vZGVsLklkZW50aWZpZXIgPSB0aGlzLmlkZW50aWZpZXI7XHJcbiAgICAgIEFkZE1vZGVsLkRvbWFpbiA9IHJlc3VsdE1vZGVsLmFkZERvbWFpbjtcclxuICAgICAgQWRkTW9kZWwuU2FtQWNjb3VudCA9IHJlc3VsdE1vZGVsLmFkZFNhbUFjY291bnQ7XHJcbiAgICAgIEFkZE1vZGVsLlBhc3N3b3JkID0gcmVzdWx0TW9kZWwuYWRkUGFzc3dvcmQ7XHJcbiAgICAgIEFkZE1vZGVsLlNob3dCdWlsdEluR3JvdXBzID0gcmVzdWx0TW9kZWwuYWRkU2hvd0J1aWx0SW5Hcm91cHM7XHJcbiAgICAgIEFkZE1vZGVsLkFEV2luZG93c1R5cGVJdGVtSURfR1VJRCA9IHJlc3VsdE1vZGVsLmFkZFdpbmRvd3NUeXBlT3B0aW9uc1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIEFkZE1vZGVsLlRlbmFudElEID0gcmVzdWx0TW9kZWwuYWRkVGVuYW50SUQ7XHJcbiAgICAgIEFkZE1vZGVsLkNsaWVudElEID0gcmVzdWx0TW9kZWwuYWRkQ2xpZW50SUQ7XHJcbiAgICAgIEFkZE1vZGVsLkNsaWVudFNlY3JldCA9IHJlc3VsdE1vZGVsLmFkZENsaWVudFNlY3JldDtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5hZGRNYXBwaW5nc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IGFkZE1BcHBpbmdUeXBlID0gcmVzdWx0TW9kZWxbXCJBRE1hcHBpbmdUeXBlXCIgKyBqXTtcclxuICAgICAgaWYgKGFkZE1BcHBpbmdUeXBlID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nUHJvcGVydHkgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBqXTtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nUHJvcGVydHlOYW1lID0gcmVzdWx0TW9kZWxbXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IGFkTUFwcGluZ09iajogQURNYXBwaW5nTW9kZWwgPSBuZXcgQURNYXBwaW5nTW9kZWwoKTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkFETWFwcGluZ1R5cGVJdGVtSUQgPSBhZGRNQXBwaW5nVHlwZTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkJCU0ZQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5O1xyXG4gICAgICBhZE1BcHBpbmdPYmouQURQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5TmFtZTtcclxuICAgICAgbGV0IGFkTUFwcGluZ0luY2x1ZGVJblVwZGF0ZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgal07XHJcbiAgICAgIGxldCBhZE1BcHBpbmdIaWRkZW5JbmNsdWRlSW5VcGRhdGUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGVcIiArIGpdO1xyXG4gICAgICBhZE1BcHBpbmdPYmouSW5jbHVkZUluVXBkYXRlID0gYWRNQXBwaW5nSW5jbHVkZUluVXBkYXRlID09IHVuZGVmaW5lZCA/IGFkTUFwcGluZ0hpZGRlbkluY2x1ZGVJblVwZGF0ZSA6IGFkTUFwcGluZ0luY2x1ZGVJblVwZGF0ZTtcclxuXHJcbiAgICAgIEFkZE1vZGVsLkFETWFwcGluZ3MucHVzaChhZE1BcHBpbmdPYmopO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRBZGRBREZ1bmN0aW9uID0gKGFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkFjdGl2ZURpcmVjdG9yeVNlcnZpY2UuYWRkQWN0aXZlRGlyZWN0b3J5KGFkZE1vZGVsKVxyXG4gIH1cclxuICBhZGRBRE9uU3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL0FEQ29ubmVjdGlvbiddKTtcclxuICB9XHJcblxyXG4gIC8vTWFwcGluZyBmdW5jdGlvbnNcclxuICBnZXRBRE1hcHBpbmdPcHRpb25zKEFETWFwcGluZ3M6IGFueVtdKSB7XHJcbiAgICBsZXQgQURNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBBRE1hcHBpbmdDb3VudDogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQURNYXBwaW5ncy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgbGV0IG9iamVjdE1hcHBpbmdPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIGxldCBzZWxlY3RlZFR5cGUgPSB0aGlzLm1hcHBpbmdUeXBlc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBBRE1hcHBpbmdzW2ldLmFkTWFwcGluZ1R5cGVJdGVtSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLk5hbWUgPSBcIkFETWFwcGluZ1R5cGVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFR5cGU7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuRGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1R5cGVzTGlzdDtcclxuICAgICAgQURNYXBwaW5nVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgbGV0IHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IEFETWFwcGluZ3NbaV0uYmJzZlByb3BlcnR5TmFtZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5Lk5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRQcm9wZXJ0eTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5LkRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1Byb3BlcnR5TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuTmFtZSA9IFwiQURNYXBwaW5nUHJvcGVydHlOYW1lXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlZhbHVlID0gQURNYXBwaW5nc1tpXS5hZFByb3BlcnR5TmFtZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5NYXhMZW5ndGggPSAxMDI0O1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ0luY2x1ZGVVcGRhdGUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUuTmFtZSA9IFwiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgaTtcclxuICAgICAgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZS5WYWx1ZSA9IEFETWFwcGluZ3NbaV0uaW5jbHVkZUluVXBkYXRlO1xyXG4gICAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLklzRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5OYW1lID0gXCJBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLlZhbHVlID0gQURNYXBwaW5nc1tpXS5pbmNsdWRlSW5VcGRhdGU7XHJcblxyXG4gICAgICBvYmplY3RNYXBwaW5nT3B0aW9ucy5wdXNoKEFETWFwcGluZ1R5cGUsIEFETWFwcGluZ1Byb3BlcnR5LCBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUsIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUsIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUpO1xyXG4gICAgICBBRE1hcHBpbmdPcHRpb25zLnB1c2gob2JqZWN0TWFwcGluZ09wdGlvbnMpO1xyXG4gICAgICBBRE1hcHBpbmdDb3VudCArPSAxO1xyXG5cclxuICAgIH1cclxuICAgIHJldHVybiBbQURNYXBwaW5nT3B0aW9ucywgQURNYXBwaW5nQ291bnRdO1xyXG4gIH1cclxuICBkZWxldGVBRE1hcHBpbmcoZGVsZXRlZEFETUFwcGluZzogYW55KSB7XHJcbiAgICBsZXQgZGVsZXRlZE1hcHBpbmdJbmRleDogbnVtYmVyID0gdGhpcy5hZGRNYXBwaW5nc09wdGlvbnMuaW5kZXhPZihkZWxldGVkQURNQXBwaW5nKTtcclxuICAgIGlmIChkZWxldGVkTWFwcGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmFkZE1hcHBpbmdzT3B0aW9ucy5zcGxpY2UoZGVsZXRlZE1hcHBpbmdJbmRleCwgMSk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZEFETUFwcGluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRBRE1BcHBpbmdbaV0uTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYWRkQURNYXBwaW5nKCkge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5hZGRNYXBwaW5nc0NvdW50O1xyXG5cclxuICAgIGxldCBvYmplY3RNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1R5cGUuTmFtZSA9IFwiQURNYXBwaW5nVHlwZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdUeXBlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdUeXBlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgQURNYXBwaW5nVHlwZS5EYXRhU291cmNlID0gdGhpcy5tYXBwaW5nVHlwZXNMaXN0O1xyXG5cclxuICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5Lk5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5LkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5EYXRhU291cmNlID0gdGhpcy5tYXBwaW5nUHJvcGVydGllc0xpc3Q7XHJcblxyXG5cclxuICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5OYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUuTmFtZSA9IFwiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLlZhbHVlID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5OYW1lID0gXCJBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlXCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuICAgIG9iamVjdE1hcHBpbmdPcHRpb25zLnB1c2goQURNYXBwaW5nVHlwZSwgQURNYXBwaW5nUHJvcGVydHksIEFETWFwcGluZ1Byb3BlcnR5TmFtZSwgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSwgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZSk7XHJcblxyXG4gICAgdGhpcy5hZGRNYXBwaW5nc09wdGlvbnMucHVzaChvYmplY3RNYXBwaW5nT3B0aW9ucyk7XHJcbiAgICB0aGlzLmFkZE1hcHBpbmdzQ291bnQgKz0gMTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9BRCB3aW5kb3dzIG9uIHR5cGUgY2hhbmdlIChPVS9Hcm91cClcclxuICB3aW5kb3dzVHlwZUNoYW5nZSh0eXBlVmFsdWUpIHtcclxuICAgIGlmICh0eXBlVmFsdWUgPT0gQWN0aXZlRGlyZWN0b3J5V2luZG93Q29ubmVjdGlvblR5cGUuQWN0aXZlRGlyZWN0b3J5R3JvdXApIHtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3VwcyA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3Vwcy5OYW1lID0gXCJhZGRTaG93QnVpbHRJbkdyb3Vwc1wiXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHMuTGFiZWxWYWx1ZSA9IFwiU2hvd0J1aWx0SW5Hcm91cHNcIlxyXG4gICAgICB0aGlzLmFkZFNob3dCdWlsdEluR3JvdXBzLkxhYmVsS2V5ID0gXCJTaG93QnVpbHRJbkdyb3Vwc1wiXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHMuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3Vwcy5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0ucmVtb3ZlQ29udHJvbChcImFkZFNob3dCdWlsdEluR3JvdXBzXCIpO1xyXG4gICAgICB0aGlzLmFkZFNob3dCdWlsdEluR3JvdXBzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9BRCBvbiB0eXBlIGNoYW5nZXMgKFdpbmRvd3MvQXp1cmUpXHJcbiAgdHlwZUNoYW5nZSh0eXBlVmFsdWUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gdHlwZVZhbHVlO1xyXG4gICAgaWYgKHR5cGVWYWx1ZSA9PSBBY3RpdmVEaXJlY3RvcnlUeXBlLldpbmRvd3MpIHtcclxuICAgICAgdGhpcy5mb3Jtc0NvdW50ID0gMztcclxuICAgICAgLy9SZW1vdmUgQXp1cmUgY29udHJvbHMgaWYgZm91bmRcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRUZW5hbnRJRFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRDbGllbnRJRFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRDbGllbnRTZWNyZXRcIik7XHJcblxyXG4gICAgICAvL0luaXRpYWxpemUgd2luZG93cyBjb250cm9sc1xyXG4gICAgICB0aGlzLmFkZFdpbmRvd3NUeXBlT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuTmFtZSA9IFwiYWRkV2luZG93c1R5cGVPcHRpb25zXCJcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuTGFiZWxLZXkgPSBcIldpbmRvd3NUeXBlXCJcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWxcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuYWRXaW5kb3dzVHlwZXNcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFdpbmRvd3NUeXBlT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkRG9tYWluID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRG9tYWluLk5hbWUgPSBcImFkZERvbWFpblwiO1xyXG4gICAgICB0aGlzLmFkZERvbWFpbi5MYWJlbEtleSA9IFwiRG9tYWluXCI7XHJcbiAgICAgIHRoaXMuYWRkRG9tYWluLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGREb21haW4uVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZERvbWFpbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGREb21haW4uTWF4TGVuZ3RoID0gMjU2O1xyXG5cclxuICAgICAgdGhpcy5hZGRTYW1BY2NvdW50ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkU2FtQWNjb3VudC5OYW1lID0gXCJhZGRTYW1BY2NvdW50XCI7XHJcbiAgICAgIHRoaXMuYWRkU2FtQWNjb3VudC5MYWJlbEtleSA9IFwiU2FtQWNjb3VudFwiO1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQuTWF4TGVuZ3RoID0gMjA7XHJcblxyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkUGFzc3dvcmQuTmFtZSA9IFwiYWRkUGFzc3dvcmRcIjtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5MYWJlbEtleSA9IFwiUGFzc3dvcmRcIjtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5UeXBlID0gSW5wdXRUeXBlLlBhc3N3b3JkO1xyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5SZW1vdmVEZWZhdWx0UGFzc3dvcmRWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5NYXhMZW5ndGggPSA0MDAwO1xyXG5cclxuICAgICAgdGhpcy5zaG93QXp1cmVDb250cm9scyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbHMgPSB0cnVlO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybXNDb3VudCA9IDI7XHJcbiAgICAgIC8vUmVtb3ZlIHdpbmRvd3MgY29udHJvbHMgaWYgZm91bmRcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGREb21haW5cIik7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkU2FtQWNjb3VudFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRQYXNzd29yZFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRTaG93QnVpbHRJbkdyb3Vwc1wiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRXaW5kb3dzVHlwZU9wdGlvbnNcIik7XHJcblxyXG4gICAgICB0aGlzLmFkZFRlbmFudElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkVGVuYW50SUQuTmFtZSA9IFwiYWRkVGVuYW50SURcIjtcclxuICAgICAgdGhpcy5hZGRUZW5hbnRJRC5MYWJlbEtleSA9IFwiVGVuYW50SURcIjtcclxuICAgICAgdGhpcy5hZGRUZW5hbnRJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuYWRkVGVuYW50SUQuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZFRlbmFudElELklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFRlbmFudElELk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRDbGllbnRJRC5OYW1lID0gXCJhZGRDbGllbnRJRFwiO1xyXG4gICAgICB0aGlzLmFkZENsaWVudElELkxhYmVsS2V5ID0gXCJDbGllbnRJRFwiO1xyXG4gICAgICB0aGlzLmFkZENsaWVudElELlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGRDbGllbnRJRC5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQuTmFtZSA9IFwiYWRkQ2xpZW50U2VjcmV0XCI7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0LkxhYmVsS2V5ID0gXCJDbGllbnRTZWNyZXRcIjtcclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZENsaWVudFNlY3JldC5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZENsaWVudFNlY3JldC5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLnNob3dBenVyZUNvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zaG93V2luZG93c0NvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1dpemFyZCBmdW5jdGlvbnNcclxuICBuZXh0U3RlcCgpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5jdXJyZW50U3RlcCQudmFsdWU7XHJcbiAgICBjb25zdCBuZXh0U3RlcCA9IGN1cnJlbnRTdGVwICsgMTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS52YWx1ZSBhcyBhbnk7XHJcblxyXG4gICAgLy9DaGVjayByZXF1aXJlZCBmaWVsZHMgZm9yIG5leHQgc3RlcFxyXG4gICAgaWYgKGN1cnJlbnRTdGVwID09IDEpIHtcclxuICAgICAgaWYgKFJlc3VsdE1vZGVsLmFkZFR5cGVPcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09IEFjdGl2ZURpcmVjdG9yeVR5cGUuV2luZG93cykge1xyXG4gICAgICAgICAgaWYgKCFSZXN1bHRNb2RlbC5hZGREb21haW4gfHwgIVJlc3VsdE1vZGVsLmFkZFdpbmRvd3NUeXBlT3B0aW9ucykge1xyXG4gICAgICAgICAgICB0aGlzLmFkRG9tYWluQ29udHJvbC5Jc1ZhbGlkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRXaW5kb3dzVHlwZUNvbnRyb2wuSXNWYWxpZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFSZXN1bHRNb2RlbC5hZGRUZW5hbnRJRCB8fCAhUmVzdWx0TW9kZWwuYWRkQ2xpZW50SUQgfHwgIVJlc3VsdE1vZGVsLmFkZENsaWVudFNlY3JldCkge1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudElEQ29udHJvbC5Jc1ZhbGlkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xpZW50SURDb250cm9sLklzVmFsaWQoKTtcclxuICAgICAgICAgICAgdGhpcy5jbGllbnRTZWNyZXRDb250cm9sLklzVmFsaWQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmFkVHlwZUNvbnRyb2wuSXNWYWxpZCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkVHlwZSA9PSBBY3RpdmVEaXJlY3RvcnlUeXBlLldpbmRvd3MpIHtcclxuXHJcbiAgICAgIGlmIChuZXh0U3RlcCA9PT0gMiAmJiBjdXJyZW50U3RlcCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMudHJlZURhdGFMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy9pZiAoIXRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5nZXQoJ2FkZERvbWFpbicpLnZhbGlkIHx8ICF0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0uZ2V0KCdhZGRUeXBlT3B0aW9ucycpLnZhbGlkKSB7XHJcbiAgICAgICAgLy8gIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhSZXN1bHRNb2RlbCk7XHJcblxyXG4gICAgICAgIGxldCBBZGRNb2RlbDogQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsID0gbmV3IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCgpO1xyXG4gICAgICAgIEFkZE1vZGVsLkNvbm5lY3Rpb25OYW1lID0gUmVzdWx0TW9kZWwuYWRkTmFtZTtcclxuICAgICAgICBBZGRNb2RlbC5Eb21haW4gPSBSZXN1bHRNb2RlbC5hZGREb21haW47XHJcbiAgICAgICAgQWRkTW9kZWwuQURXaW5kb3dzVHlwZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuYWRkV2luZG93c1R5cGVPcHRpb25zO1xyXG4gICAgICAgIEFkZE1vZGVsLlNhbUFjY291bnQgPSBSZXN1bHRNb2RlbC5hZGRTYW1BY2NvdW50O1xyXG4gICAgICAgIEFkZE1vZGVsLlBhc3N3b3JkID0gUmVzdWx0TW9kZWwuYWRkUGFzc3dvcmQ7XHJcbiAgICAgICAgQWRkTW9kZWwuU2hvd0J1aWx0SW5Hcm91cHMgPSBSZXN1bHRNb2RlbC5hZGRTaG93QnVpbHRJbkdyb3VwcztcclxuXHJcblxyXG4gICAgICAgIHRoaXMuQWN0aXZlRGlyZWN0b3J5U2VydmljZS5jaGVja1ZhbGlkYXRpb25hbmRHZXREYXRhKEFkZE1vZGVsKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgdGhpcywgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICAgICAgdmFyIGRhdGEgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICAgICAgaWYgKGRhdGEudmFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU5vZGVEYXRhID0gZGF0YS50cmVlRGF0YTtcclxuICAgICAgICAgICAgdGhpcy5lcnJvcklzRm91bmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgICAgIGxldCBfdHJhbnNmb3JtZXIgPSAobm9kZTogQUROb2RlLCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6ICEhbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDAsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBub2RlLnRleHQsXHJcbiAgICAgICAgICAgICAgICBsZXZlbDogbGV2ZWwsXHJcbiAgICAgICAgICAgICAgICBpY29uOiBub2RlLmljb24sXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RhYmxlOiBub2RlLnNlbGVjdGFibGUsXHJcbiAgICAgICAgICAgICAgICBJbmRleDogbm9kZS5JbmRleCxcclxuICAgICAgICAgICAgICAgIGRhdGE6IG5vZGUuZGF0YVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEZsYXROb2RlPihcclxuICAgICAgICAgICAgICBub2RlID0+IG5vZGUubGV2ZWwsIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlKTtcclxuICAgICAgICAgICAgdGhpcy50cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIoXHJcbiAgICAgICAgICAgICAgX3RyYW5zZm9ybWVyLCBub2RlID0+IG5vZGUubGV2ZWwsIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlLCBub2RlID0+IG5vZGUuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMudHJlZUZsYXR0ZW5lcik7XHJcbiAgICAgICAgICAgIGxldCBqc29uRGF0YSA9IEpTT04ucGFyc2UodGhpcy50cmVlTm9kZURhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGpzb25EYXRhO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5oYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IEZsYXROb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZURhdGFMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCQubmV4dChuZXh0U3RlcCk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yID0gZGF0YS5lcnJvcjtcclxuICAgICAgICAgICAgdGhpcy5lcnJvcklzRm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2Zvcm1zXHJcbiAgICAgICAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2Zvcm0tdmFsaWRhdGlvblxyXG5cclxuICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgZm9ybSBhbmQgdXNlIGJlbG93IGZ1bmN0aW9uIHRvIHN0b3AgdGhlIHdpemFyZCdzIHN0ZXBcclxuICAgICAgICAvLyB3aXphcmRPYmouc3RvcCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmlkZW50aWZpZXIgPT0gXCJcIiB8fCB0aGlzLmlkZW50aWZpZXIgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVdhcm5pbmdNZXNzYWdlKHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZBTF9BdExlYXN0T25lSXNSZXF1aXJlZFwiKSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hZGROYW1lLlZhbHVlID0gdGhpcy5pZGVudGlmaWVyTmFtZSArIFwiIGNvbm5lY3Rpb25cIjtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAkLm5leHQobmV4dFN0ZXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAkLm5leHQobmV4dFN0ZXApO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgcHJldlN0ZXAoKSB7XHJcbiAgICBsZXQgY3VycmVudFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwJC52YWx1ZTtcclxuICAgIGxldCBwcmV2U3RlcCA9IHRoaXMuY3VycmVudFN0ZXAkLnZhbHVlIC0gMTtcclxuICAgIGlmIChwcmV2U3RlcCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRTdGVwJC5uZXh0KHByZXZTdGVwKTtcclxuICB9XHJcblxyXG4gIHNldElkZW50aWZpZXIob2JqOiBNYXRDaGVja2JveENoYW5nZSwgc2VsZWN0ZWROb2RlOiBBRE5vZGUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZE5vZGUuSW5kZXg7XHJcbiAgICBpZiAob2JqLmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5pZGVudGlmaWVyID0gc2VsZWN0ZWROb2RlLmRhdGE7XHJcbiAgICAgIHRoaXMuaWRlbnRpZmllck5hbWUgPSBzZWxlY3RlZE5vZGUudGV4dDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXJOYW1lID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiXHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInN0ZXBwZXIgc3RlcHBlci1waWxscyBzdGVwcGVyLWNvbHVtbiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC14bC1yb3cgZmxleC1yb3ctZmx1aWQgXCIgaWQ9XCJrdF9jcmVhdGVfYWNjb3VudF9zdGVwcGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcm91bmRlZCBqdXN0aWZ5LWNvbnRlbnQteGwtc3RhcnQgZmxleC1yb3ctYXV0byBtZS05IGNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC02IHB4LWxnLTEwIHB4LXh4bC0xNSBweS0yMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLW5hdlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaXRlbVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBjdXJyZW50U3RlcCQudmFsdWUgPT09IDEgfVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1saW5lIHctNDBweFwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaWNvbiB3LTQwcHggaC00MHB4XCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzdGVwcGVyLWNoZWNrIGZhcyBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItbnVtYmVyXCI+MTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInN0ZXBwZXItdGl0bGVcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlcIil9fTwvaDM+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWRlc2MgZnctYm9sZFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yeV9UYWIxTm90ZVwiKX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dXaW5kb3dzQ29udHJvbHNcIiBjbGFzcz1cInN0ZXBwZXItaXRlbVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBjdXJyZW50U3RlcCQudmFsdWUgPT09IDIgJiYgc2hvd1dpbmRvd3NDb250cm9sc31cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZSB3LTQwcHhcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWljb24gdy00MHB4IGgtNDBweFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic3RlcHBlci1jaGVjayBmYXMgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLW51bWJlclwiPjI8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGFiZWxcIj5cclxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJzdGVwcGVyLXRpdGxlXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5X1NlbGVjdENvbnRhaW5lclwiKX19PC9oMz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1kZXNjIGZ3LWJvbGRcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlfVGFiMk5vdGVcIil9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWl0ZW1cIiBbbmdDbGFzc109XCJ7Y3VycmVudDogKGN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gZm9ybXNDb3VudCApIH1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZSB3LTQwcHhcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWljb24gdy00MHB4IGgtNDBweFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic3RlcHBlci1jaGVjayBmYXMgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLW51bWJlclwiPnt7Zm9ybXNDb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwic3RlcHBlci10aXRsZVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk9wdGlvbnNcIil9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItZGVzYyBmdy1ib2xkXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5X1RhYjNOb3RlXCIpfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGQtZmxleCBmbGV4LXJvdy1mbHVpZCBmbGV4LWNlbnRlciByb3VuZGVkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwLTIwIHctMTAwIGNhcmQtYm9keVwiICpuZ0lmPVwiaXNBZGRGb3JtTG9hZGVkXCI+XHJcbiAgICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnJlbnRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2FkVHlwZUNvbnRyb2wgW29wdGlvbnNdPVwiYWRkVHlwZU9wdGlvbnNcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiIChPbkNoYW5nZSk9XCJ0eXBlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dXaW5kb3dzQ29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjYWRXaW5kb3dzVHlwZUNvbnRyb2wgW29wdGlvbnNdPVwiYWRkV2luZG93c1R5cGVPcHRpb25zXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIiAoT25DaGFuZ2UpPVwid2luZG93c1R5cGVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICNhZERvbWFpbkNvbnRyb2wgW29wdGlvbnNdPVwiYWRkRG9tYWluXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlcnJvcklzRm91bmRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+e3t2YWxpZGF0aW9uRXJyb3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZFNhbUFjY291bnRcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRQYXNzd29yZFwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiICpuZ0lmPVwiYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZFNob3dCdWlsdEluR3JvdXBzXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBenVyZUNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICN0ZW5hbnRJRENvbnRyb2wgW29wdGlvbnNdPVwiYWRkVGVuYW50SURcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCAjY2xpZW50SURDb250cm9sIFtvcHRpb25zXT1cImFkZENsaWVudElEXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggI2NsaWVudFNlY3JldENvbnRyb2wgW29wdGlvbnNdPVwiYWRkQ2xpZW50U2VjcmV0XCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IDIgJiYgc2hvd1dpbmRvd3NDb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cmVlRGF0YUNvbnRhaW5lclwiICpuZ0lmPVwidHJlZURhdGFMb2FkZWRcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLUhlbGxsbGxsbGxsbGxsbGxsbGxsbG8tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlO1wiIG1hdFRyZWVOb2RlUGFkZGluZz5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHVzZSBhIGRpc2FibGVkIGJ1dHRvbiB0byBwcm92aWRlIHBhZGRpbmcgZm9yIHRyZWUgbGVhZiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrbGlzdC1sZWFmLW5vZGVcIiBbY2hlY2tlZF09XCJzZWxlY3RlZCA9PT0gbm9kZS5JbmRleFwiIChjaGFuZ2UpPVwic2V0SWRlbnRpZmllcigkZXZlbnQsbm9kZSlcIiBbZGlzYWJsZWRdPVwibm9kZS5zZWxlY3RhYmxlP2ZhbHNlOnRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cclxuICAgICAgICAgICAgICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7d2hlbjogaGFzQ2hpbGRcIiBtYXRUcmVlTm9kZVBhZGRpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRyZWVOb2RlVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUb2dnbGUgJyArIG5vZGUubmFtZVwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1iZy1saWdodCBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnkgYnRuLXNtIG1lLTEgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIiBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiF0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCIgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbZGlzYWJsZWRdPVwibm9kZS5zZWxlY3RhYmxlP2ZhbHNlOnRydWVcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC10cmVlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IGZvcm1zQ291bnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGROYW1lXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkUGVybWlzc2lvblNldFwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkTGFuZ3VhZ2VcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZFdlbGNvbWVNc2dUZW1wXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRGaWxlUHJvdmlkZXJcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkTWFya0luYWN0aXZlXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkRGFpbHlKb2JcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFEUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluY2x1ZGVJblVwZGF0ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFkZE1hcHBpbmdzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1IaWRkZW4gaW5jbHVkZSBpbiB1cGRhdGUgdmFsdWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bNF1cIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyXCIgKGNsaWNrKT1cImRlbGV0ZUFETWFwcGluZyhvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZEFETWFwcGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgcHQtMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yLTJcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlICE9PSAxXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2U3RlcCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYzLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgbWUtMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJldmlvdXNcIil9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlICE9PSBmb3Jtc0NvdW50XCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRTdGVwKClcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmRpY2F0b3ItbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlIDwgZm9ybXNDb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmV4dFwiKX19IHt7IFwiIFwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2NC5zdmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMyBtcy0yIG1lLTBcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IGZvcm1zQ291bnRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tbGcgYnRuLXByaW1hcnkgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU3VibWl0XCIpfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcblxyXG48L2Rpdj5cclxuIl19
528
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yeS1hZGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9BY3RpdmVEaXJlY3Rvcmllcy9hY3RpdmUtZGlyZWN0b3J5LWFkZC9hY3RpdmUtZGlyZWN0b3J5LWFkZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnktYWRkL2FjdGl2ZS1kaXJlY3RvcnktYWRkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUEyQyxNQUFNLHlCQUF5QixDQUFDO0FBRS9MLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1DQUFtQyxFQUFFLE1BQU0s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QkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ08sb0JBQW9CO3NCQUF6RSxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFrQkgsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ00sbUJBQW1CO3NCQUF2RSxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvZ2dsZVNsaWRlT3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBJbnB1dFR5cGUsIFRleHRCb3hPcHRpb25zLCBDaGVja0JveE9wdGlvbnMsIEZvcm1PcHRpb25zLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIFRleHRib3hDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvQWN0aXZlRGlyZWN0b3J5U2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9BRE1vZGVscy9BY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwnO1xyXG5pbXBvcnQgeyBBRE1hcHBpbmdNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQURNb2RlbHMvQURNYXBwaW5nTW9kZWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94LCBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgQWN0aXZlRGlyZWN0b3J5VHlwZSwgQWN0aXZlRGlyZWN0b3J5V2luZG93Q29ubmVjdGlvblR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuXHJcbmludGVyZmFjZSBBRE5vZGUge1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBjaGlsZHJlbj86IEFETm9kZVtdO1xyXG4gIGRhdGE6IHN0cmluZztcclxuICBzZWxlY3RhYmxlOiBib29sZWFuO1xyXG4gIGljb246IHN0cmluZztcclxuICBzdGF0ZTogYW55O1xyXG4gIEluZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKiBGbGF0IG5vZGUgd2l0aCBleHBhbmRhYmxlIGFuZCBsZXZlbCBpbmZvcm1hdGlvbiAqL1xyXG5pbnRlcmZhY2UgRmxhdE5vZGUge1xyXG4gIGV4cGFuZGFibGU6IGJvb2xlYW47XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGxldmVsOiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFjdGl2ZS1kaXJlY3RvcnktYWRkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZlLWRpcmVjdG9yeS1hZGQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3RpdmVEaXJlY3RvcnlBZGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLy93aXphcmRcclxuICBmb3Jtc0NvdW50ID0gMjtcclxuICBjdXJyZW50U3RlcCQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgxKTtcclxuICAvL3dpemFyZFxyXG4gIC8vUmVxdWlyZWQgTGlzdHNcclxuICBwZXJtaXNzaW9uU2V0TGlzdDogYW55W10gPSBbXTtcclxuICBsYW5ndWFnZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHdlbGNvbWVNc2dUZW1wTGlzdDogYW55W10gPSBbXTtcclxuICBhZFR5cGVzTGlzdDogYW55W10gPSBbXTtcclxuICBmaWxlUHJvdmlkZXJzOiBhbnlbXSA9IFtdO1xyXG4gIG1hcHBpbmdQcm9wZXJ0aWVzTGlzdDogYW55W10gPSBbXTtcclxuICBtYXBwaW5nVHlwZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIC8vV2luZG93c1xyXG4gIGFkV2luZG93c1R5cGVzOiBhbnlbXSA9IFtdOztcclxuXHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBhZGRBY3RpdmVEaXJlY3RvcnlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zO1xyXG4gIGFkZFR5cGVPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkUGVybWlzc2lvblNldDogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZExhbmd1YWdlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkV2VsY29tZU1zZ1RlbXA6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRGaWxlUHJvdmlkZXI6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRNYXJrSW5hY3RpdmU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBhZGREYWlseUpvYjogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZE1hcHBpbmdzT3B0aW9uczogYW55W10gPSBbXTtcclxuICBhZGRNYXBwaW5nc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIHNlbGVjdGVkVHlwZTogc3RyaW5nO1xyXG4gIGlzQWRkRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2FkVHlwZUNvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWRUeXBlQ29udHJvbDogRHJvcGRvd25MaXN0Q29tcG9uZW50O1xyXG5cclxuICAvLy8vLy8vLy9TdGFydCBXaW5kb3dzIGNvbnRyb2xzLy8vLy9cclxuICBhZGREb21haW46IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFNhbUFjY291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFBhc3N3b3JkOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRXaW5kb3dzVHlwZU9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRTaG93QnVpbHRJbkdyb3VwczogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZFNob3dCdWlsdEluR3JvdXBzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dXaW5kb3dzQ29udHJvbHM6IGJvb2xlYW47XHJcbiAgQFZpZXdDaGlsZCgnYWREb21haW5Db250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFkRG9tYWluQ29udHJvbDogVGV4dGJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZFdpbmRvd3NUeXBlQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBhZFdpbmRvd3NUeXBlQ29udHJvbDogRHJvcGRvd25MaXN0Q29tcG9uZW50O1xyXG4gIC8vVHJlZVxyXG4gIHZhbGlkYXRpb25FcnJvcjogc3RyaW5nO1xyXG4gIGVycm9ySXNGb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRyZWVOb2RlRGF0YTogYW55O1xyXG4gIHRyZWVDb250cm9sOiBhbnk7XHJcbiAgdHJlZUZsYXR0ZW5lcjogYW55O1xyXG4gIGRhdGFTb3VyY2U6IGFueTtcclxuICBoYXNDaGlsZDogYW55O1xyXG4gIHRyZWVEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWQgPSAtMTtcclxuICBpZGVudGlmaWVyOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGlkZW50aWZpZXJOYW1lOiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8vLy8vLy8vL0VuZCBXaW5kb3dzIGNvbnRyb2xzLy8vLy9cclxuICAvL0F6dXJlXHJcbiAgYWRkVGVuYW50SUQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZENsaWVudElEOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRDbGllbnRTZWNyZXQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIEBWaWV3Q2hpbGQoJ3RlbmFudElEQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW5hbnRJRENvbnRyb2w6IFRleHRib3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnY2xpZW50SURDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNsaWVudElEQ29udHJvbDogVGV4dGJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdjbGllbnRTZWNyZXRDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNsaWVudFNlY3JldENvbnRyb2w6IFRleHRib3hDb21wb25lbnQ7XHJcblxyXG4gIHNob3dBenVyZUNvbnRyb2xzOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgQWN0aXZlRGlyZWN0b3J5U2VydmljZTogQWN0aXZlRGlyZWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZEFjdGl2ZURpcmVjdG9yeVwiKTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBRENvbm5lY3Rpb25cIiksIHBhdGg6ICcvQWRtaW4vQURDb25uZWN0aW9uJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXQgcGFnZVxyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgdGhpcy5BY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmV1bHRPYmogPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSByZXVsdE9iai5wZXJtaXNzaW9uU2V0cztcclxuICAgICAgdGhpcy5hZFR5cGVzTGlzdCA9IHJldWx0T2JqLmFkVHlwZXM7XHJcbiAgICAgIHRoaXMuYWRXaW5kb3dzVHlwZXMgPSByZXVsdE9iai5hZFdpbmRvd3NUeXBlcztcclxuICAgICAgdGhpcy5sYW5ndWFnZXNMaXN0ID0gcmV1bHRPYmoubGFuZ3VhZ2VzO1xyXG4gICAgICB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdCA9IHJldWx0T2JqLnRlbXBsYXRlcztcclxuICAgICAgdGhpcy5maWxlUHJvdmlkZXJzID0gcmV1bHRPYmouZmlsZVByb3ZpZGVycztcclxuXHJcbiAgICAgIHRoaXMubWFwcGluZ1Byb3BlcnRpZXNMaXN0ID0gcmV1bHRPYmoubWFwcGluZ1Byb3BlcnRpZXM7XHJcbiAgICAgIHRoaXMubWFwcGluZ1R5cGVzTGlzdCA9IHJldWx0T2JqLm1hcHBpbmdUeXBlcztcclxuXHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtXHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuZ2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkQURNb2RlbDtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZEFERnVuY3Rpb247XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMub25TdWNjZXNzSGFuZGxlciA9IHRoaXMuYWRkQURPblN1Y2Nlc3M7XHJcblxyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLm5hbWUgPSBcImFkZFR5cGVPcHRpb25zXCJcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5sYWJlbEtleSA9IFwiVHlwZVwiXHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWxcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5kYXRhU291cmNlID0gdGhpcy5hZFR5cGVzTGlzdFxyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hZGROYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5uYW1lID0gXCJhZGROYW1lXCI7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5sYWJlbEtleSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLmFkZE5hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZE5hbWUudmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZE5hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5uYW1lID0gXCJhZGRQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0LmxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0LmRhdGFTb3VyY2UgPSB0aGlzLnBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLm5hbWUgPSBcImFkZExhbmd1YWdlXCJcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5sYWJlbEtleSA9IFwiTGFuZ3VhZ2VcIlxyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLmRhdGFTb3VyY2UgPSB0aGlzLmxhbmd1YWdlc0xpc3RcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAubmFtZSA9IFwiYWRkV2VsY29tZU1zZ1RlbXBcIlxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLmxhYmVsS2V5ID0gXCJXZWxjb21lTXNnVGVtcGxhdGVcIlxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLmRhdGFTb3VyY2UgPSB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdFxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hZGRGaWxlUHJvdmlkZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLm5hbWUgPSBcImFkZEZpbGVQcm92aWRlclwiXHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLmxhYmVsS2V5ID0gXCJGaWxlUHJvdmlkZXJcIlxyXG4gICAgICB0aGlzLmFkZEZpbGVQcm92aWRlci5kYXRhU291cmNlID0gdGhpcy5maWxlUHJvdmlkZXJzXHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkTWFya0luYWN0aXZlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5uYW1lID0gXCJhZGRNYXJrSW5hY3RpdmVcIlxyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5sYWJlbEtleSA9IFwiTWFya0FzSW5hY3RpdmVcIlxyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkRGFpbHlKb2IgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRGFpbHlKb2IubmFtZSA9IFwiYWRkRGFpbHlKb2JcIlxyXG4gICAgICB0aGlzLmFkZERhaWx5Sm9iLmxhYmVsS2V5ID0gXCJBZGRUb0RhaWx5Sm9iXCJcclxuICAgICAgdGhpcy5hZGREYWlseUpvYi52YWx1ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFkZERhaWx5Sm9iLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgLy9zZXQgQUQgbWFwcGluZ1xyXG4gICAgICBsZXQgZGF0YTogYW55ID0gdGhpcy5nZXRBRE1hcHBpbmdPcHRpb25zKHJldWx0T2JqLmFkTWFwcGluZ3MpO1xyXG4gICAgICB0aGlzLmFkZE1hcHBpbmdzT3B0aW9ucyA9IGRhdGFbMF07XHJcbiAgICAgIHRoaXMuYWRkTWFwcGluZ3NDb3VudCA9IGRhdGFbMV07XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzQWRkRm9ybUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sIDUwKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vQWRkIEFjdGl2ZSBkaXJlY3RvcnkgZnVuY3Rpb25zXHJcbiAgZ2V0QWRkQURNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIC8vY29uc29sZS5sb2coUmVzdWx0TW9kZWwpO1xyXG4gICAgbGV0IEFkZE1vZGVsOiBBY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwgPSBuZXcgQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5Db25uZWN0aW9uTmFtZSA9IHJlc3VsdE1vZGVsLmFkZE5hbWU7XHJcbiAgICBBZGRNb2RlbC5BRFR5cGVJdGVtSURfR1VJRCA9IHJlc3VsdE1vZGVsLmFkZFR5cGVPcHRpb25zXHJcbiAgICBBZGRNb2RlbC5QZXJtaXNzaW9uU2V0SUQgPSByZXN1bHRNb2RlbC5hZGRQZXJtaXNzaW9uU2V0ICE9IG51bGwgPyByZXN1bHRNb2RlbC5hZGRQZXJtaXNzaW9uU2V0IDogbnVsbFxyXG4gICAgQWRkTW9kZWwuTGFuZ0tleSA9IHJlc3VsdE1vZGVsLmFkZExhbmd1YWdlO1xyXG4gICAgQWRkTW9kZWwuV2VsY29tZVRlbXBsYXRlSUQgPSByZXN1bHRNb2RlbC5hZGRXZWxjb21lTXNnVGVtcCAhPSBudWxsID8gTnVtYmVyKHJlc3VsdE1vZGVsLmFkZFdlbGNvbWVNc2dUZW1wKSA6IG51bGxcclxuICAgIEFkZE1vZGVsLkltYWdlc0ZpbGVQcm92aWRlck5hbWUgPSByZXN1bHRNb2RlbC5hZGRGaWxlUHJvdmlkZXJcclxuICAgIEFkZE1vZGVsLk1hcmtBc0luYWN0aXZlID0gcmVzdWx0TW9kZWwuYWRkTWFya0luYWN0aXZlXHJcbiAgICBBZGRNb2RlbC5BZGRUb0RhaWx5Sm9iID0gcmVzdWx0TW9kZWwuYWRkRGFpbHlKb2JcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFR5cGUgPT0gQWN0aXZlRGlyZWN0b3J5VHlwZS5XaW5kb3dzKSB7XHJcbiAgICAgIEFkZE1vZGVsLklkZW50aWZpZXIgPSB0aGlzLmlkZW50aWZpZXI7XHJcbiAgICAgIEFkZE1vZGVsLkRvbWFpbiA9IHJlc3VsdE1vZGVsLmFkZERvbWFpbjtcclxuICAgICAgQWRkTW9kZWwuU2FtQWNjb3VudCA9IHJlc3VsdE1vZGVsLmFkZFNhbUFjY291bnQ7XHJcbiAgICAgIEFkZE1vZGVsLlBhc3N3b3JkID0gcmVzdWx0TW9kZWwuYWRkUGFzc3dvcmQ7XHJcbiAgICAgIEFkZE1vZGVsLlNob3dCdWlsdEluR3JvdXBzID0gcmVzdWx0TW9kZWwuYWRkU2hvd0J1aWx0SW5Hcm91cHM7XHJcbiAgICAgIEFkZE1vZGVsLkFEV2luZG93c1R5cGVJdGVtSURfR1VJRCA9IHJlc3VsdE1vZGVsLmFkZFdpbmRvd3NUeXBlT3B0aW9uc1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIEFkZE1vZGVsLlRlbmFudElEID0gcmVzdWx0TW9kZWwuYWRkVGVuYW50SUQ7XHJcbiAgICAgIEFkZE1vZGVsLkNsaWVudElEID0gcmVzdWx0TW9kZWwuYWRkQ2xpZW50SUQ7XHJcbiAgICAgIEFkZE1vZGVsLkNsaWVudFNlY3JldCA9IHJlc3VsdE1vZGVsLmFkZENsaWVudFNlY3JldDtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5hZGRNYXBwaW5nc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IGFkZE1BcHBpbmdUeXBlID0gcmVzdWx0TW9kZWxbXCJBRE1hcHBpbmdUeXBlXCIgKyBqXTtcclxuICAgICAgaWYgKGFkZE1BcHBpbmdUeXBlID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nUHJvcGVydHkgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBqXTtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nUHJvcGVydHlOYW1lID0gcmVzdWx0TW9kZWxbXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IGFkTUFwcGluZ09iajogQURNYXBwaW5nTW9kZWwgPSBuZXcgQURNYXBwaW5nTW9kZWwoKTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkFETWFwcGluZ1R5cGVJdGVtSUQgPSBhZGRNQXBwaW5nVHlwZTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkJCU0ZQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5O1xyXG4gICAgICBhZE1BcHBpbmdPYmouQURQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5TmFtZTtcclxuICAgICAgbGV0IGFkTUFwcGluZ0luY2x1ZGVJblVwZGF0ZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgal07XHJcbiAgICAgIGxldCBhZE1BcHBpbmdIaWRkZW5JbmNsdWRlSW5VcGRhdGUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGVcIiArIGpdO1xyXG4gICAgICBhZE1BcHBpbmdPYmouSW5jbHVkZUluVXBkYXRlID0gYWRNQXBwaW5nSW5jbHVkZUluVXBkYXRlID09IHVuZGVmaW5lZCA/IGFkTUFwcGluZ0hpZGRlbkluY2x1ZGVJblVwZGF0ZSA6IGFkTUFwcGluZ0luY2x1ZGVJblVwZGF0ZTtcclxuXHJcbiAgICAgIEFkZE1vZGVsLkFETWFwcGluZ3MucHVzaChhZE1BcHBpbmdPYmopO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRBZGRBREZ1bmN0aW9uID0gKGFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkFjdGl2ZURpcmVjdG9yeVNlcnZpY2UuYWRkQWN0aXZlRGlyZWN0b3J5KGFkZE1vZGVsKVxyXG4gIH1cclxuICBhZGRBRE9uU3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL0FEQ29ubmVjdGlvbiddKTtcclxuICB9XHJcblxyXG4gIC8vTWFwcGluZyBmdW5jdGlvbnNcclxuICBnZXRBRE1hcHBpbmdPcHRpb25zKEFETWFwcGluZ3M6IGFueVtdKSB7XHJcbiAgICBsZXQgQURNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBBRE1hcHBpbmdDb3VudDogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQURNYXBwaW5ncy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgbGV0IG9iamVjdE1hcHBpbmdPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIGxldCBzZWxlY3RlZFR5cGUgPSB0aGlzLm1hcHBpbmdUeXBlc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBBRE1hcHBpbmdzW2ldLmFkTWFwcGluZ1R5cGVJdGVtSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLm5hbWUgPSBcIkFETWFwcGluZ1R5cGVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFR5cGU7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuZGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1R5cGVzTGlzdDtcclxuICAgICAgQURNYXBwaW5nVHlwZS5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgbGV0IHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IEFETWFwcGluZ3NbaV0uYmJzZlByb3BlcnR5TmFtZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5Lm5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRQcm9wZXJ0eTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5LmRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuaXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1Byb3BlcnR5TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUubmFtZSA9IFwiQURNYXBwaW5nUHJvcGVydHlOYW1lXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnZhbHVlID0gQURNYXBwaW5nc1tpXS5hZFByb3BlcnR5TmFtZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLmlzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5tYXhMZW5ndGggPSAxMDI0O1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ0luY2x1ZGVVcGRhdGUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUubmFtZSA9IFwiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgaTtcclxuICAgICAgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZS52YWx1ZSA9IEFETWFwcGluZ3NbaV0uaW5jbHVkZUluVXBkYXRlO1xyXG4gICAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLmlzRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5uYW1lID0gXCJBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLnZhbHVlID0gQURNYXBwaW5nc1tpXS5pbmNsdWRlSW5VcGRhdGU7XHJcblxyXG4gICAgICBvYmplY3RNYXBwaW5nT3B0aW9ucy5wdXNoKEFETWFwcGluZ1R5cGUsIEFETWFwcGluZ1Byb3BlcnR5LCBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUsIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUsIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUpO1xyXG4gICAgICBBRE1hcHBpbmdPcHRpb25zLnB1c2gob2JqZWN0TWFwcGluZ09wdGlvbnMpO1xyXG4gICAgICBBRE1hcHBpbmdDb3VudCArPSAxO1xyXG5cclxuICAgIH1cclxuICAgIHJldHVybiBbQURNYXBwaW5nT3B0aW9ucywgQURNYXBwaW5nQ291bnRdO1xyXG4gIH1cclxuICBkZWxldGVBRE1hcHBpbmcoZGVsZXRlZEFETUFwcGluZzogYW55KSB7XHJcbiAgICBsZXQgZGVsZXRlZE1hcHBpbmdJbmRleDogbnVtYmVyID0gdGhpcy5hZGRNYXBwaW5nc09wdGlvbnMuaW5kZXhPZihkZWxldGVkQURNQXBwaW5nKTtcclxuICAgIGlmIChkZWxldGVkTWFwcGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmFkZE1hcHBpbmdzT3B0aW9ucy5zcGxpY2UoZGVsZXRlZE1hcHBpbmdJbmRleCwgMSk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZEFETUFwcGluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRBRE1BcHBpbmdbaV0uTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYWRkQURNYXBwaW5nKCkge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5hZGRNYXBwaW5nc0NvdW50O1xyXG5cclxuICAgIGxldCBvYmplY3RNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1R5cGUubmFtZSA9IFwiQURNYXBwaW5nVHlwZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdUeXBlLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdUeXBlLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdUeXBlLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgQURNYXBwaW5nVHlwZS5kYXRhU291cmNlID0gdGhpcy5tYXBwaW5nVHlwZXNMaXN0O1xyXG5cclxuICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5Lm5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5LmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5kYXRhU291cmNlID0gdGhpcy5tYXBwaW5nUHJvcGVydGllc0xpc3Q7XHJcblxyXG5cclxuICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5uYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLmlzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUubmFtZSA9IFwiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLnZhbHVlID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5uYW1lID0gXCJBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlXCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuICAgIG9iamVjdE1hcHBpbmdPcHRpb25zLnB1c2goQURNYXBwaW5nVHlwZSwgQURNYXBwaW5nUHJvcGVydHksIEFETWFwcGluZ1Byb3BlcnR5TmFtZSwgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSwgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZSk7XHJcblxyXG4gICAgdGhpcy5hZGRNYXBwaW5nc09wdGlvbnMucHVzaChvYmplY3RNYXBwaW5nT3B0aW9ucyk7XHJcbiAgICB0aGlzLmFkZE1hcHBpbmdzQ291bnQgKz0gMTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9BRCB3aW5kb3dzIG9uIHR5cGUgY2hhbmdlIChPVS9Hcm91cClcclxuICB3aW5kb3dzVHlwZUNoYW5nZSh0eXBlVmFsdWUpIHtcclxuICAgIGlmICh0eXBlVmFsdWUgPT0gQWN0aXZlRGlyZWN0b3J5V2luZG93Q29ubmVjdGlvblR5cGUuQWN0aXZlRGlyZWN0b3J5R3JvdXApIHtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3VwcyA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3Vwcy5uYW1lID0gXCJhZGRTaG93QnVpbHRJbkdyb3Vwc1wiXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHMubGFiZWxWYWx1ZSA9IFwiU2hvd0J1aWx0SW5Hcm91cHNcIlxyXG4gICAgICB0aGlzLmFkZFNob3dCdWlsdEluR3JvdXBzLmxhYmVsS2V5ID0gXCJTaG93QnVpbHRJbkdyb3Vwc1wiXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHMudmFsdWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3Vwcy52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0ucmVtb3ZlQ29udHJvbChcImFkZFNob3dCdWlsdEluR3JvdXBzXCIpO1xyXG4gICAgICB0aGlzLmFkZFNob3dCdWlsdEluR3JvdXBzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9BRCBvbiB0eXBlIGNoYW5nZXMgKFdpbmRvd3MvQXp1cmUpXHJcbiAgdHlwZUNoYW5nZSh0eXBlVmFsdWUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gdHlwZVZhbHVlO1xyXG4gICAgaWYgKHR5cGVWYWx1ZSA9PSBBY3RpdmVEaXJlY3RvcnlUeXBlLldpbmRvd3MpIHtcclxuICAgICAgdGhpcy5mb3Jtc0NvdW50ID0gMztcclxuICAgICAgLy9SZW1vdmUgQXp1cmUgY29udHJvbHMgaWYgZm91bmRcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRUZW5hbnRJRFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRDbGllbnRJRFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRDbGllbnRTZWNyZXRcIik7XHJcblxyXG4gICAgICAvL0luaXRpYWxpemUgd2luZG93cyBjb250cm9sc1xyXG4gICAgICB0aGlzLmFkZFdpbmRvd3NUeXBlT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMubmFtZSA9IFwiYWRkV2luZG93c1R5cGVPcHRpb25zXCJcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMubGFiZWxLZXkgPSBcIldpbmRvd3NUeXBlXCJcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWxcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMuYWRXaW5kb3dzVHlwZXNcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFdpbmRvd3NUeXBlT3B0aW9ucy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkRG9tYWluID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRG9tYWluLm5hbWUgPSBcImFkZERvbWFpblwiO1xyXG4gICAgICB0aGlzLmFkZERvbWFpbi5sYWJlbEtleSA9IFwiRG9tYWluXCI7XHJcbiAgICAgIHRoaXMuYWRkRG9tYWluLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGREb21haW4udmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZERvbWFpbi5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGREb21haW4ubWF4TGVuZ3RoID0gMjU2O1xyXG5cclxuICAgICAgdGhpcy5hZGRTYW1BY2NvdW50ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkU2FtQWNjb3VudC5uYW1lID0gXCJhZGRTYW1BY2NvdW50XCI7XHJcbiAgICAgIHRoaXMuYWRkU2FtQWNjb3VudC5sYWJlbEtleSA9IFwiU2FtQWNjb3VudFwiO1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQudmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQubWF4TGVuZ3RoID0gMjA7XHJcblxyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkUGFzc3dvcmQubmFtZSA9IFwiYWRkUGFzc3dvcmRcIjtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5sYWJlbEtleSA9IFwiUGFzc3dvcmRcIjtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC50eXBlID0gSW5wdXRUeXBlLlBhc3N3b3JkO1xyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkLnZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5yZW1vdmVEZWZhdWx0UGFzc3dvcmRWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5tYXhMZW5ndGggPSA0MDAwO1xyXG5cclxuICAgICAgdGhpcy5zaG93QXp1cmVDb250cm9scyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbHMgPSB0cnVlO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybXNDb3VudCA9IDI7XHJcbiAgICAgIC8vUmVtb3ZlIHdpbmRvd3MgY29udHJvbHMgaWYgZm91bmRcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGREb21haW5cIik7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkU2FtQWNjb3VudFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRQYXNzd29yZFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRTaG93QnVpbHRJbkdyb3Vwc1wiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRXaW5kb3dzVHlwZU9wdGlvbnNcIik7XHJcblxyXG4gICAgICB0aGlzLmFkZFRlbmFudElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkVGVuYW50SUQubmFtZSA9IFwiYWRkVGVuYW50SURcIjtcclxuICAgICAgdGhpcy5hZGRUZW5hbnRJRC5sYWJlbEtleSA9IFwiVGVuYW50SURcIjtcclxuICAgICAgdGhpcy5hZGRUZW5hbnRJRC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuYWRkVGVuYW50SUQudmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZFRlbmFudElELmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFRlbmFudElELm1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRDbGllbnRJRC5uYW1lID0gXCJhZGRDbGllbnRJRFwiO1xyXG4gICAgICB0aGlzLmFkZENsaWVudElELmxhYmVsS2V5ID0gXCJDbGllbnRJRFwiO1xyXG4gICAgICB0aGlzLmFkZENsaWVudElELnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGRDbGllbnRJRC52YWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQubWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQubmFtZSA9IFwiYWRkQ2xpZW50U2VjcmV0XCI7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0LmxhYmVsS2V5ID0gXCJDbGllbnRTZWNyZXRcIjtcclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZENsaWVudFNlY3JldC52YWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0LmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZENsaWVudFNlY3JldC5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLnNob3dBenVyZUNvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zaG93V2luZG93c0NvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1dpemFyZCBmdW5jdGlvbnNcclxuICBuZXh0U3RlcCgpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5jdXJyZW50U3RlcCQudmFsdWU7XHJcbiAgICBjb25zdCBuZXh0U3RlcCA9IGN1cnJlbnRTdGVwICsgMTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS52YWx1ZSBhcyBhbnk7XHJcblxyXG4gICAgLy9DaGVjayByZXF1aXJlZCBmaWVsZHMgZm9yIG5leHQgc3RlcFxyXG4gICAgaWYgKGN1cnJlbnRTdGVwID09IDEpIHtcclxuICAgICAgaWYgKFJlc3VsdE1vZGVsLmFkZFR5cGVPcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09IEFjdGl2ZURpcmVjdG9yeVR5cGUuV2luZG93cykge1xyXG4gICAgICAgICAgaWYgKCFSZXN1bHRNb2RlbC5hZGREb21haW4gfHwgIVJlc3VsdE1vZGVsLmFkZFdpbmRvd3NUeXBlT3B0aW9ucykge1xyXG4gICAgICAgICAgICB0aGlzLmFkRG9tYWluQ29udHJvbC5pc1ZhbGlkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRXaW5kb3dzVHlwZUNvbnRyb2wuaXNWYWxpZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFSZXN1bHRNb2RlbC5hZGRUZW5hbnRJRCB8fCAhUmVzdWx0TW9kZWwuYWRkQ2xpZW50SUQgfHwgIVJlc3VsdE1vZGVsLmFkZENsaWVudFNlY3JldCkge1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudElEQ29udHJvbC5pc1ZhbGlkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xpZW50SURDb250cm9sLmlzVmFsaWQoKTtcclxuICAgICAgICAgICAgdGhpcy5jbGllbnRTZWNyZXRDb250cm9sLmlzVmFsaWQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmFkVHlwZUNvbnRyb2wuaXNWYWxpZCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkVHlwZSA9PSBBY3RpdmVEaXJlY3RvcnlUeXBlLldpbmRvd3MpIHtcclxuXHJcbiAgICAgIGlmIChuZXh0U3RlcCA9PT0gMiAmJiBjdXJyZW50U3RlcCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMudHJlZURhdGFMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy9pZiAoIXRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5nZXQoJ2FkZERvbWFpbicpLnZhbGlkIHx8ICF0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0uZ2V0KCdhZGRUeXBlT3B0aW9ucycpLnZhbGlkKSB7XHJcbiAgICAgICAgLy8gIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhSZXN1bHRNb2RlbCk7XHJcblxyXG4gICAgICAgIGxldCBBZGRNb2RlbDogQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsID0gbmV3IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCgpO1xyXG4gICAgICAgIEFkZE1vZGVsLkNvbm5lY3Rpb25OYW1lID0gUmVzdWx0TW9kZWwuYWRkTmFtZTtcclxuICAgICAgICBBZGRNb2RlbC5Eb21haW4gPSBSZXN1bHRNb2RlbC5hZGREb21haW47XHJcbiAgICAgICAgQWRkTW9kZWwuQURXaW5kb3dzVHlwZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuYWRkV2luZG93c1R5cGVPcHRpb25zO1xyXG4gICAgICAgIEFkZE1vZGVsLlNhbUFjY291bnQgPSBSZXN1bHRNb2RlbC5hZGRTYW1BY2NvdW50O1xyXG4gICAgICAgIEFkZE1vZGVsLlBhc3N3b3JkID0gUmVzdWx0TW9kZWwuYWRkUGFzc3dvcmQ7XHJcbiAgICAgICAgQWRkTW9kZWwuU2hvd0J1aWx0SW5Hcm91cHMgPSBSZXN1bHRNb2RlbC5hZGRTaG93QnVpbHRJbkdyb3VwcztcclxuXHJcblxyXG4gICAgICAgIHRoaXMuQWN0aXZlRGlyZWN0b3J5U2VydmljZS5jaGVja1ZhbGlkYXRpb25hbmRHZXREYXRhKEFkZE1vZGVsKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgdGhpcywgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICAgICAgdmFyIGRhdGEgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICAgICAgaWYgKGRhdGEudmFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU5vZGVEYXRhID0gZGF0YS50cmVlRGF0YTtcclxuICAgICAgICAgICAgdGhpcy5lcnJvcklzRm91bmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgICAgIGxldCBfdHJhbnNmb3JtZXIgPSAobm9kZTogQUROb2RlLCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6ICEhbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDAsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBub2RlLnRleHQsXHJcbiAgICAgICAgICAgICAgICBsZXZlbDogbGV2ZWwsXHJcbiAgICAgICAgICAgICAgICBpY29uOiBub2RlLmljb24sXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RhYmxlOiBub2RlLnNlbGVjdGFibGUsXHJcbiAgICAgICAgICAgICAgICBJbmRleDogbm9kZS5JbmRleCxcclxuICAgICAgICAgICAgICAgIGRhdGE6IG5vZGUuZGF0YVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEZsYXROb2RlPihcclxuICAgICAgICAgICAgICBub2RlID0+IG5vZGUubGV2ZWwsIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlKTtcclxuICAgICAgICAgICAgdGhpcy50cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIoXHJcbiAgICAgICAgICAgICAgX3RyYW5zZm9ybWVyLCBub2RlID0+IG5vZGUubGV2ZWwsIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlLCBub2RlID0+IG5vZGUuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMudHJlZUZsYXR0ZW5lcik7XHJcbiAgICAgICAgICAgIGxldCBqc29uRGF0YSA9IEpTT04ucGFyc2UodGhpcy50cmVlTm9kZURhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGpzb25EYXRhO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5oYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IEZsYXROb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZURhdGFMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCQubmV4dChuZXh0U3RlcCk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yID0gZGF0YS5lcnJvcjtcclxuICAgICAgICAgICAgdGhpcy5lcnJvcklzRm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2Zvcm1zXHJcbiAgICAgICAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2Zvcm0tdmFsaWRhdGlvblxyXG5cclxuICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgZm9ybSBhbmQgdXNlIGJlbG93IGZ1bmN0aW9uIHRvIHN0b3AgdGhlIHdpemFyZCdzIHN0ZXBcclxuICAgICAgICAvLyB3aXphcmRPYmouc3RvcCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmlkZW50aWZpZXIgPT0gXCJcIiB8fCB0aGlzLmlkZW50aWZpZXIgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVdhcm5pbmdNZXNzYWdlKHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZBTF9BdExlYXN0T25lSXNSZXF1aXJlZFwiKSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hZGROYW1lLnZhbHVlID0gdGhpcy5pZGVudGlmaWVyTmFtZSArIFwiIGNvbm5lY3Rpb25cIjtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAkLm5leHQobmV4dFN0ZXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAkLm5leHQobmV4dFN0ZXApO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgcHJldlN0ZXAoKSB7XHJcbiAgICBsZXQgY3VycmVudFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwJC52YWx1ZTtcclxuICAgIGxldCBwcmV2U3RlcCA9IHRoaXMuY3VycmVudFN0ZXAkLnZhbHVlIC0gMTtcclxuICAgIGlmIChwcmV2U3RlcCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRTdGVwJC5uZXh0KHByZXZTdGVwKTtcclxuICB9XHJcblxyXG4gIHNldElkZW50aWZpZXIob2JqOiBNYXRDaGVja2JveENoYW5nZSwgc2VsZWN0ZWROb2RlOiBBRE5vZGUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZE5vZGUuSW5kZXg7XHJcbiAgICBpZiAob2JqLmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5pZGVudGlmaWVyID0gc2VsZWN0ZWROb2RlLmRhdGE7XHJcbiAgICAgIHRoaXMuaWRlbnRpZmllck5hbWUgPSBzZWxlY3RlZE5vZGUudGV4dDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXJOYW1lID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiXHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInN0ZXBwZXIgc3RlcHBlci1waWxscyBzdGVwcGVyLWNvbHVtbiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC14bC1yb3cgZmxleC1yb3ctZmx1aWQgXCIgaWQ9XCJrdF9jcmVhdGVfYWNjb3VudF9zdGVwcGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcm91bmRlZCBqdXN0aWZ5LWNvbnRlbnQteGwtc3RhcnQgZmxleC1yb3ctYXV0byBtZS05IGNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC02IHB4LWxnLTEwIHB4LXh4bC0xNSBweS0yMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLW5hdlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaXRlbVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBjdXJyZW50U3RlcCQudmFsdWUgPT09IDEgfVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1saW5lIHctNDBweFwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaWNvbiB3LTQwcHggaC00MHB4XCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzdGVwcGVyLWNoZWNrIGZhcyBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItbnVtYmVyXCI+MTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInN0ZXBwZXItdGl0bGVcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlcIil9fTwvaDM+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWRlc2MgZnctYm9sZFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yeV9UYWIxTm90ZVwiKX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dXaW5kb3dzQ29udHJvbHNcIiBjbGFzcz1cInN0ZXBwZXItaXRlbVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBjdXJyZW50U3RlcCQudmFsdWUgPT09IDIgJiYgc2hvd1dpbmRvd3NDb250cm9sc31cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZSB3LTQwcHhcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWljb24gdy00MHB4IGgtNDBweFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic3RlcHBlci1jaGVjayBmYXMgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLW51bWJlclwiPjI8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGFiZWxcIj5cclxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJzdGVwcGVyLXRpdGxlXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5X1NlbGVjdENvbnRhaW5lclwiKX19PC9oMz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1kZXNjIGZ3LWJvbGRcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlfVGFiMk5vdGVcIil9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWl0ZW1cIiBbbmdDbGFzc109XCJ7Y3VycmVudDogKGN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gZm9ybXNDb3VudCApIH1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZSB3LTQwcHhcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWljb24gdy00MHB4IGgtNDBweFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic3RlcHBlci1jaGVjayBmYXMgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLW51bWJlclwiPnt7Zm9ybXNDb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwic3RlcHBlci10aXRsZVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk9wdGlvbnNcIil9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItZGVzYyBmdy1ib2xkXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5X1RhYjNOb3RlXCIpfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGQtZmxleCBmbGV4LXJvdy1mbHVpZCBmbGV4LWNlbnRlciByb3VuZGVkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwLTIwIHctMTAwIGNhcmQtYm9keVwiICpuZ0lmPVwiaXNBZGRGb3JtTG9hZGVkXCI+XHJcbiAgICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnJlbnRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2FkVHlwZUNvbnRyb2wgW29wdGlvbnNdPVwiYWRkVHlwZU9wdGlvbnNcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiIChPbkNoYW5nZSk9XCJ0eXBlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dXaW5kb3dzQ29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjYWRXaW5kb3dzVHlwZUNvbnRyb2wgW29wdGlvbnNdPVwiYWRkV2luZG93c1R5cGVPcHRpb25zXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIiAoT25DaGFuZ2UpPVwid2luZG93c1R5cGVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICNhZERvbWFpbkNvbnRyb2wgW29wdGlvbnNdPVwiYWRkRG9tYWluXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlcnJvcklzRm91bmRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+e3t2YWxpZGF0aW9uRXJyb3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZFNhbUFjY291bnRcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRQYXNzd29yZFwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiICpuZ0lmPVwiYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZFNob3dCdWlsdEluR3JvdXBzXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBenVyZUNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICN0ZW5hbnRJRENvbnRyb2wgW29wdGlvbnNdPVwiYWRkVGVuYW50SURcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCAjY2xpZW50SURDb250cm9sIFtvcHRpb25zXT1cImFkZENsaWVudElEXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggI2NsaWVudFNlY3JldENvbnRyb2wgW29wdGlvbnNdPVwiYWRkQ2xpZW50U2VjcmV0XCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IDIgJiYgc2hvd1dpbmRvd3NDb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cmVlRGF0YUNvbnRhaW5lclwiICpuZ0lmPVwidHJlZURhdGFMb2FkZWRcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLUhlbGxsbGxsbGxsbGxsbGxsbGxsbG8tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlO1wiIG1hdFRyZWVOb2RlUGFkZGluZz5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHVzZSBhIGRpc2FibGVkIGJ1dHRvbiB0byBwcm92aWRlIHBhZGRpbmcgZm9yIHRyZWUgbGVhZiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrbGlzdC1sZWFmLW5vZGVcIiBbY2hlY2tlZF09XCJzZWxlY3RlZCA9PT0gbm9kZS5JbmRleFwiIChjaGFuZ2UpPVwic2V0SWRlbnRpZmllcigkZXZlbnQsbm9kZSlcIiBbZGlzYWJsZWRdPVwibm9kZS5zZWxlY3RhYmxlP2ZhbHNlOnRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cclxuICAgICAgICAgICAgICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7d2hlbjogaGFzQ2hpbGRcIiBtYXRUcmVlTm9kZVBhZGRpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRyZWVOb2RlVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUb2dnbGUgJyArIG5vZGUubmFtZVwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1iZy1saWdodCBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnkgYnRuLXNtIG1lLTEgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIiBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiF0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCIgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbZGlzYWJsZWRdPVwibm9kZS5zZWxlY3RhYmxlP2ZhbHNlOnRydWVcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC10cmVlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IGZvcm1zQ291bnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGROYW1lXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkUGVybWlzc2lvblNldFwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkTGFuZ3VhZ2VcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZFdlbGNvbWVNc2dUZW1wXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRGaWxlUHJvdmlkZXJcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkTWFya0luYWN0aXZlXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkRGFpbHlKb2JcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFEUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluY2x1ZGVJblVwZGF0ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFkZE1hcHBpbmdzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1IaWRkZW4gaW5jbHVkZSBpbiB1cGRhdGUgdmFsdWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bNF1cIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyXCIgKGNsaWNrKT1cImRlbGV0ZUFETWFwcGluZyhvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZEFETWFwcGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgcHQtMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yLTJcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlICE9PSAxXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2U3RlcCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYzLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgbWUtMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJldmlvdXNcIil9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlICE9PSBmb3Jtc0NvdW50XCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRTdGVwKClcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmRpY2F0b3ItbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlIDwgZm9ybXNDb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmV4dFwiKX19IHt7IFwiIFwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2NC5zdmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMyBtcy0yIG1lLTBcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IGZvcm1zQ291bnRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tbGcgYnRuLXByaW1hcnkgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU3VibWl0XCIpfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcblxyXG48L2Rpdj5cclxuIl19