@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/{esm2020 → esm2022}/lib/Pages/shared/components/survey/survey-info/survey-info.component.mjs
RENAMED
|
@@ -1,532 +1,532 @@
|
|
|
1
|
-
import { FormGroup } from '@angular/forms';
|
|
2
|
-
import { Component, Inject, PLATFORM_ID, ViewChild, } from '@angular/core';
|
|
3
|
-
import { AppBaseComponent, BreadCrumb, ControlLayout, DropdownActionItem, FilterItem, FilterType, ForceDirection, InputType, PageHeaderOptions, PagingOptions, TextBoxOptions, } from '@bnsights/bbsf-controls';
|
|
4
|
-
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
5
|
-
import { isPlatformBrowser } from '@angular/common';
|
|
6
|
-
import * as am5 from '@amcharts/amcharts5';
|
|
7
|
-
import * as am5xy from '@amcharts/amcharts5/xy';
|
|
8
|
-
import am5themes_Animated from '@amcharts/amcharts5/themes/Animated';
|
|
9
|
-
import { AudienceType, SurveyMode, SurveyOptionType, SurveyStatusEnum, } from '../../../Enums/Enums';
|
|
10
|
-
import { SurveyConfig } from '../../../models/SurveyModels/survey-utils';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@angular/router";
|
|
13
|
-
import * as i2 from "@bnsights/bbsf-utilities";
|
|
14
|
-
import * as i3 from "../../../Services/survey.service";
|
|
15
|
-
import * as i4 from "../../../Services/survey-question.service";
|
|
16
|
-
import * as i5 from "@angular/common";
|
|
17
|
-
import * as i6 from "@bnsights/bbsf-controls";
|
|
18
|
-
import * as i7 from "@ng-bootstrap/ng-bootstrap";
|
|
19
|
-
import * as i8 from "@angular/cdk/drag-drop";
|
|
20
|
-
import * as i9 from "ng-inline-svg";
|
|
21
|
-
import * as i10 from "../edit-survey/edit-survey.component";
|
|
22
|
-
import * as i11 from "../delete-survey/delete-survey.component";
|
|
23
|
-
import * as i12 from "./edit-question/edit-question.component";
|
|
24
|
-
import * as i13 from "./delete-question/delete-question.component";
|
|
25
|
-
import * as i14 from "./add-question/add-question.component";
|
|
26
|
-
import * as i15 from "./publish-survey/publish-survey.component";
|
|
27
|
-
import * as i16 from "./unpublish-survey/unpublish-survey.component";
|
|
28
|
-
import * as i17 from "../submissions/delete-submission/delete-submission.component";
|
|
29
|
-
import * as i18 from "../submissions/eliminate-submission/eliminate-submission.component";
|
|
30
|
-
import * as i19 from "../submissions/uneliminate-submission/uneliminate-submission.component";
|
|
31
|
-
import * as i20 from "../../no-results/no-results.component";
|
|
32
|
-
import * as i21 from "../../../Pipes/survey-date.pipe";
|
|
33
|
-
export class SurveyInfoComponent extends AppBaseComponent {
|
|
34
|
-
constructor(injector, platformId, zone, router, masterLayoutService, surveyService, surveyQuestionService, activatedRoute) {
|
|
35
|
-
super(injector);
|
|
36
|
-
this.injector = injector;
|
|
37
|
-
this.platformId = platformId;
|
|
38
|
-
this.zone = zone;
|
|
39
|
-
this.router = router;
|
|
40
|
-
this.masterLayoutService = masterLayoutService;
|
|
41
|
-
this.surveyService = surveyService;
|
|
42
|
-
this.surveyQuestionService = surveyQuestionService;
|
|
43
|
-
this.activatedRoute = activatedRoute;
|
|
44
|
-
this.surveyForm = new FormGroup({});
|
|
45
|
-
this.enableActions = false;
|
|
46
|
-
this.urlForm = new FormGroup({});
|
|
47
|
-
this.SearchTextBox = new FormGroup({});
|
|
48
|
-
this.loadInfo = false;
|
|
49
|
-
this.SurveyStatusEnum = SurveyStatusEnum;
|
|
50
|
-
this.AudienceTypeEnum = AudienceType;
|
|
51
|
-
this.surveyQuestions = [];
|
|
52
|
-
this.apiQuestionURL = this.surveyQuestionService.apiURL;
|
|
53
|
-
this.filtersQuestionForm = new FormGroup({});
|
|
54
|
-
this.canTakeSurvey = false;
|
|
55
|
-
this.pagingQuestionResult = [];
|
|
56
|
-
//Submission Section
|
|
57
|
-
this.filtersSubmissionForm = new FormGroup({});
|
|
58
|
-
this.pagingSubmissionResult = [];
|
|
59
|
-
this.showEditModal = () => {
|
|
60
|
-
this.editModal.showEditModal(this.surveyID);
|
|
61
|
-
};
|
|
62
|
-
this.showDeleteModal = () => {
|
|
63
|
-
this.deleteConfirmationModalControl.showDeleteModal(this.surveyID);
|
|
64
|
-
};
|
|
65
|
-
this.showDeleteQuestionModal = (id) => {
|
|
66
|
-
this.deleteQuestionConfirmationModalControl.showDeleteModal(id);
|
|
67
|
-
};
|
|
68
|
-
this.showPublishModal = () => {
|
|
69
|
-
this.addPublishModal.publishModal(this.surveyID, this.pagingQuestionResult);
|
|
70
|
-
};
|
|
71
|
-
this.showUnPublishModal = () => {
|
|
72
|
-
this.addUnPublishModal.showConfirmationModal(this.surveyID);
|
|
73
|
-
};
|
|
74
|
-
this.previewSurvey = () => {
|
|
75
|
-
this.router.navigate(['../../info/preview', this.surveyID, this.survey.audienceItemID], { relativeTo: this.activatedRoute });
|
|
76
|
-
};
|
|
77
|
-
this.takeSurvey = () => {
|
|
78
|
-
this.router.navigate(['../../info/submission', this.surveyID], {
|
|
79
|
-
relativeTo: this.activatedRoute,
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
this.onSuccessHandler = (success) => {
|
|
83
|
-
this.utilityService.notifySuccessMessage(this.l('RecordUpdated'), null, null, false);
|
|
84
|
-
this.masterLayoutService.reloadComponent();
|
|
85
|
-
};
|
|
86
|
-
this.onSuccessDeleteHandler = (success) => {
|
|
87
|
-
this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
|
|
88
|
-
this.router.navigate(['../../'], { relativeTo: this.activatedRoute });
|
|
89
|
-
};
|
|
90
|
-
this.onSuccessAddQuestionHandler = (success) => {
|
|
91
|
-
this.utilityService.notifySuccessMessage(this.l('RecordAdded'), null, null, false);
|
|
92
|
-
this.masterLayoutService.reloadComponent();
|
|
93
|
-
};
|
|
94
|
-
this.onSuccessEditQuestionHandler = (success) => {
|
|
95
|
-
this.utilityService.notifySuccessMessage(this.l('RecordUpdated'), null, null, false);
|
|
96
|
-
this.masterLayoutService.reloadComponent();
|
|
97
|
-
};
|
|
98
|
-
this.onSuccessDeleteQuestionHandler = (success) => {
|
|
99
|
-
this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
|
|
100
|
-
this.masterLayoutService.reloadComponent();
|
|
101
|
-
};
|
|
102
|
-
this.showDeleteSubmissionModal = (id) => {
|
|
103
|
-
this.deleteSubmissionConfirmationModalControl.showDeleteModal(id);
|
|
104
|
-
};
|
|
105
|
-
this.showEliminateSubmissionModal = (id) => {
|
|
106
|
-
this.eliminateSubmissionConfirmationModalControl.showEliminateModal(id);
|
|
107
|
-
};
|
|
108
|
-
this.showUnEliminateSubmissionModal = (id) => {
|
|
109
|
-
this.unEliminateSubmissionConfirmationModalControl.showUnEliminateModal(id);
|
|
110
|
-
};
|
|
111
|
-
this.onSuccessDeleteHandlerSubmission = (success) => {
|
|
112
|
-
this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
|
|
113
|
-
this.loadSubmissionSection();
|
|
114
|
-
};
|
|
115
|
-
this.export = () => {
|
|
116
|
-
this.surveyService.export(this.surveyID).subscribe((result) => {
|
|
117
|
-
this.download(result, this.pageTitle + '.xlsx');
|
|
118
|
-
});
|
|
119
|
-
};
|
|
120
|
-
this.router.routeReuseStrategy.shouldReuseRoute = () => false;
|
|
121
|
-
this.surveyID = this.activatedRoute.snapshot.params['id'];
|
|
122
|
-
}
|
|
123
|
-
// Run the function only in the browser
|
|
124
|
-
browserOnly(f) {
|
|
125
|
-
if (isPlatformBrowser(this.platformId)) {
|
|
126
|
-
this.zone.runOutsideAngular(() => {
|
|
127
|
-
f();
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
ngAfterViewInit() { }
|
|
132
|
-
maybeDisposeRoot(divId) {
|
|
133
|
-
am5.array.each(am5.registry.rootElements, (root) => {
|
|
134
|
-
if (root) {
|
|
135
|
-
if (root.dom.id == divId) {
|
|
136
|
-
root.dispose();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
loadChart(item) {
|
|
142
|
-
// Chart code goes in here
|
|
143
|
-
this.browserOnly(() => {
|
|
144
|
-
let name = `chartdiv`;
|
|
145
|
-
this.maybeDisposeRoot(name);
|
|
146
|
-
let root = am5.Root.new(name);
|
|
147
|
-
root.setThemes([am5themes_Animated.new(root)]);
|
|
148
|
-
let chart = root.container.children.push(am5xy.XYChart.new(root, {
|
|
149
|
-
panX: false,
|
|
150
|
-
panY: false,
|
|
151
|
-
wheelX: 'none',
|
|
152
|
-
wheelY: 'none',
|
|
153
|
-
paddingBottom: 50,
|
|
154
|
-
paddingTop: 40,
|
|
155
|
-
layout: root.verticalLayout,
|
|
156
|
-
}));
|
|
157
|
-
// Define data
|
|
158
|
-
let data = item.options.map((value) => {
|
|
159
|
-
return {
|
|
160
|
-
name: value.localizedTitle,
|
|
161
|
-
value: value.numberOfSelectedTime,
|
|
162
|
-
};
|
|
163
|
-
});
|
|
164
|
-
// Create Y-axis
|
|
165
|
-
let yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {
|
|
166
|
-
baseValue: 0,
|
|
167
|
-
maxPrecision: 0,
|
|
168
|
-
min: 0,
|
|
169
|
-
extraTooltipPrecision: 100,
|
|
170
|
-
renderer: am5xy.AxisRendererY.new(root, {}),
|
|
171
|
-
}));
|
|
172
|
-
// Create X-Axis
|
|
173
|
-
let xAxis = chart.xAxes.push(am5xy.CategoryAxis.new(root, {
|
|
174
|
-
renderer: am5xy.AxisRendererX.new(root, {}),
|
|
175
|
-
categoryField: 'name',
|
|
176
|
-
}));
|
|
177
|
-
xAxis.data.setAll(data);
|
|
178
|
-
// Create series
|
|
179
|
-
let series1 = chart.series.push(am5xy.ColumnSeries.new(root, {
|
|
180
|
-
name: 'Question Options',
|
|
181
|
-
xAxis: xAxis,
|
|
182
|
-
yAxis: yAxis,
|
|
183
|
-
valueYField: 'value',
|
|
184
|
-
categoryXField: 'name',
|
|
185
|
-
}));
|
|
186
|
-
series1.data.setAll(data);
|
|
187
|
-
series1.set('fill', am5.color('#b68a35')); // set Series color to red
|
|
188
|
-
series1.set('stroke', am5.color('#b68a35')); // set Series color to red
|
|
189
|
-
// Add legend
|
|
190
|
-
let legend = chart.children.push(am5.Legend.new(root, {}));
|
|
191
|
-
legend.data.push(series1);
|
|
192
|
-
if (!this.EN) {
|
|
193
|
-
legend.labels.template.setAll({
|
|
194
|
-
textAlign: 'right',
|
|
195
|
-
x: 50,
|
|
196
|
-
});
|
|
197
|
-
legend.valueLabels.template.setAll({
|
|
198
|
-
textAlign: 'right',
|
|
199
|
-
paddingRight: 15,
|
|
200
|
-
});
|
|
201
|
-
legend.itemContainers.template.setAll({
|
|
202
|
-
reverseChildren: true,
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
this.root = root;
|
|
206
|
-
});
|
|
207
|
-
// //chart overview
|
|
208
|
-
this.browserOnly(() => {
|
|
209
|
-
let nameOverView = `chartOverview`;
|
|
210
|
-
this.maybeDisposeRoot(nameOverView);
|
|
211
|
-
let root = am5.Root.new(nameOverView);
|
|
212
|
-
root.setThemes([am5themes_Animated.new(root)]);
|
|
213
|
-
let chart = root.container.children.push(am5xy.XYChart.new(root, {
|
|
214
|
-
panY: false,
|
|
215
|
-
layout: root.verticalLayout,
|
|
216
|
-
}));
|
|
217
|
-
// Define data
|
|
218
|
-
let data = [];
|
|
219
|
-
for (const key in item.results) {
|
|
220
|
-
if (Object.prototype.hasOwnProperty.call(item.results, key)) {
|
|
221
|
-
const value = item.results[key];
|
|
222
|
-
let object = {
|
|
223
|
-
category: '<=' + key,
|
|
224
|
-
value: value,
|
|
225
|
-
};
|
|
226
|
-
data.push(object);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// Create Y-axis
|
|
230
|
-
let yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {
|
|
231
|
-
baseValue: 0,
|
|
232
|
-
maxPrecision: 0,
|
|
233
|
-
min: 0,
|
|
234
|
-
extraTooltipPrecision: 100,
|
|
235
|
-
renderer: am5xy.AxisRendererY.new(root, {}),
|
|
236
|
-
}));
|
|
237
|
-
// Create X-Axis
|
|
238
|
-
let xAxis = chart.xAxes.push(am5xy.CategoryAxis.new(root, {
|
|
239
|
-
renderer: am5xy.AxisRendererX.new(root, {}),
|
|
240
|
-
categoryField: 'category',
|
|
241
|
-
}));
|
|
242
|
-
xAxis.data.setAll(data);
|
|
243
|
-
// Create series
|
|
244
|
-
let series1 = chart.series.push(am5xy.ColumnSeries.new(root, {
|
|
245
|
-
name: 'Score',
|
|
246
|
-
xAxis: xAxis,
|
|
247
|
-
yAxis: yAxis,
|
|
248
|
-
valueYField: 'value',
|
|
249
|
-
categoryXField: 'category',
|
|
250
|
-
}));
|
|
251
|
-
series1.data.setAll(data);
|
|
252
|
-
series1.set('fill', am5.color('#b68a35')); // set Series color to red
|
|
253
|
-
series1.set('stroke', am5.color('#b68a35')); // set Series color to red
|
|
254
|
-
// Add legend
|
|
255
|
-
let legend = chart.children.push(am5.Legend.new(root, {}));
|
|
256
|
-
legend.data.setAll(chart.series.values);
|
|
257
|
-
if (!this.EN) {
|
|
258
|
-
legend.labels.template.setAll({
|
|
259
|
-
textAlign: 'right',
|
|
260
|
-
x: 50,
|
|
261
|
-
});
|
|
262
|
-
legend.valueLabels.template.setAll({
|
|
263
|
-
textAlign: 'right',
|
|
264
|
-
paddingRight: 15,
|
|
265
|
-
});
|
|
266
|
-
legend.itemContainers.template.setAll({
|
|
267
|
-
reverseChildren: true,
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
this.root = root;
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
ngOnDestroy() {
|
|
274
|
-
// Clean up root element when the component is removed
|
|
275
|
-
this.browserOnly(() => {
|
|
276
|
-
if (this.root) {
|
|
277
|
-
this.root.dispose();
|
|
278
|
-
}
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
ngOnInit() {
|
|
282
|
-
if (SurveyConfig.surveyMode == SurveyMode.Survey_Full_Access)
|
|
283
|
-
this.enableActions = true;
|
|
284
|
-
this.surveyService.getInfo(this.surveyID).subscribe((result) => {
|
|
285
|
-
this.survey = result;
|
|
286
|
-
this.TextBoxWithExternalURL = new TextBoxOptions();
|
|
287
|
-
this.TextBoxWithExternalURL.Name = 'TextBoxWithExternalURL';
|
|
288
|
-
this.TextBoxWithExternalURL.LabelKey = 'External_URL';
|
|
289
|
-
this.TextBoxWithExternalURL.Type = InputType.Text;
|
|
290
|
-
this.TextBoxWithExternalURL.ViewType = ControlLayout.Vertical;
|
|
291
|
-
this.TextBoxWithExternalURL.ForceDirection = ForceDirection.English;
|
|
292
|
-
this.TextBoxWithExternalURL.EnableCopyToClipboard = true;
|
|
293
|
-
this.TextBoxWithExternalURL.Value = this.survey.externalURL;
|
|
294
|
-
this.TextBoxWithInternalURL = new TextBoxOptions();
|
|
295
|
-
this.TextBoxWithInternalURL.Name = 'TextBoxWithInternalURL';
|
|
296
|
-
this.TextBoxWithInternalURL.LabelKey = 'Internal_URL';
|
|
297
|
-
this.TextBoxWithInternalURL.Type = InputType.Text;
|
|
298
|
-
this.TextBoxWithInternalURL.ViewType = ControlLayout.Vertical;
|
|
299
|
-
this.TextBoxWithInternalURL.ForceDirection = ForceDirection.English;
|
|
300
|
-
this.TextBoxWithInternalURL.EnableCopyToClipboard = true;
|
|
301
|
-
this.TextBoxWithInternalURL.Value = this.survey.internalURL;
|
|
302
|
-
this.breadCrumb = [];
|
|
303
|
-
this.breadCrumb.push(new BreadCrumb(this.l('Home'), false, '/'), new BreadCrumb(this.l('Surveys_Header'), false, '../../'), new BreadCrumb(this.l('Survey_Details'), true));
|
|
304
|
-
this.pageHeaderOptions = new PageHeaderOptions();
|
|
305
|
-
this.pageHeaderOptions.TitleValue = this.survey.localizedTitle;
|
|
306
|
-
this.pageHeaderOptions.SearchTextBox.Active = false;
|
|
307
|
-
this.pageHeaderOptions.BreadCrumb.Active = true;
|
|
308
|
-
this.pageHeaderOptions.BreadCrumb.BreadCrumbItems = this.breadCrumb;
|
|
309
|
-
this.pageHeaderOptions.DropDownActions.Active = true;
|
|
310
|
-
if (this.enableActions)
|
|
311
|
-
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Delete'), '/assets/images/Trash.svg', this.showDeleteModal));
|
|
312
|
-
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Export'), '/assets/images/export.svg', this.export));
|
|
313
|
-
if (this.enableActions) {
|
|
314
|
-
if (this.survey.statusItemID.toLocaleLowerCase() ==
|
|
315
|
-
this.SurveyStatusEnum.ScoringTypeEnum_Draft.toLocaleLowerCase() ||
|
|
316
|
-
this.survey.statusItemID.toLocaleLowerCase() ==
|
|
317
|
-
this.SurveyStatusEnum.ScoringTypeEnum_Upcoming.toLocaleLowerCase())
|
|
318
|
-
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Edit'), '/assets/images/Edit.svg', this.showEditModal));
|
|
319
|
-
}
|
|
320
|
-
if (this.survey.totalQuestionCount > 0)
|
|
321
|
-
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Preview'), '/assets/images/views.svg', this.previewSurvey));
|
|
322
|
-
if (this.survey.statusItemID.toLocaleLowerCase() ==
|
|
323
|
-
this.SurveyStatusEnum.ScoringTypeEnum_Published.toLocaleLowerCase())
|
|
324
|
-
this.canTakeSurvey = true;
|
|
325
|
-
if (this.enableActions) {
|
|
326
|
-
if (this.survey.statusItemID.toLocaleLowerCase() ==
|
|
327
|
-
this.SurveyStatusEnum.ScoringTypeEnum_Draft.toLocaleLowerCase() ||
|
|
328
|
-
this.survey.statusItemID.toLocaleLowerCase() ==
|
|
329
|
-
this.SurveyStatusEnum.ScoringTypeEnum_Closed.toLocaleLowerCase())
|
|
330
|
-
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Publish'), '/assets/images/Submit.svg', this.showPublishModal));
|
|
331
|
-
else
|
|
332
|
-
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('UnPublish'), '/assets/images/unlink.svg', this.showUnPublishModal));
|
|
333
|
-
}
|
|
334
|
-
this.EN = this.utilityService.isCurrentLanguageEnglish();
|
|
335
|
-
this.loadQuestionSection();
|
|
336
|
-
this.loadSubmissionSection();
|
|
337
|
-
this.pageTitle = this.survey.localizedTitle;
|
|
338
|
-
this.updatePageTitle(this.survey.localizedTitle);
|
|
339
|
-
this.loadInfo = true;
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
showEditQuestionModal(id, isViewOnly) {
|
|
343
|
-
this.editQuestionModal.editModal(id, this.survey.audienceItemID, isViewOnly);
|
|
344
|
-
}
|
|
345
|
-
showAddQuestionModal() {
|
|
346
|
-
this.AddQuestionComponent.addModal(this.surveyID, this.survey.audienceItemID);
|
|
347
|
-
}
|
|
348
|
-
drop(event) {
|
|
349
|
-
moveItemInArray(this.pagingQuestionResult, event.previousIndex, event.currentIndex);
|
|
350
|
-
for (let index = 0; index < this.pagingQuestionResult.length; index++) {
|
|
351
|
-
this.pagingQuestionResult[index].displayOrder = index + 1;
|
|
352
|
-
}
|
|
353
|
-
this.surveyQuestionService
|
|
354
|
-
.updateDisplayOrder(this.pagingQuestionResult)
|
|
355
|
-
.subscribe((e) => {
|
|
356
|
-
this.utilityService.stopBlockUI();
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
getStatus(status) {
|
|
360
|
-
var Statuses = '';
|
|
361
|
-
switch (status.toLocaleLowerCase()) {
|
|
362
|
-
case this.SurveyStatusEnum.ScoringTypeEnum_Draft.toLocaleLowerCase():
|
|
363
|
-
Statuses = 'badge-secondary';
|
|
364
|
-
this.canEditQuestion = true;
|
|
365
|
-
this.canDeleteQuestion = true;
|
|
366
|
-
this.canAddQuestion = true;
|
|
367
|
-
break;
|
|
368
|
-
case this.SurveyStatusEnum.ScoringTypeEnum_Closed.toLocaleLowerCase():
|
|
369
|
-
Statuses = 'badge-danger';
|
|
370
|
-
this.canEditQuestion = false;
|
|
371
|
-
this.canDeleteQuestion = true;
|
|
372
|
-
this.canAddQuestion = false;
|
|
373
|
-
break;
|
|
374
|
-
case this.SurveyStatusEnum.ScoringTypeEnum_Published.toLocaleLowerCase():
|
|
375
|
-
Statuses = 'badge-success';
|
|
376
|
-
this.canEditQuestion = false;
|
|
377
|
-
this.canDeleteQuestion = false;
|
|
378
|
-
this.canAddQuestion = false;
|
|
379
|
-
break;
|
|
380
|
-
case this.SurveyStatusEnum.ScoringTypeEnum_Upcoming.toLocaleLowerCase():
|
|
381
|
-
Statuses = 'badge-success';
|
|
382
|
-
this.canEditQuestion = true;
|
|
383
|
-
this.canDeleteQuestion = true;
|
|
384
|
-
this.canAddQuestion = true;
|
|
385
|
-
break;
|
|
386
|
-
default:
|
|
387
|
-
break;
|
|
388
|
-
}
|
|
389
|
-
return Statuses;
|
|
390
|
-
}
|
|
391
|
-
loadQuestionSection() {
|
|
392
|
-
this.SearchTextBoxOptions = new TextBoxOptions();
|
|
393
|
-
this.SearchTextBoxOptions.Name = 'SearchTextBox';
|
|
394
|
-
this.SearchTextBoxOptions.Type = InputType.Text;
|
|
395
|
-
this.SearchTextBoxOptions.TrimTextOnChange = true;
|
|
396
|
-
this.SearchTextBoxOptions.Placeholder = this.l('Search');
|
|
397
|
-
this.SearchTextBoxOptions.ExtraClasses =
|
|
398
|
-
'form-control form-control-sm form-control-solid search-box';
|
|
399
|
-
this.SearchTextBoxOptions.HideLabel = true;
|
|
400
|
-
this.SearchTextBoxOptions.Icon = '../../../assets/images/search.svg';
|
|
401
|
-
this.SurveyIDOptions = new TextBoxOptions();
|
|
402
|
-
this.SurveyIDOptions.Name = 'SurveyID';
|
|
403
|
-
this.SurveyIDOptions.Value = this.surveyID;
|
|
404
|
-
this.searchSurveyIDFilter = new FilterItem();
|
|
405
|
-
this.searchSurveyIDFilter.FormControlName = this.SurveyIDOptions.Name;
|
|
406
|
-
this.searchSurveyIDFilter.ActionParameterName = 'SurveyID';
|
|
407
|
-
this.searchSurveyIDFilter.IsFormControl = true;
|
|
408
|
-
this.searchSurveyIDFilter.FilterType = FilterType.TextBox;
|
|
409
|
-
this.pagingQuestionOptions = new PagingOptions();
|
|
410
|
-
this.pagingQuestionOptions.PageSize = 1000;
|
|
411
|
-
this.pagingQuestionOptions.DisableBlockUI = true;
|
|
412
|
-
this.pagingQuestionOptions.ActionPostURL =
|
|
413
|
-
this.apiQuestionURL + 'GetAllQuestions';
|
|
414
|
-
this.pagingQuestionOptions.Filters = [this.searchSurveyIDFilter];
|
|
415
|
-
}
|
|
416
|
-
setQuestionListingResult(result) {
|
|
417
|
-
this.pagingQuestionResult = result;
|
|
418
|
-
this.pagingQuestionResultOriginal = result;
|
|
419
|
-
this.showPageContent = true;
|
|
420
|
-
this.utilityService.stopBlockUI();
|
|
421
|
-
let overviewQuestions = this.pagingQuestionResultOriginal.filter((item) => item.questionTypeItemID == SurveyOptionType.RadioButton ||
|
|
422
|
-
item.questionTypeItemID == SurveyOptionType.SingleSelect ||
|
|
423
|
-
item.questionTypeItemID == SurveyOptionType.MultipleSelect);
|
|
424
|
-
if (overviewQuestions.length > 0)
|
|
425
|
-
this.loadSurveyOverview();
|
|
426
|
-
}
|
|
427
|
-
loadSubmissionSection() {
|
|
428
|
-
this.SearchTextBoxOptions = new TextBoxOptions();
|
|
429
|
-
this.SearchTextBoxOptions.Name = 'SearchTextBox';
|
|
430
|
-
this.SearchTextBoxOptions.Type = InputType.Text;
|
|
431
|
-
this.SearchTextBoxOptions.TrimTextOnChange = true;
|
|
432
|
-
this.SearchTextBoxOptions.Placeholder = this.l('Search');
|
|
433
|
-
this.SearchTextBoxOptions.ExtraClasses =
|
|
434
|
-
'form-control form-control-sm form-control-solid search-box';
|
|
435
|
-
this.SearchTextBoxOptions.HideLabel = true;
|
|
436
|
-
this.SearchTextBoxOptions.Icon = '../../../assets/images/search.svg';
|
|
437
|
-
this.searchSubmissionTextFilter = new FilterItem();
|
|
438
|
-
this.searchSubmissionTextFilter.FormControlName =
|
|
439
|
-
this.SearchTextBoxOptions.Name;
|
|
440
|
-
this.searchSubmissionTextFilter.ActionParameterName = 'SearchText';
|
|
441
|
-
this.searchSubmissionTextFilter.IsFormControl = true;
|
|
442
|
-
this.searchSubmissionTextFilter.FilterType = FilterType.TextBox;
|
|
443
|
-
this.SurveyIDOptions = new TextBoxOptions();
|
|
444
|
-
this.SurveyIDOptions.Name = 'SurveyID';
|
|
445
|
-
this.SurveyIDOptions.Value = this.surveyID;
|
|
446
|
-
this.searchSurveySubmissionIDFilter = new FilterItem();
|
|
447
|
-
this.searchSurveySubmissionIDFilter.FormControlName =
|
|
448
|
-
this.SurveyIDOptions.Name;
|
|
449
|
-
this.searchSurveySubmissionIDFilter.ActionParameterName = 'SurveyID';
|
|
450
|
-
this.searchSurveySubmissionIDFilter.IsFormControl = true;
|
|
451
|
-
this.searchSurveySubmissionIDFilter.FilterType = FilterType.TextBox;
|
|
452
|
-
this.pagingSubmissionOptions = new PagingOptions();
|
|
453
|
-
this.pagingSubmissionOptions.PageSize = 10;
|
|
454
|
-
this.pagingSubmissionOptions.DisableBlockUI = true;
|
|
455
|
-
this.pagingSubmissionOptions.ActionPostURL =
|
|
456
|
-
this.surveyService.apiURL + 'GetAllSurveySubmission';
|
|
457
|
-
this.pagingSubmissionOptions.OnKeyPressFiltersControlNames = [
|
|
458
|
-
this.SearchTextBoxOptions.Name,
|
|
459
|
-
];
|
|
460
|
-
this.pagingSubmissionOptions.Filters = [
|
|
461
|
-
this.searchSurveySubmissionIDFilter,
|
|
462
|
-
this.searchSubmissionTextFilter,
|
|
463
|
-
];
|
|
464
|
-
}
|
|
465
|
-
setSubmissionListingResult(result) {
|
|
466
|
-
this.pagingSubmissionResult = result;
|
|
467
|
-
this.showSubmissionPageContent = true;
|
|
468
|
-
this.utilityService.stopBlockUI();
|
|
469
|
-
}
|
|
470
|
-
loadSurveyOverview() {
|
|
471
|
-
this.surveyService.getSurveyOverview(this.surveyID).subscribe((res) => {
|
|
472
|
-
this.questionOverviewResult = res;
|
|
473
|
-
this.showOverview = true;
|
|
474
|
-
this.loadChart(this.questionOverviewResult[0]);
|
|
475
|
-
});
|
|
476
|
-
}
|
|
477
|
-
searchInQuestionList(value) {
|
|
478
|
-
if (value)
|
|
479
|
-
this.pagingQuestionResult = this.pagingQuestionResultOriginal.filter((item) => item.localizedText.toLowerCase().includes(value.toLowerCase()));
|
|
480
|
-
else
|
|
481
|
-
this.pagingQuestionResult = this.pagingQuestionResultOriginal;
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
SurveyInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SurveyInfoComponent, deps: [{ token: i0.Injector }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.Router }, { token: i2.MasterLayoutService }, { token: i3.SurveyService }, { token: i4.SurveyQuestionService }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
485
|
-
SurveyInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SurveyInfoComponent, selector: "app-survey-info", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["pagingViewElement"], descendants: true }, { propertyName: "deleteConfirmationModalControl", first: true, predicate: ["deleteConfirmationModalControl"], descendants: true }, { propertyName: "editModal", first: true, predicate: ["editModal"], descendants: true }, { propertyName: "editQuestionModal", first: true, predicate: ["editQuestionModal"], descendants: true }, { propertyName: "deleteQuestionConfirmationModalControl", first: true, predicate: ["deleteQuestionModal"], descendants: true }, { propertyName: "AddQuestionComponent", first: true, predicate: ["addQuestionModal"], descendants: true }, { propertyName: "addPublishModal", first: true, predicate: ["addPublishModal"], descendants: true }, { propertyName: "addUnPublishModal", first: true, predicate: ["addUnPublishModal"], descendants: true }, { propertyName: "deleteSubmissionConfirmationModalControl", first: true, predicate: ["deleteSubmissionModal"], descendants: true }, { propertyName: "eliminateSubmissionConfirmationModalControl", first: true, predicate: ["eliminateModal"], descendants: true }, { propertyName: "unEliminateSubmissionConfirmationModalControl", first: true, predicate: ["unEliminateModal"], descendants: true }, { propertyName: "pagingQuestionElement", first: true, predicate: ["pagingQuestionViewElement"], descendants: true }, { propertyName: "pagingSubmissionElement", first: true, predicate: ["pagingSubmissionViewElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--toolbar-->\r\n<div *ngIf=\"loadInfo\">\r\n <bbsf-page-header-component [options]=\"pageHeaderOptions\"></bbsf-page-header-component>\r\n</div>\r\n<!--end toolbar-->\r\n<div class=\"container-xxl\">\r\n <div class=\"info-container\" *ngIf=\"loadInfo\">\r\n <div class=\"section-margin-bottom\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"survery-date border-0\">\r\n <div class=\"icon-boxes align-items-baseline\">\r\n <div ngbTooltip=\"{{l('Date')}}\" class=\"icon-box\">\r\n <div class=\"symbol\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/calendar.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <span class=\"survey-counter-title\" *ngIf=\"survey.startDate==null\">\r\n {{l('NotStartedYet')}}\r\n </span>\r\n <span class=\"survey-counter-title d-flex flex-stack\" *ngIf=\"survey.startDate!=null\">\r\n {{survey.startDate |surveyDate}} - {{survey.endDate!=null?(survey.endDate|surveyDate):\"\"}}\r\n <span class=\"badge badge-light\" *ngIf=\"survey.endDate==null\">{{l('HasNoEnd')}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <span class=\"badge badge-light\" [ngClass]=\"getStatus(survey.statusItemID)\">{{survey.localizedStatus}}</span>\r\n <span ngbTooltip=\"{{l('Audience')}}\" class=\"badge badge-light mx-2\">{{survey.localizedAudience}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row card-data\">\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.Internal||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithInternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.External||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithExternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <p class=\"card-description\" *ngIf=\"survey.localizedDesc\">\r\n {{survey.localizedDesc}}\r\n </p>\r\n </div>\r\n <div class=\"section-margin-bottom\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-custom\">\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Questions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\">\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersQuestionForm\"\r\n (OnChange)=\"searchInQuestionList($event)\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersQuestionForm\" hidden></BBSF-TextBox>\r\n <button type=\"button\" *ngIf=\"canAddQuestion&&enableActions\" class=\"btn btn-brand btn-sm subheader-btn\"\r\n (click)=\"showAddQuestionModal()\">\r\n {{l('Add')}}\r\n </button>\r\n </div>\r\n <div [hidden]=\"pagingQuestionResult.length == 0\">\r\n <div ngbNavContent cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"question-info\" [cdkDragDisabled]=\"canTakeSurvey\" cdkDrag\r\n *ngFor=\"let item of pagingQuestionResult; let i=index\">\r\n <div class=\"symbol symbol-25px me-4\" cdkDragHandle *ngIf=\"!canTakeSurvey\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-7\" [inlineSVG]=\"'/assets/images/reorder.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"card card-listing\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title\">\r\n <span class=\"badge badge-light\"\r\n ngbTooltip=\"{{l('Type')}}\">{{item.localizedQuestionTypeItem}}</span>\r\n <span class=\"badge badge-light mx-2\"\r\n ngbTooltip=\"{{l('Audience')}}\">{{item.localizedAudienceType}}</span>\r\n <span class=\"badge badge-brand-light mx-2\"\r\n *ngIf=\"item.isRelatedToSurveyQuestion\">{{l('Linked')}}</span>\r\n <span class=\"badge badge-light mx-2\" *ngIf=\"!item.isVisible\" ngbTooltip=\"{{l('NotVisible')}}\">\r\n {{l(\"NotVisible\")}}\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div ngbDropdown container=\"body\" *ngIf=\"enableActions\" class=\"dropdown-custom\"\r\n [placement]=\"EN ? 'bottom-right' : 'bottom-left'\">\r\n <button type=\"button\" class=\"dropdown-toggle-custom btn btn-clear\" ngbDropdownToggle>\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/card-dropdown.svg'\"></span>\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom\">\r\n <button *ngIf=\"!(canEditQuestion&&canDeleteQuestion)\"\r\n (click)=\"showEditQuestionModal(item.iD_GUID,true)\" apppreventdoubleclick type=\"button\"\r\n ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n {{l(\"Details\")}}\r\n </button>\r\n\r\n <button *ngIf=\"canEditQuestion\" (click)=\"showEditQuestionModal(item.iD_GUID,false)\"\r\n apppreventdoubleclick type=\"button\" ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n {{l(\"Edit\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"canDeleteQuestion\"\r\n (click)=\"showDeleteQuestionModal(item.iD_GUID)\" apppreventdoubleclick ngbDropdownItem\r\n class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/Trash.svg'\"></span> {{l(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"survey-counter\">\r\n <span class=\"survey-counter-title\">{{item.localizedText}}</span>\r\n <span class=\"badge badge-light-brand badge-square ms-2 me-0\"\r\n ngbTooltip=\"{{l('Score')}}\">{{item.totalScore}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setQuestionListingResult($event)\" [options]=\"pagingQuestionOptions\"\r\n [group]=\"filtersQuestionForm\" #pagingQuestionViewElement></BBSF-Paging>\r\n </div>\r\n </div>\r\n <app-no-results *ngIf=\"pagingQuestionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Submissions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersSubmissionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersSubmissionForm\" hidden></BBSF-TextBox>\r\n </div>\r\n <div class=\"info-container\" [hidden]=\"pagingSubmissionResult.length == 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-custom\">\r\n <thead>\r\n <tr class=\"table-header\">\r\n <th> {{l('Name')}}</th>\r\n <th>{{l('Email')}}</th>\r\n <th>{{l('Type')}}</th>\r\n <th>{{l('Created')}}</th>\r\n <th>{{l('Score')}}</th>\r\n <th class=\"table-action\" *ngIf=\"enableActions\">{{l(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of pagingSubmissionResult; let i=index\">\r\n <td>\r\n <span class=\"line-clamp-2\">\r\n {{item.localizedName}}\r\n <span class=\"badge badge-danger mx-2\" *ngIf=\"item.isEliminated&&item.allowElimination\">\r\n {{l('Eliminated')}}\r\n </span>\r\n </span>\r\n </td>\r\n <td>\r\n {{item.email}}\r\n </td>\r\n <td>\r\n <div class=\"badge badge-light\">\r\n {{item.isInternalUser? l('InternalUsers'):l('ExternalUsers')}}\r\n </div>\r\n </td>\r\n <td>{{item.created|surveyDate}}</td>\r\n <td>{{item.totalScore}}</td>\r\n <td class=\"table-action\" *ngIf=\"enableActions\">\r\n <button type=\"button\" ngbTooltip=\"{{l('Preview')}}\"\r\n [routerLink]=\"['../../info/result', item.iD_GUID]\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/answers.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"!item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('EliminateHint')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick\r\n [inlineSVG]=\"'/assets/images/unlink.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('UnEliminate')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showUnEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/link.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" ngbTooltip=\"{{l('Delete')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showDeleteSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/Trash.svg'\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setSubmissionListingResult($event)\" [options]=\"pagingSubmissionOptions\"\r\n [group]=\"filtersSubmissionForm\" #pagingSubmissionViewElement></BBSF-Paging>\r\n </div>\r\n <app-no-results *ngIf=\"pagingSubmissionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" *ngIf=\"showOverview\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink (click)=\"loadSurveyOverview()\">\r\n <h4>\r\n {{l(\"Overview\") }}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\"> {{l(\"Questions\") }}</div>\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-pills custom-navs\" orientation=\"vertical\">\r\n <li ngbNavItem=\"{{item.localizedTitle}}\" [destroyOnHide]=\"true\"\r\n *ngFor=\"let item of questionOverviewResult\" (click)=\"loadChart(item)\">\r\n <a ngbNavLink>{{item.localizedTitle}}</a>\r\n\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Overview\") }}</div>\r\n <div id=\"chartdiv\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Score\") }} </div>\r\n <div id=\"chartOverview\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <app-edit-survey #editModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\"></app-edit-survey>\r\n <app-delete-survey #deleteConfirmationModalControl [pagingElement]=\"pagingElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandler\"></app-delete-survey>\r\n <app-add-question #addQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessAddHandler]=\"onSuccessAddQuestionHandler\"></app-add-question>\r\n <app-edit-question #editQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessEditHandler]=\"onSuccessEditQuestionHandler\"></app-edit-question>\r\n <app-delete-question #deleteQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessHandler]=\"onSuccessDeleteQuestionHandler\"></app-delete-question>\r\n <app-publish-survey #addPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\" *ngIf=\"loadInfo\" [showToggle]=\"survey.isShowToggleOfScoreResultAfterSubmission\">\r\n </app-publish-survey>\r\n <app-unpublish-survey #addUnPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\">\r\n </app-unpublish-survey>\r\n <app-delete-submission #deleteSubmissionModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandlerSubmission\"></app-delete-submission>\r\n <app-eliminate-submission #eliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-eliminate-submission>\r\n <app-unEliminate-submission #unEliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-unEliminate-submission>\r\n", styles: [""], 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: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i6.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i6.PageHeaderComponentComponent, selector: "bbsf-page-header-component", inputs: ["group", "options"] }, { kind: "directive", type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "directive", type: i7.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i7.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i7.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i7.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "component", type: i7.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "directive", type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i9.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: i10.EditSurveyComponent, selector: "app-edit-survey", inputs: ["pagingElement", "onSuccessHandler"] }, { kind: "component", type: i11.DeleteSurveyComponent, selector: "app-delete-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i12.EditQuestionComponent, selector: "app-edit-question", inputs: ["pagingElement", "onSuccessEditHandler"] }, { kind: "component", type: i13.DeleteQuestionComponent, selector: "app-delete-question", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i14.AddQuestionComponent, selector: "app-add-question", inputs: ["pagingElement", "onSuccessAddHandler"] }, { kind: "component", type: i15.PublishSurveyComponent, selector: "app-publish-survey", inputs: ["pagingElement", "showToggle", "onSuccessHandler"] }, { kind: "component", type: i16.UnPublishSurveyComponent, selector: "app-unpublish-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i17.DeleteSubmissionComponent, selector: "app-delete-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i18.EliminateSubmissionComponent, selector: "app-eliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i19.UnEliminateSubmissionComponent, selector: "app-unEliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i20.NoResultsComponent, selector: "app-no-results" }, { kind: "pipe", type: i21.SurveyDatePipe, name: "surveyDate" }] });
|
|
486
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
487
|
-
type: Component,
|
|
488
|
-
args: [{ selector: 'app-survey-info', template: "<!--toolbar-->\r\n<div *ngIf=\"loadInfo\">\r\n <bbsf-page-header-component [options]=\"pageHeaderOptions\"></bbsf-page-header-component>\r\n</div>\r\n<!--end toolbar-->\r\n<div class=\"container-xxl\">\r\n <div class=\"info-container\" *ngIf=\"loadInfo\">\r\n <div class=\"section-margin-bottom\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"survery-date border-0\">\r\n <div class=\"icon-boxes align-items-baseline\">\r\n <div ngbTooltip=\"{{l('Date')}}\" class=\"icon-box\">\r\n <div class=\"symbol\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/calendar.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <span class=\"survey-counter-title\" *ngIf=\"survey.startDate==null\">\r\n {{l('NotStartedYet')}}\r\n </span>\r\n <span class=\"survey-counter-title d-flex flex-stack\" *ngIf=\"survey.startDate!=null\">\r\n {{survey.startDate |surveyDate}} - {{survey.endDate!=null?(survey.endDate|surveyDate):\"\"}}\r\n <span class=\"badge badge-light\" *ngIf=\"survey.endDate==null\">{{l('HasNoEnd')}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <span class=\"badge badge-light\" [ngClass]=\"getStatus(survey.statusItemID)\">{{survey.localizedStatus}}</span>\r\n <span ngbTooltip=\"{{l('Audience')}}\" class=\"badge badge-light mx-2\">{{survey.localizedAudience}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row card-data\">\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.Internal||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithInternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.External||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithExternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <p class=\"card-description\" *ngIf=\"survey.localizedDesc\">\r\n {{survey.localizedDesc}}\r\n </p>\r\n </div>\r\n <div class=\"section-margin-bottom\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-custom\">\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Questions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\">\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersQuestionForm\"\r\n (OnChange)=\"searchInQuestionList($event)\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersQuestionForm\" hidden></BBSF-TextBox>\r\n <button type=\"button\" *ngIf=\"canAddQuestion&&enableActions\" class=\"btn btn-brand btn-sm subheader-btn\"\r\n (click)=\"showAddQuestionModal()\">\r\n {{l('Add')}}\r\n </button>\r\n </div>\r\n <div [hidden]=\"pagingQuestionResult.length == 0\">\r\n <div ngbNavContent cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"question-info\" [cdkDragDisabled]=\"canTakeSurvey\" cdkDrag\r\n *ngFor=\"let item of pagingQuestionResult; let i=index\">\r\n <div class=\"symbol symbol-25px me-4\" cdkDragHandle *ngIf=\"!canTakeSurvey\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-7\" [inlineSVG]=\"'/assets/images/reorder.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"card card-listing\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title\">\r\n <span class=\"badge badge-light\"\r\n ngbTooltip=\"{{l('Type')}}\">{{item.localizedQuestionTypeItem}}</span>\r\n <span class=\"badge badge-light mx-2\"\r\n ngbTooltip=\"{{l('Audience')}}\">{{item.localizedAudienceType}}</span>\r\n <span class=\"badge badge-brand-light mx-2\"\r\n *ngIf=\"item.isRelatedToSurveyQuestion\">{{l('Linked')}}</span>\r\n <span class=\"badge badge-light mx-2\" *ngIf=\"!item.isVisible\" ngbTooltip=\"{{l('NotVisible')}}\">\r\n {{l(\"NotVisible\")}}\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div ngbDropdown container=\"body\" *ngIf=\"enableActions\" class=\"dropdown-custom\"\r\n [placement]=\"EN ? 'bottom-right' : 'bottom-left'\">\r\n <button type=\"button\" class=\"dropdown-toggle-custom btn btn-clear\" ngbDropdownToggle>\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/card-dropdown.svg'\"></span>\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom\">\r\n <button *ngIf=\"!(canEditQuestion&&canDeleteQuestion)\"\r\n (click)=\"showEditQuestionModal(item.iD_GUID,true)\" apppreventdoubleclick type=\"button\"\r\n ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n {{l(\"Details\")}}\r\n </button>\r\n\r\n <button *ngIf=\"canEditQuestion\" (click)=\"showEditQuestionModal(item.iD_GUID,false)\"\r\n apppreventdoubleclick type=\"button\" ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n {{l(\"Edit\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"canDeleteQuestion\"\r\n (click)=\"showDeleteQuestionModal(item.iD_GUID)\" apppreventdoubleclick ngbDropdownItem\r\n class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/Trash.svg'\"></span> {{l(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"survey-counter\">\r\n <span class=\"survey-counter-title\">{{item.localizedText}}</span>\r\n <span class=\"badge badge-light-brand badge-square ms-2 me-0\"\r\n ngbTooltip=\"{{l('Score')}}\">{{item.totalScore}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setQuestionListingResult($event)\" [options]=\"pagingQuestionOptions\"\r\n [group]=\"filtersQuestionForm\" #pagingQuestionViewElement></BBSF-Paging>\r\n </div>\r\n </div>\r\n <app-no-results *ngIf=\"pagingQuestionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Submissions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersSubmissionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersSubmissionForm\" hidden></BBSF-TextBox>\r\n </div>\r\n <div class=\"info-container\" [hidden]=\"pagingSubmissionResult.length == 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-custom\">\r\n <thead>\r\n <tr class=\"table-header\">\r\n <th> {{l('Name')}}</th>\r\n <th>{{l('Email')}}</th>\r\n <th>{{l('Type')}}</th>\r\n <th>{{l('Created')}}</th>\r\n <th>{{l('Score')}}</th>\r\n <th class=\"table-action\" *ngIf=\"enableActions\">{{l(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of pagingSubmissionResult; let i=index\">\r\n <td>\r\n <span class=\"line-clamp-2\">\r\n {{item.localizedName}}\r\n <span class=\"badge badge-danger mx-2\" *ngIf=\"item.isEliminated&&item.allowElimination\">\r\n {{l('Eliminated')}}\r\n </span>\r\n </span>\r\n </td>\r\n <td>\r\n {{item.email}}\r\n </td>\r\n <td>\r\n <div class=\"badge badge-light\">\r\n {{item.isInternalUser? l('InternalUsers'):l('ExternalUsers')}}\r\n </div>\r\n </td>\r\n <td>{{item.created|surveyDate}}</td>\r\n <td>{{item.totalScore}}</td>\r\n <td class=\"table-action\" *ngIf=\"enableActions\">\r\n <button type=\"button\" ngbTooltip=\"{{l('Preview')}}\"\r\n [routerLink]=\"['../../info/result', item.iD_GUID]\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/answers.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"!item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('EliminateHint')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick\r\n [inlineSVG]=\"'/assets/images/unlink.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('UnEliminate')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showUnEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/link.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" ngbTooltip=\"{{l('Delete')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showDeleteSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/Trash.svg'\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setSubmissionListingResult($event)\" [options]=\"pagingSubmissionOptions\"\r\n [group]=\"filtersSubmissionForm\" #pagingSubmissionViewElement></BBSF-Paging>\r\n </div>\r\n <app-no-results *ngIf=\"pagingSubmissionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" *ngIf=\"showOverview\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink (click)=\"loadSurveyOverview()\">\r\n <h4>\r\n {{l(\"Overview\") }}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\"> {{l(\"Questions\") }}</div>\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-pills custom-navs\" orientation=\"vertical\">\r\n <li ngbNavItem=\"{{item.localizedTitle}}\" [destroyOnHide]=\"true\"\r\n *ngFor=\"let item of questionOverviewResult\" (click)=\"loadChart(item)\">\r\n <a ngbNavLink>{{item.localizedTitle}}</a>\r\n\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Overview\") }}</div>\r\n <div id=\"chartdiv\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Score\") }} </div>\r\n <div id=\"chartOverview\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <app-edit-survey #editModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\"></app-edit-survey>\r\n <app-delete-survey #deleteConfirmationModalControl [pagingElement]=\"pagingElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandler\"></app-delete-survey>\r\n <app-add-question #addQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessAddHandler]=\"onSuccessAddQuestionHandler\"></app-add-question>\r\n <app-edit-question #editQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessEditHandler]=\"onSuccessEditQuestionHandler\"></app-edit-question>\r\n <app-delete-question #deleteQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessHandler]=\"onSuccessDeleteQuestionHandler\"></app-delete-question>\r\n <app-publish-survey #addPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\" *ngIf=\"loadInfo\" [showToggle]=\"survey.isShowToggleOfScoreResultAfterSubmission\">\r\n </app-publish-survey>\r\n <app-unpublish-survey #addUnPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\">\r\n </app-unpublish-survey>\r\n <app-delete-submission #deleteSubmissionModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandlerSubmission\"></app-delete-submission>\r\n <app-eliminate-submission #eliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-eliminate-submission>\r\n <app-unEliminate-submission #unEliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-unEliminate-submission>\r\n" }]
|
|
489
|
-
}], ctorParameters:
|
|
490
|
-
type: Inject,
|
|
491
|
-
args: [PLATFORM_ID]
|
|
492
|
-
}] }, { type: i0.NgZone }, { type: i1.Router }, { type: i2.MasterLayoutService }, { type: i3.SurveyService }, { type: i4.SurveyQuestionService }, { type: i1.ActivatedRoute }]
|
|
493
|
-
type: ViewChild,
|
|
494
|
-
args: ['pagingViewElement', { static: false }]
|
|
495
|
-
}], deleteConfirmationModalControl: [{
|
|
496
|
-
type: ViewChild,
|
|
497
|
-
args: ['deleteConfirmationModalControl', { static: false }]
|
|
498
|
-
}], editModal: [{
|
|
499
|
-
type: ViewChild,
|
|
500
|
-
args: ['editModal', { static: false }]
|
|
501
|
-
}], editQuestionModal: [{
|
|
502
|
-
type: ViewChild,
|
|
503
|
-
args: ['editQuestionModal', { static: false }]
|
|
504
|
-
}], deleteQuestionConfirmationModalControl: [{
|
|
505
|
-
type: ViewChild,
|
|
506
|
-
args: ['deleteQuestionModal', { static: false }]
|
|
507
|
-
}], AddQuestionComponent: [{
|
|
508
|
-
type: ViewChild,
|
|
509
|
-
args: ['addQuestionModal', { static: false }]
|
|
510
|
-
}], addPublishModal: [{
|
|
511
|
-
type: ViewChild,
|
|
512
|
-
args: ['addPublishModal', { static: false }]
|
|
513
|
-
}], addUnPublishModal: [{
|
|
514
|
-
type: ViewChild,
|
|
515
|
-
args: ['addUnPublishModal', { static: false }]
|
|
516
|
-
}], deleteSubmissionConfirmationModalControl: [{
|
|
517
|
-
type: ViewChild,
|
|
518
|
-
args: ['deleteSubmissionModal', { static: false }]
|
|
519
|
-
}], eliminateSubmissionConfirmationModalControl: [{
|
|
520
|
-
type: ViewChild,
|
|
521
|
-
args: ['eliminateModal', { static: false }]
|
|
522
|
-
}], unEliminateSubmissionConfirmationModalControl: [{
|
|
523
|
-
type: ViewChild,
|
|
524
|
-
args: ['unEliminateModal', { static: false }]
|
|
525
|
-
}], pagingQuestionElement: [{
|
|
526
|
-
type: ViewChild,
|
|
527
|
-
args: ['pagingQuestionViewElement', { static: false }]
|
|
528
|
-
}], pagingSubmissionElement: [{
|
|
529
|
-
type: ViewChild,
|
|
530
|
-
args: ['pagingSubmissionViewElement', { static: false }]
|
|
531
|
-
}] } });
|
|
532
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUlOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsVUFBVSxFQUNWLGNBQWMsRUFDZCxTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLGFBQWEsRUFDYixjQUFjLEdBQ2YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sa0JBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFPckUsT0FBTyxFQUNMLFlBQVksRUFDWixVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLHNCQUFz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RSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdqRCxzQ0FBc0M7c0JBRHJDLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUduRCxvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdoRCxlQUFlO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUcvQyxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdqRCx3Q0FBd0M7c0JBRHZDLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdyRCwyQ0FBMkM7c0JBRDFDLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUc5Qyw2Q0FBNkM7c0JBRDVDLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXNCaEQscUJBQXFCO3NCQURwQixTQUFTO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFlekQsdUJBQXVCO3NCQUR0QixTQUFTO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1Ymxpc2hTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuL3B1Ymxpc2gtc3VydmV5L3B1Ymxpc2gtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFkZFF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9hZGQtcXVlc3Rpb24vYWRkLXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9kZWxldGUtcXVlc3Rpb24vZGVsZXRlLXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXRRdWVzdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZWRpdC1xdWVzdGlvbi9lZGl0LXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXRTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuLy4uL2VkaXQtc3VydmV5L2VkaXQtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVN1cnZleUNvbXBvbmVudCB9IGZyb20gJy4vLi4vZGVsZXRlLXN1cnZleS9kZWxldGUtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5qZWN0LFxyXG4gIEluamVjdG9yLFxyXG4gIE5nWm9uZSxcclxuICBPbkluaXQsXHJcbiAgUExBVEZPUk1fSUQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFwcEJhc2VDb21wb25lbnQsXHJcbiAgQnJlYWRDcnVtYixcclxuICBDb250cm9sTGF5b3V0LFxyXG4gIERyb3Bkb3duQWN0aW9uSXRlbSxcclxuICBGaWx0ZXJJdGVtLFxyXG4gIEZpbHRlclR5cGUsXHJcbiAgRm9yY2VEaXJlY3Rpb24sXHJcbiAgSW5wdXRUeXBlLFxyXG4gIFBhZ2VIZWFkZXJPcHRpb25zLFxyXG4gIFBhZ2luZ0NvbXBvbmVudCxcclxuICBQYWdpbmdPcHRpb25zLFxyXG4gIFRleHRCb3hPcHRpb25zLFxyXG59IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCAqIGFzIGFtNSBmcm9tICdAYW1jaGFydHMvYW1jaGFydHM1JztcclxuaW1wb3J0ICogYXMgYW01eHkgZnJvbSAnQGFtY2hhcnRzL2FtY2hhcnRzNS94eSc7XHJcbmltcG9ydCBhbTV0aGVtZXNfQW5pbWF0ZWQgZnJvbSAnQGFtY2hhcnRzL2FtY2hhcnRzNS90aGVtZXMvQW5pbWF0ZWQnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTWFzdGVyTGF5b3V0U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IFVuUHVibGlzaFN1cnZleUNvbXBvbmVudCB9IGZyb20gJy4vdW5wdWJsaXNoLXN1cnZleS91bnB1Ymxpc2gtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVN1Ym1pc3Npb25Db21wb25lbnQgfSBmcm9tICcuLi9zdWJtaXNzaW9ucy9kZWxldGUtc3VibWlzc2lvbi9kZWxldGUtc3VibWlzc2lvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbGltaW5hdGVTdWJtaXNzaW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc3VibWlzc2lvbnMvZWxpbWluYXRlLXN1Ym1pc3Npb24vZWxpbWluYXRlLXN1Ym1pc3Npb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVW5FbGltaW5hdGVTdWJtaXNzaW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc3VibWlzc2lvbnMvdW5lbGltaW5hdGUtc3VibWlzc2lvbi91bmVsaW1pbmF0ZS1zdWJtaXNzaW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgQXVkaWVuY2VUeXBlLFxyXG4gIFN1cnZleU1vZGUsXHJcbiAgU3VydmV5T3B0aW9uVHlwZSxcclxuICBTdXJ2ZXlTdGF0dXNFbnVtLFxyXG59IGZyb20gJy4uLy4uLy4uL0VudW1zL0VudW1zJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25EVE8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvU3VydmV5TW9kZWxzL3N1cnZleS1xdWVzdGlvbic7XHJcbmltcG9ydCB7IFN1cnZleVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy9zdXJ2ZXkuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3N1cnZleS1xdWVzdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3VydmV5Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1N1cnZleU1vZGVscy9zdXJ2ZXktdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3VydmV5LWluZm8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdXJ2ZXktaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3VydmV5LWluZm8uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VydmV5SW5mb0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHBhZ2VIZWFkZXJPcHRpb25zOiBQYWdlSGVhZGVyT3B0aW9ucztcclxuICBicmVhZENydW1iOiBCcmVhZENydW1iW107XHJcbiAgc3VydmV5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBEZWxldGVTdXJ2ZXlDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdE1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRNb2RhbDogRWRpdFN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlZGl0UXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGVkaXRRdWVzdGlvbk1vZGFsOiBFZGl0UXVlc3Rpb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlUXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGRlbGV0ZVF1ZXN0aW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBEZWxldGVRdWVzdGlvbkNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZGRRdWVzdGlvbk1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgQWRkUXVlc3Rpb25Db21wb25lbnQ6IEFkZFF1ZXN0aW9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2FkZFB1Ymxpc2hNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGFkZFB1Ymxpc2hNb2RhbDogUHVibGlzaFN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZGRVblB1Ymxpc2hNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGFkZFVuUHVibGlzaE1vZGFsOiBVblB1Ymxpc2hTdXJ2ZXlDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlU3VibWlzc2lvbk1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZGVsZXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogRGVsZXRlU3VibWlzc2lvbkNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlbGltaW5hdGVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGVsaW1pbmF0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2w6IEVsaW1pbmF0ZVN1Ym1pc3Npb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgndW5FbGltaW5hdGVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHVuRWxpbWluYXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogVW5FbGltaW5hdGVTdWJtaXNzaW9uQ29tcG9uZW50O1xyXG4gIGVuYWJsZUFjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgVGV4dEJveFdpdGhFeHRlcm5hbFVSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgVGV4dEJveFdpdGhJbnRlcm5hbFVSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgdXJsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFNlYXJjaFRleHRCb3ggPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFTjogYm9vbGVhbjtcclxuICBTZWFyY2hUZXh0Qm94T3B0aW9uczogVGV4dEJveE9wdGlvbnM7XHJcbiAgcHJpdmF0ZSByb290ITogYW01LlJvb3Q7XHJcbiAgc3VydmV5SUQ6IGFueTtcclxuICBzdXJ2ZXk6IGFueTtcclxuICBsb2FkSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBTdXJ2ZXlTdGF0dXNFbnVtID0gU3VydmV5U3RhdHVzRW51bTtcclxuICBwdWJsaWMgQXVkaWVuY2VUeXBlRW51bSA9IEF1ZGllbmNlVHlwZTtcclxuICBzdXJ2ZXlRdWVzdGlvbnM6IFN1cnZleVF1ZXN0aW9uRFRPW10gPSBbXTtcclxuICBhcGlRdWVzdGlvblVSTCA9IHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmFwaVVSTDtcclxuICBmaWx0ZXJzUXVlc3Rpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgY2FuVGFrZVN1cnZleTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vUXVlc3Rpb25zIFNlY3Rpb25cclxuICBAVmlld0NoaWxkKCdwYWdpbmdRdWVzdGlvblZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcGFnaW5nUXVlc3Rpb25FbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuICBwYWdpbmdRdWVzdGlvblJlc3VsdDogYW55W10gPSBbXTtcclxuICBwYWdpbmdRdWVzdGlvbk9wdGlvbnM6IFBhZ2luZ09wdGlvbnM7XHJcbiAgc2hvd1BhZ2VDb250ZW50OiBib29sZWFuO1xyXG4gIGNhbkVkaXRRdWVzdGlvbjogYm9vbGVhbjtcclxuICBjYW5BZGRRdWVzdGlvbjogYm9vbGVhbjtcclxuICBjYW5EZWxldGVRdWVzdGlvbjogYm9vbGVhbjtcclxuICBzZWFyY2hRdWVzdGlvblRleHRGaWx0ZXI6IGFueTtcclxuICBTdXJ2ZXlJRE9wdGlvbnM6IGFueTtcclxuICBzZWFyY2hTdXJ2ZXlJREZpbHRlcjogRmlsdGVySXRlbTtcclxuXHJcbiAgLy9TdWJtaXNzaW9uIFNlY3Rpb25cclxuICBmaWx0ZXJzU3VibWlzc2lvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBAVmlld0NoaWxkKCdwYWdpbmdTdWJtaXNzaW9uVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwYWdpbmdTdWJtaXNzaW9uRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcbiAgcGFnaW5nU3VibWlzc2lvblJlc3VsdDogYW55W10gPSBbXTtcclxuICBwYWdpbmdTdWJtaXNzaW9uT3B0aW9uczogUGFnaW5nT3B0aW9ucztcclxuICBzaG93U3VibWlzc2lvblBhZ2VDb250ZW50OiBib29sZWFuO1xyXG4gIHNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlcjogRmlsdGVySXRlbTtcclxuICBxdWVzdGlvbk92ZXJ2aWV3UmVzdWx0OiBhbnk7XHJcbiAgcGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbDogYW55O1xyXG4gIHNob3dPdmVydmlldzogYm9vbGVhbjtcclxuICBzaG93TmF2OiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQsXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIG1hc3RlckxheW91dFNlcnZpY2U6IE1hc3RlckxheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN1cnZleVNlcnZpY2U6IFN1cnZleVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN1cnZleVF1ZXN0aW9uU2VydmljZTogU3VydmV5UXVlc3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICApIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIHRoaXMucm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlID0gKCkgPT4gZmFsc2U7XHJcbiAgICB0aGlzLnN1cnZleUlEID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XHJcbiAgfVxyXG4gIC8vIFJ1biB0aGUgZnVuY3Rpb24gb25seSBpbiB0aGUgYnJvd3NlclxyXG4gIGJyb3dzZXJPbmx5KGY6ICgpID0+IHZvaWQpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgZigpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHsgfVxyXG5cclxuICBtYXliZURpc3Bvc2VSb290KGRpdklkKSB7XHJcbiAgICBhbTUuYXJyYXkuZWFjaChhbTUucmVnaXN0cnkucm9vdEVsZW1lbnRzLCAocm9vdCkgPT4ge1xyXG4gICAgICBpZiAocm9vdCkge1xyXG4gICAgICAgIGlmIChyb290LmRvbS5pZCA9PSBkaXZJZCkge1xyXG4gICAgICAgICAgcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRDaGFydChpdGVtKSB7XHJcbiAgICAvLyBDaGFydCBjb2RlIGdvZXMgaW4gaGVyZVxyXG4gICAgdGhpcy5icm93c2VyT25seSgoKSA9PiB7XHJcbiAgICAgIGxldCBuYW1lID0gYGNoYXJ0ZGl2YDtcclxuICAgICAgdGhpcy5tYXliZURpc3Bvc2VSb290KG5hbWUpO1xyXG4gICAgICBsZXQgcm9vdCA9IGFtNS5Sb290Lm5ldyhuYW1lKTtcclxuICAgICAgcm9vdC5zZXRUaGVtZXMoW2FtNXRoZW1lc19BbmltYXRlZC5uZXcocm9vdCldKTtcclxuXHJcbiAgICAgIGxldCBjaGFydCA9IHJvb3QuY29udGFpbmVyLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgICAgYW01eHkuWFlDaGFydC5uZXcocm9vdCwge1xyXG4gICAgICAgICAgcGFuWDogZmFsc2UsXHJcbiAgICAgICAgICBwYW5ZOiBmYWxzZSxcclxuICAgICAgICAgIHdoZWVsWDogJ25vbmUnLFxyXG4gICAgICAgICAgd2hlZWxZOiAnbm9uZScsXHJcbiAgICAgICAgICBwYWRkaW5nQm90dG9tOiA1MCxcclxuICAgICAgICAgIHBhZGRpbmdUb3A6IDQwLFxyXG4gICAgICAgICAgbGF5b3V0OiByb290LnZlcnRpY2FsTGF5b3V0LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBEZWZpbmUgZGF0YVxyXG4gICAgICBsZXQgZGF0YSA9IGl0ZW0ub3B0aW9ucy5tYXAoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6IHZhbHVlLmxvY2FsaXplZFRpdGxlLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLm51bWJlck9mU2VsZWN0ZWRUaW1lLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBDcmVhdGUgWS1heGlzXHJcbiAgICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuVmFsdWVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBiYXNlVmFsdWU6IDAsXHJcbiAgICAgICAgICBtYXhQcmVjaXNpb246IDAsXHJcbiAgICAgICAgICBtaW46IDAsXHJcbiAgICAgICAgICBleHRyYVRvb2x0aXBQcmVjaXNpb246IDEwMCxcclxuICAgICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7fSksXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBYLUF4aXNcclxuICAgICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgICBhbTV4eS5DYXRlZ29yeUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7fSksXHJcbiAgICAgICAgICBjYXRlZ29yeUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgeEF4aXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICAgIGxldCBzZXJpZXMxID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuQ29sdW1uU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBuYW1lOiAnUXVlc3Rpb24gT3B0aW9ucycsXHJcbiAgICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgICB2YWx1ZVlGaWVsZDogJ3ZhbHVlJyxcclxuICAgICAgICAgIGNhdGVnb3J5WEZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHNlcmllczEuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICAgIHNlcmllczEuc2V0KCdmaWxsJywgYW01LmNvbG9yKCcjYjY4YTM1JykpOyAvLyBzZXQgU2VyaWVzIGNvbG9yIHRvIHJlZFxyXG4gICAgICBzZXJpZXMxLnNldCgnc3Ryb2tlJywgYW01LmNvbG9yKCcjYjY4YTM1JykpOyAvLyBzZXQgU2VyaWVzIGNvbG9yIHRvIHJlZFxyXG5cclxuICAgICAgLy8gQWRkIGxlZ2VuZFxyXG4gICAgICBsZXQgbGVnZW5kID0gY2hhcnQuY2hpbGRyZW4ucHVzaChhbTUuTGVnZW5kLm5ldyhyb290LCB7fSkpO1xyXG4gICAgICBsZWdlbmQuZGF0YS5wdXNoKHNlcmllczEpO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLkVOKSB7XHJcbiAgICAgICAgbGVnZW5kLmxhYmVscy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnLFxyXG4gICAgICAgICAgeDogNTAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGVnZW5kLnZhbHVlTGFiZWxzLnRlbXBsYXRlLnNldEFsbCh7XHJcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCcsXHJcbiAgICAgICAgICBwYWRkaW5nUmlnaHQ6IDE1LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICAgICAgcmV2ZXJzZUNoaWxkcmVuOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm9vdCA9IHJvb3Q7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAvL2NoYXJ0IG92ZXJ2aWV3XHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgbGV0IG5hbWVPdmVyVmlldyA9IGBjaGFydE92ZXJ2aWV3YDtcclxuICAgICAgdGhpcy5tYXliZURpc3Bvc2VSb290KG5hbWVPdmVyVmlldyk7XHJcbiAgICAgIGxldCByb290ID0gYW01LlJvb3QubmV3KG5hbWVPdmVyVmlldyk7XHJcblxyXG4gICAgICByb290LnNldFRoZW1lcyhbYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KV0pO1xyXG5cclxuICAgICAgbGV0IGNoYXJ0ID0gcm9vdC5jb250YWluZXIuY2hpbGRyZW4ucHVzaChcclxuICAgICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgICBwYW5ZOiBmYWxzZSxcclxuICAgICAgICAgIGxheW91dDogcm9vdC52ZXJ0aWNhbExheW91dCxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gRGVmaW5lIGRhdGFcclxuXHJcbiAgICAgIGxldCBkYXRhID0gW107XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGl0ZW0ucmVzdWx0cykge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXRlbS5yZXN1bHRzLCBrZXkpKSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW0ucmVzdWx0c1trZXldO1xyXG4gICAgICAgICAgbGV0IG9iamVjdCA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6ICc8PScgKyBrZXksXHJcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBkYXRhLnB1c2gob2JqZWN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENyZWF0ZSBZLWF4aXNcclxuICAgICAgbGV0IHlBeGlzID0gY2hhcnQueUF4ZXMucHVzaChcclxuICAgICAgICBhbTV4eS5WYWx1ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIGJhc2VWYWx1ZTogMCxcclxuICAgICAgICAgIG1heFByZWNpc2lvbjogMCxcclxuICAgICAgICAgIG1pbjogMCxcclxuICAgICAgICAgIGV4dHJhVG9vbHRpcFByZWNpc2lvbjogMTAwLFxyXG4gICAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclkubmV3KHJvb3QsIHt9KSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIFgtQXhpc1xyXG4gICAgICBsZXQgeEF4aXMgPSBjaGFydC54QXhlcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LkNhdGVnb3J5QXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclgubmV3KHJvb3QsIHt9KSxcclxuICAgICAgICAgIGNhdGVnb3J5RmllbGQ6ICdjYXRlZ29yeScsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgeEF4aXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICAgIGxldCBzZXJpZXMxID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuQ29sdW1uU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBuYW1lOiAnU2NvcmUnLFxyXG4gICAgICAgICAgeEF4aXM6IHhBeGlzLFxyXG4gICAgICAgICAgeUF4aXM6IHlBeGlzLFxyXG4gICAgICAgICAgdmFsdWVZRmllbGQ6ICd2YWx1ZScsXHJcbiAgICAgICAgICBjYXRlZ29yeVhGaWVsZDogJ2NhdGVnb3J5JyxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBzZXJpZXMxLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgICBzZXJpZXMxLnNldCgnZmlsbCcsIGFtNS5jb2xvcignI2I2OGEzNScpKTsgLy8gc2V0IFNlcmllcyBjb2xvciB0byByZWRcclxuICAgICAgc2VyaWVzMS5zZXQoJ3N0cm9rZScsIGFtNS5jb2xvcignI2I2OGEzNScpKTsgLy8gc2V0IFNlcmllcyBjb2xvciB0byByZWRcclxuICAgICAgLy8gQWRkIGxlZ2VuZFxyXG4gICAgICBsZXQgbGVnZW5kID0gY2hhcnQuY2hpbGRyZW4ucHVzaChhbTUuTGVnZW5kLm5ldyhyb290LCB7fSkpO1xyXG4gICAgICBsZWdlbmQuZGF0YS5zZXRBbGwoY2hhcnQuc2VyaWVzLnZhbHVlcyk7XHJcbiAgICAgIGlmICghdGhpcy5FTikge1xyXG4gICAgICAgIGxlZ2VuZC5sYWJlbHMudGVtcGxhdGUuc2V0QWxsKHtcclxuICAgICAgICAgIHRleHRBbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgICAgIHg6IDUwLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxlZ2VuZC52YWx1ZUxhYmVscy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnLFxyXG4gICAgICAgICAgcGFkZGluZ1JpZ2h0OiAxNSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBsZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuc2V0QWxsKHtcclxuICAgICAgICAgIHJldmVyc2VDaGlsZHJlbjogdHJ1ZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJvb3QgPSByb290O1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gQ2xlYW4gdXAgcm9vdCBlbGVtZW50IHdoZW4gdGhlIGNvbXBvbmVudCBpcyByZW1vdmVkXHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucm9vdCkge1xyXG4gICAgICAgIHRoaXMucm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoU3VydmV5Q29uZmlnLnN1cnZleU1vZGUgPT0gU3VydmV5TW9kZS5TdXJ2ZXlfRnVsbF9BY2Nlc3MpXHJcbiAgICAgIHRoaXMuZW5hYmxlQWN0aW9ucyA9IHRydWU7XHJcbiAgICB0aGlzLnN1cnZleVNlcnZpY2UuZ2V0SW5mbyh0aGlzLnN1cnZleUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLnN1cnZleSA9IHJlc3VsdDtcclxuXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuTmFtZSA9ICdUZXh0Qm94V2l0aEV4dGVybmFsVVJMJztcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLkxhYmVsS2V5ID0gJ0V4dGVybmFsX1VSTCc7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkVuZ2xpc2g7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5FbmFibGVDb3B5VG9DbGlwYm9hcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuVmFsdWUgPSB0aGlzLnN1cnZleS5leHRlcm5hbFVSTDtcclxuXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuTmFtZSA9ICdUZXh0Qm94V2l0aEludGVybmFsVVJMJztcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLkxhYmVsS2V5ID0gJ0ludGVybmFsX1VSTCc7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkVuZ2xpc2g7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5FbmFibGVDb3B5VG9DbGlwYm9hcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuVmFsdWUgPSB0aGlzLnN1cnZleS5pbnRlcm5hbFVSTDtcclxuXHJcbiAgICAgIHRoaXMuYnJlYWRDcnVtYiA9IFtdO1xyXG4gICAgICB0aGlzLmJyZWFkQ3J1bWIucHVzaChcclxuICAgICAgICBuZXcgQnJlYWRDcnVtYih0aGlzLmwoJ0hvbWUnKSwgZmFsc2UsICcvJyksXHJcbiAgICAgICAgbmV3IEJyZWFkQ3J1bWIodGhpcy5sKCdTdXJ2ZXlzX0hlYWRlcicpLCBmYWxzZSwgJy4uLy4uLycpLFxyXG4gICAgICAgIG5ldyBCcmVhZENydW1iKHRoaXMubCgnU3VydmV5X0RldGFpbHMnKSwgdHJ1ZSlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucyA9IG5ldyBQYWdlSGVhZGVyT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLlRpdGxlVmFsdWUgPSB0aGlzLnN1cnZleS5sb2NhbGl6ZWRUaXRsZTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5TZWFyY2hUZXh0Qm94LkFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkJyZWFkQ3J1bWIuQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5CcmVhZENydW1iLkJyZWFkQ3J1bWJJdGVtcyA9IHRoaXMuYnJlYWRDcnVtYjtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuZW5hYmxlQWN0aW9ucylcclxuICAgICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkRyb3BEb3duQWN0aW9ucy5Ecm9wZG93bkFjdGlvbkl0ZW1zLnB1c2goXHJcbiAgICAgICAgICBuZXcgRHJvcGRvd25BY3Rpb25JdGVtKFxyXG4gICAgICAgICAgICB0aGlzLmwoJ0RlbGV0ZScpLFxyXG4gICAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvVHJhc2guc3ZnJyxcclxuICAgICAgICAgICAgdGhpcy5zaG93RGVsZXRlTW9kYWxcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuRHJvcGRvd25BY3Rpb25JdGVtcy5wdXNoKFxyXG4gICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0oXHJcbiAgICAgICAgICB0aGlzLmwoJ0V4cG9ydCcpLFxyXG4gICAgICAgICAgJy9hc3NldHMvaW1hZ2VzL2V4cG9ydC5zdmcnLFxyXG4gICAgICAgICAgdGhpcy5leHBvcnRcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGhpcy5lbmFibGVBY3Rpb25zKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5zdXJ2ZXkuc3RhdHVzSXRlbUlELnRvTG9jYWxlTG93ZXJDYXNlKCkgPT1cclxuICAgICAgICAgIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fRHJhZnQudG9Mb2NhbGVMb3dlckNhc2UoKSB8fFxyXG4gICAgICAgICAgdGhpcy5zdXJ2ZXkuc3RhdHVzSXRlbUlELnRvTG9jYWxlTG93ZXJDYXNlKCkgPT1cclxuICAgICAgICAgIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fVXBjb21pbmcudG9Mb2NhbGVMb3dlckNhc2UoKVxyXG4gICAgICAgIClcclxuICAgICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQWN0aW9uSXRlbShcclxuICAgICAgICAgICAgICB0aGlzLmwoJ0VkaXQnKSxcclxuICAgICAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmcnLFxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0VkaXRNb2RhbFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnN1cnZleS50b3RhbFF1ZXN0aW9uQ291bnQgPiAwKVxyXG4gICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0oXHJcbiAgICAgICAgICAgIHRoaXMubCgnUHJldmlldycpLFxyXG4gICAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvdmlld3Muc3ZnJyxcclxuICAgICAgICAgICAgdGhpcy5wcmV2aWV3U3VydmV5XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PVxyXG4gICAgICAgIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fUHVibGlzaGVkLnRvTG9jYWxlTG93ZXJDYXNlKClcclxuICAgICAgKVxyXG4gICAgICAgIHRoaXMuY2FuVGFrZVN1cnZleSA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZUFjdGlvbnMpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PVxyXG4gICAgICAgICAgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9EcmFmdC50b0xvY2FsZUxvd2VyQ2FzZSgpIHx8XHJcbiAgICAgICAgICB0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PVxyXG4gICAgICAgICAgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9DbG9zZWQudG9Mb2NhbGVMb3dlckNhc2UoKVxyXG4gICAgICAgIClcclxuICAgICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQWN0aW9uSXRlbShcclxuICAgICAgICAgICAgICB0aGlzLmwoJ1B1Ymxpc2gnKSxcclxuICAgICAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvU3VibWl0LnN2ZycsXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93UHVibGlzaE1vZGFsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuRHJvcGRvd25BY3Rpb25JdGVtcy5wdXNoKFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25BY3Rpb25JdGVtKFxyXG4gICAgICAgICAgICAgIHRoaXMubCgnVW5QdWJsaXNoJyksXHJcbiAgICAgICAgICAgICAgJy9hc3NldHMvaW1hZ2VzL3VubGluay5zdmcnLFxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1VuUHVibGlzaE1vZGFsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5FTiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuaXNDdXJyZW50TGFuZ3VhZ2VFbmdsaXNoKCk7XHJcbiAgICAgIHRoaXMubG9hZFF1ZXN0aW9uU2VjdGlvbigpO1xyXG4gICAgICB0aGlzLmxvYWRTdWJtaXNzaW9uU2VjdGlvbigpO1xyXG4gICAgICB0aGlzLnBhZ2VUaXRsZSA9IHRoaXMuc3VydmV5LmxvY2FsaXplZFRpdGxlO1xyXG4gICAgICB0aGlzLnVwZGF0ZVBhZ2VUaXRsZSh0aGlzLnN1cnZleS5sb2NhbGl6ZWRUaXRsZSk7XHJcbiAgICAgIHRoaXMubG9hZEluZm8gPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNob3dFZGl0TW9kYWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmVkaXRNb2RhbC5zaG93RWRpdE1vZGFsKHRoaXMuc3VydmV5SUQpO1xyXG4gIH07XHJcbiAgc2hvd0RlbGV0ZU1vZGFsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd0RlbGV0ZU1vZGFsKHRoaXMuc3VydmV5SUQpO1xyXG4gIH07XHJcbiAgc2hvd0VkaXRRdWVzdGlvbk1vZGFsKGlkLCBpc1ZpZXdPbmx5KSB7XHJcbiAgICB0aGlzLmVkaXRRdWVzdGlvbk1vZGFsLmVkaXRNb2RhbChcclxuICAgICAgaWQsXHJcbiAgICAgIHRoaXMuc3VydmV5LmF1ZGllbmNlSXRlbUlELFxyXG4gICAgICBpc1ZpZXdPbmx5XHJcbiAgICApO1xyXG4gIH1cclxuICBzaG93QWRkUXVlc3Rpb25Nb2RhbCgpIHtcclxuICAgIHRoaXMuQWRkUXVlc3Rpb25Db21wb25lbnQuYWRkTW9kYWwoXHJcbiAgICAgIHRoaXMuc3VydmV5SUQsXHJcbiAgICAgIHRoaXMuc3VydmV5LmF1ZGllbmNlSXRlbUlEXHJcbiAgICApO1xyXG4gIH1cclxuICBzaG93RGVsZXRlUXVlc3Rpb25Nb2RhbCA9IChpZCkgPT4ge1xyXG4gICAgdGhpcy5kZWxldGVRdWVzdGlvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93RGVsZXRlTW9kYWwoaWQpO1xyXG4gIH07XHJcbiAgc2hvd1B1Ymxpc2hNb2RhbCA9ICgpID0+IHtcclxuICAgIHRoaXMuYWRkUHVibGlzaE1vZGFsLnB1Ymxpc2hNb2RhbCh0aGlzLnN1cnZleUlELCB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0KTtcclxuICB9O1xyXG4gIHNob3dVblB1Ymxpc2hNb2RhbCA9ICgpID0+IHtcclxuICAgIHRoaXMuYWRkVW5QdWJsaXNoTW9kYWwuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKHRoaXMuc3VydmV5SUQpO1xyXG4gIH07XHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoXHJcbiAgICAgIHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQsXHJcbiAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXHJcbiAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxyXG4gICAgKTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0W2luZGV4XS5kaXNwbGF5T3JkZXIgPSBpbmRleCArIDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1cnZleVF1ZXN0aW9uU2VydmljZVxyXG4gICAgICAudXBkYXRlRGlzcGxheU9yZGVyKHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBwcmV2aWV3U3VydmV5ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcbiAgICAgIFsnLi4vLi4vaW5mby9wcmV2aWV3JywgdGhpcy5zdXJ2ZXlJRCwgdGhpcy5zdXJ2ZXkuYXVkaWVuY2VJdGVtSURdLFxyXG4gICAgICB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfVxyXG4gICAgKTtcclxuICB9O1xyXG4gIHRha2VTdXJ2ZXkgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLy4uL2luZm8vc3VibWlzc2lvbicsIHRoaXMuc3VydmV5SURdLCB7XHJcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBnZXRTdGF0dXMoc3RhdHVzKSB7XHJcbiAgICB2YXIgU3RhdHVzZXMgPSAnJztcclxuICAgIHN3aXRjaCAoc3RhdHVzLnRvTG9jYWxlTG93ZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX0RyYWZ0LnRvTG9jYWxlTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgU3RhdHVzZXMgPSAnYmFkZ2Utc2Vjb25kYXJ5JztcclxuICAgICAgICB0aGlzLmNhbkVkaXRRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5EZWxldGVRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5BZGRRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9DbG9zZWQudG9Mb2NhbGVMb3dlckNhc2UoKTpcclxuICAgICAgICBTdGF0dXNlcyA9ICdiYWRnZS1kYW5nZXInO1xyXG4gICAgICAgIHRoaXMuY2FuRWRpdFF1ZXN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5EZWxldGVRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5BZGRRdWVzdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX1B1Ymxpc2hlZC50b0xvY2FsZUxvd2VyQ2FzZSgpOlxyXG4gICAgICAgIFN0YXR1c2VzID0gJ2JhZGdlLXN1Y2Nlc3MnO1xyXG4gICAgICAgIHRoaXMuY2FuRWRpdFF1ZXN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5EZWxldGVRdWVzdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuQWRkUXVlc3Rpb24gPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX1VwY29taW5nLnRvTG9jYWxlTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgU3RhdHVzZXMgPSAnYmFkZ2Utc3VjY2Vzcyc7XHJcbiAgICAgICAgdGhpcy5jYW5FZGl0UXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuRGVsZXRlUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuQWRkUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBTdGF0dXNlcztcclxuICB9XHJcblxyXG4gIGxvYWRRdWVzdGlvblNlY3Rpb24oKSB7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLk5hbWUgPSAnU2VhcmNoVGV4dEJveCc7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuVHJpbVRleHRPbkNoYW5nZSA9IHRydWU7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlBsYWNlaG9sZGVyID0gdGhpcy5sKCdTZWFyY2gnKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuRXh0cmFDbGFzc2VzID1cclxuICAgICAgJ2Zvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZm9ybS1jb250cm9sLXNvbGlkIHNlYXJjaC1ib3gnO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5JY29uID0gJy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvc2VhcmNoLnN2Zyc7XHJcblxyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zLk5hbWUgPSAnU3VydmV5SUQnO1xyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuVmFsdWUgPSB0aGlzLnN1cnZleUlEO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSB0aGlzLlN1cnZleUlET3B0aW9ucy5OYW1lO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gJ1N1cnZleUlEJztcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleUlERmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3g7XHJcblxyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMuUGFnZVNpemUgPSAxMDAwO1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMuRGlzYWJsZUJsb2NrVUkgPSB0cnVlO1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMuQWN0aW9uUG9zdFVSTCA9XHJcbiAgICAgIHRoaXMuYXBpUXVlc3Rpb25VUkwgKyAnR2V0QWxsUXVlc3Rpb25zJztcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zLkZpbHRlcnMgPSBbdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlcl07XHJcbiAgfVxyXG4gIHNldFF1ZXN0aW9uTGlzdGluZ1Jlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0T3JpZ2luYWwgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICBsZXQgb3ZlcnZpZXdRdWVzdGlvbnMgPSB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0T3JpZ2luYWwuZmlsdGVyKFxyXG4gICAgICAoaXRlbSkgPT5cclxuICAgICAgICBpdGVtLnF1ZXN0aW9uVHlwZUl0ZW1JRCA9PSBTdXJ2ZXlPcHRpb25UeXBlLlJhZGlvQnV0dG9uIHx8XHJcbiAgICAgICAgaXRlbS5xdWVzdGlvblR5cGVJdGVtSUQgPT0gU3VydmV5T3B0aW9uVHlwZS5TaW5nbGVTZWxlY3QgfHxcclxuICAgICAgICBpdGVtLnF1ZXN0aW9uVHlwZUl0ZW1JRCA9PSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0XHJcbiAgICApO1xyXG4gICAgaWYgKG92ZXJ2aWV3UXVlc3Rpb25zLmxlbmd0aCA+IDApIHRoaXMubG9hZFN1cnZleU92ZXJ2aWV3KCk7XHJcbiAgfVxyXG5cclxuICBvblN1Y2Nlc3NIYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmRVcGRhdGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gICAgdGhpcy5tYXN0ZXJMYXlvdXRTZXJ2aWNlLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gIH07XHJcblxyXG4gIG9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKFxyXG4gICAgICB0aGlzLmwoJ1JlY29yZERlbGV0ZWQnKSxcclxuICAgICAgbnVsbCxcclxuICAgICAgbnVsbCxcclxuICAgICAgZmFsc2VcclxuICAgICk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLy4uLyddLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfSk7XHJcbiAgfTtcclxuXHJcbiAgb25TdWNjZXNzQWRkUXVlc3Rpb25IYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmRBZGRlZCcpLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBmYWxzZVxyXG4gICAgKTtcclxuICAgIHRoaXMubWFzdGVyTGF5b3V0U2VydmljZS5yZWxvYWRDb21wb25lbnQoKTtcclxuICB9O1xyXG4gIG9uU3VjY2Vzc0VkaXRRdWVzdGlvbkhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKFxyXG4gICAgICB0aGlzLmwoJ1JlY29yZFVwZGF0ZWQnKSxcclxuICAgICAgbnVsbCxcclxuICAgICAgbnVsbCxcclxuICAgICAgZmFsc2VcclxuICAgICk7XHJcbiAgICB0aGlzLm1hc3RlckxheW91dFNlcnZpY2UucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgfTtcclxuXHJcbiAgb25TdWNjZXNzRGVsZXRlUXVlc3Rpb25IYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmREZWxldGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gICAgdGhpcy5tYXN0ZXJMYXlvdXRTZXJ2aWNlLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gIH07XHJcblxyXG4gIHNob3dEZWxldGVTdWJtaXNzaW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMuZGVsZXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93RGVsZXRlTW9kYWwoaWQpO1xyXG4gIH07XHJcbiAgc2hvd0VsaW1pbmF0ZVN1Ym1pc3Npb25Nb2RhbCA9IChpZCkgPT4ge1xyXG4gICAgdGhpcy5lbGltaW5hdGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dFbGltaW5hdGVNb2RhbChpZCk7XHJcbiAgfTtcclxuICBzaG93VW5FbGltaW5hdGVTdWJtaXNzaW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMudW5FbGltaW5hdGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dVbkVsaW1pbmF0ZU1vZGFsKGlkKTtcclxuICB9O1xyXG4gIG9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXJTdWJtaXNzaW9uID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmREZWxldGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gICAgdGhpcy5sb2FkU3VibWlzc2lvblNlY3Rpb24oKTtcclxuICB9O1xyXG4gIGxvYWRTdWJtaXNzaW9uU2VjdGlvbigpIHtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuTmFtZSA9ICdTZWFyY2hUZXh0Qm94JztcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5UcmltVGV4dE9uQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuUGxhY2Vob2xkZXIgPSB0aGlzLmwoJ1NlYXJjaCcpO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5FeHRyYUNsYXNzZXMgPVxyXG4gICAgICAnZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBmb3JtLWNvbnRyb2wtc29saWQgc2VhcmNoLWJveCc7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkljb24gPSAnLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9zZWFyY2guc3ZnJztcclxuXHJcbiAgICB0aGlzLnNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID1cclxuICAgICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5OYW1lO1xyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gJ1NlYXJjaFRleHQnO1xyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuTmFtZSA9ICdTdXJ2ZXlJRCc7XHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucy5WYWx1ZSA9IHRoaXMuc3VydmV5SUQ7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID1cclxuICAgICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuTmFtZTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSAnU3VydmV5SUQnO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94O1xyXG5cclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uT3B0aW9ucy5QYWdlU2l6ZSA9IDEwO1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uT3B0aW9ucy5EaXNhYmxlQmxvY2tVSSA9IHRydWU7XHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zLkFjdGlvblBvc3RVUkwgPVxyXG4gICAgICB0aGlzLnN1cnZleVNlcnZpY2UuYXBpVVJMICsgJ0dldEFsbFN1cnZleVN1Ym1pc3Npb24nO1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uT3B0aW9ucy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcclxuICAgICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5OYW1lLFxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuRmlsdGVycyA9IFtcclxuICAgICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIsXHJcbiAgICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIsXHJcbiAgICBdO1xyXG4gIH1cclxuICBzZXRTdWJtaXNzaW9uTGlzdGluZ1Jlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvblJlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuc2hvd1N1Ym1pc3Npb25QYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG4gIGxvYWRTdXJ2ZXlPdmVydmlldygpIHtcclxuICAgIHRoaXMuc3VydmV5U2VydmljZS5nZXRTdXJ2ZXlPdmVydmlldyh0aGlzLnN1cnZleUlEKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uT3ZlcnZpZXdSZXN1bHQgPSByZXMgYXMgYW55O1xyXG4gICAgICB0aGlzLnNob3dPdmVydmlldyA9IHRydWU7XHJcbiAgICAgIHRoaXMubG9hZENoYXJ0KHRoaXMucXVlc3Rpb25PdmVydmlld1Jlc3VsdFswXSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGV4cG9ydCA9ICgpID0+IHtcclxuICAgIHRoaXMuc3VydmV5U2VydmljZS5leHBvcnQodGhpcy5zdXJ2ZXlJRCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5kb3dubG9hZChyZXN1bHQgYXMgYW55IGFzIEJsb2IsIHRoaXMucGFnZVRpdGxlICsgJy54bHN4Jyk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hJblF1ZXN0aW9uTGlzdCh2YWx1ZSkge1xyXG4gICAgaWYgKHZhbHVlKVxyXG4gICAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0ID0gdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsLmZpbHRlcihcclxuICAgICAgICAoaXRlbSkgPT4gaXRlbS5sb2NhbGl6ZWRUZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgKTtcclxuICAgIGVsc2UgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdCA9IHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbDtcclxuICB9XHJcbn1cclxuIiwiPCEtLXRvb2xiYXItLT5cclxuPGRpdiAqbmdJZj1cImxvYWRJbmZvXCI+XHJcbiAgPGJic2YtcGFnZS1oZWFkZXItY29tcG9uZW50IFtvcHRpb25zXT1cInBhZ2VIZWFkZXJPcHRpb25zXCI+PC9iYnNmLXBhZ2UtaGVhZGVyLWNvbXBvbmVudD5cclxuPC9kaXY+XHJcbjwhLS1lbmQgdG9vbGJhci0tPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLXh4bFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJpbmZvLWNvbnRhaW5lclwiICpuZ0lmPVwibG9hZEluZm9cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLW1hcmdpbi1ib3R0b21cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmVyeS1kYXRlIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ib3hlcyBhbGlnbi1pdGVtcy1iYXNlbGluZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IG5nYlRvb2x0aXA9XCJ7e2woJ0RhdGUnKX19XCIgY2xhc3M9XCJpY29uLWJveFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2NhbGVuZGFyLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWNvdW50ZXItdGl0bGVcIiAqbmdJZj1cInN1cnZleS5zdGFydERhdGU9PW51bGxcIj5cclxuICAgICAgICAgICAgICAgIHt7bCgnTm90U3RhcnRlZFlldCcpfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdXJ2ZXktY291bnRlci10aXRsZSBkLWZsZXggZmxleC1zdGFja1wiICpuZ0lmPVwic3VydmV5LnN0YXJ0RGF0ZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAge3tzdXJ2ZXkuc3RhcnREYXRlIHxzdXJ2ZXlEYXRlfX0gLSB7e3N1cnZleS5lbmREYXRlIT1udWxsPyhzdXJ2ZXkuZW5kRGF0ZXxzdXJ2ZXlEYXRlKTpcIlwifX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHRcIiAqbmdJZj1cInN1cnZleS5lbmREYXRlPT1udWxsXCI+e3tsKCdIYXNOb0VuZCcpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0XCIgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzKHN1cnZleS5zdGF0dXNJdGVtSUQpXCI+e3tzdXJ2ZXkubG9jYWxpemVkU3RhdHVzfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBuZ2JUb29sdGlwPVwie3tsKCdBdWRpZW5jZScpfX1cIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0IG14LTJcIj57e3N1cnZleS5sb2NhbGl6ZWRBdWRpZW5jZX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBjYXJkLWRhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggKm5nSWY9XCJjYW5UYWtlU3VydmV5JiYgKHN1cnZleS5hdWRpZW5jZUl0ZW1JRD09QXVkaWVuY2VUeXBlRW51bS5JbnRlcm5hbHx8c3VydmV5LmF1ZGllbmNlSXRlbUlEPT1BdWRpZW5jZVR5cGVFbnVtLkJvdGgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiVGV4dEJveFdpdGhJbnRlcm5hbFVSTFwiIFtncm91cF09XCJ1cmxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCAqbmdJZj1cImNhblRha2VTdXJ2ZXkmJiAoc3VydmV5LmF1ZGllbmNlSXRlbUlEPT1BdWRpZW5jZVR5cGVFbnVtLkV4dGVybmFsfHxzdXJ2ZXkuYXVkaWVuY2VJdGVtSUQ9PUF1ZGllbmNlVHlwZUVudW0uQm90aClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJUZXh0Qm94V2l0aEV4dGVybmFsVVJMXCIgW2dyb3VwXT1cInVybEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxwIGNsYXNzPVwiY2FyZC1kZXNjcmlwdGlvblwiICpuZ0lmPVwic3VydmV5LmxvY2FsaXplZERlc2NcIj5cclxuICAgICAgICB7e3N1cnZleS5sb2NhbGl6ZWREZXNjfX1cclxuICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1tYXJnaW4tYm90dG9tXCI+XHJcbiAgICAgIDx1bCBuZ2JOYXYgI25hdj1cIm5nYk5hdlwiIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMgbmF2LWN1c3RvbVwiPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW1cIiBbZGVzdHJveU9uSGlkZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgbmdiTmF2TGluaz5cclxuICAgICAgICAgICAgPGg0PlxyXG4gICAgICAgICAgICAgIHt7bCgnUXVlc3Rpb25zJyl9fVxyXG4gICAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWluZm9cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFicy1zZWFyY2ggcGFnZS1zdWJoZWFkZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiU2VhcmNoVGV4dEJveE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1F1ZXN0aW9uRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPbkNoYW5nZSk9XCJzZWFyY2hJblF1ZXN0aW9uTGlzdCgkZXZlbnQpXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN1cnZleUlET3B0aW9uc1wiIFtncm91cF09XCJmaWx0ZXJzUXVlc3Rpb25Gb3JtXCIgaGlkZGVuPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJjYW5BZGRRdWVzdGlvbiYmZW5hYmxlQWN0aW9uc1wiIGNsYXNzPVwiYnRuIGJ0bi1icmFuZCBidG4tc20gc3ViaGVhZGVyLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93QWRkUXVlc3Rpb25Nb2RhbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7bCgnQWRkJyl9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYk5hdkNvbnRlbnQgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uLWluZm9cIiBbY2RrRHJhZ0Rpc2FibGVkXT1cImNhblRha2VTdXJ2ZXlcIiBjZGtEcmFnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFnaW5nUXVlc3Rpb25SZXN1bHQ7IGxldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMjVweCBtZS00XCIgY2RrRHJhZ0hhbmRsZSAqbmdJZj1cIiFjYW5UYWtlU3VydmV5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTdcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9yZW9yZGVyLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtbGlzdGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnVHlwZScpfX1cIj57e2l0ZW0ubG9jYWxpemVkUXVlc3Rpb25UeXBlSXRlbX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnQXVkaWVuY2UnKX19XCI+e3tpdGVtLmxvY2FsaXplZEF1ZGllbmNlVHlwZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtYnJhbmQtbGlnaHQgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmlzUmVsYXRlZFRvU3VydmV5UXVlc3Rpb25cIj57e2woJ0xpbmtlZCcpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBteC0yXCIgKm5nSWY9XCIhaXRlbS5pc1Zpc2libGVcIiBuZ2JUb29sdGlwPVwie3tsKCdOb3RWaXNpYmxlJyl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsKFwiTm90VmlzaWJsZVwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiICpuZ0lmPVwiZW5hYmxlQWN0aW9uc1wiIGNsYXNzPVwiZHJvcGRvd24tY3VzdG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiRU4gPyAnYm90dG9tLXJpZ2h0JyA6ICdib3R0b20tbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlLWN1c3RvbSBidG4gYnRuLWNsZWFyXCIgbmdiRHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2NhcmQtZHJvcGRvd24uc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgY2xhc3M9XCJkcm9wZG93bi1tZW51LWN1c3RvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIShjYW5FZGl0UXVlc3Rpb24mJmNhbkRlbGV0ZVF1ZXN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0UXVlc3Rpb25Nb2RhbChpdGVtLmlEX0dVSUQsdHJ1ZSlcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvaW5mby5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bChcIkRldGFpbHNcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjYW5FZGl0UXVlc3Rpb25cIiAoY2xpY2spPVwic2hvd0VkaXRRdWVzdGlvbk1vZGFsKGl0ZW0uaURfR1VJRCxmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGljayB0eXBlPVwiYnV0dG9uXCIgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bChcIkVkaXRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJjYW5EZWxldGVRdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVRdWVzdGlvbk1vZGFsKGl0ZW0uaURfR1VJRClcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZydcIj48L3NwYW4+IHt7bChcIkRlbGV0ZVwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXktY291bnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWNvdW50ZXItdGl0bGVcIj57e2l0ZW0ubG9jYWxpemVkVGV4dH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtYnJhbmQgYmFkZ2Utc3F1YXJlIG1zLTIgbWUtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnU2NvcmUnKX19XCI+e3tpdGVtLnRvdGFsU2NvcmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0UXVlc3Rpb25MaXN0aW5nUmVzdWx0KCRldmVudClcIiBbb3B0aW9uc109XCJwYWdpbmdRdWVzdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJmaWx0ZXJzUXVlc3Rpb25Gb3JtXCIgI3BhZ2luZ1F1ZXN0aW9uVmlld0VsZW1lbnQ+PC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhcHAtbm8tcmVzdWx0cyAqbmdJZj1cInBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+PC9hcHAtbm8tcmVzdWx0cz5cclxuXHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbVwiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBuZ2JOYXZMaW5rPlxyXG4gICAgICAgICAgICA8aDQ+XHJcbiAgICAgICAgICAgICAge3tsKCdTdWJtaXNzaW9ucycpfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbmZvXCIgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFicy1zZWFyY2ggcGFnZS1zdWJoZWFkZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiU2VhcmNoVGV4dEJveE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1N1Ym1pc3Npb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN1cnZleUlET3B0aW9uc1wiIFtncm91cF09XCJmaWx0ZXJzU3VibWlzc2lvbkZvcm1cIiBoaWRkZW4+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tY29udGFpbmVyXCIgW2hpZGRlbl09XCJwYWdpbmdTdWJtaXNzaW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1jdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiB7e2woJ05hbWUnKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7bCgnRW1haWwnKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7bCgnVHlwZScpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3tsKCdDcmVhdGVkJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57e2woJ1Njb3JlJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRhYmxlLWFjdGlvblwiICAqbmdJZj1cImVuYWJsZUFjdGlvbnNcIj57e2woXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhZ2luZ1N1Ym1pc3Npb25SZXN1bHQ7IGxldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmUtY2xhbXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmxvY2FsaXplZE5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1kYW5nZXIgbXgtMlwiICpuZ0lmPVwiaXRlbS5pc0VsaW1pbmF0ZWQmJml0ZW0uYWxsb3dFbGltaW5hdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2woJ0VsaW1pbmF0ZWQnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmVtYWlsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmlzSW50ZXJuYWxVc2VyPyBsKCdJbnRlcm5hbFVzZXJzJyk6bCgnRXh0ZXJuYWxVc2VycycpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aXRlbS5jcmVhdGVkfHN1cnZleURhdGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0udG90YWxTY29yZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtYWN0aW9uXCIgICpuZ0lmPVwiZW5hYmxlQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYlRvb2x0aXA9XCJ7e2woJ1ByZXZpZXcnKX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnLi4vLi4vaW5mby9yZXN1bHQnLCBpdGVtLmlEX0dVSURdXCIgY2xhc3M9XCJidG4gYnRuLXNtIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2Fuc3dlcnMuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCIhaXRlbS5pc0VsaW1pbmF0ZWQmJml0ZW0uYWxsb3dFbGltaW5hdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3t0aGlzLmwoJ0VsaW1pbmF0ZUhpbnQnKX19XCIgY2xhc3M9XCJidG4gYnRuLXNtIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgKGNsaWNrKT1cInNob3dFbGltaW5hdGVTdWJtaXNzaW9uTW9kYWwoaXRlbS5pRF9HVUlEKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBwcmV2ZW50ZG91YmxlY2xpY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL3VubGluay5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIml0ZW0uaXNFbGltaW5hdGVkJiZpdGVtLmFsbG93RWxpbWluYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7dGhpcy5sKCdVbkVsaW1pbmF0ZScpfX1cIiBjbGFzcz1cImJ0biBidG4tc20gcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIiAoY2xpY2spPVwic2hvd1VuRWxpbWluYXRlU3VibWlzc2lvbk1vZGFsKGl0ZW0uaURfR1VJRClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcHJldmVudGRvdWJsZWNsaWNrIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2xpbmsuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiVG9vbHRpcD1cInt7bCgnRGVsZXRlJyl9fVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiIChjbGljayk9XCJzaG93RGVsZXRlU3VibWlzc2lvbk1vZGFsKGl0ZW0uaURfR1VJRClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcHJldmVudGRvdWJsZWNsaWNrIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFN1Ym1pc3Npb25MaXN0aW5nUmVzdWx0KCRldmVudClcIiBbb3B0aW9uc109XCJwYWdpbmdTdWJtaXNzaW9uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJmaWx0ZXJzU3VibWlzc2lvbkZvcm1cIiAjcGFnaW5nU3VibWlzc2lvblZpZXdFbGVtZW50PjwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLW5vLXJlc3VsdHMgKm5nSWY9XCJwYWdpbmdTdWJtaXNzaW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+PC9hcHAtbm8tcmVzdWx0cz5cclxuXHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbVwiICpuZ0lmPVwic2hvd092ZXJ2aWV3XCIgW2Rlc3Ryb3lPbkhpZGVdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIG5nYk5hdkxpbmsgKGNsaWNrKT1cImxvYWRTdXJ2ZXlPdmVydmlldygpXCI+XHJcbiAgICAgICAgICAgIDxoND5cclxuICAgICAgICAgICAgICB7e2woXCJPdmVydmlld1wiKSB9fVxyXG4gICAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWluZm9cIiBuZ2JOYXZDb250ZW50PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC10aXRsZVwiPiB7e2woXCJRdWVzdGlvbnNcIikgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgbmdiTmF2ICNuYXY9XCJuZ2JOYXZcIiBjbGFzcz1cIm5hdi1waWxscyBjdXN0b20tbmF2c1wiIG9yaWVudGF0aW9uPVwidmVydGljYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSBuZ2JOYXZJdGVtPVwie3tpdGVtLmxvY2FsaXplZFRpdGxlfX1cIiBbZGVzdHJveU9uSGlkZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbk92ZXJ2aWV3UmVzdWx0XCIgKGNsaWNrKT1cImxvYWRDaGFydChpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBuZ2JOYXZMaW5rPnt7aXRlbS5sb2NhbGl6ZWRUaXRsZX19PC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC10aXRsZVwiPnt7bChcIk92ZXJ2aWV3XCIpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImNoYXJ0ZGl2XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA0MDBweFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaWRlLWxvZ29cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtdGl0bGVcIj57e2woXCJTY29yZVwiKSB9fSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiY2hhcnRPdmVydmlld1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNDAwcHhcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZS1sb2dvXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuXHJcbiAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiAgPGFwcC1lZGl0LXN1cnZleSAjZWRpdE1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ0VsZW1lbnRcIiBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NIYW5kbGVyXCI+PC9hcHAtZWRpdC1zdXJ2ZXk+XHJcbiAgPGFwcC1kZWxldGUtc3VydmV5ICNkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nRWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXJcIj48L2FwcC1kZWxldGUtc3VydmV5PlxyXG4gIDxhcHAtYWRkLXF1ZXN0aW9uICNhZGRRdWVzdGlvbk1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1F1ZXN0aW9uRWxlbWVudFwiIFtvblN1Y2Nlc3NBZGRIYW5kbGVyXT1cIm9uU3VjY2Vzc0FkZFF1ZXN0aW9uSGFuZGxlclwiPjwvYXBwLWFkZC1xdWVzdGlvbj5cclxuICA8YXBwLWVkaXQtcXVlc3Rpb24gI2VkaXRRdWVzdGlvbk1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1F1ZXN0aW9uRWxlbWVudFwiIFtvblN1Y2Nlc3NFZGl0SGFuZGxlcl09XCJvblN1Y2Nlc3NFZGl0UXVlc3Rpb25IYW5kbGVyXCI+PC9hcHAtZWRpdC1xdWVzdGlvbj5cclxuICA8YXBwLWRlbGV0ZS1xdWVzdGlvbiAjZGVsZXRlUXVlc3Rpb25Nb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdRdWVzdGlvbkVsZW1lbnRcIiBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NEZWxldGVRdWVzdGlvbkhhbmRsZXJcIj48L2FwcC1kZWxldGUtcXVlc3Rpb24+XHJcbiAgPGFwcC1wdWJsaXNoLXN1cnZleSAjYWRkUHVibGlzaE1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ0VsZW1lbnRcIiBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NIYW5kbGVyXCIgKm5nSWY9XCJsb2FkSW5mb1wiIFtzaG93VG9nZ2xlXT1cInN1cnZleS5pc1Nob3dUb2dnbGVPZlNjb3JlUmVzdWx0QWZ0ZXJTdWJtaXNzaW9uXCI+XHJcbiAgPC9hcHAtcHVibGlzaC1zdXJ2ZXk+XHJcbiAgPGFwcC11bnB1Ymxpc2gtc3VydmV5ICNhZGRVblB1Ymxpc2hNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdFbGVtZW50XCIgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiPlxyXG4gIDwvYXBwLXVucHVibGlzaC1zdXJ2ZXk+XHJcbiAgPGFwcC1kZWxldGUtc3VibWlzc2lvbiAjZGVsZXRlU3VibWlzc2lvbk1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1N1Ym1pc3Npb25FbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXJTdWJtaXNzaW9uXCI+PC9hcHAtZGVsZXRlLXN1Ym1pc3Npb24+XHJcbiAgPGFwcC1lbGltaW5hdGUtc3VibWlzc2lvbiAjZWxpbWluYXRlTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nU3VibWlzc2lvbkVsZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiPjwvYXBwLWVsaW1pbmF0ZS1zdWJtaXNzaW9uPlxyXG4gIDxhcHAtdW5FbGltaW5hdGUtc3VibWlzc2lvbiAjdW5FbGltaW5hdGVNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdTdWJtaXNzaW9uRWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0hhbmRsZXJcIj48L2FwcC11bkVsaW1pbmF0ZS1zdWJtaXNzaW9uPlxyXG4iXX0=
|
|
1
|
+
import { FormGroup } from '@angular/forms';
|
|
2
|
+
import { Component, Inject, PLATFORM_ID, ViewChild, } from '@angular/core';
|
|
3
|
+
import { AppBaseComponent, BreadCrumb, ControlLayout, DropdownActionItem, FilterItem, FilterType, ForceDirection, InputType, PageHeaderOptions, PagingOptions, TextBoxOptions, } from '@bnsights/bbsf-controls';
|
|
4
|
+
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
5
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
6
|
+
import * as am5 from '@amcharts/amcharts5';
|
|
7
|
+
import * as am5xy from '@amcharts/amcharts5/xy';
|
|
8
|
+
import am5themes_Animated from '@amcharts/amcharts5/themes/Animated';
|
|
9
|
+
import { AudienceType, SurveyMode, SurveyOptionType, SurveyStatusEnum, } from '../../../Enums/Enums';
|
|
10
|
+
import { SurveyConfig } from '../../../models/SurveyModels/survey-utils';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/router";
|
|
13
|
+
import * as i2 from "@bnsights/bbsf-utilities";
|
|
14
|
+
import * as i3 from "../../../Services/survey.service";
|
|
15
|
+
import * as i4 from "../../../Services/survey-question.service";
|
|
16
|
+
import * as i5 from "@angular/common";
|
|
17
|
+
import * as i6 from "@bnsights/bbsf-controls";
|
|
18
|
+
import * as i7 from "@ng-bootstrap/ng-bootstrap";
|
|
19
|
+
import * as i8 from "@angular/cdk/drag-drop";
|
|
20
|
+
import * as i9 from "ng-inline-svg-2";
|
|
21
|
+
import * as i10 from "../edit-survey/edit-survey.component";
|
|
22
|
+
import * as i11 from "../delete-survey/delete-survey.component";
|
|
23
|
+
import * as i12 from "./edit-question/edit-question.component";
|
|
24
|
+
import * as i13 from "./delete-question/delete-question.component";
|
|
25
|
+
import * as i14 from "./add-question/add-question.component";
|
|
26
|
+
import * as i15 from "./publish-survey/publish-survey.component";
|
|
27
|
+
import * as i16 from "./unpublish-survey/unpublish-survey.component";
|
|
28
|
+
import * as i17 from "../submissions/delete-submission/delete-submission.component";
|
|
29
|
+
import * as i18 from "../submissions/eliminate-submission/eliminate-submission.component";
|
|
30
|
+
import * as i19 from "../submissions/uneliminate-submission/uneliminate-submission.component";
|
|
31
|
+
import * as i20 from "../../no-results/no-results.component";
|
|
32
|
+
import * as i21 from "../../../Pipes/survey-date.pipe";
|
|
33
|
+
export class SurveyInfoComponent extends AppBaseComponent {
|
|
34
|
+
constructor(injector, platformId, zone, router, masterLayoutService, surveyService, surveyQuestionService, activatedRoute) {
|
|
35
|
+
super(injector);
|
|
36
|
+
this.injector = injector;
|
|
37
|
+
this.platformId = platformId;
|
|
38
|
+
this.zone = zone;
|
|
39
|
+
this.router = router;
|
|
40
|
+
this.masterLayoutService = masterLayoutService;
|
|
41
|
+
this.surveyService = surveyService;
|
|
42
|
+
this.surveyQuestionService = surveyQuestionService;
|
|
43
|
+
this.activatedRoute = activatedRoute;
|
|
44
|
+
this.surveyForm = new FormGroup({});
|
|
45
|
+
this.enableActions = false;
|
|
46
|
+
this.urlForm = new FormGroup({});
|
|
47
|
+
this.SearchTextBox = new FormGroup({});
|
|
48
|
+
this.loadInfo = false;
|
|
49
|
+
this.SurveyStatusEnum = SurveyStatusEnum;
|
|
50
|
+
this.AudienceTypeEnum = AudienceType;
|
|
51
|
+
this.surveyQuestions = [];
|
|
52
|
+
this.apiQuestionURL = this.surveyQuestionService.apiURL;
|
|
53
|
+
this.filtersQuestionForm = new FormGroup({});
|
|
54
|
+
this.canTakeSurvey = false;
|
|
55
|
+
this.pagingQuestionResult = [];
|
|
56
|
+
//Submission Section
|
|
57
|
+
this.filtersSubmissionForm = new FormGroup({});
|
|
58
|
+
this.pagingSubmissionResult = [];
|
|
59
|
+
this.showEditModal = () => {
|
|
60
|
+
this.editModal.showEditModal(this.surveyID);
|
|
61
|
+
};
|
|
62
|
+
this.showDeleteModal = () => {
|
|
63
|
+
this.deleteConfirmationModalControl.showDeleteModal(this.surveyID);
|
|
64
|
+
};
|
|
65
|
+
this.showDeleteQuestionModal = (id) => {
|
|
66
|
+
this.deleteQuestionConfirmationModalControl.showDeleteModal(id);
|
|
67
|
+
};
|
|
68
|
+
this.showPublishModal = () => {
|
|
69
|
+
this.addPublishModal.publishModal(this.surveyID, this.pagingQuestionResult);
|
|
70
|
+
};
|
|
71
|
+
this.showUnPublishModal = () => {
|
|
72
|
+
this.addUnPublishModal.showConfirmationModal(this.surveyID);
|
|
73
|
+
};
|
|
74
|
+
this.previewSurvey = () => {
|
|
75
|
+
this.router.navigate(['../../info/preview', this.surveyID, this.survey.audienceItemID], { relativeTo: this.activatedRoute });
|
|
76
|
+
};
|
|
77
|
+
this.takeSurvey = () => {
|
|
78
|
+
this.router.navigate(['../../info/submission', this.surveyID], {
|
|
79
|
+
relativeTo: this.activatedRoute,
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
this.onSuccessHandler = (success) => {
|
|
83
|
+
this.utilityService.notifySuccessMessage(this.l('RecordUpdated'), null, null, false);
|
|
84
|
+
this.masterLayoutService.reloadComponent();
|
|
85
|
+
};
|
|
86
|
+
this.onSuccessDeleteHandler = (success) => {
|
|
87
|
+
this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
|
|
88
|
+
this.router.navigate(['../../'], { relativeTo: this.activatedRoute });
|
|
89
|
+
};
|
|
90
|
+
this.onSuccessAddQuestionHandler = (success) => {
|
|
91
|
+
this.utilityService.notifySuccessMessage(this.l('RecordAdded'), null, null, false);
|
|
92
|
+
this.masterLayoutService.reloadComponent();
|
|
93
|
+
};
|
|
94
|
+
this.onSuccessEditQuestionHandler = (success) => {
|
|
95
|
+
this.utilityService.notifySuccessMessage(this.l('RecordUpdated'), null, null, false);
|
|
96
|
+
this.masterLayoutService.reloadComponent();
|
|
97
|
+
};
|
|
98
|
+
this.onSuccessDeleteQuestionHandler = (success) => {
|
|
99
|
+
this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
|
|
100
|
+
this.masterLayoutService.reloadComponent();
|
|
101
|
+
};
|
|
102
|
+
this.showDeleteSubmissionModal = (id) => {
|
|
103
|
+
this.deleteSubmissionConfirmationModalControl.showDeleteModal(id);
|
|
104
|
+
};
|
|
105
|
+
this.showEliminateSubmissionModal = (id) => {
|
|
106
|
+
this.eliminateSubmissionConfirmationModalControl.showEliminateModal(id);
|
|
107
|
+
};
|
|
108
|
+
this.showUnEliminateSubmissionModal = (id) => {
|
|
109
|
+
this.unEliminateSubmissionConfirmationModalControl.showUnEliminateModal(id);
|
|
110
|
+
};
|
|
111
|
+
this.onSuccessDeleteHandlerSubmission = (success) => {
|
|
112
|
+
this.utilityService.notifySuccessMessage(this.l('RecordDeleted'), null, null, false);
|
|
113
|
+
this.loadSubmissionSection();
|
|
114
|
+
};
|
|
115
|
+
this.export = () => {
|
|
116
|
+
this.surveyService.export(this.surveyID).subscribe((result) => {
|
|
117
|
+
this.download(result, this.pageTitle + '.xlsx');
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
this.router.routeReuseStrategy.shouldReuseRoute = () => false;
|
|
121
|
+
this.surveyID = this.activatedRoute.snapshot.params['id'];
|
|
122
|
+
}
|
|
123
|
+
// Run the function only in the browser
|
|
124
|
+
browserOnly(f) {
|
|
125
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
126
|
+
this.zone.runOutsideAngular(() => {
|
|
127
|
+
f();
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
ngAfterViewInit() { }
|
|
132
|
+
maybeDisposeRoot(divId) {
|
|
133
|
+
am5.array.each(am5.registry.rootElements, (root) => {
|
|
134
|
+
if (root) {
|
|
135
|
+
if (root.dom.id == divId) {
|
|
136
|
+
root.dispose();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
loadChart(item) {
|
|
142
|
+
// Chart code goes in here
|
|
143
|
+
this.browserOnly(() => {
|
|
144
|
+
let name = `chartdiv`;
|
|
145
|
+
this.maybeDisposeRoot(name);
|
|
146
|
+
let root = am5.Root.new(name);
|
|
147
|
+
root.setThemes([am5themes_Animated.new(root)]);
|
|
148
|
+
let chart = root.container.children.push(am5xy.XYChart.new(root, {
|
|
149
|
+
panX: false,
|
|
150
|
+
panY: false,
|
|
151
|
+
wheelX: 'none',
|
|
152
|
+
wheelY: 'none',
|
|
153
|
+
paddingBottom: 50,
|
|
154
|
+
paddingTop: 40,
|
|
155
|
+
layout: root.verticalLayout,
|
|
156
|
+
}));
|
|
157
|
+
// Define data
|
|
158
|
+
let data = item.options.map((value) => {
|
|
159
|
+
return {
|
|
160
|
+
name: value.localizedTitle,
|
|
161
|
+
value: value.numberOfSelectedTime,
|
|
162
|
+
};
|
|
163
|
+
});
|
|
164
|
+
// Create Y-axis
|
|
165
|
+
let yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {
|
|
166
|
+
baseValue: 0,
|
|
167
|
+
maxPrecision: 0,
|
|
168
|
+
min: 0,
|
|
169
|
+
extraTooltipPrecision: 100,
|
|
170
|
+
renderer: am5xy.AxisRendererY.new(root, {}),
|
|
171
|
+
}));
|
|
172
|
+
// Create X-Axis
|
|
173
|
+
let xAxis = chart.xAxes.push(am5xy.CategoryAxis.new(root, {
|
|
174
|
+
renderer: am5xy.AxisRendererX.new(root, {}),
|
|
175
|
+
categoryField: 'name',
|
|
176
|
+
}));
|
|
177
|
+
xAxis.data.setAll(data);
|
|
178
|
+
// Create series
|
|
179
|
+
let series1 = chart.series.push(am5xy.ColumnSeries.new(root, {
|
|
180
|
+
name: 'Question Options',
|
|
181
|
+
xAxis: xAxis,
|
|
182
|
+
yAxis: yAxis,
|
|
183
|
+
valueYField: 'value',
|
|
184
|
+
categoryXField: 'name',
|
|
185
|
+
}));
|
|
186
|
+
series1.data.setAll(data);
|
|
187
|
+
series1.set('fill', am5.color('#b68a35')); // set Series color to red
|
|
188
|
+
series1.set('stroke', am5.color('#b68a35')); // set Series color to red
|
|
189
|
+
// Add legend
|
|
190
|
+
let legend = chart.children.push(am5.Legend.new(root, {}));
|
|
191
|
+
legend.data.push(series1);
|
|
192
|
+
if (!this.EN) {
|
|
193
|
+
legend.labels.template.setAll({
|
|
194
|
+
textAlign: 'right',
|
|
195
|
+
x: 50,
|
|
196
|
+
});
|
|
197
|
+
legend.valueLabels.template.setAll({
|
|
198
|
+
textAlign: 'right',
|
|
199
|
+
paddingRight: 15,
|
|
200
|
+
});
|
|
201
|
+
legend.itemContainers.template.setAll({
|
|
202
|
+
reverseChildren: true,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
this.root = root;
|
|
206
|
+
});
|
|
207
|
+
// //chart overview
|
|
208
|
+
this.browserOnly(() => {
|
|
209
|
+
let nameOverView = `chartOverview`;
|
|
210
|
+
this.maybeDisposeRoot(nameOverView);
|
|
211
|
+
let root = am5.Root.new(nameOverView);
|
|
212
|
+
root.setThemes([am5themes_Animated.new(root)]);
|
|
213
|
+
let chart = root.container.children.push(am5xy.XYChart.new(root, {
|
|
214
|
+
panY: false,
|
|
215
|
+
layout: root.verticalLayout,
|
|
216
|
+
}));
|
|
217
|
+
// Define data
|
|
218
|
+
let data = [];
|
|
219
|
+
for (const key in item.results) {
|
|
220
|
+
if (Object.prototype.hasOwnProperty.call(item.results, key)) {
|
|
221
|
+
const value = item.results[key];
|
|
222
|
+
let object = {
|
|
223
|
+
category: '<=' + key,
|
|
224
|
+
value: value,
|
|
225
|
+
};
|
|
226
|
+
data.push(object);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// Create Y-axis
|
|
230
|
+
let yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, {
|
|
231
|
+
baseValue: 0,
|
|
232
|
+
maxPrecision: 0,
|
|
233
|
+
min: 0,
|
|
234
|
+
extraTooltipPrecision: 100,
|
|
235
|
+
renderer: am5xy.AxisRendererY.new(root, {}),
|
|
236
|
+
}));
|
|
237
|
+
// Create X-Axis
|
|
238
|
+
let xAxis = chart.xAxes.push(am5xy.CategoryAxis.new(root, {
|
|
239
|
+
renderer: am5xy.AxisRendererX.new(root, {}),
|
|
240
|
+
categoryField: 'category',
|
|
241
|
+
}));
|
|
242
|
+
xAxis.data.setAll(data);
|
|
243
|
+
// Create series
|
|
244
|
+
let series1 = chart.series.push(am5xy.ColumnSeries.new(root, {
|
|
245
|
+
name: 'Score',
|
|
246
|
+
xAxis: xAxis,
|
|
247
|
+
yAxis: yAxis,
|
|
248
|
+
valueYField: 'value',
|
|
249
|
+
categoryXField: 'category',
|
|
250
|
+
}));
|
|
251
|
+
series1.data.setAll(data);
|
|
252
|
+
series1.set('fill', am5.color('#b68a35')); // set Series color to red
|
|
253
|
+
series1.set('stroke', am5.color('#b68a35')); // set Series color to red
|
|
254
|
+
// Add legend
|
|
255
|
+
let legend = chart.children.push(am5.Legend.new(root, {}));
|
|
256
|
+
legend.data.setAll(chart.series.values);
|
|
257
|
+
if (!this.EN) {
|
|
258
|
+
legend.labels.template.setAll({
|
|
259
|
+
textAlign: 'right',
|
|
260
|
+
x: 50,
|
|
261
|
+
});
|
|
262
|
+
legend.valueLabels.template.setAll({
|
|
263
|
+
textAlign: 'right',
|
|
264
|
+
paddingRight: 15,
|
|
265
|
+
});
|
|
266
|
+
legend.itemContainers.template.setAll({
|
|
267
|
+
reverseChildren: true,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
this.root = root;
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
ngOnDestroy() {
|
|
274
|
+
// Clean up root element when the component is removed
|
|
275
|
+
this.browserOnly(() => {
|
|
276
|
+
if (this.root) {
|
|
277
|
+
this.root.dispose();
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
ngOnInit() {
|
|
282
|
+
if (SurveyConfig.surveyMode == SurveyMode.Survey_Full_Access)
|
|
283
|
+
this.enableActions = true;
|
|
284
|
+
this.surveyService.getInfo(this.surveyID).subscribe((result) => {
|
|
285
|
+
this.survey = result;
|
|
286
|
+
this.TextBoxWithExternalURL = new TextBoxOptions();
|
|
287
|
+
this.TextBoxWithExternalURL.Name = 'TextBoxWithExternalURL';
|
|
288
|
+
this.TextBoxWithExternalURL.LabelKey = 'External_URL';
|
|
289
|
+
this.TextBoxWithExternalURL.Type = InputType.Text;
|
|
290
|
+
this.TextBoxWithExternalURL.ViewType = ControlLayout.Vertical;
|
|
291
|
+
this.TextBoxWithExternalURL.ForceDirection = ForceDirection.English;
|
|
292
|
+
this.TextBoxWithExternalURL.EnableCopyToClipboard = true;
|
|
293
|
+
this.TextBoxWithExternalURL.Value = this.survey.externalURL;
|
|
294
|
+
this.TextBoxWithInternalURL = new TextBoxOptions();
|
|
295
|
+
this.TextBoxWithInternalURL.Name = 'TextBoxWithInternalURL';
|
|
296
|
+
this.TextBoxWithInternalURL.LabelKey = 'Internal_URL';
|
|
297
|
+
this.TextBoxWithInternalURL.Type = InputType.Text;
|
|
298
|
+
this.TextBoxWithInternalURL.ViewType = ControlLayout.Vertical;
|
|
299
|
+
this.TextBoxWithInternalURL.ForceDirection = ForceDirection.English;
|
|
300
|
+
this.TextBoxWithInternalURL.EnableCopyToClipboard = true;
|
|
301
|
+
this.TextBoxWithInternalURL.Value = this.survey.internalURL;
|
|
302
|
+
this.breadCrumb = [];
|
|
303
|
+
this.breadCrumb.push(new BreadCrumb(this.l('Home'), false, '/'), new BreadCrumb(this.l('Surveys_Header'), false, '../../'), new BreadCrumb(this.l('Survey_Details'), true));
|
|
304
|
+
this.pageHeaderOptions = new PageHeaderOptions();
|
|
305
|
+
this.pageHeaderOptions.TitleValue = this.survey.localizedTitle;
|
|
306
|
+
this.pageHeaderOptions.SearchTextBox.Active = false;
|
|
307
|
+
this.pageHeaderOptions.BreadCrumb.Active = true;
|
|
308
|
+
this.pageHeaderOptions.BreadCrumb.BreadCrumbItems = this.breadCrumb;
|
|
309
|
+
this.pageHeaderOptions.DropDownActions.Active = true;
|
|
310
|
+
if (this.enableActions)
|
|
311
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Delete'), '/assets/images/Trash.svg', this.showDeleteModal));
|
|
312
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Export'), '/assets/images/export.svg', this.export));
|
|
313
|
+
if (this.enableActions) {
|
|
314
|
+
if (this.survey.statusItemID.toLocaleLowerCase() ==
|
|
315
|
+
this.SurveyStatusEnum.ScoringTypeEnum_Draft.toLocaleLowerCase() ||
|
|
316
|
+
this.survey.statusItemID.toLocaleLowerCase() ==
|
|
317
|
+
this.SurveyStatusEnum.ScoringTypeEnum_Upcoming.toLocaleLowerCase())
|
|
318
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Edit'), '/assets/images/Edit.svg', this.showEditModal));
|
|
319
|
+
}
|
|
320
|
+
if (this.survey.totalQuestionCount > 0)
|
|
321
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Preview'), '/assets/images/views.svg', this.previewSurvey));
|
|
322
|
+
if (this.survey.statusItemID.toLocaleLowerCase() ==
|
|
323
|
+
this.SurveyStatusEnum.ScoringTypeEnum_Published.toLocaleLowerCase())
|
|
324
|
+
this.canTakeSurvey = true;
|
|
325
|
+
if (this.enableActions) {
|
|
326
|
+
if (this.survey.statusItemID.toLocaleLowerCase() ==
|
|
327
|
+
this.SurveyStatusEnum.ScoringTypeEnum_Draft.toLocaleLowerCase() ||
|
|
328
|
+
this.survey.statusItemID.toLocaleLowerCase() ==
|
|
329
|
+
this.SurveyStatusEnum.ScoringTypeEnum_Closed.toLocaleLowerCase())
|
|
330
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('Publish'), '/assets/images/Submit.svg', this.showPublishModal));
|
|
331
|
+
else
|
|
332
|
+
this.pageHeaderOptions.DropDownActions.DropdownActionItems.push(new DropdownActionItem(this.l('UnPublish'), '/assets/images/unlink.svg', this.showUnPublishModal));
|
|
333
|
+
}
|
|
334
|
+
this.EN = this.utilityService.isCurrentLanguageEnglish();
|
|
335
|
+
this.loadQuestionSection();
|
|
336
|
+
this.loadSubmissionSection();
|
|
337
|
+
this.pageTitle = this.survey.localizedTitle;
|
|
338
|
+
this.updatePageTitle(this.survey.localizedTitle);
|
|
339
|
+
this.loadInfo = true;
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
showEditQuestionModal(id, isViewOnly) {
|
|
343
|
+
this.editQuestionModal.editModal(id, this.survey.audienceItemID, isViewOnly);
|
|
344
|
+
}
|
|
345
|
+
showAddQuestionModal() {
|
|
346
|
+
this.AddQuestionComponent.addModal(this.surveyID, this.survey.audienceItemID);
|
|
347
|
+
}
|
|
348
|
+
drop(event) {
|
|
349
|
+
moveItemInArray(this.pagingQuestionResult, event.previousIndex, event.currentIndex);
|
|
350
|
+
for (let index = 0; index < this.pagingQuestionResult.length; index++) {
|
|
351
|
+
this.pagingQuestionResult[index].displayOrder = index + 1;
|
|
352
|
+
}
|
|
353
|
+
this.surveyQuestionService
|
|
354
|
+
.updateDisplayOrder(this.pagingQuestionResult)
|
|
355
|
+
.subscribe((e) => {
|
|
356
|
+
this.utilityService.stopBlockUI();
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
getStatus(status) {
|
|
360
|
+
var Statuses = '';
|
|
361
|
+
switch (status.toLocaleLowerCase()) {
|
|
362
|
+
case this.SurveyStatusEnum.ScoringTypeEnum_Draft.toLocaleLowerCase():
|
|
363
|
+
Statuses = 'badge-secondary';
|
|
364
|
+
this.canEditQuestion = true;
|
|
365
|
+
this.canDeleteQuestion = true;
|
|
366
|
+
this.canAddQuestion = true;
|
|
367
|
+
break;
|
|
368
|
+
case this.SurveyStatusEnum.ScoringTypeEnum_Closed.toLocaleLowerCase():
|
|
369
|
+
Statuses = 'badge-danger';
|
|
370
|
+
this.canEditQuestion = false;
|
|
371
|
+
this.canDeleteQuestion = true;
|
|
372
|
+
this.canAddQuestion = false;
|
|
373
|
+
break;
|
|
374
|
+
case this.SurveyStatusEnum.ScoringTypeEnum_Published.toLocaleLowerCase():
|
|
375
|
+
Statuses = 'badge-success';
|
|
376
|
+
this.canEditQuestion = false;
|
|
377
|
+
this.canDeleteQuestion = false;
|
|
378
|
+
this.canAddQuestion = false;
|
|
379
|
+
break;
|
|
380
|
+
case this.SurveyStatusEnum.ScoringTypeEnum_Upcoming.toLocaleLowerCase():
|
|
381
|
+
Statuses = 'badge-success';
|
|
382
|
+
this.canEditQuestion = true;
|
|
383
|
+
this.canDeleteQuestion = true;
|
|
384
|
+
this.canAddQuestion = true;
|
|
385
|
+
break;
|
|
386
|
+
default:
|
|
387
|
+
break;
|
|
388
|
+
}
|
|
389
|
+
return Statuses;
|
|
390
|
+
}
|
|
391
|
+
loadQuestionSection() {
|
|
392
|
+
this.SearchTextBoxOptions = new TextBoxOptions();
|
|
393
|
+
this.SearchTextBoxOptions.Name = 'SearchTextBox';
|
|
394
|
+
this.SearchTextBoxOptions.Type = InputType.Text;
|
|
395
|
+
this.SearchTextBoxOptions.TrimTextOnChange = true;
|
|
396
|
+
this.SearchTextBoxOptions.Placeholder = this.l('Search');
|
|
397
|
+
this.SearchTextBoxOptions.ExtraClasses =
|
|
398
|
+
'form-control form-control-sm form-control-solid search-box';
|
|
399
|
+
this.SearchTextBoxOptions.HideLabel = true;
|
|
400
|
+
this.SearchTextBoxOptions.Icon = '../../../assets/images/search.svg';
|
|
401
|
+
this.SurveyIDOptions = new TextBoxOptions();
|
|
402
|
+
this.SurveyIDOptions.Name = 'SurveyID';
|
|
403
|
+
this.SurveyIDOptions.Value = this.surveyID;
|
|
404
|
+
this.searchSurveyIDFilter = new FilterItem();
|
|
405
|
+
this.searchSurveyIDFilter.FormControlName = this.SurveyIDOptions.Name;
|
|
406
|
+
this.searchSurveyIDFilter.ActionParameterName = 'SurveyID';
|
|
407
|
+
this.searchSurveyIDFilter.IsFormControl = true;
|
|
408
|
+
this.searchSurveyIDFilter.FilterType = FilterType.TextBox;
|
|
409
|
+
this.pagingQuestionOptions = new PagingOptions();
|
|
410
|
+
this.pagingQuestionOptions.PageSize = 1000;
|
|
411
|
+
this.pagingQuestionOptions.DisableBlockUI = true;
|
|
412
|
+
this.pagingQuestionOptions.ActionPostURL =
|
|
413
|
+
this.apiQuestionURL + 'GetAllQuestions';
|
|
414
|
+
this.pagingQuestionOptions.Filters = [this.searchSurveyIDFilter];
|
|
415
|
+
}
|
|
416
|
+
setQuestionListingResult(result) {
|
|
417
|
+
this.pagingQuestionResult = result;
|
|
418
|
+
this.pagingQuestionResultOriginal = result;
|
|
419
|
+
this.showPageContent = true;
|
|
420
|
+
this.utilityService.stopBlockUI();
|
|
421
|
+
let overviewQuestions = this.pagingQuestionResultOriginal.filter((item) => item.questionTypeItemID == SurveyOptionType.RadioButton ||
|
|
422
|
+
item.questionTypeItemID == SurveyOptionType.SingleSelect ||
|
|
423
|
+
item.questionTypeItemID == SurveyOptionType.MultipleSelect);
|
|
424
|
+
if (overviewQuestions.length > 0)
|
|
425
|
+
this.loadSurveyOverview();
|
|
426
|
+
}
|
|
427
|
+
loadSubmissionSection() {
|
|
428
|
+
this.SearchTextBoxOptions = new TextBoxOptions();
|
|
429
|
+
this.SearchTextBoxOptions.Name = 'SearchTextBox';
|
|
430
|
+
this.SearchTextBoxOptions.Type = InputType.Text;
|
|
431
|
+
this.SearchTextBoxOptions.TrimTextOnChange = true;
|
|
432
|
+
this.SearchTextBoxOptions.Placeholder = this.l('Search');
|
|
433
|
+
this.SearchTextBoxOptions.ExtraClasses =
|
|
434
|
+
'form-control form-control-sm form-control-solid search-box';
|
|
435
|
+
this.SearchTextBoxOptions.HideLabel = true;
|
|
436
|
+
this.SearchTextBoxOptions.Icon = '../../../assets/images/search.svg';
|
|
437
|
+
this.searchSubmissionTextFilter = new FilterItem();
|
|
438
|
+
this.searchSubmissionTextFilter.FormControlName =
|
|
439
|
+
this.SearchTextBoxOptions.Name;
|
|
440
|
+
this.searchSubmissionTextFilter.ActionParameterName = 'SearchText';
|
|
441
|
+
this.searchSubmissionTextFilter.IsFormControl = true;
|
|
442
|
+
this.searchSubmissionTextFilter.FilterType = FilterType.TextBox;
|
|
443
|
+
this.SurveyIDOptions = new TextBoxOptions();
|
|
444
|
+
this.SurveyIDOptions.Name = 'SurveyID';
|
|
445
|
+
this.SurveyIDOptions.Value = this.surveyID;
|
|
446
|
+
this.searchSurveySubmissionIDFilter = new FilterItem();
|
|
447
|
+
this.searchSurveySubmissionIDFilter.FormControlName =
|
|
448
|
+
this.SurveyIDOptions.Name;
|
|
449
|
+
this.searchSurveySubmissionIDFilter.ActionParameterName = 'SurveyID';
|
|
450
|
+
this.searchSurveySubmissionIDFilter.IsFormControl = true;
|
|
451
|
+
this.searchSurveySubmissionIDFilter.FilterType = FilterType.TextBox;
|
|
452
|
+
this.pagingSubmissionOptions = new PagingOptions();
|
|
453
|
+
this.pagingSubmissionOptions.PageSize = 10;
|
|
454
|
+
this.pagingSubmissionOptions.DisableBlockUI = true;
|
|
455
|
+
this.pagingSubmissionOptions.ActionPostURL =
|
|
456
|
+
this.surveyService.apiURL + 'GetAllSurveySubmission';
|
|
457
|
+
this.pagingSubmissionOptions.OnKeyPressFiltersControlNames = [
|
|
458
|
+
this.SearchTextBoxOptions.Name,
|
|
459
|
+
];
|
|
460
|
+
this.pagingSubmissionOptions.Filters = [
|
|
461
|
+
this.searchSurveySubmissionIDFilter,
|
|
462
|
+
this.searchSubmissionTextFilter,
|
|
463
|
+
];
|
|
464
|
+
}
|
|
465
|
+
setSubmissionListingResult(result) {
|
|
466
|
+
this.pagingSubmissionResult = result;
|
|
467
|
+
this.showSubmissionPageContent = true;
|
|
468
|
+
this.utilityService.stopBlockUI();
|
|
469
|
+
}
|
|
470
|
+
loadSurveyOverview() {
|
|
471
|
+
this.surveyService.getSurveyOverview(this.surveyID).subscribe((res) => {
|
|
472
|
+
this.questionOverviewResult = res;
|
|
473
|
+
this.showOverview = true;
|
|
474
|
+
this.loadChart(this.questionOverviewResult[0]);
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
searchInQuestionList(value) {
|
|
478
|
+
if (value)
|
|
479
|
+
this.pagingQuestionResult = this.pagingQuestionResultOriginal.filter((item) => item.localizedText.toLowerCase().includes(value.toLowerCase()));
|
|
480
|
+
else
|
|
481
|
+
this.pagingQuestionResult = this.pagingQuestionResultOriginal;
|
|
482
|
+
}
|
|
483
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: SurveyInfoComponent, deps: [{ token: i0.Injector }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.Router }, { token: i2.MasterLayoutService }, { token: i3.SurveyService }, { token: i4.SurveyQuestionService }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
484
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: SurveyInfoComponent, selector: "app-survey-info", viewQueries: [{ propertyName: "pagingElement", first: true, predicate: ["pagingViewElement"], descendants: true }, { propertyName: "deleteConfirmationModalControl", first: true, predicate: ["deleteConfirmationModalControl"], descendants: true }, { propertyName: "editModal", first: true, predicate: ["editModal"], descendants: true }, { propertyName: "editQuestionModal", first: true, predicate: ["editQuestionModal"], descendants: true }, { propertyName: "deleteQuestionConfirmationModalControl", first: true, predicate: ["deleteQuestionModal"], descendants: true }, { propertyName: "AddQuestionComponent", first: true, predicate: ["addQuestionModal"], descendants: true }, { propertyName: "addPublishModal", first: true, predicate: ["addPublishModal"], descendants: true }, { propertyName: "addUnPublishModal", first: true, predicate: ["addUnPublishModal"], descendants: true }, { propertyName: "deleteSubmissionConfirmationModalControl", first: true, predicate: ["deleteSubmissionModal"], descendants: true }, { propertyName: "eliminateSubmissionConfirmationModalControl", first: true, predicate: ["eliminateModal"], descendants: true }, { propertyName: "unEliminateSubmissionConfirmationModalControl", first: true, predicate: ["unEliminateModal"], descendants: true }, { propertyName: "pagingQuestionElement", first: true, predicate: ["pagingQuestionViewElement"], descendants: true }, { propertyName: "pagingSubmissionElement", first: true, predicate: ["pagingSubmissionViewElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--toolbar-->\r\n<div *ngIf=\"loadInfo\">\r\n <bbsf-page-header-component [options]=\"pageHeaderOptions\"></bbsf-page-header-component>\r\n</div>\r\n<!--end toolbar-->\r\n<div class=\"container-xxl\">\r\n <div class=\"info-container\" *ngIf=\"loadInfo\">\r\n <div class=\"section-margin-bottom\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"survery-date border-0\">\r\n <div class=\"icon-boxes align-items-baseline\">\r\n <div ngbTooltip=\"{{l('Date')}}\" class=\"icon-box\">\r\n <div class=\"symbol\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/calendar.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <span class=\"survey-counter-title\" *ngIf=\"survey.startDate==null\">\r\n {{l('NotStartedYet')}}\r\n </span>\r\n <span class=\"survey-counter-title d-flex flex-stack\" *ngIf=\"survey.startDate!=null\">\r\n {{survey.startDate |surveyDate}} - {{survey.endDate!=null?(survey.endDate|surveyDate):\"\"}}\r\n <span class=\"badge badge-light\" *ngIf=\"survey.endDate==null\">{{l('HasNoEnd')}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <span class=\"badge badge-light\" [ngClass]=\"getStatus(survey.statusItemID)\">{{survey.localizedStatus}}</span>\r\n <span ngbTooltip=\"{{l('Audience')}}\" class=\"badge badge-light mx-2\">{{survey.localizedAudience}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row card-data\">\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.Internal||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithInternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.External||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithExternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <p class=\"card-description\" *ngIf=\"survey.localizedDesc\">\r\n {{survey.localizedDesc}}\r\n </p>\r\n </div>\r\n <div class=\"section-margin-bottom\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-custom\">\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Questions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\">\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersQuestionForm\"\r\n (OnChange)=\"searchInQuestionList($event)\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersQuestionForm\" hidden></BBSF-TextBox>\r\n <button type=\"button\" *ngIf=\"canAddQuestion&&enableActions\" class=\"btn btn-brand btn-sm subheader-btn\"\r\n (click)=\"showAddQuestionModal()\">\r\n {{l('Add')}}\r\n </button>\r\n </div>\r\n <div [hidden]=\"pagingQuestionResult.length == 0\">\r\n <div ngbNavContent cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"question-info\" [cdkDragDisabled]=\"canTakeSurvey\" cdkDrag\r\n *ngFor=\"let item of pagingQuestionResult; let i=index\">\r\n <div class=\"symbol symbol-25px me-4\" cdkDragHandle *ngIf=\"!canTakeSurvey\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-7\" [inlineSVG]=\"'/assets/images/reorder.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"card card-listing\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title\">\r\n <span class=\"badge badge-light\"\r\n ngbTooltip=\"{{l('Type')}}\">{{item.localizedQuestionTypeItem}}</span>\r\n <span class=\"badge badge-light mx-2\"\r\n ngbTooltip=\"{{l('Audience')}}\">{{item.localizedAudienceType}}</span>\r\n <span class=\"badge badge-brand-light mx-2\"\r\n *ngIf=\"item.isRelatedToSurveyQuestion\">{{l('Linked')}}</span>\r\n <span class=\"badge badge-light mx-2\" *ngIf=\"!item.isVisible\" ngbTooltip=\"{{l('NotVisible')}}\">\r\n {{l(\"NotVisible\")}}\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div ngbDropdown container=\"body\" *ngIf=\"enableActions\" class=\"dropdown-custom\"\r\n [placement]=\"EN ? 'bottom-right' : 'bottom-left'\">\r\n <button type=\"button\" class=\"dropdown-toggle-custom btn btn-clear\" ngbDropdownToggle>\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/card-dropdown.svg'\"></span>\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom\">\r\n <button *ngIf=\"!(canEditQuestion&&canDeleteQuestion)\"\r\n (click)=\"showEditQuestionModal(item.iD_GUID,true)\" apppreventdoubleclick type=\"button\"\r\n ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n {{l(\"Details\")}}\r\n </button>\r\n\r\n <button *ngIf=\"canEditQuestion\" (click)=\"showEditQuestionModal(item.iD_GUID,false)\"\r\n apppreventdoubleclick type=\"button\" ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n {{l(\"Edit\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"canDeleteQuestion\"\r\n (click)=\"showDeleteQuestionModal(item.iD_GUID)\" apppreventdoubleclick ngbDropdownItem\r\n class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/Trash.svg'\"></span> {{l(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"survey-counter\">\r\n <span class=\"survey-counter-title\">{{item.localizedText}}</span>\r\n <span class=\"badge badge-light-brand badge-square ms-2 me-0\"\r\n ngbTooltip=\"{{l('Score')}}\">{{item.totalScore}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setQuestionListingResult($event)\" [options]=\"pagingQuestionOptions\"\r\n [group]=\"filtersQuestionForm\" #pagingQuestionViewElement></BBSF-Paging>\r\n </div>\r\n </div>\r\n <app-no-results *ngIf=\"pagingQuestionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Submissions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersSubmissionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersSubmissionForm\" hidden></BBSF-TextBox>\r\n </div>\r\n <div class=\"info-container\" [hidden]=\"pagingSubmissionResult.length == 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-custom\">\r\n <thead>\r\n <tr class=\"table-header\">\r\n <th> {{l('Name')}}</th>\r\n <th>{{l('Email')}}</th>\r\n <th>{{l('Type')}}</th>\r\n <th>{{l('Created')}}</th>\r\n <th>{{l('Score')}}</th>\r\n <th class=\"table-action\" *ngIf=\"enableActions\">{{l(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of pagingSubmissionResult; let i=index\">\r\n <td>\r\n <span class=\"line-clamp-2\">\r\n {{item.localizedName}}\r\n <span class=\"badge badge-danger mx-2\" *ngIf=\"item.isEliminated&&item.allowElimination\">\r\n {{l('Eliminated')}}\r\n </span>\r\n </span>\r\n </td>\r\n <td>\r\n {{item.email}}\r\n </td>\r\n <td>\r\n <div class=\"badge badge-light\">\r\n {{item.isInternalUser? l('InternalUsers'):l('ExternalUsers')}}\r\n </div>\r\n </td>\r\n <td>{{item.created|surveyDate}}</td>\r\n <td>{{item.totalScore}}</td>\r\n <td class=\"table-action\" *ngIf=\"enableActions\">\r\n <button type=\"button\" ngbTooltip=\"{{l('Preview')}}\"\r\n [routerLink]=\"['../../info/result', item.iD_GUID]\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/answers.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"!item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('EliminateHint')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick\r\n [inlineSVG]=\"'/assets/images/unlink.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('UnEliminate')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showUnEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/link.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" ngbTooltip=\"{{l('Delete')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showDeleteSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/Trash.svg'\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setSubmissionListingResult($event)\" [options]=\"pagingSubmissionOptions\"\r\n [group]=\"filtersSubmissionForm\" #pagingSubmissionViewElement></BBSF-Paging>\r\n </div>\r\n <app-no-results *ngIf=\"pagingSubmissionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" *ngIf=\"showOverview\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink (click)=\"loadSurveyOverview()\">\r\n <h4>\r\n {{l(\"Overview\") }}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\"> {{l(\"Questions\") }}</div>\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-pills custom-navs\" orientation=\"vertical\">\r\n <li ngbNavItem=\"{{item.localizedTitle}}\" [destroyOnHide]=\"true\"\r\n *ngFor=\"let item of questionOverviewResult\" (click)=\"loadChart(item)\">\r\n <a ngbNavLink>{{item.localizedTitle}}</a>\r\n\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Overview\") }}</div>\r\n <div id=\"chartdiv\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Score\") }} </div>\r\n <div id=\"chartOverview\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <app-edit-survey #editModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\"></app-edit-survey>\r\n <app-delete-survey #deleteConfirmationModalControl [pagingElement]=\"pagingElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandler\"></app-delete-survey>\r\n <app-add-question #addQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessAddHandler]=\"onSuccessAddQuestionHandler\"></app-add-question>\r\n <app-edit-question #editQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessEditHandler]=\"onSuccessEditQuestionHandler\"></app-edit-question>\r\n <app-delete-question #deleteQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessHandler]=\"onSuccessDeleteQuestionHandler\"></app-delete-question>\r\n <app-publish-survey #addPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\" *ngIf=\"loadInfo\" [showToggle]=\"survey.isShowToggleOfScoreResultAfterSubmission\">\r\n </app-publish-survey>\r\n <app-unpublish-survey #addUnPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\">\r\n </app-unpublish-survey>\r\n <app-delete-submission #deleteSubmissionModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandlerSubmission\"></app-delete-submission>\r\n <app-eliminate-submission #eliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-eliminate-submission>\r\n <app-unEliminate-submission #unEliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-unEliminate-submission>\r\n", styles: [""], 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: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i6.PagingComponent, selector: "BBSF-Paging", inputs: ["options", "group"], outputs: ["Items"] }, { kind: "component", type: i6.PageHeaderComponentComponent, selector: "bbsf-page-header-component", inputs: ["group", "options"] }, { kind: "directive", type: i7.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i7.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i7.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i7.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i7.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "directive", type: i7.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i7.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i7.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i7.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i7.NgbNavLink, selector: "a[ngbNavLink]" }, { kind: "directive", type: i7.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i7.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "directive", type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i9.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["inlineSVG", "resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "setSVGAttributes", "removeSVGAttributes", "forceEvalStyles", "evalScripts", "fallbackImgUrl", "fallbackSVG", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { kind: "component", type: i10.EditSurveyComponent, selector: "app-edit-survey", inputs: ["pagingElement", "onSuccessHandler"] }, { kind: "component", type: i11.DeleteSurveyComponent, selector: "app-delete-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i12.EditQuestionComponent, selector: "app-edit-question", inputs: ["pagingElement", "onSuccessEditHandler"] }, { kind: "component", type: i13.DeleteQuestionComponent, selector: "app-delete-question", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i14.AddQuestionComponent, selector: "app-add-question", inputs: ["pagingElement", "onSuccessAddHandler"] }, { kind: "component", type: i15.PublishSurveyComponent, selector: "app-publish-survey", inputs: ["pagingElement", "showToggle", "onSuccessHandler"] }, { kind: "component", type: i16.UnPublishSurveyComponent, selector: "app-unpublish-survey", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i17.DeleteSubmissionComponent, selector: "app-delete-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i18.EliminateSubmissionComponent, selector: "app-eliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i19.UnEliminateSubmissionComponent, selector: "app-unEliminate-submission", inputs: ["onSuccessHandler", "pagingElement"] }, { kind: "component", type: i20.NoResultsComponent, selector: "app-no-results" }, { kind: "pipe", type: i21.SurveyDatePipe, name: "surveyDate" }] }); }
|
|
485
|
+
}
|
|
486
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: SurveyInfoComponent, decorators: [{
|
|
487
|
+
type: Component,
|
|
488
|
+
args: [{ selector: 'app-survey-info', template: "<!--toolbar-->\r\n<div *ngIf=\"loadInfo\">\r\n <bbsf-page-header-component [options]=\"pageHeaderOptions\"></bbsf-page-header-component>\r\n</div>\r\n<!--end toolbar-->\r\n<div class=\"container-xxl\">\r\n <div class=\"info-container\" *ngIf=\"loadInfo\">\r\n <div class=\"section-margin-bottom\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"survery-date border-0\">\r\n <div class=\"icon-boxes align-items-baseline\">\r\n <div ngbTooltip=\"{{l('Date')}}\" class=\"icon-box\">\r\n <div class=\"symbol\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/calendar.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <span class=\"survey-counter-title\" *ngIf=\"survey.startDate==null\">\r\n {{l('NotStartedYet')}}\r\n </span>\r\n <span class=\"survey-counter-title d-flex flex-stack\" *ngIf=\"survey.startDate!=null\">\r\n {{survey.startDate |surveyDate}} - {{survey.endDate!=null?(survey.endDate|surveyDate):\"\"}}\r\n <span class=\"badge badge-light\" *ngIf=\"survey.endDate==null\">{{l('HasNoEnd')}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <span class=\"badge badge-light\" [ngClass]=\"getStatus(survey.statusItemID)\">{{survey.localizedStatus}}</span>\r\n <span ngbTooltip=\"{{l('Audience')}}\" class=\"badge badge-light mx-2\">{{survey.localizedAudience}}</span>\r\n </div>\r\n </div>\r\n <div class=\"row card-data\">\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.Internal||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithInternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <BBSF-TextBox *ngIf=\"canTakeSurvey&& (survey.audienceItemID==AudienceTypeEnum.External||survey.audienceItemID==AudienceTypeEnum.Both)\"\r\n [options]=\"TextBoxWithExternalURL\" [group]=\"urlForm\"></BBSF-TextBox>\r\n </div>\r\n </div>\r\n <p class=\"card-description\" *ngIf=\"survey.localizedDesc\">\r\n {{survey.localizedDesc}}\r\n </p>\r\n </div>\r\n <div class=\"section-margin-bottom\">\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav nav-stretch nav-line-tabs nav-custom\">\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Questions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\">\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersQuestionForm\"\r\n (OnChange)=\"searchInQuestionList($event)\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersQuestionForm\" hidden></BBSF-TextBox>\r\n <button type=\"button\" *ngIf=\"canAddQuestion&&enableActions\" class=\"btn btn-brand btn-sm subheader-btn\"\r\n (click)=\"showAddQuestionModal()\">\r\n {{l('Add')}}\r\n </button>\r\n </div>\r\n <div [hidden]=\"pagingQuestionResult.length == 0\">\r\n <div ngbNavContent cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"question-info\" [cdkDragDisabled]=\"canTakeSurvey\" cdkDrag\r\n *ngFor=\"let item of pagingQuestionResult; let i=index\">\r\n <div class=\"symbol symbol-25px me-4\" cdkDragHandle *ngIf=\"!canTakeSurvey\">\r\n <span class=\"symbol-label\">\r\n <span class=\"svg-icon svg-icon-7\" [inlineSVG]=\"'/assets/images/reorder.svg'\">\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"card card-listing\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title\">\r\n <span class=\"badge badge-light\"\r\n ngbTooltip=\"{{l('Type')}}\">{{item.localizedQuestionTypeItem}}</span>\r\n <span class=\"badge badge-light mx-2\"\r\n ngbTooltip=\"{{l('Audience')}}\">{{item.localizedAudienceType}}</span>\r\n <span class=\"badge badge-brand-light mx-2\"\r\n *ngIf=\"item.isRelatedToSurveyQuestion\">{{l('Linked')}}</span>\r\n <span class=\"badge badge-light mx-2\" *ngIf=\"!item.isVisible\" ngbTooltip=\"{{l('NotVisible')}}\">\r\n {{l(\"NotVisible\")}}\r\n </span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div ngbDropdown container=\"body\" *ngIf=\"enableActions\" class=\"dropdown-custom\"\r\n [placement]=\"EN ? 'bottom-right' : 'bottom-left'\">\r\n <button type=\"button\" class=\"dropdown-toggle-custom btn btn-clear\" ngbDropdownToggle>\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/card-dropdown.svg'\"></span>\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom\">\r\n <button *ngIf=\"!(canEditQuestion&&canDeleteQuestion)\"\r\n (click)=\"showEditQuestionModal(item.iD_GUID,true)\" apppreventdoubleclick type=\"button\"\r\n ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/info.svg'\">\r\n </span>\r\n {{l(\"Details\")}}\r\n </button>\r\n\r\n <button *ngIf=\"canEditQuestion\" (click)=\"showEditQuestionModal(item.iD_GUID,false)\"\r\n apppreventdoubleclick type=\"button\" ngbDropdownItem class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"'/assets/images/Edit.svg'\">\r\n </span>\r\n {{l(\"Edit\")}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"canDeleteQuestion\"\r\n (click)=\"showDeleteQuestionModal(item.iD_GUID)\" apppreventdoubleclick ngbDropdownItem\r\n class=\"dropdown-button\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/Trash.svg'\"></span> {{l(\"Delete\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"survey-counter\">\r\n <span class=\"survey-counter-title\">{{item.localizedText}}</span>\r\n <span class=\"badge badge-light-brand badge-square ms-2 me-0\"\r\n ngbTooltip=\"{{l('Score')}}\">{{item.totalScore}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setQuestionListingResult($event)\" [options]=\"pagingQuestionOptions\"\r\n [group]=\"filtersQuestionForm\" #pagingQuestionViewElement></BBSF-Paging>\r\n </div>\r\n </div>\r\n <app-no-results *ngIf=\"pagingQuestionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink>\r\n <h4>\r\n {{l('Submissions')}}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n <div class=\"tabs-search page-subheader justify-content-between\">\r\n <BBSF-TextBox [options]=\"SearchTextBoxOptions\" [group]=\"filtersSubmissionForm\"></BBSF-TextBox>\r\n <BBSF-TextBox [options]=\"SurveyIDOptions\" [group]=\"filtersSubmissionForm\" hidden></BBSF-TextBox>\r\n </div>\r\n <div class=\"info-container\" [hidden]=\"pagingSubmissionResult.length == 0\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-custom\">\r\n <thead>\r\n <tr class=\"table-header\">\r\n <th> {{l('Name')}}</th>\r\n <th>{{l('Email')}}</th>\r\n <th>{{l('Type')}}</th>\r\n <th>{{l('Created')}}</th>\r\n <th>{{l('Score')}}</th>\r\n <th class=\"table-action\" *ngIf=\"enableActions\">{{l(\"Action\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of pagingSubmissionResult; let i=index\">\r\n <td>\r\n <span class=\"line-clamp-2\">\r\n {{item.localizedName}}\r\n <span class=\"badge badge-danger mx-2\" *ngIf=\"item.isEliminated&&item.allowElimination\">\r\n {{l('Eliminated')}}\r\n </span>\r\n </span>\r\n </td>\r\n <td>\r\n {{item.email}}\r\n </td>\r\n <td>\r\n <div class=\"badge badge-light\">\r\n {{item.isInternalUser? l('InternalUsers'):l('ExternalUsers')}}\r\n </div>\r\n </td>\r\n <td>{{item.created|surveyDate}}</td>\r\n <td>{{item.totalScore}}</td>\r\n <td class=\"table-action\" *ngIf=\"enableActions\">\r\n <button type=\"button\" ngbTooltip=\"{{l('Preview')}}\"\r\n [routerLink]=\"['../../info/result', item.iD_GUID]\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\"\r\n [inlineSVG]=\"'/assets/images/answers.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"!item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('EliminateHint')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick\r\n [inlineSVG]=\"'/assets/images/unlink.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" *ngIf=\"item.isEliminated&&item.allowElimination\"\r\n ngbTooltip=\"{{this.l('UnEliminate')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showUnEliminateSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/link.svg'\"></span>\r\n </button>\r\n\r\n <button type=\"button\" ngbTooltip=\"{{l('Delete')}}\" class=\"btn btn-sm p-2\">\r\n <span class=\"svg-icon svg-icon-3\" (click)=\"showDeleteSubmissionModal(item.iD_GUID)\"\r\n apppreventdoubleclick [inlineSVG]=\"'/assets/images/Trash.svg'\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <BBSF-Paging (Items)=\"setSubmissionListingResult($event)\" [options]=\"pagingSubmissionOptions\"\r\n [group]=\"filtersSubmissionForm\" #pagingSubmissionViewElement></BBSF-Paging>\r\n </div>\r\n <app-no-results *ngIf=\"pagingSubmissionResult.length == 0\"></app-no-results>\r\n\r\n </ng-template>\r\n </li>\r\n <li ngbNavItem class=\"nav-item\" *ngIf=\"showOverview\" [destroyOnHide]=\"true\">\r\n <a class=\"nav-link\" ngbNavLink (click)=\"loadSurveyOverview()\">\r\n <h4>\r\n {{l(\"Overview\") }}\r\n </h4>\r\n </a>\r\n <ng-template ngbNavContent>\r\n <div class=\"section-info\" ngbNavContent>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-3\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\"> {{l(\"Questions\") }}</div>\r\n <ul ngbNav #nav=\"ngbNav\" class=\"nav-pills custom-navs\" orientation=\"vertical\">\r\n <li ngbNavItem=\"{{item.localizedTitle}}\" [destroyOnHide]=\"true\"\r\n *ngFor=\"let item of questionOverviewResult\" (click)=\"loadChart(item)\">\r\n <a ngbNavLink>{{item.localizedTitle}}</a>\r\n\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-md-9\">\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Overview\") }}</div>\r\n <div id=\"chartdiv\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n <div class=\"chart-container\">\r\n <div class=\"chart-title\">{{l(\"Score\") }} </div>\r\n <div id=\"chartOverview\" style=\"width: 100%; height: 400px\"></div>\r\n <div class=\"hide-logo\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </li>\r\n </ul>\r\n\r\n\r\n <div [ngbNavOutlet]=\"nav\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n <app-edit-survey #editModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\"></app-edit-survey>\r\n <app-delete-survey #deleteConfirmationModalControl [pagingElement]=\"pagingElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandler\"></app-delete-survey>\r\n <app-add-question #addQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessAddHandler]=\"onSuccessAddQuestionHandler\"></app-add-question>\r\n <app-edit-question #editQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessEditHandler]=\"onSuccessEditQuestionHandler\"></app-edit-question>\r\n <app-delete-question #deleteQuestionModal [pagingElement]=\"pagingQuestionElement\" [onSuccessHandler]=\"onSuccessDeleteQuestionHandler\"></app-delete-question>\r\n <app-publish-survey #addPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\" *ngIf=\"loadInfo\" [showToggle]=\"survey.isShowToggleOfScoreResultAfterSubmission\">\r\n </app-publish-survey>\r\n <app-unpublish-survey #addUnPublishModal [pagingElement]=\"pagingElement\" [onSuccessHandler]=\"onSuccessHandler\">\r\n </app-unpublish-survey>\r\n <app-delete-submission #deleteSubmissionModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessDeleteHandlerSubmission\"></app-delete-submission>\r\n <app-eliminate-submission #eliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-eliminate-submission>\r\n <app-unEliminate-submission #unEliminateModal [pagingElement]=\"pagingSubmissionElement\"\r\n [onSuccessHandler]=\"onSuccessHandler\"></app-unEliminate-submission>\r\n" }]
|
|
489
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
490
|
+
type: Inject,
|
|
491
|
+
args: [PLATFORM_ID]
|
|
492
|
+
}] }, { type: i0.NgZone }, { type: i1.Router }, { type: i2.MasterLayoutService }, { type: i3.SurveyService }, { type: i4.SurveyQuestionService }, { type: i1.ActivatedRoute }], propDecorators: { pagingElement: [{
|
|
493
|
+
type: ViewChild,
|
|
494
|
+
args: ['pagingViewElement', { static: false }]
|
|
495
|
+
}], deleteConfirmationModalControl: [{
|
|
496
|
+
type: ViewChild,
|
|
497
|
+
args: ['deleteConfirmationModalControl', { static: false }]
|
|
498
|
+
}], editModal: [{
|
|
499
|
+
type: ViewChild,
|
|
500
|
+
args: ['editModal', { static: false }]
|
|
501
|
+
}], editQuestionModal: [{
|
|
502
|
+
type: ViewChild,
|
|
503
|
+
args: ['editQuestionModal', { static: false }]
|
|
504
|
+
}], deleteQuestionConfirmationModalControl: [{
|
|
505
|
+
type: ViewChild,
|
|
506
|
+
args: ['deleteQuestionModal', { static: false }]
|
|
507
|
+
}], AddQuestionComponent: [{
|
|
508
|
+
type: ViewChild,
|
|
509
|
+
args: ['addQuestionModal', { static: false }]
|
|
510
|
+
}], addPublishModal: [{
|
|
511
|
+
type: ViewChild,
|
|
512
|
+
args: ['addPublishModal', { static: false }]
|
|
513
|
+
}], addUnPublishModal: [{
|
|
514
|
+
type: ViewChild,
|
|
515
|
+
args: ['addUnPublishModal', { static: false }]
|
|
516
|
+
}], deleteSubmissionConfirmationModalControl: [{
|
|
517
|
+
type: ViewChild,
|
|
518
|
+
args: ['deleteSubmissionModal', { static: false }]
|
|
519
|
+
}], eliminateSubmissionConfirmationModalControl: [{
|
|
520
|
+
type: ViewChild,
|
|
521
|
+
args: ['eliminateModal', { static: false }]
|
|
522
|
+
}], unEliminateSubmissionConfirmationModalControl: [{
|
|
523
|
+
type: ViewChild,
|
|
524
|
+
args: ['unEliminateModal', { static: false }]
|
|
525
|
+
}], pagingQuestionElement: [{
|
|
526
|
+
type: ViewChild,
|
|
527
|
+
args: ['pagingQuestionViewElement', { static: false }]
|
|
528
|
+
}], pagingSubmissionElement: [{
|
|
529
|
+
type: ViewChild,
|
|
530
|
+
args: ['pagingSubmissionViewElement', { static: false }]
|
|
531
|
+
}] } });
|
|
532
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9zaGFyZWQvY29tcG9uZW50cy9zdXJ2ZXkvc3VydmV5LWluZm8vc3VydmV5LWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUlOLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsVUFBVSxFQUNWLGNBQWMsRUFDZCxTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLGFBQWEsRUFDYixjQUFjLEdBQ2YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLHdCQUF3QixDQUFDO0FBQ2hELE9BQU8sa0JBQWtCLE1BQU0scUNBQXFDLENBQUM7QUFPckUsT0FBTyxFQUNMLFlBQVksRUFDWixVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLHNCQUFz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RSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdqRCxzQ0FBc0M7c0JBRHJDLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUduRCxvQkFBb0I7c0JBRG5CLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdoRCxlQUFlO3NCQURkLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUcvQyxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdqRCx3Q0FBd0M7c0JBRHZDLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdyRCwyQ0FBMkM7c0JBRDFDLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUc5Qyw2Q0FBNkM7c0JBRDVDLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQXNCaEQscUJBQXFCO3NCQURwQixTQUFTO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFlekQsdUJBQXVCO3NCQUR0QixTQUFTO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1Ymxpc2hTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuL3B1Ymxpc2gtc3VydmV5L3B1Ymxpc2gtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFkZFF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9hZGQtcXVlc3Rpb24vYWRkLXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9kZWxldGUtcXVlc3Rpb24vZGVsZXRlLXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXRRdWVzdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZWRpdC1xdWVzdGlvbi9lZGl0LXF1ZXN0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVkaXRTdXJ2ZXlDb21wb25lbnQgfSBmcm9tICcuLy4uL2VkaXQtc3VydmV5L2VkaXQtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVN1cnZleUNvbXBvbmVudCB9IGZyb20gJy4vLi4vZGVsZXRlLXN1cnZleS9kZWxldGUtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5qZWN0LFxyXG4gIEluamVjdG9yLFxyXG4gIE5nWm9uZSxcclxuICBPbkluaXQsXHJcbiAgUExBVEZPUk1fSUQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFwcEJhc2VDb21wb25lbnQsXHJcbiAgQnJlYWRDcnVtYixcclxuICBDb250cm9sTGF5b3V0LFxyXG4gIERyb3Bkb3duQWN0aW9uSXRlbSxcclxuICBGaWx0ZXJJdGVtLFxyXG4gIEZpbHRlclR5cGUsXHJcbiAgRm9yY2VEaXJlY3Rpb24sXHJcbiAgSW5wdXRUeXBlLFxyXG4gIFBhZ2VIZWFkZXJPcHRpb25zLFxyXG4gIFBhZ2luZ0NvbXBvbmVudCxcclxuICBQYWdpbmdPcHRpb25zLFxyXG4gIFRleHRCb3hPcHRpb25zLFxyXG59IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCAqIGFzIGFtNSBmcm9tICdAYW1jaGFydHMvYW1jaGFydHM1JztcclxuaW1wb3J0ICogYXMgYW01eHkgZnJvbSAnQGFtY2hhcnRzL2FtY2hhcnRzNS94eSc7XHJcbmltcG9ydCBhbTV0aGVtZXNfQW5pbWF0ZWQgZnJvbSAnQGFtY2hhcnRzL2FtY2hhcnRzNS90aGVtZXMvQW5pbWF0ZWQnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTWFzdGVyTGF5b3V0U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IFVuUHVibGlzaFN1cnZleUNvbXBvbmVudCB9IGZyb20gJy4vdW5wdWJsaXNoLXN1cnZleS91bnB1Ymxpc2gtc3VydmV5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlbGV0ZVN1Ym1pc3Npb25Db21wb25lbnQgfSBmcm9tICcuLi9zdWJtaXNzaW9ucy9kZWxldGUtc3VibWlzc2lvbi9kZWxldGUtc3VibWlzc2lvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFbGltaW5hdGVTdWJtaXNzaW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc3VibWlzc2lvbnMvZWxpbWluYXRlLXN1Ym1pc3Npb24vZWxpbWluYXRlLXN1Ym1pc3Npb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVW5FbGltaW5hdGVTdWJtaXNzaW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc3VibWlzc2lvbnMvdW5lbGltaW5hdGUtc3VibWlzc2lvbi91bmVsaW1pbmF0ZS1zdWJtaXNzaW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgQXVkaWVuY2VUeXBlLFxyXG4gIFN1cnZleU1vZGUsXHJcbiAgU3VydmV5T3B0aW9uVHlwZSxcclxuICBTdXJ2ZXlTdGF0dXNFbnVtLFxyXG59IGZyb20gJy4uLy4uLy4uL0VudW1zL0VudW1zJztcclxuaW1wb3J0IHsgU3VydmV5UXVlc3Rpb25EVE8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvU3VydmV5TW9kZWxzL3N1cnZleS1xdWVzdGlvbic7XHJcbmltcG9ydCB7IFN1cnZleVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TZXJ2aWNlcy9zdXJ2ZXkuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1cnZleVF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3N1cnZleS1xdWVzdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3VydmV5Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL1N1cnZleU1vZGVscy9zdXJ2ZXktdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc3VydmV5LWluZm8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdXJ2ZXktaW5mby5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3VydmV5LWluZm8uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VydmV5SW5mb0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHBhZ2VIZWFkZXJPcHRpb25zOiBQYWdlSGVhZGVyT3B0aW9ucztcclxuICBicmVhZENydW1iOiBCcmVhZENydW1iW107XHJcbiAgc3VydmV5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIEBWaWV3Q2hpbGQoJ3BhZ2luZ1ZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZGVsZXRlQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBEZWxldGVTdXJ2ZXlDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZWRpdE1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIGVkaXRNb2RhbDogRWRpdFN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlZGl0UXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGVkaXRRdWVzdGlvbk1vZGFsOiBFZGl0UXVlc3Rpb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlUXVlc3Rpb25Nb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGRlbGV0ZVF1ZXN0aW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sOiBEZWxldGVRdWVzdGlvbkNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZGRRdWVzdGlvbk1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgQWRkUXVlc3Rpb25Db21wb25lbnQ6IEFkZFF1ZXN0aW9uQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2FkZFB1Ymxpc2hNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGFkZFB1Ymxpc2hNb2RhbDogUHVibGlzaFN1cnZleUNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdhZGRVblB1Ymxpc2hNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGFkZFVuUHVibGlzaE1vZGFsOiBVblB1Ymxpc2hTdXJ2ZXlDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZGVsZXRlU3VibWlzc2lvbk1vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZGVsZXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogRGVsZXRlU3VibWlzc2lvbkNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlbGltaW5hdGVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGVsaW1pbmF0ZVN1Ym1pc3Npb25Db25maXJtYXRpb25Nb2RhbENvbnRyb2w6IEVsaW1pbmF0ZVN1Ym1pc3Npb25Db21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgndW5FbGltaW5hdGVNb2RhbCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHVuRWxpbWluYXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbDogVW5FbGltaW5hdGVTdWJtaXNzaW9uQ29tcG9uZW50O1xyXG4gIGVuYWJsZUFjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgVGV4dEJveFdpdGhFeHRlcm5hbFVSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgVGV4dEJveFdpdGhJbnRlcm5hbFVSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgdXJsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFNlYXJjaFRleHRCb3ggPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFTjogYm9vbGVhbjtcclxuICBTZWFyY2hUZXh0Qm94T3B0aW9uczogVGV4dEJveE9wdGlvbnM7XHJcbiAgcHJpdmF0ZSByb290ITogYW01LlJvb3Q7XHJcbiAgc3VydmV5SUQ6IGFueTtcclxuICBzdXJ2ZXk6IGFueTtcclxuICBsb2FkSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBTdXJ2ZXlTdGF0dXNFbnVtID0gU3VydmV5U3RhdHVzRW51bTtcclxuICBwdWJsaWMgQXVkaWVuY2VUeXBlRW51bSA9IEF1ZGllbmNlVHlwZTtcclxuICBzdXJ2ZXlRdWVzdGlvbnM6IFN1cnZleVF1ZXN0aW9uRFRPW10gPSBbXTtcclxuICBhcGlRdWVzdGlvblVSTCA9IHRoaXMuc3VydmV5UXVlc3Rpb25TZXJ2aWNlLmFwaVVSTDtcclxuICBmaWx0ZXJzUXVlc3Rpb25Gb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgY2FuVGFrZVN1cnZleTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vUXVlc3Rpb25zIFNlY3Rpb25cclxuICBAVmlld0NoaWxkKCdwYWdpbmdRdWVzdGlvblZpZXdFbGVtZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgcGFnaW5nUXVlc3Rpb25FbGVtZW50OiBQYWdpbmdDb21wb25lbnQ8YW55PjtcclxuICBwYWdpbmdRdWVzdGlvblJlc3VsdDogYW55W10gPSBbXTtcclxuICBwYWdpbmdRdWVzdGlvbk9wdGlvbnM6IFBhZ2luZ09wdGlvbnM7XHJcbiAgc2hvd1BhZ2VDb250ZW50OiBib29sZWFuO1xyXG4gIGNhbkVkaXRRdWVzdGlvbjogYm9vbGVhbjtcclxuICBjYW5BZGRRdWVzdGlvbjogYm9vbGVhbjtcclxuICBjYW5EZWxldGVRdWVzdGlvbjogYm9vbGVhbjtcclxuICBzZWFyY2hRdWVzdGlvblRleHRGaWx0ZXI6IGFueTtcclxuICBTdXJ2ZXlJRE9wdGlvbnM6IGFueTtcclxuICBzZWFyY2hTdXJ2ZXlJREZpbHRlcjogRmlsdGVySXRlbTtcclxuXHJcbiAgLy9TdWJtaXNzaW9uIFNlY3Rpb25cclxuICBmaWx0ZXJzU3VibWlzc2lvbkZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBAVmlld0NoaWxkKCdwYWdpbmdTdWJtaXNzaW9uVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBwYWdpbmdTdWJtaXNzaW9uRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcbiAgcGFnaW5nU3VibWlzc2lvblJlc3VsdDogYW55W10gPSBbXTtcclxuICBwYWdpbmdTdWJtaXNzaW9uT3B0aW9uczogUGFnaW5nT3B0aW9ucztcclxuICBzaG93U3VibWlzc2lvblBhZ2VDb250ZW50OiBib29sZWFuO1xyXG4gIHNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIHNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlcjogRmlsdGVySXRlbTtcclxuICBxdWVzdGlvbk92ZXJ2aWV3UmVzdWx0OiBhbnk7XHJcbiAgcGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbDogYW55O1xyXG4gIHNob3dPdmVydmlldzogYm9vbGVhbjtcclxuICBzaG93TmF2OiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQsXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIG1hc3RlckxheW91dFNlcnZpY2U6IE1hc3RlckxheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN1cnZleVNlcnZpY2U6IFN1cnZleVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN1cnZleVF1ZXN0aW9uU2VydmljZTogU3VydmV5UXVlc3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcclxuICApIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgIHRoaXMucm91dGVyLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRSZXVzZVJvdXRlID0gKCkgPT4gZmFsc2U7XHJcbiAgICB0aGlzLnN1cnZleUlEID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XHJcbiAgfVxyXG4gIC8vIFJ1biB0aGUgZnVuY3Rpb24gb25seSBpbiB0aGUgYnJvd3NlclxyXG4gIGJyb3dzZXJPbmx5KGY6ICgpID0+IHZvaWQpIHtcclxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgZigpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHsgfVxyXG5cclxuICBtYXliZURpc3Bvc2VSb290KGRpdklkKSB7XHJcbiAgICBhbTUuYXJyYXkuZWFjaChhbTUucmVnaXN0cnkucm9vdEVsZW1lbnRzLCAocm9vdCkgPT4ge1xyXG4gICAgICBpZiAocm9vdCkge1xyXG4gICAgICAgIGlmIChyb290LmRvbS5pZCA9PSBkaXZJZCkge1xyXG4gICAgICAgICAgcm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRDaGFydChpdGVtKSB7XHJcbiAgICAvLyBDaGFydCBjb2RlIGdvZXMgaW4gaGVyZVxyXG4gICAgdGhpcy5icm93c2VyT25seSgoKSA9PiB7XHJcbiAgICAgIGxldCBuYW1lID0gYGNoYXJ0ZGl2YDtcclxuICAgICAgdGhpcy5tYXliZURpc3Bvc2VSb290KG5hbWUpO1xyXG4gICAgICBsZXQgcm9vdCA9IGFtNS5Sb290Lm5ldyhuYW1lKTtcclxuICAgICAgcm9vdC5zZXRUaGVtZXMoW2FtNXRoZW1lc19BbmltYXRlZC5uZXcocm9vdCldKTtcclxuXHJcbiAgICAgIGxldCBjaGFydCA9IHJvb3QuY29udGFpbmVyLmNoaWxkcmVuLnB1c2goXHJcbiAgICAgICAgYW01eHkuWFlDaGFydC5uZXcocm9vdCwge1xyXG4gICAgICAgICAgcGFuWDogZmFsc2UsXHJcbiAgICAgICAgICBwYW5ZOiBmYWxzZSxcclxuICAgICAgICAgIHdoZWVsWDogJ25vbmUnLFxyXG4gICAgICAgICAgd2hlZWxZOiAnbm9uZScsXHJcbiAgICAgICAgICBwYWRkaW5nQm90dG9tOiA1MCxcclxuICAgICAgICAgIHBhZGRpbmdUb3A6IDQwLFxyXG4gICAgICAgICAgbGF5b3V0OiByb290LnZlcnRpY2FsTGF5b3V0LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgICAvLyBEZWZpbmUgZGF0YVxyXG4gICAgICBsZXQgZGF0YSA9IGl0ZW0ub3B0aW9ucy5tYXAoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIG5hbWU6IHZhbHVlLmxvY2FsaXplZFRpdGxlLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLm51bWJlck9mU2VsZWN0ZWRUaW1lLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBDcmVhdGUgWS1heGlzXHJcbiAgICAgIGxldCB5QXhpcyA9IGNoYXJ0LnlBeGVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuVmFsdWVBeGlzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBiYXNlVmFsdWU6IDAsXHJcbiAgICAgICAgICBtYXhQcmVjaXNpb246IDAsXHJcbiAgICAgICAgICBtaW46IDAsXHJcbiAgICAgICAgICBleHRyYVRvb2x0aXBQcmVjaXNpb246IDEwMCxcclxuICAgICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJZLm5ldyhyb290LCB7fSksXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIC8vIENyZWF0ZSBYLUF4aXNcclxuICAgICAgbGV0IHhBeGlzID0gY2hhcnQueEF4ZXMucHVzaChcclxuICAgICAgICBhbTV4eS5DYXRlZ29yeUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIHJlbmRlcmVyOiBhbTV4eS5BeGlzUmVuZGVyZXJYLm5ldyhyb290LCB7fSksXHJcbiAgICAgICAgICBjYXRlZ29yeUZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgeEF4aXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICAgIGxldCBzZXJpZXMxID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuQ29sdW1uU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBuYW1lOiAnUXVlc3Rpb24gT3B0aW9ucycsXHJcbiAgICAgICAgICB4QXhpczogeEF4aXMsXHJcbiAgICAgICAgICB5QXhpczogeUF4aXMsXHJcbiAgICAgICAgICB2YWx1ZVlGaWVsZDogJ3ZhbHVlJyxcclxuICAgICAgICAgIGNhdGVnb3J5WEZpZWxkOiAnbmFtZScsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHNlcmllczEuZGF0YS5zZXRBbGwoZGF0YSk7XHJcbiAgICAgIHNlcmllczEuc2V0KCdmaWxsJywgYW01LmNvbG9yKCcjYjY4YTM1JykpOyAvLyBzZXQgU2VyaWVzIGNvbG9yIHRvIHJlZFxyXG4gICAgICBzZXJpZXMxLnNldCgnc3Ryb2tlJywgYW01LmNvbG9yKCcjYjY4YTM1JykpOyAvLyBzZXQgU2VyaWVzIGNvbG9yIHRvIHJlZFxyXG5cclxuICAgICAgLy8gQWRkIGxlZ2VuZFxyXG4gICAgICBsZXQgbGVnZW5kID0gY2hhcnQuY2hpbGRyZW4ucHVzaChhbTUuTGVnZW5kLm5ldyhyb290LCB7fSkpO1xyXG4gICAgICBsZWdlbmQuZGF0YS5wdXNoKHNlcmllczEpO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLkVOKSB7XHJcbiAgICAgICAgbGVnZW5kLmxhYmVscy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnLFxyXG4gICAgICAgICAgeDogNTAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGVnZW5kLnZhbHVlTGFiZWxzLnRlbXBsYXRlLnNldEFsbCh7XHJcbiAgICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCcsXHJcbiAgICAgICAgICBwYWRkaW5nUmlnaHQ6IDE1LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICAgICAgcmV2ZXJzZUNoaWxkcmVuOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucm9vdCA9IHJvb3Q7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyAvL2NoYXJ0IG92ZXJ2aWV3XHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgbGV0IG5hbWVPdmVyVmlldyA9IGBjaGFydE92ZXJ2aWV3YDtcclxuICAgICAgdGhpcy5tYXliZURpc3Bvc2VSb290KG5hbWVPdmVyVmlldyk7XHJcbiAgICAgIGxldCByb290ID0gYW01LlJvb3QubmV3KG5hbWVPdmVyVmlldyk7XHJcblxyXG4gICAgICByb290LnNldFRoZW1lcyhbYW01dGhlbWVzX0FuaW1hdGVkLm5ldyhyb290KV0pO1xyXG5cclxuICAgICAgbGV0IGNoYXJ0ID0gcm9vdC5jb250YWluZXIuY2hpbGRyZW4ucHVzaChcclxuICAgICAgICBhbTV4eS5YWUNoYXJ0Lm5ldyhyb290LCB7XHJcbiAgICAgICAgICBwYW5ZOiBmYWxzZSxcclxuICAgICAgICAgIGxheW91dDogcm9vdC52ZXJ0aWNhbExheW91dCxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gRGVmaW5lIGRhdGFcclxuXHJcbiAgICAgIGxldCBkYXRhID0gW107XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGl0ZW0ucmVzdWx0cykge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXRlbS5yZXN1bHRzLCBrZXkpKSB7XHJcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW0ucmVzdWx0c1trZXldO1xyXG4gICAgICAgICAgbGV0IG9iamVjdCA9IHtcclxuICAgICAgICAgICAgY2F0ZWdvcnk6ICc8PScgKyBrZXksXHJcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBkYXRhLnB1c2gob2JqZWN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENyZWF0ZSBZLWF4aXNcclxuICAgICAgbGV0IHlBeGlzID0gY2hhcnQueUF4ZXMucHVzaChcclxuICAgICAgICBhbTV4eS5WYWx1ZUF4aXMubmV3KHJvb3QsIHtcclxuICAgICAgICAgIGJhc2VWYWx1ZTogMCxcclxuICAgICAgICAgIG1heFByZWNpc2lvbjogMCxcclxuICAgICAgICAgIG1pbjogMCxcclxuICAgICAgICAgIGV4dHJhVG9vbHRpcFByZWNpc2lvbjogMTAwLFxyXG4gICAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclkubmV3KHJvb3QsIHt9KSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG5cclxuICAgICAgLy8gQ3JlYXRlIFgtQXhpc1xyXG4gICAgICBsZXQgeEF4aXMgPSBjaGFydC54QXhlcy5wdXNoKFxyXG4gICAgICAgIGFtNXh5LkNhdGVnb3J5QXhpcy5uZXcocm9vdCwge1xyXG4gICAgICAgICAgcmVuZGVyZXI6IGFtNXh5LkF4aXNSZW5kZXJlclgubmV3KHJvb3QsIHt9KSxcclxuICAgICAgICAgIGNhdGVnb3J5RmllbGQ6ICdjYXRlZ29yeScsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgeEF4aXMuZGF0YS5zZXRBbGwoZGF0YSk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICAgIGxldCBzZXJpZXMxID0gY2hhcnQuc2VyaWVzLnB1c2goXHJcbiAgICAgICAgYW01eHkuQ29sdW1uU2VyaWVzLm5ldyhyb290LCB7XHJcbiAgICAgICAgICBuYW1lOiAnU2NvcmUnLFxyXG4gICAgICAgICAgeEF4aXM6IHhBeGlzLFxyXG4gICAgICAgICAgeUF4aXM6IHlBeGlzLFxyXG4gICAgICAgICAgdmFsdWVZRmllbGQ6ICd2YWx1ZScsXHJcbiAgICAgICAgICBjYXRlZ29yeVhGaWVsZDogJ2NhdGVnb3J5JyxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBzZXJpZXMxLmRhdGEuc2V0QWxsKGRhdGEpO1xyXG4gICAgICBzZXJpZXMxLnNldCgnZmlsbCcsIGFtNS5jb2xvcignI2I2OGEzNScpKTsgLy8gc2V0IFNlcmllcyBjb2xvciB0byByZWRcclxuICAgICAgc2VyaWVzMS5zZXQoJ3N0cm9rZScsIGFtNS5jb2xvcignI2I2OGEzNScpKTsgLy8gc2V0IFNlcmllcyBjb2xvciB0byByZWRcclxuICAgICAgLy8gQWRkIGxlZ2VuZFxyXG4gICAgICBsZXQgbGVnZW5kID0gY2hhcnQuY2hpbGRyZW4ucHVzaChhbTUuTGVnZW5kLm5ldyhyb290LCB7fSkpO1xyXG4gICAgICBsZWdlbmQuZGF0YS5zZXRBbGwoY2hhcnQuc2VyaWVzLnZhbHVlcyk7XHJcbiAgICAgIGlmICghdGhpcy5FTikge1xyXG4gICAgICAgIGxlZ2VuZC5sYWJlbHMudGVtcGxhdGUuc2V0QWxsKHtcclxuICAgICAgICAgIHRleHRBbGlnbjogJ3JpZ2h0JyxcclxuICAgICAgICAgIHg6IDUwLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxlZ2VuZC52YWx1ZUxhYmVscy50ZW1wbGF0ZS5zZXRBbGwoe1xyXG4gICAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnLFxyXG4gICAgICAgICAgcGFkZGluZ1JpZ2h0OiAxNSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBsZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuc2V0QWxsKHtcclxuICAgICAgICAgIHJldmVyc2VDaGlsZHJlbjogdHJ1ZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJvb3QgPSByb290O1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gQ2xlYW4gdXAgcm9vdCBlbGVtZW50IHdoZW4gdGhlIGNvbXBvbmVudCBpcyByZW1vdmVkXHJcbiAgICB0aGlzLmJyb3dzZXJPbmx5KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMucm9vdCkge1xyXG4gICAgICAgIHRoaXMucm9vdC5kaXNwb3NlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoU3VydmV5Q29uZmlnLnN1cnZleU1vZGUgPT0gU3VydmV5TW9kZS5TdXJ2ZXlfRnVsbF9BY2Nlc3MpXHJcbiAgICAgIHRoaXMuZW5hYmxlQWN0aW9ucyA9IHRydWU7XHJcbiAgICB0aGlzLnN1cnZleVNlcnZpY2UuZ2V0SW5mbyh0aGlzLnN1cnZleUlEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLnN1cnZleSA9IHJlc3VsdDtcclxuXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuTmFtZSA9ICdUZXh0Qm94V2l0aEV4dGVybmFsVVJMJztcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEV4dGVybmFsVVJMLkxhYmVsS2V5ID0gJ0V4dGVybmFsX1VSTCc7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkVuZ2xpc2g7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhFeHRlcm5hbFVSTC5FbmFibGVDb3B5VG9DbGlwYm9hcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoRXh0ZXJuYWxVUkwuVmFsdWUgPSB0aGlzLnN1cnZleS5leHRlcm5hbFVSTDtcclxuXHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuTmFtZSA9ICdUZXh0Qm94V2l0aEludGVybmFsVVJMJztcclxuICAgICAgdGhpcy5UZXh0Qm94V2l0aEludGVybmFsVVJMLkxhYmVsS2V5ID0gJ0ludGVybmFsX1VSTCc7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuVmVydGljYWw7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5Gb3JjZURpcmVjdGlvbiA9IEZvcmNlRGlyZWN0aW9uLkVuZ2xpc2g7XHJcbiAgICAgIHRoaXMuVGV4dEJveFdpdGhJbnRlcm5hbFVSTC5FbmFibGVDb3B5VG9DbGlwYm9hcmQgPSB0cnVlO1xyXG4gICAgICB0aGlzLlRleHRCb3hXaXRoSW50ZXJuYWxVUkwuVmFsdWUgPSB0aGlzLnN1cnZleS5pbnRlcm5hbFVSTDtcclxuXHJcbiAgICAgIHRoaXMuYnJlYWRDcnVtYiA9IFtdO1xyXG4gICAgICB0aGlzLmJyZWFkQ3J1bWIucHVzaChcclxuICAgICAgICBuZXcgQnJlYWRDcnVtYih0aGlzLmwoJ0hvbWUnKSwgZmFsc2UsICcvJyksXHJcbiAgICAgICAgbmV3IEJyZWFkQ3J1bWIodGhpcy5sKCdTdXJ2ZXlzX0hlYWRlcicpLCBmYWxzZSwgJy4uLy4uLycpLFxyXG4gICAgICAgIG5ldyBCcmVhZENydW1iKHRoaXMubCgnU3VydmV5X0RldGFpbHMnKSwgdHJ1ZSlcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucyA9IG5ldyBQYWdlSGVhZGVyT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLlRpdGxlVmFsdWUgPSB0aGlzLnN1cnZleS5sb2NhbGl6ZWRUaXRsZTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5TZWFyY2hUZXh0Qm94LkFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkJyZWFkQ3J1bWIuQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5CcmVhZENydW1iLkJyZWFkQ3J1bWJJdGVtcyA9IHRoaXMuYnJlYWRDcnVtYjtcclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuZW5hYmxlQWN0aW9ucylcclxuICAgICAgICB0aGlzLnBhZ2VIZWFkZXJPcHRpb25zLkRyb3BEb3duQWN0aW9ucy5Ecm9wZG93bkFjdGlvbkl0ZW1zLnB1c2goXHJcbiAgICAgICAgICBuZXcgRHJvcGRvd25BY3Rpb25JdGVtKFxyXG4gICAgICAgICAgICB0aGlzLmwoJ0RlbGV0ZScpLFxyXG4gICAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvVHJhc2guc3ZnJyxcclxuICAgICAgICAgICAgdGhpcy5zaG93RGVsZXRlTW9kYWxcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuRHJvcGRvd25BY3Rpb25JdGVtcy5wdXNoKFxyXG4gICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0oXHJcbiAgICAgICAgICB0aGlzLmwoJ0V4cG9ydCcpLFxyXG4gICAgICAgICAgJy9hc3NldHMvaW1hZ2VzL2V4cG9ydC5zdmcnLFxyXG4gICAgICAgICAgdGhpcy5leHBvcnRcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGhpcy5lbmFibGVBY3Rpb25zKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5zdXJ2ZXkuc3RhdHVzSXRlbUlELnRvTG9jYWxlTG93ZXJDYXNlKCkgPT1cclxuICAgICAgICAgIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fRHJhZnQudG9Mb2NhbGVMb3dlckNhc2UoKSB8fFxyXG4gICAgICAgICAgdGhpcy5zdXJ2ZXkuc3RhdHVzSXRlbUlELnRvTG9jYWxlTG93ZXJDYXNlKCkgPT1cclxuICAgICAgICAgIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fVXBjb21pbmcudG9Mb2NhbGVMb3dlckNhc2UoKVxyXG4gICAgICAgIClcclxuICAgICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQWN0aW9uSXRlbShcclxuICAgICAgICAgICAgICB0aGlzLmwoJ0VkaXQnKSxcclxuICAgICAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmcnLFxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0VkaXRNb2RhbFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnN1cnZleS50b3RhbFF1ZXN0aW9uQ291bnQgPiAwKVxyXG4gICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgIG5ldyBEcm9wZG93bkFjdGlvbkl0ZW0oXHJcbiAgICAgICAgICAgIHRoaXMubCgnUHJldmlldycpLFxyXG4gICAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvdmlld3Muc3ZnJyxcclxuICAgICAgICAgICAgdGhpcy5wcmV2aWV3U3VydmV5XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PVxyXG4gICAgICAgIHRoaXMuU3VydmV5U3RhdHVzRW51bS5TY29yaW5nVHlwZUVudW1fUHVibGlzaGVkLnRvTG9jYWxlTG93ZXJDYXNlKClcclxuICAgICAgKVxyXG4gICAgICAgIHRoaXMuY2FuVGFrZVN1cnZleSA9IHRydWU7XHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZUFjdGlvbnMpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PVxyXG4gICAgICAgICAgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9EcmFmdC50b0xvY2FsZUxvd2VyQ2FzZSgpIHx8XHJcbiAgICAgICAgICB0aGlzLnN1cnZleS5zdGF0dXNJdGVtSUQudG9Mb2NhbGVMb3dlckNhc2UoKSA9PVxyXG4gICAgICAgICAgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9DbG9zZWQudG9Mb2NhbGVMb3dlckNhc2UoKVxyXG4gICAgICAgIClcclxuICAgICAgICAgIHRoaXMucGFnZUhlYWRlck9wdGlvbnMuRHJvcERvd25BY3Rpb25zLkRyb3Bkb3duQWN0aW9uSXRlbXMucHVzaChcclxuICAgICAgICAgICAgbmV3IERyb3Bkb3duQWN0aW9uSXRlbShcclxuICAgICAgICAgICAgICB0aGlzLmwoJ1B1Ymxpc2gnKSxcclxuICAgICAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvU3VibWl0LnN2ZycsXHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93UHVibGlzaE1vZGFsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhpcy5wYWdlSGVhZGVyT3B0aW9ucy5Ecm9wRG93bkFjdGlvbnMuRHJvcGRvd25BY3Rpb25JdGVtcy5wdXNoKFxyXG4gICAgICAgICAgICBuZXcgRHJvcGRvd25BY3Rpb25JdGVtKFxyXG4gICAgICAgICAgICAgIHRoaXMubCgnVW5QdWJsaXNoJyksXHJcbiAgICAgICAgICAgICAgJy9hc3NldHMvaW1hZ2VzL3VubGluay5zdmcnLFxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd1VuUHVibGlzaE1vZGFsXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5FTiA9IHRoaXMudXRpbGl0eVNlcnZpY2UuaXNDdXJyZW50TGFuZ3VhZ2VFbmdsaXNoKCk7XHJcbiAgICAgIHRoaXMubG9hZFF1ZXN0aW9uU2VjdGlvbigpO1xyXG4gICAgICB0aGlzLmxvYWRTdWJtaXNzaW9uU2VjdGlvbigpO1xyXG4gICAgICB0aGlzLnBhZ2VUaXRsZSA9IHRoaXMuc3VydmV5LmxvY2FsaXplZFRpdGxlO1xyXG4gICAgICB0aGlzLnVwZGF0ZVBhZ2VUaXRsZSh0aGlzLnN1cnZleS5sb2NhbGl6ZWRUaXRsZSk7XHJcbiAgICAgIHRoaXMubG9hZEluZm8gPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNob3dFZGl0TW9kYWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmVkaXRNb2RhbC5zaG93RWRpdE1vZGFsKHRoaXMuc3VydmV5SUQpO1xyXG4gIH07XHJcbiAgc2hvd0RlbGV0ZU1vZGFsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5kZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd0RlbGV0ZU1vZGFsKHRoaXMuc3VydmV5SUQpO1xyXG4gIH07XHJcbiAgc2hvd0VkaXRRdWVzdGlvbk1vZGFsKGlkLCBpc1ZpZXdPbmx5KSB7XHJcbiAgICB0aGlzLmVkaXRRdWVzdGlvbk1vZGFsLmVkaXRNb2RhbChcclxuICAgICAgaWQsXHJcbiAgICAgIHRoaXMuc3VydmV5LmF1ZGllbmNlSXRlbUlELFxyXG4gICAgICBpc1ZpZXdPbmx5XHJcbiAgICApO1xyXG4gIH1cclxuICBzaG93QWRkUXVlc3Rpb25Nb2RhbCgpIHtcclxuICAgIHRoaXMuQWRkUXVlc3Rpb25Db21wb25lbnQuYWRkTW9kYWwoXHJcbiAgICAgIHRoaXMuc3VydmV5SUQsXHJcbiAgICAgIHRoaXMuc3VydmV5LmF1ZGllbmNlSXRlbUlEXHJcbiAgICApO1xyXG4gIH1cclxuICBzaG93RGVsZXRlUXVlc3Rpb25Nb2RhbCA9IChpZCkgPT4ge1xyXG4gICAgdGhpcy5kZWxldGVRdWVzdGlvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93RGVsZXRlTW9kYWwoaWQpO1xyXG4gIH07XHJcbiAgc2hvd1B1Ymxpc2hNb2RhbCA9ICgpID0+IHtcclxuICAgIHRoaXMuYWRkUHVibGlzaE1vZGFsLnB1Ymxpc2hNb2RhbCh0aGlzLnN1cnZleUlELCB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0KTtcclxuICB9O1xyXG4gIHNob3dVblB1Ymxpc2hNb2RhbCA9ICgpID0+IHtcclxuICAgIHRoaXMuYWRkVW5QdWJsaXNoTW9kYWwuc2hvd0NvbmZpcm1hdGlvbk1vZGFsKHRoaXMuc3VydmV5SUQpO1xyXG4gIH07XHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoXHJcbiAgICAgIHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQsXHJcbiAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXHJcbiAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxyXG4gICAgKTtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0W2luZGV4XS5kaXNwbGF5T3JkZXIgPSBpbmRleCArIDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1cnZleVF1ZXN0aW9uU2VydmljZVxyXG4gICAgICAudXBkYXRlRGlzcGxheU9yZGVyKHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBwcmV2aWV3U3VydmV5ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcbiAgICAgIFsnLi4vLi4vaW5mby9wcmV2aWV3JywgdGhpcy5zdXJ2ZXlJRCwgdGhpcy5zdXJ2ZXkuYXVkaWVuY2VJdGVtSURdLFxyXG4gICAgICB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfVxyXG4gICAgKTtcclxuICB9O1xyXG4gIHRha2VTdXJ2ZXkgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLy4uL2luZm8vc3VibWlzc2lvbicsIHRoaXMuc3VydmV5SURdLCB7XHJcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUsXHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBnZXRTdGF0dXMoc3RhdHVzKSB7XHJcbiAgICB2YXIgU3RhdHVzZXMgPSAnJztcclxuICAgIHN3aXRjaCAoc3RhdHVzLnRvTG9jYWxlTG93ZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX0RyYWZ0LnRvTG9jYWxlTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgU3RhdHVzZXMgPSAnYmFkZ2Utc2Vjb25kYXJ5JztcclxuICAgICAgICB0aGlzLmNhbkVkaXRRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5EZWxldGVRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5BZGRRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5TdXJ2ZXlTdGF0dXNFbnVtLlNjb3JpbmdUeXBlRW51bV9DbG9zZWQudG9Mb2NhbGVMb3dlckNhc2UoKTpcclxuICAgICAgICBTdGF0dXNlcyA9ICdiYWRnZS1kYW5nZXInO1xyXG4gICAgICAgIHRoaXMuY2FuRWRpdFF1ZXN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5EZWxldGVRdWVzdGlvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jYW5BZGRRdWVzdGlvbiA9IGZhbHNlO1xyXG5cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX1B1Ymxpc2hlZC50b0xvY2FsZUxvd2VyQ2FzZSgpOlxyXG4gICAgICAgIFN0YXR1c2VzID0gJ2JhZGdlLXN1Y2Nlc3MnO1xyXG4gICAgICAgIHRoaXMuY2FuRWRpdFF1ZXN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5EZWxldGVRdWVzdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2FuQWRkUXVlc3Rpb24gPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLlN1cnZleVN0YXR1c0VudW0uU2NvcmluZ1R5cGVFbnVtX1VwY29taW5nLnRvTG9jYWxlTG93ZXJDYXNlKCk6XHJcbiAgICAgICAgU3RhdHVzZXMgPSAnYmFkZ2Utc3VjY2Vzcyc7XHJcbiAgICAgICAgdGhpcy5jYW5FZGl0UXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuRGVsZXRlUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2FuQWRkUXVlc3Rpb24gPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHJldHVybiBTdGF0dXNlcztcclxuICB9XHJcblxyXG4gIGxvYWRRdWVzdGlvblNlY3Rpb24oKSB7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLk5hbWUgPSAnU2VhcmNoVGV4dEJveCc7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuVHJpbVRleHRPbkNoYW5nZSA9IHRydWU7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLlBsYWNlaG9sZGVyID0gdGhpcy5sKCdTZWFyY2gnKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuRXh0cmFDbGFzc2VzID1cclxuICAgICAgJ2Zvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gZm9ybS1jb250cm9sLXNvbGlkIHNlYXJjaC1ib3gnO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5JY29uID0gJy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvc2VhcmNoLnN2Zyc7XHJcblxyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU3VydmV5SURPcHRpb25zLk5hbWUgPSAnU3VydmV5SUQnO1xyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuVmFsdWUgPSB0aGlzLnN1cnZleUlEO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSB0aGlzLlN1cnZleUlET3B0aW9ucy5OYW1lO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gJ1N1cnZleUlEJztcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5SURGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleUlERmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLlRleHRCb3g7XHJcblxyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMuUGFnZVNpemUgPSAxMDAwO1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMuRGlzYWJsZUJsb2NrVUkgPSB0cnVlO1xyXG4gICAgdGhpcy5wYWdpbmdRdWVzdGlvbk9wdGlvbnMuQWN0aW9uUG9zdFVSTCA9XHJcbiAgICAgIHRoaXMuYXBpUXVlc3Rpb25VUkwgKyAnR2V0QWxsUXVlc3Rpb25zJztcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25PcHRpb25zLkZpbHRlcnMgPSBbdGhpcy5zZWFyY2hTdXJ2ZXlJREZpbHRlcl07XHJcbiAgfVxyXG4gIHNldFF1ZXN0aW9uTGlzdGluZ1Jlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHQgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0T3JpZ2luYWwgPSByZXN1bHQ7XHJcbiAgICB0aGlzLnNob3dQYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICBsZXQgb3ZlcnZpZXdRdWVzdGlvbnMgPSB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0T3JpZ2luYWwuZmlsdGVyKFxyXG4gICAgICAoaXRlbSkgPT5cclxuICAgICAgICBpdGVtLnF1ZXN0aW9uVHlwZUl0ZW1JRCA9PSBTdXJ2ZXlPcHRpb25UeXBlLlJhZGlvQnV0dG9uIHx8XHJcbiAgICAgICAgaXRlbS5xdWVzdGlvblR5cGVJdGVtSUQgPT0gU3VydmV5T3B0aW9uVHlwZS5TaW5nbGVTZWxlY3QgfHxcclxuICAgICAgICBpdGVtLnF1ZXN0aW9uVHlwZUl0ZW1JRCA9PSBTdXJ2ZXlPcHRpb25UeXBlLk11bHRpcGxlU2VsZWN0XHJcbiAgICApO1xyXG4gICAgaWYgKG92ZXJ2aWV3UXVlc3Rpb25zLmxlbmd0aCA+IDApIHRoaXMubG9hZFN1cnZleU92ZXJ2aWV3KCk7XHJcbiAgfVxyXG5cclxuICBvblN1Y2Nlc3NIYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmRVcGRhdGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gICAgdGhpcy5tYXN0ZXJMYXlvdXRTZXJ2aWNlLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gIH07XHJcblxyXG4gIG9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKFxyXG4gICAgICB0aGlzLmwoJ1JlY29yZERlbGV0ZWQnKSxcclxuICAgICAgbnVsbCxcclxuICAgICAgbnVsbCxcclxuICAgICAgZmFsc2VcclxuICAgICk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLy4uLyddLCB7IHJlbGF0aXZlVG86IHRoaXMuYWN0aXZhdGVkUm91dGUgfSk7XHJcbiAgfTtcclxuXHJcbiAgb25TdWNjZXNzQWRkUXVlc3Rpb25IYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmRBZGRlZCcpLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBmYWxzZVxyXG4gICAgKTtcclxuICAgIHRoaXMubWFzdGVyTGF5b3V0U2VydmljZS5yZWxvYWRDb21wb25lbnQoKTtcclxuICB9O1xyXG4gIG9uU3VjY2Vzc0VkaXRRdWVzdGlvbkhhbmRsZXIgPSAoc3VjY2VzczogYW55KSA9PiB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeVN1Y2Nlc3NNZXNzYWdlKFxyXG4gICAgICB0aGlzLmwoJ1JlY29yZFVwZGF0ZWQnKSxcclxuICAgICAgbnVsbCxcclxuICAgICAgbnVsbCxcclxuICAgICAgZmFsc2VcclxuICAgICk7XHJcbiAgICB0aGlzLm1hc3RlckxheW91dFNlcnZpY2UucmVsb2FkQ29tcG9uZW50KCk7XHJcbiAgfTtcclxuXHJcbiAgb25TdWNjZXNzRGVsZXRlUXVlc3Rpb25IYW5kbGVyID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmREZWxldGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gICAgdGhpcy5tYXN0ZXJMYXlvdXRTZXJ2aWNlLnJlbG9hZENvbXBvbmVudCgpO1xyXG4gIH07XHJcblxyXG4gIHNob3dEZWxldGVTdWJtaXNzaW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMuZGVsZXRlU3VibWlzc2lvbkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93RGVsZXRlTW9kYWwoaWQpO1xyXG4gIH07XHJcbiAgc2hvd0VsaW1pbmF0ZVN1Ym1pc3Npb25Nb2RhbCA9IChpZCkgPT4ge1xyXG4gICAgdGhpcy5lbGltaW5hdGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dFbGltaW5hdGVNb2RhbChpZCk7XHJcbiAgfTtcclxuICBzaG93VW5FbGltaW5hdGVTdWJtaXNzaW9uTW9kYWwgPSAoaWQpID0+IHtcclxuICAgIHRoaXMudW5FbGltaW5hdGVTdWJtaXNzaW9uQ29uZmlybWF0aW9uTW9kYWxDb250cm9sLnNob3dVbkVsaW1pbmF0ZU1vZGFsKGlkKTtcclxuICB9O1xyXG4gIG9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXJTdWJtaXNzaW9uID0gKHN1Y2Nlc3M6IGFueSkgPT4ge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZShcclxuICAgICAgdGhpcy5sKCdSZWNvcmREZWxldGVkJyksXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIG51bGwsXHJcbiAgICAgIGZhbHNlXHJcbiAgICApO1xyXG4gICAgdGhpcy5sb2FkU3VibWlzc2lvblNlY3Rpb24oKTtcclxuICB9O1xyXG4gIGxvYWRTdWJtaXNzaW9uU2VjdGlvbigpIHtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuTmFtZSA9ICdTZWFyY2hUZXh0Qm94JztcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5UcmltVGV4dE9uQ2hhbmdlID0gdHJ1ZTtcclxuICAgIHRoaXMuU2VhcmNoVGV4dEJveE9wdGlvbnMuUGxhY2Vob2xkZXIgPSB0aGlzLmwoJ1NlYXJjaCcpO1xyXG4gICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5FeHRyYUNsYXNzZXMgPVxyXG4gICAgICAnZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBmb3JtLWNvbnRyb2wtc29saWQgc2VhcmNoLWJveCc7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICB0aGlzLlNlYXJjaFRleHRCb3hPcHRpb25zLkljb24gPSAnLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9zZWFyY2guc3ZnJztcclxuXHJcbiAgICB0aGlzLnNlYXJjaFN1Ym1pc3Npb25UZXh0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID1cclxuICAgICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5OYW1lO1xyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gJ1NlYXJjaFRleHQnO1xyXG4gICAgdGhpcy5zZWFyY2hTdWJtaXNzaW9uVGV4dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveDtcclxuXHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuTmFtZSA9ICdTdXJ2ZXlJRCc7XHJcbiAgICB0aGlzLlN1cnZleUlET3B0aW9ucy5WYWx1ZSA9IHRoaXMuc3VydmV5SUQ7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID1cclxuICAgICAgdGhpcy5TdXJ2ZXlJRE9wdGlvbnMuTmFtZTtcclxuICAgIHRoaXMuc2VhcmNoU3VydmV5U3VibWlzc2lvbklERmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSAnU3VydmV5SUQnO1xyXG4gICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFN1cnZleVN1Ym1pc3Npb25JREZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94O1xyXG5cclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMgPSBuZXcgUGFnaW5nT3B0aW9ucygpO1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uT3B0aW9ucy5QYWdlU2l6ZSA9IDEwO1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uT3B0aW9ucy5EaXNhYmxlQmxvY2tVSSA9IHRydWU7XHJcbiAgICB0aGlzLnBhZ2luZ1N1Ym1pc3Npb25PcHRpb25zLkFjdGlvblBvc3RVUkwgPVxyXG4gICAgICB0aGlzLnN1cnZleVNlcnZpY2UuYXBpVVJMICsgJ0dldEFsbFN1cnZleVN1Ym1pc3Npb24nO1xyXG4gICAgdGhpcy5wYWdpbmdTdWJtaXNzaW9uT3B0aW9ucy5PbktleVByZXNzRmlsdGVyc0NvbnRyb2xOYW1lcyA9IFtcclxuICAgICAgdGhpcy5TZWFyY2hUZXh0Qm94T3B0aW9ucy5OYW1lLFxyXG4gICAgXTtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvbk9wdGlvbnMuRmlsdGVycyA9IFtcclxuICAgICAgdGhpcy5zZWFyY2hTdXJ2ZXlTdWJtaXNzaW9uSURGaWx0ZXIsXHJcbiAgICAgIHRoaXMuc2VhcmNoU3VibWlzc2lvblRleHRGaWx0ZXIsXHJcbiAgICBdO1xyXG4gIH1cclxuICBzZXRTdWJtaXNzaW9uTGlzdGluZ1Jlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMucGFnaW5nU3VibWlzc2lvblJlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuc2hvd1N1Ym1pc3Npb25QYWdlQ29udGVudCA9IHRydWU7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG4gIGxvYWRTdXJ2ZXlPdmVydmlldygpIHtcclxuICAgIHRoaXMuc3VydmV5U2VydmljZS5nZXRTdXJ2ZXlPdmVydmlldyh0aGlzLnN1cnZleUlEKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uT3ZlcnZpZXdSZXN1bHQgPSByZXMgYXMgYW55O1xyXG4gICAgICB0aGlzLnNob3dPdmVydmlldyA9IHRydWU7XHJcbiAgICAgIHRoaXMubG9hZENoYXJ0KHRoaXMucXVlc3Rpb25PdmVydmlld1Jlc3VsdFswXSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGV4cG9ydCA9ICgpID0+IHtcclxuICAgIHRoaXMuc3VydmV5U2VydmljZS5leHBvcnQodGhpcy5zdXJ2ZXlJRCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5kb3dubG9hZChyZXN1bHQgYXMgYW55IGFzIEJsb2IsIHRoaXMucGFnZVRpdGxlICsgJy54bHN4Jyk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBzZWFyY2hJblF1ZXN0aW9uTGlzdCh2YWx1ZSkge1xyXG4gICAgaWYgKHZhbHVlKVxyXG4gICAgICB0aGlzLnBhZ2luZ1F1ZXN0aW9uUmVzdWx0ID0gdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdE9yaWdpbmFsLmZpbHRlcihcclxuICAgICAgICAoaXRlbSkgPT4gaXRlbS5sb2NhbGl6ZWRUZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgKTtcclxuICAgIGVsc2UgdGhpcy5wYWdpbmdRdWVzdGlvblJlc3VsdCA9IHRoaXMucGFnaW5nUXVlc3Rpb25SZXN1bHRPcmlnaW5hbDtcclxuICB9XHJcbn1cclxuIiwiPCEtLXRvb2xiYXItLT5cclxuPGRpdiAqbmdJZj1cImxvYWRJbmZvXCI+XHJcbiAgPGJic2YtcGFnZS1oZWFkZXItY29tcG9uZW50IFtvcHRpb25zXT1cInBhZ2VIZWFkZXJPcHRpb25zXCI+PC9iYnNmLXBhZ2UtaGVhZGVyLWNvbXBvbmVudD5cclxuPC9kaXY+XHJcbjwhLS1lbmQgdG9vbGJhci0tPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLXh4bFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJpbmZvLWNvbnRhaW5lclwiICpuZ0lmPVwibG9hZEluZm9cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLW1hcmdpbi1ib3R0b21cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VydmVyeS1kYXRlIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ib3hlcyBhbGlnbi1pdGVtcy1iYXNlbGluZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IG5nYlRvb2x0aXA9XCJ7e2woJ0RhdGUnKX19XCIgY2xhc3M9XCJpY29uLWJveFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2xcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tNFwiIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2NhbGVuZGFyLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWNvdW50ZXItdGl0bGVcIiAqbmdJZj1cInN1cnZleS5zdGFydERhdGU9PW51bGxcIj5cclxuICAgICAgICAgICAgICAgIHt7bCgnTm90U3RhcnRlZFlldCcpfX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdXJ2ZXktY291bnRlci10aXRsZSBkLWZsZXggZmxleC1zdGFja1wiICpuZ0lmPVwic3VydmV5LnN0YXJ0RGF0ZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAge3tzdXJ2ZXkuc3RhcnREYXRlIHxzdXJ2ZXlEYXRlfX0gLSB7e3N1cnZleS5lbmREYXRlIT1udWxsPyhzdXJ2ZXkuZW5kRGF0ZXxzdXJ2ZXlEYXRlKTpcIlwifX1cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHRcIiAqbmdJZj1cInN1cnZleS5lbmREYXRlPT1udWxsXCI+e3tsKCdIYXNOb0VuZCcpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0XCIgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzKHN1cnZleS5zdGF0dXNJdGVtSUQpXCI+e3tzdXJ2ZXkubG9jYWxpemVkU3RhdHVzfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBuZ2JUb29sdGlwPVwie3tsKCdBdWRpZW5jZScpfX1cIiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0IG14LTJcIj57e3N1cnZleS5sb2NhbGl6ZWRBdWRpZW5jZX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBjYXJkLWRhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggKm5nSWY9XCJjYW5UYWtlU3VydmV5JiYgKHN1cnZleS5hdWRpZW5jZUl0ZW1JRD09QXVkaWVuY2VUeXBlRW51bS5JbnRlcm5hbHx8c3VydmV5LmF1ZGllbmNlSXRlbUlEPT1BdWRpZW5jZVR5cGVFbnVtLkJvdGgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiVGV4dEJveFdpdGhJbnRlcm5hbFVSTFwiIFtncm91cF09XCJ1cmxGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCAqbmdJZj1cImNhblRha2VTdXJ2ZXkmJiAoc3VydmV5LmF1ZGllbmNlSXRlbUlEPT1BdWRpZW5jZVR5cGVFbnVtLkV4dGVybmFsfHxzdXJ2ZXkuYXVkaWVuY2VJdGVtSUQ9PUF1ZGllbmNlVHlwZUVudW0uQm90aClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJUZXh0Qm94V2l0aEV4dGVybmFsVVJMXCIgW2dyb3VwXT1cInVybEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxwIGNsYXNzPVwiY2FyZC1kZXNjcmlwdGlvblwiICpuZ0lmPVwic3VydmV5LmxvY2FsaXplZERlc2NcIj5cclxuICAgICAgICB7e3N1cnZleS5sb2NhbGl6ZWREZXNjfX1cclxuICAgICAgPC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1tYXJnaW4tYm90dG9tXCI+XHJcbiAgICAgIDx1bCBuZ2JOYXYgI25hdj1cIm5nYk5hdlwiIGNsYXNzPVwibmF2IG5hdi1zdHJldGNoIG5hdi1saW5lLXRhYnMgbmF2LWN1c3RvbVwiPlxyXG4gICAgICAgIDxsaSBuZ2JOYXZJdGVtIGNsYXNzPVwibmF2LWl0ZW1cIiBbZGVzdHJveU9uSGlkZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8YSBjbGFzcz1cIm5hdi1saW5rXCIgbmdiTmF2TGluaz5cclxuICAgICAgICAgICAgPGg0PlxyXG4gICAgICAgICAgICAgIHt7bCgnUXVlc3Rpb25zJyl9fVxyXG4gICAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWluZm9cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFicy1zZWFyY2ggcGFnZS1zdWJoZWFkZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiU2VhcmNoVGV4dEJveE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1F1ZXN0aW9uRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPbkNoYW5nZSk9XCJzZWFyY2hJblF1ZXN0aW9uTGlzdCgkZXZlbnQpXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN1cnZleUlET3B0aW9uc1wiIFtncm91cF09XCJmaWx0ZXJzUXVlc3Rpb25Gb3JtXCIgaGlkZGVuPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJjYW5BZGRRdWVzdGlvbiYmZW5hYmxlQWN0aW9uc1wiIGNsYXNzPVwiYnRuIGJ0bi1icmFuZCBidG4tc20gc3ViaGVhZGVyLWJ0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93QWRkUXVlc3Rpb25Nb2RhbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7bCgnQWRkJyl9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBbaGlkZGVuXT1cInBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYk5hdkNvbnRlbnQgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1ZXN0aW9uLWluZm9cIiBbY2RrRHJhZ0Rpc2FibGVkXT1cImNhblRha2VTdXJ2ZXlcIiBjZGtEcmFnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcGFnaW5nUXVlc3Rpb25SZXN1bHQ7IGxldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMjVweCBtZS00XCIgY2RrRHJhZ0hhbmRsZSAqbmdJZj1cIiFjYW5UYWtlU3VydmV5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTdcIiBbaW5saW5lU1ZHXT1cIicvYXNzZXRzL2ltYWdlcy9yZW9yZGVyLnN2ZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtbGlzdGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnVHlwZScpfX1cIj57e2l0ZW0ubG9jYWxpemVkUXVlc3Rpb25UeXBlSXRlbX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnQXVkaWVuY2UnKX19XCI+e3tpdGVtLmxvY2FsaXplZEF1ZGllbmNlVHlwZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtYnJhbmQtbGlnaHQgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmlzUmVsYXRlZFRvU3VydmV5UXVlc3Rpb25cIj57e2woJ0xpbmtlZCcpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodCBteC0yXCIgKm5nSWY9XCIhaXRlbS5pc1Zpc2libGVcIiBuZ2JUb29sdGlwPVwie3tsKCdOb3RWaXNpYmxlJyl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsKFwiTm90VmlzaWJsZVwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiICpuZ0lmPVwiZW5hYmxlQWN0aW9uc1wiIGNsYXNzPVwiZHJvcGRvd24tY3VzdG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiRU4gPyAnYm90dG9tLXJpZ2h0JyA6ICdib3R0b20tbGVmdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlLWN1c3RvbSBidG4gYnRuLWNsZWFyXCIgbmdiRHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2NhcmQtZHJvcGRvd24uc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgY2xhc3M9XCJkcm9wZG93bi1tZW51LWN1c3RvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIShjYW5FZGl0UXVlc3Rpb24mJmNhbkRlbGV0ZVF1ZXN0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0UXVlc3Rpb25Nb2RhbChpdGVtLmlEX0dVSUQsdHJ1ZSlcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvaW5mby5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bChcIkRldGFpbHNcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjYW5FZGl0UXVlc3Rpb25cIiAoY2xpY2spPVwic2hvd0VkaXRRdWVzdGlvbk1vZGFsKGl0ZW0uaURfR1VJRCxmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcHByZXZlbnRkb3VibGVjbGljayB0eXBlPVwiYnV0dG9uXCIgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgW2lubGluZVNWR109XCInL2Fzc2V0cy9pbWFnZXMvRWRpdC5zdmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bChcIkVkaXRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJjYW5EZWxldGVRdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVRdWVzdGlvbk1vZGFsKGl0ZW0uaURfR1VJRClcIiBhcHBwcmV2ZW50ZG91YmxlY2xpY2sgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZydcIj48L3NwYW4+IHt7bChcIkRlbGV0ZVwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdXJ2ZXktY291bnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VydmV5LWNvdW50ZXItdGl0bGVcIj57e2l0ZW0ubG9jYWxpemVkVGV4dH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtYnJhbmQgYmFkZ2Utc3F1YXJlIG1zLTIgbWUtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7bCgnU2NvcmUnKX19XCI+e3tpdGVtLnRvdGFsU2NvcmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0UXVlc3Rpb25MaXN0aW5nUmVzdWx0KCRldmVudClcIiBbb3B0aW9uc109XCJwYWdpbmdRdWVzdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJmaWx0ZXJzUXVlc3Rpb25Gb3JtXCIgI3BhZ2luZ1F1ZXN0aW9uVmlld0VsZW1lbnQ+PC9CQlNGLVBhZ2luZz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxhcHAtbm8tcmVzdWx0cyAqbmdJZj1cInBhZ2luZ1F1ZXN0aW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+PC9hcHAtbm8tcmVzdWx0cz5cclxuXHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbVwiIFtkZXN0cm95T25IaWRlXT1cInRydWVcIj5cclxuICAgICAgICAgIDxhIGNsYXNzPVwibmF2LWxpbmtcIiBuZ2JOYXZMaW5rPlxyXG4gICAgICAgICAgICA8aDQ+XHJcbiAgICAgICAgICAgICAge3tsKCdTdWJtaXNzaW9ucycpfX1cclxuICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JOYXZDb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbmZvXCIgbmdiTmF2Q29udGVudD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFicy1zZWFyY2ggcGFnZS1zdWJoZWFkZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiU2VhcmNoVGV4dEJveE9wdGlvbnNcIiBbZ3JvdXBdPVwiZmlsdGVyc1N1Ym1pc3Npb25Gb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlN1cnZleUlET3B0aW9uc1wiIFtncm91cF09XCJmaWx0ZXJzU3VibWlzc2lvbkZvcm1cIiBoaWRkZW4+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tY29udGFpbmVyXCIgW2hpZGRlbl09XCJwYWdpbmdTdWJtaXNzaW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1jdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0YWJsZS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiB7e2woJ05hbWUnKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7bCgnRW1haWwnKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7bCgnVHlwZScpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3tsKCdDcmVhdGVkJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57e2woJ1Njb3JlJyl9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRhYmxlLWFjdGlvblwiICAqbmdJZj1cImVuYWJsZUFjdGlvbnNcIj57e2woXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHBhZ2luZ1N1Ym1pc3Npb25SZXN1bHQ7IGxldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmUtY2xhbXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmxvY2FsaXplZE5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1kYW5nZXIgbXgtMlwiICpuZ0lmPVwiaXRlbS5pc0VsaW1pbmF0ZWQmJml0ZW0uYWxsb3dFbGltaW5hdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2woJ0VsaW1pbmF0ZWQnKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmVtYWlsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmlzSW50ZXJuYWxVc2VyPyBsKCdJbnRlcm5hbFVzZXJzJyk6bCgnRXh0ZXJuYWxVc2VycycpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7aXRlbS5jcmVhdGVkfHN1cnZleURhdGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0udG90YWxTY29yZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGFibGUtYWN0aW9uXCIgICpuZ0lmPVwiZW5hYmxlQWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYlRvb2x0aXA9XCJ7e2woJ1ByZXZpZXcnKX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnLi4vLi4vaW5mby9yZXN1bHQnLCBpdGVtLmlEX0dVSURdXCIgY2xhc3M9XCJidG4gYnRuLXNtIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2Fuc3dlcnMuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCIhaXRlbS5pc0VsaW1pbmF0ZWQmJml0ZW0uYWxsb3dFbGltaW5hdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwie3t0aGlzLmwoJ0VsaW1pbmF0ZUhpbnQnKX19XCIgY2xhc3M9XCJidG4gYnRuLXNtIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0zXCIgKGNsaWNrKT1cInNob3dFbGltaW5hdGVTdWJtaXNzaW9uTW9kYWwoaXRlbS5pRF9HVUlEKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBwcmV2ZW50ZG91YmxlY2xpY2tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL3VubGluay5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIml0ZW0uaXNFbGltaW5hdGVkJiZpdGVtLmFsbG93RWxpbWluYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cInt7dGhpcy5sKCdVbkVsaW1pbmF0ZScpfX1cIiBjbGFzcz1cImJ0biBidG4tc20gcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTNcIiAoY2xpY2spPVwic2hvd1VuRWxpbWluYXRlU3VibWlzc2lvbk1vZGFsKGl0ZW0uaURfR1VJRClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcHJldmVudGRvdWJsZWNsaWNrIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL2xpbmsuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiVG9vbHRpcD1cInt7bCgnRGVsZXRlJyl9fVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tM1wiIChjbGljayk9XCJzaG93RGVsZXRlU3VibWlzc2lvbk1vZGFsKGl0ZW0uaURfR1VJRClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwcHJldmVudGRvdWJsZWNsaWNrIFtpbmxpbmVTVkddPVwiJy9hc3NldHMvaW1hZ2VzL1RyYXNoLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFN1Ym1pc3Npb25MaXN0aW5nUmVzdWx0KCRldmVudClcIiBbb3B0aW9uc109XCJwYWdpbmdTdWJtaXNzaW9uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJmaWx0ZXJzU3VibWlzc2lvbkZvcm1cIiAjcGFnaW5nU3VibWlzc2lvblZpZXdFbGVtZW50PjwvQkJTRi1QYWdpbmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YXBwLW5vLXJlc3VsdHMgKm5nSWY9XCJwYWdpbmdTdWJtaXNzaW9uUmVzdWx0Lmxlbmd0aCA9PSAwXCI+PC9hcHAtbm8tcmVzdWx0cz5cclxuXHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIG5nYk5hdkl0ZW0gY2xhc3M9XCJuYXYtaXRlbVwiICpuZ0lmPVwic2hvd092ZXJ2aWV3XCIgW2Rlc3Ryb3lPbkhpZGVdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJuYXYtbGlua1wiIG5nYk5hdkxpbmsgKGNsaWNrKT1cImxvYWRTdXJ2ZXlPdmVydmlldygpXCI+XHJcbiAgICAgICAgICAgIDxoND5cclxuICAgICAgICAgICAgICB7e2woXCJPdmVydmlld1wiKSB9fVxyXG4gICAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYk5hdkNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWluZm9cIiBuZ2JOYXZDb250ZW50PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC10aXRsZVwiPiB7e2woXCJRdWVzdGlvbnNcIikgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgbmdiTmF2ICNuYXY9XCJuZ2JOYXZcIiBjbGFzcz1cIm5hdi1waWxscyBjdXN0b20tbmF2c1wiIG9yaWVudGF0aW9uPVwidmVydGljYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsaSBuZ2JOYXZJdGVtPVwie3tpdGVtLmxvY2FsaXplZFRpdGxlfX1cIiBbZGVzdHJveU9uSGlkZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBxdWVzdGlvbk92ZXJ2aWV3UmVzdWx0XCIgKGNsaWNrKT1cImxvYWRDaGFydChpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBuZ2JOYXZMaW5rPnt7aXRlbS5sb2NhbGl6ZWRUaXRsZX19PC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC10aXRsZVwiPnt7bChcIk92ZXJ2aWV3XCIpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImNoYXJ0ZGl2XCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA0MDBweFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaWRlLWxvZ29cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hhcnQtdGl0bGVcIj57e2woXCJTY29yZVwiKSB9fSA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiY2hhcnRPdmVydmlld1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogNDAwcHhcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZS1sb2dvXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuXHJcbiAgICAgIDxkaXYgW25nYk5hdk91dGxldF09XCJuYXZcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiAgPGFwcC1lZGl0LXN1cnZleSAjZWRpdE1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ0VsZW1lbnRcIiBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NIYW5kbGVyXCI+PC9hcHAtZWRpdC1zdXJ2ZXk+XHJcbiAgPGFwcC1kZWxldGUtc3VydmV5ICNkZWxldGVDb25maXJtYXRpb25Nb2RhbENvbnRyb2wgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nRWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXJcIj48L2FwcC1kZWxldGUtc3VydmV5PlxyXG4gIDxhcHAtYWRkLXF1ZXN0aW9uICNhZGRRdWVzdGlvbk1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1F1ZXN0aW9uRWxlbWVudFwiIFtvblN1Y2Nlc3NBZGRIYW5kbGVyXT1cIm9uU3VjY2Vzc0FkZFF1ZXN0aW9uSGFuZGxlclwiPjwvYXBwLWFkZC1xdWVzdGlvbj5cclxuICA8YXBwLWVkaXQtcXVlc3Rpb24gI2VkaXRRdWVzdGlvbk1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1F1ZXN0aW9uRWxlbWVudFwiIFtvblN1Y2Nlc3NFZGl0SGFuZGxlcl09XCJvblN1Y2Nlc3NFZGl0UXVlc3Rpb25IYW5kbGVyXCI+PC9hcHAtZWRpdC1xdWVzdGlvbj5cclxuICA8YXBwLWRlbGV0ZS1xdWVzdGlvbiAjZGVsZXRlUXVlc3Rpb25Nb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdRdWVzdGlvbkVsZW1lbnRcIiBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NEZWxldGVRdWVzdGlvbkhhbmRsZXJcIj48L2FwcC1kZWxldGUtcXVlc3Rpb24+XHJcbiAgPGFwcC1wdWJsaXNoLXN1cnZleSAjYWRkUHVibGlzaE1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ0VsZW1lbnRcIiBbb25TdWNjZXNzSGFuZGxlcl09XCJvblN1Y2Nlc3NIYW5kbGVyXCIgKm5nSWY9XCJsb2FkSW5mb1wiIFtzaG93VG9nZ2xlXT1cInN1cnZleS5pc1Nob3dUb2dnbGVPZlNjb3JlUmVzdWx0QWZ0ZXJTdWJtaXNzaW9uXCI+XHJcbiAgPC9hcHAtcHVibGlzaC1zdXJ2ZXk+XHJcbiAgPGFwcC11bnB1Ymxpc2gtc3VydmV5ICNhZGRVblB1Ymxpc2hNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdFbGVtZW50XCIgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiPlxyXG4gIDwvYXBwLXVucHVibGlzaC1zdXJ2ZXk+XHJcbiAgPGFwcC1kZWxldGUtc3VibWlzc2lvbiAjZGVsZXRlU3VibWlzc2lvbk1vZGFsIFtwYWdpbmdFbGVtZW50XT1cInBhZ2luZ1N1Ym1pc3Npb25FbGVtZW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0RlbGV0ZUhhbmRsZXJTdWJtaXNzaW9uXCI+PC9hcHAtZGVsZXRlLXN1Ym1pc3Npb24+XHJcbiAgPGFwcC1lbGltaW5hdGUtc3VibWlzc2lvbiAjZWxpbWluYXRlTW9kYWwgW3BhZ2luZ0VsZW1lbnRdPVwicGFnaW5nU3VibWlzc2lvbkVsZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29uU3VjY2Vzc0hhbmRsZXJdPVwib25TdWNjZXNzSGFuZGxlclwiPjwvYXBwLWVsaW1pbmF0ZS1zdWJtaXNzaW9uPlxyXG4gIDxhcHAtdW5FbGltaW5hdGUtc3VibWlzc2lvbiAjdW5FbGltaW5hdGVNb2RhbCBbcGFnaW5nRWxlbWVudF09XCJwYWdpbmdTdWJtaXNzaW9uRWxlbWVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvblN1Y2Nlc3NIYW5kbGVyXT1cIm9uU3VjY2Vzc0hhbmRsZXJcIj48L2FwcC11bkVsaW1pbmF0ZS1zdWJtaXNzaW9uPlxyXG4iXX0=
|