mediasfu-angular 1.0.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +678 -578
- package/dist/README.md +677 -578
- package/dist/fesm2022/mediasfu-angular.mjs +5551 -2944
- package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
- package/dist/lib/@types/types.d.ts +22 -1
- package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +1 -0
- package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +153 -61
- package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +154 -66
- package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +190 -76
- package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +184 -70
- package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +192 -78
- package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +6 -1
- package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +5 -2
- package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +4 -2
- package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +71 -66
- package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +5 -1
- package/dist/lib/consumers/connect-local-ips.service.d.ts +81 -0
- package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +43 -11
- package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +87 -46
- package/dist/lib/consumers/connect-send-transport-video.service.d.ts +89 -43
- package/dist/lib/consumers/connect-send-transport.service.d.ts +5 -1
- package/dist/lib/consumers/create-send-transport.service.d.ts +130 -40
- package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +77 -40
- package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +48 -14
- package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +81 -44
- package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +5 -1
- package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +5 -1
- package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +54 -21
- package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +124 -40
- package/dist/lib/consumers/trigger.service.d.ts +3 -0
- package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +5 -1
- package/dist/lib/methods/recording-methods/start-recording.service.d.ts +3 -0
- package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +4 -1
- package/dist/lib/methods/recording-methods/update-recording.service.d.ts +3 -0
- package/dist/lib/methods/stream-methods/click-audio.service.d.ts +3 -0
- package/dist/lib/methods/utils/check-limits-and-make-request.service.d.ts +23 -0
- package/dist/lib/methods/utils/create-response-join-room.util.d.ts +33 -0
- package/dist/lib/methods/utils/create-room-on-media-sfu.service.d.ts +25 -0
- package/dist/lib/methods/utils/initial-values.util.d.ts +6 -0
- package/dist/lib/methods/utils/join-room-on-media-sfu.service.d.ts +52 -0
- package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +37 -20
- package/dist/lib/producers/producer-emits/join-local-room.service.d.ts +125 -0
- package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +7 -2
- package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +7 -2
- package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +5 -1
- package/dist/lib/sockets/socket-manager.service.d.ts +90 -0
- package/dist/public-api.d.ts +11 -1
- package/package.json +17 -20
- package/dist/esm2022/lib/@types/types.mjs +0 -2
- package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +0 -799
- package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +0 -366
- package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +0 -143
- package/dist/esm2022/lib/components/breakout-components/room-list/room-list.component.mjs +0 -40
- package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +0 -245
- package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +0 -79
- package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +0 -356
- package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +0 -80
- package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +0 -129
- package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +0 -138
- package/dist/esm2022/lib/components/display-components/control-buttons-component/control-buttons-component.component.mjs +0 -231
- package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +0 -282
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +0 -82
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +0 -65
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +0 -137
- package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +0 -137
- package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +0 -51
- package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +0 -101
- package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +0 -151
- package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +0 -250
- package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +0 -102
- package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +0 -140
- package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +0 -131
- package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +0 -120
- package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +0 -201
- package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +0 -115
- package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +0 -319
- package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +0 -161
- package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +0 -230
- package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +0 -126
- package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +0 -334
- package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +0 -112
- package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +0 -392
- package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +0 -106
- package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +0 -199
- package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +0 -132
- package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +0 -220
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +0 -4238
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +0 -3754
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +0 -5071
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +0 -5380
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +0 -5068
- package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +0 -83
- package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +0 -27
- package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +0 -27
- package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +0 -125
- package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +0 -106
- package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +0 -228
- package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +0 -277
- package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +0 -130
- package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +0 -343
- package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +0 -127
- package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +0 -241
- package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +0 -82
- package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +0 -139
- package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +0 -40
- package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +0 -60
- package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +0 -124
- package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +0 -201
- package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +0 -92
- package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +0 -133
- package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +0 -90
- package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +0 -81
- package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +0 -147
- package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +0 -627
- package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +0 -391
- package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +0 -201
- package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +0 -286
- package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +0 -1833
- package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +0 -345
- package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +0 -109
- package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +0 -60
- package/dist/esm2022/lib/consumers/change-vids.service.mjs +0 -551
- package/dist/esm2022/lib/consumers/check-grid.service.mjs +0 -93
- package/dist/esm2022/lib/consumers/check-permission.service.mjs +0 -105
- package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +0 -106
- package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +0 -331
- package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +0 -106
- package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +0 -98
- package/dist/esm2022/lib/consumers/connect-ips.service.mjs +0 -154
- package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +0 -146
- package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +0 -84
- package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +0 -102
- package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +0 -99
- package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +0 -140
- package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +0 -368
- package/dist/esm2022/lib/consumers/control-media.service.mjs +0 -113
- package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +0 -172
- package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +0 -108
- package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +0 -84
- package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +0 -101
- package/dist/esm2022/lib/consumers/disp-streams.service.mjs +0 -513
- package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +0 -106
- package/dist/esm2022/lib/consumers/get-estimate.service.mjs +0 -120
- package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +0 -82
- package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +0 -79
- package/dist/esm2022/lib/consumers/get-videos.service.mjs +0 -91
- package/dist/esm2022/lib/consumers/mix-streams.service.mjs +0 -95
- package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +0 -103
- package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +0 -541
- package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +0 -101
- package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +0 -128
- package/dist/esm2022/lib/consumers/re-port.service.mjs +0 -114
- package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +0 -239
- package/dist/esm2022/lib/consumers/readjust.service.mjs +0 -173
- package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +0 -87
- package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +0 -69
- package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +0 -239
- package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +0 -101
- package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +0 -150
- package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +0 -103
- package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +0 -91
- package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +0 -136
- package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +0 -96
- package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +0 -100
- package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +0 -78
- package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +0 -120
- package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +0 -175
- package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +0 -185
- package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +0 -210
- package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +0 -193
- package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +0 -260
- package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +0 -120
- package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +0 -260
- package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +0 -172
- package/dist/esm2022/lib/consumers/trigger.service.mjs +0 -210
- package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +0 -135
- package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +0 -84
- package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +0 -48
- package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +0 -183
- package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +0 -46
- package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +0 -46
- package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +0 -104
- package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +0 -46
- package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +0 -194
- package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +0 -52
- package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +0 -42
- package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +0 -85
- package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +0 -44
- package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +0 -45
- package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +0 -143
- package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +0 -47
- package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +0 -98
- package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +0 -96
- package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +0 -107
- package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +0 -75
- package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +0 -72
- package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +0 -83
- package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +0 -43
- package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +0 -95
- package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +0 -69
- package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +0 -56
- package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +0 -278
- package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +0 -125
- package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +0 -67
- package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +0 -130
- package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +0 -134
- package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +0 -80
- package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +0 -197
- package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +0 -112
- package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +0 -272
- package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +0 -51
- package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +0 -84
- package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +0 -51
- package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +0 -109
- package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +0 -275
- package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +0 -75
- package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +0 -178
- package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +0 -271
- package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +0 -80
- package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +0 -116
- package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +0 -132
- package/dist/esm2022/lib/methods/utils/format-number.service.mjs +0 -57
- package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +0 -120
- package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +0 -126
- package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +0 -78
- package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +0 -90
- package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +0 -59
- package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +0 -32
- package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +0 -31
- package/dist/esm2022/lib/methods/utils/initial-values.util.mjs +0 -379
- package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +0 -96
- package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +0 -315
- package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +0 -58
- package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +0 -87
- package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +0 -61
- package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +0 -87
- package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +0 -84
- package/dist/esm2022/lib/methods/utils/sleep.util.mjs +0 -17
- package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +0 -63
- package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +0 -49
- package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +0 -41
- package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +0 -69
- package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +0 -98
- package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +0 -44
- package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +0 -74
- package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +0 -96
- package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +0 -276
- package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +0 -152
- package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +0 -152
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +0 -228
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +0 -218
- package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +0 -57
- package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +0 -76
- package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +0 -183
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +0 -50
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +0 -64
- package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +0 -78
- package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +0 -150
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +0 -73
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +0 -47
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +0 -63
- package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +0 -63
- package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +0 -54
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +0 -129
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +0 -152
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +0 -99
- package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +0 -67
- package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +0 -134
- package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +0 -233
- package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +0 -121
- package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +0 -86
- package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +0 -60
- package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +0 -62
- package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +0 -57
- package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +0 -105
- package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +0 -66
- package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +0 -96
- package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +0 -52
- package/dist/esm2022/lib/sockets/socket-manager.service.mjs +0 -113
- package/dist/esm2022/mediasfu-angular.mjs +0 -5
- package/dist/esm2022/public-api.mjs +0 -187
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Modifies the settings for a given room and updates the state accordingly.
|
|
5
|
-
*
|
|
6
|
-
* @param {ModifySettingsOptions} options - The options for modifying settings.
|
|
7
|
-
* @param {Function} options.showAlert - Function to show alert messages.
|
|
8
|
-
* @param {string} options.roomName - The name of the room.
|
|
9
|
-
* @param {string} options.audioSet - The audio setting to be applied.
|
|
10
|
-
* @param {string} options.videoSet - The video setting to be applied.
|
|
11
|
-
* @param {string} options.screenshareSet - The screenshare setting to be applied.
|
|
12
|
-
* @param {string} options.chatSet - The chat setting to be applied.
|
|
13
|
-
* @param {Socket} options.socket - The socket instance for emitting events.
|
|
14
|
-
* @param {Function} options.updateAudioSetting - Function to update the audio setting state.
|
|
15
|
-
* @param {Function} options.updateVideoSetting - Function to update the video setting state.
|
|
16
|
-
* @param {Function} options.updateScreenshareSetting - Function to update the screenshare setting state.
|
|
17
|
-
* @param {Function} options.updateChatSetting - Function to update the chat setting state.
|
|
18
|
-
* @param {Function} options.updateIsSettingsModalVisible - Function to update the visibility of the settings modal.
|
|
19
|
-
*
|
|
20
|
-
* @returns {Promise<void>} A promise that resolves when the settings have been modified.
|
|
21
|
-
*
|
|
22
|
-
* @throws Will show an alert if any setting is set to "approval" in demo mode (room name starts with "d").
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* const options: ModifySettingsOptions = {
|
|
27
|
-
* showAlert: (alert) => console.log(alert),
|
|
28
|
-
* roomName: 'exampleRoom',
|
|
29
|
-
* audioSet: 'enabled',
|
|
30
|
-
* videoSet: 'disabled',
|
|
31
|
-
* screenshareSet: 'approval',
|
|
32
|
-
* chatSet: 'enabled',
|
|
33
|
-
* socket: socketInstance,
|
|
34
|
-
* updateAudioSetting: (audio) => console.log('Audio setting updated:', audio),
|
|
35
|
-
* updateVideoSetting: (video) => console.log('Video setting updated:', video),
|
|
36
|
-
* updateScreenshareSetting: (screenshare) => console.log('Screenshare setting updated:', screenshare),
|
|
37
|
-
* updateChatSetting: (chat) => console.log('Chat setting updated:', chat),
|
|
38
|
-
* updateIsSettingsModalVisible: (visible) => console.log('Settings modal visibility:', visible),
|
|
39
|
-
* };
|
|
40
|
-
*
|
|
41
|
-
* const modifySettingsService = new ModifySettings();
|
|
42
|
-
* await modifySettingsService.modifySettings(options);
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
export class ModifySettings {
|
|
46
|
-
/**
|
|
47
|
-
* Modifies the settings for a given room and updates the state accordingly.
|
|
48
|
-
*
|
|
49
|
-
* @param {Object} options - The options for modifying settings.
|
|
50
|
-
* @param {Function} options.showAlert - Function to show alert messages.
|
|
51
|
-
* @param {string} options.roomName - The name of the room.
|
|
52
|
-
* @param {string} options.audioSet - The audio setting to be applied.
|
|
53
|
-
* @param {string} options.videoSet - The video setting to be applied.
|
|
54
|
-
* @param {string} options.screenshareSet - The screenshare setting to be applied.
|
|
55
|
-
* @param {string} options.chatSet - The chat setting to be applied.
|
|
56
|
-
* @param {Object} options.socket - The socket instance for emitting events.
|
|
57
|
-
* @param {Function} options.updateAudioSetting - Function to update the audio setting state.
|
|
58
|
-
* @param {Function} options.updateVideoSetting - Function to update the video setting state.
|
|
59
|
-
* @param {Function} options.updateScreenshareSetting - Function to update the screenshare setting state.
|
|
60
|
-
* @param {Function} options.updateChatSetting - Function to update the chat setting state.
|
|
61
|
-
* @param {Function} options.updateIsSettingsModalVisible - Function to update the visibility of the settings modal.
|
|
62
|
-
*
|
|
63
|
-
* @returns {Promise<void>} A promise that resolves when the settings have been modified.
|
|
64
|
-
*
|
|
65
|
-
* @throws Will show an alert if any setting is set to "approval" in demo mode (room name starts with "d").
|
|
66
|
-
*/
|
|
67
|
-
modifySettings = async ({ showAlert, roomName, audioSet, videoSet, screenshareSet, chatSet, socket, updateAudioSetting, updateVideoSetting, updateScreenshareSetting, updateChatSetting, updateIsSettingsModalVisible, }) => {
|
|
68
|
-
if (roomName.toLowerCase().startsWith('d')) {
|
|
69
|
-
// none should be approval
|
|
70
|
-
if (audioSet === 'approval' ||
|
|
71
|
-
videoSet === 'approval' ||
|
|
72
|
-
screenshareSet === 'approval' ||
|
|
73
|
-
chatSet === 'approval') {
|
|
74
|
-
showAlert?.({
|
|
75
|
-
message: 'You cannot set approval for demo mode.',
|
|
76
|
-
type: 'danger',
|
|
77
|
-
duration: 3000,
|
|
78
|
-
});
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
// Check and update state variables based on the provided logic
|
|
83
|
-
if (audioSet) {
|
|
84
|
-
updateAudioSetting(audioSet);
|
|
85
|
-
}
|
|
86
|
-
if (videoSet) {
|
|
87
|
-
updateVideoSetting(videoSet);
|
|
88
|
-
}
|
|
89
|
-
if (screenshareSet) {
|
|
90
|
-
updateScreenshareSetting(screenshareSet);
|
|
91
|
-
}
|
|
92
|
-
if (chatSet) {
|
|
93
|
-
updateChatSetting(chatSet);
|
|
94
|
-
}
|
|
95
|
-
const settings = [audioSet, videoSet, screenshareSet, chatSet];
|
|
96
|
-
socket.emit('updateSettingsForRequests', { settings, roomName });
|
|
97
|
-
// Close modal
|
|
98
|
-
updateIsSettingsModalVisible(false);
|
|
99
|
-
};
|
|
100
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ModifySettings, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
101
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ModifySettings, providedIn: 'root' });
|
|
102
|
-
}
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ModifySettings, decorators: [{
|
|
104
|
-
type: Injectable,
|
|
105
|
-
args: [{
|
|
106
|
-
providedIn: 'root',
|
|
107
|
-
}]
|
|
108
|
-
}] });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZ5LXNldHRpbmdzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy9zZXR0aW5ncy1tZXRob2RzL21vZGlmeS1zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBcUIzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q0c7QUFNSCxNQUFNLE9BQU8sY0FBYztJQUN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FvQkc7SUFFSCxjQUFjLEdBQUcsS0FBSyxFQUFFLEVBQ3RCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixjQUFjLEVBQ2QsT0FBTyxFQUNQLE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsNEJBQTRCLEdBQ04sRUFBaUIsRUFBRTtRQUN6QyxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQywwQkFBMEI7WUFDMUIsSUFDRSxRQUFRLEtBQUssVUFBVTtnQkFDdkIsUUFBUSxLQUFLLFVBQVU7Z0JBQ3ZCLGNBQWMsS0FBSyxVQUFVO2dCQUM3QixPQUFPLEtBQUssVUFBVSxFQUN0QixDQUFDO2dCQUNELFNBQVMsRUFBRSxDQUFDO29CQUNWLE9BQU8sRUFBRSx3Q0FBd0M7b0JBQ2pELElBQUksRUFBRSxRQUFRO29CQUNkLFFBQVEsRUFBRSxJQUFJO2lCQUNmLENBQUMsQ0FBQztnQkFFSCxPQUFPO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFFRCwrREFBK0Q7UUFDL0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2Isa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsd0JBQXdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFakUsY0FBYztRQUNkLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQzt1R0ExRVMsY0FBYzsyR0FBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBtb2RpZnktc2V0dGluZ3Muc2VydmljZS50c1xuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnc29ja2V0LmlvLWNsaWVudCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaG93QWxlcnQgfSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZGlmeVNldHRpbmdzT3B0aW9ucyB7XG4gIHNob3dBbGVydD86IFNob3dBbGVydDtcbiAgcm9vbU5hbWU6IHN0cmluZztcbiAgYXVkaW9TZXQ6IHN0cmluZztcbiAgdmlkZW9TZXQ6IHN0cmluZztcbiAgc2NyZWVuc2hhcmVTZXQ6IHN0cmluZztcbiAgY2hhdFNldDogc3RyaW5nO1xuICBzb2NrZXQ6IFNvY2tldDtcbiAgdXBkYXRlQXVkaW9TZXR0aW5nOiAoYXVkaW9TZXQ6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlVmlkZW9TZXR0aW5nOiAodmlkZW9TZXQ6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlU2NyZWVuc2hhcmVTZXR0aW5nOiAoc2NyZWVuc2hhcmVTZXQ6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlQ2hhdFNldHRpbmc6IChjaGF0U2V0OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHVwZGF0ZUlzU2V0dGluZ3NNb2RhbFZpc2libGU6IChpc1Zpc2libGU6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIE1vZGlmeVNldHRpbmdzVHlwZSA9IChvcHRpb25zOiBNb2RpZnlTZXR0aW5nc09wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHNldHRpbmdzIGZvciBhIGdpdmVuIHJvb20gYW5kIHVwZGF0ZXMgdGhlIHN0YXRlIGFjY29yZGluZ2x5LlxuICpcbiAqIEBwYXJhbSB7TW9kaWZ5U2V0dGluZ3NPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIG1vZGlmeWluZyBzZXR0aW5ncy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMuc2hvd0FsZXJ0IC0gRnVuY3Rpb24gdG8gc2hvdyBhbGVydCBtZXNzYWdlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnJvb21OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHJvb20uXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5hdWRpb1NldCAtIFRoZSBhdWRpbyBzZXR0aW5nIHRvIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy52aWRlb1NldCAtIFRoZSB2aWRlbyBzZXR0aW5nIHRvIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5zY3JlZW5zaGFyZVNldCAtIFRoZSBzY3JlZW5zaGFyZSBzZXR0aW5nIHRvIGJlIGFwcGxpZWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jaGF0U2V0IC0gVGhlIGNoYXQgc2V0dGluZyB0byBiZSBhcHBsaWVkLlxuICogQHBhcmFtIHtTb2NrZXR9IG9wdGlvbnMuc29ja2V0IC0gVGhlIHNvY2tldCBpbnN0YW5jZSBmb3IgZW1pdHRpbmcgZXZlbnRzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy51cGRhdGVBdWRpb1NldHRpbmcgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIGF1ZGlvIHNldHRpbmcgc3RhdGUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnVwZGF0ZVZpZGVvU2V0dGluZyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlkZW8gc2V0dGluZyBzdGF0ZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlU2NyZWVuc2hhcmVTZXR0aW5nIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBzY3JlZW5zaGFyZSBzZXR0aW5nIHN0YXRlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy51cGRhdGVDaGF0U2V0dGluZyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgY2hhdCBzZXR0aW5nIHN0YXRlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy51cGRhdGVJc1NldHRpbmdzTW9kYWxWaXNpYmxlIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBzZXR0aW5ncyBtb2RhbC5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgaGF2ZSBiZWVuIG1vZGlmaWVkLlxuICpcbiAqIEB0aHJvd3MgV2lsbCBzaG93IGFuIGFsZXJ0IGlmIGFueSBzZXR0aW5nIGlzIHNldCB0byBcImFwcHJvdmFsXCIgaW4gZGVtbyBtb2RlIChyb29tIG5hbWUgc3RhcnRzIHdpdGggXCJkXCIpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvcHRpb25zOiBNb2RpZnlTZXR0aW5nc09wdGlvbnMgPSB7XG4gKiAgIHNob3dBbGVydDogKGFsZXJ0KSA9PiBjb25zb2xlLmxvZyhhbGVydCksXG4gKiAgIHJvb21OYW1lOiAnZXhhbXBsZVJvb20nLFxuICogICBhdWRpb1NldDogJ2VuYWJsZWQnLFxuICogICB2aWRlb1NldDogJ2Rpc2FibGVkJyxcbiAqICAgc2NyZWVuc2hhcmVTZXQ6ICdhcHByb3ZhbCcsXG4gKiAgIGNoYXRTZXQ6ICdlbmFibGVkJyxcbiAqICAgc29ja2V0OiBzb2NrZXRJbnN0YW5jZSxcbiAqICAgdXBkYXRlQXVkaW9TZXR0aW5nOiAoYXVkaW8pID0+IGNvbnNvbGUubG9nKCdBdWRpbyBzZXR0aW5nIHVwZGF0ZWQ6JywgYXVkaW8pLFxuICogICB1cGRhdGVWaWRlb1NldHRpbmc6ICh2aWRlbykgPT4gY29uc29sZS5sb2coJ1ZpZGVvIHNldHRpbmcgdXBkYXRlZDonLCB2aWRlbyksXG4gKiAgIHVwZGF0ZVNjcmVlbnNoYXJlU2V0dGluZzogKHNjcmVlbnNoYXJlKSA9PiBjb25zb2xlLmxvZygnU2NyZWVuc2hhcmUgc2V0dGluZyB1cGRhdGVkOicsIHNjcmVlbnNoYXJlKSxcbiAqICAgdXBkYXRlQ2hhdFNldHRpbmc6IChjaGF0KSA9PiBjb25zb2xlLmxvZygnQ2hhdCBzZXR0aW5nIHVwZGF0ZWQ6JywgY2hhdCksXG4gKiAgIHVwZGF0ZUlzU2V0dGluZ3NNb2RhbFZpc2libGU6ICh2aXNpYmxlKSA9PiBjb25zb2xlLmxvZygnU2V0dGluZ3MgbW9kYWwgdmlzaWJpbGl0eTonLCB2aXNpYmxlKSxcbiAqIH07XG4gKlxuICogY29uc3QgbW9kaWZ5U2V0dGluZ3NTZXJ2aWNlID0gbmV3IE1vZGlmeVNldHRpbmdzKCk7XG4gKiBhd2FpdCBtb2RpZnlTZXR0aW5nc1NlcnZpY2UubW9kaWZ5U2V0dGluZ3Mob3B0aW9ucyk7XG4gKiBgYGBcbiAqL1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RpZnlTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBNb2RpZmllcyB0aGUgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4gcm9vbSBhbmQgdXBkYXRlcyB0aGUgc3RhdGUgYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIG1vZGlmeWluZyBzZXR0aW5ncy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5zaG93QWxlcnQgLSBGdW5jdGlvbiB0byBzaG93IGFsZXJ0IG1lc3NhZ2VzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5yb29tTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSByb29tLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5hdWRpb1NldCAtIFRoZSBhdWRpbyBzZXR0aW5nIHRvIGJlIGFwcGxpZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnZpZGVvU2V0IC0gVGhlIHZpZGVvIHNldHRpbmcgdG8gYmUgYXBwbGllZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuc2NyZWVuc2hhcmVTZXQgLSBUaGUgc2NyZWVuc2hhcmUgc2V0dGluZyB0byBiZSBhcHBsaWVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jaGF0U2V0IC0gVGhlIGNoYXQgc2V0dGluZyB0byBiZSBhcHBsaWVkLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5zb2NrZXQgLSBUaGUgc29ja2V0IGluc3RhbmNlIGZvciBlbWl0dGluZyBldmVudHMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlQXVkaW9TZXR0aW5nIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBhdWRpbyBzZXR0aW5nIHN0YXRlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnVwZGF0ZVZpZGVvU2V0dGluZyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlkZW8gc2V0dGluZyBzdGF0ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy51cGRhdGVTY3JlZW5zaGFyZVNldHRpbmcgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHNjcmVlbnNoYXJlIHNldHRpbmcgc3RhdGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlQ2hhdFNldHRpbmcgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIGNoYXQgc2V0dGluZyBzdGF0ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy51cGRhdGVJc1NldHRpbmdzTW9kYWxWaXNpYmxlIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBzZXR0aW5ncyBtb2RhbC5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGhhdmUgYmVlbiBtb2RpZmllZC5cbiAgICpcbiAgICogQHRocm93cyBXaWxsIHNob3cgYW4gYWxlcnQgaWYgYW55IHNldHRpbmcgaXMgc2V0IHRvIFwiYXBwcm92YWxcIiBpbiBkZW1vIG1vZGUgKHJvb20gbmFtZSBzdGFydHMgd2l0aCBcImRcIikuXG4gICAqL1xuXG4gIG1vZGlmeVNldHRpbmdzID0gYXN5bmMgKHtcbiAgICBzaG93QWxlcnQsXG4gICAgcm9vbU5hbWUsXG4gICAgYXVkaW9TZXQsXG4gICAgdmlkZW9TZXQsXG4gICAgc2NyZWVuc2hhcmVTZXQsXG4gICAgY2hhdFNldCxcbiAgICBzb2NrZXQsXG4gICAgdXBkYXRlQXVkaW9TZXR0aW5nLFxuICAgIHVwZGF0ZVZpZGVvU2V0dGluZyxcbiAgICB1cGRhdGVTY3JlZW5zaGFyZVNldHRpbmcsXG4gICAgdXBkYXRlQ2hhdFNldHRpbmcsXG4gICAgdXBkYXRlSXNTZXR0aW5nc01vZGFsVmlzaWJsZSxcbiAgfTogTW9kaWZ5U2V0dGluZ3NPcHRpb25zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgaWYgKHJvb21OYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgnZCcpKSB7XG4gICAgICAvLyBub25lIHNob3VsZCBiZSBhcHByb3ZhbFxuICAgICAgaWYgKFxuICAgICAgICBhdWRpb1NldCA9PT0gJ2FwcHJvdmFsJyB8fFxuICAgICAgICB2aWRlb1NldCA9PT0gJ2FwcHJvdmFsJyB8fFxuICAgICAgICBzY3JlZW5zaGFyZVNldCA9PT0gJ2FwcHJvdmFsJyB8fFxuICAgICAgICBjaGF0U2V0ID09PSAnYXBwcm92YWwnXG4gICAgICApIHtcbiAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgIG1lc3NhZ2U6ICdZb3UgY2Fubm90IHNldCBhcHByb3ZhbCBmb3IgZGVtbyBtb2RlLicsXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBhbmQgdXBkYXRlIHN0YXRlIHZhcmlhYmxlcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgbG9naWNcbiAgICBpZiAoYXVkaW9TZXQpIHtcbiAgICAgIHVwZGF0ZUF1ZGlvU2V0dGluZyhhdWRpb1NldCk7XG4gICAgfVxuICAgIGlmICh2aWRlb1NldCkge1xuICAgICAgdXBkYXRlVmlkZW9TZXR0aW5nKHZpZGVvU2V0KTtcbiAgICB9XG4gICAgaWYgKHNjcmVlbnNoYXJlU2V0KSB7XG4gICAgICB1cGRhdGVTY3JlZW5zaGFyZVNldHRpbmcoc2NyZWVuc2hhcmVTZXQpO1xuICAgIH1cbiAgICBpZiAoY2hhdFNldCkge1xuICAgICAgdXBkYXRlQ2hhdFNldHRpbmcoY2hhdFNldCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2V0dGluZ3MgPSBbYXVkaW9TZXQsIHZpZGVvU2V0LCBzY3JlZW5zaGFyZVNldCwgY2hhdFNldF07XG4gICAgc29ja2V0LmVtaXQoJ3VwZGF0ZVNldHRpbmdzRm9yUmVxdWVzdHMnLCB7IHNldHRpbmdzLCByb29tTmFtZSB9KTtcblxuICAgIC8vIENsb3NlIG1vZGFsXG4gICAgdXBkYXRlSXNTZXR0aW5nc01vZGFsVmlzaWJsZShmYWxzZSk7XG4gIH07XG59XG4iXX0=
|
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Handles the click event for toggling audio in a media session.
|
|
5
|
-
*
|
|
6
|
-
* @param {ClickAudioOptions} options - The parameters required for handling the audio click event.
|
|
7
|
-
* @param {Object} options.parameters - The parameters for toggling audio.
|
|
8
|
-
* @param {boolean} options.parameters.checkMediaPermission - Flag indicating whether to check media permission.
|
|
9
|
-
* @param {boolean} options.parameters.hasAudioPermission - Flag indicating if the user has audio permission.
|
|
10
|
-
* @param {boolean} options.parameters.audioPaused - Flag indicating if audio is paused.
|
|
11
|
-
* @param {boolean} options.parameters.audioAlreadyOn - Flag indicating if audio is already turned on.
|
|
12
|
-
* @param {boolean} options.parameters.audioOnlyRoom - Flag indicating if the room is audio-only.
|
|
13
|
-
* @param {boolean} options.parameters.recordStarted - Flag indicating if recording has started.
|
|
14
|
-
* @param {boolean} options.parameters.recordResumed - Flag indicating if recording has resumed.
|
|
15
|
-
* @param {boolean} options.parameters.recordPaused - Flag indicating if recording is paused.
|
|
16
|
-
* @param {boolean} options.parameters.recordStopped - Flag indicating if recording is stopped.
|
|
17
|
-
* @param {string} options.parameters.recordingMediaOptions - Media options for recording (e.g., "video", "audio").
|
|
18
|
-
* @param {string} options.parameters.islevel - User's level in the application.
|
|
19
|
-
* @param {boolean} options.parameters.youAreCoHost - Flag indicating if the user is a co-host.
|
|
20
|
-
* @param {boolean} options.parameters.adminRestrictSetting - Flag indicating if admin restrictions are set.
|
|
21
|
-
* @param {string | null} options.parameters.audioRequestState - Current state of the audio request.
|
|
22
|
-
* @param {number} options.parameters.audioRequestTime - Timestamp of the audio request.
|
|
23
|
-
* @param {string} options.parameters.member - Current member's name.
|
|
24
|
-
* @param {Socket} options.parameters.socket - The socket instance for communication.
|
|
25
|
-
* @param {string} options.parameters.roomName - The name of the room.
|
|
26
|
-
* @param {string} options.parameters.userDefaultAudioInputDevice - The default audio input device for the user.
|
|
27
|
-
* @param {boolean} options.parameters.micAction - Flag indicating if the microphone action is in progress.
|
|
28
|
-
* @param {MediaStream | null} options.parameters.localStream - The user's local media stream.
|
|
29
|
-
* @param {string} options.parameters.audioSetting - Current audio setting.
|
|
30
|
-
* @param {string} options.parameters.videoSetting - Current video setting.
|
|
31
|
-
* @param {string} options.parameters.screenshareSetting - Current screenshare setting.
|
|
32
|
-
* @param {string} options.parameters.chatSetting - Current chat setting.
|
|
33
|
-
* @param {number} options.parameters.updateRequestIntervalSeconds - Interval for updating request states.
|
|
34
|
-
* @param {Participant[]} options.parameters.participants - List of participants in the room.
|
|
35
|
-
* @param {boolean} options.parameters.transportCreated - Flag indicating if the transport has been created.
|
|
36
|
-
* @param {boolean} options.parameters.transportCreatedAudio - Flag indicating if audio transport has been created.
|
|
37
|
-
*
|
|
38
|
-
* @returns {Promise<void>} A promise that resolves when the audio click event has been handled.
|
|
39
|
-
*
|
|
40
|
-
* @remarks
|
|
41
|
-
* This function performs the following actions:
|
|
42
|
-
* - If the event is audio-only, it shows an alert and exits.
|
|
43
|
-
* - If the audio is already on, it handles the logic for turning it off, including checking recording states and permissions.
|
|
44
|
-
* - If the audio is off, it checks for admin restrictions, user permissions, and handles the logic for turning the audio on.
|
|
45
|
-
* - It updates various states and emits socket events as necessary.
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* ```typescript
|
|
49
|
-
* const options: ClickAudioOptions = {
|
|
50
|
-
* parameters: {
|
|
51
|
-
* checkMediaPermission: true,
|
|
52
|
-
* hasAudioPermission: false,
|
|
53
|
-
* audioPaused: false,
|
|
54
|
-
* audioAlreadyOn: false,
|
|
55
|
-
* audioOnlyRoom: false,
|
|
56
|
-
* recordStarted: false,
|
|
57
|
-
* recordResumed: false,
|
|
58
|
-
* recordPaused: false,
|
|
59
|
-
* recordStopped: false,
|
|
60
|
-
* recordingMediaOptions: 'audio',
|
|
61
|
-
* islevel: '1',
|
|
62
|
-
* youAreCoHost: false,
|
|
63
|
-
* adminRestrictSetting: false,
|
|
64
|
-
* audioRequestState: null,
|
|
65
|
-
* audioRequestTime: 0,
|
|
66
|
-
* member: 'John Doe',
|
|
67
|
-
* socket: socketInstance,
|
|
68
|
-
* roomName: 'exampleRoom',
|
|
69
|
-
* userDefaultAudioInputDevice: 'default',
|
|
70
|
-
* micAction: false,
|
|
71
|
-
* localStream: null,
|
|
72
|
-
* audioSetting: 'enabled',
|
|
73
|
-
* videoSetting: 'disabled',
|
|
74
|
-
* screenshareSetting: 'disabled',
|
|
75
|
-
* chatSetting: 'enabled',
|
|
76
|
-
* updateRequestIntervalSeconds: 30,
|
|
77
|
-
* participants: [],
|
|
78
|
-
* transportCreated: false,
|
|
79
|
-
* transportCreatedAudio: false,
|
|
80
|
-
* updateAudioAlreadyOn: (status) => console.log(status),
|
|
81
|
-
* updateAudioRequestState: (state) => console.log(state),
|
|
82
|
-
* updateAudioPaused: (status) => console.log(status),
|
|
83
|
-
* updateLocalStream: (stream) => console.log(stream),
|
|
84
|
-
* updateParticipants: (participants) => console.log(participants),
|
|
85
|
-
* updateTransportCreated: (status) => console.log(status),
|
|
86
|
-
* updateTransportCreatedAudio: (status) => console.log(status),
|
|
87
|
-
* updateMicAction: (action) => console.log(action),
|
|
88
|
-
* checkPermission: async () => 'granted',
|
|
89
|
-
* streamSuccessAudio: async () => console.log('Audio streaming success'),
|
|
90
|
-
* disconnectSendTransportAudio: async () => console.log('Audio transport disconnected'),
|
|
91
|
-
* requestPermissionAudio: async () => 'granted',
|
|
92
|
-
* resumeSendTransportAudio: async () => console.log('Audio transport resumed'),
|
|
93
|
-
* },
|
|
94
|
-
* };
|
|
95
|
-
*
|
|
96
|
-
* const clickAudioService = new ClickAudio();
|
|
97
|
-
* await clickAudioService.clickAudio(options);
|
|
98
|
-
* ```
|
|
99
|
-
*/
|
|
100
|
-
export class ClickAudio {
|
|
101
|
-
/**
|
|
102
|
-
* Handles the click event for toggling audio in a media session.
|
|
103
|
-
*
|
|
104
|
-
* @param {ClickAudioOptions} parameters - The parameters required for handling the audio click event.
|
|
105
|
-
* @returns {Promise<void>} A promise that resolves when the audio click event has been handled.
|
|
106
|
-
*
|
|
107
|
-
* The function performs the following actions:
|
|
108
|
-
* - If the event is audio-only, it shows an alert and exits.
|
|
109
|
-
* - If the audio is already on, it handles the logic for turning it off, including checking recording states and permissions.
|
|
110
|
-
* - If the audio is off, it checks for admin restrictions, user permissions, and handles the logic for turning the audio on.
|
|
111
|
-
* - It updates various states and emits socket events as necessary.
|
|
112
|
-
*
|
|
113
|
-
* The function makes use of several helper functions and state update functions passed in through the parameters.
|
|
114
|
-
*/
|
|
115
|
-
async clickAudio({ parameters }) {
|
|
116
|
-
let { checkMediaPermission, hasAudioPermission, audioPaused, audioAlreadyOn, audioOnlyRoom, recordStarted, recordResumed, recordPaused, recordStopped, recordingMediaOptions, islevel, youAreCoHost, adminRestrictSetting, audioRequestState, audioRequestTime, member, socket, roomName, userDefaultAudioInputDevice, micAction, localStream, audioSetting, videoSetting, screenshareSetting, chatSetting, updateRequestIntervalSeconds, participants, showAlert, transportCreated, transportCreatedAudio, updateAudioAlreadyOn, updateAudioRequestState, updateAudioPaused, updateLocalStream, updateParticipants, updateTransportCreated, updateTransportCreatedAudio, updateMicAction, checkPermission, streamSuccessAudio, requestPermissionAudio, resumeSendTransportAudio, disconnectSendTransportAudio, } = parameters;
|
|
117
|
-
if (audioOnlyRoom) {
|
|
118
|
-
showAlert?.({
|
|
119
|
-
message: 'You cannot turn on your camera in an audio-only event.',
|
|
120
|
-
type: 'danger',
|
|
121
|
-
duration: 3000,
|
|
122
|
-
});
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
if (audioAlreadyOn) {
|
|
126
|
-
if (islevel === '2' && (recordStarted || recordResumed)) {
|
|
127
|
-
if (!(recordPaused || recordStopped)) {
|
|
128
|
-
if (recordingMediaOptions === 'audio') {
|
|
129
|
-
showAlert?.({
|
|
130
|
-
message: 'You cannot turn off your audio while recording, please pause or stop recording first.',
|
|
131
|
-
type: 'danger',
|
|
132
|
-
duration: 3000,
|
|
133
|
-
});
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
audioAlreadyOn = false;
|
|
139
|
-
updateAudioAlreadyOn(audioAlreadyOn);
|
|
140
|
-
if (localStream) {
|
|
141
|
-
localStream.getAudioTracks()[0].enabled = false;
|
|
142
|
-
}
|
|
143
|
-
updateLocalStream(localStream);
|
|
144
|
-
await disconnectSendTransportAudio({ parameters }); //disconnect function here actuall calls audioProducer.pause() instead of close() as in mediasfu
|
|
145
|
-
audioPaused = true;
|
|
146
|
-
updateAudioPaused(audioPaused);
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
if (adminRestrictSetting) {
|
|
150
|
-
showAlert?.({
|
|
151
|
-
message: 'You cannot turn on your microphone. Access denied by host.',
|
|
152
|
-
type: 'danger',
|
|
153
|
-
duration: 3000,
|
|
154
|
-
});
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
let response = 2;
|
|
158
|
-
if (!micAction && islevel !== '2' && !youAreCoHost) {
|
|
159
|
-
response = await checkPermission({
|
|
160
|
-
permissionType: 'audioSetting',
|
|
161
|
-
audioSetting,
|
|
162
|
-
videoSetting,
|
|
163
|
-
screenshareSetting,
|
|
164
|
-
chatSetting,
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
response = 0;
|
|
169
|
-
}
|
|
170
|
-
switch (response) {
|
|
171
|
-
case 1: {
|
|
172
|
-
if (audioRequestState === 'pending') {
|
|
173
|
-
showAlert?.({
|
|
174
|
-
message: 'A request is pending. Please wait for the host to respond.',
|
|
175
|
-
type: 'danger',
|
|
176
|
-
duration: 3000,
|
|
177
|
-
});
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
showAlert?.({
|
|
181
|
-
message: 'Request sent to host.',
|
|
182
|
-
type: 'success',
|
|
183
|
-
duration: 3000,
|
|
184
|
-
});
|
|
185
|
-
audioRequestState = 'pending';
|
|
186
|
-
updateAudioRequestState(audioRequestState);
|
|
187
|
-
//create a request and add to the request list and send to host
|
|
188
|
-
const userRequest = {
|
|
189
|
-
id: socket.id,
|
|
190
|
-
name: member,
|
|
191
|
-
icon: 'fa-microphone',
|
|
192
|
-
};
|
|
193
|
-
socket.emit('participantRequest', { userRequest, roomName });
|
|
194
|
-
break;
|
|
195
|
-
}
|
|
196
|
-
case 2:
|
|
197
|
-
if (audioRequestState === 'rejected' &&
|
|
198
|
-
Date.now() - audioRequestTime < updateRequestIntervalSeconds * 1000) {
|
|
199
|
-
showAlert?.({
|
|
200
|
-
message: `A request was rejected. Please wait for ${updateRequestIntervalSeconds} seconds before sending another request.`,
|
|
201
|
-
type: 'danger',
|
|
202
|
-
duration: 3000,
|
|
203
|
-
});
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
break;
|
|
207
|
-
case 0:
|
|
208
|
-
//allow
|
|
209
|
-
if (audioPaused) {
|
|
210
|
-
if (localStream) {
|
|
211
|
-
localStream.getAudioTracks()[0].enabled = true;
|
|
212
|
-
}
|
|
213
|
-
updateAudioAlreadyOn(true);
|
|
214
|
-
await resumeSendTransportAudio({ parameters });
|
|
215
|
-
socket.emit('resumeProducerAudio', { mediaTag: 'audio', roomName });
|
|
216
|
-
updateLocalStream(localStream);
|
|
217
|
-
updateAudioAlreadyOn(audioAlreadyOn);
|
|
218
|
-
if (micAction == true) {
|
|
219
|
-
micAction = false;
|
|
220
|
-
updateMicAction(micAction);
|
|
221
|
-
}
|
|
222
|
-
participants.forEach((participant) => {
|
|
223
|
-
if (participant['socketId'] === socket.id && participant.name === member) {
|
|
224
|
-
participant.muted = false;
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
updateParticipants(participants);
|
|
228
|
-
transportCreated = true;
|
|
229
|
-
updateTransportCreated(transportCreated);
|
|
230
|
-
transportCreatedAudio = true;
|
|
231
|
-
updateTransportCreatedAudio(transportCreatedAudio);
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
if (!hasAudioPermission && checkMediaPermission) {
|
|
235
|
-
const statusMic = await requestPermissionAudio();
|
|
236
|
-
if (statusMic !== 'granted') {
|
|
237
|
-
showAlert?.({
|
|
238
|
-
message: 'Allow access to your microphone or check if your microphone is not being used by another application.',
|
|
239
|
-
type: 'danger',
|
|
240
|
-
duration: 3000,
|
|
241
|
-
});
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
const mediaConstraints = userDefaultAudioInputDevice
|
|
246
|
-
? { audio: { deviceId: userDefaultAudioInputDevice }, video: false }
|
|
247
|
-
: { audio: true, video: false };
|
|
248
|
-
try {
|
|
249
|
-
const stream = await navigator.mediaDevices.getUserMedia(mediaConstraints);
|
|
250
|
-
await streamSuccessAudio({ stream, parameters });
|
|
251
|
-
}
|
|
252
|
-
catch (error) {
|
|
253
|
-
console.error(error);
|
|
254
|
-
showAlert?.({
|
|
255
|
-
message: 'Allow access to your microphone or check if your microphone is not being used by another application.',
|
|
256
|
-
type: 'danger',
|
|
257
|
-
duration: 3000,
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
break;
|
|
262
|
-
default:
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ClickAudio, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
267
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ClickAudio, providedIn: 'root' });
|
|
268
|
-
}
|
|
269
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ClickAudio, decorators: [{
|
|
270
|
-
type: Injectable,
|
|
271
|
-
args: [{
|
|
272
|
-
providedIn: 'root',
|
|
273
|
-
}]
|
|
274
|
-
}] });
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stYXVkaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9tZXRob2RzL3N0cmVhbS1tZXRob2RzL2NsaWNrLWF1ZGlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUE4RTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnR0c7QUFLSCxNQUFNLE9BQU8sVUFBVTtJQUNyQjs7Ozs7Ozs7Ozs7OztPQWFHO0lBRUgsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBcUI7UUFDaEQsSUFBSSxFQUNGLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsRUFDYixZQUFZLEVBQ1osYUFBYSxFQUNiLHFCQUFxQixFQUNyQixPQUFPLEVBQ1AsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLDJCQUEyQixFQUMzQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCw0QkFBNEIsRUFDNUIsWUFBWSxFQUNaLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBRXJCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLDJCQUEyQixFQUMzQixlQUFlLEVBRWYsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLDRCQUE0QixHQUM3QixHQUFHLFVBQVUsQ0FBQztRQUVmLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsU0FBUyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxFQUFFLHdEQUF3RDtnQkFDakUsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsSUFBSSxPQUFPLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxDQUFDLFlBQVksSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDO29CQUNyQyxJQUFJLHFCQUFxQixLQUFLLE9BQU8sRUFBRSxDQUFDO3dCQUN0QyxTQUFTLEVBQUUsQ0FBQzs0QkFDVixPQUFPLEVBQ0wsdUZBQXVGOzRCQUN6RixJQUFJLEVBQUUsUUFBUTs0QkFDZCxRQUFRLEVBQUUsSUFBSTt5QkFDZixDQUFDLENBQUM7d0JBQ0gsT0FBTztvQkFDVCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUN2QixvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyQyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNsRCxDQUFDO1lBQ0QsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0IsTUFBTSw0QkFBNEIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnR0FBZ0c7WUFDcEosV0FBVyxHQUFHLElBQUksQ0FBQztZQUNuQixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksb0JBQW9CLEVBQUUsQ0FBQztnQkFDekIsU0FBUyxFQUFFLENBQUM7b0JBQ1YsT0FBTyxFQUFFLDREQUE0RDtvQkFDckUsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFDO2dCQUNILE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuRCxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUM7b0JBQy9CLGNBQWMsRUFBRSxjQUFjO29CQUM5QixZQUFZO29CQUNaLFlBQVk7b0JBQ1osa0JBQWtCO29CQUNsQixXQUFXO2lCQUNaLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztZQUVELFFBQVEsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDUCxJQUFJLGlCQUFpQixLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUNwQyxTQUFTLEVBQUUsQ0FBQzs0QkFDVixPQUFPLEVBQUUsNERBQTREOzRCQUNyRSxJQUFJLEVBQUUsUUFBUTs0QkFDZCxRQUFRLEVBQUUsSUFBSTt5QkFDZixDQUFDLENBQUM7d0JBQ0gsT0FBTztvQkFDVCxDQUFDO29CQUVELFNBQVMsRUFBRSxDQUFDO3dCQUNWLE9BQU8sRUFBRSx1QkFBdUI7d0JBQ2hDLElBQUksRUFBRSxTQUFTO3dCQUNmLFFBQVEsRUFBRSxJQUFJO3FCQUNmLENBQUMsQ0FBQztvQkFFSCxpQkFBaUIsR0FBRyxTQUFTLENBQUM7b0JBQzlCLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQzNDLCtEQUErRDtvQkFFL0QsTUFBTSxXQUFXLEdBQUc7d0JBQ2xCLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTt3QkFDYixJQUFJLEVBQUUsTUFBTTt3QkFDWixJQUFJLEVBQUUsZUFBZTtxQkFDdEIsQ0FBQztvQkFDRixNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQzdELE1BQU07Z0JBQ1IsQ0FBQztnQkFFRCxLQUFLLENBQUM7b0JBQ0osSUFDRSxpQkFBaUIsS0FBSyxVQUFVO3dCQUNoQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsZ0JBQWdCLEdBQUcsNEJBQTRCLEdBQUcsSUFBSSxFQUNuRSxDQUFDO3dCQUNELFNBQVMsRUFBRSxDQUFDOzRCQUNWLE9BQU8sRUFBRSwyQ0FBMkMsNEJBQTRCLDBDQUEwQzs0QkFDMUgsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsUUFBUSxFQUFFLElBQUk7eUJBQ2YsQ0FBQyxDQUFDO3dCQUNILE9BQU87b0JBQ1QsQ0FBQztvQkFDRCxNQUFNO2dCQUVSLEtBQUssQ0FBQztvQkFDSixPQUFPO29CQUVQLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2hCLElBQUksV0FBVyxFQUFFLENBQUM7NEJBQ2hCLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUNqRCxDQUFDO3dCQUNELG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMzQixNQUFNLHdCQUF3QixDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQzt3QkFDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQzt3QkFFcEUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQy9CLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUVyQyxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQzs0QkFDdEIsU0FBUyxHQUFHLEtBQUssQ0FBQzs0QkFDbEIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUM3QixDQUFDO3dCQUVELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTs0QkFDbkMsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLEtBQUssTUFBTSxDQUFDLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dDQUN6RSxXQUFXLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzs0QkFDNUIsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQzt3QkFDSCxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQzt3QkFFakMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO3dCQUN4QixzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUV6QyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7d0JBQzdCLDJCQUEyQixDQUFDLHFCQUFxQixDQUFDLENBQUM7b0JBQ3JELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLENBQUMsa0JBQWtCLElBQUksb0JBQW9CLEVBQUUsQ0FBQzs0QkFDaEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxzQkFBc0IsRUFBRSxDQUFDOzRCQUNqRCxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQ0FDNUIsU0FBUyxFQUFFLENBQUM7b0NBQ1YsT0FBTyxFQUNMLHVHQUF1RztvQ0FDekcsSUFBSSxFQUFFLFFBQVE7b0NBQ2QsUUFBUSxFQUFFLElBQUk7aUNBQ2YsQ0FBQyxDQUFDO2dDQUNILE9BQU87NEJBQ1QsQ0FBQzt3QkFDSCxDQUFDO3dCQUVELE1BQU0sZ0JBQWdCLEdBQUcsMkJBQTJCOzRCQUNsRCxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFOzRCQUNwRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQzt3QkFFbEMsSUFBSSxDQUFDOzRCQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzs0QkFDM0UsTUFBTSxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO3dCQUNuRCxDQUFDO3dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7NEJBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDckIsU0FBUyxFQUFFLENBQUM7Z0NBQ1YsT0FBTyxFQUNMLHVHQUF1RztnQ0FDekcsSUFBSSxFQUFFLFFBQVE7Z0NBQ2QsUUFBUSxFQUFFLElBQUk7NkJBQ2YsQ0FBQyxDQUFDO3dCQUNMLENBQUM7b0JBQ0gsQ0FBQztvQkFDRCxNQUFNO2dCQUVSLFFBQVE7WUFDVixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7dUdBeE9VLFVBQVU7MkdBQVYsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2hlY2tQZXJtaXNzaW9uVHlwZSxcbiAgRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpb1BhcmFtZXRlcnMsXG4gIERpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW9UeXBlLFxuICBQYXJ0aWNpcGFudCxcbiAgUmVxdWVzdFBlcm1pc3Npb25BdWRpb1R5cGUsXG4gIFJlc3VtZVNlbmRUcmFuc3BvcnRBdWRpb1BhcmFtZXRlcnMsXG4gIFJlc3VtZVNlbmRUcmFuc3BvcnRBdWRpb1R5cGUsXG4gIFNob3dBbGVydCxcbiAgU3RyZWFtU3VjY2Vzc0F1ZGlvUGFyYW1ldGVycyxcbiAgU3RyZWFtU3VjY2Vzc0F1ZGlvVHlwZSxcbn0gZnJvbSAnLi4vLi4vQHR5cGVzL3R5cGVzJztcbmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ3NvY2tldC5pby1jbGllbnQnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tBdWRpb1BhcmFtZXRlcnNcbiAgZXh0ZW5kcyBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvUGFyYW1ldGVycyxcbiAgICBSZXN1bWVTZW5kVHJhbnNwb3J0QXVkaW9QYXJhbWV0ZXJzLFxuICAgIFN0cmVhbVN1Y2Nlc3NBdWRpb1BhcmFtZXRlcnMge1xuICBjaGVja01lZGlhUGVybWlzc2lvbjogYm9vbGVhbjtcbiAgaGFzQXVkaW9QZXJtaXNzaW9uOiBib29sZWFuO1xuICBhdWRpb1BhdXNlZDogYm9vbGVhbjtcbiAgYXVkaW9BbHJlYWR5T246IGJvb2xlYW47XG4gIGF1ZGlvT25seVJvb206IGJvb2xlYW47XG4gIHJlY29yZFN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHJlY29yZFJlc3VtZWQ6IGJvb2xlYW47XG4gIHJlY29yZFBhdXNlZDogYm9vbGVhbjtcbiAgcmVjb3JkU3RvcHBlZDogYm9vbGVhbjtcbiAgcmVjb3JkaW5nTWVkaWFPcHRpb25zOiBzdHJpbmc7XG4gIGlzbGV2ZWw6IHN0cmluZztcbiAgeW91QXJlQ29Ib3N0OiBib29sZWFuO1xuICBhZG1pblJlc3RyaWN0U2V0dGluZzogYm9vbGVhbjtcbiAgYXVkaW9SZXF1ZXN0U3RhdGU6IHN0cmluZyB8IG51bGw7XG4gIGF1ZGlvUmVxdWVzdFRpbWU6IG51bWJlcjtcbiAgbWVtYmVyOiBzdHJpbmc7XG4gIHNvY2tldDogU29ja2V0O1xuICByb29tTmFtZTogc3RyaW5nO1xuICB1c2VyRGVmYXVsdEF1ZGlvSW5wdXREZXZpY2U6IHN0cmluZztcbiAgbWljQWN0aW9uOiBib29sZWFuO1xuICBsb2NhbFN0cmVhbTogTWVkaWFTdHJlYW0gfCBudWxsO1xuICBhdWRpb1NldHRpbmc6IHN0cmluZztcbiAgdmlkZW9TZXR0aW5nOiBzdHJpbmc7XG4gIHNjcmVlbnNoYXJlU2V0dGluZzogc3RyaW5nO1xuICBjaGF0U2V0dGluZzogc3RyaW5nO1xuICB1cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzOiBudW1iZXI7XG4gIHBhcnRpY2lwYW50czogUGFydGljaXBhbnRbXTtcbiAgdHJhbnNwb3J0Q3JlYXRlZDogYm9vbGVhbjtcbiAgdHJhbnNwb3J0Q3JlYXRlZEF1ZGlvOiBib29sZWFuO1xuXG4gIHVwZGF0ZUF1ZGlvQWxyZWFkeU9uOiAoc3RhdHVzOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVBdWRpb1JlcXVlc3RTdGF0ZTogKHN0YXRlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkO1xuICB1cGRhdGVBdWRpb1BhdXNlZDogKHN0YXR1czogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlTG9jYWxTdHJlYW06IChzdHJlYW06IE1lZGlhU3RyZWFtIHwgbnVsbCkgPT4gdm9pZDtcbiAgdXBkYXRlUGFydGljaXBhbnRzOiAocGFydGljaXBhbnRzOiBQYXJ0aWNpcGFudFtdKSA9PiB2b2lkO1xuICB1cGRhdGVUcmFuc3BvcnRDcmVhdGVkOiAoc3RhdHVzOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVUcmFuc3BvcnRDcmVhdGVkQXVkaW86IChzdGF0dXM6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZU1pY0FjdGlvbjogKGFjdGlvbjogYm9vbGVhbikgPT4gdm9pZDtcbiAgc2hvd0FsZXJ0PzogU2hvd0FsZXJ0O1xuXG4gIC8vIG1lZGlhc2Z1IGZ1bmN0aW9uc1xuICBjaGVja1Blcm1pc3Npb246IENoZWNrUGVybWlzc2lvblR5cGU7XG4gIHN0cmVhbVN1Y2Nlc3NBdWRpbzogU3RyZWFtU3VjY2Vzc0F1ZGlvVHlwZTtcbiAgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpbzogRGlzY29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpb1R5cGU7XG4gIHJlcXVlc3RQZXJtaXNzaW9uQXVkaW86IFJlcXVlc3RQZXJtaXNzaW9uQXVkaW9UeXBlO1xuICByZXN1bWVTZW5kVHJhbnNwb3J0QXVkaW86IFJlc3VtZVNlbmRUcmFuc3BvcnRBdWRpb1R5cGU7XG5cbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gQ2xpY2tBdWRpb1BhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGlja0F1ZGlvT3B0aW9ucyB7XG4gIHBhcmFtZXRlcnM6IENsaWNrQXVkaW9QYXJhbWV0ZXJzO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBDbGlja0F1ZGlvVHlwZSA9IChvcHRpb25zOiBDbGlja0F1ZGlvT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuLyoqXG4gKiBIYW5kbGVzIHRoZSBjbGljayBldmVudCBmb3IgdG9nZ2xpbmcgYXVkaW8gaW4gYSBtZWRpYSBzZXNzaW9uLlxuICpcbiAqIEBwYXJhbSB7Q2xpY2tBdWRpb09wdGlvbnN9IG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyByZXF1aXJlZCBmb3IgaGFuZGxpbmcgdGhlIGF1ZGlvIGNsaWNrIGV2ZW50LlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0b2dnbGluZyBhdWRpby5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmNoZWNrTWVkaWFQZXJtaXNzaW9uIC0gRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gY2hlY2sgbWVkaWEgcGVybWlzc2lvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmhhc0F1ZGlvUGVybWlzc2lvbiAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgdXNlciBoYXMgYXVkaW8gcGVybWlzc2lvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmF1ZGlvUGF1c2VkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIGF1ZGlvIGlzIHBhdXNlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmF1ZGlvQWxyZWFkeU9uIC0gRmxhZyBpbmRpY2F0aW5nIGlmIGF1ZGlvIGlzIGFscmVhZHkgdHVybmVkIG9uLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMuYXVkaW9Pbmx5Um9vbSAtIEZsYWcgaW5kaWNhdGluZyBpZiB0aGUgcm9vbSBpcyBhdWRpby1vbmx5LlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkU3RhcnRlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRSZXN1bWVkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHJlY29yZGluZyBoYXMgcmVzdW1lZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZFBhdXNlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiByZWNvcmRpbmcgaXMgcGF1c2VkLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkU3RvcHBlZCAtIEZsYWcgaW5kaWNhdGluZyBpZiByZWNvcmRpbmcgaXMgc3RvcHBlZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkaW5nTWVkaWFPcHRpb25zIC0gTWVkaWEgb3B0aW9ucyBmb3IgcmVjb3JkaW5nIChlLmcuLCBcInZpZGVvXCIsIFwiYXVkaW9cIikuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLmlzbGV2ZWwgLSBVc2VyJ3MgbGV2ZWwgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMueW91QXJlQ29Ib3N0IC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSB1c2VyIGlzIGEgY28taG9zdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmFkbWluUmVzdHJpY3RTZXR0aW5nIC0gRmxhZyBpbmRpY2F0aW5nIGlmIGFkbWluIHJlc3RyaWN0aW9ucyBhcmUgc2V0LlxuICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBvcHRpb25zLnBhcmFtZXRlcnMuYXVkaW9SZXF1ZXN0U3RhdGUgLSBDdXJyZW50IHN0YXRlIG9mIHRoZSBhdWRpbyByZXF1ZXN0LlxuICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy5hdWRpb1JlcXVlc3RUaW1lIC0gVGltZXN0YW1wIG9mIHRoZSBhdWRpbyByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5tZW1iZXIgLSBDdXJyZW50IG1lbWJlcidzIG5hbWUuXG4gKiBAcGFyYW0ge1NvY2tldH0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNvY2tldCAtIFRoZSBzb2NrZXQgaW5zdGFuY2UgZm9yIGNvbW11bmljYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnJvb21OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHJvb20uXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnVzZXJEZWZhdWx0QXVkaW9JbnB1dERldmljZSAtIFRoZSBkZWZhdWx0IGF1ZGlvIGlucHV0IGRldmljZSBmb3IgdGhlIHVzZXIuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5taWNBY3Rpb24gLSBGbGFnIGluZGljYXRpbmcgaWYgdGhlIG1pY3JvcGhvbmUgYWN0aW9uIGlzIGluIHByb2dyZXNzLlxuICogQHBhcmFtIHtNZWRpYVN0cmVhbSB8IG51bGx9IG9wdGlvbnMucGFyYW1ldGVycy5sb2NhbFN0cmVhbSAtIFRoZSB1c2VyJ3MgbG9jYWwgbWVkaWEgc3RyZWFtLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5hdWRpb1NldHRpbmcgLSBDdXJyZW50IGF1ZGlvIHNldHRpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnZpZGVvU2V0dGluZyAtIEN1cnJlbnQgdmlkZW8gc2V0dGluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMuc2NyZWVuc2hhcmVTZXR0aW5nIC0gQ3VycmVudCBzY3JlZW5zaGFyZSBzZXR0aW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFyYW1ldGVycy5jaGF0U2V0dGluZyAtIEN1cnJlbnQgY2hhdCBzZXR0aW5nLlxuICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzIC0gSW50ZXJ2YWwgZm9yIHVwZGF0aW5nIHJlcXVlc3Qgc3RhdGVzLlxuICogQHBhcmFtIHtQYXJ0aWNpcGFudFtdfSBvcHRpb25zLnBhcmFtZXRlcnMucGFydGljaXBhbnRzIC0gTGlzdCBvZiBwYXJ0aWNpcGFudHMgaW4gdGhlIHJvb20uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy50cmFuc3BvcnRDcmVhdGVkIC0gRmxhZyBpbmRpY2F0aW5nIGlmIHRoZSB0cmFuc3BvcnQgaGFzIGJlZW4gY3JlYXRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnRyYW5zcG9ydENyZWF0ZWRBdWRpbyAtIEZsYWcgaW5kaWNhdGluZyBpZiBhdWRpbyB0cmFuc3BvcnQgaGFzIGJlZW4gY3JlYXRlZC5cbiAqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYXVkaW8gY2xpY2sgZXZlbnQgaGFzIGJlZW4gaGFuZGxlZC5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIGFjdGlvbnM6XG4gKiAtIElmIHRoZSBldmVudCBpcyBhdWRpby1vbmx5LCBpdCBzaG93cyBhbiBhbGVydCBhbmQgZXhpdHMuXG4gKiAtIElmIHRoZSBhdWRpbyBpcyBhbHJlYWR5IG9uLCBpdCBoYW5kbGVzIHRoZSBsb2dpYyBmb3IgdHVybmluZyBpdCBvZmYsIGluY2x1ZGluZyBjaGVja2luZyByZWNvcmRpbmcgc3RhdGVzIGFuZCBwZXJtaXNzaW9ucy5cbiAqIC0gSWYgdGhlIGF1ZGlvIGlzIG9mZiwgaXQgY2hlY2tzIGZvciBhZG1pbiByZXN0cmljdGlvbnMsIHVzZXIgcGVybWlzc2lvbnMsIGFuZCBoYW5kbGVzIHRoZSBsb2dpYyBmb3IgdHVybmluZyB0aGUgYXVkaW8gb24uXG4gKiAtIEl0IHVwZGF0ZXMgdmFyaW91cyBzdGF0ZXMgYW5kIGVtaXRzIHNvY2tldCBldmVudHMgYXMgbmVjZXNzYXJ5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvcHRpb25zOiBDbGlja0F1ZGlvT3B0aW9ucyA9IHtcbiAqICAgcGFyYW1ldGVyczoge1xuICogICAgIGNoZWNrTWVkaWFQZXJtaXNzaW9uOiB0cnVlLFxuICogICAgIGhhc0F1ZGlvUGVybWlzc2lvbjogZmFsc2UsXG4gKiAgICAgYXVkaW9QYXVzZWQ6IGZhbHNlLFxuICogICAgIGF1ZGlvQWxyZWFkeU9uOiBmYWxzZSxcbiAqICAgICBhdWRpb09ubHlSb29tOiBmYWxzZSxcbiAqICAgICByZWNvcmRTdGFydGVkOiBmYWxzZSxcbiAqICAgICByZWNvcmRSZXN1bWVkOiBmYWxzZSxcbiAqICAgICByZWNvcmRQYXVzZWQ6IGZhbHNlLFxuICogICAgIHJlY29yZFN0b3BwZWQ6IGZhbHNlLFxuICogICAgIHJlY29yZGluZ01lZGlhT3B0aW9uczogJ2F1ZGlvJyxcbiAqICAgICBpc2xldmVsOiAnMScsXG4gKiAgICAgeW91QXJlQ29Ib3N0OiBmYWxzZSxcbiAqICAgICBhZG1pblJlc3RyaWN0U2V0dGluZzogZmFsc2UsXG4gKiAgICAgYXVkaW9SZXF1ZXN0U3RhdGU6IG51bGwsXG4gKiAgICAgYXVkaW9SZXF1ZXN0VGltZTogMCxcbiAqICAgICBtZW1iZXI6ICdKb2huIERvZScsXG4gKiAgICAgc29ja2V0OiBzb2NrZXRJbnN0YW5jZSxcbiAqICAgICByb29tTmFtZTogJ2V4YW1wbGVSb29tJyxcbiAqICAgICB1c2VyRGVmYXVsdEF1ZGlvSW5wdXREZXZpY2U6ICdkZWZhdWx0JyxcbiAqICAgICBtaWNBY3Rpb246IGZhbHNlLFxuICogICAgIGxvY2FsU3RyZWFtOiBudWxsLFxuICogICAgIGF1ZGlvU2V0dGluZzogJ2VuYWJsZWQnLFxuICogICAgIHZpZGVvU2V0dGluZzogJ2Rpc2FibGVkJyxcbiAqICAgICBzY3JlZW5zaGFyZVNldHRpbmc6ICdkaXNhYmxlZCcsXG4gKiAgICAgY2hhdFNldHRpbmc6ICdlbmFibGVkJyxcbiAqICAgICB1cGRhdGVSZXF1ZXN0SW50ZXJ2YWxTZWNvbmRzOiAzMCxcbiAqICAgICBwYXJ0aWNpcGFudHM6IFtdLFxuICogICAgIHRyYW5zcG9ydENyZWF0ZWQ6IGZhbHNlLFxuICogICAgIHRyYW5zcG9ydENyZWF0ZWRBdWRpbzogZmFsc2UsXG4gKiAgICAgdXBkYXRlQXVkaW9BbHJlYWR5T246IChzdGF0dXMpID0+IGNvbnNvbGUubG9nKHN0YXR1cyksXG4gKiAgICAgdXBkYXRlQXVkaW9SZXF1ZXN0U3RhdGU6IChzdGF0ZSkgPT4gY29uc29sZS5sb2coc3RhdGUpLFxuICogICAgIHVwZGF0ZUF1ZGlvUGF1c2VkOiAoc3RhdHVzKSA9PiBjb25zb2xlLmxvZyhzdGF0dXMpLFxuICogICAgIHVwZGF0ZUxvY2FsU3RyZWFtOiAoc3RyZWFtKSA9PiBjb25zb2xlLmxvZyhzdHJlYW0pLFxuICogICAgIHVwZGF0ZVBhcnRpY2lwYW50czogKHBhcnRpY2lwYW50cykgPT4gY29uc29sZS5sb2cocGFydGljaXBhbnRzKSxcbiAqICAgICB1cGRhdGVUcmFuc3BvcnRDcmVhdGVkOiAoc3RhdHVzKSA9PiBjb25zb2xlLmxvZyhzdGF0dXMpLFxuICogICAgIHVwZGF0ZVRyYW5zcG9ydENyZWF0ZWRBdWRpbzogKHN0YXR1cykgPT4gY29uc29sZS5sb2coc3RhdHVzKSxcbiAqICAgICB1cGRhdGVNaWNBY3Rpb246IChhY3Rpb24pID0+IGNvbnNvbGUubG9nKGFjdGlvbiksXG4gKiAgICAgY2hlY2tQZXJtaXNzaW9uOiBhc3luYyAoKSA9PiAnZ3JhbnRlZCcsXG4gKiAgICAgc3RyZWFtU3VjY2Vzc0F1ZGlvOiBhc3luYyAoKSA9PiBjb25zb2xlLmxvZygnQXVkaW8gc3RyZWFtaW5nIHN1Y2Nlc3MnKSxcbiAqICAgICBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvOiBhc3luYyAoKSA9PiBjb25zb2xlLmxvZygnQXVkaW8gdHJhbnNwb3J0IGRpc2Nvbm5lY3RlZCcpLFxuICogICAgIHJlcXVlc3RQZXJtaXNzaW9uQXVkaW86IGFzeW5jICgpID0+ICdncmFudGVkJyxcbiAqICAgICByZXN1bWVTZW5kVHJhbnNwb3J0QXVkaW86IGFzeW5jICgpID0+IGNvbnNvbGUubG9nKCdBdWRpbyB0cmFuc3BvcnQgcmVzdW1lZCcpLFxuICogICB9LFxuICogfTtcbiAqXG4gKiBjb25zdCBjbGlja0F1ZGlvU2VydmljZSA9IG5ldyBDbGlja0F1ZGlvKCk7XG4gKiBhd2FpdCBjbGlja0F1ZGlvU2VydmljZS5jbGlja0F1ZGlvKG9wdGlvbnMpO1xuICogYGBgXG4gKi9cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENsaWNrQXVkaW8ge1xuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2xpY2sgZXZlbnQgZm9yIHRvZ2dsaW5nIGF1ZGlvIGluIGEgbWVkaWEgc2Vzc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIHtDbGlja0F1ZGlvT3B0aW9uc30gcGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIHJlcXVpcmVkIGZvciBoYW5kbGluZyB0aGUgYXVkaW8gY2xpY2sgZXZlbnQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBhdWRpbyBjbGljayBldmVudCBoYXMgYmVlbiBoYW5kbGVkLlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBhY3Rpb25zOlxuICAgKiAtIElmIHRoZSBldmVudCBpcyBhdWRpby1vbmx5LCBpdCBzaG93cyBhbiBhbGVydCBhbmQgZXhpdHMuXG4gICAqIC0gSWYgdGhlIGF1ZGlvIGlzIGFscmVhZHkgb24sIGl0IGhhbmRsZXMgdGhlIGxvZ2ljIGZvciB0dXJuaW5nIGl0IG9mZiwgaW5jbHVkaW5nIGNoZWNraW5nIHJlY29yZGluZyBzdGF0ZXMgYW5kIHBlcm1pc3Npb25zLlxuICAgKiAtIElmIHRoZSBhdWRpbyBpcyBvZmYsIGl0IGNoZWNrcyBmb3IgYWRtaW4gcmVzdHJpY3Rpb25zLCB1c2VyIHBlcm1pc3Npb25zLCBhbmQgaGFuZGxlcyB0aGUgbG9naWMgZm9yIHR1cm5pbmcgdGhlIGF1ZGlvIG9uLlxuICAgKiAtIEl0IHVwZGF0ZXMgdmFyaW91cyBzdGF0ZXMgYW5kIGVtaXRzIHNvY2tldCBldmVudHMgYXMgbmVjZXNzYXJ5LlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gbWFrZXMgdXNlIG9mIHNldmVyYWwgaGVscGVyIGZ1bmN0aW9ucyBhbmQgc3RhdGUgdXBkYXRlIGZ1bmN0aW9ucyBwYXNzZWQgaW4gdGhyb3VnaCB0aGUgcGFyYW1ldGVycy5cbiAgICovXG5cbiAgYXN5bmMgY2xpY2tBdWRpbyh7IHBhcmFtZXRlcnMgfTogQ2xpY2tBdWRpb09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQge1xuICAgICAgY2hlY2tNZWRpYVBlcm1pc3Npb24sXG4gICAgICBoYXNBdWRpb1Blcm1pc3Npb24sXG4gICAgICBhdWRpb1BhdXNlZCxcbiAgICAgIGF1ZGlvQWxyZWFkeU9uLFxuICAgICAgYXVkaW9Pbmx5Um9vbSxcbiAgICAgIHJlY29yZFN0YXJ0ZWQsXG4gICAgICByZWNvcmRSZXN1bWVkLFxuICAgICAgcmVjb3JkUGF1c2VkLFxuICAgICAgcmVjb3JkU3RvcHBlZCxcbiAgICAgIHJlY29yZGluZ01lZGlhT3B0aW9ucyxcbiAgICAgIGlzbGV2ZWwsXG4gICAgICB5b3VBcmVDb0hvc3QsXG4gICAgICBhZG1pblJlc3RyaWN0U2V0dGluZyxcbiAgICAgIGF1ZGlvUmVxdWVzdFN0YXRlLFxuICAgICAgYXVkaW9SZXF1ZXN0VGltZSxcbiAgICAgIG1lbWJlcixcbiAgICAgIHNvY2tldCxcbiAgICAgIHJvb21OYW1lLFxuICAgICAgdXNlckRlZmF1bHRBdWRpb0lucHV0RGV2aWNlLFxuICAgICAgbWljQWN0aW9uLFxuICAgICAgbG9jYWxTdHJlYW0sXG4gICAgICBhdWRpb1NldHRpbmcsXG4gICAgICB2aWRlb1NldHRpbmcsXG4gICAgICBzY3JlZW5zaGFyZVNldHRpbmcsXG4gICAgICBjaGF0U2V0dGluZyxcbiAgICAgIHVwZGF0ZVJlcXVlc3RJbnRlcnZhbFNlY29uZHMsXG4gICAgICBwYXJ0aWNpcGFudHMsXG4gICAgICBzaG93QWxlcnQsXG4gICAgICB0cmFuc3BvcnRDcmVhdGVkLFxuICAgICAgdHJhbnNwb3J0Q3JlYXRlZEF1ZGlvLFxuXG4gICAgICB1cGRhdGVBdWRpb0FscmVhZHlPbixcbiAgICAgIHVwZGF0ZUF1ZGlvUmVxdWVzdFN0YXRlLFxuICAgICAgdXBkYXRlQXVkaW9QYXVzZWQsXG4gICAgICB1cGRhdGVMb2NhbFN0cmVhbSxcbiAgICAgIHVwZGF0ZVBhcnRpY2lwYW50cyxcbiAgICAgIHVwZGF0ZVRyYW5zcG9ydENyZWF0ZWQsXG4gICAgICB1cGRhdGVUcmFuc3BvcnRDcmVhdGVkQXVkaW8sXG4gICAgICB1cGRhdGVNaWNBY3Rpb24sXG5cbiAgICAgIGNoZWNrUGVybWlzc2lvbixcbiAgICAgIHN0cmVhbVN1Y2Nlc3NBdWRpbyxcbiAgICAgIHJlcXVlc3RQZXJtaXNzaW9uQXVkaW8sXG4gICAgICByZXN1bWVTZW5kVHJhbnNwb3J0QXVkaW8sXG4gICAgICBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvLFxuICAgIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgaWYgKGF1ZGlvT25seVJvb20pIHtcbiAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogJ1lvdSBjYW5ub3QgdHVybiBvbiB5b3VyIGNhbWVyYSBpbiBhbiBhdWRpby1vbmx5IGV2ZW50LicsXG4gICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChhdWRpb0FscmVhZHlPbikge1xuICAgICAgaWYgKGlzbGV2ZWwgPT09ICcyJyAmJiAocmVjb3JkU3RhcnRlZCB8fCByZWNvcmRSZXN1bWVkKSkge1xuICAgICAgICBpZiAoIShyZWNvcmRQYXVzZWQgfHwgcmVjb3JkU3RvcHBlZCkpIHtcbiAgICAgICAgICBpZiAocmVjb3JkaW5nTWVkaWFPcHRpb25zID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgJ1lvdSBjYW5ub3QgdHVybiBvZmYgeW91ciBhdWRpbyB3aGlsZSByZWNvcmRpbmcsIHBsZWFzZSBwYXVzZSBvciBzdG9wIHJlY29yZGluZyBmaXJzdC4nLFxuICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXVkaW9BbHJlYWR5T24gPSBmYWxzZTtcbiAgICAgIHVwZGF0ZUF1ZGlvQWxyZWFkeU9uKGF1ZGlvQWxyZWFkeU9uKTtcbiAgICAgIGlmIChsb2NhbFN0cmVhbSkge1xuICAgICAgICBsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLmVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZUxvY2FsU3RyZWFtKGxvY2FsU3RyZWFtKTtcbiAgICAgIGF3YWl0IGRpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW8oeyBwYXJhbWV0ZXJzIH0pOyAvL2Rpc2Nvbm5lY3QgZnVuY3Rpb24gaGVyZSBhY3R1YWxsIGNhbGxzIGF1ZGlvUHJvZHVjZXIucGF1c2UoKSBpbnN0ZWFkIG9mIGNsb3NlKCkgYXMgaW4gbWVkaWFzZnVcbiAgICAgIGF1ZGlvUGF1c2VkID0gdHJ1ZTtcbiAgICAgIHVwZGF0ZUF1ZGlvUGF1c2VkKGF1ZGlvUGF1c2VkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGFkbWluUmVzdHJpY3RTZXR0aW5nKSB7XG4gICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICBtZXNzYWdlOiAnWW91IGNhbm5vdCB0dXJuIG9uIHlvdXIgbWljcm9waG9uZS4gQWNjZXNzIGRlbmllZCBieSBob3N0LicsXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCByZXNwb25zZSA9IDI7XG4gICAgICBpZiAoIW1pY0FjdGlvbiAmJiBpc2xldmVsICE9PSAnMicgJiYgIXlvdUFyZUNvSG9zdCkge1xuICAgICAgICByZXNwb25zZSA9IGF3YWl0IGNoZWNrUGVybWlzc2lvbih7XG4gICAgICAgICAgcGVybWlzc2lvblR5cGU6ICdhdWRpb1NldHRpbmcnLFxuICAgICAgICAgIGF1ZGlvU2V0dGluZyxcbiAgICAgICAgICB2aWRlb1NldHRpbmcsXG4gICAgICAgICAgc2NyZWVuc2hhcmVTZXR0aW5nLFxuICAgICAgICAgIGNoYXRTZXR0aW5nLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlID0gMDtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChyZXNwb25zZSkge1xuICAgICAgICBjYXNlIDE6IHtcbiAgICAgICAgICBpZiAoYXVkaW9SZXF1ZXN0U3RhdGUgPT09ICdwZW5kaW5nJykge1xuICAgICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgICBtZXNzYWdlOiAnQSByZXF1ZXN0IGlzIHBlbmRpbmcuIFBsZWFzZSB3YWl0IGZvciB0aGUgaG9zdCB0byByZXNwb25kLicsXG4gICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdSZXF1ZXN0IHNlbnQgdG8gaG9zdC4nLFxuICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBhdWRpb1JlcXVlc3RTdGF0ZSA9ICdwZW5kaW5nJztcbiAgICAgICAgICB1cGRhdGVBdWRpb1JlcXVlc3RTdGF0ZShhdWRpb1JlcXVlc3RTdGF0ZSk7XG4gICAgICAgICAgLy9jcmVhdGUgYSByZXF1ZXN0IGFuZCBhZGQgdG8gdGhlIHJlcXVlc3QgbGlzdCBhbmQgc2VuZCB0byBob3N0XG5cbiAgICAgICAgICBjb25zdCB1c2VyUmVxdWVzdCA9IHtcbiAgICAgICAgICAgIGlkOiBzb2NrZXQuaWQsXG4gICAgICAgICAgICBuYW1lOiBtZW1iZXIsXG4gICAgICAgICAgICBpY29uOiAnZmEtbWljcm9waG9uZScsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBzb2NrZXQuZW1pdCgncGFydGljaXBhbnRSZXF1ZXN0JywgeyB1c2VyUmVxdWVzdCwgcm9vbU5hbWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXVkaW9SZXF1ZXN0U3RhdGUgPT09ICdyZWplY3RlZCcgJiZcbiAgICAgICAgICAgIERhdGUubm93KCkgLSBhdWRpb1JlcXVlc3RUaW1lIDwgdXBkYXRlUmVxdWVzdEludGVydmFsU2Vjb25kcyAqIDEwMDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogYEEgcmVxdWVzdCB3YXMgcmVqZWN0ZWQuIFBsZWFzZSB3YWl0IGZvciAke3VwZGF0ZVJlcXVlc3RJbnRlcnZhbFNlY29uZHN9IHNlY29uZHMgYmVmb3JlIHNlbmRpbmcgYW5vdGhlciByZXF1ZXN0LmAsXG4gICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgLy9hbGxvd1xuXG4gICAgICAgICAgaWYgKGF1ZGlvUGF1c2VkKSB7XG4gICAgICAgICAgICBpZiAobG9jYWxTdHJlYW0pIHtcbiAgICAgICAgICAgICAgbG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXS5lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZUF1ZGlvQWxyZWFkeU9uKHRydWUpO1xuICAgICAgICAgICAgYXdhaXQgcmVzdW1lU2VuZFRyYW5zcG9ydEF1ZGlvKHsgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgIHNvY2tldC5lbWl0KCdyZXN1bWVQcm9kdWNlckF1ZGlvJywgeyBtZWRpYVRhZzogJ2F1ZGlvJywgcm9vbU5hbWUgfSk7XG5cbiAgICAgICAgICAgIHVwZGF0ZUxvY2FsU3RyZWFtKGxvY2FsU3RyZWFtKTtcbiAgICAgICAgICAgIHVwZGF0ZUF1ZGlvQWxyZWFkeU9uKGF1ZGlvQWxyZWFkeU9uKTtcblxuICAgICAgICAgICAgaWYgKG1pY0FjdGlvbiA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgIG1pY0FjdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB1cGRhdGVNaWNBY3Rpb24obWljQWN0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFydGljaXBhbnRzLmZvckVhY2goKHBhcnRpY2lwYW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwYXJ0aWNpcGFudFsnc29ja2V0SWQnXSA9PT0gc29ja2V0LmlkICYmIHBhcnRpY2lwYW50Lm5hbWUgPT09IG1lbWJlcikge1xuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50Lm11dGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdXBkYXRlUGFydGljaXBhbnRzKHBhcnRpY2lwYW50cyk7XG5cbiAgICAgICAgICAgIHRyYW5zcG9ydENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdXBkYXRlVHJhbnNwb3J0Q3JlYXRlZCh0cmFuc3BvcnRDcmVhdGVkKTtcblxuICAgICAgICAgICAgdHJhbnNwb3J0Q3JlYXRlZEF1ZGlvID0gdHJ1ZTtcbiAgICAgICAgICAgIHVwZGF0ZVRyYW5zcG9ydENyZWF0ZWRBdWRpbyh0cmFuc3BvcnRDcmVhdGVkQXVkaW8pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc0F1ZGlvUGVybWlzc2lvbiAmJiBjaGVja01lZGlhUGVybWlzc2lvbikge1xuICAgICAgICAgICAgICBjb25zdCBzdGF0dXNNaWMgPSBhd2FpdCByZXF1ZXN0UGVybWlzc2lvbkF1ZGlvKCk7XG4gICAgICAgICAgICAgIGlmIChzdGF0dXNNaWMgIT09ICdncmFudGVkJykge1xuICAgICAgICAgICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICdBbGxvdyBhY2Nlc3MgdG8geW91ciBtaWNyb3Bob25lIG9yIGNoZWNrIGlmIHlvdXIgbWljcm9waG9uZSBpcyBub3QgYmVpbmcgdXNlZCBieSBhbm90aGVyIGFwcGxpY2F0aW9uLicsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtZWRpYUNvbnN0cmFpbnRzID0gdXNlckRlZmF1bHRBdWRpb0lucHV0RGV2aWNlXG4gICAgICAgICAgICAgID8geyBhdWRpbzogeyBkZXZpY2VJZDogdXNlckRlZmF1bHRBdWRpb0lucHV0RGV2aWNlIH0sIHZpZGVvOiBmYWxzZSB9XG4gICAgICAgICAgICAgIDogeyBhdWRpbzogdHJ1ZSwgdmlkZW86IGZhbHNlIH07XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKG1lZGlhQ29uc3RyYWludHMpO1xuICAgICAgICAgICAgICBhd2FpdCBzdHJlYW1TdWNjZXNzQXVkaW8oeyBzdHJlYW0sIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAnQWxsb3cgYWNjZXNzIHRvIHlvdXIgbWljcm9waG9uZSBvciBjaGVjayBpZiB5b3VyIG1pY3JvcGhvbmUgaXMgbm90IGJlaW5nIHVzZWQgYnkgYW5vdGhlciBhcHBsaWNhdGlvbi4nLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Toggles the visibility of the chat modal based on the current state and event settings.
|
|
5
|
-
*
|
|
6
|
-
* @param {ClickChatOptions} options - The options for the clickChat function.
|
|
7
|
-
* @param {boolean} options.isMessagesModalVisible - Indicates if the messages modal is currently visible.
|
|
8
|
-
* @param {Function} options.updateIsMessagesModalVisible - Function to update the visibility state of the messages modal.
|
|
9
|
-
* @param {string} options.chatSetting - The chat setting for the event, which can be "allow" or other values.
|
|
10
|
-
* @param {string} options.islevel - The participant's level, where "2" indicates a level that allows chat.
|
|
11
|
-
* @param {Function} [options.showAlert] - Optional function to show an alert message.
|
|
12
|
-
*
|
|
13
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
14
|
-
*
|
|
15
|
-
* @remarks
|
|
16
|
-
* This function checks the current visibility state of the messages modal. If it is already visible, it will hide the modal.
|
|
17
|
-
* If it is not visible, it checks the chat settings and the participant's level to determine whether to show an alert
|
|
18
|
-
* indicating that chat is disabled or to display the chat modal.
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* const options: ClickChatOptions = {
|
|
23
|
-
* isMessagesModalVisible: false,
|
|
24
|
-
* updateIsMessagesModalVisible: (visible) => console.log(`Modal is now ${visible ? 'visible' : 'hidden'}`),
|
|
25
|
-
* chatSetting: 'allow',
|
|
26
|
-
* islevel: '1',
|
|
27
|
-
* showAlert: (alert) => console.log(`Alert: ${alert.message}`),
|
|
28
|
-
* };
|
|
29
|
-
*
|
|
30
|
-
* const clickChatService = new ClickChat();
|
|
31
|
-
* await clickChatService.clickChat(options);
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export class ClickChat {
|
|
35
|
-
/**
|
|
36
|
-
* Toggles the visibility of the chat modal based on the current state and event settings.
|
|
37
|
-
*
|
|
38
|
-
* @param {Object} options - The options for the clickChat function.
|
|
39
|
-
* @param {boolean} options.isMessagesModalVisible - Indicates if the messages modal is currently visible.
|
|
40
|
-
* @param {Function} options.updateIsMessagesModalVisible - Function to update the visibility state of the messages modal.
|
|
41
|
-
* @param {string} options.chatSetting - The chat setting for the event, which can be "allow" or other values.
|
|
42
|
-
* @param {string} options.islevel - The participant's level, where "2" indicates a level that allows chat.
|
|
43
|
-
* @param {Function} [options.showAlert] - Optional function to show an alert message.
|
|
44
|
-
*
|
|
45
|
-
* @returns {Promise<void>} A promise that resolves when the operation is complete.
|
|
46
|
-
*/
|
|
47
|
-
async clickChat({ isMessagesModalVisible, updateIsMessagesModalVisible, chatSetting, islevel, showAlert, }) {
|
|
48
|
-
if (isMessagesModalVisible) {
|
|
49
|
-
updateIsMessagesModalVisible(false);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
// Check if chat is allowed based on event settings and participant level
|
|
53
|
-
if (chatSetting !== 'allow' && islevel !== '2') {
|
|
54
|
-
updateIsMessagesModalVisible(false);
|
|
55
|
-
showAlert?.({
|
|
56
|
-
message: 'Chat is disabled for this event.',
|
|
57
|
-
type: 'danger',
|
|
58
|
-
duration: 3000,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
updateIsMessagesModalVisible(true);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ClickChat, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
67
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ClickChat, providedIn: 'root' });
|
|
68
|
-
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ClickChat, decorators: [{
|
|
70
|
-
type: Injectable,
|
|
71
|
-
args: [{
|
|
72
|
-
providedIn: 'root',
|
|
73
|
-
}]
|
|
74
|
-
}] });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL21ldGhvZHMvc3RyZWFtLW1ldGhvZHMvY2xpY2stY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBYTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFNSCxNQUFNLE9BQU8sU0FBUztJQUNwQjs7Ozs7Ozs7Ozs7T0FXRztJQUVILEtBQUssQ0FBQyxTQUFTLENBQUMsRUFDZCxzQkFBc0IsRUFDdEIsNEJBQTRCLEVBQzVCLFdBQVcsRUFDWCxPQUFPLEVBQ1AsU0FBUyxHQUNRO1FBQ2pCLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUMzQiw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLHlFQUF5RTtZQUN6RSxJQUFJLFdBQVcsS0FBSyxPQUFPLElBQUksT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUMvQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsU0FBUyxFQUFFLENBQUM7b0JBQ1YsT0FBTyxFQUFFLGtDQUFrQztvQkFDM0MsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt1R0FwQ1UsU0FBUzsyR0FBVCxTQUFTLGNBRlIsTUFBTTs7MkZBRVAsU0FBUztrQkFIckIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaG93QWxlcnQgfSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBDbGlja0NoYXRPcHRpb25zIHtcbiAgaXNNZXNzYWdlc01vZGFsVmlzaWJsZTogYm9vbGVhbjtcbiAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZTogKGlzVmlzaWJsZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgY2hhdFNldHRpbmc6IHN0cmluZztcbiAgaXNsZXZlbDogc3RyaW5nO1xuICBzaG93QWxlcnQ/OiBTaG93QWxlcnQ7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENsaWNrQ2hhdFR5cGUgPSAob3B0aW9uczogQ2xpY2tDaGF0T3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuLyoqXG4gKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBjaGF0IG1vZGFsIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBldmVudCBzZXR0aW5ncy5cbiAqXG4gKiBAcGFyYW0ge0NsaWNrQ2hhdE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGNsaWNrQ2hhdCBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucy5pc01lc3NhZ2VzTW9kYWxWaXNpYmxlIC0gSW5kaWNhdGVzIGlmIHRoZSBtZXNzYWdlcyBtb2RhbCBpcyBjdXJyZW50bHkgdmlzaWJsZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgbWVzc2FnZXMgbW9kYWwuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jaGF0U2V0dGluZyAtIFRoZSBjaGF0IHNldHRpbmcgZm9yIHRoZSBldmVudCwgd2hpY2ggY2FuIGJlIFwiYWxsb3dcIiBvciBvdGhlciB2YWx1ZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5pc2xldmVsIC0gVGhlIHBhcnRpY2lwYW50J3MgbGV2ZWwsIHdoZXJlIFwiMlwiIGluZGljYXRlcyBhIGxldmVsIHRoYXQgYWxsb3dzIGNoYXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5zaG93QWxlcnRdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdG8gc2hvdyBhbiBhbGVydCBtZXNzYWdlLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGUuXG4gKlxuICogQHJlbWFya3NcbiAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoZSBjdXJyZW50IHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIG1lc3NhZ2VzIG1vZGFsLiBJZiBpdCBpcyBhbHJlYWR5IHZpc2libGUsIGl0IHdpbGwgaGlkZSB0aGUgbW9kYWwuXG4gKiBJZiBpdCBpcyBub3QgdmlzaWJsZSwgaXQgY2hlY2tzIHRoZSBjaGF0IHNldHRpbmdzIGFuZCB0aGUgcGFydGljaXBhbnQncyBsZXZlbCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBzaG93IGFuIGFsZXJ0XG4gKiBpbmRpY2F0aW5nIHRoYXQgY2hhdCBpcyBkaXNhYmxlZCBvciB0byBkaXNwbGF5IHRoZSBjaGF0IG1vZGFsLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBvcHRpb25zOiBDbGlja0NoYXRPcHRpb25zID0ge1xuICogICBpc01lc3NhZ2VzTW9kYWxWaXNpYmxlOiBmYWxzZSxcbiAqICAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZTogKHZpc2libGUpID0+IGNvbnNvbGUubG9nKGBNb2RhbCBpcyBub3cgJHt2aXNpYmxlID8gJ3Zpc2libGUnIDogJ2hpZGRlbid9YCksXG4gKiAgIGNoYXRTZXR0aW5nOiAnYWxsb3cnLFxuICogICBpc2xldmVsOiAnMScsXG4gKiAgIHNob3dBbGVydDogKGFsZXJ0KSA9PiBjb25zb2xlLmxvZyhgQWxlcnQ6ICR7YWxlcnQubWVzc2FnZX1gKSxcbiAqIH07XG4gKlxuICogY29uc3QgY2xpY2tDaGF0U2VydmljZSA9IG5ldyBDbGlja0NoYXQoKTtcbiAqIGF3YWl0IGNsaWNrQ2hhdFNlcnZpY2UuY2xpY2tDaGF0KG9wdGlvbnMpO1xuICogYGBgXG4gKi9cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ2xpY2tDaGF0IHtcbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGNoYXQgbW9kYWwgYmFzZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUgYW5kIGV2ZW50IHNldHRpbmdzLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgY2xpY2tDaGF0IGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuaXNNZXNzYWdlc01vZGFsVmlzaWJsZSAtIEluZGljYXRlcyBpZiB0aGUgbWVzc2FnZXMgbW9kYWwgaXMgY3VycmVudGx5IHZpc2libGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMudXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgbWVzc2FnZXMgbW9kYWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmNoYXRTZXR0aW5nIC0gVGhlIGNoYXQgc2V0dGluZyBmb3IgdGhlIGV2ZW50LCB3aGljaCBjYW4gYmUgXCJhbGxvd1wiIG9yIG90aGVyIHZhbHVlcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuaXNsZXZlbCAtIFRoZSBwYXJ0aWNpcGFudCdzIGxldmVsLCB3aGVyZSBcIjJcIiBpbmRpY2F0ZXMgYSBsZXZlbCB0aGF0IGFsbG93cyBjaGF0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0aW9ucy5zaG93QWxlcnRdIC0gT3B0aW9uYWwgZnVuY3Rpb24gdG8gc2hvdyBhbiBhbGVydCBtZXNzYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLlxuICAgKi9cblxuICBhc3luYyBjbGlja0NoYXQoe1xuICAgIGlzTWVzc2FnZXNNb2RhbFZpc2libGUsXG4gICAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZSxcbiAgICBjaGF0U2V0dGluZyxcbiAgICBpc2xldmVsLFxuICAgIHNob3dBbGVydCxcbiAgfTogQ2xpY2tDaGF0T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChpc01lc3NhZ2VzTW9kYWxWaXNpYmxlKSB7XG4gICAgICB1cGRhdGVJc01lc3NhZ2VzTW9kYWxWaXNpYmxlKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2hlY2sgaWYgY2hhdCBpcyBhbGxvd2VkIGJhc2VkIG9uIGV2ZW50IHNldHRpbmdzIGFuZCBwYXJ0aWNpcGFudCBsZXZlbFxuICAgICAgaWYgKGNoYXRTZXR0aW5nICE9PSAnYWxsb3cnICYmIGlzbGV2ZWwgIT09ICcyJykge1xuICAgICAgICB1cGRhdGVJc01lc3NhZ2VzTW9kYWxWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICAgIG1lc3NhZ2U6ICdDaGF0IGlzIGRpc2FibGVkIGZvciB0aGlzIGV2ZW50LicsXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlSXNNZXNzYWdlc01vZGFsVmlzaWJsZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|