@bnsights/bbsf-admin-portal 1.1.59 → 1.1.60

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 (216) hide show
  1. package/README.md +3 -0
  2. package/esm2022/lib/Pages/ActiveDirectories/active-directories.component.mjs +4 -4
  3. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +4 -4
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +4 -4
  5. package/esm2022/lib/Pages/ActiveDirectories/active-directory-routing.module.mjs +5 -5
  6. package/esm2022/lib/Pages/ActiveDirectories/active-directory.module.mjs +5 -5
  7. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +4 -4
  8. package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +4 -4
  9. package/esm2022/lib/Pages/_layout/components/content/content.component.mjs +4 -4
  10. package/esm2022/lib/Pages/_layout/components/footer/footer.component.mjs +4 -4
  11. package/esm2022/lib/Pages/_layout/components/header/header.component.mjs +4 -4
  12. package/esm2022/lib/Pages/_layout/components/header/page-title/page-title.component.mjs +4 -4
  13. package/esm2022/lib/Pages/_layout/components/scripts-init/scripts-init.component.mjs +4 -4
  14. package/esm2022/lib/Pages/_layout/components/subheader/subheader.component.mjs +4 -4
  15. package/esm2022/lib/Pages/_layout/components/subheader/subheader.module.mjs +5 -5
  16. package/esm2022/lib/Pages/_layout/components/toolbar/toolbar.component.mjs +4 -4
  17. package/esm2022/lib/Pages/_layout/components/toolbar/toolbar.module.mjs +5 -5
  18. package/esm2022/lib/Pages/_layout/components/topbar/topbar.component.mjs +4 -4
  19. package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +4 -4
  20. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +5 -5
  21. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +4 -4
  22. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +5 -5
  23. package/esm2022/lib/Pages/anonymouslayout/change-password/change-password.component.mjs +4 -4
  24. package/esm2022/lib/Pages/anonymouslayout/error/error.component.mjs +4 -4
  25. package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +4 -4
  26. package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +4 -4
  27. package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +4 -4
  28. package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +4 -4
  29. package/esm2022/lib/Pages/anonymouslayout/verify-two-fa/verify-two-fa.component.mjs +4 -4
  30. package/esm2022/lib/Pages/authentication/auth-callback/auth-callback.component.mjs +4 -4
  31. package/esm2022/lib/Pages/authentication/authentication.component.mjs +4 -4
  32. package/esm2022/lib/Pages/authentication/authentication.module.mjs +5 -5
  33. package/esm2022/lib/Pages/authentication/authentication.routing.mjs +5 -5
  34. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +4 -4
  35. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +4 -4
  36. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +4 -4
  37. package/esm2022/lib/Pages/configurations/configurations.component.mjs +4 -4
  38. package/esm2022/lib/Pages/configurations/configurations.module.mjs +5 -5
  39. package/esm2022/lib/Pages/configurations/configurations.routing.mjs +5 -5
  40. package/esm2022/lib/Pages/core/auth.module.mjs +5 -5
  41. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +4 -4
  42. package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +4 -4
  43. package/esm2022/lib/Pages/core/authentication/auth.service.mjs +4 -4
  44. package/esm2022/lib/Pages/departments/department/department.component.mjs +4 -4
  45. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +4 -4
  46. package/esm2022/lib/Pages/departments/departments-routing.module.mjs +5 -5
  47. package/esm2022/lib/Pages/departments/departments.component.mjs +4 -4
  48. package/esm2022/lib/Pages/departments/departments.module.mjs +5 -5
  49. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +4 -4
  50. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +4 -4
  51. package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +4 -4
  52. package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +4 -4
  53. package/esm2022/lib/Pages/documents/documents.component.mjs +4 -4
  54. package/esm2022/lib/Pages/documents/documents.module.mjs +5 -5
  55. package/esm2022/lib/Pages/documents/documents.routing.mjs +5 -5
  56. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +4 -4
  57. package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +4 -4
  58. package/esm2022/lib/Pages/empty-data/empty-data.component.mjs +4 -4
  59. package/esm2022/lib/Pages/empty-data/empty-data.module.mjs +5 -5
  60. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +4 -4
  61. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +4 -4
  62. package/esm2022/lib/Pages/helpCenter/help-center-routing.module.mjs +5 -5
  63. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +4 -4
  64. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +4 -4
  65. package/esm2022/lib/Pages/helpCenter/help-center.module.mjs +5 -5
  66. package/esm2022/lib/Pages/helpCenter/help-centers.component.mjs +4 -4
  67. package/esm2022/lib/Pages/home/filter-pipe.mjs +4 -4
  68. package/esm2022/lib/Pages/home/home.component.mjs +4 -4
  69. package/esm2022/lib/Pages/home/home.module.mjs +5 -5
  70. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +4 -4
  71. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +5 -5
  72. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +4 -4
  73. package/esm2022/lib/Pages/jobs/jobs.module.mjs +5 -5
  74. package/esm2022/lib/Pages/license/license/license.component.mjs +4 -4
  75. package/esm2022/lib/Pages/license/license.module.mjs +5 -5
  76. package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +4 -4
  77. package/esm2022/lib/Pages/localizations/localizations.component.mjs +4 -4
  78. package/esm2022/lib/Pages/localizations/localizations.module.mjs +5 -5
  79. package/esm2022/lib/Pages/logs/log/log.component.mjs +4 -4
  80. package/esm2022/lib/Pages/logs/logs-routing.module.mjs +5 -5
  81. package/esm2022/lib/Pages/logs/logs.component.mjs +4 -4
  82. package/esm2022/lib/Pages/logs/logs.module.mjs +5 -5
  83. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +4 -4
  84. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +4 -4
  85. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +4 -4
  86. package/esm2022/lib/Pages/lookups/lookups-routing.module.mjs +5 -5
  87. package/esm2022/lib/Pages/lookups/lookups.component.mjs +4 -4
  88. package/esm2022/lib/Pages/lookups/lookups.module.mjs +5 -5
  89. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +4 -4
  90. package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +4 -4
  91. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +4 -4
  92. package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +4 -4
  93. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +4 -4
  94. package/esm2022/lib/Pages/notifications/notifications.component.mjs +4 -4
  95. package/esm2022/lib/Pages/notifications/notifications.module.mjs +5 -5
  96. package/esm2022/lib/Pages/notifications/notifications.routing.mjs +5 -5
  97. package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +4 -4
  98. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +4 -4
  99. package/esm2022/lib/Pages/organization/add-organization/add-organization.component.mjs +4 -4
  100. package/esm2022/lib/Pages/organization/edit-organization/edit-organization.component.mjs +4 -4
  101. package/esm2022/lib/Pages/organization/list-organization/list-organization.component.mjs +4 -4
  102. package/esm2022/lib/Pages/organization/organization.component.mjs +4 -4
  103. package/esm2022/lib/Pages/organization/organization.module.mjs +5 -5
  104. package/esm2022/lib/Pages/organization/organization.routing.mjs +5 -5
  105. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +4 -4
  106. package/esm2022/lib/Pages/providers/providers-routing.module.mjs +5 -5
  107. package/esm2022/lib/Pages/providers/providers.component.mjs +4 -4
  108. package/esm2022/lib/Pages/providers/providers.module.mjs +5 -5
  109. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +4 -4
  110. package/esm2022/lib/Pages/publicHolidays/public-holidays-routing.module.mjs +5 -5
  111. package/esm2022/lib/Pages/publicHolidays/public-holidays.component.mjs +4 -4
  112. package/esm2022/lib/Pages/publicHolidays/public-holidays.module.mjs +5 -5
  113. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +4 -4
  114. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +4 -4
  115. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +4 -4
  116. package/esm2022/lib/Pages/roles/roles-routing.module.mjs +5 -5
  117. package/esm2022/lib/Pages/roles/roles.component.mjs +4 -4
  118. package/esm2022/lib/Pages/roles/roles.module.mjs +5 -5
  119. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +4 -4
  120. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +4 -4
  121. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +4 -4
  122. package/esm2022/lib/Pages/sectors/sectors-routing.module.mjs +5 -5
  123. package/esm2022/lib/Pages/sectors/sectors.component.mjs +4 -4
  124. package/esm2022/lib/Pages/sectors/sectors.module.mjs +5 -5
  125. package/esm2022/lib/Pages/shared/Pipes/survey-date.pipe.mjs +4 -4
  126. package/esm2022/lib/Pages/shared/Services/AccountService.service.mjs +4 -4
  127. package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +4 -4
  128. package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +4 -4
  129. package/esm2022/lib/Pages/shared/Services/ConfigurationsService.service.mjs +4 -4
  130. package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +4 -4
  131. package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +4 -4
  132. package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +4 -4
  133. package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +4 -4
  134. package/esm2022/lib/Pages/shared/Services/ErrorService.service.mjs +4 -4
  135. package/esm2022/lib/Pages/shared/Services/GlobalErrorHandler.service.mjs +4 -4
  136. package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +4 -4
  137. package/esm2022/lib/Pages/shared/Services/HttpErrorInterceptor.service.mjs +4 -4
  138. package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +4 -4
  139. package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +4 -4
  140. package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +4 -4
  141. package/esm2022/lib/Pages/shared/Services/LogsService.mjs +4 -4
  142. package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +4 -4
  143. package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +4 -4
  144. package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +4 -4
  145. package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +4 -4
  146. package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +4 -4
  147. package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +4 -4
  148. package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +4 -4
  149. package/esm2022/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +4 -4
  150. package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +4 -4
  151. package/esm2022/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +4 -4
  152. package/esm2022/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +4 -4
  153. package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +4 -4
  154. package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +4 -4
  155. package/esm2022/lib/Pages/shared/Services/data.service.mjs +4 -4
  156. package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +4 -4
  157. package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +4 -4
  158. package/esm2022/lib/Pages/shared/Services/organization.service.mjs +4 -4
  159. package/esm2022/lib/Pages/shared/Services/provider.service.mjs +4 -4
  160. package/esm2022/lib/Pages/shared/Services/survey-question.service.mjs +4 -4
  161. package/esm2022/lib/Pages/shared/Services/survey.service.mjs +4 -4
  162. package/esm2022/lib/Pages/shared/Services/userService.service.mjs +4 -4
  163. package/esm2022/lib/Pages/shared/components/AdDirective.mjs +4 -4
  164. package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +5 -5
  165. package/esm2022/lib/Pages/shared/components/no-results/no-results.component.mjs +4 -4
  166. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +4 -4
  167. package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +4 -4
  168. package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +4 -4
  169. package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +4 -4
  170. package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +4 -4
  171. package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +4 -4
  172. package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +4 -4
  173. package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +4 -4
  174. package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +4 -4
  175. package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +4 -4
  176. package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +4 -4
  177. package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +4 -4
  178. package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +4 -4
  179. package/esm2022/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +4 -4
  180. package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +4 -4
  181. package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +4 -4
  182. package/esm2022/lib/Pages/shared/components/survey/survey.component.mjs +4 -4
  183. package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +4 -4
  184. package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +4 -4
  185. package/esm2022/lib/Pages/shared/components/survey-layout/survey-layout.component.mjs +4 -4
  186. package/esm2022/lib/Pages/shared/config.service.mjs +4 -4
  187. package/esm2022/lib/Pages/shared/filter/filter.component.mjs +4 -4
  188. package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +5 -5
  189. package/esm2022/lib/Pages/shared/modules/survey-routing.module.mjs +5 -5
  190. package/esm2022/lib/Pages/shared/modules/survey.module.mjs +5 -5
  191. package/esm2022/lib/Pages/shared/shared.module.mjs +5 -5
  192. package/esm2022/lib/Pages/shared/stylesbundle.service.mjs +4 -4
  193. package/esm2022/lib/Pages/start/index/index.component.mjs +4 -4
  194. package/esm2022/lib/Pages/start/start-routing.module.mjs +5 -5
  195. package/esm2022/lib/Pages/start/start.module.mjs +5 -5
  196. package/esm2022/lib/Pages/users/users.component.mjs +4 -4
  197. package/esm2022/lib/Pages/users/users.module.mjs +5 -5
  198. package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +4 -4
  199. package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +4 -4
  200. package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +4 -4
  201. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +4 -4
  202. package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +4 -4
  203. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +4 -4
  204. package/esm2022/lib/Pages/workflows/workflows-routing.module.mjs +5 -5
  205. package/esm2022/lib/Pages/workflows/workflows.component.mjs +4 -4
  206. package/esm2022/lib/Pages/workflows/workflows.module.mjs +5 -5
  207. package/esm2022/lib/_metronic/core/services/layout-init.service.mjs +4 -4
  208. package/esm2022/lib/_metronic/core/services/layout.service.mjs +4 -4
  209. package/esm2022/lib/_metronic/core/services/page-info.service.mjs +4 -4
  210. package/esm2022/lib/masterlayout.component.mjs +4 -4
  211. package/esm2022/lib/masterlayout.module.mjs +5 -5
  212. package/esm2022/lib/masterlayout.routing.mjs +5 -5
  213. package/fesm2022/bnsights-bbsf-admin-portal.mjs +681 -681
  214. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
  215. package/package.json +2 -2
  216. package/bnsights-bbsf-admin-portal-1.1.59.tgz +0 -0
package/README.md CHANGED
@@ -4,6 +4,9 @@ BBSF Admin Portal package is part of BBSF 3 packages. It hosts all the angular m
4
4
 
