@sunbird-cb/toc 0.0.9 → 0.0.11
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/esm2022/lib/_collection/_common/attendance-card/attendance-card.component.mjs +55 -55
- package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -126
- package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -32
- package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -85
- package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -100
- package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -48
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -120
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -92
- package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -48
- package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -25
- package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -41
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -89
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -42
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -41
- package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -78
- package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -45
- package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -2
- package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -70
- package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -28
- package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -187
- package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -86
- package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -31
- package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -941
- package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -183
- package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -327
- package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -297
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +272 -248
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1202 -1148
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -16
- package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -43
- package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -133
- package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -66
- package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -278
- package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -21
- package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -21
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -847
- package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -219
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -209
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -26
- package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -19
- package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -23
- package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -113
- package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -110
- package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -26
- package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -19
- package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -67
- package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -28
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -77
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -2
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -61
- package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -20
- package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +67 -67
- package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -139
- package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -71
- package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -34
- package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -56
- package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -25
- package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -37
- package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -32
- package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -30
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -38
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -51
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -115
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -12
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -51
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -61
- package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -87
- package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -36
- package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -62
- package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -24
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -192
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -44
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -99
- package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -58
- package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -67
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -112
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -2
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -69
- package/esm2022/lib/_collection-api.mjs +57 -57
- package/esm2022/lib/_constants/widget-content.constants.mjs +19 -19
- package/esm2022/lib/_directives/tooltip.directive.mjs +68 -68
- package/esm2022/lib/_models/common.model.mjs +2 -2
- package/esm2022/lib/_models/error.model.mjs +2 -2
- package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -24
- package/esm2022/lib/_services/rating.service.mjs +89 -89
- package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -29
- package/esm2022/lib/_services/viewer-route-util.mjs +103 -103
- package/esm2022/lib/_services/widget-content.model.mjs +247 -247
- package/esm2022/lib/_services/widget-content.service.mjs +594 -594
- package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -9
- package/esm2022/lib/app-toc-lib.module.mjs +499 -499
- package/esm2022/lib/collection.config.mjs +161 -161
- package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -37
- package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -1436
- package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -475
- package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -119
- package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -80
- package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -249
- package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -39
- package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -58
- package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -2229
- package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2938 -2907
- package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -157
- package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -48
- package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -47
- package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -766
- package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -243
- package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -116
- package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -44
- package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -1838
- package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -236
- package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -213
- package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -36
- package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -256
- package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -133
- package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -36
- package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -2
- package/esm2022/lib/models/app-toc.model.mjs +38 -38
- package/esm2022/lib/models/auto-complete.model.mjs +2 -2
- package/esm2022/lib/models/card-content.model.mjs +13 -13
- package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -2
- package/esm2022/lib/models/discussion-forum.model.mjs +14 -14
- package/esm2022/lib/models/goal.model.mjs +2 -2
- package/esm2022/lib/models/meta-tag.model.mjs +8 -8
- package/esm2022/lib/models/playlist.model.mjs +2 -2
- package/esm2022/lib/models/profile-revamp.model.mjs +2 -2
- package/esm2022/lib/models/rating.model.mjs +2 -2
- package/esm2022/lib/models/user-profile.model.mjs +21 -21
- package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -24
- package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -24
- package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -60
- package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -106
- package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -25
- package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -51
- package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -16
- package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -18
- package/esm2022/lib/services/access-control.service.mjs +56 -56
- package/esm2022/lib/services/action.service.mjs +23 -23
- package/esm2022/lib/services/app-toc-v2.service.mjs +333 -313
- package/esm2022/lib/services/app-toc.service.mjs +1647 -1613
- package/esm2022/lib/services/certificate.service.mjs +69 -69
- package/esm2022/lib/services/discuss-utils.service.mjs +58 -58
- package/esm2022/lib/services/editor.service.mjs +34 -34
- package/esm2022/lib/services/load-check.service.mjs +21 -21
- package/esm2022/lib/services/loader.service.mjs +33 -33
- package/esm2022/lib/services/mobile-apps.service.mjs +67 -67
- package/esm2022/lib/services/netcore.service.mjs +56 -56
- package/esm2022/lib/services/nps-grid.service.mjs +31 -31
- package/esm2022/lib/services/otp.service.mjs +43 -43
- package/esm2022/lib/services/profile-v2.service.mjs +43 -43
- package/esm2022/lib/services/reset-ratings.service.mjs +19 -19
- package/esm2022/lib/services/resource-download-helper.service.mjs +64 -64
- package/esm2022/lib/services/timer.service.mjs +23 -23
- package/esm2022/lib/services/title-tag.service.mjs +71 -71
- package/esm2022/lib/services/user-profile.service.mjs +55 -55
- package/esm2022/lib/services/viewer-data.service.mjs +64 -64
- package/esm2022/lib/services/viewer-util.service.mjs +599 -590
- package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -291
- package/esm2022/lib/share-toc/share-toc.module.mjs +119 -119
- package/esm2022/public-api.mjs +73 -71
- package/esm2022/sunbird-cb-toc.mjs +4 -4
- package/fesm2022/sunbird-cb-toc.mjs +24942 -24771
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
- package/index.d.ts +6 -5
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +17 -16
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +32 -31
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +16 -15
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +21 -20
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +1 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +23 -22
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +1 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +16 -15
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +23 -22
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +23 -22
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +10 -9
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +1 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +12 -11
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +13 -12
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +19 -18
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +15 -14
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +12 -11
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts +18 -17
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts +15 -14
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +200 -199
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +1 -0
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts +17 -16
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts +11 -10
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +39 -38
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +20 -19
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +12 -11
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +184 -183
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +42 -41
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +55 -54
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +48 -47
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +57 -49
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +186 -171
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +9 -8
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +17 -16
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +41 -40
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +22 -21
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +46 -45
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +11 -10
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +11 -10
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts +129 -128
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts +52 -51
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +30 -29
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +10 -9
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +8 -7
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +8 -7
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +29 -28
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +25 -24
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +15 -14
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +10 -9
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +13 -12
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +11 -10
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +23 -22
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +9 -8
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +19 -18
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +1 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +9 -8
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +1 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +16 -15
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts +36 -35
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +1 -0
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts +20 -19
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +1 -0
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +15 -14
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +1 -0
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +14 -13
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +1 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +12 -11
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +12 -11
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +1 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +16 -15
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +11 -10
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +1 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +17 -16
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +1 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +12 -11
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +35 -34
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +18 -17
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +16 -15
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +16 -15
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +1 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +22 -21
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +13 -12
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-image/user-image.component.d.ts +22 -21
- package/lib/_collection/_common/user-image/user-image.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-image/user-image.module.d.ts +10 -9
- package/lib/_collection/_common/user-image/user-image.module.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +48 -47
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +15 -14
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +23 -22
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +1 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +20 -19
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +1 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +16 -15
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +26 -25
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +22 -21
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +19 -18
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
- package/lib/_collection-api.d.ts +35 -34
- package/lib/_collection-api.d.ts.map +1 -0
- package/lib/_constants/widget-content.constants.d.ts +8 -7
- package/lib/_constants/widget-content.constants.d.ts.map +1 -0
- package/lib/_directives/tooltip.directive.d.ts +18 -17
- package/lib/_directives/tooltip.directive.d.ts.map +1 -0
- package/lib/_models/common.model.d.ts +4 -3
- package/lib/_models/common.model.d.ts.map +1 -0
- package/lib/_models/error.model.d.ts +6 -5
- package/lib/_models/error.model.d.ts.map +1 -0
- package/lib/_pipes/highlight.pipe.d.ts +11 -10
- package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
- package/lib/_services/rating.service.d.ts +19 -18
- package/lib/_services/rating.service.d.ts.map +1 -0
- package/lib/_services/samuhik-charcha.service.d.ts +14 -13
- package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
- package/lib/_services/viewer-route-util.d.ts +9 -8
- package/lib/_services/viewer-route-util.d.ts.map +1 -0
- package/lib/_services/widget-content.model.d.ts +516 -515
- package/lib/_services/widget-content.model.d.ts.map +1 -0
- package/lib/_services/widget-content.service.d.ts +102 -101
- package/lib/_services/widget-content.service.d.ts.map +1 -0
- package/lib/_shared/translate-loader.factory.d.ts +8 -7
- package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
- package/lib/app-toc-lib.module.d.ts +89 -88
- package/lib/app-toc-lib.module.d.ts.map +1 -0
- package/lib/collection.config.d.ts +160 -159
- package/lib/collection.config.d.ts.map +1 -0
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +18 -17
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +1 -0
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +226 -225
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +1 -0
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +79 -78
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -0
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +23 -22
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +1 -0
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +32 -31
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +1 -0
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +48 -47
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +1 -0
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +15 -14
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +1 -0
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +22 -21
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +1 -0
- package/lib/components/app-toc-home/app-toc-home.component.d.ts +315 -314
- package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +1 -0
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +415 -408
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -0
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +48 -47
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +1 -0
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +23 -22
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +1 -0
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +15 -14
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +1 -0
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +150 -149
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +1 -0
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +43 -42
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +1 -0
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +28 -27
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +1 -0
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +16 -15
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +1 -0
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +196 -195
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -0
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +45 -44
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +1 -0
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +55 -54
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +1 -0
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +19 -18
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +1 -0
- package/lib/components/public-survey-form/public-survey-form.component.d.ts +44 -43
- package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +1 -0
- package/lib/components/survey-form-question/survey-form-question.component.d.ts +21 -20
- package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +1 -0
- package/lib/components/survey-form-section/survey-form-section.component.d.ts +14 -13
- package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +1 -0
- package/lib/models/app-toc-analytics.model.d.ts +153 -152
- package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
- package/lib/models/app-toc.model.d.ts +85 -84
- package/lib/models/app-toc.model.d.ts.map +1 -0
- package/lib/models/auto-complete.model.d.ts +28 -27
- package/lib/models/auto-complete.model.d.ts.map +1 -0
- package/lib/models/card-content.model.d.ts +20 -19
- package/lib/models/card-content.model.d.ts.map +1 -0
- package/lib/models/content-strip-with-tabs.model.d.ts +45 -44
- package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
- package/lib/models/discussion-forum.model.d.ts +41 -40
- package/lib/models/discussion-forum.model.d.ts.map +1 -0
- package/lib/models/goal.model.d.ts +23 -22
- package/lib/models/goal.model.d.ts.map +1 -0
- package/lib/models/meta-tag.model.d.ts +7 -6
- package/lib/models/meta-tag.model.d.ts.map +1 -0
- package/lib/models/playlist.model.d.ts +24 -23
- package/lib/models/playlist.model.d.ts.map +1 -0
- package/lib/models/profile-revamp.model.d.ts +15 -14
- package/lib/models/profile-revamp.model.d.ts.map +1 -0
- package/lib/models/rating.model.d.ts +18 -17
- package/lib/models/rating.model.d.ts.map +1 -0
- package/lib/models/user-profile.model.d.ts +38 -37
- package/lib/models/user-profile.model.d.ts.map +1 -0
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +17 -16
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-resolver.service.d.ts +17 -16
- package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/config-resolver.service.d.ts +12 -11
- package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/profile-resolver.service.d.ts +12 -11
- package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/restricted-features-resolver.service.d.ts +12 -11
- package/lib/resolvers/restricted-features-resolver.service.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts +20 -19
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +9 -8
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts +9 -8
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +1 -0
- package/lib/services/access-control.service.d.ts +30 -29
- package/lib/services/access-control.service.d.ts.map +1 -0
- package/lib/services/action.service.d.ts +10 -9
- package/lib/services/action.service.d.ts.map +1 -0
- package/lib/services/app-toc-v2.service.d.ts +17 -16
- package/lib/services/app-toc-v2.service.d.ts.map +1 -0
- package/lib/services/app-toc.service.d.ts +241 -235
- package/lib/services/app-toc.service.d.ts.map +1 -0
- package/lib/services/certificate.service.d.ts +43 -42
- package/lib/services/certificate.service.d.ts.map +1 -0
- package/lib/services/discuss-utils.service.d.ts +34 -33
- package/lib/services/discuss-utils.service.d.ts.map +1 -0
- package/lib/services/editor.service.d.ts +18 -17
- package/lib/services/editor.service.d.ts.map +1 -0
- package/lib/services/load-check.service.d.ts +9 -8
- package/lib/services/load-check.service.d.ts.map +1 -0
- package/lib/services/loader.service.d.ts +17 -16
- package/lib/services/loader.service.d.ts.map +1 -0
- package/lib/services/mobile-apps.service.d.ts +39 -38
- package/lib/services/mobile-apps.service.d.ts.map +1 -0
- package/lib/services/netcore.service.d.ts +34 -33
- package/lib/services/netcore.service.d.ts.map +1 -0
- package/lib/services/nps-grid.service.d.ts +16 -15
- package/lib/services/nps-grid.service.d.ts.map +1 -0
- package/lib/services/otp.service.d.ts +21 -20
- package/lib/services/otp.service.d.ts.map +1 -0
- package/lib/services/profile-v2.service.d.ts +21 -20
- package/lib/services/profile-v2.service.d.ts.map +1 -0
- package/lib/services/reset-ratings.service.d.ts +9 -8
- package/lib/services/reset-ratings.service.d.ts.map +1 -0
- package/lib/services/resource-download-helper.service.d.ts +30 -29
- package/lib/services/resource-download-helper.service.d.ts.map +1 -0
- package/lib/services/timer.service.d.ts +10 -9
- package/lib/services/timer.service.d.ts.map +1 -0
- package/lib/services/title-tag.service.d.ts +22 -21
- package/lib/services/title-tag.service.d.ts.map +1 -0
- package/lib/services/user-profile.service.d.ts +25 -24
- package/lib/services/user-profile.service.d.ts.map +1 -0
- package/lib/services/viewer-data.service.d.ts +59 -58
- package/lib/services/viewer-data.service.d.ts.map +1 -0
- package/lib/services/viewer-util.service.d.ts +77 -76
- package/lib/services/viewer-util.service.d.ts.map +1 -0
- package/lib/share-toc/share-toc/share-toc.component.d.ts +57 -56
- package/lib/share-toc/share-toc/share-toc.component.d.ts.map +1 -0
- package/lib/share-toc/share-toc.module.d.ts +33 -32
- package/lib/share-toc/share-toc.module.d.ts.map +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +59 -56
- package/public-api.d.ts.map +1 -0
- package/sunbird-cb-toc.d.ts.map +1 -0
|
@@ -1,187 +1,187 @@
|
|
|
1
|
-
import { Component, Inject, Input } from '@angular/core';
|
|
2
|
-
import { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';
|
|
3
|
-
import { WsEvents } from '@sunbird-cb/utils-v2';
|
|
4
|
-
import { switchMap, takeUntil } from 'rxjs/operators';
|
|
5
|
-
import { Subject } from 'rxjs';
|
|
6
|
-
import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/material/legacy-dialog";
|
|
9
|
-
import * as i2 from "@sunbird-cb/utils-v2";
|
|
10
|
-
import * as i3 from "../../../_services/rating.service";
|
|
11
|
-
import * as i4 from "@angular/material/legacy-snack-bar";
|
|
12
|
-
import * as i5 from "@angular/router";
|
|
13
|
-
import * as i6 from "@angular/common";
|
|
14
|
-
import * as i7 from "@angular/forms";
|
|
15
|
-
import * as i8 from "@angular/material/legacy-button";
|
|
16
|
-
import * as i9 from "@angular/material/icon";
|
|
17
|
-
import * as i10 from "@angular/material/legacy-form-field";
|
|
18
|
-
import * as i11 from "@angular/cdk/text-field";
|
|
19
|
-
import * as i12 from "@angular/material/legacy-input";
|
|
20
|
-
import * as i13 from "@angular/material/legacy-checkbox";
|
|
21
|
-
import * as i14 from "@ngx-translate/core";
|
|
22
|
-
export class ContentRatingV2DialogComponent {
|
|
23
|
-
constructor(dialogRef, data, events, ratingSvc, loggerSvc, snackBar, router) {
|
|
24
|
-
this.dialogRef = dialogRef;
|
|
25
|
-
this.data = data;
|
|
26
|
-
this.events = events;
|
|
27
|
-
this.ratingSvc = ratingSvc;
|
|
28
|
-
this.loggerSvc = loggerSvc;
|
|
29
|
-
this.snackBar = snackBar;
|
|
30
|
-
this.router = router;
|
|
31
|
-
this.isEditMode = false;
|
|
32
|
-
this.collectionId = '';
|
|
33
|
-
this.content = null;
|
|
34
|
-
this.userRating = 0;
|
|
35
|
-
this.showSuccessScreen = false;
|
|
36
|
-
this.formDisabled = true;
|
|
37
|
-
this.isEdited = false;
|
|
38
|
-
this.unsubscribe = new Subject();
|
|
39
|
-
this.feedbackForm = new UntypedFormGroup({
|
|
40
|
-
review: new UntypedFormControl(null, [Validators.minLength(1), Validators.maxLength(2000)]),
|
|
41
|
-
rating: new UntypedFormControl(0, []),
|
|
42
|
-
recommend: new UntypedFormControl(false),
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
ngOnInit() {
|
|
46
|
-
if (this.ccuserRating || this.navigatetoTOC || (this.data && this.data.courseName)) {
|
|
47
|
-
const obj = {
|
|
48
|
-
identifier: this.data.identifier,
|
|
49
|
-
primaryCategory: this.data.primaryCategory,
|
|
50
|
-
};
|
|
51
|
-
const dataobj = {
|
|
52
|
-
content: obj,
|
|
53
|
-
userId: this.data.userId,
|
|
54
|
-
userRating: this.ccuserRating,
|
|
55
|
-
};
|
|
56
|
-
this.data = dataobj;
|
|
57
|
-
}
|
|
58
|
-
if (this.data.userRating) {
|
|
59
|
-
this.feedbackForm.patchValue({
|
|
60
|
-
review: this.data.userRating.review,
|
|
61
|
-
rating: this.data.userRating.rating,
|
|
62
|
-
recommend: this.data.userRating.recommended === 'yes' ? true : false,
|
|
63
|
-
});
|
|
64
|
-
this.feedbackForm.updateValueAndValidity();
|
|
65
|
-
this.userRating = this.data.userRating.rating;
|
|
66
|
-
if (this.userRating) {
|
|
67
|
-
this.formDisabled = false;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if (this.data.content) {
|
|
71
|
-
this.content = this.data.content;
|
|
72
|
-
}
|
|
73
|
-
this.feedbackForm.valueChanges
|
|
74
|
-
.pipe(switchMap(async (formValue) => {
|
|
75
|
-
// tslint:disable-next-line: no-console
|
|
76
|
-
// console.log('formValue.review :: ', formValue.review)
|
|
77
|
-
if (this.data.userRating) {
|
|
78
|
-
if (formValue.review !== this.data.userRating.review
|
|
79
|
-
|| formValue.rating !== this.data.userRating.rating
|
|
80
|
-
|| formValue.recommend !== this.data.userRating.recommend) {
|
|
81
|
-
this.isEdited = true;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
this.isEdited = false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}), takeUntil(this.unsubscribe)).subscribe();
|
|
88
|
-
}
|
|
89
|
-
submitRating(feedbackForm) {
|
|
90
|
-
if (!this.formDisabled) {
|
|
91
|
-
const req = {
|
|
92
|
-
activityId: this.data.content.identifier || '',
|
|
93
|
-
userId: this.data.userId || '',
|
|
94
|
-
activityType: this.data.content.primaryCategory || '',
|
|
95
|
-
rating: this.userRating || 0,
|
|
96
|
-
...(feedbackForm.value.review && { review: feedbackForm.value.review }),
|
|
97
|
-
recommended: feedbackForm.value.recommend ? 'yes' : 'no',
|
|
98
|
-
};
|
|
99
|
-
this.ratingSvc.addOrUpdateRating(req).subscribe((_res) => {
|
|
100
|
-
this.raiseFeedbackTelemetry(feedbackForm);
|
|
101
|
-
if (this.isEditMode) {
|
|
102
|
-
this.dialogRef.close(true);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
this.showSuccessScreen = true;
|
|
106
|
-
}
|
|
107
|
-
}, (err) => {
|
|
108
|
-
this.loggerSvc.error('ADD OR UPDATE USER RATING ERROR >', err);
|
|
109
|
-
if (err.error && err.error.params && err.error.params.errmsg) {
|
|
110
|
-
this.openSnackbar(err.error.params.errmsg);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
this.openSnackbar('Something went wrong, please try again later!');
|
|
114
|
-
}
|
|
115
|
-
// this.dialogRef.close(false)
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
raiseFeedbackTelemetry(feedbackForm) {
|
|
120
|
-
this.events.raiseFeedbackTelemetry({
|
|
121
|
-
type: this.data.content.primaryCategory,
|
|
122
|
-
subType: 'rating',
|
|
123
|
-
id: this.data.content.identifier || '',
|
|
124
|
-
}, {
|
|
125
|
-
id: this.data.content.identifier || '',
|
|
126
|
-
rating: this.userRating,
|
|
127
|
-
version: `${this.data.content.version}${''}`,
|
|
128
|
-
// tslint:disable-next-line: no-non-null-assertion
|
|
129
|
-
commenttxt: feedbackForm.value.review || '',
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
addRating(index) {
|
|
133
|
-
this.userRating = index + 1;
|
|
134
|
-
if (this.userRating) {
|
|
135
|
-
this.formDisabled = false;
|
|
136
|
-
}
|
|
137
|
-
this.events.raiseInteractTelemetry({
|
|
138
|
-
type: 'rating',
|
|
139
|
-
subType: 'content',
|
|
140
|
-
id: this.data.content.identifier || '',
|
|
141
|
-
}, {
|
|
142
|
-
id: this.data.content.identifier || '',
|
|
143
|
-
rating: this.userRating,
|
|
144
|
-
}, {
|
|
145
|
-
pageIdExt: 'rating-popup',
|
|
146
|
-
module: WsEvents.EnumTelemetrymodules.FEEDBACK,
|
|
147
|
-
});
|
|
148
|
-
// tslint:disable-next-line: no-non-null-assertion
|
|
149
|
-
this.feedbackForm.get('rating').setValue(this.userRating);
|
|
150
|
-
}
|
|
151
|
-
closeDialog(val) {
|
|
152
|
-
if (this.navigatetoTOC) {
|
|
153
|
-
this.dialogRef.close(val);
|
|
154
|
-
// In case of multilingual course, redirection should happen to base collectionID
|
|
155
|
-
const id = this.collectionId || this.data.content.identifier;
|
|
156
|
-
this.router.navigateByUrl(`app/toc/${id}/overview`);
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
this.dialogRef.close(val);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
openSnackbar(primaryMsg, duration = 5000) {
|
|
163
|
-
this.snackBar.open(primaryMsg, 'X', {
|
|
164
|
-
duration,
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContentRatingV2DialogComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.EventService }, { token: i3.RatingService }, { token: i2.LoggerService }, { token: i4.MatLegacySnackBar }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
168
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ContentRatingV2DialogComponent, selector: "ws-widget-content-rating-v2-dialog", inputs: { ccuserRating: "ccuserRating", navigatetoTOC: "navigatetoTOC", rateFromCompletionDialog: "rateFromCompletionDialog", isEditMode: "isEditMode", collectionId: "collectionId" }, ngImport: i0, template: "<ng-container *ngIf=\"!showSuccessScreen\">\r\n <section class=\"flex align-center justify-between mb-5\">\r\n <div class=\"flex flex-col gap-1\">\r\n <h2 class=\"mat-headline margin-remove-bottom ws-mat-black-text\">{{ 'ratingdialog.rateReview' | translate }}</h2>\r\n <div class=\"mat-body-2 ws-mat-black60-text\">{{ 'ratingdialog.yourReviewFeedbackValuable' | translate }}</div>\r\n </div>\r\n <button mat-icon-button aria-label=\"close dialog\" mat-dialog-close>\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </section>\r\n\r\n <form [formGroup]=\"feedbackForm\" >\r\n <section class=\"mb-5\">\r\n <h3 class=\"mat-h3 margin-bottom-xs required\" >{{ 'ratingdialog.rateThis' | translate}} {{ content?.primaryCategory | lowercase }}</h3>\r\n <div class=\"\" (click)=\"$event.stopPropagation();\">\r\n <ng-container *ngFor=\"let start of [1, 2, 3, 4, 5]; let i = index\">\r\n <button i18n-aria-label aria-label=\"Rating\" aria-labelledby=\"rate-heading\"\r\n name=\"user-content-rating-star-{{i+1}}\" [disabled]=\"isRequesting || isDisabled\"\r\n class=\"rating-button mr-2\" mat-icon-button (click)=\"addRating(i); $event.stopPropagation();\"\r\n color=\"primary\">\r\n <mat-icon class=\"rating-icon ws-mat-black16-text\" [ngClass]=\"{'ws-mat-orange-text':(userRating || -1) > i}\">\r\n star\r\n </mat-icon>\r\n </button>\r\n </ng-container>\r\n </div>\r\n </section>\r\n\r\n <section class=\"w-full mb-5\" *ngIf=\"!formDisabled\">\r\n <h3 class=\"mat-h3 margin-bottom-xs\" >{{ 'ratingdialog.giveReview' | translate }}</h3>\r\n <div class=\"mat-body-2\">\r\n <mat-form-field appearance=\"outline\" class=\"textarea-container\">\r\n <textarea id=\"review\" matInput [cdkTextareaAutosize] [cdkAutosizeMaxRows]=\"10\"\r\n [cdkAutosizeMinRows]=\"3\" maxlength=\"200\" formControlName=\"review\"\r\n placeholder=\"{{ 'ratingdialog.addReview' | translate}} {{content?.primaryCategory | lowercase}} (optional)\" i18n-placeholder #review i18n-aria-label aria-label=\"Review textarea input\" class=\"mat-body-2\"></textarea>\r\n <mat-hint align=\"end\">{{ review.value.length }} / 200 {{ 'ratingdialog.characters' | translate}}</mat-hint>\r\n <mat-error [hidden]=\"false\" i18n=\"review error | Explains review is required\"\r\n *ngIf=\"feedbackForm?.controls['review'].errors?.required\" i18n-aria-label\r\n aria-label=\"review error | Explains review is required\">\r\n {{ 'ratingdialog.addReview' | translate }} {{ content?.primaryCategory | lowercase }} {{ 'ratingdialog.optional' | translate }}\r\n </mat-error>\r\n <mat-error *ngIf=\"feedbackForm?.controls['review'].errors?.maxlength\" i18n-aria-label\r\n aria-label=\"review error | You have exceeded 200 characters\">\r\n {{ 'ratingdialog.exceededCharacters' | translate }}\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </section>\r\n\r\n <section class=\"w-full mb-5\" *ngIf=\"!formDisabled\">\r\n <mat-checkbox [color]=\"primary\" class=\"profane-radio-button mat-body-2\" formControlName=\"recommend\" >{{'ratingdialog.recommendCourse' | translate}}</mat-checkbox>\r\n </section>\r\n\r\n <mat-dialog-actions class=\"custom margin-remove-bottom no-padding\" align=\"end\">\r\n <ng-container *ngIf=\"!isEditMode\">\r\n <button mat-stroked-button type=\"submit\" class=\"text-white ws-mat-primary-background flex-auto-display\"\r\n [disabled]=\"feedbackForm?.invalid || formDisabled\" (click)=\"submitRating(feedbackForm)\">\r\n <span class=\"text-white\" >{{ 'ratingdialog.submit' | translate }}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"isEditMode\">\r\n <button mat-stroked-button type=\"submit\" class=\"text-white ws-mat-primary-background flex-auto-display\"\r\n [disabled]=\"feedbackForm?.invalid || !isEdited || formDisabled\" (click)=\"submitRating(feedbackForm)\">\r\n <span class=\"text-white\" >{{ 'ratingdialog.update' | translate }}</span>\r\n </button>\r\n </ng-container>\r\n </mat-dialog-actions>\r\n </form>\r\n</ng-container>\r\n\r\n<div *ngIf=\"showSuccessScreen\" class=\"flex-col align-center justify-center\">\r\n <div class=\"text-right\">\r\n <button mat-icon-button aria-label=\"close dialog\" (click)=\"closeDialog(true)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"flex flex-wrap gap-8 items-center justify-center success-msg-container\">\r\n <div>\r\n <img src=\"fusion-assets/images/rating.svg\" class=\"success-image\" alt=\"rating success image\" />\r\n </div>\r\n <div class=\"flex-col text-center sm:text-left\">\r\n <div class=\"flex align-center justify-between\">\r\n <h2 class=\"mat-headline margin-bottom-xxs ws-mat-black-text\">{{ 'ratingdialog.thankYouForFeedback' | translate }}</h2>\r\n </div>\r\n <div class=\"section-content mat-body-1\"> {{ 'ratingdialog.youCanUpdateYourFeedback' | translate }} </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".rating-icon{transform:scale(1.2)}.rating-button{margin-right:10px;line-height:20px;height:24px;width:24px}::ng-deep .textarea-container{width:100%}::ng-deep .textarea-container .mat-form-field-wrapper{margin:0}::ng-deep .textarea-container .mat-form-field-infix{padding:8px 0;border-top:0px}::ng-deep .textarea-container .mat-form-field-infix textarea{min-height:52px!important;padding:8px 0}.orange{color:#f69953;font-size:24px}.no-padding{padding:0!important}.custom.mat-dialog-actions{min-height:auto}.success-msg-container{min-height:331px}@media only screen and (max-width: 599px){.success-msg-container{min-height:auto}}@media only screen and (max-width: 599px){.success-image{width:120px}}.large-icon{height:inherit;width:inherit;font-size:13rem}button:disabled{pointer-events:none;opacity:.5}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatLegacyDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i10.MatLegacyError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i10.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLegacyHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i12.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "component", type: i13.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: i6.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] }); }
|
|
169
|
-
}
|
|
170
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContentRatingV2DialogComponent, decorators: [{
|
|
171
|
-
type: Component,
|
|
172
|
-
args: [{ selector: 'ws-widget-content-rating-v2-dialog', template: "<ng-container *ngIf=\"!showSuccessScreen\">\
|
|
173
|
-
}], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
|
|
174
|
-
type: Inject,
|
|
175
|
-
args: [MAT_DIALOG_DATA]
|
|
176
|
-
}] }, { type: i2.EventService }, { type: i3.RatingService }, { type: i2.LoggerService }, { type: i4.MatLegacySnackBar }, { type: i5.Router }]; }, propDecorators: { ccuserRating: [{
|
|
177
|
-
type: Input
|
|
178
|
-
}], navigatetoTOC: [{
|
|
179
|
-
type: Input
|
|
180
|
-
}], rateFromCompletionDialog: [{
|
|
181
|
-
type: Input
|
|
182
|
-
}], isEditMode: [{
|
|
183
|
-
type: Input
|
|
184
|
-
}], collectionId: [{
|
|
185
|
-
type: Input
|
|
186
|
-
}] } });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yYXRpbmctdjItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NvbnRlbnQtcmF0aW5nLXYyLWRpYWxvZy9jb250ZW50LXJhdGluZy12Mi1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC1yYXRpbmctdjItZGlhbG9nL2NvbnRlbnQtcmF0aW5nLXYyLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ2pGLE9BQU8sRUFBZ0IsUUFBUSxFQUE0QixNQUFNLHNCQUFzQixDQUFBO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUc5QixPQUFPLEVBQXNDLHNCQUFzQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBUy9ILE1BQU0sT0FBTyw4QkFBOEI7SUFjekMsWUFDUyxTQUF1RCxFQUM5QixJQUFTLEVBQ2pDLE1BQW9CLEVBQ3BCLFNBQXdCLEVBQ3hCLFNBQXdCLEVBQ3hCLFFBQXFCLEVBQ3JCLE1BQWM7UUFOZixjQUFTLEdBQVQsU0FBUyxDQUE4QztRQUM5QixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLFdB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T0FBTyxDQUFDLFVBQVUsQ0FBQTtZQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUE7U0FDcEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQzFCO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxVQUFrQixFQUFFLFdBQW1CLElBQUk7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNsQyxRQUFRO1NBQ1QsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0F4S1UsOEJBQThCLG9EQWdCL0IsZUFBZTttR0FoQmQsOEJBQThCLGtRQ2pCM0Msa3NMQXVGTTs7NEZEdEVPLDhCQUE4QjtrQkFOMUMsU0FBUzsrQkFDRSxvQ0FBb0M7OzBCQXFCM0MsTUFBTTsyQkFBQyxlQUFlO29MQWZoQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXHJcbmltcG9ydCB7IEV2ZW50U2VydmljZSwgV3NFdmVudHMsIExvZ2dlclNlcnZpY2UsIE5zQ29udGVudCB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xyXG5pbXBvcnQgeyBSYXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL3JhdGluZy5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgTnNBcHBSYXRpbmcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmF0aW5nLm1vZGVsJ1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXHJcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWYsIE1BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcclxuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtY29udGVudC1yYXRpbmctdjItZGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29udGVudC1yYXRpbmctdjItZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb250ZW50LXJhdGluZy12Mi1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDb250ZW50UmF0aW5nVjJEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGNjdXNlclJhdGluZzogYW55XHJcbiAgQElucHV0KCkgbmF2aWdhdGV0b1RPQzogYW55XHJcbiAgQElucHV0KCkgcmF0ZUZyb21Db21wbGV0aW9uRGlhbG9nOiBhbnlcclxuICBASW5wdXQoKSAgaXNFZGl0TW9kZSA9IGZhbHNlXHJcbiAgQElucHV0KCkgIGNvbGxlY3Rpb25JZCA9ICcnXHJcbiAgY29udGVudDogTnNDb250ZW50LklDb250ZW50IHwgbnVsbCA9IG51bGxcclxuICB1c2VyUmF0aW5nID0gMFxyXG4gIGZlZWRiYWNrRm9ybTogVW50eXBlZEZvcm1Hcm91cFxyXG4gIHNob3dTdWNjZXNzU2NyZWVuID0gZmFsc2VcclxuICBmb3JtRGlzYWJsZWQgPSB0cnVlXHJcbiAgaXNFZGl0ZWQgPSBmYWxzZVxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPENvbnRlbnRSYXRpbmdWMkRpYWxvZ0NvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgIHByaXZhdGUgZXZlbnRzOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJhdGluZ1N2YzogUmF0aW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9nZ2VyU3ZjOiBMb2dnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICkge1xyXG4gICAgdGhpcy5mZWVkYmFja0Zvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XHJcbiAgICAgIHJldmlldzogbmV3IFVudHlwZWRGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMDApXSksXHJcbiAgICAgIHJhdGluZzogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgwLCBbXSksXHJcbiAgICAgIHJlY29tbWVuZDogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmYWxzZSksXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5jY3VzZXJSYXRpbmcgfHwgdGhpcy5uYXZpZ2F0ZXRvVE9DIHx8ICh0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmNvdXJzZU5hbWUpKSB7XHJcbiAgICAgIGNvbnN0IG9iaiA9IHtcclxuICAgICAgICBpZGVudGlmaWVyOiB0aGlzLmRhdGEuaWRlbnRpZmllcixcclxuICAgICAgICBwcmltYXJ5Q2F0ZWdvcnk6ICB0aGlzLmRhdGEucHJpbWFyeUNhdGVnb3J5LFxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGRhdGFvYmogPSB7XHJcbiAgICAgICAgY29udGVudDogb2JqLFxyXG4gICAgICAgIHVzZXJJZDogdGhpcy5kYXRhLnVzZXJJZCxcclxuICAgICAgICB1c2VyUmF0aW5nOiB0aGlzLmNjdXNlclJhdGluZyxcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRhdGEgPSBkYXRhb2JqXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS51c2VyUmF0aW5nKSB7XHJcbiAgICAgIHRoaXMuZmVlZGJhY2tGb3JtLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgIHJldmlldzogdGhpcy5kYXRhLnVzZXJSYXRpbmcucmV2aWV3LFxyXG4gICAgICAgIHJhdGluZzogdGhpcy5kYXRhLnVzZXJSYXRpbmcucmF0aW5nLFxyXG4gICAgICAgIHJlY29tbWVuZDogdGhpcy5kYXRhLnVzZXJSYXRpbmcucmVjb21tZW5kZWQgPT09ICd5ZXMnID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLmZlZWRiYWNrRm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcclxuICAgICAgdGhpcy51c2VyUmF0aW5nID0gdGhpcy5kYXRhLnVzZXJSYXRpbmcucmF0aW5nXHJcbiAgICAgIGlmICh0aGlzLnVzZXJSYXRpbmcpIHtcclxuICAgICAgICB0aGlzLmZvcm1EaXNhYmxlZCA9IGZhbHNlXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLmNvbnRlbnQpIHtcclxuICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhLmNvbnRlbnRcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZlZWRiYWNrRm9ybS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jIGZvcm1WYWx1ZSA9PiB7XHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdmb3JtVmFsdWUucmV2aWV3IDo6ICcsIGZvcm1WYWx1ZS5yZXZpZXcpXHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRhLnVzZXJSYXRpbmcpIHtcclxuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZS5yZXZpZXcgIT09IHRoaXMuZGF0YS51c2VyUmF0aW5nLnJldmlld1xyXG4gICAgICAgICAgICAgIHx8IGZvcm1WYWx1ZS5yYXRpbmcgIT09IHRoaXMuZGF0YS51c2VyUmF0aW5nLnJhdGluZ1xyXG4gICAgICAgICAgICAgIHx8IGZvcm1WYWx1ZS5yZWNvbW1lbmQgIT09IHRoaXMuZGF0YS51c2VyUmF0aW5nLnJlY29tbWVuZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaXNFZGl0ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc0VkaXRlZCA9IGZhbHNlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSlcclxuICAgICAgKS5zdWJzY3JpYmUoKVxyXG4gIH1cclxuXHJcbiAgc3VibWl0UmF0aW5nKGZlZWRiYWNrRm9ybTogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybURpc2FibGVkKSB7XHJcbiAgICAgIGNvbnN0IHJlcTogTnNBcHBSYXRpbmcuSVJhdGluZyA9IHtcclxuICAgICAgICBhY3Rpdml0eUlkOiB0aGlzLmRhdGEuY29udGVudC5pZGVudGlmaWVyIHx8ICcnLFxyXG4gICAgICAgIHVzZXJJZDogdGhpcy5kYXRhLnVzZXJJZCB8fCAnJyxcclxuICAgICAgICBhY3Rpdml0eVR5cGU6IHRoaXMuZGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSB8fCAnJyxcclxuICAgICAgICByYXRpbmc6IHRoaXMudXNlclJhdGluZyB8fCAwLFxyXG4gICAgICAgIC4uLihmZWVkYmFja0Zvcm0udmFsdWUucmV2aWV3ICYmIHsgcmV2aWV3OiBmZWVkYmFja0Zvcm0udmFsdWUucmV2aWV3IH0pLFxyXG4gICAgICAgIHJlY29tbWVuZGVkOiBmZWVkYmFja0Zvcm0udmFsdWUucmVjb21tZW5kID8gJ3llcycgOiAnbm8nLFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJhdGluZ1N2Yy5hZGRPclVwZGF0ZVJhdGluZyhyZXEpLnN1YnNjcmliZShcclxuICAgICAgICAoX3JlczogYW55KSA9PiAge1xyXG4gICAgICAgICAgdGhpcy5yYWlzZUZlZWRiYWNrVGVsZW1ldHJ5KGZlZWRiYWNrRm9ybSlcclxuICAgICAgICAgIGlmICh0aGlzLmlzRWRpdE1vZGUpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSlcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1N1Y2Nlc3NTY3JlZW4gPSB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2VyU3ZjLmVycm9yKCdBREQgT1IgVVBEQVRFIFVTRVIgUkFUSU5HIEVSUk9SID4nLCBlcnIpXHJcbiAgICAgICAgICBpZiAoZXJyLmVycm9yICYmIGVyci5lcnJvci5wYXJhbXMgJiYgZXJyLmVycm9yLnBhcmFtcy5lcnJtc2cpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuU25hY2tiYXIoZXJyLmVycm9yLnBhcmFtcy5lcnJtc2cpXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5TbmFja2JhcignU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIhJylcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmFpc2VGZWVkYmFja1RlbGVtZXRyeShmZWVkYmFja0Zvcm06IGFueSkge1xyXG4gICAgdGhpcy5ldmVudHMucmFpc2VGZWVkYmFja1RlbGVtZXRyeShcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IHRoaXMuZGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSxcclxuICAgICAgICBzdWJUeXBlOiAncmF0aW5nJyxcclxuICAgICAgICBpZDogdGhpcy5kYXRhLmNvbnRlbnQuaWRlbnRpZmllciB8fCAnJyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiB0aGlzLmRhdGEuY29udGVudC5pZGVudGlmaWVyIHx8ICcnLFxyXG4gICAgICAgIHJhdGluZzogdGhpcy51c2VyUmF0aW5nLFxyXG4gICAgICAgIHZlcnNpb246IGAke3RoaXMuZGF0YS5jb250ZW50LnZlcnNpb259JHsnJ31gLFxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgY29tbWVudHR4dDogZmVlZGJhY2tGb3JtLnZhbHVlLnJldmlldyB8fCAnJyxcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgYWRkUmF0aW5nKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMudXNlclJhdGluZyA9IGluZGV4ICsgMVxyXG4gICAgaWYgKHRoaXMudXNlclJhdGluZykge1xyXG4gICAgICB0aGlzLmZvcm1EaXNhYmxlZCA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICB0aGlzLmV2ZW50cy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ3JhdGluZycsXHJcbiAgICAgICAgc3ViVHlwZTogJ2NvbnRlbnQnLFxyXG4gICAgICAgIGlkOiB0aGlzLmRhdGEuY29udGVudC5pZGVudGlmaWVyIHx8ICcnLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IHRoaXMuZGF0YS5jb250ZW50LmlkZW50aWZpZXIgfHwgJycsXHJcbiAgICAgICAgcmF0aW5nOiB0aGlzLnVzZXJSYXRpbmcsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgcGFnZUlkRXh0OiAncmF0aW5nLXBvcHVwJyxcclxuICAgICAgbW9kdWxlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5bW9kdWxlcy5GRUVEQkFDSyxcclxuICAgIH0pXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgdGhpcy5mZWVkYmFja0Zvcm0uZ2V0KCdyYXRpbmcnKSEuc2V0VmFsdWUodGhpcy51c2VyUmF0aW5nKVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2codmFsOiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5uYXZpZ2F0ZXRvVE9DKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHZhbClcclxuICAgICAgLy8gSW4gY2FzZSBvZiBtdWx0aWxpbmd1YWwgY291cnNlLCByZWRpcmVjdGlvbiBzaG91bGQgaGFwcGVuIHRvIGJhc2UgY29sbGVjdGlvbklEXHJcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5jb2xsZWN0aW9uSWQgfHwgdGhpcy5kYXRhLmNvbnRlbnQuaWRlbnRpZmllclxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGBhcHAvdG9jLyR7aWR9L292ZXJ2aWV3YClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHZhbClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3BlblNuYWNrYmFyKHByaW1hcnlNc2c6IHN0cmluZywgZHVyYXRpb246IG51bWJlciA9IDUwMDApIHtcclxuICAgIHRoaXMuc25hY2tCYXIub3BlbihwcmltYXJ5TXNnLCAnWCcsIHtcclxuICAgICAgZHVyYXRpb24sXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93U3VjY2Vzc1NjcmVlblwiPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJmbGV4IGFsaWduLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xXCI+XHJcbiAgICAgICAgICAgIDxoMiBjbGFzcz1cIm1hdC1oZWFkbGluZSBtYXJnaW4tcmVtb3ZlLWJvdHRvbSB3cy1tYXQtYmxhY2stdGV4dFwiPnt7ICdyYXRpbmdkaWFsb2cucmF0ZVJldmlldycgfCB0cmFuc2xhdGUgfX08L2gyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LWJvZHktMiB3cy1tYXQtYmxhY2s2MC10ZXh0XCI+e3sgJ3JhdGluZ2RpYWxvZy55b3VyUmV2aWV3RmVlZGJhY2tWYWx1YWJsZScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiY2xvc2UgZGlhbG9nXCIgbWF0LWRpYWxvZy1jbG9zZT5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZlZWRiYWNrRm9ybVwiID5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwibWF0LWgzIG1hcmdpbi1ib3R0b20teHMgcmVxdWlyZWRcIiA+e3sgJ3JhdGluZ2RpYWxvZy5yYXRlVGhpcycgfCB0cmFuc2xhdGV9fSB7eyBjb250ZW50Py5wcmltYXJ5Q2F0ZWdvcnkgfCBsb3dlcmNhc2UgfX08L2gzPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN0YXJ0IG9mIFsxLCAyLCAzLCA0LCA1XTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gaTE4bi1hcmlhLWxhYmVsIGFyaWEtbGFiZWw9XCJSYXRpbmdcIiBhcmlhLWxhYmVsbGVkYnk9XCJyYXRlLWhlYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidXNlci1jb250ZW50LXJhdGluZy1zdGFyLXt7aSsxfX1cIiBbZGlzYWJsZWRdPVwiaXNSZXF1ZXN0aW5nIHx8IGlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJhdGluZy1idXR0b24gbXItMlwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiYWRkUmF0aW5nKGkpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInJhdGluZy1pY29uIHdzLW1hdC1ibGFjazE2LXRleHRcIiBbbmdDbGFzc109XCJ7J3dzLW1hdC1vcmFuZ2UtdGV4dCc6KHVzZXJSYXRpbmcgfHwgLTEpID4gaX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwidy1mdWxsIG1iLTVcIiAqbmdJZj1cIiFmb3JtRGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwibWF0LWgzIG1hcmdpbi1ib3R0b20teHNcIiA+e3sgJ3JhdGluZ2RpYWxvZy5naXZlUmV2aWV3JyB8IHRyYW5zbGF0ZSB9fTwvaDM+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtYm9keS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInRleHRhcmVhLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD1cInJldmlld1wiIG1hdElucHV0IFtjZGtUZXh0YXJlYUF1dG9zaXplXSBbY2RrQXV0b3NpemVNYXhSb3dzXT1cIjEwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0F1dG9zaXplTWluUm93c109XCIzXCIgbWF4bGVuZ3RoPVwiMjAwXCIgZm9ybUNvbnRyb2xOYW1lPVwicmV2aWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAncmF0aW5nZGlhbG9nLmFkZFJldmlldycgfCB0cmFuc2xhdGV9fSB7e2NvbnRlbnQ/LnByaW1hcnlDYXRlZ29yeSB8IGxvd2VyY2FzZX19IChvcHRpb25hbClcIiBpMThuLXBsYWNlaG9sZGVyICNyZXZpZXcgaTE4bi1hcmlhLWxhYmVsIGFyaWEtbGFiZWw9XCJSZXZpZXcgdGV4dGFyZWEgaW5wdXRcIiBjbGFzcz1cIm1hdC1ib2R5LTJcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCBhbGlnbj1cImVuZFwiPnt7IHJldmlldy52YWx1ZS5sZW5ndGggfX0gLyAyMDAge3sgJ3JhdGluZ2RpYWxvZy5jaGFyYWN0ZXJzJyB8IHRyYW5zbGF0ZX19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIFtoaWRkZW5dPVwiZmFsc2VcIiBpMThuPVwicmV2aWV3IGVycm9yIHwgRXhwbGFpbnMgcmV2aWV3IGlzIHJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmZWVkYmFja0Zvcm0/LmNvbnRyb2xzWydyZXZpZXcnXS5lcnJvcnM/LnJlcXVpcmVkXCIgaTE4bi1hcmlhLWxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZXZpZXcgZXJyb3IgfCBFeHBsYWlucyByZXZpZXcgaXMgcmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3JhdGluZ2RpYWxvZy5hZGRSZXZpZXcnIHwgdHJhbnNsYXRlIH19IHt7IGNvbnRlbnQ/LnByaW1hcnlDYXRlZ29yeSB8IGxvd2VyY2FzZSB9fSB7eyAncmF0aW5nZGlhbG9nLm9wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmZWVkYmFja0Zvcm0/LmNvbnRyb2xzWydyZXZpZXcnXS5lcnJvcnM/Lm1heGxlbmd0aFwiIGkxOG4tYXJpYS1sYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwicmV2aWV3IGVycm9yIHwgWW91IGhhdmUgZXhjZWVkZWQgMjAwIGNoYXJhY3RlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3JhdGluZ2RpYWxvZy5leGNlZWRlZENoYXJhY3RlcnMnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwidy1mdWxsIG1iLTVcIiAqbmdJZj1cIiFmb3JtRGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCBbY29sb3JdPVwicHJpbWFyeVwiIGNsYXNzPVwicHJvZmFuZS1yYWRpby1idXR0b24gbWF0LWJvZHktMlwiIGZvcm1Db250cm9sTmFtZT1cInJlY29tbWVuZFwiID57eydyYXRpbmdkaWFsb2cucmVjb21tZW5kQ291cnNlJyB8IHRyYW5zbGF0ZX19PC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgICAgICA8bWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwiY3VzdG9tIG1hcmdpbi1yZW1vdmUtYm90dG9tIG5vLXBhZGRpbmdcIiBhbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRWRpdE1vZGVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cInRleHQtd2hpdGUgd3MtbWF0LXByaW1hcnktYmFja2dyb3VuZCBmbGV4LWF1dG8tZGlzcGxheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZlZWRiYWNrRm9ybT8uaW52YWxpZCB8fCBmb3JtRGlzYWJsZWRcIiAoY2xpY2spPVwic3VibWl0UmF0aW5nKGZlZWRiYWNrRm9ybSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtd2hpdGVcIiA+e3sgJ3JhdGluZ2RpYWxvZy5zdWJtaXQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0TW9kZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwidGV4dC13aGl0ZSB3cy1tYXQtcHJpbWFyeS1iYWNrZ3JvdW5kIGZsZXgtYXV0by1kaXNwbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmVlZGJhY2tGb3JtPy5pbnZhbGlkIHx8ICAhaXNFZGl0ZWQgfHwgZm9ybURpc2FibGVkXCIgKGNsaWNrKT1cInN1Ym1pdFJhdGluZyhmZWVkYmFja0Zvcm0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXdoaXRlXCIgPnt7ICdyYXRpbmdkaWFsb2cudXBkYXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuICAgIDwvZm9ybT5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwic2hvd1N1Y2Nlc3NTY3JlZW5cIiBjbGFzcz1cImZsZXgtY29sIGFsaWduLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiY2xvc2UgZGlhbG9nXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKHRydWUpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3VjY2Vzcy1tc2ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJmdXNpb24tYXNzZXRzL2ltYWdlcy9yYXRpbmcuc3ZnXCIgY2xhc3M9XCJzdWNjZXNzLWltYWdlXCIgYWx0PVwicmF0aW5nIHN1Y2Nlc3MgaW1hZ2VcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbCB0ZXh0LWNlbnRlciBzbTp0ZXh0LWxlZnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24tY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwibWF0LWhlYWRsaW5lIG1hcmdpbi1ib3R0b20teHhzIHdzLW1hdC1ibGFjay10ZXh0XCI+e3sgJ3JhdGluZ2RpYWxvZy50aGFua1lvdUZvckZlZWRiYWNrJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1jb250ZW50IG1hdC1ib2R5LTFcIj4ge3sgJ3JhdGluZ2RpYWxvZy55b3VDYW5VcGRhdGVZb3VyRmVlZGJhY2snIHwgdHJhbnNsYXRlIH19IDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
1
|
+
import { Component, Inject, Input } from '@angular/core';
|
|
2
|
+
import { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';
|
|
3
|
+
import { WsEvents } from '@sunbird-cb/utils-v2';
|
|
4
|
+
import { switchMap, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/legacy-dialog";
|
|
9
|
+
import * as i2 from "@sunbird-cb/utils-v2";
|
|
10
|
+
import * as i3 from "../../../_services/rating.service";
|
|
11
|
+
import * as i4 from "@angular/material/legacy-snack-bar";
|
|
12
|
+
import * as i5 from "@angular/router";
|
|
13
|
+
import * as i6 from "@angular/common";
|
|
14
|
+
import * as i7 from "@angular/forms";
|
|
15
|
+
import * as i8 from "@angular/material/legacy-button";
|
|
16
|
+
import * as i9 from "@angular/material/icon";
|
|
17
|
+
import * as i10 from "@angular/material/legacy-form-field";
|
|
18
|
+
import * as i11 from "@angular/cdk/text-field";
|
|
19
|
+
import * as i12 from "@angular/material/legacy-input";
|
|
20
|
+
import * as i13 from "@angular/material/legacy-checkbox";
|
|
21
|
+
import * as i14 from "@ngx-translate/core";
|
|
22
|
+
export class ContentRatingV2DialogComponent {
|
|
23
|
+
constructor(dialogRef, data, events, ratingSvc, loggerSvc, snackBar, router) {
|
|
24
|
+
this.dialogRef = dialogRef;
|
|
25
|
+
this.data = data;
|
|
26
|
+
this.events = events;
|
|
27
|
+
this.ratingSvc = ratingSvc;
|
|
28
|
+
this.loggerSvc = loggerSvc;
|
|
29
|
+
this.snackBar = snackBar;
|
|
30
|
+
this.router = router;
|
|
31
|
+
this.isEditMode = false;
|
|
32
|
+
this.collectionId = '';
|
|
33
|
+
this.content = null;
|
|
34
|
+
this.userRating = 0;
|
|
35
|
+
this.showSuccessScreen = false;
|
|
36
|
+
this.formDisabled = true;
|
|
37
|
+
this.isEdited = false;
|
|
38
|
+
this.unsubscribe = new Subject();
|
|
39
|
+
this.feedbackForm = new UntypedFormGroup({
|
|
40
|
+
review: new UntypedFormControl(null, [Validators.minLength(1), Validators.maxLength(2000)]),
|
|
41
|
+
rating: new UntypedFormControl(0, []),
|
|
42
|
+
recommend: new UntypedFormControl(false),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
ngOnInit() {
|
|
46
|
+
if (this.ccuserRating || this.navigatetoTOC || (this.data && this.data.courseName)) {
|
|
47
|
+
const obj = {
|
|
48
|
+
identifier: this.data.identifier,
|
|
49
|
+
primaryCategory: this.data.primaryCategory,
|
|
50
|
+
};
|
|
51
|
+
const dataobj = {
|
|
52
|
+
content: obj,
|
|
53
|
+
userId: this.data.userId,
|
|
54
|
+
userRating: this.ccuserRating,
|
|
55
|
+
};
|
|
56
|
+
this.data = dataobj;
|
|
57
|
+
}
|
|
58
|
+
if (this.data.userRating) {
|
|
59
|
+
this.feedbackForm.patchValue({
|
|
60
|
+
review: this.data.userRating.review,
|
|
61
|
+
rating: this.data.userRating.rating,
|
|
62
|
+
recommend: this.data.userRating.recommended === 'yes' ? true : false,
|
|
63
|
+
});
|
|
64
|
+
this.feedbackForm.updateValueAndValidity();
|
|
65
|
+
this.userRating = this.data.userRating.rating;
|
|
66
|
+
if (this.userRating) {
|
|
67
|
+
this.formDisabled = false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (this.data.content) {
|
|
71
|
+
this.content = this.data.content;
|
|
72
|
+
}
|
|
73
|
+
this.feedbackForm.valueChanges
|
|
74
|
+
.pipe(switchMap(async (formValue) => {
|
|
75
|
+
// tslint:disable-next-line: no-console
|
|
76
|
+
// console.log('formValue.review :: ', formValue.review)
|
|
77
|
+
if (this.data.userRating) {
|
|
78
|
+
if (formValue.review !== this.data.userRating.review
|
|
79
|
+
|| formValue.rating !== this.data.userRating.rating
|
|
80
|
+
|| formValue.recommend !== this.data.userRating.recommend) {
|
|
81
|
+
this.isEdited = true;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.isEdited = false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}), takeUntil(this.unsubscribe)).subscribe();
|
|
88
|
+
}
|
|
89
|
+
submitRating(feedbackForm) {
|
|
90
|
+
if (!this.formDisabled) {
|
|
91
|
+
const req = {
|
|
92
|
+
activityId: this.data.content.identifier || '',
|
|
93
|
+
userId: this.data.userId || '',
|
|
94
|
+
activityType: this.data.content.primaryCategory || '',
|
|
95
|
+
rating: this.userRating || 0,
|
|
96
|
+
...(feedbackForm.value.review && { review: feedbackForm.value.review }),
|
|
97
|
+
recommended: feedbackForm.value.recommend ? 'yes' : 'no',
|
|
98
|
+
};
|
|
99
|
+
this.ratingSvc.addOrUpdateRating(req).subscribe((_res) => {
|
|
100
|
+
this.raiseFeedbackTelemetry(feedbackForm);
|
|
101
|
+
if (this.isEditMode) {
|
|
102
|
+
this.dialogRef.close(true);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.showSuccessScreen = true;
|
|
106
|
+
}
|
|
107
|
+
}, (err) => {
|
|
108
|
+
this.loggerSvc.error('ADD OR UPDATE USER RATING ERROR >', err);
|
|
109
|
+
if (err.error && err.error.params && err.error.params.errmsg) {
|
|
110
|
+
this.openSnackbar(err.error.params.errmsg);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
this.openSnackbar('Something went wrong, please try again later!');
|
|
114
|
+
}
|
|
115
|
+
// this.dialogRef.close(false)
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
raiseFeedbackTelemetry(feedbackForm) {
|
|
120
|
+
this.events.raiseFeedbackTelemetry({
|
|
121
|
+
type: this.data.content.primaryCategory,
|
|
122
|
+
subType: 'rating',
|
|
123
|
+
id: this.data.content.identifier || '',
|
|
124
|
+
}, {
|
|
125
|
+
id: this.data.content.identifier || '',
|
|
126
|
+
rating: this.userRating,
|
|
127
|
+
version: `${this.data.content.version}${''}`,
|
|
128
|
+
// tslint:disable-next-line: no-non-null-assertion
|
|
129
|
+
commenttxt: feedbackForm.value.review || '',
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
addRating(index) {
|
|
133
|
+
this.userRating = index + 1;
|
|
134
|
+
if (this.userRating) {
|
|
135
|
+
this.formDisabled = false;
|
|
136
|
+
}
|
|
137
|
+
this.events.raiseInteractTelemetry({
|
|
138
|
+
type: 'rating',
|
|
139
|
+
subType: 'content',
|
|
140
|
+
id: this.data.content.identifier || '',
|
|
141
|
+
}, {
|
|
142
|
+
id: this.data.content.identifier || '',
|
|
143
|
+
rating: this.userRating,
|
|
144
|
+
}, {
|
|
145
|
+
pageIdExt: 'rating-popup',
|
|
146
|
+
module: WsEvents.EnumTelemetrymodules.FEEDBACK,
|
|
147
|
+
});
|
|
148
|
+
// tslint:disable-next-line: no-non-null-assertion
|
|
149
|
+
this.feedbackForm.get('rating').setValue(this.userRating);
|
|
150
|
+
}
|
|
151
|
+
closeDialog(val) {
|
|
152
|
+
if (this.navigatetoTOC) {
|
|
153
|
+
this.dialogRef.close(val);
|
|
154
|
+
// In case of multilingual course, redirection should happen to base collectionID
|
|
155
|
+
const id = this.collectionId || this.data.content.identifier;
|
|
156
|
+
this.router.navigateByUrl(`app/toc/${id}/overview`);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
this.dialogRef.close(val);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
openSnackbar(primaryMsg, duration = 5000) {
|
|
163
|
+
this.snackBar.open(primaryMsg, 'X', {
|
|
164
|
+
duration,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContentRatingV2DialogComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.EventService }, { token: i3.RatingService }, { token: i2.LoggerService }, { token: i4.MatLegacySnackBar }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
168
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ContentRatingV2DialogComponent, selector: "ws-widget-content-rating-v2-dialog", inputs: { ccuserRating: "ccuserRating", navigatetoTOC: "navigatetoTOC", rateFromCompletionDialog: "rateFromCompletionDialog", isEditMode: "isEditMode", collectionId: "collectionId" }, ngImport: i0, template: "<ng-container *ngIf=\"!showSuccessScreen\">\n <section class=\"flex align-center justify-between mb-5\">\n <div class=\"flex flex-col gap-1\">\n <h2 class=\"mat-headline margin-remove-bottom ws-mat-black-text\">{{ 'ratingdialog.rateReview' | translate }}</h2>\n <div class=\"mat-body-2 ws-mat-black60-text\">{{ 'ratingdialog.yourReviewFeedbackValuable' | translate }}</div>\n </div>\n <button mat-icon-button aria-label=\"close dialog\" mat-dialog-close>\n <mat-icon>close</mat-icon>\n </button>\n </section>\n\n <form [formGroup]=\"feedbackForm\" >\n <section class=\"mb-5\">\n <h3 class=\"mat-h3 margin-bottom-xs required\" >{{ 'ratingdialog.rateThis' | translate}} {{ content?.primaryCategory | lowercase }}</h3>\n <div class=\"\" (click)=\"$event.stopPropagation();\">\n <ng-container *ngFor=\"let start of [1, 2, 3, 4, 5]; let i = index\">\n <button i18n-aria-label aria-label=\"Rating\" aria-labelledby=\"rate-heading\"\n name=\"user-content-rating-star-{{i+1}}\" [disabled]=\"isRequesting || isDisabled\"\n class=\"rating-button mr-2\" mat-icon-button (click)=\"addRating(i); $event.stopPropagation();\"\n color=\"primary\">\n <mat-icon class=\"rating-icon ws-mat-black16-text\" [ngClass]=\"{'ws-mat-orange-text':(userRating || -1) > i}\">\n star\n </mat-icon>\n </button>\n </ng-container>\n </div>\n </section>\n\n <section class=\"w-full mb-5\" *ngIf=\"!formDisabled\">\n <h3 class=\"mat-h3 margin-bottom-xs\" >{{ 'ratingdialog.giveReview' | translate }}</h3>\n <div class=\"mat-body-2\">\n <mat-form-field appearance=\"outline\" class=\"textarea-container\">\n <textarea id=\"review\" matInput [cdkTextareaAutosize] [cdkAutosizeMaxRows]=\"10\"\n [cdkAutosizeMinRows]=\"3\" maxlength=\"200\" formControlName=\"review\"\n placeholder=\"{{ 'ratingdialog.addReview' | translate}} {{content?.primaryCategory | lowercase}} (optional)\" i18n-placeholder #review i18n-aria-label aria-label=\"Review textarea input\" class=\"mat-body-2\"></textarea>\n <mat-hint align=\"end\">{{ review.value.length }} / 200 {{ 'ratingdialog.characters' | translate}}</mat-hint>\n <mat-error [hidden]=\"false\" i18n=\"review error | Explains review is required\"\n *ngIf=\"feedbackForm?.controls['review'].errors?.required\" i18n-aria-label\n aria-label=\"review error | Explains review is required\">\n {{ 'ratingdialog.addReview' | translate }} {{ content?.primaryCategory | lowercase }} {{ 'ratingdialog.optional' | translate }}\n </mat-error>\n <mat-error *ngIf=\"feedbackForm?.controls['review'].errors?.maxlength\" i18n-aria-label\n aria-label=\"review error | You have exceeded 200 characters\">\n {{ 'ratingdialog.exceededCharacters' | translate }}\n </mat-error>\n </mat-form-field>\n </div>\n </section>\n\n <section class=\"w-full mb-5\" *ngIf=\"!formDisabled\">\n <mat-checkbox [color]=\"primary\" class=\"profane-radio-button mat-body-2\" formControlName=\"recommend\" >{{'ratingdialog.recommendCourse' | translate}}</mat-checkbox>\n </section>\n\n <mat-dialog-actions class=\"custom margin-remove-bottom no-padding\" align=\"end\">\n <ng-container *ngIf=\"!isEditMode\">\n <button mat-stroked-button type=\"submit\" class=\"text-white ws-mat-primary-background flex-auto-display\"\n [disabled]=\"feedbackForm?.invalid || formDisabled\" (click)=\"submitRating(feedbackForm)\">\n <span class=\"text-white\" >{{ 'ratingdialog.submit' | translate }}</span>\n </button>\n </ng-container>\n <ng-container *ngIf=\"isEditMode\">\n <button mat-stroked-button type=\"submit\" class=\"text-white ws-mat-primary-background flex-auto-display\"\n [disabled]=\"feedbackForm?.invalid || !isEdited || formDisabled\" (click)=\"submitRating(feedbackForm)\">\n <span class=\"text-white\" >{{ 'ratingdialog.update' | translate }}</span>\n </button>\n </ng-container>\n </mat-dialog-actions>\n </form>\n</ng-container>\n\n<div *ngIf=\"showSuccessScreen\" class=\"flex-col align-center justify-center\">\n <div class=\"text-right\">\n <button mat-icon-button aria-label=\"close dialog\" (click)=\"closeDialog(true)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div class=\"flex flex-wrap gap-8 items-center justify-center success-msg-container\">\n <div>\n <img src=\"fusion-assets/images/rating.svg\" class=\"success-image\" alt=\"rating success image\" />\n </div>\n <div class=\"flex-col text-center sm:text-left\">\n <div class=\"flex align-center justify-between\">\n <h2 class=\"mat-headline margin-bottom-xxs ws-mat-black-text\">{{ 'ratingdialog.thankYouForFeedback' | translate }}</h2>\n </div>\n <div class=\"section-content mat-body-1\"> {{ 'ratingdialog.youCanUpdateYourFeedback' | translate }} </div>\n </div>\n </div>\n</div>", styles: [".rating-icon{transform:scale(1.2)}.rating-button{margin-right:10px;line-height:20px;height:24px;width:24px}::ng-deep .textarea-container{width:100%}::ng-deep .textarea-container .mat-form-field-wrapper{margin:0}::ng-deep .textarea-container .mat-form-field-infix{padding:8px 0;border-top:0px}::ng-deep .textarea-container .mat-form-field-infix textarea{min-height:52px!important;padding:8px 0}.orange{color:#f69953;font-size:24px}.no-padding{padding:0!important}.custom.mat-dialog-actions{min-height:auto}.success-msg-container{min-height:331px}@media only screen and (max-width: 599px){.success-msg-container{min-height:auto}}@media only screen and (max-width: 599px){.success-image{width:120px}}.large-icon{height:inherit;width:inherit;font-size:13rem}button:disabled{pointer-events:none;opacity:.5}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatLegacyDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i10.MatLegacyError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i10.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLegacyHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i11.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i12.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "component", type: i13.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: i6.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] }); }
|
|
169
|
+
}
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContentRatingV2DialogComponent, decorators: [{
|
|
171
|
+
type: Component,
|
|
172
|
+
args: [{ selector: 'ws-widget-content-rating-v2-dialog', template: "<ng-container *ngIf=\"!showSuccessScreen\">\n <section class=\"flex align-center justify-between mb-5\">\n <div class=\"flex flex-col gap-1\">\n <h2 class=\"mat-headline margin-remove-bottom ws-mat-black-text\">{{ 'ratingdialog.rateReview' | translate }}</h2>\n <div class=\"mat-body-2 ws-mat-black60-text\">{{ 'ratingdialog.yourReviewFeedbackValuable' | translate }}</div>\n </div>\n <button mat-icon-button aria-label=\"close dialog\" mat-dialog-close>\n <mat-icon>close</mat-icon>\n </button>\n </section>\n\n <form [formGroup]=\"feedbackForm\" >\n <section class=\"mb-5\">\n <h3 class=\"mat-h3 margin-bottom-xs required\" >{{ 'ratingdialog.rateThis' | translate}} {{ content?.primaryCategory | lowercase }}</h3>\n <div class=\"\" (click)=\"$event.stopPropagation();\">\n <ng-container *ngFor=\"let start of [1, 2, 3, 4, 5]; let i = index\">\n <button i18n-aria-label aria-label=\"Rating\" aria-labelledby=\"rate-heading\"\n name=\"user-content-rating-star-{{i+1}}\" [disabled]=\"isRequesting || isDisabled\"\n class=\"rating-button mr-2\" mat-icon-button (click)=\"addRating(i); $event.stopPropagation();\"\n color=\"primary\">\n <mat-icon class=\"rating-icon ws-mat-black16-text\" [ngClass]=\"{'ws-mat-orange-text':(userRating || -1) > i}\">\n star\n </mat-icon>\n </button>\n </ng-container>\n </div>\n </section>\n\n <section class=\"w-full mb-5\" *ngIf=\"!formDisabled\">\n <h3 class=\"mat-h3 margin-bottom-xs\" >{{ 'ratingdialog.giveReview' | translate }}</h3>\n <div class=\"mat-body-2\">\n <mat-form-field appearance=\"outline\" class=\"textarea-container\">\n <textarea id=\"review\" matInput [cdkTextareaAutosize] [cdkAutosizeMaxRows]=\"10\"\n [cdkAutosizeMinRows]=\"3\" maxlength=\"200\" formControlName=\"review\"\n placeholder=\"{{ 'ratingdialog.addReview' | translate}} {{content?.primaryCategory | lowercase}} (optional)\" i18n-placeholder #review i18n-aria-label aria-label=\"Review textarea input\" class=\"mat-body-2\"></textarea>\n <mat-hint align=\"end\">{{ review.value.length }} / 200 {{ 'ratingdialog.characters' | translate}}</mat-hint>\n <mat-error [hidden]=\"false\" i18n=\"review error | Explains review is required\"\n *ngIf=\"feedbackForm?.controls['review'].errors?.required\" i18n-aria-label\n aria-label=\"review error | Explains review is required\">\n {{ 'ratingdialog.addReview' | translate }} {{ content?.primaryCategory | lowercase }} {{ 'ratingdialog.optional' | translate }}\n </mat-error>\n <mat-error *ngIf=\"feedbackForm?.controls['review'].errors?.maxlength\" i18n-aria-label\n aria-label=\"review error | You have exceeded 200 characters\">\n {{ 'ratingdialog.exceededCharacters' | translate }}\n </mat-error>\n </mat-form-field>\n </div>\n </section>\n\n <section class=\"w-full mb-5\" *ngIf=\"!formDisabled\">\n <mat-checkbox [color]=\"primary\" class=\"profane-radio-button mat-body-2\" formControlName=\"recommend\" >{{'ratingdialog.recommendCourse' | translate}}</mat-checkbox>\n </section>\n\n <mat-dialog-actions class=\"custom margin-remove-bottom no-padding\" align=\"end\">\n <ng-container *ngIf=\"!isEditMode\">\n <button mat-stroked-button type=\"submit\" class=\"text-white ws-mat-primary-background flex-auto-display\"\n [disabled]=\"feedbackForm?.invalid || formDisabled\" (click)=\"submitRating(feedbackForm)\">\n <span class=\"text-white\" >{{ 'ratingdialog.submit' | translate }}</span>\n </button>\n </ng-container>\n <ng-container *ngIf=\"isEditMode\">\n <button mat-stroked-button type=\"submit\" class=\"text-white ws-mat-primary-background flex-auto-display\"\n [disabled]=\"feedbackForm?.invalid || !isEdited || formDisabled\" (click)=\"submitRating(feedbackForm)\">\n <span class=\"text-white\" >{{ 'ratingdialog.update' | translate }}</span>\n </button>\n </ng-container>\n </mat-dialog-actions>\n </form>\n</ng-container>\n\n<div *ngIf=\"showSuccessScreen\" class=\"flex-col align-center justify-center\">\n <div class=\"text-right\">\n <button mat-icon-button aria-label=\"close dialog\" (click)=\"closeDialog(true)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div class=\"flex flex-wrap gap-8 items-center justify-center success-msg-container\">\n <div>\n <img src=\"fusion-assets/images/rating.svg\" class=\"success-image\" alt=\"rating success image\" />\n </div>\n <div class=\"flex-col text-center sm:text-left\">\n <div class=\"flex align-center justify-between\">\n <h2 class=\"mat-headline margin-bottom-xxs ws-mat-black-text\">{{ 'ratingdialog.thankYouForFeedback' | translate }}</h2>\n </div>\n <div class=\"section-content mat-body-1\"> {{ 'ratingdialog.youCanUpdateYourFeedback' | translate }} </div>\n </div>\n </div>\n</div>", styles: [".rating-icon{transform:scale(1.2)}.rating-button{margin-right:10px;line-height:20px;height:24px;width:24px}::ng-deep .textarea-container{width:100%}::ng-deep .textarea-container .mat-form-field-wrapper{margin:0}::ng-deep .textarea-container .mat-form-field-infix{padding:8px 0;border-top:0px}::ng-deep .textarea-container .mat-form-field-infix textarea{min-height:52px!important;padding:8px 0}.orange{color:#f69953;font-size:24px}.no-padding{padding:0!important}.custom.mat-dialog-actions{min-height:auto}.success-msg-container{min-height:331px}@media only screen and (max-width: 599px){.success-msg-container{min-height:auto}}@media only screen and (max-width: 599px){.success-image{width:120px}}.large-icon{height:inherit;width:inherit;font-size:13rem}button:disabled{pointer-events:none;opacity:.5}\n"] }]
|
|
173
|
+
}], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
|
|
174
|
+
type: Inject,
|
|
175
|
+
args: [MAT_DIALOG_DATA]
|
|
176
|
+
}] }, { type: i2.EventService }, { type: i3.RatingService }, { type: i2.LoggerService }, { type: i4.MatLegacySnackBar }, { type: i5.Router }]; }, propDecorators: { ccuserRating: [{
|
|
177
|
+
type: Input
|
|
178
|
+
}], navigatetoTOC: [{
|
|
179
|
+
type: Input
|
|
180
|
+
}], rateFromCompletionDialog: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}], isEditMode: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}], collectionId: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}] } });
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1yYXRpbmctdjItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NvbnRlbnQtcmF0aW5nLXYyLWRpYWxvZy9jb250ZW50LXJhdGluZy12Mi1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC1yYXRpbmctdjItZGlhbG9nL2NvbnRlbnQtcmF0aW5nLXYyLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ2pGLE9BQU8sRUFBZ0IsUUFBUSxFQUE0QixNQUFNLHNCQUFzQixDQUFBO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUc5QixPQUFPLEVBQXNDLHNCQUFzQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBUy9ILE1BQU0sT0FBTyw4QkFBOEI7SUFjekMsWUFDUyxTQUF1RCxFQUM5QixJQUFTLEVBQ2pDLE1BQW9CLEVBQ3BCLFNBQXdCLEVBQ3hCLFNBQXdCLEVBQ3hCLFFBQXFCLEVBQ3JCLE1BQWM7UUFOZixjQUFTLEdBQVQsU0FBUyxDQUE4QztRQUM5QixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLFdB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T0FBTyxDQUFDLFVBQVUsQ0FBQTtZQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUE7U0FDcEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQzFCO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxVQUFrQixFQUFFLFdBQW1CLElBQUk7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNsQyxRQUFRO1NBQ1QsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0F4S1UsOEJBQThCLG9EQWdCL0IsZUFBZTttR0FoQmQsOEJBQThCLGtRQ2pCM0Msb2hMQXVGTTs7NEZEdEVPLDhCQUE4QjtrQkFOMUMsU0FBUzsrQkFDRSxvQ0FBb0M7OzBCQXFCM0MsTUFBTTsyQkFBQyxlQUFlO29MQWZoQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlLCBXc0V2ZW50cywgTG9nZ2VyU2VydmljZSwgTnNDb250ZW50IH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjInXG5pbXBvcnQgeyBSYXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL3JhdGluZy5zZXJ2aWNlJ1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgTnNBcHBSYXRpbmcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmF0aW5nLm1vZGVsJ1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nUmVmIGFzIE1hdERpYWxvZ1JlZiwgTUFUX0xFR0FDWV9ESUFMT0dfREFUQSBhcyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJ1xuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtY29udGVudC1yYXRpbmctdjItZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRlbnQtcmF0aW5nLXYyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtcmF0aW5nLXYyLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIENvbnRlbnRSYXRpbmdWMkRpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNjdXNlclJhdGluZzogYW55XG4gIEBJbnB1dCgpIG5hdmlnYXRldG9UT0M6IGFueVxuICBASW5wdXQoKSByYXRlRnJvbUNvbXBsZXRpb25EaWFsb2c6IGFueVxuICBASW5wdXQoKSAgaXNFZGl0TW9kZSA9IGZhbHNlXG4gIEBJbnB1dCgpICBjb2xsZWN0aW9uSWQgPSAnJ1xuICBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQgfCBudWxsID0gbnVsbFxuICB1c2VyUmF0aW5nID0gMFxuICBmZWVkYmFja0Zvcm06IFVudHlwZWRGb3JtR3JvdXBcbiAgc2hvd1N1Y2Nlc3NTY3JlZW4gPSBmYWxzZVxuICBmb3JtRGlzYWJsZWQgPSB0cnVlXG4gIGlzRWRpdGVkID0gZmFsc2VcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q29udGVudFJhdGluZ1YyRGlhbG9nQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICBwcml2YXRlIGV2ZW50czogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmF0aW5nU3ZjOiBSYXRpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyU3ZjOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICkge1xuICAgIHRoaXMuZmVlZGJhY2tGb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgcmV2aWV3OiBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIFtWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjAwMCldKSxcbiAgICAgIHJhdGluZzogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgwLCBbXSksXG4gICAgICByZWNvbW1lbmQ6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmFsc2UpLFxuICAgIH0pXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5jY3VzZXJSYXRpbmcgfHwgdGhpcy5uYXZpZ2F0ZXRvVE9DIHx8ICh0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmNvdXJzZU5hbWUpKSB7XG4gICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgIGlkZW50aWZpZXI6IHRoaXMuZGF0YS5pZGVudGlmaWVyLFxuICAgICAgICBwcmltYXJ5Q2F0ZWdvcnk6ICB0aGlzLmRhdGEucHJpbWFyeUNhdGVnb3J5LFxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YW9iaiA9IHtcbiAgICAgICAgY29udGVudDogb2JqLFxuICAgICAgICB1c2VySWQ6IHRoaXMuZGF0YS51c2VySWQsXG4gICAgICAgIHVzZXJSYXRpbmc6IHRoaXMuY2N1c2VyUmF0aW5nLFxuICAgICAgfVxuICAgICAgdGhpcy5kYXRhID0gZGF0YW9ialxuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGEudXNlclJhdGluZykge1xuICAgICAgdGhpcy5mZWVkYmFja0Zvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIHJldmlldzogdGhpcy5kYXRhLnVzZXJSYXRpbmcucmV2aWV3LFxuICAgICAgICByYXRpbmc6IHRoaXMuZGF0YS51c2VyUmF0aW5nLnJhdGluZyxcbiAgICAgICAgcmVjb21tZW5kOiB0aGlzLmRhdGEudXNlclJhdGluZy5yZWNvbW1lbmRlZCA9PT0gJ3llcycgPyB0cnVlIDogZmFsc2UsXG4gICAgICB9KVxuICAgICAgdGhpcy5mZWVkYmFja0Zvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICB0aGlzLnVzZXJSYXRpbmcgPSB0aGlzLmRhdGEudXNlclJhdGluZy5yYXRpbmdcbiAgICAgIGlmICh0aGlzLnVzZXJSYXRpbmcpIHtcbiAgICAgICAgdGhpcy5mb3JtRGlzYWJsZWQgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGEuY29udGVudCkge1xuICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5kYXRhLmNvbnRlbnRcbiAgICB9XG5cbiAgICB0aGlzLmZlZWRiYWNrRm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgZm9ybVZhbHVlID0+IHtcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnZm9ybVZhbHVlLnJldmlldyA6OiAnLCBmb3JtVmFsdWUucmV2aWV3KVxuICAgICAgICAgIGlmICh0aGlzLmRhdGEudXNlclJhdGluZykge1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZS5yZXZpZXcgIT09IHRoaXMuZGF0YS51c2VyUmF0aW5nLnJldmlld1xuICAgICAgICAgICAgICB8fCBmb3JtVmFsdWUucmF0aW5nICE9PSB0aGlzLmRhdGEudXNlclJhdGluZy5yYXRpbmdcbiAgICAgICAgICAgICAgfHwgZm9ybVZhbHVlLnJlY29tbWVuZCAhPT0gdGhpcy5kYXRhLnVzZXJSYXRpbmcucmVjb21tZW5kKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXNFZGl0ZWQgPSB0cnVlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmlzRWRpdGVkID0gZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSlcbiAgICAgICkuc3Vic2NyaWJlKClcbiAgfVxuXG4gIHN1Ym1pdFJhdGluZyhmZWVkYmFja0Zvcm06IGFueSkge1xuICAgIGlmICghdGhpcy5mb3JtRGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IHJlcTogTnNBcHBSYXRpbmcuSVJhdGluZyA9IHtcbiAgICAgICAgYWN0aXZpdHlJZDogdGhpcy5kYXRhLmNvbnRlbnQuaWRlbnRpZmllciB8fCAnJyxcbiAgICAgICAgdXNlcklkOiB0aGlzLmRhdGEudXNlcklkIHx8ICcnLFxuICAgICAgICBhY3Rpdml0eVR5cGU6IHRoaXMuZGF0YS5jb250ZW50LnByaW1hcnlDYXRlZ29yeSB8fCAnJyxcbiAgICAgICAgcmF0aW5nOiB0aGlzLnVzZXJSYXRpbmcgfHwgMCxcbiAgICAgICAgLi4uKGZlZWRiYWNrRm9ybS52YWx1ZS5yZXZpZXcgJiYgeyByZXZpZXc6IGZlZWRiYWNrRm9ybS52YWx1ZS5yZXZpZXcgfSksXG4gICAgICAgIHJlY29tbWVuZGVkOiBmZWVkYmFja0Zvcm0udmFsdWUucmVjb21tZW5kID8gJ3llcycgOiAnbm8nLFxuICAgICAgfVxuXG4gICAgICB0aGlzLnJhdGluZ1N2Yy5hZGRPclVwZGF0ZVJhdGluZyhyZXEpLnN1YnNjcmliZShcbiAgICAgICAgKF9yZXM6IGFueSkgPT4gIHtcbiAgICAgICAgICB0aGlzLnJhaXNlRmVlZGJhY2tUZWxlbWV0cnkoZmVlZGJhY2tGb3JtKVxuICAgICAgICAgIGlmICh0aGlzLmlzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1N1Y2Nlc3NTY3JlZW4gPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ2dlclN2Yy5lcnJvcignQUREIE9SIFVQREFURSBVU0VSIFJBVElORyBFUlJPUiA+JywgZXJyKVxuICAgICAgICAgIGlmIChlcnIuZXJyb3IgJiYgZXJyLmVycm9yLnBhcmFtcyAmJiBlcnIuZXJyb3IucGFyYW1zLmVycm1zZykge1xuICAgICAgICAgICAgdGhpcy5vcGVuU25hY2tiYXIoZXJyLmVycm9yLnBhcmFtcy5lcnJtc2cpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3BlblNuYWNrYmFyKCdTb21ldGhpbmcgd2VudCB3cm9uZywgcGxlYXNlIHRyeSBhZ2FpbiBsYXRlciEnKVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSlcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHJhaXNlRmVlZGJhY2tUZWxlbWV0cnkoZmVlZGJhY2tGb3JtOiBhbnkpIHtcbiAgICB0aGlzLmV2ZW50cy5yYWlzZUZlZWRiYWNrVGVsZW1ldHJ5KFxuICAgICAge1xuICAgICAgICB0eXBlOiB0aGlzLmRhdGEuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgICAgIHN1YlR5cGU6ICdyYXRpbmcnLFxuICAgICAgICBpZDogdGhpcy5kYXRhLmNvbnRlbnQuaWRlbnRpZmllciB8fCAnJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiB0aGlzLmRhdGEuY29udGVudC5pZGVudGlmaWVyIHx8ICcnLFxuICAgICAgICByYXRpbmc6IHRoaXMudXNlclJhdGluZyxcbiAgICAgICAgdmVyc2lvbjogYCR7dGhpcy5kYXRhLmNvbnRlbnQudmVyc2lvbn0keycnfWAsXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgIGNvbW1lbnR0eHQ6IGZlZWRiYWNrRm9ybS52YWx1ZS5yZXZpZXcgfHwgJycsXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgYWRkUmF0aW5nKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLnVzZXJSYXRpbmcgPSBpbmRleCArIDFcbiAgICBpZiAodGhpcy51c2VyUmF0aW5nKSB7XG4gICAgICB0aGlzLmZvcm1EaXNhYmxlZCA9IGZhbHNlXG4gICAgfVxuICAgIHRoaXMuZXZlbnRzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdyYXRpbmcnLFxuICAgICAgICBzdWJUeXBlOiAnY29udGVudCcsXG4gICAgICAgIGlkOiB0aGlzLmRhdGEuY29udGVudC5pZGVudGlmaWVyIHx8ICcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRoaXMuZGF0YS5jb250ZW50LmlkZW50aWZpZXIgfHwgJycsXG4gICAgICAgIHJhdGluZzogdGhpcy51c2VyUmF0aW5nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgIHBhZ2VJZEV4dDogJ3JhdGluZy1wb3B1cCcsXG4gICAgICBtb2R1bGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnltb2R1bGVzLkZFRURCQUNLLFxuICAgIH0pXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICB0aGlzLmZlZWRiYWNrRm9ybS5nZXQoJ3JhdGluZycpIS5zZXRWYWx1ZSh0aGlzLnVzZXJSYXRpbmcpXG4gIH1cblxuICBjbG9zZURpYWxvZyh2YWw6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5uYXZpZ2F0ZXRvVE9DKSB7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh2YWwpXG4gICAgICAvLyBJbiBjYXNlIG9mIG11bHRpbGluZ3VhbCBjb3Vyc2UsIHJlZGlyZWN0aW9uIHNob3VsZCBoYXBwZW4gdG8gYmFzZSBjb2xsZWN0aW9uSURcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5jb2xsZWN0aW9uSWQgfHwgdGhpcy5kYXRhLmNvbnRlbnQuaWRlbnRpZmllclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgYXBwL3RvYy8ke2lkfS9vdmVydmlld2ApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHZhbClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5TbmFja2JhcihwcmltYXJ5TXNnOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIgPSA1MDAwKSB7XG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKHByaW1hcnlNc2csICdYJywge1xuICAgICAgZHVyYXRpb24sXG4gICAgfSlcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dTdWNjZXNzU2NyZWVuXCI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJmbGV4IGFsaWduLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMVwiPlxuICAgICAgICAgICAgPGgyIGNsYXNzPVwibWF0LWhlYWRsaW5lIG1hcmdpbi1yZW1vdmUtYm90dG9tIHdzLW1hdC1ibGFjay10ZXh0XCI+e3sgJ3JhdGluZ2RpYWxvZy5yYXRlUmV2aWV3JyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LWJvZHktMiB3cy1tYXQtYmxhY2s2MC10ZXh0XCI+e3sgJ3JhdGluZ2RpYWxvZy55b3VyUmV2aWV3RmVlZGJhY2tWYWx1YWJsZScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJjbG9zZSBkaWFsb2dcIiBtYXQtZGlhbG9nLWNsb3NlPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmZWVkYmFja0Zvcm1cIiA+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWItNVwiPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwibWF0LWgzIG1hcmdpbi1ib3R0b20teHMgcmVxdWlyZWRcIiA+e3sgJ3JhdGluZ2RpYWxvZy5yYXRlVGhpcycgfCB0cmFuc2xhdGV9fSB7eyBjb250ZW50Py5wcmltYXJ5Q2F0ZWdvcnkgfCBsb3dlcmNhc2UgfX08L2gzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RhcnQgb2YgWzEsIDIsIDMsIDQsIDVdOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gaTE4bi1hcmlhLWxhYmVsIGFyaWEtbGFiZWw9XCJSYXRpbmdcIiBhcmlhLWxhYmVsbGVkYnk9XCJyYXRlLWhlYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInVzZXItY29udGVudC1yYXRpbmctc3Rhci17e2krMX19XCIgW2Rpc2FibGVkXT1cImlzUmVxdWVzdGluZyB8fCBpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmF0aW5nLWJ1dHRvbiBtci0yXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJhZGRSYXRpbmcoaSk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJyYXRpbmctaWNvbiB3cy1tYXQtYmxhY2sxNi10ZXh0XCIgW25nQ2xhc3NdPVwieyd3cy1tYXQtb3JhbmdlLXRleHQnOih1c2VyUmF0aW5nIHx8IC0xKSA+IGl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwidy1mdWxsIG1iLTVcIiAqbmdJZj1cIiFmb3JtRGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzcz1cIm1hdC1oMyBtYXJnaW4tYm90dG9tLXhzXCIgPnt7ICdyYXRpbmdkaWFsb2cuZ2l2ZVJldmlldycgfCB0cmFuc2xhdGUgfX08L2gzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1ib2R5LTJcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInRleHRhcmVhLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9XCJyZXZpZXdcIiBtYXRJbnB1dCBbY2RrVGV4dGFyZWFBdXRvc2l6ZV0gW2Nka0F1dG9zaXplTWF4Um93c109XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2RrQXV0b3NpemVNaW5Sb3dzXT1cIjNcIiBtYXhsZW5ndGg9XCIyMDBcIiBmb3JtQ29udHJvbE5hbWU9XCJyZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAncmF0aW5nZGlhbG9nLmFkZFJldmlldycgfCB0cmFuc2xhdGV9fSB7e2NvbnRlbnQ/LnByaW1hcnlDYXRlZ29yeSB8IGxvd2VyY2FzZX19IChvcHRpb25hbClcIiBpMThuLXBsYWNlaG9sZGVyICNyZXZpZXcgaTE4bi1hcmlhLWxhYmVsIGFyaWEtbGFiZWw9XCJSZXZpZXcgdGV4dGFyZWEgaW5wdXRcIiBjbGFzcz1cIm1hdC1ib2R5LTJcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgYWxpZ249XCJlbmRcIj57eyByZXZpZXcudmFsdWUubGVuZ3RoIH19IC8gMjAwIHt7ICdyYXRpbmdkaWFsb2cuY2hhcmFjdGVycycgfCB0cmFuc2xhdGV9fTwvbWF0LWhpbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgW2hpZGRlbl09XCJmYWxzZVwiIGkxOG49XCJyZXZpZXcgZXJyb3IgfCBFeHBsYWlucyByZXZpZXcgaXMgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmZWVkYmFja0Zvcm0/LmNvbnRyb2xzWydyZXZpZXcnXS5lcnJvcnM/LnJlcXVpcmVkXCIgaTE4bi1hcmlhLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwicmV2aWV3IGVycm9yIHwgRXhwbGFpbnMgcmV2aWV3IGlzIHJlcXVpcmVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncmF0aW5nZGlhbG9nLmFkZFJldmlldycgfCB0cmFuc2xhdGUgfX0ge3sgY29udGVudD8ucHJpbWFyeUNhdGVnb3J5IHwgbG93ZXJjYXNlIH19IHt7ICdyYXRpbmdkaWFsb2cub3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZmVlZGJhY2tGb3JtPy5jb250cm9sc1sncmV2aWV3J10uZXJyb3JzPy5tYXhsZW5ndGhcIiBpMThuLWFyaWEtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZXZpZXcgZXJyb3IgfCBZb3UgaGF2ZSBleGNlZWRlZCAyMDAgY2hhcmFjdGVyc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3JhdGluZ2RpYWxvZy5leGNlZWRlZENoYXJhY3RlcnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwidy1mdWxsIG1iLTVcIiAqbmdJZj1cIiFmb3JtRGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2NvbG9yXT1cInByaW1hcnlcIiBjbGFzcz1cInByb2ZhbmUtcmFkaW8tYnV0dG9uIG1hdC1ib2R5LTJcIiBmb3JtQ29udHJvbE5hbWU9XCJyZWNvbW1lbmRcIiA+e3sncmF0aW5nZGlhbG9nLnJlY29tbWVuZENvdXJzZScgfCB0cmFuc2xhdGV9fTwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cImN1c3RvbSBtYXJnaW4tcmVtb3ZlLWJvdHRvbSBuby1wYWRkaW5nXCIgYWxpZ249XCJlbmRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNFZGl0TW9kZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cInRleHQtd2hpdGUgd3MtbWF0LXByaW1hcnktYmFja2dyb3VuZCBmbGV4LWF1dG8tZGlzcGxheVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmZWVkYmFja0Zvcm0/LmludmFsaWQgfHwgZm9ybURpc2FibGVkXCIgKGNsaWNrKT1cInN1Ym1pdFJhdGluZyhmZWVkYmFja0Zvcm0pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC13aGl0ZVwiID57eyAncmF0aW5nZGlhbG9nLnN1Ym1pdCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0VkaXRNb2RlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwidGV4dC13aGl0ZSB3cy1tYXQtcHJpbWFyeS1iYWNrZ3JvdW5kIGZsZXgtYXV0by1kaXNwbGF5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZlZWRiYWNrRm9ybT8uaW52YWxpZCB8fCAgIWlzRWRpdGVkIHx8IGZvcm1EaXNhYmxlZFwiIChjbGljayk9XCJzdWJtaXRSYXRpbmcoZmVlZGJhY2tGb3JtKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtd2hpdGVcIiA+e3sgJ3JhdGluZ2RpYWxvZy51cGRhdGUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDwvZm9ybT5cbjwvbmctY29udGFpbmVyPlxuXG48ZGl2ICpuZ0lmPVwic2hvd1N1Y2Nlc3NTY3JlZW5cIiBjbGFzcz1cImZsZXgtY29sIGFsaWduLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJjbG9zZSBkaWFsb2dcIiAoY2xpY2spPVwiY2xvc2VEaWFsb2codHJ1ZSlcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgc3VjY2Vzcy1tc2ctY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImZ1c2lvbi1hc3NldHMvaW1hZ2VzL3JhdGluZy5zdmdcIiBjbGFzcz1cInN1Y2Nlc3MtaW1hZ2VcIiBhbHQ9XCJyYXRpbmcgc3VjY2VzcyBpbWFnZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2wgdGV4dC1jZW50ZXIgc206dGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwibWF0LWhlYWRsaW5lIG1hcmdpbi1ib3R0b20teHhzIHdzLW1hdC1ibGFjay10ZXh0XCI+e3sgJ3JhdGluZ2RpYWxvZy50aGFua1lvdUZvckZlZWRiYWNrJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWNvbnRlbnQgbWF0LWJvZHktMVwiPiB7eyAncmF0aW5nZGlhbG9nLnlvdUNhblVwZGF0ZVlvdXJGZWVkYmFjaycgfCB0cmFuc2xhdGUgfX0gPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|