@bnsights/bbsf-admin-portal 1.1.49 → 1.1.50

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 (256) hide show
  1. package/README.md +4 -0
  2. package/bnsights-bbsf-admin-portal-1.1.50.tgz +0 -0
  3. package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +3 -3
  4. package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +1 -1
  5. package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +16 -9
  6. package/esm2022/lib/Pages/_layout/components/aside/aside.component.mjs +3 -3
  7. package/esm2022/lib/Pages/_layout/components/topbar/topbar.component.mjs +15 -22
  8. package/esm2022/lib/Pages/anonymouslayout/activation/activation.component.mjs +1 -1
  9. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +1 -1
  10. package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +1 -1
  11. package/esm2022/lib/Pages/anonymouslayout/change-password/change-password.component.mjs +1 -1
  12. package/esm2022/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +1 -1
  13. package/esm2022/lib/Pages/anonymouslayout/login/login.component.mjs +1 -1
  14. package/esm2022/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +1 -1
  15. package/esm2022/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +1 -1
  16. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +4 -4
  17. package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +3 -3
  18. package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +167 -99
  19. package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +7 -4
  20. package/esm2022/lib/Pages/core/authentication/auth.guard.mjs +1 -1
  21. package/esm2022/lib/Pages/departments/department/department.component.mjs +108 -30
  22. package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +1 -1
  23. package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +1 -1
  24. package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +1 -1
  25. package/esm2022/lib/Pages/documents/document-template-info/document-template-info.component.mjs +1 -1
  26. package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +1 -1
  27. package/esm2022/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +1 -1
  28. package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +96 -15
  29. package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +1 -1
  30. package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +1 -1
  31. package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +1 -1
  32. package/esm2022/lib/Pages/home/home.component.mjs +17 -6
  33. package/esm2022/lib/Pages/home/home.module.mjs +1 -1
  34. package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +1 -1
  35. package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +1 -1
  36. package/esm2022/lib/Pages/license/license/license.component.mjs +1 -1
  37. package/esm2022/lib/Pages/license/license.module.mjs +1 -1
  38. package/esm2022/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +1 -1
  39. package/esm2022/lib/Pages/localizations/localizations.component.mjs +1 -1
  40. package/esm2022/lib/Pages/localizations/localizations.module.mjs +1 -1
  41. package/esm2022/lib/Pages/logs/log/log.component.mjs +1 -1
  42. package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +1 -1
  43. package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +1 -1
  44. package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +1 -1
  45. package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +85 -58
  46. package/esm2022/lib/Pages/notifications/edit-email/edit-email.component.mjs +1 -1
  47. package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +55 -26
  48. package/esm2022/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +1 -1
  49. package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +68 -16
  50. package/esm2022/lib/Pages/notifications/notifications.module.mjs +2 -2
  51. package/esm2022/lib/Pages/notifications/notifications.routing.mjs +66 -0
  52. package/esm2022/lib/Pages/notifications/template-info/template-info.component.mjs +1 -1
  53. package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +105 -58
  54. package/esm2022/lib/Pages/organization/add-organization/add-organization.component.mjs +107 -0
  55. package/esm2022/lib/Pages/organization/add-organization/index.mjs +2 -0
  56. package/esm2022/lib/Pages/organization/edit-organization/edit-organization.component.mjs +115 -0
  57. package/esm2022/lib/Pages/organization/edit-organization/index.mjs +2 -0
  58. package/esm2022/lib/Pages/organization/index.mjs +7 -0
  59. package/esm2022/lib/Pages/organization/list-organization/index.mjs +2 -0
  60. package/esm2022/lib/Pages/organization/list-organization/list-organization.component.mjs +181 -0
  61. package/esm2022/lib/Pages/organization/organization.component.mjs +15 -0
  62. package/esm2022/lib/Pages/organization/organization.module.mjs +89 -0
  63. package/esm2022/lib/Pages/organization/organization.routing.mjs +36 -0
  64. package/esm2022/lib/Pages/providers/provider/provider.component.mjs +98 -43
  65. package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +1 -1
  66. package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +3 -3
  67. package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +73 -33
  68. package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +166 -105
  69. package/esm2022/lib/Pages/roles/roles-routing.module.mjs +24 -7
  70. package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +83 -16
  71. package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +2 -1
  72. package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +1 -1
  73. package/esm2022/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +1 -1
  74. package/esm2022/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +1 -1
  75. package/esm2022/lib/Pages/shared/Services/ConfigurationsService.service.mjs +4 -1
  76. package/esm2022/lib/Pages/shared/Services/DepartmentService.service.mjs +7 -3
  77. package/esm2022/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +1 -1
  78. package/esm2022/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +1 -1
  79. package/esm2022/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +6 -1
  80. package/esm2022/lib/Pages/shared/Services/HelpCenterService.service.mjs +7 -3
  81. package/esm2022/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +1 -1
  82. package/esm2022/lib/Pages/shared/Services/JobsService.service.mjs +1 -1
  83. package/esm2022/lib/Pages/shared/Services/LicenseService.service.mjs +1 -1
  84. package/esm2022/lib/Pages/shared/Services/LogsService.mjs +1 -1
  85. package/esm2022/lib/Pages/shared/Services/LookupGroupsService.service.mjs +1 -1
  86. package/esm2022/lib/Pages/shared/Services/LookupService.service.mjs +1 -1
  87. package/esm2022/lib/Pages/shared/Services/PermissionSetService.service.mjs +7 -3
  88. package/esm2022/lib/Pages/shared/Services/PermissionsService.service.mjs +1 -1
  89. package/esm2022/lib/Pages/shared/Services/PublicHolidayService.service.mjs +1 -1
  90. package/esm2022/lib/Pages/shared/Services/SectorService.service.mjs +4 -1
  91. package/esm2022/lib/Pages/shared/Services/TemplateService.service.mjs +4 -3
  92. package/esm2022/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +1 -1
  93. package/esm2022/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +1 -1
  94. package/esm2022/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +1 -1
  95. package/esm2022/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +1 -1
  96. package/esm2022/lib/Pages/shared/Services/WorkflowService.service.mjs +1 -1
  97. package/esm2022/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +1 -1
  98. package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +52 -22
  99. package/esm2022/lib/Pages/shared/Services/localizationsService.service .mjs +1 -1
  100. package/esm2022/lib/Pages/shared/Services/organization.service.mjs +36 -0
  101. package/esm2022/lib/Pages/shared/Services/provider.service.mjs +1 -1
  102. package/esm2022/lib/Pages/shared/Services/survey-question.service.mjs +1 -1
  103. package/esm2022/lib/Pages/shared/Services/survey.service.mjs +1 -1
  104. package/esm2022/lib/Pages/shared/Services/userService.service.mjs +1 -1
  105. package/esm2022/lib/Pages/shared/components/external-url/external-url.component.mjs +1 -1
  106. package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +1 -1
  107. package/esm2022/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +1 -1
  108. package/esm2022/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +1 -1
  109. package/esm2022/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +1 -1
  110. package/esm2022/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +1 -1
  111. package/esm2022/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +1 -1
  112. package/esm2022/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +1 -1
  113. package/esm2022/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +1 -1
  114. package/esm2022/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +1 -1
  115. package/esm2022/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +1 -1
  116. package/esm2022/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +1 -1
  117. package/esm2022/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +1 -1
  118. package/esm2022/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +1 -1
  119. package/esm2022/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +1 -1
  120. package/esm2022/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +1 -1
  121. package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +1 -1
  122. package/esm2022/lib/Pages/shared/config.service.mjs +17 -0
  123. package/esm2022/lib/Pages/shared/constants.mjs +2 -1
  124. package/esm2022/lib/Pages/shared/index.mjs +14 -0
  125. package/esm2022/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.mjs +36 -3
  126. package/esm2022/lib/Pages/shared/models/DepartmentModels/DepartmentModel.mjs +1 -1
  127. package/esm2022/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.mjs +1 -1
  128. package/esm2022/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.mjs +1 -1
  129. package/esm2022/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.mjs +1 -1
  130. package/esm2022/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.mjs +1 -1
  131. package/esm2022/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.mjs +1 -1
  132. package/esm2022/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.mjs +1 -1
  133. package/esm2022/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.mjs +1 -1
  134. package/esm2022/lib/Pages/shared/models/LicenseModel/LicenseModel.mjs +1 -1
  135. package/esm2022/lib/Pages/shared/models/LocalizationModels/EditResourceModel.mjs +1 -1
  136. package/esm2022/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.mjs +1 -1
  137. package/esm2022/lib/Pages/shared/models/Lookups/LookupGroupModel.mjs +1 -1
  138. package/esm2022/lib/Pages/shared/models/Lookups/LookupItem.mjs +1 -1
  139. package/esm2022/lib/Pages/shared/models/Lookups/LookupModel.mjs +1 -1
  140. package/esm2022/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.mjs +9 -6
  141. package/esm2022/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.mjs +1 -1
  142. package/esm2022/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.mjs +1 -1
  143. package/esm2022/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.mjs +1 -1
  144. package/esm2022/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.mjs +1 -1
  145. package/esm2022/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.mjs +1 -1
  146. package/esm2022/lib/Pages/shared/models/NotificationsModels/TemplateDTO.mjs +1 -2
  147. package/esm2022/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.mjs +1 -1
  148. package/esm2022/lib/Pages/shared/models/PermissionsModels/PermissionModel.mjs +17 -3
  149. package/esm2022/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.mjs +17 -3
  150. package/esm2022/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.mjs +1 -1
  151. package/esm2022/lib/Pages/shared/models/SectorModels/SectorModel.mjs +1 -1
  152. package/esm2022/lib/Pages/shared/models/SurveyModels/add-survey-submissio.mjs +1 -1
  153. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-field-options.mjs +1 -1
  154. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +1 -1
  155. package/esm2022/lib/Pages/shared/models/SurveyModels/survey-question.mjs +1 -1
  156. package/esm2022/lib/Pages/shared/models/UserModels/AddUserModel.mjs +1 -1
  157. package/esm2022/lib/Pages/shared/models/UserModels/DropdownsResponseModel.mjs +3 -1
  158. package/esm2022/lib/Pages/shared/models/UserModels/EditUserModel.mjs +1 -1
  159. package/esm2022/lib/Pages/shared/models/UserModels/ExportedFileDTO.mjs +3 -0
  160. package/esm2022/lib/Pages/shared/models/UserModels/FilteredUsersRequestModel.mjs +9 -0
  161. package/esm2022/lib/Pages/shared/models/UserModels/UserListingViewModel.mjs +8 -0
  162. package/esm2022/lib/Pages/shared/models/UserModels/UserModelDTO.mjs +41 -0
  163. package/esm2022/lib/Pages/shared/models/UserModels/UserSearchParamDTO.mjs +1 -1
  164. package/esm2022/lib/Pages/shared/models/UserModels/UsersCountsDTO.mjs +3 -0
  165. package/esm2022/lib/Pages/shared/models/UserModels/index.mjs +13 -0
  166. package/esm2022/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.mjs +1 -1
  167. package/esm2022/lib/Pages/shared/models/WorkflowModels/WFActivityModel.mjs +1 -1
  168. package/esm2022/lib/Pages/shared/models/WorkflowModels/WFCreationModel.mjs +1 -1
  169. package/esm2022/lib/Pages/shared/models/WorkflowModels/WFVariableModel.mjs +1 -1
  170. package/esm2022/lib/Pages/shared/models/index.mjs +24 -0
  171. package/esm2022/lib/Pages/shared/models/organization/organization.model.mjs +15 -0
  172. package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +1 -1
  173. package/esm2022/lib/Pages/shared/modules/survey.module.mjs +1 -1
  174. package/esm2022/lib/Pages/users/users.component.mjs +143 -60
  175. package/esm2022/lib/Pages/users/users.module.mjs +1 -1
  176. package/esm2022/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +1 -1
  177. package/esm2022/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +1 -1
  178. package/esm2022/lib/Pages/workflows/instance-info/instance-info.component.mjs +1 -1
  179. package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +1 -1
  180. package/esm2022/lib/Pages/workflows/version-info/version-info.component.mjs +1 -1
  181. package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +1 -1
  182. package/esm2022/lib/masterlayout.component.mjs +8 -14
  183. package/esm2022/lib/masterlayout.module.mjs +2 -25
  184. package/esm2022/lib/masterlayout.routing.mjs +43 -0
  185. package/fesm2022/bnsights-bbsf-admin-portal.mjs +2516 -1136
  186. package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -1
  187. package/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.d.ts +5 -2
  188. package/lib/Pages/_layout/components/topbar/topbar.component.d.ts +2 -8
  189. package/lib/Pages/configurations/configuration/configuration.component.d.ts +21 -8
  190. package/lib/Pages/core/authentication/admin.guard.d.ts +3 -2
  191. package/lib/Pages/departments/department/department.component.d.ts +15 -3
  192. package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +16 -3
  193. package/lib/Pages/home/home.component.d.ts +5 -2
  194. package/lib/Pages/notifications/add-notification/add-notification.component.d.ts +16 -5
  195. package/lib/Pages/notifications/edit-notification/edit-notification.component.d.ts +15 -4
  196. package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +17 -5
  197. package/lib/Pages/notifications/notifications.module.d.ts +1 -1
  198. package/lib/Pages/notifications/templates/templates.component.d.ts +13 -3
  199. package/lib/Pages/organization/add-organization/add-organization.component.d.ts +36 -0
  200. package/lib/Pages/organization/add-organization/index.d.ts +1 -0
  201. package/lib/Pages/organization/edit-organization/edit-organization.component.d.ts +36 -0
  202. package/lib/Pages/organization/edit-organization/index.d.ts +1 -0
  203. package/lib/Pages/organization/index.d.ts +6 -0
  204. package/lib/Pages/organization/list-organization/index.d.ts +1 -0
  205. package/lib/Pages/organization/list-organization/list-organization.component.d.ts +59 -0
  206. package/lib/Pages/organization/organization.component.d.ts +8 -0
  207. package/lib/Pages/organization/organization.module.d.ts +24 -0
  208. package/lib/Pages/organization/organization.routing.d.ts +7 -0
  209. package/lib/Pages/providers/provider/provider.component.d.ts +17 -8
  210. package/lib/Pages/roles/permissions/permissions.component.d.ts +14 -5
  211. package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +21 -8
  212. package/lib/Pages/sectors/sector/sector.component.d.ts +12 -1
  213. package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +2 -1
  214. package/lib/Pages/shared/Services/DepartmentService.service.d.ts +2 -1
  215. package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +2 -0
  216. package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +2 -1
  217. package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +2 -1
  218. package/lib/Pages/shared/Services/SectorService.service.d.ts +1 -0
  219. package/lib/Pages/shared/Services/TemplateService.service.d.ts +1 -1
  220. package/lib/Pages/shared/Services/injectionModuleService.service.d.ts +2 -0
  221. package/lib/Pages/shared/Services/organization.service.d.ts +17 -0
  222. package/lib/Pages/shared/Services/userService.service.d.ts +4 -1
  223. package/lib/Pages/shared/config.service.d.ts +8 -0
  224. package/lib/Pages/shared/constants.d.ts +1 -0
  225. package/lib/Pages/shared/index.d.ts +5 -0
  226. package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +32 -28
  227. package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +1 -0
  228. package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +1 -0
  229. package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +8 -6
  230. package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +0 -1
  231. package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +17 -5
  232. package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +20 -8
  233. package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +1 -0
  234. package/lib/Pages/shared/models/UserModels/DropdownsResponseModel.d.ts +2 -0
  235. package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +1 -0
  236. package/lib/Pages/shared/models/UserModels/ExportedFileDTO.d.ts +4 -0
  237. package/lib/Pages/shared/models/UserModels/FilteredUsersRequestModel.d.ts +7 -0
  238. package/lib/Pages/shared/models/UserModels/UserListingViewModel.d.ts +10 -0
  239. package/lib/Pages/shared/models/UserModels/UserModelDTO.d.ts +38 -0
  240. package/lib/Pages/shared/models/UserModels/UserSearchParamDTO.d.ts +1 -0
  241. package/lib/Pages/shared/models/UserModels/UsersCountsDTO.d.ts +5 -0
  242. package/lib/Pages/shared/models/UserModels/index.d.ts +12 -0
  243. package/lib/Pages/shared/models/index.d.ts +2 -0
  244. package/lib/Pages/shared/models/organization/organization.model.d.ts +22 -0
  245. package/lib/Pages/users/users.component.d.ts +17 -7
  246. package/lib/masterlayout.component.d.ts +1 -2
  247. package/lib/masterlayout.module.d.ts +1 -1
  248. package/package.json +7 -7
  249. package/src/lib/assets/images/menu/organization.svg +16 -0
  250. package/src/lib/assets/sass/custom-styles.scss +2 -2
  251. package/src/lib/assets/sass/style.scss +1 -0
  252. package/bnsights-bbsf-admin-portal-1.1.49.tgz +0 -0
  253. package/esm2022/lib/Pages/notifications/notifications-routing.module.mjs +0 -39
  254. package/esm2022/lib/masterlayout-routing.module.mjs +0 -41
  255. /package/lib/Pages/notifications/{notifications-routing.module.d.ts → notifications.routing.d.ts} +0 -0
  256. /package/lib/{masterlayout-routing.module.d.ts → masterlayout.routing.d.ts} +0 -0
