@webex/plugin-meetings 3.8.0-next.20 → 3.8.0-next.21

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.
@@ -185,8 +185,10 @@ var MeetingUtil = {
185
185
  liveAnnotationSupported: options.liveAnnotationSupported,
186
186
  clientMediaPreferences: clientMediaPreferences
187
187
  }).then(function (res) {
188
+ var _res$headers;
188
189
  var parsed = MeetingUtil.parseLocusJoin(res);
189
190
  meeting.setLocus(parsed);
191
+ meeting.isoLocalClientMeetingJoinTime = res === null || res === void 0 ? void 0 : (_res$headers = res.headers) === null || _res$headers === void 0 ? void 0 : _res$headers.date; // read from header if exist, else fall back to system clock : https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-555657
190
192
  webex.internal.newMetrics.submitClientEvent({
191
193
  name: 'client.locus.join.response',
192
194
  payload: {
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","require","_webexErrors","_loggerProxy","_interopRequireDefault","_constants","_browserDetection","_intentToJoin","_joinMeeting2","_parameter","_permission","_passwordError","_captchaError","_triggerProxy","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ownKeys","r","t","_Object$keys","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","MeetingUtil","parseLocusJoin","response","parsed","locus","body","mediaConnections","locusUrl","url","locusId","split","pop","selfId","self","id","mediaConnection","mediaId","remoteUpdateAudioVideo","meeting","audioMuted","videoMuted","_promise","reject","ParameterError","locusMediaRequest","send","type","selfUrl","sequence","locusInfo","muteOptions","then","_response$body","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","_err$body","errorCode","INTENT_TO_JOIN","includes","getIpVersion","webex","_webex$internal$devic","internal","device","ipNetworkDetector","supportsIpV4","supportsIpV6","config","meetings","backendIpv6NativeSupport","BrowserDetection","isBrowser","undefined","IP_VERSION","ipv4_and_ipv6","only_ipv4","only_ipv6","unknown","joinMeeting","_joinMeeting","_asyncToGenerator2","_regenerator","mark","_callee","options","_meeting$meetingInfo","reachability","clientMediaPreferences","wrap","_callee$","_context","prev","abrupt","getWebexObject","newMetrics","submitClientEvent","meetingId","ipver","joinCookie","preferTranscoding","isMultistream","getClientMediaPreferences","sent","roapMessage","getReachabilityReportToAttachToRoap","t0","LoggerProxy","logger","error","meetingRequest","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","deviceUrl","locusClusterUrl","meetingInfo","correlationId","permissionToken","resourceId","moderator","pin","moveToResource","asResourceOccupant","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","res","setLocus","payload","trigger","identifiers","trackingId","headers","trackingid","stop","_x","_x2","cleanUp","meetingEnded","stopPeriodicLogUpload","breakouts","simultaneousInterpretation","stopStatsAnalyzer","statsAnalyzer","stopAnalyzer","resolve","closeRemoteStreams","closePeerConnections","cleanupLocalStreams","unsetRemoteStreams","unsetPeerConnections","reconnectionManager","stopKeepAlive","_meeting$config","enableAutomaticLLM","updateLLMConnection","disconnectPhoneAudio","phoneUrl","meetingState","FULL_STATE","INACTIVE","MeetingNotActiveError","catch","concat","prepareLeaveMeetingOptions","defaultOptions","leaveMeeting","isUserInLeftState","UserNotJoinedError","leaveOptions","moveMeeting","declineMeeting","reason","_locusInfo$parsedLocu","_locusInfo$parsedLocu2","parsedLocus","state","_LEFT_","isUserInIdleState","_locusInfo$parsedLocu3","_locusInfo$parsedLocu4","_IDLE_","isUserInJoinedState","_locusInfo$parsedLocu5","_locusInfo$parsedLocu6","_JOINED_","isMediaEstablished","currentMediaStatus","audio","video","share","joinMeetingOptions","requiredCaptcha","CaptchaError","passwordStatus","PASSWORD_STATUS","REQUIRED","PasswordError","IntentToJoinError","JoinMeetingError","buildLeaveFetchRequestOptions","buildLeaveMeetingRequestOptions","getTrack","stream","audioTrack","videoTrack","audioTracks","videoTracks","getAudioTracks","getVideoTracks","_audioTracks","_audioTracks2","_slicedToArray2","_videoTracks","_videoTracks2","getModeratorFromLocusInfo","getPolicyFromLocusInfo","policy","getUserDisplayHintsFromLocusInfo","_locusInfo$parsedLocu7","_locusInfo$parsedLocu8","userDisplayHints","canInviteNewParticipants","displayHints","DISPLAY_HINTS","ADD_GUEST","canAdmitParticipant","ROSTER_WAITING_TO_JOIN","canUserLock","LOCK_CONTROL_LOCK","LOCK_STATUS_UNLOCKED","canUserUnlock","LOCK_CONTROL_UNLOCK","LOCK_STATUS_LOCKED","canUserRaiseHand","RAISE_HAND","canUserLowerAllHands","LOWER_ALL_HANDS","canUserLowerSomeoneElsesHand","LOWER_SOMEONE_ELSES_HAND","bothLeaveAndEndMeetingAvailable","LEAVE_TRANSFER_HOST_END_MEETING","LEAVE_END_MEETING","canManageBreakout","BREAKOUT_MANAGEMENT","canStartBreakout","DISABLE_BREAKOUT_START","canBroadcastMessageToBreakout","policies","BROADCAST_MESSAGE_TO_BREAKOUT","SELF_POLICY","SUPPORT_BROADCAST_MESSAGE","isSuppressBreakoutSupport","UCF_SUPPRESS_BREAKOUTS_SUPPORT","canAdmitLobbyToBreakout","DISABLE_LOBBY_TO_BREAKOUT","isBreakoutPreassignmentsEnabled","DISABLE_BREAKOUT_PREASSIGNMENTS","canUserAskForHelp","DISABLE_ASK_FOR_HELP","lockMeeting","actions","request","canLock","lock","PermissionError","unlockMeeting","canUnlock","handleAudioLogging","audioStream","LOG_HEADER","settings","getSettings","deviceId","log","_stringify","handleVideoLogging","videoStream","endMeetingForAll","endOptions","canEnableClosedCaption","CAPTION_START","isSaveTranscriptsEnabled","SAVE_TRANSCRIPTS_ENABLED","canStartTranscribing","TRANSCRIPTION_CONTROL_START","canStopTranscribing","TRANSCRIPTION_CONTROL_STOP","isClosedCaptionActive","CAPTION_STATUS_ACTIVE","canStartManualCaption","MANUAL_CAPTION_START","canStopManualCaption","MANUAL_CAPTION_STOP","isManualCaptionActive","MANUAL_CAPTION_STATUS_ACTIVE","isWebexAssistantActive","WEBEX_ASSISTANT_STATUS_ACTIVE","canViewCaptionPanel","ENABLE_CAPTION_PANEL","isRealTimeTranslationEnabled","DISPLAY_REAL_TIME_TRANSLATION","canSelectSpokenLanguages","DISPLAY_NON_ENGLISH_ASR","waitingForOthersToJoin","WAITING_FOR_OTHERS","canSendReactions","originalValue","REACTIONS_ACTIVE","REACTIONS_INACTIVE","canUserRenameSelfAndObserved","CAN_RENAME_SELF_AND_OBSERVED","canUserRenameOthers","CAN_RENAME_OTHERS","canShareWhiteBoard","SHARE_WHITEBOARD","addSequence","requestBody","_meeting$locusInfo","updateLocusWithDelta","_response$body2","handleLocusDelta","generateBuildLocusDeltaRequestOptions","originalMeeting","meetingRef","WeakRef","buildLocusDeltaRequestOptions","originalOptions","deref","cloneDeep","generateLocusDeltaRequest","locusDeltaRequest","selfSupportsFeature","feature","userPolicies","parseInterpretationInfo","_meetingInfo$meetingS","siInfo","updateMeetingSIEnabled","turnOnSimultaneousInterpretation","currentSIInterpreter","hostSIEnabled","meetingSiteSetting","enableHostInterpreterControlSI","updateHostSIEnabled","renameKey","obj","oldKey","newKey","_meeting$simultaneous","_meeting$simultaneous2","lanuagesInfo","siLanguages","_iterator","_step","language","updateInterpretation","Trigger","file","function","EVENT_TRIGGERS","MEETING_INTERPRETATION_UPDATE","getChangeMeetingFloorErrorPayload","errorPayload","errorDescription","shownToUser","LOCAL_SHARE_ERRORS","UNDEFINED","fatal","category","DEVICE_NOT_JOINED","NO_MEDIA_FOR_DEVICE","NO_CONFLUENCE_ID","CONTENT_SHARING_DISABLED","LOCUS_PARTICIPANT_DNE","CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD","_default","exports"],"sources":["util.ts"],"sourcesContent":["import {LocalCameraStream, LocalMicrophoneStream} from '@webex/media-helpers';\n\nimport {cloneDeep} from 'lodash';\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n INTENT_TO_JOIN,\n _LEFT_,\n _IDLE_,\n _JOINED_,\n PASSWORD_STATUS,\n DISPLAY_HINTS,\n FULL_STATE,\n SELF_POLICY,\n EVENT_TRIGGERS,\n LOCAL_SHARE_ERRORS,\n IP_VERSION,\n} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\nimport IntentToJoinError from '../common/errors/intent-to-join';\nimport JoinMeetingError from '../common/errors/join-meeting';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\nimport Trigger from '../common/events/trigger-proxy';\n\nconst MeetingUtil = {\n parseLocusJoin: (response) => {\n const parsed: any = {};\n\n // First todo: add check for existance\n parsed.locus = response.body.locus;\n parsed.mediaConnections = response.body.mediaConnections;\n parsed.locusUrl = parsed.locus.url;\n parsed.locusId = parsed.locus.url.split('/').pop();\n parsed.selfId = parsed.locus.self.id;\n\n // we need mediaId before making roap calls\n parsed.mediaConnections.forEach((mediaConnection) => {\n if (mediaConnection.mediaId) {\n parsed.mediaId = mediaConnection.mediaId;\n }\n });\n\n return parsed;\n },\n\n remoteUpdateAudioVideo: (meeting, audioMuted?: boolean, videoMuted?: boolean) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n if (!meeting.locusMediaRequest) {\n return Promise.reject(\n new ParameterError(\n 'You need a meeting with a media connection, call Meeting.addMedia() first.'\n )\n );\n }\n\n return meeting.locusMediaRequest\n .send({\n type: 'LocalMute',\n selfUrl: meeting.selfUrl,\n mediaId: meeting.mediaId,\n sequence: meeting.locusInfo.sequence,\n muteOptions: {\n audioMuted,\n videoMuted,\n },\n })\n .then((response) => response?.body?.locus);\n },\n\n hasOwner: (info) => info && info.owner,\n\n isOwnerSelf: (owner, selfId) => owner === selfId,\n\n isPinOrGuest: (err) => err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode),\n\n /**\n * Returns the current state of knowledge about whether we are on an ipv4-only or ipv6-only or mixed (ipv4 and ipv6) network.\n * The return value matches the possible values of \"ipver\" parameter used by the backend APIs.\n *\n * @param {Object} webex webex instance\n * @returns {IP_VERSION|undefined} ipver value to be passed to the backend APIs or undefined if we should not pass any value to the backend\n */\n getIpVersion(webex: any): IP_VERSION | undefined {\n const {supportsIpV4, supportsIpV6} = webex.internal.device.ipNetworkDetector;\n\n if (\n !webex.config.meetings.backendIpv6NativeSupport &&\n BrowserDetection().isBrowser('firefox')\n ) {\n // when backend doesn't support native ipv6,\n // then our NAT64/DNS64 based solution relies on FQDN ICE candidates, but Firefox doesn't support them,\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1713128\n // so for Firefox we don't want the backend to activate the \"ipv6 feature\"\n return undefined;\n }\n\n if (supportsIpV4 && supportsIpV6) {\n return IP_VERSION.ipv4_and_ipv6;\n }\n\n if (supportsIpV4) {\n return IP_VERSION.only_ipv4;\n }\n\n if (supportsIpV6) {\n return IP_VERSION.only_ipv6;\n }\n\n return IP_VERSION.unknown;\n },\n\n joinMeeting: async (meeting, options) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n const webex = meeting.getWebexObject();\n\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.request',\n options: {meetingId: meeting.id},\n });\n\n let reachability;\n let clientMediaPreferences = {\n // bare minimum fallback value that should allow us to join\n ipver: IP_VERSION.unknown,\n joinCookie: undefined,\n preferTranscoding: !meeting.isMultistream,\n };\n\n try {\n clientMediaPreferences = await webex.meetings.reachability.getClientMediaPreferences(\n meeting.isMultistream,\n MeetingUtil.getIpVersion(webex)\n );\n if (options.roapMessage) {\n // we only need to attach reachability if we are sending a roap message\n // sending reachability on its own will cause Locus to reject our join request\n reachability = await webex.meetings.reachability.getReachabilityReportToAttachToRoap();\n }\n } catch (e) {\n LoggerProxy.logger.error(\n 'Meeting:util#joinMeeting --> Error getting reachability or clientMediaPreferences:',\n e\n );\n }\n\n // eslint-disable-next-line no-warning-comments\n // TODO: check if the meeting is in JOINING state\n // if Joining state termintate the request as user might click multiple times\n return meeting.meetingRequest\n .joinMeeting({\n inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,\n meetingNumber: meeting.meetingNumber,\n deviceUrl: meeting.deviceUrl,\n locusUrl: meeting.locusUrl,\n locusClusterUrl: meeting.meetingInfo?.locusClusterUrl,\n correlationId: meeting.correlationId,\n reachability,\n roapMessage: options.roapMessage,\n permissionToken: meeting.permissionToken,\n resourceId: options.resourceId || null,\n moderator: options.moderator,\n pin: options.pin,\n moveToResource: options.moveToResource,\n asResourceOccupant: options.asResourceOccupant,\n breakoutsSupported: options.breakoutsSupported,\n locale: options.locale,\n deviceCapabilities: options.deviceCapabilities,\n liveAnnotationSupported: options.liveAnnotationSupported,\n clientMediaPreferences,\n })\n .then((res) => {\n const parsed = MeetingUtil.parseLocusJoin(res);\n meeting.setLocus(parsed);\n\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.response',\n payload: {\n trigger: 'loci-update',\n identifiers: {\n trackingId: res.headers.trackingid,\n },\n },\n options: {\n meetingId: meeting.id,\n mediaConnections: parsed.mediaConnections,\n },\n });\n\n return parsed;\n });\n },\n\n cleanUp: (meeting) => {\n meeting.getWebexObject().internal.device.meetingEnded();\n meeting.stopPeriodicLogUpload();\n\n meeting.breakouts.cleanUp();\n meeting.simultaneousInterpretation.cleanUp();\n meeting.locusMediaRequest = undefined;\n\n // make sure we send last metrics before we close the peerconnection\n const stopStatsAnalyzer = meeting.statsAnalyzer\n ? meeting.statsAnalyzer.stopAnalyzer()\n : Promise.resolve();\n\n return stopStatsAnalyzer\n .then(() => meeting.closeRemoteStreams())\n .then(() => meeting.closePeerConnections())\n .then(() => {\n meeting.cleanupLocalStreams();\n meeting.unsetRemoteStreams();\n meeting.unsetPeerConnections();\n meeting.reconnectionManager.cleanUp();\n })\n .then(() => meeting.stopKeepAlive())\n .then(() => {\n if (meeting.config?.enableAutomaticLLM) {\n meeting.updateLLMConnection();\n }\n });\n },\n\n disconnectPhoneAudio: (meeting, phoneUrl) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const options = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n phoneUrl,\n };\n\n return meeting.meetingRequest.disconnectPhoneAudio(options).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Returns options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} leave options\n */\n prepareLeaveMeetingOptions: (meeting, options: any = {}) => {\n const defaultOptions = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n resourceId: meeting.resourceId,\n deviceUrl: meeting.deviceUrl,\n };\n\n return {...defaultOptions, ...options};\n },\n\n // by default will leave on meeting's resourceId\n // if you explicity want it not to leave on resource id, pass\n // {resourceId: null}\n // TODO: chris, you can modify this however you want\n leaveMeeting: (meeting, options: any = {}) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n // TODO: clean up if the meeting is already inactive\n return Promise.reject(new MeetingNotActiveError());\n }\n\n if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest\n .leaveMeeting(leaveOptions)\n .then(() => {\n if (options.moveMeeting) {\n return Promise.resolve();\n }\n\n return MeetingUtil.cleanUp(meeting);\n })\n .catch((err) => {\n // TODO: If the meeting state comes as LEFT or INACTIVE as response then\n // 1) on leave clean up the meeting or simply do a sync on the meeting\n // 2) If the error says meeting is inactive then destroy the meeting object\n LoggerProxy.logger.error(\n `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n declineMeeting: (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason,\n }),\n\n isUserInLeftState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_,\n\n isUserInIdleState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_,\n\n isUserInJoinedState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_,\n\n isMediaEstablished: (currentMediaStatus) =>\n currentMediaStatus &&\n (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share),\n\n joinMeetingOptions: (meeting, options: any = {}) => {\n const webex = meeting.getWebexObject();\n\n meeting.resourceId = meeting.resourceId || options.resourceId;\n\n if (meeting.requiredCaptcha) {\n return Promise.reject(new CaptchaError());\n }\n if (meeting.passwordStatus === PASSWORD_STATUS.REQUIRED) {\n return Promise.reject(new PasswordError());\n }\n\n if (options.pin) {\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.collected',\n options: {\n meetingId: meeting.id,\n },\n });\n }\n\n // normal join meeting, scenario A, D\n return MeetingUtil.joinMeeting(meeting, options).catch((err) => {\n // joining a claimed PMR that is not my own, scenario B\n if (MeetingUtil.isPinOrGuest(err)) {\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.prompt',\n options: {\n meetingId: meeting.id,\n },\n });\n\n // request host pin or non host for unclaimed PMR, start of Scenario C\n // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature\n return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));\n }\n LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n },\n\n /**\n * Returns request options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} request options\n */\n buildLeaveFetchRequestOptions: (meeting, options: any = {}) => {\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest.buildLeaveMeetingRequestOptions(leaveOptions);\n },\n\n getTrack: (stream) => {\n let audioTrack = null;\n let videoTrack = null;\n let audioTracks = null;\n let videoTracks = null;\n\n if (!stream) {\n return {audioTrack: null, videoTrack: null};\n }\n if (stream.getAudioTracks) {\n audioTracks = stream.getAudioTracks();\n }\n if (stream.getVideoTracks) {\n videoTracks = stream.getVideoTracks();\n }\n\n if (audioTracks && audioTracks.length > 0) {\n [audioTrack] = audioTracks;\n }\n\n if (videoTracks && videoTracks.length > 0) {\n [videoTrack] = videoTracks;\n }\n\n return {audioTrack, videoTrack};\n },\n\n getModeratorFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator,\n\n getPolicyFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy,\n\n getUserDisplayHintsFromLocusInfo: (locusInfo) =>\n locusInfo?.parsedLocus?.info?.userDisplayHints || [],\n\n canInviteNewParticipants: (displayHints) => displayHints.includes(DISPLAY_HINTS.ADD_GUEST),\n\n canAdmitParticipant: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN),\n\n canUserLock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED),\n\n canUserUnlock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED),\n\n canUserRaiseHand: (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND),\n\n canUserLowerAllHands: (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS),\n\n canUserLowerSomeoneElsesHand: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND),\n\n bothLeaveAndEndMeetingAvailable: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||\n displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING),\n\n canManageBreakout: (displayHints) => displayHints.includes(DISPLAY_HINTS.BREAKOUT_MANAGEMENT),\n\n canStartBreakout: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_START),\n\n canBroadcastMessageToBreakout: (displayHints, policies = {}) =>\n displayHints.includes(DISPLAY_HINTS.BROADCAST_MESSAGE_TO_BREAKOUT) &&\n !!policies[SELF_POLICY.SUPPORT_BROADCAST_MESSAGE],\n\n isSuppressBreakoutSupport: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.UCF_SUPPRESS_BREAKOUTS_SUPPORT),\n\n canAdmitLobbyToBreakout: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_LOBBY_TO_BREAKOUT),\n\n isBreakoutPreassignmentsEnabled: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_PREASSIGNMENTS),\n\n canUserAskForHelp: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_ASK_FOR_HELP),\n\n lockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canLock) {\n return request.lockMeeting({locusUrl, lock: true});\n }\n\n return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));\n },\n\n unlockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canUnlock) {\n return request.lockMeeting({locusUrl, lock: false});\n }\n\n return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));\n },\n\n handleAudioLogging: (audioStream?: LocalMicrophoneStream) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioStream) {\n const settings = audioStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n handleVideoLogging: (videoStream?: LocalCameraStream) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoStream) {\n const settings = videoStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n endMeetingForAll: (meeting) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const endOptions = {\n locusUrl: meeting.locusUrl,\n };\n\n return meeting.meetingRequest\n .endMeetingForAll(endOptions)\n .then(() => MeetingUtil.cleanUp(meeting))\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n canEnableClosedCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_START),\n\n isSaveTranscriptsEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SAVE_TRANSCRIPTS_ENABLED),\n\n canStartTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START),\n\n canStopTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP),\n\n isClosedCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE),\n\n canStartManualCaption: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_START),\n\n canStopManualCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STOP),\n\n isManualCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STATUS_ACTIVE),\n\n isWebexAssistantActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE),\n\n canViewCaptionPanel: (displayHints) => displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL),\n\n isRealTimeTranslationEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION),\n\n canSelectSpokenLanguages: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR),\n\n waitingForOthersToJoin: (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS),\n\n canSendReactions: (originalValue, displayHints) => {\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {\n return true;\n }\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_INACTIVE)) {\n return false;\n }\n\n return originalValue;\n },\n canUserRenameSelfAndObserved: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAN_RENAME_SELF_AND_OBSERVED),\n\n canUserRenameOthers: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAN_RENAME_OTHERS),\n\n canShareWhiteBoard: (displayHints) => displayHints.includes(DISPLAY_HINTS.SHARE_WHITEBOARD),\n\n /**\n * Adds the current locus sequence information to a request body\n * @param {Object} meeting The meeting object\n * @param {Object} requestBody The body of a request to locus\n * @returns {void}\n */\n addSequence: (meeting, requestBody) => {\n const sequence = meeting?.locusInfo?.sequence;\n\n if (!sequence) {\n return;\n }\n\n requestBody.sequence = sequence;\n },\n\n /**\n * Updates the locus info for the meeting with the delta locus\n * returned from requests that include the sequence information\n * Returns the original response object\n * @param {Object} meeting The meeting object\n * @param {Object} response The response of the http request\n * @returns {Object}\n */\n updateLocusWithDelta: (meeting, response) => {\n if (!meeting) {\n return response;\n }\n\n const locus = response?.body?.locus;\n\n if (locus) {\n meeting.locusInfo.handleLocusDelta(locus, meeting);\n }\n\n return response;\n },\n\n generateBuildLocusDeltaRequestOptions: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return originalOptions;\n }\n\n const options = cloneDeep(originalOptions);\n\n if (!options.body) {\n options.body = {};\n }\n\n MeetingUtil.addSequence(meeting, options.body);\n\n return options;\n };\n\n return buildLocusDeltaRequestOptions;\n },\n\n generateLocusDeltaRequest: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions =\n MeetingUtil.generateBuildLocusDeltaRequestOptions(originalMeeting);\n\n const locusDeltaRequest = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return Promise.resolve();\n }\n\n const options = buildLocusDeltaRequestOptions(originalOptions);\n\n return meeting\n .request(options)\n .then((response) => MeetingUtil.updateLocusWithDelta(meeting, response));\n };\n\n return locusDeltaRequest;\n },\n\n selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => {\n if (!userPolicies) {\n return true;\n }\n\n return userPolicies[feature];\n },\n\n parseInterpretationInfo: (meeting, meetingInfo) => {\n if (!meeting || !meetingInfo) {\n return;\n }\n const siInfo = meetingInfo.simultaneousInterpretation;\n meeting.simultaneousInterpretation.updateMeetingSIEnabled(\n !!meetingInfo.turnOnSimultaneousInterpretation,\n !!siInfo?.currentSIInterpreter\n );\n const hostSIEnabled = !!(\n meetingInfo.turnOnSimultaneousInterpretation &&\n meetingInfo?.meetingSiteSetting?.enableHostInterpreterControlSI\n );\n meeting.simultaneousInterpretation.updateHostSIEnabled(hostSIEnabled);\n\n function renameKey(obj, oldKey, newKey) {\n if (oldKey in obj) {\n obj[newKey] = obj[oldKey];\n delete obj[oldKey];\n }\n }\n if (siInfo) {\n const lanuagesInfo = cloneDeep(siInfo.siLanguages);\n for (const language of lanuagesInfo) {\n renameKey(language, 'languageCode', 'languageName');\n renameKey(language, 'languageGroupId', 'languageCode');\n }\n if (!meeting.simultaneousInterpretation?.siLanguages?.length) {\n meeting.simultaneousInterpretation.updateInterpretation({siLanguages: lanuagesInfo});\n }\n }\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'parseInterpretationInfo',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE\n );\n },\n\n /**\n * Returns a CA-recognized error payload for the specified raw error message/reason.\n *\n * New errors can be added to this function for handling in the future\n *\n * @param {String} reason the raw error message\n * @returns {Array<object>} an array of payload objects\n */\n getChangeMeetingFloorErrorPayload: (reason: string) => {\n const errorPayload = {\n errorDescription: reason,\n name: 'locus.response',\n shownToUser: false,\n };\n if (reason.includes(LOCAL_SHARE_ERRORS.UNDEFINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.DEVICE_NOT_JOINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4050,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_MEDIA_FOR_DEVICE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'media',\n errorCode: 2048,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_CONFLUENCE_ID)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4064,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_SHARING_DISABLED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4065,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.LOCUS_PARTICIPANT_DNE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4066,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4067,\n },\n ];\n }\n\n // return unknown error\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n },\n};\n\nexport default MeetingUtil;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAaA,IAAAK,iBAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,aAAA,GAAAH,sBAAA,CAAAH,OAAA;AACA,IAAAO,aAAA,GAAAJ,sBAAA,CAAAH,OAAA;AACA,IAAAQ,UAAA,GAAAL,sBAAA,CAAAH,OAAA;AACA,IAAAS,WAAA,GAAAN,sBAAA,CAAAH,OAAA;AACA,IAAAU,cAAA,GAAAP,sBAAA,CAAAH,OAAA;AACA,IAAAW,aAAA,GAAAR,sBAAA,CAAAH,OAAA;AACA,IAAAY,aAAA,GAAAT,sBAAA,CAAAH,OAAA;AAAqD,SAAAa,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,OAAA,oBAAAH,CAAA,CAAAI,gBAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,cAAA,CAAAL,CAAA,MAAAE,EAAA,GAAAI,2BAAA,CAAAN,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAO,MAAA,qBAAAL,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAM,CAAA,UAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAH,CAAA,IAAAR,CAAA,CAAAO,MAAA,WAAAK,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAb,CAAA,CAAAQ,CAAA,UAAAM,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAR,EAAA,GAAAA,EAAA,CAAAmB,IAAA,CAAArB,CAAA,MAAAW,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAApB,EAAA,CAAAqB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAhB,EAAA,CAAAuB,MAAA,UAAAvB,EAAA,CAAAuB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAd,4BAAAN,CAAA,EAAA0B,MAAA,SAAA1B,CAAA,qBAAAA,CAAA,sBAAA2B,iBAAA,CAAA3B,CAAA,EAAA0B,MAAA,OAAAf,CAAA,GAAAiB,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAT,IAAA,CAAArB,CAAA,EAAA+B,KAAA,aAAApB,CAAA,iBAAAX,CAAA,CAAAgC,WAAA,EAAArB,CAAA,GAAAX,CAAA,CAAAgC,WAAA,CAAAC,IAAA,MAAAtB,CAAA,cAAAA,CAAA,mBAAAuB,WAAA,CAAAlC,CAAA,OAAAW,CAAA,+DAAAwB,IAAA,CAAAxB,CAAA,UAAAgB,iBAAA,CAAA3B,CAAA,EAAA0B,MAAA;AAAA,SAAAC,kBAAAS,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA7B,MAAA,EAAA8B,GAAA,GAAAD,GAAA,CAAA7B,MAAA,WAAAC,CAAA,MAAA8B,IAAA,OAAAC,KAAA,CAAAF,GAAA,GAAA7B,CAAA,GAAA6B,GAAA,EAAA7B,CAAA,IAAA8B,IAAA,CAAA9B,CAAA,IAAA4B,GAAA,CAAA5B,CAAA,UAAA8B,IAAA;AAAA,SAAAE,QAAA1B,CAAA,EAAA2B,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAA7B,CAAA,OAAA8B,6BAAA,QAAA5C,CAAA,GAAA4C,6BAAA,CAAA9B,CAAA,GAAA2B,CAAA,KAAAzC,CAAA,GAAAA,CAAA,CAAA6C,MAAA,WAAAJ,CAAA,WAAAK,gCAAA,CAAAhC,CAAA,EAAA2B,CAAA,EAAAM,UAAA,OAAAL,CAAA,CAAAM,IAAA,CAAAC,KAAA,CAAAP,CAAA,EAAA1C,CAAA,YAAA0C,CAAA;AAAA,SAAAQ,cAAApC,CAAA,aAAA2B,CAAA,MAAAA,CAAA,GAAAU,SAAA,CAAA5C,MAAA,EAAAkC,CAAA,UAAAC,CAAA,WAAAS,SAAA,CAAAV,CAAA,IAAAU,SAAA,CAAAV,CAAA,QAAAA,CAAA,OAAAD,OAAA,CAAAZ,MAAA,CAAAc,CAAA,OAAAU,OAAA,WAAAX,CAAA,QAAAY,gBAAA,CAAAC,OAAA,EAAAxC,CAAA,EAAA2B,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAc,iCAAA,GAAAC,wBAAA,CAAA1C,CAAA,EAAAyC,iCAAA,CAAAb,CAAA,KAAAF,OAAA,CAAAZ,MAAA,CAAAc,CAAA,GAAAU,OAAA,WAAAX,CAAA,IAAAgB,sBAAA,CAAA3C,CAAA,EAAA2B,CAAA,EAAAK,gCAAA,CAAAJ,CAAA,EAAAD,CAAA,iBAAA3B,CAAA;AAErD,IAAM4C,WAAW,GAAG;EAClBC,cAAc,EAAE,SAAAA,eAACC,QAAQ,EAAK;IAC5B,IAAMC,MAAW,GAAG,CAAC,CAAC;;IAEtB;IACAA,MAAM,CAACC,KAAK,GAAGF,QAAQ,CAACG,IAAI,CAACD,KAAK;IAClCD,MAAM,CAACG,gBAAgB,GAAGJ,QAAQ,CAACG,IAAI,CAACC,gBAAgB;IACxDH,MAAM,CAACI,QAAQ,GAAGJ,MAAM,CAACC,KAAK,CAACI,GAAG;IAClCL,MAAM,CAACM,OAAO,GAAGN,MAAM,CAACC,KAAK,CAACI,GAAG,CAACE,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAC;IAClDR,MAAM,CAACS,MAAM,GAAGT,MAAM,CAACC,KAAK,CAACS,IAAI,CAACC,EAAE;;IAEpC;IACAX,MAAM,CAACG,gBAAgB,CAACZ,OAAO,CAAC,UAACqB,eAAe,EAAK;MACnD,IAAIA,eAAe,CAACC,OAAO,EAAE;QAC3Bb,MAAM,CAACa,OAAO,GAAGD,eAAe,CAACC,OAAO;MAC1C;IACF,CAAC,CAAC;IAEF,OAAOb,MAAM;EACf,CAAC;EAEDc,sBAAsB,EAAE,SAAAA,uBAACC,OAAO,EAAEC,UAAoB,EAAEC,UAAoB,EAAK;IAC/E,IAAI,CAACF,OAAO,EAAE;MACZ,OAAOG,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAIC,kBAAc,CAAC,4BAA4B,CAAC,CAAC;IACzE;IAEA,IAAI,CAACL,OAAO,CAACM,iBAAiB,EAAE;MAC9B,OAAOH,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CACnB,IAAIC,kBAAc,CAChB,4EACF,CACF,CAAC;IACH;IAEA,OAAOL,OAAO,CAACM,iBAAiB,CAC7BC,IAAI,CAAC;MACJC,IAAI,EAAE,WAAW;MACjBC,OAAO,EAAET,OAAO,CAACS,OAAO;MACxBX,OAAO,EAAEE,OAAO,CAACF,OAAO;MACxBY,QAAQ,EAAEV,OAAO,CAACW,SAAS,CAACD,QAAQ;MACpCE,WAAW,EAAE;QACXX,UAAU,EAAVA,UAAU;QACVC,UAAU,EAAVA;MACF;IACF,CAAC,CAAC,CACDW,IAAI,CAAC,UAAC7B,QAAQ;MAAA,IAAA8B,cAAA;MAAA,OAAK9B,QAAQ,aAARA,QAAQ,wBAAA8B,cAAA,GAAR9B,QAAQ,CAAEG,IAAI,cAAA2B,cAAA,uBAAdA,cAAA,CAAgB5B,KAAK;IAAA,EAAC;EAC9C,CAAC;EAED6B,QAAQ,EAAE,SAAAA,SAACC,IAAI;IAAA,OAAKA,IAAI,IAAIA,IAAI,CAACC,KAAK;EAAA;EAEtCC,WAAW,EAAE,SAAAA,YAACD,KAAK,EAAEvB,MAAM;IAAA,OAAKuB,KAAK,KAAKvB,MAAM;EAAA;EAEhDyB,YAAY,EAAE,SAAAA,aAAC3E,GAAG;IAAA,IAAA4E,SAAA;IAAA,OAAK,CAAA5E,GAAG,aAAHA,GAAG,wBAAA4E,SAAA,GAAH5E,GAAG,CAAE2C,IAAI,cAAAiC,SAAA,uBAATA,SAAA,CAAWC,SAAS,KAAIC,yBAAc,CAACC,QAAQ,CAAC/E,GAAG,CAAC2C,IAAI,CAACkC,SAAS,CAAC;EAAA;EAE1F;AACF;AACA;AACA;AACA;AACA;AACA;EACEG,YAAY,WAAAA,aAACC,KAAU,EAA0B;IAC/C,IAAAC,qBAAA,GAAqCD,KAAK,CAACE,QAAQ,CAACC,MAAM,CAACC,iBAAiB;MAArEC,YAAY,GAAAJ,qBAAA,CAAZI,YAAY;MAAEC,YAAY,GAAAL,qBAAA,CAAZK,YAAY;IAEjC,IACE,CAACN,KAAK,CAACO,MAAM,CAACC,QAAQ,CAACC,wBAAwB,IAC/C,IAAAC,yBAAgB,EAAC,CAAC,CAACC,SAAS,CAAC,SAAS,CAAC,EACvC;MACA;MACA;MACA;MACA;MACA,OAAOC,SAAS;IAClB;IAEA,IAAIP,YAAY,IAAIC,YAAY,EAAE;MAChC,OAAOO,qBAAU,CAACC,aAAa;IACjC;IAEA,IAAIT,YAAY,EAAE;MAChB,OAAOQ,qBAAU,CAACE,SAAS;IAC7B;IAEA,IAAIT,YAAY,EAAE;MAChB,OAAOO,qBAAU,CAACG,SAAS;IAC7B;IAEA,OAAOH,qBAAU,CAACI,OAAO;EAC3B,CAAC;EAEDC,WAAW;IAAA,IAAAC,YAAA,OAAAC,kBAAA,CAAAnE,OAAA,gBAAAoE,YAAA,CAAApE,OAAA,CAAAqE,IAAA,CAAE,SAAAC,QAAOhD,OAAO,EAAEiD,OAAO;MAAA,IAAAC,oBAAA;MAAA,IAAAzB,KAAA,EAAA0B,YAAA,EAAAC,sBAAA;MAAA,OAAAN,YAAA,CAAApE,OAAA,CAAA2E,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAA5G,IAAA;UAAA;YAAA,IAC7BqD,OAAO;cAAAuD,QAAA,CAAA5G,IAAA;cAAA;YAAA;YAAA,OAAA4G,QAAA,CAAAE,MAAA,WACHtD,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAIC,kBAAc,CAAC,4BAA4B,CAAC,CAAC;UAAA;YAEnEoB,KAAK,GAAGzB,OAAO,CAAC0D,cAAc,CAAC,CAAC,EAEtC;YACAjC,KAAK,CAACE,QAAQ,CAACgC,UAAU,CAACC,iBAAiB,CAAC;cAC1CvG,IAAI,EAAE,2BAA2B;cACjC4F,OAAO,EAAE;gBAACY,SAAS,EAAE7D,OAAO,CAACJ;cAAE;YACjC,CAAC,CAAC;YAGEwD,sBAAsB,GAAG;cAC3B;cACAU,KAAK,EAAExB,qBAAU,CAACI,OAAO;cACzBqB,UAAU,EAAE1B,SAAS;cACrB2B,iBAAiB,EAAE,CAAChE,OAAO,CAACiE;YAC9B,CAAC;YAAAV,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAA5G,IAAA;YAAA,OAGgC8E,KAAK,CAACQ,QAAQ,CAACkB,YAAY,CAACe,yBAAyB,CAClFlE,OAAO,CAACiE,aAAa,EACrBnF,WAAW,CAAC0C,YAAY,CAACC,KAAK,CAChC,CAAC;UAAA;YAHD2B,sBAAsB,GAAAG,QAAA,CAAAY,IAAA;YAAA,KAIlBlB,OAAO,CAACmB,WAAW;cAAAb,QAAA,CAAA5G,IAAA;cAAA;YAAA;YAAA4G,QAAA,CAAA5G,IAAA;YAAA,OAGA8E,KAAK,CAACQ,QAAQ,CAACkB,YAAY,CAACkB,mCAAmC,CAAC,CAAC;UAAA;YAAtFlB,YAAY,GAAAI,QAAA,CAAAY,IAAA;UAAA;YAAAZ,QAAA,CAAA5G,IAAA;YAAA;UAAA;YAAA4G,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAe,EAAA,GAAAf,QAAA;YAGdgB,oBAAW,CAACC,MAAM,CAACC,KAAK,CACtB,oFAAoF,EAAAlB,QAAA,CAAAe,EAEtF,CAAC;UAAC;YAAA,OAAAf,QAAA,CAAAE,MAAA,WAMGzD,OAAO,CAAC0E,cAAc,CAC1B/B,WAAW,CAAC;cACXgC,cAAc,EAAE3E,OAAO,CAAC4E,cAAc,IAAI5E,OAAO,CAAC6E,MAAM;cACxDC,aAAa,EAAE9E,OAAO,CAAC8E,aAAa;cACpCC,SAAS,EAAE/E,OAAO,CAAC+E,SAAS;cAC5B1F,QAAQ,EAAEW,OAAO,CAACX,QAAQ;cAC1B2F,eAAe,GAAA9B,oBAAA,GAAElD,OAAO,CAACiF,WAAW,cAAA/B,oBAAA,uBAAnBA,oBAAA,CAAqB8B,eAAe;cACrDE,aAAa,EAAElF,OAAO,CAACkF,aAAa;cACpC/B,YAAY,EAAZA,YAAY;cACZiB,WAAW,EAAEnB,OAAO,CAACmB,WAAW;cAChCe,eAAe,EAAEnF,OAAO,CAACmF,eAAe;cACxCC,UAAU,EAAEnC,OAAO,CAACmC,UAAU,IAAI,IAAI;cACtCC,SAAS,EAAEpC,OAAO,CAACoC,SAAS;cAC5BC,GAAG,EAAErC,OAAO,CAACqC,GAAG;cAChBC,cAAc,EAAEtC,OAAO,CAACsC,cAAc;cACtCC,kBAAkB,EAAEvC,OAAO,CAACuC,kBAAkB;cAC9CC,kBAAkB,EAAExC,OAAO,CAACwC,kBAAkB;cAC9CC,MAAM,EAAEzC,OAAO,CAACyC,MAAM;cACtBC,kBAAkB,EAAE1C,OAAO,CAAC0C,kBAAkB;cAC9CC,uBAAuB,EAAE3C,OAAO,CAAC2C,uBAAuB;cACxDxC,sBAAsB,EAAtBA;YACF,CAAC,CAAC,CACDvC,IAAI,CAAC,UAACgF,GAAG,EAAK;cACb,IAAM5G,MAAM,GAAGH,WAAW,CAACC,cAAc,CAAC8G,GAAG,CAAC;cAC9C7F,OAAO,CAAC8F,QAAQ,CAAC7G,MAAM,CAAC;cAExBwC,KAAK,CAACE,QAAQ,CAACgC,UAAU,CAACC,iBAAiB,CAAC;gBAC1CvG,IAAI,EAAE,4BAA4B;gBAClC0I,OAAO,EAAE;kBACPC,OAAO,EAAE,aAAa;kBACtBC,WAAW,EAAE;oBACXC,UAAU,EAAEL,GAAG,CAACM,OAAO,CAACC;kBAC1B;gBACF,CAAC;gBACDnD,OAAO,EAAE;kBACPY,SAAS,EAAE7D,OAAO,CAACJ,EAAE;kBACrBR,gBAAgB,EAAEH,MAAM,CAACG;gBAC3B;cACF,CAAC,CAAC;cAEF,OAAOH,MAAM;YACf,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAsE,QAAA,CAAA8C,IAAA;QAAA;MAAA,GAAArD,OAAA;IAAA,CACL;IAAA,SAAAL,YAAA2D,EAAA,EAAAC,GAAA;MAAA,OAAA3D,YAAA,CAAAvE,KAAA,OAAAE,SAAA;IAAA;IAAA,OAAAoE,WAAA;EAAA;EAED6D,OAAO,EAAE,SAAAA,QAACxG,OAAO,EAAK;IACpBA,OAAO,CAAC0D,cAAc,CAAC,CAAC,CAAC/B,QAAQ,CAACC,MAAM,CAAC6E,YAAY,CAAC,CAAC;IACvDzG,OAAO,CAAC0G,qBAAqB,CAAC,CAAC;IAE/B1G,OAAO,CAAC2G,SAAS,CAACH,OAAO,CAAC,CAAC;IAC3BxG,OAAO,CAAC4G,0BAA0B,CAACJ,OAAO,CAAC,CAAC;IAC5CxG,OAAO,CAACM,iBAAiB,GAAG+B,SAAS;;IAErC;IACA,IAAMwE,iBAAiB,GAAG7G,OAAO,CAAC8G,aAAa,GAC3C9G,OAAO,CAAC8G,aAAa,CAACC,YAAY,CAAC,CAAC,GACpC5G,QAAA,CAAAzB,OAAA,CAAQsI,OAAO,CAAC,CAAC;IAErB,OAAOH,iBAAiB,CACrBhG,IAAI,CAAC;MAAA,OAAMb,OAAO,CAACiH,kBAAkB,CAAC,CAAC;IAAA,EAAC,CACxCpG,IAAI,CAAC;MAAA,OAAMb,OAAO,CAACkH,oBAAoB,CAAC,CAAC;IAAA,EAAC,CAC1CrG,IAAI,CAAC,YAAM;MACVb,OAAO,CAACmH,mBAAmB,CAAC,CAAC;MAC7BnH,OAAO,CAACoH,kBAAkB,CAAC,CAAC;MAC5BpH,OAAO,CAACqH,oBAAoB,CAAC,CAAC;MAC9BrH,OAAO,CAACsH,mBAAmB,CAACd,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CACD3F,IAAI,CAAC;MAAA,OAAMb,OAAO,CAACuH,aAAa,CAAC,CAAC;IAAA,EAAC,CACnC1G,IAAI,CAAC,YAAM;MAAA,IAAA2G,eAAA;MACV,KAAAA,eAAA,GAAIxH,OAAO,CAACgC,MAAM,cAAAwF,eAAA,eAAdA,eAAA,CAAgBC,kBAAkB,EAAE;QACtCzH,OAAO,CAAC0H,mBAAmB,CAAC,CAAC;MAC/B;IACF,CAAC,CAAC;EACN,CAAC;EAEDC,oBAAoB,EAAE,SAAAA,qBAAC3H,OAAO,EAAE4H,QAAQ,EAAK;IAC3C,IAAI5H,OAAO,CAAC6H,YAAY,KAAKC,qBAAU,CAACC,QAAQ,EAAE;MAChD,OAAO5H,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAI4H,kCAAqB,CAAC,CAAC,CAAC;IACpD;IAEA,IAAM/E,OAAO,GAAG;MACd5D,QAAQ,EAAEW,OAAO,CAACX,QAAQ;MAC1BK,MAAM,EAAEM,OAAO,CAACN,MAAM;MACtBwF,aAAa,EAAElF,OAAO,CAACkF,aAAa;MACpC0C,QAAQ,EAARA;IACF,CAAC;IAED,OAAO5H,OAAO,CAAC0E,cAAc,CAACiD,oBAAoB,CAAC1E,OAAO,CAAC,CAACgF,KAAK,CAAC,UAACzL,GAAG,EAAK;MACzE+H,oBAAW,CAACC,MAAM,CAACC,KAAK,sGAAAyD,MAAA,CAC+ElI,OAAO,CAACJ,EAAE,eAAAsI,MAAA,CAAY1L,GAAG,CAChI,CAAC;MAED,OAAO2D,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC5D,GAAG,CAAC;IAC5B,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACE2L,0BAA0B,EAAE,SAAAA,2BAACnI,OAAO,EAAwB;IAAA,IAAtBiD,OAAY,GAAA1E,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA8D,SAAA,GAAA9D,SAAA,MAAG,CAAC,CAAC;IACrD,IAAM6J,cAAc,GAAG;MACrB/I,QAAQ,EAAEW,OAAO,CAACX,QAAQ;MAC1BK,MAAM,EAAEM,OAAO,CAACN,MAAM;MACtBwF,aAAa,EAAElF,OAAO,CAACkF,aAAa;MACpCE,UAAU,EAAEpF,OAAO,CAACoF,UAAU;MAC9BL,SAAS,EAAE/E,OAAO,CAAC+E;IACrB,CAAC;IAED,OAAAzG,aAAA,CAAAA,aAAA,KAAW8J,cAAc,GAAKnF,OAAO;EACvC,CAAC;EAED;EACA;EACA;EACA;EACAoF,YAAY,EAAE,SAAAA,aAACrI,OAAO,EAAwB;IAAA,IAAtBiD,OAAY,GAAA1E,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA8D,SAAA,GAAA9D,SAAA,MAAG,CAAC,CAAC;IACvC,IAAIyB,OAAO,CAAC6H,YAAY,KAAKC,qBAAU,CAACC,QAAQ,EAAE;MAChD;MACA,OAAO5H,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAI4H,kCAAqB,CAAC,CAAC,CAAC;IACpD;IAEA,IAAIlJ,WAAW,CAACwJ,iBAAiB,CAACtI,OAAO,CAACW,SAAS,CAAC,EAAE;MACpD,OAAOR,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAImI,+BAAkB,CAAC,CAAC,CAAC;IACjD;IAEA,IAAMC,YAAY,GAAG1J,WAAW,CAACqJ,0BAA0B,CAACnI,OAAO,EAAEiD,OAAO,CAAC;IAE7E,OAAOjD,OAAO,CAAC0E,cAAc,CAC1B2D,YAAY,CAACG,YAAY,CAAC,CAC1B3H,IAAI,CAAC,YAAM;MACV,IAAIoC,OAAO,CAACwF,WAAW,EAAE;QACvB,OAAOtI,QAAA,CAAAzB,OAAA,CAAQsI,OAAO,CAAC,CAAC;MAC1B;MAEA,OAAOlI,WAAW,CAAC0H,OAAO,CAACxG,OAAO,CAAC;IACrC,CAAC,CAAC,CACDiI,KAAK,CAAC,UAACzL,GAAG,EAAK;MACd;MACA;MACA;MACA+H,oBAAW,CAACC,MAAM,CAACC,KAAK,+FAAAyD,MAAA,CACwElI,OAAO,CAACJ,EAAE,eAAAsI,MAAA,CAAY1L,GAAG,CACzH,CAAC;MAED,OAAO2D,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC5D,GAAG,CAAC;IAC5B,CAAC,CAAC;EACN,CAAC;EACDkM,cAAc,EAAE,SAAAA,eAAC1I,OAAO,EAAE2I,MAAM;IAAA,OAC9B3I,OAAO,CAAC0E,cAAc,CAACgE,cAAc,CAAC;MACpCrJ,QAAQ,EAAEW,OAAO,CAACX,QAAQ;MAC1B0F,SAAS,EAAE/E,OAAO,CAAC+E,SAAS;MAC5B4D,MAAM,EAANA;IACF,CAAC,CAAC;EAAA;EAEJL,iBAAiB,EAAE,SAAAA,kBAAC3H,SAAS;IAAA,IAAAiI,qBAAA,EAAAC,sBAAA;IAAA,OAAK,EAAAD,qBAAA,GAAAjI,SAAS,CAACmI,WAAW,cAAAF,qBAAA,wBAAAC,sBAAA,GAArBD,qBAAA,CAAuBjJ,IAAI,cAAAkJ,sBAAA,uBAA3BA,sBAAA,CAA6BE,KAAK,MAAKC,iBAAM;EAAA;EAE/EC,iBAAiB,EAAE,SAAAA,kBAACtI,SAAS;IAAA,IAAAuI,sBAAA,EAAAC,sBAAA;IAAA,OAAK,EAAAD,sBAAA,GAAAvI,SAAS,CAACmI,WAAW,cAAAI,sBAAA,wBAAAC,sBAAA,GAArBD,sBAAA,CAAuBvJ,IAAI,cAAAwJ,sBAAA,uBAA3BA,sBAAA,CAA6BJ,KAAK,MAAKK,iBAAM;EAAA;EAE/EC,mBAAmB,EAAE,SAAAA,oBAAC1I,SAAS;IAAA,IAAA2I,sBAAA,EAAAC,sBAAA;IAAA,OAAK,EAAAD,sBAAA,GAAA3I,SAAS,CAACmI,WAAW,cAAAQ,sBAAA,wBAAAC,sBAAA,GAArBD,sBAAA,CAAuB3J,IAAI,cAAA4J,sBAAA,uBAA3BA,sBAAA,CAA6BR,KAAK,MAAKS,mBAAQ;EAAA;EAEnFC,kBAAkB,EAAE,SAAAA,mBAACC,kBAAkB;IAAA,OACrCA,kBAAkB,KACjBA,kBAAkB,CAACC,KAAK,IAAID,kBAAkB,CAACE,KAAK,IAAIF,kBAAkB,CAACG,KAAK,CAAC;EAAA;EAEpFC,kBAAkB,EAAE,SAAAA,mBAAC9J,OAAO,EAAwB;IAAA,IAAtBiD,OAAY,GAAA1E,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA8D,SAAA,GAAA9D,SAAA,MAAG,CAAC,CAAC;IAC7C,IAAMkD,KAAK,GAAGzB,OAAO,CAAC0D,cAAc,CAAC,CAAC;IAEtC1D,OAAO,CAACoF,UAAU,GAAGpF,OAAO,CAACoF,UAAU,IAAInC,OAAO,CAACmC,UAAU;IAE7D,IAAIpF,OAAO,CAAC+J,eAAe,EAAE;MAC3B,OAAO5J,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAI4J,qBAAY,CAAC,CAAC,CAAC;IAC3C;IACA,IAAIhK,OAAO,CAACiK,cAAc,KAAKC,0BAAe,CAACC,QAAQ,EAAE;MACvD,OAAOhK,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAIgK,sBAAa,CAAC,CAAC,CAAC;IAC5C;IAEA,IAAInH,OAAO,CAACqC,GAAG,EAAE;MACf;MACA7D,KAAK,CAACE,QAAQ,CAACgC,UAAU,CAACC,iBAAiB,CAAC;QAC1CvG,IAAI,EAAE,sBAAsB;QAC5B4F,OAAO,EAAE;UACPY,SAAS,EAAE7D,OAAO,CAACJ;QACrB;MACF,CAAC,CAAC;IACJ;;IAEA;IACA,OAAOd,WAAW,CAAC6D,WAAW,CAAC3C,OAAO,EAAEiD,OAAO,CAAC,CAACgF,KAAK,CAAC,UAACzL,GAAG,EAAK;MAC9D;MACA,IAAIsC,WAAW,CAACqC,YAAY,CAAC3E,GAAG,CAAC,EAAE;QACjCiF,KAAK,CAACE,QAAQ,CAACgC,UAAU,CAACC,iBAAiB,CAAC;UAC1CvG,IAAI,EAAE,mBAAmB;UACzB4F,OAAO,EAAE;YACPY,SAAS,EAAE7D,OAAO,CAACJ;UACrB;QACF,CAAC,CAAC;;QAEF;QACA;QACA,OAAOO,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAIiK,qBAAiB,CAAC,uBAAuB,EAAE7N,GAAG,CAAC,CAAC;MAC5E;MACA+H,oBAAW,CAACC,MAAM,CAACC,KAAK,CAAC,8DAA8D,EAAEjI,GAAG,CAAC;MAE7F,OAAO2D,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAIkK,qBAAgB,CAACrH,OAAO,EAAE,uBAAuB,EAAEzG,GAAG,CAAC,CAAC;IACpF,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACE+N,6BAA6B,EAAE,SAAAA,8BAACvK,OAAO,EAAwB;IAAA,IAAtBiD,OAAY,GAAA1E,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA8D,SAAA,GAAA9D,SAAA,MAAG,CAAC,CAAC;IACxD,IAAMiK,YAAY,GAAG1J,WAAW,CAACqJ,0BAA0B,CAACnI,OAAO,EAAEiD,OAAO,CAAC;IAE7E,OAAOjD,OAAO,CAAC0E,cAAc,CAAC8F,+BAA+B,CAAChC,YAAY,CAAC;EAC7E,CAAC;EAEDiC,QAAQ,EAAE,SAAAA,SAACC,MAAM,EAAK;IACpB,IAAIC,UAAU,GAAG,IAAI;IACrB,IAAIC,UAAU,GAAG,IAAI;IACrB,IAAIC,WAAW,GAAG,IAAI;IACtB,IAAIC,WAAW,GAAG,IAAI;IAEtB,IAAI,CAACJ,MAAM,EAAE;MACX,OAAO;QAACC,UAAU,EAAE,IAAI;QAAEC,UAAU,EAAE;MAAI,CAAC;IAC7C;IACA,IAAIF,MAAM,CAACK,cAAc,EAAE;MACzBF,WAAW,GAAGH,MAAM,CAACK,cAAc,CAAC,CAAC;IACvC;IACA,IAAIL,MAAM,CAACM,cAAc,EAAE;MACzBF,WAAW,GAAGJ,MAAM,CAACM,cAAc,CAAC,CAAC;IACvC;IAEA,IAAIH,WAAW,IAAIA,WAAW,CAAClP,MAAM,GAAG,CAAC,EAAE;MAAA,IAAAsP,YAAA,GAC1BJ,WAAW;MAAA,IAAAK,aAAA,OAAAC,eAAA,CAAAzM,OAAA,EAAAuM,YAAA;MAAzBN,UAAU,GAAAO,aAAA;IACb;IAEA,IAAIJ,WAAW,IAAIA,WAAW,CAACnP,MAAM,GAAG,CAAC,EAAE;MAAA,IAAAyP,YAAA,GAC1BN,WAAW;MAAA,IAAAO,aAAA,OAAAF,eAAA,CAAAzM,OAAA,EAAA0M,YAAA;MAAzBR,UAAU,GAAAS,aAAA;IACb;IAEA,OAAO;MAACV,UAAU,EAAVA,UAAU;MAAEC,UAAU,EAAVA;IAAU,CAAC;EACjC,CAAC;EAEDU,yBAAyB,EAAE,SAAAA,0BAAC3K,SAAS;IAAA,OACnCA,SAAS,IACTA,SAAS,CAACmI,WAAW,IACrBnI,SAAS,CAACmI,WAAW,CAAC9H,IAAI,IAC1BL,SAAS,CAACmI,WAAW,CAAC9H,IAAI,IAC1BL,SAAS,CAACmI,WAAW,CAAC9H,IAAI,CAACqE,SAAS;EAAA;EAEtCkG,sBAAsB,EAAE,SAAAA,uBAAC5K,SAAS;IAAA,OAChCA,SAAS,IACTA,SAAS,CAACmI,WAAW,IACrBnI,SAAS,CAACmI,WAAW,CAAC9H,IAAI,IAC1BL,SAAS,CAACmI,WAAW,CAAC9H,IAAI,IAC1BL,SAAS,CAACmI,WAAW,CAAC9H,IAAI,CAACwK,MAAM;EAAA;EAEnCC,gCAAgC,EAAE,SAAAA,iCAAC9K,SAAS;IAAA,IAAA+K,sBAAA,EAAAC,sBAAA;IAAA,OAC1C,CAAAhL,SAAS,aAATA,SAAS,wBAAA+K,sBAAA,GAAT/K,SAAS,CAAEmI,WAAW,cAAA4C,sBAAA,wBAAAC,sBAAA,GAAtBD,sBAAA,CAAwB1K,IAAI,cAAA2K,sBAAA,uBAA5BA,sBAAA,CAA8BC,gBAAgB,KAAI,EAAE;EAAA;EAEtDC,wBAAwB,EAAE,SAAAA,yBAACC,YAAY;IAAA,OAAKA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACC,SAAS,CAAC;EAAA;EAE1FC,mBAAmB,EAAE,SAAAA,oBAACH,YAAY;IAAA,OAChCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACG,sBAAsB,CAAC;EAAA;EAE7DC,WAAW,EAAE,SAAAA,YAACL,YAAY;IAAA,OACxBA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACK,iBAAiB,CAAC,IACtDN,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACM,oBAAoB,CAAC;EAAA;EAE3DC,aAAa,EAAE,SAAAA,cAACR,YAAY;IAAA,OAC1BA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACQ,mBAAmB,CAAC,IACxDT,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACS,kBAAkB,CAAC;EAAA;EAEzDC,gBAAgB,EAAE,SAAAA,iBAACX,YAAY;IAAA,OAAKA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACW,UAAU,CAAC;EAAA;EAEnFC,oBAAoB,EAAE,SAAAA,qBAACb,YAAY;IAAA,OAAKA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACa,eAAe,CAAC;EAAA;EAE5FC,4BAA4B,EAAE,SAAAA,6BAACf,YAAY;IAAA,OACzCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACe,wBAAwB,CAAC;EAAA;EAE/DC,+BAA+B,EAAE,SAAAA,gCAACjB,YAAY;IAAA,OAC5CA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACiB,+BAA+B,CAAC,IACpElB,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACkB,iBAAiB,CAAC;EAAA;EAExDC,iBAAiB,EAAE,SAAAA,kBAACpB,YAAY;IAAA,OAAKA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACoB,mBAAmB,CAAC;EAAA;EAE7FC,gBAAgB,EAAE,SAAAA,iBAACtB,YAAY;IAAA,OAAK,CAACA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACsB,sBAAsB,CAAC;EAAA;EAEhGC,6BAA6B,EAAE,SAAAA,8BAACxB,YAAY;IAAA,IAAEyB,QAAQ,GAAAhP,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAA8D,SAAA,GAAA9D,SAAA,MAAG,CAAC,CAAC;IAAA,OACzDuN,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACyB,6BAA6B,CAAC,IAClE,CAAC,CAACD,QAAQ,CAACE,sBAAW,CAACC,yBAAyB,CAAC;EAAA;EAEnDC,yBAAyB,EAAE,SAAAA,0BAAC7B,YAAY;IAAA,OACtCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAAC6B,8BAA8B,CAAC;EAAA;EAErEC,uBAAuB,EAAE,SAAAA,wBAAC/B,YAAY;IAAA,OACpC,CAACA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAAC+B,yBAAyB,CAAC;EAAA;EAEjEC,+BAA+B,EAAE,SAAAA,gCAACjC,YAAY;IAAA,OAC5C,CAACA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACiC,+BAA+B,CAAC;EAAA;EAEvEC,iBAAiB,EAAE,SAAAA,kBAACnC,YAAY;IAAA,OAAK,CAACA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACmC,oBAAoB,CAAC;EAAA;EAE/FC,WAAW,EAAE,SAAAA,YAACC,OAAO,EAAEC,OAAO,EAAEhP,QAAQ,EAAK;IAC3C,IAAI+O,OAAO,IAAIA,OAAO,CAACE,OAAO,EAAE;MAC9B,OAAOD,OAAO,CAACF,WAAW,CAAC;QAAC9O,QAAQ,EAARA,QAAQ;QAAEkP,IAAI,EAAE;MAAI,CAAC,CAAC;IACpD;IAEA,OAAOpO,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAIoO,mBAAe,CAAC,2CAA2C,CAAC,CAAC;EACzF,CAAC;EAEDC,aAAa,EAAE,SAAAA,cAACL,OAAO,EAAEC,OAAO,EAAEhP,QAAQ,EAAK;IAC7C,IAAI+O,OAAO,IAAIA,OAAO,CAACM,SAAS,EAAE;MAChC,OAAOL,OAAO,CAACF,WAAW,CAAC;QAAC9O,QAAQ,EAARA,QAAQ;QAAEkP,IAAI,EAAE;MAAK,CAAC,CAAC;IACrD;IAEA,OAAOpO,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAIoO,mBAAe,CAAC,6CAA6C,CAAC,CAAC;EAC3F,CAAC;EAEDG,kBAAkB,EAAE,SAAAA,mBAACC,WAAmC,EAAK;IAC3D,IAAMC,UAAU,GAAG,oCAAoC;IAEvD,IAAID,WAAW,EAAE;MACf,IAAME,QAAQ,GAAGF,WAAW,CAACG,WAAW,CAAC,CAAC;MAC1C,IAAOC,QAAQ,GAAIF,QAAQ,CAApBE,QAAQ;MAEfzK,oBAAW,CAACC,MAAM,CAACyK,GAAG,CAACJ,UAAU,gBAAA3G,MAAA,CAAgB8G,QAAQ,CAAE,CAAC;MAC5DzK,oBAAW,CAACC,MAAM,CAACyK,GAAG,CAACJ,UAAU,EAAE,YAAY,EAAE,IAAAK,UAAA,CAAAxQ,OAAA,EAAeoQ,QAAQ,CAAC,CAAC;IAC5E;EACF,CAAC;EAEDK,kBAAkB,EAAE,SAAAA,mBAACC,WAA+B,EAAK;IACvD,IAAMP,UAAU,GAAG,oCAAoC;IAEvD,IAAIO,WAAW,EAAE;MACf,IAAMN,QAAQ,GAAGM,WAAW,CAACL,WAAW,CAAC,CAAC;MAC1C,IAAOC,QAAQ,GAAIF,QAAQ,CAApBE,QAAQ;MAEfzK,oBAAW,CAACC,MAAM,CAACyK,GAAG,CAACJ,UAAU,gBAAA3G,MAAA,CAAgB8G,QAAQ,CAAE,CAAC;MAC5DzK,oBAAW,CAACC,MAAM,CAACyK,GAAG,CAACJ,UAAU,EAAE,YAAY,EAAE,IAAAK,UAAA,CAAAxQ,OAAA,EAAeoQ,QAAQ,CAAC,CAAC;IAC5E;EACF,CAAC;EAEDO,gBAAgB,EAAE,SAAAA,iBAACrP,OAAO,EAAK;IAC7B,IAAIA,OAAO,CAAC6H,YAAY,KAAKC,qBAAU,CAACC,QAAQ,EAAE;MAChD,OAAO5H,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC,IAAI4H,kCAAqB,CAAC,CAAC,CAAC;IACpD;IAEA,IAAMsH,UAAU,GAAG;MACjBjQ,QAAQ,EAAEW,OAAO,CAACX;IACpB,CAAC;IAED,OAAOW,OAAO,CAAC0E,cAAc,CAC1B2K,gBAAgB,CAACC,UAAU,CAAC,CAC5BzO,IAAI,CAAC;MAAA,OAAM/B,WAAW,CAAC0H,OAAO,CAACxG,OAAO,CAAC;IAAA,EAAC,CACxCiI,KAAK,CAAC,UAACzL,GAAG,EAAK;MACd+H,oBAAW,CAACC,MAAM,CAACC,KAAK,qGAAAyD,MAAA,CAC8ElI,OAAO,CAACJ,EAAE,eAAAsI,MAAA,CAAY1L,GAAG,CAC/H,CAAC;MAED,OAAO2D,QAAA,CAAAzB,OAAA,CAAQ0B,MAAM,CAAC5D,GAAG,CAAC;IAC5B,CAAC,CAAC;EACN,CAAC;EAED+S,sBAAsB,EAAE,SAAAA,uBAACzD,YAAY;IAAA,OAAKA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACyD,aAAa,CAAC;EAAA;EAE5FC,wBAAwB,EAAE,SAAAA,yBAAC3D,YAAY;IAAA,OACrCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAAC2D,wBAAwB,CAAC;EAAA;EAE/DC,oBAAoB,EAAE,SAAAA,qBAAC7D,YAAY;IAAA,OACjCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAAC6D,2BAA2B,CAAC;EAAA;EAElEC,mBAAmB,EAAE,SAAAA,oBAAC/D,YAAY;IAAA,OAChCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAAC+D,0BAA0B,CAAC;EAAA;EAEjEC,qBAAqB,EAAE,SAAAA,sBAACjE,YAAY;IAAA,OAClCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACiE,qBAAqB,CAAC;EAAA;EAE5DC,qBAAqB,EAAE,SAAAA,sBAACnE,YAAY;IAAA,OAClCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACmE,oBAAoB,CAAC;EAAA;EAE3DC,oBAAoB,EAAE,SAAAA,qBAACrE,YAAY;IAAA,OAAKA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACqE,mBAAmB,CAAC;EAAA;EAEhGC,qBAAqB,EAAE,SAAAA,sBAACvE,YAAY;IAAA,OAClCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACuE,4BAA4B,CAAC;EAAA;EAEnEC,sBAAsB,EAAE,SAAAA,uBAACzE,YAAY;IAAA,OACnCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACyE,6BAA6B,CAAC;EAAA;EAEpEC,mBAAmB,EAAE,SAAAA,oBAAC3E,YAAY;IAAA,OAAKA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAAC2E,oBAAoB,CAAC;EAAA;EAEhGC,4BAA4B,EAAE,SAAAA,6BAAC7E,YAAY;IAAA,OACzCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAAC6E,6BAA6B,CAAC;EAAA;EAEpEC,wBAAwB,EAAE,SAAAA,yBAAC/E,YAAY;IAAA,OACrCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAAC+E,uBAAuB,CAAC;EAAA;EAE9DC,sBAAsB,EAAE,SAAAA,uBAACjF,YAAY;IAAA,OAAKA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACiF,kBAAkB,CAAC;EAAA;EAEjGC,gBAAgB,EAAE,SAAAA,iBAACC,aAAa,EAAEpF,YAAY,EAAK;IACjD,IAAIA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACoF,gBAAgB,CAAC,EAAE;MACzD,OAAO,IAAI;IACb;IACA,IAAIrF,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACqF,kBAAkB,CAAC,EAAE;MAC3D,OAAO,KAAK;IACd;IAEA,OAAOF,aAAa;EACtB,CAAC;EACDG,4BAA4B,EAAE,SAAAA,6BAACvF,YAAY;IAAA,OACzCA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACuF,4BAA4B,CAAC;EAAA;EAEnEC,mBAAmB,EAAE,SAAAA,oBAACzF,YAAY;IAAA,OAAKA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAACyF,iBAAiB,CAAC;EAAA;EAE7FC,kBAAkB,EAAE,SAAAA,mBAAC3F,YAAY;IAAA,OAAKA,YAAY,CAACvK,QAAQ,CAACwK,wBAAa,CAAC2F,gBAAgB,CAAC;EAAA;EAE3F;AACF;AACA;AACA;AACA;AACA;EACEC,WAAW,EAAE,SAAAA,YAAC3R,OAAO,EAAE4R,WAAW,EAAK;IAAA,IAAAC,kBAAA;IACrC,IAAMnR,QAAQ,GAAGV,OAAO,aAAPA,OAAO,wBAAA6R,kBAAA,GAAP7R,OAAO,CAAEW,SAAS,cAAAkR,kBAAA,uBAAlBA,kBAAA,CAAoBnR,QAAQ;IAE7C,IAAI,CAACA,QAAQ,EAAE;MACb;IACF;IAEAkR,WAAW,CAAClR,QAAQ,GAAGA,QAAQ;EACjC,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEoR,oBAAoB,EAAE,SAAAA,qBAAC9R,OAAO,EAAEhB,QAAQ,EAAK;IAAA,IAAA+S,eAAA;IAC3C,IAAI,CAAC/R,OAAO,EAAE;MACZ,OAAOhB,QAAQ;IACjB;IAEA,IAAME,KAAK,GAAGF,QAAQ,aAARA,QAAQ,wBAAA+S,eAAA,GAAR/S,QAAQ,CAAEG,IAAI,cAAA4S,eAAA,uBAAdA,eAAA,CAAgB7S,KAAK;IAEnC,IAAIA,KAAK,EAAE;MACTc,OAAO,CAACW,SAAS,CAACqR,gBAAgB,CAAC9S,KAAK,EAAEc,OAAO,CAAC;IACpD;IAEA,OAAOhB,QAAQ;EACjB,CAAC;EAEDiT,qCAAqC,EAAE,SAAAA,sCAACC,eAAe,EAAK;IAC1D,IAAMC,UAAU,GAAG,IAAIC,OAAO,CAACF,eAAe,CAAC;IAE/C,IAAMG,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAIC,eAAe,EAAK;MACzD,IAAMtS,OAAO,GAAGmS,UAAU,CAACI,KAAK,CAAC,CAAC;MAElC,IAAI,CAACvS,OAAO,EAAE;QACZ,OAAOsS,eAAe;MACxB;MAEA,IAAMrP,OAAO,GAAG,IAAAuP,iBAAS,EAACF,eAAe,CAAC;MAE1C,IAAI,CAACrP,OAAO,CAAC9D,IAAI,EAAE;QACjB8D,OAAO,CAAC9D,IAAI,GAAG,CAAC,CAAC;MACnB;MAEAL,WAAW,CAAC6S,WAAW,CAAC3R,OAAO,EAAEiD,OAAO,CAAC9D,IAAI,CAAC;MAE9C,OAAO8D,OAAO;IAChB,CAAC;IAED,OAAOoP,6BAA6B;EACtC,CAAC;EAEDI,yBAAyB,EAAE,SAAAA,0BAACP,eAAe,EAAK;IAC9C,IAAMC,UAAU,GAAG,IAAIC,OAAO,CAACF,eAAe,CAAC;IAE/C,IAAMG,6BAA6B,GACjCvT,WAAW,CAACmT,qCAAqC,CAACC,eAAe,CAAC;IAEpE,IAAMQ,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIJ,eAAe,EAAK;MAC7C,IAAMtS,OAAO,GAAGmS,UAAU,CAACI,KAAK,CAAC,CAAC;MAElC,IAAI,CAACvS,OAAO,EAAE;QACZ,OAAOG,QAAA,CAAAzB,OAAA,CAAQsI,OAAO,CAAC,CAAC;MAC1B;MAEA,IAAM/D,OAAO,GAAGoP,6BAA6B,CAACC,eAAe,CAAC;MAE9D,OAAOtS,OAAO,CACXqO,OAAO,CAACpL,OAAO,CAAC,CAChBpC,IAAI,CAAC,UAAC7B,QAAQ;QAAA,OAAKF,WAAW,CAACgT,oBAAoB,CAAC9R,OAAO,EAAEhB,QAAQ,CAAC;MAAA,EAAC;IAC5E,CAAC;IAED,OAAO0T,iBAAiB;EAC1B,CAAC;EAEDC,mBAAmB,EAAE,SAAAA,oBAACC,OAAoB,EAAEC,YAA0C,EAAK;IACzF,IAAI,CAACA,YAAY,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,OAAOA,YAAY,CAACD,OAAO,CAAC;EAC9B,CAAC;EAEDE,uBAAuB,EAAE,SAAAA,wBAAC9S,OAAO,EAAEiF,WAAW,EAAK;IAAA,IAAA8N,qBAAA;IACjD,IAAI,CAAC/S,OAAO,IAAI,CAACiF,WAAW,EAAE;MAC5B;IACF;IACA,IAAM+N,MAAM,GAAG/N,WAAW,CAAC2B,0BAA0B;IACrD5G,OAAO,CAAC4G,0BAA0B,CAACqM,sBAAsB,CACvD,CAAC,CAAChO,WAAW,CAACiO,gCAAgC,EAC9C,CAAC,EAACF,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEG,oBAAoB,CAChC,CAAC;IACD,IAAMC,aAAa,GAAG,CAAC,EACrBnO,WAAW,CAACiO,gCAAgC,IAC5CjO,WAAW,aAAXA,WAAW,gBAAA8N,qBAAA,GAAX9N,WAAW,CAAEoO,kBAAkB,cAAAN,qBAAA,eAA/BA,qBAAA,CAAiCO,8BAA8B,CAChE;IACDtT,OAAO,CAAC4G,0BAA0B,CAAC2M,mBAAmB,CAACH,aAAa,CAAC;IAErE,SAASI,SAASA,CAACC,GAAG,EAAEC,MAAM,EAAEC,MAAM,EAAE;MACtC,IAAID,MAAM,IAAID,GAAG,EAAE;QACjBA,GAAG,CAACE,MAAM,CAAC,GAAGF,GAAG,CAACC,MAAM,CAAC;QACzB,OAAOD,GAAG,CAACC,MAAM,CAAC;MACpB;IACF;IACA,IAAIV,MAAM,EAAE;MAAA,IAAAY,qBAAA,EAAAC,sBAAA;MACV,IAAMC,YAAY,GAAG,IAAAtB,iBAAS,EAACQ,MAAM,CAACe,WAAW,CAAC;MAAC,IAAAC,SAAA,GAAA7Y,0BAAA,CAC5B2Y,YAAY;QAAAG,KAAA;MAAA;QAAnC,KAAAD,SAAA,CAAAlY,CAAA,MAAAmY,KAAA,GAAAD,SAAA,CAAAjY,CAAA,IAAAC,IAAA,GAAqC;UAAA,IAA1BkY,QAAQ,GAAAD,KAAA,CAAAhY,KAAA;UACjBuX,SAAS,CAACU,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC;UACnDV,SAAS,CAACU,QAAQ,EAAE,iBAAiB,EAAE,cAAc,CAAC;QACxD;MAAC,SAAA1X,GAAA;QAAAwX,SAAA,CAAA9X,CAAA,CAAAM,GAAA;MAAA;QAAAwX,SAAA,CAAA5X,CAAA;MAAA;MACD,IAAI,GAAAwX,qBAAA,GAAC5T,OAAO,CAAC4G,0BAA0B,cAAAgN,qBAAA,gBAAAC,sBAAA,GAAlCD,qBAAA,CAAoCG,WAAW,cAAAF,sBAAA,eAA/CA,sBAAA,CAAiDlY,MAAM,GAAE;QAC5DqE,OAAO,CAAC4G,0BAA0B,CAACuN,oBAAoB,CAAC;UAACJ,WAAW,EAAED;QAAY,CAAC,CAAC;MACtF;IACF;IACAM,qBAAO,CAACpO,OAAO,CACbhG,OAAO,EACP;MACEqU,IAAI,EAAE,cAAc;MACpBC,QAAQ,EAAE;IACZ,CAAC,EACDC,yBAAc,CAACC,6BACjB,CAAC;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,iCAAiC,EAAE,SAAAA,kCAAC9L,MAAc,EAAK;IACrD,IAAM+L,YAAY,GAAG;MACnBC,gBAAgB,EAAEhM,MAAM;MACxBtL,IAAI,EAAE,gBAAgB;MACtBuX,WAAW,EAAE;IACf,CAAC;IACD,IAAIjM,MAAM,CAACpH,QAAQ,CAACsT,6BAAkB,CAACC,SAAS,CAAC,EAAE;MACjD,OAAO,CAAAxW,aAAA,CAAAA,aAAA,KAEAoW,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,WAAW;QACrB3T,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIsH,MAAM,CAACpH,QAAQ,CAACsT,6BAAkB,CAACI,iBAAiB,CAAC,EAAE;MACzD,OAAO,CAAA3W,aAAA,CAAAA,aAAA,KAEAoW,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,WAAW;QACrB3T,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIsH,MAAM,CAACpH,QAAQ,CAACsT,6BAAkB,CAACK,mBAAmB,CAAC,EAAE;MAC3D,OAAO,CAAA5W,aAAA,CAAAA,aAAA,KAEAoW,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,OAAO;QACjB3T,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIsH,MAAM,CAACpH,QAAQ,CAACsT,6BAAkB,CAACM,gBAAgB,CAAC,EAAE;MACxD,OAAO,CAAA7W,aAAA,CAAAA,aAAA,KAEAoW,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,WAAW;QACrB3T,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIsH,MAAM,CAACpH,QAAQ,CAACsT,6BAAkB,CAACO,wBAAwB,CAAC,EAAE;MAChE,OAAO,CAAA9W,aAAA,CAAAA,aAAA,KAEAoW,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,UAAU;QACpB3T,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIsH,MAAM,CAACpH,QAAQ,CAACsT,6BAAkB,CAACQ,qBAAqB,CAAC,EAAE;MAC7D,OAAO,CAAA/W,aAAA,CAAAA,aAAA,KAEAoW,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,WAAW;QACrB3T,SAAS,EAAE;MAAI,GAElB;IACH;IACA,IAAIsH,MAAM,CAACpH,QAAQ,CAACsT,6BAAkB,CAACS,wCAAwC,CAAC,EAAE;MAChF,OAAO,CAAAhX,aAAA,CAAAA,aAAA,KAEAoW,YAAY;QACfK,KAAK,EAAE,IAAI;QACXC,QAAQ,EAAE,UAAU;QACpB3T,SAAS,EAAE;MAAI,GAElB;IACH;;IAEA;IACA,OAAO,CAAA/C,aAAA,CAAAA,aAAA,KAEAoW,YAAY;MACfK,KAAK,EAAE,IAAI;MACXC,QAAQ,EAAE,WAAW;MACrB3T,SAAS,EAAE;IAAI,GAElB;EACH;AACF,CAAC;AAAC,IAAAkU,QAAA,GAAAC,OAAA,CAAA9W,OAAA,GAEaI,WAAW"}
1
+ {"version":3,"names":["_lodash","require","_webexErrors","_loggerProxy","_interopRequireDefault","_constants","_browserDetection","_intentToJoin","_joinMeeting2","_parameter","_permission","_passwordError","_captchaError","_triggerProxy","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","ownKeys","r","t","_Object$keys","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","MeetingUtil","parseLocusJoin","response","parsed","locus","body","mediaConnections","locusUrl","url","locusId","split","pop","selfId","self","id","mediaConnection","mediaId","remoteUpdateAudioVideo","meeting","audioMuted","videoMuted","_promise","reject","ParameterError","locusMediaRequest","send","type","selfUrl","sequence","locusInfo","muteOptions","then","_response$body","hasOwner","info","owner","isOwnerSelf","isPinOrGuest","_err$body","errorCode","INTENT_TO_JOIN","includes","getIpVersion","webex","_webex$internal$devic","internal","device","ipNetworkDetector","supportsIpV4","supportsIpV6","config","meetings","backendIpv6NativeSupport","BrowserDetection","isBrowser","undefined","IP_VERSION","ipv4_and_ipv6","only_ipv4","only_ipv6","unknown","joinMeeting","_joinMeeting","_asyncToGenerator2","_regenerator","mark","_callee","options","_meeting$meetingInfo","reachability","clientMediaPreferences","wrap","_callee$","_context","prev","abrupt","getWebexObject","newMetrics","submitClientEvent","meetingId","ipver","joinCookie","preferTranscoding","isMultistream","getClientMediaPreferences","sent","roapMessage","getReachabilityReportToAttachToRoap","t0","LoggerProxy","logger","error","meetingRequest","inviteeAddress","meetingJoinUrl","sipUri","meetingNumber","deviceUrl","locusClusterUrl","meetingInfo","correlationId","permissionToken","resourceId","moderator","pin","moveToResource","asResourceOccupant","breakoutsSupported","locale","deviceCapabilities","liveAnnotationSupported","res","_res$headers","setLocus","isoLocalClientMeetingJoinTime","headers","date","payload","trigger","identifiers","trackingId","trackingid","stop","_x","_x2","cleanUp","meetingEnded","stopPeriodicLogUpload","breakouts","simultaneousInterpretation","stopStatsAnalyzer","statsAnalyzer","stopAnalyzer","resolve","closeRemoteStreams","closePeerConnections","cleanupLocalStreams","unsetRemoteStreams","unsetPeerConnections","reconnectionManager","stopKeepAlive","_meeting$config","enableAutomaticLLM","updateLLMConnection","disconnectPhoneAudio","phoneUrl","meetingState","FULL_STATE","INACTIVE","MeetingNotActiveError","catch","concat","prepareLeaveMeetingOptions","defaultOptions","leaveMeeting","isUserInLeftState","UserNotJoinedError","leaveOptions","moveMeeting","declineMeeting","reason","_locusInfo$parsedLocu","_locusInfo$parsedLocu2","parsedLocus","state","_LEFT_","isUserInIdleState","_locusInfo$parsedLocu3","_locusInfo$parsedLocu4","_IDLE_","isUserInJoinedState","_locusInfo$parsedLocu5","_locusInfo$parsedLocu6","_JOINED_","isMediaEstablished","currentMediaStatus","audio","video","share","joinMeetingOptions","requiredCaptcha","CaptchaError","passwordStatus","PASSWORD_STATUS","REQUIRED","PasswordError","IntentToJoinError","JoinMeetingError","buildLeaveFetchRequestOptions","buildLeaveMeetingRequestOptions","getTrack","stream","audioTrack","videoTrack","audioTracks","videoTracks","getAudioTracks","getVideoTracks","_audioTracks","_audioTracks2","_slicedToArray2","_videoTracks","_videoTracks2","getModeratorFromLocusInfo","getPolicyFromLocusInfo","policy","getUserDisplayHintsFromLocusInfo","_locusInfo$parsedLocu7","_locusInfo$parsedLocu8","userDisplayHints","canInviteNewParticipants","displayHints","DISPLAY_HINTS","ADD_GUEST","canAdmitParticipant","ROSTER_WAITING_TO_JOIN","canUserLock","LOCK_CONTROL_LOCK","LOCK_STATUS_UNLOCKED","canUserUnlock","LOCK_CONTROL_UNLOCK","LOCK_STATUS_LOCKED","canUserRaiseHand","RAISE_HAND","canUserLowerAllHands","LOWER_ALL_HANDS","canUserLowerSomeoneElsesHand","LOWER_SOMEONE_ELSES_HAND","bothLeaveAndEndMeetingAvailable","LEAVE_TRANSFER_HOST_END_MEETING","LEAVE_END_MEETING","canManageBreakout","BREAKOUT_MANAGEMENT","canStartBreakout","DISABLE_BREAKOUT_START","canBroadcastMessageToBreakout","policies","BROADCAST_MESSAGE_TO_BREAKOUT","SELF_POLICY","SUPPORT_BROADCAST_MESSAGE","isSuppressBreakoutSupport","UCF_SUPPRESS_BREAKOUTS_SUPPORT","canAdmitLobbyToBreakout","DISABLE_LOBBY_TO_BREAKOUT","isBreakoutPreassignmentsEnabled","DISABLE_BREAKOUT_PREASSIGNMENTS","canUserAskForHelp","DISABLE_ASK_FOR_HELP","lockMeeting","actions","request","canLock","lock","PermissionError","unlockMeeting","canUnlock","handleAudioLogging","audioStream","LOG_HEADER","settings","getSettings","deviceId","log","_stringify","handleVideoLogging","videoStream","endMeetingForAll","endOptions","canEnableClosedCaption","CAPTION_START","isSaveTranscriptsEnabled","SAVE_TRANSCRIPTS_ENABLED","canStartTranscribing","TRANSCRIPTION_CONTROL_START","canStopTranscribing","TRANSCRIPTION_CONTROL_STOP","isClosedCaptionActive","CAPTION_STATUS_ACTIVE","canStartManualCaption","MANUAL_CAPTION_START","canStopManualCaption","MANUAL_CAPTION_STOP","isManualCaptionActive","MANUAL_CAPTION_STATUS_ACTIVE","isWebexAssistantActive","WEBEX_ASSISTANT_STATUS_ACTIVE","canViewCaptionPanel","ENABLE_CAPTION_PANEL","isRealTimeTranslationEnabled","DISPLAY_REAL_TIME_TRANSLATION","canSelectSpokenLanguages","DISPLAY_NON_ENGLISH_ASR","waitingForOthersToJoin","WAITING_FOR_OTHERS","canSendReactions","originalValue","REACTIONS_ACTIVE","REACTIONS_INACTIVE","canUserRenameSelfAndObserved","CAN_RENAME_SELF_AND_OBSERVED","canUserRenameOthers","CAN_RENAME_OTHERS","canShareWhiteBoard","SHARE_WHITEBOARD","addSequence","requestBody","_meeting$locusInfo","updateLocusWithDelta","_response$body2","handleLocusDelta","generateBuildLocusDeltaRequestOptions","originalMeeting","meetingRef","WeakRef","buildLocusDeltaRequestOptions","originalOptions","deref","cloneDeep","generateLocusDeltaRequest","locusDeltaRequest","selfSupportsFeature","feature","userPolicies","parseInterpretationInfo","_meetingInfo$meetingS","siInfo","updateMeetingSIEnabled","turnOnSimultaneousInterpretation","currentSIInterpreter","hostSIEnabled","meetingSiteSetting","enableHostInterpreterControlSI","updateHostSIEnabled","renameKey","obj","oldKey","newKey","_meeting$simultaneous","_meeting$simultaneous2","lanuagesInfo","siLanguages","_iterator","_step","language","updateInterpretation","Trigger","file","function","EVENT_TRIGGERS","MEETING_INTERPRETATION_UPDATE","getChangeMeetingFloorErrorPayload","errorPayload","errorDescription","shownToUser","LOCAL_SHARE_ERRORS","UNDEFINED","fatal","category","DEVICE_NOT_JOINED","NO_MEDIA_FOR_DEVICE","NO_CONFLUENCE_ID","CONTENT_SHARING_DISABLED","LOCUS_PARTICIPANT_DNE","CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD","_default","exports"],"sources":["util.ts"],"sourcesContent":["import {LocalCameraStream, LocalMicrophoneStream} from '@webex/media-helpers';\n\nimport {cloneDeep} from 'lodash';\nimport {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {\n INTENT_TO_JOIN,\n _LEFT_,\n _IDLE_,\n _JOINED_,\n PASSWORD_STATUS,\n DISPLAY_HINTS,\n FULL_STATE,\n SELF_POLICY,\n EVENT_TRIGGERS,\n LOCAL_SHARE_ERRORS,\n IP_VERSION,\n} from '../constants';\nimport BrowserDetection from '../common/browser-detection';\nimport IntentToJoinError from '../common/errors/intent-to-join';\nimport JoinMeetingError from '../common/errors/join-meeting';\nimport ParameterError from '../common/errors/parameter';\nimport PermissionError from '../common/errors/permission';\nimport PasswordError from '../common/errors/password-error';\nimport CaptchaError from '../common/errors/captcha-error';\nimport Trigger from '../common/events/trigger-proxy';\n\nconst MeetingUtil = {\n parseLocusJoin: (response) => {\n const parsed: any = {};\n\n // First todo: add check for existance\n parsed.locus = response.body.locus;\n parsed.mediaConnections = response.body.mediaConnections;\n parsed.locusUrl = parsed.locus.url;\n parsed.locusId = parsed.locus.url.split('/').pop();\n parsed.selfId = parsed.locus.self.id;\n\n // we need mediaId before making roap calls\n parsed.mediaConnections.forEach((mediaConnection) => {\n if (mediaConnection.mediaId) {\n parsed.mediaId = mediaConnection.mediaId;\n }\n });\n\n return parsed;\n },\n\n remoteUpdateAudioVideo: (meeting, audioMuted?: boolean, videoMuted?: boolean) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n\n if (!meeting.locusMediaRequest) {\n return Promise.reject(\n new ParameterError(\n 'You need a meeting with a media connection, call Meeting.addMedia() first.'\n )\n );\n }\n\n return meeting.locusMediaRequest\n .send({\n type: 'LocalMute',\n selfUrl: meeting.selfUrl,\n mediaId: meeting.mediaId,\n sequence: meeting.locusInfo.sequence,\n muteOptions: {\n audioMuted,\n videoMuted,\n },\n })\n .then((response) => response?.body?.locus);\n },\n\n hasOwner: (info) => info && info.owner,\n\n isOwnerSelf: (owner, selfId) => owner === selfId,\n\n isPinOrGuest: (err) => err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode),\n\n /**\n * Returns the current state of knowledge about whether we are on an ipv4-only or ipv6-only or mixed (ipv4 and ipv6) network.\n * The return value matches the possible values of \"ipver\" parameter used by the backend APIs.\n *\n * @param {Object} webex webex instance\n * @returns {IP_VERSION|undefined} ipver value to be passed to the backend APIs or undefined if we should not pass any value to the backend\n */\n getIpVersion(webex: any): IP_VERSION | undefined {\n const {supportsIpV4, supportsIpV6} = webex.internal.device.ipNetworkDetector;\n\n if (\n !webex.config.meetings.backendIpv6NativeSupport &&\n BrowserDetection().isBrowser('firefox')\n ) {\n // when backend doesn't support native ipv6,\n // then our NAT64/DNS64 based solution relies on FQDN ICE candidates, but Firefox doesn't support them,\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1713128\n // so for Firefox we don't want the backend to activate the \"ipv6 feature\"\n return undefined;\n }\n\n if (supportsIpV4 && supportsIpV6) {\n return IP_VERSION.ipv4_and_ipv6;\n }\n\n if (supportsIpV4) {\n return IP_VERSION.only_ipv4;\n }\n\n if (supportsIpV6) {\n return IP_VERSION.only_ipv6;\n }\n\n return IP_VERSION.unknown;\n },\n\n joinMeeting: async (meeting, options) => {\n if (!meeting) {\n return Promise.reject(new ParameterError('You need a meeting object.'));\n }\n const webex = meeting.getWebexObject();\n\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.request',\n options: {meetingId: meeting.id},\n });\n\n let reachability;\n let clientMediaPreferences = {\n // bare minimum fallback value that should allow us to join\n ipver: IP_VERSION.unknown,\n joinCookie: undefined,\n preferTranscoding: !meeting.isMultistream,\n };\n\n try {\n clientMediaPreferences = await webex.meetings.reachability.getClientMediaPreferences(\n meeting.isMultistream,\n MeetingUtil.getIpVersion(webex)\n );\n if (options.roapMessage) {\n // we only need to attach reachability if we are sending a roap message\n // sending reachability on its own will cause Locus to reject our join request\n reachability = await webex.meetings.reachability.getReachabilityReportToAttachToRoap();\n }\n } catch (e) {\n LoggerProxy.logger.error(\n 'Meeting:util#joinMeeting --> Error getting reachability or clientMediaPreferences:',\n e\n );\n }\n\n // eslint-disable-next-line no-warning-comments\n // TODO: check if the meeting is in JOINING state\n // if Joining state termintate the request as user might click multiple times\n return meeting.meetingRequest\n .joinMeeting({\n inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,\n meetingNumber: meeting.meetingNumber,\n deviceUrl: meeting.deviceUrl,\n locusUrl: meeting.locusUrl,\n locusClusterUrl: meeting.meetingInfo?.locusClusterUrl,\n correlationId: meeting.correlationId,\n reachability,\n roapMessage: options.roapMessage,\n permissionToken: meeting.permissionToken,\n resourceId: options.resourceId || null,\n moderator: options.moderator,\n pin: options.pin,\n moveToResource: options.moveToResource,\n asResourceOccupant: options.asResourceOccupant,\n breakoutsSupported: options.breakoutsSupported,\n locale: options.locale,\n deviceCapabilities: options.deviceCapabilities,\n liveAnnotationSupported: options.liveAnnotationSupported,\n clientMediaPreferences,\n })\n .then((res) => {\n const parsed = MeetingUtil.parseLocusJoin(res);\n meeting.setLocus(parsed);\n meeting.isoLocalClientMeetingJoinTime = res?.headers?.date; // read from header if exist, else fall back to system clock : https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-555657\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.locus.join.response',\n payload: {\n trigger: 'loci-update',\n identifiers: {\n trackingId: res.headers.trackingid,\n },\n },\n options: {\n meetingId: meeting.id,\n mediaConnections: parsed.mediaConnections,\n },\n });\n\n return parsed;\n });\n },\n\n cleanUp: (meeting) => {\n meeting.getWebexObject().internal.device.meetingEnded();\n meeting.stopPeriodicLogUpload();\n\n meeting.breakouts.cleanUp();\n meeting.simultaneousInterpretation.cleanUp();\n meeting.locusMediaRequest = undefined;\n\n // make sure we send last metrics before we close the peerconnection\n const stopStatsAnalyzer = meeting.statsAnalyzer\n ? meeting.statsAnalyzer.stopAnalyzer()\n : Promise.resolve();\n\n return stopStatsAnalyzer\n .then(() => meeting.closeRemoteStreams())\n .then(() => meeting.closePeerConnections())\n .then(() => {\n meeting.cleanupLocalStreams();\n meeting.unsetRemoteStreams();\n meeting.unsetPeerConnections();\n meeting.reconnectionManager.cleanUp();\n })\n .then(() => meeting.stopKeepAlive())\n .then(() => {\n if (meeting.config?.enableAutomaticLLM) {\n meeting.updateLLMConnection();\n }\n });\n },\n\n disconnectPhoneAudio: (meeting, phoneUrl) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const options = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n phoneUrl,\n };\n\n return meeting.meetingRequest.disconnectPhoneAudio(options).catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n /**\n * Returns options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} leave options\n */\n prepareLeaveMeetingOptions: (meeting, options: any = {}) => {\n const defaultOptions = {\n locusUrl: meeting.locusUrl,\n selfId: meeting.selfId,\n correlationId: meeting.correlationId,\n resourceId: meeting.resourceId,\n deviceUrl: meeting.deviceUrl,\n };\n\n return {...defaultOptions, ...options};\n },\n\n // by default will leave on meeting's resourceId\n // if you explicity want it not to leave on resource id, pass\n // {resourceId: null}\n // TODO: chris, you can modify this however you want\n leaveMeeting: (meeting, options: any = {}) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n // TODO: clean up if the meeting is already inactive\n return Promise.reject(new MeetingNotActiveError());\n }\n\n if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {\n return Promise.reject(new UserNotJoinedError());\n }\n\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest\n .leaveMeeting(leaveOptions)\n .then(() => {\n if (options.moveMeeting) {\n return Promise.resolve();\n }\n\n return MeetingUtil.cleanUp(meeting);\n })\n .catch((err) => {\n // TODO: If the meeting state comes as LEFT or INACTIVE as response then\n // 1) on leave clean up the meeting or simply do a sync on the meeting\n // 2) If the error says meeting is inactive then destroy the meeting object\n LoggerProxy.logger.error(\n `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n declineMeeting: (meeting, reason) =>\n meeting.meetingRequest.declineMeeting({\n locusUrl: meeting.locusUrl,\n deviceUrl: meeting.deviceUrl,\n reason,\n }),\n\n isUserInLeftState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _LEFT_,\n\n isUserInIdleState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _IDLE_,\n\n isUserInJoinedState: (locusInfo) => locusInfo.parsedLocus?.self?.state === _JOINED_,\n\n isMediaEstablished: (currentMediaStatus) =>\n currentMediaStatus &&\n (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share),\n\n joinMeetingOptions: (meeting, options: any = {}) => {\n const webex = meeting.getWebexObject();\n\n meeting.resourceId = meeting.resourceId || options.resourceId;\n\n if (meeting.requiredCaptcha) {\n return Promise.reject(new CaptchaError());\n }\n if (meeting.passwordStatus === PASSWORD_STATUS.REQUIRED) {\n return Promise.reject(new PasswordError());\n }\n\n if (options.pin) {\n // @ts-ignore\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.collected',\n options: {\n meetingId: meeting.id,\n },\n });\n }\n\n // normal join meeting, scenario A, D\n return MeetingUtil.joinMeeting(meeting, options).catch((err) => {\n // joining a claimed PMR that is not my own, scenario B\n if (MeetingUtil.isPinOrGuest(err)) {\n webex.internal.newMetrics.submitClientEvent({\n name: 'client.pin.prompt',\n options: {\n meetingId: meeting.id,\n },\n });\n\n // request host pin or non host for unclaimed PMR, start of Scenario C\n // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature\n return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));\n }\n LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);\n\n return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));\n });\n },\n\n /**\n * Returns request options for leaving a meeting.\n * @param {any} meeting\n * @param {any} options\n * @returns {any} request options\n */\n buildLeaveFetchRequestOptions: (meeting, options: any = {}) => {\n const leaveOptions = MeetingUtil.prepareLeaveMeetingOptions(meeting, options);\n\n return meeting.meetingRequest.buildLeaveMeetingRequestOptions(leaveOptions);\n },\n\n getTrack: (stream) => {\n let audioTrack = null;\n let videoTrack = null;\n let audioTracks = null;\n let videoTracks = null;\n\n if (!stream) {\n return {audioTrack: null, videoTrack: null};\n }\n if (stream.getAudioTracks) {\n audioTracks = stream.getAudioTracks();\n }\n if (stream.getVideoTracks) {\n videoTracks = stream.getVideoTracks();\n }\n\n if (audioTracks && audioTracks.length > 0) {\n [audioTrack] = audioTracks;\n }\n\n if (videoTracks && videoTracks.length > 0) {\n [videoTrack] = videoTracks;\n }\n\n return {audioTrack, videoTrack};\n },\n\n getModeratorFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.moderator,\n\n getPolicyFromLocusInfo: (locusInfo) =>\n locusInfo &&\n locusInfo.parsedLocus &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info &&\n locusInfo.parsedLocus.info.policy,\n\n getUserDisplayHintsFromLocusInfo: (locusInfo) =>\n locusInfo?.parsedLocus?.info?.userDisplayHints || [],\n\n canInviteNewParticipants: (displayHints) => displayHints.includes(DISPLAY_HINTS.ADD_GUEST),\n\n canAdmitParticipant: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN),\n\n canUserLock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED),\n\n canUserUnlock: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) &&\n displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED),\n\n canUserRaiseHand: (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND),\n\n canUserLowerAllHands: (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS),\n\n canUserLowerSomeoneElsesHand: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND),\n\n bothLeaveAndEndMeetingAvailable: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) ||\n displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING),\n\n canManageBreakout: (displayHints) => displayHints.includes(DISPLAY_HINTS.BREAKOUT_MANAGEMENT),\n\n canStartBreakout: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_START),\n\n canBroadcastMessageToBreakout: (displayHints, policies = {}) =>\n displayHints.includes(DISPLAY_HINTS.BROADCAST_MESSAGE_TO_BREAKOUT) &&\n !!policies[SELF_POLICY.SUPPORT_BROADCAST_MESSAGE],\n\n isSuppressBreakoutSupport: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.UCF_SUPPRESS_BREAKOUTS_SUPPORT),\n\n canAdmitLobbyToBreakout: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_LOBBY_TO_BREAKOUT),\n\n isBreakoutPreassignmentsEnabled: (displayHints) =>\n !displayHints.includes(DISPLAY_HINTS.DISABLE_BREAKOUT_PREASSIGNMENTS),\n\n canUserAskForHelp: (displayHints) => !displayHints.includes(DISPLAY_HINTS.DISABLE_ASK_FOR_HELP),\n\n lockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canLock) {\n return request.lockMeeting({locusUrl, lock: true});\n }\n\n return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));\n },\n\n unlockMeeting: (actions, request, locusUrl) => {\n if (actions && actions.canUnlock) {\n return request.lockMeeting({locusUrl, lock: false});\n }\n\n return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));\n },\n\n handleAudioLogging: (audioStream?: LocalMicrophoneStream) => {\n const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';\n\n if (audioStream) {\n const settings = audioStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n handleVideoLogging: (videoStream?: LocalCameraStream) => {\n const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';\n\n if (videoStream) {\n const settings = videoStream.getSettings();\n const {deviceId} = settings;\n\n LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);\n LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));\n }\n },\n\n endMeetingForAll: (meeting) => {\n if (meeting.meetingState === FULL_STATE.INACTIVE) {\n return Promise.reject(new MeetingNotActiveError());\n }\n\n const endOptions = {\n locusUrl: meeting.locusUrl,\n };\n\n return meeting.meetingRequest\n .endMeetingForAll(endOptions)\n .then(() => MeetingUtil.cleanUp(meeting))\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${meeting.id}, error: ${err}`\n );\n\n return Promise.reject(err);\n });\n },\n\n canEnableClosedCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_START),\n\n isSaveTranscriptsEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.SAVE_TRANSCRIPTS_ENABLED),\n\n canStartTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START),\n\n canStopTranscribing: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP),\n\n isClosedCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE),\n\n canStartManualCaption: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_START),\n\n canStopManualCaption: (displayHints) => displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STOP),\n\n isManualCaptionActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.MANUAL_CAPTION_STATUS_ACTIVE),\n\n isWebexAssistantActive: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE),\n\n canViewCaptionPanel: (displayHints) => displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL),\n\n isRealTimeTranslationEnabled: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION),\n\n canSelectSpokenLanguages: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR),\n\n waitingForOthersToJoin: (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS),\n\n canSendReactions: (originalValue, displayHints) => {\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_ACTIVE)) {\n return true;\n }\n if (displayHints.includes(DISPLAY_HINTS.REACTIONS_INACTIVE)) {\n return false;\n }\n\n return originalValue;\n },\n canUserRenameSelfAndObserved: (displayHints) =>\n displayHints.includes(DISPLAY_HINTS.CAN_RENAME_SELF_AND_OBSERVED),\n\n canUserRenameOthers: (displayHints) => displayHints.includes(DISPLAY_HINTS.CAN_RENAME_OTHERS),\n\n canShareWhiteBoard: (displayHints) => displayHints.includes(DISPLAY_HINTS.SHARE_WHITEBOARD),\n\n /**\n * Adds the current locus sequence information to a request body\n * @param {Object} meeting The meeting object\n * @param {Object} requestBody The body of a request to locus\n * @returns {void}\n */\n addSequence: (meeting, requestBody) => {\n const sequence = meeting?.locusInfo?.sequence;\n\n if (!sequence) {\n return;\n }\n\n requestBody.sequence = sequence;\n },\n\n /**\n * Updates the locus info for the meeting with the delta locus\n * returned from requests that include the sequence information\n * Returns the original response object\n * @param {Object} meeting The meeting object\n * @param {Object} response The response of the http request\n * @returns {Object}\n */\n updateLocusWithDelta: (meeting, response) => {\n if (!meeting) {\n return response;\n }\n\n const locus = response?.body?.locus;\n\n if (locus) {\n meeting.locusInfo.handleLocusDelta(locus, meeting);\n }\n\n return response;\n },\n\n generateBuildLocusDeltaRequestOptions: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return originalOptions;\n }\n\n const options = cloneDeep(originalOptions);\n\n if (!options.body) {\n options.body = {};\n }\n\n MeetingUtil.addSequence(meeting, options.body);\n\n return options;\n };\n\n return buildLocusDeltaRequestOptions;\n },\n\n generateLocusDeltaRequest: (originalMeeting) => {\n const meetingRef = new WeakRef(originalMeeting);\n\n const buildLocusDeltaRequestOptions =\n MeetingUtil.generateBuildLocusDeltaRequestOptions(originalMeeting);\n\n const locusDeltaRequest = (originalOptions) => {\n const meeting = meetingRef.deref();\n\n if (!meeting) {\n return Promise.resolve();\n }\n\n const options = buildLocusDeltaRequestOptions(originalOptions);\n\n return meeting\n .request(options)\n .then((response) => MeetingUtil.updateLocusWithDelta(meeting, response));\n };\n\n return locusDeltaRequest;\n },\n\n selfSupportsFeature: (feature: SELF_POLICY, userPolicies: Record<SELF_POLICY, boolean>) => {\n if (!userPolicies) {\n return true;\n }\n\n return userPolicies[feature];\n },\n\n parseInterpretationInfo: (meeting, meetingInfo) => {\n if (!meeting || !meetingInfo) {\n return;\n }\n const siInfo = meetingInfo.simultaneousInterpretation;\n meeting.simultaneousInterpretation.updateMeetingSIEnabled(\n !!meetingInfo.turnOnSimultaneousInterpretation,\n !!siInfo?.currentSIInterpreter\n );\n const hostSIEnabled = !!(\n meetingInfo.turnOnSimultaneousInterpretation &&\n meetingInfo?.meetingSiteSetting?.enableHostInterpreterControlSI\n );\n meeting.simultaneousInterpretation.updateHostSIEnabled(hostSIEnabled);\n\n function renameKey(obj, oldKey, newKey) {\n if (oldKey in obj) {\n obj[newKey] = obj[oldKey];\n delete obj[oldKey];\n }\n }\n if (siInfo) {\n const lanuagesInfo = cloneDeep(siInfo.siLanguages);\n for (const language of lanuagesInfo) {\n renameKey(language, 'languageCode', 'languageName');\n renameKey(language, 'languageGroupId', 'languageCode');\n }\n if (!meeting.simultaneousInterpretation?.siLanguages?.length) {\n meeting.simultaneousInterpretation.updateInterpretation({siLanguages: lanuagesInfo});\n }\n }\n Trigger.trigger(\n meeting,\n {\n file: 'meeting/util',\n function: 'parseInterpretationInfo',\n },\n EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE\n );\n },\n\n /**\n * Returns a CA-recognized error payload for the specified raw error message/reason.\n *\n * New errors can be added to this function for handling in the future\n *\n * @param {String} reason the raw error message\n * @returns {Array<object>} an array of payload objects\n */\n getChangeMeetingFloorErrorPayload: (reason: string) => {\n const errorPayload = {\n errorDescription: reason,\n name: 'locus.response',\n shownToUser: false,\n };\n if (reason.includes(LOCAL_SHARE_ERRORS.UNDEFINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.DEVICE_NOT_JOINED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4050,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_MEDIA_FOR_DEVICE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'media',\n errorCode: 2048,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.NO_CONFLUENCE_ID)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4064,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_SHARING_DISABLED)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4065,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.LOCUS_PARTICIPANT_DNE)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 4066,\n },\n ];\n }\n if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD)) {\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'expected',\n errorCode: 4067,\n },\n ];\n }\n\n // return unknown error\n return [\n {\n ...errorPayload,\n fatal: true,\n category: 'signaling',\n errorCode: 1100,\n },\n ];\n },\n};\n\nexport default MeetingUtil;\n"],"mappings":"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"}
@@ -533,6 +533,14 @@ export default class Meeting extends StatelessWebexPlugin {
533
533
  * @returns {string | undefined}
534
534
  */
535
535
  get isoLocalClientMeetingJoinTime(): string | undefined;
536
+ /**
537
+ * Setter - sets isoLocalClientMeetingJoinTime
538
+ * This will be set once on meeting join, and not updated again
539
+ * this will always produce an ISO string
540
+ * If the iso string is invalid, it will fallback to the current system time
541
+ * @param {string | undefined} time
542
+ */
543
+ set isoLocalClientMeetingJoinTime(time: string | undefined);
536
544
  /**
537
545
  * Set meeting info and trigger `MEETING_INFO_AVAILABLE` event
538
546
  * @param {any} info
@@ -458,7 +458,7 @@ var Webinar = _webexCore.WebexPlugin.extend({
458
458
  }, _callee7);
459
459
  }))();
460
460
  },
461
- version: "3.8.0-next.20"
461
+ version: "3.8.0-next.21"
462
462
  });
463
463
  var _default = exports.default = Webinar;
464
464
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -43,13 +43,13 @@
43
43
  "@webex/eslint-config-legacy": "0.0.0",
44
44
  "@webex/jest-config-legacy": "0.0.0",
45
45
  "@webex/legacy-tools": "0.0.0",
46
- "@webex/plugin-meetings": "3.8.0-next.20",
47
- "@webex/plugin-rooms": "3.8.0-next.10",
48
- "@webex/test-helper-chai": "3.8.0-next.9",
49
- "@webex/test-helper-mocha": "3.8.0-next.9",
50
- "@webex/test-helper-mock-webex": "3.8.0-next.9",
51
- "@webex/test-helper-retry": "3.8.0-next.9",
52
- "@webex/test-helper-test-users": "3.8.0-next.9",
46
+ "@webex/plugin-meetings": "3.8.0-next.21",
47
+ "@webex/plugin-rooms": "3.8.0-next.11",
48
+ "@webex/test-helper-chai": "3.8.0-next.10",
49
+ "@webex/test-helper-mocha": "3.8.0-next.10",
50
+ "@webex/test-helper-mock-webex": "3.8.0-next.10",
51
+ "@webex/test-helper-retry": "3.8.0-next.10",
52
+ "@webex/test-helper-test-users": "3.8.0-next.10",
53
53
  "chai": "^4.3.4",
54
54
  "chai-as-promised": "^7.1.1",
55
55
  "eslint": "^8.24.0",
@@ -61,22 +61,22 @@
61
61
  "typescript": "^4.7.4"
62
62
  },
63
63
  "dependencies": {
64
- "@webex/common": "3.8.0-next.9",
64
+ "@webex/common": "3.8.0-next.10",
65
65
  "@webex/event-dictionary-ts": "^1.0.1688",
66
- "@webex/internal-media-core": "2.14.6",
67
- "@webex/internal-plugin-conversation": "3.8.0-next.10",
68
- "@webex/internal-plugin-device": "3.8.0-next.9",
69
- "@webex/internal-plugin-llm": "3.8.0-next.11",
70
- "@webex/internal-plugin-mercury": "3.8.0-next.10",
71
- "@webex/internal-plugin-metrics": "3.8.0-next.9",
72
- "@webex/internal-plugin-support": "3.8.0-next.10",
73
- "@webex/internal-plugin-user": "3.8.0-next.9",
74
- "@webex/internal-plugin-voicea": "3.8.0-next.20",
75
- "@webex/media-helpers": "3.8.0-next.10",
76
- "@webex/plugin-people": "3.8.0-next.10",
77
- "@webex/plugin-rooms": "3.8.0-next.10",
66
+ "@webex/internal-media-core": "2.14.7",
67
+ "@webex/internal-plugin-conversation": "3.8.0-next.11",
68
+ "@webex/internal-plugin-device": "3.8.0-next.10",
69
+ "@webex/internal-plugin-llm": "3.8.0-next.12",
70
+ "@webex/internal-plugin-mercury": "3.8.0-next.11",
71
+ "@webex/internal-plugin-metrics": "3.8.0-next.10",
72
+ "@webex/internal-plugin-support": "3.8.0-next.11",
73
+ "@webex/internal-plugin-user": "3.8.0-next.10",
74
+ "@webex/internal-plugin-voicea": "3.8.0-next.21",
75
+ "@webex/media-helpers": "3.8.0-next.11",
76
+ "@webex/plugin-people": "3.8.0-next.11",
77
+ "@webex/plugin-rooms": "3.8.0-next.11",
78
78
  "@webex/web-capabilities": "^1.4.0",
79
- "@webex/webex-core": "3.8.0-next.9",
79
+ "@webex/webex-core": "3.8.0-next.10",
80
80
  "ampersand-collection": "^2.0.2",
81
81
  "bowser": "^2.11.0",
82
82
  "btoa": "^1.2.1",
@@ -92,5 +92,5 @@
92
92
  "//": [
93
93
  "TODO: upgrade jwt-decode when moving to node 18"
94
94
  ],
95
- "version": "3.8.0-next.20"
95
+ "version": "3.8.0-next.21"
96
96
  }
@@ -1686,6 +1686,33 @@ export default class Meeting extends StatelessWebexPlugin {
1686
1686
  return this.#isoLocalClientMeetingJoinTime;
1687
1687
  }
1688
1688
 
1689
+ /**
1690
+ * Setter - sets isoLocalClientMeetingJoinTime
1691
+ * This will be set once on meeting join, and not updated again
1692
+ * this will always produce an ISO string
1693
+ * If the iso string is invalid, it will fallback to the current system time
1694
+ * @param {string | undefined} time
1695
+ */
1696
+ set isoLocalClientMeetingJoinTime(time: string | undefined) {
1697
+ const fallback = new Date().toISOString();
1698
+ if (!time) {
1699
+ this.#isoLocalClientMeetingJoinTime = fallback;
1700
+ } else {
1701
+ const date = new Date(time);
1702
+
1703
+ // Check if the date is valid
1704
+ if (Number.isNaN(date.getTime())) {
1705
+ LoggerProxy.logger.info(
1706
+ // @ts-ignore
1707
+ `Meeting:index#isoLocalClientMeetingJoinTime --> Invalid date provided: ${time}. Falling back to system clock.`
1708
+ );
1709
+ this.#isoLocalClientMeetingJoinTime = fallback;
1710
+ } else {
1711
+ this.#isoLocalClientMeetingJoinTime = date.toISOString();
1712
+ }
1713
+ }
1714
+ }
1715
+
1689
1716
  /**
1690
1717
  * Set meeting info and trigger `MEETING_INFO_AVAILABLE` event
1691
1718
  * @param {any} info
@@ -5718,8 +5745,6 @@ export default class Meeting extends StatelessWebexPlugin {
5718
5745
  // @ts-ignore
5719
5746
  this.webex.internal.device.meetingStarted();
5720
5747
 
5721
- this.#isoLocalClientMeetingJoinTime = new Date().toISOString();
5722
-
5723
5748
  LoggerProxy.logger.log('Meeting:index#join --> Success');
5724
5749
 
5725
5750
  Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.JOIN_SUCCESS, {
@@ -180,7 +180,7 @@ const MeetingUtil = {
180
180
  .then((res) => {
181
181
  const parsed = MeetingUtil.parseLocusJoin(res);
182
182
  meeting.setLocus(parsed);
183
-
183
+ meeting.isoLocalClientMeetingJoinTime = res?.headers?.date; // read from header if exist, else fall back to system clock : https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-555657
184
184
  webex.internal.newMetrics.submitClientEvent({
185
185
  name: 'client.locus.join.response',
186
186
  payload: {
@@ -210,6 +210,7 @@ describe('plugin-meetings', () => {
210
210
  let membersSpy;
211
211
  let meetingRequestSpy;
212
212
  let correlationId;
213
+ let isoLocalClientMeetingJoinTime;
213
214
  let uploadEvent;
214
215
 
215
216
  beforeEach(() => {
@@ -1692,10 +1693,6 @@ describe('plugin-meetings', () => {
1692
1693
  sandbox.stub(MeetingUtil, 'joinMeeting').returns(Promise.resolve(joinMeetingResult));
1693
1694
  });
1694
1695
 
1695
- afterEach(() => {
1696
- assert.exists(meeting.isoLocalClientMeetingJoinTime);
1697
- });
1698
-
1699
1696
  it('should join the meeting and return promise', async () => {
1700
1697
  const join = meeting.join({pstnAudioType: 'dial-in'});
1701
1698
  meeting.config.enableAutomaticLLM = true;
@@ -7530,6 +7527,27 @@ describe('plugin-meetings', () => {
7530
7527
  });
7531
7528
  });
7532
7529
 
7530
+ describe('#setIsoLocalClientMeetingJoinTime', () => {
7531
+ it('should fallback to system clock ISO string when given an undefined value', () => {
7532
+ const currentSystemTime = new Date().toISOString();
7533
+ meeting.isoLocalClientMeetingJoinTime = undefined;
7534
+ assert.equal(meeting.isoLocalClientMeetingJoinTime, currentSystemTime);
7535
+ });
7536
+
7537
+ it('should fallback to system clock ISO string when given an invalid value', () => {
7538
+ const currentSystemTime = new Date().toISOString();
7539
+ meeting.isoLocalClientMeetingJoinTime = 'invalid-date';
7540
+ assert.equal(meeting.isoLocalClientMeetingJoinTime, currentSystemTime);
7541
+ });
7542
+
7543
+ it('should set the isoLocalClientMeetingJoinTime correctly for a valid date string', () => {
7544
+ const validDateString = 'Tue, 01 Apr 2025 13:00:36 GMT';
7545
+ const expectedISOString = new Date(validDateString).toISOString();
7546
+ meeting.isoLocalClientMeetingJoinTime = validDateString;
7547
+ assert.equal(meeting.isoLocalClientMeetingJoinTime, expectedISOString);
7548
+ });
7549
+ });
7550
+
7533
7551
  describe('#updateCallStateForMetrics', () => {
7534
7552
  it('should update the callState, overriding existing values', () => {
7535
7553
  assert.deepEqual(meeting.callStateForMetrics, {correlationId, sessionCorrelationId: ''});
@@ -460,6 +460,50 @@ describe('plugin-meetings', () => {
460
460
  });
461
461
  });
462
462
 
463
+
464
+ it('#Should call `meetingRequest.joinMeeting and handle a date header in the response : isoLocalClientMeetingJoinedTime', async () => {
465
+ meeting.isMultistream = true;
466
+
467
+ const FAKE_REACHABILITY_REPORT = {
468
+ id: 'fake reachability report',
469
+ };
470
+ const FAKE_CLIENT_MEDIA_PREFERENCES = {
471
+ id: 'fake client media preferences',
472
+ };
473
+
474
+ webex.meetings.reachability.getReachabilityReportToAttachToRoap.resolves(FAKE_REACHABILITY_REPORT);
475
+ webex.meetings.reachability.getClientMediaPreferences.resolves(FAKE_CLIENT_MEDIA_PREFERENCES);
476
+
477
+ sinon
478
+ .stub(webex.internal.device.ipNetworkDetector, 'supportsIpV4')
479
+ .get(() => true);
480
+ sinon
481
+ .stub(webex.internal.device.ipNetworkDetector, 'supportsIpV6')
482
+ .get(() => true);
483
+
484
+ meeting.meetingRequest.joinMeeting.resolves({
485
+ headers: {
486
+ date: 'test'
487
+ },
488
+ body: {
489
+ mediaConnections: [{mediaId: 'test'}],
490
+ locus: {
491
+ url: 'test',
492
+ self: {
493
+ id: 'test'
494
+ }
495
+ }
496
+ }
497
+ })
498
+
499
+ await MeetingUtil.joinMeeting(meeting, {
500
+ reachability: 'reachability',
501
+ roapMessage: 'roapMessage',
502
+ });
503
+
504
+ assert.equal(meeting.isoLocalClientMeetingJoinTime, 'test');
505
+ });
506
+
463
507
  it('should handle failed reachability report retrieval', async () => {
464
508
  webex.meetings.reachability.getReachabilityReportToAttachToRoap.rejects(
465
509
  new Error('fake error')