5
5
  For more info please visit [BBSF documentation](https://bnsightsprojects.visualstudio.com/BBSF%203/_wiki/wikis/BBSF-3.wiki/65/BBSF-Documentation)
6
6
 
7
+ ## 1.1.60 / 12-3-2025
8
+ =====================
9
+ -Update Controls version package
7
10
 
8
11
  ## 1.1.59 / 12-3-2025
9
12
  =====================
@@ -4,11 +4,11 @@ import * as i1 from "@angular/router";
4
4
  export class ActiveDirectoriesComponent {
5
5
  ngOnInit() {
6
6
  }
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ActiveDirectoriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ActiveDirectoriesComponent, selector: "lib-active-directories", ngImport: i0, template: "<router-outlet></router-outlet>\r\n", dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActiveDirectoriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActiveDirectoriesComponent, selector: "lib-active-directories", ngImport: i0, template: "<router-outlet></router-outlet>\r\n", dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ActiveDirectoriesComponent, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActiveDirectoriesComponent, decorators: [{
11
11
  type: Component,
12
12
  args: [{ selector: 'lib-active-directories', template: "<router-outlet></router-outlet>\r\n" }]
13
13
  }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yaWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvQWN0aXZlRGlyZWN0b3JpZXMvYWN0aXZlLWRpcmVjdG9yaWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvQWN0aXZlRGlyZWN0b3JpZXMvYWN0aXZlLWRpcmVjdG9yaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQU1sRCxNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLFFBQVE7SUFDUixDQUFDOzhHQUxVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLDhEQ052QyxxQ0FDQTs7MkZES2EsMEJBQTBCO2tCQUp0QyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY3RpdmUtZGlyZWN0b3JpZXMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3RpdmUtZGlyZWN0b3JpZXMuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3RpdmVEaXJlY3Rvcmllc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yaWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvQWN0aXZlRGlyZWN0b3JpZXMvYWN0aXZlLWRpcmVjdG9yaWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvQWN0aXZlRGlyZWN0b3JpZXMvYWN0aXZlLWRpcmVjdG9yaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQU1sRCxNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLFFBQVE7SUFDUixDQUFDOytHQUxVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDhEQ052QyxxQ0FDQTs7NEZES2EsMEJBQTBCO2tCQUp0QyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY3RpdmUtZGlyZWN0b3JpZXMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3RpdmUtZGlyZWN0b3JpZXMuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3RpdmVEaXJlY3Rvcmllc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiJdfQ==
@@ -402,10 +402,10 @@ export class ActiveDirectoryComponent {
402
402
  ngOnDestroy() {
403
403
  this.requestHandlerService.destroyHandler();
404
404
  }
405
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ActiveDirectoryComponent, deps: [{ token: i1.AuthService }, { token: i2.PageInfoService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i3.ActiveDirectoryService }, { token: i4.NgbModal }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
406
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ActiveDirectoryComponent, selector: "lib-active-directory", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["activeDirectoryPagingViewElement"], descendants: true }, { propertyName: "deleteConfirmationModalControl", first: true, predicate: ["deleteConfirmationModalControl"], descendants: true }, { propertyName: "syncConfirmationModalControl", first: true, predicate: ["syncConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n<!-- Page Content -->\r\n<div *ngIf=\"showPageContent\" class=\"container-fluid\">\r\n <!-- begin::Header -->\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <form [formGroup]=\"activeDirectoryForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"activeDirectoryForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-sm btn-primary\"\r\n title=\"{{ utilityService.getResourceValue('Add') }}\"\r\n [routerLink]=\"['/Admin/ADConnection/Add']\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <!--begin::ActiveDirectory list-->\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Name') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Type') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('PermissionSet') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('AdConnectionRunningNow') }}</th>\r\n <th class=\"min-w-50px\">{{ utilityService.getResourceValue('Actions') }}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let activeDirectory of clientSidePagingResult\">\r\n <td class=\"text-dark\">\r\n {{ activeDirectory.name }}\r\n </td>\r\n <td>\r\n {{ activeDirectory.adTypeName }}\r\n </td>\r\n <td>\r\n {{ activeDirectory.permissionSetName }}\r\n </td>\r\n <td>\r\n <span class=\"badge badge-light-success\" *ngIf=\"activeDirectory.isRunningNow; else not_Running\">\r\n {{ utilityService.getResourceValue('Yes') }}\r\n </span>\r\n <ng-template #not_Running>\r\n <span class=\"badge badge-light-danger\">\r\n {{ utilityService.getResourceValue('No') }}\r\n </span>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu class=\"mat-menu-content\" #menu=\"matMenu\">\r\n <a\r\n class=\"drop-item px-3\"\r\n ngbDropdownItem\r\n (click)=\"showEditActiveDirectoryModal(activeDirectory.id, activeDirectory.idEncrypted, editActiveDirectoryModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showDeleteActiveDirectoryModal(activeDirectory.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showADSynchronizationModal(activeDirectory.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('ActiveDirectoryRunSyncronization') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showADLastRunLogsModal(activeDirectory.idEncrypted, lastRunLogsModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('ActiveDirectoryLastRunLogs') }}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Active directory list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging\r\n (Items)=\"setActiveDirectoryListResult($event)\"\r\n *ngIf=\"isFilterLoaded\"\r\n [options]=\"activeDirectoryPaging\"\r\n [group]=\"activeDirectoryForm\"\r\n #activeDirectoryPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Edit Modal -->\r\n<ng-template #editActiveDirectoryModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('Edit') }} {{ utilityService.getResourceValue('ActiveDirectory') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"editActiveDirectoryFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editName\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editPermissionSetOptions\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editLanguageOptions\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editWelcomeMsgTemplateOptions\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <h6>\r\n {{ utilityService.getResourceValue('ADType') }}\r\n </h6>\r\n <label>\r\n {{ editADTypeName }}\r\n </label>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showWindowsControl\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <h6>\r\n {{ utilityService.getResourceValue('Identifier') }}\r\n </h6>\r\n <div *ngFor=\"let editIdentifier of editIdentifiers\">\r\n <label>\r\n {{ editIdentifier }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h6>\r\n {{ utilityService.getResourceValue('Type') }}\r\n </h6>\r\n <label>\r\n {{ editWindowsTypeName }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editDomain\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editSamAccount\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editPassword\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControl\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editTenantID\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editClientID\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editClientSecret\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editInactive\" [group]=\"editActiveDirectoryForm\"> </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editDailyJob\" [group]=\"editActiveDirectoryForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <table class=\"table amsx-table-users\">\r\n <thead>\r\n <tr>\r\n <th>{{ utilityService.getResourceValue('Type') }}</th>\r\n <th>{{ utilityService.getResourceValue('Property') }}</th>\r\n <th>{{ utilityService.getResourceValue('ActiveDirectory_Property') }}</th>\r\n <th>{{ utilityService.getResourceValue('IncludeInUpdate') }}</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let option of editMappingsOptions; let i = index\">\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"editActiveDirectoryForm\"> </BBSF-CheckBox>\r\n <!--Hidden include in update value-->\r\n <BBSF-TextBox [options]=\"option[4]\" [group]=\"editActiveDirectoryForm\" [hidden]=\"true\"> </BBSF-TextBox>\r\n </td>\r\n\r\n <td class=\"text-center align-middle\">\r\n <a class=\"kt-nav__link\" (click)=\"deleteADMapping(option)\">\r\n <i class=\"kt-nav__link-icon fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addADMapping()\">\r\n {{ utilityService.getResourceValue('AddNewRecord') }}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n #CloseEditADModal\r\n id=\"CloseEditADModal\"\r\n type=\"button\"\r\n data-dismiss=\"modal\"\r\n (click)=\"modal.dismiss()\"\r\n class=\"btn btn-light me-3 btn-sm\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Delete Modal -->\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"deleteConfirmationOptions\"\r\n id=\"deleteConfirmationModalControl\"\r\n #deleteConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- Synchronization Modal -->\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"syncControlLoaded\"\r\n [options]=\"syncConfirmationOptions\"\r\n id=\"syncConfirmationModalControl\"\r\n #syncConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- View Last Run Logs -->\r\n<ng-template #lastRunLogsModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('ActiveDirectoryLastRunLogs') }} : {{ adConnectionName }}</h1>\r\n </div>\r\n <div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p>{{ utilityService.getResourceValue('Name') }} : {{ adConnectionName }}</p>\r\n <pre class=\"col-md-12\">{{ lastRunLogs }}</pre>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n #CloseDefaultProviderModal\r\n id=\"CloseDefaultProviderModal\"\r\n type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('Close') }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i9.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i9.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i9.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i9.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "component", type: i9.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "component", type: i12.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] }); }
405
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActiveDirectoryComponent, deps: [{ token: i1.AuthService }, { token: i2.PageInfoService }, { token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i3.ActiveDirectoryService }, { token: i4.NgbModal }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
406
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActiveDirectoryComponent, selector: "lib-active-directory", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["activeDirectoryPagingViewElement"], descendants: true }, { propertyName: "deleteConfirmationModalControl", first: true, predicate: ["deleteConfirmationModalControl"], descendants: true }, { propertyName: "syncConfirmationModalControl", first: true, predicate: ["syncConfirmationModalControl"], descendants: true }], ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n<!-- Page Content -->\r\n<div *ngIf=\"showPageContent\" class=\"container-fluid\">\r\n <!-- begin::Header -->\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <form [formGroup]=\"activeDirectoryForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"activeDirectoryForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-sm btn-primary\"\r\n title=\"{{ utilityService.getResourceValue('Add') }}\"\r\n [routerLink]=\"['/Admin/ADConnection/Add']\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <!--begin::ActiveDirectory list-->\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Name') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Type') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('PermissionSet') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('AdConnectionRunningNow') }}</th>\r\n <th class=\"min-w-50px\">{{ utilityService.getResourceValue('Actions') }}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let activeDirectory of clientSidePagingResult\">\r\n <td class=\"text-dark\">\r\n {{ activeDirectory.name }}\r\n </td>\r\n <td>\r\n {{ activeDirectory.adTypeName }}\r\n </td>\r\n <td>\r\n {{ activeDirectory.permissionSetName }}\r\n </td>\r\n <td>\r\n <span class=\"badge badge-light-success\" *ngIf=\"activeDirectory.isRunningNow; else not_Running\">\r\n {{ utilityService.getResourceValue('Yes') }}\r\n </span>\r\n <ng-template #not_Running>\r\n <span class=\"badge badge-light-danger\">\r\n {{ utilityService.getResourceValue('No') }}\r\n </span>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu class=\"mat-menu-content\" #menu=\"matMenu\">\r\n <a\r\n class=\"drop-item px-3\"\r\n ngbDropdownItem\r\n (click)=\"showEditActiveDirectoryModal(activeDirectory.id, activeDirectory.idEncrypted, editActiveDirectoryModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showDeleteActiveDirectoryModal(activeDirectory.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showADSynchronizationModal(activeDirectory.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('ActiveDirectoryRunSyncronization') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showADLastRunLogsModal(activeDirectory.idEncrypted, lastRunLogsModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('ActiveDirectoryLastRunLogs') }}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Active directory list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging\r\n (Items)=\"setActiveDirectoryListResult($event)\"\r\n *ngIf=\"isFilterLoaded\"\r\n [options]=\"activeDirectoryPaging\"\r\n [group]=\"activeDirectoryForm\"\r\n #activeDirectoryPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Edit Modal -->\r\n<ng-template #editActiveDirectoryModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('Edit') }} {{ utilityService.getResourceValue('ActiveDirectory') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"editActiveDirectoryFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editName\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editPermissionSetOptions\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editLanguageOptions\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editWelcomeMsgTemplateOptions\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <h6>\r\n {{ utilityService.getResourceValue('ADType') }}\r\n </h6>\r\n <label>\r\n {{ editADTypeName }}\r\n </label>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showWindowsControl\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <h6>\r\n {{ utilityService.getResourceValue('Identifier') }}\r\n </h6>\r\n <div *ngFor=\"let editIdentifier of editIdentifiers\">\r\n <label>\r\n {{ editIdentifier }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h6>\r\n {{ utilityService.getResourceValue('Type') }}\r\n </h6>\r\n <label>\r\n {{ editWindowsTypeName }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editDomain\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editSamAccount\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editPassword\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControl\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editTenantID\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editClientID\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editClientSecret\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editInactive\" [group]=\"editActiveDirectoryForm\"> </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editDailyJob\" [group]=\"editActiveDirectoryForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <table class=\"table amsx-table-users\">\r\n <thead>\r\n <tr>\r\n <th>{{ utilityService.getResourceValue('Type') }}</th>\r\n <th>{{ utilityService.getResourceValue('Property') }}</th>\r\n <th>{{ utilityService.getResourceValue('ActiveDirectory_Property') }}</th>\r\n <th>{{ utilityService.getResourceValue('IncludeInUpdate') }}</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let option of editMappingsOptions; let i = index\">\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"editActiveDirectoryForm\"> </BBSF-CheckBox>\r\n <!--Hidden include in update value-->\r\n <BBSF-TextBox [options]=\"option[4]\" [group]=\"editActiveDirectoryForm\" [hidden]=\"true\"> </BBSF-TextBox>\r\n </td>\r\n\r\n <td class=\"text-center align-middle\">\r\n <a class=\"kt-nav__link\" (click)=\"deleteADMapping(option)\">\r\n <i class=\"kt-nav__link-icon fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addADMapping()\">\r\n {{ utilityService.getResourceValue('AddNewRecord') }}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n #CloseEditADModal\r\n id=\"CloseEditADModal\"\r\n type=\"button\"\r\n data-dismiss=\"modal\"\r\n (click)=\"modal.dismiss()\"\r\n class=\"btn btn-light me-3 btn-sm\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Delete Modal -->\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"deleteConfirmationOptions\"\r\n id=\"deleteConfirmationModalControl\"\r\n #deleteConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- Synchronization Modal -->\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"syncControlLoaded\"\r\n [options]=\"syncConfirmationOptions\"\r\n id=\"syncConfirmationModalControl\"\r\n #syncConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- View Last Run Logs -->\r\n<ng-template #lastRunLogsModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('ActiveDirectoryLastRunLogs') }} : {{ adConnectionName }}</h1>\r\n </div>\r\n <div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p>{{ utilityService.getResourceValue('Name') }} : {{ adConnectionName }}</p>\r\n <pre class=\"col-md-12\">{{ lastRunLogs }}</pre>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n #CloseDefaultProviderModal\r\n id=\"CloseDefaultProviderModal\"\r\n type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('Close') }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "component", type: i9.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i9.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i9.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i9.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i9.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "component", type: i9.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i11.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "directive", type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "component", type: i12.EmptyDataComponent, selector: "lib-empty-data", inputs: ["Message", "ShowImage", "ImgURL"] }] }); }
407
407
  }
408
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ActiveDirectoryComponent, decorators: [{
408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActiveDirectoryComponent, decorators: [{
409
409
  type: Component,
410
410
  args: [{ selector: 'lib-active-directory', template: "<block-ui></block-ui>\r\n\r\n<!-- Page Content -->\r\n<div *ngIf=\"showPageContent\" class=\"container-fluid\">\r\n <!-- begin::Header -->\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\" *ngIf=\"isFilterLoaded\">\r\n <form [formGroup]=\"activeDirectoryForm\">\r\n <BBSF-TextBox [options]=\"searchTextBox\" [group]=\"activeDirectoryForm\"></BBSF-TextBox>\r\n </form>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-sm btn-primary\"\r\n title=\"{{ utilityService.getResourceValue('Add') }}\"\r\n [routerLink]=\"['/Admin/ADConnection/Add']\">\r\n <i class=\"fas fa-plus me-1\"></i>\r\n {{ utilityService.getResourceValue('Add') }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <!--begin::ActiveDirectory list-->\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Name') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('Type') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('PermissionSet') }}</th>\r\n <th class=\"min-w-150px\">{{ utilityService.getResourceValue('AdConnectionRunningNow') }}</th>\r\n <th class=\"min-w-50px\">{{ utilityService.getResourceValue('Actions') }}</th>\r\n </tr>\r\n </thead>\r\n <tbody id=\"listingContainer\" class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let activeDirectory of clientSidePagingResult\">\r\n <td class=\"text-dark\">\r\n {{ activeDirectory.name }}\r\n </td>\r\n <td>\r\n {{ activeDirectory.adTypeName }}\r\n </td>\r\n <td>\r\n {{ activeDirectory.permissionSetName }}\r\n </td>\r\n <td>\r\n <span class=\"badge badge-light-success\" *ngIf=\"activeDirectory.isRunningNow; else not_Running\">\r\n {{ utilityService.getResourceValue('Yes') }}\r\n </span>\r\n <ng-template #not_Running>\r\n <span class=\"badge badge-light-danger\">\r\n {{ utilityService.getResourceValue('No') }}\r\n </span>\r\n </ng-template>\r\n </td>\r\n <td>\r\n <div>\r\n <button mat-button [matMenuTriggerFor]=\"menu\" class=\"btn btn-sm btn-icon btn-light btn-active-light-primary\">\r\n <i class=\"fa fa-ellipsis-h\" aria-hidden=\"true\"></i>\r\n </button>\r\n <mat-menu class=\"mat-menu-content\" #menu=\"matMenu\">\r\n <a\r\n class=\"drop-item px-3\"\r\n ngbDropdownItem\r\n (click)=\"showEditActiveDirectoryModal(activeDirectory.id, activeDirectory.idEncrypted, editActiveDirectoryModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Edit') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showDeleteActiveDirectoryModal(activeDirectory.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('Delete') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showADSynchronizationModal(activeDirectory.idEncrypted)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('ActiveDirectoryRunSyncronization') }}</span>\r\n </a>\r\n <a ngbDropdownItem class=\"drop-item px-3\" (click)=\"showADLastRunLogsModal(activeDirectory.idEncrypted, lastRunLogsModal)\">\r\n <span class=\"drop-link px-3\">{{ utilityService.getResourceValue('ActiveDirectoryLastRunLogs') }}</span>\r\n </a>\r\n </mat-menu>\r\n </div>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"clientSidePagingResult.length == 0\">\r\n <td colspan=\"5\">\r\n <lib-empty-data></lib-empty-data>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--end::Active directory list-->\r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <BBSF-Paging\r\n (Items)=\"setActiveDirectoryListResult($event)\"\r\n *ngIf=\"isFilterLoaded\"\r\n [options]=\"activeDirectoryPaging\"\r\n [group]=\"activeDirectoryForm\"\r\n #activeDirectoryPagingViewElement>\r\n </BBSF-Paging>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- Edit Modal -->\r\n<ng-template #editActiveDirectoryModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('Edit') }} {{ utilityService.getResourceValue('ActiveDirectory') }}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"editActiveDirectoryFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editName\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editPermissionSetOptions\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editLanguageOptions\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList [options]=\"editWelcomeMsgTemplateOptions\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <h6>\r\n {{ utilityService.getResourceValue('ADType') }}\r\n </h6>\r\n <label>\r\n {{ editADTypeName }}\r\n </label>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showWindowsControl\">\r\n <div class=\"row\">\r\n <div class=\"col-md-9\">\r\n <h6>\r\n {{ utilityService.getResourceValue('Identifier') }}\r\n </h6>\r\n <div *ngFor=\"let editIdentifier of editIdentifiers\">\r\n <label>\r\n {{ editIdentifier }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <h6>\r\n {{ utilityService.getResourceValue('Type') }}\r\n </h6>\r\n <label>\r\n {{ editWindowsTypeName }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editDomain\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editSamAccount\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"editPassword\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControl\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editTenantID\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editClientID\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"editClientSecret\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editInactive\" [group]=\"editActiveDirectoryForm\"> </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"editDailyJob\" [group]=\"editActiveDirectoryForm\"> </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <table class=\"table amsx-table-users\">\r\n <thead>\r\n <tr>\r\n <th>{{ utilityService.getResourceValue('Type') }}</th>\r\n <th>{{ utilityService.getResourceValue('Property') }}</th>\r\n <th>{{ utilityService.getResourceValue('ActiveDirectory_Property') }}</th>\r\n <th>{{ utilityService.getResourceValue('IncludeInUpdate') }}</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let option of editMappingsOptions; let i = index\">\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"editActiveDirectoryForm\"> </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"editActiveDirectoryForm\"> </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"editActiveDirectoryForm\"> </BBSF-CheckBox>\r\n <!--Hidden include in update value-->\r\n <BBSF-TextBox [options]=\"option[4]\" [group]=\"editActiveDirectoryForm\" [hidden]=\"true\"> </BBSF-TextBox>\r\n </td>\r\n\r\n <td class=\"text-center align-middle\">\r\n <a class=\"kt-nav__link\" (click)=\"deleteADMapping(option)\">\r\n <i class=\"kt-nav__link-icon fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addADMapping()\">\r\n {{ utilityService.getResourceValue('AddNewRecord') }}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n #CloseEditADModal\r\n id=\"CloseEditADModal\"\r\n type=\"button\"\r\n data-dismiss=\"modal\"\r\n (click)=\"modal.dismiss()\"\r\n class=\"btn btn-light me-3 btn-sm\">\r\n {{ utilityService.getResourceValue('CancelLabel') }}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{ utilityService.getResourceValue('SaveLabel') }}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Delete Modal -->\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"deleteControlLoaded\"\r\n [options]=\"deleteConfirmationOptions\"\r\n id=\"deleteConfirmationModalControl\"\r\n #deleteConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- Synchronization Modal -->\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"syncControlLoaded\"\r\n [options]=\"syncConfirmationOptions\"\r\n id=\"syncConfirmationModalControl\"\r\n #syncConfirmationModalControl></BBSF-ConfirmationModal>\r\n\r\n<!-- View Last Run Logs -->\r\n<ng-template #lastRunLogsModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{ utilityService.getResourceValue('ActiveDirectoryLastRunLogs') }} : {{ adConnectionName }}</h1>\r\n </div>\r\n <div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p>{{ utilityService.getResourceValue('Name') }} : {{ adConnectionName }}</p>\r\n <pre class=\"col-md-12\">{{ lastRunLogs }}</pre>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button\r\n #CloseDefaultProviderModal\r\n id=\"CloseDefaultProviderModal\"\r\n type=\"button\"\r\n class=\"btn btn-light btn-sm me-3\"\r\n data-dismiss=\"modal\"\r\n (click)=\"modal.dismiss()\">\r\n {{ utilityService.getResourceValue('Close') }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n" }]
411
411
  }], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.PageInfoService }, { type: i1.UtilityService }, { type: i1.BBSFTranslateService }, { type: i3.ActiveDirectoryService }, { type: i4.NgbModal }, { type: i1.RequestHandlerService }], propDecorators: { pagingElement: [{
@@ -418,4 +418,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
418
418
  type: ViewChild,
419
419
  args: ['syncConfirmationModalControl', { static: false }]
420
420
  }] } });
421
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnkvYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnkvYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBOEIsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQW1CLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3UyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBSXJGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFPbkQsTUFBTSxPQUFPLHdCQUF3QjtJQWtFbkMsWUFBb0IsV0FBd0IsRUFBVSxlQUFnQyxFQUFTLGNBQThCLEVBQ25ILG9CQUEwQyxFQUFVLHNC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Q0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQVFELGVBQWU7SUFDZixzQkFBc0IsQ0FBQyxpQkFBeUIsRUFBRSxnQkFBZ0I7UUFDaEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2pGLElBQUksZ0JBQWdCLEdBQUcsTUFBYSxDQUFDO1lBRXJDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7WUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBRS9DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs4R0FwZlUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsaWNDakJyQyxzNGJBMlRBOzsyRkQxU2Esd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLHNCQUFzQjs4UUFnQmtDLGFBQWE7c0JBQTlFLFNBQVM7dUJBQUMsa0NBQWtDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXlDQSw4QkFBOEI7c0JBQTdGLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVVBLDRCQUE0QjtzQkFBekYsU0FBUzt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCwgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIEZpbHRlckl0ZW0sIEZpbHRlclR5cGUsIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIFBhZ2luZ0FjdGlvbk1vZGUsIFBhZ2luZ0NvbXBvbmVudCwgUGFnaW5nT3B0aW9ucywgU3R5bGVDb25maXJtYXRpb25Nb2RlLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0FjdGl2ZURpcmVjdG9yeVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQURNb2RlbHMvQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsJztcclxuaW1wb3J0IHsgQURNYXBwaW5nTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0FETW9kZWxzL0FETWFwcGluZ01vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBRFR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvQURUeXBlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY3RpdmUtZGlyZWN0b3J5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGl2ZURpcmVjdG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIGFwaVVybCA9IFwiL2FwaS9hZG1pbi9BRENvbm5lY3Rpb24vXCI7XHJcbiAgc2hvd1BhZ2VDb250ZW50ID0gZmFsc2U7XHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIGFjdGl2ZURpcmVjdG9yeUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICB0ZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgYWN0aXZlRGlyZWN0b3J5UGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgYWN0aXZlRGlyZWN0b3J5UGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnYWN0aXZlRGlyZWN0b3J5UGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBwZXJtaXNzaW9uU2V0TGlzdDogYW55W10gPSBbXTtcclxuICBsYW5ndWFnZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHdlbGNvbWVNc2dUZW1wTGlzdDogYW55W10gPSBbXTtcclxuICBtYXBwaW5nVHlwZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIG1hcHBpbmdQcm9wZXJ0aWVzTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy8vL0VkaXQgTW9kZWwgQ29udHJvbHNcclxuICAvL1NoYXJlZCBjb250cm9sc1xyXG4gIGVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucztcclxuICBlZGl0TmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdEFEVHlwZU5hbWU6IHN0cmluZzsgLy9XaW5kb3dzIG9yIEF6dXJlXHJcbiAgZWRpdEFEVHlwZUlEOiBudW1iZXI7XHJcbiAgZWRpdEluYWN0aXZlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdERhaWx5Sm9iOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZWRpdExhbmd1YWdlT3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZWRpdE1hcHBpbmdzT3B0aW9uczogYW55W10gPSBbXTtcclxuICBlZGl0TWFwcGluZ3NDb3VudDogbnVtYmVyO1xyXG4gIGFjdGl2ZURpcmVjdG9yeUlkOiBudW1iZXI7XHJcbiAgLy9XaW5kb3dzIE1vZGVcclxuICBlZGl0RG9tYWluOiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0U2FtQWNjb3VudDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdElkZW50aWZpZXJzOiBzdHJpbmdbXTtcclxuICBlZGl0V2luZG93c1R5cGVOYW1lOiBzdHJpbmc7XHJcbiAgZWRpdFBhc3N3b3JkOiBUZXh0Qm94T3B0aW9ucztcclxuICBzaG93V2luZG93c0NvbnRyb2w6IGJvb2xlYW47XHJcbiAgLy9BenVyZSBNb2RlXHJcbiAgZWRpdFRlbmFudElEOiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0Q2xpZW50SUQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRDbGllbnRTZWNyZXQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIHNob3dBenVyZUNvbnRyb2w6IGJvb2xlYW47XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZUFjdGl2ZURpcmVjdG9yeUlkOiBzdHJpbmc7XHJcbiAgZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9MYXN0IHJ1biBsb2dzXHJcbiAgYWRDb25uZWN0aW9uTmFtZTogc3RyaW5nO1xyXG4gIGxhc3RSdW5Mb2dzOiBzdHJpbmc7XHJcblxyXG4gIC8vU3luY2hyb25pemF0aW9uIG1vZGFsXHJcbiAgc3luY0FjdGl2ZURpcmVjdG9yeUlkOiBzdHJpbmc7XHJcbiAgc3luY0NvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBzeW5jQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ3N5bmNDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgc3luY0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgYWN0aXZlRGlyZWN0b3J5U2VydmljZTogQWN0aXZlRGlyZWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSkge1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5zaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yaWVzXCIpO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd1BhZ2VDb250ZW50ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9pbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5uYW1lID0gXCJzZWFyY2hUZXh0Qm94XCI7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LnBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCI7XHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5hY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCI7XHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5pc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgIHRoaXMudGV4dElucHV0RmlsdGVyLmZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3g7XHJcblxyXG5cclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5UGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5UGFnaW5nLmFjdGlvblBvc3RVUkwgPSB0aGlzLmFwaVVybCArICdHZXRBRENvbm5lY3Rpb25CeUZpbHRlcic7XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeVBhZ2luZy5vbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl07XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeVBhZ2luZy5maWx0ZXJzID0gW3RoaXMudGV4dElucHV0RmlsdGVyXTtcclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5UGFnaW5nLnZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcblxyXG4gICAgdGhpcy5pc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvL1BhZ2luZyBmdW5jdGlvbnNcclxuICBzZXRBY3RpdmVEaXJlY3RvcnlMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG5cclxuICAvL0VkaXQgQWN0aXZlRGlyZWN0b3J5XHJcbiAgc2hvd0VkaXRBY3RpdmVEaXJlY3RvcnlNb2RhbChhY3RpdmVEaXJlY3RvcnlJRDogbnVtYmVyLCBhY3RpdmVEaXJlY3RvcnlJREVuYzogc3RyaW5nLCBlZGl0QURNb2RhbCkge1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlJZCA9IGFjdGl2ZURpcmVjdG9yeUlEO1xyXG4gICAgdGhpcy5zaG93V2luZG93c0NvbnRyb2wgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0F6dXJlQ29udHJvbCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5U2VydmljZS5nZXRFZGl0QWN0aXZlRGlyZWN0b3J5KGFjdGl2ZURpcmVjdG9yeUlERW5jKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IGFjdGl2ZURpcmVjdG9yeSA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmRyb3Bkb3duc0RhdGE7XHJcblxyXG4gICAgICB0aGlzLmVkaXRBRFR5cGVJRCA9IGFjdGl2ZURpcmVjdG9yeS5hZFR5cGVJdGVtSUQ7XHJcbiAgICAgIC8vTG9hZCBpc3RzXHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSBsaXN0cy5wZXJtaXNzaW9uU2V0cztcclxuICAgICAgdGhpcy5sYW5ndWFnZXNMaXN0ID0gbGlzdHMubGFuZ3VhZ2VzO1xyXG4gICAgICB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdCA9IGxpc3RzLnRlbXBsYXRlcztcclxuICAgICAgdGhpcy5tYXBwaW5nVHlwZXNMaXN0ID0gbGlzdHMubWFwcGluZ1R5cGVzO1xyXG4gICAgICB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdCA9IGxpc3RzLm1hcHBpbmdQcm9wZXJ0aWVzO1xyXG5cclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5mb3JtR3JvdXAgPSB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtO1xyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0QURNb2RlbDtcclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0QURGdW5jdGlvbjtcclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMucGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5wYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGU7XHJcblxyXG5cclxuICAgICAgdGhpcy5lZGl0TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXROYW1lLm5hbWUgPSBcImVkaXROYW1lXCI7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWUubGFiZWxLZXkgPSBcIk5hbWVcIjtcclxuICAgICAgdGhpcy5lZGl0TmFtZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWUudmFsdWUgPSBhY3RpdmVEaXJlY3RvcnkuY29ubmVjdGlvbk5hbWU7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWUubWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgbGV0IHNlbGVjdGVkUGVybWlzc2lvblNldCA9IHRoaXMucGVybWlzc2lvblNldExpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBhY3RpdmVEaXJlY3RvcnkucGVybWlzc2lvblNldElEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucy5uYW1lID0gXCJlZGl0UGVybWlzc2lvblNldE9wdGlvbnNcIjtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMubGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvblNldExpc3Q7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkUGVybWlzc2lvblNldDtcclxuXHJcbiAgICAgIGxldCBzZWxlY3RlZExhbmd1YWdlID0gdGhpcy5sYW5ndWFnZXNMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gYWN0aXZlRGlyZWN0b3J5LmxhbmdLZXk7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG5cclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMubmFtZSA9IFwiZWRpdExhbmd1YWdlT3B0aW9uc1wiO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMubGFiZWxWYWx1ZSA9IFwiTGFuZ3VhZ2VcIjtcclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zLmxhYmVsS2V5ID0gXCJMYW5ndWFnZVwiO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMubGFuZ3VhZ2VzTGlzdDtcclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZExhbmd1YWdlO1xyXG5cclxuICAgICAgbGV0IHNlbGVjdGVkV2VsY29tZU1zZ1RlbXAgPSBhY3RpdmVEaXJlY3Rvcnkud2VsY29tZVRlbXBsYXRlSUQgIT0gbnVsbCA/IHRoaXMud2VsY29tZU1zZ1RlbXBMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gYWN0aXZlRGlyZWN0b3J5LndlbGNvbWVUZW1wbGF0ZUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXSA6IG51bGw7XHJcblxyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zLm5hbWUgPSBcImVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zXCI7XHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMubGFiZWxLZXkgPSBcIldlbGNvbWVNc2dUZW1wbGF0ZVwiO1xyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zLmRhdGFTb3VyY2UgPSB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdDtcclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucy5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMuaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFdlbGNvbWVNc2dUZW1wO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuZWRpdEluYWN0aXZlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRJbmFjdGl2ZS5uYW1lID0gXCJlZGl0SW5hY3RpdmVcIjtcclxuICAgICAgdGhpcy5lZGl0SW5hY3RpdmUudmFsdWUgPSBhY3RpdmVEaXJlY3RvcnkubWFya0FzSW5hY3RpdmU7XHJcbiAgICAgIHRoaXMuZWRpdEluYWN0aXZlLmxhYmVsS2V5ID0gXCJNYXJrQXNJbmFjdGl2ZVwiO1xyXG4gICAgICB0aGlzLmVkaXRJbmFjdGl2ZS52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdERhaWx5Sm9iID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXREYWlseUpvYi5uYW1lID0gXCJlZGl0RGFpbHlKb2JcIjtcclxuICAgICAgdGhpcy5lZGl0RGFpbHlKb2IubGFiZWxLZXkgPSBcIkFkZFRvRGFpbHlKb2JcIjtcclxuICAgICAgdGhpcy5lZGl0RGFpbHlKb2IudmFsdWUgPSBhY3RpdmVEaXJlY3RvcnkuYWRkVG9EYWlseUpvYjtcclxuICAgICAgdGhpcy5lZGl0RGFpbHlKb2Iudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG5cclxuICAgICAgLy9XaW5kb3dzIG1vZGVcclxuICAgICAgaWYgKHRoaXMuZWRpdEFEVHlwZUlEID09IE51bWJlcihBRFR5cGUuV2luZG93cykpIHtcclxuICAgICAgICB0aGlzLmVkaXRJZGVudGlmaWVycyA9IGFjdGl2ZURpcmVjdG9yeS5pZGVudGlmaWVycztcclxuICAgICAgICB0aGlzLmVkaXRXaW5kb3dzVHlwZU5hbWUgPSBhY3RpdmVEaXJlY3RvcnkuYWRUeXBlTmFtZTtcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluLm5hbWUgPSBcImVkaXREb21haW5cIjtcclxuICAgICAgICB0aGlzLmVkaXREb21haW4ubGFiZWxLZXkgPSBcIkRvbWFpblwiO1xyXG4gICAgICAgIHRoaXMuZWRpdERvbWFpbi50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdERvbWFpbi52YWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS5kb21haW47XHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluLm1heExlbmd0aCA9IDI1NjtcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0U2FtQWNjb3VudCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZWRpdFNhbUFjY291bnQubmFtZSA9IFwiZWRpdFNhbUFjY291bnRcIjtcclxuICAgICAgICB0aGlzLmVkaXRTYW1BY2NvdW50LmxhYmVsS2V5ID0gXCJTYW1BY2NvdW50XCI7XHJcbiAgICAgICAgdGhpcy5lZGl0U2FtQWNjb3VudC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5lZGl0U2FtQWNjb3VudC52YWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS5zYW1BY2NvdW50O1xyXG4gICAgICAgIHRoaXMuZWRpdFNhbUFjY291bnQubWF4TGVuZ3RoID0gMjA7XHJcblxyXG4gICAgICAgIHRoaXMuZWRpdFBhc3N3b3JkID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0UGFzc3dvcmQubmFtZSA9IFwiZWRpdFBhc3N3b3JkXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0UGFzc3dvcmQubGFiZWxLZXkgPSBcIlBhc3N3b3JkXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0UGFzc3dvcmQudHlwZSA9IElucHV0VHlwZS5QYXNzd29yZDtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC5yZW1vdmVEZWZhdWx0UGFzc3dvcmRWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC52YWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS5wYXNzd29yZDtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC5tYXhMZW5ndGggPSA0MDAwO1xyXG5cclxuICAgICAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5lZGl0QURUeXBlSUQgPT0gTnVtYmVyKEFEVHlwZS5BenVyZSkpIHtcclxuICAgICAgICB0aGlzLmVkaXRUZW5hbnRJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELm5hbWUgPSBcImVkaXRUZW5hbnRJRFwiO1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELmxhYmVsS2V5ID0gXCJUZW5hbnRJRFwiO1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLmVkaXRUZW5hbnRJRC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRUZW5hbnRJRC52YWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS50ZW5hbnRJRDtcclxuICAgICAgICB0aGlzLmVkaXRUZW5hbnRJRC5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQubmFtZSA9IFwiZWRpdENsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQubGFiZWxLZXkgPSBcIkNsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudElELmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudElELnZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LmNsaWVudElEO1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudElELm1heExlbmd0aCA9IDEwMDtcclxuXHJcblxyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldC5uYW1lID0gXCJlZGl0Q2xpZW50U2VjcmV0XCI7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50U2VjcmV0LmxhYmVsS2V5ID0gXCJDbGllbnRTZWNyZXRcIjtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRTZWNyZXQudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRTZWNyZXQudmFsdWUgPSBhY3RpdmVEaXJlY3RvcnkuY2xpZW50U2VjcmV0O1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldC5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd0F6dXJlQ29udHJvbCA9IHRydWU7XHJcblxyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgbGV0IGRhdGE6IGFueSA9IHRoaXMuZ2V0QURNYXBwaW5nT3B0aW9ucyhhY3RpdmVEaXJlY3RvcnkuYWRNYXBwaW5ncyk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRNYXBwaW5nc09wdGlvbnMgPSBkYXRhWzBdO1xyXG4gICAgICB0aGlzLmVkaXRNYXBwaW5nc0NvdW50ID0gZGF0YVsxXTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihlZGl0QURNb2RhbCk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0QURNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgRWRpdE1vZGVsID0gbmV3IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCgpO1xyXG5cclxuICAgIEVkaXRNb2RlbC5JRCA9IE51bWJlcih0aGlzLmFjdGl2ZURpcmVjdG9yeUlkKTtcclxuICAgIEVkaXRNb2RlbC5Db25uZWN0aW9uTmFtZSA9IHJlc3VsdE1vZGVsLmVkaXROYW1lO1xyXG4gICAgRWRpdE1vZGVsLlBlcm1pc3Npb25TZXRJRCA9IHJlc3VsdE1vZGVsLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucyAhPSBudWxsID8gcmVzdWx0TW9kZWwuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zIDogbnVsbDtcclxuICAgIEVkaXRNb2RlbC5MYW5nS2V5ID0gcmVzdWx0TW9kZWwuZWRpdExhbmd1YWdlT3B0aW9ucztcclxuICAgIEVkaXRNb2RlbC5XZWxjb21lVGVtcGxhdGVJRCA9IHJlc3VsdE1vZGVsLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zICE9IG51bGwgPyBOdW1iZXIocmVzdWx0TW9kZWwuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMpIDogbnVsbDtcclxuICAgIEVkaXRNb2RlbC5NYXJrQXNJbmFjdGl2ZSA9IHJlc3VsdE1vZGVsLmVkaXRJbmFjdGl2ZTtcclxuICAgIEVkaXRNb2RlbC5BZGRUb0RhaWx5Sm9iID0gcmVzdWx0TW9kZWwuZWRpdERhaWx5Sm9iO1xyXG5cclxuICAgIGlmICh0aGlzLmVkaXRBRFR5cGVJRCA9PSBOdW1iZXIoQURUeXBlLldpbmRvd3MpKSB7XHJcbiAgICAgIEVkaXRNb2RlbC5Eb21haW4gPSByZXN1bHRNb2RlbC5lZGl0RG9tYWluO1xyXG4gICAgICBFZGl0TW9kZWwuU2FtQWNjb3VudCA9IHJlc3VsdE1vZGVsLmVkaXRTYW1BY2NvdW50O1xyXG4gICAgICBFZGl0TW9kZWwuUGFzc3dvcmQgPSByZXN1bHRNb2RlbC5lZGl0UGFzc3dvcmQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmVkaXRBRFR5cGVJRCA9PSBOdW1iZXIoQURUeXBlLkF6dXJlKSkge1xyXG4gICAgICBFZGl0TW9kZWwuVGVuYW50SUQgPSByZXN1bHRNb2RlbC5lZGl0VGVuYW50SUQ7XHJcbiAgICAgIEVkaXRNb2RlbC5DbGllbnRJRCA9IHJlc3VsdE1vZGVsLmVkaXRDbGllbnRJRDtcclxuICAgICAgRWRpdE1vZGVsLkNsaWVudFNlY3JldCA9IHJlc3VsdE1vZGVsLmVkaXRDbGllbnRTZWNyZXQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5lZGl0TWFwcGluZ3NDb3VudDsgaisrKSB7XHJcbiAgICAgIGxldCBlZGl0TUFwcGluZ1R5cGUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ1R5cGVcIiArIGpdO1xyXG4gICAgICBpZiAoZWRpdE1BcHBpbmdUeXBlID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nUHJvcGVydHkgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBqXTtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nUHJvcGVydHlOYW1lID0gcmVzdWx0TW9kZWxbXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGpdO1xyXG4gICAgICBsZXQgZWRpdE1BcHBpbmdJbmNsdWRlSW5VcGRhdGUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ0luY2x1ZGVVcGRhdGVcIiArIGpdO1xyXG4gICAgICBsZXQgZWRpdE1BcHBpbmdIaWRkZW5JbmNsdWRlSW5VcGRhdGUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IGFkTUFwcGluZ09iajogQURNYXBwaW5nTW9kZWwgPSBuZXcgQURNYXBwaW5nTW9kZWwoKTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkFETWFwcGluZ1R5cGVJdGVtSUQgPSBlZGl0TUFwcGluZ1R5cGU7XHJcbiAgICAgIGFkTUFwcGluZ09iai5CQlNGUHJvcGVydHlOYW1lID0gZWRpdE1BcHBpbmdQcm9wZXJ0eTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkFEUHJvcGVydHlOYW1lID0gZWRpdE1BcHBpbmdQcm9wZXJ0eU5hbWU7XHJcbiAgICAgIGFkTUFwcGluZ09iai5JbmNsdWRlSW5VcGRhdGUgPSBlZGl0TUFwcGluZ0luY2x1ZGVJblVwZGF0ZSA9PSB1bmRlZmluZWQgPyBlZGl0TUFwcGluZ0hpZGRlbkluY2x1ZGVJblVwZGF0ZSA6IGVkaXRNQXBwaW5nSW5jbHVkZUluVXBkYXRlO1xyXG4gICAgICBFZGl0TW9kZWwuQURNYXBwaW5ncy5wdXNoKGFkTUFwcGluZ09iaik7XHJcbiAgICB9XHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH07XHJcblxyXG4gIGdldEVkaXRBREZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmVkaXRBY3RpdmVEaXJlY3RvcnkoRWRpdE1vZGVsKTtcclxuICB9O1xyXG5cclxuICAvL0FEIE1hcHBpbmcgZnVuY3Rpb25zXHJcbiAgZ2V0QURNYXBwaW5nT3B0aW9ucyhBRE1hcHBpbmdzOiBhbnlbXSkge1xyXG4gICAgbGV0IEFETWFwcGluZ09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgQURNYXBwaW5nQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IEFETWFwcGluZ3MubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgIGxldCBvYmplY3RNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICBsZXQgc2VsZWN0ZWRUeXBlID0gdGhpcy5tYXBwaW5nVHlwZXNMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gQURNYXBwaW5nc1tpXS5hZE1hcHBpbmdUeXBlSXRlbUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5uYW1lID0gXCJBRE1hcHBpbmdUeXBlXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRUeXBlO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLmRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdUeXBlc0xpc3Q7XHJcblxyXG4gICAgICBsZXQgQURNYXBwaW5nUHJvcGVydHkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIGxldCBzZWxlY3RlZFByb3BlcnR5ID0gdGhpcy5tYXBwaW5nUHJvcGVydGllc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBBRE1hcHBpbmdzW2ldLmJic2ZQcm9wZXJ0eU5hbWU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5uYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eVwiICsgaTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkUHJvcGVydHk7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5LnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5kYXRhU291cmNlID0gdGhpcy5tYXBwaW5nUHJvcGVydGllc0xpc3Q7XHJcblxyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1Byb3BlcnR5TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUubmFtZSA9IFwiQURNYXBwaW5nUHJvcGVydHlOYW1lXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnZhbHVlID0gQURNYXBwaW5nc1tpXS5hZFByb3BlcnR5TmFtZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUubWF4TGVuZ3RoID0gMTAyNDtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLm5hbWUgPSBcIkFETWFwcGluZ0luY2x1ZGVVcGRhdGVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUudmFsdWUgPSBBRE1hcHBpbmdzW2ldLmluY2x1ZGVJblVwZGF0ZTtcclxuICAgICAgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZS5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUubmFtZSA9IFwiQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZVwiICsgaTtcclxuICAgICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS52YWx1ZSA9IEFETWFwcGluZ3NbaV0uaW5jbHVkZUluVXBkYXRlO1xyXG5cclxuXHJcbiAgICAgIG9iamVjdE1hcHBpbmdPcHRpb25zLnB1c2goQURNYXBwaW5nVHlwZSwgQURNYXBwaW5nUHJvcGVydHksIEFETWFwcGluZ1Byb3BlcnR5TmFtZSwgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSwgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZSk7XHJcbiAgICAgIEFETWFwcGluZ09wdGlvbnMucHVzaChvYmplY3RNYXBwaW5nT3B0aW9ucyk7XHJcbiAgICAgIEFETWFwcGluZ0NvdW50ICs9IDE7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtBRE1hcHBpbmdPcHRpb25zLCBBRE1hcHBpbmdDb3VudF07XHJcbiAgfVxyXG4gIGRlbGV0ZUFETWFwcGluZyhkZWxldGVkQURNQXBwaW5nOiBhbnkpIHtcclxuICAgIGxldCBkZWxldGVkTWFwcGluZ0luZGV4OiBudW1iZXIgPSB0aGlzLmVkaXRNYXBwaW5nc09wdGlvbnMuaW5kZXhPZihkZWxldGVkQURNQXBwaW5nKTtcclxuICAgIGlmIChkZWxldGVkTWFwcGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmVkaXRNYXBwaW5nc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRNYXBwaW5nSW5kZXgsIDEpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRBRE1BcHBpbmcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woZGVsZXRlZEFETUFwcGluZ1tpXS5OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQURNYXBwaW5nKCkge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5lZGl0TWFwcGluZ3NDb3VudDtcclxuXHJcbiAgICBsZXQgb2JqZWN0TWFwcGluZ09wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgbGV0IEFETWFwcGluZ1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdUeXBlLm5hbWUgPSBcIkFETWFwcGluZ1R5cGVcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nVHlwZS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nVHlwZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nVHlwZS52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgIEFETWFwcGluZ1R5cGUuZGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1R5cGVzTGlzdDtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nUHJvcGVydHkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5uYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5LnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkuZGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1Byb3BlcnRpZXNMaXN0O1xyXG5cclxuXHJcbiAgICBsZXQgQURNYXBwaW5nUHJvcGVydHlOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUubmFtZSA9IFwiQURNYXBwaW5nUHJvcGVydHlOYW1lXCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5pc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG4gICAgbGV0IEFETWFwcGluZ0luY2x1ZGVVcGRhdGUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLm5hbWUgPSBcIkFETWFwcGluZ0luY2x1ZGVVcGRhdGVcIiArIGluZGV4O1xyXG5cclxuICAgIGxldCBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLm5hbWUgPSBcIkFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGVcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgb2JqZWN0TWFwcGluZ09wdGlvbnMucHVzaChBRE1hcHBpbmdUeXBlLCBBRE1hcHBpbmdQcm9wZXJ0eSwgQURNYXBwaW5nUHJvcGVydHlOYW1lLCBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLCBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlKTtcclxuXHJcbiAgICB0aGlzLmVkaXRNYXBwaW5nc09wdGlvbnMucHVzaChvYmplY3RNYXBwaW5nT3B0aW9ucyk7XHJcbiAgICB0aGlzLmVkaXRNYXBwaW5nc0NvdW50ICs9IDE7XHJcblxyXG4gIH1cclxuICAvL0RlbGV0ZSBBQ3RpdmVEaXJlY3RvcnlcclxuICBzaG93RGVsZXRlQWN0aXZlRGlyZWN0b3J5TW9kYWwoYWN0aXZlRGlyZWN0b3J5SUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWxldGVBY3RpdmVEaXJlY3RvcnlJZCA9IGFjdGl2ZURpcmVjdG9yeUlEO1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZUFjdGl2ZURpcmVjdG9yeUlkKTtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5kZWxldGVBY3RpdmVEaXJlY3Rvcnk7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcbiAgZGVsZXRlQWN0aXZlRGlyZWN0b3J5ID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRGlyZWN0b3J5U2VydmljZS5kZWxldGVBY3RpdmVEaXJlY3RvcnkoaWQpO1xyXG4gIH07XHJcblxyXG4gIC8vU3luYyBBY3RpdmUgRGlyZWN0b3J5XHJcbiAgc2hvd0FEU3luY2hyb25pemF0aW9uTW9kYWwoYWN0aXZlRGlyZWN0b3J5SUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zeW5jQWN0aXZlRGlyZWN0b3J5SWQgPSBhY3RpdmVEaXJlY3RvcnlJRDtcclxuXHJcbiAgICAvL2FycmF5IHNlbnQgdG8gc2VydmljZSBmdW5jdGlvblxyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBwYXJhbUFycmF5LnB1c2godGhpcy5zeW5jQWN0aXZlRGlyZWN0b3J5SWQpO1xyXG5cclxuICAgIHRoaXMuc3luY0NvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMucnVuU3luY3Jvbml6YXRpb247XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLnNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuc3luY0NvbmZpcm1hdGlvbk9wdGlvbnMucGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuUmVpbml0aWFsaXplO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25IZWFkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSdW5TeW5jaHJvbml6YXRpb25cIik7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLmNvbmZpcm1hdGlvbkJvZHkgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSdW5TeW5jaHJvbml6YXRpb25Db25maXJtYXRpb25cIik7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLnN0eWxlQ29uZmlybWF0aW9uTW9kZSA9IFN0eWxlQ29uZmlybWF0aW9uTW9kZS5XYXJuaW5nO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5zdWJtaXRCdXR0b25UZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiWWVzXCIpO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5kaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLm9uU3VjY2Vzc0hhbmRsZXIgPSB0aGlzLnJ1blN5bmNPblN1Y2Nlc3M7XHJcbiAgICB0aGlzLnN5bmNDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnN5bmNDb25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuICBydW5TeW5jcm9uaXphdGlvbiA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZURpcmVjdG9yeVNlcnZpY2UucnVuQURTeW5jaHJvbml6YXRpb24oaWQpO1xyXG4gIH07XHJcblxyXG4gIHJ1blN5bmNPblN1Y2Nlc3MgPSAocmVzdWx0KSA9PiB7XHJcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgfTtcclxuICAvL0xhc3QgcnVuIGxvZ3NcclxuICBzaG93QURMYXN0UnVuTG9nc01vZGFsKGFjdGl2ZURpcmVjdG9yeUlEOiBzdHJpbmcsIGxhc3RSdW5Mb2dzTW9kYWwpIHtcclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5U2VydmljZS5nZXRMYXN0UnVuTG9ncyhhY3RpdmVEaXJlY3RvcnlJRCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IGxhc3RSdW5Mb2dzTW9kZWwgPSByZXN1bHQgYXMgYW55O1xyXG5cclxuICAgICAgdGhpcy5hZENvbm5lY3Rpb25OYW1lID0gbGFzdFJ1bkxvZ3NNb2RlbC5tb2RlbC5hZENvbm5lY3Rpb25OYW1lO1xyXG4gICAgICB0aGlzLmxhc3RSdW5Mb2dzID0gbGFzdFJ1bkxvZ3NNb2RlbC5tb2RlbC5sb2dzO1xyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihsYXN0UnVuTG9nc01vZGFsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcblxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiAqbmdJZj1cInNob3dQYWdlQ29udGVudFwiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPCEtLSBiZWdpbjo6SGVhZGVyIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJpc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiYWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cImFjdGl2ZURpcmVjdG9yeUZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgdGl0bGU9XCJ7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZGQnKSB9fVwiXHJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9BZG1pbi9BRENvbm5lY3Rpb24vQWRkJ11cIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FkZCcpIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPCEtLWJlZ2luOjpBY3RpdmVEaXJlY3RvcnkgbGlzdC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOYW1lJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHlwZScpIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1Blcm1pc3Npb25TZXQnKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZENvbm5lY3Rpb25SdW5uaW5nTm93JykgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3Rpb25zJykgfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGFjdGl2ZURpcmVjdG9yeSBvZiBjbGllbnRTaWRlUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBhY3RpdmVEaXJlY3RvcnkubmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAge3sgYWN0aXZlRGlyZWN0b3J5LmFkVHlwZU5hbWUgfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIHt7IGFjdGl2ZURpcmVjdG9yeS5wZXJtaXNzaW9uU2V0TmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCIgKm5nSWY9XCJhY3RpdmVEaXJlY3RvcnkuaXNSdW5uaW5nTm93OyBlbHNlIG5vdF9SdW5uaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1llcycpIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdF9SdW5uaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ05vJykgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1tZW51IGNsYXNzPVwibWF0LW1lbnUtY29udGVudFwiICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0QWN0aXZlRGlyZWN0b3J5TW9kYWwoYWN0aXZlRGlyZWN0b3J5LmlkLCBhY3RpdmVEaXJlY3RvcnkuaWRFbmNyeXB0ZWQsIGVkaXRBY3RpdmVEaXJlY3RvcnlNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFZGl0JykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgKGNsaWNrKT1cInNob3dEZWxldGVBY3RpdmVEaXJlY3RvcnlNb2RhbChhY3RpdmVEaXJlY3RvcnkuaWRFbmNyeXB0ZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRGVsZXRlJykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgKGNsaWNrKT1cInNob3dBRFN5bmNocm9uaXphdGlvbk1vZGFsKGFjdGl2ZURpcmVjdG9yeS5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3RpdmVEaXJlY3RvcnlSdW5TeW5jcm9uaXphdGlvbicpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIChjbGljayk9XCJzaG93QURMYXN0UnVuTG9nc01vZGFsKGFjdGl2ZURpcmVjdG9yeS5pZEVuY3J5cHRlZCwgbGFzdFJ1bkxvZ3NNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3RpdmVEaXJlY3RvcnlMYXN0UnVuTG9ncycpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImNsaWVudFNpZGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tZW5kOjpBY3RpdmUgZGlyZWN0b3J5IGxpc3QtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgIDxCQlNGLVBhZ2luZ1xyXG4gICAgICAgIChJdGVtcyk9XCJzZXRBY3RpdmVEaXJlY3RvcnlMaXN0UmVzdWx0KCRldmVudClcIlxyXG4gICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgIFtvcHRpb25zXT1cImFjdGl2ZURpcmVjdG9yeVBhZ2luZ1wiXHJcbiAgICAgICAgW2dyb3VwXT1cImFjdGl2ZURpcmVjdG9yeUZvcm1cIlxyXG4gICAgICAgICNhY3RpdmVEaXJlY3RvcnlQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gRWRpdCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNlZGl0QWN0aXZlRGlyZWN0b3J5TW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VkaXQnKSB9fSB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3RpdmVEaXJlY3RvcnknKSB9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE5hbWVcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj4gPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdExhbmd1YWdlT3B0aW9uc1wiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPGg2PlxyXG4gICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBRFR5cGUnKSB9fVxyXG4gICAgICAgICAgPC9oNj5cclxuICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAge3sgZWRpdEFEVHlwZU5hbWUgfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd1dpbmRvd3NDb250cm9sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgIDxoNj5cclxuICAgICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdJZGVudGlmaWVyJykgfX1cclxuICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZWRpdElkZW50aWZpZXIgb2YgZWRpdElkZW50aWZpZXJzXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAge3sgZWRpdElkZW50aWZpZXIgfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgIDxoNj5cclxuICAgICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdUeXBlJykgfX1cclxuICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIHt7IGVkaXRXaW5kb3dzVHlwZU5hbWUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0RG9tYWluXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdFNhbUFjY291bnRcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj4gPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRQYXNzd29yZFwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cInNob3dBenVyZUNvbnRyb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdFRlbmFudElEXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRDbGllbnRJRFwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0Q2xpZW50U2VjcmV0XCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZWRpdEluYWN0aXZlXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImVkaXREYWlseUpvYlwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYW1zeC10YWJsZS11c2Vyc1wiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRoPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1R5cGUnKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1Byb3BlcnR5JykgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3RpdmVEaXJlY3RvcnlfUHJvcGVydHknKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0luY2x1ZGVJblVwZGF0ZScpIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRNYXBwaW5nc09wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvblszXVwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICA8IS0tSGlkZGVuIGluY2x1ZGUgaW4gdXBkYXRlIHZhbHVlLS0+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvbls0XVwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhbGlnbi1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwia3QtbmF2X19saW5rXCIgKGNsaWNrKT1cImRlbGV0ZUFETWFwcGluZyhvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwia3QtbmF2X19saW5rLWljb24gZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZEFETWFwcGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FkZE5ld1JlY29yZCcpIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAjQ2xvc2VFZGl0QURNb2RhbFxyXG4gICAgICAgICAgaWQ9XCJDbG9zZUVkaXRBRE1vZGFsXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIj5cclxuICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NhbmNlbExhYmVsJykgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTYXZlTGFiZWwnKSB9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEZWxldGUgIE1vZGFsIC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbFxyXG4gICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiXHJcbiAgW29wdGlvbnNdPVwiZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uc1wiXHJcbiAgaWQ9XCJkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIlxyXG4gICNkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuPCEtLSBTeW5jaHJvbml6YXRpb24gIE1vZGFsIC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbFxyXG4gICpuZ0lmPVwic3luY0NvbnRyb2xMb2FkZWRcIlxyXG4gIFtvcHRpb25zXT1cInN5bmNDb25maXJtYXRpb25PcHRpb25zXCJcclxuICBpZD1cInN5bmNDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIlxyXG4gICNzeW5jQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuXHJcbjwhLS0gVmlldyBMYXN0IFJ1biBMb2dzIC0tPlxyXG48bmctdGVtcGxhdGUgI2xhc3RSdW5Mb2dzTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FjdGl2ZURpcmVjdG9yeUxhc3RSdW5Mb2dzJykgfX0gOiB7eyBhZENvbm5lY3Rpb25OYW1lIH19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ05hbWUnKSB9fSA6IHt7IGFkQ29ubmVjdGlvbk5hbWUgfX08L3A+XHJcbiAgICAgICAgICA8cHJlIGNsYXNzPVwiY29sLW1kLTEyXCI+e3sgbGFzdFJ1bkxvZ3MgfX08L3ByZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgI0Nsb3NlRGVmYXVsdFByb3ZpZGVyTW9kYWxcclxuICAgICAgICAgIGlkPVwiQ2xvc2VEZWZhdWx0UHJvdmlkZXJNb2RhbFwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gbWUtM1wiXHJcbiAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdDbG9zZScpIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
421
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnkvYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnkvYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBOEIsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQW1CLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3UyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBSXJGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFPbkQsTUFBTSxPQUFPLHdCQUF3QjtJQWtFbkMsWUFBb0IsV0FBd0IsRUFBVSxlQUFnQyxFQUFTLGNBQThCLEVBQ25ILG9CQUEwQyxFQUFVLHNC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Q0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQVFELGVBQWU7SUFDZixzQkFBc0IsQ0FBQyxpQkFBeUIsRUFBRSxnQkFBZ0I7UUFDaEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2pGLElBQUksZ0JBQWdCLEdBQUcsTUFBYSxDQUFDO1lBRXJDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7WUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBRS9DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtJQUNaLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzsrR0FwZlUsd0JBQXdCO21HQUF4Qix3QkFBd0IsaWNDakJyQyxzNGJBMlRBOzs0RkQxU2Esd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLHNCQUFzQjs4UUFnQmtDLGFBQWE7c0JBQTlFLFNBQVM7dUJBQUMsa0NBQWtDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXlDQSw4QkFBOEI7c0JBQTdGLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQVVBLDRCQUE0QjtzQkFBekYsU0FBUzt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudCwgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIEZpbHRlckl0ZW0sIEZpbHRlclR5cGUsIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIFBhZ2luZ0FjdGlvbk1vZGUsIFBhZ2luZ0NvbXBvbmVudCwgUGFnaW5nT3B0aW9ucywgU3R5bGVDb25maXJtYXRpb25Nb2RlLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBBY3RpdmVEaXJlY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0FjdGl2ZURpcmVjdG9yeVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQURNb2RlbHMvQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsJztcclxuaW1wb3J0IHsgQURNYXBwaW5nTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL0FETW9kZWxzL0FETWFwcGluZ01vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBRFR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvQURUeXBlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY3RpdmUtZGlyZWN0b3J5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZlLWRpcmVjdG9yeS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGl2ZURpcmVjdG9yeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIGFwaVVybCA9IFwiL2FwaS9hZG1pbi9BRENvbm5lY3Rpb24vXCI7XHJcbiAgc2hvd1BhZ2VDb250ZW50ID0gZmFsc2U7XHJcblxyXG4gIC8vRmlsdGVyIGFuZCBwYWdpbmcgY29tcG9uZW50c1xyXG4gIGFjdGl2ZURpcmVjdG9yeUZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICB0ZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgYWN0aXZlRGlyZWN0b3J5UGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgYWN0aXZlRGlyZWN0b3J5UGFnaW5nOiBQYWdpbmdPcHRpb25zO1xyXG4gIGlzRmlsdGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnYWN0aXZlRGlyZWN0b3J5UGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBwZXJtaXNzaW9uU2V0TGlzdDogYW55W10gPSBbXTtcclxuICBsYW5ndWFnZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHdlbGNvbWVNc2dUZW1wTGlzdDogYW55W10gPSBbXTtcclxuICBtYXBwaW5nVHlwZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIG1hcHBpbmdQcm9wZXJ0aWVzTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy8vL0VkaXQgTW9kZWwgQ29udHJvbHNcclxuICAvL1NoYXJlZCBjb250cm9sc1xyXG4gIGVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucztcclxuICBlZGl0TmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdEFEVHlwZU5hbWU6IHN0cmluZzsgLy9XaW5kb3dzIG9yIEF6dXJlXHJcbiAgZWRpdEFEVHlwZUlEOiBudW1iZXI7XHJcbiAgZWRpdEluYWN0aXZlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdERhaWx5Sm9iOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZWRpdExhbmd1YWdlT3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZWRpdE1hcHBpbmdzT3B0aW9uczogYW55W10gPSBbXTtcclxuICBlZGl0TWFwcGluZ3NDb3VudDogbnVtYmVyO1xyXG4gIGFjdGl2ZURpcmVjdG9yeUlkOiBudW1iZXI7XHJcbiAgLy9XaW5kb3dzIE1vZGVcclxuICBlZGl0RG9tYWluOiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0U2FtQWNjb3VudDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZWRpdElkZW50aWZpZXJzOiBzdHJpbmdbXTtcclxuICBlZGl0V2luZG93c1R5cGVOYW1lOiBzdHJpbmc7XHJcbiAgZWRpdFBhc3N3b3JkOiBUZXh0Qm94T3B0aW9ucztcclxuICBzaG93V2luZG93c0NvbnRyb2w6IGJvb2xlYW47XHJcbiAgLy9BenVyZSBNb2RlXHJcbiAgZWRpdFRlbmFudElEOiBUZXh0Qm94T3B0aW9ucztcclxuICBlZGl0Q2xpZW50SUQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGVkaXRDbGllbnRTZWNyZXQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIHNob3dBenVyZUNvbnRyb2w6IGJvb2xlYW47XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZUFjdGl2ZURpcmVjdG9yeUlkOiBzdHJpbmc7XHJcbiAgZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9MYXN0IHJ1biBsb2dzXHJcbiAgYWRDb25uZWN0aW9uTmFtZTogc3RyaW5nO1xyXG4gIGxhc3RSdW5Mb2dzOiBzdHJpbmc7XHJcblxyXG4gIC8vU3luY2hyb25pemF0aW9uIG1vZGFsXHJcbiAgc3luY0FjdGl2ZURpcmVjdG9yeUlkOiBzdHJpbmc7XHJcbiAgc3luY0NvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBzeW5jQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ3N5bmNDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgc3luY0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgYWN0aXZlRGlyZWN0b3J5U2VydmljZTogQWN0aXZlRGlyZWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCwgcHJpdmF0ZSByZXF1ZXN0SGFuZGxlclNlcnZpY2U6IFJlcXVlc3RIYW5kbGVyU2VydmljZSkge1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5zaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yaWVzXCIpO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd1BhZ2VDb250ZW50ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9pbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5uYW1lID0gXCJzZWFyY2hUZXh0Qm94XCI7XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LnBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lXCIpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LmhpZGVMYWJlbCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy50ZXh0SW5wdXRGaWx0ZXIuZm9ybUNvbnRyb2xOYW1lID0gXCJzZWFyY2hUZXh0Qm94XCI7XHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5hY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJzZWFyY2hUZXh0XCI7XHJcbiAgICB0aGlzLnRleHRJbnB1dEZpbHRlci5pc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgIHRoaXMudGV4dElucHV0RmlsdGVyLmZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3g7XHJcblxyXG5cclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5UGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5UGFnaW5nLmFjdGlvblBvc3RVUkwgPSB0aGlzLmFwaVVybCArICdHZXRBRENvbm5lY3Rpb25CeUZpbHRlcic7XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeVBhZ2luZy5vbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcInNlYXJjaFRleHRCb3hcIl07XHJcbiAgICB0aGlzLmFjdGl2ZURpcmVjdG9yeVBhZ2luZy5maWx0ZXJzID0gW3RoaXMudGV4dElucHV0RmlsdGVyXTtcclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5UGFnaW5nLnZhbGlkYXRpb25Ub2tlbiA9IHRoaXMuYXV0aFNlcnZpY2UuYXV0aG9yaXphdGlvbkhlYWRlclZhbHVlKCk7XHJcblxyXG4gICAgdGhpcy5pc0ZpbHRlckxvYWRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvL1BhZ2luZyBmdW5jdGlvbnNcclxuICBzZXRBY3RpdmVEaXJlY3RvcnlMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG5cclxuICAvL0VkaXQgQWN0aXZlRGlyZWN0b3J5XHJcbiAgc2hvd0VkaXRBY3RpdmVEaXJlY3RvcnlNb2RhbChhY3RpdmVEaXJlY3RvcnlJRDogbnVtYmVyLCBhY3RpdmVEaXJlY3RvcnlJREVuYzogc3RyaW5nLCBlZGl0QURNb2RhbCkge1xyXG4gICAgdGhpcy5hY3RpdmVEaXJlY3RvcnlJZCA9IGFjdGl2ZURpcmVjdG9yeUlEO1xyXG4gICAgdGhpcy5zaG93V2luZG93c0NvbnRyb2wgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0F6dXJlQ29udHJvbCA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5U2VydmljZS5nZXRFZGl0QWN0aXZlRGlyZWN0b3J5KGFjdGl2ZURpcmVjdG9yeUlERW5jKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IGFjdGl2ZURpcmVjdG9yeSA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmRyb3Bkb3duc0RhdGE7XHJcblxyXG4gICAgICB0aGlzLmVkaXRBRFR5cGVJRCA9IGFjdGl2ZURpcmVjdG9yeS5hZFR5cGVJdGVtSUQ7XHJcbiAgICAgIC8vTG9hZCBpc3RzXHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSBsaXN0cy5wZXJtaXNzaW9uU2V0cztcclxuICAgICAgdGhpcy5sYW5ndWFnZXNMaXN0ID0gbGlzdHMubGFuZ3VhZ2VzO1xyXG4gICAgICB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdCA9IGxpc3RzLnRlbXBsYXRlcztcclxuICAgICAgdGhpcy5tYXBwaW5nVHlwZXNMaXN0ID0gbGlzdHMubWFwcGluZ1R5cGVzO1xyXG4gICAgICB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdCA9IGxpc3RzLm1hcHBpbmdQcm9wZXJ0aWVzO1xyXG5cclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5mb3JtR3JvdXAgPSB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtO1xyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0QURNb2RlbDtcclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0QURGdW5jdGlvbjtcclxuICAgICAgdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMucGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG4gICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5wYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGU7XHJcblxyXG5cclxuICAgICAgdGhpcy5lZGl0TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXROYW1lLm5hbWUgPSBcImVkaXROYW1lXCI7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWUubGFiZWxLZXkgPSBcIk5hbWVcIjtcclxuICAgICAgdGhpcy5lZGl0TmFtZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWUuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWUudmFsdWUgPSBhY3RpdmVEaXJlY3RvcnkuY29ubmVjdGlvbk5hbWU7XHJcbiAgICAgIHRoaXMuZWRpdE5hbWUubWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgbGV0IHNlbGVjdGVkUGVybWlzc2lvblNldCA9IHRoaXMucGVybWlzc2lvblNldExpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBhY3RpdmVEaXJlY3RvcnkucGVybWlzc2lvblNldElEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuXHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucy5uYW1lID0gXCJlZGl0UGVybWlzc2lvblNldE9wdGlvbnNcIjtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMubGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIjtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvblNldExpc3Q7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0UGVybWlzc2lvblNldE9wdGlvbnMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkUGVybWlzc2lvblNldDtcclxuXHJcbiAgICAgIGxldCBzZWxlY3RlZExhbmd1YWdlID0gdGhpcy5sYW5ndWFnZXNMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gYWN0aXZlRGlyZWN0b3J5LmxhbmdLZXk7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG5cclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMubmFtZSA9IFwiZWRpdExhbmd1YWdlT3B0aW9uc1wiO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMubGFiZWxWYWx1ZSA9IFwiTGFuZ3VhZ2VcIjtcclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zLmxhYmVsS2V5ID0gXCJMYW5ndWFnZVwiO1xyXG4gICAgICB0aGlzLmVkaXRMYW5ndWFnZU9wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMubGFuZ3VhZ2VzTGlzdDtcclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuZWRpdExhbmd1YWdlT3B0aW9ucy5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0TGFuZ3VhZ2VPcHRpb25zLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZExhbmd1YWdlO1xyXG5cclxuICAgICAgbGV0IHNlbGVjdGVkV2VsY29tZU1zZ1RlbXAgPSBhY3RpdmVEaXJlY3Rvcnkud2VsY29tZVRlbXBsYXRlSUQgIT0gbnVsbCA/IHRoaXMud2VsY29tZU1zZ1RlbXBMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gYWN0aXZlRGlyZWN0b3J5LndlbGNvbWVUZW1wbGF0ZUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXSA6IG51bGw7XHJcblxyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zLm5hbWUgPSBcImVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zXCI7XHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMubGFiZWxLZXkgPSBcIldlbGNvbWVNc2dUZW1wbGF0ZVwiO1xyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zLmRhdGFTb3VyY2UgPSB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdDtcclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucy5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zLmFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lZGl0V2VsY29tZU1zZ1RlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMuaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFdlbGNvbWVNc2dUZW1wO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuZWRpdEluYWN0aXZlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXRJbmFjdGl2ZS5uYW1lID0gXCJlZGl0SW5hY3RpdmVcIjtcclxuICAgICAgdGhpcy5lZGl0SW5hY3RpdmUudmFsdWUgPSBhY3RpdmVEaXJlY3RvcnkubWFya0FzSW5hY3RpdmU7XHJcbiAgICAgIHRoaXMuZWRpdEluYWN0aXZlLmxhYmVsS2V5ID0gXCJNYXJrQXNJbmFjdGl2ZVwiO1xyXG4gICAgICB0aGlzLmVkaXRJbmFjdGl2ZS52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuZWRpdERhaWx5Sm9iID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmVkaXREYWlseUpvYi5uYW1lID0gXCJlZGl0RGFpbHlKb2JcIjtcclxuICAgICAgdGhpcy5lZGl0RGFpbHlKb2IubGFiZWxLZXkgPSBcIkFkZFRvRGFpbHlKb2JcIjtcclxuICAgICAgdGhpcy5lZGl0RGFpbHlKb2IudmFsdWUgPSBhY3RpdmVEaXJlY3RvcnkuYWRkVG9EYWlseUpvYjtcclxuICAgICAgdGhpcy5lZGl0RGFpbHlKb2Iudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG5cclxuICAgICAgLy9XaW5kb3dzIG1vZGVcclxuICAgICAgaWYgKHRoaXMuZWRpdEFEVHlwZUlEID09IE51bWJlcihBRFR5cGUuV2luZG93cykpIHtcclxuICAgICAgICB0aGlzLmVkaXRJZGVudGlmaWVycyA9IGFjdGl2ZURpcmVjdG9yeS5pZGVudGlmaWVycztcclxuICAgICAgICB0aGlzLmVkaXRXaW5kb3dzVHlwZU5hbWUgPSBhY3RpdmVEaXJlY3RvcnkuYWRUeXBlTmFtZTtcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluLm5hbWUgPSBcImVkaXREb21haW5cIjtcclxuICAgICAgICB0aGlzLmVkaXREb21haW4ubGFiZWxLZXkgPSBcIkRvbWFpblwiO1xyXG4gICAgICAgIHRoaXMuZWRpdERvbWFpbi50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdERvbWFpbi52YWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS5kb21haW47XHJcbiAgICAgICAgdGhpcy5lZGl0RG9tYWluLm1heExlbmd0aCA9IDI1NjtcclxuXHJcbiAgICAgICAgdGhpcy5lZGl0U2FtQWNjb3VudCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZWRpdFNhbUFjY291bnQubmFtZSA9IFwiZWRpdFNhbUFjY291bnRcIjtcclxuICAgICAgICB0aGlzLmVkaXRTYW1BY2NvdW50LmxhYmVsS2V5ID0gXCJTYW1BY2NvdW50XCI7XHJcbiAgICAgICAgdGhpcy5lZGl0U2FtQWNjb3VudC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5lZGl0U2FtQWNjb3VudC52YWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS5zYW1BY2NvdW50O1xyXG4gICAgICAgIHRoaXMuZWRpdFNhbUFjY291bnQubWF4TGVuZ3RoID0gMjA7XHJcblxyXG4gICAgICAgIHRoaXMuZWRpdFBhc3N3b3JkID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0UGFzc3dvcmQubmFtZSA9IFwiZWRpdFBhc3N3b3JkXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0UGFzc3dvcmQubGFiZWxLZXkgPSBcIlBhc3N3b3JkXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0UGFzc3dvcmQudHlwZSA9IElucHV0VHlwZS5QYXNzd29yZDtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC5yZW1vdmVEZWZhdWx0UGFzc3dvcmRWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC52YWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS5wYXNzd29yZDtcclxuICAgICAgICB0aGlzLmVkaXRQYXNzd29yZC5tYXhMZW5ndGggPSA0MDAwO1xyXG5cclxuICAgICAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5lZGl0QURUeXBlSUQgPT0gTnVtYmVyKEFEVHlwZS5BenVyZSkpIHtcclxuICAgICAgICB0aGlzLmVkaXRUZW5hbnRJRCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELm5hbWUgPSBcImVkaXRUZW5hbnRJRFwiO1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELmxhYmVsS2V5ID0gXCJUZW5hbnRJRFwiO1xyXG4gICAgICAgIHRoaXMuZWRpdFRlbmFudElELnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLmVkaXRUZW5hbnRJRC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRUZW5hbnRJRC52YWx1ZSA9IGFjdGl2ZURpcmVjdG9yeS50ZW5hbnRJRDtcclxuICAgICAgICB0aGlzLmVkaXRUZW5hbnRJRC5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQubmFtZSA9IFwiZWRpdENsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQubGFiZWxLZXkgPSBcIkNsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50SUQudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudElELmlzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudElELnZhbHVlID0gYWN0aXZlRGlyZWN0b3J5LmNsaWVudElEO1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudElELm1heExlbmd0aCA9IDEwMDtcclxuXHJcblxyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldC5uYW1lID0gXCJlZGl0Q2xpZW50U2VjcmV0XCI7XHJcbiAgICAgICAgdGhpcy5lZGl0Q2xpZW50U2VjcmV0LmxhYmVsS2V5ID0gXCJDbGllbnRTZWNyZXRcIjtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRTZWNyZXQudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldC5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVkaXRDbGllbnRTZWNyZXQudmFsdWUgPSBhY3RpdmVEaXJlY3RvcnkuY2xpZW50U2VjcmV0O1xyXG4gICAgICAgIHRoaXMuZWRpdENsaWVudFNlY3JldC5tYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd0F6dXJlQ29udHJvbCA9IHRydWU7XHJcblxyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgbGV0IGRhdGE6IGFueSA9IHRoaXMuZ2V0QURNYXBwaW5nT3B0aW9ucyhhY3RpdmVEaXJlY3RvcnkuYWRNYXBwaW5ncyk7XHJcblxyXG4gICAgICB0aGlzLmVkaXRNYXBwaW5nc09wdGlvbnMgPSBkYXRhWzBdO1xyXG4gICAgICB0aGlzLmVkaXRNYXBwaW5nc0NvdW50ID0gZGF0YVsxXTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihlZGl0QURNb2RhbCk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0QURNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5lZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgRWRpdE1vZGVsID0gbmV3IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCgpO1xyXG5cclxuICAgIEVkaXRNb2RlbC5JRCA9IE51bWJlcih0aGlzLmFjdGl2ZURpcmVjdG9yeUlkKTtcclxuICAgIEVkaXRNb2RlbC5Db25uZWN0aW9uTmFtZSA9IHJlc3VsdE1vZGVsLmVkaXROYW1lO1xyXG4gICAgRWRpdE1vZGVsLlBlcm1pc3Npb25TZXRJRCA9IHJlc3VsdE1vZGVsLmVkaXRQZXJtaXNzaW9uU2V0T3B0aW9ucyAhPSBudWxsID8gcmVzdWx0TW9kZWwuZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zIDogbnVsbDtcclxuICAgIEVkaXRNb2RlbC5MYW5nS2V5ID0gcmVzdWx0TW9kZWwuZWRpdExhbmd1YWdlT3B0aW9ucztcclxuICAgIEVkaXRNb2RlbC5XZWxjb21lVGVtcGxhdGVJRCA9IHJlc3VsdE1vZGVsLmVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zICE9IG51bGwgPyBOdW1iZXIocmVzdWx0TW9kZWwuZWRpdFdlbGNvbWVNc2dUZW1wbGF0ZU9wdGlvbnMpIDogbnVsbDtcclxuICAgIEVkaXRNb2RlbC5NYXJrQXNJbmFjdGl2ZSA9IHJlc3VsdE1vZGVsLmVkaXRJbmFjdGl2ZTtcclxuICAgIEVkaXRNb2RlbC5BZGRUb0RhaWx5Sm9iID0gcmVzdWx0TW9kZWwuZWRpdERhaWx5Sm9iO1xyXG5cclxuICAgIGlmICh0aGlzLmVkaXRBRFR5cGVJRCA9PSBOdW1iZXIoQURUeXBlLldpbmRvd3MpKSB7XHJcbiAgICAgIEVkaXRNb2RlbC5Eb21haW4gPSByZXN1bHRNb2RlbC5lZGl0RG9tYWluO1xyXG4gICAgICBFZGl0TW9kZWwuU2FtQWNjb3VudCA9IHJlc3VsdE1vZGVsLmVkaXRTYW1BY2NvdW50O1xyXG4gICAgICBFZGl0TW9kZWwuUGFzc3dvcmQgPSByZXN1bHRNb2RlbC5lZGl0UGFzc3dvcmQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmVkaXRBRFR5cGVJRCA9PSBOdW1iZXIoQURUeXBlLkF6dXJlKSkge1xyXG4gICAgICBFZGl0TW9kZWwuVGVuYW50SUQgPSByZXN1bHRNb2RlbC5lZGl0VGVuYW50SUQ7XHJcbiAgICAgIEVkaXRNb2RlbC5DbGllbnRJRCA9IHJlc3VsdE1vZGVsLmVkaXRDbGllbnRJRDtcclxuICAgICAgRWRpdE1vZGVsLkNsaWVudFNlY3JldCA9IHJlc3VsdE1vZGVsLmVkaXRDbGllbnRTZWNyZXQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5lZGl0TWFwcGluZ3NDb3VudDsgaisrKSB7XHJcbiAgICAgIGxldCBlZGl0TUFwcGluZ1R5cGUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ1R5cGVcIiArIGpdO1xyXG4gICAgICBpZiAoZWRpdE1BcHBpbmdUeXBlID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nUHJvcGVydHkgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBqXTtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nUHJvcGVydHlOYW1lID0gcmVzdWx0TW9kZWxbXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGpdO1xyXG4gICAgICBsZXQgZWRpdE1BcHBpbmdJbmNsdWRlSW5VcGRhdGUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ0luY2x1ZGVVcGRhdGVcIiArIGpdO1xyXG4gICAgICBsZXQgZWRpdE1BcHBpbmdIaWRkZW5JbmNsdWRlSW5VcGRhdGUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IGFkTUFwcGluZ09iajogQURNYXBwaW5nTW9kZWwgPSBuZXcgQURNYXBwaW5nTW9kZWwoKTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkFETWFwcGluZ1R5cGVJdGVtSUQgPSBlZGl0TUFwcGluZ1R5cGU7XHJcbiAgICAgIGFkTUFwcGluZ09iai5CQlNGUHJvcGVydHlOYW1lID0gZWRpdE1BcHBpbmdQcm9wZXJ0eTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkFEUHJvcGVydHlOYW1lID0gZWRpdE1BcHBpbmdQcm9wZXJ0eU5hbWU7XHJcbiAgICAgIGFkTUFwcGluZ09iai5JbmNsdWRlSW5VcGRhdGUgPSBlZGl0TUFwcGluZ0luY2x1ZGVJblVwZGF0ZSA9PSB1bmRlZmluZWQgPyBlZGl0TUFwcGluZ0hpZGRlbkluY2x1ZGVJblVwZGF0ZSA6IGVkaXRNQXBwaW5nSW5jbHVkZUluVXBkYXRlO1xyXG4gICAgICBFZGl0TW9kZWwuQURNYXBwaW5ncy5wdXNoKGFkTUFwcGluZ09iaik7XHJcbiAgICB9XHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH07XHJcblxyXG4gIGdldEVkaXRBREZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmVkaXRBY3RpdmVEaXJlY3RvcnkoRWRpdE1vZGVsKTtcclxuICB9O1xyXG5cclxuICAvL0FEIE1hcHBpbmcgZnVuY3Rpb25zXHJcbiAgZ2V0QURNYXBwaW5nT3B0aW9ucyhBRE1hcHBpbmdzOiBhbnlbXSkge1xyXG4gICAgbGV0IEFETWFwcGluZ09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgQURNYXBwaW5nQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IEFETWFwcGluZ3MubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgIGxldCBvYmplY3RNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICBsZXQgc2VsZWN0ZWRUeXBlID0gdGhpcy5tYXBwaW5nVHlwZXNMaXN0LmZpbHRlcigoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5rZXkgPT0gQURNYXBwaW5nc1tpXS5hZE1hcHBpbmdUeXBlSXRlbUlEOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5uYW1lID0gXCJBRE1hcHBpbmdUeXBlXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLmhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5zZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRUeXBlO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLmRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdUeXBlc0xpc3Q7XHJcblxyXG4gICAgICBsZXQgQURNYXBwaW5nUHJvcGVydHkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIGxldCBzZWxlY3RlZFByb3BlcnR5ID0gdGhpcy5tYXBwaW5nUHJvcGVydGllc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBBRE1hcHBpbmdzW2ldLmJic2ZQcm9wZXJ0eU5hbWU7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5uYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eVwiICsgaTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkUHJvcGVydHk7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5LnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5kYXRhU291cmNlID0gdGhpcy5tYXBwaW5nUHJvcGVydGllc0xpc3Q7XHJcblxyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1Byb3BlcnR5TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUubmFtZSA9IFwiQURNYXBwaW5nUHJvcGVydHlOYW1lXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuaGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnZhbHVlID0gQURNYXBwaW5nc1tpXS5hZFByb3BlcnR5TmFtZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUubWF4TGVuZ3RoID0gMTAyNDtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLm5hbWUgPSBcIkFETWFwcGluZ0luY2x1ZGVVcGRhdGVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUudmFsdWUgPSBBRE1hcHBpbmdzW2ldLmluY2x1ZGVJblVwZGF0ZTtcclxuICAgICAgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZS5pc0Rpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUubmFtZSA9IFwiQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZVwiICsgaTtcclxuICAgICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS52YWx1ZSA9IEFETWFwcGluZ3NbaV0uaW5jbHVkZUluVXBkYXRlO1xyXG5cclxuXHJcbiAgICAgIG9iamVjdE1hcHBpbmdPcHRpb25zLnB1c2goQURNYXBwaW5nVHlwZSwgQURNYXBwaW5nUHJvcGVydHksIEFETWFwcGluZ1Byb3BlcnR5TmFtZSwgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSwgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZSk7XHJcbiAgICAgIEFETWFwcGluZ09wdGlvbnMucHVzaChvYmplY3RNYXBwaW5nT3B0aW9ucyk7XHJcbiAgICAgIEFETWFwcGluZ0NvdW50ICs9IDE7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFtBRE1hcHBpbmdPcHRpb25zLCBBRE1hcHBpbmdDb3VudF07XHJcbiAgfVxyXG4gIGRlbGV0ZUFETWFwcGluZyhkZWxldGVkQURNQXBwaW5nOiBhbnkpIHtcclxuICAgIGxldCBkZWxldGVkTWFwcGluZ0luZGV4OiBudW1iZXIgPSB0aGlzLmVkaXRNYXBwaW5nc09wdGlvbnMuaW5kZXhPZihkZWxldGVkQURNQXBwaW5nKTtcclxuICAgIGlmIChkZWxldGVkTWFwcGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmVkaXRNYXBwaW5nc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRNYXBwaW5nSW5kZXgsIDEpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRBRE1BcHBpbmcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woZGVsZXRlZEFETUFwcGluZ1tpXS5OYW1lKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQURNYXBwaW5nKCkge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5lZGl0TWFwcGluZ3NDb3VudDtcclxuXHJcbiAgICBsZXQgb2JqZWN0TWFwcGluZ09wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgbGV0IEFETWFwcGluZ1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdUeXBlLm5hbWUgPSBcIkFETWFwcGluZ1R5cGVcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nVHlwZS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nVHlwZS5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nVHlwZS52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgIEFETWFwcGluZ1R5cGUuZGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1R5cGVzTGlzdDtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nUHJvcGVydHkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5uYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkuc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5LnZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkuZGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1Byb3BlcnRpZXNMaXN0O1xyXG5cclxuXHJcbiAgICBsZXQgQURNYXBwaW5nUHJvcGVydHlOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUubmFtZSA9IFwiQURNYXBwaW5nUHJvcGVydHlOYW1lXCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5pc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUudmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcblxyXG4gICAgbGV0IEFETWFwcGluZ0luY2x1ZGVVcGRhdGUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLm5hbWUgPSBcIkFETWFwcGluZ0luY2x1ZGVVcGRhdGVcIiArIGluZGV4O1xyXG5cclxuICAgIGxldCBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLm5hbWUgPSBcIkFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGVcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5oaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgb2JqZWN0TWFwcGluZ09wdGlvbnMucHVzaChBRE1hcHBpbmdUeXBlLCBBRE1hcHBpbmdQcm9wZXJ0eSwgQURNYXBwaW5nUHJvcGVydHlOYW1lLCBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLCBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlKTtcclxuXHJcbiAgICB0aGlzLmVkaXRNYXBwaW5nc09wdGlvbnMucHVzaChvYmplY3RNYXBwaW5nT3B0aW9ucyk7XHJcbiAgICB0aGlzLmVkaXRNYXBwaW5nc0NvdW50ICs9IDE7XHJcblxyXG4gIH1cclxuICAvL0RlbGV0ZSBBQ3RpdmVEaXJlY3RvcnlcclxuICBzaG93RGVsZXRlQWN0aXZlRGlyZWN0b3J5TW9kYWwoYWN0aXZlRGlyZWN0b3J5SUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5kZWxldGVBY3RpdmVEaXJlY3RvcnlJZCA9IGFjdGl2ZURpcmVjdG9yeUlEO1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZUFjdGl2ZURpcmVjdG9yeUlkKTtcclxuXHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5kZWxldGVBY3RpdmVEaXJlY3Rvcnk7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLmRlbGV0ZUNvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcbiAgZGVsZXRlQWN0aXZlRGlyZWN0b3J5ID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlRGlyZWN0b3J5U2VydmljZS5kZWxldGVBY3RpdmVEaXJlY3RvcnkoaWQpO1xyXG4gIH07XHJcblxyXG4gIC8vU3luYyBBY3RpdmUgRGlyZWN0b3J5XHJcbiAgc2hvd0FEU3luY2hyb25pemF0aW9uTW9kYWwoYWN0aXZlRGlyZWN0b3J5SUQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zeW5jQWN0aXZlRGlyZWN0b3J5SWQgPSBhY3RpdmVEaXJlY3RvcnlJRDtcclxuXHJcbiAgICAvL2FycmF5IHNlbnQgdG8gc2VydmljZSBmdW5jdGlvblxyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBwYXJhbUFycmF5LnB1c2godGhpcy5zeW5jQWN0aXZlRGlyZWN0b3J5SWQpO1xyXG5cclxuICAgIHRoaXMuc3luY0NvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMucnVuU3luY3Jvbml6YXRpb247XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLnNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuc3luY0NvbmZpcm1hdGlvbk9wdGlvbnMucGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuUmVpbml0aWFsaXplO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25IZWFkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSdW5TeW5jaHJvbml6YXRpb25cIik7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLmNvbmZpcm1hdGlvbkJvZHkgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSdW5TeW5jaHJvbml6YXRpb25Db25maXJtYXRpb25cIik7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLnN0eWxlQ29uZmlybWF0aW9uTW9kZSA9IFN0eWxlQ29uZmlybWF0aW9uTW9kZS5XYXJuaW5nO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5zdWJtaXRCdXR0b25UZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiWWVzXCIpO1xyXG4gICAgdGhpcy5zeW5jQ29uZmlybWF0aW9uT3B0aW9ucy5kaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnN5bmNDb25maXJtYXRpb25PcHRpb25zLm9uU3VjY2Vzc0hhbmRsZXIgPSB0aGlzLnJ1blN5bmNPblN1Y2Nlc3M7XHJcbiAgICB0aGlzLnN5bmNDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnN5bmNDb25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuICBydW5TeW5jcm9uaXphdGlvbiA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZURpcmVjdG9yeVNlcnZpY2UucnVuQURTeW5jaHJvbml6YXRpb24oaWQpO1xyXG4gIH07XHJcblxyXG4gIHJ1blN5bmNPblN1Y2Nlc3MgPSAocmVzdWx0KSA9PiB7XHJcbiAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgfTtcclxuICAvL0xhc3QgcnVuIGxvZ3NcclxuICBzaG93QURMYXN0UnVuTG9nc01vZGFsKGFjdGl2ZURpcmVjdG9yeUlEOiBzdHJpbmcsIGxhc3RSdW5Mb2dzTW9kYWwpIHtcclxuICAgIHRoaXMuYWN0aXZlRGlyZWN0b3J5U2VydmljZS5nZXRMYXN0UnVuTG9ncyhhY3RpdmVEaXJlY3RvcnlJRCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IGxhc3RSdW5Mb2dzTW9kZWwgPSByZXN1bHQgYXMgYW55O1xyXG5cclxuICAgICAgdGhpcy5hZENvbm5lY3Rpb25OYW1lID0gbGFzdFJ1bkxvZ3NNb2RlbC5tb2RlbC5hZENvbm5lY3Rpb25OYW1lO1xyXG4gICAgICB0aGlzLmxhc3RSdW5Mb2dzID0gbGFzdFJ1bkxvZ3NNb2RlbC5tb2RlbC5sb2dzO1xyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihsYXN0UnVuTG9nc01vZGFsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcblxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiAqbmdJZj1cInNob3dQYWdlQ29udGVudFwiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPCEtLSBiZWdpbjo6SGVhZGVyIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJpc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiYWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cImFjdGl2ZURpcmVjdG9yeUZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgdGl0bGU9XCJ7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZGQnKSB9fVwiXHJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9BZG1pbi9BRENvbm5lY3Rpb24vQWRkJ11cIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FkZCcpIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPCEtLWJlZ2luOjpBY3RpdmVEaXJlY3RvcnkgbGlzdC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdOYW1lJykgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHlwZScpIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1Blcm1pc3Npb25TZXQnKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBZENvbm5lY3Rpb25SdW5uaW5nTm93JykgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3Rpb25zJykgfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGFjdGl2ZURpcmVjdG9yeSBvZiBjbGllbnRTaWRlUGFnaW5nUmVzdWx0XCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBhY3RpdmVEaXJlY3RvcnkubmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAge3sgYWN0aXZlRGlyZWN0b3J5LmFkVHlwZU5hbWUgfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIHt7IGFjdGl2ZURpcmVjdG9yeS5wZXJtaXNzaW9uU2V0TmFtZSB9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCIgKm5nSWY9XCJhY3RpdmVEaXJlY3RvcnkuaXNSdW5uaW5nTm93OyBlbHNlIG5vdF9SdW5uaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1llcycpIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdF9SdW5uaW5nPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ05vJykgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1tZW51IGNsYXNzPVwibWF0LW1lbnUtY29udGVudFwiICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0QWN0aXZlRGlyZWN0b3J5TW9kYWwoYWN0aXZlRGlyZWN0b3J5LmlkLCBhY3RpdmVEaXJlY3RvcnkuaWRFbmNyeXB0ZWQsIGVkaXRBY3RpdmVEaXJlY3RvcnlNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFZGl0JykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgKGNsaWNrKT1cInNob3dEZWxldGVBY3RpdmVEaXJlY3RvcnlNb2RhbChhY3RpdmVEaXJlY3RvcnkuaWRFbmNyeXB0ZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRGVsZXRlJykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgKGNsaWNrKT1cInNob3dBRFN5bmNocm9uaXphdGlvbk1vZGFsKGFjdGl2ZURpcmVjdG9yeS5pZEVuY3J5cHRlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3RpdmVEaXJlY3RvcnlSdW5TeW5jcm9uaXphdGlvbicpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIChjbGljayk9XCJzaG93QURMYXN0UnVuTG9nc01vZGFsKGFjdGl2ZURpcmVjdG9yeS5pZEVuY3J5cHRlZCwgbGFzdFJ1bkxvZ3NNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3RpdmVEaXJlY3RvcnlMYXN0UnVuTG9ncycpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImNsaWVudFNpZGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tZW5kOjpBY3RpdmUgZGlyZWN0b3J5IGxpc3QtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgIDxCQlNGLVBhZ2luZ1xyXG4gICAgICAgIChJdGVtcyk9XCJzZXRBY3RpdmVEaXJlY3RvcnlMaXN0UmVzdWx0KCRldmVudClcIlxyXG4gICAgICAgICpuZ0lmPVwiaXNGaWx0ZXJMb2FkZWRcIlxyXG4gICAgICAgIFtvcHRpb25zXT1cImFjdGl2ZURpcmVjdG9yeVBhZ2luZ1wiXHJcbiAgICAgICAgW2dyb3VwXT1cImFjdGl2ZURpcmVjdG9yeUZvcm1cIlxyXG4gICAgICAgICNhY3RpdmVEaXJlY3RvcnlQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gRWRpdCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNlZGl0QWN0aXZlRGlyZWN0b3J5TW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VkaXQnKSB9fSB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3RpdmVEaXJlY3RvcnknKSB9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdE5hbWVcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj4gPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdFBlcm1pc3Npb25TZXRPcHRpb25zXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiZWRpdExhbmd1YWdlT3B0aW9uc1wiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImVkaXRXZWxjb21lTXNnVGVtcGxhdGVPcHRpb25zXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPGg2PlxyXG4gICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBRFR5cGUnKSB9fVxyXG4gICAgICAgICAgPC9oNj5cclxuICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAge3sgZWRpdEFEVHlwZU5hbWUgfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd1dpbmRvd3NDb250cm9sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgIDxoNj5cclxuICAgICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdJZGVudGlmaWVyJykgfX1cclxuICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZWRpdElkZW50aWZpZXIgb2YgZWRpdElkZW50aWZpZXJzXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAge3sgZWRpdElkZW50aWZpZXIgfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgIDxoNj5cclxuICAgICAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdUeXBlJykgfX1cclxuICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgIHt7IGVkaXRXaW5kb3dzVHlwZU5hbWUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0RG9tYWluXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdFNhbUFjY291bnRcIiBbZ3JvdXBdPVwiZWRpdEFjdGl2ZURpcmVjdG9yeUZvcm1cIj4gPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRQYXNzd29yZFwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cInNob3dBenVyZUNvbnRyb2xcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZWRpdFRlbmFudElEXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVkaXRDbGllbnRJRFwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlZGl0Q2xpZW50U2VjcmV0XCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZWRpdEluYWN0aXZlXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImVkaXREYWlseUpvYlwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYW1zeC10YWJsZS11c2Vyc1wiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRoPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1R5cGUnKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1Byb3BlcnR5JykgfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBY3RpdmVEaXJlY3RvcnlfUHJvcGVydHknKSB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0luY2x1ZGVJblVwZGF0ZScpIH19PC90aD5cclxuICAgICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRNYXBwaW5nc09wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImVkaXRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+IDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvblszXVwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiPiA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICA8IS0tSGlkZGVuIGluY2x1ZGUgaW4gdXBkYXRlIHZhbHVlLS0+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvbls0XVwiIFtncm91cF09XCJlZGl0QWN0aXZlRGlyZWN0b3J5Rm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPiA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlciBhbGlnbi1taWRkbGVcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwia3QtbmF2X19saW5rXCIgKGNsaWNrKT1cImRlbGV0ZUFETWFwcGluZyhvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwia3QtbmF2X19saW5rLWljb24gZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZEFETWFwcGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FkZE5ld1JlY29yZCcpIH19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAjQ2xvc2VFZGl0QURNb2RhbFxyXG4gICAgICAgICAgaWQ9XCJDbG9zZUVkaXRBRE1vZGFsXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIj5cclxuICAgICAgICAgIHt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NhbmNlbExhYmVsJykgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTYXZlTGFiZWwnKSB9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEZWxldGUgIE1vZGFsIC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbFxyXG4gICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiXHJcbiAgW29wdGlvbnNdPVwiZGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uc1wiXHJcbiAgaWQ9XCJkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIlxyXG4gICNkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuPCEtLSBTeW5jaHJvbml6YXRpb24gIE1vZGFsIC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbFxyXG4gICpuZ0lmPVwic3luY0NvbnRyb2xMb2FkZWRcIlxyXG4gIFtvcHRpb25zXT1cInN5bmNDb25maXJtYXRpb25PcHRpb25zXCJcclxuICBpZD1cInN5bmNDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIlxyXG4gICNzeW5jQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuXHJcbjwhLS0gVmlldyBMYXN0IFJ1biBMb2dzIC0tPlxyXG48bmctdGVtcGxhdGUgI2xhc3RSdW5Mb2dzTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FjdGl2ZURpcmVjdG9yeUxhc3RSdW5Mb2dzJykgfX0gOiB7eyBhZENvbm5lY3Rpb25OYW1lIH19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ05hbWUnKSB9fSA6IHt7IGFkQ29ubmVjdGlvbk5hbWUgfX08L3A+XHJcbiAgICAgICAgICA8cHJlIGNsYXNzPVwiY29sLW1kLTEyXCI+e3sgbGFzdFJ1bkxvZ3MgfX08L3ByZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgI0Nsb3NlRGVmYXVsdFByb3ZpZGVyTW9kYWxcclxuICAgICAgICAgIGlkPVwiQ2xvc2VEZWZhdWx0UHJvdmlkZXJNb2RhbFwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gbWUtM1wiXHJcbiAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdDbG9zZScpIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==