@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
|
@@ -1,535 +1,535 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { FormGroup } from '@angular/forms';
|
|
3
|
-
import { CheckBoxOptions, ControlLayout, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, TextBoxOptions, ToggleSlideOptions } from '@bnsights/bbsf-controls';
|
|
4
|
-
import { ActivityType, ParticipantType, Righthandsidetype } from '../../../shared/constants';
|
|
5
|
-
import { ParticipantModel } from '../../../shared/models/ImpersonationRuleModels/ParticipantModel';
|
|
6
|
-
import { WFActivityModel } from '../../../shared/models/WorkflowModels/WFActivityModel';
|
|
7
|
-
import { WFActivityOutcomeModel } from '../../../shared/models/WorkflowModels/WFActivityOutcomeModel';
|
|
8
|
-
import { PageInfoService } from '../../../../_metronic/core/services/page-info.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../../../shared/Services/WorkflowActivityService.service";
|
|
11
|
-
import * as i2 from "@bnsights/bbsf-utilities";
|
|
12
|
-
import * as i3 from "@angular/router";
|
|
13
|
-
import * as i4 from "../../../../_metronic/core/services/page-info.service";
|
|
14
|
-
import * as i5 from "@angular/common";
|
|
15
|
-
import * as i6 from "@bnsights/bbsf-controls";
|
|
16
|
-
export class WorkflowActivityAddComponent {
|
|
17
|
-
constructor(workflowActivityService, utilityService, activatedRoute, pageInfoService, router, requestHandlerService, bbsfTranslateService) {
|
|
18
|
-
this.workflowActivityService = workflowActivityService;
|
|
19
|
-
this.utilityService = utilityService;
|
|
20
|
-
this.activatedRoute = activatedRoute;
|
|
21
|
-
this.pageInfoService = pageInfoService;
|
|
22
|
-
this.router = router;
|
|
23
|
-
this.requestHandlerService = requestHandlerService;
|
|
24
|
-
this.bbsfTranslateService = bbsfTranslateService;
|
|
25
|
-
//Page requirements
|
|
26
|
-
this.isAddFormLoaded = false;
|
|
27
|
-
//Add Activity shared controls
|
|
28
|
-
this.addworkflowActivityForm = new FormGroup({});
|
|
29
|
-
this.addworkflowActivityFormOptions = new FormOptions;
|
|
30
|
-
//Shared required lists
|
|
31
|
-
this.ActivityTypeList = [];
|
|
32
|
-
//Shared Participant type and data
|
|
33
|
-
this.showParticipantContainer = false;
|
|
34
|
-
this.showParticipantPermssionSet = false;
|
|
35
|
-
//Dynamic Types Controls //(Approval,Action,Percentage)
|
|
36
|
-
this.showDynamicControls = false;
|
|
37
|
-
//Static types controls (Email,Sleep)
|
|
38
|
-
//Email Type Controls //+ initialize participant
|
|
39
|
-
this.showStaticControls = false;
|
|
40
|
-
//Condition type controls
|
|
41
|
-
this.showConditionControls = false;
|
|
42
|
-
this.showConditionRHSWFVariable = false;
|
|
43
|
-
//Outcomes (dynamic,condition)
|
|
44
|
-
this.outcomesOptions = [];
|
|
45
|
-
this.outcomesCount = 0;
|
|
46
|
-
this.showOutcomesContainer = false;
|
|
47
|
-
//RequiredLists
|
|
48
|
-
this.taskTypeList = [];
|
|
49
|
-
this.participantTypeList = [];
|
|
50
|
-
this.participantDataList = [];
|
|
51
|
-
this.nextActivityList = [];
|
|
52
|
-
//ConditionTypeRequiredLists
|
|
53
|
-
this.conditionLHSWFVariableList = [];
|
|
54
|
-
this.conditionRHSWFVariableList = [];
|
|
55
|
-
this.conditionRHSTypeList = [];
|
|
56
|
-
this.conditionList = [];
|
|
57
|
-
//Add functions
|
|
58
|
-
this.getAddWFActivityModel = () => {
|
|
59
|
-
let paramArray = [];
|
|
60
|
-
let ResultModel = this.addworkflowActivityForm.value;
|
|
61
|
-
let addModel = new WFActivityModel();
|
|
62
|
-
addModel.Name = ResultModel.Name;
|
|
63
|
-
addModel.SysName = ResultModel.SysName;
|
|
64
|
-
addModel.VersionID_GUID = this.versionID;
|
|
65
|
-
addModel.ActivityTypeItemID_GUID = ResultModel.ActivityTypeItemID_GUID?.toLowerCase();
|
|
66
|
-
//If participant exists
|
|
67
|
-
if (ResultModel["ParticipantDTO.ParticipantTypeItemIDsString"] != undefined) {
|
|
68
|
-
addModel.ParticipantDTO = new ParticipantModel();
|
|
69
|
-
addModel.ParticipantDTO = new ParticipantModel();
|
|
70
|
-
addModel.ParticipantDTO.ParticipantTypeItemIDsString = ResultModel["ParticipantDTO.ParticipantTypeItemIDsString"].toString();
|
|
71
|
-
if (ResultModel["ParticipantDTO.ParticipantTypeItemIDsString"].includes(ParticipantType.PermissionSet)) {
|
|
72
|
-
addModel.ParticipantDTO.PermissionSetIDsString = ResultModel["ParticipantDTO.PermissionSetIDsString"].toString();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
switch (addModel.ActivityTypeItemID_GUID) {
|
|
76
|
-
case ActivityType.Approval:
|
|
77
|
-
case ActivityType.Action:
|
|
78
|
-
case ActivityType.PercentageTask:
|
|
79
|
-
addModel.TaskName = ResultModel.TaskName;
|
|
80
|
-
addModel.TaskDescription = ResultModel.TaskDescription;
|
|
81
|
-
addModel.TaskURL = ResultModel.TaskURL;
|
|
82
|
-
addModel.TaskCorrlTypeID = ResultModel.TaskCorrlTypeID != null ? Number(ResultModel.TaskCorrlTypeID) : null;
|
|
83
|
-
addModel.CanCompleteFromTME = ResultModel.CanCompleteFromTME;
|
|
84
|
-
break;
|
|
85
|
-
case ActivityType.Email:
|
|
86
|
-
case ActivityType.Sleep:
|
|
87
|
-
addModel.NormalOutcomeName = ResultModel.NormalOutcomeName;
|
|
88
|
-
addModel.OutcomeSysName = ResultModel.OutcomeSysName;
|
|
89
|
-
addModel.NextActivityID_GUID = ResultModel.NextActivityID_GUID;
|
|
90
|
-
addModel.CanAddComment = ResultModel.CanAddComment;
|
|
91
|
-
break;
|
|
92
|
-
case ActivityType.Condition:
|
|
93
|
-
addModel.LHSVariableID_GUID = ResultModel.LHSVariableID_GUID;
|
|
94
|
-
addModel.RHSVariableID_GUID = ResultModel.RHSVariableID_GUID;
|
|
95
|
-
addModel.RHSTypeItemID_GUID = ResultModel.RHSTypeItemID_GUID;
|
|
96
|
-
addModel.OperatorTypeItemID_GUID = ResultModel.OperatorTypeItemID_GUID;
|
|
97
|
-
addModel.RHSValue = ResultModel.RHSValue != undefined ? ResultModel.RHSValue : null;
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
//Set Outcomes (dynamic,condition types)
|
|
101
|
-
for (let j = 0; j < this.outcomesCount; j++) {
|
|
102
|
-
let outcomeID = ResultModel["outcomeID" + j];
|
|
103
|
-
if (outcomeID == undefined)
|
|
104
|
-
continue;
|
|
105
|
-
let outcomeName = ResultModel["outcomeName" + j];
|
|
106
|
-
let outcomeSysName;
|
|
107
|
-
let outComeCanEditSysName = ResultModel["outcomeCanEditSysName" + j];
|
|
108
|
-
if (outComeCanEditSysName)
|
|
109
|
-
outcomeSysName = ResultModel["outcomeDecisionSysName" + j];
|
|
110
|
-
else
|
|
111
|
-
outcomeSysName = ResultModel["outcomeHiddeneSysName" + j];
|
|
112
|
-
let outcomeActivity = ResultModel["outcomeNextActivityTypes" + j];
|
|
113
|
-
let outcomeCanAddComment = ResultModel["outcomeCanAddComment" + j];
|
|
114
|
-
let activityOutcome = new WFActivityOutcomeModel();
|
|
115
|
-
activityOutcome.ID_GUID = outcomeID;
|
|
116
|
-
activityOutcome.NameEN = outcomeName.English;
|
|
117
|
-
activityOutcome.NameAR = outcomeName.Arabic;
|
|
118
|
-
activityOutcome.OutcomeSysName = outcomeSysName;
|
|
119
|
-
activityOutcome.NextActivityID_GUID = outcomeActivity;
|
|
120
|
-
activityOutcome.CanAddComment = outcomeCanAddComment;
|
|
121
|
-
addModel.Outcomes.push(activityOutcome);
|
|
122
|
-
}
|
|
123
|
-
paramArray.push(addModel);
|
|
124
|
-
return paramArray;
|
|
125
|
-
};
|
|
126
|
-
this.getAddWFActivityFunction = (AddModel) => {
|
|
127
|
-
return this.workflowActivityService.addWorkflowActivity(AddModel);
|
|
128
|
-
};
|
|
129
|
-
this.onAddSuccess = (result) => {
|
|
130
|
-
this.cancelAdd();
|
|
131
|
-
};
|
|
132
|
-
this.activatedRoute.params.subscribe(params => {
|
|
133
|
-
this.versionID = params['vid'];
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
async ngOnInit() {
|
|
137
|
-
PageInfoService.PageTitle = "";
|
|
138
|
-
PageInfoService.PageBreadcrumbs = [];
|
|
139
|
-
this.bbsfTranslateService.onLangChange.subscribe((event) => {
|
|
140
|
-
this.ngOnInit();
|
|
141
|
-
});
|
|
142
|
-
PageInfoService.PageTitle = this.utilityService.getResourceValue("AddWorkflowActivity");
|
|
143
|
-
PageInfoService.PageBreadcrumbs = [
|
|
144
|
-
{ title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
|
|
145
|
-
{ title: '', path: '', isSeparator: true, isActive: false },
|
|
146
|
-
{ title: this.utilityService.getResourceValue("WorkFlows"), path: '/Admin/Workflows/workflow', isSeparator: false, isActive: false },
|
|
147
|
-
{ title: '', path: '', isSeparator: true, isActive: false }
|
|
148
|
-
];
|
|
149
|
-
this.pageInfoService.calculateTitle();
|
|
150
|
-
this.pageInfoService.calculateBreadcrumbs();
|
|
151
|
-
this.initializePage();
|
|
152
|
-
}
|
|
153
|
-
//Initialize add page and required DDLs
|
|
154
|
-
initializePage() {
|
|
155
|
-
this.workflowActivityService.loadAddDropdowns().subscribe((result) => {
|
|
156
|
-
let resultObj = result;
|
|
157
|
-
this.ActivityTypeList = resultObj.activityList;
|
|
158
|
-
this.addworkflowActivityForm = new FormGroup({});
|
|
159
|
-
this.addworkflowActivityFormOptions = new FormOptions();
|
|
160
|
-
this.addworkflowActivityFormOptions.FormGroup = this.addworkflowActivityForm;
|
|
161
|
-
this.addworkflowActivityFormOptions.GetModelFunction = this.getAddWFActivityModel;
|
|
162
|
-
this.addworkflowActivityFormOptions.ServiceSubmitFunction = this.getAddWFActivityFunction;
|
|
163
|
-
this.addworkflowActivityFormOptions.OnSuccessHandler = this.onAddSuccess;
|
|
164
|
-
this.name = new MultiLingualTextBoxOptions();
|
|
165
|
-
this.name.Name = "Name";
|
|
166
|
-
this.name.ArabicLabelKey = "NameInArabic";
|
|
167
|
-
this.name.EnglishLabelKey = "NameInEnglish";
|
|
168
|
-
this.name.IsRequired = true;
|
|
169
|
-
this.name.MaxLength = 255;
|
|
170
|
-
this.sysName = new TextBoxOptions();
|
|
171
|
-
this.sysName.Name = "SysName";
|
|
172
|
-
this.sysName.LabelKey = "SysName";
|
|
173
|
-
this.sysName.Type = InputType.Text;
|
|
174
|
-
this.sysName.IsRequired = true;
|
|
175
|
-
this.sysName.MaxLength = 100;
|
|
176
|
-
this.activityType = new DropdownOptions();
|
|
177
|
-
this.activityType.Name = "ActivityTypeItemID_GUID";
|
|
178
|
-
this.activityType.LabelKey = "ActivityType";
|
|
179
|
-
this.activityType.DataSource = this.ActivityTypeList;
|
|
180
|
-
this.activityType.SingleSelection = true;
|
|
181
|
-
this.activityType.AllowSearchFilter = true;
|
|
182
|
-
this.activityType.IsRequired = true;
|
|
183
|
-
this.isAddFormLoaded = true;
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
//Outcome functions
|
|
187
|
-
getActivityOutcomesOptions(outComes) {
|
|
188
|
-
let outcomesOptions = [];
|
|
189
|
-
let outcomesCount = 0;
|
|
190
|
-
for (let i = 0; i < outComes.length; i++) {
|
|
191
|
-
let currentOutcome = outComes[i];
|
|
192
|
-
let objectOutcomeOptions = [];
|
|
193
|
-
let outcomeID = new TextBoxOptions();
|
|
194
|
-
outcomeID.Name = "outcomeID" + i;
|
|
195
|
-
outcomeID.HideLabel = true;
|
|
196
|
-
outcomeID.Type = InputType.Text;
|
|
197
|
-
outcomeID.Value = currentOutcome.iD_GUID;
|
|
198
|
-
let name = new EnglishArabicDTO();
|
|
199
|
-
name.English = currentOutcome.nameEN;
|
|
200
|
-
name.Arabic = currentOutcome.nameAR;
|
|
201
|
-
let outcomeName = new MultiLingualTextBoxOptions();
|
|
202
|
-
outcomeName.Name = "outcomeName" + i;
|
|
203
|
-
outcomeName.ArabicLabelKey = "NameInArabic";
|
|
204
|
-
outcomeName.EnglishLabelKey = "NameInEnglish";
|
|
205
|
-
outcomeName.Value = name;
|
|
206
|
-
outcomeName.IsRequired = true;
|
|
207
|
-
outcomeName.MaxLength = 255;
|
|
208
|
-
let outcomeDecisionSysName = new TextBoxOptions();
|
|
209
|
-
outcomeDecisionSysName.Name = "outcomeDecisionSysName" + i;
|
|
210
|
-
outcomeDecisionSysName.LabelKey = "DecisionSysName";
|
|
211
|
-
outcomeDecisionSysName.Type = InputType.Text;
|
|
212
|
-
outcomeDecisionSysName.Value = currentOutcome.outcomeSysName;
|
|
213
|
-
outcomeDecisionSysName.IsDisabled = !currentOutcome.canEditSysName;
|
|
214
|
-
outcomeDecisionSysName.IsRequired = true;
|
|
215
|
-
outcomeDecisionSysName.MaxLength = 100;
|
|
216
|
-
let outcomeNextActivityTypes = new DropdownOptions();
|
|
217
|
-
outcomeNextActivityTypes.Name = "outcomeNextActivityTypes" + i;
|
|
218
|
-
outcomeNextActivityTypes.LabelKey = "Activity";
|
|
219
|
-
outcomeNextActivityTypes.DataSource = this.nextActivityList;
|
|
220
|
-
outcomeNextActivityTypes.SingleSelection = true;
|
|
221
|
-
outcomeNextActivityTypes.AllowSearchFilter = true;
|
|
222
|
-
let outcomeCanAddComment = new CheckBoxOptions();
|
|
223
|
-
outcomeCanAddComment.Name = "outcomeCanAddComment" + i;
|
|
224
|
-
outcomeCanAddComment.Value = currentOutcome.canAddComment;
|
|
225
|
-
outcomeCanAddComment.LabelKey = "CanAddComment";
|
|
226
|
-
let outcomeCanEdit;
|
|
227
|
-
outcomeCanEdit = currentOutcome.canEdit;
|
|
228
|
-
let outcomeHiddeneSysName = new TextBoxOptions();
|
|
229
|
-
outcomeHiddeneSysName.Name = "outcomeHiddeneSysName" + i;
|
|
230
|
-
outcomeHiddeneSysName.Type = InputType.Text;
|
|
231
|
-
outcomeHiddeneSysName.Value = currentOutcome.outcomeSysName;
|
|
232
|
-
let outcomeCanEditSysName = new CheckBoxOptions();
|
|
233
|
-
outcomeCanEditSysName.Name = "outcomeCanEditSysName" + i;
|
|
234
|
-
outcomeCanEditSysName.Value = currentOutcome.canEditSysName;
|
|
235
|
-
objectOutcomeOptions.push(outcomeID, outcomeName, outcomeDecisionSysName, outcomeNextActivityTypes, outcomeCanAddComment, outcomeCanEdit, outcomeHiddeneSysName, outcomeCanEditSysName);
|
|
236
|
-
outcomesOptions.push(objectOutcomeOptions);
|
|
237
|
-
outcomesCount += 1;
|
|
238
|
-
}
|
|
239
|
-
return [outcomesOptions, outcomesCount];
|
|
240
|
-
}
|
|
241
|
-
addWFActivityOutcome() {
|
|
242
|
-
let index = this.outcomesCount;
|
|
243
|
-
let objectOutcomeOptions = [];
|
|
244
|
-
let outcomeID = new TextBoxOptions();
|
|
245
|
-
outcomeID.Name = "outcomeID" + index;
|
|
246
|
-
outcomeID.HideLabel = true;
|
|
247
|
-
outcomeID.Type = InputType.Text;
|
|
248
|
-
outcomeID.Value = 0;
|
|
249
|
-
let outcomeName = new MultiLingualTextBoxOptions();
|
|
250
|
-
outcomeName.Name = "outcomeName" + index;
|
|
251
|
-
outcomeName.ArabicLabelKey = "NameInArabic";
|
|
252
|
-
outcomeName.EnglishLabelKey = "NameInEnglish";
|
|
253
|
-
outcomeName.IsRequired = true;
|
|
254
|
-
let outcomeDecisionSysName = new TextBoxOptions();
|
|
255
|
-
outcomeDecisionSysName.Name = "outcomeDecisionSysName" + index;
|
|
256
|
-
outcomeDecisionSysName.LabelKey = "DecisionSysName";
|
|
257
|
-
outcomeDecisionSysName.Type = InputType.Text;
|
|
258
|
-
outcomeDecisionSysName.IsRequired = true;
|
|
259
|
-
let outcomeNextActivityTypes = new DropdownOptions();
|
|
260
|
-
outcomeNextActivityTypes.Name = "outcomeNextActivityTypes" + index;
|
|
261
|
-
outcomeNextActivityTypes.LabelKey = "Activity";
|
|
262
|
-
outcomeNextActivityTypes.DataSource = this.nextActivityList;
|
|
263
|
-
outcomeNextActivityTypes.SingleSelection = true;
|
|
264
|
-
outcomeNextActivityTypes.AllowSearchFilter = true;
|
|
265
|
-
let outcomeCanAddComment = new CheckBoxOptions();
|
|
266
|
-
outcomeCanAddComment.Name = "outcomeCanAddComment" + index;
|
|
267
|
-
outcomeCanAddComment.LabelKey = "CanAddComment";
|
|
268
|
-
let outcomeCanEdit;
|
|
269
|
-
outcomeCanEdit = true;
|
|
270
|
-
let outcomeHiddeneSysName = new TextBoxOptions();
|
|
271
|
-
outcomeHiddeneSysName.Name = "outcomeHiddeneSysName" + index;
|
|
272
|
-
outcomeHiddeneSysName.Type = InputType.Text;
|
|
273
|
-
let outcomeCanEditSysName = new CheckBoxOptions();
|
|
274
|
-
outcomeCanEditSysName.Name = "outcomeCanEditSysName" + index;
|
|
275
|
-
outcomeCanEditSysName.Value = true;
|
|
276
|
-
objectOutcomeOptions.push(outcomeID, outcomeName, outcomeDecisionSysName, outcomeNextActivityTypes, outcomeCanAddComment, outcomeCanEdit, outcomeHiddeneSysName, outcomeCanEditSysName);
|
|
277
|
-
this.outcomesOptions.push(objectOutcomeOptions);
|
|
278
|
-
this.outcomesCount += 1;
|
|
279
|
-
}
|
|
280
|
-
deleteOutcome(deletedOutcome) {
|
|
281
|
-
let deletedOutcomeIndex = this.outcomesOptions.indexOf(deletedOutcome);
|
|
282
|
-
if (deletedOutcomeIndex !== -1) {
|
|
283
|
-
this.outcomesOptions.splice(deletedOutcomeIndex, 1);
|
|
284
|
-
for (var i = 0; i < deletedOutcome.length; i++) {
|
|
285
|
-
this.addworkflowActivityForm.removeControl(deletedOutcome[i].Name);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
//On changes events
|
|
290
|
-
activityTypeOnChange(activityType) {
|
|
291
|
-
activityType = activityType?.toLowerCase();
|
|
292
|
-
//Reset controls, outcomes and flags
|
|
293
|
-
this.resetAllActivityTypeControls();
|
|
294
|
-
this.outcomesOptions = [];
|
|
295
|
-
this.outcomesCount = 0;
|
|
296
|
-
this.showParticipantContainer = false;
|
|
297
|
-
this.showDynamicControls = false;
|
|
298
|
-
this.showStaticControls = false;
|
|
299
|
-
this.showConditionControls = false;
|
|
300
|
-
this.showConditionRHSWFVariable = false;
|
|
301
|
-
this.showOutcomesContainer = false;
|
|
302
|
-
this.workflowActivityService.getActivityOutcomes(this.versionID, activityType).subscribe((result) => {
|
|
303
|
-
var resultObj = result;
|
|
304
|
-
var model = resultObj.model;
|
|
305
|
-
var list = resultObj.list;
|
|
306
|
-
this.nextActivityList = list.activities;
|
|
307
|
-
switch (activityType) {
|
|
308
|
-
case ActivityType.Approval:
|
|
309
|
-
case ActivityType.Action:
|
|
310
|
-
case ActivityType.PercentageTask:
|
|
311
|
-
this.taskTypeList = list.tasks;
|
|
312
|
-
this.participantTypeList = list.participants.participantTypes;
|
|
313
|
-
this.participantDataList = list.participants.participantData;
|
|
314
|
-
//Initialize required controls for approval
|
|
315
|
-
this.participantTypes = new DropdownOptions();
|
|
316
|
-
this.participantTypes.Name = "ParticipantDTO.ParticipantTypeItemIDsString";
|
|
317
|
-
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
318
|
-
this.participantTypes.DataSource = this.participantTypeList;
|
|
319
|
-
this.participantTypes.SingleSelection = false;
|
|
320
|
-
this.participantTypes.AllowSearchFilter = true;
|
|
321
|
-
this.participantTypes.IsRequired = true;
|
|
322
|
-
this.dynamicTaskName = new MultiLingualTextBoxOptions();
|
|
323
|
-
this.dynamicTaskName.Name = "TaskName";
|
|
324
|
-
this.dynamicTaskName.ArabicLabelKey = "TaskNameInArabic";
|
|
325
|
-
this.dynamicTaskName.EnglishLabelKey = "TaskNameInEnglish";
|
|
326
|
-
this.dynamicTaskName.MaxLength = 255;
|
|
327
|
-
this.dynamicTaskDescription = new MultiLingualTextAreaOptions();
|
|
328
|
-
this.dynamicTaskDescription.Name = "TaskDescription";
|
|
329
|
-
this.dynamicTaskDescription.ArabicLabelKey = "TaskDescriptionInArabic";
|
|
330
|
-
this.dynamicTaskDescription.EnglishLabelKey = "TaskDescriptionInEnglish";
|
|
331
|
-
this.dynamicTaskDescription.MaxLength = 255;
|
|
332
|
-
this.dynamicTaskURL = new TextBoxOptions();
|
|
333
|
-
this.dynamicTaskURL.Name = "TaskURL";
|
|
334
|
-
this.dynamicTaskURL.LabelKey = "TaskURL";
|
|
335
|
-
this.dynamicTaskURL.Type = InputType.Text;
|
|
336
|
-
this.dynamicTaskURL.MaxLength = 2083;
|
|
337
|
-
this.dynamicTaskType = new DropdownOptions();
|
|
338
|
-
this.dynamicTaskType.Name = "TaskCorrlTypeID";
|
|
339
|
-
this.dynamicTaskType.LabelKey = "TaskType";
|
|
340
|
-
this.dynamicTaskType.DataSource = this.taskTypeList;
|
|
341
|
-
this.dynamicTaskType.SingleSelection = true;
|
|
342
|
-
this.dynamicTaskType.AllowSearchFilter = true;
|
|
343
|
-
this.dynamicTaskType.IsRequired = true;
|
|
344
|
-
this.dynamicCanComplete = new ToggleSlideOptions();
|
|
345
|
-
this.dynamicCanComplete.Name = "CanCompleteFromTME";
|
|
346
|
-
this.dynamicCanComplete.LabelKey = "CanCompleteFromTME";
|
|
347
|
-
this.dynamicCanComplete.ViewType = ControlLayout.Horizontal;
|
|
348
|
-
this.dynamicCanComplete.Value = model.canCompleteFromTME;
|
|
349
|
-
let outcomesResult = this.getActivityOutcomesOptions(model.outcomes);
|
|
350
|
-
this.outcomesOptions = outcomesResult[0];
|
|
351
|
-
this.outcomesCount = outcomesResult[1];
|
|
352
|
-
this.showDynamicControls = true;
|
|
353
|
-
this.showParticipantContainer = true;
|
|
354
|
-
this.showOutcomesContainer = true;
|
|
355
|
-
break;
|
|
356
|
-
case ActivityType.Email:
|
|
357
|
-
case ActivityType.Sleep:
|
|
358
|
-
if (activityType == ActivityType.Email) {
|
|
359
|
-
this.participantTypeList = list.participants.participantTypes;
|
|
360
|
-
this.participantDataList = list.participants.participantData;
|
|
361
|
-
this.participantTypes = new DropdownOptions();
|
|
362
|
-
this.participantTypes.Name = "ParticipantDTO.ParticipantTypeItemIDsString";
|
|
363
|
-
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
364
|
-
this.participantTypes.DataSource = this.participantTypeList;
|
|
365
|
-
this.participantTypes.SingleSelection = false;
|
|
366
|
-
this.participantTypes.AllowSearchFilter = true;
|
|
367
|
-
this.participantTypes.IsRequired = true;
|
|
368
|
-
this.showParticipantContainer = true;
|
|
369
|
-
}
|
|
370
|
-
let name = new EnglishArabicDTO();
|
|
371
|
-
name.Arabic = model.normalOutcomeName.arabic;
|
|
372
|
-
name.English = model.normalOutcomeName.english;
|
|
373
|
-
this.staticOutcomeName = new MultiLingualTextBoxOptions();
|
|
374
|
-
this.staticOutcomeName.Name = "NormalOutcomeName";
|
|
375
|
-
this.staticOutcomeName.ArabicLabelKey = "OutcomeNameInArabic";
|
|
376
|
-
this.staticOutcomeName.EnglishLabelKey = "OutcomeNameInEnglish";
|
|
377
|
-
this.staticOutcomeName.IsRequired = true;
|
|
378
|
-
this.staticOutcomeName.Value = name;
|
|
379
|
-
this.staticOutcomeName.MaxLength = 255;
|
|
380
|
-
this.staticOutcomeSysName = new TextBoxOptions();
|
|
381
|
-
this.staticOutcomeSysName.Name = "OutcomeSysName";
|
|
382
|
-
this.staticOutcomeSysName.LabelKey = "DecisionSysName";
|
|
383
|
-
this.staticOutcomeSysName.Type = InputType.Text;
|
|
384
|
-
this.staticOutcomeSysName.IsRequired = true;
|
|
385
|
-
this.staticOutcomeSysName.MaxLength = 100;
|
|
386
|
-
this.staticOutcomeNextActivity = new DropdownOptions();
|
|
387
|
-
this.staticOutcomeNextActivity.Name = "NextActivityID_GUID";
|
|
388
|
-
this.staticOutcomeNextActivity.LabelKey = "NextActivity";
|
|
389
|
-
this.staticOutcomeNextActivity.DataSource = this.nextActivityList;
|
|
390
|
-
this.staticOutcomeNextActivity.SingleSelection = true;
|
|
391
|
-
this.staticOutcomeNextActivity.AllowSearchFilter = true;
|
|
392
|
-
this.staticOutcomeNextActivity.IsRequired = true;
|
|
393
|
-
this.staticOutcomeCanAddComment = new ToggleSlideOptions();
|
|
394
|
-
this.staticOutcomeCanAddComment.Name = "CanAddComment";
|
|
395
|
-
this.staticOutcomeCanAddComment.LabelKey = "CanAddComment";
|
|
396
|
-
this.staticOutcomeCanAddComment.ViewType = ControlLayout.Horizontal;
|
|
397
|
-
this.staticOutcomeCanAddComment.Value = model.canAddComment;
|
|
398
|
-
this.showStaticControls = true;
|
|
399
|
-
break;
|
|
400
|
-
case ActivityType.Condition:
|
|
401
|
-
this.conditionLHSWFVariableList = list.wfVariables;
|
|
402
|
-
this.conditionRHSWFVariableList = list.wfVariables;
|
|
403
|
-
this.conditionRHSTypeList = list.rhsTypes;
|
|
404
|
-
this.conditionList = list.conditions;
|
|
405
|
-
this.conditionLHSDropDown = new DropdownOptions();
|
|
406
|
-
this.conditionLHSDropDown.Name = "LHSVariableID_GUID";
|
|
407
|
-
this.conditionLHSDropDown.HideLabel = true;
|
|
408
|
-
this.conditionLHSDropDown.Placeholder = "WorkflowVariables";
|
|
409
|
-
this.conditionLHSDropDown.DataSource = this.conditionLHSWFVariableList;
|
|
410
|
-
this.conditionLHSDropDown.SingleSelection = true;
|
|
411
|
-
this.conditionLHSDropDown.AllowSearchFilter = true;
|
|
412
|
-
this.conditionLHSDropDown.IsRequired = true;
|
|
413
|
-
this.conditionsDropDown = new DropdownOptions();
|
|
414
|
-
this.conditionsDropDown.Name = "OperatorTypeItemID_GUID";
|
|
415
|
-
this.conditionsDropDown.HideLabel = true;
|
|
416
|
-
this.conditionsDropDown.Placeholder = "Condition";
|
|
417
|
-
this.conditionsDropDown.DataSource = this.conditionList;
|
|
418
|
-
this.conditionsDropDown.SingleSelection = true;
|
|
419
|
-
this.conditionsDropDown.IsRequired = true;
|
|
420
|
-
let selectedRHSType = this.conditionRHSTypeList.filter((item) => { return item.key?.toLowerCase() == Righthandsidetype.Variable; }).map((item) => item.key)[0];
|
|
421
|
-
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
422
|
-
this.conditionRHSTypeDropDown.Name = "RHSTypeItemID_GUID";
|
|
423
|
-
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
424
|
-
this.conditionRHSTypeDropDown.DataSource = this.conditionRHSTypeList;
|
|
425
|
-
this.conditionRHSTypeDropDown.SingleSelection = true;
|
|
426
|
-
this.conditionRHSTypeDropDown.IsRequired = true;
|
|
427
|
-
this.conditionRHSTypeDropDown.SelectedItems = selectedRHSType;
|
|
428
|
-
this.conditionRHSDropDown = new DropdownOptions();
|
|
429
|
-
this.conditionRHSDropDown.Name = "RHSVariableID_GUID";
|
|
430
|
-
this.conditionRHSDropDown.HideLabel = true;
|
|
431
|
-
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
432
|
-
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
433
|
-
this.conditionRHSDropDown.SingleSelection = true;
|
|
434
|
-
this.conditionRHSDropDown.IsRequired = true;
|
|
435
|
-
let conditionOutcomesResult = this.getActivityOutcomesOptions(model.outcomes);
|
|
436
|
-
this.outcomesOptions = conditionOutcomesResult[0];
|
|
437
|
-
this.outcomesCount = conditionOutcomesResult[1];
|
|
438
|
-
this.showConditionControls = true;
|
|
439
|
-
this.showConditionRHSWFVariable = true;
|
|
440
|
-
this.showOutcomesContainer = true;
|
|
441
|
-
break;
|
|
442
|
-
}
|
|
443
|
-
this.canAddOutcome = this.showOutcomesContainer ? model.canAddOutcome : false;
|
|
444
|
-
});
|
|
445
|
-
}
|
|
446
|
-
conditionRHSTypeOnChange(type) {
|
|
447
|
-
type = type.toLowerCase();
|
|
448
|
-
if (type == Righthandsidetype.Variable) {
|
|
449
|
-
this.addworkflowActivityForm.removeControl("RHSValue");
|
|
450
|
-
this.conditionRHSDropDown = new DropdownOptions();
|
|
451
|
-
this.conditionRHSDropDown.Name = "RHSVariableID_GUID";
|
|
452
|
-
this.conditionRHSDropDown.HideLabel = true;
|
|
453
|
-
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
454
|
-
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
455
|
-
this.conditionRHSDropDown.SingleSelection = true;
|
|
456
|
-
this.conditionRHSDropDown.IsRequired = true;
|
|
457
|
-
this.showConditionRHSWFVariable = true;
|
|
458
|
-
}
|
|
459
|
-
else {
|
|
460
|
-
this.addworkflowActivityForm.removeControl("RHSVariableID_GUID");
|
|
461
|
-
this.conditionRHSValue = new TextBoxOptions();
|
|
462
|
-
this.conditionRHSValue.Name = "RHSValue";
|
|
463
|
-
this.conditionRHSValue.HideLabel = true;
|
|
464
|
-
this.conditionRHSValue.Placeholder = "Value";
|
|
465
|
-
this.conditionRHSValue.Type = InputType.Text;
|
|
466
|
-
this.conditionRHSValue.IsRequired = true;
|
|
467
|
-
this.conditionRHSValue.MaxLength = 512;
|
|
468
|
-
this.showConditionRHSWFVariable = false;
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
participantTypeOnChange(participantType) {
|
|
472
|
-
participantType = participantType?.toLowerCase();
|
|
473
|
-
if (participantType == ParticipantType.PermissionSet) {
|
|
474
|
-
this.participantPermissionSet = new DropdownOptions();
|
|
475
|
-
this.participantPermissionSet.Name = "ParticipantDTO.PermissionSetIDsString";
|
|
476
|
-
this.participantPermissionSet.LabelKey = "PermissionSet";
|
|
477
|
-
this.participantPermissionSet.DataSource = this.participantDataList;
|
|
478
|
-
this.participantPermissionSet.SingleSelection = false;
|
|
479
|
-
this.participantPermissionSet.AllowSearchFilter = true;
|
|
480
|
-
this.showParticipantPermssionSet = true;
|
|
481
|
-
}
|
|
482
|
-
else {
|
|
483
|
-
this.addworkflowActivityForm.removeControl("ParticipantDTO.PermissionSetIDsString");
|
|
484
|
-
this.showParticipantPermssionSet = false;
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
//reset type
|
|
488
|
-
resetAllActivityTypeControls() {
|
|
489
|
-
this.addworkflowActivityForm.removeControl("ParticipantDTO.ParticipantTypeItemIDsString");
|
|
490
|
-
this.addworkflowActivityForm.removeControl("ParticipantDTO.PermissionSetIDsString");
|
|
491
|
-
this.addworkflowActivityForm.removeControl("ParticipantDTO.PermissionSetIDsString");
|
|
492
|
-
this.addworkflowActivityForm.removeControl("TaskName");
|
|
493
|
-
this.addworkflowActivityForm.removeControl("TaskDescription");
|
|
494
|
-
this.addworkflowActivityForm.removeControl("TaskURL");
|
|
495
|
-
this.addworkflowActivityForm.removeControl("TaskCorrlTypeID");
|
|
496
|
-
this.addworkflowActivityForm.removeControl("CanCompleteFromTME");
|
|
497
|
-
this.addworkflowActivityForm.removeControl("NormalOutcomeName");
|
|
498
|
-
this.addworkflowActivityForm.removeControl("OutcomeSysName");
|
|
499
|
-
this.addworkflowActivityForm.removeControl("NextActivityID_GUID");
|
|
500
|
-
this.addworkflowActivityForm.removeControl("CanAddComment");
|
|
501
|
-
this.addworkflowActivityForm.removeControl("LHSVariableID_GUID");
|
|
502
|
-
this.addworkflowActivityForm.removeControl("OperatorTypeItemID_GUID");
|
|
503
|
-
this.addworkflowActivityForm.removeControl("RHSTypeItemID_GUID");
|
|
504
|
-
this.addworkflowActivityForm.removeControl("RHSVariableID_GUID");
|
|
505
|
-
this.addworkflowActivityForm.removeControl("RHSValue");
|
|
506
|
-
//Remove outcomes controls
|
|
507
|
-
let ResultModel = this.addworkflowActivityForm.value;
|
|
508
|
-
for (let i = 0; i < this.outcomesCount; i++) {
|
|
509
|
-
let outcomeID = ResultModel["outcomeID" + i];
|
|
510
|
-
if (outcomeID == undefined)
|
|
511
|
-
continue;
|
|
512
|
-
this.addworkflowActivityForm.removeControl("outcomeID" + i);
|
|
513
|
-
this.addworkflowActivityForm.removeControl("outcomeName" + i);
|
|
514
|
-
this.addworkflowActivityForm.removeControl("outcomeDecisionSysName" + i);
|
|
515
|
-
this.addworkflowActivityForm.removeControl("outcomeHiddeneSysName" + i);
|
|
516
|
-
this.addworkflowActivityForm.removeControl("outcomeNextActivityTypes" + i);
|
|
517
|
-
this.addworkflowActivityForm.removeControl("outcomeCanAddComment" + i);
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
//Cancel
|
|
521
|
-
cancelAdd() {
|
|
522
|
-
this.router.navigate(['/Admin/Workflows/workflow/']);
|
|
523
|
-
}
|
|
524
|
-
//On destroy
|
|
525
|
-
ngOnDestroy() {
|
|
526
|
-
this.requestHandlerService.destroyHandler();
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
WorkflowActivityAddComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkflowActivityAddComponent, deps: [{ token: i1.WorkflowActivityService }, { token: i2.UtilityService }, { token: i3.ActivatedRoute }, { token: i4.PageInfoService }, { token: i3.Router }, { token: i2.RequestHandlerService }, { token: i2.BBSFTranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
530
|
-
WorkflowActivityAddComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkflowActivityAddComponent, selector: "lib-workflow-activity-add", ngImport: i0, template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isAddFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"addworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"addworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"addworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"addworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelAdd()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i6.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i6.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }] });
|
|
531
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
532
|
-
type: Component,
|
|
533
|
-
args: [{ selector: 'lib-workflow-activity-add', template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isAddFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"addworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"addworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"addworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"addworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelAdd()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n" }]
|
|
534
|
-
}], ctorParameters:
|
|
535
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aXZpdHktYWRkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvd29ya2Zsb3dzL2FjdGl2aXR5L3dvcmtmbG93LWFjdGl2aXR5LWFkZC93b3JrZmxvdy1hY3Rpdml0eS1hZGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvYWN0aXZpdHkvd29ya2Zsb3ctYWN0aXZpdHktYWRkL3dvcmtmbG93LWFjdGl2aXR5LWFkZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdqTyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7O0FBTXhGLE1BQU0sT0FBTyw0QkFBNEI7SUFnRXZDLFlB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QVE7SUFDUixTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFlBQVk7SUFDWixXQUFXO1FBQ1QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7OzBIQS9tQlUsNEJBQTRCOzhHQUE1Qiw0QkFBNEIsaUVDbkJ6Qyw0L1VBd09BOzRGRHJOYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIEVuZ2xpc2hBcmFiaWNEVE8sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucywgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIFRleHRCb3hPcHRpb25zLCBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBY3Rpdml0eVR5cGUsIFBhcnRpY2lwYW50VHlwZSwgUmlnaHRoYW5kc2lkZXR5cGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29uZGl0aW9uUkhTVHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9jb25maWd1cmF0aW9uL0NvbmRpdGlvblJIU1R5cGUnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9XRkFjdGl2aXR5VHlwZSc7XHJcbmltcG9ydCB7IFBhcnRpY2lwYW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL1BhcnRpY2lwYW50TW9kZWwnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlNb2RlbCc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlPdXRjb21lTW9kZWwnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Xb3JrZmxvd0FjdGl2aXR5U2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItd29ya2Zsb3ctYWN0aXZpdHktYWRkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctYWN0aXZpdHktYWRkLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dBY3Rpdml0eUFkZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIGlzQWRkRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlcnNpb25JRDogc3RyaW5nO1xyXG5cclxuICAvL0FkZCBBY3Rpdml0eSBzaGFyZWQgY29udHJvbHNcclxuICBhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBuYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBzeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBhY3Rpdml0eVR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBjYW5BZGRPdXRjb21lOiBib29sZWFuO1xyXG4gIC8vU2hhcmVkIHJlcXVpcmVkIGxpc3RzXHJcbiAgQWN0aXZpdHlUeXBlTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy9TaGFyZWQgUGFydGljaXBhbnQgdHlwZSBhbmQgZGF0YVxyXG4gIHNob3dQYXJ0aWNpcGFudENvbnRhaW5lcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBhcnRpY2lwYW50VHlwZXM6IERyb3Bkb3duT3B0aW9ucztcclxuICBwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQ6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgLy9EeW5hbWljIFR5cGVzIENvbnRyb2xzIC8vKEFwcHJvdmFsLEFjdGlvbixQZXJjZW50YWdlKVxyXG4gIHNob3dEeW5hbWljQ29udHJvbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkeW5hbWljVGFza05hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIGR5bmFtaWNUYXNrRGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBkeW5hbWljVGFza1VSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZHluYW1pY1Rhc2tUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZHluYW1pY0NhbkNvbXBsZXRlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcblxyXG5cclxuICAvL1N0YXRpYyB0eXBlcyBjb250cm9scyAoRW1haWwsU2xlZXApXHJcbiAgLy9FbWFpbCBUeXBlIENvbnRyb2xzIC8vKyBpbml0aWFsaXplIHBhcnRpY2lwYW50XHJcbiAgc2hvd1N0YXRpY0NvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RhdGljT3V0Y29tZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHN0YXRpY091dGNvbWVTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgLy9Db25kaXRpb24gdHlwZSBjb250cm9sc1xyXG4gIHNob3dDb25kaXRpb25Db250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbmRpdGlvbkxIU0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uc0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTVHlwZURyb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNWYWx1ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9PdXRjb21lcyAoZHluYW1pYyxjb25kaXRpb24pXHJcbiAgb3V0Y29tZXNPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIG91dGNvbWVzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgc2hvd091dGNvbWVzQ29udGFpbmVyID0gZmFsc2U7XHJcblxyXG4gIC8vUmVxdWlyZWRMaXN0c1xyXG4gIHRhc2tUeXBlTGlzdCA9IFtdO1xyXG4gIHBhcnRpY2lwYW50VHlwZUxpc3QgPSBbXTtcclxuICBwYXJ0aWNpcGFudERhdGFMaXN0ID0gW107XHJcbiAgbmV4dEFjdGl2aXR5TGlzdCA9IFtdO1xyXG5cclxuICAvL0NvbmRpdGlvblR5cGVSZXF1aXJlZExpc3RzXHJcbiAgY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBbXTtcclxuICBjb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IFtdO1xyXG4gIGNvbmRpdGlvblJIU1R5cGVMaXN0ID0gW107XHJcbiAgY29uZGl0aW9uTGlzdCA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlOiBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLnZlcnNpb25JRCA9IHBhcmFtc1sndmlkJ107XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSBcIlwiXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkV29ya2Zsb3dBY3Rpdml0eVwiKTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJXb3JrRmxvd3NcIiksIHBhdGg6ICcvQWRtaW4vV29ya2Zsb3dzL3dvcmtmbG93JywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcblxyXG4gIC8vSW5pdGlhbGl6ZSBhZGQgcGFnZSBhbmQgcmVxdWlyZWQgRERMc1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5sb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHRoaXMuQWN0aXZpdHlUeXBlTGlzdCA9IHJlc3VsdE9iai5hY3Rpdml0eUxpc3Q7XHJcblxyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVxyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRXRkFjdGl2aXR5TW9kZWw7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkV0ZBY3Rpdml0eUZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5vbkFkZFN1Y2Nlc3M7XHJcblxyXG4gICAgICB0aGlzLm5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5uYW1lLk5hbWUgPSBcIk5hbWVcIjtcclxuICAgICAgdGhpcy5uYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5uYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLm5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMubmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICB0aGlzLnN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5zeXNOYW1lLk5hbWUgPSBcIlN5c05hbWVcIjtcclxuICAgICAgdGhpcy5zeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuc3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuc3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zeXNOYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5OYW1lID0gXCJBY3Rpdml0eVR5cGVJdGVtSURfR1VJRFwiXHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVR5cGVcIlxyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5EYXRhU291cmNlID0gdGhpcy5BY3Rpdml0eVR5cGVMaXN0XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmlzQWRkRm9ybUxvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0FkZCBmdW5jdGlvbnNcclxuICBnZXRBZGRXRkFjdGl2aXR5TW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IGFkZE1vZGVsID0gbmV3IFdGQWN0aXZpdHlNb2RlbCgpO1xyXG4gICAgYWRkTW9kZWwuTmFtZSA9IFJlc3VsdE1vZGVsLk5hbWVcclxuICAgIGFkZE1vZGVsLlN5c05hbWUgPSBSZXN1bHRNb2RlbC5TeXNOYW1lXHJcbiAgICBhZGRNb2RlbC5WZXJzaW9uSURfR1VJRCA9IHRoaXMudmVyc2lvbklEO1xyXG4gICAgYWRkTW9kZWwuQWN0aXZpdHlUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5BY3Rpdml0eVR5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAvL0lmIHBhcnRpY2lwYW50IGV4aXN0c1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsW1wiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgYWRkTW9kZWwuUGFydGljaXBhbnREVE8gPSBuZXcgUGFydGljaXBhbnRNb2RlbCgpO1xyXG4gICAgICBhZGRNb2RlbC5QYXJ0aWNpcGFudERUTyA9IG5ldyBQYXJ0aWNpcGFudE1vZGVsKCk7XHJcbiAgICAgIGFkZE1vZGVsLlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmcgPSBSZXN1bHRNb2RlbFtcIlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdcIl0udG9TdHJpbmcoKTtcclxuICAgICAgaWYgKFJlc3VsdE1vZGVsW1wiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXS5pbmNsdWRlcyhQYXJ0aWNpcGFudFR5cGUuUGVybWlzc2lvblNldCkpIHtcclxuICAgICAgICBhZGRNb2RlbC5QYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nID0gUmVzdWx0TW9kZWxbXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCJdLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHN3aXRjaCAoYWRkTW9kZWwuQWN0aXZpdHlUeXBlSXRlbUlEX0dVSUQpIHtcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQXBwcm92YWw6XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFjdGlvbjpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza05hbWUgPSBSZXN1bHRNb2RlbC5UYXNrTmFtZTtcclxuICAgICAgICBhZGRNb2RlbC5UYXNrRGVzY3JpcHRpb24gPSBSZXN1bHRNb2RlbC5UYXNrRGVzY3JpcHRpb247XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza1VSTCA9IFJlc3VsdE1vZGVsLlRhc2tVUkw7XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza0NvcnJsVHlwZUlEID0gUmVzdWx0TW9kZWwuVGFza0NvcnJsVHlwZUlEICE9IG51bGwgPyBOdW1iZXIoUmVzdWx0TW9kZWwuVGFza0NvcnJsVHlwZUlEKSA6IG51bGw7XHJcbiAgICAgICAgYWRkTW9kZWwuQ2FuQ29tcGxldGVGcm9tVE1FID0gUmVzdWx0TW9kZWwuQ2FuQ29tcGxldGVGcm9tVE1FO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgYWRkTW9kZWwuTm9ybWFsT3V0Y29tZU5hbWUgPSBSZXN1bHRNb2RlbC5Ob3JtYWxPdXRjb21lTmFtZTtcclxuICAgICAgICBhZGRNb2RlbC5PdXRjb21lU3lzTmFtZSA9IFJlc3VsdE1vZGVsLk91dGNvbWVTeXNOYW1lO1xyXG4gICAgICAgIGFkZE1vZGVsLk5leHRBY3Rpdml0eUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5OZXh0QWN0aXZpdHlJRF9HVUlEO1xyXG4gICAgICAgIGFkZE1vZGVsLkNhbkFkZENvbW1lbnQgPSBSZXN1bHRNb2RlbC5DYW5BZGRDb21tZW50O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5Db25kaXRpb246XHJcbiAgICAgICAgYWRkTW9kZWwuTEhTVmFyaWFibGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuTEhTVmFyaWFibGVJRF9HVUlEXHJcbiAgICAgICAgYWRkTW9kZWwuUkhTVmFyaWFibGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuUkhTVmFyaWFibGVJRF9HVUlEXHJcbiAgICAgICAgYWRkTW9kZWwuUkhTVHlwZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuUkhTVHlwZUl0ZW1JRF9HVUlEXHJcbiAgICAgICAgYWRkTW9kZWwuT3BlcmF0b3JUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5PcGVyYXRvclR5cGVJdGVtSURfR1VJRFxyXG4gICAgICAgIGFkZE1vZGVsLlJIU1ZhbHVlID0gUmVzdWx0TW9kZWwuUkhTVmFsdWUgIT0gdW5kZWZpbmVkID8gUmVzdWx0TW9kZWwuUkhTVmFsdWUgOiBudWxsO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgIH1cclxuICAgIC8vU2V0IE91dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbiB0eXBlcylcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5vdXRjb21lc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IG91dGNvbWVJRCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUlEXCIgKyBqXTtcclxuICAgICAgaWYgKG91dGNvbWVJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVOYW1lXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lU3lzTmFtZTogc3RyaW5nO1xyXG4gICAgICBsZXQgb3V0Q29tZUNhbkVkaXRTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGpdO1xyXG4gICAgICBpZiAob3V0Q29tZUNhbkVkaXRTeXNOYW1lKVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBqXTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVBY3Rpdml0eSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBqXTtcclxuICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgal07XHJcblxyXG4gICAgICBsZXQgYWN0aXZpdHlPdXRjb21lOiBXRkFjdGl2aXR5T3V0Y29tZU1vZGVsID0gbmV3IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwoKTtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLklEX0dVSUQgPSBvdXRjb21lSUQ7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5OYW1lRU4gPSBvdXRjb21lTmFtZS5FbmdsaXNoO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuTmFtZUFSID0gb3V0Y29tZU5hbWUuQXJhYmljO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuT3V0Y29tZVN5c05hbWUgPSBvdXRjb21lU3lzTmFtZTtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk5leHRBY3Rpdml0eUlEX0dVSUQgPSBvdXRjb21lQWN0aXZpdHlcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLkNhbkFkZENvbW1lbnQgPSBvdXRjb21lQ2FuQWRkQ29tbWVudDtcclxuXHJcbiAgICAgIGFkZE1vZGVsLk91dGNvbWVzLnB1c2goYWN0aXZpdHlPdXRjb21lKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRBZGRXRkFjdGl2aXR5RnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMud29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UuYWRkV29ya2Zsb3dBY3Rpdml0eShBZGRNb2RlbClcclxuICB9XHJcbiAgb25BZGRTdWNjZXNzID0gKHJlc3VsdCkgPT4ge1xyXG4gICAgdGhpcy5jYW5jZWxBZGQoKTtcclxuICB9XHJcblxyXG4gIC8vT3V0Y29tZSBmdW5jdGlvbnNcclxuICBnZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyhvdXRDb21lczogYW55W10pIHtcclxuICAgIGxldCBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG91dENvbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXJyZW50T3V0Y29tZSA9IG91dENvbWVzW2ldO1xyXG4gICAgICBsZXQgb2JqZWN0T3V0Y29tZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUlEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVJRC5OYW1lID0gXCJvdXRjb21lSURcIiArIGk7XHJcbiAgICAgIG91dGNvbWVJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lSUQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBvdXRjb21lSUQuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5pRF9HVUlEO1xyXG5cclxuICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBuYW1lLkVuZ2xpc2ggPSBjdXJyZW50T3V0Y29tZS5uYW1lRU47XHJcbiAgICAgIG5hbWUuQXJhYmljID0gY3VycmVudE91dGNvbWUubmFtZUFSO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVOYW1lLk5hbWUgPSBcIm91dGNvbWVOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIG91dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICBvdXRjb21lTmFtZS5WYWx1ZSA9IG5hbWU7XHJcbiAgICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lTmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLm91dGNvbWVTeXNOYW1lO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLklzRGlzYWJsZWQgPSAhY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLk5hbWUgPSBcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVwiXHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5OYW1lID0gXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgaTtcclxuICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5jYW5BZGRDb21tZW50O1xyXG4gICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgICBvdXRjb21lQ2FuRWRpdCA9IGN1cnJlbnRPdXRjb21lLmNhbkVkaXQ7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUhpZGRlbmVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLm91dGNvbWVTeXNOYW1lO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0U3lzTmFtZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLlZhbHVlID0gY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcblxyXG4gICAgICBvYmplY3RPdXRjb21lT3B0aW9ucy5wdXNoKG91dGNvbWVJRCwgb3V0Y29tZU5hbWUsIG91dGNvbWVEZWNpc2lvblN5c05hbWUsIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyxcclxuICAgICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudCwgb3V0Y29tZUNhbkVkaXQsIG91dGNvbWVIaWRkZW5lU3lzTmFtZSwgb3V0Y29tZUNhbkVkaXRTeXNOYW1lKTtcclxuXHJcblxyXG4gICAgICBvdXRjb21lc09wdGlvbnMucHVzaChvYmplY3RPdXRjb21lT3B0aW9ucyk7XHJcbiAgICAgIG91dGNvbWVzQ291bnQgKz0gMTtcclxuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gW291dGNvbWVzT3B0aW9ucywgb3V0Y29tZXNDb3VudF07XHJcbiAgfVxyXG4gIGFkZFdGQWN0aXZpdHlPdXRjb21lKCkge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5vdXRjb21lc0NvdW50O1xyXG5cclxuICAgIGxldCBvYmplY3RPdXRjb21lT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUlEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lSUQuTmFtZSA9IFwib3V0Y29tZUlEXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgb3V0Y29tZUlELlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIG91dGNvbWVJRC5WYWx1ZSA9IDA7XHJcblxyXG4gICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lTmFtZS5OYW1lID0gXCJvdXRjb21lTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICBvdXRjb21lTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lRGVjaXNpb25TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5OYW1lID0gXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVwiXHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMubmV4dEFjdGl2aXR5TGlzdFxyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50Lk5hbWUgPSBcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50LkxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcblxyXG4gICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgb3V0Y29tZUNhbkVkaXQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lSGlkZGVuZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUNhbkVkaXRTeXNOYW1lID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUuVmFsdWUgPSB0cnVlO1xyXG5cclxuICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLCBvdXRjb21lQ2FuQWRkQ29tbWVudCxcclxuICAgICAgb3V0Y29tZUNhbkVkaXQsIG91dGNvbWVIaWRkZW5lU3lzTmFtZSwgb3V0Y29tZUNhbkVkaXRTeXNOYW1lKTtcclxuXHJcbiAgICB0aGlzLm91dGNvbWVzT3B0aW9ucy5wdXNoKG9iamVjdE91dGNvbWVPcHRpb25zKTtcclxuICAgIHRoaXMub3V0Y29tZXNDb3VudCArPSAxO1xyXG5cclxuICB9XHJcbiAgZGVsZXRlT3V0Y29tZShkZWxldGVkT3V0Y29tZTogYW55KSB7XHJcbiAgICBsZXQgZGVsZXRlZE91dGNvbWVJbmRleDogbnVtYmVyID0gdGhpcy5vdXRjb21lc09wdGlvbnMuaW5kZXhPZihkZWxldGVkT3V0Y29tZSk7XHJcbiAgICBpZiAoZGVsZXRlZE91dGNvbWVJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRPdXRjb21lSW5kZXgsIDEpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRPdXRjb21lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRPdXRjb21lW2ldLk5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL09uIGNoYW5nZXMgZXZlbnRzXHJcbiAgYWN0aXZpdHlUeXBlT25DaGFuZ2UoYWN0aXZpdHlUeXBlKSB7XHJcbiAgICBhY3Rpdml0eVR5cGUgPSBhY3Rpdml0eVR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAvL1Jlc2V0IGNvbnRyb2xzLCBvdXRjb21lcyBhbmQgZmxhZ3NcclxuICAgIHRoaXMucmVzZXRBbGxBY3Rpdml0eVR5cGVDb250cm9scygpO1xyXG4gICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBbXTtcclxuICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IDA7XHJcbiAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RHluYW1pY0NvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTdGF0aWNDb250cm9scyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5nZXRBY3Rpdml0eU91dGNvbWVzKHRoaXMudmVyc2lvbklELCBhY3Rpdml0eVR5cGUpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHZhciByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB2YXIgbW9kZWwgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIHZhciBsaXN0ID0gcmVzdWx0T2JqLmxpc3Q7XHJcbiAgICAgIHRoaXMubmV4dEFjdGl2aXR5TGlzdCA9IGxpc3QuYWN0aXZpdGllcztcclxuXHJcbiAgICAgIHN3aXRjaCAoYWN0aXZpdHlUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQXBwcm92YWw6XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLlBlcmNlbnRhZ2VUYXNrOlxyXG4gICAgICAgICAgdGhpcy50YXNrVHlwZUxpc3QgPSBsaXN0LnRhc2tzO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnRUeXBlcztcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnREYXRhTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50RGF0YTtcclxuXHJcbiAgICAgICAgICAvL0luaXRpYWxpemUgcmVxdWlyZWQgY29udHJvbHMgZm9yIGFwcHJvdmFsXHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTmFtZSA9IFwiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTGFiZWxLZXkgPSBcIlBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLk5hbWUgPSBcIlRhc2tOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiVGFza05hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5OYW1lID0gXCJUYXNrRGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLk1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLk5hbWUgPSBcIlRhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTGFiZWxLZXkgPSBcIlRhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5NYXhMZW5ndGggPSAyMDgzO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTmFtZSA9IFwiVGFza0NvcnJsVHlwZUlEXCJcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkxhYmVsS2V5ID0gXCJUYXNrVHlwZVwiXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5EYXRhU291cmNlID0gdGhpcy50YXNrVHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLk5hbWUgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTGFiZWxLZXkgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WYWx1ZSA9IG1vZGVsLmNhbkNvbXBsZXRlRnJvbVRNRTtcclxuXHJcbiAgICAgICAgICBsZXQgb3V0Y29tZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnMobW9kZWwub3V0Y29tZXMpO1xyXG4gICAgICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBvdXRjb21lc1Jlc3VsdFswXTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IG91dGNvbWVzUmVzdWx0WzFdO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5TbGVlcDpcclxuICAgICAgICAgIGlmIChhY3Rpdml0eVR5cGUgPT0gQWN0aXZpdHlUeXBlLkVtYWlsKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnREYXRhTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50RGF0YTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTmFtZSA9IFwiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5MYWJlbEtleSA9IFwiUGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICBuYW1lLkFyYWJpYyA9IG1vZGVsLm5vcm1hbE91dGNvbWVOYW1lLmFyYWJpYztcclxuICAgICAgICAgIG5hbWUuRW5nbGlzaCA9IG1vZGVsLm5vcm1hbE91dGNvbWVOYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5OYW1lID0gXCJOb3JtYWxPdXRjb21lTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiT3V0Y29tZU5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk91dGNvbWVOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5WYWx1ZSA9IG5hbWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLk1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLk5hbWUgPSBcIk91dGNvbWVTeXNOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLkxhYmVsS2V5ID0gXCJEZWNpc2lvblN5c05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5OYW1lID0gXCJOZXh0QWN0aXZpdHlJRF9HVUlEXCJcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5MYWJlbEtleSA9IFwiTmV4dEFjdGl2aXR5XCJcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSBtb2RlbC5jYW5BZGRDb21tZW50O1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd1N0YXRpY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0ID0gbGlzdC5yaHNUeXBlcztcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTGlzdCA9IGxpc3QuY29uZGl0aW9ucztcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5OYW1lID0gXCJMSFNWYXJpYWJsZUlEX0dVSURcIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5OYW1lID0gXCJPcGVyYXRvclR5cGVJdGVtSURfR1VJRFwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiQ29uZGl0aW9uXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRSSFNUeXBlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5Py50b0xvd2VyQ2FzZSgpID09IFJpZ2h0aGFuZHNpZGV0eXBlLlZhcmlhYmxlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uTmFtZSA9IFwiUkhTVHlwZUl0ZW1JRF9HVUlEXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRSSFNUeXBlO1xyXG5cclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcIlJIU1ZhcmlhYmxlSURfR1VJRFwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgbGV0IGNvbmRpdGlvbk91dGNvbWVzUmVzdWx0OiBhbnkgPSB0aGlzLmdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG1vZGVsLm91dGNvbWVzKTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gY29uZGl0aW9uT3V0Y29tZXNSZXN1bHRbMF07XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBjb25kaXRpb25PdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FuQWRkT3V0Y29tZSA9IHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID8gbW9kZWwuY2FuQWRkT3V0Y29tZSA6IGZhbHNlO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKHR5cGUpIHtcclxuICAgIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAodHlwZSA9PSBSaWdodGhhbmRzaWRldHlwZS5WYXJpYWJsZSkge1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNWYWx1ZVwiKVxyXG5cclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5OYW1lID0gXCJSSFNWYXJpYWJsZUlEX0dVSURcIlxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIlxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlJIU1ZhcmlhYmxlSURfR1VJRFwiKVxyXG5cclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLk5hbWUgPSBcIlJIU1ZhbHVlXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5QbGFjZWhvbGRlciA9IFwiVmFsdWVcIjtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuTWF4TGVuZ3RoID0gNTEyO1xyXG5cclxuICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgcGFydGljaXBhbnRUeXBlT25DaGFuZ2UocGFydGljaXBhbnRUeXBlKSB7XHJcbiAgICBwYXJ0aWNpcGFudFR5cGUgPSBwYXJ0aWNpcGFudFR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAocGFydGljaXBhbnRUeXBlID09IFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSB7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5OYW1lID0gXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCJcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIlxyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCIpO1xyXG4gICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9yZXNldCB0eXBlXHJcbiAgcmVzZXRBbGxBY3Rpdml0eVR5cGVDb250cm9scygpIHtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEc1N0cmluZ1wiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlRhc2tOYW1lXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiVGFza0Rlc2NyaXB0aW9uXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiVGFza1VSTFwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlRhc2tDb3JybFR5cGVJRFwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIkNhbkNvbXBsZXRlRnJvbVRNRVwiKTtcclxuXHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJOb3JtYWxPdXRjb21lTmFtZVwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIk91dGNvbWVTeXNOYW1lXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiTmV4dEFjdGl2aXR5SURfR1VJRFwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIkNhbkFkZENvbW1lbnRcIik7XHJcblxyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiTEhTVmFyaWFibGVJRF9HVUlEXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiT3BlcmF0b3JUeXBlSXRlbUlEX0dVSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNUeXBlSXRlbUlEX0dVSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNWYXJpYWJsZUlEX0dVSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNWYWx1ZVwiKTtcclxuXHJcbiAgICAvL1JlbW92ZSBvdXRjb21lcyBjb250cm9sc1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS52YWx1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdXRjb21lc0NvdW50OyBpKyspIHtcclxuICAgICAgbGV0IG91dGNvbWVJRCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUlEXCIgKyBpXTtcclxuICAgICAgaWYgKG91dGNvbWVJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lSURcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgaSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0NhbmNlbFxyXG4gIGNhbmNlbEFkZCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdy8nXSk7XHJcbiAgfVxyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiICpuZ0lmPVwiaXNBZGRGb3JtTG9hZGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnNcIj5cclxuICAgICAgICA8IS0tU3RhcnQgc2hhcmVkIGNvbnRyb2xzIGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJuYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzeXNOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFjdGl2aXR5VHlwZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJhY3Rpdml0eVR5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHNoYXJlZCBjb250cm9scyBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgcGFydGljaXBhbnQgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPGRpdiBpZD1cInBhcnRpY2lwYW50Q29udGFpbmVyXCIgKm5nSWY9XCJzaG93UGFydGljaXBhbnRDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJwYXJ0aWNpcGFudFR5cGVzXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCIgKE9uQ2hhbmdlKT1cInBhcnRpY2lwYW50VHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXRcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBwYXJ0aWNpcGFudCBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgc3RhdGljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dTdGF0aWNDb250cm9sc1wiIGlkPVwic3RhdGljQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lU3lzTmFtZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHN0YXRpYyBjb250cm9scy0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBkeW5hbWljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEeW5hbWljQ29udHJvbHNcIiBpZD1cImR5bmFtaWNDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEgW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVVJMXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVHlwZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZHluYW1pY0NhbkNvbXBsZXRlXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgZHluYW1pYyBjb250cm9scy0tPlxyXG5cclxuICAgICAgICA8IS0tU3RhcnQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dDb25kaXRpb25Db250cm9sc1wiIGlkPVwiY29uZGl0aW9uQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkxlZnRIYW5kU2lkZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25kaXRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmlnaHRIYW5kU2lkZVR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmlnaHRIYW5kU2lkZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25MSFNEcm9wRG93blwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uc0Ryb3BEb3duXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIiAoT25DaGFuZ2UpPVwiY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZTsgZWxzZSBjb25kaXRpb25UeHRWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNEcm9wRG93blwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZGl0aW9uVHh0VmFsdWU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNWYWx1ZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcblxyXG4gICAgICAgIDwhLS1TdGFydCBvdXRjb21lcyBjb250YWluZXItLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd091dGNvbWVzQ29udGFpbmVyXCIgaWQ9XCJvdXRjb21lc0NvbnRhaW5lclwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWNpc2lvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3V0Y29tZXNPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1JRC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLU5hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsxXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLVN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1oaWRkZW4gU3lzTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzZdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWNhbiBlZGl0IFN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bN11cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tTmV4dEFjdGl2aXR5LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblszXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tQ2FuQWRkQ29tbWVudC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvbls0XVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0taWYgb3V0Y29tZSBDYW4gRWRpdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwib3B0aW9uWzVdXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlT3V0Y29tZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS10cmFzaCBoaWRkZW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImNhbkFkZE91dGNvbWVcIj5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwiYWRkV0ZBY3Rpdml0eU91dGNvbWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIG91dGNvbWVzIGNvbnRhaW5lci0tPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cImNhbmNlbEFkZCgpXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { CheckBoxOptions, ControlLayout, DropdownOptions, EnglishArabicDTO, FormOptions, InputType, MultiLingualTextAreaOptions, MultiLingualTextBoxOptions, TextBoxOptions, ToggleSlideOptions } from '@bnsights/bbsf-controls';
|
|
4
|
+
import { ActivityType, ParticipantType, Righthandsidetype } from '../../../shared/constants';
|
|
5
|
+
import { ParticipantModel } from '../../../shared/models/ImpersonationRuleModels/ParticipantModel';
|
|
6
|
+
import { WFActivityModel } from '../../../shared/models/WorkflowModels/WFActivityModel';
|
|
7
|
+
import { WFActivityOutcomeModel } from '../../../shared/models/WorkflowModels/WFActivityOutcomeModel';
|
|
8
|
+
import { PageInfoService } from '../../../../_metronic/core/services/page-info.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../../shared/Services/WorkflowActivityService.service";
|
|
11
|
+
import * as i2 from "@bnsights/bbsf-utilities";
|
|
12
|
+
import * as i3 from "@angular/router";
|
|
13
|
+
import * as i4 from "../../../../_metronic/core/services/page-info.service";
|
|
14
|
+
import * as i5 from "@angular/common";
|
|
15
|
+
import * as i6 from "@bnsights/bbsf-controls";
|
|
16
|
+
export class WorkflowActivityAddComponent {
|
|
17
|
+
constructor(workflowActivityService, utilityService, activatedRoute, pageInfoService, router, requestHandlerService, bbsfTranslateService) {
|
|
18
|
+
this.workflowActivityService = workflowActivityService;
|
|
19
|
+
this.utilityService = utilityService;
|
|
20
|
+
this.activatedRoute = activatedRoute;
|
|
21
|
+
this.pageInfoService = pageInfoService;
|
|
22
|
+
this.router = router;
|
|
23
|
+
this.requestHandlerService = requestHandlerService;
|
|
24
|
+
this.bbsfTranslateService = bbsfTranslateService;
|
|
25
|
+
//Page requirements
|
|
26
|
+
this.isAddFormLoaded = false;
|
|
27
|
+
//Add Activity shared controls
|
|
28
|
+
this.addworkflowActivityForm = new FormGroup({});
|
|
29
|
+
this.addworkflowActivityFormOptions = new FormOptions;
|
|
30
|
+
//Shared required lists
|
|
31
|
+
this.ActivityTypeList = [];
|
|
32
|
+
//Shared Participant type and data
|
|
33
|
+
this.showParticipantContainer = false;
|
|
34
|
+
this.showParticipantPermssionSet = false;
|
|
35
|
+
//Dynamic Types Controls //(Approval,Action,Percentage)
|
|
36
|
+
this.showDynamicControls = false;
|
|
37
|
+
//Static types controls (Email,Sleep)
|
|
38
|
+
//Email Type Controls //+ initialize participant
|
|
39
|
+
this.showStaticControls = false;
|
|
40
|
+
//Condition type controls
|
|
41
|
+
this.showConditionControls = false;
|
|
42
|
+
this.showConditionRHSWFVariable = false;
|
|
43
|
+
//Outcomes (dynamic,condition)
|
|
44
|
+
this.outcomesOptions = [];
|
|
45
|
+
this.outcomesCount = 0;
|
|
46
|
+
this.showOutcomesContainer = false;
|
|
47
|
+
//RequiredLists
|
|
48
|
+
this.taskTypeList = [];
|
|
49
|
+
this.participantTypeList = [];
|
|
50
|
+
this.participantDataList = [];
|
|
51
|
+
this.nextActivityList = [];
|
|
52
|
+
//ConditionTypeRequiredLists
|
|
53
|
+
this.conditionLHSWFVariableList = [];
|
|
54
|
+
this.conditionRHSWFVariableList = [];
|
|
55
|
+
this.conditionRHSTypeList = [];
|
|
56
|
+
this.conditionList = [];
|
|
57
|
+
//Add functions
|
|
58
|
+
this.getAddWFActivityModel = () => {
|
|
59
|
+
let paramArray = [];
|
|
60
|
+
let ResultModel = this.addworkflowActivityForm.value;
|
|
61
|
+
let addModel = new WFActivityModel();
|
|
62
|
+
addModel.Name = ResultModel.Name;
|
|
63
|
+
addModel.SysName = ResultModel.SysName;
|
|
64
|
+
addModel.VersionID_GUID = this.versionID;
|
|
65
|
+
addModel.ActivityTypeItemID_GUID = ResultModel.ActivityTypeItemID_GUID?.toLowerCase();
|
|
66
|
+
//If participant exists
|
|
67
|
+
if (ResultModel["ParticipantDTO.ParticipantTypeItemIDsString"] != undefined) {
|
|
68
|
+
addModel.ParticipantDTO = new ParticipantModel();
|
|
69
|
+
addModel.ParticipantDTO = new ParticipantModel();
|
|
70
|
+
addModel.ParticipantDTO.ParticipantTypeItemIDsString = ResultModel["ParticipantDTO.ParticipantTypeItemIDsString"].toString();
|
|
71
|
+
if (ResultModel["ParticipantDTO.ParticipantTypeItemIDsString"].includes(ParticipantType.PermissionSet)) {
|
|
72
|
+
addModel.ParticipantDTO.PermissionSetIDsString = ResultModel["ParticipantDTO.PermissionSetIDsString"].toString();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
switch (addModel.ActivityTypeItemID_GUID) {
|
|
76
|
+
case ActivityType.Approval:
|
|
77
|
+
case ActivityType.Action:
|
|
78
|
+
case ActivityType.PercentageTask:
|
|
79
|
+
addModel.TaskName = ResultModel.TaskName;
|
|
80
|
+
addModel.TaskDescription = ResultModel.TaskDescription;
|
|
81
|
+
addModel.TaskURL = ResultModel.TaskURL;
|
|
82
|
+
addModel.TaskCorrlTypeID = ResultModel.TaskCorrlTypeID != null ? Number(ResultModel.TaskCorrlTypeID) : null;
|
|
83
|
+
addModel.CanCompleteFromTME = ResultModel.CanCompleteFromTME;
|
|
84
|
+
break;
|
|
85
|
+
case ActivityType.Email:
|
|
86
|
+
case ActivityType.Sleep:
|
|
87
|
+
addModel.NormalOutcomeName = ResultModel.NormalOutcomeName;
|
|
88
|
+
addModel.OutcomeSysName = ResultModel.OutcomeSysName;
|
|
89
|
+
addModel.NextActivityID_GUID = ResultModel.NextActivityID_GUID;
|
|
90
|
+
addModel.CanAddComment = ResultModel.CanAddComment;
|
|
91
|
+
break;
|
|
92
|
+
case ActivityType.Condition:
|
|
93
|
+
addModel.LHSVariableID_GUID = ResultModel.LHSVariableID_GUID;
|
|
94
|
+
addModel.RHSVariableID_GUID = ResultModel.RHSVariableID_GUID;
|
|
95
|
+
addModel.RHSTypeItemID_GUID = ResultModel.RHSTypeItemID_GUID;
|
|
96
|
+
addModel.OperatorTypeItemID_GUID = ResultModel.OperatorTypeItemID_GUID;
|
|
97
|
+
addModel.RHSValue = ResultModel.RHSValue != undefined ? ResultModel.RHSValue : null;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
//Set Outcomes (dynamic,condition types)
|
|
101
|
+
for (let j = 0; j < this.outcomesCount; j++) {
|
|
102
|
+
let outcomeID = ResultModel["outcomeID" + j];
|
|
103
|
+
if (outcomeID == undefined)
|
|
104
|
+
continue;
|
|
105
|
+
let outcomeName = ResultModel["outcomeName" + j];
|
|
106
|
+
let outcomeSysName;
|
|
107
|
+
let outComeCanEditSysName = ResultModel["outcomeCanEditSysName" + j];
|
|
108
|
+
if (outComeCanEditSysName)
|
|
109
|
+
outcomeSysName = ResultModel["outcomeDecisionSysName" + j];
|
|
110
|
+
else
|
|
111
|
+
outcomeSysName = ResultModel["outcomeHiddeneSysName" + j];
|
|
112
|
+
let outcomeActivity = ResultModel["outcomeNextActivityTypes" + j];
|
|
113
|
+
let outcomeCanAddComment = ResultModel["outcomeCanAddComment" + j];
|
|
114
|
+
let activityOutcome = new WFActivityOutcomeModel();
|
|
115
|
+
activityOutcome.ID_GUID = outcomeID;
|
|
116
|
+
activityOutcome.NameEN = outcomeName.English;
|
|
117
|
+
activityOutcome.NameAR = outcomeName.Arabic;
|
|
118
|
+
activityOutcome.OutcomeSysName = outcomeSysName;
|
|
119
|
+
activityOutcome.NextActivityID_GUID = outcomeActivity;
|
|
120
|
+
activityOutcome.CanAddComment = outcomeCanAddComment;
|
|
121
|
+
addModel.Outcomes.push(activityOutcome);
|
|
122
|
+
}
|
|
123
|
+
paramArray.push(addModel);
|
|
124
|
+
return paramArray;
|
|
125
|
+
};
|
|
126
|
+
this.getAddWFActivityFunction = (AddModel) => {
|
|
127
|
+
return this.workflowActivityService.addWorkflowActivity(AddModel);
|
|
128
|
+
};
|
|
129
|
+
this.onAddSuccess = (result) => {
|
|
130
|
+
this.cancelAdd();
|
|
131
|
+
};
|
|
132
|
+
this.activatedRoute.params.subscribe(params => {
|
|
133
|
+
this.versionID = params['vid'];
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
async ngOnInit() {
|
|
137
|
+
PageInfoService.PageTitle = "";
|
|
138
|
+
PageInfoService.PageBreadcrumbs = [];
|
|
139
|
+
this.bbsfTranslateService.onLangChange.subscribe((event) => {
|
|
140
|
+
this.ngOnInit();
|
|
141
|
+
});
|
|
142
|
+
PageInfoService.PageTitle = this.utilityService.getResourceValue("AddWorkflowActivity");
|
|
143
|
+
PageInfoService.PageBreadcrumbs = [
|
|
144
|
+
{ title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
|
|
145
|
+
{ title: '', path: '', isSeparator: true, isActive: false },
|
|
146
|
+
{ title: this.utilityService.getResourceValue("WorkFlows"), path: '/Admin/Workflows/workflow', isSeparator: false, isActive: false },
|
|
147
|
+
{ title: '', path: '', isSeparator: true, isActive: false }
|
|
148
|
+
];
|
|
149
|
+
this.pageInfoService.calculateTitle();
|
|
150
|
+
this.pageInfoService.calculateBreadcrumbs();
|
|
151
|
+
this.initializePage();
|
|
152
|
+
}
|
|
153
|
+
//Initialize add page and required DDLs
|
|
154
|
+
initializePage() {
|
|
155
|
+
this.workflowActivityService.loadAddDropdowns().subscribe((result) => {
|
|
156
|
+
let resultObj = result;
|
|
157
|
+
this.ActivityTypeList = resultObj.activityList;
|
|
158
|
+
this.addworkflowActivityForm = new FormGroup({});
|
|
159
|
+
this.addworkflowActivityFormOptions = new FormOptions();
|
|
160
|
+
this.addworkflowActivityFormOptions.FormGroup = this.addworkflowActivityForm;
|
|
161
|
+
this.addworkflowActivityFormOptions.GetModelFunction = this.getAddWFActivityModel;
|
|
162
|
+
this.addworkflowActivityFormOptions.ServiceSubmitFunction = this.getAddWFActivityFunction;
|
|
163
|
+
this.addworkflowActivityFormOptions.OnSuccessHandler = this.onAddSuccess;
|
|
164
|
+
this.name = new MultiLingualTextBoxOptions();
|
|
165
|
+
this.name.Name = "Name";
|
|
166
|
+
this.name.ArabicLabelKey = "NameInArabic";
|
|
167
|
+
this.name.EnglishLabelKey = "NameInEnglish";
|
|
168
|
+
this.name.IsRequired = true;
|
|
169
|
+
this.name.MaxLength = 255;
|
|
170
|
+
this.sysName = new TextBoxOptions();
|
|
171
|
+
this.sysName.Name = "SysName";
|
|
172
|
+
this.sysName.LabelKey = "SysName";
|
|
173
|
+
this.sysName.Type = InputType.Text;
|
|
174
|
+
this.sysName.IsRequired = true;
|
|
175
|
+
this.sysName.MaxLength = 100;
|
|
176
|
+
this.activityType = new DropdownOptions();
|
|
177
|
+
this.activityType.Name = "ActivityTypeItemID_GUID";
|
|
178
|
+
this.activityType.LabelKey = "ActivityType";
|
|
179
|
+
this.activityType.DataSource = this.ActivityTypeList;
|
|
180
|
+
this.activityType.SingleSelection = true;
|
|
181
|
+
this.activityType.AllowSearchFilter = true;
|
|
182
|
+
this.activityType.IsRequired = true;
|
|
183
|
+
this.isAddFormLoaded = true;
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
//Outcome functions
|
|
187
|
+
getActivityOutcomesOptions(outComes) {
|
|
188
|
+
let outcomesOptions = [];
|
|
189
|
+
let outcomesCount = 0;
|
|
190
|
+
for (let i = 0; i < outComes.length; i++) {
|
|
191
|
+
let currentOutcome = outComes[i];
|
|
192
|
+
let objectOutcomeOptions = [];
|
|
193
|
+
let outcomeID = new TextBoxOptions();
|
|
194
|
+
outcomeID.Name = "outcomeID" + i;
|
|
195
|
+
outcomeID.HideLabel = true;
|
|
196
|
+
outcomeID.Type = InputType.Text;
|
|
197
|
+
outcomeID.Value = currentOutcome.iD_GUID;
|
|
198
|
+
let name = new EnglishArabicDTO();
|
|
199
|
+
name.English = currentOutcome.nameEN;
|
|
200
|
+
name.Arabic = currentOutcome.nameAR;
|
|
201
|
+
let outcomeName = new MultiLingualTextBoxOptions();
|
|
202
|
+
outcomeName.Name = "outcomeName" + i;
|
|
203
|
+
outcomeName.ArabicLabelKey = "NameInArabic";
|
|
204
|
+
outcomeName.EnglishLabelKey = "NameInEnglish";
|
|
205
|
+
outcomeName.Value = name;
|
|
206
|
+
outcomeName.IsRequired = true;
|
|
207
|
+
outcomeName.MaxLength = 255;
|
|
208
|
+
let outcomeDecisionSysName = new TextBoxOptions();
|
|
209
|
+
outcomeDecisionSysName.Name = "outcomeDecisionSysName" + i;
|
|
210
|
+
outcomeDecisionSysName.LabelKey = "DecisionSysName";
|
|
211
|
+
outcomeDecisionSysName.Type = InputType.Text;
|
|
212
|
+
outcomeDecisionSysName.Value = currentOutcome.outcomeSysName;
|
|
213
|
+
outcomeDecisionSysName.IsDisabled = !currentOutcome.canEditSysName;
|
|
214
|
+
outcomeDecisionSysName.IsRequired = true;
|
|
215
|
+
outcomeDecisionSysName.MaxLength = 100;
|
|
216
|
+
let outcomeNextActivityTypes = new DropdownOptions();
|
|
217
|
+
outcomeNextActivityTypes.Name = "outcomeNextActivityTypes" + i;
|
|
218
|
+
outcomeNextActivityTypes.LabelKey = "Activity";
|
|
219
|
+
outcomeNextActivityTypes.DataSource = this.nextActivityList;
|
|
220
|
+
outcomeNextActivityTypes.SingleSelection = true;
|
|
221
|
+
outcomeNextActivityTypes.AllowSearchFilter = true;
|
|
222
|
+
let outcomeCanAddComment = new CheckBoxOptions();
|
|
223
|
+
outcomeCanAddComment.Name = "outcomeCanAddComment" + i;
|
|
224
|
+
outcomeCanAddComment.Value = currentOutcome.canAddComment;
|
|
225
|
+
outcomeCanAddComment.LabelKey = "CanAddComment";
|
|
226
|
+
let outcomeCanEdit;
|
|
227
|
+
outcomeCanEdit = currentOutcome.canEdit;
|
|
228
|
+
let outcomeHiddeneSysName = new TextBoxOptions();
|
|
229
|
+
outcomeHiddeneSysName.Name = "outcomeHiddeneSysName" + i;
|
|
230
|
+
outcomeHiddeneSysName.Type = InputType.Text;
|
|
231
|
+
outcomeHiddeneSysName.Value = currentOutcome.outcomeSysName;
|
|
232
|
+
let outcomeCanEditSysName = new CheckBoxOptions();
|
|
233
|
+
outcomeCanEditSysName.Name = "outcomeCanEditSysName" + i;
|
|
234
|
+
outcomeCanEditSysName.Value = currentOutcome.canEditSysName;
|
|
235
|
+
objectOutcomeOptions.push(outcomeID, outcomeName, outcomeDecisionSysName, outcomeNextActivityTypes, outcomeCanAddComment, outcomeCanEdit, outcomeHiddeneSysName, outcomeCanEditSysName);
|
|
236
|
+
outcomesOptions.push(objectOutcomeOptions);
|
|
237
|
+
outcomesCount += 1;
|
|
238
|
+
}
|
|
239
|
+
return [outcomesOptions, outcomesCount];
|
|
240
|
+
}
|
|
241
|
+
addWFActivityOutcome() {
|
|
242
|
+
let index = this.outcomesCount;
|
|
243
|
+
let objectOutcomeOptions = [];
|
|
244
|
+
let outcomeID = new TextBoxOptions();
|
|
245
|
+
outcomeID.Name = "outcomeID" + index;
|
|
246
|
+
outcomeID.HideLabel = true;
|
|
247
|
+
outcomeID.Type = InputType.Text;
|
|
248
|
+
outcomeID.Value = 0;
|
|
249
|
+
let outcomeName = new MultiLingualTextBoxOptions();
|
|
250
|
+
outcomeName.Name = "outcomeName" + index;
|
|
251
|
+
outcomeName.ArabicLabelKey = "NameInArabic";
|
|
252
|
+
outcomeName.EnglishLabelKey = "NameInEnglish";
|
|
253
|
+
outcomeName.IsRequired = true;
|
|
254
|
+
let outcomeDecisionSysName = new TextBoxOptions();
|
|
255
|
+
outcomeDecisionSysName.Name = "outcomeDecisionSysName" + index;
|
|
256
|
+
outcomeDecisionSysName.LabelKey = "DecisionSysName";
|
|
257
|
+
outcomeDecisionSysName.Type = InputType.Text;
|
|
258
|
+
outcomeDecisionSysName.IsRequired = true;
|
|
259
|
+
let outcomeNextActivityTypes = new DropdownOptions();
|
|
260
|
+
outcomeNextActivityTypes.Name = "outcomeNextActivityTypes" + index;
|
|
261
|
+
outcomeNextActivityTypes.LabelKey = "Activity";
|
|
262
|
+
outcomeNextActivityTypes.DataSource = this.nextActivityList;
|
|
263
|
+
outcomeNextActivityTypes.SingleSelection = true;
|
|
264
|
+
outcomeNextActivityTypes.AllowSearchFilter = true;
|
|
265
|
+
let outcomeCanAddComment = new CheckBoxOptions();
|
|
266
|
+
outcomeCanAddComment.Name = "outcomeCanAddComment" + index;
|
|
267
|
+
outcomeCanAddComment.LabelKey = "CanAddComment";
|
|
268
|
+
let outcomeCanEdit;
|
|
269
|
+
outcomeCanEdit = true;
|
|
270
|
+
let outcomeHiddeneSysName = new TextBoxOptions();
|
|
271
|
+
outcomeHiddeneSysName.Name = "outcomeHiddeneSysName" + index;
|
|
272
|
+
outcomeHiddeneSysName.Type = InputType.Text;
|
|
273
|
+
let outcomeCanEditSysName = new CheckBoxOptions();
|
|
274
|
+
outcomeCanEditSysName.Name = "outcomeCanEditSysName" + index;
|
|
275
|
+
outcomeCanEditSysName.Value = true;
|
|
276
|
+
objectOutcomeOptions.push(outcomeID, outcomeName, outcomeDecisionSysName, outcomeNextActivityTypes, outcomeCanAddComment, outcomeCanEdit, outcomeHiddeneSysName, outcomeCanEditSysName);
|
|
277
|
+
this.outcomesOptions.push(objectOutcomeOptions);
|
|
278
|
+
this.outcomesCount += 1;
|
|
279
|
+
}
|
|
280
|
+
deleteOutcome(deletedOutcome) {
|
|
281
|
+
let deletedOutcomeIndex = this.outcomesOptions.indexOf(deletedOutcome);
|
|
282
|
+
if (deletedOutcomeIndex !== -1) {
|
|
283
|
+
this.outcomesOptions.splice(deletedOutcomeIndex, 1);
|
|
284
|
+
for (var i = 0; i < deletedOutcome.length; i++) {
|
|
285
|
+
this.addworkflowActivityForm.removeControl(deletedOutcome[i].Name);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
//On changes events
|
|
290
|
+
activityTypeOnChange(activityType) {
|
|
291
|
+
activityType = activityType?.toLowerCase();
|
|
292
|
+
//Reset controls, outcomes and flags
|
|
293
|
+
this.resetAllActivityTypeControls();
|
|
294
|
+
this.outcomesOptions = [];
|
|
295
|
+
this.outcomesCount = 0;
|
|
296
|
+
this.showParticipantContainer = false;
|
|
297
|
+
this.showDynamicControls = false;
|
|
298
|
+
this.showStaticControls = false;
|
|
299
|
+
this.showConditionControls = false;
|
|
300
|
+
this.showConditionRHSWFVariable = false;
|
|
301
|
+
this.showOutcomesContainer = false;
|
|
302
|
+
this.workflowActivityService.getActivityOutcomes(this.versionID, activityType).subscribe((result) => {
|
|
303
|
+
var resultObj = result;
|
|
304
|
+
var model = resultObj.model;
|
|
305
|
+
var list = resultObj.list;
|
|
306
|
+
this.nextActivityList = list.activities;
|
|
307
|
+
switch (activityType) {
|
|
308
|
+
case ActivityType.Approval:
|
|
309
|
+
case ActivityType.Action:
|
|
310
|
+
case ActivityType.PercentageTask:
|
|
311
|
+
this.taskTypeList = list.tasks;
|
|
312
|
+
this.participantTypeList = list.participants.participantTypes;
|
|
313
|
+
this.participantDataList = list.participants.participantData;
|
|
314
|
+
//Initialize required controls for approval
|
|
315
|
+
this.participantTypes = new DropdownOptions();
|
|
316
|
+
this.participantTypes.Name = "ParticipantDTO.ParticipantTypeItemIDsString";
|
|
317
|
+
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
318
|
+
this.participantTypes.DataSource = this.participantTypeList;
|
|
319
|
+
this.participantTypes.SingleSelection = false;
|
|
320
|
+
this.participantTypes.AllowSearchFilter = true;
|
|
321
|
+
this.participantTypes.IsRequired = true;
|
|
322
|
+
this.dynamicTaskName = new MultiLingualTextBoxOptions();
|
|
323
|
+
this.dynamicTaskName.Name = "TaskName";
|
|
324
|
+
this.dynamicTaskName.ArabicLabelKey = "TaskNameInArabic";
|
|
325
|
+
this.dynamicTaskName.EnglishLabelKey = "TaskNameInEnglish";
|
|
326
|
+
this.dynamicTaskName.MaxLength = 255;
|
|
327
|
+
this.dynamicTaskDescription = new MultiLingualTextAreaOptions();
|
|
328
|
+
this.dynamicTaskDescription.Name = "TaskDescription";
|
|
329
|
+
this.dynamicTaskDescription.ArabicLabelKey = "TaskDescriptionInArabic";
|
|
330
|
+
this.dynamicTaskDescription.EnglishLabelKey = "TaskDescriptionInEnglish";
|
|
331
|
+
this.dynamicTaskDescription.MaxLength = 255;
|
|
332
|
+
this.dynamicTaskURL = new TextBoxOptions();
|
|
333
|
+
this.dynamicTaskURL.Name = "TaskURL";
|
|
334
|
+
this.dynamicTaskURL.LabelKey = "TaskURL";
|
|
335
|
+
this.dynamicTaskURL.Type = InputType.Text;
|
|
336
|
+
this.dynamicTaskURL.MaxLength = 2083;
|
|
337
|
+
this.dynamicTaskType = new DropdownOptions();
|
|
338
|
+
this.dynamicTaskType.Name = "TaskCorrlTypeID";
|
|
339
|
+
this.dynamicTaskType.LabelKey = "TaskType";
|
|
340
|
+
this.dynamicTaskType.DataSource = this.taskTypeList;
|
|
341
|
+
this.dynamicTaskType.SingleSelection = true;
|
|
342
|
+
this.dynamicTaskType.AllowSearchFilter = true;
|
|
343
|
+
this.dynamicTaskType.IsRequired = true;
|
|
344
|
+
this.dynamicCanComplete = new ToggleSlideOptions();
|
|
345
|
+
this.dynamicCanComplete.Name = "CanCompleteFromTME";
|
|
346
|
+
this.dynamicCanComplete.LabelKey = "CanCompleteFromTME";
|
|
347
|
+
this.dynamicCanComplete.ViewType = ControlLayout.Horizontal;
|
|
348
|
+
this.dynamicCanComplete.Value = model.canCompleteFromTME;
|
|
349
|
+
let outcomesResult = this.getActivityOutcomesOptions(model.outcomes);
|
|
350
|
+
this.outcomesOptions = outcomesResult[0];
|
|
351
|
+
this.outcomesCount = outcomesResult[1];
|
|
352
|
+
this.showDynamicControls = true;
|
|
353
|
+
this.showParticipantContainer = true;
|
|
354
|
+
this.showOutcomesContainer = true;
|
|
355
|
+
break;
|
|
356
|
+
case ActivityType.Email:
|
|
357
|
+
case ActivityType.Sleep:
|
|
358
|
+
if (activityType == ActivityType.Email) {
|
|
359
|
+
this.participantTypeList = list.participants.participantTypes;
|
|
360
|
+
this.participantDataList = list.participants.participantData;
|
|
361
|
+
this.participantTypes = new DropdownOptions();
|
|
362
|
+
this.participantTypes.Name = "ParticipantDTO.ParticipantTypeItemIDsString";
|
|
363
|
+
this.participantTypes.LabelKey = "ParticipantTypes";
|
|
364
|
+
this.participantTypes.DataSource = this.participantTypeList;
|
|
365
|
+
this.participantTypes.SingleSelection = false;
|
|
366
|
+
this.participantTypes.AllowSearchFilter = true;
|
|
367
|
+
this.participantTypes.IsRequired = true;
|
|
368
|
+
this.showParticipantContainer = true;
|
|
369
|
+
}
|
|
370
|
+
let name = new EnglishArabicDTO();
|
|
371
|
+
name.Arabic = model.normalOutcomeName.arabic;
|
|
372
|
+
name.English = model.normalOutcomeName.english;
|
|
373
|
+
this.staticOutcomeName = new MultiLingualTextBoxOptions();
|
|
374
|
+
this.staticOutcomeName.Name = "NormalOutcomeName";
|
|
375
|
+
this.staticOutcomeName.ArabicLabelKey = "OutcomeNameInArabic";
|
|
376
|
+
this.staticOutcomeName.EnglishLabelKey = "OutcomeNameInEnglish";
|
|
377
|
+
this.staticOutcomeName.IsRequired = true;
|
|
378
|
+
this.staticOutcomeName.Value = name;
|
|
379
|
+
this.staticOutcomeName.MaxLength = 255;
|
|
380
|
+
this.staticOutcomeSysName = new TextBoxOptions();
|
|
381
|
+
this.staticOutcomeSysName.Name = "OutcomeSysName";
|
|
382
|
+
this.staticOutcomeSysName.LabelKey = "DecisionSysName";
|
|
383
|
+
this.staticOutcomeSysName.Type = InputType.Text;
|
|
384
|
+
this.staticOutcomeSysName.IsRequired = true;
|
|
385
|
+
this.staticOutcomeSysName.MaxLength = 100;
|
|
386
|
+
this.staticOutcomeNextActivity = new DropdownOptions();
|
|
387
|
+
this.staticOutcomeNextActivity.Name = "NextActivityID_GUID";
|
|
388
|
+
this.staticOutcomeNextActivity.LabelKey = "NextActivity";
|
|
389
|
+
this.staticOutcomeNextActivity.DataSource = this.nextActivityList;
|
|
390
|
+
this.staticOutcomeNextActivity.SingleSelection = true;
|
|
391
|
+
this.staticOutcomeNextActivity.AllowSearchFilter = true;
|
|
392
|
+
this.staticOutcomeNextActivity.IsRequired = true;
|
|
393
|
+
this.staticOutcomeCanAddComment = new ToggleSlideOptions();
|
|
394
|
+
this.staticOutcomeCanAddComment.Name = "CanAddComment";
|
|
395
|
+
this.staticOutcomeCanAddComment.LabelKey = "CanAddComment";
|
|
396
|
+
this.staticOutcomeCanAddComment.ViewType = ControlLayout.Horizontal;
|
|
397
|
+
this.staticOutcomeCanAddComment.Value = model.canAddComment;
|
|
398
|
+
this.showStaticControls = true;
|
|
399
|
+
break;
|
|
400
|
+
case ActivityType.Condition:
|
|
401
|
+
this.conditionLHSWFVariableList = list.wfVariables;
|
|
402
|
+
this.conditionRHSWFVariableList = list.wfVariables;
|
|
403
|
+
this.conditionRHSTypeList = list.rhsTypes;
|
|
404
|
+
this.conditionList = list.conditions;
|
|
405
|
+
this.conditionLHSDropDown = new DropdownOptions();
|
|
406
|
+
this.conditionLHSDropDown.Name = "LHSVariableID_GUID";
|
|
407
|
+
this.conditionLHSDropDown.HideLabel = true;
|
|
408
|
+
this.conditionLHSDropDown.Placeholder = "WorkflowVariables";
|
|
409
|
+
this.conditionLHSDropDown.DataSource = this.conditionLHSWFVariableList;
|
|
410
|
+
this.conditionLHSDropDown.SingleSelection = true;
|
|
411
|
+
this.conditionLHSDropDown.AllowSearchFilter = true;
|
|
412
|
+
this.conditionLHSDropDown.IsRequired = true;
|
|
413
|
+
this.conditionsDropDown = new DropdownOptions();
|
|
414
|
+
this.conditionsDropDown.Name = "OperatorTypeItemID_GUID";
|
|
415
|
+
this.conditionsDropDown.HideLabel = true;
|
|
416
|
+
this.conditionsDropDown.Placeholder = "Condition";
|
|
417
|
+
this.conditionsDropDown.DataSource = this.conditionList;
|
|
418
|
+
this.conditionsDropDown.SingleSelection = true;
|
|
419
|
+
this.conditionsDropDown.IsRequired = true;
|
|
420
|
+
let selectedRHSType = this.conditionRHSTypeList.filter((item) => { return item.key?.toLowerCase() == Righthandsidetype.Variable; }).map((item) => item.key)[0];
|
|
421
|
+
this.conditionRHSTypeDropDown = new DropdownOptions();
|
|
422
|
+
this.conditionRHSTypeDropDown.Name = "RHSTypeItemID_GUID";
|
|
423
|
+
this.conditionRHSTypeDropDown.HideLabel = true;
|
|
424
|
+
this.conditionRHSTypeDropDown.DataSource = this.conditionRHSTypeList;
|
|
425
|
+
this.conditionRHSTypeDropDown.SingleSelection = true;
|
|
426
|
+
this.conditionRHSTypeDropDown.IsRequired = true;
|
|
427
|
+
this.conditionRHSTypeDropDown.SelectedItems = selectedRHSType;
|
|
428
|
+
this.conditionRHSDropDown = new DropdownOptions();
|
|
429
|
+
this.conditionRHSDropDown.Name = "RHSVariableID_GUID";
|
|
430
|
+
this.conditionRHSDropDown.HideLabel = true;
|
|
431
|
+
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
432
|
+
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
433
|
+
this.conditionRHSDropDown.SingleSelection = true;
|
|
434
|
+
this.conditionRHSDropDown.IsRequired = true;
|
|
435
|
+
let conditionOutcomesResult = this.getActivityOutcomesOptions(model.outcomes);
|
|
436
|
+
this.outcomesOptions = conditionOutcomesResult[0];
|
|
437
|
+
this.outcomesCount = conditionOutcomesResult[1];
|
|
438
|
+
this.showConditionControls = true;
|
|
439
|
+
this.showConditionRHSWFVariable = true;
|
|
440
|
+
this.showOutcomesContainer = true;
|
|
441
|
+
break;
|
|
442
|
+
}
|
|
443
|
+
this.canAddOutcome = this.showOutcomesContainer ? model.canAddOutcome : false;
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
conditionRHSTypeOnChange(type) {
|
|
447
|
+
type = type.toLowerCase();
|
|
448
|
+
if (type == Righthandsidetype.Variable) {
|
|
449
|
+
this.addworkflowActivityForm.removeControl("RHSValue");
|
|
450
|
+
this.conditionRHSDropDown = new DropdownOptions();
|
|
451
|
+
this.conditionRHSDropDown.Name = "RHSVariableID_GUID";
|
|
452
|
+
this.conditionRHSDropDown.HideLabel = true;
|
|
453
|
+
this.conditionRHSDropDown.Placeholder = "WorkflowVariables";
|
|
454
|
+
this.conditionRHSDropDown.DataSource = this.conditionRHSWFVariableList;
|
|
455
|
+
this.conditionRHSDropDown.SingleSelection = true;
|
|
456
|
+
this.conditionRHSDropDown.IsRequired = true;
|
|
457
|
+
this.showConditionRHSWFVariable = true;
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
this.addworkflowActivityForm.removeControl("RHSVariableID_GUID");
|
|
461
|
+
this.conditionRHSValue = new TextBoxOptions();
|
|
462
|
+
this.conditionRHSValue.Name = "RHSValue";
|
|
463
|
+
this.conditionRHSValue.HideLabel = true;
|
|
464
|
+
this.conditionRHSValue.Placeholder = "Value";
|
|
465
|
+
this.conditionRHSValue.Type = InputType.Text;
|
|
466
|
+
this.conditionRHSValue.IsRequired = true;
|
|
467
|
+
this.conditionRHSValue.MaxLength = 512;
|
|
468
|
+
this.showConditionRHSWFVariable = false;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
participantTypeOnChange(participantType) {
|
|
472
|
+
participantType = participantType?.toLowerCase();
|
|
473
|
+
if (participantType == ParticipantType.PermissionSet) {
|
|
474
|
+
this.participantPermissionSet = new DropdownOptions();
|
|
475
|
+
this.participantPermissionSet.Name = "ParticipantDTO.PermissionSetIDsString";
|
|
476
|
+
this.participantPermissionSet.LabelKey = "PermissionSet";
|
|
477
|
+
this.participantPermissionSet.DataSource = this.participantDataList;
|
|
478
|
+
this.participantPermissionSet.SingleSelection = false;
|
|
479
|
+
this.participantPermissionSet.AllowSearchFilter = true;
|
|
480
|
+
this.showParticipantPermssionSet = true;
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
this.addworkflowActivityForm.removeControl("ParticipantDTO.PermissionSetIDsString");
|
|
484
|
+
this.showParticipantPermssionSet = false;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
//reset type
|
|
488
|
+
resetAllActivityTypeControls() {
|
|
489
|
+
this.addworkflowActivityForm.removeControl("ParticipantDTO.ParticipantTypeItemIDsString");
|
|
490
|
+
this.addworkflowActivityForm.removeControl("ParticipantDTO.PermissionSetIDsString");
|
|
491
|
+
this.addworkflowActivityForm.removeControl("ParticipantDTO.PermissionSetIDsString");
|
|
492
|
+
this.addworkflowActivityForm.removeControl("TaskName");
|
|
493
|
+
this.addworkflowActivityForm.removeControl("TaskDescription");
|
|
494
|
+
this.addworkflowActivityForm.removeControl("TaskURL");
|
|
495
|
+
this.addworkflowActivityForm.removeControl("TaskCorrlTypeID");
|
|
496
|
+
this.addworkflowActivityForm.removeControl("CanCompleteFromTME");
|
|
497
|
+
this.addworkflowActivityForm.removeControl("NormalOutcomeName");
|
|
498
|
+
this.addworkflowActivityForm.removeControl("OutcomeSysName");
|
|
499
|
+
this.addworkflowActivityForm.removeControl("NextActivityID_GUID");
|
|
500
|
+
this.addworkflowActivityForm.removeControl("CanAddComment");
|
|
501
|
+
this.addworkflowActivityForm.removeControl("LHSVariableID_GUID");
|
|
502
|
+
this.addworkflowActivityForm.removeControl("OperatorTypeItemID_GUID");
|
|
503
|
+
this.addworkflowActivityForm.removeControl("RHSTypeItemID_GUID");
|
|
504
|
+
this.addworkflowActivityForm.removeControl("RHSVariableID_GUID");
|
|
505
|
+
this.addworkflowActivityForm.removeControl("RHSValue");
|
|
506
|
+
//Remove outcomes controls
|
|
507
|
+
let ResultModel = this.addworkflowActivityForm.value;
|
|
508
|
+
for (let i = 0; i < this.outcomesCount; i++) {
|
|
509
|
+
let outcomeID = ResultModel["outcomeID" + i];
|
|
510
|
+
if (outcomeID == undefined)
|
|
511
|
+
continue;
|
|
512
|
+
this.addworkflowActivityForm.removeControl("outcomeID" + i);
|
|
513
|
+
this.addworkflowActivityForm.removeControl("outcomeName" + i);
|
|
514
|
+
this.addworkflowActivityForm.removeControl("outcomeDecisionSysName" + i);
|
|
515
|
+
this.addworkflowActivityForm.removeControl("outcomeHiddeneSysName" + i);
|
|
516
|
+
this.addworkflowActivityForm.removeControl("outcomeNextActivityTypes" + i);
|
|
517
|
+
this.addworkflowActivityForm.removeControl("outcomeCanAddComment" + i);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
//Cancel
|
|
521
|
+
cancelAdd() {
|
|
522
|
+
this.router.navigate(['/Admin/Workflows/workflow/']);
|
|
523
|
+
}
|
|
524
|
+
//On destroy
|
|
525
|
+
ngOnDestroy() {
|
|
526
|
+
this.requestHandlerService.destroyHandler();
|
|
527
|
+
}
|
|
528
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkflowActivityAddComponent, deps: [{ token: i1.WorkflowActivityService }, { token: i2.UtilityService }, { token: i3.ActivatedRoute }, { token: i4.PageInfoService }, { token: i3.Router }, { token: i2.RequestHandlerService }, { token: i2.BBSFTranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
529
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: WorkflowActivityAddComponent, selector: "lib-workflow-activity-add", ngImport: i0, template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isAddFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"addworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"addworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"addworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"addworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelAdd()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange", "OnBlur"] }, { kind: "component", type: i6.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { kind: "component", type: i6.ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { kind: "component", type: i6.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }] }); }
|
|
530
|
+
}
|
|
531
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: WorkflowActivityAddComponent, decorators: [{
|
|
532
|
+
type: Component,
|
|
533
|
+
args: [{ selector: 'lib-workflow-activity-add', template: "<div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\" *ngIf=\"isAddFormLoaded\">\r\n <div class=\"card-body py-3\">\r\n <BBSF-Form [options]=\"addworkflowActivityFormOptions\">\r\n <!--Start shared controls container-->\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"name\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"sysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"activityType\" [group]=\"addworkflowActivityForm\" (OnChange)=\"activityTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <!--End shared controls container-->\r\n <!--Start participant container-->\r\n <div id=\"participantContainer\" *ngIf=\"showParticipantContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantTypes\" [group]=\"addworkflowActivityForm\" (OnChange)=\"participantTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showParticipantPermssionSet\" class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"participantPermissionSet\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End participant container-->\r\n <!--Start static controls-->\r\n <div *ngIf=\"showStaticControls\" id=\"staticContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"staticOutcomeName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"staticOutcomeSysName\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"staticOutcomeNextActivity\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"staticOutcomeCanAddComment\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End static controls-->\r\n <!--Start dynamic controls-->\r\n <div *ngIf=\"showDynamicControls\" id=\"dynamicContainer\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"dynamicTaskName\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"dynamicTaskDescription\" [group]=\"addworkflowActivityForm\"></BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"dynamicTaskURL\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"dynamicTaskType\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Toggleslide [options]=\"dynamicCanComplete\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-Toggleslide>\r\n </div>\r\n </div>\r\n </div>\r\n <!--End dynamic controls-->\r\n\r\n <!--Start condition controls-->\r\n <div *ngIf=\"showConditionControls\" id=\"conditionContainer\">\r\n <div class=\"table-responsive\">\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"LeftHandSide\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Condition\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSideType\")}}</th>\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"RightHandSide\")}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionLHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionsDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <BBSF-DropdownList [options]=\"conditionRHSTypeDropDown\" [group]=\"addworkflowActivityForm\" (OnChange)=\"conditionRHSTypeOnChange($event)\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td *ngIf=\"showConditionRHSWFVariable; else conditionTxtValue\">\r\n <BBSF-DropdownList [options]=\"conditionRHSDropDown\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <ng-template #conditionTxtValue>\r\n <td>\r\n <BBSF-TextBox [options]=\"conditionRHSValue\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n </td>\r\n </ng-template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <!--End condition controls-->\r\n\r\n <!--Start outcomes container-->\r\n <div *ngIf=\"showOutcomesContainer\" id=\"outcomesContainer\" class=\"row\">\r\n <div class=\"table-responsive\">\r\n <!-- begin::Table -->\r\n <table class=\"table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer table-w-control\">\r\n <thead>\r\n <tr class=\"text-start text-gray-400 fw-bolder fs-7 text-uppercase gs-0\">\r\n <th class=\"min-w-150px\">{{utilityService.getResourceValue(\"Decision\")}}</th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n <th class=\"min-w-150px\"></th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"fw-bold text-gray-600 border-0\">\r\n <tr *ngFor=\"let option of outcomesOptions;let i=index;\">\r\n\r\n <td>\r\n <!--ID-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[0]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--Name-->\r\n <BBSF-MultiLingualTextBox [options]=\"option[1]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-MultiLingualTextBox>\r\n </td>\r\n <td>\r\n <!--SysName-->\r\n <BBSF-TextBox [options]=\"option[2]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--hidden SysName-->\r\n <BBSF-TextBox [hidden]=\"true\" [options]=\"option[6]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-TextBox>\r\n <!--can edit SysName-->\r\n <BBSF-CheckBox [hidden]=\"true\" [options]=\"option[7]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n <td>\r\n <!--NextActivity-->\r\n <BBSF-DropdownList [options]=\"option[3]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-DropdownList>\r\n </td>\r\n <td>\r\n <!--CanAddComment-->\r\n <BBSF-CheckBox [options]=\"option[4]\" [group]=\"addworkflowActivityForm\">\r\n </BBSF-CheckBox>\r\n </td>\r\n\r\n <td>\r\n <!--if outcome Can Edit-->\r\n <a *ngIf=\"option[5]\" class=\"btn btn-icon btn-light-danger btn-sm\" (click)=\"deleteOutcome(option)\">\r\n <i class=\" fa fa-trash hidden\" aria-hidden=\"true\"></i>\r\n </a>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"canAddOutcome\">\r\n <td colspan=\"5\">\r\n <button type=\"button\" class=\"w-100 btn btn-success\" (click)=\"addWFActivityOutcome()\">\r\n {{utilityService.getResourceValue(\"AddNewRecord\")}}\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n </div>\r\n <!--End outcomes container-->\r\n\r\n <div class=\"text-center pt-7\">\r\n <button type=\"button\" class=\"btn btn-light me-3 btn-sm\" (click)=\"cancelAdd()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n" }]
|
|
534
|
+
}], ctorParameters: () => [{ type: i1.WorkflowActivityService }, { type: i2.UtilityService }, { type: i3.ActivatedRoute }, { type: i4.PageInfoService }, { type: i3.Router }, { type: i2.RequestHandlerService }, { type: i2.BBSFTranslateService }] });
|
|
535
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYWN0aXZpdHktYWRkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvd29ya2Zsb3dzL2FjdGl2aXR5L3dvcmtmbG93LWFjdGl2aXR5LWFkZC93b3JrZmxvdy1hY3Rpdml0eS1hZGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy93b3JrZmxvd3MvYWN0aXZpdHkvd29ya2Zsb3ctYWN0aXZpdHktYWRkL3dvcmtmbG93LWFjdGl2aXR5LWFkZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdqTyxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7Ozs7O0FBTXhGLE1BQU0sT0FBTyw0QkFBNEI7SUFnRXZDLFlB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QVE7SUFDUixTQUFTO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFlBQVk7SUFDWixXQUFXO1FBQ1QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7OEdBL21CVSw0QkFBNEI7a0dBQTVCLDRCQUE0QixpRUNuQnpDLDQvVUF3T0E7OzJGRHJOYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb250cm9sTGF5b3V0LCBEcm9wZG93bk9wdGlvbnMsIEVuZ2xpc2hBcmFiaWNEVE8sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucywgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIFRleHRCb3hPcHRpb25zLCBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBY3Rpdml0eVR5cGUsIFBhcnRpY2lwYW50VHlwZSwgUmlnaHRoYW5kc2lkZXR5cGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29uZGl0aW9uUkhTVHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9jb25maWd1cmF0aW9uL0NvbmRpdGlvblJIU1R5cGUnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5VHlwZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9FbnVtcy9XRkFjdGl2aXR5VHlwZSc7XHJcbmltcG9ydCB7IFBhcnRpY2lwYW50TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL0ltcGVyc29uYXRpb25SdWxlTW9kZWxzL1BhcnRpY2lwYW50TW9kZWwnO1xyXG5pbXBvcnQgeyBXRkFjdGl2aXR5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlNb2RlbCc7XHJcbmltcG9ydCB7IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL1dvcmtmbG93TW9kZWxzL1dGQWN0aXZpdHlPdXRjb21lTW9kZWwnO1xyXG5pbXBvcnQgeyBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9Xb3JrZmxvd0FjdGl2aXR5U2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItd29ya2Zsb3ctYWN0aXZpdHktYWRkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctYWN0aXZpdHktYWRkLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dBY3Rpdml0eUFkZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIGlzQWRkRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZlcnNpb25JRDogc3RyaW5nO1xyXG5cclxuICAvL0FkZCBBY3Rpdml0eSBzaGFyZWQgY29udHJvbHNcclxuICBhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIGFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBuYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucztcclxuICBzeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBhY3Rpdml0eVR5cGU6IERyb3Bkb3duT3B0aW9ucztcclxuICBjYW5BZGRPdXRjb21lOiBib29sZWFuO1xyXG4gIC8vU2hhcmVkIHJlcXVpcmVkIGxpc3RzXHJcbiAgQWN0aXZpdHlUeXBlTGlzdDogYW55W10gPSBbXTtcclxuXHJcbiAgLy9TaGFyZWQgUGFydGljaXBhbnQgdHlwZSBhbmQgZGF0YVxyXG4gIHNob3dQYXJ0aWNpcGFudENvbnRhaW5lcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHBhcnRpY2lwYW50VHlwZXM6IERyb3Bkb3duT3B0aW9ucztcclxuICBwYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQ6IERyb3Bkb3duT3B0aW9ucztcclxuXHJcbiAgLy9EeW5hbWljIFR5cGVzIENvbnRyb2xzIC8vKEFwcHJvdmFsLEFjdGlvbixQZXJjZW50YWdlKVxyXG4gIHNob3dEeW5hbWljQ29udHJvbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkeW5hbWljVGFza05hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIGR5bmFtaWNUYXNrRGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBkeW5hbWljVGFza1VSTDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZHluYW1pY1Rhc2tUeXBlOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgZHluYW1pY0NhbkNvbXBsZXRlOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcblxyXG5cclxuICAvL1N0YXRpYyB0eXBlcyBjb250cm9scyAoRW1haWwsU2xlZXApXHJcbiAgLy9FbWFpbCBUeXBlIENvbnRyb2xzIC8vKyBpbml0aWFsaXplIHBhcnRpY2lwYW50XHJcbiAgc2hvd1N0YXRpY0NvbnRyb2xzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc3RhdGljT3V0Y29tZU5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zO1xyXG4gIHN0YXRpY091dGNvbWVTeXNOYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQ6IFRvZ2dsZVNsaWRlT3B0aW9ucztcclxuXHJcbiAgLy9Db25kaXRpb24gdHlwZSBjb250cm9sc1xyXG4gIHNob3dDb25kaXRpb25Db250cm9sczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbmRpdGlvbkxIU0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uc0Ryb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTVHlwZURyb3BEb3duOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgY29uZGl0aW9uUkhTRHJvcERvd246IERyb3Bkb3duT3B0aW9ucztcclxuICBjb25kaXRpb25SSFNWYWx1ZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy9PdXRjb21lcyAoZHluYW1pYyxjb25kaXRpb24pXHJcbiAgb3V0Y29tZXNPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIG91dGNvbWVzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgc2hvd091dGNvbWVzQ29udGFpbmVyID0gZmFsc2U7XHJcblxyXG4gIC8vUmVxdWlyZWRMaXN0c1xyXG4gIHRhc2tUeXBlTGlzdCA9IFtdO1xyXG4gIHBhcnRpY2lwYW50VHlwZUxpc3QgPSBbXTtcclxuICBwYXJ0aWNpcGFudERhdGFMaXN0ID0gW107XHJcbiAgbmV4dEFjdGl2aXR5TGlzdCA9IFtdO1xyXG5cclxuICAvL0NvbmRpdGlvblR5cGVSZXF1aXJlZExpc3RzXHJcbiAgY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBbXTtcclxuICBjb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IFtdO1xyXG4gIGNvbmRpdGlvblJIU1R5cGVMaXN0ID0gW107XHJcbiAgY29uZGl0aW9uTGlzdCA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHdvcmtmbG93QWN0aXZpdHlTZXJ2aWNlOiBXb3JrZmxvd0FjdGl2aXR5U2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLnZlcnNpb25JRCA9IHBhcmFtc1sndmlkJ107XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSBcIlwiXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkV29ya2Zsb3dBY3Rpdml0eVwiKTtcclxuICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkhvbWVcIiksIHBhdGg6ICcvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJXb3JrRmxvd3NcIiksIHBhdGg6ICcvQWRtaW4vV29ya2Zsb3dzL3dvcmtmbG93JywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuICAgIF07XHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcblxyXG4gIC8vSW5pdGlhbGl6ZSBhZGQgcGFnZSBhbmQgcmVxdWlyZWQgRERMc1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5sb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHRoaXMuQWN0aXZpdHlUeXBlTGlzdCA9IHJlc3VsdE9iai5hY3Rpdml0eUxpc3Q7XHJcblxyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVxyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRXRkFjdGl2aXR5TW9kZWw7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0QWRkV0ZBY3Rpdml0eUZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5vbkFkZFN1Y2Nlc3M7XHJcblxyXG4gICAgICB0aGlzLm5hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5uYW1lLk5hbWUgPSBcIk5hbWVcIjtcclxuICAgICAgdGhpcy5uYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5uYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICB0aGlzLm5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMubmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICB0aGlzLnN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5zeXNOYW1lLk5hbWUgPSBcIlN5c05hbWVcIjtcclxuICAgICAgdGhpcy5zeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuc3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuc3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zeXNOYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5OYW1lID0gXCJBY3Rpdml0eVR5cGVJdGVtSURfR1VJRFwiXHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVR5cGVcIlxyXG4gICAgICB0aGlzLmFjdGl2aXR5VHlwZS5EYXRhU291cmNlID0gdGhpcy5BY3Rpdml0eVR5cGVMaXN0XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWN0aXZpdHlUeXBlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hY3Rpdml0eVR5cGUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLmlzQWRkRm9ybUxvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0FkZCBmdW5jdGlvbnNcclxuICBnZXRBZGRXRkFjdGl2aXR5TW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0udmFsdWUgYXMgYW55O1xyXG4gICAgbGV0IGFkZE1vZGVsID0gbmV3IFdGQWN0aXZpdHlNb2RlbCgpO1xyXG4gICAgYWRkTW9kZWwuTmFtZSA9IFJlc3VsdE1vZGVsLk5hbWVcclxuICAgIGFkZE1vZGVsLlN5c05hbWUgPSBSZXN1bHRNb2RlbC5TeXNOYW1lXHJcbiAgICBhZGRNb2RlbC5WZXJzaW9uSURfR1VJRCA9IHRoaXMudmVyc2lvbklEO1xyXG4gICAgYWRkTW9kZWwuQWN0aXZpdHlUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5BY3Rpdml0eVR5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAvL0lmIHBhcnRpY2lwYW50IGV4aXN0c1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsW1wiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgYWRkTW9kZWwuUGFydGljaXBhbnREVE8gPSBuZXcgUGFydGljaXBhbnRNb2RlbCgpO1xyXG4gICAgICBhZGRNb2RlbC5QYXJ0aWNpcGFudERUTyA9IG5ldyBQYXJ0aWNpcGFudE1vZGVsKCk7XHJcbiAgICAgIGFkZE1vZGVsLlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmcgPSBSZXN1bHRNb2RlbFtcIlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdcIl0udG9TdHJpbmcoKTtcclxuICAgICAgaWYgKFJlc3VsdE1vZGVsW1wiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXS5pbmNsdWRlcyhQYXJ0aWNpcGFudFR5cGUuUGVybWlzc2lvblNldCkpIHtcclxuICAgICAgICBhZGRNb2RlbC5QYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nID0gUmVzdWx0TW9kZWxbXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCJdLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHN3aXRjaCAoYWRkTW9kZWwuQWN0aXZpdHlUeXBlSXRlbUlEX0dVSUQpIHtcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQXBwcm92YWw6XHJcbiAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkFjdGlvbjpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuUGVyY2VudGFnZVRhc2s6XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza05hbWUgPSBSZXN1bHRNb2RlbC5UYXNrTmFtZTtcclxuICAgICAgICBhZGRNb2RlbC5UYXNrRGVzY3JpcHRpb24gPSBSZXN1bHRNb2RlbC5UYXNrRGVzY3JpcHRpb247XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza1VSTCA9IFJlc3VsdE1vZGVsLlRhc2tVUkw7XHJcbiAgICAgICAgYWRkTW9kZWwuVGFza0NvcnJsVHlwZUlEID0gUmVzdWx0TW9kZWwuVGFza0NvcnJsVHlwZUlEICE9IG51bGwgPyBOdW1iZXIoUmVzdWx0TW9kZWwuVGFza0NvcnJsVHlwZUlEKSA6IG51bGw7XHJcbiAgICAgICAgYWRkTW9kZWwuQ2FuQ29tcGxldGVGcm9tVE1FID0gUmVzdWx0TW9kZWwuQ2FuQ29tcGxldGVGcm9tVE1FO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuU2xlZXA6XHJcbiAgICAgICAgYWRkTW9kZWwuTm9ybWFsT3V0Y29tZU5hbWUgPSBSZXN1bHRNb2RlbC5Ob3JtYWxPdXRjb21lTmFtZTtcclxuICAgICAgICBhZGRNb2RlbC5PdXRjb21lU3lzTmFtZSA9IFJlc3VsdE1vZGVsLk91dGNvbWVTeXNOYW1lO1xyXG4gICAgICAgIGFkZE1vZGVsLk5leHRBY3Rpdml0eUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5OZXh0QWN0aXZpdHlJRF9HVUlEO1xyXG4gICAgICAgIGFkZE1vZGVsLkNhbkFkZENvbW1lbnQgPSBSZXN1bHRNb2RlbC5DYW5BZGRDb21tZW50O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEFjdGl2aXR5VHlwZS5Db25kaXRpb246XHJcbiAgICAgICAgYWRkTW9kZWwuTEhTVmFyaWFibGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuTEhTVmFyaWFibGVJRF9HVUlEXHJcbiAgICAgICAgYWRkTW9kZWwuUkhTVmFyaWFibGVJRF9HVUlEID0gUmVzdWx0TW9kZWwuUkhTVmFyaWFibGVJRF9HVUlEXHJcbiAgICAgICAgYWRkTW9kZWwuUkhTVHlwZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuUkhTVHlwZUl0ZW1JRF9HVUlEXHJcbiAgICAgICAgYWRkTW9kZWwuT3BlcmF0b3JUeXBlSXRlbUlEX0dVSUQgPSBSZXN1bHRNb2RlbC5PcGVyYXRvclR5cGVJdGVtSURfR1VJRFxyXG4gICAgICAgIGFkZE1vZGVsLlJIU1ZhbHVlID0gUmVzdWx0TW9kZWwuUkhTVmFsdWUgIT0gdW5kZWZpbmVkID8gUmVzdWx0TW9kZWwuUkhTVmFsdWUgOiBudWxsO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgIH1cclxuICAgIC8vU2V0IE91dGNvbWVzIChkeW5hbWljLGNvbmRpdGlvbiB0eXBlcylcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5vdXRjb21lc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IG91dGNvbWVJRCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUlEXCIgKyBqXTtcclxuICAgICAgaWYgKG91dGNvbWVJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZU5hbWUgPSBSZXN1bHRNb2RlbFtcIm91dGNvbWVOYW1lXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBvdXRjb21lU3lzTmFtZTogc3RyaW5nO1xyXG4gICAgICBsZXQgb3V0Q29tZUNhbkVkaXRTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuRWRpdFN5c05hbWVcIiArIGpdO1xyXG4gICAgICBpZiAob3V0Q29tZUNhbkVkaXRTeXNOYW1lKVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lRGVjaXNpb25TeXNOYW1lXCIgKyBqXTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIG91dGNvbWVTeXNOYW1lID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGpdO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVBY3Rpdml0eSA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzXCIgKyBqXTtcclxuICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gUmVzdWx0TW9kZWxbXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgal07XHJcblxyXG4gICAgICBsZXQgYWN0aXZpdHlPdXRjb21lOiBXRkFjdGl2aXR5T3V0Y29tZU1vZGVsID0gbmV3IFdGQWN0aXZpdHlPdXRjb21lTW9kZWwoKTtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLklEX0dVSUQgPSBvdXRjb21lSUQ7XHJcbiAgICAgIGFjdGl2aXR5T3V0Y29tZS5OYW1lRU4gPSBvdXRjb21lTmFtZS5FbmdsaXNoO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuTmFtZUFSID0gb3V0Y29tZU5hbWUuQXJhYmljO1xyXG4gICAgICBhY3Rpdml0eU91dGNvbWUuT3V0Y29tZVN5c05hbWUgPSBvdXRjb21lU3lzTmFtZTtcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLk5leHRBY3Rpdml0eUlEX0dVSUQgPSBvdXRjb21lQWN0aXZpdHlcclxuICAgICAgYWN0aXZpdHlPdXRjb21lLkNhbkFkZENvbW1lbnQgPSBvdXRjb21lQ2FuQWRkQ29tbWVudDtcclxuXHJcbiAgICAgIGFkZE1vZGVsLk91dGNvbWVzLnB1c2goYWN0aXZpdHlPdXRjb21lKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuICBnZXRBZGRXRkFjdGl2aXR5RnVuY3Rpb24gPSAoQWRkTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMud29ya2Zsb3dBY3Rpdml0eVNlcnZpY2UuYWRkV29ya2Zsb3dBY3Rpdml0eShBZGRNb2RlbClcclxuICB9XHJcbiAgb25BZGRTdWNjZXNzID0gKHJlc3VsdCkgPT4ge1xyXG4gICAgdGhpcy5jYW5jZWxBZGQoKTtcclxuICB9XHJcblxyXG4gIC8vT3V0Y29tZSBmdW5jdGlvbnNcclxuICBnZXRBY3Rpdml0eU91dGNvbWVzT3B0aW9ucyhvdXRDb21lczogYW55W10pIHtcclxuICAgIGxldCBvdXRjb21lc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBsZXQgb3V0Y29tZXNDb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG91dENvbWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjdXJyZW50T3V0Y29tZSA9IG91dENvbWVzW2ldO1xyXG4gICAgICBsZXQgb2JqZWN0T3V0Y29tZU9wdGlvbnM6IGFueVtdID0gW107XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUlEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVJRC5OYW1lID0gXCJvdXRjb21lSURcIiArIGk7XHJcbiAgICAgIG91dGNvbWVJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lSUQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBvdXRjb21lSUQuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5pRF9HVUlEO1xyXG5cclxuICAgICAgbGV0IG5hbWUgPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBuYW1lLkVuZ2xpc2ggPSBjdXJyZW50T3V0Y29tZS5uYW1lRU47XHJcbiAgICAgIG5hbWUuQXJhYmljID0gY3VycmVudE91dGNvbWUubmFtZUFSO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVOYW1lLk5hbWUgPSBcIm91dGNvbWVOYW1lXCIgKyBpO1xyXG4gICAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIG91dGNvbWVOYW1lLkVuZ2xpc2hMYWJlbEtleSA9IFwiTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICBvdXRjb21lTmFtZS5WYWx1ZSA9IG5hbWU7XHJcbiAgICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICBvdXRjb21lTmFtZS5NYXhMZW5ndGggPSAyNTU7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuTGFiZWxLZXkgPSBcIkRlY2lzaW9uU3lzTmFtZVwiO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLm91dGNvbWVTeXNOYW1lO1xyXG4gICAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLklzRGlzYWJsZWQgPSAhY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLk5hbWUgPSBcIm91dGNvbWVOZXh0QWN0aXZpdHlUeXBlc1wiICsgaTtcclxuICAgICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVwiXHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5BZGRDb21tZW50ID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5OYW1lID0gXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgaTtcclxuICAgICAgb3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSBjdXJyZW50T3V0Y29tZS5jYW5BZGRDb21tZW50O1xyXG4gICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgICBvdXRjb21lQ2FuRWRpdCA9IGN1cnJlbnRPdXRjb21lLmNhbkVkaXQ7XHJcblxyXG4gICAgICBsZXQgb3V0Y29tZUhpZGRlbmVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGk7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5WYWx1ZSA9IGN1cnJlbnRPdXRjb21lLm91dGNvbWVTeXNOYW1lO1xyXG5cclxuICAgICAgbGV0IG91dGNvbWVDYW5FZGl0U3lzTmFtZSA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaTtcclxuICAgICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLlZhbHVlID0gY3VycmVudE91dGNvbWUuY2FuRWRpdFN5c05hbWU7XHJcblxyXG4gICAgICBvYmplY3RPdXRjb21lT3B0aW9ucy5wdXNoKG91dGNvbWVJRCwgb3V0Y29tZU5hbWUsIG91dGNvbWVEZWNpc2lvblN5c05hbWUsIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyxcclxuICAgICAgICBvdXRjb21lQ2FuQWRkQ29tbWVudCwgb3V0Y29tZUNhbkVkaXQsIG91dGNvbWVIaWRkZW5lU3lzTmFtZSwgb3V0Y29tZUNhbkVkaXRTeXNOYW1lKTtcclxuXHJcblxyXG4gICAgICBvdXRjb21lc09wdGlvbnMucHVzaChvYmplY3RPdXRjb21lT3B0aW9ucyk7XHJcbiAgICAgIG91dGNvbWVzQ291bnQgKz0gMTtcclxuXHJcbiAgICB9XHJcbiAgICByZXR1cm4gW291dGNvbWVzT3B0aW9ucywgb3V0Y29tZXNDb3VudF07XHJcbiAgfVxyXG4gIGFkZFdGQWN0aXZpdHlPdXRjb21lKCkge1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy5vdXRjb21lc0NvdW50O1xyXG5cclxuICAgIGxldCBvYmplY3RPdXRjb21lT3B0aW9uczogYW55W10gPSBbXTtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUlEID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lSUQuTmFtZSA9IFwib3V0Y29tZUlEXCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVJRC5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgb3V0Y29tZUlELlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIG91dGNvbWVJRC5WYWx1ZSA9IDA7XHJcblxyXG4gICAgbGV0IG91dGNvbWVOYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lTmFtZS5OYW1lID0gXCJvdXRjb21lTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICBvdXRjb21lTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgIG91dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lRGVjaXNpb25TeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZURlY2lzaW9uU3lzTmFtZS5MYWJlbEtleSA9IFwiRGVjaXNpb25TeXNOYW1lXCI7XHJcbiAgICBvdXRjb21lRGVjaXNpb25TeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIG91dGNvbWVEZWNpc2lvblN5c05hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgbGV0IG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVOZXh0QWN0aXZpdHlUeXBlcy5OYW1lID0gXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLkxhYmVsS2V5ID0gXCJBY3Rpdml0eVwiXHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuRGF0YVNvdXJjZSA9IHRoaXMubmV4dEFjdGl2aXR5TGlzdFxyXG4gICAgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICBvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50Lk5hbWUgPSBcIm91dGNvbWVDYW5BZGRDb21tZW50XCIgKyBpbmRleDtcclxuICAgIG91dGNvbWVDYW5BZGRDb21tZW50LkxhYmVsS2V5ID0gXCJDYW5BZGRDb21tZW50XCI7XHJcblxyXG4gICAgbGV0IG91dGNvbWVDYW5FZGl0OiBib29sZWFuO1xyXG4gICAgb3V0Y29tZUNhbkVkaXQgPSB0cnVlO1xyXG5cclxuICAgIGxldCBvdXRjb21lSGlkZGVuZVN5c05hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIG91dGNvbWVIaWRkZW5lU3lzTmFtZS5OYW1lID0gXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGluZGV4O1xyXG4gICAgb3V0Y29tZUhpZGRlbmVTeXNOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuXHJcbiAgICBsZXQgb3V0Y29tZUNhbkVkaXRTeXNOYW1lID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgb3V0Y29tZUNhbkVkaXRTeXNOYW1lLk5hbWUgPSBcIm91dGNvbWVDYW5FZGl0U3lzTmFtZVwiICsgaW5kZXg7XHJcbiAgICBvdXRjb21lQ2FuRWRpdFN5c05hbWUuVmFsdWUgPSB0cnVlO1xyXG5cclxuICAgIG9iamVjdE91dGNvbWVPcHRpb25zLnB1c2gob3V0Y29tZUlELCBvdXRjb21lTmFtZSwgb3V0Y29tZURlY2lzaW9uU3lzTmFtZSwgb3V0Y29tZU5leHRBY3Rpdml0eVR5cGVzLCBvdXRjb21lQ2FuQWRkQ29tbWVudCxcclxuICAgICAgb3V0Y29tZUNhbkVkaXQsIG91dGNvbWVIaWRkZW5lU3lzTmFtZSwgb3V0Y29tZUNhbkVkaXRTeXNOYW1lKTtcclxuXHJcbiAgICB0aGlzLm91dGNvbWVzT3B0aW9ucy5wdXNoKG9iamVjdE91dGNvbWVPcHRpb25zKTtcclxuICAgIHRoaXMub3V0Y29tZXNDb3VudCArPSAxO1xyXG5cclxuICB9XHJcbiAgZGVsZXRlT3V0Y29tZShkZWxldGVkT3V0Y29tZTogYW55KSB7XHJcbiAgICBsZXQgZGVsZXRlZE91dGNvbWVJbmRleDogbnVtYmVyID0gdGhpcy5vdXRjb21lc09wdGlvbnMuaW5kZXhPZihkZWxldGVkT3V0Y29tZSk7XHJcbiAgICBpZiAoZGVsZXRlZE91dGNvbWVJbmRleCAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRPdXRjb21lSW5kZXgsIDEpO1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRPdXRjb21lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRPdXRjb21lW2ldLk5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL09uIGNoYW5nZXMgZXZlbnRzXHJcbiAgYWN0aXZpdHlUeXBlT25DaGFuZ2UoYWN0aXZpdHlUeXBlKSB7XHJcbiAgICBhY3Rpdml0eVR5cGUgPSBhY3Rpdml0eVR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAvL1Jlc2V0IGNvbnRyb2xzLCBvdXRjb21lcyBhbmQgZmxhZ3NcclxuICAgIHRoaXMucmVzZXRBbGxBY3Rpdml0eVR5cGVDb250cm9scygpO1xyXG4gICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBbXTtcclxuICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IDA7XHJcbiAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93RHluYW1pY0NvbnRyb2xzID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTdGF0aWNDb250cm9scyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93Q29uZGl0aW9uQ29udHJvbHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy53b3JrZmxvd0FjdGl2aXR5U2VydmljZS5nZXRBY3Rpdml0eU91dGNvbWVzKHRoaXMudmVyc2lvbklELCBhY3Rpdml0eVR5cGUpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHZhciByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB2YXIgbW9kZWwgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIHZhciBsaXN0ID0gcmVzdWx0T2JqLmxpc3Q7XHJcbiAgICAgIHRoaXMubmV4dEFjdGl2aXR5TGlzdCA9IGxpc3QuYWN0aXZpdGllcztcclxuXHJcbiAgICAgIHN3aXRjaCAoYWN0aXZpdHlUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQXBwcm92YWw6XHJcbiAgICAgICAgY2FzZSBBY3Rpdml0eVR5cGUuQWN0aW9uOlxyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLlBlcmNlbnRhZ2VUYXNrOlxyXG4gICAgICAgICAgdGhpcy50YXNrVHlwZUxpc3QgPSBsaXN0LnRhc2tzO1xyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0ID0gbGlzdC5wYXJ0aWNpcGFudHMucGFydGljaXBhbnRUeXBlcztcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnREYXRhTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50RGF0YTtcclxuXHJcbiAgICAgICAgICAvL0luaXRpYWxpemUgcmVxdWlyZWQgY29udHJvbHMgZm9yIGFwcHJvdmFsXHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTmFtZSA9IFwiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTGFiZWxLZXkgPSBcIlBhcnRpY2lwYW50VHlwZXNcIlxyXG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkRhdGFTb3VyY2UgPSB0aGlzLnBhcnRpY2lwYW50VHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUgPSBuZXcgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tOYW1lLk5hbWUgPSBcIlRhc2tOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiVGFza05hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJUYXNrTmFtZUluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza05hbWUuTWF4TGVuZ3RoID0gMjU1O1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbiA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5OYW1lID0gXCJUYXNrRGVzY3JpcHRpb25cIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiVGFza0Rlc2NyaXB0aW9uSW5BcmFiaWNcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tEZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIlRhc2tEZXNjcmlwdGlvbkluRW5nbGlzaFwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza0Rlc2NyaXB0aW9uLk1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVVJMLk5hbWUgPSBcIlRhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuTGFiZWxLZXkgPSBcIlRhc2tVUkxcIjtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tVUkwuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1VSTC5NYXhMZW5ndGggPSAyMDgzO1xyXG5cclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljVGFza1R5cGUuTmFtZSA9IFwiVGFza0NvcnJsVHlwZUlEXCJcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLkxhYmVsS2V5ID0gXCJUYXNrVHlwZVwiXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5EYXRhU291cmNlID0gdGhpcy50YXNrVHlwZUxpc3RcclxuICAgICAgICAgIHRoaXMuZHluYW1pY1Rhc2tUeXBlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNUYXNrVHlwZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZSA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0NhbkNvbXBsZXRlLk5hbWUgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuTGFiZWxLZXkgPSBcIkNhbkNvbXBsZXRlRnJvbVRNRVwiO1xyXG4gICAgICAgICAgdGhpcy5keW5hbWljQ2FuQ29tcGxldGUuVmlld1R5cGUgPSBDb250cm9sTGF5b3V0Lkhvcml6b250YWw7XHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNDYW5Db21wbGV0ZS5WYWx1ZSA9IG1vZGVsLmNhbkNvbXBsZXRlRnJvbVRNRTtcclxuXHJcbiAgICAgICAgICBsZXQgb3V0Y29tZXNSZXN1bHQ6IGFueSA9IHRoaXMuZ2V0QWN0aXZpdHlPdXRjb21lc09wdGlvbnMobW9kZWwub3V0Y29tZXMpO1xyXG4gICAgICAgICAgdGhpcy5vdXRjb21lc09wdGlvbnMgPSBvdXRjb21lc1Jlc3VsdFswXTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNDb3VudCA9IG91dGNvbWVzUmVzdWx0WzFdO1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd0R5bmFtaWNDb250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dPdXRjb21lc0NvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5FbWFpbDpcclxuICAgICAgICBjYXNlIEFjdGl2aXR5VHlwZS5TbGVlcDpcclxuICAgICAgICAgIGlmIChhY3Rpdml0eVR5cGUgPT0gQWN0aXZpdHlUeXBlLkVtYWlsKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50VHlwZXM7XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnREYXRhTGlzdCA9IGxpc3QucGFydGljaXBhbnRzLnBhcnRpY2lwYW50RGF0YTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2lwYW50VHlwZXMuTmFtZSA9IFwiUGFydGljaXBhbnREVE8uUGFydGljaXBhbnRUeXBlSXRlbUlEc1N0cmluZ1wiXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5MYWJlbEtleSA9IFwiUGFydGljaXBhbnRUeXBlc1wiXHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudFR5cGVMaXN0XHJcbiAgICAgICAgICAgIHRoaXMucGFydGljaXBhbnRUeXBlcy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFR5cGVzLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudENvbnRhaW5lciA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgbmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgICAgICBuYW1lLkFyYWJpYyA9IG1vZGVsLm5vcm1hbE91dGNvbWVOYW1lLmFyYWJpYztcclxuICAgICAgICAgIG5hbWUuRW5nbGlzaCA9IG1vZGVsLm5vcm1hbE91dGNvbWVOYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZSA9IG5ldyBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5OYW1lID0gXCJOb3JtYWxPdXRjb21lTmFtZVwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiT3V0Y29tZU5hbWVJbkFyYWJpY1wiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk91dGNvbWVOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lTmFtZS5WYWx1ZSA9IG5hbWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOYW1lLk1heExlbmd0aCA9IDI1NTtcclxuXHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLk5hbWUgPSBcIk91dGNvbWVTeXNOYW1lXCI7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVTeXNOYW1lLkxhYmVsS2V5ID0gXCJEZWNpc2lvblN5c05hbWVcIjtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lU3lzTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZVN5c05hbWUuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5OYW1lID0gXCJOZXh0QWN0aXZpdHlJRF9HVUlEXCJcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5MYWJlbEtleSA9IFwiTmV4dEFjdGl2aXR5XCJcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5EYXRhU291cmNlID0gdGhpcy5uZXh0QWN0aXZpdHlMaXN0XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZU5leHRBY3Rpdml0eS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnN0YXRpY091dGNvbWVOZXh0QWN0aXZpdHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuTmFtZSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5MYWJlbEtleSA9IFwiQ2FuQWRkQ29tbWVudFwiO1xyXG4gICAgICAgICAgdGhpcy5zdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICAgIHRoaXMuc3RhdGljT3V0Y29tZUNhbkFkZENvbW1lbnQuVmFsdWUgPSBtb2RlbC5jYW5BZGRDb21tZW50O1xyXG5cclxuICAgICAgICAgIHRoaXMuc2hvd1N0YXRpY0NvbnRyb2xzID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQWN0aXZpdHlUeXBlLkNvbmRpdGlvbjpcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTV0ZWYXJpYWJsZUxpc3QgPSBsaXN0LndmVmFyaWFibGVzO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNXRlZhcmlhYmxlTGlzdCA9IGxpc3Qud2ZWYXJpYWJsZXM7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0ID0gbGlzdC5yaHNUeXBlcztcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTGlzdCA9IGxpc3QuY29uZGl0aW9ucztcclxuXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5OYW1lID0gXCJMSFNWYXJpYWJsZUlEX0dVSURcIlxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25MSFNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlBsYWNlaG9sZGVyID0gXCJXb3JrZmxvd1ZhcmlhYmxlc1wiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbkxIU0Ryb3BEb3duLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uTEhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25zRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5OYW1lID0gXCJPcGVyYXRvclR5cGVJdGVtSURfR1VJRFwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiQ29uZGl0aW9uXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvbkxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uc0Ryb3BEb3duLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvbnNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRSSFNUeXBlID0gdGhpcy5jb25kaXRpb25SSFNUeXBlTGlzdC5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0ua2V5Py50b0xvd2VyQ2FzZSgpID09IFJpZ2h0aGFuZHNpZGV0eXBlLlZhcmlhYmxlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KVswXTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uTmFtZSA9IFwiUkhTVHlwZUl0ZW1JRF9HVUlEXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTVHlwZURyb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1R5cGVMaXN0XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5jb25kaXRpb25SSFNUeXBlRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU1R5cGVEcm9wRG93bi5TZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRSSFNUeXBlO1xyXG5cclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLk5hbWUgPSBcIlJIU1ZhcmlhYmxlSURfR1VJRFwiXHJcbiAgICAgICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uUGxhY2Vob2xkZXIgPSBcIldvcmtmbG93VmFyaWFibGVzXCJcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uRGF0YVNvdXJjZSA9IHRoaXMuY29uZGl0aW9uUkhTV0ZWYXJpYWJsZUxpc3RcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgbGV0IGNvbmRpdGlvbk91dGNvbWVzUmVzdWx0OiBhbnkgPSB0aGlzLmdldEFjdGl2aXR5T3V0Y29tZXNPcHRpb25zKG1vZGVsLm91dGNvbWVzKTtcclxuICAgICAgICAgIHRoaXMub3V0Y29tZXNPcHRpb25zID0gY29uZGl0aW9uT3V0Y29tZXNSZXN1bHRbMF07XHJcbiAgICAgICAgICB0aGlzLm91dGNvbWVzQ291bnQgPSBjb25kaXRpb25PdXRjb21lc1Jlc3VsdFsxXTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25Db250cm9scyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNob3dDb25kaXRpb25SSFNXRlZhcmlhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY2FuQWRkT3V0Y29tZSA9IHRoaXMuc2hvd091dGNvbWVzQ29udGFpbmVyID8gbW9kZWwuY2FuQWRkT3V0Y29tZSA6IGZhbHNlO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKHR5cGUpIHtcclxuICAgIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAodHlwZSA9PSBSaWdodGhhbmRzaWRldHlwZS5WYXJpYWJsZSkge1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNWYWx1ZVwiKVxyXG5cclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93biA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5OYW1lID0gXCJSSFNWYXJpYWJsZUlEX0dVSURcIlxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkhpZGVMYWJlbCA9IHRydWVcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5QbGFjZWhvbGRlciA9IFwiV29ya2Zsb3dWYXJpYWJsZXNcIlxyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU0Ryb3BEb3duLkRhdGFTb3VyY2UgPSB0aGlzLmNvbmRpdGlvblJIU1dGVmFyaWFibGVMaXN0XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTRHJvcERvd24uU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNEcm9wRG93bi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuc2hvd0NvbmRpdGlvblJIU1dGVmFyaWFibGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlJIU1ZhcmlhYmxlSURfR1VJRFwiKVxyXG5cclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvblJIU1ZhbHVlLk5hbWUgPSBcIlJIU1ZhbHVlXCI7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5QbGFjZWhvbGRlciA9IFwiVmFsdWVcIjtcclxuICAgICAgdGhpcy5jb25kaXRpb25SSFNWYWx1ZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29uZGl0aW9uUkhTVmFsdWUuTWF4TGVuZ3RoID0gNTEyO1xyXG5cclxuICAgICAgdGhpcy5zaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgcGFydGljaXBhbnRUeXBlT25DaGFuZ2UocGFydGljaXBhbnRUeXBlKSB7XHJcbiAgICBwYXJ0aWNpcGFudFR5cGUgPSBwYXJ0aWNpcGFudFR5cGU/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAocGFydGljaXBhbnRUeXBlID09IFBhcnRpY2lwYW50VHlwZS5QZXJtaXNzaW9uU2V0KSB7XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5OYW1lID0gXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCJcclxuICAgICAgdGhpcy5wYXJ0aWNpcGFudFBlcm1pc3Npb25TZXQuTGFiZWxLZXkgPSBcIlBlcm1pc3Npb25TZXRcIlxyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5EYXRhU291cmNlID0gdGhpcy5wYXJ0aWNpcGFudERhdGFMaXN0XHJcbiAgICAgIHRoaXMucGFydGljaXBhbnRQZXJtaXNzaW9uU2V0LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBhcnRpY2lwYW50UGVybWlzc2lvblNldC5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2hvd1BhcnRpY2lwYW50UGVybXNzaW9uU2V0ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCIpO1xyXG4gICAgICB0aGlzLnNob3dQYXJ0aWNpcGFudFBlcm1zc2lvblNldCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9yZXNldCB0eXBlXHJcbiAgcmVzZXRBbGxBY3Rpdml0eVR5cGVDb250cm9scygpIHtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlBhcnRpY2lwYW50RFRPLlBhcnRpY2lwYW50VHlwZUl0ZW1JRHNTdHJpbmdcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJQYXJ0aWNpcGFudERUTy5QZXJtaXNzaW9uU2V0SURzU3RyaW5nXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiUGFydGljaXBhbnREVE8uUGVybWlzc2lvblNldElEc1N0cmluZ1wiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlRhc2tOYW1lXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiVGFza0Rlc2NyaXB0aW9uXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiVGFza1VSTFwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIlRhc2tDb3JybFR5cGVJRFwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIkNhbkNvbXBsZXRlRnJvbVRNRVwiKTtcclxuXHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJOb3JtYWxPdXRjb21lTmFtZVwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIk91dGNvbWVTeXNOYW1lXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiTmV4dEFjdGl2aXR5SURfR1VJRFwiKTtcclxuICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIkNhbkFkZENvbW1lbnRcIik7XHJcblxyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiTEhTVmFyaWFibGVJRF9HVUlEXCIpO1xyXG4gICAgdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS5yZW1vdmVDb250cm9sKFwiT3BlcmF0b3JUeXBlSXRlbUlEX0dVSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNUeXBlSXRlbUlEX0dVSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNWYXJpYWJsZUlEX0dVSURcIik7XHJcbiAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJSSFNWYWx1ZVwiKTtcclxuXHJcbiAgICAvL1JlbW92ZSBvdXRjb21lcyBjb250cm9sc1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5hZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybS52YWx1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5vdXRjb21lc0NvdW50OyBpKyspIHtcclxuICAgICAgbGV0IG91dGNvbWVJRCA9IFJlc3VsdE1vZGVsW1wib3V0Y29tZUlEXCIgKyBpXTtcclxuICAgICAgaWYgKG91dGNvbWVJRCA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lSURcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lTmFtZVwiICsgaSk7XHJcbiAgICAgIHRoaXMuYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm0ucmVtb3ZlQ29udHJvbChcIm91dGNvbWVEZWNpc2lvblN5c05hbWVcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lSGlkZGVuZVN5c05hbWVcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lTmV4dEFjdGl2aXR5VHlwZXNcIiArIGkpO1xyXG4gICAgICB0aGlzLmFkZHdvcmtmbG93QWN0aXZpdHlGb3JtLnJlbW92ZUNvbnRyb2woXCJvdXRjb21lQ2FuQWRkQ29tbWVudFwiICsgaSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0NhbmNlbFxyXG4gIGNhbmNlbEFkZCgpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL0FkbWluL1dvcmtmbG93cy93b3JrZmxvdy8nXSk7XHJcbiAgfVxyXG5cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiICpuZ0lmPVwiaXNBZGRGb3JtTG9hZGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybU9wdGlvbnNcIj5cclxuICAgICAgICA8IS0tU3RhcnQgc2hhcmVkIGNvbnRyb2xzIGNvbnRhaW5lci0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJuYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzeXNOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImFjdGl2aXR5VHlwZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiIChPbkNoYW5nZSk9XCJhY3Rpdml0eVR5cGVPbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHNoYXJlZCBjb250cm9scyBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgcGFydGljaXBhbnQgY29udGFpbmVyLS0+XHJcbiAgICAgICAgPGRpdiBpZD1cInBhcnRpY2lwYW50Q29udGFpbmVyXCIgKm5nSWY9XCJzaG93UGFydGljaXBhbnRDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJwYXJ0aWNpcGFudFR5cGVzXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCIgKE9uQ2hhbmdlKT1cInBhcnRpY2lwYW50VHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UGFydGljaXBhbnRQZXJtc3Npb25TZXRcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cInBhcnRpY2lwYW50UGVybWlzc2lvblNldFwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLUVuZCBwYXJ0aWNpcGFudCBjb250YWluZXItLT5cclxuICAgICAgICA8IS0tU3RhcnQgc3RhdGljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dTdGF0aWNDb250cm9sc1wiIGlkPVwic3RhdGljQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cInN0YXRpY091dGNvbWVOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lU3lzTmFtZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lTmV4dEFjdGl2aXR5XCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1Ub2dnbGVzbGlkZSBbb3B0aW9uc109XCJzdGF0aWNPdXRjb21lQ2FuQWRkQ29tbWVudFwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIHN0YXRpYyBjb250cm9scy0tPlxyXG4gICAgICAgIDwhLS1TdGFydCBkeW5hbWljIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEeW5hbWljQ29udHJvbHNcIiBpZD1cImR5bmFtaWNDb250YWluZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tOYW1lXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWEgW29wdGlvbnNdPVwiZHluYW1pY1Rhc2tEZXNjcmlwdGlvblwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVVJMXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cImR5bmFtaWNUYXNrVHlwZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiZHluYW1pY0NhbkNvbXBsZXRlXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPC9CQlNGLVRvZ2dsZXNsaWRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgZHluYW1pYyBjb250cm9scy0tPlxyXG5cclxuICAgICAgICA8IS0tU3RhcnQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dDb25kaXRpb25Db250cm9sc1wiIGlkPVwiY29uZGl0aW9uQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB0YWJsZS13LWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkxlZnRIYW5kU2lkZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25kaXRpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmlnaHRIYW5kU2lkZVR5cGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmlnaHRIYW5kU2lkZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25MSFNEcm9wRG93blwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiY29uZGl0aW9uc0Ryb3BEb3duXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNUeXBlRHJvcERvd25cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIiAoT25DaGFuZ2UpPVwiY29uZGl0aW9uUkhTVHlwZU9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzaG93Q29uZGl0aW9uUkhTV0ZWYXJpYWJsZTsgZWxzZSBjb25kaXRpb25UeHRWYWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNEcm9wRG93blwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29uZGl0aW9uVHh0VmFsdWU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJjb25kaXRpb25SSFNWYWx1ZVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1FbmQgY29uZGl0aW9uIGNvbnRyb2xzLS0+XHJcblxyXG4gICAgICAgIDwhLS1TdGFydCBvdXRjb21lcyBjb250YWluZXItLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd091dGNvbWVzQ29udGFpbmVyXCIgaWQ9XCJvdXRjb21lc0NvbnRhaW5lclwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWNpc2lvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+PC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3V0Y29tZXNPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1JRC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzBdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLU5hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsxXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLVN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS1oaWRkZW4gU3lzTmFtZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW2hpZGRlbl09XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uWzZdXCIgW2dyb3VwXT1cImFkZHdvcmtmbG93QWN0aXZpdHlGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWNhbiBlZGl0IFN5c05hbWUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbaGlkZGVuXT1cInRydWVcIiBbb3B0aW9uc109XCJvcHRpb25bN11cIiBbZ3JvdXBdPVwiYWRkd29ya2Zsb3dBY3Rpdml0eUZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tTmV4dEFjdGl2aXR5LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIm9wdGlvblszXVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tQ2FuQWRkQ29tbWVudC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvbls0XVwiIFtncm91cF09XCJhZGR3b3JrZmxvd0FjdGl2aXR5Rm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0taWYgb3V0Y29tZSBDYW4gRWRpdC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwib3B0aW9uWzVdXCIgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlT3V0Y29tZShvcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS10cmFzaCBoaWRkZW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImNhbkFkZE91dGNvbWVcIj5cclxuICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwiYWRkV0ZBY3Rpdml0eU91dGNvbWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkTmV3UmVjb3JkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tRW5kIG91dGNvbWVzIGNvbnRhaW5lci0tPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cImNhbmNlbEFkZCgpXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|