mediasfu-angular 1.0.2 → 2.0.1
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 +686 -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,201 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
2
|
-
import { Component, Input } from '@angular/core';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
5
|
-
import { faTimes } from '@fortawesome/free-solid-svg-icons';
|
|
6
|
-
import { FormsModule } from '@angular/forms';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common";
|
|
9
|
-
import * as i2 from "@fortawesome/angular-fontawesome";
|
|
10
|
-
import * as i3 from "@angular/forms";
|
|
11
|
-
/**
|
|
12
|
-
* Component for displaying a poll modal, allowing users to create, vote, and end polls within a session.
|
|
13
|
-
*
|
|
14
|
-
* @component
|
|
15
|
-
* @selector app-poll-modal
|
|
16
|
-
* @standalone true
|
|
17
|
-
* @templateUrl ./poll-modal.component.html
|
|
18
|
-
* @styleUrls ['./poll-modal.component.css']
|
|
19
|
-
* @imports [CommonModule, FontAwesomeModule, FormsModule]
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```html
|
|
23
|
-
* <app-poll-modal
|
|
24
|
-
* [isPollModalVisible]="true"
|
|
25
|
-
* [onClose]="closeModalFunction"
|
|
26
|
-
* [member]="currentMember"
|
|
27
|
-
* [islevel]="'2'"
|
|
28
|
-
* [polls]="pollList"
|
|
29
|
-
* [poll]="selectedPoll"
|
|
30
|
-
* [socket]="socketInstance"
|
|
31
|
-
* [roomName]="'exampleRoom'"
|
|
32
|
-
* [handleCreatePoll]="createPollFunction"
|
|
33
|
-
* [handleEndPoll]="endPollFunction"
|
|
34
|
-
* [handleVotePoll]="votePollFunction"
|
|
35
|
-
* ></app-poll-modal>
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
export class PollModal {
|
|
39
|
-
isPollModalVisible = false;
|
|
40
|
-
onClose;
|
|
41
|
-
position = 'topRight';
|
|
42
|
-
backgroundColor = '#f5f5f5';
|
|
43
|
-
member = '';
|
|
44
|
-
islevel = '';
|
|
45
|
-
polls = [];
|
|
46
|
-
poll = null;
|
|
47
|
-
socket = {};
|
|
48
|
-
roomName = '';
|
|
49
|
-
showAlert = () => { };
|
|
50
|
-
updateIsPollModalVisible = () => { };
|
|
51
|
-
handleCreatePoll;
|
|
52
|
-
handleEndPoll;
|
|
53
|
-
handleVotePoll;
|
|
54
|
-
faTimes = faTimes;
|
|
55
|
-
newPoll = { question: '', type: '', options: [] };
|
|
56
|
-
screenWidth = window.innerWidth;
|
|
57
|
-
modalWidth = this.screenWidth > 500 ? 350 : 0.7 * this.screenWidth;
|
|
58
|
-
ngOnInit() {
|
|
59
|
-
this.renderPolls();
|
|
60
|
-
}
|
|
61
|
-
ngOnChanges(changes) {
|
|
62
|
-
if (changes['isPollModalVisible']) {
|
|
63
|
-
this.renderPolls();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
renderPolls = () => {
|
|
67
|
-
let activePollCount = 0;
|
|
68
|
-
this.polls &&
|
|
69
|
-
this.polls.forEach((polled) => {
|
|
70
|
-
if (polled.status === 'active' && this.poll && polled.id === this.poll.id) {
|
|
71
|
-
activePollCount++;
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
if (this.islevel == '2' && activePollCount === 0) {
|
|
75
|
-
if (this.poll && this.poll.status === 'active') {
|
|
76
|
-
this.poll.status = 'inactive';
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
calculatePercentage(votes, optionIndex) {
|
|
81
|
-
const totalVotes = votes.reduce((a, b) => a + b, 0);
|
|
82
|
-
return totalVotes > 0 ? parseFloat(((votes[optionIndex] / totalVotes) * 100).toFixed(2)) : 0;
|
|
83
|
-
}
|
|
84
|
-
handlePollTypeChange(event) {
|
|
85
|
-
const type = event.target.value;
|
|
86
|
-
let options = [];
|
|
87
|
-
switch (type) {
|
|
88
|
-
case 'trueFalse':
|
|
89
|
-
options = ['True', 'False'];
|
|
90
|
-
break;
|
|
91
|
-
case 'yesNo':
|
|
92
|
-
options = ['Yes', 'No'];
|
|
93
|
-
break;
|
|
94
|
-
case 'custom':
|
|
95
|
-
options = ['', '', '', '', '']; // Preload 5 empty options
|
|
96
|
-
break;
|
|
97
|
-
default:
|
|
98
|
-
options = [];
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
this.newPoll = { ...this.newPoll, type, options };
|
|
102
|
-
}
|
|
103
|
-
async validateAndCreatePoll() {
|
|
104
|
-
// Remove empty options before creating the poll
|
|
105
|
-
this.newPoll.options = this.newPoll.options.filter((option) => option.trim() !== '');
|
|
106
|
-
// Ensure there's at least one valid option
|
|
107
|
-
if (this.newPoll.options.length > 0) {
|
|
108
|
-
await this.handleCreatePoll({
|
|
109
|
-
poll: this.newPoll,
|
|
110
|
-
socket: this.socket,
|
|
111
|
-
roomName: this.roomName,
|
|
112
|
-
showAlert: this.showAlert,
|
|
113
|
-
updateIsPollModalVisible: this.updateIsPollModalVisible,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
handledVotePoll(pollId, optionIndex) {
|
|
118
|
-
this.handleVotePoll({
|
|
119
|
-
pollId,
|
|
120
|
-
optionIndex,
|
|
121
|
-
socket: this.socket,
|
|
122
|
-
member: this.member,
|
|
123
|
-
roomName: this.roomName,
|
|
124
|
-
showAlert: this.showAlert,
|
|
125
|
-
updateIsPollModalVisible: this.updateIsPollModalVisible,
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
handledEndPoll(pollId) {
|
|
129
|
-
this.handleEndPoll({
|
|
130
|
-
pollId,
|
|
131
|
-
socket: this.socket,
|
|
132
|
-
roomName: this.roomName,
|
|
133
|
-
showAlert: this.showAlert,
|
|
134
|
-
updateIsPollModalVisible: this.updateIsPollModalVisible,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
get modalContainerStyle() {
|
|
138
|
-
return {
|
|
139
|
-
position: 'fixed',
|
|
140
|
-
top: 0,
|
|
141
|
-
left: 0,
|
|
142
|
-
width: '100%',
|
|
143
|
-
height: '100%',
|
|
144
|
-
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
|
145
|
-
display: this.isPollModalVisible ? 'block' : 'none',
|
|
146
|
-
zIndex: 999,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
get modalContentStyle() {
|
|
150
|
-
return {
|
|
151
|
-
position: 'fixed',
|
|
152
|
-
backgroundColor: this.backgroundColor,
|
|
153
|
-
borderRadius: '10px',
|
|
154
|
-
padding: '10px',
|
|
155
|
-
width: `${this.modalWidth}px`,
|
|
156
|
-
maxHeight: '75%',
|
|
157
|
-
overflowY: 'auto',
|
|
158
|
-
top: this.position.includes('top') ? '10px' : 'auto',
|
|
159
|
-
bottom: this.position.includes('bottom') ? '10px' : 'auto',
|
|
160
|
-
left: this.position.includes('Left') ? '10px' : 'auto',
|
|
161
|
-
right: this.position.includes('Right') ? '10px' : 'auto',
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PollModal, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
165
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: PollModal, isStandalone: true, selector: "app-poll-modal", inputs: { isPollModalVisible: "isPollModalVisible", onClose: "onClose", position: "position", backgroundColor: "backgroundColor", member: "member", islevel: "islevel", polls: "polls", poll: "poll", socket: "socket", roomName: "roomName", showAlert: "showAlert", updateIsPollModalVisible: "updateIsPollModalVisible", handleCreatePoll: "handleCreatePoll", handleEndPoll: "handleEndPoll", handleVotePoll: "handleVotePoll" }, usesOnChanges: true, ngImport: i0, template: "<div [ngStyle]=\"modalContainerStyle\">\r\n <div [ngStyle]=\"modalContentStyle\">\r\n <div class=\"modal-header\">\r\n <h2>Polls</h2>\r\n <button (click)=\"onClose()\" class=\"close-button\">\r\n <fa-icon [icon]=\"faTimes\"></fa-icon>\r\n </button>\r\n </div>\r\n <hr />\r\n <div class=\"modal-body\">\r\n <!-- Previous Polls Section -->\r\n <div *ngIf=\"islevel === '2'\">\r\n <div class=\"previous-polls\">\r\n <h5>Previous Polls</h5>\r\n <div *ngIf=\"polls.length === 0\">No polls available</div>\r\n\r\n <!-- Using ng-container to avoid multiple structural directives on the same element -->\r\n <ng-container *ngFor=\"let polled of polls\">\r\n <div\r\n *ngIf=\"!poll || polled.id !== poll.id || poll.status !== 'active'\"\r\n class=\"poll\"\r\n >\r\n <h6>Question:</h6>\r\n <textarea\r\n class=\"form-control\"\r\n rows=\"3\"\r\n [disabled]=\"true\"\r\n [value]=\"polled.question\"\r\n ></textarea>\r\n <br />\r\n <h6>Options:</h6>\r\n <div *ngFor=\"let option of polled.options; let i = index\">\r\n {{ option }}: {{ polled.votes[i] }} votes ({{\r\n calculatePercentage(polled.votes, i)\r\n }}%)\r\n </div>\r\n <!-- End Poll Button (if poll is active) -->\r\n <button\r\n *ngIf=\"polled.status === 'active'\"\r\n class=\"btn btn-danger\"\r\n (click)=\"handledEndPoll(polled.id)\"\r\n >\r\n End Poll\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <hr />\r\n\r\n <!-- Create Poll Section -->\r\n <div class=\"create-poll\">\r\n <h5>Create a New Poll</h5>\r\n <form (ngSubmit)=\"validateAndCreatePoll()\">\r\n <div class=\"form-group\">\r\n <label for=\"pollQuestion\">Poll Question</label>\r\n <textarea\r\n class=\"form-control\"\r\n id=\"pollQuestion\"\r\n rows=\"3\"\r\n maxLength=\"300\"\r\n required\r\n [(ngModel)]=\"newPoll.question\"\r\n name=\"question\"\r\n ></textarea>\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"pollType\">Select Poll Answer Type</label>\r\n <select\r\n class=\"form-control\"\r\n id=\"pollType\"\r\n required\r\n (change)=\"handlePollTypeChange($event)\"\r\n [(ngModel)]=\"newPoll.type\"\r\n name=\"type\"\r\n >\r\n <option value=\"\">Choose...</option>\r\n <option value=\"trueFalse\">True/False</option>\r\n <option value=\"yesNo\">Yes/No</option>\r\n <option value=\"custom\">Custom</option>\r\n </select>\r\n </div>\r\n\r\n <!-- Render Poll Options -->\r\n <div\r\n *ngIf=\"newPoll.type === 'trueFalse' || newPoll.type === 'yesNo'\"\r\n >\r\n <div\r\n *ngFor=\"let option of newPoll.options; let i = index\"\r\n class=\"form-check\"\r\n >\r\n <input\r\n class=\"form-check-input\"\r\n type=\"radio\"\r\n name=\"pollOption\"\r\n [value]=\"option.toLowerCase()\"\r\n [id]=\"'option' + option\"\r\n />\r\n <label class=\"form-check-label\" [for]=\"'option' + option\">{{\r\n option\r\n }}</label>\r\n </div>\r\n </div>\r\n <div *ngIf=\"newPoll.type === 'custom'\">\r\n <div\r\n *ngFor=\"let option of newPoll.options; let i = index\"\r\n class=\"form-group\"\r\n >\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n placeholder=\"Option {{ i + 1 }}\"\r\n maxLength=\"50\"\r\n [(ngModel)]=\"newPoll.options[i]\"\r\n name=\"option{{ i }}\"\r\n />\r\n </div>\r\n </div>\r\n <button type=\"submit\" class=\"btn btn-primary\">Create Poll</button>\r\n </form>\r\n </div>\r\n <hr />\r\n </div>\r\n\r\n <!-- Current Poll Section -->\r\n <div class=\"current-poll\">\r\n <h5>Current Poll</h5>\r\n <div *ngIf=\"poll && poll.status === 'active'\">\r\n <h6>Question:</h6>\r\n <textarea\r\n class=\"form-control\"\r\n rows=\"3\"\r\n [disabled]=\"true\"\r\n [value]=\"poll.question\"\r\n ></textarea>\r\n <h6>Options:</h6>\r\n <div\r\n *ngFor=\"let option of poll.options; let i = index\"\r\n class=\"form-check\"\r\n >\r\n <input\r\n class=\"form-check-input\"\r\n type=\"radio\"\r\n name=\"pollOption\"\r\n [value]=\"i\"\r\n id=\"pollOption{{ i }}\"\r\n [checked]=\"poll.voters?.[member] === i\"\r\n (change)=\"handledVotePoll(poll.id, i)\"\r\n />\r\n <label class=\"form-check-label\" [for]=\"'pollOption' + i\">{{\r\n option\r\n }}</label>\r\n </div>\r\n <button\r\n *ngIf=\"poll.status === 'active' && islevel === '2'\"\r\n class=\"btn btn-danger\"\r\n (click)=\"handledEndPoll(poll.id)\"\r\n >\r\n End Poll\r\n </button>\r\n </div>\r\n <div *ngIf=\"!poll || poll.status !== 'active'\">\r\n <hr />\r\n No active poll\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.modal-body{display:flex;flex-direction:column;gap:10px}.previous-polls,.create-poll,.current-poll{overflow-y:auto;max-height:20%}.poll{margin-bottom:15px}.close-button{border:none;background:none;cursor:pointer}.form-group{max-width:80%;overflow-x:auto}textarea.form-control{resize:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
|
166
|
-
}
|
|
167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PollModal, decorators: [{
|
|
168
|
-
type: Component,
|
|
169
|
-
args: [{ selector: 'app-poll-modal', standalone: true, imports: [CommonModule, FontAwesomeModule, FormsModule], template: "<div [ngStyle]=\"modalContainerStyle\">\r\n <div [ngStyle]=\"modalContentStyle\">\r\n <div class=\"modal-header\">\r\n <h2>Polls</h2>\r\n <button (click)=\"onClose()\" class=\"close-button\">\r\n <fa-icon [icon]=\"faTimes\"></fa-icon>\r\n </button>\r\n </div>\r\n <hr />\r\n <div class=\"modal-body\">\r\n <!-- Previous Polls Section -->\r\n <div *ngIf=\"islevel === '2'\">\r\n <div class=\"previous-polls\">\r\n <h5>Previous Polls</h5>\r\n <div *ngIf=\"polls.length === 0\">No polls available</div>\r\n\r\n <!-- Using ng-container to avoid multiple structural directives on the same element -->\r\n <ng-container *ngFor=\"let polled of polls\">\r\n <div\r\n *ngIf=\"!poll || polled.id !== poll.id || poll.status !== 'active'\"\r\n class=\"poll\"\r\n >\r\n <h6>Question:</h6>\r\n <textarea\r\n class=\"form-control\"\r\n rows=\"3\"\r\n [disabled]=\"true\"\r\n [value]=\"polled.question\"\r\n ></textarea>\r\n <br />\r\n <h6>Options:</h6>\r\n <div *ngFor=\"let option of polled.options; let i = index\">\r\n {{ option }}: {{ polled.votes[i] }} votes ({{\r\n calculatePercentage(polled.votes, i)\r\n }}%)\r\n </div>\r\n <!-- End Poll Button (if poll is active) -->\r\n <button\r\n *ngIf=\"polled.status === 'active'\"\r\n class=\"btn btn-danger\"\r\n (click)=\"handledEndPoll(polled.id)\"\r\n >\r\n End Poll\r\n </button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <hr />\r\n\r\n <!-- Create Poll Section -->\r\n <div class=\"create-poll\">\r\n <h5>Create a New Poll</h5>\r\n <form (ngSubmit)=\"validateAndCreatePoll()\">\r\n <div class=\"form-group\">\r\n <label for=\"pollQuestion\">Poll Question</label>\r\n <textarea\r\n class=\"form-control\"\r\n id=\"pollQuestion\"\r\n rows=\"3\"\r\n maxLength=\"300\"\r\n required\r\n [(ngModel)]=\"newPoll.question\"\r\n name=\"question\"\r\n ></textarea>\r\n </div>\r\n <div class=\"form-group\">\r\n <label for=\"pollType\">Select Poll Answer Type</label>\r\n <select\r\n class=\"form-control\"\r\n id=\"pollType\"\r\n required\r\n (change)=\"handlePollTypeChange($event)\"\r\n [(ngModel)]=\"newPoll.type\"\r\n name=\"type\"\r\n >\r\n <option value=\"\">Choose...</option>\r\n <option value=\"trueFalse\">True/False</option>\r\n <option value=\"yesNo\">Yes/No</option>\r\n <option value=\"custom\">Custom</option>\r\n </select>\r\n </div>\r\n\r\n <!-- Render Poll Options -->\r\n <div\r\n *ngIf=\"newPoll.type === 'trueFalse' || newPoll.type === 'yesNo'\"\r\n >\r\n <div\r\n *ngFor=\"let option of newPoll.options; let i = index\"\r\n class=\"form-check\"\r\n >\r\n <input\r\n class=\"form-check-input\"\r\n type=\"radio\"\r\n name=\"pollOption\"\r\n [value]=\"option.toLowerCase()\"\r\n [id]=\"'option' + option\"\r\n />\r\n <label class=\"form-check-label\" [for]=\"'option' + option\">{{\r\n option\r\n }}</label>\r\n </div>\r\n </div>\r\n <div *ngIf=\"newPoll.type === 'custom'\">\r\n <div\r\n *ngFor=\"let option of newPoll.options; let i = index\"\r\n class=\"form-group\"\r\n >\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n placeholder=\"Option {{ i + 1 }}\"\r\n maxLength=\"50\"\r\n [(ngModel)]=\"newPoll.options[i]\"\r\n name=\"option{{ i }}\"\r\n />\r\n </div>\r\n </div>\r\n <button type=\"submit\" class=\"btn btn-primary\">Create Poll</button>\r\n </form>\r\n </div>\r\n <hr />\r\n </div>\r\n\r\n <!-- Current Poll Section -->\r\n <div class=\"current-poll\">\r\n <h5>Current Poll</h5>\r\n <div *ngIf=\"poll && poll.status === 'active'\">\r\n <h6>Question:</h6>\r\n <textarea\r\n class=\"form-control\"\r\n rows=\"3\"\r\n [disabled]=\"true\"\r\n [value]=\"poll.question\"\r\n ></textarea>\r\n <h6>Options:</h6>\r\n <div\r\n *ngFor=\"let option of poll.options; let i = index\"\r\n class=\"form-check\"\r\n >\r\n <input\r\n class=\"form-check-input\"\r\n type=\"radio\"\r\n name=\"pollOption\"\r\n [value]=\"i\"\r\n id=\"pollOption{{ i }}\"\r\n [checked]=\"poll.voters?.[member] === i\"\r\n (change)=\"handledVotePoll(poll.id, i)\"\r\n />\r\n <label class=\"form-check-label\" [for]=\"'pollOption' + i\">{{\r\n option\r\n }}</label>\r\n </div>\r\n <button\r\n *ngIf=\"poll.status === 'active' && islevel === '2'\"\r\n class=\"btn btn-danger\"\r\n (click)=\"handledEndPoll(poll.id)\"\r\n >\r\n End Poll\r\n </button>\r\n </div>\r\n <div *ngIf=\"!poll || poll.status !== 'active'\">\r\n <hr />\r\n No active poll\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.modal-body{display:flex;flex-direction:column;gap:10px}.previous-polls,.create-poll,.current-poll{overflow-y:auto;max-height:20%}.poll{margin-bottom:15px}.close-button{border:none;background:none;cursor:pointer}.form-group{max-width:80%;overflow-x:auto}textarea.form-control{resize:none}\n"] }]
|
|
170
|
-
}], propDecorators: { isPollModalVisible: [{
|
|
171
|
-
type: Input
|
|
172
|
-
}], onClose: [{
|
|
173
|
-
type: Input
|
|
174
|
-
}], position: [{
|
|
175
|
-
type: Input
|
|
176
|
-
}], backgroundColor: [{
|
|
177
|
-
type: Input
|
|
178
|
-
}], member: [{
|
|
179
|
-
type: Input
|
|
180
|
-
}], islevel: [{
|
|
181
|
-
type: Input
|
|
182
|
-
}], polls: [{
|
|
183
|
-
type: Input
|
|
184
|
-
}], poll: [{
|
|
185
|
-
type: Input
|
|
186
|
-
}], socket: [{
|
|
187
|
-
type: Input
|
|
188
|
-
}], roomName: [{
|
|
189
|
-
type: Input
|
|
190
|
-
}], showAlert: [{
|
|
191
|
-
type: Input
|
|
192
|
-
}], updateIsPollModalVisible: [{
|
|
193
|
-
type: Input
|
|
194
|
-
}], handleCreatePoll: [{
|
|
195
|
-
type: Input
|
|
196
|
-
}], handleEndPoll: [{
|
|
197
|
-
type: Input
|
|
198
|
-
}], handleVotePoll: [{
|
|
199
|
-
type: Input
|
|
200
|
-
}] } });
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9wb2xscy1jb21wb25lbnRzL3BvbGwtbW9kYWwvcG9sbC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9wb2xscy1jb21wb25lbnRzL3BvbGwtbW9kYWwvcG9sbC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQStCN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBVUgsTUFBTSxPQUFPLFNBQVM7SUFDWCxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDM0IsT0FBTyxDQUFjO0lBQ3JCLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDdEIsZUFBZSxHQUFHLFNBQVMsQ0FBQztJQUM1QixNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ1osT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDbkIsSUFBSSxHQUFnQixJQUFJLENBQUM7SUFDekIsTUFBTSxHQUFXLEVBQVksQ0FBQztJQUM5QixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsU0FBUyxHQUFjLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUNoQyx3QkFBd0IsR0FBaUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ2xFLGdCQUFnQixDQUF3QjtJQUN4QyxhQUFhLENBQXFCO0lBQ2xDLGNBQWMsQ0FBc0I7SUFFN0MsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNsQixPQUFPLEdBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBRXZELFdBQVcsR0FBVyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3hDLFVBQVUsR0FBVyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUUzRSxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsR0FBRyxHQUFHLEVBQUU7UUFDakIsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxLQUFLO1lBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDakMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDMUUsZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxHQUFHLElBQUksZUFBZSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsbUJBQW1CLENBQUMsS0FBZSxFQUFFLFdBQW1CO1FBQ3RELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBVTtRQUM3QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNoQyxJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFFM0IsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssV0FBVztnQkFDZCxPQUFPLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzVCLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN4QixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLE9BQU8sR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDBCQUEwQjtnQkFDMUQsTUFBTTtZQUNSO2dCQUNFLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTTtRQUNWLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLHFCQUFxQjtRQUN6QixnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFN0YsMkNBQTJDO1FBQzNDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUMxQixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ2xCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLHdCQUF3QixFQUFFLElBQUksQ0FBQyx3QkFBd0I7YUFDeEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYyxFQUFFLFdBQW1CO1FBQ2pELElBQUksQ0FBQyxjQUFjLENBQUM7WUFDbEIsTUFBTTtZQUNOLFdBQVc7WUFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QjtTQUN4RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNqQixNQUFNO1lBQ04sTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QjtTQUN4RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTztZQUNMLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLEdBQUcsRUFBRSxDQUFDO1lBQ04sSUFBSSxFQUFFLENBQUM7WUFDUCxLQUFLLEVBQUUsTUFBTTtZQUNiLE1BQU0sRUFBRSxNQUFNO1lBQ2QsZUFBZSxFQUFFLG9CQUFvQjtZQUNyQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDbkQsTUFBTSxFQUFFLEdBQUc7U0FDWixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU87WUFDTCxRQUFRLEVBQUUsT0FBTztZQUNqQixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsWUFBWSxFQUFFLE1BQU07WUFDcEIsT0FBTyxFQUFFLE1BQU07WUFDZixLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJO1lBQzdCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3BELE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQzFELElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3RELEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO1NBQ3pELENBQUM7SUFDSixDQUFDO3VHQTlJVSxTQUFTOzJGQUFULFNBQVMscWdCQ3hFdEIscWtNQXdLQSwwYkRwR1ksWUFBWSxvVkFBRSxpQkFBaUIsNFBBQUUsV0FBVzs7MkZBSTNDLFNBQVM7a0JBUHJCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsQ0FBQzs4QkFLOUMsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYVRpbWVzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnc29ja2V0LmlvLWNsaWVudCc7XG5pbXBvcnQge1xuICBQb2xsLFxuICBTaG93QWxlcnQsXG4gIEhhbmRsZUNyZWF0ZVBvbGxUeXBlLFxuICBIYW5kbGVFbmRQb2xsVHlwZSxcbiAgSGFuZGxlVm90ZVBvbGxUeXBlLFxufSBmcm9tICcuLi8uLi8uLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvbGxNb2RhbE9wdGlvbnMge1xuICBpc1BvbGxNb2RhbFZpc2libGU6IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG4gIHBvc2l0aW9uPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIG1lbWJlcjogc3RyaW5nO1xuICBpc2xldmVsOiBzdHJpbmc7XG4gIHBvbGxzOiBQb2xsW107XG4gIHBvbGw6IFBvbGwgfCBudWxsO1xuICBzb2NrZXQ6IFNvY2tldDtcbiAgcm9vbU5hbWU6IHN0cmluZztcbiAgc2hvd0FsZXJ0PzogU2hvd0FsZXJ0O1xuICB1cGRhdGVJc1BvbGxNb2RhbFZpc2libGU6IChpc1Zpc2libGU6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgaGFuZGxlQ3JlYXRlUG9sbDogSGFuZGxlQ3JlYXRlUG9sbFR5cGU7XG4gIGhhbmRsZUVuZFBvbGw6IEhhbmRsZUVuZFBvbGxUeXBlO1xuICBoYW5kbGVWb3RlUG9sbDogSGFuZGxlVm90ZVBvbGxUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBQb2xsTW9kYWxUeXBlID0gKG9wdGlvbnM6IFBvbGxNb2RhbE9wdGlvbnMpID0+IEhUTUxFbGVtZW50O1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhIHBvbGwgbW9kYWwsIGFsbG93aW5nIHVzZXJzIHRvIGNyZWF0ZSwgdm90ZSwgYW5kIGVuZCBwb2xscyB3aXRoaW4gYSBzZXNzaW9uLlxuICpcbiAqIEBjb21wb25lbnRcbiAqIEBzZWxlY3RvciBhcHAtcG9sbC1tb2RhbFxuICogQHN0YW5kYWxvbmUgdHJ1ZVxuICogQHRlbXBsYXRlVXJsIC4vcG9sbC1tb2RhbC5jb21wb25lbnQuaHRtbFxuICogQHN0eWxlVXJscyBbJy4vcG9sbC1tb2RhbC5jb21wb25lbnQuY3NzJ11cbiAqIEBpbXBvcnRzIFtDb21tb25Nb2R1bGUsIEZvbnRBd2Vzb21lTW9kdWxlLCBGb3Jtc01vZHVsZV1cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGFwcC1wb2xsLW1vZGFsXG4gKiAgIFtpc1BvbGxNb2RhbFZpc2libGVdPVwidHJ1ZVwiXG4gKiAgIFtvbkNsb3NlXT1cImNsb3NlTW9kYWxGdW5jdGlvblwiXG4gKiAgIFttZW1iZXJdPVwiY3VycmVudE1lbWJlclwiXG4gKiAgIFtpc2xldmVsXT1cIicyJ1wiXG4gKiAgIFtwb2xsc109XCJwb2xsTGlzdFwiXG4gKiAgIFtwb2xsXT1cInNlbGVjdGVkUG9sbFwiXG4gKiAgIFtzb2NrZXRdPVwic29ja2V0SW5zdGFuY2VcIlxuICogICBbcm9vbU5hbWVdPVwiJ2V4YW1wbGVSb29tJ1wiXG4gKiAgIFtoYW5kbGVDcmVhdGVQb2xsXT1cImNyZWF0ZVBvbGxGdW5jdGlvblwiXG4gKiAgIFtoYW5kbGVFbmRQb2xsXT1cImVuZFBvbGxGdW5jdGlvblwiXG4gKiAgIFtoYW5kbGVWb3RlUG9sbF09XCJ2b3RlUG9sbEZ1bmN0aW9uXCJcbiAqID48L2FwcC1wb2xsLW1vZGFsPlxuICogYGBgXG4gKi9cblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcG9sbC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvbnRBd2Vzb21lTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9wb2xsLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcG9sbC1tb2RhbC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxNb2RhbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaXNQb2xsTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9uQ2xvc2UhOiAoKSA9PiB2b2lkO1xuICBASW5wdXQoKSBwb3NpdGlvbiA9ICd0b3BSaWdodCc7XG4gIEBJbnB1dCgpIGJhY2tncm91bmRDb2xvciA9ICcjZjVmNWY1JztcbiAgQElucHV0KCkgbWVtYmVyID0gJyc7XG4gIEBJbnB1dCgpIGlzbGV2ZWwgPSAnJztcbiAgQElucHV0KCkgcG9sbHM6IFBvbGxbXSA9IFtdO1xuICBASW5wdXQoKSBwb2xsOiBQb2xsIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHNvY2tldDogU29ja2V0ID0ge30gYXMgU29ja2V0O1xuICBASW5wdXQoKSByb29tTmFtZSA9ICcnO1xuICBASW5wdXQoKSBzaG93QWxlcnQ6IFNob3dBbGVydCA9ICgpID0+IHt9O1xuICBASW5wdXQoKSB1cGRhdGVJc1BvbGxNb2RhbFZpc2libGU6IChpc1Zpc2libGU6IGJvb2xlYW4pID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgQElucHV0KCkgaGFuZGxlQ3JlYXRlUG9sbCE6IEhhbmRsZUNyZWF0ZVBvbGxUeXBlO1xuICBASW5wdXQoKSBoYW5kbGVFbmRQb2xsITogSGFuZGxlRW5kUG9sbFR5cGU7XG4gIEBJbnB1dCgpIGhhbmRsZVZvdGVQb2xsITogSGFuZGxlVm90ZVBvbGxUeXBlO1xuXG4gIGZhVGltZXMgPSBmYVRpbWVzO1xuICBuZXdQb2xsOiBhbnkgPSB7IHF1ZXN0aW9uOiAnJywgdHlwZTogJycsIG9wdGlvbnM6IFtdIH07XG5cbiAgc2NyZWVuV2lkdGg6IG51bWJlciA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICBtb2RhbFdpZHRoOiBudW1iZXIgPSB0aGlzLnNjcmVlbldpZHRoID4gNTAwID8gMzUwIDogMC43ICogdGhpcy5zY3JlZW5XaWR0aDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlbmRlclBvbGxzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2lzUG9sbE1vZGFsVmlzaWJsZSddKSB7XG4gICAgICB0aGlzLnJlbmRlclBvbGxzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyUG9sbHMgPSAoKSA9PiB7XG4gICAgbGV0IGFjdGl2ZVBvbGxDb3VudCA9IDA7XG5cbiAgICB0aGlzLnBvbGxzICYmXG4gICAgICB0aGlzLnBvbGxzLmZvckVhY2goKHBvbGxlZDogYW55KSA9PiB7XG4gICAgICAgIGlmIChwb2xsZWQuc3RhdHVzID09PSAnYWN0aXZlJyAmJiB0aGlzLnBvbGwgJiYgcG9sbGVkLmlkID09PSB0aGlzLnBvbGwuaWQpIHtcbiAgICAgICAgICBhY3RpdmVQb2xsQ291bnQrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5pc2xldmVsID09ICcyJyAmJiBhY3RpdmVQb2xsQ291bnQgPT09IDApIHtcbiAgICAgIGlmICh0aGlzLnBvbGwgJiYgdGhpcy5wb2xsLnN0YXR1cyA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgICAgdGhpcy5wb2xsLnN0YXR1cyA9ICdpbmFjdGl2ZSc7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNhbGN1bGF0ZVBlcmNlbnRhZ2Uodm90ZXM6IG51bWJlcltdLCBvcHRpb25JbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCB0b3RhbFZvdGVzID0gdm90ZXMucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XG4gICAgcmV0dXJuIHRvdGFsVm90ZXMgPiAwID8gcGFyc2VGbG9hdCgoKHZvdGVzW29wdGlvbkluZGV4XSAvIHRvdGFsVm90ZXMpICogMTAwKS50b0ZpeGVkKDIpKSA6IDA7XG4gIH1cblxuICBoYW5kbGVQb2xsVHlwZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgY29uc3QgdHlwZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBsZXQgb3B0aW9uczogc3RyaW5nW10gPSBbXTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAndHJ1ZUZhbHNlJzpcbiAgICAgICAgb3B0aW9ucyA9IFsnVHJ1ZScsICdGYWxzZSddO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3llc05vJzpcbiAgICAgICAgb3B0aW9ucyA9IFsnWWVzJywgJ05vJ107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3VzdG9tJzpcbiAgICAgICAgb3B0aW9ucyA9IFsnJywgJycsICcnLCAnJywgJyddOyAvLyBQcmVsb2FkIDUgZW1wdHkgb3B0aW9uc1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG9wdGlvbnMgPSBbXTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5uZXdQb2xsID0geyAuLi50aGlzLm5ld1BvbGwsIHR5cGUsIG9wdGlvbnMgfTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlQW5kQ3JlYXRlUG9sbCgpIHtcbiAgICAvLyBSZW1vdmUgZW1wdHkgb3B0aW9ucyBiZWZvcmUgY3JlYXRpbmcgdGhlIHBvbGxcbiAgICB0aGlzLm5ld1BvbGwub3B0aW9ucyA9IHRoaXMubmV3UG9sbC5vcHRpb25zLmZpbHRlcigob3B0aW9uOiBzdHJpbmcpID0+IG9wdGlvbi50cmltKCkgIT09ICcnKTtcblxuICAgIC8vIEVuc3VyZSB0aGVyZSdzIGF0IGxlYXN0IG9uZSB2YWxpZCBvcHRpb25cbiAgICBpZiAodGhpcy5uZXdQb2xsLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVDcmVhdGVQb2xsKHtcbiAgICAgICAgcG9sbDogdGhpcy5uZXdQb2xsLFxuICAgICAgICBzb2NrZXQ6IHRoaXMuc29ja2V0LFxuICAgICAgICByb29tTmFtZTogdGhpcy5yb29tTmFtZSxcbiAgICAgICAgc2hvd0FsZXJ0OiB0aGlzLnNob3dBbGVydCxcbiAgICAgICAgdXBkYXRlSXNQb2xsTW9kYWxWaXNpYmxlOiB0aGlzLnVwZGF0ZUlzUG9sbE1vZGFsVmlzaWJsZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZWRWb3RlUG9sbChwb2xsSWQ6IHN0cmluZywgb3B0aW9uSW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuaGFuZGxlVm90ZVBvbGwoe1xuICAgICAgcG9sbElkLFxuICAgICAgb3B0aW9uSW5kZXgsXG4gICAgICBzb2NrZXQ6IHRoaXMuc29ja2V0LFxuICAgICAgbWVtYmVyOiB0aGlzLm1lbWJlcixcbiAgICAgIHJvb21OYW1lOiB0aGlzLnJvb21OYW1lLFxuICAgICAgc2hvd0FsZXJ0OiB0aGlzLnNob3dBbGVydCxcbiAgICAgIHVwZGF0ZUlzUG9sbE1vZGFsVmlzaWJsZTogdGhpcy51cGRhdGVJc1BvbGxNb2RhbFZpc2libGUsXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVkRW5kUG9sbChwb2xsSWQ6IHN0cmluZykge1xuICAgIHRoaXMuaGFuZGxlRW5kUG9sbCh7XG4gICAgICBwb2xsSWQsXG4gICAgICBzb2NrZXQ6IHRoaXMuc29ja2V0LFxuICAgICAgcm9vbU5hbWU6IHRoaXMucm9vbU5hbWUsXG4gICAgICBzaG93QWxlcnQ6IHRoaXMuc2hvd0FsZXJ0LFxuICAgICAgdXBkYXRlSXNQb2xsTW9kYWxWaXNpYmxlOiB0aGlzLnVwZGF0ZUlzUG9sbE1vZGFsVmlzaWJsZSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtb2RhbENvbnRhaW5lclN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIHRvcDogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuNSknLFxuICAgICAgZGlzcGxheTogdGhpcy5pc1BvbGxNb2RhbFZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnLFxuICAgICAgekluZGV4OiA5OTksXG4gICAgfTtcbiAgfVxuXG4gIGdldCBtb2RhbENvbnRlbnRTdHlsZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuYmFja2dyb3VuZENvbG9yLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMTBweCcsXG4gICAgICBwYWRkaW5nOiAnMTBweCcsXG4gICAgICB3aWR0aDogYCR7dGhpcy5tb2RhbFdpZHRofXB4YCxcbiAgICAgIG1heEhlaWdodDogJzc1JScsXG4gICAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICAgIHRvcDogdGhpcy5wb3NpdGlvbi5pbmNsdWRlcygndG9wJykgPyAnMTBweCcgOiAnYXV0bycsXG4gICAgICBib3R0b206IHRoaXMucG9zaXRpb24uaW5jbHVkZXMoJ2JvdHRvbScpID8gJzEwcHgnIDogJ2F1dG8nLFxuICAgICAgbGVmdDogdGhpcy5wb3NpdGlvbi5pbmNsdWRlcygnTGVmdCcpID8gJzEwcHgnIDogJ2F1dG8nLFxuICAgICAgcmlnaHQ6IHRoaXMucG9zaXRpb24uaW5jbHVkZXMoJ1JpZ2h0JykgPyAnMTBweCcgOiAnYXV0bycsXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBbbmdTdHlsZV09XCJtb2RhbENvbnRhaW5lclN0eWxlXCI+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJtb2RhbENvbnRlbnRTdHlsZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICA8aDI+UG9sbHM8L2gyPlxyXG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNsb3NlKClcIiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiPlxyXG4gICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhVGltZXNcIj48L2ZhLWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgIDwhLS0gUHJldmlvdXMgUG9sbHMgU2VjdGlvbiAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cImlzbGV2ZWwgPT09ICcyJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aW91cy1wb2xsc1wiPlxyXG4gICAgICAgICAgPGg1PlByZXZpb3VzIFBvbGxzPC9oNT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwb2xscy5sZW5ndGggPT09IDBcIj5ObyBwb2xscyBhdmFpbGFibGU8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIFVzaW5nIG5nLWNvbnRhaW5lciB0byBhdm9pZCBtdWx0aXBsZSBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZXMgb24gdGhlIHNhbWUgZWxlbWVudCAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBvbGxlZCBvZiBwb2xsc1wiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcG9sbCB8fCBwb2xsZWQuaWQgIT09IHBvbGwuaWQgfHwgcG9sbC5zdGF0dXMgIT09ICdhY3RpdmUnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInBvbGxcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGg2PlF1ZXN0aW9uOjwvaDY+XHJcbiAgICAgICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICByb3dzPVwiM1wiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicG9sbGVkLnF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICA8aDY+T3B0aW9uczo8L2g2PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwb2xsZWQub3B0aW9uczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAge3sgb3B0aW9uIH19OiB7eyBwb2xsZWQudm90ZXNbaV0gfX0gdm90ZXMgKHt7XHJcbiAgICAgICAgICAgICAgICAgIGNhbGN1bGF0ZVBlcmNlbnRhZ2UocG9sbGVkLnZvdGVzLCBpKVxyXG4gICAgICAgICAgICAgICAgfX0lKVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gRW5kIFBvbGwgQnV0dG9uIChpZiBwb2xsIGlzIGFjdGl2ZSkgLS0+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwb2xsZWQuc3RhdHVzID09PSAnYWN0aXZlJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVkRW5kUG9sbChwb2xsZWQuaWQpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBFbmQgUG9sbFxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxociAvPlxyXG5cclxuICAgICAgICA8IS0tIENyZWF0ZSBQb2xsIFNlY3Rpb24gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNyZWF0ZS1wb2xsXCI+XHJcbiAgICAgICAgICA8aDU+Q3JlYXRlIGEgTmV3IFBvbGw8L2g1PlxyXG4gICAgICAgICAgPGZvcm0gKG5nU3VibWl0KT1cInZhbGlkYXRlQW5kQ3JlYXRlUG9sbCgpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvbGxRdWVzdGlvblwiPlBvbGwgUXVlc3Rpb248L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDx0ZXh0YXJlYVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJwb2xsUXVlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgcm93cz1cIjNcIlxyXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoPVwiMzAwXCJcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld1BvbGwucXVlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cInF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvbGxUeXBlXCI+U2VsZWN0IFBvbGwgQW5zd2VyIFR5cGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgIGlkPVwicG9sbFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlUG9sbFR5cGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld1BvbGwudHlwZVwiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwidHlwZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPkNob29zZS4uLjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInRydWVGYWxzZVwiPlRydWUvRmFsc2U8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ5ZXNOb1wiPlllcy9Obzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImN1c3RvbVwiPkN1c3RvbTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUmVuZGVyIFBvbGwgT3B0aW9ucyAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwibmV3UG9sbC50eXBlID09PSAndHJ1ZUZhbHNlJyB8fCBuZXdQb2xsLnR5cGUgPT09ICd5ZXNObydcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBuZXdQb2xsLm9wdGlvbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgbmFtZT1cInBvbGxPcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnRvTG93ZXJDYXNlKClcIlxyXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiJ29wdGlvbicgKyBvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cIidvcHRpb24nICsgb3B0aW9uXCI+e3tcclxuICAgICAgICAgICAgICAgICAgb3B0aW9uXHJcbiAgICAgICAgICAgICAgICB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibmV3UG9sbC50eXBlID09PSAnY3VzdG9tJ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgbmV3UG9sbC5vcHRpb25zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1ncm91cFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk9wdGlvbiB7eyBpICsgMSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgIG1heExlbmd0aD1cIjUwXCJcclxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdQb2xsLm9wdGlvbnNbaV1cIlxyXG4gICAgICAgICAgICAgICAgICBuYW1lPVwib3B0aW9ue3sgaSB9fVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5DcmVhdGUgUG9sbDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxociAvPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gQ3VycmVudCBQb2xsIFNlY3Rpb24gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjdXJyZW50LXBvbGxcIj5cclxuICAgICAgICA8aDU+Q3VycmVudCBQb2xsPC9oNT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicG9sbCAmJiBwb2xsLnN0YXR1cyA9PT0gJ2FjdGl2ZSdcIj5cclxuICAgICAgICAgIDxoNj5RdWVzdGlvbjo8L2g2PlxyXG4gICAgICAgICAgPHRleHRhcmVhXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgcm93cz1cIjNcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJwb2xsLnF1ZXN0aW9uXCJcclxuICAgICAgICAgID48L3RleHRhcmVhPlxyXG4gICAgICAgICAgPGg2Pk9wdGlvbnM6PC9oNj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwb2xsLm9wdGlvbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2tcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cInBvbGxPcHRpb25cIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJpXCJcclxuICAgICAgICAgICAgICBpZD1cInBvbGxPcHRpb257eyBpIH19XCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJwb2xsLnZvdGVycz8uW21lbWJlcl0gPT09IGlcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlZFZvdGVQb2xsKHBvbGwuaWQsIGkpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIFtmb3JdPVwiJ3BvbGxPcHRpb24nICsgaVwiPnt7XHJcbiAgICAgICAgICAgICAgb3B0aW9uXHJcbiAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cInBvbGwuc3RhdHVzID09PSAnYWN0aXZlJyAmJiBpc2xldmVsID09PSAnMidcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZWRFbmRQb2xsKHBvbGwuaWQpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgRW5kIFBvbGxcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhcG9sbCB8fCBwb2xsLnN0YXR1cyAhPT0gJ2FjdGl2ZSdcIj5cclxuICAgICAgICAgIDxociAvPlxyXG4gICAgICAgICAgTm8gYWN0aXZlIHBvbGxcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
import * as i2 from "@angular/forms";
|
|
7
|
-
/**
|
|
8
|
-
* Component for configuring advanced recording options in a MediaSFU session.
|
|
9
|
-
*
|
|
10
|
-
* @component
|
|
11
|
-
* @selector app-advanced-panel-component
|
|
12
|
-
* @standalone true
|
|
13
|
-
* @templateUrl ./advanced-panel-component.component.html
|
|
14
|
-
* @styleUrls ['./advanced-panel-component.component.css']
|
|
15
|
-
* @imports [CommonModule, FormsModule]
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```html
|
|
19
|
-
* <app-advanced-panel-component [parameters]="advancedPanelOptions"></app-advanced-panel-component>
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export class AdvancedPanelComponent {
|
|
23
|
-
parameters = {};
|
|
24
|
-
selectedOrientationVideo;
|
|
25
|
-
selectedRecordingNameTags;
|
|
26
|
-
selectedRecordingVideoType;
|
|
27
|
-
selectedRecordingDisplayType;
|
|
28
|
-
showBackgroundColorModal = false;
|
|
29
|
-
showNameTagsColorModal = false;
|
|
30
|
-
selectedColorType = '';
|
|
31
|
-
recordingText;
|
|
32
|
-
customText;
|
|
33
|
-
recordingPosition;
|
|
34
|
-
ngOnInit() {
|
|
35
|
-
this.selectedOrientationVideo = this.parameters?.recordingOrientationVideo ?? '';
|
|
36
|
-
this.selectedRecordingNameTags = this.parameters?.recordingNameTags ?? false;
|
|
37
|
-
this.selectedRecordingVideoType = this.parameters?.recordingVideoType ?? '';
|
|
38
|
-
this.selectedRecordingDisplayType = this.parameters?.recordingDisplayType ?? 'media';
|
|
39
|
-
this.recordingText = this.parameters?.recordingAddText ?? false;
|
|
40
|
-
this.customText = this.parameters?.recordingCustomText ?? '';
|
|
41
|
-
this.recordingPosition = this.parameters?.recordingCustomTextPosition ?? '';
|
|
42
|
-
}
|
|
43
|
-
ngOnChanges(changes) {
|
|
44
|
-
if (changes['parameters']) {
|
|
45
|
-
this.parameters = changes['parameters'].currentValue;
|
|
46
|
-
this.selectedOrientationVideo = this.parameters.recordingOrientationVideo;
|
|
47
|
-
this.selectedRecordingNameTags = this.parameters.recordingNameTags;
|
|
48
|
-
this.selectedRecordingVideoType = this.parameters.recordingVideoType;
|
|
49
|
-
this.selectedRecordingDisplayType = this.parameters.recordingDisplayType;
|
|
50
|
-
this.recordingText = this.parameters.recordingAddText;
|
|
51
|
-
this.customText = this.parameters.recordingCustomText;
|
|
52
|
-
this.recordingPosition = this.parameters.recordingCustomTextPosition;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
validateTextInput(input) {
|
|
56
|
-
const regex = /^[a-zA-Z0-9\s]{1,40}$/;
|
|
57
|
-
return regex.test(input);
|
|
58
|
-
}
|
|
59
|
-
handleTextChange(value) {
|
|
60
|
-
this.recordingText = value;
|
|
61
|
-
this.parameters.updateRecordingAddText(value);
|
|
62
|
-
}
|
|
63
|
-
onChangeTextHandler(text) {
|
|
64
|
-
if (text && text.length > 0 && !this.validateTextInput(text)) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
this.parameters.updateRecordingCustomText(text);
|
|
68
|
-
this.customText = text;
|
|
69
|
-
}
|
|
70
|
-
handleColorChange(selectedColor, event) {
|
|
71
|
-
const input = event.target;
|
|
72
|
-
const color = input.value;
|
|
73
|
-
if (selectedColor === 'backgroundColor') {
|
|
74
|
-
this.parameters.updateRecordingBackgroundColor(color);
|
|
75
|
-
}
|
|
76
|
-
else if (selectedColor === 'customTextColor') {
|
|
77
|
-
this.parameters.updateRecordingCustomTextColor(color);
|
|
78
|
-
}
|
|
79
|
-
else if (selectedColor === 'nameTagsColor') {
|
|
80
|
-
this.parameters.updateRecordingNameTagsColor(color);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdvancedPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
84
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: AdvancedPanelComponent, isStandalone: true, selector: "app-advanced-panel-component", inputs: { parameters: "parameters" }, usesOnChanges: true, ngImport: i0, template: "<div>\r\n <!-- Video Type -->\r\n <div>\r\n <label class=\"label\">Video Type:</label>\r\n <select [(ngModel)]=\"selectedRecordingVideoType\" (change)=\"parameters.updateRecordingVideoType(selectedRecordingVideoType)\">\r\n <option value=\"fullDisplay\">Full Display (no background)</option>\r\n <option value=\"bestDisplay\">Full Video</option>\r\n <option value=\"all\">All</option>\r\n </select>\r\n </div>\r\n <hr />\r\n\r\n <!-- Display Type -->\r\n <div *ngIf=\"parameters.eventType !== 'broadcast'\">\r\n <label class=\"label\">Display Type:</label>\r\n <select [(ngModel)]=\"selectedRecordingDisplayType\" (change)=\"parameters.updateRecordingDisplayType(selectedRecordingDisplayType)\">\r\n <option value=\"video\">Only Video Participants</option>\r\n <option value=\"videoOpt\">Only Video Participants (optimized)</option>\r\n <option value=\"media\">Participants with media</option>\r\n <option value=\"all\">All Participants</option>\r\n </select>\r\n </div>\r\n <hr />\r\n\r\n <!-- Background Color -->\r\n <div>\r\n <label class=\"label\">Background Color:</label>\r\n <div class=\"color-preview\" [ngStyle]=\"{'background-color': parameters.recordingBackgroundColor}\">\r\n {{ parameters.recordingBackgroundColor }}\r\n </div>\r\n <input type=\"color\" [(ngModel)]=\"parameters.recordingBackgroundColor\" (change)=\"handleColorChange('backgroundColor', $event)\" />\r\n <span class=\"label\">Click to select color</span>\r\n </div>\r\n <hr />\r\n\r\n <!-- Add Text -->\r\n <div>\r\n <label class=\"label\">Add Text:</label>\r\n <select [(ngModel)]=\"recordingText\" (change)=\"handleTextChange(recordingText)\">\r\n <option [ngValue]=\"true\">True</option>\r\n <option [ngValue]=\"false\">False</option>\r\n </select>\r\n </div>\r\n <hr />\r\n\r\n <!-- Custom Text -->\r\n <div *ngIf=\"recordingText\">\r\n <label class=\"label\">Custom Text:</label>\r\n <input type=\"text\" [(ngModel)]=\"customText\" (input)=\"onChangeTextHandler(customText)\" />\r\n <hr />\r\n </div>\r\n\r\n <!-- Custom Text Position -->\r\n <div *ngIf=\"recordingText\">\r\n <label class=\"label\">Custom Text Position:</label>\r\n <select [(ngModel)]=\"recordingPosition\" (change)=\"parameters.updateRecordingCustomTextPosition(recordingPosition)\">\r\n <option value=\"top\">Top</option>\r\n <option value=\"middle\">Middle</option>\r\n <option value=\"bottom\">Bottom</option>\r\n </select>\r\n <hr />\r\n </div>\r\n\r\n <!-- Custom Text Color -->\r\n <div *ngIf=\"recordingText\">\r\n <label class=\"label\">Custom Text Color:</label>\r\n <div class=\"color-preview\" [ngStyle]=\"{'background-color': parameters.recordingCustomTextColor}\">\r\n {{ parameters.recordingCustomTextColor }}\r\n </div>\r\n <input type=\"color\" [(ngModel)]=\"parameters.recordingCustomTextColor\" (change)=\"handleColorChange('customTextColor', $event)\" />\r\n <span class=\"label\">Click to select color</span>\r\n <hr />\r\n </div>\r\n\r\n <!-- Add Name Tags -->\r\n <div>\r\n <label class=\"label\">Add Name Tags:</label>\r\n <select [(ngModel)]=\"selectedRecordingNameTags\" (change)=\"parameters.updateRecordingNameTags(selectedRecordingNameTags)\">\r\n <option [ngValue]=\"true\">True</option>\r\n <option [ngValue]=\"false\">False</option>\r\n </select>\r\n </div>\r\n <hr />\r\n\r\n <!-- Name Tags Color -->\r\n <div>\r\n <label class=\"label\">Name Tags Color:</label>\r\n <div class=\"color-preview\" [ngStyle]=\"{'background-color': parameters.recordingNameTagsColor}\">\r\n {{ parameters.recordingNameTagsColor }}\r\n </div>\r\n <input type=\"color\" [(ngModel)]=\"parameters.recordingNameTagsColor\" (change)=\"handleColorChange('nameTagsColor', $event)\" />\r\n <span class=\"label\">Click to select color</span>\r\n </div>\r\n <hr />\r\n\r\n <!-- Orientation (Video) -->\r\n <div>\r\n <label class=\"label\">Orientation (Video):</label>\r\n <select [(ngModel)]=\"selectedOrientationVideo\" (change)=\"parameters.updateRecordingOrientationVideo(selectedOrientationVideo)\">\r\n <option value=\"landscape\">Landscape</option>\r\n <option value=\"portrait\">Portrait</option>\r\n <option value=\"all\">All</option>\r\n </select>\r\n </div>\r\n <hr />\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
85
|
-
}
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AdvancedPanelComponent, decorators: [{
|
|
87
|
-
type: Component,
|
|
88
|
-
args: [{ selector: 'app-advanced-panel-component', standalone: true, imports: [CommonModule, FormsModule], template: "<div>\r\n <!-- Video Type -->\r\n <div>\r\n <label class=\"label\">Video Type:</label>\r\n <select [(ngModel)]=\"selectedRecordingVideoType\" (change)=\"parameters.updateRecordingVideoType(selectedRecordingVideoType)\">\r\n <option value=\"fullDisplay\">Full Display (no background)</option>\r\n <option value=\"bestDisplay\">Full Video</option>\r\n <option value=\"all\">All</option>\r\n </select>\r\n </div>\r\n <hr />\r\n\r\n <!-- Display Type -->\r\n <div *ngIf=\"parameters.eventType !== 'broadcast'\">\r\n <label class=\"label\">Display Type:</label>\r\n <select [(ngModel)]=\"selectedRecordingDisplayType\" (change)=\"parameters.updateRecordingDisplayType(selectedRecordingDisplayType)\">\r\n <option value=\"video\">Only Video Participants</option>\r\n <option value=\"videoOpt\">Only Video Participants (optimized)</option>\r\n <option value=\"media\">Participants with media</option>\r\n <option value=\"all\">All Participants</option>\r\n </select>\r\n </div>\r\n <hr />\r\n\r\n <!-- Background Color -->\r\n <div>\r\n <label class=\"label\">Background Color:</label>\r\n <div class=\"color-preview\" [ngStyle]=\"{'background-color': parameters.recordingBackgroundColor}\">\r\n {{ parameters.recordingBackgroundColor }}\r\n </div>\r\n <input type=\"color\" [(ngModel)]=\"parameters.recordingBackgroundColor\" (change)=\"handleColorChange('backgroundColor', $event)\" />\r\n <span class=\"label\">Click to select color</span>\r\n </div>\r\n <hr />\r\n\r\n <!-- Add Text -->\r\n <div>\r\n <label class=\"label\">Add Text:</label>\r\n <select [(ngModel)]=\"recordingText\" (change)=\"handleTextChange(recordingText)\">\r\n <option [ngValue]=\"true\">True</option>\r\n <option [ngValue]=\"false\">False</option>\r\n </select>\r\n </div>\r\n <hr />\r\n\r\n <!-- Custom Text -->\r\n <div *ngIf=\"recordingText\">\r\n <label class=\"label\">Custom Text:</label>\r\n <input type=\"text\" [(ngModel)]=\"customText\" (input)=\"onChangeTextHandler(customText)\" />\r\n <hr />\r\n </div>\r\n\r\n <!-- Custom Text Position -->\r\n <div *ngIf=\"recordingText\">\r\n <label class=\"label\">Custom Text Position:</label>\r\n <select [(ngModel)]=\"recordingPosition\" (change)=\"parameters.updateRecordingCustomTextPosition(recordingPosition)\">\r\n <option value=\"top\">Top</option>\r\n <option value=\"middle\">Middle</option>\r\n <option value=\"bottom\">Bottom</option>\r\n </select>\r\n <hr />\r\n </div>\r\n\r\n <!-- Custom Text Color -->\r\n <div *ngIf=\"recordingText\">\r\n <label class=\"label\">Custom Text Color:</label>\r\n <div class=\"color-preview\" [ngStyle]=\"{'background-color': parameters.recordingCustomTextColor}\">\r\n {{ parameters.recordingCustomTextColor }}\r\n </div>\r\n <input type=\"color\" [(ngModel)]=\"parameters.recordingCustomTextColor\" (change)=\"handleColorChange('customTextColor', $event)\" />\r\n <span class=\"label\">Click to select color</span>\r\n <hr />\r\n </div>\r\n\r\n <!-- Add Name Tags -->\r\n <div>\r\n <label class=\"label\">Add Name Tags:</label>\r\n <select [(ngModel)]=\"selectedRecordingNameTags\" (change)=\"parameters.updateRecordingNameTags(selectedRecordingNameTags)\">\r\n <option [ngValue]=\"true\">True</option>\r\n <option [ngValue]=\"false\">False</option>\r\n </select>\r\n </div>\r\n <hr />\r\n\r\n <!-- Name Tags Color -->\r\n <div>\r\n <label class=\"label\">Name Tags Color:</label>\r\n <div class=\"color-preview\" [ngStyle]=\"{'background-color': parameters.recordingNameTagsColor}\">\r\n {{ parameters.recordingNameTagsColor }}\r\n </div>\r\n <input type=\"color\" [(ngModel)]=\"parameters.recordingNameTagsColor\" (change)=\"handleColorChange('nameTagsColor', $event)\" />\r\n <span class=\"label\">Click to select color</span>\r\n </div>\r\n <hr />\r\n\r\n <!-- Orientation (Video) -->\r\n <div>\r\n <label class=\"label\">Orientation (Video):</label>\r\n <select [(ngModel)]=\"selectedOrientationVideo\" (change)=\"parameters.updateRecordingOrientationVideo(selectedOrientationVideo)\">\r\n <option value=\"landscape\">Landscape</option>\r\n <option value=\"portrait\">Portrait</option>\r\n <option value=\"all\">All</option>\r\n </select>\r\n </div>\r\n <hr />\r\n</div>\r\n" }]
|
|
89
|
-
}], propDecorators: { parameters: [{
|
|
90
|
-
type: Input
|
|
91
|
-
}] } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtcGFuZWwtY29tcG9uZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmRpbmctY29tcG9uZW50cy9hZHZhbmNlZC1wYW5lbC1jb21wb25lbnQvYWR2YW5jZWQtcGFuZWwtY29tcG9uZW50cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmRpbmctY29tcG9uZW50cy9hZHZhbmNlZC1wYW5lbC1jb21wb25lbnQvYWR2YW5jZWQtcGFuZWwtY29tcG9uZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBNkI3Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQVVILE1BQU0sT0FBTyxzQkFBc0I7SUFDeEIsVUFBVSxHQUE0QixFQUE2QixDQUFDO0lBRTdFLHdCQUF3QixDQUFVO0lBQ2xDLHlCQUF5QixDQUFXO0lBQ3BDLDBCQUEwQixDQUFVO0lBQ3BDLDRCQUE0QixDQUE2QjtJQUN6RCx3QkFBd0IsR0FBRyxLQUFLLENBQUM7SUFDakMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0lBQy9CLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUN2QixhQUFhLENBQVc7SUFDeEIsVUFBVSxDQUFVO0lBQ3BCLGlCQUFpQixDQUFVO0lBRTNCLFFBQVE7UUFDTixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSx5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O2FBQU0sSUFBSSxhQUFhLEtBQUssZUFBZSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQzt1R0FqRVUsc0JBQXNCOzJGQUF0QixzQkFBc0IsbUpDdkRuQyxreklBMEdBLHlERHJEWSxZQUFZLHVOQUFFLFdBQVc7OzJGQUV4QixzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0UsOEJBQThCLGNBQzVCLElBQUksV0FHUCxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7OEJBRzNCLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRXZlbnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vQHR5cGVzL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBZHZhbmNlZFBhbmVsUGFyYW1ldGVycyB7XG4gIHJlY29yZGluZ09yaWVudGF0aW9uVmlkZW86IHN0cmluZztcbiAgcmVjb3JkaW5nTmFtZVRhZ3M6IGJvb2xlYW47XG4gIHJlY29yZGluZ1ZpZGVvVHlwZTogc3RyaW5nO1xuICByZWNvcmRpbmdEaXNwbGF5VHlwZTogJ3ZpZGVvJyB8ICdtZWRpYScgfCAnYWxsJztcbiAgcmVjb3JkaW5nQWRkVGV4dDogYm9vbGVhbjtcbiAgcmVjb3JkaW5nQ3VzdG9tVGV4dDogc3RyaW5nO1xuICByZWNvcmRpbmdDdXN0b21UZXh0UG9zaXRpb246IHN0cmluZztcbiAgcmVjb3JkaW5nQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIHJlY29yZGluZ0N1c3RvbVRleHRDb2xvcjogc3RyaW5nO1xuICByZWNvcmRpbmdOYW1lVGFnc0NvbG9yOiBzdHJpbmc7XG4gIHVwZGF0ZVJlY29yZGluZ09yaWVudGF0aW9uVmlkZW86IChvcmllbnRhdGlvbjogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdOYW1lVGFnczogKG5hbWVUYWdzOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdWaWRlb1R5cGU6ICh2aWRlb1R5cGU6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nRGlzcGxheVR5cGU6IChkaXNwbGF5VHlwZTogJ3ZpZGVvJyB8ICdtZWRpYScgfCAnYWxsJykgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nQWRkVGV4dDogKGFkZFRleHQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ0N1c3RvbVRleHQ6IChjdXN0b21UZXh0OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ0N1c3RvbVRleHRQb3NpdGlvbjogKHBvc2l0aW9uOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ0JhY2tncm91bmRDb2xvcjogKGNvbG9yOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ0N1c3RvbVRleHRDb2xvcjogKGNvbG9yOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ05hbWVUYWdzQ29sb3I6IChjb2xvcjogc3RyaW5nKSA9PiB2b2lkO1xuICBldmVudFR5cGU6IEV2ZW50VHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgQWR2YW5jZWRQYW5lbFR5cGUgPSAob3B0aW9uczogQWR2YW5jZWRQYW5lbFBhcmFtZXRlcnMpID0+IEhUTUxFbGVtZW50O1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgY29uZmlndXJpbmcgYWR2YW5jZWQgcmVjb3JkaW5nIG9wdGlvbnMgaW4gYSBNZWRpYVNGVSBzZXNzaW9uLlxuICpcbiAqIEBjb21wb25lbnRcbiAqIEBzZWxlY3RvciBhcHAtYWR2YW5jZWQtcGFuZWwtY29tcG9uZW50XG4gKiBAc3RhbmRhbG9uZSB0cnVlXG4gKiBAdGVtcGxhdGVVcmwgLi9hZHZhbmNlZC1wYW5lbC1jb21wb25lbnQuY29tcG9uZW50Lmh0bWxcbiAqIEBzdHlsZVVybHMgWycuL2FkdmFuY2VkLXBhbmVsLWNvbXBvbmVudC5jb21wb25lbnQuY3NzJ11cbiAqIEBpbXBvcnRzIFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8YXBwLWFkdmFuY2VkLXBhbmVsLWNvbXBvbmVudCBbcGFyYW1ldGVyc109XCJhZHZhbmNlZFBhbmVsT3B0aW9uc1wiPjwvYXBwLWFkdmFuY2VkLXBhbmVsLWNvbXBvbmVudD5cbiAqIGBgYFxuICovXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkdmFuY2VkLXBhbmVsLWNvbXBvbmVudCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZHZhbmNlZC1wYW5lbC1jb21wb25lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hZHZhbmNlZC1wYW5lbC1jb21wb25lbnQuY29tcG9uZW50LmNzcyddLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHBhcmFtZXRlcnM6IEFkdmFuY2VkUGFuZWxQYXJhbWV0ZXJzID0ge30gYXMgQWR2YW5jZWRQYW5lbFBhcmFtZXRlcnM7XG5cbiAgc2VsZWN0ZWRPcmllbnRhdGlvblZpZGVvITogc3RyaW5nO1xuICBzZWxlY3RlZFJlY29yZGluZ05hbWVUYWdzITogYm9vbGVhbjtcbiAgc2VsZWN0ZWRSZWNvcmRpbmdWaWRlb1R5cGUhOiBzdHJpbmc7XG4gIHNlbGVjdGVkUmVjb3JkaW5nRGlzcGxheVR5cGUhOiAndmlkZW8nIHwgJ21lZGlhJyB8ICdhbGwnO1xuICBzaG93QmFja2dyb3VuZENvbG9yTW9kYWwgPSBmYWxzZTtcbiAgc2hvd05hbWVUYWdzQ29sb3JNb2RhbCA9IGZhbHNlO1xuICBzZWxlY3RlZENvbG9yVHlwZSA9ICcnO1xuICByZWNvcmRpbmdUZXh0ITogYm9vbGVhbjtcbiAgY3VzdG9tVGV4dCE6IHN0cmluZztcbiAgcmVjb3JkaW5nUG9zaXRpb24hOiBzdHJpbmc7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZE9yaWVudGF0aW9uVmlkZW8gPSB0aGlzLnBhcmFtZXRlcnM/LnJlY29yZGluZ09yaWVudGF0aW9uVmlkZW8gPz8gJyc7XG4gICAgdGhpcy5zZWxlY3RlZFJlY29yZGluZ05hbWVUYWdzID0gdGhpcy5wYXJhbWV0ZXJzPy5yZWNvcmRpbmdOYW1lVGFncyA/PyBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGVkUmVjb3JkaW5nVmlkZW9UeXBlID0gdGhpcy5wYXJhbWV0ZXJzPy5yZWNvcmRpbmdWaWRlb1R5cGUgPz8gJyc7XG4gICAgdGhpcy5zZWxlY3RlZFJlY29yZGluZ0Rpc3BsYXlUeXBlID0gdGhpcy5wYXJhbWV0ZXJzPy5yZWNvcmRpbmdEaXNwbGF5VHlwZSA/PyAnbWVkaWEnO1xuICAgIHRoaXMucmVjb3JkaW5nVGV4dCA9IHRoaXMucGFyYW1ldGVycz8ucmVjb3JkaW5nQWRkVGV4dCA/PyBmYWxzZTtcbiAgICB0aGlzLmN1c3RvbVRleHQgPSB0aGlzLnBhcmFtZXRlcnM/LnJlY29yZGluZ0N1c3RvbVRleHQgPz8gJyc7XG4gICAgdGhpcy5yZWNvcmRpbmdQb3NpdGlvbiA9IHRoaXMucGFyYW1ldGVycz8ucmVjb3JkaW5nQ3VzdG9tVGV4dFBvc2l0aW9uID8/ICcnO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydwYXJhbWV0ZXJzJ10pIHtcbiAgICAgIHRoaXMucGFyYW1ldGVycyA9IGNoYW5nZXNbJ3BhcmFtZXRlcnMnXS5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnNlbGVjdGVkT3JpZW50YXRpb25WaWRlbyA9IHRoaXMucGFyYW1ldGVycy5yZWNvcmRpbmdPcmllbnRhdGlvblZpZGVvO1xuICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZGluZ05hbWVUYWdzID0gdGhpcy5wYXJhbWV0ZXJzLnJlY29yZGluZ05hbWVUYWdzO1xuICAgICAgdGhpcy5zZWxlY3RlZFJlY29yZGluZ1ZpZGVvVHlwZSA9IHRoaXMucGFyYW1ldGVycy5yZWNvcmRpbmdWaWRlb1R5cGU7XG4gICAgICB0aGlzLnNlbGVjdGVkUmVjb3JkaW5nRGlzcGxheVR5cGUgPSB0aGlzLnBhcmFtZXRlcnMucmVjb3JkaW5nRGlzcGxheVR5cGU7XG4gICAgICB0aGlzLnJlY29yZGluZ1RleHQgPSB0aGlzLnBhcmFtZXRlcnMucmVjb3JkaW5nQWRkVGV4dDtcbiAgICAgIHRoaXMuY3VzdG9tVGV4dCA9IHRoaXMucGFyYW1ldGVycy5yZWNvcmRpbmdDdXN0b21UZXh0O1xuICAgICAgdGhpcy5yZWNvcmRpbmdQb3NpdGlvbiA9IHRoaXMucGFyYW1ldGVycy5yZWNvcmRpbmdDdXN0b21UZXh0UG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVUZXh0SW5wdXQoaW5wdXQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gL15bYS16QS1aMC05XFxzXXsxLDQwfSQvO1xuICAgIHJldHVybiByZWdleC50ZXN0KGlucHV0KTtcbiAgfVxuXG4gIGhhbmRsZVRleHRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnJlY29yZGluZ1RleHQgPSB2YWx1ZTtcbiAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkaW5nQWRkVGV4dCh2YWx1ZSk7XG4gIH1cblxuICBvbkNoYW5nZVRleHRIYW5kbGVyKHRleHQ6IHN0cmluZykge1xuICAgIGlmICh0ZXh0ICYmIHRleHQubGVuZ3RoID4gMCAmJiAhdGhpcy52YWxpZGF0ZVRleHRJbnB1dCh0ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkaW5nQ3VzdG9tVGV4dCh0ZXh0KTtcbiAgICB0aGlzLmN1c3RvbVRleHQgPSB0ZXh0O1xuICB9XG5cbiAgaGFuZGxlQ29sb3JDaGFuZ2Uoc2VsZWN0ZWRDb2xvcjogc3RyaW5nLCBldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IGNvbG9yID0gaW5wdXQudmFsdWU7XG4gICAgaWYgKHNlbGVjdGVkQ29sb3IgPT09ICdiYWNrZ3JvdW5kQ29sb3InKSB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkaW5nQmFja2dyb3VuZENvbG9yKGNvbG9yKTtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkQ29sb3IgPT09ICdjdXN0b21UZXh0Q29sb3InKSB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlUmVjb3JkaW5nQ3VzdG9tVGV4dENvbG9yKGNvbG9yKTtcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkQ29sb3IgPT09ICduYW1lVGFnc0NvbG9yJykge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZVJlY29yZGluZ05hbWVUYWdzQ29sb3IoY29sb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdj5cclxuICA8IS0tIFZpZGVvIFR5cGUgLS0+XHJcbiAgPGRpdj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCI+VmlkZW8gVHlwZTo8L2xhYmVsPlxyXG4gICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUmVjb3JkaW5nVmlkZW9UeXBlXCIgKGNoYW5nZSk9XCJwYXJhbWV0ZXJzLnVwZGF0ZVJlY29yZGluZ1ZpZGVvVHlwZShzZWxlY3RlZFJlY29yZGluZ1ZpZGVvVHlwZSlcIj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImZ1bGxEaXNwbGF5XCI+RnVsbCBEaXNwbGF5IChubyBiYWNrZ3JvdW5kKTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiYmVzdERpc3BsYXlcIj5GdWxsIFZpZGVvPC9vcHRpb24+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJhbGxcIj5BbGw8L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PlxyXG4gIDwvZGl2PlxyXG4gIDxociAvPlxyXG5cclxuICA8IS0tIERpc3BsYXkgVHlwZSAtLT5cclxuICA8ZGl2ICpuZ0lmPVwicGFyYW1ldGVycy5ldmVudFR5cGUgIT09ICdicm9hZGNhc3QnXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbFwiPkRpc3BsYXkgVHlwZTo8L2xhYmVsPlxyXG4gICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUmVjb3JkaW5nRGlzcGxheVR5cGVcIiAoY2hhbmdlKT1cInBhcmFtZXRlcnMudXBkYXRlUmVjb3JkaW5nRGlzcGxheVR5cGUoc2VsZWN0ZWRSZWNvcmRpbmdEaXNwbGF5VHlwZSlcIj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cInZpZGVvXCI+T25seSBWaWRlbyBQYXJ0aWNpcGFudHM8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cInZpZGVvT3B0XCI+T25seSBWaWRlbyBQYXJ0aWNpcGFudHMgKG9wdGltaXplZCk8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1lZGlhXCI+UGFydGljaXBhbnRzIHdpdGggbWVkaWE8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImFsbFwiPkFsbCBQYXJ0aWNpcGFudHM8L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PlxyXG4gIDwvZGl2PlxyXG4gIDxociAvPlxyXG5cclxuICA8IS0tIEJhY2tncm91bmQgQ29sb3IgLS0+XHJcbiAgPGRpdj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCI+QmFja2dyb3VuZCBDb2xvcjo8L2xhYmVsPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbG9yLXByZXZpZXdcIiBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOiBwYXJhbWV0ZXJzLnJlY29yZGluZ0JhY2tncm91bmRDb2xvcn1cIj5cclxuICAgICAge3sgcGFyYW1ldGVycy5yZWNvcmRpbmdCYWNrZ3JvdW5kQ29sb3IgfX1cclxuICAgIDwvZGl2PlxyXG4gICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFsobmdNb2RlbCldPVwicGFyYW1ldGVycy5yZWNvcmRpbmdCYWNrZ3JvdW5kQ29sb3JcIiAoY2hhbmdlKT1cImhhbmRsZUNvbG9yQ2hhbmdlKCdiYWNrZ3JvdW5kQ29sb3InLCAkZXZlbnQpXCIgLz5cclxuICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5DbGljayB0byBzZWxlY3QgY29sb3I8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGhyIC8+XHJcblxyXG4gIDwhLS0gQWRkIFRleHQgLS0+XHJcbiAgPGRpdj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCI+QWRkIFRleHQ6PC9sYWJlbD5cclxuICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJyZWNvcmRpbmdUZXh0XCIgKGNoYW5nZSk9XCJoYW5kbGVUZXh0Q2hhbmdlKHJlY29yZGluZ1RleHQpXCI+XHJcbiAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidHJ1ZVwiPlRydWU8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJmYWxzZVwiPkZhbHNlPC9vcHRpb24+XHJcbiAgICA8L3NlbGVjdD5cclxuICA8L2Rpdj5cclxuICA8aHIgLz5cclxuXHJcbiAgPCEtLSBDdXN0b20gVGV4dCAtLT5cclxuICA8ZGl2ICpuZ0lmPVwicmVjb3JkaW5nVGV4dFwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwibGFiZWxcIj5DdXN0b20gVGV4dDo8L2xhYmVsPlxyXG4gICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJjdXN0b21UZXh0XCIgKGlucHV0KT1cIm9uQ2hhbmdlVGV4dEhhbmRsZXIoY3VzdG9tVGV4dClcIiAvPlxyXG4gICAgPGhyIC8+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gQ3VzdG9tIFRleHQgUG9zaXRpb24gLS0+XHJcbiAgPGRpdiAqbmdJZj1cInJlY29yZGluZ1RleHRcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCI+Q3VzdG9tIFRleHQgUG9zaXRpb246PC9sYWJlbD5cclxuICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJyZWNvcmRpbmdQb3NpdGlvblwiIChjaGFuZ2UpPVwicGFyYW1ldGVycy51cGRhdGVSZWNvcmRpbmdDdXN0b21UZXh0UG9zaXRpb24ocmVjb3JkaW5nUG9zaXRpb24pXCI+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJ0b3BcIj5Ub3A8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1pZGRsZVwiPk1pZGRsZTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIHZhbHVlPVwiYm90dG9tXCI+Qm90dG9tPC9vcHRpb24+XHJcbiAgICA8L3NlbGVjdD5cclxuICAgIDxociAvPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEN1c3RvbSBUZXh0IENvbG9yIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJyZWNvcmRpbmdUZXh0XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbFwiPkN1c3RvbSBUZXh0IENvbG9yOjwvbGFiZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sb3ItcHJldmlld1wiIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1jb2xvcic6IHBhcmFtZXRlcnMucmVjb3JkaW5nQ3VzdG9tVGV4dENvbG9yfVwiPlxyXG4gICAgICB7eyBwYXJhbWV0ZXJzLnJlY29yZGluZ0N1c3RvbVRleHRDb2xvciB9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJwYXJhbWV0ZXJzLnJlY29yZGluZ0N1c3RvbVRleHRDb2xvclwiIChjaGFuZ2UpPVwiaGFuZGxlQ29sb3JDaGFuZ2UoJ2N1c3RvbVRleHRDb2xvcicsICRldmVudClcIiAvPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkNsaWNrIHRvIHNlbGVjdCBjb2xvcjwvc3Bhbj5cclxuICAgIDxociAvPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEFkZCBOYW1lIFRhZ3MgLS0+XHJcbiAgPGRpdj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImxhYmVsXCI+QWRkIE5hbWUgVGFnczo8L2xhYmVsPlxyXG4gICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUmVjb3JkaW5nTmFtZVRhZ3NcIiAoY2hhbmdlKT1cInBhcmFtZXRlcnMudXBkYXRlUmVjb3JkaW5nTmFtZVRhZ3Moc2VsZWN0ZWRSZWNvcmRpbmdOYW1lVGFncylcIj5cclxuICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ0cnVlXCI+VHJ1ZTwvb3B0aW9uPlxyXG4gICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cImZhbHNlXCI+RmFsc2U8L29wdGlvbj5cclxuICAgIDwvc2VsZWN0PlxyXG4gIDwvZGl2PlxyXG4gIDxociAvPlxyXG5cclxuICA8IS0tIE5hbWUgVGFncyBDb2xvciAtLT5cclxuICA8ZGl2PlxyXG4gICAgPGxhYmVsIGNsYXNzPVwibGFiZWxcIj5OYW1lIFRhZ3MgQ29sb3I6PC9sYWJlbD5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2xvci1wcmV2aWV3XCIgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogcGFyYW1ldGVycy5yZWNvcmRpbmdOYW1lVGFnc0NvbG9yfVwiPlxyXG4gICAgICB7eyBwYXJhbWV0ZXJzLnJlY29yZGluZ05hbWVUYWdzQ29sb3IgfX1cclxuICAgIDwvZGl2PlxyXG4gICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIFsobmdNb2RlbCldPVwicGFyYW1ldGVycy5yZWNvcmRpbmdOYW1lVGFnc0NvbG9yXCIgKGNoYW5nZSk9XCJoYW5kbGVDb2xvckNoYW5nZSgnbmFtZVRhZ3NDb2xvcicsICRldmVudClcIiAvPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkNsaWNrIHRvIHNlbGVjdCBjb2xvcjwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8aHIgLz5cclxuXHJcbiAgPCEtLSBPcmllbnRhdGlvbiAoVmlkZW8pIC0tPlxyXG4gIDxkaXY+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbFwiPk9yaWVudGF0aW9uIChWaWRlbyk6PC9sYWJlbD5cclxuICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE9yaWVudGF0aW9uVmlkZW9cIiAoY2hhbmdlKT1cInBhcmFtZXRlcnMudXBkYXRlUmVjb3JkaW5nT3JpZW50YXRpb25WaWRlbyhzZWxlY3RlZE9yaWVudGF0aW9uVmlkZW8pXCI+XHJcbiAgICAgIDxvcHRpb24gdmFsdWU9XCJsYW5kc2NhcGVcIj5MYW5kc2NhcGU8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cInBvcnRyYWl0XCI+UG9ydHJhaXQ8L29wdGlvbj5cclxuICAgICAgPG9wdGlvbiB2YWx1ZT1cImFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgPC9zZWxlY3Q+XHJcbiAgPC9kaXY+XHJcbiAgPGhyIC8+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
4
|
-
import { faTimes, faCheck, faPlay } from '@fortawesome/free-solid-svg-icons';
|
|
5
|
-
import { StandardPanelComponent } from '../standard-panel-component/standard-panel-component.component';
|
|
6
|
-
import { AdvancedPanelComponent } from '../advanced-panel-component/advanced-panel-components.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common";
|
|
9
|
-
import * as i2 from "@fortawesome/angular-fontawesome";
|
|
10
|
-
/**
|
|
11
|
-
* Component representing a recording modal.
|
|
12
|
-
*
|
|
13
|
-
* @selector app-recording-modal
|
|
14
|
-
* @standalone true
|
|
15
|
-
* @imports CommonModule, FontAwesomeModule, StandardPanelComponent, AdvancedPanelComponent
|
|
16
|
-
* @templateUrl ./recording-modal.component.html
|
|
17
|
-
* @styleUrls ./recording-modal.component.css
|
|
18
|
-
*
|
|
19
|
-
* @class RecordingModal
|
|
20
|
-
* @implements OnChanges
|
|
21
|
-
*
|
|
22
|
-
* @property {boolean} isRecordingModalVisible - Determines if the recording modal is visible.
|
|
23
|
-
* @property {() => void} onClose - Callback function to close the modal.
|
|
24
|
-
* @property {string} backgroundColor - Background color of the modal.
|
|
25
|
-
* @property {string} position - Position of the modal on the screen.
|
|
26
|
-
* @property {(options: ConfirmRecordingOptions) => void} confirmRecording - Callback function to confirm recording.
|
|
27
|
-
* @property {(options: StartRecordingOptions) => void} startRecording - Callback function to start recording.
|
|
28
|
-
* @property {RecordingModalParameters} parameters - Parameters for the recording modal.
|
|
29
|
-
*
|
|
30
|
-
* @property {IconDefinition} faTimes - FontAwesome icon for times (close).
|
|
31
|
-
* @property {IconDefinition} faCheck - FontAwesome icon for check (confirm).
|
|
32
|
-
* @property {IconDefinition} faPlay - FontAwesome icon for play (start).
|
|
33
|
-
*
|
|
34
|
-
* @method modalContainerStyle - Returns the style object for the modal container.
|
|
35
|
-
* @method modalContentStyle - Returns the style object for the modal content.
|
|
36
|
-
* @method ngOnChanges - Lifecycle hook that is called when any data-bound property of a directive changes.
|
|
37
|
-
* @method confirm - Calls the confirmRecording callback with the current parameters.
|
|
38
|
-
* @method start - Calls the startRecording callback with the current parameters.
|
|
39
|
-
* @example
|
|
40
|
-
* ```html
|
|
41
|
-
* <app-recording-modal
|
|
42
|
-
* [isRecordingModalVisible]="true"
|
|
43
|
-
* [onClose]="closeRecordingModal"
|
|
44
|
-
* [backgroundColor]="'#83c0e9'"
|
|
45
|
-
* [position]="'bottomRight'"
|
|
46
|
-
* [confirmRecording]="confirmRecording"
|
|
47
|
-
* [startRecording]="startRecording"
|
|
48
|
-
* [parameters]="recordingModalParams"
|
|
49
|
-
* ></app-recording-modal>
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
export class RecordingModal {
|
|
53
|
-
isRecordingModalVisible = false;
|
|
54
|
-
onClose;
|
|
55
|
-
backgroundColor = '#83c0e9';
|
|
56
|
-
position = 'bottomRight';
|
|
57
|
-
confirmRecording;
|
|
58
|
-
startRecording;
|
|
59
|
-
parameters = {};
|
|
60
|
-
faTimes = faTimes;
|
|
61
|
-
faCheck = faCheck;
|
|
62
|
-
faPlay = faPlay;
|
|
63
|
-
get modalContainerStyle() {
|
|
64
|
-
return {
|
|
65
|
-
position: 'fixed',
|
|
66
|
-
top: 0,
|
|
67
|
-
left: 0,
|
|
68
|
-
width: '100%',
|
|
69
|
-
height: '100%',
|
|
70
|
-
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
|
71
|
-
display: this.isRecordingModalVisible ? 'block' : 'none',
|
|
72
|
-
zIndex: 999,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
get modalContentStyle() {
|
|
76
|
-
const screenWidth = window.innerWidth;
|
|
77
|
-
let modalWidth = 0.8 * screenWidth;
|
|
78
|
-
if (modalWidth > 350) {
|
|
79
|
-
modalWidth = 350;
|
|
80
|
-
}
|
|
81
|
-
return {
|
|
82
|
-
position: 'fixed',
|
|
83
|
-
backgroundColor: this.backgroundColor,
|
|
84
|
-
borderRadius: '10px',
|
|
85
|
-
padding: '10px',
|
|
86
|
-
width: `${modalWidth}px`,
|
|
87
|
-
maxHeight: '85%',
|
|
88
|
-
overflowY: 'auto',
|
|
89
|
-
top: this.position.includes('top') ? '10px' : 'auto',
|
|
90
|
-
bottom: this.position.includes('bottom') ? '10px' : 'auto',
|
|
91
|
-
left: this.position.includes('Left') ? '10px' : 'auto',
|
|
92
|
-
right: this.position.includes('Right') ? '10px' : 'auto',
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
ngOnChanges(changes) {
|
|
96
|
-
if (changes['isRecordingModalVisible']) {
|
|
97
|
-
if (this.parameters) {
|
|
98
|
-
this.parameters = this.parameters.getUpdatedAllParams();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
confirm() {
|
|
103
|
-
this.confirmRecording({
|
|
104
|
-
parameters: { ...this.parameters },
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
start() {
|
|
108
|
-
this.startRecording({
|
|
109
|
-
parameters: { ...this.parameters },
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RecordingModal, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: RecordingModal, isStandalone: true, selector: "app-recording-modal", inputs: { isRecordingModalVisible: "isRecordingModalVisible", onClose: "onClose", backgroundColor: "backgroundColor", position: "position", confirmRecording: "confirmRecording", startRecording: "startRecording", parameters: "parameters" }, usesOnChanges: true, ngImport: i0, template: "<div [ngStyle]=\"modalContainerStyle\">\r\n <div [ngStyle]=\"modalContentStyle\">\r\n <div style=\"display: flex; flex-direction: column;\">\r\n <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px;\">\r\n <h2 style=\"font-size: x-large; font-weight: bold; color: black;\">\r\n Recording Settings\r\n </h2>\r\n <button (click)=\"onClose()\" style=\"border: none; background: none; cursor: pointer;\">\r\n <fa-icon [icon]=\"faTimes\" size=\"xl\" style=\"font-size: 20px; color: black;\"></fa-icon>\r\n </button>\r\n </div>\r\n <hr style=\"height: 1px; background-color: black; margin: 5px 0;\" />\r\n <div style=\"flex: 1;\">\r\n <div style=\"overflow-y: auto; max-height: calc(100% - 120px); padding: 0;\">\r\n <div style=\"margin: 0; padding: 0;\">\r\n <app-standard-panel-component [parameters]=\"parameters\"></app-standard-panel-component>\r\n <app-advanced-panel-component [parameters]=\"parameters\"></app-advanced-panel-component>\r\n </div>\r\n </div>\r\n <div style=\"height: 1px; background-color: white; \"></div>\r\n <div style=\"display: flex; justify-content: space-between; margin-top: 20px;\">\r\n <button\r\n (click)=\"confirm()\"\r\n style=\"flex: 1; padding: 5px; border-radius: 5px; justify-content: center; align-items: center; margin: 0 10px; background: #4CAF50; cursor: pointer;\">\r\n <span style=\"color: black; font-size: 14px;\">Confirm</span>\r\n </button>\r\n <button *ngIf=\"!parameters.recordPaused\"\r\n (click)=\"start()\"\r\n style=\"flex: 1; padding: 5px; border-radius: 5px; justify-content: center; align-items: center; margin: 0 10px; background: #f44336; cursor: pointer;\">\r\n <span style=\"color: black; font-size: 14px;\">Start <fa-icon [icon]=\"faPlay\"></fa-icon></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "component", type: StandardPanelComponent, selector: "app-standard-panel-component", inputs: ["parameters"] }, { kind: "component", type: AdvancedPanelComponent, selector: "app-advanced-panel-component", inputs: ["parameters"] }] });
|
|
114
|
-
}
|
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RecordingModal, decorators: [{
|
|
116
|
-
type: Component,
|
|
117
|
-
args: [{ selector: 'app-recording-modal', standalone: true, imports: [CommonModule, FontAwesomeModule, StandardPanelComponent, AdvancedPanelComponent], template: "<div [ngStyle]=\"modalContainerStyle\">\r\n <div [ngStyle]=\"modalContentStyle\">\r\n <div style=\"display: flex; flex-direction: column;\">\r\n <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px;\">\r\n <h2 style=\"font-size: x-large; font-weight: bold; color: black;\">\r\n Recording Settings\r\n </h2>\r\n <button (click)=\"onClose()\" style=\"border: none; background: none; cursor: pointer;\">\r\n <fa-icon [icon]=\"faTimes\" size=\"xl\" style=\"font-size: 20px; color: black;\"></fa-icon>\r\n </button>\r\n </div>\r\n <hr style=\"height: 1px; background-color: black; margin: 5px 0;\" />\r\n <div style=\"flex: 1;\">\r\n <div style=\"overflow-y: auto; max-height: calc(100% - 120px); padding: 0;\">\r\n <div style=\"margin: 0; padding: 0;\">\r\n <app-standard-panel-component [parameters]=\"parameters\"></app-standard-panel-component>\r\n <app-advanced-panel-component [parameters]=\"parameters\"></app-advanced-panel-component>\r\n </div>\r\n </div>\r\n <div style=\"height: 1px; background-color: white; \"></div>\r\n <div style=\"display: flex; justify-content: space-between; margin-top: 20px;\">\r\n <button\r\n (click)=\"confirm()\"\r\n style=\"flex: 1; padding: 5px; border-radius: 5px; justify-content: center; align-items: center; margin: 0 10px; background: #4CAF50; cursor: pointer;\">\r\n <span style=\"color: black; font-size: 14px;\">Confirm</span>\r\n </button>\r\n <button *ngIf=\"!parameters.recordPaused\"\r\n (click)=\"start()\"\r\n style=\"flex: 1; padding: 5px; border-radius: 5px; justify-content: center; align-items: center; margin: 0 10px; background: #f44336; cursor: pointer;\">\r\n <span style=\"color: black; font-size: 14px;\">Start <fa-icon [icon]=\"faPlay\"></fa-icon></span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
118
|
-
}], propDecorators: { isRecordingModalVisible: [{
|
|
119
|
-
type: Input
|
|
120
|
-
}], onClose: [{
|
|
121
|
-
type: Input
|
|
122
|
-
}], backgroundColor: [{
|
|
123
|
-
type: Input
|
|
124
|
-
}], position: [{
|
|
125
|
-
type: Input
|
|
126
|
-
}], confirmRecording: [{
|
|
127
|
-
type: Input
|
|
128
|
-
}], startRecording: [{
|
|
129
|
-
type: Input
|
|
130
|
-
}], parameters: [{
|
|
131
|
-
type: Input
|
|
132
|
-
}] } });
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3JlY29yZGluZy1jb21wb25lbnRzL3JlY29yZGluZy1tb2RhbC9yZWNvcmRpbmctbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkaW5nLWNvbXBvbmVudHMvcmVjb3JkaW5nLW1vZGFsL3JlY29yZGluZy1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlFQUFpRSxDQUFDOzs7O0FBNkR6Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q0c7QUFRSCxNQUFNLE9BQU8sY0FBYztJQUNoQix1QkFBdUIsR0FBRyxLQUFLLENBQUM7SUFDaEMsT0FBTyxDQUFjO0lBQ3JCLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDNUIsUUFBUSxHQUFHLGFBQWEsQ0FBQztJQUN6QixnQkFBZ0IsQ0FBOEM7SUFDOUQsY0FBYyxDQUE0QztJQUMxRCxVQUFVLEdBQTZCLEVBQThCLENBQUM7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RyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYVRpbWVzLCBmYUNoZWNrLCBmYVBsYXkgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgU3RhbmRhcmRQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uL3N0YW5kYXJkLXBhbmVsLWNvbXBvbmVudC9zdGFuZGFyZC1wYW5lbC1jb21wb25lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEFkdmFuY2VkUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9hZHZhbmNlZC1wYW5lbC1jb21wb25lbnQvYWR2YW5jZWQtcGFuZWwtY29tcG9uZW50cy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRXZlbnRUeXBlLFxuICBDb25maXJtUmVjb3JkaW5nUGFyYW1ldGVycyxcbiAgU3RhcnRSZWNvcmRpbmdQYXJhbWV0ZXJzLFxuICBDb25maXJtUmVjb3JkaW5nT3B0aW9ucyxcbiAgU3RhcnRSZWNvcmRpbmdPcHRpb25zLFxufSBmcm9tICcuLi8uLi8uLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZGluZ01vZGFsUGFyYW1ldGVyc1xuICBleHRlbmRzIENvbmZpcm1SZWNvcmRpbmdQYXJhbWV0ZXJzLFxuICAgIFN0YXJ0UmVjb3JkaW5nUGFyYW1ldGVycyB7XG4gIHJlY29yZFBhdXNlZDogYm9vbGVhbjtcbiAgcmVjb3JkaW5nVmlkZW9UeXBlOiBzdHJpbmc7XG4gIHJlY29yZGluZ0Rpc3BsYXlUeXBlOiAndmlkZW8nIHwgJ21lZGlhJyB8ICdhbGwnO1xuICByZWNvcmRpbmdCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgcmVjb3JkaW5nTmFtZVRhZ3NDb2xvcjogc3RyaW5nO1xuICByZWNvcmRpbmdPcmllbnRhdGlvblZpZGVvOiBzdHJpbmc7XG4gIHJlY29yZGluZ05hbWVUYWdzOiBib29sZWFuO1xuICByZWNvcmRpbmdBZGRUZXh0OiBib29sZWFuO1xuICByZWNvcmRpbmdDdXN0b21UZXh0OiBzdHJpbmc7XG4gIHJlY29yZGluZ0N1c3RvbVRleHRQb3NpdGlvbjogc3RyaW5nO1xuICByZWNvcmRpbmdDdXN0b21UZXh0Q29sb3I6IHN0cmluZztcbiAgcmVjb3JkaW5nTWVkaWFPcHRpb25zOiBzdHJpbmc7XG4gIHJlY29yZGluZ0F1ZGlvT3B0aW9uczogc3RyaW5nO1xuICByZWNvcmRpbmdWaWRlb09wdGlvbnM6IHN0cmluZztcbiAgcmVjb3JkaW5nQWRkSExTOiBib29sZWFuO1xuICBldmVudFR5cGU6IEV2ZW50VHlwZTtcbiAgdXBkYXRlUmVjb3JkaW5nVmlkZW9UeXBlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nRGlzcGxheVR5cGU6ICh2YWx1ZTogJ3ZpZGVvJyB8ICdtZWRpYScgfCAnYWxsJykgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nQmFja2dyb3VuZENvbG9yOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nTmFtZVRhZ3NDb2xvcjogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ09yaWVudGF0aW9uVmlkZW86ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdOYW1lVGFnczogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdBZGRUZXh0OiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ0N1c3RvbVRleHQ6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdDdXN0b21UZXh0UG9zaXRpb246ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdDdXN0b21UZXh0Q29sb3I6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdNZWRpYU9wdGlvbnM6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdBdWRpb09wdGlvbnM6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdWaWRlb09wdGlvbnM6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdBZGRITFM6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcblxuICAvLyBtZWRpYXNmdSBmdW5jdGlvbnNcbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gUmVjb3JkaW5nTW9kYWxQYXJhbWV0ZXJzO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkaW5nTW9kYWxPcHRpb25zIHtcbiAgaXNSZWNvcmRpbmdNb2RhbFZpc2libGU6IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBwb3NpdGlvbjogc3RyaW5nO1xuXG4gIGNvbmZpcm1SZWNvcmRpbmc6IChvcHRpb25zOiBDb25maXJtUmVjb3JkaW5nT3B0aW9ucykgPT4gdm9pZDtcbiAgc3RhcnRSZWNvcmRpbmc6IChvcHRpb25zOiBTdGFydFJlY29yZGluZ09wdGlvbnMpID0+IHZvaWQ7XG4gIHBhcmFtZXRlcnM6IFJlY29yZGluZ01vZGFsUGFyYW1ldGVycztcbn1cblxuZXhwb3J0IHR5cGUgUmVjb3JkaW5nTW9kYWxUeXBlID0gKG9wdGlvbnM6IFJlY29yZGluZ01vZGFsT3B0aW9ucykgPT4gSFRNTEVsZW1lbnQ7XG5cbi8qKlxuICogQ29tcG9uZW50IHJlcHJlc2VudGluZyBhIHJlY29yZGluZyBtb2RhbC5cbiAqXG4gKiBAc2VsZWN0b3IgYXBwLXJlY29yZGluZy1tb2RhbFxuICogQHN0YW5kYWxvbmUgdHJ1ZVxuICogQGltcG9ydHMgQ29tbW9uTW9kdWxlLCBGb250QXdlc29tZU1vZHVsZSwgU3RhbmRhcmRQYW5lbENvbXBvbmVudCwgQWR2YW5jZWRQYW5lbENvbXBvbmVudFxuICogQHRlbXBsYXRlVXJsIC4vcmVjb3JkaW5nLW1vZGFsLmNvbXBvbmVudC5odG1sXG4gKiBAc3R5bGVVcmxzIC4vcmVjb3JkaW5nLW1vZGFsLmNvbXBvbmVudC5jc3NcbiAqXG4gKiBAY2xhc3MgUmVjb3JkaW5nTW9kYWxcbiAqIEBpbXBsZW1lbnRzIE9uQ2hhbmdlc1xuICpcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNSZWNvcmRpbmdNb2RhbFZpc2libGUgLSBEZXRlcm1pbmVzIGlmIHRoZSByZWNvcmRpbmcgbW9kYWwgaXMgdmlzaWJsZS5cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gb25DbG9zZSAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGNsb3NlIHRoZSBtb2RhbC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBiYWNrZ3JvdW5kQ29sb3IgLSBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBtb2RhbC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwb3NpdGlvbiAtIFBvc2l0aW9uIG9mIHRoZSBtb2RhbCBvbiB0aGUgc2NyZWVuLlxuICogQHByb3BlcnR5IHsob3B0aW9uczogQ29uZmlybVJlY29yZGluZ09wdGlvbnMpID0+IHZvaWR9IGNvbmZpcm1SZWNvcmRpbmcgLSBDYWxsYmFjayBmdW5jdGlvbiB0byBjb25maXJtIHJlY29yZGluZy5cbiAqIEBwcm9wZXJ0eSB7KG9wdGlvbnM6IFN0YXJ0UmVjb3JkaW5nT3B0aW9ucykgPT4gdm9pZH0gc3RhcnRSZWNvcmRpbmcgLSBDYWxsYmFjayBmdW5jdGlvbiB0byBzdGFydCByZWNvcmRpbmcuXG4gKiBAcHJvcGVydHkge1JlY29yZGluZ01vZGFsUGFyYW1ldGVyc30gcGFyYW1ldGVycyAtIFBhcmFtZXRlcnMgZm9yIHRoZSByZWNvcmRpbmcgbW9kYWwuXG4gKlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFUaW1lcyAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHRpbWVzIChjbG9zZSkuXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYUNoZWNrIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgY2hlY2sgKGNvbmZpcm0pLlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFQbGF5IC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgcGxheSAoc3RhcnQpLlxuICpcbiAqIEBtZXRob2QgbW9kYWxDb250YWluZXJTdHlsZSAtIFJldHVybnMgdGhlIHN0eWxlIG9iamVjdCBmb3IgdGhlIG1vZGFsIGNvbnRhaW5lci5cbiAqIEBtZXRob2QgbW9kYWxDb250ZW50U3R5bGUgLSBSZXR1cm5zIHRoZSBzdHlsZSBvYmplY3QgZm9yIHRoZSBtb2RhbCBjb250ZW50LlxuICogQG1ldGhvZCBuZ09uQ2hhbmdlcyAtIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIHdoZW4gYW55IGRhdGEtYm91bmQgcHJvcGVydHkgb2YgYSBkaXJlY3RpdmUgY2hhbmdlcy5cbiAqIEBtZXRob2QgY29uZmlybSAtIENhbGxzIHRoZSBjb25maXJtUmVjb3JkaW5nIGNhbGxiYWNrIHdpdGggdGhlIGN1cnJlbnQgcGFyYW1ldGVycy5cbiAqIEBtZXRob2Qgc3RhcnQgLSBDYWxscyB0aGUgc3RhcnRSZWNvcmRpbmcgY2FsbGJhY2sgd2l0aCB0aGUgY3VycmVudCBwYXJhbWV0ZXJzLlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxhcHAtcmVjb3JkaW5nLW1vZGFsXG4gKiAgIFtpc1JlY29yZGluZ01vZGFsVmlzaWJsZV09XCJ0cnVlXCJcbiAqICAgW29uQ2xvc2VdPVwiY2xvc2VSZWNvcmRpbmdNb2RhbFwiXG4gKiAgIFtiYWNrZ3JvdW5kQ29sb3JdPVwiJyM4M2MwZTknXCJcbiAqICAgW3Bvc2l0aW9uXT1cIidib3R0b21SaWdodCdcIlxuICogICBbY29uZmlybVJlY29yZGluZ109XCJjb25maXJtUmVjb3JkaW5nXCJcbiAqICAgW3N0YXJ0UmVjb3JkaW5nXT1cInN0YXJ0UmVjb3JkaW5nXCJcbiAqICAgW3BhcmFtZXRlcnNdPVwicmVjb3JkaW5nTW9kYWxQYXJhbXNcIlxuICogPjwvYXBwLXJlY29yZGluZy1tb2RhbD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmVjb3JkaW5nLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGUsIFN0YW5kYXJkUGFuZWxDb21wb25lbnQsIEFkdmFuY2VkUGFuZWxDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjb3JkaW5nLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjb3JkaW5nLW1vZGFsLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVjb3JkaW5nTW9kYWwgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBpc1JlY29yZGluZ01vZGFsVmlzaWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBvbkNsb3NlITogKCkgPT4gdm9pZDtcbiAgQElucHV0KCkgYmFja2dyb3VuZENvbG9yID0gJyM4M2MwZTknO1xuICBASW5wdXQoKSBwb3NpdGlvbiA9ICdib3R0b21SaWdodCc7XG4gIEBJbnB1dCgpIGNvbmZpcm1SZWNvcmRpbmchOiAob3B0aW9uczogQ29uZmlybVJlY29yZGluZ09wdGlvbnMpID0+IHZvaWQ7XG4gIEBJbnB1dCgpIHN0YXJ0UmVjb3JkaW5nITogKG9wdGlvbnM6IFN0YXJ0UmVjb3JkaW5nT3B0aW9ucykgPT4gdm9pZDtcbiAgQElucHV0KCkgcGFyYW1ldGVyczogUmVjb3JkaW5nTW9kYWxQYXJhbWV0ZXJzID0ge30gYXMgUmVjb3JkaW5nTW9kYWxQYXJhbWV0ZXJzO1xuXG4gIGZhVGltZXMgPSBmYVRpbWVzO1xuICBmYUNoZWNrID0gZmFDaGVjaztcbiAgZmFQbGF5ID0gZmFQbGF5O1xuXG4gIGdldCBtb2RhbENvbnRhaW5lclN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIHRvcDogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuNSknLFxuICAgICAgZGlzcGxheTogdGhpcy5pc1JlY29yZGluZ01vZGFsVmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZScsXG4gICAgICB6SW5kZXg6IDk5OSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IG1vZGFsQ29udGVudFN0eWxlKCkge1xuICAgIGNvbnN0IHNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgbGV0IG1vZGFsV2lkdGggPSAwLjggKiBzY3JlZW5XaWR0aDtcbiAgICBpZiAobW9kYWxXaWR0aCA+IDM1MCkge1xuICAgICAgbW9kYWxXaWR0aCA9IDM1MDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLmJhY2tncm91bmRDb2xvcixcbiAgICAgIGJvcmRlclJhZGl1czogJzEwcHgnLFxuICAgICAgcGFkZGluZzogJzEwcHgnLFxuICAgICAgd2lkdGg6IGAke21vZGFsV2lkdGh9cHhgLFxuICAgICAgbWF4SGVpZ2h0OiAnODUlJyxcbiAgICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgICAgdG9wOiB0aGlzLnBvc2l0aW9uLmluY2x1ZGVzKCd0b3AnKSA/ICcxMHB4JyA6ICdhdXRvJyxcbiAgICAgIGJvdHRvbTogdGhpcy5wb3NpdGlvbi5pbmNsdWRlcygnYm90dG9tJykgPyAnMTBweCcgOiAnYXV0bycsXG4gICAgICBsZWZ0OiB0aGlzLnBvc2l0aW9uLmluY2x1ZGVzKCdMZWZ0JykgPyAnMTBweCcgOiAnYXV0bycsXG4gICAgICByaWdodDogdGhpcy5wb3NpdGlvbi5pbmNsdWRlcygnUmlnaHQnKSA/ICcxMHB4JyA6ICdhdXRvJyxcbiAgICB9O1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydpc1JlY29yZGluZ01vZGFsVmlzaWJsZSddKSB7XG4gICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzKSB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uZmlybSgpIHtcbiAgICB0aGlzLmNvbmZpcm1SZWNvcmRpbmcoe1xuICAgICAgcGFyYW1ldGVyczogeyAuLi50aGlzLnBhcmFtZXRlcnMgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0KCkge1xuICAgIHRoaXMuc3RhcnRSZWNvcmRpbmcoe1xuICAgICAgcGFyYW1ldGVyczogeyAuLi50aGlzLnBhcmFtZXRlcnMgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBbbmdTdHlsZV09XCJtb2RhbENvbnRhaW5lclN0eWxlXCI+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJtb2RhbENvbnRlbnRTdHlsZVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCI+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbi1ib3R0b206IDE1cHg7XCI+XHJcbiAgICAgICAgPGgyIHN0eWxlPVwiZm9udC1zaXplOiB4LWxhcmdlOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6IGJsYWNrO1wiPlxyXG4gICAgICAgICAgUmVjb3JkaW5nIFNldHRpbmdzXHJcbiAgICAgICAgPC9oMj5cclxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNsb3NlKClcIiBzdHlsZT1cImJvcmRlcjogbm9uZTsgYmFja2dyb3VuZDogbm9uZTsgY3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFUaW1lc1wiIHNpemU9XCJ4bFwiIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4OyBjb2xvcjogYmxhY2s7XCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGhyIHN0eWxlPVwiaGVpZ2h0OiAxcHg7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyBtYXJnaW46IDVweCAwO1wiIC8+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJmbGV4OiAxO1wiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvOyBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAxMjBweCk7IHBhZGRpbmc6IDA7XCI+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luOiAwOyBwYWRkaW5nOiAwO1wiPlxyXG4gICAgICAgICAgICA8YXBwLXN0YW5kYXJkLXBhbmVsLWNvbXBvbmVudCBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzXCI+PC9hcHAtc3RhbmRhcmQtcGFuZWwtY29tcG9uZW50PlxyXG4gICAgICAgICAgICA8YXBwLWFkdmFuY2VkLXBhbmVsLWNvbXBvbmVudCBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzXCI+PC9hcHAtYWR2YW5jZWQtcGFuZWwtY29tcG9uZW50PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImhlaWdodDogMXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgbWFyZ2luLXRvcDogMjBweDtcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm0oKVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiZmxleDogMTsgcGFkZGluZzogNXB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBtYXJnaW46IDAgMTBweDsgYmFja2dyb3VuZDogIzRDQUY1MDsgY3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxNHB4O1wiPkNvbmZpcm08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhcGFyYW1ldGVycy5yZWNvcmRQYXVzZWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwic3RhcnQoKVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiZmxleDogMTsgcGFkZGluZzogNXB4OyBib3JkZXItcmFkaXVzOiA1cHg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBtYXJnaW46IDAgMTBweDsgYmFja2dyb3VuZDogI2Y0NDMzNjsgY3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxNHB4O1wiPlN0YXJ0IDxmYS1pY29uIFtpY29uXT1cImZhUGxheVwiPjwvZmEtaWNvbj48L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|