@bnsights/bbsf-admin-portal 1.1.2 → 1.1.3
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.
- package/README.md +4 -0
- package/{esm2020 → esm2022}/bnsights-bbsf-admin-portal.mjs +4 -4
- package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directories.component.mjs +14 -14
- package/esm2022/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +421 -0
- package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +528 -0
- package/{esm2020 → esm2022}/lib/Pages/ActiveDirectories/active-directory-routing.module.mjs +29 -29
- package/esm2022/lib/Pages/ActiveDirectories/active-directory.module.mjs +108 -0
- package/esm2022/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +23 -0
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/aside/aside.component.mjs +65 -65
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/content/content.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/footer/footer.component.mjs +32 -32
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/header.component.mjs +57 -57
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/header/page-title/page-title.component.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/scripts-init/scripts-init.component.mjs +58 -58
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.component.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/subheader/subheader.module.mjs +26 -26
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.component.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/toolbar/toolbar.module.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/_layout/components/topbar/topbar.component.mjs +71 -71
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/activation/activation.component.mjs +92 -92
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout-routing.module.mjs +37 -37
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/anonymouslayout.component.mjs +54 -54
- package/esm2022/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +100 -0
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/error/error.component.mjs +48 -48
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.mjs +59 -59
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/login/login.component.mjs +94 -94
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/rest-password/rest-password.component.mjs +90 -90
- package/{esm2020 → esm2022}/lib/Pages/anonymouslayout/upload-license/upload-license.component.mjs +71 -71
- package/{esm2020 → esm2022}/lib/Pages/authentication/auth-callback/auth-callback.component.mjs +43 -43
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/authentication/authentication.routing.mjs +31 -31
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +330 -0
- package/esm2022/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +157 -0
- package/esm2022/lib/Pages/configurations/configuration/configuration.component.mjs +801 -0
- package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.component.mjs +15 -15
- package/esm2022/lib/Pages/configurations/configurations.module.mjs +104 -0
- package/{esm2020 → esm2022}/lib/Pages/configurations/configurations.routing.mjs +41 -41
- package/{esm2020 → esm2022}/lib/Pages/configurations/index.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/core/auth.module.mjs +30 -30
- package/esm2022/lib/Pages/core/authentication/admin.guard.mjs +17 -0
- package/{esm2020 → esm2022}/lib/Pages/core/authentication/auth.guard.mjs +46 -46
- package/esm2022/lib/Pages/core/authentication/auth.service.mjs +147 -0
- package/esm2022/lib/Pages/departments/department/department.component.mjs +220 -0
- package/esm2022/lib/Pages/departments/department-info/department-info.component.mjs +185 -0
- package/{esm2020 → esm2022}/lib/Pages/departments/departments-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/departments/departments.component.mjs +15 -15
- package/esm2022/lib/Pages/departments/departments.module.mjs +94 -0
- package/esm2022/lib/Pages/documents/add-document/add-document.component.mjs +136 -0
- package/esm2022/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +148 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/document-template-info/document-template-info.component.mjs +332 -332
- package/esm2022/lib/Pages/documents/document-templates/document-templates.component.mjs +437 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/documents.component.mjs +15 -15
- package/esm2022/lib/Pages/documents/documents.module.mjs +114 -0
- package/esm2022/lib/Pages/documents/documents.routing.mjs +37 -0
- package/esm2022/lib/Pages/documents/edit-document/edit-document.component.mjs +169 -0
- package/{esm2020 → esm2022}/lib/Pages/documents/edit-document-template/edit-document-template.component.mjs +123 -123
- package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.component.mjs +31 -31
- package/{esm2020 → esm2022}/lib/Pages/empty-data/empty-data.module.mjs +28 -28
- package/esm2022/lib/Pages/helpCenter/help-center/help-center.component.mjs +294 -0
- package/esm2022/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +43 -0
- package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-center-routing.module.mjs +31 -31
- package/esm2022/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +242 -0
- package/esm2022/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +243 -0
- package/esm2022/lib/Pages/helpCenter/help-center.module.mjs +99 -0
- package/{esm2020 → esm2022}/lib/Pages/helpCenter/help-centers.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/home/filter-pipe.mjs +23 -23
- package/esm2022/lib/Pages/home/home.component.mjs +158 -0
- package/esm2022/lib/Pages/home/home.module.mjs +48 -0
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +443 -0
- package/esm2022/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +95 -0
- package/esm2022/lib/Pages/jobs/jobs/jobs.component.mjs +223 -0
- package/esm2022/lib/Pages/jobs/jobs.module.mjs +87 -0
- package/{esm2020 → esm2022}/lib/Pages/license/license/license.component.mjs +163 -163
- package/esm2022/lib/Pages/license/license.module.mjs +71 -0
- package/{esm2020 → esm2022}/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.mjs +215 -215
- package/esm2022/lib/Pages/localizations/localizations.component.mjs +516 -0
- package/esm2022/lib/Pages/localizations/localizations.module.mjs +79 -0
- package/{esm2020 → esm2022}/lib/Pages/logs/log/log.component.mjs +93 -93
- package/{esm2020 → esm2022}/lib/Pages/logs/logs-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/logs/logs.component.mjs +15 -15
- package/esm2022/lib/Pages/logs/logs.module.mjs +87 -0
- package/esm2022/lib/Pages/lookups/lookup/lookup.component.mjs +367 -0
- package/esm2022/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +187 -0
- package/esm2022/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +297 -0
- package/{esm2020 → esm2022}/lib/Pages/lookups/lookups-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/lookups/lookups.component.mjs +15 -15
- package/esm2022/lib/Pages/lookups/lookups.module.mjs +100 -0
- package/esm2022/lib/Pages/notifications/add-notification/add-notification.component.mjs +104 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/edit-email/edit-email.component.mjs +158 -158
- package/esm2022/lib/Pages/notifications/edit-notification/edit-notification.component.mjs +133 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/edit-sms/edit-sms.component.mjs +115 -115
- package/esm2022/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +148 -0
- package/esm2022/lib/Pages/notifications/notifications-routing.module.mjs +39 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/notifications.component.mjs +15 -15
- package/esm2022/lib/Pages/notifications/notifications.module.mjs +101 -0
- package/{esm2020 → esm2022}/lib/Pages/notifications/template-info/template-info.component.mjs +391 -391
- package/esm2022/lib/Pages/notifications/templates/templates.component.mjs +495 -0
- package/esm2022/lib/Pages/providers/provider/provider.component.mjs +615 -0
- package/{esm2020 → esm2022}/lib/Pages/providers/providers-routing.module.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Pages/providers/providers.component.mjs +15 -15
- package/esm2022/lib/Pages/providers/providers.module.mjs +91 -0
- package/esm2022/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +334 -0
- package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays-routing.module.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/publicHolidays/public-holidays.component.mjs +15 -15
- package/esm2022/lib/Pages/publicHolidays/public-holidays.module.mjs +94 -0
- package/esm2022/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +187 -0
- package/esm2022/lib/Pages/roles/permissions/permissions.component.mjs +226 -0
- package/esm2022/lib/Pages/roles/permissionsets/permissionsets.component.mjs +277 -0
- package/{esm2020 → esm2022}/lib/Pages/roles/roles-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/roles/roles.component.mjs +15 -15
- package/esm2022/lib/Pages/roles/roles.module.mjs +105 -0
- package/esm2022/lib/Pages/sectors/sector/sector.component.mjs +193 -0
- package/esm2022/lib/Pages/sectors/sector-info/sector-info.component.mjs +180 -0
- package/esm2022/lib/Pages/sectors/sectors-department-info/sectors-department-info.component.mjs +187 -0
- package/{esm2020 → esm2022}/lib/Pages/sectors/sectors-routing.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/sectors/sectors.component.mjs +15 -15
- package/esm2022/lib/Pages/sectors/sectors.module.mjs +96 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ADType.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/Enums.mjs +54 -54
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/ProviderType.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/WFActivityType.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/ConditionRHSType.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/Enums/configuration/authentecation-configuration.mjs +18 -18
- package/{esm2020 → esm2022}/lib/Pages/shared/Pipes/survey-date.pipe.mjs +22 -22
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/AccountService.service.mjs +55 -55
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ActiveDirectoryService.service.mjs +51 -51
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/AnonymousLayoutService.service.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ConfigurationsService.service.mjs +61 -61
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DepartmentService.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/DocumentTemplateService.service.mjs +81 -81
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.mjs +37 -37
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ErrorService.service.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/GlobalErrorHandler.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/HelpCenterService.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/HttpErrorInterceptor.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/ImpersonationRuleService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/JobsService.service.mjs +21 -21
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LicenseService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LogsService.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupGroupsService.service.mjs +33 -33
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/LookupService.service.mjs +67 -67
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionSetService.service.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PermissionsService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/PublicHolidayService.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/SectorService.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/TemplateService.service.mjs +90 -90
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkFlowVersionService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowActivityService.service.mjs +54 -54
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowInstanceService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowLogVariablesService.service.mjs +24 -24
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowService.service.mjs +38 -38
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/WorkflowVariablesService.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/data.service.mjs +27 -27
- package/esm2022/lib/Pages/shared/Services/injectionModuleService.service.mjs +163 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/localizationsService.service .mjs +77 -77
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/provider.service.mjs +62 -62
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey-question.service.mjs +57 -57
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/survey.service.mjs +140 -140
- package/{esm2020 → esm2022}/lib/Pages/shared/Services/userService.service.mjs +80 -80
- package/{esm2020 → esm2022}/lib/Pages/shared/base.service.mjs +19 -19
- package/{esm2020 → esm2022}/lib/Pages/shared/components/AdDirective.mjs +16 -16
- package/{esm2020 → esm2022}/lib/Pages/shared/components/external-url/external-url.component.mjs +168 -168
- package/{esm2020 → esm2022}/lib/Pages/shared/components/no-results/no-results.component.mjs +19 -19
- package/esm2022/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +192 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.mjs +48 -48
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.mjs +217 -217
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.mjs +49 -49
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.mjs +624 -624
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.mjs +47 -47
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.mjs +683 -683
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/preview/preview.component.mjs +138 -138
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.mjs +102 -102
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/result-question/result.component.mjs +56 -56
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs +532 -532
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.mjs +113 -113
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.mjs +114 -114
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey.component.mjs +292 -292
- package/esm2022/lib/Pages/shared/components/survey-form/survey-form.component.mjs +696 -0
- package/esm2022/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +84 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/components/survey-layout/survey-layout.component.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Pages/shared/config/environment.mjs +11 -11
- package/esm2022/lib/Pages/shared/constants.mjs +130 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/filter/filter.component.mjs +14 -14
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ADMappingModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/AccountModels/forgotPasswordModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.mjs +50 -50
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/JobModels/JobCountsModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LicenseModel/LicenseModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/EditResourceModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupGroupModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupItem.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/Lookups/LookupModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateDTO.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/ProviderModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SectorModels/SectorModel.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey-submissio.mjs +13 -13
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/add-survey.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/model.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-field-options.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-filed-value.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-form-options.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-publish.mjs +4 -4
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question-option.mjs +17 -17
- package/{esm2020 → esm2022}/lib/Pages/shared/models/SurveyModels/survey-question.mjs +10 -10
- package/esm2022/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +8 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/ActivationModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/AddUserModel.mjs +36 -36
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/DropdownsResponseModel.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/EditUserModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/IdentityModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UserSearchParamDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/UserModels/UsersIDRequestModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityModel.mjs +16 -16
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFCreationModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Pages/shared/models/WorkflowModels/WFVariableModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Pages/shared/models/user.registration.mjs +7 -7
- package/esm2022/lib/Pages/shared/modules/public-survey.module.mjs +68 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/modules/survey-routing.module.mjs +39 -39
- package/esm2022/lib/Pages/shared/modules/survey.module.mjs +129 -0
- package/esm2022/lib/Pages/shared/shared.module.mjs +31 -0
- package/{esm2020 → esm2022}/lib/Pages/shared/stylesbundle.service.mjs +44 -44
- package/{esm2020 → esm2022}/lib/Pages/start/index/index.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/Pages/start/start-routing.module.mjs +22 -22
- package/{esm2020 → esm2022}/lib/Pages/start/start.module.mjs +31 -31
- package/esm2022/lib/Pages/users/users.component.mjs +806 -0
- package/esm2022/lib/Pages/users/users.module.mjs +86 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.mjs +535 -535
- package/{esm2020 → esm2022}/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.mjs +840 -840
- package/{esm2020 → esm2022}/lib/Pages/workflows/instance-info/instance-info.component.mjs +302 -302
- package/esm2022/lib/Pages/workflows/tabs/tabs.component.mjs +793 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/version-info/version-info.component.mjs +137 -137
- package/esm2022/lib/Pages/workflows/workflow/workflow.component.mjs +209 -0
- package/{esm2020 → esm2022}/lib/Pages/workflows/workflows-routing.module.mjs +35 -35
- package/{esm2020 → esm2022}/lib/Pages/workflows/workflows.component.mjs +15 -15
- package/esm2022/lib/Pages/workflows/workflows.module.mjs +103 -0
- package/{esm2020 → esm2022}/lib/_metronic/configs/default-layout.config.mjs +95 -95
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/DomHelpers.mjs +270 -270
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/ElementAnimateUtil.mjs +166 -166
- package/esm2022/lib/_metronic/core/_utils/EventHandlerUtil.mjs +90 -0
- package/esm2022/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +49 -0
- package/esm2022/lib/_metronic/core/_utils/_DataUtil.mjs +48 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_ElementStyleUtil.mjs +16 -16
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/_TypesHelpers.mjs +48 -48
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/OffsetModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/_metronic/core/_utils/models/ViewPortModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/_metronic/core/components/MenuComponent.mjs +827 -827
- package/{esm2020 → esm2022}/lib/_metronic/core/components/_CookieComponent.mjs +52 -52
- package/esm2022/lib/_metronic/core/components/_DrawerComponent.mjs +288 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/components/_ScrollComponent.mjs +252 -252
- package/esm2022/lib/_metronic/core/components/_ScrollTopComponent.mjs +113 -0
- package/esm2022/lib/_metronic/core/components/_ToggleComponent.mjs +157 -0
- package/{esm2020 → esm2022}/lib/_metronic/core/services/layout-init.service.mjs +155 -155
- package/{esm2020 → esm2022}/lib/_metronic/core/services/layout.service.mjs +150 -150
- package/esm2022/lib/_metronic/core/services/page-info.service.mjs +119 -0
- package/esm2022/lib/masterlayout-routing.module.mjs +41 -0
- package/{esm2020 → esm2022}/lib/masterlayout.component.mjs +118 -118
- package/esm2022/lib/masterlayout.module.mjs +188 -0
- package/{esm2020 → esm2022}/public-api.mjs +48 -48
- package/{fesm2020 → fesm2022}/bnsights-bbsf-admin-portal.mjs +26884 -26881
- package/fesm2022/bnsights-bbsf-admin-portal.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/Pages/ActiveDirectories/active-directories.component.d.ts +8 -8
- package/lib/Pages/ActiveDirectories/active-directory/active-directory.component.d.ts +85 -87
- package/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.d.ts +97 -99
- package/lib/Pages/ActiveDirectories/active-directory-routing.module.d.ts +7 -7
- package/lib/Pages/ActiveDirectories/active-directory.module.d.ts +26 -26
- package/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.d.ts +13 -13
- package/lib/Pages/_layout/components/aside/aside.component.d.ts +24 -24
- package/lib/Pages/_layout/components/content/content.component.d.ts +13 -13
- package/lib/Pages/_layout/components/footer/footer.component.d.ts +14 -14
- package/lib/Pages/_layout/components/header/header.component.d.ts +24 -24
- package/lib/Pages/_layout/components/header/page-title/page-title.component.d.ts +22 -22
- package/lib/Pages/_layout/components/scripts-init/scripts-init.component.d.ts +18 -18
- package/lib/Pages/_layout/components/subheader/subheader.component.d.ts +17 -17
- package/lib/Pages/_layout/components/subheader/subheader.module.d.ts +9 -9
- package/lib/Pages/_layout/components/toolbar/toolbar.component.d.ts +18 -18
- package/lib/Pages/_layout/components/toolbar/toolbar.module.d.ts +10 -10
- package/lib/Pages/_layout/components/topbar/topbar.component.d.ts +44 -44
- package/lib/Pages/anonymouslayout/activation/activation.component.d.ts +32 -32
- package/lib/Pages/anonymouslayout/anonymouslayout-routing.module.d.ts +7 -7
- package/lib/Pages/anonymouslayout/anonymouslayout.component.d.ts +24 -24
- package/lib/Pages/anonymouslayout/anonymouslayout.module.d.ts +21 -21
- package/lib/Pages/anonymouslayout/error/error.component.d.ts +25 -25
- package/lib/Pages/anonymouslayout/forgot-password/forgot-password.component.d.ts +24 -24
- package/lib/Pages/anonymouslayout/login/login.component.d.ts +36 -36
- package/lib/Pages/anonymouslayout/rest-password/rest-password.component.d.ts +32 -32
- package/lib/Pages/anonymouslayout/upload-license/upload-license.component.d.ts +25 -25
- package/lib/Pages/authentication/auth-callback/auth-callback.component.d.ts +21 -21
- package/lib/Pages/authentication/authentication.component.d.ts +8 -8
- package/lib/Pages/authentication/authentication.module.d.ts +12 -12
- package/lib/Pages/authentication/authentication.routing.d.ts +7 -7
- package/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.d.ts +75 -75
- package/lib/Pages/configurations/auth-configuration/auth-configuration.component.d.ts +57 -58
- package/lib/Pages/configurations/configuration/configuration.component.d.ts +127 -129
- package/lib/Pages/configurations/configurations.component.d.ts +8 -8
- package/lib/Pages/configurations/configurations.module.d.ts +24 -24
- package/lib/Pages/configurations/configurations.routing.d.ts +7 -7
- package/lib/Pages/configurations/index.d.ts +6 -6
- package/lib/Pages/core/auth.module.d.ts +8 -8
- package/lib/Pages/core/authentication/admin.guard.d.ts +9 -9
- package/lib/Pages/core/authentication/auth.guard.d.ts +14 -14
- package/lib/Pages/core/authentication/auth.service.d.ts +35 -35
- package/lib/Pages/departments/department/department.component.d.ts +66 -68
- package/lib/Pages/departments/department-info/department-info.component.d.ts +58 -60
- package/lib/Pages/departments/departments-routing.module.d.ts +7 -7
- package/lib/Pages/departments/departments.component.d.ts +8 -8
- package/lib/Pages/departments/departments.module.d.ts +21 -21
- package/lib/Pages/documents/{add/add.component.d.ts → add-document/add-document.component.d.ts} +40 -40
- package/lib/Pages/documents/document-master-layouts/document-master-layouts.component.d.ts +51 -53
- package/lib/Pages/documents/document-template-info/document-template-info.component.d.ts +67 -67
- package/lib/Pages/documents/document-templates/document-templates.component.d.ts +87 -89
- package/lib/Pages/documents/documents.component.d.ts +8 -8
- package/lib/Pages/documents/documents.module.d.ts +27 -27
- package/lib/Pages/documents/documents.routing.d.ts +7 -7
- package/lib/Pages/documents/{edit/edit.component.d.ts → edit-document/edit-document.component.d.ts} +42 -42
- package/lib/Pages/documents/edit-document-template/edit-document-template.component.d.ts +39 -39
- package/lib/Pages/empty-data/empty-data.component.d.ts +14 -14
- package/lib/Pages/empty-data/empty-data.module.d.ts +8 -8
- package/lib/Pages/helpCenter/help-center/help-center.component.d.ts +69 -71
- package/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.d.ts +23 -23
- package/lib/Pages/helpCenter/help-center-routing.module.d.ts +7 -7
- package/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.d.ts +65 -67
- package/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.d.ts +64 -66
- package/lib/Pages/helpCenter/help-center.module.d.ts +25 -25
- package/lib/Pages/helpCenter/help-centers.component.d.ts +8 -8
- package/lib/Pages/home/filter-pipe.d.ts +7 -7
- package/lib/Pages/home/home.component.d.ts +19 -19
- package/lib/Pages/home/home.module.d.ts +14 -14
- package/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.d.ts +86 -88
- package/lib/Pages/impersonation-rules/impersonation-rules.module.d.ts +19 -19
- package/lib/Pages/jobs/jobs/jobs.component.d.ts +76 -77
- package/lib/Pages/jobs/jobs.module.d.ts +17 -17
- package/lib/Pages/license/license/license.component.d.ts +59 -59
- package/lib/Pages/license/license.module.d.ts +15 -15
- package/lib/Pages/localizations/localizations-replace-text/localizations-replace-text.component.d.ts +53 -53
- package/lib/Pages/localizations/localizations.component.d.ts +108 -110
- package/lib/Pages/localizations/localizations.module.d.ts +18 -18
- package/lib/Pages/logs/log/log.component.d.ts +34 -34
- package/lib/Pages/logs/logs-routing.module.d.ts +7 -7
- package/lib/Pages/logs/logs.component.d.ts +8 -8
- package/lib/Pages/logs/logs.module.d.ts +20 -20
- package/lib/Pages/lookups/lookup/lookup.component.d.ts +83 -85
- package/lib/Pages/lookups/lookup-group/lookup-group.component.d.ts +58 -60
- package/lib/Pages/lookups/lookup-item/lookup-item.component.d.ts +84 -86
- package/lib/Pages/lookups/lookups-routing.module.d.ts +7 -7
- package/lib/Pages/lookups/lookups.component.d.ts +8 -8
- package/lib/Pages/lookups/lookups.module.d.ts +24 -24
- package/lib/Pages/notifications/{add/add.component.d.ts → add-notification/add-notification.component.d.ts} +33 -33
- package/lib/Pages/notifications/edit-email/edit-email.component.d.ts +43 -43
- package/lib/Pages/notifications/{edit/edit.component.d.ts → edit-notification/edit-notification.component.d.ts} +35 -35
- package/lib/Pages/notifications/edit-sms/edit-sms.component.d.ts +37 -37
- package/lib/Pages/notifications/master-layouts/master-layouts.component.d.ts +51 -53
- package/lib/Pages/notifications/notifications-routing.module.d.ts +7 -7
- package/lib/Pages/notifications/notifications.component.d.ts +8 -8
- package/lib/Pages/notifications/notifications.module.d.ts +28 -28
- package/lib/Pages/notifications/template-info/template-info.component.d.ts +86 -86
- package/lib/Pages/notifications/templates/templates.component.d.ts +100 -102
- package/lib/Pages/providers/provider/provider.component.d.ts +118 -120
- package/lib/Pages/providers/providers-routing.module.d.ts +7 -7
- package/lib/Pages/providers/providers.component.d.ts +8 -8
- package/lib/Pages/providers/providers.module.d.ts +21 -21
- package/lib/Pages/publicHolidays/public-holiday/public-holiday.component.d.ts +73 -75
- package/lib/Pages/publicHolidays/public-holidays-routing.module.d.ts +7 -7
- package/lib/Pages/publicHolidays/public-holidays.component.d.ts +8 -8
- package/lib/Pages/publicHolidays/public-holidays.module.d.ts +21 -21
- package/lib/Pages/roles/permission-set-info/permission-set-info.component.d.ts +56 -58
- package/lib/Pages/roles/permissions/permissions.component.d.ts +63 -65
- package/lib/Pages/roles/permissionsets/permissionsets.component.d.ts +67 -69
- package/lib/Pages/roles/roles-routing.module.d.ts +7 -7
- package/lib/Pages/roles/roles.component.d.ts +8 -8
- package/lib/Pages/roles/roles.module.d.ts +24 -24
- package/lib/Pages/sectors/sector/sector.component.d.ts +62 -64
- package/lib/Pages/sectors/sector-info/sector-info.component.d.ts +60 -62
- package/lib/Pages/sectors/{department-info/department-info.component.d.ts → sectors-department-info/sectors-department-info.component.d.ts} +61 -63
- package/lib/Pages/sectors/sectors-routing.module.d.ts +7 -7
- package/lib/Pages/sectors/sectors.component.d.ts +8 -8
- package/lib/Pages/sectors/sectors.module.d.ts +23 -23
- package/lib/Pages/shared/Enums/ADType.d.ts +4 -4
- package/lib/Pages/shared/Enums/Enums.d.ts +47 -47
- package/lib/Pages/shared/Enums/ProviderType.d.ts +5 -5
- package/lib/Pages/shared/Enums/WFActivityType.d.ts +10 -10
- package/lib/Pages/shared/Enums/configuration/ConditionRHSType.d.ts +4 -4
- package/lib/Pages/shared/Enums/configuration/authentecation-configuration.d.ts +15 -15
- package/lib/Pages/shared/Pipes/survey-date.pipe.d.ts +12 -12
- package/lib/Pages/shared/Services/AccountService.service.d.ts +21 -21
- package/lib/Pages/shared/Services/ActiveDirectoryService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/AnonymousLayoutService.service.d.ts +17 -17
- package/lib/Pages/shared/Services/ConfigurationsService.service.d.ts +20 -20
- package/lib/Pages/shared/Services/DepartmentService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/DocumentHeaderAndFooterTemplate.service.d.ts +15 -15
- package/lib/Pages/shared/Services/DocumentTemplateService.service.d.ts +26 -26
- package/lib/Pages/shared/Services/EmailHeaderAndFooterTemplateService.Service.d.ts +15 -15
- package/lib/Pages/shared/Services/ErrorService.service.d.ts +8 -8
- package/lib/Pages/shared/Services/GlobalErrorHandler.service.d.ts +10 -10
- package/lib/Pages/shared/Services/HelpCenterService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/HttpErrorInterceptor.service.d.ts +12 -12
- package/lib/Pages/shared/Services/ImpersonationRuleService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/JobsService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/LicenseService.service.d.ts +12 -12
- package/lib/Pages/shared/Services/LogsService.d.ts +10 -10
- package/lib/Pages/shared/Services/LookupGroupsService.service.d.ts +14 -14
- package/lib/Pages/shared/Services/LookupService.service.d.ts +25 -25
- package/lib/Pages/shared/Services/PermissionSetService.service.d.ts +19 -19
- package/lib/Pages/shared/Services/PermissionsService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/PublicHolidayService.service.d.ts +16 -16
- package/lib/Pages/shared/Services/SectorService.service.d.ts +18 -18
- package/lib/Pages/shared/Services/TemplateService.service.d.ts +34 -34
- package/lib/Pages/shared/Services/WorkFlowVersionService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowActivityService.service.d.ts +19 -19
- package/lib/Pages/shared/Services/WorkflowInstanceService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowLogVariablesService.service.d.ts +10 -10
- package/lib/Pages/shared/Services/WorkflowService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/WorkflowVariablesService.service.d.ts +15 -15
- package/lib/Pages/shared/Services/data.service.d.ts +9 -9
- package/lib/Pages/shared/Services/injectionModuleService.service.d.ts +50 -50
- package/lib/Pages/shared/Services/localizationsService.service .d.ts +28 -28
- package/lib/Pages/shared/Services/provider.service.d.ts +25 -25
- package/lib/Pages/shared/Services/survey-question.service.d.ts +19 -19
- package/lib/Pages/shared/Services/survey.service.d.ts +38 -38
- package/lib/Pages/shared/Services/userService.service.d.ts +29 -29
- package/lib/Pages/shared/base.service.d.ts +4 -4
- package/lib/Pages/shared/components/AdDirective.d.ts +8 -8
- package/lib/Pages/shared/components/external-url/external-url.component.d.ts +61 -61
- package/lib/Pages/shared/components/no-results/no-results.component.d.ts +10 -10
- package/lib/Pages/shared/components/survey/add-survey/add-survey.component.d.ts +40 -40
- package/lib/Pages/shared/components/survey/delete-survey/delete-survey.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/duplicate-survey/duplicate-survey.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/edit-survey/edit-survey.component.d.ts +43 -43
- package/lib/Pages/shared/components/survey/submissions/delete-submission/delete-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/submissions/eliminate-submission/eliminate-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/submissions/uneliminate-submission/uneliminate-submission.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.d.ts +83 -83
- package/lib/Pages/shared/components/survey/survey-info/delete-question/delete-question.component.d.ts +19 -19
- package/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.d.ts +84 -84
- package/lib/Pages/shared/components/survey/survey-info/preview/preview.component.d.ts +40 -40
- package/lib/Pages/shared/components/survey/survey-info/publish-survey/publish-survey.component.d.ts +31 -31
- package/lib/Pages/shared/components/survey/survey-info/result-question/result.component.d.ts +27 -27
- package/lib/Pages/shared/components/survey/survey-info/survey-info.component.d.ts +119 -119
- package/lib/Pages/shared/components/survey/survey-info/take-survey/take-survey.component.d.ts +39 -39
- package/lib/Pages/shared/components/survey/survey-info/unpublish-survey/unpublish-survey.component.d.ts +32 -32
- package/lib/Pages/shared/components/survey/survey.component.d.ts +65 -65
- package/lib/Pages/shared/components/survey-form/survey-form.component.d.ts +41 -41
- package/lib/Pages/shared/components/survey-form-item/survey-form-item.component.d.ts +23 -23
- package/lib/Pages/shared/components/survey-layout/survey-layout.component.d.ts +8 -8
- package/lib/Pages/shared/config/environment.d.ts +1 -1
- package/lib/Pages/shared/constants.d.ts +129 -129
- package/lib/Pages/shared/filter/filter.component.d.ts +8 -8
- package/lib/Pages/shared/models/ADModels/ADMappingModel.d.ts +6 -6
- package/lib/Pages/shared/models/ADModels/ActiveDirectoryAddEditModel.d.ts +28 -28
- package/lib/Pages/shared/models/AccountModels/forgotPasswordModel.d.ts +3 -3
- package/lib/Pages/shared/models/ConfigurationModels/ConfigurationModel.d.ts +64 -64
- package/lib/Pages/shared/models/DepartmentModels/DepartmentModel.d.ts +9 -9
- package/lib/Pages/shared/models/DepartmentModels/DepartmentUsersIDRequestModel.d.ts +4 -4
- package/lib/Pages/shared/models/DocumentsModels/DocumentExportDTO.d.ts +8 -8
- package/lib/Pages/shared/models/DocumentsModels/DocumentHeaderAndFooterTemplate.d.ts +16 -16
- package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateDTO.d.ts +13 -13
- package/lib/Pages/shared/models/DocumentsModels/DocumentTemplateInfoDTO.d.ts +7 -7
- package/lib/Pages/shared/models/HelpCenterModels/HelpCenterItemModel.d.ts +17 -17
- package/lib/Pages/shared/models/ImpersonationRuleModels/ImpersonationRuleModel.d.ts +9 -9
- package/lib/Pages/shared/models/ImpersonationRuleModels/ParticipantModel.d.ts +15 -15
- package/lib/Pages/shared/models/InjectedModuleModel/InjectedModule.d.ts +5 -5
- package/lib/Pages/shared/models/JobModels/JobCountsModel.d.ts +8 -8
- package/lib/Pages/shared/models/LicenseModel/LicenseModel.d.ts +5 -5
- package/lib/Pages/shared/models/LocalizationModels/EditResourceModel.d.ts +7 -7
- package/lib/Pages/shared/models/LocalizationModels/LocalizationReplaceTextModel.d.ts +9 -9
- package/lib/Pages/shared/models/LocalizationModels/UploadJsonVM.d.ts +5 -5
- package/lib/Pages/shared/models/Lookups/LookupGroupModel.d.ts +5 -5
- package/lib/Pages/shared/models/Lookups/LookupItem.d.ts +13 -13
- package/lib/Pages/shared/models/Lookups/LookupModel.d.ts +13 -13
- package/lib/Pages/shared/models/NotificationsModels/EmailHeaderAndFooterTemplate.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/EmailTemplateInfoDTO.d.ts +15 -15
- package/lib/Pages/shared/models/NotificationsModels/EmailTemplateTesterModel.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SMSTemplateInfoDTO.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SMSTemplateTesterModel.d.ts +9 -9
- package/lib/Pages/shared/models/NotificationsModels/SendEmailTemplateModel.d.ts +8 -8
- package/lib/Pages/shared/models/NotificationsModels/TemplateDTO.d.ts +22 -22
- package/lib/Pages/shared/models/NotificationsModels/TemplateEditViewModel.d.ts +11 -11
- package/lib/Pages/shared/models/PermissionsModels/PermissionModel.d.ts +8 -8
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetModel.d.ts +10 -10
- package/lib/Pages/shared/models/PermissionsModels/PermissionSetUsersIDRequestModel.d.ts +4 -4
- package/lib/Pages/shared/models/ProviderModels/DefaultProviderModel.d.ts +6 -6
- package/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.d.ts +7 -7
- package/lib/Pages/shared/models/ProviderModels/ProviderAttributeModel.d.ts +7 -7
- package/lib/Pages/shared/models/ProviderModels/ProviderModel.d.ts +13 -13
- package/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.d.ts +6 -6
- package/lib/Pages/shared/models/PublicHolidayModels/PublicHolidayModel.d.ts +15 -15
- package/lib/Pages/shared/models/SectorModels/SectorDepartmentModel.d.ts +4 -4
- package/lib/Pages/shared/models/SectorModels/SectorModel.d.ts +6 -6
- package/lib/Pages/shared/models/SurveyModels/DeleteSurveyDTO.d.ts +3 -3
- package/lib/Pages/shared/models/SurveyModels/add-survey-submissio.d.ts +21 -21
- package/lib/Pages/shared/models/SurveyModels/add-survey.d.ts +18 -18
- package/lib/Pages/shared/models/SurveyModels/model.d.ts +3 -3
- package/lib/Pages/shared/models/SurveyModels/survey-field-options.d.ts +24 -24
- package/lib/Pages/shared/models/SurveyModels/survey-filed-value.d.ts +22 -22
- package/lib/Pages/shared/models/SurveyModels/survey-form-options.d.ts +8 -8
- package/lib/Pages/shared/models/SurveyModels/survey-publish.d.ts +15 -15
- package/lib/Pages/shared/models/SurveyModels/survey-question-option.d.ts +9 -9
- package/lib/Pages/shared/models/SurveyModels/survey-question.d.ts +21 -21
- package/lib/Pages/shared/models/SurveyModels/survey-utils.d.ts +5 -5
- package/lib/Pages/shared/models/UserModels/ActivationModel.d.ts +10 -10
- package/lib/Pages/shared/models/UserModels/AddUserModel.d.ts +33 -33
- package/lib/Pages/shared/models/UserModels/DropdownsResponseModel.d.ts +9 -9
- package/lib/Pages/shared/models/UserModels/EditUserModel.d.ts +25 -25
- package/lib/Pages/shared/models/UserModels/IdentityModel.d.ts +9 -9
- package/lib/Pages/shared/models/UserModels/UserSearchParamDTO.d.ts +8 -8
- package/lib/Pages/shared/models/UserModels/UsersIDRequestModel.d.ts +3 -3
- package/lib/Pages/shared/models/WorkflowModels/VariableLookupModel.d.ts +9 -9
- package/lib/Pages/shared/models/WorkflowModels/WFActivityModel.d.ts +40 -40
- package/lib/Pages/shared/models/WorkflowModels/WFActivityOutcomeModel.d.ts +13 -13
- package/lib/Pages/shared/models/WorkflowModels/WFActivityVariablesModel.d.ts +13 -13
- package/lib/Pages/shared/models/WorkflowModels/WFCreationModel.d.ts +10 -10
- package/lib/Pages/shared/models/WorkflowModels/WFVariableModel.d.ts +23 -23
- package/lib/Pages/shared/models/user.registration.d.ts +6 -6
- package/lib/Pages/shared/modules/public-survey.module.d.ts +15 -15
- package/lib/Pages/shared/modules/survey-routing.module.d.ts +7 -7
- package/lib/Pages/shared/modules/survey.module.d.ts +35 -35
- package/lib/Pages/shared/shared.module.d.ts +8 -8
- package/lib/Pages/shared/stylesbundle.service.d.ts +9 -9
- package/lib/Pages/start/index/index.component.d.ts +15 -15
- package/lib/Pages/start/start-routing.module.d.ts +7 -7
- package/lib/Pages/start/start.module.d.ts +11 -11
- package/lib/Pages/users/users.component.d.ts +138 -139
- package/lib/Pages/users/users.module.d.ts +18 -18
- package/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.d.ts +77 -77
- package/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.d.ts +82 -82
- package/lib/Pages/workflows/instance-info/instance-info.component.d.ts +81 -81
- package/lib/Pages/workflows/tabs/tabs.component.d.ts +126 -128
- package/lib/Pages/workflows/version-info/version-info.component.d.ts +41 -41
- package/lib/Pages/workflows/workflow/workflow.component.d.ts +54 -55
- package/lib/Pages/workflows/workflows-routing.module.d.ts +7 -7
- package/lib/Pages/workflows/workflows.component.d.ts +8 -8
- package/lib/Pages/workflows/workflows.module.d.ts +27 -27
- package/lib/_metronic/configs/default-layout.config.d.ts +139 -139
- package/lib/_metronic/core/_utils/DomHelpers.d.ts +26 -26
- package/lib/_metronic/core/_utils/ElementAnimateUtil.d.ts +13 -13
- package/lib/_metronic/core/_utils/EventHandlerUtil.d.ts +20 -20
- package/lib/_metronic/core/_utils/_DOMEventHandlerUtil.d.ts +6 -6
- package/lib/_metronic/core/_utils/_DataUtil.d.ts +8 -8
- package/lib/_metronic/core/_utils/_ElementStyleUtil.d.ts +5 -5
- package/lib/_metronic/core/_utils/_TypesHelpers.d.ts +10 -10
- package/lib/_metronic/core/_utils/models/OffsetModel.d.ts +4 -4
- package/lib/_metronic/core/_utils/models/ViewPortModel.d.ts +4 -4
- package/lib/_metronic/core/components/MenuComponent.d.ts +88 -88
- package/lib/_metronic/core/components/_CookieComponent.d.ts +25 -25
- package/lib/_metronic/core/components/_DrawerComponent.d.ts +49 -49
- package/lib/_metronic/core/components/_ScrollComponent.d.ts +31 -31
- package/lib/_metronic/core/components/_ScrollTopComponent.d.ts +24 -24
- package/lib/_metronic/core/components/_ToggleComponent.d.ts +36 -36
- package/lib/_metronic/core/services/layout-init.service.d.ts +18 -18
- package/lib/_metronic/core/services/layout.service.d.ts +38 -38
- package/lib/_metronic/core/services/page-info.service.d.ts +32 -32
- package/lib/masterlayout-routing.module.d.ts +11 -13
- package/lib/masterlayout.component.d.ts +63 -63
- package/lib/masterlayout.module.d.ts +34 -34
- package/package.json +25 -30
- package/public-api.d.ts +41 -41
- package/src/lib/assets/images/menu/Tools.svg +10 -4
- package/src/lib/assets/images/menu/authentication.svg +9 -0
- package/src/lib/assets/sass/style-rtl.scss +3 -3
- package/src/lib/assets/sass/style.scss +3 -3
- package/bnsights-bbsf-admin-portal-1.1.2.tgz +0 -0
- package/esm2020/lib/Pages/ActiveDirectories/active-directory/active-directory.component.mjs +0 -421
- package/esm2020/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs +0 -528
- package/esm2020/lib/Pages/ActiveDirectories/active-directory.module.mjs +0 -108
- package/esm2020/lib/Pages/_layout/components/aside/aside-menu/aside-menu.component.mjs +0 -23
- package/esm2020/lib/Pages/anonymouslayout/anonymouslayout.module.mjs +0 -100
- package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration-edit/auth-configuration-edit.component.mjs +0 -330
- package/esm2020/lib/Pages/configurations/auth-configuration/auth-configuration.component.mjs +0 -157
- package/esm2020/lib/Pages/configurations/configuration/configuration.component.mjs +0 -801
- package/esm2020/lib/Pages/configurations/configurations.module.mjs +0 -104
- package/esm2020/lib/Pages/core/authentication/admin.guard.mjs +0 -17
- package/esm2020/lib/Pages/core/authentication/auth.service.mjs +0 -147
- package/esm2020/lib/Pages/departments/department/department.component.mjs +0 -220
- package/esm2020/lib/Pages/departments/department-info/department-info.component.mjs +0 -185
- package/esm2020/lib/Pages/departments/departments.module.mjs +0 -94
- package/esm2020/lib/Pages/documents/add/add.component.mjs +0 -136
- package/esm2020/lib/Pages/documents/document-master-layouts/document-master-layouts.component.mjs +0 -148
- package/esm2020/lib/Pages/documents/document-templates/document-templates.component.mjs +0 -437
- package/esm2020/lib/Pages/documents/documents.module.mjs +0 -114
- package/esm2020/lib/Pages/documents/documents.routing.mjs +0 -37
- package/esm2020/lib/Pages/documents/edit/edit.component.mjs +0 -169
- package/esm2020/lib/Pages/helpCenter/help-center/help-center.component.mjs +0 -294
- package/esm2020/lib/Pages/helpCenter/help-center-preview/help-center-preview.component.mjs +0 -43
- package/esm2020/lib/Pages/helpCenter/help-center-secondlevel/help-center-secondlevel.component.mjs +0 -242
- package/esm2020/lib/Pages/helpCenter/help-center-thirdlevel/help-center-thirdlevel.component.mjs +0 -243
- package/esm2020/lib/Pages/helpCenter/help-center.module.mjs +0 -98
- package/esm2020/lib/Pages/home/home.component.mjs +0 -153
- package/esm2020/lib/Pages/home/home.module.mjs +0 -48
- package/esm2020/lib/Pages/impersonation-rules/impersonation-rules/impersonation-rules.component.mjs +0 -443
- package/esm2020/lib/Pages/impersonation-rules/impersonation-rules.module.mjs +0 -95
- package/esm2020/lib/Pages/jobs/jobs/jobs.component.mjs +0 -223
- package/esm2020/lib/Pages/jobs/jobs.module.mjs +0 -87
- package/esm2020/lib/Pages/license/license.module.mjs +0 -71
- package/esm2020/lib/Pages/localizations/localizations.component.mjs +0 -516
- package/esm2020/lib/Pages/localizations/localizations.module.mjs +0 -79
- package/esm2020/lib/Pages/logs/logs.module.mjs +0 -87
- package/esm2020/lib/Pages/lookups/lookup/lookup.component.mjs +0 -367
- package/esm2020/lib/Pages/lookups/lookup-group/lookup-group.component.mjs +0 -187
- package/esm2020/lib/Pages/lookups/lookup-item/lookup-item.component.mjs +0 -297
- package/esm2020/lib/Pages/lookups/lookups.module.mjs +0 -100
- package/esm2020/lib/Pages/notifications/add/add.component.mjs +0 -104
- package/esm2020/lib/Pages/notifications/edit/edit.component.mjs +0 -133
- package/esm2020/lib/Pages/notifications/master-layouts/master-layouts.component.mjs +0 -148
- package/esm2020/lib/Pages/notifications/notifications-routing.module.mjs +0 -39
- package/esm2020/lib/Pages/notifications/notifications.module.mjs +0 -101
- package/esm2020/lib/Pages/notifications/templates/templates.component.mjs +0 -495
- package/esm2020/lib/Pages/providers/provider/provider.component.mjs +0 -615
- package/esm2020/lib/Pages/providers/providers.module.mjs +0 -91
- package/esm2020/lib/Pages/publicHolidays/public-holiday/public-holiday.component.mjs +0 -334
- package/esm2020/lib/Pages/publicHolidays/public-holidays.module.mjs +0 -94
- package/esm2020/lib/Pages/roles/permission-set-info/permission-set-info.component.mjs +0 -187
- package/esm2020/lib/Pages/roles/permissions/permissions.component.mjs +0 -226
- package/esm2020/lib/Pages/roles/permissionsets/permissionsets.component.mjs +0 -277
- package/esm2020/lib/Pages/roles/roles.module.mjs +0 -105
- package/esm2020/lib/Pages/sectors/department-info/department-info.component.mjs +0 -187
- package/esm2020/lib/Pages/sectors/sector/sector.component.mjs +0 -193
- package/esm2020/lib/Pages/sectors/sector-info/sector-info.component.mjs +0 -180
- package/esm2020/lib/Pages/sectors/sectors.module.mjs +0 -96
- package/esm2020/lib/Pages/shared/Enums/WFVariableDataType.mjs +0 -14
- package/esm2020/lib/Pages/shared/Services/injectionModuleService.service.mjs +0 -163
- package/esm2020/lib/Pages/shared/components/survey/add-survey/add-survey.component.mjs +0 -192
- package/esm2020/lib/Pages/shared/components/survey-form/survey-form.component.mjs +0 -696
- package/esm2020/lib/Pages/shared/components/survey-form-item/survey-form-item.component.mjs +0 -84
- package/esm2020/lib/Pages/shared/constants.mjs +0 -130
- package/esm2020/lib/Pages/shared/models/SurveyModels/survey-utils.mjs +0 -8
- package/esm2020/lib/Pages/shared/modules/public-survey.module.mjs +0 -68
- package/esm2020/lib/Pages/shared/modules/survey.module.mjs +0 -126
- package/esm2020/lib/Pages/shared/shared.module.mjs +0 -31
- package/esm2020/lib/Pages/users/users.component.mjs +0 -806
- package/esm2020/lib/Pages/users/users.module.mjs +0 -86
- package/esm2020/lib/Pages/workflows/tabs/tabs.component.mjs +0 -793
- package/esm2020/lib/Pages/workflows/workflow/workflow.component.mjs +0 -209
- package/esm2020/lib/Pages/workflows/workflows.module.mjs +0 -103
- package/esm2020/lib/_metronic/core/_utils/EventHandlerUtil.mjs +0 -90
- package/esm2020/lib/_metronic/core/_utils/_DOMEventHandlerUtil.mjs +0 -49
- package/esm2020/lib/_metronic/core/_utils/_DataUtil.mjs +0 -48
- package/esm2020/lib/_metronic/core/components/_DrawerComponent.mjs +0 -290
- package/esm2020/lib/_metronic/core/components/_ScrollTopComponent.mjs +0 -113
- package/esm2020/lib/_metronic/core/components/_ToggleComponent.mjs +0 -157
- package/esm2020/lib/_metronic/core/services/page-info.service.mjs +0 -119
- package/esm2020/lib/masterlayout-routing.module.mjs +0 -45
- package/esm2020/lib/masterlayout.module.mjs +0 -188
- package/fesm2015/bnsights-bbsf-admin-portal.mjs +0 -27293
- package/fesm2015/bnsights-bbsf-admin-portal.mjs.map +0 -1
- package/fesm2020/bnsights-bbsf-admin-portal.mjs.map +0 -1
- package/lib/Pages/shared/Enums/WFVariableDataType.d.ts +0 -12
package/esm2022/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.mjs
ADDED
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { ToggleSlideOptions, ControlLayout, DropdownOptions, InputType, TextBoxOptions, CheckBoxOptions, FormOptions } from '@bnsights/bbsf-controls';
|
|
4
|
+
import { ActiveDirectoryAddEditModel } from '../../shared/models/ADModels/ActiveDirectoryAddEditModel';
|
|
5
|
+
import { ADMappingModel } from '../../shared/models/ADModels/ADMappingModel';
|
|
6
|
+
import { BehaviorSubject } from 'rxjs';
|
|
7
|
+
import { PageInfoService } from '../../../_metronic/core/services/page-info.service';
|
|
8
|
+
import { FlatTreeControl } from '@angular/cdk/tree';
|
|
9
|
+
import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
|
|
10
|
+
import { ActiveDirectoryType, ActiveDirectoryWindowConnectionType } from '../../shared/constants';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "../../../_metronic/core/services/page-info.service";
|
|
13
|
+
import * as i2 from "@bnsights/bbsf-utilities";
|
|
14
|
+
import * as i3 from "../../shared/Services/ActiveDirectoryService.service";
|
|
15
|
+
import * as i4 from "@angular/router";
|
|
16
|
+
import * as i5 from "@angular/common";
|
|
17
|
+
import * as i6 from "@bnsights/bbsf-controls";
|
|
18
|
+
import * as i7 from "ng-inline-svg-2";
|
|
19
|
+
import * as i8 from "@angular/material/tree";
|
|
20
|
+
import * as i9 from "@angular/material/checkbox";
|
|
21
|
+
export class ActiveDirectoryAddComponent {
|
|
22
|
+
;
|
|
23
|
+
constructor(pageInfoService, utilityService, bbsfTranslateService, ActiveDirectoryService, router, requestHandlerService) {
|
|
24
|
+
this.pageInfoService = pageInfoService;
|
|
25
|
+
this.utilityService = utilityService;
|
|
26
|
+
this.bbsfTranslateService = bbsfTranslateService;
|
|
27
|
+
this.ActiveDirectoryService = ActiveDirectoryService;
|
|
28
|
+
this.router = router;
|
|
29
|
+
this.requestHandlerService = requestHandlerService;
|
|
30
|
+
//wizard
|
|
31
|
+
this.formsCount = 2;
|
|
32
|
+
this.currentStep$ = new BehaviorSubject(1);
|
|
33
|
+
//wizard
|
|
34
|
+
//Required Lists
|
|
35
|
+
this.permissionSetList = [];
|
|
36
|
+
this.languagesList = [];
|
|
37
|
+
this.welcomeMsgTempList = [];
|
|
38
|
+
this.adTypesList = [];
|
|
39
|
+
this.fileProviders = [];
|
|
40
|
+
this.mappingPropertiesList = [];
|
|
41
|
+
this.mappingTypesList = [];
|
|
42
|
+
//Windows
|
|
43
|
+
this.adWindowsTypes = [];
|
|
44
|
+
//Add Model Controls
|
|
45
|
+
this.addActiveDirectoryForm = new FormGroup({});
|
|
46
|
+
this.addMappingsOptions = [];
|
|
47
|
+
this.addMappingsCount = 0;
|
|
48
|
+
this.isAddFormLoaded = false;
|
|
49
|
+
this.addShowBuiltInGroupsVisible = false;
|
|
50
|
+
this.errorIsFound = false;
|
|
51
|
+
this.treeDataLoaded = false;
|
|
52
|
+
this.selected = -1;
|
|
53
|
+
this.identifier = "";
|
|
54
|
+
this.identifierName = "";
|
|
55
|
+
//Add Active directory functions
|
|
56
|
+
this.getAddADModel = () => {
|
|
57
|
+
let paramArray = [];
|
|
58
|
+
let resultModel = this.addActiveDirectoryForm.value;
|
|
59
|
+
//console.log(ResultModel);
|
|
60
|
+
let AddModel = new ActiveDirectoryAddEditModel();
|
|
61
|
+
AddModel.ConnectionName = resultModel.addName;
|
|
62
|
+
AddModel.ADTypeItemID_GUID = resultModel.addTypeOptions;
|
|
63
|
+
AddModel.PermissionSetID = resultModel.addPermissionSet != null ? resultModel.addPermissionSet : null;
|
|
64
|
+
AddModel.LangKey = resultModel.addLanguage;
|
|
65
|
+
AddModel.WelcomeTemplateID = resultModel.addWelcomeMsgTemp != null ? Number(resultModel.addWelcomeMsgTemp) : null;
|
|
66
|
+
AddModel.ImagesFileProviderName = resultModel.addFileProvider;
|
|
67
|
+
AddModel.MarkAsInactive = resultModel.addMarkInactive;
|
|
68
|
+
AddModel.AddToDailyJob = resultModel.addDailyJob;
|
|
69
|
+
if (this.selectedType == ActiveDirectoryType.Windows) {
|
|
70
|
+
AddModel.Identifier = this.identifier;
|
|
71
|
+
AddModel.Domain = resultModel.addDomain;
|
|
72
|
+
AddModel.SamAccount = resultModel.addSamAccount;
|
|
73
|
+
AddModel.Password = resultModel.addPassword;
|
|
74
|
+
AddModel.ShowBuiltInGroups = resultModel.addShowBuiltInGroups;
|
|
75
|
+
AddModel.ADWindowsTypeItemID_GUID = resultModel.addWindowsTypeOptions;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
AddModel.TenantID = resultModel.addTenantID;
|
|
79
|
+
AddModel.ClientID = resultModel.addClientID;
|
|
80
|
+
AddModel.ClientSecret = resultModel.addClientSecret;
|
|
81
|
+
}
|
|
82
|
+
for (let j = 0; j < this.addMappingsCount; j++) {
|
|
83
|
+
let addMAppingType = resultModel["ADMappingType" + j];
|
|
84
|
+
if (addMAppingType == undefined)
|
|
85
|
+
continue;
|
|
86
|
+
let editMAppingProperty = resultModel["ADMappingProperty" + j];
|
|
87
|
+
let editMAppingPropertyName = resultModel["ADMappingPropertyName" + j];
|
|
88
|
+
let adMAppingObj = new ADMappingModel();
|
|
89
|
+
adMAppingObj.ADMappingTypeItemID = addMAppingType;
|
|
90
|
+
adMAppingObj.BBSFPropertyName = editMAppingProperty;
|
|
91
|
+
adMAppingObj.ADPropertyName = editMAppingPropertyName;
|
|
92
|
+
let adMAppingIncludeInUpdate = resultModel["ADMappingIncludeUpdate" + j];
|
|
93
|
+
let adMAppingHiddenIncludeInUpdate = resultModel["ADMappingHiddenIncludeUpdate" + j];
|
|
94
|
+
adMAppingObj.IncludeInUpdate = adMAppingIncludeInUpdate == undefined ? adMAppingHiddenIncludeInUpdate : adMAppingIncludeInUpdate;
|
|
95
|
+
AddModel.ADMappings.push(adMAppingObj);
|
|
96
|
+
}
|
|
97
|
+
paramArray.push(AddModel);
|
|
98
|
+
return paramArray;
|
|
99
|
+
};
|
|
100
|
+
this.getAddADFunction = (addModel) => {
|
|
101
|
+
return this.ActiveDirectoryService.addActiveDirectory(addModel);
|
|
102
|
+
};
|
|
103
|
+
this.addADOnSuccess = (result) => {
|
|
104
|
+
this.router.navigate(['/Admin/ADConnection']);
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
async ngOnInit() {
|
|
108
|
+
PageInfoService.PageTitle = this.utilityService.getResourceValue("AddActiveDirectory");
|
|
109
|
+
PageInfoService.PageBreadcrumbs = [
|
|
110
|
+
{ title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
|
|
111
|
+
{ title: '', path: '', isSeparator: true, isActive: false },
|
|
112
|
+
{ title: this.utilityService.getResourceValue("ADConnection"), path: '/Admin/ADConnection', isSeparator: false, isActive: false },
|
|
113
|
+
{ title: '', path: '', isSeparator: true, isActive: false }
|
|
114
|
+
];
|
|
115
|
+
this.pageInfoService.calculateTitle();
|
|
116
|
+
this.pageInfoService.calculateBreadcrumbs();
|
|
117
|
+
this.bbsfTranslateService.onLangChange.subscribe((event) => {
|
|
118
|
+
this.ngOnInit();
|
|
119
|
+
});
|
|
120
|
+
this.initializePage();
|
|
121
|
+
}
|
|
122
|
+
//Init page
|
|
123
|
+
initializePage() {
|
|
124
|
+
this.ActiveDirectoryService.loaddropdowns().subscribe((result) => {
|
|
125
|
+
let reultObj = result;
|
|
126
|
+
this.permissionSetList = reultObj.permissionSets;
|
|
127
|
+
this.adTypesList = reultObj.adTypes;
|
|
128
|
+
this.adWindowsTypes = reultObj.adWindowsTypes;
|
|
129
|
+
this.languagesList = reultObj.languages;
|
|
130
|
+
this.welcomeMsgTempList = reultObj.templates;
|
|
131
|
+
this.fileProviders = reultObj.fileProviders;
|
|
132
|
+
this.mappingPropertiesList = reultObj.mappingProperties;
|
|
133
|
+
this.mappingTypesList = reultObj.mappingTypes;
|
|
134
|
+
this.addActiveDirectoryForm = new FormGroup({});
|
|
135
|
+
this.addActiveDirectoryFormOptions = new FormOptions();
|
|
136
|
+
this.addActiveDirectoryFormOptions.FormGroup = this.addActiveDirectoryForm;
|
|
137
|
+
this.addActiveDirectoryFormOptions.GetModelFunction = this.getAddADModel;
|
|
138
|
+
this.addActiveDirectoryFormOptions.ServiceSubmitFunction = this.getAddADFunction;
|
|
139
|
+
this.addActiveDirectoryFormOptions.OnSuccessHandler = this.addADOnSuccess;
|
|
140
|
+
this.addTypeOptions = new DropdownOptions();
|
|
141
|
+
this.addTypeOptions.Name = "addTypeOptions";
|
|
142
|
+
this.addTypeOptions.LabelKey = "Type";
|
|
143
|
+
this.addTypeOptions.ViewType = ControlLayout.Horizontal;
|
|
144
|
+
this.addTypeOptions.DataSource = this.adTypesList;
|
|
145
|
+
this.addTypeOptions.SingleSelection = true;
|
|
146
|
+
this.addTypeOptions.AllowSearchFilter = true;
|
|
147
|
+
this.addTypeOptions.IsRequired = true;
|
|
148
|
+
this.addName = new TextBoxOptions();
|
|
149
|
+
this.addName.Name = "addName";
|
|
150
|
+
this.addName.LabelKey = "Name";
|
|
151
|
+
this.addName.Type = InputType.Text;
|
|
152
|
+
this.addName.Value = null;
|
|
153
|
+
this.addName.IsRequired = true;
|
|
154
|
+
this.addName.MaxLength = 100;
|
|
155
|
+
this.addPermissionSet = new DropdownOptions();
|
|
156
|
+
this.addPermissionSet.Name = "addPermissionSet";
|
|
157
|
+
this.addPermissionSet.LabelKey = "PermissionSet";
|
|
158
|
+
this.addPermissionSet.DataSource = this.permissionSetList;
|
|
159
|
+
this.addPermissionSet.SingleSelection = true;
|
|
160
|
+
this.addPermissionSet.AllowSearchFilter = true;
|
|
161
|
+
this.addPermissionSet.IsRequired = true;
|
|
162
|
+
this.addLanguage = new DropdownOptions();
|
|
163
|
+
this.addLanguage.Name = "addLanguage";
|
|
164
|
+
this.addLanguage.LabelKey = "Language";
|
|
165
|
+
this.addLanguage.DataSource = this.languagesList;
|
|
166
|
+
this.addLanguage.SingleSelection = true;
|
|
167
|
+
this.addLanguage.AllowSearchFilter = true;
|
|
168
|
+
this.addLanguage.IsRequired = true;
|
|
169
|
+
this.addWelcomeMsgTemp = new DropdownOptions();
|
|
170
|
+
this.addWelcomeMsgTemp.Name = "addWelcomeMsgTemp";
|
|
171
|
+
this.addWelcomeMsgTemp.LabelKey = "WelcomeMsgTemplate";
|
|
172
|
+
this.addWelcomeMsgTemp.DataSource = this.welcomeMsgTempList;
|
|
173
|
+
this.addWelcomeMsgTemp.SingleSelection = true;
|
|
174
|
+
this.addWelcomeMsgTemp.AllowSearchFilter = true;
|
|
175
|
+
this.addFileProvider = new DropdownOptions();
|
|
176
|
+
this.addFileProvider.Name = "addFileProvider";
|
|
177
|
+
this.addFileProvider.LabelKey = "FileProvider";
|
|
178
|
+
this.addFileProvider.DataSource = this.fileProviders;
|
|
179
|
+
this.addFileProvider.SingleSelection = true;
|
|
180
|
+
this.addFileProvider.AllowSearchFilter = true;
|
|
181
|
+
this.addMarkInactive = new ToggleSlideOptions();
|
|
182
|
+
this.addMarkInactive.Name = "addMarkInactive";
|
|
183
|
+
this.addMarkInactive.LabelKey = "MarkAsInactive";
|
|
184
|
+
this.addMarkInactive.Value = false;
|
|
185
|
+
this.addMarkInactive.ViewType = ControlLayout.Horizontal;
|
|
186
|
+
this.addDailyJob = new ToggleSlideOptions();
|
|
187
|
+
this.addDailyJob.Name = "addDailyJob";
|
|
188
|
+
this.addDailyJob.LabelKey = "AddToDailyJob";
|
|
189
|
+
this.addDailyJob.Value = false;
|
|
190
|
+
this.addDailyJob.ViewType = ControlLayout.Horizontal;
|
|
191
|
+
//set AD mapping
|
|
192
|
+
let data = this.getADMappingOptions(reultObj.adMappings);
|
|
193
|
+
this.addMappingsOptions = data[0];
|
|
194
|
+
this.addMappingsCount = data[1];
|
|
195
|
+
setTimeout(() => {
|
|
196
|
+
this.isAddFormLoaded = true;
|
|
197
|
+
}, 50);
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
//Mapping functions
|
|
201
|
+
getADMappingOptions(ADMappings) {
|
|
202
|
+
let ADMappingOptions = [];
|
|
203
|
+
let ADMappingCount = 0;
|
|
204
|
+
for (let i = 0; i < ADMappings.length; i++) {
|
|
205
|
+
let objectMappingOptions = [];
|
|
206
|
+
let ADMappingType = new DropdownOptions();
|
|
207
|
+
let selectedType = this.mappingTypesList.filter((item) => { return item.key == ADMappings[i].adMappingTypeItemID; }).map((item) => item.key)[0];
|
|
208
|
+
ADMappingType.Name = "ADMappingType" + i;
|
|
209
|
+
ADMappingType.HideLabel = true;
|
|
210
|
+
ADMappingType.SingleSelection = true;
|
|
211
|
+
ADMappingType.SelectedItems = selectedType;
|
|
212
|
+
ADMappingType.ViewType = ControlLayout.Horizontal;
|
|
213
|
+
ADMappingType.DataSource = this.mappingTypesList;
|
|
214
|
+
ADMappingType.IsRequired = true;
|
|
215
|
+
let ADMappingProperty = new DropdownOptions();
|
|
216
|
+
let selectedProperty = this.mappingPropertiesList.filter((item) => { return item.key == ADMappings[i].bbsfPropertyName; }).map((item) => item.key)[0];
|
|
217
|
+
ADMappingProperty.Name = "ADMappingProperty" + i;
|
|
218
|
+
ADMappingProperty.HideLabel = true;
|
|
219
|
+
ADMappingProperty.SingleSelection = true;
|
|
220
|
+
ADMappingProperty.SelectedItems = selectedProperty;
|
|
221
|
+
ADMappingProperty.ViewType = ControlLayout.Horizontal;
|
|
222
|
+
ADMappingProperty.DataSource = this.mappingPropertiesList;
|
|
223
|
+
ADMappingProperty.IsRequired = true;
|
|
224
|
+
let ADMappingPropertyName = new TextBoxOptions();
|
|
225
|
+
ADMappingPropertyName.Name = "ADMappingPropertyName" + i;
|
|
226
|
+
ADMappingPropertyName.HideLabel = true;
|
|
227
|
+
ADMappingPropertyName.Type = InputType.Text;
|
|
228
|
+
ADMappingPropertyName.Value = ADMappings[i].adPropertyName;
|
|
229
|
+
ADMappingPropertyName.IsRequired = false;
|
|
230
|
+
ADMappingPropertyName.ViewType = ControlLayout.Horizontal;
|
|
231
|
+
ADMappingPropertyName.IsRequired = true;
|
|
232
|
+
ADMappingPropertyName.MaxLength = 1024;
|
|
233
|
+
let ADMappingIncludeUpdate = new CheckBoxOptions();
|
|
234
|
+
ADMappingIncludeUpdate.Name = "ADMappingIncludeUpdate" + i;
|
|
235
|
+
ADMappingIncludeUpdate.Value = ADMappings[i].includeInUpdate;
|
|
236
|
+
ADMappingIncludeUpdate.IsDisabled = true;
|
|
237
|
+
let ADMappingHiddenIncludeUpdate = new TextBoxOptions();
|
|
238
|
+
ADMappingHiddenIncludeUpdate.Name = "ADMappingHiddenIncludeUpdate" + i;
|
|
239
|
+
ADMappingHiddenIncludeUpdate.HideLabel = true;
|
|
240
|
+
ADMappingHiddenIncludeUpdate.Type = InputType.Text;
|
|
241
|
+
ADMappingHiddenIncludeUpdate.Value = ADMappings[i].includeInUpdate;
|
|
242
|
+
objectMappingOptions.push(ADMappingType, ADMappingProperty, ADMappingPropertyName, ADMappingIncludeUpdate, ADMappingHiddenIncludeUpdate);
|
|
243
|
+
ADMappingOptions.push(objectMappingOptions);
|
|
244
|
+
ADMappingCount += 1;
|
|
245
|
+
}
|
|
246
|
+
return [ADMappingOptions, ADMappingCount];
|
|
247
|
+
}
|
|
248
|
+
deleteADMapping(deletedADMApping) {
|
|
249
|
+
let deletedMappingIndex = this.addMappingsOptions.indexOf(deletedADMApping);
|
|
250
|
+
if (deletedMappingIndex !== -1) {
|
|
251
|
+
this.addMappingsOptions.splice(deletedMappingIndex, 1);
|
|
252
|
+
for (var i = 0; i < deletedADMApping.length; i++) {
|
|
253
|
+
this.addActiveDirectoryForm.removeControl(deletedADMApping[i].Name);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
addADMapping() {
|
|
258
|
+
let index = this.addMappingsCount;
|
|
259
|
+
let objectMappingOptions = [];
|
|
260
|
+
let ADMappingType = new DropdownOptions();
|
|
261
|
+
ADMappingType.Name = "ADMappingType" + index;
|
|
262
|
+
ADMappingType.HideLabel = true;
|
|
263
|
+
ADMappingType.SingleSelection = true;
|
|
264
|
+
ADMappingType.ViewType = ControlLayout.Horizontal;
|
|
265
|
+
ADMappingType.DataSource = this.mappingTypesList;
|
|
266
|
+
let ADMappingProperty = new DropdownOptions();
|
|
267
|
+
ADMappingProperty.Name = "ADMappingProperty" + index;
|
|
268
|
+
ADMappingProperty.HideLabel = true;
|
|
269
|
+
ADMappingProperty.SingleSelection = true;
|
|
270
|
+
ADMappingProperty.ViewType = ControlLayout.Horizontal;
|
|
271
|
+
ADMappingProperty.DataSource = this.mappingPropertiesList;
|
|
272
|
+
let ADMappingPropertyName = new TextBoxOptions();
|
|
273
|
+
ADMappingPropertyName.Name = "ADMappingPropertyName" + index;
|
|
274
|
+
ADMappingPropertyName.HideLabel = true;
|
|
275
|
+
ADMappingPropertyName.Type = InputType.Text;
|
|
276
|
+
ADMappingPropertyName.IsRequired = false;
|
|
277
|
+
ADMappingPropertyName.ViewType = ControlLayout.Horizontal;
|
|
278
|
+
let ADMappingIncludeUpdate = new CheckBoxOptions();
|
|
279
|
+
ADMappingIncludeUpdate.Name = "ADMappingIncludeUpdate" + index;
|
|
280
|
+
ADMappingIncludeUpdate.Value = true;
|
|
281
|
+
let ADMappingHiddenIncludeUpdate = new TextBoxOptions();
|
|
282
|
+
ADMappingHiddenIncludeUpdate.Name = "ADMappingHiddenIncludeUpdate" + index;
|
|
283
|
+
ADMappingHiddenIncludeUpdate.HideLabel = true;
|
|
284
|
+
ADMappingHiddenIncludeUpdate.Type = InputType.Text;
|
|
285
|
+
objectMappingOptions.push(ADMappingType, ADMappingProperty, ADMappingPropertyName, ADMappingIncludeUpdate, ADMappingHiddenIncludeUpdate);
|
|
286
|
+
this.addMappingsOptions.push(objectMappingOptions);
|
|
287
|
+
this.addMappingsCount += 1;
|
|
288
|
+
}
|
|
289
|
+
//AD windows on type change (OU/Group)
|
|
290
|
+
windowsTypeChange(typeValue) {
|
|
291
|
+
if (typeValue == ActiveDirectoryWindowConnectionType.ActiveDirectoryGroup) {
|
|
292
|
+
this.addShowBuiltInGroups = new ToggleSlideOptions();
|
|
293
|
+
this.addShowBuiltInGroups.Name = "addShowBuiltInGroups";
|
|
294
|
+
this.addShowBuiltInGroups.LabelValue = "ShowBuiltInGroups";
|
|
295
|
+
this.addShowBuiltInGroups.LabelKey = "ShowBuiltInGroups";
|
|
296
|
+
this.addShowBuiltInGroups.Value = false;
|
|
297
|
+
this.addShowBuiltInGroups.ViewType = ControlLayout.Horizontal;
|
|
298
|
+
this.addShowBuiltInGroupsVisible = true;
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
this.addActiveDirectoryForm.removeControl("addShowBuiltInGroups");
|
|
302
|
+
this.addShowBuiltInGroupsVisible = false;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
//AD on type changes (Windows/Azure)
|
|
306
|
+
typeChange(typeValue) {
|
|
307
|
+
this.selectedType = typeValue;
|
|
308
|
+
if (typeValue == ActiveDirectoryType.Windows) {
|
|
309
|
+
this.formsCount = 3;
|
|
310
|
+
//Remove Azure controls if found
|
|
311
|
+
this.addActiveDirectoryForm.removeControl("addTenantID");
|
|
312
|
+
this.addActiveDirectoryForm.removeControl("addClientID");
|
|
313
|
+
this.addActiveDirectoryForm.removeControl("addClientSecret");
|
|
314
|
+
//Initialize windows controls
|
|
315
|
+
this.addWindowsTypeOptions = new DropdownOptions();
|
|
316
|
+
this.addWindowsTypeOptions.Name = "addWindowsTypeOptions";
|
|
317
|
+
this.addWindowsTypeOptions.LabelKey = "WindowsType";
|
|
318
|
+
this.addWindowsTypeOptions.ViewType = ControlLayout.Horizontal;
|
|
319
|
+
this.addWindowsTypeOptions.DataSource = this.adWindowsTypes;
|
|
320
|
+
this.addWindowsTypeOptions.SingleSelection = true;
|
|
321
|
+
this.addWindowsTypeOptions.AllowSearchFilter = true;
|
|
322
|
+
this.addWindowsTypeOptions.IsRequired = true;
|
|
323
|
+
this.addDomain = new TextBoxOptions();
|
|
324
|
+
this.addDomain.Name = "addDomain";
|
|
325
|
+
this.addDomain.LabelKey = "Domain";
|
|
326
|
+
this.addDomain.Type = InputType.Text;
|
|
327
|
+
this.addDomain.Value = null;
|
|
328
|
+
this.addDomain.IsRequired = true;
|
|
329
|
+
this.addDomain.MaxLength = 256;
|
|
330
|
+
this.addSamAccount = new TextBoxOptions();
|
|
331
|
+
this.addSamAccount.Name = "addSamAccount";
|
|
332
|
+
this.addSamAccount.LabelKey = "SamAccount";
|
|
333
|
+
this.addSamAccount.Type = InputType.Text;
|
|
334
|
+
this.addSamAccount.Value = null;
|
|
335
|
+
this.addSamAccount.MaxLength = 20;
|
|
336
|
+
this.addPassword = new TextBoxOptions();
|
|
337
|
+
this.addPassword.Name = "addPassword";
|
|
338
|
+
this.addPassword.LabelKey = "Password";
|
|
339
|
+
this.addPassword.Type = InputType.Password;
|
|
340
|
+
this.addPassword.Value = null;
|
|
341
|
+
this.addPassword.RemoveDefaultPasswordValidation = true;
|
|
342
|
+
this.addPassword.MaxLength = 4000;
|
|
343
|
+
this.showAzureControls = false;
|
|
344
|
+
this.showWindowsControls = true;
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
this.formsCount = 2;
|
|
348
|
+
//Remove windows controls if found
|
|
349
|
+
this.addActiveDirectoryForm.removeControl("addDomain");
|
|
350
|
+
this.addActiveDirectoryForm.removeControl("addSamAccount");
|
|
351
|
+
this.addActiveDirectoryForm.removeControl("addPassword");
|
|
352
|
+
this.addActiveDirectoryForm.removeControl("addShowBuiltInGroups");
|
|
353
|
+
this.addActiveDirectoryForm.removeControl("addWindowsTypeOptions");
|
|
354
|
+
this.addTenantID = new TextBoxOptions();
|
|
355
|
+
this.addTenantID.Name = "addTenantID";
|
|
356
|
+
this.addTenantID.LabelKey = "TenantID";
|
|
357
|
+
this.addTenantID.Type = InputType.Text;
|
|
358
|
+
this.addTenantID.Value = null;
|
|
359
|
+
this.addTenantID.IsRequired = true;
|
|
360
|
+
this.addTenantID.MaxLength = 100;
|
|
361
|
+
this.addClientID = new TextBoxOptions();
|
|
362
|
+
this.addClientID.Name = "addClientID";
|
|
363
|
+
this.addClientID.LabelKey = "ClientID";
|
|
364
|
+
this.addClientID.Type = InputType.Text;
|
|
365
|
+
this.addClientID.Value = null;
|
|
366
|
+
this.addClientID.IsRequired = true;
|
|
367
|
+
this.addClientID.MaxLength = 100;
|
|
368
|
+
this.addClientSecret = new TextBoxOptions();
|
|
369
|
+
this.addClientSecret.Name = "addClientSecret";
|
|
370
|
+
this.addClientSecret.LabelKey = "ClientSecret";
|
|
371
|
+
this.addClientSecret.Type = InputType.Text;
|
|
372
|
+
this.addClientSecret.Value = null;
|
|
373
|
+
this.addClientSecret.IsRequired = true;
|
|
374
|
+
this.addClientSecret.MaxLength = 100;
|
|
375
|
+
this.showAzureControls = true;
|
|
376
|
+
this.showWindowsControls = false;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
//Wizard functions
|
|
380
|
+
nextStep() {
|
|
381
|
+
const currentStep = this.currentStep$.value;
|
|
382
|
+
const nextStep = currentStep + 1;
|
|
383
|
+
let ResultModel = this.addActiveDirectoryForm.value;
|
|
384
|
+
//Check required fields for next step
|
|
385
|
+
if (currentStep == 1) {
|
|
386
|
+
if (ResultModel.addTypeOptions) {
|
|
387
|
+
if (this.selectedType == ActiveDirectoryType.Windows) {
|
|
388
|
+
if (!ResultModel.addDomain || !ResultModel.addWindowsTypeOptions) {
|
|
389
|
+
this.adDomainControl.IsValid();
|
|
390
|
+
this.adWindowsTypeControl.IsValid();
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
if (!ResultModel.addTenantID || !ResultModel.addClientID || !ResultModel.addClientSecret) {
|
|
396
|
+
this.tenantIDControl.IsValid();
|
|
397
|
+
this.clientIDControl.IsValid();
|
|
398
|
+
this.clientSecretControl.IsValid();
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
this.adTypeControl.IsValid();
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
if (this.selectedType == ActiveDirectoryType.Windows) {
|
|
409
|
+
if (nextStep === 2 && currentStep === 1) {
|
|
410
|
+
this.treeDataLoaded = false;
|
|
411
|
+
//if (!this.addActiveDirectoryForm.get('addDomain').valid || !this.addActiveDirectoryForm.get('addTypeOptions').valid) {
|
|
412
|
+
// return;
|
|
413
|
+
this.utilityService.startBlockUI();
|
|
414
|
+
console.log(ResultModel);
|
|
415
|
+
let AddModel = new ActiveDirectoryAddEditModel();
|
|
416
|
+
AddModel.ConnectionName = ResultModel.addName;
|
|
417
|
+
AddModel.Domain = ResultModel.addDomain;
|
|
418
|
+
AddModel.ADWindowsTypeItemID_GUID = ResultModel.addWindowsTypeOptions;
|
|
419
|
+
AddModel.SamAccount = ResultModel.addSamAccount;
|
|
420
|
+
AddModel.Password = ResultModel.addPassword;
|
|
421
|
+
AddModel.ShowBuiltInGroups = ResultModel.addShowBuiltInGroups;
|
|
422
|
+
this.ActiveDirectoryService.checkValidationandGetData(AddModel).subscribe((result) => {
|
|
423
|
+
this, this.utilityService.stopBlockUI();
|
|
424
|
+
var data = result;
|
|
425
|
+
if (data.val) {
|
|
426
|
+
this.treeNodeData = data.treeData;
|
|
427
|
+
this.errorIsFound = false;
|
|
428
|
+
/////////////////////
|
|
429
|
+
let _transformer = (node, level) => {
|
|
430
|
+
return {
|
|
431
|
+
expandable: !!node.children && node.children.length > 0,
|
|
432
|
+
name: node.text,
|
|
433
|
+
level: level,
|
|
434
|
+
icon: node.icon,
|
|
435
|
+
selectable: node.selectable,
|
|
436
|
+
Index: node.Index,
|
|
437
|
+
data: node.data
|
|
438
|
+
};
|
|
439
|
+
};
|
|
440
|
+
this.treeControl = new FlatTreeControl(node => node.level, node => node.expandable);
|
|
441
|
+
this.treeFlattener = new MatTreeFlattener(_transformer, node => node.level, node => node.expandable, node => node.children);
|
|
442
|
+
this.dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener);
|
|
443
|
+
let jsonData = JSON.parse(this.treeNodeData);
|
|
444
|
+
this.dataSource.data = jsonData;
|
|
445
|
+
this.hasChild = (_, node) => node.expandable;
|
|
446
|
+
this.treeDataLoaded = true;
|
|
447
|
+
/////////////////////
|
|
448
|
+
this.currentStep$.next(nextStep);
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
this.validationError = data.error;
|
|
452
|
+
this.errorIsFound = true;
|
|
453
|
+
}
|
|
454
|
+
}, (error) => {
|
|
455
|
+
this.utilityService.stopBlockUI();
|
|
456
|
+
this.utilityService.notifyErrorMessage();
|
|
457
|
+
return false;
|
|
458
|
+
});
|
|
459
|
+
// https://angular.io/guide/forms
|
|
460
|
+
// https://angular.io/guide/form-validation
|
|
461
|
+
// validate the form and use below function to stop the wizard's step
|
|
462
|
+
// wizardObj.stop();
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
if (this.identifier == "" || this.identifier == undefined) {
|
|
466
|
+
this.utilityService.notifyWarningMessage(this.utilityService.getResourceValue("VAL_AtLeastOneIsRequired"));
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
this.addName.Value = this.identifierName + " connection";
|
|
471
|
+
this.currentStep$.next(nextStep);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
this.currentStep$.next(nextStep);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
;
|
|
480
|
+
prevStep() {
|
|
481
|
+
let currentStep = this.currentStep$.value;
|
|
482
|
+
let prevStep = this.currentStep$.value - 1;
|
|
483
|
+
if (prevStep === 0) {
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
this.currentStep$.next(prevStep);
|
|
487
|
+
}
|
|
488
|
+
setIdentifier(obj, selectedNode) {
|
|
489
|
+
this.selected = selectedNode.Index;
|
|
490
|
+
if (obj.checked) {
|
|
491
|
+
this.identifier = selectedNode.data;
|
|
492
|
+
this.identifierName = selectedNode.text;
|
|
493
|
+
}
|
|
494
|
+
else {
|
|
495
|
+
this.identifier = "";
|
|
496
|
+
this.identifierName = "";
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
//On destroy
|
|
500
|
+
ngOnDestroy() {
|
|
501
|
+
this.requestHandlerService.destroyHandler();
|
|
502
|
+
}
|
|
503
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ActiveDirectoryAddComponent, deps: [{ token: i1.PageInfoService }, { token: i2.UtilityService }, { token: i2.BBSFTranslateService }, { token: i3.ActiveDirectoryService }, { token: i4.Router }, { token: i2.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
504
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: ActiveDirectoryAddComponent, selector: "lib-active-directory-add", viewQueries: [{ propertyName: "adTypeControl", first: true, predicate: ["adTypeControl"], descendants: true }, { propertyName: "adDomainControl", first: true, predicate: ["adDomainControl"], descendants: true }, { propertyName: "adWindowsTypeControl", first: true, predicate: ["adWindowsTypeControl"], descendants: true }, { propertyName: "tenantIDControl", first: true, predicate: ["tenantIDControl"], descendants: true }, { propertyName: "clientIDControl", first: true, predicate: ["clientIDControl"], descendants: true }, { propertyName: "clientSecretControl", first: true, predicate: ["clientSecretControl"], descendants: true }], ngImport: i0, template: "\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"stepper stepper-pills stepper-column d-flex flex-column flex-xl-row flex-row-fluid \" id=\"kt_create_account_stepper\">\r\n <div class=\"d-flex justify-content-center rounded justify-content-xl-start flex-row-auto me-9 card\">\r\n <div class=\"card-body px-6 px-lg-10 px-xxl-15 py-20\">\r\n <div class=\"stepper-nav\">\r\n <div class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 1 }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">1</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory\")}}</h3>\r\n\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab1Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showWindowsControls\" class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 2 && showWindowsControls}\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">2</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory_SelectContainer\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab2Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"stepper-item\" [ngClass]=\"{current: (currentStep$.value === formsCount ) }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">{{formsCount}}</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"Options\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab3Note\")}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n <div class=\"card d-flex flex-row-fluid flex-center rounded\">\r\n <div class=\"p-20 w-100 card-body\" *ngIf=\"isAddFormLoaded\">\r\n <BBSF-Form [options]=\"addActiveDirectoryFormOptions\">\r\n <div class=\"current\">\r\n <ng-container *ngIf=\"currentStep$.value === 1\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adTypeControl [options]=\"addTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"typeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div *ngIf=\"showWindowsControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adWindowsTypeControl [options]=\"addWindowsTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"windowsTypeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #adDomainControl [options]=\"addDomain\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n <div *ngIf=\"errorIsFound\" class=\"text-danger\">{{validationError}}</div>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addSamAccount\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addPassword\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\" *ngIf=\"addShowBuiltInGroupsVisible\">\r\n <BBSF-Toggleslide [options]=\"addShowBuiltInGroups\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #tenantIDControl [options]=\"addTenantID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientIDControl [options]=\"addClientID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientSecretControl [options]=\"addClientSecret\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === 2 && showWindowsControls\">\r\n <div id=\"treeDataContainer\" *ngIf=\"treeDataLoaded\">\r\n\r\n\r\n <!--------Helllllllllllllllllllo---------->\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;\" matTreeNodePadding>\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n\r\n <mat-checkbox class=\"checklist-leaf-node\" [checked]=\"selected === node.Index\" (change)=\"setIdentifier($event,node)\" [disabled]=\"node.selectable?false:true\">\r\n {{node.name}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding>\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\" class=\"btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-1 \">\r\n <i *ngIf=\"treeControl.isExpanded(node)\" class=\"fas fa-chevron-down\"></i>\r\n <i *ngIf=\"!treeControl.isExpanded(node)\" class=\"fas fa-chevron-right\"></i>\r\n\r\n </button>\r\n <mat-checkbox [disabled]=\"node.selectable?false:true\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <div class=\"form-group\">\r\n <BBSF-TextBox [options]=\"addName\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addPermissionSet\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addLanguage\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addWelcomeMsgTemp\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addFileProvider\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addMarkInactive\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addDailyJob\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Property\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"ADProperty\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"IncludeInUpdate\")}}</th>\r\n <th class=\"min-w-50px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of addMappingsOptions;let i=index;\">\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-CheckBox>\r\n <!--Hidden include in update value-->\r\n <BBSF-TextBox [options]=\"option[4]\" [group]=\"addActiveDirectoryForm\" [hidden]=\"true\">\r\n </BBSF-TextBox>\r\n </td>\r\n\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger\" (click)=\"deleteADMapping(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addADMapping()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"d-flex flex-stack pt-10\">\r\n <div class=\"mr-2\">\r\n <ng-container *ngIf=\"currentStep$.value !== 1\">\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-light-primary me-3\"\r\n (click)=\"prevStep()\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr063.svg'\"\r\n class=\"svg-icon svg-icon-4 me-1\"></span>\r\n {{utilityService.getResourceValue(\"Previous\")}}\r\n </button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"currentStep$.value !== formsCount\">\r\n <div>\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-primary me-3\"\r\n (click)=\"nextStep()\">\r\n <span class=\"indicator-label\">\r\n <ng-container *ngIf=\"currentStep$.value < formsCount\">\r\n {{utilityService.getResourceValue(\"Next\")}} {{ \" \" }}\r\n <span [inlineSVG]=\"'./src/assets/images/arr064.svg'\"\r\n class=\"svg-icon svg-icon-3 ms-2 me-0\"></span>\r\n </ng-container>\r\n\r\n </span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <button type=\"submit\" class=\"btn btn-lg btn-primary me-3\">\r\n {{utilityService.getResourceValue(\"Submit\")}}\r\n </button>\r\n\r\n </ng-container>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i6.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i6.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { kind: "directive", type: i7.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "directive", type: i8.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i8.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i8.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i8.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i8.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
|
|
505
|
+
}
|
|
506
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ActiveDirectoryAddComponent, decorators: [{
|
|
507
|
+
type: Component,
|
|
508
|
+
args: [{ selector: 'lib-active-directory-add', template: "\r\n\r\n<div class=\"container-fluid\">\r\n <div class=\"stepper stepper-pills stepper-column d-flex flex-column flex-xl-row flex-row-fluid \" id=\"kt_create_account_stepper\">\r\n <div class=\"d-flex justify-content-center rounded justify-content-xl-start flex-row-auto me-9 card\">\r\n <div class=\"card-body px-6 px-lg-10 px-xxl-15 py-20\">\r\n <div class=\"stepper-nav\">\r\n <div class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 1 }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">1</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory\")}}</h3>\r\n\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab1Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showWindowsControls\" class=\"stepper-item\" [ngClass]=\"{current: currentStep$.value === 2 && showWindowsControls}\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">2</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"ActiveDirectory_SelectContainer\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab2Note\")}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"stepper-item\" [ngClass]=\"{current: (currentStep$.value === formsCount ) }\">\r\n <div class=\"stepper-line w-40px\"></div>\r\n\r\n <div class=\"stepper-icon w-40px h-40px\">\r\n <i class=\"stepper-check fas fa-check\"></i>\r\n <span class=\"stepper-number\">{{formsCount}}</span>\r\n </div>\r\n\r\n <div class=\"stepper-label\">\r\n <h3 class=\"stepper-title\">{{utilityService.getResourceValue(\"Options\")}}</h3>\r\n <div class=\"stepper-desc fw-bold\">{{utilityService.getResourceValue(\"ActiveDirectory_Tab3Note\")}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n\r\n <div class=\"card d-flex flex-row-fluid flex-center rounded\">\r\n <div class=\"p-20 w-100 card-body\" *ngIf=\"isAddFormLoaded\">\r\n <BBSF-Form [options]=\"addActiveDirectoryFormOptions\">\r\n <div class=\"current\">\r\n <ng-container *ngIf=\"currentStep$.value === 1\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adTypeControl [options]=\"addTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"typeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div *ngIf=\"showWindowsControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList #adWindowsTypeControl [options]=\"addWindowsTypeOptions\" [group]=\"addActiveDirectoryForm\" (OnChange)=\"windowsTypeChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #adDomainControl [options]=\"addDomain\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n <div *ngIf=\"errorIsFound\" class=\"text-danger\">{{validationError}}</div>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addSamAccount\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox [options]=\"addPassword\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\" *ngIf=\"addShowBuiltInGroupsVisible\">\r\n <BBSF-Toggleslide [options]=\"addShowBuiltInGroups\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showAzureControls\">\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #tenantIDControl [options]=\"addTenantID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientIDControl [options]=\"addClientID\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-TextBox #clientSecretControl [options]=\"addClientSecret\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === 2 && showWindowsControls\">\r\n <div id=\"treeDataContainer\" *ngIf=\"treeDataLoaded\">\r\n\r\n\r\n <!--------Helllllllllllllllllllo---------->\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;\" matTreeNodePadding>\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n\r\n <mat-checkbox class=\"checklist-leaf-node\" [checked]=\"selected === node.Index\" (change)=\"setIdentifier($event,node)\" [disabled]=\"node.selectable?false:true\">\r\n {{node.name}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding>\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\" class=\"btn btn-icon btn-bg-light btn-active-color-primary btn-sm me-1 \">\r\n <i *ngIf=\"treeControl.isExpanded(node)\" class=\"fas fa-chevron-down\"></i>\r\n <i *ngIf=\"!treeControl.isExpanded(node)\" class=\"fas fa-chevron-right\"></i>\r\n\r\n </button>\r\n <mat-checkbox [disabled]=\"node.selectable?false:true\">{{node.name}}</mat-checkbox>\r\n\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <div class=\"form-group\">\r\n <BBSF-TextBox [options]=\"addName\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addPermissionSet\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addLanguage\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addWelcomeMsgTemp\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-DropdownList [options]=\"addFileProvider\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addMarkInactive\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"form-group mb-10\">\r\n <BBSF-Toggleslide [options]=\"addDailyJob\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Type\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Property\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"ADProperty\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"IncludeInUpdate\")}}</th>\r\n <th class=\"min-w-50px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of addMappingsOptions;let i=index;\">\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[0]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"option[1]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n <td>\r\n <BBSF-CheckBox [options]=\"option[3]\" [group]=\"addActiveDirectoryForm\">\r\n </BBSF-CheckBox>\r\n <!--Hidden include in update value-->\r\n <BBSF-TextBox [options]=\"option[4]\" [group]=\"addActiveDirectoryForm\" [hidden]=\"true\">\r\n </BBSF-TextBox>\r\n </td>\r\n\r\n <td>\r\n <a class=\"btn btn-icon btn-light-danger\" (click)=\"deleteADMapping(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addADMapping()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"d-flex flex-stack pt-10\">\r\n <div class=\"mr-2\">\r\n <ng-container *ngIf=\"currentStep$.value !== 1\">\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-light-primary me-3\"\r\n (click)=\"prevStep()\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr063.svg'\"\r\n class=\"svg-icon svg-icon-4 me-1\"></span>\r\n {{utilityService.getResourceValue(\"Previous\")}}\r\n </button>\r\n </ng-container>\r\n </div>\r\n <ng-container *ngIf=\"currentStep$.value !== formsCount\">\r\n <div>\r\n <button type=\"button\"\r\n class=\"btn btn-lg btn-primary me-3\"\r\n (click)=\"nextStep()\">\r\n <span class=\"indicator-label\">\r\n <ng-container *ngIf=\"currentStep$.value < formsCount\">\r\n {{utilityService.getResourceValue(\"Next\")}} {{ \" \" }}\r\n <span [inlineSVG]=\"'./src/assets/images/arr064.svg'\"\r\n class=\"svg-icon svg-icon-3 ms-2 me-0\"></span>\r\n </ng-container>\r\n\r\n </span>\r\n </button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === formsCount\">\r\n <button type=\"submit\" class=\"btn btn-lg btn-primary me-3\">\r\n {{utilityService.getResourceValue(\"Submit\")}}\r\n </button>\r\n\r\n </ng-container>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n</div>\r\n" }]
|
|
509
|
+
}], ctorParameters: () => [{ type: i1.PageInfoService }, { type: i2.UtilityService }, { type: i2.BBSFTranslateService }, { type: i3.ActiveDirectoryService }, { type: i4.Router }, { type: i2.RequestHandlerService }], propDecorators: { adTypeControl: [{
|
|
510
|
+
type: ViewChild,
|
|
511
|
+
args: ['adTypeControl', { static: false }]
|
|
512
|
+
}], adDomainControl: [{
|
|
513
|
+
type: ViewChild,
|
|
514
|
+
args: ['adDomainControl', { static: false }]
|
|
515
|
+
}], adWindowsTypeControl: [{
|
|
516
|
+
type: ViewChild,
|
|
517
|
+
args: ['adWindowsTypeControl', { static: false }]
|
|
518
|
+
}], tenantIDControl: [{
|
|
519
|
+
type: ViewChild,
|
|
520
|
+
args: ['tenantIDControl', { static: false }]
|
|
521
|
+
}], clientIDControl: [{
|
|
522
|
+
type: ViewChild,
|
|
523
|
+
args: ['clientIDControl', { static: false }]
|
|
524
|
+
}], clientSecretControl: [{
|
|
525
|
+
type: ViewChild,
|
|
526
|
+
args: ['clientSecretControl', { static: false }]
|
|
527
|
+
}] } });
|
|
528
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWRpcmVjdG9yeS1hZGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9BY3RpdmVEaXJlY3Rvcmllcy9hY3RpdmUtZGlyZWN0b3J5LWFkZC9hY3RpdmUtZGlyZWN0b3J5LWFkZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL0FjdGl2ZURpcmVjdG9yaWVzL2FjdGl2ZS1kaXJlY3RvcnktYWRkL2FjdGl2ZS1kaXJlY3RvcnktYWRkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUEyQyxNQUFNLHlCQUF5QixDQUFDO0FBRS9MLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1DQUFtQyxFQUFFLE1BQU0s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QkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ08sb0JBQW9CO3NCQUF6RSxTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFrQkgsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ00sbUJBQW1CO3NCQUF2RSxTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRvZ2dsZVNsaWRlT3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBJbnB1dFR5cGUsIFRleHRCb3hPcHRpb25zLCBDaGVja0JveE9wdGlvbnMsIEZvcm1PcHRpb25zLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIFRleHRib3hDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEFjdGl2ZURpcmVjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvQWN0aXZlRGlyZWN0b3J5U2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9BRE1vZGVscy9BY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwnO1xyXG5pbXBvcnQgeyBBRE1hcHBpbmdNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvQURNb2RlbHMvQURNYXBwaW5nTW9kZWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94LCBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgQWN0aXZlRGlyZWN0b3J5VHlwZSwgQWN0aXZlRGlyZWN0b3J5V2luZG93Q29ubmVjdGlvblR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuXHJcbmludGVyZmFjZSBBRE5vZGUge1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBjaGlsZHJlbj86IEFETm9kZVtdO1xyXG4gIGRhdGE6IHN0cmluZztcclxuICBzZWxlY3RhYmxlOiBib29sZWFuO1xyXG4gIGljb246IHN0cmluZztcclxuICBzdGF0ZTogYW55O1xyXG4gIEluZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKiBGbGF0IG5vZGUgd2l0aCBleHBhbmRhYmxlIGFuZCBsZXZlbCBpbmZvcm1hdGlvbiAqL1xyXG5pbnRlcmZhY2UgRmxhdE5vZGUge1xyXG4gIGV4cGFuZGFibGU6IGJvb2xlYW47XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGxldmVsOiBudW1iZXI7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFjdGl2ZS1kaXJlY3RvcnktYWRkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZlLWRpcmVjdG9yeS1hZGQuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY3RpdmVEaXJlY3RvcnlBZGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLy93aXphcmRcclxuICBmb3Jtc0NvdW50ID0gMjtcclxuICBjdXJyZW50U3RlcCQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgxKTtcclxuICAvL3dpemFyZFxyXG4gIC8vUmVxdWlyZWQgTGlzdHNcclxuICBwZXJtaXNzaW9uU2V0TGlzdDogYW55W10gPSBbXTtcclxuICBsYW5ndWFnZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHdlbGNvbWVNc2dUZW1wTGlzdDogYW55W10gPSBbXTtcclxuICBhZFR5cGVzTGlzdDogYW55W10gPSBbXTtcclxuICBmaWxlUHJvdmlkZXJzOiBhbnlbXSA9IFtdO1xyXG4gIG1hcHBpbmdQcm9wZXJ0aWVzTGlzdDogYW55W10gPSBbXTtcclxuICBtYXBwaW5nVHlwZXNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIC8vV2luZG93c1xyXG4gIGFkV2luZG93c1R5cGVzOiBhbnlbXSA9IFtdOztcclxuXHJcbiAgLy9BZGQgTW9kZWwgQ29udHJvbHNcclxuICBhZGRBY3RpdmVEaXJlY3RvcnlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zO1xyXG4gIGFkZFR5cGVPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkTmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgYWRkUGVybWlzc2lvblNldDogRHJvcGRvd25PcHRpb25zO1xyXG4gIGFkZExhbmd1YWdlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgYWRkV2VsY29tZU1zZ1RlbXA6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRGaWxlUHJvdmlkZXI6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRNYXJrSW5hY3RpdmU6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuICBhZGREYWlseUpvYjogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZE1hcHBpbmdzT3B0aW9uczogYW55W10gPSBbXTtcclxuICBhZGRNYXBwaW5nc0NvdW50OiBudW1iZXIgPSAwO1xyXG4gIHNlbGVjdGVkVHlwZTogc3RyaW5nO1xyXG4gIGlzQWRkRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ2FkVHlwZUNvbnRyb2wnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWRUeXBlQ29udHJvbDogRHJvcGRvd25MaXN0Q29tcG9uZW50O1xyXG5cclxuICAvLy8vLy8vLy9TdGFydCBXaW5kb3dzIGNvbnRyb2xzLy8vLy9cclxuICBhZGREb21haW46IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFNhbUFjY291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZFBhc3N3b3JkOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRXaW5kb3dzVHlwZU9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBhZGRTaG93QnVpbHRJbkdyb3VwczogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIGFkZFNob3dCdWlsdEluR3JvdXBzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dXaW5kb3dzQ29udHJvbHM6IGJvb2xlYW47XHJcbiAgQFZpZXdDaGlsZCgnYWREb21haW5Db250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFkRG9tYWluQ29udHJvbDogVGV4dGJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZFdpbmRvd3NUeXBlQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBhZFdpbmRvd3NUeXBlQ29udHJvbDogRHJvcGRvd25MaXN0Q29tcG9uZW50O1xyXG4gIC8vVHJlZVxyXG4gIHZhbGlkYXRpb25FcnJvcjogc3RyaW5nO1xyXG4gIGVycm9ySXNGb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRyZWVOb2RlRGF0YTogYW55O1xyXG4gIHRyZWVDb250cm9sOiBhbnk7XHJcbiAgdHJlZUZsYXR0ZW5lcjogYW55O1xyXG4gIGRhdGFTb3VyY2U6IGFueTtcclxuICBoYXNDaGlsZDogYW55O1xyXG4gIHRyZWVEYXRhTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWQgPSAtMTtcclxuICBpZGVudGlmaWVyOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGlkZW50aWZpZXJOYW1lOiBzdHJpbmcgPSBcIlwiO1xyXG4gIC8vLy8vLy8vL0VuZCBXaW5kb3dzIGNvbnRyb2xzLy8vLy9cclxuICAvL0F6dXJlXHJcbiAgYWRkVGVuYW50SUQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIGFkZENsaWVudElEOiBUZXh0Qm94T3B0aW9ucztcclxuICBhZGRDbGllbnRTZWNyZXQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIEBWaWV3Q2hpbGQoJ3RlbmFudElEQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZW5hbnRJRENvbnRyb2w6IFRleHRib3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnY2xpZW50SURDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNsaWVudElEQ29udHJvbDogVGV4dGJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdjbGllbnRTZWNyZXRDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNsaWVudFNlY3JldENvbnRyb2w6IFRleHRib3hDb21wb25lbnQ7XHJcblxyXG4gIHNob3dBenVyZUNvbnRyb2xzOiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgQWN0aXZlRGlyZWN0b3J5U2VydmljZTogQWN0aXZlRGlyZWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZEFjdGl2ZURpcmVjdG9yeVwiKTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBRENvbm5lY3Rpb25cIiksIHBhdGg6ICcvQWRtaW4vQURDb25uZWN0aW9uJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICB0aGlzLmluaXRpYWxpemVQYWdlKCk7XHJcbiAgfVxyXG5cclxuICAvL0luaXQgcGFnZVxyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgdGhpcy5BY3RpdmVEaXJlY3RvcnlTZXJ2aWNlLmxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmV1bHRPYmogPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSByZXVsdE9iai5wZXJtaXNzaW9uU2V0cztcclxuICAgICAgdGhpcy5hZFR5cGVzTGlzdCA9IHJldWx0T2JqLmFkVHlwZXM7XHJcbiAgICAgIHRoaXMuYWRXaW5kb3dzVHlwZXMgPSByZXVsdE9iai5hZFdpbmRvd3NUeXBlcztcclxuICAgICAgdGhpcy5sYW5ndWFnZXNMaXN0ID0gcmV1bHRPYmoubGFuZ3VhZ2VzO1xyXG4gICAgICB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdCA9IHJldWx0T2JqLnRlbXBsYXRlcztcclxuICAgICAgdGhpcy5maWxlUHJvdmlkZXJzID0gcmV1bHRPYmouZmlsZVByb3ZpZGVycztcclxuXHJcbiAgICAgIHRoaXMubWFwcGluZ1Byb3BlcnRpZXNMaXN0ID0gcmV1bHRPYmoubWFwcGluZ1Byb3BlcnRpZXM7XHJcbiAgICAgIHRoaXMubWFwcGluZ1R5cGVzTGlzdCA9IHJldWx0T2JqLm1hcHBpbmdUeXBlcztcclxuXHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtXHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkQURNb2RlbDtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZEFERnVuY3Rpb247XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybU9wdGlvbnMuT25TdWNjZXNzSGFuZGxlciA9IHRoaXMuYWRkQURPblN1Y2Nlc3M7XHJcblxyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLk5hbWUgPSBcImFkZFR5cGVPcHRpb25zXCJcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5MYWJlbEtleSA9IFwiVHlwZVwiXHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWxcclxuICAgICAgdGhpcy5hZGRUeXBlT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5hZFR5cGVzTGlzdFxyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkVHlwZU9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFR5cGVPcHRpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hZGROYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5OYW1lID0gXCJhZGROYW1lXCI7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5MYWJlbEtleSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLmFkZE5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZE5hbWUuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZE5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkTmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5OYW1lID0gXCJhZGRQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0LkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0XCJcclxuICAgICAgdGhpcy5hZGRQZXJtaXNzaW9uU2V0LkRhdGFTb3VyY2UgPSB0aGlzLnBlcm1pc3Npb25TZXRMaXN0XHJcbiAgICAgIHRoaXMuYWRkUGVybWlzc2lvblNldC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFBlcm1pc3Npb25TZXQuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLk5hbWUgPSBcImFkZExhbmd1YWdlXCJcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5MYWJlbEtleSA9IFwiTGFuZ3VhZ2VcIlxyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLkRhdGFTb3VyY2UgPSB0aGlzLmxhbmd1YWdlc0xpc3RcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZExhbmd1YWdlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRMYW5ndWFnZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAuTmFtZSA9IFwiYWRkV2VsY29tZU1zZ1RlbXBcIlxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLkxhYmVsS2V5ID0gXCJXZWxjb21lTXNnVGVtcGxhdGVcIlxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLkRhdGFTb3VyY2UgPSB0aGlzLndlbGNvbWVNc2dUZW1wTGlzdFxyXG4gICAgICB0aGlzLmFkZFdlbGNvbWVNc2dUZW1wLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkV2VsY29tZU1zZ1RlbXAuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5hZGRGaWxlUHJvdmlkZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLk5hbWUgPSBcImFkZEZpbGVQcm92aWRlclwiXHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLkxhYmVsS2V5ID0gXCJGaWxlUHJvdmlkZXJcIlxyXG4gICAgICB0aGlzLmFkZEZpbGVQcm92aWRlci5EYXRhU291cmNlID0gdGhpcy5maWxlUHJvdmlkZXJzXHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkRmlsZVByb3ZpZGVyLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkTWFya0luYWN0aXZlID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5OYW1lID0gXCJhZGRNYXJrSW5hY3RpdmVcIlxyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5MYWJlbEtleSA9IFwiTWFya0FzSW5hY3RpdmVcIlxyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFkZE1hcmtJbmFjdGl2ZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkRGFpbHlKb2IgPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRGFpbHlKb2IuTmFtZSA9IFwiYWRkRGFpbHlKb2JcIlxyXG4gICAgICB0aGlzLmFkZERhaWx5Sm9iLkxhYmVsS2V5ID0gXCJBZGRUb0RhaWx5Sm9iXCJcclxuICAgICAgdGhpcy5hZGREYWlseUpvYi5WYWx1ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmFkZERhaWx5Sm9iLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG5cclxuICAgICAgLy9zZXQgQUQgbWFwcGluZ1xyXG4gICAgICBsZXQgZGF0YTogYW55ID0gdGhpcy5nZXRBRE1hcHBpbmdPcHRpb25zKHJldWx0T2JqLmFkTWFwcGluZ3MpO1xyXG4gICAgICB0aGlzLmFkZE1hcHBpbmdzT3B0aW9ucyA9IGRhdGFbMF07XHJcbiAgICAgIHRoaXMuYWRkTWFwcGluZ3NDb3VudCA9IGRhdGFbMV07XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmlzQWRkRm9ybUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0sIDUwKTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vQWRkIEFjdGl2ZSBkaXJlY3RvcnkgZnVuY3Rpb25zXHJcbiAgZ2V0QWRkQURNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IHJlc3VsdE1vZGVsID0gdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnZhbHVlIGFzIGFueTtcclxuICAgIC8vY29uc29sZS5sb2coUmVzdWx0TW9kZWwpO1xyXG4gICAgbGV0IEFkZE1vZGVsOiBBY3RpdmVEaXJlY3RvcnlBZGRFZGl0TW9kZWwgPSBuZXcgQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5Db25uZWN0aW9uTmFtZSA9IHJlc3VsdE1vZGVsLmFkZE5hbWU7XHJcbiAgICBBZGRNb2RlbC5BRFR5cGVJdGVtSURfR1VJRCA9IHJlc3VsdE1vZGVsLmFkZFR5cGVPcHRpb25zXHJcbiAgICBBZGRNb2RlbC5QZXJtaXNzaW9uU2V0SUQgPSByZXN1bHRNb2RlbC5hZGRQZXJtaXNzaW9uU2V0ICE9IG51bGwgPyByZXN1bHRNb2RlbC5hZGRQZXJtaXNzaW9uU2V0IDogbnVsbFxyXG4gICAgQWRkTW9kZWwuTGFuZ0tleSA9IHJlc3VsdE1vZGVsLmFkZExhbmd1YWdlO1xyXG4gICAgQWRkTW9kZWwuV2VsY29tZVRlbXBsYXRlSUQgPSByZXN1bHRNb2RlbC5hZGRXZWxjb21lTXNnVGVtcCAhPSBudWxsID8gTnVtYmVyKHJlc3VsdE1vZGVsLmFkZFdlbGNvbWVNc2dUZW1wKSA6IG51bGxcclxuICAgIEFkZE1vZGVsLkltYWdlc0ZpbGVQcm92aWRlck5hbWUgPSByZXN1bHRNb2RlbC5hZGRGaWxlUHJvdmlkZXJcclxuICAgIEFkZE1vZGVsLk1hcmtBc0luYWN0aXZlID0gcmVzdWx0TW9kZWwuYWRkTWFya0luYWN0aXZlXHJcbiAgICBBZGRNb2RlbC5BZGRUb0RhaWx5Sm9iID0gcmVzdWx0TW9kZWwuYWRkRGFpbHlKb2JcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZFR5cGUgPT0gQWN0aXZlRGlyZWN0b3J5VHlwZS5XaW5kb3dzKSB7XHJcbiAgICAgIEFkZE1vZGVsLklkZW50aWZpZXIgPSB0aGlzLmlkZW50aWZpZXI7XHJcbiAgICAgIEFkZE1vZGVsLkRvbWFpbiA9IHJlc3VsdE1vZGVsLmFkZERvbWFpbjtcclxuICAgICAgQWRkTW9kZWwuU2FtQWNjb3VudCA9IHJlc3VsdE1vZGVsLmFkZFNhbUFjY291bnQ7XHJcbiAgICAgIEFkZE1vZGVsLlBhc3N3b3JkID0gcmVzdWx0TW9kZWwuYWRkUGFzc3dvcmQ7XHJcbiAgICAgIEFkZE1vZGVsLlNob3dCdWlsdEluR3JvdXBzID0gcmVzdWx0TW9kZWwuYWRkU2hvd0J1aWx0SW5Hcm91cHM7XHJcbiAgICAgIEFkZE1vZGVsLkFEV2luZG93c1R5cGVJdGVtSURfR1VJRCA9IHJlc3VsdE1vZGVsLmFkZFdpbmRvd3NUeXBlT3B0aW9uc1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIEFkZE1vZGVsLlRlbmFudElEID0gcmVzdWx0TW9kZWwuYWRkVGVuYW50SUQ7XHJcbiAgICAgIEFkZE1vZGVsLkNsaWVudElEID0gcmVzdWx0TW9kZWwuYWRkQ2xpZW50SUQ7XHJcbiAgICAgIEFkZE1vZGVsLkNsaWVudFNlY3JldCA9IHJlc3VsdE1vZGVsLmFkZENsaWVudFNlY3JldDtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5hZGRNYXBwaW5nc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IGFkZE1BcHBpbmdUeXBlID0gcmVzdWx0TW9kZWxbXCJBRE1hcHBpbmdUeXBlXCIgKyBqXTtcclxuICAgICAgaWYgKGFkZE1BcHBpbmdUeXBlID09IHVuZGVmaW5lZClcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nUHJvcGVydHkgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBqXTtcclxuICAgICAgbGV0IGVkaXRNQXBwaW5nUHJvcGVydHlOYW1lID0gcmVzdWx0TW9kZWxbXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IGFkTUFwcGluZ09iajogQURNYXBwaW5nTW9kZWwgPSBuZXcgQURNYXBwaW5nTW9kZWwoKTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkFETWFwcGluZ1R5cGVJdGVtSUQgPSBhZGRNQXBwaW5nVHlwZTtcclxuICAgICAgYWRNQXBwaW5nT2JqLkJCU0ZQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5O1xyXG4gICAgICBhZE1BcHBpbmdPYmouQURQcm9wZXJ0eU5hbWUgPSBlZGl0TUFwcGluZ1Byb3BlcnR5TmFtZTtcclxuICAgICAgbGV0IGFkTUFwcGluZ0luY2x1ZGVJblVwZGF0ZSA9IHJlc3VsdE1vZGVsW1wiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgal07XHJcbiAgICAgIGxldCBhZE1BcHBpbmdIaWRkZW5JbmNsdWRlSW5VcGRhdGUgPSByZXN1bHRNb2RlbFtcIkFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGVcIiArIGpdO1xyXG4gICAgICBhZE1BcHBpbmdPYmouSW5jbHVkZUluVXBkYXRlID0gYWRNQXBwaW5nSW5jbHVkZUluVXBkYXRlID09IHVuZGVmaW5lZCA/IGFkTUFwcGluZ0hpZGRlbkluY2x1ZGVJblVwZGF0ZSA6IGFkTUFwcGluZ0luY2x1ZGVJblVwZGF0ZTtcclxuXHJcbiAgICAgIEFkZE1vZGVsLkFETWFwcGluZ3MucHVzaChhZE1BcHBpbmdPYmopO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRBZGRBREZ1bmN0aW9uID0gKGFkZE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLkFjdGl2ZURpcmVjdG9yeVNlcnZpY2UuYWRkQWN0aXZlRGlyZWN0b3J5KGFkZE1vZGVsKVxyXG4gIH1cclxuICBhZGRBRE9uU3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL0FEQ29ubmVjdGlvbiddKTtcclxuICB9XHJcblxyXG4gIC8vTWFwcGluZyBmdW5jdGlvbnNcclxuICBnZXRBRE1hcHBpbmdPcHRpb25zKEFETWFwcGluZ3M6IGFueVtdKSB7XHJcbiAgICBsZXQgQURNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBBRE1hcHBpbmdDb3VudDogbnVtYmVyID0gMDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQURNYXBwaW5ncy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgbGV0IG9iamVjdE1hcHBpbmdPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1R5cGUgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIGxldCBzZWxlY3RlZFR5cGUgPSB0aGlzLm1hcHBpbmdUeXBlc0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmtleSA9PSBBRE1hcHBpbmdzW2ldLmFkTWFwcGluZ1R5cGVJdGVtSUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLk5hbWUgPSBcIkFETWFwcGluZ1R5cGVcIiArIGk7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nVHlwZS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdUeXBlLlNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZFR5cGU7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1R5cGUuRGF0YVNvdXJjZSA9IHRoaXMubWFwcGluZ1R5cGVzTGlzdDtcclxuICAgICAgQURNYXBwaW5nVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgbGV0IHNlbGVjdGVkUHJvcGVydHkgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5ID09IEFETWFwcGluZ3NbaV0uYmJzZlByb3BlcnR5TmFtZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSlbMF07XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5Lk5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRQcm9wZXJ0eTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5LkRhdGFTb3VyY2UgPSB0aGlzLm1hcHBpbmdQcm9wZXJ0aWVzTGlzdDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ1Byb3BlcnR5TmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuTmFtZSA9IFwiQURNYXBwaW5nUHJvcGVydHlOYW1lXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlZhbHVlID0gQURNYXBwaW5nc1tpXS5hZFByb3BlcnR5TmFtZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5NYXhMZW5ndGggPSAxMDI0O1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ0luY2x1ZGVVcGRhdGUgPSBuZXcgQ2hlY2tCb3hPcHRpb25zKCk7XHJcbiAgICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUuTmFtZSA9IFwiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgaTtcclxuICAgICAgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZS5WYWx1ZSA9IEFETWFwcGluZ3NbaV0uaW5jbHVkZUluVXBkYXRlO1xyXG4gICAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLklzRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5OYW1lID0gXCJBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlXCIgKyBpO1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlLlZhbHVlID0gQURNYXBwaW5nc1tpXS5pbmNsdWRlSW5VcGRhdGU7XHJcblxyXG4gICAgICBvYmplY3RNYXBwaW5nT3B0aW9ucy5wdXNoKEFETWFwcGluZ1R5cGUsIEFETWFwcGluZ1Byb3BlcnR5LCBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUsIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUsIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUpO1xyXG4gICAgICBBRE1hcHBpbmdPcHRpb25zLnB1c2gob2JqZWN0TWFwcGluZ09wdGlvbnMpO1xyXG4gICAgICBBRE1hcHBpbmdDb3VudCArPSAxO1xyXG5cclxuICAgIH1cclxuICAgIHJldHVybiBbQURNYXBwaW5nT3B0aW9ucywgQURNYXBwaW5nQ291bnRdO1xyXG4gIH1cclxuICBkZWxldGVBRE1hcHBpbmcoZGVsZXRlZEFETUFwcGluZzogYW55KSB7XHJcbiAgICBsZXQgZGVsZXRlZE1hcHBpbmdJbmRleDogbnVtYmVyID0gdGhpcy5hZGRNYXBwaW5nc09wdGlvbnMuaW5kZXhPZihkZWxldGVkQURNQXBwaW5nKTtcclxuICAgIGlmIChkZWxldGVkTWFwcGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmFkZE1hcHBpbmdzT3B0aW9ucy5zcGxpY2UoZGVsZXRlZE1hcHBpbmdJbmRleCwgMSk7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZEFETUFwcGluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRBRE1BcHBpbmdbaV0uTmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYWRkQURNYXBwaW5nKCkge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5hZGRNYXBwaW5nc0NvdW50O1xyXG5cclxuICAgIGxldCBvYmplY3RNYXBwaW5nT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nVHlwZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1R5cGUuTmFtZSA9IFwiQURNYXBwaW5nVHlwZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdUeXBlLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdUeXBlLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgQURNYXBwaW5nVHlwZS5EYXRhU291cmNlID0gdGhpcy5tYXBwaW5nVHlwZXNMaXN0O1xyXG5cclxuICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5Lk5hbWUgPSBcIkFETWFwcGluZ1Byb3BlcnR5XCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5LkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHkuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eS5EYXRhU291cmNlID0gdGhpcy5tYXBwaW5nUHJvcGVydGllc0xpc3Q7XHJcblxyXG5cclxuICAgIGxldCBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5OYW1lID0gXCJBRE1hcHBpbmdQcm9wZXJ0eU5hbWVcIiArIGluZGV4O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICBBRE1hcHBpbmdQcm9wZXJ0eU5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgQURNYXBwaW5nUHJvcGVydHlOYW1lLklzUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgIEFETWFwcGluZ1Byb3BlcnR5TmFtZS5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIEFETWFwcGluZ0luY2x1ZGVVcGRhdGUuTmFtZSA9IFwiQURNYXBwaW5nSW5jbHVkZVVwZGF0ZVwiICsgaW5kZXg7XHJcbiAgICBBRE1hcHBpbmdJbmNsdWRlVXBkYXRlLlZhbHVlID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZS5OYW1lID0gXCJBRE1hcHBpbmdIaWRkZW5JbmNsdWRlVXBkYXRlXCIgKyBpbmRleDtcclxuICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIEFETWFwcGluZ0hpZGRlbkluY2x1ZGVVcGRhdGUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuICAgIG9iamVjdE1hcHBpbmdPcHRpb25zLnB1c2goQURNYXBwaW5nVHlwZSwgQURNYXBwaW5nUHJvcGVydHksIEFETWFwcGluZ1Byb3BlcnR5TmFtZSwgQURNYXBwaW5nSW5jbHVkZVVwZGF0ZSwgQURNYXBwaW5nSGlkZGVuSW5jbHVkZVVwZGF0ZSk7XHJcblxyXG4gICAgdGhpcy5hZGRNYXBwaW5nc09wdGlvbnMucHVzaChvYmplY3RNYXBwaW5nT3B0aW9ucyk7XHJcbiAgICB0aGlzLmFkZE1hcHBpbmdzQ291bnQgKz0gMTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgLy9BRCB3aW5kb3dzIG9uIHR5cGUgY2hhbmdlIChPVS9Hcm91cClcclxuICB3aW5kb3dzVHlwZUNoYW5nZSh0eXBlVmFsdWUpIHtcclxuICAgIGlmICh0eXBlVmFsdWUgPT0gQWN0aXZlRGlyZWN0b3J5V2luZG93Q29ubmVjdGlvblR5cGUuQWN0aXZlRGlyZWN0b3J5R3JvdXApIHtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3VwcyA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3Vwcy5OYW1lID0gXCJhZGRTaG93QnVpbHRJbkdyb3Vwc1wiXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHMuTGFiZWxWYWx1ZSA9IFwiU2hvd0J1aWx0SW5Hcm91cHNcIlxyXG4gICAgICB0aGlzLmFkZFNob3dCdWlsdEluR3JvdXBzLkxhYmVsS2V5ID0gXCJTaG93QnVpbHRJbkdyb3Vwc1wiXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHMuVmFsdWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5hZGRTaG93QnVpbHRJbkdyb3Vwcy5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAgIHRoaXMuYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0ucmVtb3ZlQ29udHJvbChcImFkZFNob3dCdWlsdEluR3JvdXBzXCIpO1xyXG4gICAgICB0aGlzLmFkZFNob3dCdWlsdEluR3JvdXBzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9BRCBvbiB0eXBlIGNoYW5nZXMgKFdpbmRvd3MvQXp1cmUpXHJcbiAgdHlwZUNoYW5nZSh0eXBlVmFsdWUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRUeXBlID0gdHlwZVZhbHVlO1xyXG4gICAgaWYgKHR5cGVWYWx1ZSA9PSBBY3RpdmVEaXJlY3RvcnlUeXBlLldpbmRvd3MpIHtcclxuICAgICAgdGhpcy5mb3Jtc0NvdW50ID0gMztcclxuICAgICAgLy9SZW1vdmUgQXp1cmUgY29udHJvbHMgaWYgZm91bmRcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRUZW5hbnRJRFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRDbGllbnRJRFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRDbGllbnRTZWNyZXRcIik7XHJcblxyXG4gICAgICAvL0luaXRpYWxpemUgd2luZG93cyBjb250cm9sc1xyXG4gICAgICB0aGlzLmFkZFdpbmRvd3NUeXBlT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuTmFtZSA9IFwiYWRkV2luZG93c1R5cGVPcHRpb25zXCJcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuTGFiZWxLZXkgPSBcIldpbmRvd3NUeXBlXCJcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWxcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuYWRXaW5kb3dzVHlwZXNcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRXaW5kb3dzVHlwZU9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFdpbmRvd3NUeXBlT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuYWRkRG9tYWluID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkRG9tYWluLk5hbWUgPSBcImFkZERvbWFpblwiO1xyXG4gICAgICB0aGlzLmFkZERvbWFpbi5MYWJlbEtleSA9IFwiRG9tYWluXCI7XHJcbiAgICAgIHRoaXMuYWRkRG9tYWluLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGREb21haW4uVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZERvbWFpbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGREb21haW4uTWF4TGVuZ3RoID0gMjU2O1xyXG5cclxuICAgICAgdGhpcy5hZGRTYW1BY2NvdW50ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkU2FtQWNjb3VudC5OYW1lID0gXCJhZGRTYW1BY2NvdW50XCI7XHJcbiAgICAgIHRoaXMuYWRkU2FtQWNjb3VudC5MYWJlbEtleSA9IFwiU2FtQWNjb3VudFwiO1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZFNhbUFjY291bnQuTWF4TGVuZ3RoID0gMjA7XHJcblxyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkUGFzc3dvcmQuTmFtZSA9IFwiYWRkUGFzc3dvcmRcIjtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5MYWJlbEtleSA9IFwiUGFzc3dvcmRcIjtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5UeXBlID0gSW5wdXRUeXBlLlBhc3N3b3JkO1xyXG4gICAgICB0aGlzLmFkZFBhc3N3b3JkLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5SZW1vdmVEZWZhdWx0UGFzc3dvcmRWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRQYXNzd29yZC5NYXhMZW5ndGggPSA0MDAwO1xyXG5cclxuICAgICAgdGhpcy5zaG93QXp1cmVDb250cm9scyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnNob3dXaW5kb3dzQ29udHJvbHMgPSB0cnVlO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybXNDb3VudCA9IDI7XHJcbiAgICAgIC8vUmVtb3ZlIHdpbmRvd3MgY29udHJvbHMgaWYgZm91bmRcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGREb21haW5cIik7XHJcbiAgICAgIHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5yZW1vdmVDb250cm9sKFwiYWRkU2FtQWNjb3VudFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRQYXNzd29yZFwiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRTaG93QnVpbHRJbkdyb3Vwc1wiKTtcclxuICAgICAgdGhpcy5hZGRBY3RpdmVEaXJlY3RvcnlGb3JtLnJlbW92ZUNvbnRyb2woXCJhZGRXaW5kb3dzVHlwZU9wdGlvbnNcIik7XHJcblxyXG4gICAgICB0aGlzLmFkZFRlbmFudElEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuYWRkVGVuYW50SUQuTmFtZSA9IFwiYWRkVGVuYW50SURcIjtcclxuICAgICAgdGhpcy5hZGRUZW5hbnRJRC5MYWJlbEtleSA9IFwiVGVuYW50SURcIjtcclxuICAgICAgdGhpcy5hZGRUZW5hbnRJRC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuYWRkVGVuYW50SUQuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLmFkZFRlbmFudElELklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZFRlbmFudElELk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRDbGllbnRJRC5OYW1lID0gXCJhZGRDbGllbnRJRFwiO1xyXG4gICAgICB0aGlzLmFkZENsaWVudElELkxhYmVsS2V5ID0gXCJDbGllbnRJRFwiO1xyXG4gICAgICB0aGlzLmFkZENsaWVudElELlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5hZGRDbGllbnRJRC5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50SUQuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQuTmFtZSA9IFwiYWRkQ2xpZW50U2VjcmV0XCI7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0LkxhYmVsS2V5ID0gXCJDbGllbnRTZWNyZXRcIjtcclxuICAgICAgdGhpcy5hZGRDbGllbnRTZWNyZXQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLmFkZENsaWVudFNlY3JldC5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWRkQ2xpZW50U2VjcmV0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZENsaWVudFNlY3JldC5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLnNob3dBenVyZUNvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zaG93V2luZG93c0NvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1dpemFyZCBmdW5jdGlvbnNcclxuICBuZXh0U3RlcCgpIHtcclxuICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5jdXJyZW50U3RlcCQudmFsdWU7XHJcbiAgICBjb25zdCBuZXh0U3RlcCA9IGN1cnJlbnRTdGVwICsgMTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS52YWx1ZSBhcyBhbnk7XHJcblxyXG4gICAgLy9DaGVjayByZXF1aXJlZCBmaWVsZHMgZm9yIG5leHQgc3RlcFxyXG4gICAgaWYgKGN1cnJlbnRTdGVwID09IDEpIHtcclxuICAgICAgaWYgKFJlc3VsdE1vZGVsLmFkZFR5cGVPcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUeXBlID09IEFjdGl2ZURpcmVjdG9yeVR5cGUuV2luZG93cykge1xyXG4gICAgICAgICAgaWYgKCFSZXN1bHRNb2RlbC5hZGREb21haW4gfHwgIVJlc3VsdE1vZGVsLmFkZFdpbmRvd3NUeXBlT3B0aW9ucykge1xyXG4gICAgICAgICAgICB0aGlzLmFkRG9tYWluQ29udHJvbC5Jc1ZhbGlkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRXaW5kb3dzVHlwZUNvbnRyb2wuSXNWYWxpZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFSZXN1bHRNb2RlbC5hZGRUZW5hbnRJRCB8fCAhUmVzdWx0TW9kZWwuYWRkQ2xpZW50SUQgfHwgIVJlc3VsdE1vZGVsLmFkZENsaWVudFNlY3JldCkge1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudElEQ29udHJvbC5Jc1ZhbGlkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xpZW50SURDb250cm9sLklzVmFsaWQoKTtcclxuICAgICAgICAgICAgdGhpcy5jbGllbnRTZWNyZXRDb250cm9sLklzVmFsaWQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmFkVHlwZUNvbnRyb2wuSXNWYWxpZCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkVHlwZSA9PSBBY3RpdmVEaXJlY3RvcnlUeXBlLldpbmRvd3MpIHtcclxuXHJcbiAgICAgIGlmIChuZXh0U3RlcCA9PT0gMiAmJiBjdXJyZW50U3RlcCA9PT0gMSkge1xyXG4gICAgICAgIHRoaXMudHJlZURhdGFMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgLy9pZiAoIXRoaXMuYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybS5nZXQoJ2FkZERvbWFpbicpLnZhbGlkIHx8ICF0aGlzLmFkZEFjdGl2ZURpcmVjdG9yeUZvcm0uZ2V0KCdhZGRUeXBlT3B0aW9ucycpLnZhbGlkKSB7XHJcbiAgICAgICAgLy8gIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhSZXN1bHRNb2RlbCk7XHJcblxyXG4gICAgICAgIGxldCBBZGRNb2RlbDogQWN0aXZlRGlyZWN0b3J5QWRkRWRpdE1vZGVsID0gbmV3IEFjdGl2ZURpcmVjdG9yeUFkZEVkaXRNb2RlbCgpO1xyXG4gICAgICAgIEFkZE1vZGVsLkNvbm5lY3Rpb25OYW1lID0gUmVzdWx0TW9kZWwuYWRkTmFtZTtcclxuICAgICAgICBBZGRNb2RlbC5Eb21haW4gPSBSZXN1bHRNb2RlbC5hZGREb21haW47XHJcbiAgICAgICAgQWRkTW9kZWwuQURXaW5kb3dzVHlwZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuYWRkV2luZG93c1R5cGVPcHRpb25zO1xyXG4gICAgICAgIEFkZE1vZGVsLlNhbUFjY291bnQgPSBSZXN1bHRNb2RlbC5hZGRTYW1BY2NvdW50O1xyXG4gICAgICAgIEFkZE1vZGVsLlBhc3N3b3JkID0gUmVzdWx0TW9kZWwuYWRkUGFzc3dvcmQ7XHJcbiAgICAgICAgQWRkTW9kZWwuU2hvd0J1aWx0SW5Hcm91cHMgPSBSZXN1bHRNb2RlbC5hZGRTaG93QnVpbHRJbkdyb3VwcztcclxuXHJcblxyXG4gICAgICAgIHRoaXMuQWN0aXZlRGlyZWN0b3J5U2VydmljZS5jaGVja1ZhbGlkYXRpb25hbmRHZXREYXRhKEFkZE1vZGVsKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgdGhpcywgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICAgICAgdmFyIGRhdGEgPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICAgICAgaWYgKGRhdGEudmFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU5vZGVEYXRhID0gZGF0YS50cmVlRGF0YTtcclxuICAgICAgICAgICAgdGhpcy5lcnJvcklzRm91bmQgPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgICAgICAgICAgIGxldCBfdHJhbnNmb3JtZXIgPSAobm9kZTogQUROb2RlLCBsZXZlbDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6ICEhbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDAsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBub2RlLnRleHQsXHJcbiAgICAgICAgICAgICAgICBsZXZlbDogbGV2ZWwsXHJcbiAgICAgICAgICAgICAgICBpY29uOiBub2RlLmljb24sXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RhYmxlOiBub2RlLnNlbGVjdGFibGUsXHJcbiAgICAgICAgICAgICAgICBJbmRleDogbm9kZS5JbmRleCxcclxuICAgICAgICAgICAgICAgIGRhdGE6IG5vZGUuZGF0YVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEZsYXROb2RlPihcclxuICAgICAgICAgICAgICBub2RlID0+IG5vZGUubGV2ZWwsIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlKTtcclxuICAgICAgICAgICAgdGhpcy50cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIoXHJcbiAgICAgICAgICAgICAgX3RyYW5zZm9ybWVyLCBub2RlID0+IG5vZGUubGV2ZWwsIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlLCBub2RlID0+IG5vZGUuY2hpbGRyZW4pO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMudHJlZUZsYXR0ZW5lcik7XHJcbiAgICAgICAgICAgIGxldCBqc29uRGF0YSA9IEpTT04ucGFyc2UodGhpcy50cmVlTm9kZURhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGpzb25EYXRhO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5oYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IEZsYXROb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZURhdGFMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCQubmV4dChuZXh0U3RlcCk7XHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yID0gZGF0YS5lcnJvcjtcclxuICAgICAgICAgICAgdGhpcy5lcnJvcklzRm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2Zvcm1zXHJcbiAgICAgICAgLy8gaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2Zvcm0tdmFsaWRhdGlvblxyXG5cclxuICAgICAgICAvLyB2YWxpZGF0ZSB0aGUgZm9ybSBhbmQgdXNlIGJlbG93IGZ1bmN0aW9uIHRvIHN0b3AgdGhlIHdpemFyZCdzIHN0ZXBcclxuICAgICAgICAvLyB3aXphcmRPYmouc3RvcCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmlkZW50aWZpZXIgPT0gXCJcIiB8fCB0aGlzLmlkZW50aWZpZXIgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVdhcm5pbmdNZXNzYWdlKHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlZBTF9BdExlYXN0T25lSXNSZXF1aXJlZFwiKSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hZGROYW1lLlZhbHVlID0gdGhpcy5pZGVudGlmaWVyTmFtZSArIFwiIGNvbm5lY3Rpb25cIjtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAkLm5leHQobmV4dFN0ZXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAkLm5leHQobmV4dFN0ZXApO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgcHJldlN0ZXAoKSB7XHJcbiAgICBsZXQgY3VycmVudFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwJC52YWx1ZTtcclxuICAgIGxldCBwcmV2U3RlcCA9IHRoaXMuY3VycmVudFN0ZXAkLnZhbHVlIC0gMTtcclxuICAgIGlmIChwcmV2U3RlcCA9PT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnRTdGVwJC5uZXh0KHByZXZTdGVwKTtcclxuICB9XHJcblxyXG4gIHNldElkZW50aWZpZXIob2JqOiBNYXRDaGVja2JveENoYW5nZSwgc2VsZWN0ZWROb2RlOiBBRE5vZGUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZE5vZGUuSW5kZXg7XHJcbiAgICBpZiAob2JqLmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5pZGVudGlmaWVyID0gc2VsZWN0ZWROb2RlLmRhdGE7XHJcbiAgICAgIHRoaXMuaWRlbnRpZmllck5hbWUgPSBzZWxlY3RlZE5vZGUudGV4dDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLmlkZW50aWZpZXJOYW1lID0gXCJcIjtcclxuICAgIH1cclxuICB9XHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxufVxyXG5cclxuIiwiXHJcblxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInN0ZXBwZXIgc3RlcHBlci1waWxscyBzdGVwcGVyLWNvbHVtbiBkLWZsZXggZmxleC1jb2x1bW4gZmxleC14bC1yb3cgZmxleC1yb3ctZmx1aWQgXCIgaWQ9XCJrdF9jcmVhdGVfYWNjb3VudF9zdGVwcGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgcm91bmRlZCBqdXN0aWZ5LWNvbnRlbnQteGwtc3RhcnQgZmxleC1yb3ctYXV0byBtZS05IGNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweC02IHB4LWxnLTEwIHB4LXh4bC0xNSBweS0yMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLW5hdlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaXRlbVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBjdXJyZW50U3RlcCQudmFsdWUgPT09IDEgfVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1saW5lIHctNDBweFwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItaWNvbiB3LTQwcHggaC00MHB4XCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzdGVwcGVyLWNoZWNrIGZhcyBmYS1jaGVja1wiPjwvaT5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItbnVtYmVyXCI+MTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cInN0ZXBwZXItdGl0bGVcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlcIil9fTwvaDM+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWRlc2MgZnctYm9sZFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZURpcmVjdG9yeV9UYWIxTm90ZVwiKX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dXaW5kb3dzQ29udHJvbHNcIiBjbGFzcz1cInN0ZXBwZXItaXRlbVwiIFtuZ0NsYXNzXT1cIntjdXJyZW50OiBjdXJyZW50U3RlcCQudmFsdWUgPT09IDIgJiYgc2hvd1dpbmRvd3NDb250cm9sc31cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZSB3LTQwcHhcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWljb24gdy00MHB4IGgtNDBweFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic3RlcHBlci1jaGVjayBmYXMgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLW51bWJlclwiPjI8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGFiZWxcIj5cclxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJzdGVwcGVyLXRpdGxlXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5X1NlbGVjdENvbnRhaW5lclwiKX19PC9oMz5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1kZXNjIGZ3LWJvbGRcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVEaXJlY3RvcnlfVGFiMk5vdGVcIil9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWl0ZW1cIiBbbmdDbGFzc109XCJ7Y3VycmVudDogKGN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gZm9ybXNDb3VudCApIH1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItbGluZSB3LTQwcHhcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWljb24gdy00MHB4IGgtNDBweFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic3RlcHBlci1jaGVjayBmYXMgZmEtY2hlY2tcIj48L2k+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLW51bWJlclwiPnt7Zm9ybXNDb3VudH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwic3RlcHBlci10aXRsZVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk9wdGlvbnNcIil9fTwvaDM+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItZGVzYyBmdy1ib2xkXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZlRGlyZWN0b3J5X1RhYjNOb3RlXCIpfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGQtZmxleCBmbGV4LXJvdy1mbHVpZCBmbGV4LWNlbnRlciByb3VuZGVkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwLTIwIHctMTAwIGNhcmQtYm9keVwiICpuZ0lmPVwiaXNBZGRGb3JtTG9hZGVkXCI+XHJcbiAgICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtT3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnJlbnRcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gMVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2FkVHlwZUNvbnRyb2wgW29wdGlvbnNdPVwiYWRkVHlwZU9wdGlvbnNcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiIChPbkNoYW5nZSk9XCJ0eXBlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dXaW5kb3dzQ29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjYWRXaW5kb3dzVHlwZUNvbnRyb2wgW29wdGlvbnNdPVwiYWRkV2luZG93c1R5cGVPcHRpb25zXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIiAoT25DaGFuZ2UpPVwid2luZG93c1R5cGVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICNhZERvbWFpbkNvbnRyb2wgW29wdGlvbnNdPVwiYWRkRG9tYWluXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlcnJvcklzRm91bmRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+e3t2YWxpZGF0aW9uRXJyb3J9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImFkZFNhbUFjY291bnRcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGRQYXNzd29yZFwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiICpuZ0lmPVwiYWRkU2hvd0J1aWx0SW5Hcm91cHNWaXNpYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cImFkZFNob3dCdWlsdEluR3JvdXBzXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dBenVyZUNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94ICN0ZW5hbnRJRENvbnRyb2wgW29wdGlvbnNdPVwiYWRkVGVuYW50SURcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCAjY2xpZW50SURDb250cm9sIFtvcHRpb25zXT1cImFkZENsaWVudElEXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggI2NsaWVudFNlY3JldENvbnRyb2wgW29wdGlvbnNdPVwiYWRkQ2xpZW50U2VjcmV0XCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IDIgJiYgc2hvd1dpbmRvd3NDb250cm9sc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cmVlRGF0YUNvbnRhaW5lclwiICpuZ0lmPVwidHJlZURhdGFMb2FkZWRcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLUhlbGxsbGxsbGxsbGxsbGxsbGxsbG8tLS0tLS0tLS0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlO1wiIG1hdFRyZWVOb2RlUGFkZGluZz5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIHVzZSBhIGRpc2FibGVkIGJ1dHRvbiB0byBwcm92aWRlIHBhZGRpbmcgZm9yIHRyZWUgbGVhZiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBjbGFzcz1cImNoZWNrbGlzdC1sZWFmLW5vZGVcIiBbY2hlY2tlZF09XCJzZWxlY3RlZCA9PT0gbm9kZS5JbmRleFwiIChjaGFuZ2UpPVwic2V0SWRlbnRpZmllcigkZXZlbnQsbm9kZSlcIiBbZGlzYWJsZWRdPVwibm9kZS5zZWxlY3RhYmxlP2ZhbHNlOnRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7bm9kZS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cclxuICAgICAgICAgICAgICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7d2hlbjogaGFzQ2hpbGRcIiBtYXRUcmVlTm9kZVBhZGRpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRyZWVOb2RlVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUb2dnbGUgJyArIG5vZGUubmFtZVwiIGNsYXNzPVwiYnRuIGJ0bi1pY29uIGJ0bi1iZy1saWdodCBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnkgYnRuLXNtIG1lLTEgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cInRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcIiBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiF0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpXCIgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1yaWdodFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbZGlzYWJsZWRdPVwibm9kZS5zZWxlY3RhYmxlP2ZhbHNlOnRydWVcIj57e25vZGUubmFtZX19PC9tYXQtY2hlY2tib3g+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XHJcbiAgICAgICAgICAgICAgICA8L21hdC10cmVlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IGZvcm1zQ291bnRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJhZGROYW1lXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkUGVybWlzc2lvblNldFwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiYWRkTGFuZ3VhZ2VcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFkZFdlbGNvbWVNc2dUZW1wXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJhZGRGaWxlUHJvdmlkZXJcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkTWFya0luYWN0aXZlXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiYWRkRGFpbHlKb2JcIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVHlwZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFEUHJvcGVydHlcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkluY2x1ZGVJblVwZGF0ZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFkZE1hcHBpbmdzT3B0aW9ucztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJhZGRBY3RpdmVEaXJlY3RvcnlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cImFkZEFjdGl2ZURpcmVjdG9yeUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bM11cIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1IaWRkZW4gaW5jbHVkZSBpbiB1cGRhdGUgdmFsdWUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bNF1cIiBbZ3JvdXBdPVwiYWRkQWN0aXZlRGlyZWN0b3J5Rm9ybVwiIFtoaWRkZW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyXCIgKGNsaWNrKT1cImRlbGV0ZUFETWFwcGluZyhvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImFkZEFETWFwcGluZygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgcHQtMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yLTJcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlICE9PSAxXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGcgYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2U3RlcCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYzLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTQgbWUtMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJldmlvdXNcIil9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlICE9PSBmb3Jtc0NvdW50XCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRTdGVwKClcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmRpY2F0b3ItbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlIDwgZm9ybXNDb3VudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmV4dFwiKX19IHt7IFwiIFwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2NC5zdmcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMyBtcy0yIG1lLTBcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50U3RlcCQudmFsdWUgPT09IGZvcm1zQ291bnRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tbGcgYnRuLXByaW1hcnkgbWUtM1wiPlxyXG4gICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU3VibWl0XCIpfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcblxyXG48L2Rpdj5cclxuIl19
|