@softheon/armature 15.21.2 → 17.1.0
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 +142 -18
- package/assets/styles/_utility.scss +35 -0
- package/assets/styles/material-overrides.scss +0 -1
- package/assets/styles/sof-styles.scss +8 -7
- package/{esm2020 → esm2022}/lib/alert-banner/alert-banner-api.mjs +9 -9
- package/{esm2020 → esm2022}/lib/alert-banner/alert-banner.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/alert-banner/components/alert-banner/alert-banner.component.mjs +83 -83
- package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-context.mjs +1 -1
- package/{esm2020 → esm2022}/lib/alert-banner/models/constants.mjs +15 -15
- package/{esm2020 → esm2022}/lib/alert-banner/services/alert-banner.service.mjs +44 -44
- package/esm2022/lib/armature.module.mjs +176 -0
- package/{esm2020 → esm2022}/lib/base-components/base-component-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/base-components/base-component.module.mjs +123 -123
- package/{esm2020 → esm2022}/lib/base-components/sof-alert/sof-alert.component.mjs +79 -79
- package/{esm2020 → esm2022}/lib/base-components/sof-badge/sof-badge.component.mjs +49 -49
- package/esm2022/lib/base-components/sof-banner/sof-banner.component.mjs +49 -0
- package/{esm2020 → esm2022}/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.mjs +188 -188
- package/{esm2020 → esm2022}/lib/base-components/sof-confirm-address/sof-confirm-address.component.mjs +59 -59
- package/esm2022/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +58 -0
- package/esm2022/lib/base-components/sof-modal/sof-modal.component.mjs +57 -0
- package/esm2022/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +79 -0
- package/{esm2020 → esm2022}/lib/base-components/sof-radio-card/sof-radio-card.component.mjs +35 -35
- package/{esm2020 → esm2022}/lib/base-components/sof-simple-alert/sof-simple-alert.component.mjs +49 -49
- package/esm2022/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +40 -0
- package/{esm2020 → esm2022}/lib/component-save-print/components/component-save-print/component-save-print.component.mjs +91 -91
- package/{esm2020 → esm2022}/lib/component-save-print/services/component-save-print.service.mjs +30 -30
- package/esm2022/lib/component-save-print/sof-ar-component-save-print.module.mjs +29 -0
- package/{esm2020 → esm2022}/lib/core/client-generated/api/session.service.mjs +242 -242
- package/{esm2020 → esm2022}/lib/core/client-generated/configuration.mjs +58 -58
- package/{esm2020 → esm2022}/lib/core/client-generated/encoder.mjs +16 -16
- package/{esm2020 → esm2022}/lib/core/client-generated/model/applicationUserModel.mjs +19 -19
- package/{esm2020 → esm2022}/lib/core/client-generated/model/assertedUserModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/brandingModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/errorModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/folderLink.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/identityProfile.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/models.mjs +19 -19
- package/{esm2020 → esm2022}/lib/core/client-generated/model/oAuthModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/preferencesRow.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/rolesRow.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionGetResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/settingsProfile.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteColorsModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/client-generated/model/trackingModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/model/validationRecordsRow.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/client-generated/variables.mjs +8 -8
- package/{esm2020 → esm2022}/lib/core/components/app-template/app-template.component.mjs +250 -250
- package/{esm2020 → esm2022}/lib/core/functions/guid.mjs +10 -10
- package/{esm2020 → esm2022}/lib/core/functions/naming-convention.mjs +32 -32
- package/{esm2020 → esm2022}/lib/core/functions/route-to-pre-login-route.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/initializer/abstract-startup-service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/initializer/initializer.service.mjs +286 -286
- package/{esm2020 → esm2022}/lib/core/interceptors/armature-auth-token-append.interceptor.mjs +73 -73
- package/{esm2020 → esm2022}/lib/core/models/base-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/constants.mjs +12 -12
- package/{esm2020 → esm2022}/lib/core/models/data-store-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/models/header-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/http-verbs.mjs +8 -8
- package/{esm2020 → esm2022}/lib/core/models/navigation-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/oidc-auth-settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/route-path.mjs +6 -6
- package/{esm2020 → esm2022}/lib/core/models/session-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/models/styles.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/subdomain-config.mjs +1 -1
- package/{esm2020 → esm2022}/lib/core/models/typed-session.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/models/user-entity-service-config.mjs +11 -11
- package/{esm2020 → esm2022}/lib/core/services/authorization.service.mjs +175 -175
- package/{esm2020 → esm2022}/lib/core/services/banner.service.mjs +43 -43
- package/{esm2020 → esm2022}/lib/core/services/base-config.service.mjs +32 -32
- package/{esm2020 → esm2022}/lib/core/services/custom-auth-config.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/core/services/default-config.service.mjs +19 -19
- package/{esm2020 → esm2022}/lib/core/services/session.service.mjs +385 -385
- package/{esm2020 → esm2022}/lib/core/services/user-entity.service.mjs +140 -140
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/api.mjs +3 -3
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/cache.service.mjs +213 -213
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/configuration.mjs +58 -58
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/encoder.mjs +16 -16
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/cacheExpirationType.mjs +15 -15
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/models.mjs +4 -4
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/variables.mjs +8 -8
- package/{esm2020 → esm2022}/lib/distributed-cache/distributed-cache-api.mjs +7 -7
- package/esm2022/lib/distributed-cache/distributed-cache.module.mjs +38 -0
- package/{esm2020 → esm2022}/lib/distributed-cache/models/constants.mjs +2 -2
- package/{esm2020 → esm2022}/lib/distributed-cache/models/policy-person.mjs +8 -8
- package/{esm2020 → esm2022}/lib/distributed-cache/services/server-cache.service.mjs +48 -48
- package/{esm2020 → esm2022}/lib/error/components/error-common/error-common.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/error/error-api.mjs +6 -6
- package/{esm2020 → esm2022}/lib/error/error.module.mjs +31 -31
- package/{esm2020 → esm2022}/lib/error/models/error-common-config.mjs +7 -7
- package/esm2022/lib/faq/components/faq/faq.component.mjs +40 -0
- package/{esm2020 → esm2022}/lib/faq/faq-api.mjs +7 -7
- package/{esm2020 → esm2022}/lib/faq/faq.module.mjs +41 -41
- package/{esm2020 → esm2022}/lib/faq/models/faq-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/faq/models/faq.mjs +7 -7
- package/esm2022/lib/feedback-tool/components/feedback-tool/feedback-tool.component.mjs +81 -0
- package/esm2022/lib/feedback-tool/feedback-tool-api.mjs +5 -0
- package/esm2022/lib/feedback-tool/feedback-tool.module.mjs +44 -0
- package/esm2022/lib/footer/components/footer/footer.component.mjs +25 -0
- package/{esm2020 → esm2022}/lib/footer/components/site-map/site-map.component.mjs +25 -25
- package/{esm2020 → esm2022}/lib/footer/footer-api.mjs +9 -9
- package/{esm2020 → esm2022}/lib/footer/footer.module.mjs +45 -45
- package/{esm2020 → esm2022}/lib/footer/models/enum/site-map-direction.mjs +14 -14
- package/{esm2020 → esm2022}/lib/footer/models/footer-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/footer/models/site-map-models.mjs +1 -1
- package/{esm2020 → esm2022}/lib/forms/components/sof-address/sof-address.component.mjs +110 -110
- package/{esm2020 → esm2022}/lib/forms/directives/alphanumeric/alphanumeric.directive.mjs +78 -78
- package/{esm2020 → esm2022}/lib/forms/directives/input-trim/input-trim.directive.mjs +110 -110
- package/{esm2020 → esm2022}/lib/forms/directives/letters-characters/letters-characters.directive.mjs +87 -87
- package/{esm2020 → esm2022}/lib/forms/directives/letters-only/letters-only.directive.mjs +85 -85
- package/{esm2020 → esm2022}/lib/forms/directives/numbers-only/numbers-only.directive.mjs +55 -55
- package/{esm2020 → esm2022}/lib/forms/forms-api.mjs +19 -19
- package/{esm2020 → esm2022}/lib/forms/forms.module.mjs +87 -87
- package/{esm2020 → esm2022}/lib/forms/models/address.mjs +1 -1
- package/esm2022/lib/forms/models/constants.mjs +10 -0
- package/{esm2020 → esm2022}/lib/forms/models/county.mjs +1 -1
- package/{esm2020 → esm2022}/lib/forms/models/enums/states.mjs +65 -65
- package/{esm2020 → esm2022}/lib/forms/pipes/phone-format.pipe.mjs +33 -33
- package/{esm2020 → esm2022}/lib/forms/services/alert.service.mjs +167 -167
- package/esm2022/lib/header/components/header/header.component.mjs +161 -0
- package/{esm2020 → esm2022}/lib/header/components/mobile-header-menu/mobile-header-menu.component.mjs +39 -39
- package/{esm2020 → esm2022}/lib/header/header-api.mjs +11 -11
- package/{esm2020 → esm2022}/lib/header/header.module.mjs +85 -85
- package/{esm2020 → esm2022}/lib/header/models/header-auth.settings.mjs +31 -31
- package/{esm2020 → esm2022}/lib/header/models/header-language.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/header/models/header-theme.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/header/models/header.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/header/models/mobile-header-nav.settings.mjs +1 -1
- package/esm2022/lib/navigation/components/navigation/navigation.component.mjs +556 -0
- package/{esm2020 → esm2022}/lib/navigation/models/nav-theme.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/navigation/models/nav.settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/navigation/models/navigation.mjs +1 -1
- package/{esm2020 → esm2022}/lib/navigation/navigation-api.mjs +8 -8
- package/{esm2020 → esm2022}/lib/navigation/navigation.module.mjs +126 -126
- package/{esm2020 → esm2022}/lib/oauth/models/constants.mjs +5 -5
- package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementAssertionModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementRefreshRequestModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementResponseModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/coverageDetail.mjs +18 -18
- package/{esm2020 → esm2022}/lib/oauth/models/generated/finance.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/person.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/generated/policy.mjs +1 -1
- package/{esm2020 → esm2022}/lib/oauth/models/generated/refreshResponseModel.mjs +12 -12
- package/{esm2020 → esm2022}/lib/oauth/models/hybrid-saml-oauth-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/oauth/oauth-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/oauth/oauth.module.mjs +29 -29
- package/{esm2020 → esm2022}/lib/oauth/services/hybrid-saml-oauth.service.mjs +201 -201
- package/{esm2020 → esm2022}/lib/rbac/directives/rbac-action.directive.mjs +50 -50
- package/{esm2020 → esm2022}/lib/rbac/models/access-token-claims.mjs +22 -22
- package/{esm2020 → esm2022}/lib/rbac/models/constants.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rbac/models/decoded-access-token.mjs +68 -68
- package/{esm2020 → esm2022}/lib/rbac/models/rbac-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rbac/models/role-access.mjs +9 -9
- package/{esm2020 → esm2022}/lib/rbac/rbac-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/rbac/rbac.module.mjs +51 -51
- package/{esm2020 → esm2022}/lib/rbac/services/ar-role-nav.service.mjs +104 -104
- package/{esm2020 → esm2022}/lib/rbac/services/oauth2-role.service.mjs +114 -114
- package/{esm2020 → esm2022}/lib/rbac/services/role-nav.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rbac/services/tokens.mjs +3 -3
- package/{esm2020 → esm2022}/lib/resize-panels/components/resize-panels/resize-panels.component.mjs +156 -156
- package/{esm2020 → esm2022}/lib/resize-panels/models/resize-event.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resize-panels/resize-panels-api.mjs +4 -4
- package/{esm2020 → esm2022}/lib/resize-panels/resize-panels.module.mjs +23 -23
- package/{esm2020 → esm2022}/lib/rum/models/arm-error.mjs +28 -28
- package/{esm2020 → esm2022}/lib/rum/models/rum-config.mjs +3 -3
- package/{esm2020 → esm2022}/lib/rum/rum-api.mjs +9 -9
- package/{esm2020 → esm2022}/lib/rum/rum.module.mjs +48 -48
- package/{esm2020 → esm2022}/lib/rum/services/rum.service.mjs +115 -115
- package/{esm2020 → esm2022}/lib/rum/services/shared-error.service.mjs +45 -45
- package/{esm2020 → esm2022}/lib/rum/services/softheon-error-handler.service.mjs +76 -76
- package/{esm2020 → esm2022}/lib/saml/components/redirect-saml/redirect-saml.component.mjs +79 -79
- package/{esm2020 → esm2022}/lib/saml/models/i-saml-request.mjs +1 -1
- package/{esm2020 → esm2022}/lib/saml/models/i-saml-response.mjs +1 -1
- package/{esm2020 → esm2022}/lib/saml/models/redirect-saml-request.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/models/sso-gateway-model.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/saml-api.mjs +14 -14
- package/{esm2020 → esm2022}/lib/saml/saml.module.mjs +43 -43
- package/{esm2020 → esm2022}/lib/saml/services/entry/abstract-saml-entry.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/services/entry/sso-gateway-entry.service.mjs +36 -36
- package/{esm2020 → esm2022}/lib/saml/services/send-off/abstract-saml.service.mjs +3 -3
- package/{esm2020 → esm2022}/lib/saml/services/send-off/saml.service.mjs +39 -39
- package/{esm2020 → esm2022}/lib/sof-pipe/constants/constants.mjs +16 -16
- package/{esm2020 → esm2022}/lib/sof-pipe/models/sof-date-pipe-format.mjs +1 -1
- package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.mjs +39 -39
- package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-date/sof-date.pipe.mjs +59 -59
- package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.mjs +28 -28
- package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.api.mjs +8 -8
- package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.module.mjs +39 -39
- package/{esm2020 → esm2022}/lib/theming/directives/css-override.directive.mjs +69 -69
- package/{esm2020 → esm2022}/lib/theming/models/css-override.mjs +10 -10
- package/{esm2020 → esm2022}/lib/theming/services/theme.service.mjs +169 -169
- package/{esm2020 → esm2022}/lib/theming/theme-api.mjs +5 -5
- package/{esm2020 → esm2022}/lib/theming/theme.module.mjs +31 -31
- package/{esm2020 → esm2022}/public-api.mjs +52 -51
- package/{esm2020 → esm2022}/softheon-armature.mjs +4 -4
- package/fesm2022/softheon-armature.mjs +7439 -0
- package/fesm2022/softheon-armature.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/alert-banner/alert-banner-api.d.ts +7 -7
- package/lib/alert-banner/alert-banner.module.d.ts +11 -11
- package/lib/alert-banner/components/alert-banner/alert-banner.component.d.ts +40 -40
- package/lib/alert-banner/models/alert-banner-config.d.ts +20 -20
- package/lib/alert-banner/models/alert-banner-context.d.ts +18 -18
- package/lib/alert-banner/models/constants.d.ts +15 -15
- package/lib/alert-banner/services/alert-banner.service.d.ts +28 -28
- package/lib/armature.module.d.ts +46 -46
- package/lib/base-components/base-component-api.d.ts +13 -13
- package/lib/base-components/base-component.module.d.ts +35 -35
- package/lib/base-components/sof-alert/sof-alert.component.d.ts +40 -40
- package/lib/base-components/sof-badge/sof-badge.component.d.ts +26 -26
- package/lib/base-components/sof-banner/sof-banner.component.d.ts +34 -34
- package/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.d.ts +100 -100
- package/lib/base-components/sof-confirm-address/sof-confirm-address.component.d.ts +61 -61
- package/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.d.ts +28 -28
- package/lib/base-components/sof-modal/sof-modal.component.d.ts +51 -51
- package/lib/base-components/sof-progress-bar/sof-progress-bar.component.d.ts +40 -40
- package/lib/base-components/sof-radio-card/sof-radio-card.component.d.ts +20 -20
- package/lib/base-components/sof-simple-alert/sof-simple-alert.component.d.ts +29 -29
- package/lib/base-components/sof-star-rating/sof-star-rating.component.d.ts +25 -25
- package/lib/component-save-print/components/component-save-print/component-save-print.component.d.ts +46 -46
- package/lib/component-save-print/services/component-save-print.service.d.ts +18 -18
- package/lib/component-save-print/sof-ar-component-save-print.module.d.ts +9 -9
- package/lib/core/client-generated/api/session.service.d.ts +94 -94
- package/lib/core/client-generated/configuration.d.ts +48 -48
- package/lib/core/client-generated/encoder.d.ts +10 -10
- package/lib/core/client-generated/model/applicationUserModel.d.ts +54 -54
- package/lib/core/client-generated/model/assertedUserModel.d.ts +25 -25
- package/lib/core/client-generated/model/brandingModel.d.ts +33 -33
- package/lib/core/client-generated/model/errorModel.d.ts +24 -24
- package/lib/core/client-generated/model/folderLink.d.ts +34 -34
- package/lib/core/client-generated/model/identityProfile.d.ts +82 -82
- package/lib/core/client-generated/model/models.d.ts +19 -19
- package/lib/core/client-generated/model/oAuthModel.d.ts +28 -28
- package/lib/core/client-generated/model/preferencesRow.d.ts +15 -15
- package/lib/core/client-generated/model/rolesRow.d.ts +17 -17
- package/lib/core/client-generated/model/sessionGetResponseModel.d.ts +23 -23
- package/lib/core/client-generated/model/sessionPostRequestModel.d.ts +39 -39
- package/lib/core/client-generated/model/sessionPostResponseModel.d.ts +23 -23
- package/lib/core/client-generated/model/sessionPutRequestModel.d.ts +39 -39
- package/lib/core/client-generated/model/sessionPutResponseModel.d.ts +23 -23
- package/lib/core/client-generated/model/sessionResponseModel.d.ts +43 -43
- package/lib/core/client-generated/model/settingsProfile.d.ts +21 -21
- package/lib/core/client-generated/model/themePaletteColorsModel.d.ts +72 -72
- package/lib/core/client-generated/model/themePaletteModel.d.ts +65 -65
- package/lib/core/client-generated/model/trackingModel.d.ts +24 -24
- package/lib/core/client-generated/model/validationRecordsRow.d.ts +17 -17
- package/lib/core/client-generated/variables.d.ts +8 -8
- package/lib/core/components/app-template/app-template.component.d.ts +61 -61
- package/lib/core/functions/guid.d.ts +4 -4
- package/lib/core/functions/naming-convention.d.ts +6 -6
- package/lib/core/functions/route-to-pre-login-route.d.ts +6 -6
- package/lib/core/initializer/abstract-startup-service.d.ts +5 -5
- package/lib/core/initializer/initializer.service.d.ts +79 -79
- package/lib/core/interceptors/armature-auth-token-append.interceptor.d.ts +31 -31
- package/lib/core/models/base-config.d.ts +18 -18
- package/lib/core/models/constants.d.ts +13 -13
- package/lib/core/models/data-store-config.d.ts +27 -27
- package/lib/core/models/header-config.d.ts +9 -9
- package/lib/core/models/http-verbs.d.ts +10 -10
- package/lib/core/models/navigation-config.d.ts +14 -14
- package/lib/core/models/oidc-auth-settings.d.ts +11 -11
- package/lib/core/models/route-path.d.ts +5 -5
- package/lib/core/models/session-config.d.ts +18 -18
- package/lib/core/models/styles.d.ts +11 -11
- package/lib/core/models/subdomain-config.d.ts +7 -7
- package/lib/core/models/typed-session.d.ts +17 -17
- package/lib/core/models/user-entity-service-config.d.ts +14 -14
- package/lib/core/services/authorization.service.d.ts +54 -54
- package/lib/core/services/banner.service.d.ts +31 -31
- package/lib/core/services/base-config.service.d.ts +21 -21
- package/lib/core/services/custom-auth-config.service.d.ts +6 -6
- package/lib/core/services/default-config.service.d.ts +8 -8
- package/lib/core/services/session.service.d.ts +127 -127
- package/lib/core/services/user-entity.service.d.ts +47 -47
- package/lib/distributed-cache/client-generated/api/api.d.ts +3 -3
- package/lib/distributed-cache/client-generated/api/cache.service.d.ts +72 -72
- package/lib/distributed-cache/client-generated/configuration.d.ts +48 -48
- package/lib/distributed-cache/client-generated/encoder.d.ts +10 -10
- package/lib/distributed-cache/client-generated/model/cacheExpirationType.d.ts +19 -19
- package/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.d.ts +33 -33
- package/lib/distributed-cache/client-generated/model/models.d.ts +4 -4
- package/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.d.ts +20 -20
- package/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.d.ts +20 -20
- package/lib/distributed-cache/client-generated/variables.d.ts +8 -8
- package/lib/distributed-cache/distributed-cache-api.d.ts +7 -7
- package/lib/distributed-cache/distributed-cache.module.d.ts +8 -8
- package/lib/distributed-cache/models/constants.d.ts +2 -2
- package/lib/distributed-cache/models/policy-person.d.ts +19 -19
- package/lib/distributed-cache/services/server-cache.service.d.ts +72 -72
- package/lib/error/components/error-common/error-common.component.d.ts +14 -14
- package/lib/error/error-api.d.ts +4 -4
- package/lib/error/error.module.d.ts +11 -11
- package/lib/error/models/error-common-config.d.ts +21 -21
- package/lib/faq/components/faq/faq.component.d.ts +19 -19
- package/lib/faq/faq-api.d.ts +5 -5
- package/lib/faq/faq.module.d.ts +15 -15
- package/lib/faq/models/faq-config.d.ts +13 -13
- package/lib/faq/models/faq.d.ts +9 -9
- package/lib/feedback-tool/components/feedback-tool/feedback-tool.component.d.ts +62 -0
- package/lib/feedback-tool/feedback-tool-api.d.ts +3 -0
- package/lib/feedback-tool/feedback-tool.module.d.ts +14 -0
- package/lib/footer/components/footer/footer.component.d.ts +14 -14
- package/lib/footer/components/site-map/site-map.component.d.ts +13 -13
- package/lib/footer/footer-api.d.ts +7 -7
- package/lib/footer/footer.module.d.ts +14 -14
- package/lib/footer/models/enum/site-map-direction.d.ts +13 -13
- package/lib/footer/models/footer-config.d.ts +7 -7
- package/lib/footer/models/site-map-models.d.ts +41 -41
- package/lib/forms/components/sof-address/sof-address.component.d.ts +53 -53
- package/lib/forms/directives/alphanumeric/alphanumeric.directive.d.ts +31 -31
- package/lib/forms/directives/input-trim/input-trim.directive.d.ts +58 -58
- package/lib/forms/directives/letters-characters/letters-characters.directive.d.ts +27 -27
- package/lib/forms/directives/letters-only/letters-only.directive.d.ts +27 -27
- package/lib/forms/directives/numbers-only/numbers-only.directive.d.ts +22 -22
- package/lib/forms/forms-api.d.ts +14 -14
- package/lib/forms/forms.module.d.ts +21 -21
- package/lib/forms/models/address.d.ts +14 -14
- package/lib/forms/models/constants.d.ts +9 -9
- package/lib/forms/models/county.d.ts +13 -13
- package/lib/forms/models/enums/states.d.ts +64 -64
- package/lib/forms/pipes/phone-format.pipe.d.ts +10 -10
- package/lib/forms/services/alert.service.d.ts +60 -60
- package/lib/header/components/header/header.component.d.ts +120 -120
- package/lib/header/components/mobile-header-menu/mobile-header-menu.component.d.ts +26 -26
- package/lib/header/header-api.d.ts +9 -9
- package/lib/header/header.module.d.ts +20 -20
- package/lib/header/models/header-auth.settings.d.ts +30 -30
- package/lib/header/models/header-language.settings.d.ts +10 -10
- package/lib/header/models/header-theme.settings.d.ts +19 -19
- package/lib/header/models/header.settings.d.ts +53 -53
- package/lib/header/models/mobile-header-nav.settings.d.ts +11 -11
- package/lib/navigation/components/navigation/navigation.component.d.ts +200 -200
- package/lib/navigation/models/nav-theme.settings.d.ts +25 -25
- package/lib/navigation/models/nav.settings.d.ts +64 -64
- package/lib/navigation/models/navigation.d.ts +40 -40
- package/lib/navigation/navigation-api.d.ts +6 -6
- package/lib/navigation/navigation.module.d.ts +25 -25
- package/lib/oauth/models/constants.d.ts +6 -6
- package/lib/oauth/models/generated/accountManagementAssertionModel.d.ts +49 -49
- package/lib/oauth/models/generated/accountManagementRefreshRequestModel.d.ts +21 -21
- package/lib/oauth/models/generated/accountManagementResponseModel.d.ts +45 -45
- package/lib/oauth/models/generated/coverageDetail.d.ts +67 -67
- package/lib/oauth/models/generated/finance.d.ts +36 -36
- package/lib/oauth/models/generated/iSsoResponseModel.d.ts +44 -44
- package/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.d.ts +45 -45
- package/lib/oauth/models/generated/person.d.ts +53 -53
- package/lib/oauth/models/generated/policy.d.ts +51 -51
- package/lib/oauth/models/generated/refreshResponseModel.d.ts +20 -20
- package/lib/oauth/models/hybrid-saml-oauth-config.d.ts +14 -14
- package/lib/oauth/oauth-api.d.ts +12 -12
- package/lib/oauth/oauth.module.d.ts +9 -9
- package/lib/oauth/services/hybrid-saml-oauth.service.d.ts +59 -59
- package/lib/rbac/directives/rbac-action.directive.d.ts +27 -27
- package/lib/rbac/models/access-token-claims.d.ts +18 -18
- package/lib/rbac/models/constants.d.ts +4 -4
- package/lib/rbac/models/decoded-access-token.d.ts +43 -43
- package/lib/rbac/models/rbac-config.d.ts +15 -15
- package/lib/rbac/models/role-access.d.ts +7 -7
- package/lib/rbac/rbac-api.d.ts +11 -11
- package/lib/rbac/rbac.module.d.ts +19 -19
- package/lib/rbac/services/ar-role-nav.service.d.ts +25 -25
- package/lib/rbac/services/oauth2-role.service.d.ts +51 -51
- package/lib/rbac/services/role-nav.service.d.ts +12 -12
- package/lib/rbac/services/tokens.d.ts +3 -3
- package/lib/resize-panels/components/resize-panels/resize-panels.component.d.ts +64 -64
- package/lib/resize-panels/models/resize-event.d.ts +6 -6
- package/lib/resize-panels/resize-panels-api.d.ts +4 -4
- package/lib/resize-panels/resize-panels.module.d.ts +9 -9
- package/lib/rum/models/arm-error.d.ts +27 -27
- package/lib/rum/models/rum-config.d.ts +9 -9
- package/lib/rum/rum-api.d.ts +7 -7
- package/lib/rum/rum.module.d.ts +14 -14
- package/lib/rum/services/rum.service.d.ts +47 -47
- package/lib/rum/services/shared-error.service.d.ts +27 -27
- package/lib/rum/services/softheon-error-handler.service.d.ts +32 -32
- package/lib/saml/components/redirect-saml/redirect-saml.component.d.ts +41 -41
- package/lib/saml/models/i-saml-request.d.ts +4 -4
- package/lib/saml/models/i-saml-response.d.ts +4 -4
- package/lib/saml/models/redirect-saml-request.d.ts +24 -24
- package/lib/saml/models/sso-gateway-model.d.ts +17 -17
- package/lib/saml/saml-api.d.ts +11 -11
- package/lib/saml/saml.module.d.ts +9 -9
- package/lib/saml/services/entry/abstract-saml-entry.service.d.ts +16 -16
- package/lib/saml/services/entry/sso-gateway-entry.service.d.ts +22 -22
- package/lib/saml/services/send-off/abstract-saml.service.d.ts +20 -20
- package/lib/saml/services/send-off/saml.service.d.ts +32 -32
- package/lib/sof-pipe/constants/constants.d.ts +8 -8
- package/lib/sof-pipe/models/sof-date-pipe-format.d.ts +7 -7
- package/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.d.ts +19 -19
- package/lib/sof-pipe/pipes/sof-date/sof-date.pipe.d.ts +21 -21
- package/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.d.ts +12 -12
- package/lib/sof-pipe/sof-pipe.api.d.ts +7 -7
- package/lib/sof-pipe/sof-pipe.module.d.ts +10 -10
- package/lib/theming/directives/css-override.directive.d.ts +20 -20
- package/lib/theming/models/css-override.d.ts +15 -15
- package/lib/theming/services/theme.service.d.ts +48 -48
- package/lib/theming/theme-api.d.ts +5 -5
- package/lib/theming/theme.module.d.ts +9 -9
- package/package.json +17 -23
- package/public-api.d.ts +49 -48
- package/esm2020/lib/armature.module.mjs +0 -176
- package/esm2020/lib/base-components/sof-banner/sof-banner.component.mjs +0 -49
- package/esm2020/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +0 -58
- package/esm2020/lib/base-components/sof-modal/sof-modal.component.mjs +0 -58
- package/esm2020/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +0 -79
- package/esm2020/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +0 -40
- package/esm2020/lib/component-save-print/sof-ar-component-save-print.module.mjs +0 -32
- package/esm2020/lib/distributed-cache/distributed-cache.module.mjs +0 -38
- package/esm2020/lib/faq/components/faq/faq.component.mjs +0 -40
- package/esm2020/lib/footer/components/footer/footer.component.mjs +0 -25
- package/esm2020/lib/forms/models/constants.mjs +0 -10
- package/esm2020/lib/header/components/header/header.component.mjs +0 -161
- package/esm2020/lib/navigation/components/navigation/navigation.component.mjs +0 -556
- package/fesm2015/softheon-armature.mjs +0 -7275
- package/fesm2015/softheon-armature.mjs.map +0 -1
- package/fesm2020/softheon-armature.mjs +0 -7332
- package/fesm2020/softheon-armature.mjs.map +0 -1
|
@@ -1,242 +1,242 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Distributed Cache API
|
|
3
|
-
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
|
4
|
-
*
|
|
5
|
-
* OpenAPI spec version: 1
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* NOTE: This class is auto generated by the swagger code generator program.
|
|
9
|
-
* https://github.com/swagger-api/swagger-codegen.git
|
|
10
|
-
* Do not edit the class manually.
|
|
11
|
-
*/ /* tslint:disable:no-unused-variable member-ordering */
|
|
12
|
-
import { Inject, Injectable, Optional } from '@angular/core';
|
|
13
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
14
|
-
import { BASE_PATH } from '../variables';
|
|
15
|
-
import { Configuration } from '../configuration';
|
|
16
|
-
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "@angular/common/http";
|
|
18
|
-
import * as i2 from "../configuration";
|
|
19
|
-
export class SessionService {
|
|
20
|
-
constructor(httpClient, basePath, configuration) {
|
|
21
|
-
this.httpClient = httpClient;
|
|
22
|
-
this.basePath = '/';
|
|
23
|
-
this.defaultHeaders = new HttpHeaders();
|
|
24
|
-
this.configuration = new Configuration();
|
|
25
|
-
if (basePath) {
|
|
26
|
-
this.basePath = basePath;
|
|
27
|
-
}
|
|
28
|
-
if (configuration) {
|
|
29
|
-
this.configuration = configuration;
|
|
30
|
-
this.basePath = basePath || configuration.basePath || this.basePath;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* @param consumes string[] mime-types
|
|
35
|
-
* @return true: consumes contains 'multipart/form-data', false: otherwise
|
|
36
|
-
*/
|
|
37
|
-
canConsumeForm(consumes) {
|
|
38
|
-
const form = 'multipart/form-data';
|
|
39
|
-
for (const consume of consumes) {
|
|
40
|
-
if (form === consume) {
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
getSessionById(sessionId, observe = 'body', reportProgress = false) {
|
|
47
|
-
if (sessionId === null || sessionId === undefined) {
|
|
48
|
-
throw new Error('Required parameter sessionId was null or undefined when calling getSessionById.');
|
|
49
|
-
}
|
|
50
|
-
let headers = this.defaultHeaders;
|
|
51
|
-
// to determine the Accept header
|
|
52
|
-
let httpHeaderAccepts = [
|
|
53
|
-
'text/plain',
|
|
54
|
-
'application/json',
|
|
55
|
-
'text/json'
|
|
56
|
-
];
|
|
57
|
-
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
58
|
-
if (httpHeaderAcceptSelected != undefined) {
|
|
59
|
-
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
60
|
-
}
|
|
61
|
-
// to determine the Content-Type header
|
|
62
|
-
const consumes = [];
|
|
63
|
-
return this.httpClient.request('get', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`, {
|
|
64
|
-
withCredentials: this.configuration.withCredentials,
|
|
65
|
-
headers: headers,
|
|
66
|
-
observe: observe,
|
|
67
|
-
reportProgress: reportProgress
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
refreshSessionById(sessionId, observe = 'body', reportProgress = false) {
|
|
71
|
-
if (sessionId === null || sessionId === undefined) {
|
|
72
|
-
throw new Error('Required parameter sessionId was null or undefined when calling refreshSessionById.');
|
|
73
|
-
}
|
|
74
|
-
let headers = this.defaultHeaders;
|
|
75
|
-
// to determine the Accept header
|
|
76
|
-
let httpHeaderAccepts = [];
|
|
77
|
-
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
78
|
-
if (httpHeaderAcceptSelected != undefined) {
|
|
79
|
-
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
80
|
-
}
|
|
81
|
-
// to determine the Content-Type header
|
|
82
|
-
const consumes = [];
|
|
83
|
-
return this.httpClient.request('get', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}/refresh`, {
|
|
84
|
-
withCredentials: this.configuration.withCredentials,
|
|
85
|
-
headers: headers,
|
|
86
|
-
observe: observe,
|
|
87
|
-
reportProgress: reportProgress
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
registerSession(body, observe = 'body', reportProgress = false) {
|
|
91
|
-
let headers = this.defaultHeaders;
|
|
92
|
-
// to determine the Accept header
|
|
93
|
-
let httpHeaderAccepts = [
|
|
94
|
-
'text/plain',
|
|
95
|
-
'application/json',
|
|
96
|
-
'text/json'
|
|
97
|
-
];
|
|
98
|
-
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
99
|
-
if (httpHeaderAcceptSelected != undefined) {
|
|
100
|
-
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
101
|
-
}
|
|
102
|
-
// to determine the Content-Type header
|
|
103
|
-
const consumes = [
|
|
104
|
-
'application/json',
|
|
105
|
-
'text/json',
|
|
106
|
-
'application/_*+json'
|
|
107
|
-
];
|
|
108
|
-
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
109
|
-
if (httpContentTypeSelected != undefined) {
|
|
110
|
-
headers = headers.set('Content-Type', httpContentTypeSelected);
|
|
111
|
-
}
|
|
112
|
-
return this.httpClient.request('post', `${this.basePath}/v1/Session`, {
|
|
113
|
-
body: body,
|
|
114
|
-
withCredentials: this.configuration.withCredentials,
|
|
115
|
-
headers: headers,
|
|
116
|
-
observe: observe,
|
|
117
|
-
reportProgress: reportProgress
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
registerSessionById(sessionId, body, observe = 'body', reportProgress = false) {
|
|
121
|
-
if (sessionId === null || sessionId === undefined) {
|
|
122
|
-
throw new Error('Required parameter sessionId was null or undefined when calling registerSessionById.');
|
|
123
|
-
}
|
|
124
|
-
let headers = this.defaultHeaders;
|
|
125
|
-
// authentication (oauth2) required
|
|
126
|
-
if (this.configuration.accessToken) {
|
|
127
|
-
const accessToken = typeof this.configuration.accessToken === 'function'
|
|
128
|
-
? this.configuration.accessToken()
|
|
129
|
-
: this.configuration.accessToken;
|
|
130
|
-
headers = headers.set('Authorization', 'Bearer ' + accessToken);
|
|
131
|
-
}
|
|
132
|
-
// to determine the Accept header
|
|
133
|
-
let httpHeaderAccepts = [];
|
|
134
|
-
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
135
|
-
if (httpHeaderAcceptSelected != undefined) {
|
|
136
|
-
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
137
|
-
}
|
|
138
|
-
// to determine the Content-Type header
|
|
139
|
-
const consumes = [
|
|
140
|
-
'application/json',
|
|
141
|
-
'text/json',
|
|
142
|
-
'application/_*+json'
|
|
143
|
-
];
|
|
144
|
-
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
145
|
-
if (httpContentTypeSelected != undefined) {
|
|
146
|
-
headers = headers.set('Content-Type', httpContentTypeSelected);
|
|
147
|
-
}
|
|
148
|
-
return this.httpClient.request('post', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`, {
|
|
149
|
-
body: body,
|
|
150
|
-
withCredentials: this.configuration.withCredentials,
|
|
151
|
-
headers: headers,
|
|
152
|
-
observe: observe,
|
|
153
|
-
reportProgress: reportProgress
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
removeSessionById(sessionId, observe = 'body', reportProgress = false) {
|
|
157
|
-
if (sessionId === null || sessionId === undefined) {
|
|
158
|
-
throw new Error('Required parameter sessionId was null or undefined when calling removeSessionById.');
|
|
159
|
-
}
|
|
160
|
-
let headers = this.defaultHeaders;
|
|
161
|
-
// to determine the Accept header
|
|
162
|
-
let httpHeaderAccepts = [];
|
|
163
|
-
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
164
|
-
if (httpHeaderAcceptSelected != undefined) {
|
|
165
|
-
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
166
|
-
}
|
|
167
|
-
// to determine the Content-Type header
|
|
168
|
-
const consumes = [];
|
|
169
|
-
return this.httpClient.request('delete', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`, {
|
|
170
|
-
withCredentials: this.configuration.withCredentials,
|
|
171
|
-
headers: headers,
|
|
172
|
-
observe: observe,
|
|
173
|
-
reportProgress: reportProgress
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
syncSessionById(sessionId, observe = 'body', reportProgress = false) {
|
|
177
|
-
if (sessionId === null || sessionId === undefined) {
|
|
178
|
-
throw new Error('Required parameter sessionId was null or undefined when calling syncSessionById.');
|
|
179
|
-
}
|
|
180
|
-
let headers = this.defaultHeaders;
|
|
181
|
-
// to determine the Accept header
|
|
182
|
-
let httpHeaderAccepts = [];
|
|
183
|
-
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
184
|
-
if (httpHeaderAcceptSelected != undefined) {
|
|
185
|
-
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
186
|
-
}
|
|
187
|
-
// to determine the Content-Type header
|
|
188
|
-
const consumes = [];
|
|
189
|
-
return this.httpClient.request('get', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}/sync`, {
|
|
190
|
-
withCredentials: this.configuration.withCredentials,
|
|
191
|
-
headers: headers,
|
|
192
|
-
observe: observe,
|
|
193
|
-
reportProgress: reportProgress
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
updateSessionById(sessionId, body, observe = 'body', reportProgress = false) {
|
|
197
|
-
if (sessionId === null || sessionId === undefined) {
|
|
198
|
-
throw new Error('Required parameter sessionId was null or undefined when calling updateSessionById.');
|
|
199
|
-
}
|
|
200
|
-
let headers = this.defaultHeaders;
|
|
201
|
-
// to determine the Accept header
|
|
202
|
-
let httpHeaderAccepts = [
|
|
203
|
-
'text/plain',
|
|
204
|
-
'application/json',
|
|
205
|
-
'text/json'
|
|
206
|
-
];
|
|
207
|
-
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
208
|
-
if (httpHeaderAcceptSelected != undefined) {
|
|
209
|
-
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
210
|
-
}
|
|
211
|
-
// to determine the Content-Type header
|
|
212
|
-
const consumes = [
|
|
213
|
-
'application/json',
|
|
214
|
-
'text/json',
|
|
215
|
-
'application/_*+json'
|
|
216
|
-
];
|
|
217
|
-
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
218
|
-
if (httpContentTypeSelected != undefined) {
|
|
219
|
-
headers = headers.set('Content-Type', httpContentTypeSelected);
|
|
220
|
-
}
|
|
221
|
-
return this.httpClient.request('put', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`, {
|
|
222
|
-
body: body,
|
|
223
|
-
withCredentials: this.configuration.withCredentials,
|
|
224
|
-
headers: headers,
|
|
225
|
-
observe: observe,
|
|
226
|
-
reportProgress: reportProgress
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
233
|
-
type: Injectable
|
|
234
|
-
}], ctorParameters:
|
|
235
|
-
type: Optional
|
|
236
|
-
}, {
|
|
237
|
-
type: Inject,
|
|
238
|
-
args: [BASE_PATH]
|
|
239
|
-
}] }, { type: i2.Configuration, decorators: [{
|
|
240
|
-
type: Optional
|
|
241
|
-
}] }]
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL2NsaWVudC1nZW5lcmF0ZWQvYXBpL3Nlc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHLENBQUEsdURBQXVEO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFjLFdBQVcsRUFDRSxNQUFnQyxzQkFBc0IsQ0FBQztBQVd6RixPQUFPLEVBQUUsU0FBUyxFQUFzQixNQUEwQixjQUFjLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUEwQyxrQkFBa0IsQ0FBQzs7OztBQUlyRixNQUFNLE9BQU8sY0FBYztJQU12QixZQUFzQixVQUFzQixFQUFnQyxRQUFnQixFQUFjLGFBQTRCO1FBQWhILGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNsQixtQkFBYyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBR3ZDLElBQUksUUFBUSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDNUI7UUFDRCxJQUFJLGFBQWEsRUFBRTtZQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLGFBQWEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN2RTtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSyxjQUFjLENBQUMsUUFBa0I7UUFDckMsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQUM7UUFDbkMsS0FBSyxNQUFNLE9BQU8s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QixDQUFDLENBQUM7UUFDOUcsSUFBSSx3QkFBd0IsSUFBSSxTQUFTLEVBQUU7WUFDdkMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHdCQUF3QixDQUFDLENBQUM7U0FDN0Q7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxRQUFRLEdBQWE7WUFDdkIsa0JBQWtCO1lBQ2xCLFdBQVc7WUFDWCxxQkFBcUI7U0FDeEIsQ0FBQztRQUNGLE1BQU0sdUJBQXVCLEdBQXVCLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekcsSUFBSSx1QkFBdUIsSUFBSSxTQUFTLEVBQUU7WUFDdEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLHVCQUF1QixDQUFDLENBQUM7U0FDbEU7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFNLEtBQUssRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLGVBQWUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFDNUc7WUFDSSxJQUFJLEVBQUUsSUFBSTtZQUNWLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWU7WUFDbkQsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsY0FBYyxFQUFFLGNBQWM7U0FDakMsQ0FDSixDQUFDO0lBQ04sQ0FBQzs7MkdBL1ZRLGNBQWMsNENBTTBDLFNBQVM7K0dBTmpFLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBT3dDLFFBQVE7OzBCQUFHLE1BQU07MkJBQUMsU0FBUzs7MEJBQXFCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRGlzdHJpYnV0ZWQgQ2FjaGUgQVBJXHJcbiAqIE5vIGRlc2NyaXB0aW9uIHByb3ZpZGVkIChnZW5lcmF0ZWQgYnkgU3dhZ2dlciBDb2RlZ2VuIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4pXHJcbiAqXHJcbiAqIE9wZW5BUEkgc3BlYyB2ZXJzaW9uOiAxXHJcbiAqIFxyXG4gKlxyXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IHRoZSBzd2FnZ2VyIGNvZGUgZ2VuZXJhdG9yIHByb2dyYW0uXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4uZ2l0XHJcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cclxuICovLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlIG1lbWJlci1vcmRlcmluZyAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9ICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyxcclxuICAgICAgICAgSHR0cFJlc3BvbnNlLCBIdHRwRXZlbnQgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ3VzdG9tSHR0cFVybEVuY29kaW5nQ29kZWMgfSAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2VuY29kZXInO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgU2Vzc2lvbkdldFJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9zZXNzaW9uR2V0UmVzcG9uc2VNb2RlbCc7XHJcbmltcG9ydCB7IFNlc3Npb25Qb3N0UmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvc2Vzc2lvblBvc3RSZXF1ZXN0TW9kZWwnO1xyXG5pbXBvcnQgeyBTZXNzaW9uUG9zdFJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9zZXNzaW9uUG9zdFJlc3BvbnNlTW9kZWwnO1xyXG5pbXBvcnQgeyBTZXNzaW9uUHV0UmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvc2Vzc2lvblB1dFJlcXVlc3RNb2RlbCc7XHJcbmltcG9ydCB7IFNlc3Npb25QdXRSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvc2Vzc2lvblB1dFJlc3BvbnNlTW9kZWwnO1xyXG5cclxuaW1wb3J0IHsgQkFTRV9QQVRILCBDT0xMRUNUSU9OX0ZPUk1BVFMgfSAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL3ZhcmlhYmxlcyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU2VydmljZSB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGJhc2VQYXRoID0gJy8nO1xyXG4gICAgcHVibGljIGRlZmF1bHRIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICBwdWJsaWMgY29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0aW9uKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIEBPcHRpb25hbCgpQEluamVjdChCQVNFX1BBVEgpIGJhc2VQYXRoOiBzdHJpbmcsIEBPcHRpb25hbCgpIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICBpZiAoYmFzZVBhdGgpIHtcclxuICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xyXG4gICAgICAgICAgICB0aGlzLmJhc2VQYXRoID0gYmFzZVBhdGggfHwgY29uZmlndXJhdGlvbi5iYXNlUGF0aCB8fCB0aGlzLmJhc2VQYXRoO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSBjb25zdW1lcyBzdHJpbmdbXSBtaW1lLXR5cGVzXHJcbiAgICAgKiBAcmV0dXJuIHRydWU6IGNvbnN1bWVzIGNvbnRhaW5zICdtdWx0aXBhcnQvZm9ybS1kYXRhJywgZmFsc2U6IG90aGVyd2lzZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNhbkNvbnN1bWVGb3JtKGNvbnN1bWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGZvcm0gPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSc7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb25zdW1lIG9mIGNvbnN1bWVzKSB7XHJcbiAgICAgICAgICAgIGlmIChmb3JtID09PSBjb25zdW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgc2Vzc2lvbiBieSBpZFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gc2Vzc2lvbklkIFRoZSBzZXNzaW9uIElkXHJcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxyXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0U2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8U2Vzc2lvbkdldFJlc3BvbnNlTW9kZWw+O1xyXG4gICAgcHVibGljIGdldFNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8U2Vzc2lvbkdldFJlc3BvbnNlTW9kZWw+PjtcclxuICAgIHB1YmxpYyBnZXRTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxTZXNzaW9uR2V0UmVzcG9uc2VNb2RlbD4+O1xyXG4gICAgcHVibGljIGdldFNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICAgICAgaWYgKHNlc3Npb25JZCA9PT0gbnVsbCB8fCBzZXNzaW9uSWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBzZXNzaW9uSWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRTZXNzaW9uQnlJZC4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgJ3RleHQvcGxhaW4nLFxyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgICd0ZXh0L2pzb24nXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xyXG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8U2Vzc2lvbkdldFJlc3BvbnNlTW9kZWw+KCdnZXQnLGAke3RoaXMuYmFzZVBhdGh9L3YxL1Nlc3Npb24vJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHNlc3Npb25JZCkpfWAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVmcmVzaGVzIHRoZSBzZXNzaW9uXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBzZXNzaW9uSWQgVGhlIHNlc3Npb24gaWRcclxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXHJcbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWZyZXNoU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PjtcclxuICAgIHB1YmxpYyByZWZyZXNoU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxhbnk+PjtcclxuICAgIHB1YmxpYyByZWZyZXNoU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XHJcbiAgICBwdWJsaWMgcmVmcmVzaFNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICAgICAgaWYgKHNlc3Npb25JZCA9PT0gbnVsbCB8fCBzZXNzaW9uSWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBzZXNzaW9uSWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyByZWZyZXNoU2Vzc2lvbkJ5SWQuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XHJcblxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xyXG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8YW55PignZ2V0JyxgJHt0aGlzLmJhc2VQYXRofS92MS9TZXNzaW9uLyR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhzZXNzaW9uSWQpKX0vcmVmcmVzaGAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIGEgc2Vzc2lvblxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gYm9keSBUaGUgcmVxdWVzdCBtb2RlbFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyU2Vzc2lvbihib2R5PzogU2Vzc2lvblBvc3RSZXF1ZXN0TW9kZWwsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8U2Vzc2lvblBvc3RSZXNwb25zZU1vZGVsPjtcclxuICAgIHB1YmxpYyByZWdpc3RlclNlc3Npb24oYm9keT86IFNlc3Npb25Qb3N0UmVxdWVzdE1vZGVsLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8U2Vzc2lvblBvc3RSZXNwb25zZU1vZGVsPj47XHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJTZXNzaW9uKGJvZHk/OiBTZXNzaW9uUG9zdFJlcXVlc3RNb2RlbCwgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxTZXNzaW9uUG9zdFJlc3BvbnNlTW9kZWw+PjtcclxuICAgIHB1YmxpYyByZWdpc3RlclNlc3Npb24oYm9keT86IFNlc3Npb25Qb3N0UmVxdWVzdE1vZGVsLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcblxyXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgJ3RleHQvcGxhaW4nLFxyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgICd0ZXh0L2pzb24nXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xyXG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgICAndGV4dC9qc29uJyxcclxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL18qK2pzb24nXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcclxuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PFNlc3Npb25Qb3N0UmVzcG9uc2VNb2RlbD4oJ3Bvc3QnLGAke3RoaXMuYmFzZVBhdGh9L3YxL1Nlc3Npb25gLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxyXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIHRoZSBzZXNzaW9uIHdpdGggdGhlIGdpdmVuIGlkXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBzZXNzaW9uSWQgVGhlIHNlc3Npb24gaWRcclxuICAgICAqIEBwYXJhbSBib2R5IFRoZSBtb2RlbFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUG9zdFJlcXVlc3RNb2RlbCwgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgcHVibGljIHJlZ2lzdGVyU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUG9zdFJlcXVlc3RNb2RlbCwgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPGFueT4+O1xyXG4gICAgcHVibGljIHJlZ2lzdGVyU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUG9zdFJlcXVlc3RNb2RlbCwgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PjtcclxuICAgIHB1YmxpYyByZWdpc3RlclNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBib2R5PzogU2Vzc2lvblBvc3RSZXF1ZXN0TW9kZWwsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgICAgICBpZiAoc2Vzc2lvbklkID09PSBudWxsIHx8IHNlc3Npb25JZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHNlc3Npb25JZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHJlZ2lzdGVyU2Vzc2lvbkJ5SWQuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xyXG5cclxuICAgICAgICAvLyBhdXRoZW50aWNhdGlvbiAob2F1dGgyKSByZXF1aXJlZFxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uYWNjZXNzVG9rZW4pIHtcclxuICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSB0eXBlb2YgdGhpcy5jb25maWd1cmF0aW9uLmFjY2Vzc1Rva2VuID09PSAnZnVuY3Rpb24nXHJcbiAgICAgICAgICAgICAgICA/IHRoaXMuY29uZmlndXJhdGlvbi5hY2Nlc3NUb2tlbigpXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuY29uZmlndXJhdGlvbi5hY2Nlc3NUb2tlbjtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0JlYXJlciAnICsgYWNjZXNzVG9rZW4pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XHJcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXHJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgICd0ZXh0L2pzb24nLFxyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vXyoranNvbidcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xyXG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8YW55PigncG9zdCcsYCR7dGhpcy5iYXNlUGF0aH0vdjEvU2Vzc2lvbi8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoc2Vzc2lvbklkKSl9YCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgYm9keTogYm9keSxcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVsZXRlcyB0aGUgc2Vzc2lvblxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gc2Vzc2lvbklkIFRoZSBzZXNzaW9uIGlkXHJcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxyXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PjtcclxuICAgIHB1YmxpYyByZW1vdmVTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPGFueT4+O1xyXG4gICAgcHVibGljIHJlbW92ZVNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xyXG4gICAgcHVibGljIHJlbW92ZVNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICAgICAgaWYgKHNlc3Npb25JZCA9PT0gbnVsbCB8fCBzZXNzaW9uSWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBzZXNzaW9uSWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyByZW1vdmVTZXNzaW9uQnlJZC4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XHJcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXHJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxhbnk+KCdkZWxldGUnLGAke3RoaXMuYmFzZVBhdGh9L3YxL1Nlc3Npb24vJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHNlc3Npb25JZCkpfWAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3luY3MgdGhlIHNlc3Npb24gYnkgaWRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHNlc3Npb25JZCBUaGUgc2Vzc2lvbiBpZFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN5bmNTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgcHVibGljIHN5bmNTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPGFueT4+O1xyXG4gICAgcHVibGljIHN5bmNTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PjtcclxuICAgIHB1YmxpYyBzeW5jU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgICAgICBpZiAoc2Vzc2lvbklkID09PSBudWxsIHx8IHNlc3Npb25JZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHNlc3Npb25JZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHN5bmNTZXNzaW9uQnlJZC4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XHJcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXHJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxhbnk+KCdnZXQnLGAke3RoaXMuYmFzZVBhdGh9L3YxL1Nlc3Npb24vJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHNlc3Npb25JZCkpfS9zeW5jYCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSBTZXNzaW9uXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBzZXNzaW9uSWQgVGhlIHNlc3Npb24gaWRcclxuICAgICAqIEBwYXJhbSBib2R5IFRoZSByZXF1ZXN0IG1vZGVsXHJcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxyXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUHV0UmVxdWVzdE1vZGVsLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBwdWJsaWMgdXBkYXRlU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUHV0UmVxdWVzdE1vZGVsLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8YW55Pj47XHJcbiAgICBwdWJsaWMgdXBkYXRlU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUHV0UmVxdWVzdE1vZGVsLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xyXG4gICAgcHVibGljIHVwZGF0ZVNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBib2R5PzogU2Vzc2lvblB1dFJlcXVlc3RNb2RlbCwgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XHJcblxyXG4gICAgICAgIGlmIChzZXNzaW9uSWQgPT09IG51bGwgfHwgc2Vzc2lvbklkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgc2Vzc2lvbklkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgdXBkYXRlU2Vzc2lvbkJ5SWQuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xyXG5cclxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICAgICAndGV4dC9wbGFpbicsXHJcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgJ3RleHQvanNvbidcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XHJcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXHJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgICd0ZXh0L2pzb24nLFxyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vXyoranNvbidcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xyXG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8YW55PigncHV0JyxgJHt0aGlzLmJhc2VQYXRofS92MS9TZXNzaW9uLyR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhzZXNzaW9uSWQpKX1gLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxyXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
1
|
+
/**
|
|
2
|
+
* Distributed Cache API
|
|
3
|
+
* No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
|
|
4
|
+
*
|
|
5
|
+
* OpenAPI spec version: 1
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by the swagger code generator program.
|
|
9
|
+
* https://github.com/swagger-api/swagger-codegen.git
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/ /* tslint:disable:no-unused-variable member-ordering */
|
|
12
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
13
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
14
|
+
import { BASE_PATH } from '../variables';
|
|
15
|
+
import { Configuration } from '../configuration';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
import * as i1 from "@angular/common/http";
|
|
18
|
+
import * as i2 from "../configuration";
|
|
19
|
+
export class SessionService {
|
|
20
|
+
constructor(httpClient, basePath, configuration) {
|
|
21
|
+
this.httpClient = httpClient;
|
|
22
|
+
this.basePath = '/';
|
|
23
|
+
this.defaultHeaders = new HttpHeaders();
|
|
24
|
+
this.configuration = new Configuration();
|
|
25
|
+
if (basePath) {
|
|
26
|
+
this.basePath = basePath;
|
|
27
|
+
}
|
|
28
|
+
if (configuration) {
|
|
29
|
+
this.configuration = configuration;
|
|
30
|
+
this.basePath = basePath || configuration.basePath || this.basePath;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @param consumes string[] mime-types
|
|
35
|
+
* @return true: consumes contains 'multipart/form-data', false: otherwise
|
|
36
|
+
*/
|
|
37
|
+
canConsumeForm(consumes) {
|
|
38
|
+
const form = 'multipart/form-data';
|
|
39
|
+
for (const consume of consumes) {
|
|
40
|
+
if (form === consume) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
getSessionById(sessionId, observe = 'body', reportProgress = false) {
|
|
47
|
+
if (sessionId === null || sessionId === undefined) {
|
|
48
|
+
throw new Error('Required parameter sessionId was null or undefined when calling getSessionById.');
|
|
49
|
+
}
|
|
50
|
+
let headers = this.defaultHeaders;
|
|
51
|
+
// to determine the Accept header
|
|
52
|
+
let httpHeaderAccepts = [
|
|
53
|
+
'text/plain',
|
|
54
|
+
'application/json',
|
|
55
|
+
'text/json'
|
|
56
|
+
];
|
|
57
|
+
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
58
|
+
if (httpHeaderAcceptSelected != undefined) {
|
|
59
|
+
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
60
|
+
}
|
|
61
|
+
// to determine the Content-Type header
|
|
62
|
+
const consumes = [];
|
|
63
|
+
return this.httpClient.request('get', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`, {
|
|
64
|
+
withCredentials: this.configuration.withCredentials,
|
|
65
|
+
headers: headers,
|
|
66
|
+
observe: observe,
|
|
67
|
+
reportProgress: reportProgress
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
refreshSessionById(sessionId, observe = 'body', reportProgress = false) {
|
|
71
|
+
if (sessionId === null || sessionId === undefined) {
|
|
72
|
+
throw new Error('Required parameter sessionId was null or undefined when calling refreshSessionById.');
|
|
73
|
+
}
|
|
74
|
+
let headers = this.defaultHeaders;
|
|
75
|
+
// to determine the Accept header
|
|
76
|
+
let httpHeaderAccepts = [];
|
|
77
|
+
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
78
|
+
if (httpHeaderAcceptSelected != undefined) {
|
|
79
|
+
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
80
|
+
}
|
|
81
|
+
// to determine the Content-Type header
|
|
82
|
+
const consumes = [];
|
|
83
|
+
return this.httpClient.request('get', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}/refresh`, {
|
|
84
|
+
withCredentials: this.configuration.withCredentials,
|
|
85
|
+
headers: headers,
|
|
86
|
+
observe: observe,
|
|
87
|
+
reportProgress: reportProgress
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
registerSession(body, observe = 'body', reportProgress = false) {
|
|
91
|
+
let headers = this.defaultHeaders;
|
|
92
|
+
// to determine the Accept header
|
|
93
|
+
let httpHeaderAccepts = [
|
|
94
|
+
'text/plain',
|
|
95
|
+
'application/json',
|
|
96
|
+
'text/json'
|
|
97
|
+
];
|
|
98
|
+
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
99
|
+
if (httpHeaderAcceptSelected != undefined) {
|
|
100
|
+
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
101
|
+
}
|
|
102
|
+
// to determine the Content-Type header
|
|
103
|
+
const consumes = [
|
|
104
|
+
'application/json',
|
|
105
|
+
'text/json',
|
|
106
|
+
'application/_*+json'
|
|
107
|
+
];
|
|
108
|
+
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
109
|
+
if (httpContentTypeSelected != undefined) {
|
|
110
|
+
headers = headers.set('Content-Type', httpContentTypeSelected);
|
|
111
|
+
}
|
|
112
|
+
return this.httpClient.request('post', `${this.basePath}/v1/Session`, {
|
|
113
|
+
body: body,
|
|
114
|
+
withCredentials: this.configuration.withCredentials,
|
|
115
|
+
headers: headers,
|
|
116
|
+
observe: observe,
|
|
117
|
+
reportProgress: reportProgress
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
registerSessionById(sessionId, body, observe = 'body', reportProgress = false) {
|
|
121
|
+
if (sessionId === null || sessionId === undefined) {
|
|
122
|
+
throw new Error('Required parameter sessionId was null or undefined when calling registerSessionById.');
|
|
123
|
+
}
|
|
124
|
+
let headers = this.defaultHeaders;
|
|
125
|
+
// authentication (oauth2) required
|
|
126
|
+
if (this.configuration.accessToken) {
|
|
127
|
+
const accessToken = typeof this.configuration.accessToken === 'function'
|
|
128
|
+
? this.configuration.accessToken()
|
|
129
|
+
: this.configuration.accessToken;
|
|
130
|
+
headers = headers.set('Authorization', 'Bearer ' + accessToken);
|
|
131
|
+
}
|
|
132
|
+
// to determine the Accept header
|
|
133
|
+
let httpHeaderAccepts = [];
|
|
134
|
+
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
135
|
+
if (httpHeaderAcceptSelected != undefined) {
|
|
136
|
+
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
137
|
+
}
|
|
138
|
+
// to determine the Content-Type header
|
|
139
|
+
const consumes = [
|
|
140
|
+
'application/json',
|
|
141
|
+
'text/json',
|
|
142
|
+
'application/_*+json'
|
|
143
|
+
];
|
|
144
|
+
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
145
|
+
if (httpContentTypeSelected != undefined) {
|
|
146
|
+
headers = headers.set('Content-Type', httpContentTypeSelected);
|
|
147
|
+
}
|
|
148
|
+
return this.httpClient.request('post', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`, {
|
|
149
|
+
body: body,
|
|
150
|
+
withCredentials: this.configuration.withCredentials,
|
|
151
|
+
headers: headers,
|
|
152
|
+
observe: observe,
|
|
153
|
+
reportProgress: reportProgress
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
removeSessionById(sessionId, observe = 'body', reportProgress = false) {
|
|
157
|
+
if (sessionId === null || sessionId === undefined) {
|
|
158
|
+
throw new Error('Required parameter sessionId was null or undefined when calling removeSessionById.');
|
|
159
|
+
}
|
|
160
|
+
let headers = this.defaultHeaders;
|
|
161
|
+
// to determine the Accept header
|
|
162
|
+
let httpHeaderAccepts = [];
|
|
163
|
+
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
164
|
+
if (httpHeaderAcceptSelected != undefined) {
|
|
165
|
+
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
166
|
+
}
|
|
167
|
+
// to determine the Content-Type header
|
|
168
|
+
const consumes = [];
|
|
169
|
+
return this.httpClient.request('delete', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`, {
|
|
170
|
+
withCredentials: this.configuration.withCredentials,
|
|
171
|
+
headers: headers,
|
|
172
|
+
observe: observe,
|
|
173
|
+
reportProgress: reportProgress
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
syncSessionById(sessionId, observe = 'body', reportProgress = false) {
|
|
177
|
+
if (sessionId === null || sessionId === undefined) {
|
|
178
|
+
throw new Error('Required parameter sessionId was null or undefined when calling syncSessionById.');
|
|
179
|
+
}
|
|
180
|
+
let headers = this.defaultHeaders;
|
|
181
|
+
// to determine the Accept header
|
|
182
|
+
let httpHeaderAccepts = [];
|
|
183
|
+
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
184
|
+
if (httpHeaderAcceptSelected != undefined) {
|
|
185
|
+
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
186
|
+
}
|
|
187
|
+
// to determine the Content-Type header
|
|
188
|
+
const consumes = [];
|
|
189
|
+
return this.httpClient.request('get', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}/sync`, {
|
|
190
|
+
withCredentials: this.configuration.withCredentials,
|
|
191
|
+
headers: headers,
|
|
192
|
+
observe: observe,
|
|
193
|
+
reportProgress: reportProgress
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
updateSessionById(sessionId, body, observe = 'body', reportProgress = false) {
|
|
197
|
+
if (sessionId === null || sessionId === undefined) {
|
|
198
|
+
throw new Error('Required parameter sessionId was null or undefined when calling updateSessionById.');
|
|
199
|
+
}
|
|
200
|
+
let headers = this.defaultHeaders;
|
|
201
|
+
// to determine the Accept header
|
|
202
|
+
let httpHeaderAccepts = [
|
|
203
|
+
'text/plain',
|
|
204
|
+
'application/json',
|
|
205
|
+
'text/json'
|
|
206
|
+
];
|
|
207
|
+
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
208
|
+
if (httpHeaderAcceptSelected != undefined) {
|
|
209
|
+
headers = headers.set('Accept', httpHeaderAcceptSelected);
|
|
210
|
+
}
|
|
211
|
+
// to determine the Content-Type header
|
|
212
|
+
const consumes = [
|
|
213
|
+
'application/json',
|
|
214
|
+
'text/json',
|
|
215
|
+
'application/_*+json'
|
|
216
|
+
];
|
|
217
|
+
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
|
|
218
|
+
if (httpContentTypeSelected != undefined) {
|
|
219
|
+
headers = headers.set('Content-Type', httpContentTypeSelected);
|
|
220
|
+
}
|
|
221
|
+
return this.httpClient.request('put', `${this.basePath}/v1/Session/${encodeURIComponent(String(sessionId))}`, {
|
|
222
|
+
body: body,
|
|
223
|
+
withCredentials: this.configuration.withCredentials,
|
|
224
|
+
headers: headers,
|
|
225
|
+
observe: observe,
|
|
226
|
+
reportProgress: reportProgress
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SessionService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
230
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SessionService }); }
|
|
231
|
+
}
|
|
232
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SessionService, decorators: [{
|
|
233
|
+
type: Injectable
|
|
234
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
235
|
+
type: Optional
|
|
236
|
+
}, {
|
|
237
|
+
type: Inject,
|
|
238
|
+
args: [BASE_PATH]
|
|
239
|
+
}] }, { type: i2.Configuration, decorators: [{
|
|
240
|
+
type: Optional
|
|
241
|
+
}] }] });
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvc3JjL2xpYi9jb3JlL2NsaWVudC1nZW5lcmF0ZWQvYXBpL3Nlc3Npb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHLENBQUEsdURBQXVEO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFjLFdBQVcsRUFDRSxNQUFnQyxzQkFBc0IsQ0FBQztBQVd6RixPQUFPLEVBQUUsU0FBUyxFQUFzQixNQUEwQixjQUFjLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUEwQyxrQkFBa0IsQ0FBQzs7OztBQUlyRixNQUFNLE9BQU8sY0FBYztJQU12QixZQUFzQixVQUFzQixFQUFnQyxRQUFnQixFQUFjLGFBQTRCO1FBQWhILGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNsQixtQkFBYyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBR3ZDLElBQUksUUFBUSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDNUI7UUFDRCxJQUFJLGFBQWEsRUFBRTtZQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLGFBQWEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN2RTtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSyxjQUFjLENBQUMsUUFBa0I7UUFDckMsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQUM7UUFDbkMsS0FBSyxNQUFNLE9BQU8s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QixDQUFDLENBQUM7UUFDOUcsSUFBSSx3QkFBd0IsSUFBSSxTQUFTLEVBQUU7WUFDdkMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHdCQUF3QixDQUFDLENBQUM7U0FDN0Q7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxRQUFRLEdBQWE7WUFDdkIsa0JBQWtCO1lBQ2xCLFdBQVc7WUFDWCxxQkFBcUI7U0FDeEIsQ0FBQztRQUNGLE1BQU0sdUJBQXVCLEdBQXVCLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekcsSUFBSSx1QkFBdUIsSUFBSSxTQUFTLEVBQUU7WUFDdEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLHVCQUF1QixDQUFDLENBQUM7U0FDbEU7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFNLEtBQUssRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLGVBQWUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFDNUc7WUFDSSxJQUFJLEVBQUUsSUFBSTtZQUNWLGVBQWUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWU7WUFDbkQsT0FBTyxFQUFFLE9BQU87WUFDaEIsT0FBTyxFQUFFLE9BQU87WUFDaEIsY0FBYyxFQUFFLGNBQWM7U0FDakMsQ0FDSixDQUFDO0lBQ04sQ0FBQzs4R0EvVlEsY0FBYyw0Q0FNMEMsU0FBUztrSEFOakUsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBT3dDLFFBQVE7OzBCQUFHLE1BQU07MkJBQUMsU0FBUzs7MEJBQXFCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRGlzdHJpYnV0ZWQgQ2FjaGUgQVBJXHJcbiAqIE5vIGRlc2NyaXB0aW9uIHByb3ZpZGVkIChnZW5lcmF0ZWQgYnkgU3dhZ2dlciBDb2RlZ2VuIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4pXHJcbiAqXHJcbiAqIE9wZW5BUEkgc3BlYyB2ZXJzaW9uOiAxXHJcbiAqIFxyXG4gKlxyXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IHRoZSBzd2FnZ2VyIGNvZGUgZ2VuZXJhdG9yIHByb2dyYW0uXHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4uZ2l0XHJcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cclxuICovLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlIG1lbWJlci1vcmRlcmluZyAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9ICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyxcclxuICAgICAgICAgSHR0cFJlc3BvbnNlLCBIdHRwRXZlbnQgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ3VzdG9tSHR0cFVybEVuY29kaW5nQ29kZWMgfSAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2VuY29kZXInO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgU2Vzc2lvbkdldFJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9zZXNzaW9uR2V0UmVzcG9uc2VNb2RlbCc7XHJcbmltcG9ydCB7IFNlc3Npb25Qb3N0UmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvc2Vzc2lvblBvc3RSZXF1ZXN0TW9kZWwnO1xyXG5pbXBvcnQgeyBTZXNzaW9uUG9zdFJlc3BvbnNlTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9zZXNzaW9uUG9zdFJlc3BvbnNlTW9kZWwnO1xyXG5pbXBvcnQgeyBTZXNzaW9uUHV0UmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvc2Vzc2lvblB1dFJlcXVlc3RNb2RlbCc7XHJcbmltcG9ydCB7IFNlc3Npb25QdXRSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvc2Vzc2lvblB1dFJlc3BvbnNlTW9kZWwnO1xyXG5cclxuaW1wb3J0IHsgQkFTRV9QQVRILCBDT0xMRUNUSU9OX0ZPUk1BVFMgfSAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL3ZhcmlhYmxlcyc7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU2VydmljZSB7XHJcblxyXG4gICAgcHJvdGVjdGVkIGJhc2VQYXRoID0gJy8nO1xyXG4gICAgcHVibGljIGRlZmF1bHRIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICBwdWJsaWMgY29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0aW9uKCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIEBPcHRpb25hbCgpQEluamVjdChCQVNFX1BBVEgpIGJhc2VQYXRoOiBzdHJpbmcsIEBPcHRpb25hbCgpIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgICBpZiAoYmFzZVBhdGgpIHtcclxuICAgICAgICAgICAgdGhpcy5iYXNlUGF0aCA9IGJhc2VQYXRoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uO1xyXG4gICAgICAgICAgICB0aGlzLmJhc2VQYXRoID0gYmFzZVBhdGggfHwgY29uZmlndXJhdGlvbi5iYXNlUGF0aCB8fCB0aGlzLmJhc2VQYXRoO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwYXJhbSBjb25zdW1lcyBzdHJpbmdbXSBtaW1lLXR5cGVzXHJcbiAgICAgKiBAcmV0dXJuIHRydWU6IGNvbnN1bWVzIGNvbnRhaW5zICdtdWx0aXBhcnQvZm9ybS1kYXRhJywgZmFsc2U6IG90aGVyd2lzZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNhbkNvbnN1bWVGb3JtKGNvbnN1bWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGZvcm0gPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSc7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb25zdW1lIG9mIGNvbnN1bWVzKSB7XHJcbiAgICAgICAgICAgIGlmIChmb3JtID09PSBjb25zdW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgc2Vzc2lvbiBieSBpZFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gc2Vzc2lvbklkIFRoZSBzZXNzaW9uIElkXHJcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxyXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0U2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8U2Vzc2lvbkdldFJlc3BvbnNlTW9kZWw+O1xyXG4gICAgcHVibGljIGdldFNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8U2Vzc2lvbkdldFJlc3BvbnNlTW9kZWw+PjtcclxuICAgIHB1YmxpYyBnZXRTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxTZXNzaW9uR2V0UmVzcG9uc2VNb2RlbD4+O1xyXG4gICAgcHVibGljIGdldFNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICAgICAgaWYgKHNlc3Npb25JZCA9PT0gbnVsbCB8fCBzZXNzaW9uSWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBzZXNzaW9uSWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRTZXNzaW9uQnlJZC4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgJ3RleHQvcGxhaW4nLFxyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgICd0ZXh0L2pzb24nXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xyXG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8U2Vzc2lvbkdldFJlc3BvbnNlTW9kZWw+KCdnZXQnLGAke3RoaXMuYmFzZVBhdGh9L3YxL1Nlc3Npb24vJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHNlc3Npb25JZCkpfWAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVmcmVzaGVzIHRoZSBzZXNzaW9uXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBzZXNzaW9uSWQgVGhlIHNlc3Npb24gaWRcclxuICAgICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXHJcbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWZyZXNoU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PjtcclxuICAgIHB1YmxpYyByZWZyZXNoU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU/OiAncmVzcG9uc2UnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxhbnk+PjtcclxuICAgIHB1YmxpYyByZWZyZXNoU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU/OiAnZXZlbnRzJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XHJcbiAgICBwdWJsaWMgcmVmcmVzaFNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICAgICAgaWYgKHNlc3Npb25JZCA9PT0gbnVsbCB8fCBzZXNzaW9uSWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBzZXNzaW9uSWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyByZWZyZXNoU2Vzc2lvbkJ5SWQuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgaGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XHJcblxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxyXG4gICAgICAgIGxldCBodHRwSGVhZGVyQWNjZXB0czogc3RyaW5nW10gPSBbXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xyXG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8YW55PignZ2V0JyxgJHt0aGlzLmJhc2VQYXRofS92MS9TZXNzaW9uLyR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhzZXNzaW9uSWQpKX0vcmVmcmVzaGAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0ZXJzIGEgc2Vzc2lvblxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gYm9keSBUaGUgcmVxdWVzdCBtb2RlbFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyU2Vzc2lvbihib2R5PzogU2Vzc2lvblBvc3RSZXF1ZXN0TW9kZWwsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8U2Vzc2lvblBvc3RSZXNwb25zZU1vZGVsPjtcclxuICAgIHB1YmxpYyByZWdpc3RlclNlc3Npb24oYm9keT86IFNlc3Npb25Qb3N0UmVxdWVzdE1vZGVsLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8U2Vzc2lvblBvc3RSZXNwb25zZU1vZGVsPj47XHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJTZXNzaW9uKGJvZHk/OiBTZXNzaW9uUG9zdFJlcXVlc3RNb2RlbCwgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxTZXNzaW9uUG9zdFJlc3BvbnNlTW9kZWw+PjtcclxuICAgIHB1YmxpYyByZWdpc3RlclNlc3Npb24oYm9keT86IFNlc3Npb25Qb3N0UmVxdWVzdE1vZGVsLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcblxyXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgJ3RleHQvcGxhaW4nLFxyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgICd0ZXh0L2pzb24nXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoaHR0cEhlYWRlckFjY2VwdHMpO1xyXG4gICAgICAgIGlmIChodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgaHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxyXG4gICAgICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgICAndGV4dC9qc29uJyxcclxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL18qK2pzb24nXHJcbiAgICAgICAgXTtcclxuICAgICAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckNvbnRlbnRUeXBlKGNvbnN1bWVzKTtcclxuICAgICAgICBpZiAoaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PFNlc3Npb25Qb3N0UmVzcG9uc2VNb2RlbD4oJ3Bvc3QnLGAke3RoaXMuYmFzZVBhdGh9L3YxL1Nlc3Npb25gLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxyXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIHRoZSBzZXNzaW9uIHdpdGggdGhlIGdpdmVuIGlkXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBzZXNzaW9uSWQgVGhlIHNlc3Npb24gaWRcclxuICAgICAqIEBwYXJhbSBib2R5IFRoZSBtb2RlbFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUG9zdFJlcXVlc3RNb2RlbCwgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgcHVibGljIHJlZ2lzdGVyU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUG9zdFJlcXVlc3RNb2RlbCwgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPGFueT4+O1xyXG4gICAgcHVibGljIHJlZ2lzdGVyU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUG9zdFJlcXVlc3RNb2RlbCwgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PjtcclxuICAgIHB1YmxpYyByZWdpc3RlclNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBib2R5PzogU2Vzc2lvblBvc3RSZXF1ZXN0TW9kZWwsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgICAgICBpZiAoc2Vzc2lvbklkID09PSBudWxsIHx8IHNlc3Npb25JZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHNlc3Npb25JZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHJlZ2lzdGVyU2Vzc2lvbkJ5SWQuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xyXG5cclxuICAgICAgICAvLyBhdXRoZW50aWNhdGlvbiAob2F1dGgyKSByZXF1aXJlZFxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uYWNjZXNzVG9rZW4pIHtcclxuICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSB0eXBlb2YgdGhpcy5jb25maWd1cmF0aW9uLmFjY2Vzc1Rva2VuID09PSAnZnVuY3Rpb24nXHJcbiAgICAgICAgICAgICAgICA/IHRoaXMuY29uZmlndXJhdGlvbi5hY2Nlc3NUb2tlbigpXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMuY29uZmlndXJhdGlvbi5hY2Nlc3NUb2tlbjtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgJ0JlYXJlciAnICsgYWNjZXNzVG9rZW4pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XHJcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXHJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgICd0ZXh0L2pzb24nLFxyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vXyoranNvbidcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xyXG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8YW55PigncG9zdCcsYCR7dGhpcy5iYXNlUGF0aH0vdjEvU2Vzc2lvbi8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoc2Vzc2lvbklkKSl9YCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgYm9keTogYm9keSxcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVsZXRlcyB0aGUgc2Vzc2lvblxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gc2Vzc2lvbklkIFRoZSBzZXNzaW9uIGlkXHJcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxyXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVtb3ZlU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PjtcclxuICAgIHB1YmxpYyByZW1vdmVTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPGFueT4+O1xyXG4gICAgcHVibGljIHJlbW92ZVNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xyXG4gICAgcHVibGljIHJlbW92ZVNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHJcbiAgICAgICAgaWYgKHNlc3Npb25JZCA9PT0gbnVsbCB8fCBzZXNzaW9uSWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlcXVpcmVkIHBhcmFtZXRlciBzZXNzaW9uSWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyByZW1vdmVTZXNzaW9uQnlJZC4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XHJcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXHJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxhbnk+KCdkZWxldGUnLGAke3RoaXMuYmFzZVBhdGh9L3YxL1Nlc3Npb24vJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHNlc3Npb25JZCkpfWAsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxyXG4gICAgICAgICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3luY3MgdGhlIHNlc3Npb24gYnkgaWRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHNlc3Npb25JZCBUaGUgc2Vzc2lvbiBpZFxyXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cclxuICAgICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN5bmNTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgcHVibGljIHN5bmNTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPGFueT4+O1xyXG4gICAgcHVibGljIHN5bmNTZXNzaW9uQnlJZChzZXNzaW9uSWQ6IHN0cmluZywgb2JzZXJ2ZT86ICdldmVudHMnLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PjtcclxuICAgIHB1YmxpYyBzeW5jU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIG9ic2VydmU6IGFueSA9ICdib2R5JywgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgICAgICBpZiAoc2Vzc2lvbklkID09PSBudWxsIHx8IHNlc3Npb25JZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVxdWlyZWQgcGFyYW1ldGVyIHNlc3Npb25JZCB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIHN5bmNTZXNzaW9uQnlJZC4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBoZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBBY2NlcHQgaGVhZGVyXHJcbiAgICAgICAgbGV0IGh0dHBIZWFkZXJBY2NlcHRzOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XHJcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXHJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxhbnk+KCdnZXQnLGAke3RoaXMuYmFzZVBhdGh9L3YxL1Nlc3Npb24vJHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHNlc3Npb25JZCkpfS9zeW5jYCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGVzIHRoZSBTZXNzaW9uXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBzZXNzaW9uSWQgVGhlIHNlc3Npb24gaWRcclxuICAgICAqIEBwYXJhbSBib2R5IFRoZSByZXF1ZXN0IG1vZGVsXHJcbiAgICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxyXG4gICAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUHV0UmVxdWVzdE1vZGVsLCBvYnNlcnZlPzogJ2JvZHknLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgICBwdWJsaWMgdXBkYXRlU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUHV0UmVxdWVzdE1vZGVsLCBvYnNlcnZlPzogJ3Jlc3BvbnNlJywgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8YW55Pj47XHJcbiAgICBwdWJsaWMgdXBkYXRlU2Vzc2lvbkJ5SWQoc2Vzc2lvbklkOiBzdHJpbmcsIGJvZHk/OiBTZXNzaW9uUHV0UmVxdWVzdE1vZGVsLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xyXG4gICAgcHVibGljIHVwZGF0ZVNlc3Npb25CeUlkKHNlc3Npb25JZDogc3RyaW5nLCBib2R5PzogU2Vzc2lvblB1dFJlcXVlc3RNb2RlbCwgb2JzZXJ2ZTogYW55ID0gJ2JvZHknLCByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlICk6IE9ic2VydmFibGU8YW55PiB7XHJcblxyXG4gICAgICAgIGlmIChzZXNzaW9uSWQgPT09IG51bGwgfHwgc2Vzc2lvbklkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgc2Vzc2lvbklkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgdXBkYXRlU2Vzc2lvbkJ5SWQuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgbGV0IGhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xyXG5cclxuICAgICAgICAvLyB0byBkZXRlcm1pbmUgdGhlIEFjY2VwdCBoZWFkZXJcclxuICAgICAgICBsZXQgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICAgICAndGV4dC9wbGFpbicsXHJcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgJ3RleHQvanNvbidcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XHJcbiAgICAgICAgaWYgKGh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBodHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXHJcbiAgICAgICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgICd0ZXh0L2pzb24nLFxyXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vXyoranNvbidcclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IGh0dHBDb250ZW50VHlwZVNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xyXG4gICAgICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCBodHRwQ29udGVudFR5cGVTZWxlY3RlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8YW55PigncHV0JyxgJHt0aGlzLmJhc2VQYXRofS92MS9TZXNzaW9uLyR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhzZXNzaW9uSWQpKX1gLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxyXG4gICAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXHJcbiAgICAgICAgICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
|