stream-chat-react-native-core 5.26.0-beta.5 → 5.26.0-beta.6

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.
Files changed (57) hide show
  1. package/lib/commonjs/components/Channel/Channel.js +14 -21
  2. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  3. package/lib/commonjs/i18n/en.json +1 -1
  4. package/lib/commonjs/i18n/es.json +38 -38
  5. package/lib/commonjs/i18n/fr.json +38 -38
  6. package/lib/commonjs/i18n/he.json +38 -38
  7. package/lib/commonjs/i18n/hi.json +38 -38
  8. package/lib/commonjs/i18n/it.json +38 -38
  9. package/lib/commonjs/i18n/ja.json +38 -38
  10. package/lib/commonjs/i18n/ko.json +38 -38
  11. package/lib/commonjs/i18n/nl.json +38 -38
  12. package/lib/commonjs/i18n/pt-BR.json +38 -38
  13. package/lib/commonjs/i18n/ru.json +38 -38
  14. package/lib/commonjs/i18n/tr.json +38 -38
  15. package/lib/commonjs/version.json +1 -1
  16. package/lib/module/components/Channel/Channel.js +14 -21
  17. package/lib/module/components/Channel/Channel.js.map +1 -1
  18. package/lib/module/i18n/en.json +1 -1
  19. package/lib/module/i18n/es.json +38 -38
  20. package/lib/module/i18n/fr.json +38 -38
  21. package/lib/module/i18n/he.json +38 -38
  22. package/lib/module/i18n/hi.json +38 -38
  23. package/lib/module/i18n/it.json +38 -38
  24. package/lib/module/i18n/ja.json +38 -38
  25. package/lib/module/i18n/ko.json +38 -38
  26. package/lib/module/i18n/nl.json +38 -38
  27. package/lib/module/i18n/pt-BR.json +38 -38
  28. package/lib/module/i18n/ru.json +38 -38
  29. package/lib/module/i18n/tr.json +38 -38
  30. package/lib/module/version.json +1 -1
  31. package/lib/typescript/i18n/en.json +1 -1
  32. package/lib/typescript/i18n/es.json +38 -38
  33. package/lib/typescript/i18n/fr.json +38 -38
  34. package/lib/typescript/i18n/he.json +38 -38
  35. package/lib/typescript/i18n/hi.json +38 -38
  36. package/lib/typescript/i18n/it.json +38 -38
  37. package/lib/typescript/i18n/ja.json +38 -38
  38. package/lib/typescript/i18n/ko.json +38 -38
  39. package/lib/typescript/i18n/nl.json +38 -38
  40. package/lib/typescript/i18n/pt-BR.json +38 -38
  41. package/lib/typescript/i18n/ru.json +38 -38
  42. package/lib/typescript/i18n/tr.json +38 -38
  43. package/package.json +1 -1
  44. package/src/components/Channel/Channel.tsx +9 -8
  45. package/src/i18n/en.json +1 -1
  46. package/src/i18n/es.json +38 -38
  47. package/src/i18n/fr.json +38 -38
  48. package/src/i18n/he.json +38 -38
  49. package/src/i18n/hi.json +38 -38
  50. package/src/i18n/it.json +38 -38
  51. package/src/i18n/ja.json +38 -38
  52. package/src/i18n/ko.json +38 -38
  53. package/src/i18n/nl.json +38 -38
  54. package/src/i18n/pt-BR.json +38 -38
  55. package/src/i18n/ru.json +38 -38
  56. package/src/i18n/tr.json +38 -38
  57. package/src/version.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_debounce","_interopRequireDefault","_throttle","_mimeTypes","_streamChat","_useCreateChannelContext","_useCreateInputMessageInputContext","_useCreateMessagesContext","_useCreateOwnCapabilitiesContext","_useCreatePaginatedMessageListContext","_useCreateThreadContext","_useCreateTypingContext","_useTargetedMessage2","_ChannelContext","_useChannelState2","_ChatContext","_MessageInputContext","_MessagesContext","_OwnCapabilitiesContext","_PaginatedMessageListContext","_SuggestionsContext","_ThemeContext","_ThreadContext","_TranslationContext","_TypingContext","_useAppStateListener","_icons","_native","dbApi","_addReactionToLocalState","_compressImage","_DBSyncManager","_patchMessageTextCommand","_removeReactionFromLocalState","_removeReservedFields","_utils","_Attachment","_AttachmentActions","_AudioAttachment","_Card","_FileAttachment","_FileAttachmentGroup","_FileIcon","_Gallery","_Giphy","_ImageLoadingFailedIndicator","_ImageLoadingIndicator","_VideoThumbnail","_AutoCompleteSuggestionHeader","_AutoCompleteSuggestionItem","_AutoCompleteSuggestionList","_EmptyStateIndicator","_LoadingErrorIndicator","_LoadingIndicator","_KeyboardCompatibleView","_Message","_MessageAvatar","_MessageBounce","_MessageContent","_MessageDeleted","_MessageError","_MessageFooter","_MessagePinnedHeader","_MessageReplies","_MessageRepliesAvatars","_MessageSimple","_MessageStatus","_ReactionList","_AttachButton","_CommandsButton","_InputEditingStateHeader","_InputGiphySearch","_InputReplyStateHeader","_CooldownTimer","_FileUploadPreview","_ImageUploadPreview","_InputButtons","_MoreOptionsButton","_SendButton","_SendMessageDisallowedIndicator","_ShowThreadMessageInChannelButton","_UploadProgressIndicator","_DateHeader","_InlineDateSeparator","_InlineUnreadIndicator","_MessageList","_MessageSystem","_NetworkDownIndicator","_ScrollToBottomButton","_TypingIndicator","_TypingIndicatorContainer","_OverlayReactionList","_Reply","_excluded","_excluded2","_excluded3","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","exports","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","ChannelWithContext","props","_client$user","_channel$data2","_ref29","_ref30","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","_props$allowThreadMes","allowThreadMessagesInChannel","_props$AttachButton","AttachButton","AttachButtonDefault","_props$Attachment","Attachment","AttachmentDefault","_props$AttachmentActi","AttachmentActions","AttachmentActionsDefault","_props$AudioAttachmen","AudioAttachment","AudioAttachmentDefault","_props$AutoCompleteSu","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","_props$AutoCompleteSu2","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","_props$AutoCompleteSu3","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","_props$Card","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","_props$CommandsButton","CommandsButton","CommandsButtonDefault","compressImageQuality","_props$CooldownTimer","CooldownTimer","CooldownTimerDefault","_props$DateHeader","DateHeader","DateHeaderDefault","_props$deletedMessage","deletedMessagesVisibilityType","_props$disableIfFroze","disableIfFrozenChannel","_props$disableKeyboar","disableKeyboardCompatibleView","disableTypingIndicator","_props$dismissKeyboar","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","_props$emojiSearchInd","emojiSearchIndex","defaultEmojiSearchIndex","_props$EmptyStateIndi","EmptyStateIndicator","EmptyStateIndicatorDefault","_props$enableMessageG","enableMessageGroupingByUser","enableOfflineSupport","_props$enforceUniqueR","enforceUniqueReaction","_props$FileAttachment","FileAttachment","FileAttachmentDefault","_props$FileAttachment2","FileAttachmentGroup","FileAttachmentGroupDefault","_props$FileAttachment3","FileAttachmentIcon","FileIconDefault","_props$FileUploadPrev","FileUploadPreview","FileUploadPreviewDefault","_props$FlatList","FlatList","FlatListDefault","forceAlignMessages","formatDate","_props$Gallery","Gallery","GalleryDefault","getMessagesGroupStyles","_props$Giphy","Giphy","GiphyDefault","giphyEnabled","_props$giphyVersion","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","_props$hasCommands","hasCommands","_props$hasFilePicker","hasFilePicker","pickDocument","_props$hasImagePicker","hasImagePicker","_props$hideDateSepara","hideDateSeparators","_props$hideStickyDate","hideStickyDateHeader","_props$ImageUploadPre","ImageUploadPreview","ImageUploadPreviewDefault","_props$initialScrollT","initialScrollToFirstUnreadMessage","initialValue","_props$InlineDateSepa","InlineDateSeparator","InlineDateSeparatorDefault","_props$InlineUnreadIn","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","_props$InputButtons","InputButtons","InputButtonsDefault","_props$InputEditingSt","InputEditingStateHeader","InputEditingStateHeaderDefault","_props$InputGiphySear","InputGiphySearch","InputGiphyCommandInputDefault","_props$InputReplyStat","InputReplyStateHeader","InputReplyStateHeaderDefault","isAttachmentEqual","keyboardBehavior","_props$KeyboardCompat","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","_props$legacyImageVie","legacyImageViewerSwipeBehaviour","_props$LoadingErrorIn","LoadingErrorIndicator","LoadingErrorIndicatorDefault","_props$LoadingIndicat","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","_props$ImageLoadingFa","ImageLoadingFailedIndicator","ImageLoadingFailedIndicatorDefault","_props$ImageLoadingIn","ImageLoadingIndicator","ImageLoadingIndicatorDefault","markdownRules","maxMessageLengthProp","maxMessageLength","_props$maxNumberOfFil","maxNumberOfFiles","maxTimeBetweenGroupedMessages","_props$mentionAllAppU","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","_props$Message","Message","MessageDefault","messageActions","_props$MessageAvatar","MessageAvatar","MessageAvatarDefault","_props$MessageBounce","MessageBounce","MessageBounceDefault","_props$MessageContent","MessageContent","MessageContentDefault","_props$messageContent","messageContentOrder","_props$MessageDeleted","MessageDeleted","MessageDeletedDefault","_props$MessageError","MessageError","MessageErrorDefault","_props$MessageFooter","MessageFooter","MessageFooterDefault","MessageHeader","messageId","_props$MessageList","MessageList","MessageListDefault","_props$MessagePinnedH","MessagePinnedHeader","MessagePinnedHeaderDefault","_props$MessageReplies","MessageReplies","MessageRepliesDefault","_props$MessageReplies2","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","_props$MessageSimple","MessageSimple","MessageSimpleDefault","_props$MessageStatus","MessageStatus","MessageStatusDefault","_props$MessageSystem","MessageSystem","MessageSystemDefault","MessageText","_props$MoreOptionsBut","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","_props$newMessageStat","newMessageStateUpdateThrottleInterval","_props$NetworkDownInd","NetworkDownIndicator","NetworkDownIndicatorDefault","_props$numberOfLines","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","_props$OverlayReactio","OverlayReactionList","OverlayReactionListDefault","_props$ReactionList","ReactionList","ReactionListDefault","read","_props$Reply","Reply","ReplyDefault","_props$ScrollToBottom","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","_props$SendButton","SendButton","SendButtonDefault","_props$SendMessageDis","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","_props$sendImageAsync","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","_props$ShowThreadMess","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","_props$stateUpdateThr","stateUpdateThrottleInterval","StickyHeader","_props$supportedReact","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","_props$TypingIndicato","TypingIndicator","TypingIndicatorDefault","_props$TypingIndicato2","TypingIndicatorContainer","TypingIndicatorContainerDefault","_props$UploadProgress","UploadProgressIndicator","UploadProgressIndicatorDefault","_props$UrlPreview","UrlPreview","_props$VideoThumbnail","VideoThumbnail","VideoThumbnailDefault","watcherCount","watchers","_useTheme","useTheme","_useTheme$theme","theme","black","colors","_useState","useState","_useState2","_slicedToArray2","deleted","setDeleted","_useState3","undefined","_useState4","editing","setEditing","_useState5","_useState6","error","setError","_useState7","_useState8","hasMore","setHasMore","_useState9","_useState10","lastRead","setLastRead","_useState11","state","length","_useState12","loading","setLoading","_useState13","_useState14","setLoadingMore","_useState15","_useState16","setLoadingMoreRecent","_useState17","_useState18","quotedMessage","setQuotedMessage","_useState19","_useState20","setThread","_useState21","_useState22","threadHasMore","setThreadHasMore","_useState23","_useState24","threadLoadingMore","setThreadLoadingMore","syncingChannelRef","useRef","_useState25","_useState26","hasNoMoreRecentMessagesToLoad","setHasNoMoreRecentMessagesToLoad","_useTargetedMessage","useTargetedMessage","prevTargetedMessage","setTargetedMessage","targetedMessage","hasOverlappingRecentMessagesRef","uploadAbortControllerRef","Map","channelId","id","useEffect","initChannel","_ref","_asyncToGenerator2","_regenerator","mark","_callee","channelLoaded","wrap","_callee$","_context","prev","next","offlineMode","abrupt","initialized","loadChannel","loadChannelAroundMessage","countUnread","loadChannelAtFirstUnreadMessage","stop","apply","arguments","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","_channel$state$thread","threads","handleAppBackground","useCallback","_channelData$own_capa","channelData","data","own_capabilities","includes","sendEvent","parent_id","useAppStateListener","isAdmin","user","role","membership","isModerator","isOwner","markRead","throttle","disconnected","clientChannelConfig","read_events","logChatPromiseExecution","current","copyMessagesState","clearInterval","mergeSetsIntervalRef","restartSetsMergeFuncRef","_extends2","_toConsumableArray2","watcher_count","channelSubscriptions","push","on","forEach","s","unsubscribe","handleEvent","event","ignorableEvents","isTypingEvent","_event$message","updatedThreadMessages","message","updatedThread","formatMessage","_channel$on","_client$on","cid","_client$on2","channelQueryCallRef","_ref2","_callee2","queryCall","onAfterQueryCall","scrollToMessageId","currentMessages","hadCurrentLatestMessages","scrollToMessageIndex","limitAfter","currentLength","noOfMessagesAfter","endIndex","restOfMessages","latestSet","hasLatestMessages","_args2","_callee2$","_context2","Date","latestMessages","findIndex","_ref3","clearMessages","slice","splitLatestCurrentMessageSetRef","messageSets","find","isLatest","setIsUpToDate","flush","t0","Error","_x","unreadMessageIdToScrollTo","_callee3","unreadCount","isLatestMessageSetShown","lastReadDate","_res$messages$find","res","_callee3$","_context3","isCurrent","query","created_at_around","limit","watch","sent","m","created_at","loadMessageIntoState","loadLatestMessagesRef","_ref5","messageIdToLoadAround","_callee4","currentMessageSet","recentCurrentSetMsgId","_callee4$","_context4","id_gte","loadChannelAtMessage","_ref7","_ref7$after","after","_ref7$before","before","_callee5","_callee5$","_context5","queryAtMessage","currentLatestSet","mergeOverlappingMessageSetsRef","limitToMaxRenderPerBatch","latestMessageSet","concat","filter","setInterval","didMerge","_callee6","clearLatest","_args6","_callee6$","_context6","_callee7","_callee7$","_context7","isUpToDate","reloadThread","_ref11","_callee8","parentID","queryResponse","updatedHasMore","_yield$channel$getMes","_messages","_messages2","threadMessage","formattedMessage","_callee8$","_context8","getReplies","getMessagesById","console","warn","resyncChannel","_ref12","_callee9","_messages$","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","parseMessage","failedMessages","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","_callee9$","_context9","addMessagesSorted","addPinnedMessages","pinned_messages","_message$pinned_at","_message$updated_at","toString","pinned_at","updated_at","status","MessageStatusTypes","FAILED","map","resyncChannelRef","connectionChangedHandler","connectionChangedSubscription","DBSyncManager","onSyncStatusChange","statusChanged","online","reloadChannel","_callee10","_callee10$","_context10","_ref15","_callee11","_ref14","_ref14$after","_ref14$before","_callee11$","_context11","queryBeforeMessage","queryAfterMessage","_x2","_ref16","_callee12","_args12","_callee12$","_context12","id_lt","_x3","_ref17","_callee13","currentSet","_args13","_callee13$","_context13","_x4","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","_ref18","attachments","mentioned_users","text","extraFields","_objectWithoutProperties2","_client$user2","channel_mutes","devices","mutes","messageUser","preview","__html","html","userID","generateRandomId","userId","reactions","SENDING","quoted_message_id","quoted_message","uploadPendingAttachments","_ref19","_callee14","_updatedMessage$attac","i","_updatedMessage$attac2","attachment","image","file","_image$name","filename","controller","compressedUri","contentType","uploadResponse","_controller","response","_callee14$","_context14","originalImage","originalFile","uri","image_url","isLocalUrl","name","replace","abort","compressedImageURI","lookup","sendImage","asset_url","t1","sendFile","mimeType","thumb_url","_x5","sendMessageRequest","_ref20","_callee15","retrying","_updatedMessage","deleted_at","latest_reactions","own_reactions","reaction_counts","mentionedUserIds","_messageData","messageResponse","_callee15$","_context15","messageData","patchMessageTextCommand","sendMessage","RECEIVED","log","_x6","_x7","_ref21","_callee16","_channel$state","messagePreview","_callee16$","_context16","filterErrorMessages","commands","messageInput","upsertMessages","_x8","retrySendMessage","_ref22","_callee17","statusPendingMessage","messageWithoutReservedFields","_callee17$","_context17","removeReservedFields","isBouncedMessage","_x9","debounce","newMessages","loadMore","_callee18","oldestMessage","oldestID","_args18","_callee18$","_context18","loadMoreRecent","_callee19","latestLengthBeforeMerge","recentMessage","gotAllRecentMessages","_args19","_callee19$","_context19","loadMoreRecentFinished","editMessage","setEditingState","clearQuotedMessageState","setQuotedMessageState","messageOrBoolean","clearEditingState","deleteMessage","sendReaction","_ref25","_callee20","payload","_callee20$","_context20","enforce_unique","addReactionToLocalState","reactionType","queueTask","task","channelType","_x10","_x11","_ref26","_callee21","_data","_callee21$","_context21","dropPendingTasks","toISOString","_x12","deleteReaction","_ref27","_callee22","_callee22$","_context22","removeReactionFromLocalState","_x13","_x14","openThread","_channel$state2","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","_ref28","_callee23","_threadMessages$","oldestMessageID","_callee23$","_context23","disabledValue","useMemo","_channel$data","frozen","ownCapabilitiesContext","useCreateOwnCapabilitiesContext","overrideCapabilities","channelContext","useCreateChannelContext","disabled","some","command","isChannelActive","inputMessageInputContext","useCreateInputMessageInputContext","max_message_length","messageListContext","useCreatePaginatedMessageListContext","messagesContext","useCreateMessagesContext","suggestionsContext","threadContext","useCreateThreadContext","typingContext","useCreateTypingContext","createElement","listType","retry","__self","__source","fileName","lineNumber","columnNumber","Text","style","color","testID","behavior","enabled","ChannelProvider","value","OwnCapabilitiesProvider","TypingProvider","PaginatedMessageListProvider","MessagesProvider","ThreadProvider","SuggestionsProvider","MessageInputProvider","View","height","Channel","_props$thread","_props$thread2","_useChatContext","useChatContext","_useTranslationContex","useTranslationContext","_useChannelState","useChannelState"],"sources":["Channel.tsx"],"sourcesContent":["import React, { PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { KeyboardAvoidingViewProps, StyleSheet, Text, View } from 'react-native';\n\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\n\nimport { lookup } from 'mime-types';\nimport {\n Channel as ChannelClass,\n ChannelState,\n Channel as ChannelType,\n EventHandler,\n logChatPromiseExecution,\n MessageResponse,\n Reaction,\n SendMessageAPIResponse,\n StreamChat,\n Event as StreamEvent,\n Message as StreamMessage,\n} from 'stream-chat';\n\nimport { useCreateChannelContext } from './hooks/useCreateChannelContext';\n\nimport { useCreateInputMessageInputContext } from './hooks/useCreateInputMessageInputContext';\n\nimport { useCreateMessagesContext } from './hooks/useCreateMessagesContext';\n\nimport { useCreateOwnCapabilitiesContext } from './hooks/useCreateOwnCapabilitiesContext';\nimport { useCreatePaginatedMessageListContext } from './hooks/useCreatePaginatedMessageListContext';\n\nimport { useCreateThreadContext } from './hooks/useCreateThreadContext';\n\nimport { useCreateTypingContext } from './hooks/useCreateTypingContext';\n\nimport { useTargetedMessage } from './hooks/useTargetedMessage';\n\nimport { ChannelContextValue, ChannelProvider } from '../../contexts/channelContext/ChannelContext';\nimport type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { useChannelState } from '../../contexts/channelsStateContext/useChannelState';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n InputMessageInputContextValue,\n MessageInputProvider,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n MessagesProvider,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OwnCapabilitiesContextValue,\n OwnCapabilitiesProvider,\n} from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n PaginatedMessageListContextValue,\n PaginatedMessageListProvider,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport {\n SuggestionsContextValue,\n SuggestionsProvider,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, ThreadProvider } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { TypingProvider } from '../../contexts/typingContext/TypingContext';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\nimport { FlatList as FlatListDefault, pickDocument } from '../../native';\nimport * as dbApi from '../../store/apis';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { addReactionToLocalState } from '../../utils/addReactionToLocalState';\nimport { compressedImageURI } from '../../utils/compressImage';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\nimport { patchMessageTextCommand } from '../../utils/patchMessageTextCommand';\nimport { removeReactionFromLocalState } from '../../utils/removeReactionFromLocalState';\nimport { removeReservedFields } from '../../utils/removeReservedFields';\nimport {\n defaultEmojiSearchIndex,\n generateRandomId,\n isBouncedMessage,\n isLocalUrl,\n MessageStatusTypes,\n ReactionData,\n} from '../../utils/utils';\nimport { Attachment as AttachmentDefault } from '../Attachment/Attachment';\nimport { AttachmentActions as AttachmentActionsDefault } from '../Attachment/AttachmentActions';\nimport { AudioAttachment as AudioAttachmentDefault } from '../Attachment/AudioAttachment';\nimport { Card as CardDefault } from '../Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../Attachment/FileAttachment';\nimport { FileAttachmentGroup as FileAttachmentGroupDefault } from '../Attachment/FileAttachmentGroup';\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { Gallery as GalleryDefault } from '../Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../Attachment/Giphy';\nimport { ImageLoadingFailedIndicator as ImageLoadingFailedIndicatorDefault } from '../Attachment/ImageLoadingFailedIndicator';\nimport { ImageLoadingIndicator as ImageLoadingIndicatorDefault } from '../Attachment/ImageLoadingIndicator';\nimport { VideoThumbnail as VideoThumbnailDefault } from '../Attachment/VideoThumbnail';\nimport { AutoCompleteSuggestionHeader as AutoCompleteSuggestionHeaderDefault } from '../AutoCompleteInput/AutoCompleteSuggestionHeader';\nimport { AutoCompleteSuggestionItem as AutoCompleteSuggestionItemDefault } from '../AutoCompleteInput/AutoCompleteSuggestionItem';\nimport { AutoCompleteSuggestionList as AutoCompleteSuggestionListDefault } from '../AutoCompleteInput/AutoCompleteSuggestionList';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport {\n LoadingErrorIndicator as LoadingErrorIndicatorDefault,\n LoadingErrorProps,\n} from '../Indicators/LoadingErrorIndicator';\nimport { LoadingIndicator as LoadingIndicatorDefault } from '../Indicators/LoadingIndicator';\nimport { KeyboardCompatibleView as KeyboardCompatibleViewDefault } from '../KeyboardCompatibleView/KeyboardCompatibleView';\nimport { Message as MessageDefault } from '../Message/Message';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageBounce as MessageBounceDefault } from '../Message/MessageSimple/MessageBounce';\nimport { MessageContent as MessageContentDefault } from '../Message/MessageSimple/MessageContent';\nimport { MessageDeleted as MessageDeletedDefault } from '../Message/MessageSimple/MessageDeleted';\nimport { MessageError as MessageErrorDefault } from '../Message/MessageSimple/MessageError';\nimport { MessageFooter as MessageFooterDefault } from '../Message/MessageSimple/MessageFooter';\nimport { MessagePinnedHeader as MessagePinnedHeaderDefault } from '../Message/MessageSimple/MessagePinnedHeader';\nimport { MessageReplies as MessageRepliesDefault } from '../Message/MessageSimple/MessageReplies';\nimport { MessageRepliesAvatars as MessageRepliesAvatarsDefault } from '../Message/MessageSimple/MessageRepliesAvatars';\nimport { MessageSimple as MessageSimpleDefault } from '../Message/MessageSimple/MessageSimple';\nimport { MessageStatus as MessageStatusDefault } from '../Message/MessageSimple/MessageStatus';\nimport { ReactionList as ReactionListDefault } from '../Message/MessageSimple/ReactionList';\nimport { AttachButton as AttachButtonDefault } from '../MessageInput/AttachButton';\nimport { CommandsButton as CommandsButtonDefault } from '../MessageInput/CommandsButton';\nimport { InputEditingStateHeader as InputEditingStateHeaderDefault } from '../MessageInput/components/InputEditingStateHeader';\nimport { InputGiphySearch as InputGiphyCommandInputDefault } from '../MessageInput/components/InputGiphySearch';\nimport { InputReplyStateHeader as InputReplyStateHeaderDefault } from '../MessageInput/components/InputReplyStateHeader';\nimport { CooldownTimer as CooldownTimerDefault } from '../MessageInput/CooldownTimer';\nimport { FileUploadPreview as FileUploadPreviewDefault } from '../MessageInput/FileUploadPreview';\nimport { ImageUploadPreview as ImageUploadPreviewDefault } from '../MessageInput/ImageUploadPreview';\nimport { InputButtons as InputButtonsDefault } from '../MessageInput/InputButtons';\nimport { MoreOptionsButton as MoreOptionsButtonDefault } from '../MessageInput/MoreOptionsButton';\nimport { SendButton as SendButtonDefault } from '../MessageInput/SendButton';\nimport { SendMessageDisallowedIndicator as SendMessageDisallowedIndicatorDefault } from '../MessageInput/SendMessageDisallowedIndicator';\nimport { ShowThreadMessageInChannelButton as ShowThreadMessageInChannelButtonDefault } from '../MessageInput/ShowThreadMessageInChannelButton';\nimport { UploadProgressIndicator as UploadProgressIndicatorDefault } from '../MessageInput/UploadProgressIndicator';\nimport { DateHeader as DateHeaderDefault } from '../MessageList/DateHeader';\nimport type { MessageType } from '../MessageList/hooks/useMessageList';\nimport { InlineDateSeparator as InlineDateSeparatorDefault } from '../MessageList/InlineDateSeparator';\nimport { InlineUnreadIndicator as InlineUnreadIndicatorDefault } from '../MessageList/InlineUnreadIndicator';\nimport { MessageList as MessageListDefault } from '../MessageList/MessageList';\nimport { MessageSystem as MessageSystemDefault } from '../MessageList/MessageSystem';\nimport { NetworkDownIndicator as NetworkDownIndicatorDefault } from '../MessageList/NetworkDownIndicator';\nimport { ScrollToBottomButton as ScrollToBottomButtonDefault } from '../MessageList/ScrollToBottomButton';\nimport { TypingIndicator as TypingIndicatorDefault } from '../MessageList/TypingIndicator';\nimport { TypingIndicatorContainer as TypingIndicatorContainerDefault } from '../MessageList/TypingIndicatorContainer';\nimport { OverlayReactionList as OverlayReactionListDefault } from '../MessageOverlay/OverlayReactionList';\nimport { Reply as ReplyDefault } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n selectChannel: { fontWeight: 'bold', padding: 16 },\n});\n\nexport const reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\n/**\n * If count of unread messages is less than 4, then no need to scroll to first unread message,\n * since first unread message will be in visible frame anyways.\n */\nconst scrollToFirstUnreadThreshold = 4;\n\nconst defaultThrottleInterval = 500;\nconst defaultDebounceInterval = 500;\nconst throttleOptions = {\n leading: true,\n trailing: true,\n};\nconst debounceOptions = {\n leading: true,\n trailing: true,\n};\n\nexport type ChannelPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'channel'> &\n Partial<\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'EmptyStateIndicator'\n | 'enableMessageGroupingByUser'\n | 'enforceUniqueReaction'\n | 'giphyEnabled'\n | 'hideStickyDateHeader'\n | 'hideDateSeparators'\n | 'LoadingIndicator'\n | 'maxTimeBetweenGroupedMessages'\n | 'NetworkDownIndicator'\n | 'StickyHeader'\n >\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client' | 'enableOfflineSupport'> &\n Partial<\n Omit<\n InputMessageInputContextValue<StreamChatGenerics>,\n 'quotedMessage' | 'editing' | 'clearEditingState' | 'clearQuotedMessageState' | 'sendMessage'\n >\n > &\n Partial<\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem' | 'AutoCompleteSuggestionList'\n >\n > &\n Pick<TranslationContextValue, 't'> &\n Partial<\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'messages' | 'loadingMore' | 'loadingMoreRecent'\n >\n > &\n UseChannelStateValue<StreamChatGenerics> &\n Partial<\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'AttachmentActions'\n | 'AudioAttachment'\n | 'Card'\n | 'CardCover'\n | 'CardFooter'\n | 'CardHeader'\n | 'DateHeader'\n | 'deletedMessagesVisibilityType'\n | 'disableTypingIndicator'\n | 'dismissKeyboardOnMessageTouch'\n | 'FileAttachment'\n | 'FileAttachmentIcon'\n | 'FileAttachmentGroup'\n | 'FlatList'\n | 'forceAlignMessages'\n | 'formatDate'\n | 'Gallery'\n | 'getMessagesGroupStyles'\n | 'Giphy'\n | 'giphyVersion'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleReaction'\n | 'handleQuotedReply'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'isAttachmentEqual'\n | 'legacyImageViewerSwipeBehaviour'\n | 'ImageLoadingFailedIndicator'\n | 'ImageLoadingIndicator'\n | 'markdownRules'\n | 'Message'\n | 'messageActions'\n | 'MessageAvatar'\n | 'MessageBounce'\n | 'MessageContent'\n | 'messageContentOrder'\n | 'MessageDeleted'\n | 'MessageError'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageList'\n | 'MessagePinnedHeader'\n | 'MessageReplies'\n | 'MessageRepliesAvatars'\n | 'MessageSimple'\n | 'MessageStatus'\n | 'MessageSystem'\n | 'MessageText'\n | 'myMessageTheme'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'ReactionList'\n | 'Reply'\n | 'ScrollToBottomButton'\n | 'selectReaction'\n | 'supportedReactions'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n | 'UrlPreview'\n | 'VideoThumbnail'\n >\n > &\n Partial<\n Pick<ThreadContextValue<StreamChatGenerics>, 'allowThreadMessagesInChannel' | 'thread'>\n > & {\n shouldSyncChannel: boolean;\n /**\n * Additional props passed to keyboard avoiding view\n */\n additionalKeyboardAvoidingViewProps?: Partial<KeyboardAvoidingViewProps>;\n /**\n * Disables the channel UI if the channel is frozen\n */\n disableIfFrozenChannel?: boolean;\n /**\n * When true, disables the KeyboardCompatibleView wrapper\n *\n * Channel internally uses the [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n * component to adjust the height of Channel when the keyboard is opened or dismissed. This prop provides the ability to disable this functionality in case you\n * want to use [KeyboardAvoidingView](https://facebook.github.io/react-native/docs/keyboardavoidingview) or handle dismissal yourself.\n * KeyboardAvoidingView works well when your component occupies 100% of screen height, otherwise it may raise some issues.\n */\n disableKeyboardCompatibleView?: boolean;\n /**\n * Overrides the Stream default mark channel read request (Advanced usage only)\n * @param channel Channel object\n */\n doMarkReadRequest?: (channel: ChannelType<StreamChatGenerics>) => void;\n /**\n * Overrides the Stream default send message request (Advanced usage only)\n * @param channelId\n * @param messageData Message object\n */\n doSendMessageRequest?: (\n channelId: string,\n messageData: StreamMessage<StreamChatGenerics>,\n ) => Promise<SendMessageAPIResponse<StreamChatGenerics>>;\n /**\n * Overrides the Stream default update message request (Advanced usage only)\n * @param channelId\n * @param updatedMessage UpdatedMessage object\n */\n doUpdateMessageRequest?: (\n channelId: string,\n updatedMessage: Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0],\n ) => ReturnType<StreamChat<StreamChatGenerics>['updateMessage']>;\n /**\n * When true, messageList will be scrolled at first unread message, when opened.\n */\n initialScrollToFirstUnreadMessage?: boolean;\n keyboardBehavior?: KeyboardAvoidingViewProps['behavior'];\n /**\n * Custom wrapper component that handles height adjustment of Channel component when keyboard is opened or dismissed\n * Default component (accepts the same props): [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n *\n * **Example:**\n *\n * ```\n * <Channel\n * channel={channel}\n * KeyboardCompatibleView={(props) => {\n * return (\n * <KeyboardCompatibleView>\n * {props.children}\n * </KeyboardCompatibleView>\n * )\n * }}\n * />\n * ```\n */\n KeyboardCompatibleView?: React.ComponentType<KeyboardAvoidingViewProps>;\n keyboardVerticalOffset?: number;\n /**\n * Custom loading error indicator to override the Stream default\n */\n LoadingErrorIndicator?: React.ComponentType<LoadingErrorProps>;\n maxMessageLength?: number;\n /**\n * Load the channel at a specified message instead of the most recent message.\n */\n messageId?: string;\n newMessageStateUpdateThrottleInterval?: number;\n overrideOwnCapabilities?: Partial<OwnCapabilitiesContextValue>;\n stateUpdateThrottleInterval?: number;\n /**\n * Tells if channel is rendering a thread list\n */\n threadList?: boolean;\n };\n\nconst ChannelWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelPropsWithContext<StreamChatGenerics>>,\n) => {\n const {\n additionalKeyboardAvoidingViewProps,\n additionalTextInputProps,\n additionalTouchableProps,\n allowThreadMessagesInChannel = true,\n AttachButton = AttachButtonDefault,\n Attachment = AttachmentDefault,\n AttachmentActions = AttachmentActionsDefault,\n AudioAttachment = AudioAttachmentDefault,\n AutoCompleteSuggestionHeader = AutoCompleteSuggestionHeaderDefault,\n AutoCompleteSuggestionItem = AutoCompleteSuggestionItemDefault,\n AutoCompleteSuggestionList = AutoCompleteSuggestionListDefault,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n Card = CardDefault,\n CardCover,\n CardFooter,\n CardHeader,\n channel,\n children,\n client,\n CommandsButton = CommandsButtonDefault,\n compressImageQuality,\n CooldownTimer = CooldownTimerDefault,\n DateHeader = DateHeaderDefault,\n deletedMessagesVisibilityType = 'always',\n disableIfFrozenChannel = true,\n disableKeyboardCompatibleView = false,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch = true,\n doDocUploadRequest,\n doImageUploadRequest,\n doMarkReadRequest,\n doSendMessageRequest,\n doUpdateMessageRequest,\n emojiSearchIndex = defaultEmojiSearchIndex,\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n enableMessageGroupingByUser = true,\n enableOfflineSupport,\n enforceUniqueReaction = false,\n FileAttachment = FileAttachmentDefault,\n FileAttachmentGroup = FileAttachmentGroupDefault,\n FileAttachmentIcon = FileIconDefault,\n FileUploadPreview = FileUploadPreviewDefault,\n FlatList = FlatListDefault,\n forceAlignMessages,\n formatDate,\n Gallery = GalleryDefault,\n getMessagesGroupStyles,\n Giphy = GiphyDefault,\n giphyEnabled,\n giphyVersion = 'fixed_height',\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n hasCommands = true,\n // If pickDocument isn't available, default to hiding the file picker\n hasFilePicker = pickDocument !== null,\n hasImagePicker = true,\n hideDateSeparators = false,\n hideStickyDateHeader = false,\n ImageUploadPreview = ImageUploadPreviewDefault,\n initialScrollToFirstUnreadMessage = false,\n initialValue,\n InlineDateSeparator = InlineDateSeparatorDefault,\n InlineUnreadIndicator = InlineUnreadIndicatorDefault,\n Input,\n InputButtons = InputButtonsDefault,\n InputEditingStateHeader = InputEditingStateHeaderDefault,\n InputGiphySearch = InputGiphyCommandInputDefault,\n InputReplyStateHeader = InputReplyStateHeaderDefault,\n isAttachmentEqual,\n keyboardBehavior,\n KeyboardCompatibleView = KeyboardCompatibleViewDefault,\n keyboardVerticalOffset,\n legacyImageViewerSwipeBehaviour = false,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = LoadingIndicatorDefault,\n loadingMore: loadingMoreProp,\n loadingMoreRecent: loadingMoreRecentProp,\n ImageLoadingFailedIndicator = ImageLoadingFailedIndicatorDefault,\n ImageLoadingIndicator = ImageLoadingIndicatorDefault,\n markdownRules,\n maxMessageLength: maxMessageLengthProp,\n maxNumberOfFiles = 10,\n maxTimeBetweenGroupedMessages,\n mentionAllAppUsersEnabled = false,\n mentionAllAppUsersQuery,\n members,\n Message = MessageDefault,\n messageActions,\n MessageAvatar = MessageAvatarDefault,\n MessageBounce = MessageBounceDefault,\n MessageContent = MessageContentDefault,\n messageContentOrder = ['quoted_reply', 'gallery', 'files', 'text', 'attachments'],\n MessageDeleted = MessageDeletedDefault,\n MessageError = MessageErrorDefault,\n MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n VideoThumbnail = VideoThumbnailDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<MessageType<StreamChatGenerics> | undefined>(undefined);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] = useState<ChannelContextValue<StreamChatGenerics>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [thread, setThread] = useState<ThreadContextValue<StreamChatGenerics>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const syncingChannelRef = useRef(false);\n\n /**\n * Flag to track if we know for sure that there are no more recent messages to load.\n * This is necessary to avoid unnecessary api calls to load recent messages on pagination.\n */\n const [hasNoMoreRecentMessagesToLoad, setHasNoMoreRecentMessagesToLoad] = useState(true);\n\n const { prevTargetedMessage, setTargetedMessage, targetedMessage } = useTargetedMessage();\n\n /**\n * If we loaded a channel around message\n * We may have moved latest message to a new message set in that case mark this ref to avoid fetching\n */\n const hasOverlappingRecentMessagesRef = useRef(false);\n\n /**\n * This ref will hold the abort controllers for\n * requests made for uploading images/files in the messageInputContext\n * Its a map of filename to AbortController\n */\n const uploadAbortControllerRef = useRef<Map<string, AbortController>>(new Map());\n\n const channelId = channel?.id || '';\n\n useEffect(() => {\n const initChannel = async () => {\n if (!channel || !shouldSyncChannel || channel.offlineMode) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n let channelLoaded = false;\n if (!channel.initialized) {\n await loadChannel();\n channelLoaded = true;\n }\n\n if (messageId) {\n loadChannelAroundMessage({ messageId });\n } else if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else if (!channelLoaded) {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists, shouldSyncChannel]);\n\n const handleAppBackground = useCallback(() => {\n const channelData = channel.data as\n | Extract<typeof channel.data, { own_capabilities: string[] }>\n | undefined;\n if (channelData?.own_capabilities?.includes('send-typing-events')) {\n channel.sendEvent({\n parent_id: thread?.id,\n type: 'typing.stop',\n } as StreamEvent<StreamChatGenerics>);\n }\n }, [thread?.id, channelId]);\n\n useAppStateListener(undefined, handleAppBackground);\n\n /**\n * CHANNEL CONSTANTS\n */\n const isAdmin = client?.user?.role === 'admin' || channel?.state.membership.role === 'admin';\n\n const isModerator =\n channel?.state.membership.role === 'channel_moderator' ||\n channel?.state.membership.role === 'moderator';\n\n const isOwner = channel?.state.membership.role === 'owner';\n\n /**\n * CHANNEL METHODS\n */\n const markRead: ChannelContextValue<StreamChatGenerics>['markRead'] = useRef(\n throttle(\n () => {\n if (!channel || channel?.disconnected || !clientChannelConfig?.read_events) {\n return;\n }\n\n if (doMarkReadRequest) {\n doMarkReadRequest(channel);\n } else {\n logChatPromiseExecution(channel.markRead(), 'mark read');\n }\n },\n defaultThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyMessagesState = useRef(\n throttle(\n () => {\n if (channel) {\n clearInterval(mergeSetsIntervalRef.current);\n setMessages(channel.state.messages);\n restartSetsMergeFuncRef.current();\n }\n },\n newMessageStateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyTypingState = useRef(\n throttle(\n () => {\n if (channel) {\n setTyping({ ...channel.state.typing });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyReadState = useRef(\n throttle(\n () => {\n if (channel) {\n setRead({ ...channel.state.read });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyChannelState = useRef(\n throttle(\n () => {\n setLoading(false);\n if (channel) {\n setMembers({ ...channel.state.members });\n setMessages([...channel.state.messages]);\n setRead({ ...channel.state.read });\n setTyping({ ...channel.state.typing });\n setWatcherCount(channel.state.watcher_count);\n setWatchers({ ...channel.state.watchers });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n // subscribe to specific channel events\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n if (channel && shouldSyncChannel) {\n channelSubscriptions.push(channel.on('message.new', copyMessagesState));\n channelSubscriptions.push(channel.on('message.read', copyReadState));\n channelSubscriptions.push(channel.on('typing.start', copyTypingState));\n channelSubscriptions.push(channel.on('typing.stop', copyTypingState));\n }\n return () => {\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, shouldSyncChannel]);\n\n // subscribe to the generic all channel event\n useEffect(() => {\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n const ignorableEvents = ['user.watching.start', 'user.watching.stop'];\n if (ignorableEvents.includes(event.type)) return;\n if (shouldSyncChannel) {\n const isTypingEvent = event.type === 'typing.start' || event.type === 'typing.stop';\n if (!isTypingEvent) {\n if (thread?.id) {\n const updatedThreadMessages =\n (thread.id && channel && channel.state.threads[thread.id]) || threadMessages;\n setThreadMessages(updatedThreadMessages);\n }\n\n if (channel && thread?.id && event.message?.id === thread.id) {\n const updatedThread = channel.state.formatMessage(event.message);\n setThread(updatedThread);\n }\n }\n\n // only update channel state if the events are not the previously subscribed useEffect's subscription events\n if (\n channel &&\n channel.initialized &&\n event.type !== 'message.new' &&\n event.type !== 'message.read' &&\n event.type !== 'typing.start' &&\n event.type !== 'typing.stop'\n ) {\n copyChannelState();\n }\n }\n };\n const { unsubscribe } = channel.on(handleEvent);\n return unsubscribe;\n }, [channelId, thread?.id, shouldSyncChannel]);\n\n // subscribe to channel.deleted event\n useEffect(() => {\n const { unsubscribe } = client.on('channel.deleted', (event) => {\n if (event.cid === channel?.cid) {\n setDeleted(true);\n }\n });\n\n return unsubscribe;\n }, [channelId]);\n\n useEffect(() => {\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n if (channel.cid === event.cid) copyChannelState();\n };\n\n const { unsubscribe } = client.on('notification.mark_read', handleEvent);\n return unsubscribe;\n }, []);\n\n const channelQueryCallRef = useRef(\n async (\n queryCall: () => Promise<void>,\n onAfterQueryCall: (() => void) | undefined = undefined,\n // if we are scrolling to a message after the query, pass it here\n scrollToMessageId: string | (() => string | undefined) | undefined = undefined,\n ) => {\n setError(false);\n try {\n clearInterval(mergeSetsIntervalRef.current);\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n const currentMessages = channel.state.messages;\n const hadCurrentLatestMessages =\n currentMessages.length > 0 && currentMessages === channel.state.latestMessages;\n if (typeof scrollToMessageId === 'function') {\n scrollToMessageId = scrollToMessageId();\n }\n\n const scrollToMessageIndex = scrollToMessageId\n ? currentMessages.findIndex(({ id }) => id === scrollToMessageId)\n : -1;\n if (channel && scrollToMessageIndex !== -1) {\n copyChannelState.cancel();\n // We assume that on average user sees 5 messages on screen\n // We dont want new renders to happen while scrolling to the targeted message\n // hence we limit the number of messages to be rendered after the targeted message to 5 - 1 = 4\n // NOTE: we have one drawback here, if there were already a split latest and current message set\n // the previous latest message set will be thrown away as we cannot merge it with the current message set after the target message is set\n const limitAfter = 4;\n const currentLength = currentMessages.length;\n const noOfMessagesAfter = currentLength - scrollToMessageIndex - 1;\n // number of messages are over the limit, limit the length of messages\n if (noOfMessagesAfter > limitAfter) {\n const endIndex = scrollToMessageIndex + limitAfter;\n channel.state.clearMessages();\n channel.state.messages = currentMessages.slice(0, endIndex + 1);\n splitLatestCurrentMessageSetRef.current();\n const restOfMessages = currentMessages.slice(endIndex + 1);\n if (hadCurrentLatestMessages) {\n const latestSet = channel.state.messageSets.find((set) => set.isLatest);\n if (latestSet) {\n latestSet.messages = restOfMessages;\n hasOverlappingRecentMessagesRef.current = true;\n }\n }\n }\n }\n const hasLatestMessages = channel.state.latestMessages.length > 0;\n channel.state.setIsUpToDate(hasLatestMessages);\n setHasNoMoreRecentMessagesToLoad(hasLatestMessages);\n copyChannelState();\n if (scrollToMessageIndex !== -1) {\n // since we need to scroll after immediately do this without throttle\n copyChannelState.flush();\n }\n onAfterQueryCall?.();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n },\n );\n\n /**\n * Loads channel at first unread message.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n let unreadMessageIdToScrollTo: string | undefined;\n // query for messages around the last read date\n return channelQueryCallRef.current(\n async () => {\n const unreadCount = channel.countUnread();\n if (unreadCount === 0) return;\n const isLatestMessageSetShown = !!channel.state.messageSets.find(\n (set) => set.isCurrent && set.isLatest,\n );\n if (isLatestMessageSetShown && unreadCount <= channel.state.messages.length) {\n unreadMessageIdToScrollTo =\n channel.state.messages[channel.state.messages.length - unreadCount].id;\n return;\n }\n const lastReadDate = channel.lastRead();\n\n // if last read date is present we can just fetch messages around that date\n // last read date not being present is an edge case if somewhere the user of SDK deletes the read state (this will usually never happen)\n if (lastReadDate) {\n setLoading(true);\n // get totally 30 messages... max 15 before last read date and max 15 after last read date\n // ref: https://github.com/GetStream/chat/pull/2588\n const res = await channel.query(\n {\n messages: {\n created_at_around: lastReadDate,\n limit: 30,\n },\n watch: true,\n },\n 'new',\n );\n unreadMessageIdToScrollTo = res.messages.find(\n (m) => lastReadDate < (m.created_at ? new Date(m.created_at) : new Date()),\n )?.id;\n if (unreadMessageIdToScrollTo) {\n channel.state.loadMessageIntoState(unreadMessageIdToScrollTo);\n }\n } else {\n await loadLatestMessagesRef.current();\n }\n },\n () => {\n if (unreadMessageIdToScrollTo) {\n restartSetsMergeFuncRef.current();\n }\n },\n () => unreadMessageIdToScrollTo,\n );\n };\n\n /**\n * Loads channel around a specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n */\n const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =\n ({ messageId: messageIdToLoadAround }) =>\n channelQueryCallRef.current(\n async () => {\n setLoading(true);\n if (messageIdToLoadAround) {\n setMessages([]);\n await channel.state.loadMessageIntoState(messageIdToLoadAround);\n const currentMessageSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (currentMessageSet && !currentMessageSet?.isLatest) {\n // if the current message set is not the latest, we will throw away the latest messages\n // in order to attempt to not throw away, will attempt to merge it by loading 25 more messages\n const recentCurrentSetMsgId =\n currentMessageSet.messages[currentMessageSet.messages.length - 1].id;\n await channel.query(\n {\n messages: {\n id_gte: recentCurrentSetMsgId,\n limit: 25,\n },\n },\n 'current',\n );\n // if the gap is more than 25, we will unfortunately have to throw away the latest messages\n }\n } else {\n await loadLatestMessagesRef.current();\n }\n },\n () => {\n if (messageIdToLoadAround) {\n clearInterval(mergeSetsIntervalRef.current); // do not merge sets as we will scroll/highlight to the message\n setTargetedMessage(messageIdToLoadAround);\n }\n },\n messageIdToLoadAround,\n );\n\n useEffect(() => {\n if (!targetedMessage && prevTargetedMessage) {\n // we cleared the merge sets interval to wait for the targeted message to be set\n // now restart it since its done\n restartSetsMergeFuncRef.current();\n }\n }, [targetedMessage]);\n\n /**\n * @deprecated use loadChannelAroundMessage instead\n *\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage'] = ({\n after = 2,\n before = 30,\n messageId,\n }) =>\n channelQueryCallRef.current(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n /**\n * Utility method to mark that current set if latest into two.\n * With an empty latest set\n * This is useful when we know that we dont know the latest messages anymore\n * Or if we are loading a channel around a message\n */\n const splitLatestCurrentMessageSetRef = useRef(() => {\n const currentLatestSet = channel.state.messageSets.find((set) => set.isCurrent && set.isLatest);\n if (!currentLatestSet) return;\n // unmark the current latest set\n currentLatestSet.isLatest = false;\n // create a new set with empty latest messages\n channel.state.messageSets.push({\n isCurrent: false,\n isLatest: true,\n messages: [],\n });\n });\n\n /**\n * Utility method to merge current and latest message set.\n * Returns true if merge was successful, false otherwise.\n */\n const mergeOverlappingMessageSetsRef = useRef((limitToMaxRenderPerBatch = false) => {\n if (hasOverlappingRecentMessagesRef.current) {\n const limit = 30; // 30 is the maxToRenderPerBatch\n // merge current and latest sets\n const latestMessageSet = channel.state.messageSets.find((set) => set.isLatest);\n const currentMessageSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (latestMessageSet && currentMessageSet && latestMessageSet !== currentMessageSet) {\n if (limitToMaxRenderPerBatch && latestMessageSet.messages.length > limit) {\n currentMessageSet.messages = currentMessageSet.messages.concat(\n latestMessageSet.messages.slice(0, limit),\n );\n latestMessageSet.messages = latestMessageSet.messages.slice(limit);\n } else {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n currentMessageSet.messages = currentMessageSet.messages.concat(latestMessageSet.messages);\n currentMessageSet.isLatest = true;\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n }\n return true;\n }\n }\n return false;\n });\n\n const mergeSetsIntervalRef = useRef<NodeJS.Timeout>();\n\n // clear the interval on unmount\n useEffect(\n () => () => {\n clearInterval(mergeSetsIntervalRef.current);\n },\n [],\n );\n\n // if we had split the latest and current message set, we try to merge them back\n const restartSetsMergeFuncRef = useRef(() => {\n clearInterval(mergeSetsIntervalRef.current);\n if (!hasOverlappingRecentMessagesRef.current) return;\n mergeSetsIntervalRef.current = setInterval(() => {\n const currentLength = channel.state.messages.length || 0;\n const didMerge = mergeOverlappingMessageSetsRef.current(true);\n if (didMerge && channel.state.messages.length !== currentLength) {\n setMessages(channel.state.messages);\n }\n }, 1000);\n });\n\n /**\n * Shows the latest messages from the channel state\n * If recent messages are empty, fetches new\n * @param clearLatest If true, clears the latest messages before loading (useful for complete refresh)\n */\n const loadLatestMessagesRef = useRef(async (clearLatest = false) => {\n mergeOverlappingMessageSetsRef.current();\n if (clearLatest) {\n const latestSet = channel.state.messageSets.find((set) => set.isLatest);\n if (latestSet) latestSet.messages = [];\n }\n if (channel.state.latestMessages.length === 0) {\n await channel.query({}, 'latest');\n }\n await channel.state.loadMessageIntoState('latest');\n });\n\n const loadChannel = () =>\n channelQueryCallRef.current(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n } else {\n await channel.state.loadMessageIntoState('latest');\n }\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n setThreadLoadingMore(true);\n try {\n const parentID = thread.id;\n\n const limit = 50;\n channel.state.threads[parentID] = [];\n const queryResponse = await channel.getReplies(parentID, {\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n const { messages } = await channel.getMessagesById([parentID]);\n const [threadMessage] = messages;\n if (threadMessage) {\n const formattedMessage = channel.state.formatMessage(threadMessage);\n setThread(formattedMessage);\n }\n } catch (err) {\n console.warn('Thread loading request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const resyncChannel = async () => {\n if (!channel || syncingChannelRef.current) return;\n if (!channel.initialized) return;\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n syncingChannelRef.current = true;\n\n setError(false);\n try {\n /**\n * Allow a buffer of 30 new messages, so that MessageList won't move its scroll position,\n * giving smooth user experience.\n */\n const state = await channel.watch({\n messages: {\n limit: messages.length + 30,\n },\n });\n\n const oldListTopMessage = messages[0];\n const oldListTopMessageId = messages[0]?.id;\n const oldListBottomMessage = messages[messages.length - 1];\n\n const newListTopMessage = state.messages[0];\n const newListBottomMessage = state.messages[state.messages.length - 1];\n\n if (\n !oldListTopMessage || // previous list was empty\n !oldListBottomMessage || // previous list was empty\n !newListTopMessage || // new list is truncated\n !newListBottomMessage // new list is truncated\n ) {\n /** Channel was truncated */\n channel.state.clearMessages();\n channel.state.setIsUpToDate(true);\n channel.state.addMessagesSorted(state.messages);\n channel.state.addPinnedMessages(state.pinned_messages);\n\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<StreamChatGenerics>);\n\n const failedMessages = messages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n channel.state.setIsUpToDate(true);\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n channel.state.addPinnedMessages(state.pinned_messages);\n setHasNoMoreRecentMessagesToLoad(true);\n setHasMore(true);\n copyChannelState();\n\n if (failedMessages.length) {\n channel.state.addMessagesSorted(failedMessages);\n copyChannelState();\n }\n\n await reloadThread();\n\n if (thread && failedThreadMessages.length) {\n channel.state.addMessagesSorted(failedThreadMessages);\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n }\n\n syncingChannelRef.current = false;\n };\n\n // resync channel is added to ref so that it can be used in useEffect without adding it as a dependency\n const resyncChannelRef = useRef(resyncChannel);\n resyncChannelRef.current = resyncChannel;\n\n useEffect(() => {\n const connectionChangedHandler = () => {\n if (shouldSyncChannel) {\n resyncChannelRef.current();\n }\n };\n let connectionChangedSubscription: ReturnType<ChannelType['on']>;\n\n if (enableOfflineSupport) {\n connectionChangedSubscription = DBSyncManager.onSyncStatusChange((statusChanged) => {\n if (statusChanged) {\n connectionChangedHandler();\n }\n });\n } else {\n connectionChangedSubscription = client.on('connection.changed', (event) => {\n if (event.online) {\n connectionChangedHandler();\n }\n });\n }\n return () => {\n connectionChangedSubscription.unsubscribe();\n };\n }, [enableOfflineSupport, shouldSyncChannel]);\n\n const reloadChannel = () =>\n channelQueryCallRef.current(async () => {\n setLoading(true);\n await loadLatestMessagesRef.current(true);\n setLoading(false);\n channel?.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n });\n\n /**\n * @deprecated\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n channel.state.clearMessages();\n setMessages([]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n // make current set as the latest\n const currentSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (currentSet && !currentSet.isLatest) {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n currentSet.isLatest = true;\n }\n channel.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n } else {\n splitLatestCurrentMessageSetRef.current();\n channel.state.setIsUpToDate(false);\n setHasNoMoreRecentMessagesToLoad(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<StreamChatGenerics>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<StreamChatGenerics>,\n newMessage: MessageResponse<StreamChatGenerics>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<StreamChatGenerics>>) => {\n // Exclude following properties from message.user within message preview,\n // since they could be long arrays and have no meaning as sender of message.\n // Storing such large value within user's table may cause sqlite queries to crash.\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { channel_mutes, devices, mutes, ...messageUser } = client.user;\n\n const preview = {\n __html: text,\n attachments,\n created_at: new Date(),\n html: text,\n id: `${client.userID}-${generateRandomId()}`,\n mentioned_users:\n mentioned_users?.map((userId) => ({\n id: userId,\n })) || [],\n parent_id,\n reactions: [],\n status: MessageStatusTypes.SENDING,\n text,\n type: 'regular',\n user: {\n ...messageUser,\n id: client.userID,\n },\n ...extraFields,\n } as unknown as MessageResponse<StreamChatGenerics>;\n\n /**\n * This is added to the message for local rendering prior to the message\n * being returned from the backend, it is removed when the message is sent\n * as quoted_message is a reserved field.\n */\n if (preview.quoted_message_id) {\n const quotedMessage = messages.find((message) => message.id === preview.quoted_message_id);\n\n preview.quoted_message =\n quotedMessage as MessageResponse<StreamChatGenerics>['quoted_message'];\n }\n return preview;\n };\n\n const uploadPendingAttachments = async (message: MessageResponse<StreamChatGenerics>) => {\n const updatedMessage = { ...message };\n if (updatedMessage.attachments?.length) {\n for (let i = 0; i < updatedMessage.attachments?.length; i++) {\n const attachment = updatedMessage.attachments[i];\n const image = attachment.originalImage;\n const file = attachment.originalFile;\n // check if image_url is not a remote url\n if (\n attachment.type === 'image' &&\n image?.uri &&\n attachment.image_url &&\n isLocalUrl(attachment.image_url)\n ) {\n const filename = image.name ?? image.uri.replace(/^(file:\\/\\/|content:\\/\\/)/, '');\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(filename);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(filename);\n }\n const compressedUri = await compressedImageURI(image, compressImageQuality);\n const contentType = lookup(filename) || 'multipart/form-data';\n\n const uploadResponse = doImageUploadRequest\n ? await doImageUploadRequest(image, channel)\n : await channel.sendImage(compressedUri, filename, contentType);\n\n attachment.image_url = uploadResponse.file;\n delete attachment.originalFile;\n\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n\n if (\n (attachment.type === 'file' ||\n attachment.type === 'audio' ||\n attachment.type === 'video') &&\n attachment.asset_url &&\n isLocalUrl(attachment.asset_url) &&\n file?.uri\n ) {\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(file.name);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(file.name);\n }\n const response = doDocUploadRequest\n ? await doDocUploadRequest(file, channel)\n : await channel.sendFile(file.uri, file.name, file.mimeType);\n attachment.asset_url = response.file;\n if (response.thumb_url) {\n attachment.thumb_url = response.thumb_url;\n }\n delete attachment.originalFile;\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n }\n }\n\n return updatedMessage;\n };\n\n const sendMessageRequest = async (\n message: MessageResponse<StreamChatGenerics>,\n retrying?: boolean,\n ) => {\n try {\n const updatedMessage = await uploadPendingAttachments(message);\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __html,\n attachments,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n created_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n deleted_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n html,\n id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n latest_reactions,\n mentioned_users,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n own_reactions,\n parent_id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n quoted_message,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reaction_counts,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reactions,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n status,\n text,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updated_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n user,\n ...extraFields\n } = updatedMessage;\n if (!channel.id) return;\n\n const mentionedUserIds = mentioned_users?.map((user) => user.id) || [];\n\n const messageData = {\n attachments,\n id,\n mentioned_users: mentionedUserIds,\n parent_id,\n text: patchMessageTextCommand(text ?? '', mentionedUserIds),\n ...extraFields,\n } as StreamMessage<StreamChatGenerics>;\n\n let messageResponse = {} as SendMessageAPIResponse<StreamChatGenerics>;\n if (doSendMessageRequest) {\n messageResponse = await doSendMessageRequest(channel?.cid || '', messageData);\n } else if (channel) {\n messageResponse = await channel.sendMessage(messageData);\n }\n\n if (messageResponse.message) {\n messageResponse.message.status = MessageStatusTypes.RECEIVED;\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...messageResponse.message, cid: channel.cid },\n });\n }\n if (retrying) {\n replaceMessage(message, messageResponse.message);\n } else {\n updateMessage(messageResponse.message);\n }\n }\n } catch (err) {\n console.log(err);\n message.status = MessageStatusTypes.FAILED;\n updateMessage({ ...message, cid: channel.cid });\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...message, cid: channel.cid },\n });\n }\n }\n };\n\n const sendMessage: InputMessageInputContextValue<StreamChatGenerics>['sendMessage'] = async (\n message,\n ) => {\n if (channel?.state?.filterErrorMessages) {\n channel.state.filterErrorMessages();\n }\n\n const messagePreview = createMessagePreview({\n ...message,\n attachments: message.attachments || [],\n });\n\n mergeOverlappingMessageSetsRef.current();\n\n if (!channel?.state.isUpToDate) {\n await reloadChannel();\n }\n\n updateMessage(messagePreview, {\n commands: [],\n messageInput: '',\n });\n\n if (enableOfflineSupport) {\n // While sending a message, we add the message to local db with failed status, so that\n // if app gets closed before message gets sent and next time user opens the app\n // then user can see that message in failed state and can retry.\n // If succesfull, it will be updated with received status.\n dbApi.upsertMessages({\n messages: [{ ...messagePreview, cid: channel.cid, status: MessageStatusTypes.FAILED }],\n });\n }\n\n await sendMessageRequest(messagePreview);\n };\n\n const retrySendMessage: MessagesContextValue<StreamChatGenerics>['retrySendMessage'] = async (\n message,\n ) => {\n const statusPendingMessage = {\n ...message,\n status: MessageStatusTypes.SENDING,\n };\n\n const messageWithoutReservedFields = removeReservedFields(statusPendingMessage);\n\n // For bounced messages, we don't need to update the message, instead always send a new message.\n if (!isBouncedMessage(message)) {\n updateMessage(messageWithoutReservedFields as MessageResponse<StreamChatGenerics>);\n }\n\n await sendMessageRequest(\n messageWithoutReservedFields as MessageResponse<StreamChatGenerics>,\n true,\n );\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreFinished = useRef(\n debounce(\n (updatedHasMore: boolean, newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoading(false);\n setLoadingMore(false);\n setError(false);\n setHasMore(updatedHasMore);\n setMessages(newMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n /**\n * This function loads more messages before the first message in current channel state.\n */\n const loadMore = useCallback<PaginatedMessageListContextValue<StreamChatGenerics>['loadMore']>(\n async (limit = 20) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n\n const currentMessages = channel.state.messages;\n\n if (!currentMessages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = currentMessages && currentMessages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n setLoadingMore(true);\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore]\n * and only those deps should be used here because of that\n */\n [channelId, hasMore, loadingMore],\n );\n\n /**\n * This function loads more messages after the most recent message in current channel state.\n */\n const loadMoreRecent = useCallback<\n PaginatedMessageListContextValue<StreamChatGenerics>['loadMoreRecent']\n >(\n async (limit = 5) => {\n const latestMessageSet = channel.state.messageSets.find((set) => set.isLatest);\n const latestLengthBeforeMerge = latestMessageSet?.messages.length || 0;\n const didMerge = mergeOverlappingMessageSetsRef.current(true);\n if (didMerge) {\n if (latestMessageSet && latestLengthBeforeMerge >= limit) {\n setLoadingMoreRecent(true);\n channel.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n loadMoreRecentFinished(channel.state.messages);\n restartSetsMergeFuncRef.current();\n return;\n }\n }\n if (channel.state.isUpToDate) {\n setLoadingMoreRecent(false);\n return;\n }\n const currentMessages = channel.state.messages;\n const recentMessage = currentMessages[currentMessages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n setLoadingMoreRecent(true);\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: {\n id_gte: recentMessage.id,\n limit,\n },\n watch: true,\n });\n const gotAllRecentMessages = queryResponse.messages.length < limit;\n const currentSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (gotAllRecentMessages && currentSet && !currentSet.isLatest) {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n // make current set as the latest\n currentSet.isLatest = true;\n }\n channel.state.setIsUpToDate(gotAllRecentMessages);\n setHasNoMoreRecentMessagesToLoad(gotAllRecentMessages);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMoreRecent(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore, hasNoMoreRecentMessagesToLoad]\n * and and only those deps should be used here because of that\n */\n [channelId, hasNoMoreRecentMessagesToLoad],\n );\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreRecentFinished = useRef(\n debounce(\n (newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoadingMoreRecent(false);\n setMessages(newMessages);\n setError(false);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const editMessage: InputMessageInputContextValue<StreamChatGenerics>['editMessage'] = (\n updatedMessage,\n ) =>\n doUpdateMessageRequest\n ? doUpdateMessageRequest(channel?.cid || '', updatedMessage)\n : client.updateMessage(updatedMessage);\n\n const setEditingState: MessagesContextValue<StreamChatGenerics>['setEditingState'] = (\n message,\n ) => {\n clearQuotedMessageState();\n setEditing(message);\n };\n\n const setQuotedMessageState: MessagesContextValue<StreamChatGenerics>['setQuotedMessageState'] = (\n messageOrBoolean,\n ) => {\n setQuotedMessage(messageOrBoolean);\n };\n\n const clearEditingState: InputMessageInputContextValue<StreamChatGenerics>['clearEditingState'] =\n () => setEditing(undefined);\n\n const clearQuotedMessageState: InputMessageInputContextValue<StreamChatGenerics>['clearQuotedMessageState'] =\n () => setQuotedMessage(false);\n\n /**\n * Removes the message from local state\n */\n const removeMessage: MessagesContextValue<StreamChatGenerics>['removeMessage'] = (message) => {\n if (channel) {\n channel.state.removeMessage(message);\n setMessages(channel.state.messages);\n if (thread) {\n setThreadMessages(channel.state.threads[thread.id] || []);\n }\n }\n\n if (enableOfflineSupport) {\n dbApi.deleteMessage({\n id: message.id,\n });\n }\n };\n\n const sendReaction = async (type: string, messageId: string) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass<StreamChatGenerics>['sendReaction']> = [\n messageId,\n {\n type,\n } as Reaction<StreamChatGenerics>,\n { enforce_unique: enforceUniqueReaction },\n ];\n\n if (!enableOfflineSupport) {\n await channel.sendReaction(...payload);\n return;\n }\n\n addReactionToLocalState<StreamChatGenerics>({\n channel,\n enforceUniqueReaction,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'send-reaction',\n },\n });\n };\n const deleteMessage: MessagesContextValue<StreamChatGenerics>['deleteMessage'] = async (\n message,\n ) => {\n if (!channel.id) {\n throw new Error('Channel has not been initialized yet');\n }\n\n if (!enableOfflineSupport) {\n if (message.status === MessageStatusTypes.FAILED) {\n removeMessage(message);\n return;\n }\n await client.deleteMessage(message.id);\n return;\n }\n\n if (message.status === MessageStatusTypes.FAILED) {\n DBSyncManager.dropPendingTasks({ messageId: message.id });\n removeMessage(message);\n } else {\n updateMessage({\n ...message,\n cid: channel.cid,\n deleted_at: new Date().toISOString(),\n type: 'deleted',\n });\n\n const data = await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId: message.id,\n payload: [message.id],\n type: 'delete-message',\n },\n });\n\n if (data?.message) {\n updateMessage({ ...data.message });\n }\n }\n };\n\n const deleteReaction: MessagesContextValue<StreamChatGenerics>['deleteReaction'] = async (\n type: string,\n messageId: string,\n ) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass['deleteReaction']> = [messageId, type];\n\n if (!enableOfflineSupport) {\n await channel.deleteReaction(...payload);\n return;\n }\n\n removeReactionFromLocalState({\n channel,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'delete-reaction',\n },\n });\n };\n\n /**\n * THREAD METHODS\n */\n const openThread: ThreadContextValue<StreamChatGenerics>['openThread'] = useCallback(\n (message) => {\n const newThreadMessages = message?.id ? channel?.state?.threads[message.id] || [] : [];\n setThread(message);\n setThreadMessages(newThreadMessages);\n },\n [setThread, setThreadMessages],\n );\n\n const closeThread: ThreadContextValue<StreamChatGenerics>['closeThread'] = useCallback(() => {\n setThread(null);\n setThreadMessages([]);\n }, [setThread, setThreadMessages]);\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreThreadFinished = useRef(\n debounce(\n (\n newThreadHasMore: boolean,\n updatedThreadMessages: ChannelState<StreamChatGenerics>['threads'][string],\n ) => {\n setThreadHasMore(newThreadHasMore);\n setThreadLoadingMore(false);\n setThreadMessages(updatedThreadMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMoreThread: ThreadContextValue<StreamChatGenerics>['loadMoreThread'] = async () => {\n if (threadLoadingMore || !thread?.id) {\n return;\n }\n setThreadLoadingMore(true);\n\n try {\n if (channel) {\n const parentID = thread.id;\n\n /**\n * In the channel is re-initializing, then threads may get wiped out during the process\n * (check `addMessagesSorted` method on channel.state). In those cases, we still want to\n * preserve the messages on active thread, so lets simply copy messages from UI state to\n * `channel.state`.\n */\n channel.state.threads[parentID] = threadMessages;\n const oldestMessageID = threadMessages?.[0]?.id;\n\n const limit = 50;\n const queryResponse = await channel.getReplies(parentID, {\n id_lt: oldestMessageID,\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const disabledValue = useMemo(\n () => !!channel?.data?.frozen && disableIfFrozenChannel,\n [channel.data?.frozen, disableIfFrozenChannel],\n );\n\n const ownCapabilitiesContext = useCreateOwnCapabilitiesContext({\n channel,\n overrideCapabilities: overrideOwnCapabilities,\n });\n\n const channelContext = useCreateChannelContext({\n channel,\n disabled: disabledValue,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled:\n giphyEnabled ??\n !!(clientChannelConfig?.commands || [])?.some((command) => command.name === 'giphy'),\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isChannelActive: shouldSyncChannel,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAroundMessage,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n threadList,\n uploadAbortControllerRef,\n watcherCount,\n watchers,\n });\n\n const inputMessageInputContext = useCreateInputMessageInputContext<StreamChatGenerics>({\n additionalTextInputProps,\n AttachButton,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n disabled: disabledValue,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n emojiSearchIndex,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength: maxMessageLengthProp ?? clientChannelConfig?.max_message_length ?? undefined,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n });\n\n const messageListContext = useCreatePaginatedMessageListContext({\n channelId,\n hasMore,\n hasNoMoreRecentMessagesToLoad,\n loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,\n loadingMoreRecent:\n loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,\n loadMore,\n loadMoreRecent,\n messages,\n setLoadingMore,\n setLoadingMoreRecent,\n });\n\n const messagesContext = useCreateMessagesContext({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n AudioAttachment,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n deleteMessage,\n deleteReaction,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n getMessagesGroupStyles,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n initialScrollToFirstUnreadMessage: !messageId && initialScrollToFirstUnreadMessage, // when messageId is set, we scroll to the messageId instead of first unread\n InlineDateSeparator,\n InlineUnreadIndicator,\n isAttachmentEqual,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageBounce,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageError,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n VideoThumbnail,\n });\n\n const suggestionsContext = {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n };\n\n const threadContext = useCreateThreadContext({\n allowThreadMessagesInChannel,\n closeThread,\n loadMoreThread,\n openThread,\n reloadThread,\n setThreadLoadingMore,\n thread,\n threadHasMore,\n threadLoadingMore,\n threadMessages,\n });\n\n const typingContext = useCreateTypingContext({\n typing,\n });\n\n // TODO: replace the null view with appropriate message. Currently this is waiting a design decision.\n if (deleted) return null;\n\n if (!channel || (error && messages.length === 0)) {\n return <LoadingErrorIndicator error={error} listType='message' retry={reloadChannel} />;\n }\n\n if (!channel?.cid || !channel.watch) {\n return (\n <Text style={[styles.selectChannel, { color: black }, selectChannel]} testID='no-channel'>\n {t('Please select a channel first')}\n </Text>\n );\n }\n\n return (\n <KeyboardCompatibleView\n behavior={keyboardBehavior}\n enabled={!disableKeyboardCompatibleView}\n keyboardVerticalOffset={keyboardVerticalOffset}\n {...additionalKeyboardAvoidingViewProps}\n >\n <ChannelProvider<StreamChatGenerics> value={channelContext}>\n <OwnCapabilitiesProvider value={ownCapabilitiesContext}>\n <TypingProvider<StreamChatGenerics> value={typingContext}>\n <PaginatedMessageListProvider<StreamChatGenerics> value={messageListContext}>\n <MessagesProvider<StreamChatGenerics> value={messagesContext}>\n <ThreadProvider<StreamChatGenerics> value={threadContext}>\n <SuggestionsProvider<StreamChatGenerics> value={suggestionsContext}>\n <MessageInputProvider<StreamChatGenerics> value={inputMessageInputContext}>\n <View style={{ height: '100%' }}>{children}</View>\n </MessageInputProvider>\n </SuggestionsProvider>\n </ThreadProvider>\n </MessagesProvider>\n </PaginatedMessageListProvider>\n </TypingProvider>\n </OwnCapabilitiesProvider>\n </ChannelProvider>\n </KeyboardCompatibleView>\n );\n};\n\nexport type ChannelProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>;\n\n/**\n *\n * The wrapper component for a chat channel. Channel needs to be placed inside a Chat component\n * to receive the StreamChat client instance. MessageList, Thread, and MessageInput must be\n * children of the Channel component to receive the ChannelContext.\n *\n * @example ./Channel.md\n */\nexport const Channel = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelProps<StreamChatGenerics>>,\n) => {\n const { client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n const shouldSyncChannel = props.thread?.id ? !!props.threadList : true;\n\n const {\n members,\n messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n } = useChannelState<StreamChatGenerics>(\n props.channel,\n props.threadList ? props.thread?.id : undefined,\n );\n\n return (\n <ChannelWithContext<StreamChatGenerics>\n {...{\n client,\n enableOfflineSupport,\n t,\n }}\n {...props}\n shouldSyncChannel={shouldSyncChannel}\n {...{\n members,\n messages: props.messages || messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n }}\n />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_debounce","_interopRequireDefault","_throttle","_mimeTypes","_streamChat","_useCreateChannelContext","_useCreateInputMessageInputContext","_useCreateMessagesContext","_useCreateOwnCapabilitiesContext","_useCreatePaginatedMessageListContext","_useCreateThreadContext","_useCreateTypingContext","_useTargetedMessage2","_ChannelContext","_useChannelState2","_ChatContext","_MessageInputContext","_MessagesContext","_OwnCapabilitiesContext","_PaginatedMessageListContext","_SuggestionsContext","_ThemeContext","_ThreadContext","_TranslationContext","_TypingContext","_useAppStateListener","_icons","_native","dbApi","_addReactionToLocalState","_compressImage","_DBSyncManager","_patchMessageTextCommand","_removeReactionFromLocalState","_removeReservedFields","_utils","_Attachment","_AttachmentActions","_AudioAttachment","_Card","_FileAttachment","_FileAttachmentGroup","_FileIcon","_Gallery","_Giphy","_ImageLoadingFailedIndicator","_ImageLoadingIndicator","_VideoThumbnail","_AutoCompleteSuggestionHeader","_AutoCompleteSuggestionItem","_AutoCompleteSuggestionList","_EmptyStateIndicator","_LoadingErrorIndicator","_LoadingIndicator","_KeyboardCompatibleView","_Message","_MessageAvatar","_MessageBounce","_MessageContent","_MessageDeleted","_MessageError","_MessageFooter","_MessagePinnedHeader","_MessageReplies","_MessageRepliesAvatars","_MessageSimple","_MessageStatus","_ReactionList","_AttachButton","_CommandsButton","_InputEditingStateHeader","_InputGiphySearch","_InputReplyStateHeader","_CooldownTimer","_FileUploadPreview","_ImageUploadPreview","_InputButtons","_MoreOptionsButton","_SendButton","_SendMessageDisallowedIndicator","_ShowThreadMessageInChannelButton","_UploadProgressIndicator","_DateHeader","_InlineDateSeparator","_InlineUnreadIndicator","_MessageList","_MessageSystem","_NetworkDownIndicator","_ScrollToBottomButton","_TypingIndicator","_TypingIndicatorContainer","_OverlayReactionList","_Reply","_excluded","_excluded2","_excluded3","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","selectChannel","fontWeight","padding","reactionData","Icon","LoveReaction","type","ThumbsUpReaction","ThumbsDownReaction","LOLReaction","WutReaction","exports","scrollToFirstUnreadThreshold","defaultThrottleInterval","defaultDebounceInterval","throttleOptions","leading","trailing","debounceOptions","ChannelWithContext","props","_client$user","_channel$data2","_ref29","_ref30","additionalKeyboardAvoidingViewProps","additionalTextInputProps","additionalTouchableProps","_props$allowThreadMes","allowThreadMessagesInChannel","_props$AttachButton","AttachButton","AttachButtonDefault","_props$Attachment","Attachment","AttachmentDefault","_props$AttachmentActi","AttachmentActions","AttachmentActionsDefault","_props$AudioAttachmen","AudioAttachment","AudioAttachmentDefault","_props$AutoCompleteSu","AutoCompleteSuggestionHeader","AutoCompleteSuggestionHeaderDefault","_props$AutoCompleteSu2","AutoCompleteSuggestionItem","AutoCompleteSuggestionItemDefault","_props$AutoCompleteSu3","AutoCompleteSuggestionList","AutoCompleteSuggestionListDefault","autoCompleteSuggestionsLimit","autoCompleteTriggerSettings","_props$Card","Card","CardDefault","CardCover","CardFooter","CardHeader","channel","children","client","_props$CommandsButton","CommandsButton","CommandsButtonDefault","compressImageQuality","_props$CooldownTimer","CooldownTimer","CooldownTimerDefault","_props$DateHeader","DateHeader","DateHeaderDefault","_props$deletedMessage","deletedMessagesVisibilityType","_props$disableIfFroze","disableIfFrozenChannel","_props$disableKeyboar","disableKeyboardCompatibleView","disableTypingIndicator","_props$dismissKeyboar","dismissKeyboardOnMessageTouch","doDocUploadRequest","doImageUploadRequest","doMarkReadRequest","doSendMessageRequest","doUpdateMessageRequest","_props$emojiSearchInd","emojiSearchIndex","defaultEmojiSearchIndex","_props$EmptyStateIndi","EmptyStateIndicator","EmptyStateIndicatorDefault","_props$enableMessageG","enableMessageGroupingByUser","enableOfflineSupport","_props$enforceUniqueR","enforceUniqueReaction","_props$FileAttachment","FileAttachment","FileAttachmentDefault","_props$FileAttachment2","FileAttachmentGroup","FileAttachmentGroupDefault","_props$FileAttachment3","FileAttachmentIcon","FileIconDefault","_props$FileUploadPrev","FileUploadPreview","FileUploadPreviewDefault","_props$FlatList","FlatList","FlatListDefault","forceAlignMessages","formatDate","_props$Gallery","Gallery","GalleryDefault","getMessagesGroupStyles","_props$Giphy","Giphy","GiphyDefault","giphyEnabled","_props$giphyVersion","giphyVersion","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReaction","handleRetry","handleThreadReply","_props$hasCommands","hasCommands","_props$hasFilePicker","hasFilePicker","pickDocument","_props$hasImagePicker","hasImagePicker","_props$hideDateSepara","hideDateSeparators","_props$hideStickyDate","hideStickyDateHeader","_props$ImageUploadPre","ImageUploadPreview","ImageUploadPreviewDefault","_props$initialScrollT","initialScrollToFirstUnreadMessage","initialValue","_props$InlineDateSepa","InlineDateSeparator","InlineDateSeparatorDefault","_props$InlineUnreadIn","InlineUnreadIndicator","InlineUnreadIndicatorDefault","Input","_props$InputButtons","InputButtons","InputButtonsDefault","_props$InputEditingSt","InputEditingStateHeader","InputEditingStateHeaderDefault","_props$InputGiphySear","InputGiphySearch","InputGiphyCommandInputDefault","_props$InputReplyStat","InputReplyStateHeader","InputReplyStateHeaderDefault","isAttachmentEqual","keyboardBehavior","_props$KeyboardCompat","KeyboardCompatibleView","KeyboardCompatibleViewDefault","keyboardVerticalOffset","_props$legacyImageVie","legacyImageViewerSwipeBehaviour","_props$LoadingErrorIn","LoadingErrorIndicator","LoadingErrorIndicatorDefault","_props$LoadingIndicat","LoadingIndicator","LoadingIndicatorDefault","loadingMoreProp","loadingMore","loadingMoreRecentProp","loadingMoreRecent","_props$ImageLoadingFa","ImageLoadingFailedIndicator","ImageLoadingFailedIndicatorDefault","_props$ImageLoadingIn","ImageLoadingIndicator","ImageLoadingIndicatorDefault","markdownRules","maxMessageLengthProp","maxMessageLength","_props$maxNumberOfFil","maxNumberOfFiles","maxTimeBetweenGroupedMessages","_props$mentionAllAppU","mentionAllAppUsersEnabled","mentionAllAppUsersQuery","members","_props$Message","Message","MessageDefault","messageActions","_props$MessageAvatar","MessageAvatar","MessageAvatarDefault","_props$MessageBounce","MessageBounce","MessageBounceDefault","_props$MessageContent","MessageContent","MessageContentDefault","_props$messageContent","messageContentOrder","_props$MessageDeleted","MessageDeleted","MessageDeletedDefault","_props$MessageError","MessageError","MessageErrorDefault","_props$MessageFooter","MessageFooter","MessageFooterDefault","MessageHeader","messageId","_props$MessageList","MessageList","MessageListDefault","_props$MessagePinnedH","MessagePinnedHeader","MessagePinnedHeaderDefault","_props$MessageReplies","MessageReplies","MessageRepliesDefault","_props$MessageReplies2","MessageRepliesAvatars","MessageRepliesAvatarsDefault","messages","_props$MessageSimple","MessageSimple","MessageSimpleDefault","_props$MessageStatus","MessageStatus","MessageStatusDefault","_props$MessageSystem","MessageSystem","MessageSystemDefault","MessageText","_props$MoreOptionsBut","MoreOptionsButton","MoreOptionsButtonDefault","myMessageTheme","_props$newMessageStat","newMessageStateUpdateThrottleInterval","_props$NetworkDownInd","NetworkDownIndicator","NetworkDownIndicatorDefault","_props$numberOfLines","numberOfLines","onChangeText","onLongPressMessage","overrideOwnCapabilities","onPressInMessage","onPressMessage","_props$OverlayReactio","OverlayReactionList","OverlayReactionListDefault","_props$ReactionList","ReactionList","ReactionListDefault","read","_props$Reply","Reply","ReplyDefault","_props$ScrollToBottom","ScrollToBottomButton","ScrollToBottomButtonDefault","selectReaction","_props$SendButton","SendButton","SendButtonDefault","_props$SendMessageDis","SendMessageDisallowedIndicator","SendMessageDisallowedIndicatorDefault","_props$sendImageAsync","sendImageAsync","setInputRef","setMembers","setMessages","setRead","setThreadMessages","setTyping","setWatcherCount","setWatchers","shouldSyncChannel","_props$ShowThreadMess","ShowThreadMessageInChannelButton","ShowThreadMessageInChannelButtonDefault","_props$stateUpdateThr","stateUpdateThrottleInterval","StickyHeader","_props$supportedReact","supportedReactions","t","threadProps","thread","threadList","threadMessages","typing","_props$TypingIndicato","TypingIndicator","TypingIndicatorDefault","_props$TypingIndicato2","TypingIndicatorContainer","TypingIndicatorContainerDefault","_props$UploadProgress","UploadProgressIndicator","UploadProgressIndicatorDefault","_props$UrlPreview","UrlPreview","_props$VideoThumbnail","VideoThumbnail","VideoThumbnailDefault","watcherCount","watchers","_useTheme","useTheme","_useTheme$theme","theme","black","colors","_useState","useState","_useState2","_slicedToArray2","deleted","setDeleted","_useState3","undefined","_useState4","editing","setEditing","_useState5","_useState6","error","setError","_useState7","_useState8","hasMore","setHasMore","_useState9","_useState10","lastRead","setLastRead","_useState11","state","length","_useState12","loading","setLoading","_useState13","_useState14","setLoadingMore","_useState15","_useState16","setLoadingMoreRecent","_useState17","_useState18","quotedMessage","setQuotedMessage","_useState19","_useState20","setThread","_useState21","_useState22","threadHasMore","setThreadHasMore","_useState23","_useState24","threadLoadingMore","setThreadLoadingMore","syncingChannelRef","useRef","_useState25","_useState26","hasNoMoreRecentMessagesToLoad","setHasNoMoreRecentMessagesToLoad","_useTargetedMessage","useTargetedMessage","prevTargetedMessage","setTargetedMessage","targetedMessage","hasOverlappingRecentMessagesRef","uploadAbortControllerRef","Map","channelId","id","useEffect","initChannel","_ref","_asyncToGenerator2","_regenerator","mark","_callee","channelLoaded","wrap","_callee$","_context","prev","next","offlineMode","abrupt","initialized","loadChannel","loadChannelAroundMessage","countUnread","loadChannelAtFirstUnreadMessage","stop","apply","arguments","copyChannelState","cancel","copyReadState","copyTypingState","loadMoreFinished","loadMoreThreadFinished","threadPropsExists","_channel$state$thread","threads","handleAppBackground","useCallback","_channelData$own_capa","channelData","data","own_capabilities","includes","sendEvent","parent_id","useAppStateListener","isAdmin","user","role","membership","isModerator","isOwner","markRead","throttle","disconnected","clientChannelConfig","read_events","logChatPromiseExecution","current","copyMessagesState","clearInterval","mergeSetsIntervalRef","restartSetsMergeFuncRef","_extends2","_toConsumableArray2","watcher_count","channelSubscriptions","push","on","forEach","s","unsubscribe","handleEvent","event","ignorableEvents","isTypingEvent","_event$message","updatedThreadMessages","message","updatedThread","formatMessage","_channel$on","_client$on","cid","_client$on2","channelQueryCallRef","_ref2","_callee2","queryCall","onAfterQueryCall","scrollToMessageId","currentMessages","hadCurrentLatestMessages","scrollToMessageIndex","limitAfter","currentLength","noOfMessagesAfter","endIndex","restOfMessages","latestSet","hasLatestMessages","_args2","_callee2$","_context2","Date","latestMessages","findIndex","_ref3","clearMessages","slice","splitLatestCurrentMessageSetRef","messageSets","find","isLatest","setIsUpToDate","flush","t0","Error","_x","unreadMessageIdToScrollTo","_callee3","unreadCount","isLatestMessageSetShown","lastReadDate","_res$messages$find","res","_callee3$","_context3","isCurrent","query","created_at_around","limit","watch","sent","m","created_at","loadMessageIntoState","loadLatestMessagesRef","_ref5","messageIdToLoadAround","_callee4","currentMessageSet","recentCurrentSetMsgId","_callee4$","_context4","id_gte","loadChannelAtMessage","_ref7","_ref7$after","after","_ref7$before","before","_callee5","_callee5$","_context5","queryAtMessage","currentLatestSet","mergeOverlappingMessageSetsRef","limitToMaxRenderPerBatch","latestMessageSet","concat","filter","_callee6","clearLatest","_args6","_callee6$","_context6","_callee7","_callee7$","_context7","isUpToDate","reloadThread","_ref11","_callee8","parentID","queryResponse","updatedHasMore","_yield$channel$getMes","_messages","_messages2","threadMessage","formattedMessage","_callee8$","_context8","getReplies","getMessagesById","console","warn","resyncChannel","_ref12","_callee9","_messages$","oldListTopMessage","oldListTopMessageId","oldListBottomMessage","newListTopMessage","newListBottomMessage","parseMessage","failedMessages","failedThreadMessages","oldListTopMessageCreatedAt","oldListBottomMessageCreatedAt","newListTopMessageCreatedAt","newListBottomMessageCreatedAt","finalMessages","index","_callee9$","_context9","addMessagesSorted","addPinnedMessages","pinned_messages","_message$pinned_at","_message$updated_at","toString","pinned_at","updated_at","status","MessageStatusTypes","FAILED","map","resyncChannelRef","connectionChangedHandler","connectionChangedSubscription","DBSyncManager","onSyncStatusChange","statusChanged","online","reloadChannel","_callee10","_callee10$","_context10","_ref15","_callee11","_ref14","_ref14$after","_ref14$before","_callee11$","_context11","queryBeforeMessage","queryAfterMessage","_x2","_ref16","_callee12","_args12","_callee12$","_context12","id_lt","_x3","_ref17","_callee13","currentSet","_args13","_callee13$","_context13","_x4","getChannelConfigSafely","getConfig","_","updateMessage","updatedMessage","extraState","addMessageSorted","replaceMessage","oldMessage","newMessage","removeMessage","createMessagePreview","_ref18","attachments","mentioned_users","text","extraFields","_objectWithoutProperties2","_client$user2","channel_mutes","devices","mutes","messageUser","preview","__html","html","userID","generateRandomId","userId","reactions","SENDING","quoted_message_id","quoted_message","uploadPendingAttachments","_ref19","_callee14","_updatedMessage$attac","i","_updatedMessage$attac2","attachment","image","file","_image$name","filename","controller","compressedUri","contentType","uploadResponse","_controller","response","_callee14$","_context14","originalImage","originalFile","uri","image_url","isLocalUrl","name","replace","abort","compressedImageURI","lookup","sendImage","asset_url","t1","sendFile","mimeType","thumb_url","_x5","sendMessageRequest","_ref20","_callee15","retrying","_updatedMessage","deleted_at","latest_reactions","own_reactions","reaction_counts","mentionedUserIds","_messageData","messageResponse","_callee15$","_context15","messageData","patchMessageTextCommand","sendMessage","RECEIVED","log","_x6","_x7","_ref21","_callee16","_channel$state","messagePreview","_callee16$","_context16","filterErrorMessages","commands","messageInput","upsertMessages","_x8","retrySendMessage","_ref22","_callee17","statusPendingMessage","messageWithoutReservedFields","_callee17$","_context17","removeReservedFields","isBouncedMessage","_x9","debounce","newMessages","loadMore","_callee18","oldestMessage","oldestID","_args18","_callee18$","_context18","loadMoreRecent","_callee19","latestLengthBeforeMerge","didMerge","recentMessage","gotAllRecentMessages","_args19","_callee19$","_context19","loadMoreRecentFinished","editMessage","setEditingState","clearQuotedMessageState","setQuotedMessageState","messageOrBoolean","clearEditingState","deleteMessage","sendReaction","_ref25","_callee20","payload","_callee20$","_context20","enforce_unique","addReactionToLocalState","reactionType","queueTask","task","channelType","_x10","_x11","_ref26","_callee21","_data","_callee21$","_context21","dropPendingTasks","toISOString","_x12","deleteReaction","_ref27","_callee22","_callee22$","_context22","removeReactionFromLocalState","_x13","_x14","openThread","_channel$state2","newThreadMessages","closeThread","newThreadHasMore","loadMoreThread","_ref28","_callee23","_threadMessages$","oldestMessageID","_callee23$","_context23","disabledValue","useMemo","_channel$data","frozen","ownCapabilitiesContext","useCreateOwnCapabilitiesContext","overrideCapabilities","channelContext","useCreateChannelContext","disabled","some","command","isChannelActive","inputMessageInputContext","useCreateInputMessageInputContext","max_message_length","messageListContext","useCreatePaginatedMessageListContext","messagesContext","useCreateMessagesContext","suggestionsContext","threadContext","useCreateThreadContext","typingContext","useCreateTypingContext","createElement","listType","retry","__self","__source","fileName","lineNumber","columnNumber","Text","style","color","testID","behavior","enabled","ChannelProvider","value","OwnCapabilitiesProvider","TypingProvider","PaginatedMessageListProvider","MessagesProvider","ThreadProvider","SuggestionsProvider","MessageInputProvider","View","height","Channel","_props$thread","_props$thread2","_useChatContext","useChatContext","_useTranslationContex","useTranslationContext","_useChannelState","useChannelState"],"sources":["Channel.tsx"],"sourcesContent":["import React, { PropsWithChildren, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { KeyboardAvoidingViewProps, StyleSheet, Text, View } from 'react-native';\n\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\n\nimport { lookup } from 'mime-types';\nimport {\n Channel as ChannelClass,\n ChannelState,\n Channel as ChannelType,\n EventHandler,\n logChatPromiseExecution,\n MessageResponse,\n Reaction,\n SendMessageAPIResponse,\n StreamChat,\n Event as StreamEvent,\n Message as StreamMessage,\n} from 'stream-chat';\n\nimport { useCreateChannelContext } from './hooks/useCreateChannelContext';\n\nimport { useCreateInputMessageInputContext } from './hooks/useCreateInputMessageInputContext';\n\nimport { useCreateMessagesContext } from './hooks/useCreateMessagesContext';\n\nimport { useCreateOwnCapabilitiesContext } from './hooks/useCreateOwnCapabilitiesContext';\nimport { useCreatePaginatedMessageListContext } from './hooks/useCreatePaginatedMessageListContext';\n\nimport { useCreateThreadContext } from './hooks/useCreateThreadContext';\n\nimport { useCreateTypingContext } from './hooks/useCreateTypingContext';\n\nimport { useTargetedMessage } from './hooks/useTargetedMessage';\n\nimport { ChannelContextValue, ChannelProvider } from '../../contexts/channelContext/ChannelContext';\nimport type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';\nimport { useChannelState } from '../../contexts/channelsStateContext/useChannelState';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n InputMessageInputContextValue,\n MessageInputProvider,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n MessagesProvider,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OwnCapabilitiesContextValue,\n OwnCapabilitiesProvider,\n} from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport {\n PaginatedMessageListContextValue,\n PaginatedMessageListProvider,\n} from '../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport {\n SuggestionsContextValue,\n SuggestionsProvider,\n} from '../../contexts/suggestionsContext/SuggestionsContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, ThreadProvider } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\nimport { TypingProvider } from '../../contexts/typingContext/TypingContext';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nimport {\n LOLReaction,\n LoveReaction,\n ThumbsDownReaction,\n ThumbsUpReaction,\n WutReaction,\n} from '../../icons';\nimport { FlatList as FlatListDefault, pickDocument } from '../../native';\nimport * as dbApi from '../../store/apis';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { addReactionToLocalState } from '../../utils/addReactionToLocalState';\nimport { compressedImageURI } from '../../utils/compressImage';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\nimport { patchMessageTextCommand } from '../../utils/patchMessageTextCommand';\nimport { removeReactionFromLocalState } from '../../utils/removeReactionFromLocalState';\nimport { removeReservedFields } from '../../utils/removeReservedFields';\nimport {\n defaultEmojiSearchIndex,\n generateRandomId,\n isBouncedMessage,\n isLocalUrl,\n MessageStatusTypes,\n ReactionData,\n} from '../../utils/utils';\nimport { Attachment as AttachmentDefault } from '../Attachment/Attachment';\nimport { AttachmentActions as AttachmentActionsDefault } from '../Attachment/AttachmentActions';\nimport { AudioAttachment as AudioAttachmentDefault } from '../Attachment/AudioAttachment';\nimport { Card as CardDefault } from '../Attachment/Card';\nimport { FileAttachment as FileAttachmentDefault } from '../Attachment/FileAttachment';\nimport { FileAttachmentGroup as FileAttachmentGroupDefault } from '../Attachment/FileAttachmentGroup';\nimport { FileIcon as FileIconDefault } from '../Attachment/FileIcon';\nimport { Gallery as GalleryDefault } from '../Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../Attachment/Giphy';\nimport { ImageLoadingFailedIndicator as ImageLoadingFailedIndicatorDefault } from '../Attachment/ImageLoadingFailedIndicator';\nimport { ImageLoadingIndicator as ImageLoadingIndicatorDefault } from '../Attachment/ImageLoadingIndicator';\nimport { VideoThumbnail as VideoThumbnailDefault } from '../Attachment/VideoThumbnail';\nimport { AutoCompleteSuggestionHeader as AutoCompleteSuggestionHeaderDefault } from '../AutoCompleteInput/AutoCompleteSuggestionHeader';\nimport { AutoCompleteSuggestionItem as AutoCompleteSuggestionItemDefault } from '../AutoCompleteInput/AutoCompleteSuggestionItem';\nimport { AutoCompleteSuggestionList as AutoCompleteSuggestionListDefault } from '../AutoCompleteInput/AutoCompleteSuggestionList';\nimport { EmptyStateIndicator as EmptyStateIndicatorDefault } from '../Indicators/EmptyStateIndicator';\nimport {\n LoadingErrorIndicator as LoadingErrorIndicatorDefault,\n LoadingErrorProps,\n} from '../Indicators/LoadingErrorIndicator';\nimport { LoadingIndicator as LoadingIndicatorDefault } from '../Indicators/LoadingIndicator';\nimport { KeyboardCompatibleView as KeyboardCompatibleViewDefault } from '../KeyboardCompatibleView/KeyboardCompatibleView';\nimport { Message as MessageDefault } from '../Message/Message';\nimport { MessageAvatar as MessageAvatarDefault } from '../Message/MessageSimple/MessageAvatar';\nimport { MessageBounce as MessageBounceDefault } from '../Message/MessageSimple/MessageBounce';\nimport { MessageContent as MessageContentDefault } from '../Message/MessageSimple/MessageContent';\nimport { MessageDeleted as MessageDeletedDefault } from '../Message/MessageSimple/MessageDeleted';\nimport { MessageError as MessageErrorDefault } from '../Message/MessageSimple/MessageError';\nimport { MessageFooter as MessageFooterDefault } from '../Message/MessageSimple/MessageFooter';\nimport { MessagePinnedHeader as MessagePinnedHeaderDefault } from '../Message/MessageSimple/MessagePinnedHeader';\nimport { MessageReplies as MessageRepliesDefault } from '../Message/MessageSimple/MessageReplies';\nimport { MessageRepliesAvatars as MessageRepliesAvatarsDefault } from '../Message/MessageSimple/MessageRepliesAvatars';\nimport { MessageSimple as MessageSimpleDefault } from '../Message/MessageSimple/MessageSimple';\nimport { MessageStatus as MessageStatusDefault } from '../Message/MessageSimple/MessageStatus';\nimport { ReactionList as ReactionListDefault } from '../Message/MessageSimple/ReactionList';\nimport { AttachButton as AttachButtonDefault } from '../MessageInput/AttachButton';\nimport { CommandsButton as CommandsButtonDefault } from '../MessageInput/CommandsButton';\nimport { InputEditingStateHeader as InputEditingStateHeaderDefault } from '../MessageInput/components/InputEditingStateHeader';\nimport { InputGiphySearch as InputGiphyCommandInputDefault } from '../MessageInput/components/InputGiphySearch';\nimport { InputReplyStateHeader as InputReplyStateHeaderDefault } from '../MessageInput/components/InputReplyStateHeader';\nimport { CooldownTimer as CooldownTimerDefault } from '../MessageInput/CooldownTimer';\nimport { FileUploadPreview as FileUploadPreviewDefault } from '../MessageInput/FileUploadPreview';\nimport { ImageUploadPreview as ImageUploadPreviewDefault } from '../MessageInput/ImageUploadPreview';\nimport { InputButtons as InputButtonsDefault } from '../MessageInput/InputButtons';\nimport { MoreOptionsButton as MoreOptionsButtonDefault } from '../MessageInput/MoreOptionsButton';\nimport { SendButton as SendButtonDefault } from '../MessageInput/SendButton';\nimport { SendMessageDisallowedIndicator as SendMessageDisallowedIndicatorDefault } from '../MessageInput/SendMessageDisallowedIndicator';\nimport { ShowThreadMessageInChannelButton as ShowThreadMessageInChannelButtonDefault } from '../MessageInput/ShowThreadMessageInChannelButton';\nimport { UploadProgressIndicator as UploadProgressIndicatorDefault } from '../MessageInput/UploadProgressIndicator';\nimport { DateHeader as DateHeaderDefault } from '../MessageList/DateHeader';\nimport type { MessageType } from '../MessageList/hooks/useMessageList';\nimport { InlineDateSeparator as InlineDateSeparatorDefault } from '../MessageList/InlineDateSeparator';\nimport { InlineUnreadIndicator as InlineUnreadIndicatorDefault } from '../MessageList/InlineUnreadIndicator';\nimport { MessageList as MessageListDefault } from '../MessageList/MessageList';\nimport { MessageSystem as MessageSystemDefault } from '../MessageList/MessageSystem';\nimport { NetworkDownIndicator as NetworkDownIndicatorDefault } from '../MessageList/NetworkDownIndicator';\nimport { ScrollToBottomButton as ScrollToBottomButtonDefault } from '../MessageList/ScrollToBottomButton';\nimport { TypingIndicator as TypingIndicatorDefault } from '../MessageList/TypingIndicator';\nimport { TypingIndicatorContainer as TypingIndicatorContainerDefault } from '../MessageList/TypingIndicatorContainer';\nimport { OverlayReactionList as OverlayReactionListDefault } from '../MessageOverlay/OverlayReactionList';\nimport { Reply as ReplyDefault } from '../Reply/Reply';\n\nconst styles = StyleSheet.create({\n selectChannel: { fontWeight: 'bold', padding: 16 },\n});\n\nexport const reactionData: ReactionData[] = [\n {\n Icon: LoveReaction,\n type: 'love',\n },\n {\n Icon: ThumbsUpReaction,\n type: 'like',\n },\n {\n Icon: ThumbsDownReaction,\n type: 'sad',\n },\n {\n Icon: LOLReaction,\n type: 'haha',\n },\n {\n Icon: WutReaction,\n type: 'wow',\n },\n];\n\n/**\n * If count of unread messages is less than 4, then no need to scroll to first unread message,\n * since first unread message will be in visible frame anyways.\n */\nconst scrollToFirstUnreadThreshold = 4;\n\nconst defaultThrottleInterval = 500;\nconst defaultDebounceInterval = 500;\nconst throttleOptions = {\n leading: true,\n trailing: true,\n};\nconst debounceOptions = {\n leading: true,\n trailing: true,\n};\n\nexport type ChannelPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChannelContextValue<StreamChatGenerics>, 'channel'> &\n Partial<\n Pick<\n ChannelContextValue<StreamChatGenerics>,\n | 'EmptyStateIndicator'\n | 'enableMessageGroupingByUser'\n | 'enforceUniqueReaction'\n | 'giphyEnabled'\n | 'hideStickyDateHeader'\n | 'hideDateSeparators'\n | 'LoadingIndicator'\n | 'maxTimeBetweenGroupedMessages'\n | 'NetworkDownIndicator'\n | 'StickyHeader'\n >\n > &\n Pick<ChatContextValue<StreamChatGenerics>, 'client' | 'enableOfflineSupport'> &\n Partial<\n Omit<\n InputMessageInputContextValue<StreamChatGenerics>,\n 'quotedMessage' | 'editing' | 'clearEditingState' | 'clearQuotedMessageState' | 'sendMessage'\n >\n > &\n Partial<\n Pick<\n SuggestionsContextValue<StreamChatGenerics>,\n 'AutoCompleteSuggestionHeader' | 'AutoCompleteSuggestionItem' | 'AutoCompleteSuggestionList'\n >\n > &\n Pick<TranslationContextValue, 't'> &\n Partial<\n Pick<\n PaginatedMessageListContextValue<StreamChatGenerics>,\n 'messages' | 'loadingMore' | 'loadingMoreRecent'\n >\n > &\n UseChannelStateValue<StreamChatGenerics> &\n Partial<\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'AttachmentActions'\n | 'AudioAttachment'\n | 'Card'\n | 'CardCover'\n | 'CardFooter'\n | 'CardHeader'\n | 'DateHeader'\n | 'deletedMessagesVisibilityType'\n | 'disableTypingIndicator'\n | 'dismissKeyboardOnMessageTouch'\n | 'FileAttachment'\n | 'FileAttachmentIcon'\n | 'FileAttachmentGroup'\n | 'FlatList'\n | 'forceAlignMessages'\n | 'formatDate'\n | 'Gallery'\n | 'getMessagesGroupStyles'\n | 'Giphy'\n | 'giphyVersion'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleReaction'\n | 'handleQuotedReply'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'InlineDateSeparator'\n | 'InlineUnreadIndicator'\n | 'isAttachmentEqual'\n | 'legacyImageViewerSwipeBehaviour'\n | 'ImageLoadingFailedIndicator'\n | 'ImageLoadingIndicator'\n | 'markdownRules'\n | 'Message'\n | 'messageActions'\n | 'MessageAvatar'\n | 'MessageBounce'\n | 'MessageContent'\n | 'messageContentOrder'\n | 'MessageDeleted'\n | 'MessageError'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageList'\n | 'MessagePinnedHeader'\n | 'MessageReplies'\n | 'MessageRepliesAvatars'\n | 'MessageSimple'\n | 'MessageStatus'\n | 'MessageSystem'\n | 'MessageText'\n | 'myMessageTheme'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'ReactionList'\n | 'Reply'\n | 'ScrollToBottomButton'\n | 'selectReaction'\n | 'supportedReactions'\n | 'TypingIndicator'\n | 'TypingIndicatorContainer'\n | 'UrlPreview'\n | 'VideoThumbnail'\n >\n > &\n Partial<\n Pick<ThreadContextValue<StreamChatGenerics>, 'allowThreadMessagesInChannel' | 'thread'>\n > & {\n shouldSyncChannel: boolean;\n /**\n * Additional props passed to keyboard avoiding view\n */\n additionalKeyboardAvoidingViewProps?: Partial<KeyboardAvoidingViewProps>;\n /**\n * Disables the channel UI if the channel is frozen\n */\n disableIfFrozenChannel?: boolean;\n /**\n * When true, disables the KeyboardCompatibleView wrapper\n *\n * Channel internally uses the [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n * component to adjust the height of Channel when the keyboard is opened or dismissed. This prop provides the ability to disable this functionality in case you\n * want to use [KeyboardAvoidingView](https://facebook.github.io/react-native/docs/keyboardavoidingview) or handle dismissal yourself.\n * KeyboardAvoidingView works well when your component occupies 100% of screen height, otherwise it may raise some issues.\n */\n disableKeyboardCompatibleView?: boolean;\n /**\n * Overrides the Stream default mark channel read request (Advanced usage only)\n * @param channel Channel object\n */\n doMarkReadRequest?: (channel: ChannelType<StreamChatGenerics>) => void;\n /**\n * Overrides the Stream default send message request (Advanced usage only)\n * @param channelId\n * @param messageData Message object\n */\n doSendMessageRequest?: (\n channelId: string,\n messageData: StreamMessage<StreamChatGenerics>,\n ) => Promise<SendMessageAPIResponse<StreamChatGenerics>>;\n /**\n * Overrides the Stream default update message request (Advanced usage only)\n * @param channelId\n * @param updatedMessage UpdatedMessage object\n */\n doUpdateMessageRequest?: (\n channelId: string,\n updatedMessage: Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0],\n ) => ReturnType<StreamChat<StreamChatGenerics>['updateMessage']>;\n /**\n * When true, messageList will be scrolled at first unread message, when opened.\n */\n initialScrollToFirstUnreadMessage?: boolean;\n keyboardBehavior?: KeyboardAvoidingViewProps['behavior'];\n /**\n * Custom wrapper component that handles height adjustment of Channel component when keyboard is opened or dismissed\n * Default component (accepts the same props): [KeyboardCompatibleView](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx)\n *\n * **Example:**\n *\n * ```\n * <Channel\n * channel={channel}\n * KeyboardCompatibleView={(props) => {\n * return (\n * <KeyboardCompatibleView>\n * {props.children}\n * </KeyboardCompatibleView>\n * )\n * }}\n * />\n * ```\n */\n KeyboardCompatibleView?: React.ComponentType<KeyboardAvoidingViewProps>;\n keyboardVerticalOffset?: number;\n /**\n * Custom loading error indicator to override the Stream default\n */\n LoadingErrorIndicator?: React.ComponentType<LoadingErrorProps>;\n maxMessageLength?: number;\n /**\n * Load the channel at a specified message instead of the most recent message.\n */\n messageId?: string;\n newMessageStateUpdateThrottleInterval?: number;\n overrideOwnCapabilities?: Partial<OwnCapabilitiesContextValue>;\n stateUpdateThrottleInterval?: number;\n /**\n * Tells if channel is rendering a thread list\n */\n threadList?: boolean;\n };\n\nconst ChannelWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelPropsWithContext<StreamChatGenerics>>,\n) => {\n const {\n additionalKeyboardAvoidingViewProps,\n additionalTextInputProps,\n additionalTouchableProps,\n allowThreadMessagesInChannel = true,\n AttachButton = AttachButtonDefault,\n Attachment = AttachmentDefault,\n AttachmentActions = AttachmentActionsDefault,\n AudioAttachment = AudioAttachmentDefault,\n AutoCompleteSuggestionHeader = AutoCompleteSuggestionHeaderDefault,\n AutoCompleteSuggestionItem = AutoCompleteSuggestionItemDefault,\n AutoCompleteSuggestionList = AutoCompleteSuggestionListDefault,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n Card = CardDefault,\n CardCover,\n CardFooter,\n CardHeader,\n channel,\n children,\n client,\n CommandsButton = CommandsButtonDefault,\n compressImageQuality,\n CooldownTimer = CooldownTimerDefault,\n DateHeader = DateHeaderDefault,\n deletedMessagesVisibilityType = 'always',\n disableIfFrozenChannel = true,\n disableKeyboardCompatibleView = false,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch = true,\n doDocUploadRequest,\n doImageUploadRequest,\n doMarkReadRequest,\n doSendMessageRequest,\n doUpdateMessageRequest,\n emojiSearchIndex = defaultEmojiSearchIndex,\n EmptyStateIndicator = EmptyStateIndicatorDefault,\n enableMessageGroupingByUser = true,\n enableOfflineSupport,\n enforceUniqueReaction = false,\n FileAttachment = FileAttachmentDefault,\n FileAttachmentGroup = FileAttachmentGroupDefault,\n FileAttachmentIcon = FileIconDefault,\n FileUploadPreview = FileUploadPreviewDefault,\n FlatList = FlatListDefault,\n forceAlignMessages,\n formatDate,\n Gallery = GalleryDefault,\n getMessagesGroupStyles,\n Giphy = GiphyDefault,\n giphyEnabled,\n giphyVersion = 'fixed_height',\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n hasCommands = true,\n // If pickDocument isn't available, default to hiding the file picker\n hasFilePicker = pickDocument !== null,\n hasImagePicker = true,\n hideDateSeparators = false,\n hideStickyDateHeader = false,\n ImageUploadPreview = ImageUploadPreviewDefault,\n initialScrollToFirstUnreadMessage = false,\n initialValue,\n InlineDateSeparator = InlineDateSeparatorDefault,\n InlineUnreadIndicator = InlineUnreadIndicatorDefault,\n Input,\n InputButtons = InputButtonsDefault,\n InputEditingStateHeader = InputEditingStateHeaderDefault,\n InputGiphySearch = InputGiphyCommandInputDefault,\n InputReplyStateHeader = InputReplyStateHeaderDefault,\n isAttachmentEqual,\n keyboardBehavior,\n KeyboardCompatibleView = KeyboardCompatibleViewDefault,\n keyboardVerticalOffset,\n legacyImageViewerSwipeBehaviour = false,\n LoadingErrorIndicator = LoadingErrorIndicatorDefault,\n LoadingIndicator = LoadingIndicatorDefault,\n loadingMore: loadingMoreProp,\n loadingMoreRecent: loadingMoreRecentProp,\n ImageLoadingFailedIndicator = ImageLoadingFailedIndicatorDefault,\n ImageLoadingIndicator = ImageLoadingIndicatorDefault,\n markdownRules,\n maxMessageLength: maxMessageLengthProp,\n maxNumberOfFiles = 10,\n maxTimeBetweenGroupedMessages,\n mentionAllAppUsersEnabled = false,\n mentionAllAppUsersQuery,\n members,\n Message = MessageDefault,\n messageActions,\n MessageAvatar = MessageAvatarDefault,\n MessageBounce = MessageBounceDefault,\n MessageContent = MessageContentDefault,\n messageContentOrder = ['quoted_reply', 'gallery', 'files', 'text', 'attachments'],\n MessageDeleted = MessageDeletedDefault,\n MessageError = MessageErrorDefault,\n MessageFooter = MessageFooterDefault,\n MessageHeader,\n messageId,\n MessageList = MessageListDefault,\n MessagePinnedHeader = MessagePinnedHeaderDefault,\n MessageReplies = MessageRepliesDefault,\n MessageRepliesAvatars = MessageRepliesAvatarsDefault,\n messages,\n MessageSimple = MessageSimpleDefault,\n MessageStatus = MessageStatusDefault,\n MessageSystem = MessageSystemDefault,\n MessageText,\n MoreOptionsButton = MoreOptionsButtonDefault,\n myMessageTheme,\n newMessageStateUpdateThrottleInterval = defaultThrottleInterval,\n NetworkDownIndicator = NetworkDownIndicatorDefault,\n numberOfLines = 5,\n onChangeText,\n onLongPressMessage,\n overrideOwnCapabilities,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList = OverlayReactionListDefault,\n ReactionList = ReactionListDefault,\n read,\n Reply = ReplyDefault,\n ScrollToBottomButton = ScrollToBottomButtonDefault,\n selectReaction,\n SendButton = SendButtonDefault,\n SendMessageDisallowedIndicator = SendMessageDisallowedIndicatorDefault,\n sendImageAsync = false,\n setInputRef,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n shouldSyncChannel,\n ShowThreadMessageInChannelButton = ShowThreadMessageInChannelButtonDefault,\n stateUpdateThrottleInterval = defaultThrottleInterval,\n StickyHeader,\n supportedReactions = reactionData,\n t,\n thread: threadProps,\n threadList,\n threadMessages,\n typing,\n TypingIndicator = TypingIndicatorDefault,\n TypingIndicatorContainer = TypingIndicatorContainerDefault,\n UploadProgressIndicator = UploadProgressIndicatorDefault,\n UrlPreview = CardDefault,\n VideoThumbnail = VideoThumbnailDefault,\n watcherCount,\n watchers,\n } = props;\n\n const {\n theme: {\n channel: { selectChannel },\n colors: { black },\n },\n } = useTheme();\n const [deleted, setDeleted] = useState(false);\n const [editing, setEditing] = useState<MessageType<StreamChatGenerics> | undefined>(undefined);\n const [error, setError] = useState<Error | boolean>(false);\n const [hasMore, setHasMore] = useState(true);\n const [lastRead, setLastRead] = useState<ChannelContextValue<StreamChatGenerics>['lastRead']>();\n const [loading, setLoading] = useState(!channel?.state.messages.length);\n const [loadingMore, setLoadingMore] = useState(false);\n\n const [loadingMoreRecent, setLoadingMoreRecent] = useState(false);\n const [quotedMessage, setQuotedMessage] =\n useState<boolean | MessageType<StreamChatGenerics>>(false);\n const [thread, setThread] = useState<ThreadContextValue<StreamChatGenerics>['thread']>(\n threadProps || null,\n );\n const [threadHasMore, setThreadHasMore] = useState(true);\n const [threadLoadingMore, setThreadLoadingMore] = useState(false);\n\n const syncingChannelRef = useRef(false);\n\n /**\n * Flag to track if we know for sure that there are no more recent messages to load.\n * This is necessary to avoid unnecessary api calls to load recent messages on pagination.\n */\n const [hasNoMoreRecentMessagesToLoad, setHasNoMoreRecentMessagesToLoad] = useState(true);\n\n const { prevTargetedMessage, setTargetedMessage, targetedMessage } = useTargetedMessage();\n\n /**\n * If we loaded a channel around message\n * We may have moved latest message to a new message set in that case mark this ref to avoid fetching\n */\n const hasOverlappingRecentMessagesRef = useRef(false);\n\n /**\n * This ref will hold the abort controllers for\n * requests made for uploading images/files in the messageInputContext\n * Its a map of filename to AbortController\n */\n const uploadAbortControllerRef = useRef<Map<string, AbortController>>(new Map());\n\n const channelId = channel?.id || '';\n\n useEffect(() => {\n const initChannel = async () => {\n if (!channel || !shouldSyncChannel || channel.offlineMode) return;\n /**\n * Loading channel at first unread message requires channel to be initialized in the first place,\n * since we use read state on channel to decide what offset to load channel at.\n * Also there is no use case from UX perspective, why one would need loading uninitialized channel at particular message.\n * If the channel is not initiated, then we need to do channel.watch, which is more expensive for backend than channel.query.\n */\n let channelLoaded = false;\n if (!channel.initialized) {\n await loadChannel();\n channelLoaded = true;\n }\n\n if (messageId) {\n loadChannelAroundMessage({ messageId });\n } else if (\n initialScrollToFirstUnreadMessage &&\n channel.countUnread() > scrollToFirstUnreadThreshold\n ) {\n loadChannelAtFirstUnreadMessage();\n } else if (!channelLoaded) {\n loadChannel();\n }\n };\n\n initChannel();\n\n return () => {\n copyChannelState.cancel();\n copyReadState.cancel();\n copyTypingState.cancel();\n loadMoreFinished.cancel();\n loadMoreThreadFinished.cancel();\n };\n }, [channelId, messageId]);\n\n const threadPropsExists = !!threadProps;\n useEffect(() => {\n if (threadProps && shouldSyncChannel) {\n setThread(threadProps);\n if (channel && threadProps?.id) {\n setThreadMessages(channel.state.threads?.[threadProps.id] || []);\n }\n } else {\n setThread(null);\n }\n }, [threadPropsExists, shouldSyncChannel]);\n\n const handleAppBackground = useCallback(() => {\n const channelData = channel.data as\n | Extract<typeof channel.data, { own_capabilities: string[] }>\n | undefined;\n if (channelData?.own_capabilities?.includes('send-typing-events')) {\n channel.sendEvent({\n parent_id: thread?.id,\n type: 'typing.stop',\n } as StreamEvent<StreamChatGenerics>);\n }\n }, [thread?.id, channelId]);\n\n useAppStateListener(undefined, handleAppBackground);\n\n /**\n * CHANNEL CONSTANTS\n */\n const isAdmin = client?.user?.role === 'admin' || channel?.state.membership.role === 'admin';\n\n const isModerator =\n channel?.state.membership.role === 'channel_moderator' ||\n channel?.state.membership.role === 'moderator';\n\n const isOwner = channel?.state.membership.role === 'owner';\n\n /**\n * CHANNEL METHODS\n */\n const markRead: ChannelContextValue<StreamChatGenerics>['markRead'] = useRef(\n throttle(\n () => {\n if (!channel || channel?.disconnected || !clientChannelConfig?.read_events) {\n return;\n }\n\n if (doMarkReadRequest) {\n doMarkReadRequest(channel);\n } else {\n logChatPromiseExecution(channel.markRead(), 'mark read');\n }\n },\n defaultThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyMessagesState = useRef(\n throttle(\n () => {\n if (channel) {\n clearInterval(mergeSetsIntervalRef.current);\n setMessages(channel.state.messages);\n restartSetsMergeFuncRef.current();\n }\n },\n newMessageStateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyTypingState = useRef(\n throttle(\n () => {\n if (channel) {\n setTyping({ ...channel.state.typing });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyReadState = useRef(\n throttle(\n () => {\n if (channel) {\n setRead({ ...channel.state.read });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n const copyChannelState = useRef(\n throttle(\n () => {\n setLoading(false);\n if (channel) {\n setMembers({ ...channel.state.members });\n setMessages([...channel.state.messages]);\n setRead({ ...channel.state.read });\n setTyping({ ...channel.state.typing });\n setWatcherCount(channel.state.watcher_count);\n setWatchers({ ...channel.state.watchers });\n }\n },\n stateUpdateThrottleInterval,\n throttleOptions,\n ),\n ).current;\n\n // subscribe to specific channel events\n useEffect(() => {\n const channelSubscriptions: Array<ReturnType<ChannelType['on']>> = [];\n if (channel && shouldSyncChannel) {\n channelSubscriptions.push(channel.on('message.new', copyMessagesState));\n channelSubscriptions.push(channel.on('message.read', copyReadState));\n channelSubscriptions.push(channel.on('typing.start', copyTypingState));\n channelSubscriptions.push(channel.on('typing.stop', copyTypingState));\n }\n return () => {\n channelSubscriptions.forEach((s) => s.unsubscribe());\n };\n }, [channelId, shouldSyncChannel]);\n\n // subscribe to the generic all channel event\n useEffect(() => {\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n const ignorableEvents = ['user.watching.start', 'user.watching.stop'];\n if (ignorableEvents.includes(event.type)) return;\n if (shouldSyncChannel) {\n const isTypingEvent = event.type === 'typing.start' || event.type === 'typing.stop';\n if (!isTypingEvent) {\n if (thread?.id) {\n const updatedThreadMessages =\n (thread.id && channel && channel.state.threads[thread.id]) || threadMessages;\n setThreadMessages(updatedThreadMessages);\n }\n\n if (channel && thread?.id && event.message?.id === thread.id) {\n const updatedThread = channel.state.formatMessage(event.message);\n setThread(updatedThread);\n }\n }\n\n // only update channel state if the events are not the previously subscribed useEffect's subscription events\n if (\n channel &&\n channel.initialized &&\n event.type !== 'message.new' &&\n event.type !== 'message.read' &&\n event.type !== 'typing.start' &&\n event.type !== 'typing.stop'\n ) {\n copyChannelState();\n }\n }\n };\n const { unsubscribe } = channel.on(handleEvent);\n return unsubscribe;\n }, [channelId, thread?.id, shouldSyncChannel]);\n\n // subscribe to channel.deleted event\n useEffect(() => {\n const { unsubscribe } = client.on('channel.deleted', (event) => {\n if (event.cid === channel?.cid) {\n setDeleted(true);\n }\n });\n\n return unsubscribe;\n }, [channelId]);\n\n useEffect(() => {\n const handleEvent: EventHandler<StreamChatGenerics> = (event) => {\n if (channel.cid === event.cid) copyChannelState();\n };\n\n const { unsubscribe } = client.on('notification.mark_read', handleEvent);\n return unsubscribe;\n }, []);\n\n const channelQueryCallRef = useRef(\n async (\n queryCall: () => Promise<void>,\n onAfterQueryCall: (() => void) | undefined = undefined,\n // if we are scrolling to a message after the query, pass it here\n scrollToMessageId: string | (() => string | undefined) | undefined = undefined,\n ) => {\n setError(false);\n try {\n clearInterval(mergeSetsIntervalRef.current);\n await queryCall();\n setLastRead(new Date());\n setHasMore(true);\n const currentMessages = channel.state.messages;\n const hadCurrentLatestMessages =\n currentMessages.length > 0 && currentMessages === channel.state.latestMessages;\n if (typeof scrollToMessageId === 'function') {\n scrollToMessageId = scrollToMessageId();\n }\n\n const scrollToMessageIndex = scrollToMessageId\n ? currentMessages.findIndex(({ id }) => id === scrollToMessageId)\n : -1;\n if (channel && scrollToMessageIndex !== -1) {\n copyChannelState.cancel();\n // We assume that on average user sees 5 messages on screen\n // We dont want new renders to happen while scrolling to the targeted message\n // hence we limit the number of messages to be rendered after the targeted message to 5 - 1 = 4\n // NOTE: we have one drawback here, if there were already a split latest and current message set\n // the previous latest message set will be thrown away as we cannot merge it with the current message set after the target message is set\n const limitAfter = 4;\n const currentLength = currentMessages.length;\n const noOfMessagesAfter = currentLength - scrollToMessageIndex - 1;\n // number of messages are over the limit, limit the length of messages\n if (noOfMessagesAfter > limitAfter) {\n const endIndex = scrollToMessageIndex + limitAfter;\n channel.state.clearMessages();\n channel.state.messages = currentMessages.slice(0, endIndex + 1);\n splitLatestCurrentMessageSetRef.current();\n const restOfMessages = currentMessages.slice(endIndex + 1);\n if (hadCurrentLatestMessages) {\n const latestSet = channel.state.messageSets.find((set) => set.isLatest);\n if (latestSet) {\n latestSet.messages = restOfMessages;\n hasOverlappingRecentMessagesRef.current = true;\n }\n }\n }\n }\n const hasLatestMessages = channel.state.latestMessages.length > 0;\n channel.state.setIsUpToDate(hasLatestMessages);\n setHasNoMoreRecentMessagesToLoad(hasLatestMessages);\n copyChannelState();\n if (scrollToMessageIndex !== -1) {\n // since we need to scroll after immediately do this without throttle\n copyChannelState.flush();\n }\n onAfterQueryCall?.();\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n setLastRead(new Date());\n }\n },\n );\n\n /**\n * Loads channel at first unread message.\n */\n const loadChannelAtFirstUnreadMessage = () => {\n if (!channel) return;\n let unreadMessageIdToScrollTo: string | undefined;\n // query for messages around the last read date\n return channelQueryCallRef.current(\n async () => {\n const unreadCount = channel.countUnread();\n if (unreadCount === 0) return;\n const isLatestMessageSetShown = !!channel.state.messageSets.find(\n (set) => set.isCurrent && set.isLatest,\n );\n if (isLatestMessageSetShown && unreadCount <= channel.state.messages.length) {\n unreadMessageIdToScrollTo =\n channel.state.messages[channel.state.messages.length - unreadCount].id;\n return;\n }\n const lastReadDate = channel.lastRead();\n\n // if last read date is present we can just fetch messages around that date\n // last read date not being present is an edge case if somewhere the user of SDK deletes the read state (this will usually never happen)\n if (lastReadDate) {\n setLoading(true);\n // get totally 30 messages... max 15 before last read date and max 15 after last read date\n // ref: https://github.com/GetStream/chat/pull/2588\n const res = await channel.query(\n {\n messages: {\n created_at_around: lastReadDate,\n limit: 30,\n },\n watch: true,\n },\n 'new',\n );\n unreadMessageIdToScrollTo = res.messages.find(\n (m) => lastReadDate < (m.created_at ? new Date(m.created_at) : new Date()),\n )?.id;\n if (unreadMessageIdToScrollTo) {\n channel.state.loadMessageIntoState(unreadMessageIdToScrollTo);\n }\n } else {\n await loadLatestMessagesRef.current();\n }\n },\n () => {\n if (unreadMessageIdToScrollTo) {\n restartSetsMergeFuncRef.current();\n }\n },\n () => unreadMessageIdToScrollTo,\n );\n };\n\n /**\n * Loads channel around a specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n */\n const loadChannelAroundMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAroundMessage'] =\n ({ messageId: messageIdToLoadAround }) =>\n channelQueryCallRef.current(\n async () => {\n setLoading(true);\n if (messageIdToLoadAround) {\n setMessages([]);\n await channel.state.loadMessageIntoState(messageIdToLoadAround);\n const currentMessageSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (currentMessageSet && !currentMessageSet?.isLatest) {\n // if the current message set is not the latest, we will throw away the latest messages\n // in order to attempt to not throw away, will attempt to merge it by loading 25 more messages\n const recentCurrentSetMsgId =\n currentMessageSet.messages[currentMessageSet.messages.length - 1].id;\n await channel.query(\n {\n messages: {\n id_gte: recentCurrentSetMsgId,\n limit: 25,\n },\n },\n 'current',\n );\n // if the gap is more than 25, we will unfortunately have to throw away the latest messages\n }\n } else {\n await loadLatestMessagesRef.current();\n }\n },\n () => {\n if (messageIdToLoadAround) {\n clearInterval(mergeSetsIntervalRef.current); // do not merge sets as we will scroll/highlight to the message\n setTargetedMessage(messageIdToLoadAround);\n }\n },\n messageIdToLoadAround,\n );\n\n useEffect(() => {\n if (!targetedMessage && prevTargetedMessage) {\n // we cleared the merge sets interval to wait for the targeted message to be set\n // now restart it since its done\n restartSetsMergeFuncRef.current();\n }\n }, [targetedMessage]);\n\n /**\n * @deprecated use loadChannelAroundMessage instead\n *\n * Loads channel at specific message\n *\n * @param messageId If undefined, channel will be loaded at most recent message.\n * @param before Number of message to query before messageId\n * @param after Number of message to query after messageId\n */\n const loadChannelAtMessage: ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage'] = ({\n after = 2,\n before = 30,\n messageId,\n }) =>\n channelQueryCallRef.current(async () => {\n await queryAtMessage({ after, before, messageId });\n\n if (messageId) {\n setTargetedMessage(messageId);\n }\n });\n\n /**\n * Utility method to mark that current set if latest into two.\n * With an empty latest set\n * This is useful when we know that we dont know the latest messages anymore\n * Or if we are loading a channel around a message\n */\n const splitLatestCurrentMessageSetRef = useRef(() => {\n const currentLatestSet = channel.state.messageSets.find((set) => set.isCurrent && set.isLatest);\n if (!currentLatestSet) return;\n // unmark the current latest set\n currentLatestSet.isLatest = false;\n // create a new set with empty latest messages\n channel.state.messageSets.push({\n isCurrent: false,\n isLatest: true,\n messages: [],\n });\n });\n\n /**\n * Utility method to merge current and latest message set.\n * Returns true if merge was successful, false otherwise.\n */\n const mergeOverlappingMessageSetsRef = useRef((limitToMaxRenderPerBatch = false) => {\n if (hasOverlappingRecentMessagesRef.current) {\n const limit = 5; // 5 is the load to recent limit, a larger value seems to cause jumpiness in some devices..\n // merge current and latest sets\n const latestMessageSet = channel.state.messageSets.find((set) => set.isLatest);\n const currentMessageSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (latestMessageSet && currentMessageSet && latestMessageSet !== currentMessageSet) {\n if (limitToMaxRenderPerBatch && latestMessageSet.messages.length > limit) {\n currentMessageSet.messages = currentMessageSet.messages.concat(\n latestMessageSet.messages.slice(0, limit),\n );\n latestMessageSet.messages = latestMessageSet.messages.slice(limit);\n } else {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n currentMessageSet.messages = currentMessageSet.messages.concat(latestMessageSet.messages);\n currentMessageSet.isLatest = true;\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n }\n return true;\n }\n }\n return false;\n });\n\n const mergeSetsIntervalRef = useRef<NodeJS.Timeout>();\n\n // clear the interval on unmount\n useEffect(\n () => () => {\n clearInterval(mergeSetsIntervalRef.current);\n },\n [],\n );\n\n // if we had split the latest and current message set, we try to merge them back\n // temporarily commented out the interval as it was causing issues with jankiness during scrolling\n const restartSetsMergeFuncRef = useRef(() => {\n clearInterval(mergeSetsIntervalRef.current);\n if (!hasOverlappingRecentMessagesRef.current) return;\n // mergeSetsIntervalRef.current = setInterval(() => {\n // const currentLength = channel.state.messages.length || 0;\n // const didMerge = mergeOverlappingMessageSetsRef.current(true);\n // if (didMerge && channel.state.messages.length !== currentLength) {\n // setMessages(channel.state.messages);\n // }\n // }, 1000);\n });\n\n /**\n * Shows the latest messages from the channel state\n * If recent messages are empty, fetches new\n * @param clearLatest If true, clears the latest messages before loading (useful for complete refresh)\n */\n const loadLatestMessagesRef = useRef(async (clearLatest = false) => {\n mergeOverlappingMessageSetsRef.current();\n if (clearLatest) {\n const latestSet = channel.state.messageSets.find((set) => set.isLatest);\n if (latestSet) latestSet.messages = [];\n }\n if (channel.state.latestMessages.length === 0) {\n await channel.query({}, 'latest');\n }\n await channel.state.loadMessageIntoState('latest');\n });\n\n const loadChannel = () =>\n channelQueryCallRef.current(async () => {\n if (!channel?.initialized || !channel.state.isUpToDate) {\n await channel?.watch();\n channel?.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n } else {\n await channel.state.loadMessageIntoState('latest');\n }\n });\n\n const reloadThread = async () => {\n if (!channel || !thread?.id) return;\n setThreadLoadingMore(true);\n try {\n const parentID = thread.id;\n\n const limit = 50;\n channel.state.threads[parentID] = [];\n const queryResponse = await channel.getReplies(parentID, {\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n const { messages } = await channel.getMessagesById([parentID]);\n const [threadMessage] = messages;\n if (threadMessage) {\n const formattedMessage = channel.state.formatMessage(threadMessage);\n setThread(formattedMessage);\n }\n } catch (err) {\n console.warn('Thread loading request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const resyncChannel = async () => {\n if (!channel || syncingChannelRef.current) return;\n if (!channel.initialized) return;\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n syncingChannelRef.current = true;\n\n setError(false);\n try {\n /**\n * Allow a buffer of 30 new messages, so that MessageList won't move its scroll position,\n * giving smooth user experience.\n */\n const state = await channel.watch({\n messages: {\n limit: messages.length + 30,\n },\n });\n\n const oldListTopMessage = messages[0];\n const oldListTopMessageId = messages[0]?.id;\n const oldListBottomMessage = messages[messages.length - 1];\n\n const newListTopMessage = state.messages[0];\n const newListBottomMessage = state.messages[state.messages.length - 1];\n\n if (\n !oldListTopMessage || // previous list was empty\n !oldListBottomMessage || // previous list was empty\n !newListTopMessage || // new list is truncated\n !newListBottomMessage // new list is truncated\n ) {\n /** Channel was truncated */\n channel.state.clearMessages();\n channel.state.setIsUpToDate(true);\n channel.state.addMessagesSorted(state.messages);\n channel.state.addPinnedMessages(state.pinned_messages);\n\n copyChannelState();\n return;\n }\n\n const parseMessage = (message: typeof oldListTopMessage) =>\n ({\n ...message,\n created_at: message.created_at.toString(),\n pinned_at: message.pinned_at?.toString(),\n updated_at: message.updated_at?.toString(),\n } as unknown as MessageResponse<StreamChatGenerics>);\n\n const failedMessages = messages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage);\n\n const failedThreadMessages = thread\n ? threadMessages\n .filter((message) => message.status === MessageStatusTypes.FAILED)\n .map(parseMessage)\n : [];\n\n const oldListTopMessageCreatedAt = oldListTopMessage.created_at;\n const oldListBottomMessageCreatedAt = oldListBottomMessage.created_at;\n const newListTopMessageCreatedAt = newListTopMessage.created_at\n ? new Date(newListTopMessage.created_at)\n : new Date();\n const newListBottomMessageCreatedAt = newListBottomMessage?.created_at\n ? new Date(newListBottomMessage.created_at)\n : new Date();\n\n let finalMessages = [];\n\n if (\n oldListTopMessage &&\n oldListTopMessageCreatedAt &&\n oldListBottomMessageCreatedAt &&\n newListTopMessageCreatedAt < oldListTopMessageCreatedAt &&\n newListBottomMessageCreatedAt >= oldListBottomMessageCreatedAt\n ) {\n const index = state.messages.findIndex((message) => message.id === oldListTopMessageId);\n finalMessages = state.messages.slice(index);\n } else {\n finalMessages = state.messages;\n }\n\n channel.state.setIsUpToDate(true);\n channel.state.clearMessages();\n channel.state.addMessagesSorted(finalMessages);\n channel.state.addPinnedMessages(state.pinned_messages);\n setHasNoMoreRecentMessagesToLoad(true);\n setHasMore(true);\n copyChannelState();\n\n if (failedMessages.length) {\n channel.state.addMessagesSorted(failedMessages);\n copyChannelState();\n }\n\n await reloadThread();\n\n if (thread && failedThreadMessages.length) {\n channel.state.addMessagesSorted(failedThreadMessages);\n setThreadMessages([...channel.state.threads[thread.id]]);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoading(false);\n }\n\n syncingChannelRef.current = false;\n };\n\n // resync channel is added to ref so that it can be used in useEffect without adding it as a dependency\n const resyncChannelRef = useRef(resyncChannel);\n resyncChannelRef.current = resyncChannel;\n\n useEffect(() => {\n const connectionChangedHandler = () => {\n if (shouldSyncChannel) {\n resyncChannelRef.current();\n }\n };\n let connectionChangedSubscription: ReturnType<ChannelType['on']>;\n\n if (enableOfflineSupport) {\n connectionChangedSubscription = DBSyncManager.onSyncStatusChange((statusChanged) => {\n if (statusChanged) {\n connectionChangedHandler();\n }\n });\n } else {\n connectionChangedSubscription = client.on('connection.changed', (event) => {\n if (event.online) {\n connectionChangedHandler();\n }\n });\n }\n return () => {\n connectionChangedSubscription.unsubscribe();\n };\n }, [enableOfflineSupport, shouldSyncChannel]);\n\n const reloadChannel = () =>\n channelQueryCallRef.current(async () => {\n setLoading(true);\n await loadLatestMessagesRef.current(true);\n setLoading(false);\n channel?.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n });\n\n /**\n * @deprecated\n * Makes a query to load messages at particular message id.\n *\n * @param messageId Targeted message id\n * @param before Number of messages to load before messageId\n * @param after Number of messages to load after messageId\n */\n const queryAtMessage = async ({\n after = 10,\n before = 10,\n messageId,\n }: Parameters<ChannelContextValue<StreamChatGenerics>['loadChannelAtMessage']>[0]) => {\n if (!channel) return;\n channel.state.setIsUpToDate(false);\n hasOverlappingRecentMessagesRef.current = false;\n clearInterval(mergeSetsIntervalRef.current);\n channel.state.clearMessages();\n setMessages([]);\n if (!messageId) {\n await channel.query({\n messages: {\n limit: before,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(true);\n return;\n }\n\n await queryBeforeMessage(messageId, before);\n await queryAfterMessage(messageId, after);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages before particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load\n */\n const queryBeforeMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n\n await channel.query({\n messages: {\n id_lt: messageId,\n limit,\n },\n watch: true,\n });\n\n channel.state.setIsUpToDate(false);\n };\n\n /**\n * @deprecated\n * Makes a query to load messages later than particular message id.\n *\n * @param messageId Targeted message id\n * @param limit Number of messages to load.\n */\n const queryAfterMessage = async (messageId: string, limit = 5) => {\n if (!channel) return;\n const state = await channel.query({\n messages: {\n id_gte: messageId,\n limit,\n },\n watch: true,\n });\n\n if (state.messages.length < limit) {\n // make current set as the latest\n const currentSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (currentSet && !currentSet.isLatest) {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n currentSet.isLatest = true;\n }\n channel.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n } else {\n splitLatestCurrentMessageSetRef.current();\n channel.state.setIsUpToDate(false);\n setHasNoMoreRecentMessagesToLoad(false);\n }\n };\n\n // In case the channel is disconnected which may happen when channel is deleted,\n // underlying js client throws an error. Following function ensures that Channel component\n // won't result in error in such a case.\n const getChannelConfigSafely = () => {\n try {\n return channel?.getConfig();\n } catch (_) {\n return null;\n }\n };\n\n /**\n * Channel configs for use in disabling local functionality.\n * Nullish coalescing is used to give first priority to props to override\n * the server settings. Then priority to server settings to override defaults.\n */\n const clientChannelConfig = getChannelConfigSafely();\n\n /**\n * MESSAGE METHODS\n */\n\n const updateMessage: MessagesContextValue<StreamChatGenerics>['updateMessage'] = (\n updatedMessage,\n extraState = {},\n ) => {\n if (channel) {\n channel.state.addMessageSorted(updatedMessage, true);\n if (thread && updatedMessage.parent_id) {\n extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];\n setThreadMessages(extraState.threadMessages);\n }\n\n setMessages([...channel.state.messages]);\n }\n };\n\n const replaceMessage = (\n oldMessage: MessageResponse<StreamChatGenerics>,\n newMessage: MessageResponse<StreamChatGenerics>,\n ) => {\n if (channel) {\n channel.state.removeMessage(oldMessage);\n channel.state.addMessageSorted(newMessage, true);\n if (thread && newMessage.parent_id) {\n const threadMessages = channel.state.threads[newMessage.parent_id] || [];\n setThreadMessages(threadMessages);\n }\n setMessages(channel.state.messages);\n }\n };\n\n const createMessagePreview = ({\n attachments,\n mentioned_users,\n parent_id,\n text,\n ...extraFields\n }: Partial<StreamMessage<StreamChatGenerics>>) => {\n // Exclude following properties from message.user within message preview,\n // since they could be long arrays and have no meaning as sender of message.\n // Storing such large value within user's table may cause sqlite queries to crash.\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { channel_mutes, devices, mutes, ...messageUser } = client.user;\n\n const preview = {\n __html: text,\n attachments,\n created_at: new Date(),\n html: text,\n id: `${client.userID}-${generateRandomId()}`,\n mentioned_users:\n mentioned_users?.map((userId) => ({\n id: userId,\n })) || [],\n parent_id,\n reactions: [],\n status: MessageStatusTypes.SENDING,\n text,\n type: 'regular',\n user: {\n ...messageUser,\n id: client.userID,\n },\n ...extraFields,\n } as unknown as MessageResponse<StreamChatGenerics>;\n\n /**\n * This is added to the message for local rendering prior to the message\n * being returned from the backend, it is removed when the message is sent\n * as quoted_message is a reserved field.\n */\n if (preview.quoted_message_id) {\n const quotedMessage = messages.find((message) => message.id === preview.quoted_message_id);\n\n preview.quoted_message =\n quotedMessage as MessageResponse<StreamChatGenerics>['quoted_message'];\n }\n return preview;\n };\n\n const uploadPendingAttachments = async (message: MessageResponse<StreamChatGenerics>) => {\n const updatedMessage = { ...message };\n if (updatedMessage.attachments?.length) {\n for (let i = 0; i < updatedMessage.attachments?.length; i++) {\n const attachment = updatedMessage.attachments[i];\n const image = attachment.originalImage;\n const file = attachment.originalFile;\n // check if image_url is not a remote url\n if (\n attachment.type === 'image' &&\n image?.uri &&\n attachment.image_url &&\n isLocalUrl(attachment.image_url)\n ) {\n const filename = image.name ?? image.uri.replace(/^(file:\\/\\/|content:\\/\\/)/, '');\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(filename);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(filename);\n }\n const compressedUri = await compressedImageURI(image, compressImageQuality);\n const contentType = lookup(filename) || 'multipart/form-data';\n\n const uploadResponse = doImageUploadRequest\n ? await doImageUploadRequest(image, channel)\n : await channel.sendImage(compressedUri, filename, contentType);\n\n attachment.image_url = uploadResponse.file;\n delete attachment.originalFile;\n\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n\n if (\n (attachment.type === 'file' ||\n attachment.type === 'audio' ||\n attachment.type === 'video') &&\n attachment.asset_url &&\n isLocalUrl(attachment.asset_url) &&\n file?.uri\n ) {\n // if any upload is in progress, cancel it\n const controller = uploadAbortControllerRef.current.get(file.name);\n if (controller) {\n controller.abort();\n uploadAbortControllerRef.current.delete(file.name);\n }\n const response = doDocUploadRequest\n ? await doDocUploadRequest(file, channel)\n : await channel.sendFile(file.uri, file.name, file.mimeType);\n attachment.asset_url = response.file;\n if (response.thumb_url) {\n attachment.thumb_url = response.thumb_url;\n }\n delete attachment.originalFile;\n dbApi.updateMessage({\n message: { ...updatedMessage, cid: channel.cid },\n });\n }\n }\n }\n\n return updatedMessage;\n };\n\n const sendMessageRequest = async (\n message: MessageResponse<StreamChatGenerics>,\n retrying?: boolean,\n ) => {\n try {\n const updatedMessage = await uploadPendingAttachments(message);\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n __html,\n attachments,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n created_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n deleted_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n html,\n id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n latest_reactions,\n mentioned_users,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n own_reactions,\n parent_id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n quoted_message,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reaction_counts,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n reactions,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n status,\n text,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updated_at,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n user,\n ...extraFields\n } = updatedMessage;\n if (!channel.id) return;\n\n const mentionedUserIds = mentioned_users?.map((user) => user.id) || [];\n\n const messageData = {\n attachments,\n id,\n mentioned_users: mentionedUserIds,\n parent_id,\n text: patchMessageTextCommand(text ?? '', mentionedUserIds),\n ...extraFields,\n } as StreamMessage<StreamChatGenerics>;\n\n let messageResponse = {} as SendMessageAPIResponse<StreamChatGenerics>;\n if (doSendMessageRequest) {\n messageResponse = await doSendMessageRequest(channel?.cid || '', messageData);\n } else if (channel) {\n messageResponse = await channel.sendMessage(messageData);\n }\n\n if (messageResponse.message) {\n messageResponse.message.status = MessageStatusTypes.RECEIVED;\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...messageResponse.message, cid: channel.cid },\n });\n }\n if (retrying) {\n replaceMessage(message, messageResponse.message);\n } else {\n updateMessage(messageResponse.message);\n }\n }\n } catch (err) {\n console.log(err);\n message.status = MessageStatusTypes.FAILED;\n updateMessage({ ...message, cid: channel.cid });\n\n if (enableOfflineSupport) {\n dbApi.updateMessage({\n message: { ...message, cid: channel.cid },\n });\n }\n }\n };\n\n const sendMessage: InputMessageInputContextValue<StreamChatGenerics>['sendMessage'] = async (\n message,\n ) => {\n if (channel?.state?.filterErrorMessages) {\n channel.state.filterErrorMessages();\n }\n\n const messagePreview = createMessagePreview({\n ...message,\n attachments: message.attachments || [],\n });\n\n mergeOverlappingMessageSetsRef.current();\n\n if (!channel?.state.isUpToDate) {\n await reloadChannel();\n }\n\n updateMessage(messagePreview, {\n commands: [],\n messageInput: '',\n });\n\n if (enableOfflineSupport) {\n // While sending a message, we add the message to local db with failed status, so that\n // if app gets closed before message gets sent and next time user opens the app\n // then user can see that message in failed state and can retry.\n // If succesfull, it will be updated with received status.\n dbApi.upsertMessages({\n messages: [{ ...messagePreview, cid: channel.cid, status: MessageStatusTypes.FAILED }],\n });\n }\n\n await sendMessageRequest(messagePreview);\n };\n\n const retrySendMessage: MessagesContextValue<StreamChatGenerics>['retrySendMessage'] = async (\n message,\n ) => {\n const statusPendingMessage = {\n ...message,\n status: MessageStatusTypes.SENDING,\n };\n\n const messageWithoutReservedFields = removeReservedFields(statusPendingMessage);\n\n // For bounced messages, we don't need to update the message, instead always send a new message.\n if (!isBouncedMessage(message)) {\n updateMessage(messageWithoutReservedFields as MessageResponse<StreamChatGenerics>);\n }\n\n await sendMessageRequest(\n messageWithoutReservedFields as MessageResponse<StreamChatGenerics>,\n true,\n );\n };\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreFinished = useRef(\n debounce(\n (updatedHasMore: boolean, newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoading(false);\n setLoadingMore(false);\n setError(false);\n setHasMore(updatedHasMore);\n setMessages(newMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n /**\n * This function loads more messages before the first message in current channel state.\n */\n const loadMore = useCallback<PaginatedMessageListContextValue<StreamChatGenerics>['loadMore']>(\n async (limit = 20) => {\n if (loadingMore || hasMore === false) {\n return;\n }\n\n const currentMessages = channel.state.messages;\n\n if (!currentMessages.length) {\n return setLoadingMore(false);\n }\n\n const oldestMessage = currentMessages && currentMessages[0];\n\n if (oldestMessage && oldestMessage.status !== MessageStatusTypes.RECEIVED) {\n return setLoadingMore(false);\n }\n\n setLoadingMore(true);\n\n const oldestID = oldestMessage && oldestMessage.id;\n\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: { id_lt: oldestID, limit },\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n loadMoreFinished(updatedHasMore, channel.state.messages);\n }\n } catch (err) {\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMore(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore]\n * and only those deps should be used here because of that\n */\n [channelId, hasMore, loadingMore],\n );\n\n /**\n * This function loads more messages after the most recent message in current channel state.\n */\n const loadMoreRecent = useCallback<\n PaginatedMessageListContextValue<StreamChatGenerics>['loadMoreRecent']\n >(\n async (limit = 5) => {\n const latestMessageSet = channel.state.messageSets.find((set) => set.isLatest);\n const latestLengthBeforeMerge = latestMessageSet?.messages.length || 0;\n const didMerge = mergeOverlappingMessageSetsRef.current(true);\n if (didMerge) {\n if (latestMessageSet && latestLengthBeforeMerge >= limit) {\n setLoadingMoreRecent(true);\n channel.state.setIsUpToDate(true);\n setHasNoMoreRecentMessagesToLoad(true);\n loadMoreRecentFinished(channel.state.messages);\n restartSetsMergeFuncRef.current();\n return;\n }\n }\n if (channel.state.isUpToDate) {\n setLoadingMoreRecent(false);\n return;\n }\n const currentMessages = channel.state.messages;\n const recentMessage = currentMessages[currentMessages.length - 1];\n\n if (recentMessage?.status !== MessageStatusTypes.RECEIVED) {\n setLoadingMoreRecent(false);\n return;\n }\n setLoadingMoreRecent(true);\n try {\n if (channel) {\n const queryResponse = await channel.query({\n messages: {\n id_gte: recentMessage.id,\n limit,\n },\n watch: true,\n });\n const gotAllRecentMessages = queryResponse.messages.length < limit;\n const currentSet = channel.state.messageSets.find((set) => set.isCurrent);\n if (gotAllRecentMessages && currentSet && !currentSet.isLatest) {\n channel.state.messageSets = channel.state.messageSets.filter((set) => !set.isLatest);\n // make current set as the latest\n currentSet.isLatest = true;\n }\n channel.state.setIsUpToDate(gotAllRecentMessages);\n setHasNoMoreRecentMessagesToLoad(gotAllRecentMessages);\n loadMoreRecentFinished(channel.state.messages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setLoadingMoreRecent(false);\n throw err;\n }\n },\n /*\n * This function is passed to useCreatePaginatedMessageListContext\n * Where the deps are [channelId, hasMore, loadingMoreRecent, loadingMore, hasNoMoreRecentMessagesToLoad]\n * and and only those deps should be used here because of that\n */\n [channelId, hasNoMoreRecentMessagesToLoad],\n );\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreRecentFinished = useRef(\n debounce(\n (newMessages: ChannelState<StreamChatGenerics>['messages']) => {\n setLoadingMoreRecent(false);\n setMessages(newMessages);\n setError(false);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const editMessage: InputMessageInputContextValue<StreamChatGenerics>['editMessage'] = (\n updatedMessage,\n ) =>\n doUpdateMessageRequest\n ? doUpdateMessageRequest(channel?.cid || '', updatedMessage)\n : client.updateMessage(updatedMessage);\n\n const setEditingState: MessagesContextValue<StreamChatGenerics>['setEditingState'] = (\n message,\n ) => {\n clearQuotedMessageState();\n setEditing(message);\n };\n\n const setQuotedMessageState: MessagesContextValue<StreamChatGenerics>['setQuotedMessageState'] = (\n messageOrBoolean,\n ) => {\n setQuotedMessage(messageOrBoolean);\n };\n\n const clearEditingState: InputMessageInputContextValue<StreamChatGenerics>['clearEditingState'] =\n () => setEditing(undefined);\n\n const clearQuotedMessageState: InputMessageInputContextValue<StreamChatGenerics>['clearQuotedMessageState'] =\n () => setQuotedMessage(false);\n\n /**\n * Removes the message from local state\n */\n const removeMessage: MessagesContextValue<StreamChatGenerics>['removeMessage'] = (message) => {\n if (channel) {\n channel.state.removeMessage(message);\n setMessages(channel.state.messages);\n if (thread) {\n setThreadMessages(channel.state.threads[thread.id] || []);\n }\n }\n\n if (enableOfflineSupport) {\n dbApi.deleteMessage({\n id: message.id,\n });\n }\n };\n\n const sendReaction = async (type: string, messageId: string) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass<StreamChatGenerics>['sendReaction']> = [\n messageId,\n {\n type,\n } as Reaction<StreamChatGenerics>,\n { enforce_unique: enforceUniqueReaction },\n ];\n\n if (!enableOfflineSupport) {\n await channel.sendReaction(...payload);\n return;\n }\n\n addReactionToLocalState<StreamChatGenerics>({\n channel,\n enforceUniqueReaction,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'send-reaction',\n },\n });\n };\n const deleteMessage: MessagesContextValue<StreamChatGenerics>['deleteMessage'] = async (\n message,\n ) => {\n if (!channel.id) {\n throw new Error('Channel has not been initialized yet');\n }\n\n if (!enableOfflineSupport) {\n if (message.status === MessageStatusTypes.FAILED) {\n removeMessage(message);\n return;\n }\n await client.deleteMessage(message.id);\n return;\n }\n\n if (message.status === MessageStatusTypes.FAILED) {\n DBSyncManager.dropPendingTasks({ messageId: message.id });\n removeMessage(message);\n } else {\n updateMessage({\n ...message,\n cid: channel.cid,\n deleted_at: new Date().toISOString(),\n type: 'deleted',\n });\n\n const data = await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId: message.id,\n payload: [message.id],\n type: 'delete-message',\n },\n });\n\n if (data?.message) {\n updateMessage({ ...data.message });\n }\n }\n };\n\n const deleteReaction: MessagesContextValue<StreamChatGenerics>['deleteReaction'] = async (\n type: string,\n messageId: string,\n ) => {\n if (!channel?.id || !client.user) {\n throw new Error('Channel has not been initialized');\n }\n\n const payload: Parameters<ChannelClass['deleteReaction']> = [messageId, type];\n\n if (!enableOfflineSupport) {\n await channel.deleteReaction(...payload);\n return;\n }\n\n removeReactionFromLocalState({\n channel,\n messageId,\n reactionType: type,\n user: client.user,\n });\n\n setMessages(channel.state.messages);\n\n await DBSyncManager.queueTask<StreamChatGenerics>({\n client,\n task: {\n channelId: channel.id,\n channelType: channel.type,\n messageId,\n payload,\n type: 'delete-reaction',\n },\n });\n };\n\n /**\n * THREAD METHODS\n */\n const openThread: ThreadContextValue<StreamChatGenerics>['openThread'] = useCallback(\n (message) => {\n const newThreadMessages = message?.id ? channel?.state?.threads[message.id] || [] : [];\n setThread(message);\n setThreadMessages(newThreadMessages);\n },\n [setThread, setThreadMessages],\n );\n\n const closeThread: ThreadContextValue<StreamChatGenerics>['closeThread'] = useCallback(() => {\n setThread(null);\n setThreadMessages([]);\n }, [setThread, setThreadMessages]);\n\n // hard limit to prevent you from scrolling faster than 1 page per 2 seconds\n const loadMoreThreadFinished = useRef(\n debounce(\n (\n newThreadHasMore: boolean,\n updatedThreadMessages: ChannelState<StreamChatGenerics>['threads'][string],\n ) => {\n setThreadHasMore(newThreadHasMore);\n setThreadLoadingMore(false);\n setThreadMessages(updatedThreadMessages);\n },\n defaultDebounceInterval,\n debounceOptions,\n ),\n ).current;\n\n const loadMoreThread: ThreadContextValue<StreamChatGenerics>['loadMoreThread'] = async () => {\n if (threadLoadingMore || !thread?.id) {\n return;\n }\n setThreadLoadingMore(true);\n\n try {\n if (channel) {\n const parentID = thread.id;\n\n /**\n * In the channel is re-initializing, then threads may get wiped out during the process\n * (check `addMessagesSorted` method on channel.state). In those cases, we still want to\n * preserve the messages on active thread, so lets simply copy messages from UI state to\n * `channel.state`.\n */\n channel.state.threads[parentID] = threadMessages;\n const oldestMessageID = threadMessages?.[0]?.id;\n\n const limit = 50;\n const queryResponse = await channel.getReplies(parentID, {\n id_lt: oldestMessageID,\n limit,\n });\n\n const updatedHasMore = queryResponse.messages.length === limit;\n const updatedThreadMessages = channel.state.threads[parentID] || [];\n loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);\n }\n } catch (err) {\n console.warn('Message pagination request failed with error', err);\n if (err instanceof Error) {\n setError(err);\n } else {\n setError(true);\n }\n setThreadLoadingMore(false);\n throw err;\n }\n };\n\n const disabledValue = useMemo(\n () => !!channel?.data?.frozen && disableIfFrozenChannel,\n [channel.data?.frozen, disableIfFrozenChannel],\n );\n\n const ownCapabilitiesContext = useCreateOwnCapabilitiesContext({\n channel,\n overrideCapabilities: overrideOwnCapabilities,\n });\n\n const channelContext = useCreateChannelContext({\n channel,\n disabled: disabledValue,\n EmptyStateIndicator,\n enableMessageGroupingByUser,\n enforceUniqueReaction,\n error,\n giphyEnabled:\n giphyEnabled ??\n !!(clientChannelConfig?.commands || [])?.some((command) => command.name === 'giphy'),\n hideDateSeparators,\n hideStickyDateHeader,\n isAdmin,\n isChannelActive: shouldSyncChannel,\n isModerator,\n isOwner,\n lastRead,\n loadChannelAroundMessage,\n loadChannelAtMessage,\n loading,\n LoadingIndicator,\n markRead,\n maxTimeBetweenGroupedMessages,\n members,\n NetworkDownIndicator,\n read,\n reloadChannel,\n scrollToFirstUnreadThreshold,\n setLastRead,\n setTargetedMessage,\n StickyHeader,\n targetedMessage,\n threadList,\n uploadAbortControllerRef,\n watcherCount,\n watchers,\n });\n\n const inputMessageInputContext = useCreateInputMessageInputContext<StreamChatGenerics>({\n additionalTextInputProps,\n AttachButton,\n autoCompleteSuggestionsLimit,\n autoCompleteTriggerSettings,\n channelId,\n clearEditingState,\n clearQuotedMessageState,\n CommandsButton,\n compressImageQuality,\n CooldownTimer,\n disabled: disabledValue,\n doDocUploadRequest,\n doImageUploadRequest,\n editing,\n editMessage,\n emojiSearchIndex,\n FileUploadPreview,\n hasCommands,\n hasFilePicker,\n hasImagePicker,\n ImageUploadPreview,\n initialValue,\n Input,\n InputButtons,\n InputEditingStateHeader,\n InputGiphySearch,\n InputReplyStateHeader,\n maxMessageLength: maxMessageLengthProp ?? clientChannelConfig?.max_message_length ?? undefined,\n maxNumberOfFiles,\n mentionAllAppUsersEnabled,\n mentionAllAppUsersQuery,\n MoreOptionsButton,\n numberOfLines,\n onChangeText,\n quotedMessage,\n SendButton,\n sendImageAsync,\n sendMessage,\n SendMessageDisallowedIndicator,\n setInputRef,\n setQuotedMessageState,\n ShowThreadMessageInChannelButton,\n UploadProgressIndicator,\n });\n\n const messageListContext = useCreatePaginatedMessageListContext({\n channelId,\n hasMore,\n hasNoMoreRecentMessagesToLoad,\n loadingMore: loadingMoreProp !== undefined ? loadingMoreProp : loadingMore,\n loadingMoreRecent:\n loadingMoreRecentProp !== undefined ? loadingMoreRecentProp : loadingMoreRecent,\n loadMore,\n loadMoreRecent,\n messages,\n setLoadingMore,\n setLoadingMoreRecent,\n });\n\n const messagesContext = useCreateMessagesContext({\n additionalTouchableProps,\n Attachment,\n AttachmentActions,\n AudioAttachment,\n Card,\n CardCover,\n CardFooter,\n CardHeader,\n channelId,\n DateHeader,\n deletedMessagesVisibilityType,\n deleteMessage,\n deleteReaction,\n disableTypingIndicator,\n dismissKeyboardOnMessageTouch,\n enableMessageGroupingByUser,\n FileAttachment,\n FileAttachmentGroup,\n FileAttachmentIcon,\n FlatList,\n forceAlignMessages,\n formatDate,\n Gallery,\n getMessagesGroupStyles,\n Giphy,\n giphyVersion,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction,\n handleRetry,\n handleThreadReply,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n initialScrollToFirstUnreadMessage: !messageId && initialScrollToFirstUnreadMessage, // when messageId is set, we scroll to the messageId instead of first unread\n InlineDateSeparator,\n InlineUnreadIndicator,\n isAttachmentEqual,\n legacyImageViewerSwipeBehaviour,\n markdownRules,\n Message,\n messageActions,\n MessageAvatar,\n MessageBounce,\n MessageContent,\n messageContentOrder,\n MessageDeleted,\n MessageError,\n MessageFooter,\n MessageHeader,\n MessageList,\n MessagePinnedHeader,\n MessageReplies,\n MessageRepliesAvatars,\n MessageSimple,\n MessageStatus,\n MessageSystem,\n MessageText,\n myMessageTheme,\n onLongPressMessage,\n onPressInMessage,\n onPressMessage,\n OverlayReactionList,\n ReactionList,\n removeMessage,\n Reply,\n retrySendMessage,\n ScrollToBottomButton,\n selectReaction,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n targetedMessage,\n TypingIndicator,\n TypingIndicatorContainer,\n updateMessage,\n UrlPreview,\n VideoThumbnail,\n });\n\n const suggestionsContext = {\n AutoCompleteSuggestionHeader,\n AutoCompleteSuggestionItem,\n AutoCompleteSuggestionList,\n };\n\n const threadContext = useCreateThreadContext({\n allowThreadMessagesInChannel,\n closeThread,\n loadMoreThread,\n openThread,\n reloadThread,\n setThreadLoadingMore,\n thread,\n threadHasMore,\n threadLoadingMore,\n threadMessages,\n });\n\n const typingContext = useCreateTypingContext({\n typing,\n });\n\n // TODO: replace the null view with appropriate message. Currently this is waiting a design decision.\n if (deleted) return null;\n\n if (!channel || (error && messages.length === 0)) {\n return <LoadingErrorIndicator error={error} listType='message' retry={reloadChannel} />;\n }\n\n if (!channel?.cid || !channel.watch) {\n return (\n <Text style={[styles.selectChannel, { color: black }, selectChannel]} testID='no-channel'>\n {t('Please select a channel first')}\n </Text>\n );\n }\n\n return (\n <KeyboardCompatibleView\n behavior={keyboardBehavior}\n enabled={!disableKeyboardCompatibleView}\n keyboardVerticalOffset={keyboardVerticalOffset}\n {...additionalKeyboardAvoidingViewProps}\n >\n <ChannelProvider<StreamChatGenerics> value={channelContext}>\n <OwnCapabilitiesProvider value={ownCapabilitiesContext}>\n <TypingProvider<StreamChatGenerics> value={typingContext}>\n <PaginatedMessageListProvider<StreamChatGenerics> value={messageListContext}>\n <MessagesProvider<StreamChatGenerics> value={messagesContext}>\n <ThreadProvider<StreamChatGenerics> value={threadContext}>\n <SuggestionsProvider<StreamChatGenerics> value={suggestionsContext}>\n <MessageInputProvider<StreamChatGenerics> value={inputMessageInputContext}>\n <View style={{ height: '100%' }}>{children}</View>\n </MessageInputProvider>\n </SuggestionsProvider>\n </ThreadProvider>\n </MessagesProvider>\n </PaginatedMessageListProvider>\n </TypingProvider>\n </OwnCapabilitiesProvider>\n </ChannelProvider>\n </KeyboardCompatibleView>\n );\n};\n\nexport type ChannelProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>> &\n Pick<ChannelPropsWithContext<StreamChatGenerics>, 'channel'>;\n\n/**\n *\n * The wrapper component for a chat channel. Channel needs to be placed inside a Chat component\n * to receive the StreamChat client instance. MessageList, Thread, and MessageInput must be\n * children of the Channel component to receive the ChannelContext.\n *\n * @example ./Channel.md\n */\nexport const Channel = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChannelProps<StreamChatGenerics>>,\n) => {\n const { client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n const { t } = useTranslationContext();\n\n const shouldSyncChannel = props.thread?.id ? !!props.threadList : true;\n\n const {\n members,\n messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n } = useChannelState<StreamChatGenerics>(\n props.channel,\n props.threadList ? props.thread?.id : undefined,\n );\n\n return (\n <ChannelWithContext<StreamChatGenerics>\n {...{\n client,\n enableOfflineSupport,\n t,\n }}\n {...props}\n shouldSyncChannel={shouldSyncChannel}\n {...{\n members,\n messages: props.messages || messages,\n read,\n setMembers,\n setMessages,\n setRead,\n setThreadMessages,\n setTyping,\n setWatcherCount,\n setWatchers,\n threadMessages,\n typing,\n watcherCount,\n watchers,\n }}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,SAAA,GAAAD,sBAAA,CAAAH,OAAA;AAEA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAcA,IAAAO,wBAAA,GAAAP,OAAA;AAEA,IAAAQ,kCAAA,GAAAR,OAAA;AAEA,IAAAS,yBAAA,GAAAT,OAAA;AAEA,IAAAU,gCAAA,GAAAV,OAAA;AACA,IAAAW,qCAAA,GAAAX,OAAA;AAEA,IAAAY,uBAAA,GAAAZ,OAAA;AAEA,IAAAa,uBAAA,GAAAb,OAAA;AAEA,IAAAc,oBAAA,GAAAd,OAAA;AAEA,IAAAe,eAAA,GAAAf,OAAA;AAEA,IAAAgB,iBAAA,GAAAhB,OAAA;AACA,IAAAiB,YAAA,GAAAjB,OAAA;AACA,IAAAkB,oBAAA,GAAAlB,OAAA;AAIA,IAAAmB,gBAAA,GAAAnB,OAAA;AAIA,IAAAoB,uBAAA,GAAApB,OAAA;AAIA,IAAAqB,4BAAA,GAAArB,OAAA;AAIA,IAAAsB,mBAAA,GAAAtB,OAAA;AAIA,IAAAuB,aAAA,GAAAvB,OAAA;AACA,IAAAwB,cAAA,GAAAxB,OAAA;AACA,IAAAyB,mBAAA,GAAAzB,OAAA;AAIA,IAAA0B,cAAA,GAAA1B,OAAA;AACA,IAAA2B,oBAAA,GAAA3B,OAAA;AAEA,IAAA4B,MAAA,GAAA5B,OAAA;AAOA,IAAA6B,OAAA,GAAA7B,OAAA;AACA,IAAA8B,KAAA,GAAA/B,uBAAA,CAAAC,OAAA;AAEA,IAAA+B,wBAAA,GAAA/B,OAAA;AACA,IAAAgC,cAAA,GAAAhC,OAAA;AACA,IAAAiC,cAAA,GAAAjC,OAAA;AACA,IAAAkC,wBAAA,GAAAlC,OAAA;AACA,IAAAmC,6BAAA,GAAAnC,OAAA;AACA,IAAAoC,qBAAA,GAAApC,OAAA;AACA,IAAAqC,MAAA,GAAArC,OAAA;AAQA,IAAAsC,WAAA,GAAAtC,OAAA;AACA,IAAAuC,kBAAA,GAAAvC,OAAA;AACA,IAAAwC,gBAAA,GAAAxC,OAAA;AACA,IAAAyC,KAAA,GAAAzC,OAAA;AACA,IAAA0C,eAAA,GAAA1C,OAAA;AACA,IAAA2C,oBAAA,GAAA3C,OAAA;AACA,IAAA4C,SAAA,GAAA5C,OAAA;AACA,IAAA6C,QAAA,GAAA7C,OAAA;AACA,IAAA8C,MAAA,GAAA9C,OAAA;AACA,IAAA+C,4BAAA,GAAA/C,OAAA;AACA,IAAAgD,sBAAA,GAAAhD,OAAA;AACA,IAAAiD,eAAA,GAAAjD,OAAA;AACA,IAAAkD,6BAAA,GAAAlD,OAAA;AACA,IAAAmD,2BAAA,GAAAnD,OAAA;AACA,IAAAoD,2BAAA,GAAApD,OAAA;AACA,IAAAqD,oBAAA,GAAArD,OAAA;AACA,IAAAsD,sBAAA,GAAAtD,OAAA;AAIA,IAAAuD,iBAAA,GAAAvD,OAAA;AACA,IAAAwD,uBAAA,GAAAxD,OAAA;AACA,IAAAyD,QAAA,GAAAzD,OAAA;AACA,IAAA0D,cAAA,GAAA1D,OAAA;AACA,IAAA2D,cAAA,GAAA3D,OAAA;AACA,IAAA4D,eAAA,GAAA5D,OAAA;AACA,IAAA6D,eAAA,GAAA7D,OAAA;AACA,IAAA8D,aAAA,GAAA9D,OAAA;AACA,IAAA+D,cAAA,GAAA/D,OAAA;AACA,IAAAgE,oBAAA,GAAAhE,OAAA;AACA,IAAAiE,eAAA,GAAAjE,OAAA;AACA,IAAAkE,sBAAA,GAAAlE,OAAA;AACA,IAAAmE,cAAA,GAAAnE,OAAA;AACA,IAAAoE,cAAA,GAAApE,OAAA;AACA,IAAAqE,aAAA,GAAArE,OAAA;AACA,IAAAsE,aAAA,GAAAtE,OAAA;AACA,IAAAuE,eAAA,GAAAvE,OAAA;AACA,IAAAwE,wBAAA,GAAAxE,OAAA;AACA,IAAAyE,iBAAA,GAAAzE,OAAA;AACA,IAAA0E,sBAAA,GAAA1E,OAAA;AACA,IAAA2E,cAAA,GAAA3E,OAAA;AACA,IAAA4E,kBAAA,GAAA5E,OAAA;AACA,IAAA6E,mBAAA,GAAA7E,OAAA;AACA,IAAA8E,aAAA,GAAA9E,OAAA;AACA,IAAA+E,kBAAA,GAAA/E,OAAA;AACA,IAAAgF,WAAA,GAAAhF,OAAA;AACA,IAAAiF,+BAAA,GAAAjF,OAAA;AACA,IAAAkF,iCAAA,GAAAlF,OAAA;AACA,IAAAmF,wBAAA,GAAAnF,OAAA;AACA,IAAAoF,WAAA,GAAApF,OAAA;AAEA,IAAAqF,oBAAA,GAAArF,OAAA;AACA,IAAAsF,sBAAA,GAAAtF,OAAA;AACA,IAAAuF,YAAA,GAAAvF,OAAA;AACA,IAAAwF,cAAA,GAAAxF,OAAA;AACA,IAAAyF,qBAAA,GAAAzF,OAAA;AACA,IAAA0F,qBAAA,GAAA1F,OAAA;AACA,IAAA2F,gBAAA,GAAA3F,OAAA;AACA,IAAA4F,yBAAA,GAAA5F,OAAA;AACA,IAAA6F,oBAAA,GAAA7F,OAAA;AACA,IAAA8F,MAAA,GAAA9F,OAAA;AAAuD,IAAA+F,SAAA;EAAAC,UAAA;EAAAC,UAAA;AAAA,IAAAC,KAAA;EAAAC,YAAA;AAAA,SAAAC,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAtG,wBAAA0G,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAE,OAAA,CAAAF,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,cAAAN,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAEvD,IAAMW,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,aAAa,EAAE;IAAEC,UAAU,EAAE,MAAM;IAAEC,OAAO,EAAE;EAAG;AACnD,CAAC,CAAC;AAEK,IAAMC,YAA4B,GAAG,CAC1C;EACEC,IAAI,EAAEC,mBAAY;EAClBC,IAAI,EAAE;AACR,CAAC,EACD;EACEF,IAAI,EAAEG,uBAAgB;EACtBD,IAAI,EAAE;AACR,CAAC,EACD;EACEF,IAAI,EAAEI,yBAAkB;EACxBF,IAAI,EAAE;AACR,CAAC,EACD;EACEF,IAAI,EAAEK,kBAAW;EACjBH,IAAI,EAAE;AACR,CAAC,EACD;EACEF,IAAI,EAAEM,kBAAW;EACjBJ,IAAI,EAAE;AACR,CAAC,CACF;AAACK,OAAA,CAAAR,YAAA,GAAAA,YAAA;AAMF,IAAMS,4BAA4B,GAAG,CAAC;AAEtC,IAAMC,uBAAuB,GAAG,GAAG;AACnC,IAAMC,uBAAuB,GAAG,GAAG;AACnC,IAAMC,eAAe,GAAG;EACtBC,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE;AACZ,CAAC;AACD,IAAMC,eAAe,GAAG;EACtBF,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE;AACZ,CAAC;AA8MD,IAAME,kBAAkB,GAAG,SAArBA,kBAAkBA,CAGtBC,KAAqE,EAClE;EAAA,IAAAC,YAAA,EAAAC,cAAA,EAAAC,MAAA,EAAAC,MAAA;EACH,IACEC,mCAAmC,GAgKjCL,KAAK,CAhKPK,mCAAmC;IACnCC,wBAAwB,GA+JtBN,KAAK,CA/JPM,wBAAwB;IACxBC,wBAAwB,GA8JtBP,KAAK,CA9JPO,wBAAwB;IAAAC,qBAAA,GA8JtBR,KAAK,CA7JPS,4BAA4B;IAA5BA,4BAA4B,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAAAE,mBAAA,GA6JjCV,KAAK,CA5JPW,YAAY;IAAZA,YAAY,GAAAD,mBAAA,cAAGE,0BAAmB,GAAAF,mBAAA;IAAAG,iBAAA,GA4JhCb,KAAK,CA3JPc,UAAU;IAAVA,UAAU,GAAAD,iBAAA,cAAGE,sBAAiB,GAAAF,iBAAA;IAAAG,qBAAA,GA2J5BhB,KAAK,CA1JPiB,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAGE,oCAAwB,GAAAF,qBAAA;IAAAG,qBAAA,GA0J1CnB,KAAK,CAzJPoB,eAAe;IAAfA,eAAe,GAAAD,qBAAA,cAAGE,gCAAsB,GAAAF,qBAAA;IAAAG,qBAAA,GAyJtCtB,KAAK,CAxJPuB,4BAA4B;IAA5BA,4BAA4B,GAAAD,qBAAA,cAAGE,0DAAmC,GAAAF,qBAAA;IAAAG,sBAAA,GAwJhEzB,KAAK,CAvJP0B,0BAA0B;IAA1BA,0BAA0B,GAAAD,sBAAA,cAAGE,sDAAiC,GAAAF,sBAAA;IAAAG,sBAAA,GAuJ5D5B,KAAK,CAtJP6B,0BAA0B;IAA1BA,0BAA0B,GAAAD,sBAAA,cAAGE,sDAAiC,GAAAF,sBAAA;IAC9DG,4BAA4B,GAqJ1B/B,KAAK,CArJP+B,4BAA4B;IAC5BC,2BAA2B,GAoJzBhC,KAAK,CApJPgC,2BAA2B;IAAAC,WAAA,GAoJzBjC,KAAK,CAnJPkC,IAAI;IAAJA,IAAI,GAAAD,WAAA,cAAGE,UAAW,GAAAF,WAAA;IAClBG,SAAS,GAkJPpC,KAAK,CAlJPoC,SAAS;IACTC,UAAU,GAiJRrC,KAAK,CAjJPqC,UAAU;IACVC,UAAU,GAgJRtC,KAAK,CAhJPsC,UAAU;IACVC,OAAO,GA+ILvC,KAAK,CA/IPuC,OAAO;IACPC,QAAQ,GA8INxC,KAAK,CA9IPwC,QAAQ;IACRC,MAAM,GA6IJzC,KAAK,CA7IPyC,MAAM;IAAAC,qBAAA,GA6IJ1C,KAAK,CA5IP2C,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAGE,8BAAqB,GAAAF,qBAAA;IACtCG,oBAAoB,GA2IlB7C,KAAK,CA3IP6C,oBAAoB;IAAAC,oBAAA,GA2IlB9C,KAAK,CA1IP+C,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAGE,4BAAoB,GAAAF,oBAAA;IAAAG,iBAAA,GA0IlCjD,KAAK,CAzIPkD,UAAU;IAAVA,UAAU,GAAAD,iBAAA,cAAGE,sBAAiB,GAAAF,iBAAA;IAAAG,qBAAA,GAyI5BpD,KAAK,CAxIPqD,6BAA6B;IAA7BA,6BAA6B,GAAAD,qBAAA,cAAG,QAAQ,GAAAA,qBAAA;IAAAE,qBAAA,GAwItCtD,KAAK,CAvIPuD,sBAAsB;IAAtBA,sBAAsB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAAAE,qBAAA,GAuI3BxD,KAAK,CAtIPyD,6BAA6B;IAA7BA,6BAA6B,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IACrCE,sBAAsB,GAqIpB1D,KAAK,CArIP0D,sBAAsB;IAAAC,qBAAA,GAqIpB3D,KAAK,CApIP4D,6BAA6B;IAA7BA,6BAA6B,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IACpCE,kBAAkB,GAmIhB7D,KAAK,CAnIP6D,kBAAkB;IAClBC,oBAAoB,GAkIlB9D,KAAK,CAlIP8D,oBAAoB;IACpBC,iBAAiB,GAiIf/D,KAAK,CAjIP+D,iBAAiB;IACjBC,oBAAoB,GAgIlBhE,KAAK,CAhIPgE,oBAAoB;IACpBC,sBAAsB,GA+HpBjE,KAAK,CA/HPiE,sBAAsB;IAAAC,qBAAA,GA+HpBlE,KAAK,CA9HPmE,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAGE,8BAAuB,GAAAF,qBAAA;IAAAG,qBAAA,GA8HxCrE,KAAK,CA7HPsE,mBAAmB;IAAnBA,mBAAmB,GAAAD,qBAAA,cAAGE,wCAA0B,GAAAF,qBAAA;IAAAG,qBAAA,GA6H9CxE,KAAK,CA5HPyE,2BAA2B;IAA3BA,2BAA2B,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAClCE,oBAAoB,GA2HlB1E,KAAK,CA3HP0E,oBAAoB;IAAAC,qBAAA,GA2HlB3E,KAAK,CA1HP4E,qBAAqB;IAArBA,qBAAqB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAAAE,qBAAA,GA0H3B7E,KAAK,CAzHP8E,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAGE,8BAAqB,GAAAF,qBAAA;IAAAG,sBAAA,GAyHpChF,KAAK,CAxHPiF,mBAAmB;IAAnBA,mBAAmB,GAAAD,sBAAA,cAAGE,wCAA0B,GAAAF,sBAAA;IAAAG,sBAAA,GAwH9CnF,KAAK,CAvHPoF,kBAAkB;IAAlBA,kBAAkB,GAAAD,sBAAA,cAAGE,kBAAe,GAAAF,sBAAA;IAAAG,qBAAA,GAuHlCtF,KAAK,CAtHPuF,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAGE,oCAAwB,GAAAF,qBAAA;IAAAG,eAAA,GAsH1CzF,KAAK,CArHP0F,QAAQ;IAARA,QAAQ,GAAAD,eAAA,cAAGE,gBAAe,GAAAF,eAAA;IAC1BG,kBAAkB,GAoHhB5F,KAAK,CApHP4F,kBAAkB;IAClBC,UAAU,GAmHR7F,KAAK,CAnHP6F,UAAU;IAAAC,cAAA,GAmHR9F,KAAK,CAlHP+F,OAAO;IAAPA,OAAO,GAAAD,cAAA,cAAGE,gBAAc,GAAAF,cAAA;IACxBG,sBAAsB,GAiHpBjG,KAAK,CAjHPiG,sBAAsB;IAAAC,YAAA,GAiHpBlG,KAAK,CAhHPmG,KAAK;IAALA,KAAK,GAAAD,YAAA,cAAGE,YAAY,GAAAF,YAAA;IACpBG,YAAY,GA+GVrG,KAAK,CA/GPqG,YAAY;IAAAC,mBAAA,GA+GVtG,KAAK,CA9GPuG,YAAY;IAAZA,YAAY,GAAAD,mBAAA,cAAG,cAAc,GAAAA,mBAAA;IAC7BE,WAAW,GA6GTxG,KAAK,CA7GPwG,WAAW;IACXC,UAAU,GA4GRzG,KAAK,CA5GPyG,UAAU;IACVC,YAAY,GA2GV1G,KAAK,CA3GP0G,YAAY;IACZC,UAAU,GA0GR3G,KAAK,CA1GP2G,UAAU;IACVC,UAAU,GAyGR5G,KAAK,CAzGP4G,UAAU;IACVC,UAAU,GAwGR7G,KAAK,CAxGP6G,UAAU;IACVC,gBAAgB,GAuGd9G,KAAK,CAvGP8G,gBAAgB;IAChBC,iBAAiB,GAsGf/G,KAAK,CAtGP+G,iBAAiB;IACjBC,cAAc,GAqGZhH,KAAK,CArGPgH,cAAc;IACdC,WAAW,GAoGTjH,KAAK,CApGPiH,WAAW;IACXC,iBAAiB,GAmGflH,KAAK,CAnGPkH,iBAAiB;IAAAC,kBAAA,GAmGfnH,KAAK,CAlGPoH,WAAW;IAAXA,WAAW,GAAAD,kBAAA,cAAG,IAAI,GAAAA,kBAAA;IAAAE,oBAAA,GAkGhBrH,KAAK,CAhGPsH,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAGE,oBAAY,KAAK,IAAI,GAAAF,oBAAA;IAAAG,qBAAA,GAgGnCxH,KAAK,CA/FPyH,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAAAE,qBAAA,GA+FnB1H,KAAK,CA9FP2H,kBAAkB;IAAlBA,kBAAkB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAAAE,qBAAA,GA8FxB5H,KAAK,CA7FP6H,oBAAoB;IAApBA,oBAAoB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAAAE,qBAAA,GA6F1B9H,KAAK,CA5FP+H,kBAAkB;IAAlBA,kBAAkB,GAAAD,qBAAA,cAAGE,sCAAyB,GAAAF,qBAAA;IAAAG,qBAAA,GA4F5CjI,KAAK,CA3FPkI,iCAAiC;IAAjCA,iCAAiC,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IACzCE,YAAY,GA0FVnI,KAAK,CA1FPmI,YAAY;IAAAC,qBAAA,GA0FVpI,KAAK,CAzFPqI,mBAAmB;IAAnBA,mBAAmB,GAAAD,qBAAA,cAAGE,wCAA0B,GAAAF,qBAAA;IAAAG,qBAAA,GAyF9CvI,KAAK,CAxFPwI,qBAAqB;IAArBA,qBAAqB,GAAAD,qBAAA,cAAGE,4CAA4B,GAAAF,qBAAA;IACpDG,KAAK,GAuFH1I,KAAK,CAvFP0I,KAAK;IAAAC,mBAAA,GAuFH3I,KAAK,CAtFP4I,YAAY;IAAZA,YAAY,GAAAD,mBAAA,cAAGE,0BAAmB,GAAAF,mBAAA;IAAAG,qBAAA,GAsFhC9I,KAAK,CArFP+I,uBAAuB;IAAvBA,uBAAuB,GAAAD,qBAAA,cAAGE,gDAA8B,GAAAF,qBAAA;IAAAG,qBAAA,GAqFtDjJ,KAAK,CApFPkJ,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAGE,kCAA6B,GAAAF,qBAAA;IAAAG,qBAAA,GAoF9CpJ,KAAK,CAnFPqJ,qBAAqB;IAArBA,qBAAqB,GAAAD,qBAAA,cAAGE,4CAA4B,GAAAF,qBAAA;IACpDG,iBAAiB,GAkFfvJ,KAAK,CAlFPuJ,iBAAiB;IACjBC,gBAAgB,GAiFdxJ,KAAK,CAjFPwJ,gBAAgB;IAAAC,qBAAA,GAiFdzJ,KAAK,CAhFP0J,sBAAsB;IAAtBA,sBAAsB,GAAAD,qBAAA,cAAGE,8CAA6B,GAAAF,qBAAA;IACtDG,sBAAsB,GA+EpB5J,KAAK,CA/EP4J,sBAAsB;IAAAC,qBAAA,GA+EpB7J,KAAK,CA9EP8J,+BAA+B;IAA/BA,+BAA+B,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IAAAE,qBAAA,GA8ErC/J,KAAK,CA7EPgK,qBAAqB;IAArBA,qBAAqB,GAAAD,qBAAA,cAAGE,4CAA4B,GAAAF,qBAAA;IAAAG,qBAAA,GA6ElDlK,KAAK,CA5EPmK,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAGE,kCAAuB,GAAAF,qBAAA;IAC7BG,eAAe,GA2E1BrK,KAAK,CA3EPsK,WAAW;IACQC,qBAAqB,GA0EtCvK,KAAK,CA1EPwK,iBAAiB;IAAAC,qBAAA,GA0EfzK,KAAK,CAzEP0K,2BAA2B;IAA3BA,2BAA2B,GAAAD,qBAAA,cAAGE,wDAAkC,GAAAF,qBAAA;IAAAG,qBAAA,GAyE9D5K,KAAK,CAxEP6K,qBAAqB;IAArBA,qBAAqB,GAAAD,qBAAA,cAAGE,4CAA4B,GAAAF,qBAAA;IACpDG,aAAa,GAuEX/K,KAAK,CAvEP+K,aAAa;IACKC,oBAAoB,GAsEpChL,KAAK,CAtEPiL,gBAAgB;IAAAC,qBAAA,GAsEdlL,KAAK,CArEPmL,gBAAgB;IAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;IACrBE,6BAA6B,GAoE3BpL,KAAK,CApEPoL,6BAA6B;IAAAC,qBAAA,GAoE3BrL,KAAK,CAnEPsL,yBAAyB;IAAzBA,yBAAyB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IACjCE,uBAAuB,GAkErBvL,KAAK,CAlEPuL,uBAAuB;IACvBC,OAAO,GAiELxL,KAAK,CAjEPwL,OAAO;IAAAC,cAAA,GAiELzL,KAAK,CAhEP0L,OAAO;IAAPA,OAAO,GAAAD,cAAA,cAAGE,gBAAc,GAAAF,cAAA;IACxBG,cAAc,GA+DZ5L,KAAK,CA/DP4L,cAAc;IAAAC,oBAAA,GA+DZ7L,KAAK,CA9DP8L,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAGE,4BAAoB,GAAAF,oBAAA;IAAAG,oBAAA,GA8DlChM,KAAK,CA7DPiM,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAGE,4BAAoB,GAAAF,oBAAA;IAAAG,qBAAA,GA6DlCnM,KAAK,CA5DPoM,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAGE,8BAAqB,GAAAF,qBAAA;IAAAG,qBAAA,GA4DpCtM,KAAK,CA3DPuM,mBAAmB;IAAnBA,mBAAmB,GAAAD,qBAAA,cAAG,CAAC,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,GAAAA,qBAAA;IAAAE,qBAAA,GA2D/ExM,KAAK,CA1DPyM,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAGE,8BAAqB,GAAAF,qBAAA;IAAAG,mBAAA,GA0DpC3M,KAAK,CAzDP4M,YAAY;IAAZA,YAAY,GAAAD,mBAAA,cAAGE,0BAAmB,GAAAF,mBAAA;IAAAG,oBAAA,GAyDhC9M,KAAK,CAxDP+M,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAGE,4BAAoB,GAAAF,oBAAA;IACpCG,aAAa,GAuDXjN,KAAK,CAvDPiN,aAAa;IACbC,SAAS,GAsDPlN,KAAK,CAtDPkN,SAAS;IAAAC,kBAAA,GAsDPnN,KAAK,CArDPoN,WAAW;IAAXA,WAAW,GAAAD,kBAAA,cAAGE,wBAAkB,GAAAF,kBAAA;IAAAG,qBAAA,GAqD9BtN,KAAK,CApDPuN,mBAAmB;IAAnBA,mBAAmB,GAAAD,qBAAA,cAAGE,wCAA0B,GAAAF,qBAAA;IAAAG,qBAAA,GAoD9CzN,KAAK,CAnDP0N,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAGE,8BAAqB,GAAAF,qBAAA;IAAAG,sBAAA,GAmDpC5N,KAAK,CAlDP6N,qBAAqB;IAArBA,qBAAqB,GAAAD,sBAAA,cAAGE,4CAA4B,GAAAF,sBAAA;IACpDG,QAAQ,GAiDN/N,KAAK,CAjDP+N,QAAQ;IAAAC,oBAAA,GAiDNhO,KAAK,CAhDPiO,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAGE,4BAAoB,GAAAF,oBAAA;IAAAG,oBAAA,GAgDlCnO,KAAK,CA/CPoO,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAGE,4BAAoB,GAAAF,oBAAA;IAAAG,oBAAA,GA+ClCtO,KAAK,CA9CPuO,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAGE,4BAAoB,GAAAF,oBAAA;IACpCG,WAAW,GA6CTzO,KAAK,CA7CPyO,WAAW;IAAAC,qBAAA,GA6CT1O,KAAK,CA5CP2O,iBAAiB;IAAjBA,iBAAiB,GAAAD,qBAAA,cAAGE,oCAAwB,GAAAF,qBAAA;IAC5CG,cAAc,GA2CZ7O,KAAK,CA3CP6O,cAAc;IAAAC,qBAAA,GA2CZ9O,KAAK,CA1CP+O,qCAAqC;IAArCA,qCAAqC,GAAAD,qBAAA,cAAGrP,uBAAuB,GAAAqP,qBAAA;IAAAE,qBAAA,GA0C7DhP,KAAK,CAzCPiP,oBAAoB;IAApBA,oBAAoB,GAAAD,qBAAA,cAAGE,0CAA2B,GAAAF,qBAAA;IAAAG,oBAAA,GAyChDnP,KAAK,CAxCPoP,aAAa;IAAbA,aAAa,GAAAD,oBAAA,cAAG,CAAC,GAAAA,oBAAA;IACjBE,YAAY,GAuCVrP,KAAK,CAvCPqP,YAAY;IACZC,kBAAkB,GAsChBtP,KAAK,CAtCPsP,kBAAkB;IAClBC,uBAAuB,GAqCrBvP,KAAK,CArCPuP,uBAAuB;IACvBC,gBAAgB,GAoCdxP,KAAK,CApCPwP,gBAAgB;IAChBC,cAAc,GAmCZzP,KAAK,CAnCPyP,cAAc;IAAAC,qBAAA,GAmCZ1P,KAAK,CAlCP2P,mBAAmB;IAAnBA,mBAAmB,GAAAD,qBAAA,cAAGE,wCAA0B,GAAAF,qBAAA;IAAAG,mBAAA,GAkC9C7P,KAAK,CAjCP8P,YAAY;IAAZA,YAAY,GAAAD,mBAAA,cAAGE,0BAAmB,GAAAF,mBAAA;IAClCG,IAAI,GAgCFhQ,KAAK,CAhCPgQ,IAAI;IAAAC,YAAA,GAgCFjQ,KAAK,CA/BPkQ,KAAK;IAALA,KAAK,GAAAD,YAAA,cAAGE,YAAY,GAAAF,YAAA;IAAAG,qBAAA,GA+BlBpQ,KAAK,CA9BPqQ,oBAAoB;IAApBA,oBAAoB,GAAAD,qBAAA,cAAGE,0CAA2B,GAAAF,qBAAA;IAClDG,cAAc,GA6BZvQ,KAAK,CA7BPuQ,cAAc;IAAAC,iBAAA,GA6BZxQ,KAAK,CA5BPyQ,UAAU;IAAVA,UAAU,GAAAD,iBAAA,cAAGE,sBAAiB,GAAAF,iBAAA;IAAAG,qBAAA,GA4B5B3Q,KAAK,CA3BP4Q,8BAA8B;IAA9BA,8BAA8B,GAAAD,qBAAA,cAAGE,8DAAqC,GAAAF,qBAAA;IAAAG,qBAAA,GA2BpE9Q,KAAK,CA1BP+Q,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IACtBE,WAAW,GAyBThR,KAAK,CAzBPgR,WAAW;IACXC,UAAU,GAwBRjR,KAAK,CAxBPiR,UAAU;IACVC,WAAW,GAuBTlR,KAAK,CAvBPkR,WAAW;IACXC,OAAO,GAsBLnR,KAAK,CAtBPmR,OAAO;IACPC,iBAAiB,GAqBfpR,KAAK,CArBPoR,iBAAiB;IACjBC,SAAS,GAoBPrR,KAAK,CApBPqR,SAAS;IACTC,eAAe,GAmBbtR,KAAK,CAnBPsR,eAAe;IACfC,WAAW,GAkBTvR,KAAK,CAlBPuR,WAAW;IACXC,iBAAiB,GAiBfxR,KAAK,CAjBPwR,iBAAiB;IAAAC,qBAAA,GAiBfzR,KAAK,CAhBP0R,gCAAgC;IAAhCA,gCAAgC,GAAAD,qBAAA,cAAGE,kEAAuC,GAAAF,qBAAA;IAAAG,qBAAA,GAgBxE5R,KAAK,CAfP6R,2BAA2B;IAA3BA,2BAA2B,GAAAD,qBAAA,cAAGnS,uBAAuB,GAAAmS,qBAAA;IACrDE,YAAY,GAcV9R,KAAK,CAdP8R,YAAY;IAAAC,qBAAA,GAcV/R,KAAK,CAbPgS,kBAAkB;IAAlBA,kBAAkB,GAAAD,qBAAA,cAAGhT,YAAY,GAAAgT,qBAAA;IACjCE,CAAC,GAYCjS,KAAK,CAZPiS,CAAC;IACOC,WAAW,GAWjBlS,KAAK,CAXPmS,MAAM;IACNC,UAAU,GAURpS,KAAK,CAVPoS,UAAU;IACVC,cAAc,GASZrS,KAAK,CATPqS,cAAc;IACdC,MAAM,GAQJtS,KAAK,CARPsS,MAAM;IAAAC,qBAAA,GAQJvS,KAAK,CAPPwS,eAAe;IAAfA,eAAe,GAAAD,qBAAA,cAAGE,gCAAsB,GAAAF,qBAAA;IAAAG,sBAAA,GAOtC1S,KAAK,CANP2S,wBAAwB;IAAxBA,wBAAwB,GAAAD,sBAAA,cAAGE,kDAA+B,GAAAF,sBAAA;IAAAG,qBAAA,GAMxD7S,KAAK,CALP8S,uBAAuB;IAAvBA,uBAAuB,GAAAD,qBAAA,cAAGE,gDAA8B,GAAAF,qBAAA;IAAAG,iBAAA,GAKtDhT,KAAK,CAJPiT,UAAU;IAAVA,UAAU,GAAAD,iBAAA,cAAG7Q,UAAW,GAAA6Q,iBAAA;IAAAE,qBAAA,GAItBlT,KAAK,CAHPmT,cAAc;IAAdA,cAAc,GAAAD,qBAAA,cAAGE,8BAAqB,GAAAF,qBAAA;IACtCG,YAAY,GAEVrT,KAAK,CAFPqT,YAAY;IACZC,QAAQ,GACNtT,KAAK,CADPsT,QAAQ;EAGV,IAAAC,SAAA,GAKI,IAAAC,sBAAQ,EAAC,CAAC;IAAAC,eAAA,GAAAF,SAAA,CAJZG,KAAK;IACQ9U,aAAa,GAAA6U,eAAA,CAAxBlR,OAAO,CAAI3D,aAAa;IACd+U,KAAK,GAAAF,eAAA,CAAfG,MAAM,CAAID,KAAK;EAGnB,IAAAE,SAAA,GAA8B,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAAtCI,OAAO,GAAAF,UAAA;IAAEG,UAAU,GAAAH,UAAA;EAC1B,IAAAI,UAAA,GAA8B,IAAAL,eAAQ,EAA8CM,SAAS,CAAC;IAAAC,UAAA,OAAAL,eAAA,aAAAG,UAAA;IAAvFG,OAAO,GAAAD,UAAA;IAAEE,UAAU,GAAAF,UAAA;EAC1B,IAAAG,UAAA,GAA0B,IAAAV,eAAQ,EAAkB,KAAK,CAAC;IAAAW,UAAA,OAAAT,eAAA,aAAAQ,UAAA;IAAnDE,KAAK,GAAAD,UAAA;IAAEE,QAAQ,GAAAF,UAAA;EACtB,IAAAG,UAAA,GAA8B,IAAAd,eAAQ,EAAC,IAAI,CAAC;IAAAe,UAAA,OAAAb,eAAA,aAAAY,UAAA;IAArCE,OAAO,GAAAD,UAAA;IAAEE,UAAU,GAAAF,UAAA;EAC1B,IAAAG,UAAA,GAAgC,IAAAlB,eAAQ,EAAsD,CAAC;IAAAmB,WAAA,OAAAjB,eAAA,aAAAgB,UAAA;IAAxFE,QAAQ,GAAAD,WAAA;IAAEE,WAAW,GAAAF,WAAA;EAC5B,IAAAG,WAAA,GAA8B,IAAAtB,eAAQ,EAAC,EAACvR,OAAO,YAAPA,OAAO,CAAE8S,KAAK,CAACtH,QAAQ,CAACuH,MAAM,EAAC;IAAAC,WAAA,OAAAvB,eAAA,aAAAoB,WAAA;IAAhEI,OAAO,GAAAD,WAAA;IAAEE,UAAU,GAAAF,WAAA;EAC1B,IAAAG,WAAA,GAAsC,IAAA5B,eAAQ,EAAC,KAAK,CAAC;IAAA6B,WAAA,OAAA3B,eAAA,aAAA0B,WAAA;IAA9CpL,WAAW,GAAAqL,WAAA;IAAEC,cAAc,GAAAD,WAAA;EAElC,IAAAE,WAAA,GAAkD,IAAA/B,eAAQ,EAAC,KAAK,CAAC;IAAAgC,WAAA,OAAA9B,eAAA,aAAA6B,WAAA;IAA1DrL,iBAAiB,GAAAsL,WAAA;IAAEC,oBAAoB,GAAAD,WAAA;EAC9C,IAAAE,WAAA,GACE,IAAAlC,eAAQ,EAA4C,KAAK,CAAC;IAAAmC,WAAA,OAAAjC,eAAA,aAAAgC,WAAA;IADrDE,aAAa,GAAAD,WAAA;IAAEE,gBAAgB,GAAAF,WAAA;EAEtC,IAAAG,WAAA,GAA4B,IAAAtC,eAAQ,EAClC5B,WAAW,IAAI,IACjB,CAAC;IAAAmE,WAAA,OAAArC,eAAA,aAAAoC,WAAA;IAFMjE,MAAM,GAAAkE,WAAA;IAAEC,SAAS,GAAAD,WAAA;EAGxB,IAAAE,WAAA,GAA0C,IAAAzC,eAAQ,EAAC,IAAI,CAAC;IAAA0C,WAAA,OAAAxC,eAAA,aAAAuC,WAAA;IAAjDE,aAAa,GAAAD,WAAA;IAAEE,gBAAgB,GAAAF,WAAA;EACtC,IAAAG,WAAA,GAAkD,IAAA7C,eAAQ,EAAC,KAAK,CAAC;IAAA8C,WAAA,OAAA5C,eAAA,aAAA2C,WAAA;IAA1DE,iBAAiB,GAAAD,WAAA;IAAEE,oBAAoB,GAAAF,WAAA;EAE9C,IAAMG,iBAAiB,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;EAMvC,IAAAC,WAAA,GAA0E,IAAAnD,eAAQ,EAAC,IAAI,CAAC;IAAAoD,WAAA,OAAAlD,eAAA,aAAAiD,WAAA;IAAjFE,6BAA6B,GAAAD,WAAA;IAAEE,gCAAgC,GAAAF,WAAA;EAEtE,IAAAG,mBAAA,GAAqE,IAAAC,uCAAkB,EAAC,CAAC;IAAjFC,mBAAmB,GAAAF,mBAAA,CAAnBE,mBAAmB;IAAEC,kBAAkB,GAAAH,mBAAA,CAAlBG,kBAAkB;IAAEC,eAAe,GAAAJ,mBAAA,CAAfI,eAAe;EAMhE,IAAMC,+BAA+B,GAAG,IAAAV,aAAM,EAAC,KAAK,CAAC;EAOrD,IAAMW,wBAAwB,GAAG,IAAAX,aAAM,EAA+B,IAAIY,GAAG,CAAC,CAAC,CAAC;EAEhF,IAAMC,SAAS,GAAG,CAAAtV,OAAO,oBAAPA,OAAO,CAAEuV,EAAE,KAAI,EAAE;EAEnC,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAMC,WAAW;MAAA,IAAAC,IAAA,OAAAC,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAC,QAAA;QAAA,IAAAC,aAAA;QAAA,OAAAH,YAAA,YAAAI,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAA,MACd,CAACpW,OAAO,IAAI,CAACiP,iBAAiB,IAAIjP,OAAO,CAACqW,WAAW;gBAAAH,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAA,OAAAF,QAAA,CAAAI,MAAA;YAAA;cAOrDP,aAAa,GAAG,KAAK;cAAA,IACpB/V,OAAO,CAACuW,WAAW;gBAAAL,QAAA,CAAAE,IAAA;gBAAA;cAAA;cAAAF,QAAA,CAAAE,IAAA;cAAA,OAChBI,WAAW,CAAC,CAAC;YAAA;cACnBT,aAAa,GAAG,IAAI;YAAC;cAGvB,IAAIpL,SAAS,EAAE;gBACb8L,wBAAwB,CAAC;kBAAE9L,SAAS,EAATA;gBAAU,CAAC,CAAC;cACzC,CAAC,MAAM,IACLhF,iCAAiC,IACjC3F,OAAO,CAAC0W,WAAW,CAAC,CAAC,GAAGzZ,4BAA4B,EACpD;gBACA0Z,+BAA+B,CAAC,CAAC;cACnC,CAAC,MAAM,IAAI,CAACZ,aAAa,EAAE;gBACzBS,WAAW,CAAC,CAAC;cACf;YAAC;YAAA;cAAA,OAAAN,QAAA,CAAAU,IAAA;UAAA;QAAA,GAAAd,OAAA;MAAA,CACF;MAAA,gBAxBKL,WAAWA,CAAA;QAAA,OAAAC,IAAA,CAAAmB,KAAA,OAAAC,SAAA;MAAA;IAAA,GAwBhB;IAEDrB,WAAW,CAAC,CAAC;IAEb,OAAO,YAAM;MACXsB,gBAAgB,CAACC,MAAM,CAAC,CAAC;MACzBC,aAAa,CAACD,MAAM,CAAC,CAAC;MACtBE,eAAe,CAACF,MAAM,CAAC,CAAC;MACxBG,gBAAgB,CAACH,MAAM,CAAC,CAAC;MACzBI,sBAAsB,CAACJ,MAAM,CAAC,CAAC;IACjC,CAAC;EACH,CAAC,EAAE,CAAC1B,SAAS,EAAE3K,SAAS,CAAC,CAAC;EAE1B,IAAM0M,iBAAiB,GAAG,CAAC,CAAC1H,WAAW;EACvC,IAAA6F,gBAAS,EAAC,YAAM;IACd,IAAI7F,WAAW,IAAIV,iBAAiB,EAAE;MACpC8E,SAAS,CAACpE,WAAW,CAAC;MACtB,IAAI3P,OAAO,IAAI2P,WAAW,YAAXA,WAAW,CAAE4F,EAAE,EAAE;QAAA,IAAA+B,qBAAA;QAC9BzI,iBAAiB,CAAC,EAAAyI,qBAAA,GAAAtX,OAAO,CAAC8S,KAAK,CAACyE,OAAO,qBAArBD,qBAAA,CAAwB3H,WAAW,CAAC4F,EAAE,CAAC,KAAI,EAAE,CAAC;MAClE;IACF,CAAC,MAAM;MACLxB,SAAS,CAAC,IAAI,CAAC;IACjB;EACF,CAAC,EAAE,CAACsD,iBAAiB,EAAEpI,iBAAiB,CAAC,CAAC;EAE1C,IAAMuI,mBAAmB,GAAG,IAAAC,kBAAW,EAAC,YAAM;IAAA,IAAAC,qBAAA;IAC5C,IAAMC,WAAW,GAAG3X,OAAO,CAAC4X,IAEf;IACb,IAAID,WAAW,aAAAD,qBAAA,GAAXC,WAAW,CAAEE,gBAAgB,aAA7BH,qBAAA,CAA+BI,QAAQ,CAAC,oBAAoB,CAAC,EAAE;MACjE9X,OAAO,CAAC+X,SAAS,CAAC;QAChBC,SAAS,EAAEpI,MAAM,oBAANA,MAAM,CAAE2F,EAAE;QACrB5Y,IAAI,EAAE;MACR,CAAoC,CAAC;IACvC;EACF,CAAC,EAAE,CAACiT,MAAM,oBAANA,MAAM,CAAE2F,EAAE,EAAED,SAAS,CAAC,CAAC;EAE3B,IAAA2C,wCAAmB,EAACpG,SAAS,EAAE2F,mBAAmB,CAAC;EAKnD,IAAMU,OAAO,GAAG,CAAAhY,MAAM,qBAAAxC,YAAA,GAANwC,MAAM,CAAEiY,IAAI,qBAAZza,YAAA,CAAc0a,IAAI,MAAK,OAAO,IAAI,CAAApY,OAAO,oBAAPA,OAAO,CAAE8S,KAAK,CAACuF,UAAU,CAACD,IAAI,MAAK,OAAO;EAE5F,IAAME,WAAW,GACf,CAAAtY,OAAO,oBAAPA,OAAO,CAAE8S,KAAK,CAACuF,UAAU,CAACD,IAAI,MAAK,mBAAmB,IACtD,CAAApY,OAAO,oBAAPA,OAAO,CAAE8S,KAAK,CAACuF,UAAU,CAACD,IAAI,MAAK,WAAW;EAEhD,IAAMG,OAAO,GAAG,CAAAvY,OAAO,oBAAPA,OAAO,CAAE8S,KAAK,CAACuF,UAAU,CAACD,IAAI,MAAK,OAAO;EAK1D,IAAMI,QAA6D,GAAG,IAAA/D,aAAM,EAC1E,IAAAgE,oBAAQ,EACN,YAAM;IACJ,IAAI,CAACzY,OAAO,IAAIA,OAAO,YAAPA,OAAO,CAAE0Y,YAAY,IAAI,EAACC,mBAAmB,YAAnBA,mBAAmB,CAAEC,WAAW,GAAE;MAC1E;IACF;IAEA,IAAIpX,iBAAiB,EAAE;MACrBA,iBAAiB,CAACxB,OAAO,CAAC;IAC5B,CAAC,MAAM;MACL,IAAA6Y,mCAAuB,EAAC7Y,OAAO,CAACwY,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC;IAC1D;EACF,CAAC,EACDtb,uBAAuB,EACvBE,eACF,CACF,CAAC,CAAC0b,OAAO;EAET,IAAMC,iBAAiB,GAAG,IAAAtE,aAAM,EAC9B,IAAAgE,oBAAQ,EACN,YAAM;IACJ,IAAIzY,OAAO,EAAE;MACXgZ,aAAa,CAACC,oBAAoB,CAACH,OAAO,CAAC;MAC3CnK,WAAW,CAAC3O,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAAC;MACnC0N,uBAAuB,CAACJ,OAAO,CAAC,CAAC;IACnC;EACF,CAAC,EACDtM,qCAAqC,EACrCpP,eACF,CACF,CAAC,CAAC0b,OAAO;EAET,IAAM5B,eAAe,GAAG,IAAAzC,aAAM,EAC5B,IAAAgE,oBAAQ,EACN,YAAM;IACJ,IAAIzY,OAAO,EAAE;MACX8O,SAAS,KAAAqK,SAAA,iBAAMnZ,OAAO,CAAC8S,KAAK,CAAC/C,MAAM,CAAE,CAAC;IACxC;EACF,CAAC,EACDT,2BAA2B,EAC3BlS,eACF,CACF,CAAC,CAAC0b,OAAO;EAET,IAAM7B,aAAa,GAAG,IAAAxC,aAAM,EAC1B,IAAAgE,oBAAQ,EACN,YAAM;IACJ,IAAIzY,OAAO,EAAE;MACX4O,OAAO,KAAAuK,SAAA,iBAAMnZ,OAAO,CAAC8S,KAAK,CAACrF,IAAI,CAAE,CAAC;IACpC;EACF,CAAC,EACD6B,2BAA2B,EAC3BlS,eACF,CACF,CAAC,CAAC0b,OAAO;EAET,IAAM/B,gBAAgB,GAAG,IAAAtC,aAAM,EAC7B,IAAAgE,oBAAQ,EACN,YAAM;IACJvF,UAAU,CAAC,KAAK,CAAC;IACjB,IAAIlT,OAAO,EAAE;MACX0O,UAAU,KAAAyK,SAAA,iBAAMnZ,OAAO,CAAC8S,KAAK,CAAC7J,OAAO,CAAE,CAAC;MACxC0F,WAAW,KAAAyK,mBAAA,aAAKpZ,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAAC,CAAC;MACxCoD,OAAO,KAAAuK,SAAA,iBAAMnZ,OAAO,CAAC8S,KAAK,CAACrF,IAAI,CAAE,CAAC;MAClCqB,SAAS,KAAAqK,SAAA,iBAAMnZ,OAAO,CAAC8S,KAAK,CAAC/C,MAAM,CAAE,CAAC;MACtChB,eAAe,CAAC/O,OAAO,CAAC8S,KAAK,CAACuG,aAAa,CAAC;MAC5CrK,WAAW,KAAAmK,SAAA,iBAAMnZ,OAAO,CAAC8S,KAAK,CAAC/B,QAAQ,CAAE,CAAC;IAC5C;EACF,CAAC,EACDzB,2BAA2B,EAC3BlS,eACF,CACF,CAAC,CAAC0b,OAAO;EAGT,IAAAtD,gBAAS,EAAC,YAAM;IACd,IAAM8D,oBAA0D,GAAG,EAAE;IACrE,IAAItZ,OAAO,IAAIiP,iBAAiB,EAAE;MAChCqK,oBAAoB,CAACC,IAAI,CAACvZ,OAAO,CAACwZ,EAAE,CAAC,aAAa,EAAET,iBAAiB,CAAC,CAAC;MACvEO,oBAAoB,CAACC,IAAI,CAACvZ,OAAO,CAACwZ,EAAE,CAAC,cAAc,EAAEvC,aAAa,CAAC,CAAC;MACpEqC,oBAAoB,CAACC,IAAI,CAACvZ,OAAO,CAACwZ,EAAE,CAAC,cAAc,EAAEtC,eAAe,CAAC,CAAC;MACtEoC,oBAAoB,CAACC,IAAI,CAACvZ,OAAO,CAACwZ,EAAE,CAAC,aAAa,EAAEtC,eAAe,CAAC,CAAC;IACvE;IACA,OAAO,YAAM;MACXoC,oBAAoB,CAACG,OAAO,CAAC,UAACC,CAAC;QAAA,OAAKA,CAAC,CAACC,WAAW,CAAC,CAAC;MAAA,EAAC;IACtD,CAAC;EACH,CAAC,EAAE,CAACrE,SAAS,EAAErG,iBAAiB,CAAC,CAAC;EAGlC,IAAAuG,gBAAS,EAAC,YAAM;IACd,IAAMoE,WAA6C,GAAG,SAAhDA,WAA6CA,CAAIC,KAAK,EAAK;MAC/D,IAAMC,eAAe,GAAG,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;MACrE,IAAIA,eAAe,CAAChC,QAAQ,CAAC+B,KAAK,CAACld,IAAI,CAAC,EAAE;MAC1C,IAAIsS,iBAAiB,EAAE;QACrB,IAAM8K,aAAa,GAAGF,KAAK,CAACld,IAAI,KAAK,cAAc,IAAIkd,KAAK,CAACld,IAAI,KAAK,aAAa;QACnF,IAAI,CAACod,aAAa,EAAE;UAAA,IAAAC,cAAA;UAClB,IAAIpK,MAAM,YAANA,MAAM,CAAE2F,EAAE,EAAE;YACd,IAAM0E,qBAAqB,GACxBrK,MAAM,CAAC2F,EAAE,IAAIvV,OAAO,IAAIA,OAAO,CAAC8S,KAAK,CAACyE,OAAO,CAAC3H,MAAM,CAAC2F,EAAE,CAAC,IAAKzF,cAAc;YAC9EjB,iBAAiB,CAACoL,qBAAqB,CAAC;UAC1C;UAEA,IAAIja,OAAO,IAAI4P,MAAM,YAANA,MAAM,CAAE2F,EAAE,IAAI,EAAAyE,cAAA,GAAAH,KAAK,CAACK,OAAO,qBAAbF,cAAA,CAAezE,EAAE,MAAK3F,MAAM,CAAC2F,EAAE,EAAE;YAC5D,IAAM4E,aAAa,GAAGna,OAAO,CAAC8S,KAAK,CAACsH,aAAa,CAACP,KAAK,CAACK,OAAO,CAAC;YAChEnG,SAAS,CAACoG,aAAa,CAAC;UAC1B;QACF;QAGA,IACEna,OAAO,IACPA,OAAO,CAACuW,WAAW,IACnBsD,KAAK,CAACld,IAAI,KAAK,aAAa,IAC5Bkd,KAAK,CAACld,IAAI,KAAK,cAAc,IAC7Bkd,KAAK,CAACld,IAAI,KAAK,cAAc,IAC7Bkd,KAAK,CAACld,IAAI,KAAK,aAAa,EAC5B;UACAoa,gBAAgB,CAAC,CAAC;QACpB;MACF;IACF,CAAC;IACD,IAAAsD,WAAA,GAAwBra,OAAO,CAACwZ,EAAE,CAACI,WAAW,CAAC;MAAvCD,WAAW,GAAAU,WAAA,CAAXV,WAAW;IACnB,OAAOA,WAAW;EACpB,CAAC,EAAE,CAACrE,SAAS,EAAE1F,MAAM,oBAANA,MAAM,CAAE2F,EAAE,EAAEtG,iBAAiB,CAAC,CAAC;EAG9C,IAAAuG,gBAAS,EAAC,YAAM;IACd,IAAA8E,UAAA,GAAwBpa,MAAM,CAACsZ,EAAE,CAAC,iBAAiB,EAAE,UAACK,KAAK,EAAK;QAC9D,IAAIA,KAAK,CAACU,GAAG,MAAKva,OAAO,oBAAPA,OAAO,CAAEua,GAAG,GAAE;UAC9B5I,UAAU,CAAC,IAAI,CAAC;QAClB;MACF,CAAC,CAAC;MAJMgI,WAAW,GAAAW,UAAA,CAAXX,WAAW;IAMnB,OAAOA,WAAW;EACpB,CAAC,EAAE,CAACrE,SAAS,CAAC,CAAC;EAEf,IAAAE,gBAAS,EAAC,YAAM;IACd,IAAMoE,WAA6C,GAAG,SAAhDA,WAA6CA,CAAIC,KAAK,EAAK;MAC/D,IAAI7Z,OAAO,CAACua,GAAG,KAAKV,KAAK,CAACU,GAAG,EAAExD,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAED,IAAAyD,WAAA,GAAwBta,MAAM,CAACsZ,EAAE,CAAC,wBAAwB,EAAEI,WAAW,CAAC;MAAhED,WAAW,GAAAa,WAAA,CAAXb,WAAW;IACnB,OAAOA,WAAW;EACpB,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMc,mBAAmB,GAAG,IAAAhG,aAAM;IAAA,IAAAiG,KAAA,OAAA/E,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAChC,SAAA8E,SACEC,SAA8B;MAAA,IAAAC,gBAAA;QAAAC,iBAAA;QAAAC,eAAA;QAAAC,wBAAA;QAAAC,oBAAA;QAAAC,UAAA;QAAAC,aAAA;QAAAC,iBAAA;QAAAC,QAAA;QAAAC,cAAA;QAAAC,SAAA;QAAAC,iBAAA;QAAAC,MAAA,GAAA3E,SAAA;MAAA,OAAAlB,YAAA,YAAAI,IAAA,UAAA0F,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAxF,IAAA,GAAAwF,SAAA,CAAAvF,IAAA;UAAA;YAC9ByE,gBAA0C,GAAAY,MAAA,CAAA1I,MAAA,QAAA0I,MAAA,QAAA5J,SAAA,GAAA4J,MAAA,MAAG5J,SAAS;YAEtDiJ,iBAAkE,GAAAW,MAAA,CAAA1I,MAAA,QAAA0I,MAAA,QAAA5J,SAAA,GAAA4J,MAAA,MAAG5J,SAAS;YAE9EO,QAAQ,CAAC,KAAK,CAAC;YAACuJ,SAAA,CAAAxF,IAAA;YAEd6C,aAAa,CAACC,oBAAoB,CAACH,OAAO,CAAC;YAAC6C,SAAA,CAAAvF,IAAA;YAAA,OACtCwE,SAAS,CAAC,CAAC;UAAA;YACjBhI,WAAW,CAAC,IAAIgJ,IAAI,CAAC,CAAC,CAAC;YACvBpJ,UAAU,CAAC,IAAI,CAAC;YACVuI,eAAe,GAAG/a,OAAO,CAAC8S,KAAK,CAACtH,QAAQ;YACxCwP,wBAAwB,GAC5BD,eAAe,CAAChI,MAAM,GAAG,CAAC,IAAIgI,eAAe,KAAK/a,OAAO,CAAC8S,KAAK,CAAC+I,cAAc;YAChF,IAAI,OAAOf,iBAAiB,KAAK,UAAU,EAAE;cAC3CA,iBAAiB,GAAGA,iBAAiB,CAAC,CAAC;YACzC;YAEMG,oBAAoB,GAAGH,iBAAiB,GAC1CC,eAAe,CAACe,SAAS,CAAC,UAAAC,KAAA;cAAA,IAAGxG,EAAE,GAAAwG,KAAA,CAAFxG,EAAE;cAAA,OAAOA,EAAE,KAAKuF,iBAAiB;YAAA,EAAC,GAC/D,CAAC,CAAC;YACN,IAAI9a,OAAO,IAAIib,oBAAoB,KAAK,CAAC,CAAC,EAAE;cAC1ClE,gBAAgB,CAACC,MAAM,CAAC,CAAC;cAMnBkE,UAAU,GAAG,CAAC;cACdC,aAAa,GAAGJ,eAAe,CAAChI,MAAM;cACtCqI,iBAAiB,GAAGD,aAAa,GAAGF,oBAAoB,GAAG,CAAC;cAElE,IAAIG,iBAAiB,GAAGF,UAAU,EAAE;gBAC5BG,QAAQ,GAAGJ,oBAAoB,GAAGC,UAAU;gBAClDlb,OAAO,CAAC8S,KAAK,CAACkJ,aAAa,CAAC,CAAC;gBAC7Bhc,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,GAAGuP,eAAe,CAACkB,KAAK,CAAC,CAAC,EAAEZ,QAAQ,GAAG,CAAC,CAAC;gBAC/Da,+BAA+B,CAACpD,OAAO,CAAC,CAAC;gBACnCwC,cAAc,GAAGP,eAAe,CAACkB,KAAK,CAACZ,QAAQ,GAAG,CAAC,CAAC;gBAC1D,IAAIL,wBAAwB,EAAE;kBACtBO,SAAS,GAAGvb,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACC,IAAI,CAAC,UAACngB,GAAG;oBAAA,OAAKA,GAAG,CAACogB,QAAQ;kBAAA,EAAC;kBACvE,IAAId,SAAS,EAAE;oBACbA,SAAS,CAAC/P,QAAQ,GAAG8P,cAAc;oBACnCnG,+BAA+B,CAAC2D,OAAO,GAAG,IAAI;kBAChD;gBACF;cACF;YACF;YACM0C,iBAAiB,GAAGxb,OAAO,CAAC8S,KAAK,CAAC+I,cAAc,CAAC9I,MAAM,GAAG,CAAC;YACjE/S,OAAO,CAAC8S,KAAK,CAACwJ,aAAa,CAACd,iBAAiB,CAAC;YAC9C3G,gCAAgC,CAAC2G,iBAAiB,CAAC;YACnDzE,gBAAgB,CAAC,CAAC;YAClB,IAAIkE,oBAAoB,KAAK,CAAC,CAAC,EAAE;cAE/BlE,gBAAgB,CAACwF,KAAK,CAAC,CAAC;YAC1B;YACA1B,gBAAgB,oBAAhBA,gBAAgB,CAAG,CAAC;YAACc,SAAA,CAAAvF,IAAA;YAAA;UAAA;YAAAuF,SAAA,CAAAxF,IAAA;YAAAwF,SAAA,CAAAa,EAAA,GAAAb,SAAA;YAErB,IAAIA,SAAA,CAAAa,EAAA,YAAeC,KAAK,EAAE;cACxBrK,QAAQ,CAAAuJ,SAAA,CAAAa,EAAI,CAAC;YACf,CAAC,MAAM;cACLpK,QAAQ,CAAC,IAAI,CAAC;YAChB;YACAc,UAAU,CAAC,KAAK,CAAC;YACjBN,WAAW,CAAC,IAAIgJ,IAAI,CAAC,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAD,SAAA,CAAA/E,IAAA;QAAA;MAAA,GAAA+D,QAAA;IAAA,CAE3B;IAAA,iBAAA+B,EAAA;MAAA,OAAAhC,KAAA,CAAA7D,KAAA,OAAAC,SAAA;IAAA;EAAA,GACH,CAAC;EAKD,IAAMH,+BAA+B,GAAG,SAAlCA,+BAA+BA,CAAA,EAAS;IAC5C,IAAI,CAAC3W,OAAO,EAAE;IACd,IAAI2c,yBAA6C;IAEjD,OAAOlC,mBAAmB,CAAC3B,OAAO,KAAAnD,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAChC,SAAA+G,SAAA;MAAA,IAAAC,WAAA,EAAAC,uBAAA,EAAAC,YAAA,EAAAC,kBAAA,EAAAC,GAAA;MAAA,OAAArH,YAAA,YAAAI,IAAA,UAAAkH,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAhH,IAAA,GAAAgH,SAAA,CAAA/G,IAAA;UAAA;YACQyG,WAAW,GAAG7c,OAAO,CAAC0W,WAAW,CAAC,CAAC;YAAA,MACrCmG,WAAW,KAAK,CAAC;cAAAM,SAAA,CAAA/G,IAAA;cAAA;YAAA;YAAA,OAAA+G,SAAA,CAAA7G,MAAA;UAAA;YACfwG,uBAAuB,GAAG,CAAC,CAAC9c,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACC,IAAI,CAC9D,UAACngB,GAAG;cAAA,OAAKA,GAAG,CAACmhB,SAAS,IAAInhB,GAAG,CAACogB,QAAQ;YAAA,CACxC,CAAC;YAAA,MACGS,uBAAuB,IAAID,WAAW,IAAI7c,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAACuH,MAAM;cAAAoK,SAAA,CAAA/G,IAAA;cAAA;YAAA;YACzEuG,yBAAyB,GACvB3c,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAACxL,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAACuH,MAAM,GAAG8J,WAAW,CAAC,CAACtH,EAAE;YAAC,OAAA4H,SAAA,CAAA7G,MAAA;UAAA;YAGrEyG,YAAY,GAAG/c,OAAO,CAAC2S,QAAQ,CAAC,CAAC;YAAA,KAInCoK,YAAY;cAAAI,SAAA,CAAA/G,IAAA;cAAA;YAAA;YACdlD,UAAU,CAAC,IAAI,CAAC;YAACiK,SAAA,CAAA/G,IAAA;YAAA,OAGCpW,OAAO,CAACqd,KAAK,CAC7B;cACE7R,QAAQ,EAAE;gBACR8R,iBAAiB,EAAEP,YAAY;gBAC/BQ,KAAK,EAAE;cACT,CAAC;cACDC,KAAK,EAAE;YACT,CAAC,EACD,KACF,CAAC;UAAA;YATKP,GAAG,GAAAE,SAAA,CAAAM,IAAA;YAUTd,yBAAyB,IAAAK,kBAAA,GAAGC,GAAG,CAACzR,QAAQ,CAAC4Q,IAAI,CAC3C,UAACsB,CAAC;cAAA,OAAKX,YAAY,IAAIW,CAAC,CAACC,UAAU,GAAG,IAAI/B,IAAI,CAAC8B,CAAC,CAACC,UAAU,CAAC,GAAG,IAAI/B,IAAI,CAAC,CAAC,CAAC;YAAA,CAC5E,CAAC,qBAF2BoB,kBAAA,CAEzBzH,EAAE;YACL,IAAIoH,yBAAyB,EAAE;cAC7B3c,OAAO,CAAC8S,KAAK,CAAC8K,oBAAoB,CAACjB,yBAAyB,CAAC;YAC/D;YAACQ,SAAA,CAAA/G,IAAA;YAAA;UAAA;YAAA+G,SAAA,CAAA/G,IAAA;YAAA,OAEKyH,qBAAqB,CAAC/E,OAAO,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAqE,SAAA,CAAAvG,IAAA;QAAA;MAAA,GAAAgG,QAAA;IAAA,CAExC,IACD,YAAM;MACJ,IAAID,yBAAyB,EAAE;QAC7BzD,uBAAuB,CAACJ,OAAO,CAAC,CAAC;MACnC;IACF,CAAC,EACD;MAAA,OAAM6D,yBAAyB;IAAA,CACjC,CAAC;EACH,CAAC;EAOD,IAAMlG,wBAA6F,GACjG,SADIA,wBAA6FA,CAAAqH,KAAA;IAAA,IACnFC,qBAAqB,GAAAD,KAAA,CAAhCnT,SAAS;IAAA,OACV8P,mBAAmB,CAAC3B,OAAO,KAAAnD,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CACzB,SAAAmI,SAAA;MAAA,IAAAC,iBAAA,EAAAC,qBAAA;MAAA,OAAAtI,YAAA,YAAAI,IAAA,UAAAmI,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAjI,IAAA,GAAAiI,SAAA,CAAAhI,IAAA;UAAA;YACElD,UAAU,CAAC,IAAI,CAAC;YAAC,KACb6K,qBAAqB;cAAAK,SAAA,CAAAhI,IAAA;cAAA;YAAA;YACvBzH,WAAW,CAAC,EAAE,CAAC;YAACyP,SAAA,CAAAhI,IAAA;YAAA,OACVpW,OAAO,CAAC8S,KAAK,CAAC8K,oBAAoB,CAACG,qBAAqB,CAAC;UAAA;YACzDE,iBAAiB,GAAGje,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACC,IAAI,CAAC,UAACngB,GAAG;cAAA,OAAKA,GAAG,CAACmhB,SAAS;YAAA,EAAC;YAAA,MAC5Ea,iBAAiB,IAAI,EAACA,iBAAiB,YAAjBA,iBAAiB,CAAE5B,QAAQ;cAAA+B,SAAA,CAAAhI,IAAA;cAAA;YAAA;YAG7C8H,qBAAqB,GACzBD,iBAAiB,CAACzS,QAAQ,CAACyS,iBAAiB,CAACzS,QAAQ,CAACuH,MAAM,GAAG,CAAC,CAAC,CAACwC,EAAE;YAAA6I,SAAA,CAAAhI,IAAA;YAAA,OAChEpW,OAAO,CAACqd,KAAK,CACjB;cACE7R,QAAQ,EAAE;gBACR6S,MAAM,EAAEH,qBAAqB;gBAC7BX,KAAK,EAAE;cACT;YACF,CAAC,EACD,SACF,CAAC;UAAA;YAAAa,SAAA,CAAAhI,IAAA;YAAA;UAAA;YAAAgI,SAAA,CAAAhI,IAAA;YAAA,OAIGyH,qBAAqB,CAAC/E,OAAO,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAsF,SAAA,CAAAxH,IAAA;QAAA;MAAA,GAAAoH,QAAA;IAAA,CAExC,IACD,YAAM;MACJ,IAAID,qBAAqB,EAAE;QACzB/E,aAAa,CAACC,oBAAoB,CAACH,OAAO,CAAC;QAC3C7D,kBAAkB,CAAC8I,qBAAqB,CAAC;MAC3C;IACF,CAAC,EACDA,qBACF,CAAC;EAAA;EAEL,IAAAvI,gBAAS,EAAC,YAAM;IACd,IAAI,CAACN,eAAe,IAAIF,mBAAmB,EAAE;MAG3CkE,uBAAuB,CAACJ,OAAO,CAAC,CAAC;IACnC;EACF,CAAC,EAAE,CAAC5D,eAAe,CAAC,CAAC;EAWrB,IAAMoJ,oBAAqF,GAAG,SAAxFA,oBAAqFA,CAAAC,KAAA;IAAA,IAAAC,WAAA,GAAAD,KAAA,CACzFE,KAAK;MAALA,KAAK,GAAAD,WAAA,cAAG,CAAC,GAAAA,WAAA;MAAAE,YAAA,GAAAH,KAAA,CACTI,MAAM;MAANA,MAAM,GAAAD,YAAA,cAAG,EAAE,GAAAA,YAAA;MACX/T,SAAS,GAAA4T,KAAA,CAAT5T,SAAS;IAAA,OAET8P,mBAAmB,CAAC3B,OAAO,KAAAnD,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAC,SAAA+I,SAAA;MAAA,OAAAhJ,YAAA,YAAAI,IAAA,UAAA6I,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA3I,IAAA,GAAA2I,SAAA,CAAA1I,IAAA;UAAA;YAAA0I,SAAA,CAAA1I,IAAA;YAAA,OACpB2I,cAAc,CAAC;cAAEN,KAAK,EAALA,KAAK;cAAEE,MAAM,EAANA,MAAM;cAAEhU,SAAS,EAATA;YAAU,CAAC,CAAC;UAAA;YAElD,IAAIA,SAAS,EAAE;cACbsK,kBAAkB,CAACtK,SAAS,CAAC;YAC/B;UAAC;UAAA;YAAA,OAAAmU,SAAA,CAAAlI,IAAA;QAAA;MAAA,GAAAgI,QAAA;IAAA,CACF,GAAC;EAAA;EAQJ,IAAM1C,+BAA+B,GAAG,IAAAzH,aAAM,EAAC,YAAM;IACnD,IAAMuK,gBAAgB,GAAGhf,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACC,IAAI,CAAC,UAACngB,GAAG;MAAA,OAAKA,GAAG,CAACmhB,SAAS,IAAInhB,GAAG,CAACogB,QAAQ;IAAA,EAAC;IAC/F,IAAI,CAAC2C,gBAAgB,EAAE;IAEvBA,gBAAgB,CAAC3C,QAAQ,GAAG,KAAK;IAEjCrc,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAAC5C,IAAI,CAAC;MAC7B6D,SAAS,EAAE,KAAK;MAChBf,QAAQ,EAAE,IAAI;MACd7Q,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ,CAAC,CAAC;EAMF,IAAMyT,8BAA8B,GAAG,IAAAxK,aAAM,EAAC,YAAsC;IAAA,IAArCyK,wBAAwB,GAAApI,SAAA,CAAA/D,MAAA,QAAA+D,SAAA,QAAAjF,SAAA,GAAAiF,SAAA,MAAG,KAAK;IAC7E,IAAI3B,+BAA+B,CAAC2D,OAAO,EAAE;MAC3C,IAAMyE,KAAK,GAAG,CAAC;MAEf,IAAM4B,gBAAgB,GAAGnf,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACC,IAAI,CAAC,UAACngB,GAAG;QAAA,OAAKA,GAAG,CAACogB,QAAQ;MAAA,EAAC;MAC9E,IAAM4B,iBAAiB,GAAGje,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACC,IAAI,CAAC,UAACngB,GAAG;QAAA,OAAKA,GAAG,CAACmhB,SAAS;MAAA,EAAC;MAChF,IAAI+B,gBAAgB,IAAIlB,iBAAiB,IAAIkB,gBAAgB,KAAKlB,iBAAiB,EAAE;QACnF,IAAIiB,wBAAwB,IAAIC,gBAAgB,CAAC3T,QAAQ,CAACuH,MAAM,GAAGwK,KAAK,EAAE;UACxEU,iBAAiB,CAACzS,QAAQ,GAAGyS,iBAAiB,CAACzS,QAAQ,CAAC4T,MAAM,CAC5DD,gBAAgB,CAAC3T,QAAQ,CAACyQ,KAAK,CAAC,CAAC,EAAEsB,KAAK,CAC1C,CAAC;UACD4B,gBAAgB,CAAC3T,QAAQ,GAAG2T,gBAAgB,CAAC3T,QAAQ,CAACyQ,KAAK,CAACsB,KAAK,CAAC;QACpE,CAAC,MAAM;UACLvd,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,GAAGnc,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACkD,MAAM,CAAC,UAACpjB,GAAG;YAAA,OAAK,CAACA,GAAG,CAACogB,QAAQ;UAAA,EAAC;UACpF4B,iBAAiB,CAACzS,QAAQ,GAAGyS,iBAAiB,CAACzS,QAAQ,CAAC4T,MAAM,CAACD,gBAAgB,CAAC3T,QAAQ,CAAC;UACzFyS,iBAAiB,CAAC5B,QAAQ,GAAG,IAAI;UACjClH,+BAA+B,CAAC2D,OAAO,GAAG,KAAK;UAC/CE,aAAa,CAACC,oBAAoB,CAACH,OAAO,CAAC;QAC7C;QACA,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd,CAAC,CAAC;EAEF,IAAMG,oBAAoB,GAAG,IAAAxE,aAAM,EAAiB,CAAC;EAGrD,IAAAe,gBAAS,EACP;IAAA,OAAM,YAAM;MACVwD,aAAa,CAACC,oBAAoB,CAACH,OAAO,CAAC;IAC7C,CAAC;EAAA,GACD,EACF,CAAC;EAID,IAAMI,uBAAuB,GAAG,IAAAzE,aAAM,EAAC,YAAM;IAC3CuE,aAAa,CAACC,oBAAoB,CAACH,OAAO,CAAC;IAC3C,IAAI,CAAC3D,+BAA+B,CAAC2D,OAAO,EAAE;EAQhD,CAAC,CAAC;EAOF,IAAM+E,qBAAqB,GAAG,IAAApJ,aAAM,MAAAkB,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAC,SAAAyJ,SAAA;IAAA,IAAAC,WAAA;MAAAhE,SAAA;MAAAiE,MAAA,GAAA1I,SAAA;IAAA,OAAAlB,YAAA,YAAAI,IAAA,UAAAyJ,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAvJ,IAAA,GAAAuJ,SAAA,CAAAtJ,IAAA;QAAA;UAAOmJ,WAAW,GAAAC,MAAA,CAAAzM,MAAA,QAAAyM,MAAA,QAAA3N,SAAA,GAAA2N,MAAA,MAAG,KAAK;UAC7DP,8BAA8B,CAACnG,OAAO,CAAC,CAAC;UACxC,IAAIyG,WAAW,EAAE;YACThE,SAAS,GAAGvb,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACC,IAAI,CAAC,UAACngB,GAAG;cAAA,OAAKA,GAAG,CAACogB,QAAQ;YAAA,EAAC;YACvE,IAAId,SAAS,EAAEA,SAAS,CAAC/P,QAAQ,GAAG,EAAE;UACxC;UAAC,MACGxL,OAAO,CAAC8S,KAAK,CAAC+I,cAAc,CAAC9I,MAAM,KAAK,CAAC;YAAA2M,SAAA,CAAAtJ,IAAA;YAAA;UAAA;UAAAsJ,SAAA,CAAAtJ,IAAA;UAAA,OACrCpW,OAAO,CAACqd,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;QAAA;UAAAqC,SAAA,CAAAtJ,IAAA;UAAA,OAE7BpW,OAAO,CAAC8S,KAAK,CAAC8K,oBAAoB,CAAC,QAAQ,CAAC;QAAA;QAAA;UAAA,OAAA8B,SAAA,CAAA9I,IAAA;MAAA;IAAA,GAAA0I,QAAA;EAAA,CACnD,GAAC;EAEF,IAAM9I,WAAW,GAAG,SAAdA,WAAWA,CAAA;IAAA,OACfiE,mBAAmB,CAAC3B,OAAO,KAAAnD,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAC,SAAA8J,SAAA;MAAA,OAAA/J,YAAA,YAAAI,IAAA,UAAA4J,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA1J,IAAA,GAAA0J,SAAA,CAAAzJ,IAAA;UAAA;YAAA,MACtB,EAACpW,OAAO,YAAPA,OAAO,CAAEuW,WAAW,KAAI,CAACvW,OAAO,CAAC8S,KAAK,CAACgN,UAAU;cAAAD,SAAA,CAAAzJ,IAAA;cAAA;YAAA;YAAAyJ,SAAA,CAAAzJ,IAAA;YAAA,OAC9CpW,OAAO,oBAAPA,OAAO,CAAEwd,KAAK,CAAC,CAAC;UAAA;YACtBxd,OAAO,oBAAPA,OAAO,CAAE8S,KAAK,CAACwJ,aAAa,CAAC,IAAI,CAAC;YAClCzH,gCAAgC,CAAC,IAAI,CAAC;YAACgL,SAAA,CAAAzJ,IAAA;YAAA;UAAA;YAAAyJ,SAAA,CAAAzJ,IAAA;YAAA,OAEjCpW,OAAO,CAAC8S,KAAK,CAAC8K,oBAAoB,CAAC,QAAQ,CAAC;UAAA;UAAA;YAAA,OAAAiC,SAAA,CAAAjJ,IAAA;QAAA;MAAA,GAAA+I,QAAA;IAAA,CAErD,GAAC;EAAA;EAEJ,IAAMI,YAAY;IAAA,IAAAC,MAAA,OAAArK,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAoK,SAAA;MAAA,IAAAC,QAAA,EAAA3C,KAAA,EAAA4C,aAAA,EAAAC,cAAA,EAAAnG,qBAAA,EAAAoG,qBAAA,EAAAC,SAAA,EAAAC,UAAA,EAAAC,aAAA,EAAAC,gBAAA;MAAA,OAAA7K,YAAA,YAAAI,IAAA,UAAA0K,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAxK,IAAA,GAAAwK,SAAA,CAAAvK,IAAA;UAAA;YAAA,MACf,CAACpW,OAAO,IAAI,EAAC4P,MAAM,YAANA,MAAM,CAAE2F,EAAE;cAAAoL,SAAA,CAAAvK,IAAA;cAAA;YAAA;YAAA,OAAAuK,SAAA,CAAArK,MAAA;UAAA;YAC3B/B,oBAAoB,CAAC,IAAI,CAAC;YAACoM,SAAA,CAAAxK,IAAA;YAEnB+J,QAAQ,GAAGtQ,MAAM,CAAC2F,EAAE;YAEpBgI,KAAK,GAAG,EAAE;YAChBvd,OAAO,CAAC8S,KAAK,CAACyE,OAAO,CAAC2I,QAAQ,CAAC,GAAG,EAAE;YAACS,SAAA,CAAAvK,IAAA;YAAA,OACTpW,OAAO,CAAC4gB,UAAU,CAACV,QAAQ,EAAE;cACvD3C,KAAK,EAALA;YACF,CAAC,CAAC;UAAA;YAFI4C,aAAa,GAAAQ,SAAA,CAAAlD,IAAA;YAIb2C,cAAc,GAAGD,aAAa,CAAC3U,QAAQ,CAACuH,MAAM,KAAKwK,KAAK;YACxDtD,qBAAqB,GAAGja,OAAO,CAAC8S,KAAK,CAACyE,OAAO,CAAC2I,QAAQ,CAAC,IAAI,EAAE;YACnE9I,sBAAsB,CAACgJ,cAAc,EAAEnG,qBAAqB,CAAC;YAAC0G,SAAA,CAAAvK,IAAA;YAAA,OACnCpW,OAAO,CAAC6gB,eAAe,CAAC,CAACX,QAAQ,CAAC,CAAC;UAAA;YAAAG,qBAAA,GAAAM,SAAA,CAAAlD,IAAA;YAAtDjS,SAAQ,GAAA6U,qBAAA,CAAR7U,QAAQ;YAAA+U,UAAA,OAAA9O,eAAA,aACQjG,SAAQ,MAAzBgV,aAAa,GAAAD,UAAA;YACpB,IAAIC,aAAa,EAAE;cACXC,gBAAgB,GAAGzgB,OAAO,CAAC8S,KAAK,CAACsH,aAAa,CAACoG,aAAa,CAAC;cACnEzM,SAAS,CAAC0M,gBAAgB,CAAC;YAC7B;YAACE,SAAA,CAAAvK,IAAA;YAAA;UAAA;YAAAuK,SAAA,CAAAxK,IAAA;YAAAwK,SAAA,CAAAnE,EAAA,GAAAmE,SAAA;YAEDG,OAAO,CAACC,IAAI,CAAC,0CAA0C,EAAAJ,SAAA,CAAAnE,EAAK,CAAC;YAC7D,IAAImE,SAAA,CAAAnE,EAAA,YAAeC,KAAK,EAAE;cACxBrK,QAAQ,CAAAuO,SAAA,CAAAnE,EAAI,CAAC;YACf,CAAC,MAAM;cACLpK,QAAQ,CAAC,IAAI,CAAC;YAChB;YACAmC,oBAAoB,CAAC,KAAK,CAAC;YAAC,MAAAoM,SAAA,CAAAnE,EAAA;UAAA;UAAA;YAAA,OAAAmE,SAAA,CAAA/J,IAAA;QAAA;MAAA,GAAAqJ,QAAA;IAAA,CAG/B;IAAA,gBA/BKF,YAAYA,CAAA;MAAA,OAAAC,MAAA,CAAAnJ,KAAA,OAAAC,SAAA;IAAA;EAAA,GA+BjB;EAED,IAAMkK,aAAa;IAAA,IAAAC,MAAA,OAAAtL,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAqL,SAAA;MAAA,IAAAC,UAAA,EAAArO,KAAA,EAAAsO,iBAAA,EAAAC,mBAAA,EAAAC,oBAAA,EAAAC,iBAAA,EAAAC,oBAAA,EAAAC,YAAA,EAAAC,cAAA,EAAAC,oBAAA,EAAAC,0BAAA,EAAAC,6BAAA,EAAAC,0BAAA,EAAAC,6BAAA,EAAAC,aAAA,EAAAC,KAAA;MAAA,OAAArM,YAAA,YAAAI,IAAA,UAAAkM,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAAhM,IAAA,GAAAgM,SAAA,CAAA/L,IAAA;UAAA;YAAA,MAChB,CAACpW,OAAO,IAAIwU,iBAAiB,CAACsE,OAAO;cAAAqJ,SAAA,CAAA/L,IAAA;cAAA;YAAA;YAAA,OAAA+L,SAAA,CAAA7L,MAAA;UAAA;YAAA,IACpCtW,OAAO,CAACuW,WAAW;cAAA4L,SAAA,CAAA/L,IAAA;cAAA;YAAA;YAAA,OAAA+L,SAAA,CAAA7L,MAAA;UAAA;YACxBnB,+BAA+B,CAAC2D,OAAO,GAAG,KAAK;YAC/CE,aAAa,CAACC,oBAAoB,CAACH,OAAO,CAAC;YAC3CtE,iBAAiB,CAACsE,OAAO,GAAG,IAAI;YAEhC1G,QAAQ,CAAC,KAAK,CAAC;YAAC+P,SAAA,CAAAhM,IAAA;YAAAgM,SAAA,CAAA/L,IAAA;YAAA,OAMMpW,OAAO,CAACwd,KAAK,CAAC;cAChChS,QAAQ,EAAE;gBACR+R,KAAK,EAAE/R,QAAQ,CAACuH,MAAM,GAAG;cAC3B;YACF,CAAC,CAAC;UAAA;YAJID,KAAK,GAAAqP,SAAA,CAAA1E,IAAA;YAML2D,iBAAiB,GAAG5V,QAAQ,CAAC,CAAC,CAAC;YAC/B6V,mBAAmB,IAAAF,UAAA,GAAG3V,QAAQ,CAAC,CAAC,CAAC,qBAAX2V,UAAA,CAAa5L,EAAE;YACrC+L,oBAAoB,GAAG9V,QAAQ,CAACA,QAAQ,CAACuH,MAAM,GAAG,CAAC,CAAC;YAEpDwO,iBAAiB,GAAGzO,KAAK,CAACtH,QAAQ,CAAC,CAAC,CAAC;YACrCgW,oBAAoB,GAAG1O,KAAK,CAACtH,QAAQ,CAACsH,KAAK,CAACtH,QAAQ,CAACuH,MAAM,GAAG,CAAC,CAAC;YAAA,MAGpE,CAACqO,iBAAiB,IAClB,CAACE,oBAAoB,IACrB,CAACC,iBAAiB,IAClB,CAACC,oBAAoB;cAAAW,SAAA,CAAA/L,IAAA;cAAA;YAAA;YAGrBpW,OAAO,CAAC8S,KAAK,CAACkJ,aAAa,CAAC,CAAC;YAC7Bhc,OAAO,CAAC8S,KAAK,CAACwJ,aAAa,CAAC,IAAI,CAAC;YACjCtc,OAAO,CAAC8S,KAAK,CAACsP,iBAAiB,CAACtP,KAAK,CAACtH,QAAQ,CAAC;YAC/CxL,OAAO,CAAC8S,KAAK,CAACuP,iBAAiB,CAACvP,KAAK,CAACwP,eAAe,CAAC;YAEtDvL,gBAAgB,CAAC,CAAC;YAAC,OAAAoL,SAAA,CAAA7L,MAAA;UAAA;YAIfmL,YAAY,GAAG,SAAfA,YAAYA,CAAIvH,OAAiC;cAAA,IAAAqI,kBAAA,EAAAC,mBAAA;cAAA,WAAArJ,SAAA,iBAEhDe,OAAO;gBACVyD,UAAU,EAAEzD,OAAO,CAACyD,UAAU,CAAC8E,QAAQ,CAAC,CAAC;gBACzCC,SAAS,GAAAH,kBAAA,GAAErI,OAAO,CAACwI,SAAS,qBAAjBH,kBAAA,CAAmBE,QAAQ,CAAC,CAAC;gBACxCE,UAAU,GAAAH,mBAAA,GAAEtI,OAAO,CAACyI,UAAU,qBAAlBH,mBAAA,CAAoBC,QAAQ,CAAC;cAAC;YAAA,CACQ;YAEhDf,cAAc,GAAGlW,QAAQ,CAC5B6T,MAAM,CAAC,UAACnF,OAAO;cAAA,OAAKA,OAAO,CAAC0I,MAAM,KAAKC,yBAAkB,CAACC,MAAM;YAAA,EAAC,CACjEC,GAAG,CAACtB,YAAY,CAAC;YAEdE,oBAAoB,GAAG/R,MAAM,GAC/BE,cAAc,CACXuP,MAAM,CAAC,UAACnF,OAAO;cAAA,OAAKA,OAAO,CAAC0I,MAAM,KAAKC,yBAAkB,CAACC,MAAM;YAAA,EAAC,CACjEC,GAAG,CAACtB,YAAY,CAAC,GACpB,EAAE;YAEAG,0BAA0B,GAAGR,iBAAiB,CAACzD,UAAU;YACzDkE,6BAA6B,GAAGP,oBAAoB,CAAC3D,UAAU;YAC/DmE,0BAA0B,GAAGP,iBAAiB,CAAC5D,UAAU,GAC3D,IAAI/B,IAAI,CAAC2F,iBAAiB,CAAC5D,UAAU,CAAC,GACtC,IAAI/B,IAAI,CAAC,CAAC;YACRmG,6BAA6B,GAAGP,oBAAoB,YAApBA,oBAAoB,CAAE7D,UAAU,GAClE,IAAI/B,IAAI,CAAC4F,oBAAoB,CAAC7D,UAAU,CAAC,GACzC,IAAI/B,IAAI,CAAC,CAAC;YAEVoG,aAAa,GAAG,EAAE;YAEtB,IACEZ,iBAAiB,IACjBQ,0BAA0B,IAC1BC,6BAA6B,IAC7BC,0BAA0B,GAAGF,0BAA0B,IACvDG,6BAA6B,IAAIF,6BAA6B,EAC9D;cACMI,KAAK,GAAGnP,KAAK,CAACtH,QAAQ,CAACsQ,SAAS,CAAC,UAAC5B,OAAO;gBAAA,OAAKA,OAAO,CAAC3E,EAAE,KAAK8L,mBAAmB;cAAA,EAAC;cACvFW,aAAa,GAAGlP,KAAK,CAACtH,QAAQ,CAACyQ,KAAK,CAACgG,KAAK,CAAC;YAC7C,CAAC,MAAM;cACLD,aAAa,GAAGlP,KAAK,CAACtH,QAAQ;YAChC;YAEAxL,OAAO,CAAC8S,KAAK,CAACwJ,aAAa,CAAC,IAAI,CAAC;YACjCtc,OAAO,CAAC8S,KAAK,CAACkJ,aAAa,CAAC,CAAC;YAC7Bhc,OAAO,CAAC8S,KAAK,CAACsP,iBAAiB,CAACJ,aAAa,CAAC;YAC9ChiB,OAAO,CAAC8S,KAAK,CAACuP,iBAAiB,CAACvP,KAAK,CAACwP,eAAe,CAAC;YACtDzN,gCAAgC,CAAC,IAAI,CAAC;YACtCrC,UAAU,CAAC,IAAI,CAAC;YAChBuE,gBAAgB,CAAC,CAAC;YAElB,IAAI2K,cAAc,CAAC3O,MAAM,EAAE;cACzB/S,OAAO,CAAC8S,KAAK,CAACsP,iBAAiB,CAACV,cAAc,CAAC;cAC/C3K,gBAAgB,CAAC,CAAC;YACpB;YAACoL,SAAA,CAAA/L,IAAA;YAAA,OAEK2J,YAAY,CAAC,CAAC;UAAA;YAEpB,IAAInQ,MAAM,IAAI+R,oBAAoB,CAAC5O,MAAM,EAAE;cACzC/S,OAAO,CAAC8S,KAAK,CAACsP,iBAAiB,CAACT,oBAAoB,CAAC;cACrD9S,iBAAiB,KAAAuK,mBAAA,aAAKpZ,OAAO,CAAC8S,KAAK,CAACyE,OAAO,CAAC3H,MAAM,CAAC2F,EAAE,CAAC,CAAC,CAAC;YAC1D;YAAC4M,SAAA,CAAA/L,IAAA;YAAA;UAAA;YAAA+L,SAAA,CAAAhM,IAAA;YAAAgM,SAAA,CAAA3F,EAAA,GAAA2F,SAAA;YAED,IAAIA,SAAA,CAAA3F,EAAA,YAAeC,KAAK,EAAE;cACxBrK,QAAQ,CAAA+P,SAAA,CAAA3F,EAAI,CAAC;YACf,CAAC,MAAM;cACLpK,QAAQ,CAAC,IAAI,CAAC;YAChB;YACAc,UAAU,CAAC,KAAK,CAAC;UAAC;YAGpBsB,iBAAiB,CAACsE,OAAO,GAAG,KAAK;UAAC;UAAA;YAAA,OAAAqJ,SAAA,CAAAvL,IAAA;QAAA;MAAA,GAAAsK,QAAA;IAAA,CACnC;IAAA,gBAjHKF,aAAaA,CAAA;MAAA,OAAAC,MAAA,CAAApK,KAAA,OAAAC,SAAA;IAAA;EAAA,GAiHlB;EAGD,IAAMkM,gBAAgB,GAAG,IAAAvO,aAAM,EAACuM,aAAa,CAAC;EAC9CgC,gBAAgB,CAAClK,OAAO,GAAGkI,aAAa;EAExC,IAAAxL,gBAAS,EAAC,YAAM;IACd,IAAMyN,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAA,EAAS;MACrC,IAAIhU,iBAAiB,EAAE;QACrB+T,gBAAgB,CAAClK,OAAO,CAAC,CAAC;MAC5B;IACF,CAAC;IACD,IAAIoK,6BAA4D;IAEhE,IAAI/gB,oBAAoB,EAAE;MACxB+gB,6BAA6B,GAAGC,4BAAa,CAACC,kBAAkB,CAAC,UAACC,aAAa,EAAK;QAClF,IAAIA,aAAa,EAAE;UACjBJ,wBAAwB,CAAC,CAAC;QAC5B;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACLC,6BAA6B,GAAGhjB,MAAM,CAACsZ,EAAE,CAAC,oBAAoB,EAAE,UAACK,KAAK,EAAK;QACzE,IAAIA,KAAK,CAACyJ,MAAM,EAAE;UAChBL,wBAAwB,CAAC,CAAC;QAC5B;MACF,CAAC,CAAC;IACJ;IACA,OAAO,YAAM;MACXC,6BAA6B,CAACvJ,WAAW,CAAC,CAAC;IAC7C,CAAC;EACH,CAAC,EAAE,CAACxX,oBAAoB,EAAE8M,iBAAiB,CAAC,CAAC;EAE7C,IAAMsU,aAAa,GAAG,SAAhBA,aAAaA,CAAA;IAAA,OACjB9I,mBAAmB,CAAC3B,OAAO,KAAAnD,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAC,SAAA2N,UAAA;MAAA,OAAA5N,YAAA,YAAAI,IAAA,UAAAyN,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAvN,IAAA,GAAAuN,UAAA,CAAAtN,IAAA;UAAA;YAC1BlD,UAAU,CAAC,IAAI,CAAC;YAACwQ,UAAA,CAAAtN,IAAA;YAAA,OACXyH,qBAAqB,CAAC/E,OAAO,CAAC,IAAI,CAAC;UAAA;YACzC5F,UAAU,CAAC,KAAK,CAAC;YACjBlT,OAAO,oBAAPA,OAAO,CAAE8S,KAAK,CAACwJ,aAAa,CAAC,IAAI,CAAC;YAClCzH,gCAAgC,CAAC,IAAI,CAAC;UAAC;UAAA;YAAA,OAAA6O,UAAA,CAAA9M,IAAA;QAAA;MAAA,GAAA4M,SAAA;IAAA,CACxC,GAAC;EAAA;EAUJ,IAAMzE,cAAc;IAAA,IAAA4E,MAAA,OAAAhO,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAA+N,UAAAC,MAAA;MAAA,IAAAC,YAAA,EAAArF,KAAA,EAAAsF,aAAA,EAAApF,MAAA,EAAAhU,SAAA;MAAA,OAAAiL,YAAA,YAAAI,IAAA,UAAAgO,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAA9N,IAAA,GAAA8N,UAAA,CAAA7N,IAAA;UAAA;YAAA0N,YAAA,GAAAD,MAAA,CACrBpF,KAAK,EAALA,KAAK,GAAAqF,YAAA,cAAG,EAAE,GAAAA,YAAA,EAAAC,aAAA,GAAAF,MAAA,CACVlF,MAAM,EAANA,MAAM,GAAAoF,aAAA,cAAG,EAAE,GAAAA,aAAA,EACXpZ,SAAS,GAAAkZ,MAAA,CAATlZ,SAAS;YAAA,IAEJ3K,OAAO;cAAAikB,UAAA,CAAA7N,IAAA;cAAA;YAAA;YAAA,OAAA6N,UAAA,CAAA3N,MAAA;UAAA;YACZtW,OAAO,CAAC8S,KAAK,CAACwJ,aAAa,CAAC,KAAK,CAAC;YAClCnH,+BAA+B,CAAC2D,OAAO,GAAG,KAAK;YAC/CE,aAAa,CAACC,oBAAoB,CAACH,OAAO,CAAC;YAC3C9Y,OAAO,CAAC8S,KAAK,CAACkJ,aAAa,CAAC,CAAC;YAC7BrN,WAAW,CAAC,EAAE,CAAC;YAAC,IACXhE,SAAS;cAAAsZ,UAAA,CAAA7N,IAAA;cAAA;YAAA;YAAA6N,UAAA,CAAA7N,IAAA;YAAA,OACNpW,OAAO,CAACqd,KAAK,CAAC;cAClB7R,QAAQ,EAAE;gBACR+R,KAAK,EAAEoB;cACT,CAAC;cACDnB,KAAK,EAAE;YACT,CAAC,CAAC;UAAA;YAEFxd,OAAO,CAAC8S,KAAK,CAACwJ,aAAa,CAAC,IAAI,CAAC;YAAC,OAAA2H,UAAA,CAAA3N,MAAA;UAAA;YAAA2N,UAAA,CAAA7N,IAAA;YAAA,OAI9B8N,kBAAkB,CAACvZ,SAAS,EAAEgU,MAAM,CAAC;UAAA;YAAAsF,UAAA,CAAA7N,IAAA;YAAA,OACrC+N,iBAAiB,CAACxZ,SAAS,EAAE8T,KAAK,CAAC;UAAA;UAAA;YAAA,OAAAwF,UAAA,CAAArN,IAAA;QAAA;MAAA,GAAAgN,SAAA;IAAA,CAC1C;IAAA,gBAzBK7E,cAAcA,CAAAqF,GAAA;MAAA,OAAAT,MAAA,CAAA9M,KAAA,OAAAC,SAAA;IAAA;EAAA,GAyBnB;EASD,IAAMoN,kBAAkB;IAAA,IAAAG,MAAA,OAAA1O,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAyO,UAAO3Z,SAAiB;MAAA,IAAA4S,KAAA;QAAAgH,OAAA,GAAAzN,SAAA;MAAA,OAAAlB,YAAA,YAAAI,IAAA,UAAAwO,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAtO,IAAA,GAAAsO,UAAA,CAAArO,IAAA;UAAA;YAAEmH,KAAK,GAAAgH,OAAA,CAAAxR,MAAA,QAAAwR,OAAA,QAAA1S,SAAA,GAAA0S,OAAA,MAAG,CAAC;YAAA,IACvDvkB,OAAO;cAAAykB,UAAA,CAAArO,IAAA;cAAA;YAAA;YAAA,OAAAqO,UAAA,CAAAnO,MAAA;UAAA;YAAAmO,UAAA,CAAArO,IAAA;YAAA,OAENpW,OAAO,CAACqd,KAAK,CAAC;cAClB7R,QAAQ,EAAE;gBACRkZ,KAAK,EAAE/Z,SAAS;gBAChB4S,KAAK,EAALA;cACF,CAAC;cACDC,KAAK,EAAE;YACT,CAAC,CAAC;UAAA;YAEFxd,OAAO,CAAC8S,KAAK,CAACwJ,aAAa,CAAC,KAAK,CAAC;UAAC;UAAA;YAAA,OAAAmI,UAAA,CAAA7N,IAAA;QAAA;MAAA,GAAA0N,SAAA;IAAA,CACpC;IAAA,gBAZKJ,kBAAkBA,CAAAS,GAAA;MAAA,OAAAN,MAAA,CAAAxN,KAAA,OAAAC,SAAA;IAAA;EAAA,GAYvB;EASD,IAAMqN,iBAAiB;IAAA,IAAAS,MAAA,OAAAjP,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAgP,UAAOla,SAAiB;MAAA,IAAA4S,KAAA;QAAAzK,KAAA;QAAAgS,UAAA;QAAAC,OAAA,GAAAjO,SAAA;MAAA,OAAAlB,YAAA,YAAAI,IAAA,UAAAgP,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAA9O,IAAA,GAAA8O,UAAA,CAAA7O,IAAA;UAAA;YAAEmH,KAAK,GAAAwH,OAAA,CAAAhS,MAAA,QAAAgS,OAAA,QAAAlT,SAAA,GAAAkT,OAAA,MAAG,CAAC;YAAA,IACtD/kB,OAAO;cAAAilB,UAAA,CAAA7O,IAAA;cAAA;YAAA;YAAA,OAAA6O,UAAA,CAAA3O,MAAA;UAAA;YAAA2O,UAAA,CAAA7O,IAAA;YAAA,OACQpW,OAAO,CAACqd,KAAK,CAAC;cAChC7R,QAAQ,EAAE;gBACR6S,MAAM,EAAE1T,SAAS;gBACjB4S,KAAK,EAALA;cACF,CAAC;cACDC,KAAK,EAAE;YACT,CAAC,CAAC;UAAA;YANI1K,KAAK,GAAAmS,UAAA,CAAAxH,IAAA;YAQX,IAAI3K,KAAK,CAACtH,QAAQ,CAACuH,MAAM,GAAGwK,KAAK,EAAE;cAE3BuH,UAAU,GAAG9kB,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACC,IAAI,CAAC,UAACngB,GAAG;gBAAA,OAAKA,GAAG,CAACmhB,SAAS;cAAA,EAAC;cACzE,IAAI0H,UAAU,IAAI,CAACA,UAAU,CAACzI,QAAQ,EAAE;gBACtCrc,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,GAAGnc,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACkD,MAAM,CAAC,UAACpjB,GAAG;kBAAA,OAAK,CAACA,GAAG,CAACogB,QAAQ;gBAAA,EAAC;gBACpFyI,UAAU,CAACzI,QAAQ,GAAG,IAAI;cAC5B;cACArc,OAAO,CAAC8S,KAAK,CAACwJ,aAAa,CAAC,IAAI,CAAC;cACjCzH,gCAAgC,CAAC,IAAI,CAAC;YACxC,CAAC,MAAM;cACLqH,+BAA+B,CAACpD,OAAO,CAAC,CAAC;cACzC9Y,OAAO,CAAC8S,KAAK,CAACwJ,aAAa,CAAC,KAAK,CAAC;cAClCzH,gCAAgC,CAAC,KAAK,CAAC;YACzC;UAAC;UAAA;YAAA,OAAAoQ,UAAA,CAAArO,IAAA;QAAA;MAAA,GAAAiO,SAAA;IAAA,CACF;IAAA,gBAxBKV,iBAAiBA,CAAAe,GAAA;MAAA,OAAAN,MAAA,CAAA/N,KAAA,OAAAC,SAAA;IAAA;EAAA,GAwBtB;EAKD,IAAMqO,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAA,EAAS;IACnC,IAAI;MACF,OAAOnlB,OAAO,oBAAPA,OAAO,CAAEolB,SAAS,CAAC,CAAC;IAC7B,CAAC,CAAC,OAAOC,CAAC,EAAE;MACV,OAAO,IAAI;IACb;EACF,CAAC;EAOD,IAAM1M,mBAAmB,GAAGwM,sBAAsB,CAAC,CAAC;EAMpD,IAAMG,aAAwE,GAAG,SAA3EA,aAAwEA,CAC5EC,cAAc,EAEX;IAAA,IADHC,UAAU,GAAA1O,SAAA,CAAA/D,MAAA,QAAA+D,SAAA,QAAAjF,SAAA,GAAAiF,SAAA,MAAG,CAAC,CAAC;IAEf,IAAI9W,OAAO,EAAE;MACXA,OAAO,CAAC8S,KAAK,CAAC2S,gBAAgB,CAACF,cAAc,EAAE,IAAI,CAAC;MACpD,IAAI3V,MAAM,IAAI2V,cAAc,CAACvN,SAAS,EAAE;QACtCwN,UAAU,CAAC1V,cAAc,GAAG9P,OAAO,CAAC8S,KAAK,CAACyE,OAAO,CAACgO,cAAc,CAACvN,SAAS,CAAC,IAAI,EAAE;QACjFnJ,iBAAiB,CAAC2W,UAAU,CAAC1V,cAAc,CAAC;MAC9C;MAEAnB,WAAW,KAAAyK,mBAAA,aAAKpZ,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAAC,CAAC;IAC1C;EACF,CAAC;EAED,IAAMka,cAAc,GAAG,SAAjBA,cAAcA,CAClBC,UAA+C,EAC/CC,UAA+C,EAC5C;IACH,IAAI5lB,OAAO,EAAE;MACXA,OAAO,CAAC8S,KAAK,CAAC+S,aAAa,CAACF,UAAU,CAAC;MACvC3lB,OAAO,CAAC8S,KAAK,CAAC2S,gBAAgB,CAACG,UAAU,EAAE,IAAI,CAAC;MAChD,IAAIhW,MAAM,IAAIgW,UAAU,CAAC5N,SAAS,EAAE;QAClC,IAAMlI,eAAc,GAAG9P,OAAO,CAAC8S,KAAK,CAACyE,OAAO,CAACqO,UAAU,CAAC5N,SAAS,CAAC,IAAI,EAAE;QACxEnJ,iBAAiB,CAACiB,eAAc,CAAC;MACnC;MACAnB,WAAW,CAAC3O,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAAC;IACrC;EACF,CAAC;EAED,IAAMsa,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAC,MAAA,EAMwB;IAAA,IALhDC,WAAW,GAAAD,MAAA,CAAXC,WAAW;MACXC,eAAe,GAAAF,MAAA,CAAfE,eAAe;MACfjO,SAAS,GAAA+N,MAAA,CAAT/N,SAAS;MACTkO,IAAI,GAAAH,MAAA,CAAJG,IAAI;MACDC,WAAW,OAAAC,yBAAA,aAAAL,MAAA,EAAAxrB,SAAA;IAOd,IAAA8rB,aAAA,GAA0DnmB,MAAM,CAACiY,IAAI;MAA7DmO,aAAa,GAAAD,aAAA,CAAbC,aAAa;MAAEC,OAAO,GAAAF,aAAA,CAAPE,OAAO;MAAEC,KAAK,GAAAH,aAAA,CAALG,KAAK;MAAKC,WAAW,OAAAL,yBAAA,aAAAC,aAAA,EAAA7rB,UAAA;IAErD,IAAMksB,OAAO,OAAAvN,SAAA;MACXwN,MAAM,EAAET,IAAI;MACZF,WAAW,EAAXA,WAAW;MACXrI,UAAU,EAAE,IAAI/B,IAAI,CAAC,CAAC;MACtBgL,IAAI,EAAEV,IAAI;MACV3Q,EAAE,EAAKrV,MAAM,CAAC2mB,MAAM,SAAI,IAAAC,uBAAgB,EAAC,CAAG;MAC5Cb,eAAe,EACb,CAAAA,eAAe,oBAAfA,eAAe,CAAElD,GAAG,CAAC,UAACgE,MAAM;QAAA,OAAM;UAChCxR,EAAE,EAAEwR;QACN,CAAC;MAAA,CAAC,CAAC,KAAI,EAAE;MACX/O,SAAS,EAATA,SAAS;MACTgP,SAAS,EAAE,EAAE;MACbpE,MAAM,EAAEC,yBAAkB,CAACoE,OAAO;MAClCf,IAAI,EAAJA,IAAI;MACJvpB,IAAI,EAAE,SAAS;MACfwb,IAAI,MAAAgB,SAAA,iBACCsN,WAAW;QACdlR,EAAE,EAAErV,MAAM,CAAC2mB;MAAM;IAClB,GACEV,WAAW,CACmC;IAOnD,IAAIO,OAAO,CAACQ,iBAAiB,EAAE;MAC7B,IAAMvT,cAAa,GAAGnI,QAAQ,CAAC4Q,IAAI,CAAC,UAAClC,OAAO;QAAA,OAAKA,OAAO,CAAC3E,EAAE,KAAKmR,OAAO,CAACQ,iBAAiB;MAAA,EAAC;MAE1FR,OAAO,CAACS,cAAc,GACpBxT,cAAsE;IAC1E;IACA,OAAO+S,OAAO;EAChB,CAAC;EAED,IAAMU,wBAAwB;IAAA,IAAAC,MAAA,OAAA1R,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAyR,UAAOpN,OAA4C;MAAA,IAAAqN,qBAAA;MAAA,IAAAhC,cAAA,EAAAiC,CAAA,EAAAC,sBAAA,EAAAC,UAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,WAAA,EAAAC,QAAA,EAAAC,UAAA,EAAAC,aAAA,EAAAC,WAAA,EAAAC,cAAA,EAAAC,WAAA,EAAAC,QAAA;MAAA,OAAAxS,YAAA,YAAAI,IAAA,UAAAqS,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAnS,IAAA,GAAAmS,UAAA,CAAAlS,IAAA;UAAA;YAC5EmP,cAAc,OAAApM,SAAA,iBAAQe,OAAO;YAAA,OAAAqN,qBAAA,GAC/BhC,cAAc,CAACS,WAAW,aAA1BuB,qBAAA,CAA4BxU,MAAM;cAAAuV,UAAA,CAAAlS,IAAA;cAAA;YAAA;YAC3BoR,CAAC,GAAG,CAAC;UAAA;YAAA,MAAEA,CAAC,KAAAC,sBAAA,GAAGlC,cAAc,CAACS,WAAW,qBAA1ByB,sBAAA,CAA4B1U,MAAM;cAAAuV,UAAA,CAAAlS,IAAA;cAAA;YAAA;YAC9CsR,UAAU,GAAGnC,cAAc,CAACS,WAAW,CAACwB,CAAC,CAAC;YAC1CG,KAAK,GAAGD,UAAU,CAACa,aAAa;YAChCX,IAAI,GAAGF,UAAU,CAACc,YAAY;YAAA,MAGlCd,UAAU,CAAC/qB,IAAI,KAAK,OAAO,IAC3BgrB,KAAK,YAALA,KAAK,CAAEc,GAAG,IACVf,UAAU,CAACgB,SAAS,IACpB,IAAAC,iBAAU,EAACjB,UAAU,CAACgB,SAAS,CAAC;cAAAJ,UAAA,CAAAlS,IAAA;cAAA;YAAA;YAE1B0R,QAAQ,IAAAD,WAAA,GAAGF,KAAK,CAACiB,IAAI,YAAAf,WAAA,GAAIF,KAAK,CAACc,GAAG,CAACI,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;YAE3Ed,UAAU,GAAG3S,wBAAwB,CAAC0D,OAAO,CAACxd,GAAG,CAACwsB,QAAQ,CAAC;YACjE,IAAIC,UAAU,EAAE;cACdA,UAAU,CAACe,KAAK,CAAC,CAAC;cAClB1T,wBAAwB,CAAC0D,OAAO,UAAO,CAACgP,QAAQ,CAAC;YACnD;YAACQ,UAAA,CAAAlS,IAAA;YAAA,OAC2B,IAAA2S,iCAAkB,EAACpB,KAAK,EAAErnB,oBAAoB,CAAC;UAAA;YAArE0nB,aAAa,GAAAM,UAAA,CAAA7K,IAAA;YACbwK,WAAW,GAAG,IAAAe,iBAAM,EAAClB,QAAQ,CAAC,IAAI,qBAAqB;YAAA,KAEtCvmB,oBAAoB;cAAA+mB,UAAA,CAAAlS,IAAA;cAAA;YAAA;YAAAkS,UAAA,CAAAlS,IAAA;YAAA,OACjC7U,oBAAoB,CAAComB,KAAK,EAAE3nB,OAAO,CAAC;UAAA;YAAAsoB,UAAA,CAAA9L,EAAA,GAAA8L,UAAA,CAAA7K,IAAA;YAAA6K,UAAA,CAAAlS,IAAA;YAAA;UAAA;YAAAkS,UAAA,CAAAlS,IAAA;YAAA,OACpCpW,OAAO,CAACipB,SAAS,CAACjB,aAAa,EAAEF,QAAQ,EAAEG,WAAW,CAAC;UAAA;YAAAK,UAAA,CAAA9L,EAAA,GAAA8L,UAAA,CAAA7K,IAAA;UAAA;YAF3DyK,cAAc,GAAAI,UAAA,CAAA9L,EAAA;YAIpBkL,UAAU,CAACgB,SAAS,GAAGR,cAAc,CAACN,IAAI;YAC1C,OAAOF,UAAU,CAACc,YAAY;YAE9BlyB,KAAK,CAACgvB,aAAa,CAAC;cAClBpL,OAAO,MAAAf,SAAA,iBAAOoM,cAAc;gBAAEhL,GAAG,EAAEva,OAAO,CAACua;cAAG;YAChD,CAAC,CAAC;UAAC;YAAA,MAIH,CAACmN,UAAU,CAAC/qB,IAAI,KAAK,MAAM,IACzB+qB,UAAU,CAAC/qB,IAAI,KAAK,OAAO,IAC3B+qB,UAAU,CAAC/qB,IAAI,KAAK,OAAO,KAC7B+qB,UAAU,CAACwB,SAAS,IACpB,IAAAP,iBAAU,EAACjB,UAAU,CAACwB,SAAS,CAAC,IAChCtB,IAAI,YAAJA,IAAI,CAAEa,GAAG;cAAAH,UAAA,CAAAlS,IAAA;cAAA;YAAA;YAGH2R,WAAU,GAAG3S,wBAAwB,CAAC0D,OAAO,CAACxd,GAAG,CAACssB,IAAI,CAACgB,IAAI,CAAC;YAClE,IAAIb,WAAU,EAAE;cACdA,WAAU,CAACe,KAAK,CAAC,CAAC;cAClB1T,wBAAwB,CAAC0D,OAAO,UAAO,CAAC8O,IAAI,CAACgB,IAAI,CAAC;YACpD;YAAC,KACgBtnB,kBAAkB;cAAAgnB,UAAA,CAAAlS,IAAA;cAAA;YAAA;YAAAkS,UAAA,CAAAlS,IAAA;YAAA,OACzB9U,kBAAkB,CAACsmB,IAAI,EAAE5nB,OAAO,CAAC;UAAA;YAAAsoB,UAAA,CAAAa,EAAA,GAAAb,UAAA,CAAA7K,IAAA;YAAA6K,UAAA,CAAAlS,IAAA;YAAA;UAAA;YAAAkS,UAAA,CAAAlS,IAAA;YAAA,OACjCpW,OAAO,CAACopB,QAAQ,CAACxB,IAAI,CAACa,GAAG,EAAEb,IAAI,CAACgB,IAAI,EAAEhB,IAAI,CAACyB,QAAQ,CAAC;UAAA;YAAAf,UAAA,CAAAa,EAAA,GAAAb,UAAA,CAAA7K,IAAA;UAAA;YAFxD2K,QAAQ,GAAAE,UAAA,CAAAa,EAAA;YAGdzB,UAAU,CAACwB,SAAS,GAAGd,QAAQ,CAACR,IAAI;YACpC,IAAIQ,QAAQ,CAACkB,SAAS,EAAE;cACtB5B,UAAU,CAAC4B,SAAS,GAAGlB,QAAQ,CAACkB,SAAS;YAC3C;YACA,OAAO5B,UAAU,CAACc,YAAY;YAC9BlyB,KAAK,CAACgvB,aAAa,CAAC;cAClBpL,OAAO,MAAAf,SAAA,iBAAOoM,cAAc;gBAAEhL,GAAG,EAAEva,OAAO,CAACua;cAAG;YAChD,CAAC,CAAC;UAAC;YAzDiDiN,CAAC,EAAE;YAAAc,UAAA,CAAAlS,IAAA;YAAA;UAAA;YAAA,OAAAkS,UAAA,CAAAhS,MAAA,WA8DtDiP,cAAc;UAAA;UAAA;YAAA,OAAA+C,UAAA,CAAA1R,IAAA;QAAA;MAAA,GAAA0Q,SAAA;IAAA,CACtB;IAAA,gBAlEKF,wBAAwBA,CAAAmC,GAAA;MAAA,OAAAlC,MAAA,CAAAxQ,KAAA,OAAAC,SAAA;IAAA;EAAA,GAkE7B;EAED,IAAM0S,kBAAkB;IAAA,IAAAC,MAAA,OAAA9T,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAA6T,UACzBxP,OAA4C,EAC5CyP,QAAkB;MAAA,IAAAC,eAAA,EAAAjD,MAAA,EAAAX,WAAA,EAAArI,UAAA,EAAAkM,UAAA,EAAAjD,IAAA,EAAArR,EAAA,EAAAuU,gBAAA,EAAA7D,eAAA,EAAA8D,aAAA,EAAA/R,SAAA,EAAAmP,cAAA,EAAA6C,eAAA,EAAAhD,SAAA,EAAApE,MAAA,EAAAsD,IAAA,EAAAvpB,IAAA,EAAAgmB,UAAA,EAAAxK,IAAA,EAAAgO,WAAA,EAAA8D,gBAAA,EAAAC,YAAA,EAAAC,eAAA;MAAA,OAAAvU,YAAA,YAAAI,IAAA,UAAAoU,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAlU,IAAA,GAAAkU,UAAA,CAAAjU,IAAA;UAAA;YAAAiU,UAAA,CAAAlU,IAAA;YAAAkU,UAAA,CAAAjU,IAAA;YAAA,OAGagR,wBAAwB,CAAClN,OAAO,CAAC;UAAA;YAAxDqL,eAAc,GAAA8E,UAAA,CAAA5M,IAAA;YAGlBkJ,MAAM,GA+BJpB,eAAc,CA/BhBoB,MAAM,EACNX,WAAW,GA8BTT,eAAc,CA9BhBS,WAAW,EAEXrI,UAAU,GA4BR4H,eAAc,CA5BhB5H,UAAU,EAEVkM,UAAU,GA0BRtE,eAAc,CA1BhBsE,UAAU,EAEVjD,IAAI,GAwBFrB,eAAc,CAxBhBqB,IAAI,EACJrR,EAAE,GAuBAgQ,eAAc,CAvBhBhQ,EAAE,EAEFuU,gBAAgB,GAqBdvE,eAAc,CArBhBuE,gBAAgB,EAChB7D,eAAe,GAoBbV,eAAc,CApBhBU,eAAe,EAEf8D,aAAa,GAkBXxE,eAAc,CAlBhBwE,aAAa,EACb/R,SAAS,GAiBPuN,eAAc,CAjBhBvN,SAAS,EAETmP,cAAc,GAeZ5B,eAAc,CAfhB4B,cAAc,EAEd6C,eAAe,GAabzE,eAAc,CAbhByE,eAAe,EAEfhD,SAAS,GAWPzB,eAAc,CAXhByB,SAAS,EAETpE,MAAM,GASJ2C,eAAc,CAThB3C,MAAM,EACNsD,IAAI,GAQFX,eAAc,CARhBW,IAAI,EAEJvpB,IAAI,GAMF4oB,eAAc,CANhB5oB,IAAI,EAEJgmB,UAAU,GAIR4C,eAAc,CAJhB5C,UAAU,EAEVxK,IAAI,GAEFoN,eAAc,CAFhBpN,IAAI,EACDgO,WAAW,OAAAC,yBAAA,aACZb,eAAc,EAAA9qB,UAAA;YAAA,IACbuF,OAAO,CAACuV,EAAE;cAAA8U,UAAA,CAAAjU,IAAA;cAAA;YAAA;YAAA,OAAAiU,UAAA,CAAA/T,MAAA;UAAA;YAET2T,gBAAgB,GAAG,CAAAhE,eAAe,oBAAfA,eAAe,CAAElD,GAAG,CAAC,UAAC5K,IAAI;cAAA,OAAKA,IAAI,CAAC5C,EAAE;YAAA,EAAC,KAAI,EAAE;YAEhE+U,YAAW,OAAAnR,SAAA;cACf6M,WAAW,EAAXA,WAAW;cACXzQ,EAAE,EAAFA,EAAE;cACF0Q,eAAe,EAAEgE,gBAAgB;cACjCjS,SAAS,EAATA,SAAS;cACTkO,IAAI,EAAE,IAAAqE,gDAAuB,EAACrE,IAAI,WAAJA,IAAI,GAAI,EAAE,EAAE+D,gBAAgB;YAAC,GACxD9D,WAAW;YAGZgE,eAAe,GAAG,CAAC,CAAC;YAAA,KACpB1oB,oBAAoB;cAAA4oB,UAAA,CAAAjU,IAAA;cAAA;YAAA;YAAAiU,UAAA,CAAAjU,IAAA;YAAA,OACE3U,oBAAoB,CAAC,CAAAzB,OAAO,oBAAPA,OAAO,CAAEua,GAAG,KAAI,EAAE,EAAE+P,YAAW,CAAC;UAAA;YAA7EH,eAAe,GAAAE,UAAA,CAAA5M,IAAA;YAAA4M,UAAA,CAAAjU,IAAA;YAAA;UAAA;YAAA,KACNpW,OAAO;cAAAqqB,UAAA,CAAAjU,IAAA;cAAA;YAAA;YAAAiU,UAAA,CAAAjU,IAAA;YAAA,OACQpW,OAAO,CAACwqB,WAAW,CAACF,YAAW,CAAC;UAAA;YAAxDH,eAAe,GAAAE,UAAA,CAAA5M,IAAA;UAAA;YAGjB,IAAI0M,eAAe,CAACjQ,OAAO,EAAE;cAC3BiQ,eAAe,CAACjQ,OAAO,CAAC0I,MAAM,GAAGC,yBAAkB,CAAC4H,QAAQ;cAE5D,IAAItoB,oBAAoB,EAAE;gBACxB7L,KAAK,CAACgvB,aAAa,CAAC;kBAClBpL,OAAO,MAAAf,SAAA,iBAAOgR,eAAe,CAACjQ,OAAO;oBAAEK,GAAG,EAAEva,OAAO,CAACua;kBAAG;gBACzD,CAAC,CAAC;cACJ;cACA,IAAIoP,QAAQ,EAAE;gBACZjE,cAAc,CAACxL,OAAO,EAAEiQ,eAAe,CAACjQ,OAAO,CAAC;cAClD,CAAC,MAAM;gBACLoL,aAAa,CAAC6E,eAAe,CAACjQ,OAAO,CAAC;cACxC;YACF;YAACmQ,UAAA,CAAAjU,IAAA;YAAA;UAAA;YAAAiU,UAAA,CAAAlU,IAAA;YAAAkU,UAAA,CAAA7N,EAAA,GAAA6N,UAAA;YAEDvJ,OAAO,CAAC4J,GAAG,CAAAL,UAAA,CAAA7N,EAAI,CAAC;YAChBtC,OAAO,CAAC0I,MAAM,GAAGC,yBAAkB,CAACC,MAAM;YAC1CwC,aAAa,KAAAnM,SAAA,iBAAMe,OAAO;cAAEK,GAAG,EAAEva,OAAO,CAACua;YAAG,EAAE,CAAC;YAE/C,IAAIpY,oBAAoB,EAAE;cACxB7L,KAAK,CAACgvB,aAAa,CAAC;gBAClBpL,OAAO,MAAAf,SAAA,iBAAOe,OAAO;kBAAEK,GAAG,EAAEva,OAAO,CAACua;gBAAG;cACzC,CAAC,CAAC;YACJ;UAAC;UAAA;YAAA,OAAA8P,UAAA,CAAAzT,IAAA;QAAA;MAAA,GAAA8S,SAAA;IAAA,CAEJ;IAAA,gBArFKF,kBAAkBA,CAAAmB,GAAA,EAAAC,GAAA;MAAA,OAAAnB,MAAA,CAAA5S,KAAA,OAAAC,SAAA;IAAA;EAAA,GAqFvB;EAED,IAAM0T,WAA6E;IAAA,IAAAK,MAAA,OAAAlV,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAiV,UACpF5Q,OAAO;MAAA,IAAA6Q,cAAA;MAAA,IAAAC,cAAA;MAAA,OAAApV,YAAA,YAAAI,IAAA,UAAAiV,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAA/U,IAAA,GAAA+U,UAAA,CAAA9U,IAAA;UAAA;YAEP,IAAIpW,OAAO,aAAA+qB,cAAA,GAAP/qB,OAAO,CAAE8S,KAAK,aAAdiY,cAAA,CAAgBI,mBAAmB,EAAE;cACvCnrB,OAAO,CAAC8S,KAAK,CAACqY,mBAAmB,CAAC,CAAC;YACrC;YAEMH,cAAc,GAAGlF,oBAAoB,KAAA3M,SAAA,iBACtCe,OAAO;cACV8L,WAAW,EAAE9L,OAAO,CAAC8L,WAAW,IAAI;YAAE,EACvC,CAAC;YAEF/G,8BAA8B,CAACnG,OAAO,CAAC,CAAC;YAAC,IAEpC9Y,OAAO,YAAPA,OAAO,CAAE8S,KAAK,CAACgN,UAAU;cAAAoL,UAAA,CAAA9U,IAAA;cAAA;YAAA;YAAA8U,UAAA,CAAA9U,IAAA;YAAA,OACtBmN,aAAa,CAAC,CAAC;UAAA;YAGvB+B,aAAa,CAAC0F,cAAc,EAAE;cAC5BI,QAAQ,EAAE,EAAE;cACZC,YAAY,EAAE;YAChB,CAAC,CAAC;YAEF,IAAIlpB,oBAAoB,EAAE;cAKxB7L,KAAK,CAACg1B,cAAc,CAAC;gBACnB9f,QAAQ,EAAE,KAAA2N,SAAA,iBAAM6R,cAAc;kBAAEzQ,GAAG,EAAEva,OAAO,CAACua,GAAG;kBAAEqI,MAAM,EAAEC,yBAAkB,CAACC;gBAAM;cACrF,CAAC,CAAC;YACJ;YAACoI,UAAA,CAAA9U,IAAA;YAAA,OAEKoT,kBAAkB,CAACwB,cAAc,CAAC;UAAA;UAAA;YAAA,OAAAE,UAAA,CAAAtU,IAAA;QAAA;MAAA,GAAAkU,SAAA;IAAA,CACzC;IAAA,gBAlCKN,WAA6EA,CAAAe,GAAA;MAAA,OAAAV,MAAA,CAAAhU,KAAA,OAAAC,SAAA;IAAA;EAAA,GAkClF;EAED,IAAM0U,gBAA8E;IAAA,IAAAC,MAAA,OAAA9V,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAA6V,UACrFxR,OAAO;MAAA,IAAAyR,oBAAA,EAAAC,4BAAA;MAAA,OAAAhW,YAAA,YAAAI,IAAA,UAAA6V,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAA3V,IAAA,GAAA2V,UAAA,CAAA1V,IAAA;UAAA;YAEDuV,oBAAoB,OAAAxS,SAAA,iBACrBe,OAAO;cACV0I,MAAM,EAAEC,yBAAkB,CAACoE;YAAO;YAG9B2E,4BAA4B,GAAG,IAAAG,0CAAoB,EAACJ,oBAAoB,CAAC;YAG/E,IAAI,CAAC,IAAAK,uBAAgB,EAAC9R,OAAO,CAAC,EAAE;cAC9BoL,aAAa,CAACsG,4BAAmE,CAAC;YACpF;YAACE,UAAA,CAAA1V,IAAA;YAAA,OAEKoT,kBAAkB,CACtBoC,4BAA4B,EAC5B,IACF,CAAC;UAAA;UAAA;YAAA,OAAAE,UAAA,CAAAlV,IAAA;QAAA;MAAA,GAAA8U,SAAA;IAAA,CACF;IAAA,gBAnBKF,gBAA8EA,CAAAS,GAAA;MAAA,OAAAR,MAAA,CAAA5U,KAAA,OAAAC,SAAA;IAAA;EAAA,GAmBnF;EAGD,IAAMK,gBAAgB,GAAG,IAAA1C,aAAM,EAC7B,IAAAyX,oBAAQ,EACN,UAAC9L,cAAuB,EAAE+L,WAAyD,EAAK;IACtFjZ,UAAU,CAAC,KAAK,CAAC;IACjBG,cAAc,CAAC,KAAK,CAAC;IACrBjB,QAAQ,CAAC,KAAK,CAAC;IACfI,UAAU,CAAC4N,cAAc,CAAC;IAC1BzR,WAAW,CAACwd,WAAW,CAAC;EAC1B,CAAC,EACDhvB,uBAAuB,EACvBI,eACF,CACF,CAAC,CAACub,OAAO;EAKT,IAAMsT,QAAQ,GAAG,IAAA3U,kBAAW,MAAA9B,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAC1B,SAAAwW,UAAA;IAAA,IAAA9O,KAAA;MAAAxC,eAAA;MAAAuR,aAAA;MAAAC,QAAA;MAAApM,aAAA;MAAAC,cAAA;MAAAoM,OAAA,GAAA1V,SAAA;IAAA,OAAAlB,YAAA,YAAAI,IAAA,UAAAyW,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAvW,IAAA,GAAAuW,UAAA,CAAAtW,IAAA;QAAA;UAAOmH,KAAK,GAAAiP,OAAA,CAAAzZ,MAAA,QAAAyZ,OAAA,QAAA3a,SAAA,GAAA2a,OAAA,MAAG,EAAE;UAAA,MACXzkB,WAAW,IAAIwK,OAAO,KAAK,KAAK;YAAAma,UAAA,CAAAtW,IAAA;YAAA;UAAA;UAAA,OAAAsW,UAAA,CAAApW,MAAA;QAAA;UAI9ByE,eAAe,GAAG/a,OAAO,CAAC8S,KAAK,CAACtH,QAAQ;UAAA,IAEzCuP,eAAe,CAAChI,MAAM;YAAA2Z,UAAA,CAAAtW,IAAA;YAAA;UAAA;UAAA,OAAAsW,UAAA,CAAApW,MAAA,WAClBjD,cAAc,CAAC,KAAK,CAAC;QAAA;UAGxBiZ,aAAa,GAAGvR,eAAe,IAAIA,eAAe,CAAC,CAAC,CAAC;UAAA,MAEvDuR,aAAa,IAAIA,aAAa,CAAC1J,MAAM,KAAKC,yBAAkB,CAAC4H,QAAQ;YAAAiC,UAAA,CAAAtW,IAAA;YAAA;UAAA;UAAA,OAAAsW,UAAA,CAAApW,MAAA,WAChEjD,cAAc,CAAC,KAAK,CAAC;QAAA;UAG9BA,cAAc,CAAC,IAAI,CAAC;UAEdkZ,QAAQ,GAAGD,aAAa,IAAIA,aAAa,CAAC/W,EAAE;UAAAmX,UAAA,CAAAvW,IAAA;UAAA,KAG5CnW,OAAO;YAAA0sB,UAAA,CAAAtW,IAAA;YAAA;UAAA;UAAAsW,UAAA,CAAAtW,IAAA;UAAA,OACmBpW,OAAO,CAACqd,KAAK,CAAC;YACxC7R,QAAQ,EAAE;cAAEkZ,KAAK,EAAE6H,QAAQ;cAAEhP,KAAK,EAALA;YAAM;UACrC,CAAC,CAAC;QAAA;UAFI4C,aAAa,GAAAuM,UAAA,CAAAjP,IAAA;UAIb2C,cAAc,GAAGD,aAAa,CAAC3U,QAAQ,CAACuH,MAAM,KAAKwK,KAAK;UAC9DpG,gBAAgB,CAACiJ,cAAc,EAAEpgB,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAAC;QAAC;UAAAkhB,UAAA,CAAAtW,IAAA;UAAA;QAAA;UAAAsW,UAAA,CAAAvW,IAAA;UAAAuW,UAAA,CAAAlQ,EAAA,GAAAkQ,UAAA;UAG3D,IAAIA,UAAA,CAAAlQ,EAAA,YAAeC,KAAK,EAAE;YACxBrK,QAAQ,CAAAsa,UAAA,CAAAlQ,EAAI,CAAC;UACf,CAAC,MAAM;YACLpK,QAAQ,CAAC,IAAI,CAAC;UAChB;UACAiB,cAAc,CAAC,KAAK,CAAC;UAAC,MAAAqZ,UAAA,CAAAlQ,EAAA;QAAA;QAAA;UAAA,OAAAkQ,UAAA,CAAA9V,IAAA;MAAA;IAAA,GAAAyV,SAAA;EAAA,CAGzB,IAMD,CAAC/W,SAAS,EAAE/C,OAAO,EAAExK,WAAW,CAClC,CAAC;EAKD,IAAM4kB,cAAc,GAAG,IAAAlV,kBAAW,MAAA9B,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAGhC,SAAA+W,UAAA;IAAA,IAAArP,KAAA;MAAA4B,gBAAA;MAAA0N,uBAAA;MAAAC,QAAA;MAAA/R,eAAA;MAAAgS,aAAA;MAAA5M,aAAA;MAAA6M,oBAAA;MAAAlI,UAAA;MAAAmI,OAAA,GAAAnW,SAAA;IAAA,OAAAlB,YAAA,YAAAI,IAAA,UAAAkX,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAhX,IAAA,GAAAgX,UAAA,CAAA/W,IAAA;QAAA;UAAOmH,KAAK,GAAA0P,OAAA,CAAAla,MAAA,QAAAka,OAAA,QAAApb,SAAA,GAAAob,OAAA,MAAG,CAAC;UACR9N,gBAAgB,GAAGnf,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACC,IAAI,CAAC,UAACngB,GAAG;YAAA,OAAKA,GAAG,CAACogB,QAAQ;UAAA,EAAC;UACxEwQ,uBAAuB,GAAG,CAAA1N,gBAAgB,oBAAhBA,gBAAgB,CAAE3T,QAAQ,CAACuH,MAAM,KAAI,CAAC;UAChE+Z,QAAQ,GAAG7N,8BAA8B,CAACnG,OAAO,CAAC,IAAI,CAAC;UAAA,KACzDgU,QAAQ;YAAAK,UAAA,CAAA/W,IAAA;YAAA;UAAA;UAAA,MACN+I,gBAAgB,IAAI0N,uBAAuB,IAAItP,KAAK;YAAA4P,UAAA,CAAA/W,IAAA;YAAA;UAAA;UACtD5C,oBAAoB,CAAC,IAAI,CAAC;UAC1BxT,OAAO,CAAC8S,KAAK,CAACwJ,aAAa,CAAC,IAAI,CAAC;UACjCzH,gCAAgC,CAAC,IAAI,CAAC;UACtCuY,sBAAsB,CAACptB,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAAC;UAC9C0N,uBAAuB,CAACJ,OAAO,CAAC,CAAC;UAAC,OAAAqU,UAAA,CAAA7W,MAAA;QAAA;UAAA,KAIlCtW,OAAO,CAAC8S,KAAK,CAACgN,UAAU;YAAAqN,UAAA,CAAA/W,IAAA;YAAA;UAAA;UAC1B5C,oBAAoB,CAAC,KAAK,CAAC;UAAC,OAAA2Z,UAAA,CAAA7W,MAAA;QAAA;UAGxByE,eAAe,GAAG/a,OAAO,CAAC8S,KAAK,CAACtH,QAAQ;UACxCuhB,aAAa,GAAGhS,eAAe,CAACA,eAAe,CAAChI,MAAM,GAAG,CAAC,CAAC;UAAA,MAE7D,CAAAga,aAAa,oBAAbA,aAAa,CAAEnK,MAAM,MAAKC,yBAAkB,CAAC4H,QAAQ;YAAA0C,UAAA,CAAA/W,IAAA;YAAA;UAAA;UACvD5C,oBAAoB,CAAC,KAAK,CAAC;UAAC,OAAA2Z,UAAA,CAAA7W,MAAA;QAAA;UAG9B9C,oBAAoB,CAAC,IAAI,CAAC;UAAC2Z,UAAA,CAAAhX,IAAA;UAAA,KAErBnW,OAAO;YAAAmtB,UAAA,CAAA/W,IAAA;YAAA;UAAA;UAAA+W,UAAA,CAAA/W,IAAA;UAAA,OACmBpW,OAAO,CAACqd,KAAK,CAAC;YACxC7R,QAAQ,EAAE;cACR6S,MAAM,EAAE0O,aAAa,CAACxX,EAAE;cACxBgI,KAAK,EAALA;YACF,CAAC;YACDC,KAAK,EAAE;UACT,CAAC,CAAC;QAAA;UANI2C,aAAa,GAAAgN,UAAA,CAAA1P,IAAA;UAObuP,oBAAoB,GAAG7M,aAAa,CAAC3U,QAAQ,CAACuH,MAAM,GAAGwK,KAAK;UAC5DuH,UAAU,GAAG9kB,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACC,IAAI,CAAC,UAACngB,GAAG;YAAA,OAAKA,GAAG,CAACmhB,SAAS;UAAA,EAAC;UACzE,IAAI4P,oBAAoB,IAAIlI,UAAU,IAAI,CAACA,UAAU,CAACzI,QAAQ,EAAE;YAC9Drc,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,GAAGnc,OAAO,CAAC8S,KAAK,CAACqJ,WAAW,CAACkD,MAAM,CAAC,UAACpjB,GAAG;cAAA,OAAK,CAACA,GAAG,CAACogB,QAAQ;YAAA,EAAC;YAEpFyI,UAAU,CAACzI,QAAQ,GAAG,IAAI;UAC5B;UACArc,OAAO,CAAC8S,KAAK,CAACwJ,aAAa,CAAC0Q,oBAAoB,CAAC;UACjDnY,gCAAgC,CAACmY,oBAAoB,CAAC;UACtDI,sBAAsB,CAACptB,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAAC;QAAC;UAAA2hB,UAAA,CAAA/W,IAAA;UAAA;QAAA;UAAA+W,UAAA,CAAAhX,IAAA;UAAAgX,UAAA,CAAA3Q,EAAA,GAAA2Q,UAAA;UAGjDrM,OAAO,CAACC,IAAI,CAAC,8CAA8C,EAAAoM,UAAA,CAAA3Q,EAAK,CAAC;UACjE,IAAI2Q,UAAA,CAAA3Q,EAAA,YAAeC,KAAK,EAAE;YACxBrK,QAAQ,CAAA+a,UAAA,CAAA3Q,EAAI,CAAC;UACf,CAAC,MAAM;YACLpK,QAAQ,CAAC,IAAI,CAAC;UAChB;UACAoB,oBAAoB,CAAC,KAAK,CAAC;UAAC,MAAA2Z,UAAA,CAAA3Q,EAAA;QAAA;QAAA;UAAA,OAAA2Q,UAAA,CAAAvW,IAAA;MAAA;IAAA,GAAAgW,SAAA;EAAA,CAG/B,IAMD,CAACtX,SAAS,EAAEV,6BAA6B,CAC3C,CAAC;EAGD,IAAMwY,sBAAsB,GAAG,IAAA3Y,aAAM,EACnC,IAAAyX,oBAAQ,EACN,UAACC,WAAyD,EAAK;IAC7D3Y,oBAAoB,CAAC,KAAK,CAAC;IAC3B7E,WAAW,CAACwd,WAAW,CAAC;IACxB/Z,QAAQ,CAAC,KAAK,CAAC;EACjB,CAAC,EACDjV,uBAAuB,EACvBI,eACF,CACF,CAAC,CAACub,OAAO;EAET,IAAMuU,WAA6E,GAAG,SAAhFA,WAA6EA,CACjF9H,cAAc;IAAA,OAEd7jB,sBAAsB,GAClBA,sBAAsB,CAAC,CAAA1B,OAAO,oBAAPA,OAAO,CAAEua,GAAG,KAAI,EAAE,EAAEgL,cAAc,CAAC,GAC1DrlB,MAAM,CAAColB,aAAa,CAACC,cAAc,CAAC;EAAA;EAE1C,IAAM+H,eAA4E,GAAG,SAA/EA,eAA4EA,CAChFpT,OAAO,EACJ;IACHqT,uBAAuB,CAAC,CAAC;IACzBvb,UAAU,CAACkI,OAAO,CAAC;EACrB,CAAC;EAED,IAAMsT,qBAAwF,GAAG,SAA3FA,qBAAwFA,CAC5FC,gBAAgB,EACb;IACH7Z,gBAAgB,CAAC6Z,gBAAgB,CAAC;EACpC,CAAC;EAED,IAAMC,iBAAyF,GAC7F,SADIA,iBAAyFA,CAAA;IAAA,OACvF1b,UAAU,CAACH,SAAS,CAAC;EAAA;EAE7B,IAAM0b,uBAAqG,GACzG,SADIA,uBAAqGA,CAAA;IAAA,OACnG3Z,gBAAgB,CAAC,KAAK,CAAC;EAAA;EAK/B,IAAMiS,aAAwE,GAAG,SAA3EA,aAAwEA,CAAI3L,OAAO,EAAK;IAC5F,IAAIla,OAAO,EAAE;MACXA,OAAO,CAAC8S,KAAK,CAAC+S,aAAa,CAAC3L,OAAO,CAAC;MACpCvL,WAAW,CAAC3O,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAAC;MACnC,IAAIoE,MAAM,EAAE;QACVf,iBAAiB,CAAC7O,OAAO,CAAC8S,KAAK,CAACyE,OAAO,CAAC3H,MAAM,CAAC2F,EAAE,CAAC,IAAI,EAAE,CAAC;MAC3D;IACF;IAEA,IAAIpT,oBAAoB,EAAE;MACxB7L,KAAK,CAACq3B,aAAa,CAAC;QAClBpY,EAAE,EAAE2E,OAAO,CAAC3E;MACd,CAAC,CAAC;IACJ;EACF,CAAC;EAED,IAAMqY,YAAY;IAAA,IAAAC,MAAA,OAAAlY,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAiY,UAAOnxB,IAAY,EAAEgO,SAAiB;MAAA,IAAAojB,OAAA;MAAA,OAAAnY,YAAA,YAAAI,IAAA,UAAAgY,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAA9X,IAAA,GAAA8X,UAAA,CAAA7X,IAAA;UAAA;YAAA,MACrD,EAACpW,OAAO,YAAPA,OAAO,CAAEuV,EAAE,KAAI,CAACrV,MAAM,CAACiY,IAAI;cAAA8V,UAAA,CAAA7X,IAAA;cAAA;YAAA;YAAA,MACxB,IAAIqG,KAAK,CAAC,kCAAkC,CAAC;UAAA;YAG/CsR,OAAqE,GAAG,CAC5EpjB,SAAS,EACT;cACEhO,IAAI,EAAJA;YACF,CAAC,EACD;cAAEuxB,cAAc,EAAE7rB;YAAsB,CAAC,CAC1C;YAAA,IAEIF,oBAAoB;cAAA8rB,UAAA,CAAA7X,IAAA;cAAA;YAAA;YAAA6X,UAAA,CAAA7X,IAAA;YAAA,OACjBpW,OAAO,CAAC4tB,YAAY,CAAA/W,KAAA,CAApB7W,OAAO,EAAiB+tB,OAAO,CAAC;UAAA;YAAA,OAAAE,UAAA,CAAA3X,MAAA;UAAA;YAIxC,IAAA6X,gDAAuB,EAAqB;cAC1CnuB,OAAO,EAAPA,OAAO;cACPqC,qBAAqB,EAArBA,qBAAqB;cACrBsI,SAAS,EAATA,SAAS;cACTyjB,YAAY,EAAEzxB,IAAI;cAClBwb,IAAI,EAAEjY,MAAM,CAACiY;YACf,CAAC,CAAC;YAEFxJ,WAAW,CAAC3O,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAAC;YAACyiB,UAAA,CAAA7X,IAAA;YAAA,OAE9B+M,4BAAa,CAACkL,SAAS,CAAqB;cAChDnuB,MAAM,EAANA,MAAM;cACNouB,IAAI,EAAE;gBACJhZ,SAAS,EAAEtV,OAAO,CAACuV,EAAE;gBACrBgZ,WAAW,EAAEvuB,OAAO,CAACrD,IAAI;gBACzBgO,SAAS,EAATA,SAAS;gBACTojB,OAAO,EAAPA,OAAO;gBACPpxB,IAAI,EAAE;cACR;YACF,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAsxB,UAAA,CAAArX,IAAA;QAAA;MAAA,GAAAkX,SAAA;IAAA,CACH;IAAA,gBAtCKF,YAAYA,CAAAY,IAAA,EAAAC,IAAA;MAAA,OAAAZ,MAAA,CAAAhX,KAAA,OAAAC,SAAA;IAAA;EAAA,GAsCjB;EACD,IAAM6W,aAAwE;IAAA,IAAAe,MAAA,OAAA/Y,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAA8Y,UAC/EzU,OAAO;MAAA,IAAA0U,KAAA;MAAA,OAAAhZ,YAAA,YAAAI,IAAA,UAAA6Y,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAA3Y,IAAA,GAAA2Y,UAAA,CAAA1Y,IAAA;UAAA;YAAA,IAEFpW,OAAO,CAACuV,EAAE;cAAAuZ,UAAA,CAAA1Y,IAAA;cAAA;YAAA;YAAA,MACP,IAAIqG,KAAK,CAAC,sCAAsC,CAAC;UAAA;YAAA,IAGpDta,oBAAoB;cAAA2sB,UAAA,CAAA1Y,IAAA;cAAA;YAAA;YAAA,MACnB8D,OAAO,CAAC0I,MAAM,KAAKC,yBAAkB,CAACC,MAAM;cAAAgM,UAAA,CAAA1Y,IAAA;cAAA;YAAA;YAC9CyP,aAAa,CAAC3L,OAAO,CAAC;YAAC,OAAA4U,UAAA,CAAAxY,MAAA;UAAA;YAAAwY,UAAA,CAAA1Y,IAAA;YAAA,OAGnBlW,MAAM,CAACytB,aAAa,CAACzT,OAAO,CAAC3E,EAAE,CAAC;UAAA;YAAA,OAAAuZ,UAAA,CAAAxY,MAAA;UAAA;YAAA,MAIpC4D,OAAO,CAAC0I,MAAM,KAAKC,yBAAkB,CAACC,MAAM;cAAAgM,UAAA,CAAA1Y,IAAA;cAAA;YAAA;YAC9C+M,4BAAa,CAAC4L,gBAAgB,CAAC;cAAEpkB,SAAS,EAAEuP,OAAO,CAAC3E;YAAG,CAAC,CAAC;YACzDsQ,aAAa,CAAC3L,OAAO,CAAC;YAAC4U,UAAA,CAAA1Y,IAAA;YAAA;UAAA;YAEvBkP,aAAa,KAAAnM,SAAA,iBACRe,OAAO;cACVK,GAAG,EAAEva,OAAO,CAACua,GAAG;cAChBsP,UAAU,EAAE,IAAIjO,IAAI,CAAC,CAAC,CAACoT,WAAW,CAAC,CAAC;cACpCryB,IAAI,EAAE;YAAS,EAChB,CAAC;YAACmyB,UAAA,CAAA1Y,IAAA;YAAA,OAEgB+M,4BAAa,CAACkL,SAAS,CAAqB;cAC7DnuB,MAAM,EAANA,MAAM;cACNouB,IAAI,EAAE;gBACJhZ,SAAS,EAAEtV,OAAO,CAACuV,EAAE;gBACrBgZ,WAAW,EAAEvuB,OAAO,CAACrD,IAAI;gBACzBgO,SAAS,EAAEuP,OAAO,CAAC3E,EAAE;gBACrBwY,OAAO,EAAE,CAAC7T,OAAO,CAAC3E,EAAE,CAAC;gBACrB5Y,IAAI,EAAE;cACR;YACF,CAAC,CAAC;UAAA;YATIib,KAAI,GAAAkX,UAAA,CAAArR,IAAA;YAWV,IAAI7F,KAAI,YAAJA,KAAI,CAAEsC,OAAO,EAAE;cACjBoL,aAAa,KAAAnM,SAAA,iBAAMvB,KAAI,CAACsC,OAAO,CAAE,CAAC;YACpC;UAAC;UAAA;YAAA,OAAA4U,UAAA,CAAAlY,IAAA;QAAA;MAAA,GAAA+X,SAAA;IAAA,CAEJ;IAAA,gBA1CKhB,aAAwEA,CAAAsB,IAAA;MAAA,OAAAP,MAAA,CAAA7X,KAAA,OAAAC,SAAA;IAAA;EAAA,GA0C7E;EAED,IAAMoY,cAA0E;IAAA,IAAAC,MAAA,OAAAxZ,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAuZ,UACjFzyB,IAAY,EACZgO,SAAiB;MAAA,IAAAojB,OAAA;MAAA,OAAAnY,YAAA,YAAAI,IAAA,UAAAqZ,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAnZ,IAAA,GAAAmZ,UAAA,CAAAlZ,IAAA;UAAA;YAAA,MAEb,EAACpW,OAAO,YAAPA,OAAO,CAAEuV,EAAE,KAAI,CAACrV,MAAM,CAACiY,IAAI;cAAAmX,UAAA,CAAAlZ,IAAA;cAAA;YAAA;YAAA,MACxB,IAAIqG,KAAK,CAAC,kCAAkC,CAAC;UAAA;YAG/CsR,OAAmD,GAAG,CAACpjB,SAAS,EAAEhO,IAAI,CAAC;YAAA,IAExEwF,oBAAoB;cAAAmtB,UAAA,CAAAlZ,IAAA;cAAA;YAAA;YAAAkZ,UAAA,CAAAlZ,IAAA;YAAA,OACjBpW,OAAO,CAACkvB,cAAc,CAAArY,KAAA,CAAtB7W,OAAO,EAAmB+tB,OAAO,CAAC;UAAA;YAAA,OAAAuB,UAAA,CAAAhZ,MAAA;UAAA;YAI1C,IAAAiZ,0DAA4B,EAAC;cAC3BvvB,OAAO,EAAPA,OAAO;cACP2K,SAAS,EAATA,SAAS;cACTyjB,YAAY,EAAEzxB,IAAI;cAClBwb,IAAI,EAAEjY,MAAM,CAACiY;YACf,CAAC,CAAC;YAEFxJ,WAAW,CAAC3O,OAAO,CAAC8S,KAAK,CAACtH,QAAQ,CAAC;YAAC8jB,UAAA,CAAAlZ,IAAA;YAAA,OAE9B+M,4BAAa,CAACkL,SAAS,CAAqB;cAChDnuB,MAAM,EAANA,MAAM;cACNouB,IAAI,EAAE;gBACJhZ,SAAS,EAAEtV,OAAO,CAACuV,EAAE;gBACrBgZ,WAAW,EAAEvuB,OAAO,CAACrD,IAAI;gBACzBgO,SAAS,EAATA,SAAS;gBACTojB,OAAO,EAAPA,OAAO;gBACPpxB,IAAI,EAAE;cACR;YACF,CAAC,CAAC;UAAA;UAAA;YAAA,OAAA2yB,UAAA,CAAA1Y,IAAA;QAAA;MAAA,GAAAwY,SAAA;IAAA,CACH;IAAA,gBAlCKF,cAA0EA,CAAAM,IAAA,EAAAC,IAAA;MAAA,OAAAN,MAAA,CAAAtY,KAAA,OAAAC,SAAA;IAAA;EAAA,GAkC/E;EAKD,IAAM4Y,UAAgE,GAAG,IAAAjY,kBAAW,EAClF,UAACyC,OAAO,EAAK;IAAA,IAAAyV,eAAA;IACX,IAAMC,iBAAiB,GAAG1V,OAAO,YAAPA,OAAO,CAAE3E,EAAE,GAAG,CAAAvV,OAAO,qBAAA2vB,eAAA,GAAP3vB,OAAO,CAAE8S,KAAK,qBAAd6c,eAAA,CAAgBpY,OAAO,CAAC2C,OAAO,CAAC3E,EAAE,CAAC,KAAI,EAAE,GAAG,EAAE;IACtFxB,SAAS,CAACmG,OAAO,CAAC;IAClBrL,iBAAiB,CAAC+gB,iBAAiB,CAAC;EACtC,CAAC,EACD,CAAC7b,SAAS,EAAElF,iBAAiB,CAC/B,CAAC;EAED,IAAMghB,WAAkE,GAAG,IAAApY,kBAAW,EAAC,YAAM;IAC3F1D,SAAS,CAAC,IAAI,CAAC;IACflF,iBAAiB,CAAC,EAAE,CAAC;EACvB,CAAC,EAAE,CAACkF,SAAS,EAAElF,iBAAiB,CAAC,CAAC;EAGlC,IAAMuI,sBAAsB,GAAG,IAAA3C,aAAM,EACnC,IAAAyX,oBAAQ,EACN,UACE4D,gBAAyB,EACzB7V,qBAA0E,EACvE;IACH9F,gBAAgB,CAAC2b,gBAAgB,CAAC;IAClCvb,oBAAoB,CAAC,KAAK,CAAC;IAC3B1F,iBAAiB,CAACoL,qBAAqB,CAAC;EAC1C,CAAC,EACD9c,uBAAuB,EACvBI,eACF,CACF,CAAC,CAACub,OAAO;EAET,IAAMiX,cAAwE;IAAA,IAAAC,MAAA,OAAAra,kBAAA,aAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAoa,UAAA;MAAA,IAAAC,gBAAA,EAAAhQ,QAAA,EAAAiQ,eAAA,EAAA5S,KAAA,EAAA4C,aAAA,EAAAC,cAAA,EAAAnG,qBAAA;MAAA,OAAArE,YAAA,YAAAI,IAAA,UAAAoa,WAAAC,UAAA;QAAA,kBAAAA,UAAA,CAAAla,IAAA,GAAAka,UAAA,CAAAja,IAAA;UAAA;YAAA,MAC3E9B,iBAAiB,IAAI,EAAC1E,MAAM,YAANA,MAAM,CAAE2F,EAAE;cAAA8a,UAAA,CAAAja,IAAA;cAAA;YAAA;YAAA,OAAAia,UAAA,CAAA/Z,MAAA;UAAA;YAGpC/B,oBAAoB,CAAC,IAAI,CAAC;YAAC8b,UAAA,CAAAla,IAAA;YAAA,KAGrBnW,OAAO;cAAAqwB,UAAA,CAAAja,IAAA;cAAA;YAAA;YACH8J,QAAQ,GAAGtQ,MAAM,CAAC2F,EAAE;YAQ1BvV,OAAO,CAAC8S,KAAK,CAACyE,OAAO,CAAC2I,QAAQ,CAAC,GAAGpQ,cAAc;YAC1CqgB,eAAe,GAAGrgB,cAAc,qBAAAogB,gBAAA,GAAdpgB,cAAc,CAAG,CAAC,CAAC,qBAAnBogB,gBAAA,CAAqB3a,EAAE;YAEzCgI,KAAK,GAAG,EAAE;YAAA8S,UAAA,CAAAja,IAAA;YAAA,OACYpW,OAAO,CAAC4gB,UAAU,CAACV,QAAQ,EAAE;cACvDwE,KAAK,EAAEyL,eAAe;cACtB5S,KAAK,EAALA;YACF,CAAC,CAAC;UAAA;YAHI4C,aAAa,GAAAkQ,UAAA,CAAA5S,IAAA;YAKb2C,cAAc,GAAGD,aAAa,CAAC3U,QAAQ,CAACuH,MAAM,KAAKwK,KAAK;YACxDtD,qBAAqB,GAAGja,OAAO,CAAC8S,KAAK,CAACyE,OAAO,CAAC2I,QAAQ,CAAC,IAAI,EAAE;YACnE9I,sBAAsB,CAACgJ,cAAc,EAAEnG,qBAAqB,CAAC;UAAC;YAAAoW,UAAA,CAAAja,IAAA;YAAA;UAAA;YAAAia,UAAA,CAAAla,IAAA;YAAAka,UAAA,CAAA7T,EAAA,GAAA6T,UAAA;YAGhEvP,OAAO,CAACC,IAAI,CAAC,8CAA8C,EAAAsP,UAAA,CAAA7T,EAAK,CAAC;YACjE,IAAI6T,UAAA,CAAA7T,EAAA,YAAeC,KAAK,EAAE;cACxBrK,QAAQ,CAAAie,UAAA,CAAA7T,EAAI,CAAC;YACf,CAAC,MAAM;cACLpK,QAAQ,CAAC,IAAI,CAAC;YAChB;YACAmC,oBAAoB,CAAC,KAAK,CAAC;YAAC,MAAA8b,UAAA,CAAA7T,EAAA;UAAA;UAAA;YAAA,OAAA6T,UAAA,CAAAzZ,IAAA;QAAA;MAAA,GAAAqZ,SAAA;IAAA,CAG/B;IAAA,gBAvCKF,cAAwEA,CAAA;MAAA,OAAAC,MAAA,CAAAnZ,KAAA,OAAAC,SAAA;IAAA;EAAA,GAuC7E;EAED,IAAMwZ,aAAa,GAAG,IAAAC,cAAO,EAC3B;IAAA,IAAAC,aAAA;IAAA,OAAM,CAAC,EAACxwB,OAAO,aAAAwwB,aAAA,GAAPxwB,OAAO,CAAE4X,IAAI,aAAb4Y,aAAA,CAAeC,MAAM,KAAIzvB,sBAAsB;EAAA,GACvD,EAAArD,cAAA,GAACqC,OAAO,CAAC4X,IAAI,qBAAZja,cAAA,CAAc8yB,MAAM,EAAEzvB,sBAAsB,CAC/C,CAAC;EAED,IAAM0vB,sBAAsB,GAAG,IAAAC,gEAA+B,EAAC;IAC7D3wB,OAAO,EAAPA,OAAO;IACP4wB,oBAAoB,EAAE5jB;EACxB,CAAC,CAAC;EAEF,IAAM6jB,cAAc,GAAG,IAAAC,gDAAuB,EAAC;IAC7C9wB,OAAO,EAAPA,OAAO;IACP+wB,QAAQ,EAAET,aAAa;IACvBvuB,mBAAmB,EAAnBA,mBAAmB;IACnBG,2BAA2B,EAA3BA,2BAA2B;IAC3BG,qBAAqB,EAArBA,qBAAqB;IACrB8P,KAAK,EAALA,KAAK;IACLrO,YAAY,EACVA,YAAY,WAAZA,YAAY,GACZ,CAAC,GAAAlG,MAAA,GAAE,CAAA+a,mBAAmB,oBAAnBA,mBAAmB,CAAEyS,QAAQ,KAAI,EAAE,aAApCxtB,MAAA,CAAuCozB,IAAI,CAAC,UAACC,OAAO;MAAA,OAAKA,OAAO,CAACrI,IAAI,KAAK,OAAO;IAAA,EAAC;IACtFxjB,kBAAkB,EAAlBA,kBAAkB;IAClBE,oBAAoB,EAApBA,oBAAoB;IACpB4S,OAAO,EAAPA,OAAO;IACPgZ,eAAe,EAAEjiB,iBAAiB;IAClCqJ,WAAW,EAAXA,WAAW;IACXC,OAAO,EAAPA,OAAO;IACP5F,QAAQ,EAARA,QAAQ;IACR8D,wBAAwB,EAAxBA,wBAAwB;IACxB6H,oBAAoB,EAApBA,oBAAoB;IACpBrL,OAAO,EAAPA,OAAO;IACPrL,gBAAgB,EAAhBA,gBAAgB;IAChB4Q,QAAQ,EAARA,QAAQ;IACR3P,6BAA6B,EAA7BA,6BAA6B;IAC7BI,OAAO,EAAPA,OAAO;IACPyD,oBAAoB,EAApBA,oBAAoB;IACpBe,IAAI,EAAJA,IAAI;IACJ8V,aAAa,EAAbA,aAAa;IACbtmB,4BAA4B,EAA5BA,4BAA4B;IAC5B2V,WAAW,EAAXA,WAAW;IACXqC,kBAAkB,EAAlBA,kBAAkB;IAClB1F,YAAY,EAAZA,YAAY;IACZ2F,eAAe,EAAfA,eAAe;IACfrF,UAAU,EAAVA,UAAU;IACVuF,wBAAwB,EAAxBA,wBAAwB;IACxBtE,YAAY,EAAZA,YAAY;IACZC,QAAQ,EAARA;EACF,CAAC,CAAC;EAEF,IAAMogB,wBAAwB,GAAG,IAAAC,oEAAiC,EAAqB;IACrFrzB,wBAAwB,EAAxBA,wBAAwB;IACxBK,YAAY,EAAZA,YAAY;IACZoB,4BAA4B,EAA5BA,4BAA4B;IAC5BC,2BAA2B,EAA3BA,2BAA2B;IAC3B6V,SAAS,EAATA,SAAS;IACToY,iBAAiB,EAAjBA,iBAAiB;IACjBH,uBAAuB,EAAvBA,uBAAuB;IACvBntB,cAAc,EAAdA,cAAc;IACdE,oBAAoB,EAApBA,oBAAoB;IACpBE,aAAa,EAAbA,aAAa;IACbuwB,QAAQ,EAAET,aAAa;IACvBhvB,kBAAkB,EAAlBA,kBAAkB;IAClBC,oBAAoB,EAApBA,oBAAoB;IACpBwQ,OAAO,EAAPA,OAAO;IACPsb,WAAW,EAAXA,WAAW;IACXzrB,gBAAgB,EAAhBA,gBAAgB;IAChBoB,iBAAiB,EAAjBA,iBAAiB;IACjB6B,WAAW,EAAXA,WAAW;IACXE,aAAa,EAAbA,aAAa;IACbG,cAAc,EAAdA,cAAc;IACdM,kBAAkB,EAAlBA,kBAAkB;IAClBI,YAAY,EAAZA,YAAY;IACZO,KAAK,EAALA,KAAK;IACLE,YAAY,EAAZA,YAAY;IACZG,uBAAuB,EAAvBA,uBAAuB;IACvBG,gBAAgB,EAAhBA,gBAAgB;IAChBG,qBAAqB,EAArBA,qBAAqB;IACrB4B,gBAAgB,GAAA7K,MAAA,GAAE4K,oBAAoB,WAApBA,oBAAoB,GAAIkQ,mBAAmB,oBAAnBA,mBAAmB,CAAE0Y,kBAAkB,YAAAxzB,MAAA,GAAIgU,SAAS;IAC9FjJ,gBAAgB,EAAhBA,gBAAgB;IAChBG,yBAAyB,EAAzBA,yBAAyB;IACzBC,uBAAuB,EAAvBA,uBAAuB;IACvBoD,iBAAiB,EAAjBA,iBAAiB;IACjBS,aAAa,EAAbA,aAAa;IACbC,YAAY,EAAZA,YAAY;IACZ6G,aAAa,EAAbA,aAAa;IACbzF,UAAU,EAAVA,UAAU;IACVM,cAAc,EAAdA,cAAc;IACdgc,WAAW,EAAXA,WAAW;IACXnc,8BAA8B,EAA9BA,8BAA8B;IAC9BI,WAAW,EAAXA,WAAW;IACX+e,qBAAqB,EAArBA,qBAAqB;IACrBre,gCAAgC,EAAhCA,gCAAgC;IAChCoB,uBAAuB,EAAvBA;EACF,CAAC,CAAC;EAEF,IAAM+gB,kBAAkB,GAAG,IAAAC,0EAAoC,EAAC;IAC9Djc,SAAS,EAATA,SAAS;IACT/C,OAAO,EAAPA,OAAO;IACPqC,6BAA6B,EAA7BA,6BAA6B;IAC7B7M,WAAW,EAAED,eAAe,KAAK+J,SAAS,GAAG/J,eAAe,GAAGC,WAAW;IAC1EE,iBAAiB,EACfD,qBAAqB,KAAK6J,SAAS,GAAG7J,qBAAqB,GAAGC,iBAAiB;IACjFmkB,QAAQ,EAARA,QAAQ;IACRO,cAAc,EAAdA,cAAc;IACdnhB,QAAQ,EAARA,QAAQ;IACR6H,cAAc,EAAdA,cAAc;IACdG,oBAAoB,EAApBA;EACF,CAAC,CAAC;EAEF,IAAMge,eAAe,GAAG,IAAAC,kDAAwB,EAAC;IAC/CzzB,wBAAwB,EAAxBA,wBAAwB;IACxBO,UAAU,EAAVA,UAAU;IACVG,iBAAiB,EAAjBA,iBAAiB;IACjBG,eAAe,EAAfA,eAAe;IACfc,IAAI,EAAJA,IAAI;IACJE,SAAS,EAATA,SAAS;IACTC,UAAU,EAAVA,UAAU;IACVC,UAAU,EAAVA,UAAU;IACVuV,SAAS,EAATA,SAAS;IACT3U,UAAU,EAAVA,UAAU;IACVG,6BAA6B,EAA7BA,6BAA6B;IAC7B6sB,aAAa,EAAbA,aAAa;IACbuB,cAAc,EAAdA,cAAc;IACd/tB,sBAAsB,EAAtBA,sBAAsB;IACtBE,6BAA6B,EAA7BA,6BAA6B;IAC7Ba,2BAA2B,EAA3BA,2BAA2B;IAC3BK,cAAc,EAAdA,cAAc;IACdG,mBAAmB,EAAnBA,mBAAmB;IACnBG,kBAAkB,EAAlBA,kBAAkB;IAClBM,QAAQ,EAARA,QAAQ;IACRE,kBAAkB,EAAlBA,kBAAkB;IAClBC,UAAU,EAAVA,UAAU;IACVE,OAAO,EAAPA,OAAO;IACPE,sBAAsB,EAAtBA,sBAAsB;IACtBE,KAAK,EAALA,KAAK;IACLI,YAAY,EAAZA,YAAY;IACZC,WAAW,EAAXA,WAAW;IACXC,UAAU,EAAVA,UAAU;IACVC,YAAY,EAAZA,YAAY;IACZC,UAAU,EAAVA,UAAU;IACVC,UAAU,EAAVA,UAAU;IACVC,UAAU,EAAVA,UAAU;IACVC,gBAAgB,EAAhBA,gBAAgB;IAChBC,iBAAiB,EAAjBA,iBAAiB;IACjBC,cAAc,EAAdA,cAAc;IACdC,WAAW,EAAXA,WAAW;IACXC,iBAAiB,EAAjBA,iBAAiB;IACjBwD,2BAA2B,EAA3BA,2BAA2B;IAC3BG,qBAAqB,EAArBA,qBAAqB;IACrB3C,iCAAiC,EAAE,CAACgF,SAAS,IAAIhF,iCAAiC;IAClFG,mBAAmB,EAAnBA,mBAAmB;IACnBG,qBAAqB,EAArBA,qBAAqB;IACrBe,iBAAiB,EAAjBA,iBAAiB;IACjBO,+BAA+B,EAA/BA,+BAA+B;IAC/BiB,aAAa,EAAbA,aAAa;IACbW,OAAO,EAAPA,OAAO;IACPE,cAAc,EAAdA,cAAc;IACdE,aAAa,EAAbA,aAAa;IACbG,aAAa,EAAbA,aAAa;IACbG,cAAc,EAAdA,cAAc;IACdG,mBAAmB,EAAnBA,mBAAmB;IACnBE,cAAc,EAAdA,cAAc;IACdG,YAAY,EAAZA,YAAY;IACZG,aAAa,EAAbA,aAAa;IACbE,aAAa,EAAbA,aAAa;IACbG,WAAW,EAAXA,WAAW;IACXG,mBAAmB,EAAnBA,mBAAmB;IACnBG,cAAc,EAAdA,cAAc;IACdG,qBAAqB,EAArBA,qBAAqB;IACrBI,aAAa,EAAbA,aAAa;IACbG,aAAa,EAAbA,aAAa;IACbG,aAAa,EAAbA,aAAa;IACbE,WAAW,EAAXA,WAAW;IACXI,cAAc,EAAdA,cAAc;IACdS,kBAAkB,EAAlBA,kBAAkB;IAClBE,gBAAgB,EAAhBA,gBAAgB;IAChBC,cAAc,EAAdA,cAAc;IACdE,mBAAmB,EAAnBA,mBAAmB;IACnBG,YAAY,EAAZA,YAAY;IACZsY,aAAa,EAAbA,aAAa;IACblY,KAAK,EAALA,KAAK;IACL6d,gBAAgB,EAAhBA,gBAAgB;IAChB1d,oBAAoB,EAApBA,oBAAoB;IACpBE,cAAc,EAAdA,cAAc;IACd4f,YAAY,EAAZA,YAAY;IACZN,eAAe,EAAfA,eAAe;IACfE,qBAAqB,EAArBA,qBAAqB;IACrB/d,kBAAkB,EAAlBA,kBAAkB;IAClByF,eAAe,EAAfA,eAAe;IACfjF,eAAe,EAAfA,eAAe;IACfG,wBAAwB,EAAxBA,wBAAwB;IACxBkV,aAAa,EAAbA,aAAa;IACb5U,UAAU,EAAVA,UAAU;IACVE,cAAc,EAAdA;EACF,CAAC,CAAC;EAEF,IAAM8gB,kBAAkB,GAAG;IACzB1yB,4BAA4B,EAA5BA,4BAA4B;IAC5BG,0BAA0B,EAA1BA,0BAA0B;IAC1BG,0BAA0B,EAA1BA;EACF,CAAC;EAED,IAAMqyB,aAAa,GAAG,IAAAC,8CAAsB,EAAC;IAC3C1zB,4BAA4B,EAA5BA,4BAA4B;IAC5B2xB,WAAW,EAAXA,WAAW;IACXE,cAAc,EAAdA,cAAc;IACdL,UAAU,EAAVA,UAAU;IACV3P,YAAY,EAAZA,YAAY;IACZxL,oBAAoB,EAApBA,oBAAoB;IACpB3E,MAAM,EAANA,MAAM;IACNsE,aAAa,EAAbA,aAAa;IACbI,iBAAiB,EAAjBA,iBAAiB;IACjBxE,cAAc,EAAdA;EACF,CAAC,CAAC;EAEF,IAAM+hB,aAAa,GAAG,IAAAC,8CAAsB,EAAC;IAC3C/hB,MAAM,EAANA;EACF,CAAC,CAAC;EAGF,IAAI2B,OAAO,EAAE,OAAO,IAAI;EAExB,IAAI,CAAC1R,OAAO,IAAKmS,KAAK,IAAI3G,QAAQ,CAACuH,MAAM,KAAK,CAAE,EAAE;IAChD,OAAOze,MAAA,YAAAy9B,aAAA,CAACtqB,qBAAqB;MAAC0K,KAAK,EAAEA,KAAM;MAAC6f,QAAQ,EAAC,SAAS;MAACC,KAAK,EAAE1O,aAAc;MAAA2O,MAAA,EAAAx3B,KAAA;MAAAy3B,QAAA;QAAAC,QAAA,EAAAz3B,YAAA;QAAA03B,UAAA;QAAAC,YAAA;MAAA;IAAA,CAAE,CAAC;EACzF;EAEA,IAAI,EAACtyB,OAAO,YAAPA,OAAO,CAAEua,GAAG,KAAI,CAACva,OAAO,CAACwd,KAAK,EAAE;IACnC,OACElpB,MAAA,YAAAy9B,aAAA,CAACt9B,YAAA,CAAA89B,IAAI;MAACC,KAAK,EAAE,CAACt2B,MAAM,CAACG,aAAa,EAAE;QAAEo2B,KAAK,EAAErhB;MAAM,CAAC,EAAE/U,aAAa,CAAE;MAACq2B,MAAM,EAAC,YAAY;MAAAR,MAAA,EAAAx3B,KAAA;MAAAy3B,QAAA;QAAAC,QAAA,EAAAz3B,YAAA;QAAA03B,UAAA;QAAAC,YAAA;MAAA;IAAA,GACtF5iB,CAAC,CAAC,+BAA+B,CAC9B,CAAC;EAEX;EAEA,OACEpb,MAAA,YAAAy9B,aAAA,CAAC5qB,sBAAsB,MAAAgS,SAAA;IACrBwZ,QAAQ,EAAE1rB,gBAAiB;IAC3B2rB,OAAO,EAAE,CAAC1xB,6BAA8B;IACxCmG,sBAAsB,EAAEA;EAAuB,GAC3CvJ,mCAAmC;IAAAo0B,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,IAEvCh+B,MAAA,YAAAy9B,aAAA,CAACx8B,eAAA,CAAAs9B,eAAe;IAAqBC,KAAK,EAAEjC,cAAe;IAAAqB,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,GACzDh+B,MAAA,YAAAy9B,aAAA,CAACn8B,uBAAA,CAAAm9B,uBAAuB;IAACD,KAAK,EAAEpC,sBAAuB;IAAAwB,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,GACrDh+B,MAAA,YAAAy9B,aAAA,CAAC77B,cAAA,CAAA88B,cAAc;IAAqBF,KAAK,EAAEjB,aAAc;IAAAK,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,GACvDh+B,MAAA,YAAAy9B,aAAA,CAACl8B,4BAAA,CAAAo9B,4BAA4B;IAAqBH,KAAK,EAAExB,kBAAmB;IAAAY,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,GAC1Eh+B,MAAA,YAAAy9B,aAAA,CAACp8B,gBAAA,CAAAu9B,gBAAgB;IAAqBJ,KAAK,EAAEtB,eAAgB;IAAAU,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,GAC3Dh+B,MAAA,YAAAy9B,aAAA,CAAC/7B,cAAA,CAAAm9B,cAAc;IAAqBL,KAAK,EAAEnB,aAAc;IAAAO,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,GACvDh+B,MAAA,YAAAy9B,aAAA,CAACj8B,mBAAA,CAAAs9B,mBAAmB;IAAqBN,KAAK,EAAEpB,kBAAmB;IAAAQ,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,GACjEh+B,MAAA,YAAAy9B,aAAA,CAACr8B,oBAAA,CAAA29B,oBAAoB;IAAqBP,KAAK,EAAE3B,wBAAyB;IAAAe,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,GACxEh+B,MAAA,YAAAy9B,aAAA,CAACt9B,YAAA,CAAA6+B,IAAI;IAACd,KAAK,EAAE;MAAEe,MAAM,EAAE;IAAO,CAAE;IAAArB,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,GAAEryB,QAAe,CAC7B,CACH,CACP,CACA,CACU,CAChB,CACO,CACV,CACK,CAAC;AAE7B,CAAC;AAeM,IAAMuzB,OAAO,GAAG,SAAVA,OAAOA,CAGlB/1B,KAA0D,EACvD;EAAA,IAAAg2B,aAAA,EAAAC,cAAA;EACH,IAAAC,eAAA,GAAyC,IAAAC,2BAAc,EAAqB,CAAC;IAArE1zB,MAAM,GAAAyzB,eAAA,CAANzzB,MAAM;IAAEiC,oBAAoB,GAAAwxB,eAAA,CAApBxxB,oBAAoB;EACpC,IAAA0xB,qBAAA,GAAc,IAAAC,yCAAqB,EAAC,CAAC;IAA7BpkB,CAAC,GAAAmkB,qBAAA,CAADnkB,CAAC;EAET,IAAMT,iBAAiB,GAAG,CAAAwkB,aAAA,GAAAh2B,KAAK,CAACmS,MAAM,aAAZ6jB,aAAA,CAAcle,EAAE,GAAG,CAAC,CAAC9X,KAAK,CAACoS,UAAU,GAAG,IAAI;EAEtE,IAAAkkB,gBAAA,GAeI,IAAAC,iCAAe,EACjBv2B,KAAK,CAACuC,OAAO,EACbvC,KAAK,CAACoS,UAAU,IAAA6jB,cAAA,GAAGj2B,KAAK,CAACmS,MAAM,qBAAZ8jB,cAAA,CAAcne,EAAE,GAAG1D,SACxC,CAAC;IAjBC5I,OAAO,GAAA8qB,gBAAA,CAAP9qB,OAAO;IACPuC,QAAQ,GAAAuoB,gBAAA,CAARvoB,QAAQ;IACRiC,IAAI,GAAAsmB,gBAAA,CAAJtmB,IAAI;IACJiB,UAAU,GAAAqlB,gBAAA,CAAVrlB,UAAU;IACVC,WAAW,GAAAolB,gBAAA,CAAXplB,WAAW;IACXC,OAAO,GAAAmlB,gBAAA,CAAPnlB,OAAO;IACPC,iBAAiB,GAAAklB,gBAAA,CAAjBllB,iBAAiB;IACjBC,SAAS,GAAAilB,gBAAA,CAATjlB,SAAS;IACTC,eAAe,GAAAglB,gBAAA,CAAfhlB,eAAe;IACfC,WAAW,GAAA+kB,gBAAA,CAAX/kB,WAAW;IACXc,cAAc,GAAAikB,gBAAA,CAAdjkB,cAAc;IACdC,MAAM,GAAAgkB,gBAAA,CAANhkB,MAAM;IACNe,YAAY,GAAAijB,gBAAA,CAAZjjB,YAAY;IACZC,QAAQ,GAAAgjB,gBAAA,CAARhjB,QAAQ;EAMV,OACEzc,MAAA,YAAAy9B,aAAA,CAACv0B,kBAAkB,MAAA2b,SAAA;IAEfjZ,MAAM,EAANA,MAAM;IACNiC,oBAAoB,EAApBA,oBAAoB;IACpBuN,CAAC,EAADA;EAAC,GAECjS,KAAK;IACTwR,iBAAiB,EAAEA,iBAAkB;IAEnChG,OAAO,EAAPA,OAAO;IACPuC,QAAQ,EAAE/N,KAAK,CAAC+N,QAAQ,IAAIA,QAAQ;IACpCiC,IAAI,EAAJA,IAAI;IACJiB,UAAU,EAAVA,UAAU;IACVC,WAAW,EAAXA,WAAW;IACXC,OAAO,EAAPA,OAAO;IACPC,iBAAiB,EAAjBA,iBAAiB;IACjBC,SAAS,EAATA,SAAS;IACTC,eAAe,EAAfA,eAAe;IACfC,WAAW,EAAXA,WAAW;IACXc,cAAc,EAAdA,cAAc;IACdC,MAAM,EAANA,MAAM;IACNe,YAAY,EAAZA,YAAY;IACZC,QAAQ,EAARA,QAAQ;IAAAmhB,MAAA,EAAAx3B,KAAA;IAAAy3B,QAAA;MAAAC,QAAA,EAAAz3B,YAAA;MAAA03B,UAAA;MAAAC,YAAA;IAAA;EAAA,EAEX,CAAC;AAEN,CAAC;AAACt1B,OAAA,CAAAw2B,OAAA,GAAAA,OAAA"}