@@ -271,7 +271,7 @@ export class EditAuthConfigurationComponent extends AppBaseComponent {
271
271
  var permissionDropDownOptions = new DropdownOptions();
272
272
  permissionDropDownOptions.name = `permissions-user-type-${userType}`;
273
273
  permissionDropDownOptions.labelValue = this.translate(UAEPassUserTypes[userType]) + "-" + this.translate("Permissions");
274
- permissionDropDownOptions.isRequired = true;
274
+ permissionDropDownOptions.isRequired = false;
275
275
  permissionDropDownOptions.viewType = ControlLayout.Vertical;
276
276
  permissionDropDownOptions.dataSource = this.permissionsList;
277
277
  permissionDropDownOptions.selectedItems = this.setPermissionForUAEPassUserTypes(userType);
@@ -314,11 +314,11 @@ export class EditAuthConfigurationComponent extends AppBaseComponent {
314
314
  });
315
315
  }
316
316
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EditAuthConfigurationComponent, deps: [{ token: i0.Injector }, { token: i1.MasterLayoutService }, { token: i2.ConfigurationsService }, { token: i3.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
317
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EditAuthConfigurationComponent, selector: "auth-configuration-edit", inputs: { pagingElement: "pagingElement", onSuccessTakePenaltyHandler: "onSuccessTakePenaltyHandler" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["editModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #editModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{translate(\"EditAuthConfiguration\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-4 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/close-modal.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <BBSF-Form [options]=\"editFormOptions\">\r\n <div class=\"modal-body\">\r\n <ng-container *ngIf=\"modeId == authenticationModeEnumValue.UAEPass\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"baseURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"clientIdTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"secretKeyTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"redirectURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (OnChange)=\"onChangeAccessLevels($event)\" [options]=\"accessLevelDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (OnChange)=\"changePermissionSet($event)\" [options]=\"userPermissionSetDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide (OnChange)=\"onChangeSOPPermissionToggleValue($event)\" [options]=\"sopPermissionMappingToggle\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"linkingExistingUsersToggle\" (OnChange)=\"onLinkingExistingUsersToggleValue($event)\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"importingNewUserToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"updateUserInformationOnLoginToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"configuration-header\" *ngIf=\"showUserTypePermissionsMapping\">\r\n <h5>{{translate(\"AccessLevelsPermissionMapping\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"initDropDownOptions(level)\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showUserTypeLinkingMapping\">\r\n <div class=\"configuration-header\">\r\n <h5>{{translate(\"LinkingOptions\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"linkingModeDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"configuration-header\">\r\n <h5>{{translate(\"LinkingAttributesOptions\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameArCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameEnCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"emailCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"eIdCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"mobileCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nationalityCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"genderCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n\r\n </ng-container>\r\n\r\n <div class=\"row\" *ngIf=\"modeId == authenticationModeEnumValue.AzureAD\">\r\n\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{translate(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">\r\n {{translate('Save')}}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n</ng-template>", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i5.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i5.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i5.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i5.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "directive", type: i6.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
317
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: EditAuthConfigurationComponent, selector: "auth-configuration-edit", inputs: { pagingElement: "pagingElement", onSuccessTakePenaltyHandler: "onSuccessTakePenaltyHandler" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["editModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #editModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{ translate('EditAuthConfiguration') }}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-4 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/close-modal.svg'\"></div>\r\n </button>\r\n </div>\r\n <BBSF-Form [options]=\"editFormOptions\">\r\n <div class=\"modal-body\">\r\n <ng-container *ngIf=\"modeId == authenticationModeEnumValue.UAEPass\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"baseURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"clientIdTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"secretKeyTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"redirectURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (onChange)=\"onChangeAccessLevels($event)\" [options]=\"accessLevelDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (onChange)=\"changePermissionSet($event)\" [options]=\"userPermissionSetDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide\r\n (onChange)=\"onChangeSOPPermissionToggleValue($event)\"\r\n [options]=\"sopPermissionMappingToggle\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide\r\n [options]=\"linkingExistingUsersToggle\"\r\n (onChange)=\"onLinkingExistingUsersToggleValue($event)\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"importingNewUserToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"updateUserInformationOnLoginToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"configuration-header\" *ngIf=\"showUserTypePermissionsMapping\">\r\n <h5>{{ translate('AccessLevelsPermissionMapping') }}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"initDropDownOptions(level)\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showUserTypeLinkingMapping\">\r\n <div class=\"configuration-header\">\r\n <h5>{{ translate('LinkingOptions') }}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"linkingModeDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"configuration-header\">\r\n <h5>{{ translate('LinkingAttributesOptions') }}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameArCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameEnCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"emailCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"eIdCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"mobileCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nationalityCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"genderCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div class=\"row\" *ngIf=\"modeId == authenticationModeEnumValue.AzureAD\"></div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{ translate('Cancel') }}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">\r\n {{ translate('Save') }}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["onChange", "onBlur"] }, { kind: "component", type: i5.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i5.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["onChange", "onClear"] }, { kind: "component", type: i5.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["onChange"] }, { kind: "component", type: i5.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["onChange"] }, { kind: "directive", type: i6.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }] }); }
318
318
  }
319
319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EditAuthConfigurationComponent, decorators: [{
320
320
  type: Component,
321
- args: [{ selector: 'auth-configuration-edit', template: "<ng-template #editModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{translate(\"EditAuthConfiguration\")}}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-4 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/close-modal.svg'\">\r\n </div>\r\n </button>\r\n </div>\r\n <BBSF-Form [options]=\"editFormOptions\">\r\n <div class=\"modal-body\">\r\n <ng-container *ngIf=\"modeId == authenticationModeEnumValue.UAEPass\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"baseURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"clientIdTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"secretKeyTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"redirectURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (OnChange)=\"onChangeAccessLevels($event)\" [options]=\"accessLevelDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (OnChange)=\"changePermissionSet($event)\" [options]=\"userPermissionSetDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide (OnChange)=\"onChangeSOPPermissionToggleValue($event)\" [options]=\"sopPermissionMappingToggle\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"linkingExistingUsersToggle\" (OnChange)=\"onLinkingExistingUsersToggleValue($event)\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"importingNewUserToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"updateUserInformationOnLoginToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"configuration-header\" *ngIf=\"showUserTypePermissionsMapping\">\r\n <h5>{{translate(\"AccessLevelsPermissionMapping\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"initDropDownOptions(level)\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showUserTypeLinkingMapping\">\r\n <div class=\"configuration-header\">\r\n <h5>{{translate(\"LinkingOptions\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"linkingModeDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"configuration-header\">\r\n <h5>{{translate(\"LinkingAttributesOptions\")}}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameArCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameEnCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"emailCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"eIdCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"mobileCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nationalityCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"genderCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n\r\n </ng-container>\r\n\r\n <div class=\"row\" *ngIf=\"modeId == authenticationModeEnumValue.AzureAD\">\r\n\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{translate(\"Cancel\")}}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">\r\n {{translate('Save')}}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n</ng-template>" }]
321
+ args: [{ selector: 'auth-configuration-edit', template: "<ng-template #editModal let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{ translate('EditAuthConfiguration') }}\r\n </h4>\r\n <button type=\"button\" data-dismiss=\"modal\" class=\"btn btn-icon btn-sm\" (click)=\"modal.dismiss()\">\r\n <div class=\"svg-icon svg-icon-4 svg-icon-hover-brand\" [inlineSVG]=\"'/assets/images/close-modal.svg'\"></div>\r\n </button>\r\n </div>\r\n <BBSF-Form [options]=\"editFormOptions\">\r\n <div class=\"modal-body\">\r\n <ng-container *ngIf=\"modeId == authenticationModeEnumValue.UAEPass\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"baseURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"clientIdTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"secretKeyTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-TextBox [options]=\"redirectURLTextBox\" [group]=\"editForm\"></BBSF-TextBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (onChange)=\"onChangeAccessLevels($event)\" [options]=\"accessLevelDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-DropdownList (onChange)=\"changePermissionSet($event)\" [options]=\"userPermissionSetDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide\r\n (onChange)=\"onChangeSOPPermissionToggleValue($event)\"\r\n [options]=\"sopPermissionMappingToggle\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide\r\n [options]=\"linkingExistingUsersToggle\"\r\n (onChange)=\"onLinkingExistingUsersToggleValue($event)\"\r\n [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"importingNewUserToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-Toggleslide [options]=\"updateUserInformationOnLoginToggle\" [group]=\"editForm\"></BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n\r\n <div class=\"configuration-header\" *ngIf=\"showUserTypePermissionsMapping\">\r\n <h5>{{ translate('AccessLevelsPermissionMapping') }}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"initDropDownOptions(level)\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showUserTypeLinkingMapping\">\r\n <div class=\"configuration-header\">\r\n <h5>{{ translate('LinkingOptions') }}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngFor=\"let level of selectedAccessLevels\">\r\n <BBSF-DropdownList [options]=\"linkingModeDropdown\" [group]=\"editForm\"></BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"configuration-header\">\r\n <h5>{{ translate('LinkingAttributesOptions') }}</h5>\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameArCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nameEnCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"emailCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"eIdCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"mobileCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"nationalityCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <BBSF-CheckBox [options]=\"genderCheckbox\" [group]=\"editForm\"></BBSF-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div class=\"row\" *ngIf=\"modeId == authenticationModeEnumValue.AzureAD\"></div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-sm btn-light\" (click)=\"modal.dismiss()\">\r\n {{ translate('Cancel') }}\r\n </button>\r\n <button appPreventDoubleClick type=\"submit\" class=\"btn btn-sm btn-brand\">\r\n {{ translate('Save') }}\r\n </button>\r\n </div>\r\n </BBSF-Form>\r\n</ng-template>\r\n" }]
322
322
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.MasterLayoutService }, { type: i2.ConfigurationsService }, { type: i3.UserService }], propDecorators: { pagingElement: [{
323
323
  type: Input
324
324
  }], onSuccessTakePenaltyHandler: [{
@@ -327,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
327
327
  type: ViewChild,
328
328
  args: ["editModal", { static: false }]
329
329
  }] } });
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0IsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEssT0FBTyxFQUFFLCtCQUErQixFQUFFLG9CQUFvQixFQUFxRCxNQUFNLCtEQUErRCxDQUFDO0FBQ3pMLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDOzs7Ozs7OztBQVM1SSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsZ0JBQWdCO0lBK0NsRSxZQUFZO0lBRVosWUFBWTtJQUVaLFlBQ1UsUUFBa0IsRUFDbEIsbUJBQXdDLEVBQ3hDLHFCQUE0QyxFQUM1QyxXQUF3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O2dCQUlxQyxLQUFLO3NCQUEvQyxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50LCBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgVGV4dEJveE9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgTWFzdGVyTGF5b3V0U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiwgVUFFUGFzc0NvbmZpZ3VyYXRpb24sIFVBRVBhc3NVc2VySW5mb01hcHBpbmcsIFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBVQUVQYXNzTGlua2luZ01vZGUsIFVBRVBhc3NVc2VyVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvRW51bXMvY29uZmlndXJhdGlvbi9hdXRoZW50ZWNhdGlvbi1jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0NvbmZpZ3VyYXRpb25zU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWxPcHRpb25zIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy91c2VyU2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1jb25maWd1cmF0aW9uLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0QXV0aENvbmZpZ3VyYXRpb25Db21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc1Rha2VQZW5hbHR5SGFuZGxlcjogRnVuY3Rpb247XHJcblxyXG4gIGVkaXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgQFZpZXdDaGlsZChcImVkaXRNb2RhbFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbW9kYWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG1vZGVJZDogbnVtYmVyID0gdW5kZWZpbmVkO1xyXG4gIGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZSA9IEF1dGhlbnRpY2F0aW9uTW9kZTtcclxuXHJcbiAgLy8jcmVnaW9uIHVhZSBwYXNzIHByb3BzXHJcbiAgYmFzZVVSTFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIGNsaWVudElkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2VjcmV0S2V5VGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgcmVkaXJlY3RVUkxUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBhY2Nlc3NMZXZlbERyb3Bkb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgbGlua2luZ01vZGVEcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICBsaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGltcG9ydGluZ05ld1VzZXJUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICB1cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgdXNlclBlcm1pc3Npb25TZXREcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHVzZXJQZXJtaXNzaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICB1YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsOiBVQUVQYXNzQ29uZmlndXJhdGlvbiA9IG5ldyBVQUVQYXNzQ29uZmlndXJhdGlvbigpO1xyXG5cclxuICBwZXJtaXNzaW9uU2V0TGlzdCA9IFtdO1xyXG4gIHBlcm1pc3Npb25zTGlzdCA9IFtdO1xyXG5cclxuICBzaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93VXNlclR5cGVMaW5raW5nTWFwcGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHVhZVBhc3NVc2VyVHlwZUVudW06IFVBRVBhc3NVc2VyVHlwZXM7XHJcbiAgdWFlUGFzc1VzZXJUeXBlTGlzdDogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEFjY2Vzc0xldmVsczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8jcmVnaW9uIGxpbmtpbmcgbWFwcGluZ1xyXG4gIG5hbWVBckNoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgbmFtZUVuQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBlbWFpbENoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgZUlkQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBtb2JpbGVDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIG5hdGlvbmFsaXR5Q2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBnZW5kZXJDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIG1hc3RlckxheW91dFNlcnZpY2U6IE1hc3RlckxheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25zU2VydmljZTogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcbiAgLy8jcmVnaW9uIGhlbHBlclxyXG5cclxuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShrZXkpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NVc2VyVHlwZXMoKSB7XHJcbiAgICBsZXQgbGlzdDogYW55W10gPSBbXTtcclxuICAgIGZvciAodmFyIGl0ZW0gaW4gVUFFUGFzc1VzZXJUeXBlcykge1xyXG4gICAgICBpZiAocGFyc2VJbnQoaXRlbSkpXHJcbiAgICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICAgIGtleTogK2l0ZW0sXHJcbiAgICAgICAgICB2YWx1ZTogVUFFUGFzc1VzZXJUeXBlc1tpdGVtXVxyXG4gICAgICAgIH0gYXMgYW55KVxyXG4gICAgfVxyXG4gICAgdGhpcy51YWVQYXNzVXNlclR5cGVMaXN0ID0gbGlzdDtcclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NMaW5raW5nTW9kZSgpIHtcclxuICAgIGxldCBsaXN0OiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yICh2YXIgaXRlbSBpbiBVQUVQYXNzTGlua2luZ01vZGUpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMudHJhbnNsYXRlKFVBRVBhc3NMaW5raW5nTW9kZVtpdGVtXSlcclxuICAgICAgICB9IGFzIGFueSlcclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0VUFFUGFzc1VzZXJUeXBlVmFsdWUoa2V5OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QuZmluZChpID0+IGkua2V5ID09IGtleSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgc2hvd01vZGFsKG1vZGU6IEF1dGhlbnRpY2F0aW9uTW9kZSwgYXV0aENvbmZpZ09iamVjdDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbikge1xyXG4gICAgdGhpcy5tb2RlSWQgPSBtb2RlO1xyXG4gICAgaWYgKHRoaXMuZWRpdEZvcm0pIHtcclxuICAgICAgdGhpcy5lZGl0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuZWRpdEZvcm0ucmVzZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVkaXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgdGhpcy5lZGl0Rm9ybU9wdGlvbnMuZm9ybUdyb3VwID0gdGhpcy5lZGl0Rm9ybSBhcyBhbnk7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5wYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5nZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRNb2RlbDtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zLnNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0U3VibWl0RnVuY3Rpb247XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5kaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5lZGl0Rm9ybU9wdGlvbnMub25TdWNjZXNzSGFuZGxlciA9IHRoaXMub25TdWNjZXNzSGFuZGxlcjtcclxuXHJcbiAgICBzd2l0Y2ggKG1vZGUpIHtcclxuICAgICAgY2FzZSBBdXRoZW50aWNhdGlvbk1vZGUuVUFFUGFzczpcclxuICAgICAgICB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwgPSBhdXRoQ29uZmlnT2JqZWN0LnVhZVBhc3NDb25maWc7XHJcblxyXG4gICAgICAgIHRoaXMuYmFzZVVSTFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94Lm5hbWUgPSBcImJhc2VVcmxcIjtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94LmxhYmVsS2V5ID0gXCJCYXNlVXJsXCI7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5iYXNlVXJsO1xyXG5cclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94Lm5hbWUgPSBcImNsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3gubGFiZWxLZXkgPSBcIkNsaWVudElEXCI7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94LnZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5jbGllbnRJRDtcclxuXHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94Lm5hbWUgPSBcInNlY3JldEtleVwiO1xyXG4gICAgICAgIHRoaXMuc2VjcmV0S2V5VGV4dEJveC5sYWJlbEtleSA9IFwiU2VjcmV0S2V5XCI7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLnNlY3JldEtleVRleHRCb3gudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMuc2VjcmV0S2V5VGV4dEJveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5zZWNyZXRLZXk7XHJcblxyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3gubmFtZSA9IFwicmVkaXJlY3RVcmxcIjtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC5sYWJlbEtleSA9IFwiUmVkaXJlY3RVcmxcIjtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3gudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnJlZGlyZWN0VXJsO1xyXG5cclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLm5hbWUgPSBcImFjY2Vzc0xldmVsc1wiO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5sYWJlbEtleSA9IFwiQWNjZXNzTGV2ZWxcIjtcclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24uc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuYWNjZXNzTGV2ZWxzO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5kYXRhU291cmNlID0gdGhpcy5sb2FkVUFFUGFzc1VzZXJUeXBlcygpO1xyXG5cclxuICAgICAgICB0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLm5hbWUgPSBcImxpbmtpbmdNb2RlXCI7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLmxhYmVsS2V5ID0gXCJMaW5raW5nTW9kZVwiO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5zZWxlY3RlZEl0ZW1zID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmxpbmtpbmdNb2RlO1xyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93bi5kYXRhU291cmNlID0gdGhpcy5sb2FkVUFFUGFzc0xpbmtpbmdNb2RlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS5uYW1lID0gXCJzb3BQZXJtaXNzaW9uTWFwcGluZ1wiO1xyXG4gICAgICAgIHRoaXMuc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGUubGFiZWxLZXkgPSBcIlNPUFBlcm1pc3Npb25NYXBwaW5nXCI7XHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZztcclxuXHJcbiAgICAgICAgdGhpcy5saW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLm5hbWUgPSBcImxpbmtpbmdFeGlzdGluZ1VzZXJzXCI7XHJcbiAgICAgICAgdGhpcy5saW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZS5sYWJlbEtleSA9IFwiTGlua2luZ0V4aXN0aW5nVXNlcnNcIjtcclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZUxpbmtpbmdFeGlzdGluZ1VzZXJzO1xyXG5cclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5pbXBvcnRpbmdOZXdVc2VyVG9nZ2xlLm5hbWUgPSBcImltcG9ydGluZ05ld1VzZXJcIjtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUubGFiZWxLZXkgPSBcIkltcG9ydGluZ05ld1VzZXJcIjtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlSW1wb3J0aW5nTmV3VXNlcjtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZS5uYW1lID0gXCJ1cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXCI7XHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLmxhYmVsS2V5ID0gXCJVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXCI7XHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZVVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW47XHJcblxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24ubmFtZSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5sYWJlbEtleSA9IFwiUGVybWlzc2lvblNldHNcIlxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5zZWxlY3RlZEl0ZW1zID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmRlZmF1bHRQZXJtaXNzaW9uU2V0O1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5zaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5hbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLmlzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMubmFtZUFyQ2hlY2tib3gubmFtZSA9IFwibmFtZUFyXCJcclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94LmxhYmVsS2V5ID0gXCJOYW1lQVJcIjtcclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5uYW1lQVI7XHJcblxyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5uYW1lRW5DaGVja2JveC5uYW1lID0gXCJuYW1lRW5cIlxyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3gubGFiZWxLZXkgPSBcIk5hbWVFTlwiO1xyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLm5hbWVFTjtcclxuXHJcbiAgICAgICAgdGhpcy5lbWFpbENoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveC5uYW1lID0gXCJlbWFpbFwiXHJcbiAgICAgICAgdGhpcy5lbWFpbENoZWNrYm94LmxhYmVsS2V5ID0gXCJFbWFpbFwiO1xyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcuZW1haWw7XHJcblxyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5lSWRDaGVja2JveC5uYW1lID0gXCJlSWRcIlxyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3gubGFiZWxLZXkgPSBcIkVJRFwiO1xyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLkVJRDtcclxuXHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLm1vYmlsZUNoZWNrYm94Lm5hbWUgPSBcIm1vYmlsZVwiXHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveC5sYWJlbEtleSA9IFwiTW9iaWxlXCI7XHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcubW9iaWxlO1xyXG5cclxuICAgICAgICB0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94Lm5hbWUgPSBcIm5hdGlvbmFsaXR5XCJcclxuICAgICAgICB0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3gubGFiZWxLZXkgPSBcIk5hdGlvbmFsaXR5XCI7XHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5uYXRpb25hbGl0eTtcclxuXHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmdlbmRlckNoZWNrYm94Lm5hbWUgPSBcImdlbmRlclwiXHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveC5sYWJlbEtleSA9IFwiR2VuZGVyXCI7XHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcuZ2VuZGVyO1xyXG5cclxuICAgICAgICB0aGlzLmdldFBlcm1pc3Npb25TZXRzKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVNPUFBlcm1pc3Npb25Ub2dnbGVWYWx1ZSh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlU09QUGVybWlzc2lvbk1hcHBpbmcpO1xyXG4gICAgICAgIHRoaXMub25MaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZVZhbHVlKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVMaW5raW5nRXhpc3RpbmdVc2Vycyk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZUFjY2Vzc0xldmVscyh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuYWNjZXNzTGV2ZWxzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5kZWZhdWx0UGVybWlzc2lvblNldClcclxuICAgICAgICAgIHRoaXMuY2hhbmdlUGVybWlzc2lvblNldCh0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZGVmYXVsdFBlcm1pc3Npb25TZXQpO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBBdXRoZW50aWNhdGlvbk1vZGUuQXp1cmVBRDpcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMubW9kYWwsIHsgc2l6ZTogJ3hsJyB9IGFzIE5nYk1vZGFsT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBnZXRBZGRNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMuZWRpdEZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IGVkaXRNb2RlbDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiA9IG5ldyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKCk7XHJcbiAgICBlZGl0TW9kZWwubW9kZUlkID0gdGhpcy5tb2RlSWQ7XHJcbiAgICBlZGl0TW9kZWwudWFlUGFzc0NvbmZpZyA9IHRoaXMuYnVpbGRVQUVQYXNzQ29uZmlnT2JqZWN0KHJlc3VsdE1vZGVsKTtcclxuICAgIHJldHVybiBBcnJheShlZGl0TW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VibWl0RnVuY3Rpb24gPSAoZWRpdE1vZGVsOiBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25zU2VydmljZS51cGRhdGVBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25EYXRhKGVkaXRNb2RlbClcclxuICB9XHJcblxyXG4gIG9uU3VjY2Vzc0hhbmRsZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLm1hc3RlckxheW91dFNlcnZpY2UucmVsb2FkQ29tcG9uZW50KClcclxuICB9XHJcblxyXG4gIGJ1aWxkVUFFUGFzc0NvbmZpZ09iamVjdChmb3JtVmFsdWU6IGFueSk6IFVBRVBhc3NDb25maWd1cmF0aW9uIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJhc2VVcmw6IGZvcm1WYWx1ZVt0aGlzLmJhc2VVUkxUZXh0Qm94Lm5hbWVdLFxyXG4gICAgICBjbGllbnRJRDogZm9ybVZhbHVlW3RoaXMuY2xpZW50SWRUZXh0Qm94Lm5hbWVdLFxyXG4gICAgICBzZWNyZXRLZXk6IGZvcm1WYWx1ZVt0aGlzLnNlY3JldEtleVRleHRCb3gubmFtZV0sXHJcbiAgICAgIHJlZGlyZWN0VXJsOiBmb3JtVmFsdWVbdGhpcy5yZWRpcmVjdFVSTFRleHRCb3gubmFtZV0sXHJcbiAgICAgIGFjY2Vzc0xldmVsczogZm9ybVZhbHVlW3RoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5uYW1lXSxcclxuICAgICAgZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnM6IGZvcm1WYWx1ZVt0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLm5hbWVdLFxyXG4gICAgICBlbmFibGVJbXBvcnRpbmdOZXdVc2VyOiBmb3JtVmFsdWVbdGhpcy5pbXBvcnRpbmdOZXdVc2VyVG9nZ2xlLm5hbWVdLFxyXG4gICAgICBlbmFibGVVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luOiBmb3JtVmFsdWVbdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLm5hbWVdLFxyXG4gICAgICBkZWZhdWx0UGVybWlzc2lvblNldDogZm9ybVZhbHVlW3RoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5uYW1lXSxcclxuICAgICAgZW5hYmxlU09QUGVybWlzc2lvbk1hcHBpbmc6IGZvcm1WYWx1ZVt0aGlzLnNvcFBlcm1pc3Npb25NYXBwaW5nVG9nZ2xlLm5hbWVdLFxyXG4gICAgICB1c2VyVHlwZVBlcm1pc3Npb25zOiB0aGlzLmJ1aWxkVXNlclR5cGVQZXJtaXNzaW9uKCksXHJcbiAgICAgIHVzZXJJbmZvTWFwcGluZzogdGhpcy5idWlsZFVzZXJJbmZvTWFwcGluZyhmb3JtVmFsdWUpLFxyXG4gICAgICBsaW5raW5nTW9kZTogZm9ybVZhbHVlW3RoaXMubGlua2luZ01vZGVEcm9wZG93bi5uYW1lXSxcclxuICAgIH0gYXMgVUFFUGFzc0NvbmZpZ3VyYXRpb25cclxuICB9XHJcblxyXG4gIGJ1aWxkVXNlckluZm9NYXBwaW5nKGZvcm1WYWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYW1lRU46IGZvcm1WYWx1ZVt0aGlzLm5hbWVFbkNoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBuYW1lQVI6IGZvcm1WYWx1ZVt0aGlzLm5hbWVBckNoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBlbWFpbDogZm9ybVZhbHVlW3RoaXMuZW1haWxDaGVja2JveC5uYW1lXSxcclxuICAgICAgRUlEOiBmb3JtVmFsdWVbdGhpcy5lSWRDaGVja2JveC5uYW1lXSxcclxuICAgICAgbW9iaWxlOiBmb3JtVmFsdWVbdGhpcy5tb2JpbGVDaGVja2JveC5uYW1lXSxcclxuICAgICAgbmF0aW9uYWxpdHk6IGZvcm1WYWx1ZVt0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3gubmFtZV0sXHJcbiAgICAgIGdlbmRlcjogZm9ybVZhbHVlW3RoaXMuZ2VuZGVyQ2hlY2tib3gubmFtZV1cclxuICAgIH0gYXMgVUFFUGFzc1VzZXJJbmZvTWFwcGluZztcclxuICB9XHJcblxyXG4gIGJ1aWxkVXNlclR5cGVQZXJtaXNzaW9uKCk6IFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb25bXSB7XHJcbiAgICBsZXQgcmVzTGlzdDogVUFFUGFzc1VzZXJUeXBlUGVybWlzc2lvbltdID0gW107XHJcbiAgICBpZiAodGhpcy5zaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscy5mb3JFYWNoKGxldmVsID0+IHtcclxuICAgICAgICByZXNMaXN0LnB1c2goe1xyXG4gICAgICAgICAgdXNlclR5cGU6IGxldmVsLFxyXG4gICAgICAgICAgcGVybWlzc2lvbnM6IHRoaXMuZWRpdEZvcm0uY29udHJvbHNbYHBlcm1pc3Npb25zLXVzZXItdHlwZS0ke2xldmVsfWBdPy52YWx1ZSxcclxuICAgICAgICB9IGFzIFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb24pXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc0xpc3Q7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gVUFFIFBhc3MgRnVuY3Rpb25zXHJcblxyXG4gIG9uTGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnNob3dVc2VyVHlwZUxpbmtpbmdNYXBwaW5nID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5zaG93VXNlclR5cGVMaW5raW5nTWFwcGluZylcclxuICAgICAgdGhpcy5hZGRSZXF1aXJlZFZhbGlkYXRpb24oW3RoaXMubGlua2luZ01vZGVEcm9wZG93bl0sIHRoaXMuZWRpdEZvcm0sIHRoaXMuZWRpdEZvcm1PcHRpb25zKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24oW3RoaXMubGlua2luZ01vZGVEcm9wZG93bl0sIHRoaXMuZWRpdEZvcm0sIHRoaXMuZWRpdEZvcm1PcHRpb25zKTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVNPUFBlcm1pc3Npb25Ub2dnbGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLnNob3dVc2VyVHlwZVBlcm1pc3Npb25zTWFwcGluZyA9IHZhbHVlO1xyXG4gICAgaWYgKCF0aGlzLnNob3dVc2VyVHlwZVBlcm1pc3Npb25zTWFwcGluZykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWNjZXNzTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4ge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlQ29udHJvbChgcGVybWlzc2lvbnMtdXNlci10eXBlLSR7bGV2ZWx9YCwgdGhpcy5lZGl0Rm9ybSk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQZXJtaXNzaW9uU2V0KGlkOiBhbnkpIHtcclxuICAgIGlmICghaWQpIHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uc0xpc3QgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpZHMgPSBBcnJheShpZCk7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLkxvYWRQZXJtaXNzaW9uc0Ryb3BEb3duKGlkcykuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uc0xpc3QgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldFBlcm1pc3Npb25TZXRzKCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5nZXRQZXJtaXNzaW9uU2V0c0xpc3QoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0TGlzdCA9IHJlcy5wZXJtZXNzaW9uc2V0cztcclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLmRhdGFTb3VyY2UgPSB0aGlzLnBlcm1pc3Npb25TZXRMaXN0O1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGluaXREcm9wRG93bk9wdGlvbnModXNlclR5cGU6IGFueSkge1xyXG4gICAgdmFyIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLm5hbWUgPSBgcGVybWlzc2lvbnMtdXNlci10eXBlLSR7dXNlclR5cGV9YDtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMubGFiZWxWYWx1ZSA9IHRoaXMudHJhbnNsYXRlKFVBRVBhc3NVc2VyVHlwZXNbdXNlclR5cGVdKSArIFwiLVwiICsgdGhpcy50cmFuc2xhdGUoXCJQZXJtaXNzaW9uc1wiKTtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMuaXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLnZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMuZGF0YVNvdXJjZSA9IHRoaXMucGVybWlzc2lvbnNMaXN0O1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZXRQZXJtaXNzaW9uRm9yVUFFUGFzc1VzZXJUeXBlcyh1c2VyVHlwZSk7XHJcblxyXG4gICAgcmV0dXJuIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZUFjY2Vzc0xldmVscyhzZWxlY3RlZEl0ZW1zOiBhbnkpIHtcclxuICAgIGxldCB1c2VyVHlwZXNLZXlzID0gdGhpcy51YWVQYXNzVXNlclR5cGVMaXN0Lm1hcChpdGVtID0+IHsgcmV0dXJuIGl0ZW0ua2V5IH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscyA9IHNlbGVjdGVkSXRlbXM7XHJcblxyXG4gICAgbGV0IG5vdFNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscy5maWx0ZXIoaXRlbSA9PiB1c2VyVHlwZXNLZXlzLmluZGV4T2YoaXRlbSkgPCAwKTtcclxuICAgIG5vdFNlbGVjdGVkLmZvckVhY2goaSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ29udHJvbChgcGVybWlzc2lvbnMtdXNlci10eXBlLSR7aX1gLCB0aGlzLmVkaXRGb3JtKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgc2V0UGVybWlzc2lvbkZvclVBRVBhc3NVc2VyVHlwZXModXNlclR5cGU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VyVHlwZVBlcm1pc3Npb25zLmZpbmQoaSA9PiBpLnVzZXJUeXBlID09IHVzZXJUeXBlKT8ucGVybWlzc2lvbnM7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIHZhbGlkYXRpb24gYWN0aW9uc1xyXG5cclxuICBhZGRSZXF1aXJlZFZhbGlkYXRpb24oY3VzdG9tQ29udHJvbE9wdGlvbjogYW55W10sIGZvcm06IEZvcm1Hcm91cCwgZm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zKTogdm9pZCB7XHJcbiAgICBjdXN0b21Db250cm9sT3B0aW9uLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgIGlmIChmb3JtLmdldChjb250cm9sLk5hbWUpKVxyXG4gICAgICAgIHRoaXMuYWRkUmVxdWlyZWRSdWxlKGZvcm0uZ2V0KGNvbnRyb2wuTmFtZSksIGZvcm1PcHRpb25zKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGNvbnRyb2wuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbihjdXN0b21Db250cm9sT3B0aW9uOiBhbnlbXSwgZm9ybTogRm9ybUdyb3VwLCBmb3JtT3B0aW9uczogRm9ybU9wdGlvbnMpOiB2b2lkIHtcclxuICAgIGN1c3RvbUNvbnRyb2xPcHRpb24uZm9yRWFjaChjb250cm9sID0+IHtcclxuICAgICAgaWYgKGZvcm0uZ2V0KGNvbnRyb2wuTmFtZSkpXHJcbiAgICAgICAgdGhpcy5yZW1vdmVSZXF1aXJlZFJ1bGUoZm9ybS5nZXQoY29udHJvbC5OYW1lKSwgZm9ybU9wdGlvbnMpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgY29udHJvbC5Jc1JlcXVpcmVkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlc2V0Rm9ybUNvbnRyb2xzVmFsdWUoY3VzdG9tQ29udHJvbHNPcHRpb25zOiBhbnlbXSwgZm9ybTogRm9ybUdyb3VwKTogdm9pZCB7XHJcbiAgICBjdXN0b21Db250cm9sc09wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xyXG4gICAgICBsZXQgZm9ybUNvbnRyb2wgPSBmb3JtLmdldChvcHRpb24uTmFtZSk7XHJcbiAgICAgIGlmIChmb3JtQ29udHJvbClcclxuICAgICAgICBmb3JtQ29udHJvbC5yZXNldCgpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcblxyXG5cclxuIiwiPG5nLXRlbXBsYXRlICNlZGl0TW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XHJcbiAgICAgIHt7dHJhbnNsYXRlKFwiRWRpdEF1dGhDb25maWd1cmF0aW9uXCIpfX1cclxuICAgIDwvaDQ+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1zbVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgc3ZnLWljb24taG92ZXItYnJhbmRcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9jbG9zZS1tb2RhbC5zdmcnXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJlZGl0Rm9ybU9wdGlvbnNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlSWQgPT0gYXV0aGVudGljYXRpb25Nb2RlRW51bVZhbHVlLlVBRVBhc3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJiYXNlVVJMVGV4dEJveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJjbGllbnRJZFRleHRCb3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VjcmV0S2V5VGV4dEJveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJyZWRpcmVjdFVSTFRleHRCb3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAoT25DaGFuZ2UpPVwib25DaGFuZ2VBY2Nlc3NMZXZlbHMoJGV2ZW50KVwiIFtvcHRpb25zXT1cImFjY2Vzc0xldmVsRHJvcGRvd25cIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IChPbkNoYW5nZSk9XCJjaGFuZ2VQZXJtaXNzaW9uU2V0KCRldmVudClcIiBbb3B0aW9uc109XCJ1c2VyUGVybWlzc2lvblNldERyb3Bkb3duXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIChPbkNoYW5nZSk9XCJvbkNoYW5nZVNPUFBlcm1pc3Npb25Ub2dnbGVWYWx1ZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwic29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGVcIlxyXG4gICAgICAgICAgICAgIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlXCIgKE9uQ2hhbmdlKT1cIm9uTGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGVWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJpbXBvcnRpbmdOZXdVc2VyVG9nZ2xlXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwidXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZVwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJhdGlvbi1oZWFkZXJcIiAqbmdJZj1cInNob3dVc2VyVHlwZVBlcm1pc3Npb25zTWFwcGluZ1wiPlxyXG4gICAgICAgICAgPGg1Pnt7dHJhbnNsYXRlKFwiQWNjZXNzTGV2ZWxzUGVybWlzc2lvbk1hcHBpbmdcIil9fTwvaDU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0Zvcj1cImxldCBsZXZlbCBvZiBzZWxlY3RlZEFjY2Vzc0xldmVsc1wiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJpbml0RHJvcERvd25PcHRpb25zKGxldmVsKVwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dVc2VyVHlwZUxpbmtpbmdNYXBwaW5nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJhdGlvbi1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGg1Pnt7dHJhbnNsYXRlKFwiTGlua2luZ09wdGlvbnNcIil9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdGb3I9XCJsZXQgbGV2ZWwgb2Ygc2VsZWN0ZWRBY2Nlc3NMZXZlbHNcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJsaW5raW5nTW9kZURyb3Bkb3duXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmF0aW9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aDU+e3t0cmFuc2xhdGUoXCJMaW5raW5nQXR0cmlidXRlc09wdGlvbnNcIil9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm5hbWVBckNoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwibmFtZUVuQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJlbWFpbENoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiZUlkQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJtb2JpbGVDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm5hdGlvbmFsaXR5Q2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJnZW5kZXJDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJtb2RlSWQgPT0gYXV0aGVudGljYXRpb25Nb2RlRW51bVZhbHVlLkF6dXJlQURcIj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHRcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAge3t0cmFuc2xhdGUoXCJDYW5jZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBhcHBQcmV2ZW50RG91YmxlQ2xpY2sgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYnJhbmRcIj5cclxuICAgICAgICB7e3RyYW5zbGF0ZSgnU2F2ZScpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L0JCU0YtRm9ybT5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9jb25maWd1cmF0aW9ucy9hdXRoLWNvbmZpZ3VyYXRpb24vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBd0IsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHeEssT0FBTyxFQUFFLCtCQUErQixFQUFFLG9CQUFvQixFQUFxRCxNQUFNLCtEQUErRCxDQUFDO0FBQ3pMLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDOzs7Ozs7OztBQVM1SSxNQUFNLE9BQU8sOEJBQStCLFNBQVEsZ0JBQWdCO0lBK0NsRSxZQUFZO0lBRVosWUFBWTtJQUVaLFlBQ1UsUUFBa0IsRUFDbEIsbUJBQXdDLEVBQ3hDLHFCQUE0QyxFQUM1QyxXQUF3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O2dCQUlxQyxLQUFLO3NCQUEvQyxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50LCBDaGVja0JveE9wdGlvbnMsIENvbnRyb2xMYXlvdXQsIERyb3Bkb3duT3B0aW9ucywgRm9ybU9wdGlvbnMsIElucHV0VHlwZSwgVGV4dEJveE9wdGlvbnMsIFRvZ2dsZVNsaWRlT3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgTWFzdGVyTGF5b3V0U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiwgVUFFUGFzc0NvbmZpZ3VyYXRpb24sIFVBRVBhc3NVc2VySW5mb01hcHBpbmcsIFVBRVBhc3NVc2VyVHlwZVBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBVQUVQYXNzTGlua2luZ01vZGUsIFVBRVBhc3NVc2VyVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvRW51bXMvY29uZmlndXJhdGlvbi9hdXRoZW50ZWNhdGlvbi1jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL1NlcnZpY2VzL0NvbmZpZ3VyYXRpb25zU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWxPcHRpb25zIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy91c2VyU2VydmljZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1jb25maWd1cmF0aW9uLWVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdC5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0QXV0aENvbmZpZ3VyYXRpb25Db21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBwYWdpbmdFbGVtZW50O1xyXG4gIEBJbnB1dCgpIG9uU3VjY2Vzc1Rha2VQZW5hbHR5SGFuZGxlcjogRnVuY3Rpb247XHJcblxyXG4gIGVkaXRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgZWRpdEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgQFZpZXdDaGlsZChcImVkaXRNb2RhbFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbW9kYWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG1vZGVJZDogbnVtYmVyID0gdW5kZWZpbmVkO1xyXG4gIGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZSA9IEF1dGhlbnRpY2F0aW9uTW9kZTtcclxuXHJcbiAgLy8jcmVnaW9uIHVhZSBwYXNzIHByb3BzXHJcbiAgYmFzZVVSTFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIGNsaWVudElkVGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2VjcmV0S2V5VGV4dEJveDogVGV4dEJveE9wdGlvbnM7XHJcbiAgcmVkaXJlY3RVUkxUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBhY2Nlc3NMZXZlbERyb3Bkb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgbGlua2luZ01vZGVEcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICBsaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZTogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGltcG9ydGluZ05ld1VzZXJUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICB1cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgc29wUGVybWlzc2lvbk1hcHBpbmdUb2dnbGU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgdXNlclBlcm1pc3Npb25TZXREcm9wZG93bjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHVzZXJQZXJtaXNzaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICB1YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsOiBVQUVQYXNzQ29uZmlndXJhdGlvbiA9IG5ldyBVQUVQYXNzQ29uZmlndXJhdGlvbigpO1xyXG5cclxuICBwZXJtaXNzaW9uU2V0TGlzdCA9IFtdO1xyXG4gIHBlcm1pc3Npb25zTGlzdCA9IFtdO1xyXG5cclxuICBzaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93VXNlclR5cGVMaW5raW5nTWFwcGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHVhZVBhc3NVc2VyVHlwZUVudW06IFVBRVBhc3NVc2VyVHlwZXM7XHJcbiAgdWFlUGFzc1VzZXJUeXBlTGlzdDogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEFjY2Vzc0xldmVsczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8jcmVnaW9uIGxpbmtpbmcgbWFwcGluZ1xyXG4gIG5hbWVBckNoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgbmFtZUVuQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBlbWFpbENoZWNrYm94OiBDaGVja0JveE9wdGlvbnM7XHJcbiAgZUlkQ2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBtb2JpbGVDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIG5hdGlvbmFsaXR5Q2hlY2tib3g6IENoZWNrQm94T3B0aW9ucztcclxuICBnZW5kZXJDaGVja2JveDogQ2hlY2tCb3hPcHRpb25zO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIG1hc3RlckxheW91dFNlcnZpY2U6IE1hc3RlckxheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb25zU2VydmljZTogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcbiAgLy8jcmVnaW9uIGhlbHBlclxyXG5cclxuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShrZXkpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NVc2VyVHlwZXMoKSB7XHJcbiAgICBsZXQgbGlzdDogYW55W10gPSBbXTtcclxuICAgIGZvciAodmFyIGl0ZW0gaW4gVUFFUGFzc1VzZXJUeXBlcykge1xyXG4gICAgICBpZiAocGFyc2VJbnQoaXRlbSkpXHJcbiAgICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICAgIGtleTogK2l0ZW0sXHJcbiAgICAgICAgICB2YWx1ZTogVUFFUGFzc1VzZXJUeXBlc1tpdGVtXVxyXG4gICAgICAgIH0gYXMgYW55KTtcclxuICAgIH1cclxuICAgIHRoaXMudWFlUGFzc1VzZXJUeXBlTGlzdCA9IGxpc3Q7XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIGxvYWRVQUVQYXNzTGlua2luZ01vZGUoKSB7XHJcbiAgICBsZXQgbGlzdDogYW55W10gPSBbXTtcclxuICAgIGZvciAodmFyIGl0ZW0gaW4gVUFFUGFzc0xpbmtpbmdNb2RlKSB7XHJcbiAgICAgIGlmIChwYXJzZUludChpdGVtKSlcclxuICAgICAgICBsaXN0LnB1c2goe1xyXG4gICAgICAgICAga2V5OiAraXRlbSxcclxuICAgICAgICAgIHZhbHVlOiB0aGlzLnRyYW5zbGF0ZShVQUVQYXNzTGlua2luZ01vZGVbaXRlbV0pXHJcbiAgICAgICAgfSBhcyBhbnkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXRVQUVQYXNzVXNlclR5cGVWYWx1ZShrZXk6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMudWFlUGFzc1VzZXJUeXBlTGlzdC5maW5kKGkgPT4gaS5rZXkgPT0ga2V5KS52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBzaG93TW9kYWwobW9kZTogQXV0aGVudGljYXRpb25Nb2RlLCBhdXRoQ29uZmlnT2JqZWN0OiBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKSB7XHJcbiAgICB0aGlzLm1vZGVJZCA9IG1vZGU7XHJcbiAgICBpZiAodGhpcy5lZGl0Rm9ybSkge1xyXG4gICAgICB0aGlzLmVkaXRGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy5lZGl0Rm9ybS5yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWRpdEZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5mb3JtR3JvdXAgPSB0aGlzLmVkaXRGb3JtIGFzIGFueTtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zLnBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zLmdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZE1vZGVsO1xyXG4gICAgdGhpcy5lZGl0Rm9ybU9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRTdWJtaXRGdW5jdGlvbjtcclxuICAgIHRoaXMuZWRpdEZvcm1PcHRpb25zLmRpc2FibGVTdWNjZXNzTm90aWZpY2F0aW9uID0gZmFsc2U7XHJcbiAgICB0aGlzLmVkaXRGb3JtT3B0aW9ucy5vblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5vblN1Y2Nlc3NIYW5kbGVyO1xyXG5cclxuICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICBjYXNlIEF1dGhlbnRpY2F0aW9uTW9kZS5VQUVQYXNzOlxyXG4gICAgICAgIHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbCA9IGF1dGhDb25maWdPYmplY3QudWFlUGFzc0NvbmZpZztcclxuXHJcbiAgICAgICAgdGhpcy5iYXNlVVJMVGV4dEJveCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuYmFzZVVSTFRleHRCb3gubmFtZSA9IFwiYmFzZVVybFwiO1xyXG4gICAgICAgIHRoaXMuYmFzZVVSTFRleHRCb3gubGFiZWxLZXkgPSBcIkJhc2VVcmxcIjtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94LnZpZXdUeXBlID0gQ29udHJvbExheW91dC5WZXJ0aWNhbDtcclxuICAgICAgICB0aGlzLmJhc2VVUkxUZXh0Qm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmJhc2VVcmw7XHJcblxyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3gubmFtZSA9IFwiY2xpZW50SURcIjtcclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveC5sYWJlbEtleSA9IFwiQ2xpZW50SURcIjtcclxuICAgICAgICB0aGlzLmNsaWVudElkVGV4dEJveC50eXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgdGhpcy5jbGllbnRJZFRleHRCb3gudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgICAgIHRoaXMuY2xpZW50SWRUZXh0Qm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmNsaWVudElEO1xyXG5cclxuICAgICAgICB0aGlzLnNlY3JldEtleVRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNlY3JldEtleVRleHRCb3gubmFtZSA9IFwic2VjcmV0S2V5XCI7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94LmxhYmVsS2V5ID0gXCJTZWNyZXRLZXlcIjtcclxuICAgICAgICB0aGlzLnNlY3JldEtleVRleHRCb3gudHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgIHRoaXMuc2VjcmV0S2V5VGV4dEJveC52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgICAgdGhpcy5zZWNyZXRLZXlUZXh0Qm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnNlY3JldEtleTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC5uYW1lID0gXCJyZWRpcmVjdFVybFwiO1xyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94LmxhYmVsS2V5ID0gXCJSZWRpcmVjdFVybFwiO1xyXG4gICAgICAgIHRoaXMucmVkaXJlY3RVUkxUZXh0Qm94LnR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICB0aGlzLnJlZGlyZWN0VVJMVGV4dEJveC52aWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgICAgdGhpcy5yZWRpcmVjdFVSTFRleHRCb3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwucmVkaXJlY3RVcmw7XHJcblxyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24ubmFtZSA9IFwiYWNjZXNzTGV2ZWxzXCI7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLmxhYmVsS2V5ID0gXCJBY2Nlc3NMZXZlbFwiO1xyXG4gICAgICAgIHRoaXMuYWNjZXNzTGV2ZWxEcm9wZG93bi5zaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24uc2VsZWN0ZWRJdGVtcyA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5hY2Nlc3NMZXZlbHM7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NMZXZlbERyb3Bkb3duLmRhdGFTb3VyY2UgPSB0aGlzLmxvYWRVQUVQYXNzVXNlclR5cGVzKCk7XHJcblxyXG4gICAgICAgIHRoaXMubGlua2luZ01vZGVEcm9wZG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd24ubmFtZSA9IFwibGlua2luZ01vZGVcIjtcclxuICAgICAgICB0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd24ubGFiZWxLZXkgPSBcIkxpbmtpbmdNb2RlXCI7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLnNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwubGlua2luZ01vZGU7XHJcbiAgICAgICAgdGhpcy5saW5raW5nTW9kZURyb3Bkb3duLmRhdGFTb3VyY2UgPSB0aGlzLmxvYWRVQUVQYXNzTGlua2luZ01vZGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnNvcFBlcm1pc3Npb25NYXBwaW5nVG9nZ2xlLm5hbWUgPSBcInNvcFBlcm1pc3Npb25NYXBwaW5nXCI7XHJcbiAgICAgICAgdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS5sYWJlbEtleSA9IFwiU09QUGVybWlzc2lvbk1hcHBpbmdcIjtcclxuICAgICAgICB0aGlzLnNvcFBlcm1pc3Npb25NYXBwaW5nVG9nZ2xlLnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZVNPUFBlcm1pc3Npb25NYXBwaW5nO1xyXG5cclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMubGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGUubmFtZSA9IFwibGlua2luZ0V4aXN0aW5nVXNlcnNcIjtcclxuICAgICAgICB0aGlzLmxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlLmxhYmVsS2V5ID0gXCJMaW5raW5nRXhpc3RpbmdVc2Vyc1wiO1xyXG4gICAgICAgIHRoaXMubGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGUudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnM7XHJcblxyXG4gICAgICAgIHRoaXMuaW1wb3J0aW5nTmV3VXNlclRvZ2dsZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmltcG9ydGluZ05ld1VzZXJUb2dnbGUubmFtZSA9IFwiaW1wb3J0aW5nTmV3VXNlclwiO1xyXG4gICAgICAgIHRoaXMuaW1wb3J0aW5nTmV3VXNlclRvZ2dsZS5sYWJlbEtleSA9IFwiSW1wb3J0aW5nTmV3VXNlclwiO1xyXG4gICAgICAgIHRoaXMuaW1wb3J0aW5nTmV3VXNlclRvZ2dsZS52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVJbXBvcnRpbmdOZXdVc2VyO1xyXG5cclxuICAgICAgICB0aGlzLnVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5Ub2dnbGUgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luVG9nZ2xlLm5hbWUgPSBcInVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5cIjtcclxuICAgICAgICB0aGlzLnVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5Ub2dnbGUubGFiZWxLZXkgPSBcIlVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5cIjtcclxuICAgICAgICB0aGlzLnVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW5Ub2dnbGUudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwuZW5hYmxlVXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpbjtcclxuXHJcbiAgICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5uYW1lID0gXCJQZXJtaXNzaW9uU2V0c1wiO1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5sYWJlbEtleSA9IFwiUGVybWlzc2lvblNldHNcIjtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24uc2VsZWN0ZWRJdGVtcyA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5kZWZhdWx0UGVybWlzc2lvblNldDtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24uc2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24uYWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25TZXREcm9wZG93bi5pc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5uYW1lQXJDaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLm5hbWVBckNoZWNrYm94Lm5hbWUgPSBcIm5hbWVBclwiO1xyXG4gICAgICAgIHRoaXMubmFtZUFyQ2hlY2tib3gubGFiZWxLZXkgPSBcIk5hbWVBUlwiO1xyXG4gICAgICAgIHRoaXMubmFtZUFyQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLm5hbWVBUjtcclxuXHJcbiAgICAgICAgdGhpcy5uYW1lRW5DaGVja2JveCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgICB0aGlzLm5hbWVFbkNoZWNrYm94Lm5hbWUgPSBcIm5hbWVFblwiO1xyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3gubGFiZWxLZXkgPSBcIk5hbWVFTlwiO1xyXG4gICAgICAgIHRoaXMubmFtZUVuQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLm5hbWVFTjtcclxuXHJcbiAgICAgICAgdGhpcy5lbWFpbENoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveC5uYW1lID0gXCJlbWFpbFwiO1xyXG4gICAgICAgIHRoaXMuZW1haWxDaGVja2JveC5sYWJlbEtleSA9IFwiRW1haWxcIjtcclxuICAgICAgICB0aGlzLmVtYWlsQ2hlY2tib3gudmFsdWUgPSB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlckluZm9NYXBwaW5nLmVtYWlsO1xyXG5cclxuICAgICAgICB0aGlzLmVJZENoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZUlkQ2hlY2tib3gubmFtZSA9IFwiZUlkXCI7XHJcbiAgICAgICAgdGhpcy5lSWRDaGVja2JveC5sYWJlbEtleSA9IFwiRUlEXCI7XHJcbiAgICAgICAgdGhpcy5lSWRDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcuRUlEO1xyXG5cclxuICAgICAgICB0aGlzLm1vYmlsZUNoZWNrYm94ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICAgIHRoaXMubW9iaWxlQ2hlY2tib3gubmFtZSA9IFwibW9iaWxlXCI7XHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveC5sYWJlbEtleSA9IFwiTW9iaWxlXCI7XHJcbiAgICAgICAgdGhpcy5tb2JpbGVDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcubW9iaWxlO1xyXG5cclxuICAgICAgICB0aGlzLm5hdGlvbmFsaXR5Q2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94Lm5hbWUgPSBcIm5hdGlvbmFsaXR5XCI7XHJcbiAgICAgICAgdGhpcy5uYXRpb25hbGl0eUNoZWNrYm94LmxhYmVsS2V5ID0gXCJOYXRpb25hbGl0eVwiO1xyXG4gICAgICAgIHRoaXMubmF0aW9uYWxpdHlDaGVja2JveC52YWx1ZSA9IHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC51c2VySW5mb01hcHBpbmcubmF0aW9uYWxpdHk7XHJcblxyXG4gICAgICAgIHRoaXMuZ2VuZGVyQ2hlY2tib3ggPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5nZW5kZXJDaGVja2JveC5uYW1lID0gXCJnZW5kZXJcIjtcclxuICAgICAgICB0aGlzLmdlbmRlckNoZWNrYm94LmxhYmVsS2V5ID0gXCJHZW5kZXJcIjtcclxuICAgICAgICB0aGlzLmdlbmRlckNoZWNrYm94LnZhbHVlID0gdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLnVzZXJJbmZvTWFwcGluZy5nZW5kZXI7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0UGVybWlzc2lvblNldHMoKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlU09QUGVybWlzc2lvblRvZ2dsZVZhbHVlKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5lbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZyk7XHJcbiAgICAgICAgdGhpcy5vbkxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlVmFsdWUodGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmVuYWJsZUxpbmtpbmdFeGlzdGluZ1VzZXJzKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlQWNjZXNzTGV2ZWxzKHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5hY2Nlc3NMZXZlbHMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbk1vZGVsLmRlZmF1bHRQZXJtaXNzaW9uU2V0KVxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VQZXJtaXNzaW9uU2V0KHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Nb2RlbC5kZWZhdWx0UGVybWlzc2lvblNldCk7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEF1dGhlbnRpY2F0aW9uTW9kZS5BenVyZUFEOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5tb2RhbCwgeyBzaXplOiAneGwnIH0gYXMgTmdiTW9kYWxPcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldEFkZE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5lZGl0Rm9ybS52YWx1ZSBhcyBhbnk7XHJcbiAgICBsZXQgZWRpdE1vZGVsOiBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uID0gbmV3IEJCU0ZBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oKTtcclxuICAgIGVkaXRNb2RlbC5tb2RlSWQgPSB0aGlzLm1vZGVJZDtcclxuICAgIGVkaXRNb2RlbC51YWVQYXNzQ29uZmlnID0gdGhpcy5idWlsZFVBRVBhc3NDb25maWdPYmplY3QocmVzdWx0TW9kZWwpO1xyXG4gICAgcmV0dXJuIEFycmF5KGVkaXRNb2RlbCk7XHJcbiAgfTtcclxuXHJcbiAgZ2V0U3VibWl0RnVuY3Rpb24gPSAoZWRpdE1vZGVsOiBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25zU2VydmljZS51cGRhdGVBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25EYXRhKGVkaXRNb2RlbCk7XHJcbiAgfTtcclxuXHJcbiAgb25TdWNjZXNzSGFuZGxlciA9ICgpOiB2b2lkID0+IHtcclxuICAgIHRoaXMubWFzdGVyTGF5b3V0U2VydmljZS5yZWxvYWRDb21wb25lbnQoKTtcclxuICB9O1xyXG5cclxuICBidWlsZFVBRVBhc3NDb25maWdPYmplY3QoZm9ybVZhbHVlOiBhbnkpOiBVQUVQYXNzQ29uZmlndXJhdGlvbiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBiYXNlVXJsOiBmb3JtVmFsdWVbdGhpcy5iYXNlVVJMVGV4dEJveC5uYW1lXSxcclxuICAgICAgY2xpZW50SUQ6IGZvcm1WYWx1ZVt0aGlzLmNsaWVudElkVGV4dEJveC5uYW1lXSxcclxuICAgICAgc2VjcmV0S2V5OiBmb3JtVmFsdWVbdGhpcy5zZWNyZXRLZXlUZXh0Qm94Lm5hbWVdLFxyXG4gICAgICByZWRpcmVjdFVybDogZm9ybVZhbHVlW3RoaXMucmVkaXJlY3RVUkxUZXh0Qm94Lm5hbWVdLFxyXG4gICAgICBhY2Nlc3NMZXZlbHM6IGZvcm1WYWx1ZVt0aGlzLmFjY2Vzc0xldmVsRHJvcGRvd24ubmFtZV0sXHJcbiAgICAgIGVuYWJsZUxpbmtpbmdFeGlzdGluZ1VzZXJzOiBmb3JtVmFsdWVbdGhpcy5saW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZS5uYW1lXSxcclxuICAgICAgZW5hYmxlSW1wb3J0aW5nTmV3VXNlcjogZm9ybVZhbHVlW3RoaXMuaW1wb3J0aW5nTmV3VXNlclRvZ2dsZS5uYW1lXSxcclxuICAgICAgZW5hYmxlVXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpbjogZm9ybVZhbHVlW3RoaXMudXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZS5uYW1lXSxcclxuICAgICAgZGVmYXVsdFBlcm1pc3Npb25TZXQ6IGZvcm1WYWx1ZVt0aGlzLnVzZXJQZXJtaXNzaW9uU2V0RHJvcGRvd24ubmFtZV0sXHJcbiAgICAgIGVuYWJsZVNPUFBlcm1pc3Npb25NYXBwaW5nOiBmb3JtVmFsdWVbdGhpcy5zb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZS5uYW1lXSxcclxuICAgICAgdXNlclR5cGVQZXJtaXNzaW9uczogdGhpcy5idWlsZFVzZXJUeXBlUGVybWlzc2lvbigpLFxyXG4gICAgICB1c2VySW5mb01hcHBpbmc6IHRoaXMuYnVpbGRVc2VySW5mb01hcHBpbmcoZm9ybVZhbHVlKSxcclxuICAgICAgbGlua2luZ01vZGU6IGZvcm1WYWx1ZVt0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd24ubmFtZV0sXHJcbiAgICB9IGFzIFVBRVBhc3NDb25maWd1cmF0aW9uO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRVc2VySW5mb01hcHBpbmcoZm9ybVZhbHVlOiBhbnkpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWVFTjogZm9ybVZhbHVlW3RoaXMubmFtZUVuQ2hlY2tib3gubmFtZV0sXHJcbiAgICAgIG5hbWVBUjogZm9ybVZhbHVlW3RoaXMubmFtZUFyQ2hlY2tib3gubmFtZV0sXHJcbiAgICAgIGVtYWlsOiBmb3JtVmFsdWVbdGhpcy5lbWFpbENoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBFSUQ6IGZvcm1WYWx1ZVt0aGlzLmVJZENoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBtb2JpbGU6IGZvcm1WYWx1ZVt0aGlzLm1vYmlsZUNoZWNrYm94Lm5hbWVdLFxyXG4gICAgICBuYXRpb25hbGl0eTogZm9ybVZhbHVlW3RoaXMubmF0aW9uYWxpdHlDaGVja2JveC5uYW1lXSxcclxuICAgICAgZ2VuZGVyOiBmb3JtVmFsdWVbdGhpcy5nZW5kZXJDaGVja2JveC5uYW1lXVxyXG4gICAgfSBhcyBVQUVQYXNzVXNlckluZm9NYXBwaW5nO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRVc2VyVHlwZVBlcm1pc3Npb24oKTogVUFFUGFzc1VzZXJUeXBlUGVybWlzc2lvbltdIHtcclxuICAgIGxldCByZXNMaXN0OiBVQUVQYXNzVXNlclR5cGVQZXJtaXNzaW9uW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnNob3dVc2VyVHlwZVBlcm1pc3Npb25zTWFwcGluZykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWNjZXNzTGV2ZWxzLmZvckVhY2gobGV2ZWwgPT4ge1xyXG4gICAgICAgIHJlc0xpc3QucHVzaCh7XHJcbiAgICAgICAgICB1c2VyVHlwZTogbGV2ZWwsXHJcbiAgICAgICAgICBwZXJtaXNzaW9uczogdGhpcy5lZGl0Rm9ybS5jb250cm9sc1tgcGVybWlzc2lvbnMtdXNlci10eXBlLSR7bGV2ZWx9YF0/LnZhbHVlLFxyXG4gICAgICAgIH0gYXMgVUFFUGFzc1VzZXJUeXBlUGVybWlzc2lvbik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXNMaXN0O1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFVBRSBQYXNzIEZ1bmN0aW9uc1xyXG5cclxuICBvbkxpbmtpbmdFeGlzdGluZ1VzZXJzVG9nZ2xlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93VXNlclR5cGVMaW5raW5nTWFwcGluZyA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuc2hvd1VzZXJUeXBlTGlua2luZ01hcHBpbmcpXHJcbiAgICAgIHRoaXMuYWRkUmVxdWlyZWRWYWxpZGF0aW9uKFt0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd25dLCB0aGlzLmVkaXRGb3JtLCB0aGlzLmVkaXRGb3JtT3B0aW9ucyk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKFt0aGlzLmxpbmtpbmdNb2RlRHJvcGRvd25dLCB0aGlzLmVkaXRGb3JtLCB0aGlzLmVkaXRGb3JtT3B0aW9ucyk7XHJcblxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VTT1BQZXJtaXNzaW9uVG9nZ2xlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmcgPSB2YWx1ZTtcclxuICAgIGlmICghdGhpcy5zaG93VXNlclR5cGVQZXJtaXNzaW9uc01hcHBpbmcpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscy5mb3JFYWNoKGxldmVsID0+IHtcclxuICAgICAgICB0aGlzLnJlbW92ZUNvbnRyb2woYHBlcm1pc3Npb25zLXVzZXItdHlwZS0ke2xldmVsfWAsIHRoaXMuZWRpdEZvcm0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoYW5nZVBlcm1pc3Npb25TZXQoaWQ6IGFueSkge1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25zTGlzdCA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGlkcyA9IEFycmF5KGlkKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuTG9hZFBlcm1pc3Npb25zRHJvcERvd24oaWRzKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLnBlcm1pc3Npb25zTGlzdCA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFBlcm1pc3Npb25TZXRzKCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5nZXRQZXJtaXNzaW9uU2V0c0xpc3QoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0TGlzdCA9IHJlcy5wZXJtZXNzaW9uc2V0cztcclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvblNldERyb3Bkb3duLmRhdGFTb3VyY2UgPSB0aGlzLnBlcm1pc3Npb25TZXRMaXN0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpbml0RHJvcERvd25PcHRpb25zKHVzZXJUeXBlOiBhbnkpIHtcclxuICAgIHZhciBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5uYW1lID0gYHBlcm1pc3Npb25zLXVzZXItdHlwZS0ke3VzZXJUeXBlfWA7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLmxhYmVsVmFsdWUgPSB0aGlzLnRyYW5zbGF0ZShVQUVQYXNzVXNlclR5cGVzW3VzZXJUeXBlXSkgKyBcIi1cIiArIHRoaXMudHJhbnNsYXRlKFwiUGVybWlzc2lvbnNcIik7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLmlzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIHBlcm1pc3Npb25Ecm9wRG93bk9wdGlvbnMudmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsO1xyXG4gICAgcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucy5kYXRhU291cmNlID0gdGhpcy5wZXJtaXNzaW9uc0xpc3Q7XHJcbiAgICBwZXJtaXNzaW9uRHJvcERvd25PcHRpb25zLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNldFBlcm1pc3Npb25Gb3JVQUVQYXNzVXNlclR5cGVzKHVzZXJUeXBlKTtcclxuXHJcbiAgICByZXR1cm4gcGVybWlzc2lvbkRyb3BEb3duT3B0aW9ucztcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlQWNjZXNzTGV2ZWxzKHNlbGVjdGVkSXRlbXM6IGFueSkge1xyXG4gICAgbGV0IHVzZXJUeXBlc0tleXMgPSB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QubWFwKGl0ZW0gPT4geyByZXR1cm4gaXRlbS5rZXk7IH0pO1xyXG4gICAgdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscyA9IHNlbGVjdGVkSXRlbXM7XHJcblxyXG4gICAgbGV0IG5vdFNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEFjY2Vzc0xldmVscy5maWx0ZXIoaXRlbSA9PiB1c2VyVHlwZXNLZXlzLmluZGV4T2YoaXRlbSkgPCAwKTtcclxuICAgIG5vdFNlbGVjdGVkLmZvckVhY2goaSA9PiB7XHJcbiAgICAgIHRoaXMucmVtb3ZlQ29udHJvbChgcGVybWlzc2lvbnMtdXNlci10eXBlLSR7aX1gLCB0aGlzLmVkaXRGb3JtKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHNldFBlcm1pc3Npb25Gb3JVQUVQYXNzVXNlclR5cGVzKHVzZXJUeXBlOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uTW9kZWwudXNlclR5cGVQZXJtaXNzaW9ucy5maW5kKGkgPT4gaS51c2VyVHlwZSA9PSB1c2VyVHlwZSk/LnBlcm1pc3Npb25zO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiB2YWxpZGF0aW9uIGFjdGlvbnNcclxuXHJcbiAgYWRkUmVxdWlyZWRWYWxpZGF0aW9uKGN1c3RvbUNvbnRyb2xPcHRpb246IGFueVtdLCBmb3JtOiBGb3JtR3JvdXAsIGZvcm1PcHRpb25zOiBGb3JtT3B0aW9ucyk6IHZvaWQge1xyXG4gICAgY3VzdG9tQ29udHJvbE9wdGlvbi5mb3JFYWNoKGNvbnRyb2wgPT4ge1xyXG4gICAgICBpZiAoZm9ybS5nZXQoY29udHJvbC5OYW1lKSlcclxuICAgICAgICB0aGlzLmFkZFJlcXVpcmVkUnVsZShmb3JtLmdldChjb250cm9sLk5hbWUpLCBmb3JtT3B0aW9ucyk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBjb250cm9sLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24oY3VzdG9tQ29udHJvbE9wdGlvbjogYW55W10sIGZvcm06IEZvcm1Hcm91cCwgZm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zKTogdm9pZCB7XHJcbiAgICBjdXN0b21Db250cm9sT3B0aW9uLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgIGlmIChmb3JtLmdldChjb250cm9sLk5hbWUpKVxyXG4gICAgICAgIHRoaXMucmVtb3ZlUmVxdWlyZWRSdWxlKGZvcm0uZ2V0KGNvbnRyb2wuTmFtZSksIGZvcm1PcHRpb25zKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGNvbnRyb2wuSXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldEZvcm1Db250cm9sc1ZhbHVlKGN1c3RvbUNvbnRyb2xzT3B0aW9uczogYW55W10sIGZvcm06IEZvcm1Hcm91cCk6IHZvaWQge1xyXG4gICAgY3VzdG9tQ29udHJvbHNPcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcclxuICAgICAgbGV0IGZvcm1Db250cm9sID0gZm9ybS5nZXQob3B0aW9uLk5hbWUpO1xyXG4gICAgICBpZiAoZm9ybUNvbnRyb2wpXHJcbiAgICAgICAgZm9ybUNvbnRyb2wucmVzZXQoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuXHJcblxyXG4iLCI8bmctdGVtcGxhdGUgI2VkaXRNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cclxuICAgICAge3sgdHJhbnNsYXRlKCdFZGl0QXV0aENvbmZpZ3VyYXRpb24nKSB9fVxyXG4gICAgPC9oND5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNCBzdmctaWNvbi1ob3Zlci1icmFuZFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2Nsb3NlLW1vZGFsLnN2ZydcIj48L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiZWRpdEZvcm1PcHRpb25zXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZUlkID09IGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZS5VQUVQYXNzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiYmFzZVVSTFRleHRCb3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiY2xpZW50SWRUZXh0Qm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cInNlY3JldEtleVRleHRCb3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwicmVkaXJlY3RVUkxUZXh0Qm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlQWNjZXNzTGV2ZWxzKCRldmVudClcIiBbb3B0aW9uc109XCJhY2Nlc3NMZXZlbERyb3Bkb3duXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAob25DaGFuZ2UpPVwiY2hhbmdlUGVybWlzc2lvblNldCgkZXZlbnQpXCIgW29wdGlvbnNdPVwidXNlclBlcm1pc3Npb25TZXREcm9wZG93blwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZVxyXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkNoYW5nZVNPUFBlcm1pc3Npb25Ub2dnbGVWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJzb3BQZXJtaXNzaW9uTWFwcGluZ1RvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGVcclxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJsaW5raW5nRXhpc3RpbmdVc2Vyc1RvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uTGlua2luZ0V4aXN0aW5nVXNlcnNUb2dnbGVWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJpbXBvcnRpbmdOZXdVc2VyVG9nZ2xlXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwidXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpblRvZ2dsZVwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJhdGlvbi1oZWFkZXJcIiAqbmdJZj1cInNob3dVc2VyVHlwZVBlcm1pc3Npb25zTWFwcGluZ1wiPlxyXG4gICAgICAgICAgPGg1Pnt7IHRyYW5zbGF0ZSgnQWNjZXNzTGV2ZWxzUGVybWlzc2lvbk1hcHBpbmcnKSB9fTwvaDU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0Zvcj1cImxldCBsZXZlbCBvZiBzZWxlY3RlZEFjY2Vzc0xldmVsc1wiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJpbml0RHJvcERvd25PcHRpb25zKGxldmVsKVwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dVc2VyVHlwZUxpbmtpbmdNYXBwaW5nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJhdGlvbi1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGg1Pnt7IHRyYW5zbGF0ZSgnTGlua2luZ09wdGlvbnMnKSB9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdGb3I9XCJsZXQgbGV2ZWwgb2Ygc2VsZWN0ZWRBY2Nlc3NMZXZlbHNcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJsaW5raW5nTW9kZURyb3Bkb3duXCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmF0aW9uLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aDU+e3sgdHJhbnNsYXRlKCdMaW5raW5nQXR0cmlidXRlc09wdGlvbnMnKSB9fTwvaDU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm5hbWVBckNoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwibmFtZUVuQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJlbWFpbENoZWNrYm94XCIgW2dyb3VwXT1cImVkaXRGb3JtXCI+PC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiZUlkQ2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJtb2JpbGVDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm5hdGlvbmFsaXR5Q2hlY2tib3hcIiBbZ3JvdXBdPVwiZWRpdEZvcm1cIj48L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJnZW5kZXJDaGVja2JveFwiIFtncm91cF09XCJlZGl0Rm9ybVwiPjwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJtb2RlSWQgPT0gYXV0aGVudGljYXRpb25Nb2RlRW51bVZhbHVlLkF6dXJlQURcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgIHt7IHRyYW5zbGF0ZSgnQ2FuY2VsJykgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gYXBwUHJldmVudERvdWJsZUNsaWNrIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWJyYW5kXCI+XHJcbiAgICAgICAge3sgdHJhbnNsYXRlKCdTYXZlJykgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L0JCU0YtRm9ybT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -139,11 +139,11 @@ export class AuthenticationConfigurationComponent extends AppBaseComponent {
139
139
  loadAzureADConfigurationConfigurations() {
140
140
  }
141
141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AuthenticationConfigurationComponent, deps: [{ token: i0.Injector }, { token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i3.ConfigurationsService }, { token: i2.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AuthenticationConfigurationComponent, selector: "lib-auth-configuration", viewQueries: [{ propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }, { propertyName: "reloadConfirmationModalControl", first: true, predicate: ["reloadConfirmationModalControl"], descendants: true }, { propertyName: "editBoardMemberModal", first: true, predicate: ["editAuthConfigurationModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\"\r\n (click)=\"loadUAEPassConfigurations()\">{{utilityService.getResourceValue(\"UAEPassConfigurationData\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\" *ngIf=\"uaePassConfigurationIsLoaded\">\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"col-xl-12 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center \">\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light\r\n py-10 px-10 h-100\">\r\n\r\n <div class=\"w-100 mb-10\">\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('BaseUrl')}}</p>\r\n <span>{{uaePassConfiguration.baseUrl}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('ClientID')}}</p>\r\n <span>{{uaePassConfiguration.clientID}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('RedirectUrl')}}</p>\r\n <span>{{uaePassConfiguration.redirectUrl}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('DefaultPermissionSet')}}</p>\r\n <span>{{uaePassConfiguration.defaultPermissionSetLocalization}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('AccessLevels')}}</p>\r\n <span *ngFor=\"let level of uaePassConfiguration.accessLevels\">{{getUAEPassUserTypeValue(level)}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('EnableLinkingExistingUsers')}}</p>\r\n <span>{{uaePassConfiguration.enableLinkingExistingUsers ?\r\n utilityService.getResourceValue('True') : utilityService.getResourceValue('False')}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('EnableImportingNewUser')}}</p>\r\n <span>{{uaePassConfiguration.enableImportingNewUser ?\r\n utilityService.getResourceValue('True') : utilityService.getResourceValue('False')}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('EnableUpdateUserInformationOnLogin')}}</p>\r\n <span>{{uaePassConfiguration.enableUpdateUserInformationOnLogin ?\r\n utilityService.getResourceValue('True') : utilityService.getResourceValue('False')}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('EnableSOPPermissionMapping')}}</p>\r\n <span>{{uaePassConfiguration.enableSOPPermissionMapping ?\r\n utilityService.getResourceValue('True') : utilityService.getResourceValue('False')}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"uaePassConfiguration.enableLinkingExistingUsers\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('LinkingMode')}}</p>\r\n <span>{{getUAEPassLinkingModeValue(uaePassConfiguration.linkingMode)}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a (click)=\"showEditModal(authenticationModeEnumValues.UAEPass)\" routerLinkActive=\"router-link-active\"\r\n class=\"btn btn-primary btn-sm\">\r\n Edit <i class=\"fa fa-pen ms-1\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\"\r\n (click)=\"loadAzureADConfigurationConfigurations()\">{{utilityService.getResourceValue(\"AzureADConfigurationData\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-body py-3 px-0\">\r\n <p>\r\n Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth\r\n master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro\r\n keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat\r\n salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.\r\n </p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<auth-configuration-edit #editAuthConfigurationModal></auth-configuration-edit>\r\n<BBSF-ConfirmationModal *ngIf=\"reloadControlLoaded\" [options]=\"reloadConfirmationOptions\" id=\"reloadConfirmationModalControl\"\r\n #reloadConfirmationModalControl></BBSF-ConfirmationModal>", dependencies: [{ kind: "component", type: i4.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i7.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "directive", type: i8.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i8.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i8.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i8.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i8.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i8.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i8.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i9.EditAuthConfigurationComponent, selector: "auth-configuration-edit", inputs: ["pagingElement", "onSuccessTakePenaltyHandler"] }] }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: AuthenticationConfigurationComponent, selector: "lib-auth-configuration", viewQueries: [{ propertyName: "ConfirmationModalControl", first: true, predicate: ["ConfirmationModalControl"], descendants: true }, { propertyName: "reloadConfirmationModalControl", first: true, predicate: ["reloadConfirmationModalControl"], descendants: true }, { propertyName: "editBoardMemberModal", first: true, predicate: ["editAuthConfigurationModal"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadUAEPassConfigurations()\">{{\r\n utilityService.getResourceValue('UAEPassConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\" *ngIf=\"uaePassConfigurationIsLoaded\">\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"col-xl-12 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <div class=\"w-100 mb-10\">\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('BaseUrl') }}</p>\r\n <span>{{ uaePassConfiguration.baseUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('ClientID') }}</p>\r\n <span>{{ uaePassConfiguration.clientID }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('RedirectUrl') }}</p>\r\n <span>{{ uaePassConfiguration.redirectUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('DefaultPermissionSet') }}</p>\r\n <span>{{ uaePassConfiguration.defaultPermissionSetLocalization }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('AccessLevels') }}</p>\r\n <span *ngFor=\"let level of uaePassConfiguration.accessLevels\">{{ getUAEPassUserTypeValue(level) }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableLinkingExistingUsers') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableLinkingExistingUsers\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableImportingNewUser') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableImportingNewUser\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableUpdateUserInformationOnLogin') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableUpdateUserInformationOnLogin\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableSOPPermissionMapping') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableSOPPermissionMapping\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"uaePassConfiguration.enableLinkingExistingUsers\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('LinkingMode') }}</p>\r\n <span>{{ getUAEPassLinkingModeValue(uaePassConfiguration.linkingMode) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a\r\n (click)=\"showEditModal(authenticationModeEnumValues.UAEPass)\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"btn btn-primary btn-sm\">\r\n Edit <i class=\"fa fa-pen ms-1\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadAzureADConfigurationConfigurations()\">{{\r\n utilityService.getResourceValue('AzureADConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-body py-3 px-0\">\r\n <p>\r\n Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse.\r\n Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater\r\n eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american\r\n apparel, butcher voluptate nisi qui.\r\n </p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<auth-configuration-edit #editAuthConfigurationModal></auth-configuration-edit>\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"reloadControlLoaded\"\r\n [options]=\"reloadConfirmationOptions\"\r\n id=\"reloadConfirmationModalControl\"\r\n #reloadConfirmationModalControl></BBSF-ConfirmationModal>\r\n", dependencies: [{ kind: "component", type: i4.BlockUIComponent, selector: "block-ui", inputs: ["name", "message", "delayStart", "delayStop", "template"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i7.ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: ["options"] }, { kind: "directive", type: i8.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i8.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i8.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i8.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i8.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i8.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i8.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "component", type: i9.EditAuthConfigurationComponent, selector: "auth-configuration-edit", inputs: ["pagingElement", "onSuccessTakePenaltyHandler"] }] }); }
143
143
  }
144
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: AuthenticationConfigurationComponent, decorators: [{
145
145
  type: Component,
146
- args: [{ selector: 'lib-auth-configuration', template: "<block-ui></block-ui>\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\"\r\n (click)=\"loadUAEPassConfigurations()\">{{utilityService.getResourceValue(\"UAEPassConfigurationData\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\" *ngIf=\"uaePassConfigurationIsLoaded\">\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"col-xl-12 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center \">\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light\r\n py-10 px-10 h-100\">\r\n\r\n <div class=\"w-100 mb-10\">\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('BaseUrl')}}</p>\r\n <span>{{uaePassConfiguration.baseUrl}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('ClientID')}}</p>\r\n <span>{{uaePassConfiguration.clientID}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('RedirectUrl')}}</p>\r\n <span>{{uaePassConfiguration.redirectUrl}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('DefaultPermissionSet')}}</p>\r\n <span>{{uaePassConfiguration.defaultPermissionSetLocalization}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('AccessLevels')}}</p>\r\n <span *ngFor=\"let level of uaePassConfiguration.accessLevels\">{{getUAEPassUserTypeValue(level)}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('EnableLinkingExistingUsers')}}</p>\r\n <span>{{uaePassConfiguration.enableLinkingExistingUsers ?\r\n utilityService.getResourceValue('True') : utilityService.getResourceValue('False')}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('EnableImportingNewUser')}}</p>\r\n <span>{{uaePassConfiguration.enableImportingNewUser ?\r\n utilityService.getResourceValue('True') : utilityService.getResourceValue('False')}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('EnableUpdateUserInformationOnLogin')}}</p>\r\n <span>{{uaePassConfiguration.enableUpdateUserInformationOnLogin ?\r\n utilityService.getResourceValue('True') : utilityService.getResourceValue('False')}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('EnableSOPPermissionMapping')}}</p>\r\n <span>{{uaePassConfiguration.enableSOPPermissionMapping ?\r\n utilityService.getResourceValue('True') : utilityService.getResourceValue('False')}}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"uaePassConfiguration.enableLinkingExistingUsers\">\r\n <div class=\"readOnly-view\">\r\n <p>{{utilityService.getResourceValue('LinkingMode')}}</p>\r\n <span>{{getUAEPassLinkingModeValue(uaePassConfiguration.linkingMode)}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a (click)=\"showEditModal(authenticationModeEnumValues.UAEPass)\" routerLinkActive=\"router-link-active\"\r\n class=\"btn btn-primary btn-sm\">\r\n Edit <i class=\"fa fa-pen ms-1\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\"\r\n (click)=\"loadAzureADConfigurationConfigurations()\">{{utilityService.getResourceValue(\"AzureADConfigurationData\")}}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-body py-3 px-0\">\r\n <p>\r\n Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth\r\n master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro\r\n keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat\r\n salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.\r\n </p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<auth-configuration-edit #editAuthConfigurationModal></auth-configuration-edit>\r\n<BBSF-ConfirmationModal *ngIf=\"reloadControlLoaded\" [options]=\"reloadConfirmationOptions\" id=\"reloadConfirmationModalControl\"\r\n #reloadConfirmationModalControl></BBSF-ConfirmationModal>" }]
146
+ args: [{ selector: 'lib-auth-configuration', template: "<block-ui></block-ui>\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-body\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-line-tabs-2x border-transparent fs-5 fw-bolder\">\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadUAEPassConfigurations()\">{{\r\n utilityService.getResourceValue('UAEPassConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\" *ngIf=\"uaePassConfigurationIsLoaded\">\r\n <div class=\"card-body py-3 px-0\">\r\n <div class=\"col-xl-12 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <div class=\"w-100 mb-10\">\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('BaseUrl') }}</p>\r\n <span>{{ uaePassConfiguration.baseUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('ClientID') }}</p>\r\n <span>{{ uaePassConfiguration.clientID }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('RedirectUrl') }}</p>\r\n <span>{{ uaePassConfiguration.redirectUrl }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('DefaultPermissionSet') }}</p>\r\n <span>{{ uaePassConfiguration.defaultPermissionSetLocalization }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('AccessLevels') }}</p>\r\n <span *ngFor=\"let level of uaePassConfiguration.accessLevels\">{{ getUAEPassUserTypeValue(level) }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableLinkingExistingUsers') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableLinkingExistingUsers\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableImportingNewUser') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableImportingNewUser\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableUpdateUserInformationOnLogin') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableUpdateUserInformationOnLogin\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('EnableSOPPermissionMapping') }}</p>\r\n <span>{{\r\n uaePassConfiguration.enableSOPPermissionMapping\r\n ? utilityService.getResourceValue('True')\r\n : utilityService.getResourceValue('False')\r\n }}</span>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"uaePassConfiguration.enableLinkingExistingUsers\">\r\n <div class=\"readOnly-view\">\r\n <p>{{ utilityService.getResourceValue('LinkingMode') }}</p>\r\n <span>{{ getUAEPassLinkingModeValue(uaePassConfiguration.linkingMode) }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a\r\n (click)=\"showEditModal(authenticationModeEnumValues.UAEPass)\"\r\n routerLinkActive=\"router-link-active\"\r\n class=\"btn btn-primary btn-sm\">\r\n Edit <i class=\"fa fa-pen ms-1\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item mt-2\">\r\n <a ngbNavLink class=\"nav-link text-active-primary ms-0 me-10 py-5\" (click)=\"loadAzureADConfigurationConfigurations()\">{{\r\n utilityService.getResourceValue('AzureADConfigurationData')\r\n }}</a>\r\n <ng-template ngbNavContent>\r\n <div class=\"card\">\r\n <div class=\"card-body py-3 px-0\">\r\n <p>\r\n Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse.\r\n Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater\r\n eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american\r\n apparel, butcher voluptate nisi qui.\r\n </p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<auth-configuration-edit #editAuthConfigurationModal></auth-configuration-edit>\r\n<BBSF-ConfirmationModal\r\n *ngIf=\"reloadControlLoaded\"\r\n [options]=\"reloadConfirmationOptions\"\r\n id=\"reloadConfirmationModalControl\"\r\n #reloadConfirmationModalControl></BBSF-ConfirmationModal>\r\n" }]
147
147
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.PageInfoService }, { type: i2.UtilityService }, { type: i3.ConfigurationsService }, { type: i2.RequestHandlerService }], propDecorators: { ConfirmationModalControl: [{
148
148
  type: ViewChild,
149
149
  args: ['ConfirmationModalControl', { static: false }]
@@ -154,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
154
154
  type: ViewChild,
155
155
  args: ["editAuthConfigurationModal", { static: false }]
156
156
  }] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvY29uZmlndXJhdGlvbnMvYXV0aC1jb25maWd1cmF0aW9uL2F1dGgtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2F1dGgtY29uZmlndXJhdGlvbi9hdXRoLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQThCLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUE4QixNQUFNLHlCQUF5QixDQUFDO0FBRXBLLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ25JLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUlyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7Ozs7Ozs7Ozs7QUFNekksTUFBTSxPQUFPLG9DQUFxQyxTQUFRLGdCQUFnQjtJQTJDeEUsWUFBb0IsUUFBa0IsRUFDNUIsZUFBZ0MsRUFDakMsY0FBOEIsRUFDN0IscUJBQTRDLEVBQzVDLHFCQUE0QztRQUNwRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMRSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtR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Q0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSTlELG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZpbHRlckl0ZW0sIFRleHRCb3hPcHRpb25zLCBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMsIFN0eWxlQ29uZmlybWF0aW9uTW9kZSwgQXBwQmFzZUNvbXBvbmVudCwgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Db25maWd1cmF0aW9uc1NlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJCU0ZBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24sIFVBRVBhc3NDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Db25maWd1cmF0aW9uTW9kZWxzL0NvbmZpZ3VyYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRWRpdEF1dGhDb25maWd1cmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdC9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvbk1vZGUsIFVBRVBhc3NMaW5raW5nTW9kZSwgVUFFUGFzc1VzZXJUeXBlcyB9IGZyb20gJy4uLy4uL3NoYXJlZC9FbnVtcy9jb25maWd1cmF0aW9uL2F1dGhlbnRlY2F0aW9uLWNvbmZpZ3VyYXRpb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXV0aC1jb25maWd1cmF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXV0aC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIC8vI3JlZ2lvbiBwcm9wc1xyXG4gIGF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbk1vZGVsOiBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uID0gbmV3IEJCU0ZBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oKTtcclxuICB1YWVQYXNzQ29uZmlndXJhdGlvbjogVUFFUGFzc0NvbmZpZ3VyYXRpb24gPSBuZXcgVUFFUGFzc0NvbmZpZ3VyYXRpb24oKTtcclxuICB1YWVQYXNzQ29uZmlndXJhdGlvbklzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXV0aGVudGljYXRpb25Nb2RlRW51bVZhbHVlcyA9IEF1dGhlbnRpY2F0aW9uTW9kZTtcclxuXHJcbiAgdWFlUGFzc0xpbmtpbmdNb2RlRW51bTogVUFFUGFzc0xpbmtpbmdNb2RlO1xyXG4gIHVhZVBhc3NVc2VyVHlwZUVudW06IFVBRVBhc3NVc2VyVHlwZXM7XHJcblxyXG4gIHVhZVBhc3NVc2VyVHlwZUxpc3Q6IGFueVtdID0gW107XHJcbiAgdWFlUGFzc0xpbmtpbmdNb2RlTGlzdDogYW55W10gPSBbXTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFNob3dQYWdlQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEFwaVVybCA9IFwiL2FwaS9hZG1pbi9Db25maWd1cmF0aW9uL1wiO1xyXG4gIFByb2R1Y3Rpb25Nb2RlOiBib29sZWFuO1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBDb25maWd1cmF0aW9uRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHNlYXJjaFRleHRCb3g6IFRleHRCb3hPcHRpb25zO1xyXG4gIFRleHRJbnB1dEZpbHRlcjogRmlsdGVySXRlbTtcclxuICBjbGllbnRTaWRlUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAvL2RlbGV0ZSAgTW9kZWwgQ29udHJvbHNcclxuICBkZWxldGVDb25maWd1cmF0aW9uSWQ6IHN0cmluZztcclxuICBEZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG5cclxuICAvL1JlbG9hZCBKc29uIE1vZGVsIENvbnRyb2xzXHJcbiAgcmVsb2FkQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIHJlbG9hZENvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZChcImVkaXRBdXRoQ29uZmlndXJhdGlvbk1vZGFsXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGVkaXRCb2FyZE1lbWJlck1vZGFsOiBFZGl0QXV0aENvbmZpZ3VyYXRpb25Db21wb25lbnQ7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBDb25maWd1cmF0aW9uc1NlcnZpY2U6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBFdmVudHNcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLnRyYW5zbGF0ZShcIkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvblwiKVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZShcIkhvbWVcIiksXHJcbiAgICAgICAgcGF0aDogJy9BZG1pbi9Ib21lJyxcclxuICAgICAgICBpc1NlcGFyYXRvcjogZmFsc2UsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgcGF0aDogJycsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIF07XHJcblxyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcblxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBoZWxwZXJcclxuXHJcbiAgdHJhbnNsYXRlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoa2V5KTtcclxuICB9XHJcblxyXG4gIHNob3dFZGl0TW9kYWwgPSAobW9kZTogQXV0aGVudGljYXRpb25Nb2RlKSA9PiB7XHJcbiAgICB0aGlzLmVkaXRCb2FyZE1lbWJlck1vZGFsLnNob3dNb2RhbChtb2RlLCB0aGlzLmF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbk1vZGVsKTtcclxuICB9XHJcblxyXG4gIGxvYWRVQUVQYXNzVXNlclR5cGVzKCkge1xyXG4gICAgbGV0IGxpc3Q6IGFueVtdID0gW107XHJcbiAgICBmb3IgKHZhciBpdGVtIGluIFVBRVBhc3NVc2VyVHlwZXMpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IFVBRVBhc3NVc2VyVHlwZXNbaXRlbV1cclxuICAgICAgICB9IGFzIGFueSlcclxuICAgIH1cclxuICAgIHRoaXMudWFlUGFzc1VzZXJUeXBlTGlzdCA9IGxpc3Q7XHJcbiAgfVxyXG5cclxuICBsb2FkVUFFUGFzc0xpbmtpbmdNb2RlKCkge1xyXG4gICAgbGV0IGxpc3Q6IGFueVtdID0gW107XHJcbiAgICBmb3IgKHZhciBpdGVtIGluIFVBRVBhc3NMaW5raW5nTW9kZSkge1xyXG4gICAgICBpZiAocGFyc2VJbnQoaXRlbSkpXHJcbiAgICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICAgIGtleTogK2l0ZW0sXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy50cmFuc2xhdGUoVUFFUGFzc0xpbmtpbmdNb2RlW2l0ZW1dKVxyXG4gICAgICAgIH0gYXMgYW55KVxyXG4gICAgfVxyXG4gICAgdGhpcy51YWVQYXNzTGlua2luZ01vZGVMaXN0ID0gbGlzdDtcclxuICB9XHJcblxyXG4gIGdldFVBRVBhc3NVc2VyVHlwZVZhbHVlKGtleTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy51YWVQYXNzVXNlclR5cGVMaXN0LmZpbmQoaSA9PiBpLmtleSA9PSBrZXkpLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VUFFUGFzc0xpbmtpbmdNb2RlVmFsdWUoa2V5OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnVhZVBhc3NMaW5raW5nTW9kZUxpc3QuZmluZChpID0+IGkua2V5ID09IGtleSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgaW5pdGlhbGl6ZVBhZ2UoKSB7XHJcbiAgICB0aGlzLmxvYWRVQUVQYXNzQ29uZmlndXJhdGlvbnMoKTtcclxuICAgIHRoaXMubG9hZFVBRVBhc3NVc2VyVHlwZXMoKTtcclxuICAgIHRoaXMubG9hZFVBRVBhc3NMaW5raW5nTW9kZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFN0YXJ0IG9mICBSZWxvYWQgUmVzb3VyY2UgcGFydFxyXG4gIHNob3dSZWxvYWRSZXNvdXJjZU1vZGFsKCkge1xyXG4gICAgdGhpcy5yZWxvYWRDb250cm9sTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMgPSBuZXcgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zKCk7XHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMuc2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5yZWxvYWRKc29uRnVuY3Rpb247XHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMuY29uZmlybWF0aW9uQm9keSA9IHRoaXMudHJhbnNsYXRlKFwiUmVsb2FkQ29uZmlndXJhdGlvbnNDb25maXJtYXRpb25cIik7XHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMuY29uZmlybWF0aW9uSGVhZGVyID0gdGhpcy50cmFuc2xhdGUoXCJSZWxvYWRDb25maWd1cmF0aW9uc1wiKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5zdWJtaXRCdXR0b25UZXh0ID0gdGhpcy50cmFuc2xhdGUoXCJSZWxvYWRcIik7XHJcbiAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnMuc3R5bGVDb25maXJtYXRpb25Nb2RlID0gU3R5bGVDb25maXJtYXRpb25Nb2RlLkRhbmdlcjtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5zdWNjZXNzTm90aWZpY2F0aW9uTWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlKFwiU3VjY2Vzc01lc3NhZ2VcIik7XHJcbiAgICB0aGlzLnJlbG9hZENvbnRyb2xMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlbG9hZENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICByZWxvYWRKc29uRnVuY3Rpb24gPSAoKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5yZWxvYWRKc29uRmlsZSgpXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIFVBRVBhc3MgRnVuY3Rpb25zXHJcblxyXG4gIGxvYWRVQUVQYXNzQ29uZmlndXJhdGlvbnMoKSB7XHJcbiAgICB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uSXNMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLmdldEF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbkRhdGEoKVxyXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25Nb2RlbCA9IHJlcztcclxuICAgICAgICB0aGlzLnVhZVBhc3NDb25maWd1cmF0aW9uID0gcmVzLnVhZVBhc3NDb25maWc7XHJcbiAgICAgICAgdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbklzTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gQXp1cmVBRENvbmZpZ3VyYXRpb25EYXRhXHJcblxyXG4gIGxvYWRBenVyZUFEQ29uZmlndXJhdGlvbkNvbmZpZ3VyYXRpb25zKCkge1xyXG5cclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuXHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLWN1c3RvbS1oXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgIDx1bCBuZ2JOYXYgI25hdj1cIm5nYk5hdlwiIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMgbmF2LWxpbmUtdGFicy0yeCBib3JkZXItdHJhbnNwYXJlbnQgZnMtNSBmdy1ib2xkZXJcIj5cclxuICAgICAgICA8bGkgbmdiTmF2SXRlbSBjbGFzcz1cIm5hdi1pdGVtIG10LTJcIj5cclxuICAgICAgICAgIDxhIG5nYk5hdkxpbmsgY2xhc3M9XCJuYXYtbGluayB0ZXh0LWFjdGl2ZS1wcmltYXJ5IG1zLTAgbWUtMTAgcHktNVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJsb2FkVUFFUGFzc0NvbmZpZ3VyYXRpb25zKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJVQUVQYXNzQ29uZmlndXJhdGlvbkRhdGFcIil9fTwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiICpuZ0lmPVwidWFlUGFzc0NvbmZpZ3VyYXRpb25Jc0xvYWRlZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTEyIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1jZW50ZXIgcm91bmRlZC0zIGJnLWxpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgICBweS0xMCBweC0xMCBoLTEwMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgZnMtNiB0ZXh0LWdyYXktODAwIGZsZXgtZ3Jvdy0xIHBlLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdCYXNlVXJsJyl9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7dWFlUGFzc0NvbmZpZ3VyYXRpb24uYmFzZVVybH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnQ2xpZW50SUQnKX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t1YWVQYXNzQ29uZmlndXJhdGlvbi5jbGllbnRJRH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnUmVkaXJlY3RVcmwnKX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t1YWVQYXNzQ29uZmlndXJhdGlvbi5yZWRpcmVjdFVybH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRGVmYXVsdFBlcm1pc3Npb25TZXQnKX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t1YWVQYXNzQ29uZmlndXJhdGlvbi5kZWZhdWx0UGVybWlzc2lvblNldExvY2FsaXphdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnQWNjZXNzTGV2ZWxzJyl9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBsZXZlbCBvZiB1YWVQYXNzQ29uZmlndXJhdGlvbi5hY2Nlc3NMZXZlbHNcIj57e2dldFVBRVBhc3NVc2VyVHlwZVZhbHVlKGxldmVsKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnMnKX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t1YWVQYXNzQ29uZmlndXJhdGlvbi5lbmFibGVMaW5raW5nRXhpc3RpbmdVc2VycyA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1RydWUnKSA6IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0ZhbHNlJyl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VuYWJsZUltcG9ydGluZ05ld1VzZXInKX19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3t1YWVQYXNzQ29uZmlndXJhdGlvbi5lbmFibGVJbXBvcnRpbmdOZXdVc2VyID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHJ1ZScpIDogdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRmFsc2UnKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRW5hYmxlVXBkYXRlVXNlckluZm9ybWF0aW9uT25Mb2dpbicpfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3VhZVBhc3NDb25maWd1cmF0aW9uLmVuYWJsZVVwZGF0ZVVzZXJJbmZvcm1hdGlvbk9uTG9naW4gP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdUcnVlJykgOiB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGYWxzZScpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZycpfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3VhZVBhc3NDb25maWd1cmF0aW9uLmVuYWJsZVNPUFBlcm1pc3Npb25NYXBwaW5nID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHJ1ZScpIDogdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRmFsc2UnKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJ1YWVQYXNzQ29uZmlndXJhdGlvbi5lbmFibGVMaW5raW5nRXhpc3RpbmdVc2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0xpbmtpbmdNb2RlJyl9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Z2V0VUFFUGFzc0xpbmtpbmdNb2RlVmFsdWUodWFlUGFzc0NvbmZpZ3VyYXRpb24ubGlua2luZ01vZGUpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNob3dFZGl0TW9kYWwoYXV0aGVudGljYXRpb25Nb2RlRW51bVZhbHVlcy5VQUVQYXNzKVwiIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgPGkgY2xhc3M9XCJmYSBmYS1wZW4gbXMtMVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImxvYWRBenVyZUFEQ29uZmlndXJhdGlvbkNvbmZpZ3VyYXRpb25zKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBenVyZUFEQ29uZmlndXJhdGlvbkRhdGFcIil9fTwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktMyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgUmF3IGRlbmltIHlvdSBwcm9iYWJseSBoYXZlbid0IGhlYXJkIG9mIHRoZW0gamVhbiBzaG9ydHMgQXVzdGluLiBOZXNjaXVudCB0b2Z1IHN0dW1wdG93biBhbGlxdWEsIHJldHJvIHN5bnRoXHJcbiAgICAgICAgICAgICAgICAgIG1hc3RlciBjbGVhbnNlLiBNdXN0YWNoZSBjbGljaGUgdGVtcG9yLCB3aWxsaWFtc2J1cmcgY2FybGVzIHZlZ2FuIGhlbHZldGljYS4gUmVwcmVoZW5kZXJpdCBidXRjaGVyIHJldHJvXHJcbiAgICAgICAgICAgICAgICAgIGtlZmZpeWVoIGRyZWFtY2F0Y2hlciBzeW50aC4gQ29zYnkgc3dlYXRlciBldSBiYW5oIG1pLCBxdWkgaXJ1cmUgdGVycnkgcmljaGFyZHNvbiBleCBzcXVpZC4gQWxpcXVpcCBwbGFjZWF0XHJcbiAgICAgICAgICAgICAgICAgIHNhbHZpYSBjaWxsdW0gaXBob25lLiBTZWl0YW4gYWxpcXVpcCBxdWlzIGNhcmRpZ2FuIGFtZXJpY2FuIGFwcGFyZWwsIGJ1dGNoZXIgdm9sdXB0YXRlIG5pc2kgcXVpLlxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgICAgPGRpdiBbbmdiTmF2T3V0bGV0XT1cIm5hdlwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGF1dGgtY29uZmlndXJhdGlvbi1lZGl0ICNlZGl0QXV0aENvbmZpZ3VyYXRpb25Nb2RhbD48L2F1dGgtY29uZmlndXJhdGlvbi1lZGl0PlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cInJlbG9hZENvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJyZWxvYWRDb25maXJtYXRpb25PcHRpb25zXCIgaWQ9XCJyZWxvYWRDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIlxyXG4gICNyZWxvYWRDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvY29uZmlndXJhdGlvbnMvYXV0aC1jb25maWd1cmF0aW9uL2F1dGgtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL2NvbmZpZ3VyYXRpb25zL2F1dGgtY29uZmlndXJhdGlvbi9hdXRoLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQThCLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUE4QixNQUFNLHlCQUF5QixDQUFDO0FBRXBLLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ25JLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUlyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQzs7Ozs7Ozs7Ozs7QUFNekksTUFBTSxPQUFPLG9DQUFxQyxTQUFRLGdCQUFnQjtJQTJDeEUsWUFBb0IsUUFBa0IsRUFDNUIsZUFBZ0MsRUFDakMsY0FBOEIsRUFDN0IscUJBQTRDLEVBQzVDLHFCQUE0QztRQUNwRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFMRSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtR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QWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUk5RCxvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJJdGVtLCBUZXh0Qm94T3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBTdHlsZUNvbmZpcm1hdGlvbk1vZGUsIEFwcEJhc2VDb21wb25lbnQsIENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvQ29uZmlndXJhdGlvbnNTZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLCBVQUVQYXNzQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQ29uZmlndXJhdGlvbk1vZGVscy9Db25maWd1cmF0aW9uTW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVkaXRBdXRoQ29uZmlndXJhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYXV0aC1jb25maWd1cmF0aW9uLWVkaXQvYXV0aC1jb25maWd1cmF0aW9uLWVkaXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25Nb2RlLCBVQUVQYXNzTGlua2luZ01vZGUsIFVBRVBhc3NVc2VyVHlwZXMgfSBmcm9tICcuLi8uLi9zaGFyZWQvRW51bXMvY29uZmlndXJhdGlvbi9hdXRoZW50ZWNhdGlvbi1jb25maWd1cmF0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWF1dGgtY29uZmlndXJhdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dGgtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbkNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvLyNyZWdpb24gcHJvcHNcclxuICBhdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25Nb2RlbDogQkJTRkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiA9IG5ldyBCQlNGQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKCk7XHJcbiAgdWFlUGFzc0NvbmZpZ3VyYXRpb246IFVBRVBhc3NDb25maWd1cmF0aW9uID0gbmV3IFVBRVBhc3NDb25maWd1cmF0aW9uKCk7XHJcbiAgdWFlUGFzc0NvbmZpZ3VyYXRpb25Jc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZXMgPSBBdXRoZW50aWNhdGlvbk1vZGU7XHJcblxyXG4gIHVhZVBhc3NMaW5raW5nTW9kZUVudW06IFVBRVBhc3NMaW5raW5nTW9kZTtcclxuICB1YWVQYXNzVXNlclR5cGVFbnVtOiBVQUVQYXNzVXNlclR5cGVzO1xyXG5cclxuICB1YWVQYXNzVXNlclR5cGVMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHVhZVBhc3NMaW5raW5nTW9kZUxpc3Q6IGFueVtdID0gW107XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vUGFnZSByZXF1aXJlbWVudHNcclxuICBTaG93UGFnZUNvbnRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBBcGlVcmwgPSBcIi9hcGkvYWRtaW4vQ29uZmlndXJhdGlvbi9cIjtcclxuICBQcm9kdWN0aW9uTW9kZTogYm9vbGVhbjtcclxuXHJcbiAgLy9GaWx0ZXIgYW5kIHBhZ2luZyBjb21wb25lbnRzXHJcbiAgQ29uZmlndXJhdGlvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy9kZWxldGUgIE1vZGVsIENvbnRyb2xzXHJcbiAgZGVsZXRlQ29uZmlndXJhdGlvbklkOiBzdHJpbmc7XHJcbiAgRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9uczogQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zO1xyXG4gIGRlbGV0ZUNvbnRyb2xMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdDb25maXJtYXRpb25Nb2RhbENvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudDtcclxuXHJcbiAgLy9SZWxvYWQgSnNvbiBNb2RlbCBDb250cm9sc1xyXG4gIHJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICByZWxvYWRDb250cm9sTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3JlbG9hZENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHJlbG9hZENvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJlZGl0QXV0aENvbmZpZ3VyYXRpb25Nb2RhbFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBlZGl0Qm9hcmRNZW1iZXJNb2RhbDogRWRpdEF1dGhDb25maWd1cmF0aW9uQ29tcG9uZW50O1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgQ29uZmlndXJhdGlvbnNTZXJ2aWNlOiBDb25maWd1cmF0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gRXZlbnRzXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy50cmFuc2xhdGUoXCJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25cIik7XHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlKFwiSG9tZVwiKSxcclxuICAgICAgICBwYXRoOiAnL0FkbWluL0hvbWUnLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICBwYXRoOiAnJyxcclxuICAgICAgICBpc1NlcGFyYXRvcjogdHJ1ZSxcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2VcclxuICAgICAgfVxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8jcmVnaW9uIGhlbHBlclxyXG5cclxuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShrZXkpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0VkaXRNb2RhbCA9IChtb2RlOiBBdXRoZW50aWNhdGlvbk1vZGUpID0+IHtcclxuICAgIHRoaXMuZWRpdEJvYXJkTWVtYmVyTW9kYWwuc2hvd01vZGFsKG1vZGUsIHRoaXMuYXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uTW9kZWwpO1xyXG4gIH07XHJcblxyXG4gIGxvYWRVQUVQYXNzVXNlclR5cGVzKCkge1xyXG4gICAgbGV0IGxpc3Q6IGFueVtdID0gW107XHJcbiAgICBmb3IgKHZhciBpdGVtIGluIFVBRVBhc3NVc2VyVHlwZXMpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IFVBRVBhc3NVc2VyVHlwZXNbaXRlbV1cclxuICAgICAgICB9IGFzIGFueSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QgPSBsaXN0O1xyXG4gIH1cclxuXHJcbiAgbG9hZFVBRVBhc3NMaW5raW5nTW9kZSgpIHtcclxuICAgIGxldCBsaXN0OiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yICh2YXIgaXRlbSBpbiBVQUVQYXNzTGlua2luZ01vZGUpIHtcclxuICAgICAgaWYgKHBhcnNlSW50KGl0ZW0pKVxyXG4gICAgICAgIGxpc3QucHVzaCh7XHJcbiAgICAgICAgICBrZXk6ICtpdGVtLFxyXG4gICAgICAgICAgdmFsdWU6IHRoaXMudHJhbnNsYXRlKFVBRVBhc3NMaW5raW5nTW9kZVtpdGVtXSlcclxuICAgICAgICB9IGFzIGFueSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVhZVBhc3NMaW5raW5nTW9kZUxpc3QgPSBsaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2V0VUFFUGFzc1VzZXJUeXBlVmFsdWUoa2V5OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLnVhZVBhc3NVc2VyVHlwZUxpc3QuZmluZChpID0+IGkua2V5ID09IGtleSkudmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRVQUVQYXNzTGlua2luZ01vZGVWYWx1ZShrZXk6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMudWFlUGFzc0xpbmtpbmdNb2RlTGlzdC5maW5kKGkgPT4gaS5rZXkgPT0ga2V5KS52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIHRoaXMubG9hZFVBRVBhc3NDb25maWd1cmF0aW9ucygpO1xyXG4gICAgdGhpcy5sb2FkVUFFUGFzc1VzZXJUeXBlcygpO1xyXG4gICAgdGhpcy5sb2FkVUFFUGFzc0xpbmtpbmdNb2RlKCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gU3RhcnQgb2YgIFJlbG9hZCBSZXNvdXJjZSBwYXJ0XHJcbiAgc2hvd1JlbG9hZFJlc291cmNlTW9kYWwoKSB7XHJcbiAgICB0aGlzLnJlbG9hZENvbnRyb2xMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5zZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLnJlbG9hZEpzb25GdW5jdGlvbjtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25Cb2R5ID0gdGhpcy50cmFuc2xhdGUoXCJSZWxvYWRDb25maWd1cmF0aW9uc0NvbmZpcm1hdGlvblwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5jb25maXJtYXRpb25IZWFkZXIgPSB0aGlzLnRyYW5zbGF0ZShcIlJlbG9hZENvbmZpZ3VyYXRpb25zXCIpO1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLnN1Ym1pdEJ1dHRvblRleHQgPSB0aGlzLnRyYW5zbGF0ZShcIlJlbG9hZFwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uT3B0aW9ucy5zdHlsZUNvbmZpcm1hdGlvbk1vZGUgPSBTdHlsZUNvbmZpcm1hdGlvbk1vZGUuRGFuZ2VyO1xyXG4gICAgdGhpcy5yZWxvYWRDb25maXJtYXRpb25PcHRpb25zLnN1Y2Nlc3NOb3RpZmljYXRpb25NZXNzYWdlID0gdGhpcy50cmFuc2xhdGUoXCJTdWNjZXNzTWVzc2FnZVwiKTtcclxuICAgIHRoaXMucmVsb2FkQ29udHJvbExvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dNb2RhbCgpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIHJlbG9hZEpzb25GdW5jdGlvbiA9ICgpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQ29uZmlndXJhdGlvbnNTZXJ2aWNlLnJlbG9hZEpzb25GaWxlKCk7XHJcbiAgfTtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBVQUVQYXNzIEZ1bmN0aW9uc1xyXG5cclxuICBsb2FkVUFFUGFzc0NvbmZpZ3VyYXRpb25zKCkge1xyXG4gICAgdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbklzTG9hZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRpb25zU2VydmljZS5nZXRBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb25EYXRhKClcclxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uTW9kZWwgPSByZXM7XHJcbiAgICAgICAgdGhpcy51YWVQYXNzQ29uZmlndXJhdGlvbiA9IHJlcy51YWVQYXNzQ29uZmlnO1xyXG4gICAgICAgIHRoaXMudWFlUGFzc0NvbmZpZ3VyYXRpb25Jc0xvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEF6dXJlQURDb25maWd1cmF0aW9uRGF0YVxyXG5cclxuICBsb2FkQXp1cmVBRENvbmZpZ3VyYXRpb25Db25maWd1cmF0aW9ucygpIHtcclxuXHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICA8dWwgbmdiTmF2ICNuYXY9XCJuZ2JOYXZcIiBjbGFzcz1cIm5hdiBuYXYtc3RyZXRjaCBuYXYtbGluZS10YWJzIG5hdi1saW5lLXRhYnMtMnggYm9yZGVyLXRyYW5zcGFyZW50IGZzLTUgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbSBtdC0yXCI+XHJcbiAgICAgICAgICA8YSBuZ2JOYXZMaW5rIGNsYXNzPVwibmF2LWxpbmsgdGV4dC1hY3RpdmUtcHJpbWFyeSBtcy0wIG1lLTEwIHB5LTVcIiAoY2xpY2spPVwibG9hZFVBRVBhc3NDb25maWd1cmF0aW9ucygpXCI+e3tcclxuICAgICAgICAgICAgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVUFFUGFzc0NvbmZpZ3VyYXRpb25EYXRhJylcclxuICAgICAgICAgIH19PC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCIgKm5nSWY9XCJ1YWVQYXNzQ29uZmlndXJhdGlvbklzTG9hZGVkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zIHB4LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtMTIgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtY2VudGVyIHJvdW5kZWQtMyBiZy1saWdodCBweS0xMCBweC0xMCBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtZ3JheS04MDAgZmxleC1ncm93LTEgcGUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdCYXNlVXJsJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1YWVQYXNzQ29uZmlndXJhdGlvbi5iYXNlVXJsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NsaWVudElEJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1YWVQYXNzQ29uZmlndXJhdGlvbi5jbGllbnRJRCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdSZWRpcmVjdFVybCcpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdWFlUGFzc0NvbmZpZ3VyYXRpb24ucmVkaXJlY3RVcmwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRGVmYXVsdFBlcm1pc3Npb25TZXQnKSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHVhZVBhc3NDb25maWd1cmF0aW9uLmRlZmF1bHRQZXJtaXNzaW9uU2V0TG9jYWxpemF0aW9uIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0FjY2Vzc0xldmVscycpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGxldmVsIG9mIHVhZVBhc3NDb25maWd1cmF0aW9uLmFjY2Vzc0xldmVsc1wiPnt7IGdldFVBRVBhc3NVc2VyVHlwZVZhbHVlKGxldmVsKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFbmFibGVMaW5raW5nRXhpc3RpbmdVc2VycycpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWFlUGFzc0NvbmZpZ3VyYXRpb24uZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1RydWUnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRmFsc2UnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnRW5hYmxlSW1wb3J0aW5nTmV3VXNlcicpIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWFlUGFzc0NvbmZpZ3VyYXRpb24uZW5hYmxlSW1wb3J0aW5nTmV3VXNlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHJ1ZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGYWxzZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkT25seS12aWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdFbmFibGVVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YWVQYXNzQ29uZmlndXJhdGlvbi5lbmFibGVVcGRhdGVVc2VySW5mb3JtYXRpb25PbkxvZ2luXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdUcnVlJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0ZhbHNlJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRPbmx5LXZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7IHV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0VuYWJsZVNPUFBlcm1pc3Npb25NYXBwaW5nJykgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YWVQYXNzQ29uZmlndXJhdGlvbi5lbmFibGVTT1BQZXJtaXNzaW9uTWFwcGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnVHJ1ZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdGYWxzZScpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwidWFlUGFzc0NvbmZpZ3VyYXRpb24uZW5hYmxlTGlua2luZ0V4aXN0aW5nVXNlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVhZE9ubHktdmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgdXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnTGlua2luZ01vZGUnKSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdldFVBRVBhc3NMaW5raW5nTW9kZVZhbHVlKHVhZVBhc3NDb25maWd1cmF0aW9uLmxpbmtpbmdNb2RlKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdE1vZGFsKGF1dGhlbnRpY2F0aW9uTW9kZUVudW1WYWx1ZXMuVUFFUGFzcylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQgPGkgY2xhc3M9XCJmYSBmYS1wZW4gbXMtMVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW0gbXQtMlwiPlxyXG4gICAgICAgICAgPGEgbmdiTmF2TGluayBjbGFzcz1cIm5hdi1saW5rIHRleHQtYWN0aXZlLXByaW1hcnkgbXMtMCBtZS0xMCBweS01XCIgKGNsaWNrKT1cImxvYWRBenVyZUFEQ29uZmlndXJhdGlvbkNvbmZpZ3VyYXRpb25zKClcIj57e1xyXG4gICAgICAgICAgICB1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBenVyZUFEQ29uZmlndXJhdGlvbkRhdGEnKVxyXG4gICAgICAgICAgfX08L2E+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTMgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgIFJhdyBkZW5pbSB5b3UgcHJvYmFibHkgaGF2ZW4ndCBoZWFyZCBvZiB0aGVtIGplYW4gc2hvcnRzIEF1c3Rpbi4gTmVzY2l1bnQgdG9mdSBzdHVtcHRvd24gYWxpcXVhLCByZXRybyBzeW50aCBtYXN0ZXIgY2xlYW5zZS5cclxuICAgICAgICAgICAgICAgICAgTXVzdGFjaGUgY2xpY2hlIHRlbXBvciwgd2lsbGlhbXNidXJnIGNhcmxlcyB2ZWdhbiBoZWx2ZXRpY2EuIFJlcHJlaGVuZGVyaXQgYnV0Y2hlciByZXRybyBrZWZmaXllaCBkcmVhbWNhdGNoZXIgc3ludGguIENvc2J5IHN3ZWF0ZXJcclxuICAgICAgICAgICAgICAgICAgZXUgYmFuaCBtaSwgcXVpIGlydXJlIHRlcnJ5IHJpY2hhcmRzb24gZXggc3F1aWQuIEFsaXF1aXAgcGxhY2VhdCBzYWx2aWEgY2lsbHVtIGlwaG9uZS4gU2VpdGFuIGFsaXF1aXAgcXVpcyBjYXJkaWdhbiBhbWVyaWNhblxyXG4gICAgICAgICAgICAgICAgICBhcHBhcmVsLCBidXRjaGVyIHZvbHVwdGF0ZSBuaXNpIHF1aS5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxhdXRoLWNvbmZpZ3VyYXRpb24tZWRpdCAjZWRpdEF1dGhDb25maWd1cmF0aW9uTW9kYWw+PC9hdXRoLWNvbmZpZ3VyYXRpb24tZWRpdD5cclxuPEJCU0YtQ29uZmlybWF0aW9uTW9kYWxcclxuICAqbmdJZj1cInJlbG9hZENvbnRyb2xMb2FkZWRcIlxyXG4gIFtvcHRpb25zXT1cInJlbG9hZENvbmZpcm1hdGlvbk9wdGlvbnNcIlxyXG4gIGlkPVwicmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sXCJcclxuICAjcmVsb2FkQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuIl19