diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 43f9b6d074..2327fe7460 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -201,13 +201,13 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) MessageNoRecipient(parsed_message) send2adminchat() //VOREStation Add //show it to the person adminhelping too - to_chat(C, "PM to-Admins: [name]") + to_chat(C, "PM to-Admins: [name]") //send it to irc if nobody is on and tell us how many were on var/admin_number_present = send2irc_adminless_only(initiator_ckey, name) log_admin("Ticket #[id]: [key_name(initiator)]: [name] - heard by [admin_number_present] non-AFK admins who have +BAN.") if(admin_number_present <= 0) - to_chat(C, "No active admins are online, your adminhelp was sent to the admin discord.") //VOREStation Edit + to_chat(C, "No active admins are online, your adminhelp was sent to the admin discord.") //VOREStation Edit send2adminchat() //VOREStation Add //YW EDIT START var/list/adm = get_admin_counts() @@ -280,7 +280,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //won't bug irc /datum/admin_help/proc/MessageNoRecipient(msg) var/ref_src = "\ref[src]" - var/chat_msg = "Ticket [TicketHref("#[id]", ref_src)]: [LinkedReplyName(ref_src)] [FullMonty(ref_src)]: [msg]" + var/chat_msg = "Ticket [TicketHref("#[id]", ref_src)]: [LinkedReplyName(ref_src)] [FullMonty(ref_src)]: [msg]" AddInteraction("[LinkedReplyName(ref_src)]: [msg]") //send this msg to all admins @@ -652,7 +652,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(tgui_alert(usr, "You already have a ticket open. Is this for the same issue?","Duplicate?",list("Yes","No")) != "No") if(current_ticket) current_ticket.MessageNoRecipient(msg) - to_chat(usr, "PM to-Admins: [msg]") + to_chat(usr, "PM to-Admins: [msg]") return else to_chat(usr, "Ticket not found, creating new one...") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 7df321d4f4..efffb3c57a 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -100,7 +100,7 @@ to_chat(M, "You hear a voice in your head... [msg]") log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]") - msg = " SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]" + msg = " SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]" message_admins(msg) admin_ticket_log(M, msg) feedback_add_details("admin_verb","SMS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -148,7 +148,7 @@ to_chat(M, msg) log_admin("DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]") - msg = " DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]
" + msg = " DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]
" message_admins(msg) admin_ticket_log(M, msg) feedback_add_details("admin_verb","DIRN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/randomverbs_vr.dm b/code/modules/admin/verbs/randomverbs_vr.dm index b157ee01a3..d4836faf54 100644 --- a/code/modules/admin/verbs/randomverbs_vr.dm +++ b/code/modules/admin/verbs/randomverbs_vr.dm @@ -63,10 +63,8 @@ new_mob.key = picked_client.key //Finally put them in the mob if(organs) new_mob.copy_from_prefs_vr() - // CHOMPEdit Start if(LAZYLEN(new_mob.vore_organs)) new_mob.vore_selected = new_mob.vore_organs[1] - // CHOMPEdit End log_admin("[key_name_admin(src)] has spawned [new_mob.key] as mob [new_mob.type].") message_admins("[key_name_admin(src)] has spawned [new_mob.key] as mob [new_mob.type].", 1) diff --git a/tgui/packages/tgui-panel/chat/constants.ts b/tgui/packages/tgui-panel/chat/constants.ts index 978e7b72e2..0460b46746 100644 --- a/tgui/packages/tgui-panel/chat/constants.ts +++ b/tgui/packages/tgui-panel/chat/constants.ts @@ -6,7 +6,7 @@ // export const MAX_VISIBLE_MESSAGES = 2500; No longer a constant // export const MAX_PERSISTED_MESSAGES = 1000; No longer a constant -export const MESSAGE_SAVE_INTERVAL = 10000; +// export const MESSAGE_SAVE_INTERVAL = 10000; No longer a constant export const MESSAGE_PRUNE_INTERVAL = 60000; // export const COMBINE_MAX_MESSAGES = 5; No longer a constant // export const COMBINE_MAX_TIME_WINDOW = 5000; No longer a constant @@ -61,7 +61,7 @@ export const MESSAGE_TYPES = [ type: MESSAGE_TYPE_NPCEMOTE, // Needs to be first name: 'NPC Emotes / Says', description: 'In-character emotes and says from NPCs', - selector: '.npcemote, .npcsay', + selector: '.npcemote, .npcsay :not(.radio)', }, { type: MESSAGE_TYPE_LOCALCHAT, @@ -99,7 +99,7 @@ export const MESSAGE_TYPES = [ name: 'Info', description: 'Non-urgent messages from the game and items', selector: - '.notice:not(.pm), .adminnotice, .info, .sinister, .cult, .infoplain, .announce, .hear, .smallnotice, .holoparasite, .boldnotice', + '.notice:not(.pm), .adminnotice:not(.pm), .info, .sinister, .cult, .infoplain, .announce, .hear, .smallnotice, .holoparasite, .boldnotice', }, { type: MESSAGE_TYPE_WARNING, diff --git a/tgui/packages/tgui-panel/chat/middleware.js b/tgui/packages/tgui-panel/chat/middleware.js index ca04222463..99cbd8b7e1 100644 --- a/tgui/packages/tgui-panel/chat/middleware.js +++ b/tgui/packages/tgui-panel/chat/middleware.js @@ -7,6 +7,7 @@ import { storage } from 'common/storage'; import DOMPurify from 'dompurify'; +import { selectGame } from '../game/selectors'; import { addHighlightSetting, loadSettings, @@ -29,13 +30,14 @@ import { toggleAcceptedType, updateMessageCount, } from './actions'; -import { MESSAGE_SAVE_INTERVAL } from './constants'; import { createMessage, serializeMessage } from './model'; import { chatRenderer } from './renderer'; import { selectChat, selectCurrentChatPage } from './selectors'; // List of blacklisted tags const FORBID_TAGS = ['a', 'iframe', 'link', 'video']; +let storedRounds = []; +let storedLines = []; const saveChatToStorage = async (store) => { const state = selectChat(store.getState()); @@ -85,32 +87,49 @@ const loadChatFromStorage = async (store) => { }); } if (archivedMessages) { - chatRenderer.archivedMessages = archivedMessages; - - /* FIXME Implement this later on + for (let archivedMessage of archivedMessages) { + if (archivedMessage.html) { + archivedMessage.html = DOMPurify.sanitize(archivedMessage.html, { + FORBID_TAGS, + }); + } + } const settings = selectSettings(store.getState()); - const filteredMessages = []; // Checks if the setting is actually set or set to -1 (infinite) // Otherwise make it grow infinitely - if (settings.logRetainDays || settings.logRetainDays === -1) { - const limit = new Date(); - limit.setDate(limit.getMinutes() - settings.logRetainDays); + if (settings.logRetainRounds) { + storedRounds = []; + storedLines = []; + let oldId = null; + let currentLine = 0; + settings.storedRounds = 0; + settings.exportStart = 0; + settings.exportEnd = 0; for (let message of archivedMessages) { - const timestamp = new Date(message.createdAt); - timestamp.setDate(timestamp.getMinutes() - settings.logRetainDays); - - if (timestamp.getDate() < limit.getDate()) { - filteredMessages.push(message); + const currentId = message.roundId; + if (currentId !== oldId) { + const round = currentId; + const line = currentLine; + storedRounds.push(round); + storedLines.push(line); + oldId = currentId; + currentLine++; } } - - archivedMessages.length = 0; + if (storedRounds.length > settings.logRetainRounds) { + chatRenderer.archivedMessages = archivedMessages.slice( + storedLines[storedRounds.length - settings.logRetainRounds], + ); + settings.storedRounds = settings.logRetainRounds; + } else { + chatRenderer.archivedMessages = archivedMessages; + } + settings.lastId = oldId; + } else { + chatRenderer.archivedMessages = archivedMessages; } - - chatRenderer.archivedMessages = filteredMessages; - */ } store.dispatch(loadChat(state)); }; @@ -131,21 +150,28 @@ export const chatMiddleware = (store) => { chatRenderer.events.on('scrollTrackingChanged', (scrollTracking) => { store.dispatch(changeScrollTracking(scrollTracking)); }); - setInterval(() => { - saveChatToStorage(store); - }, MESSAGE_SAVE_INTERVAL); return (next) => (action) => { const { type, payload } = action; const settings = selectSettings(store.getState()); + const game = selectGame(store.getState()); settings.totalStoredMessages = chatRenderer.getStoredMessages(); + settings.storedRounds = storedRounds.length; chatRenderer.setVisualChatLimits( settings.visibleMessageLimit, settings.combineMessageLimit, settings.combineIntervalLimit, settings.logLineCount, + settings.logEnable, + settings.logLimit, + settings.storedTypes, + game.roundId, ); - if (!initialized) { + // Load the chat once settings are loaded + if (!initialized && settings.initialized) { initialized = true; + setInterval(() => { + saveChatToStorage(store); + }, settings.saveInterval * 1000); loadChatFromStorage(store); } if (type === 'chat/message') { @@ -186,6 +212,11 @@ export const chatMiddleware = (store) => { chatRenderer.processBatch([payload_obj.content], { doArchive: true, }); + if (game.roundId !== settings.lastId) { + storedRounds.push(game.roundId); + storedLines.push(settings.totalStoredMessages - 1); + settings.lastId = game.roundId; + } return; } if (type === loadChat.type) { @@ -235,11 +266,21 @@ export const chatMiddleware = (store) => { return next(action); } if (type === saveChatToDisk.type) { - chatRenderer.saveToDisk(settings.logLineCount); + chatRenderer.saveToDisk( + settings.logLineCount, + storedLines[storedLines.length - settings.exportEnd], + storedLines[storedLines.length - settings.exportStart], + ); return; } if (type === purgeChatMessageArchive.type) { chatRenderer.purgeMessageArchive(); + storedRounds = []; + storedLines = []; + settings.lastId = null; + settings.storedRounds = 0; + settings.exportStart = 0; + settings.exportEnd = 0; return; } return next(action); diff --git a/tgui/packages/tgui-panel/chat/model.js b/tgui/packages/tgui-panel/chat/model.js index 5f8a96227d..b2f3953400 100644 --- a/tgui/packages/tgui-panel/chat/model.js +++ b/tgui/packages/tgui-panel/chat/model.js @@ -11,6 +11,8 @@ import { MESSAGE_TYPE_INTERNAL, MESSAGE_TYPES } from './constants'; export const canPageAcceptType = (page, type) => type.startsWith(MESSAGE_TYPE_INTERNAL) || page.acceptedTypes[type]; +export const canStoreType = (storedTypes, type) => storedTypes[type]; + export const createPage = (obj) => { let acceptedTypes = {}; @@ -43,6 +45,7 @@ export const createMainPage = () => { export const createMessage = (payload) => ({ createdAt: Date.now(), + roundId: null, ...payload, }); @@ -52,6 +55,7 @@ export const serializeMessage = (message, archive = false) => ({ html: archive ? message.node.outerHTML : message.html, times: message.times, createdAt: message.createdAt, + roundId: message.roundId, }); export const isSameMessage = (a, b) => diff --git a/tgui/packages/tgui-panel/chat/renderer.jsx b/tgui/packages/tgui-panel/chat/renderer.jsx index a3513fb6c4..fc236e43c7 100644 --- a/tgui/packages/tgui-panel/chat/renderer.jsx +++ b/tgui/packages/tgui-panel/chat/renderer.jsx @@ -6,25 +6,27 @@ import { EventEmitter } from 'common/events'; import { classes } from 'common/react'; +import { render } from 'react-dom'; import { createLogger } from 'tgui/logging'; + +import { Tooltip } from '../../tgui/components'; import { IMAGE_RETRY_DELAY, IMAGE_RETRY_LIMIT, IMAGE_RETRY_MESSAGE_AGE, MESSAGE_PRUNE_INTERVAL, - MESSAGE_TYPES, MESSAGE_TYPE_INTERNAL, MESSAGE_TYPE_UNKNOWN, + MESSAGE_TYPES, } from './constants'; -import { render } from 'react-dom'; import { canPageAcceptType, + canStoreType, createMessage, isSameMessage, serializeMessage, } from './model'; import { highlightNode, linkifyNode } from './replaceInTextNode'; -import { Tooltip } from '../../tgui/components'; const logger = createLogger('chatRenderer'); @@ -132,7 +134,11 @@ class ChatRenderer { this.visibleMessageLimit = 2500; this.combineMessageLimit = 5; this.combineIntervalLimit = 5; - this.exportLimit = -1; + this.exportLimit = 0; + this.logLimit = 0; + this.logEnable = true; + this.roundId = null; + this.storedTypes = {}; // Scroll handler /** @type {HTMLElement} */ this.scrollNode = null; @@ -375,11 +381,19 @@ class ChatRenderer { combineMessageLimit, combineIntervalLimit, exportLimit, + logEnable, + logLimit, + storedTypes, + roundId, ) { this.visibleMessageLimit = visibleMessageLimit; this.combineMessageLimit = combineMessageLimit; this.combineIntervalLimit = combineIntervalLimit; this.exportLimit = exportLimit; + this.logEnable = logEnable; + this.logLimit = logLimit; + this.storedTypes = storedTypes; + this.roundId = roundId; } getCombinableMessage(predicate) { @@ -561,7 +575,26 @@ class ChatRenderer { countByType[message.type] += 1; // TODO: Detect duplicates this.messages.push(message); - if (doArchive) { + if ( + doArchive && + this.logEnable && + this.storedTypes && + canStoreType(this.storedTypes, message.type) + ) { + message.roundId = this.roundId; + if ( + this.logLimit > 0 && + this.archivedMessages.length >= this.logLimit + 1 + ) { + this.archivedMessages = this.archivedMessages.slice( + -(this.logLimit - 1), + ); + } else if ( + this.logLimit > 0 && + this.archivedMessages.length >= this.logLimit + ) { + this.archivedMessages.shift(); + } this.archivedMessages.push(serializeMessage(message, true)); // TODO: Actually having a better message archiving maybe for exports? } if (canPageAcceptType(this.page, message.type)) { @@ -650,7 +683,7 @@ class ChatRenderer { }); } - saveToDisk(logLineCount) { + saveToDisk(logLineCount, startLine = 0, endLine = 0) { // Allow only on IE11 if (Byond.IS_LTE_IE10) { return; @@ -672,7 +705,16 @@ class ChatRenderer { let messagesHtml = ''; let tmpMsgArray = []; - if (logLineCount > 0) { + if (startLine || endLine) { + if (!endLine) { + tmpMsgArray = this.archivedMessages.slice(startLine); + } else { + tmpMsgArray = this.archivedMessages.slice(startLine, endLine); + } + if (logLineCount > 0) { + tmpMsgArray = tmpMsgArray.slice(-logLineCount); + } + } else if (logLineCount > 0) { tmpMsgArray = this.archivedMessages.slice(-logLineCount); } else { tmpMsgArray = this.archivedMessages; diff --git a/tgui/packages/tgui-panel/settings/SettingsPanel.jsx b/tgui/packages/tgui-panel/settings/SettingsPanel.jsx index a2f171259d..13309a9462 100644 --- a/tgui/packages/tgui-panel/settings/SettingsPanel.jsx +++ b/tgui/packages/tgui-panel/settings/SettingsPanel.jsx @@ -10,6 +10,7 @@ import { useDispatch, useSelector } from 'tgui/backend'; import { Box, Button, + Collapsible, ColorBox, Divider, Dropdown, @@ -22,26 +23,30 @@ import { Tabs, TextArea, } from 'tgui/components'; + import { ChatPageSettings } from '../chat'; import { + purgeChatMessageArchive, rebuildChat, saveChatToDisk, - purgeChatMessageArchive, } from '../chat/actions'; +import { MESSAGE_TYPES } from '../chat/constants'; +import { useGame } from '../game'; import { THEMES } from '../themes'; import { - changeSettingsTab, - updateSettings, addHighlightSetting, + changeSettingsTab, removeHighlightSetting, updateHighlightSetting, + updateSettings, + updateToggle, } from './actions'; -import { SETTINGS_TABS, FONTS, MAX_HIGHLIGHT_SETTINGS } from './constants'; +import { FONTS, MAX_HIGHLIGHT_SETTINGS, SETTINGS_TABS } from './constants'; import { selectActiveTab, - selectSettings, - selectHighlightSettings, selectHighlightSettingById, + selectHighlightSettings, + selectSettings, } from './selectors'; export const SettingsPanel = (props) => { @@ -207,6 +212,7 @@ export const MessageLimits = (props) => { persistentMessageLimit, combineMessageLimit, combineIntervalLimit, + saveInterval, } = useSelector(selectSettings); return (
@@ -228,13 +234,21 @@ export const MessageLimits = (props) => { ) } /> +   + {visibleMessageLimit >= 5000 ? ( + + Impacts performance! + + ) : ( + '' + )} - + toFixed(value)} @@ -246,8 +260,16 @@ export const MessageLimits = (props) => { ) } /> +   + {persistentMessageLimit >= 2500 ? ( + + Delays initialization! + + ) : ( + '' + )} - + { } /> + + toFixed(value)} + onDrag={(e, value) => + dispatch( + updateSettings({ + saveInterval: value, + }), + ) + } + /> +   + {saveInterval <= 3 ? ( + + Warning, experimental! Might crash! + + ) : ( + '' + )} +
); @@ -291,34 +340,205 @@ export const MessageLimits = (props) => { export const ExportTab = (props) => { const dispatch = useDispatch(); - const { logRetainDays, logLineCount, totalStoredMessages } = - useSelector(selectSettings); + const game = useGame(); + const { + storedRounds, + exportStart, + exportEnd, + logRetainRounds, + logEnable, + logLineCount, + logLimit, + totalStoredMessages, + storedTypes, + } = useSelector(selectSettings); const [purgeConfirm, setPurgeConfirm] = useLocalState('purgeConfirm', 0); + const [logConfirm, setLogConfirm] = useLocalState('logConfirm', 0); return (
- - {/* FIXME: Implement this later on - - + + {logEnable ? ( + logConfirm ? ( + + ) : ( + + ) + ) : ( + + )} + + Round ID:  + + {game.roundId ? game.roundId : 'ERROR'} + + + {logEnable ? ( + <> + + + toFixed(value)} + onDrag={(e, value) => + dispatch( + updateSettings({ + logRetainRounds: value, + }), + ) + } + /> +   + {logRetainRounds > 3 ? ( + + Warning, might crash! + + ) : ( + '' + )} + + + toFixed(value)} + onDrag={(e, value) => + dispatch( + updateSettings({ + logLimit: value, + }), + ) + } + /> +   + {logLimit > 0 ? ( + 10000 ? 'red' : 'label'} + > + {logLimit > 15000 + ? 'Warning, might crash! Takes priority above round retention.' + : 'Takes priority above round retention.'} + + ) : ( + '' + )} + + +
+ + {MESSAGE_TYPES.map((typeDef) => ( + + dispatch( + updateToggle({ + type: typeDef.type, + }), + ) + } + > + {typeDef.name} + + ))} + +
+ + ) : ( + '' + )} + + + toFixed(value)} + onDrag={(e, value) => + dispatch( + updateSettings({ + exportStart: value, + }), ) } /> + toFixed(value)} + onDrag={(e, value) => + dispatch( + updateSettings({ + exportEnd: value, + }), + ) + } + /> +   + + Stored Rounds:  + + {storedRounds} - */} - + toFixed(value)} diff --git a/tgui/packages/tgui-panel/settings/actions.ts b/tgui/packages/tgui-panel/settings/actions.ts index 55e5db1126..1e94bf5b46 100644 --- a/tgui/packages/tgui-panel/settings/actions.ts +++ b/tgui/packages/tgui-panel/settings/actions.ts @@ -8,6 +8,7 @@ import { createAction } from 'common/redux'; import { createHighlightSetting } from './model'; +export const updateToggle = createAction('settings/updateToggle'); export const updateSettings = createAction('settings/update'); export const loadSettings = createAction('settings/load'); export const changeSettingsTab = createAction('settings/changeTab'); diff --git a/tgui/packages/tgui-panel/settings/middleware.js b/tgui/packages/tgui-panel/settings/middleware.js index edb16a51c4..c2bbe3043c 100644 --- a/tgui/packages/tgui-panel/settings/middleware.js +++ b/tgui/packages/tgui-panel/settings/middleware.js @@ -13,6 +13,7 @@ import { removeHighlightSetting, updateHighlightSetting, updateSettings, + updateToggle, } from './actions'; import { FONTS_DISABLED } from './constants'; import { selectSettings } from './selectors'; @@ -63,6 +64,7 @@ export const settingsMiddleware = (store) => { }); } if ( + type === updateToggle.type || type === updateSettings.type || type === loadSettings.type || type === addHighlightSetting.type || diff --git a/tgui/packages/tgui-panel/settings/reducer.js b/tgui/packages/tgui-panel/settings/reducer.js index 82e14ffa3e..f338d66468 100644 --- a/tgui/packages/tgui-panel/settings/reducer.js +++ b/tgui/packages/tgui-panel/settings/reducer.js @@ -4,6 +4,7 @@ * @license MIT */ +import { MESSAGE_TYPES } from '../chat/constants'; import { addHighlightSetting, changeSettingsTab, @@ -13,6 +14,7 @@ import { toggleSettings, updateHighlightSetting, updateSettings, + updateToggle, } from './actions'; import { FONTS, MAX_HIGHLIGHT_SETTINGS, SETTINGS_TABS } from './constants'; import { createDefaultHighlightSetting } from './model'; @@ -41,11 +43,20 @@ const initialState = { showReconnectWarning: true, visibleMessageLimit: 2500, persistentMessageLimit: 1000, + saveInterval: 10, combineMessageLimit: 5, combineIntervalLimit: 5, totalStoredMessages: 0, - logRetainDays: -1, - logLineCount: -1, + logRetainRounds: 2, + logEnable: true, + logLineCount: 0, + logLimit: 10000, + storedRounds: 0, + exportStart: 0, + exportEnd: 0, + lastId: null, + initialized: false, + storedTypes: {}, }; export const settingsReducer = (state = initialState, action) => { @@ -56,6 +67,14 @@ export const settingsReducer = (state = initialState, action) => { ...payload, }; } + if (type === updateToggle.type) { + const { type } = payload; + state.storedTypes[type] = !state.storedTypes[type]; + return { + ...state, + storedTypes: { ...state.storedTypes }, + }; + } if (type === loadSettings.type) { // Validate version and/or migrate state if (!payload?.version) { @@ -67,6 +86,17 @@ export const settingsReducer = (state = initialState, action) => { ...state, ...payload, }; + nextState.initialized = true; + let newFilters = {}; + for (let typeDef of MESSAGE_TYPES) { + // alert(typeDef.type); + if (nextState.storedTypes[typeDef.type] === null) { + newFilters[typeDef.type] = true; + } else { + newFilters[typeDef.type] = nextState.storedTypes[typeDef.type]; + } + } + nextState.storedTypes = newFilters; // Lazy init the list for compatibility reasons if (!nextState.highlightSettings) { nextState.highlightSettings = [defaultHighlightSetting.id]; diff --git a/tgui/public/tgui-panel.bundle.js b/tgui/public/tgui-panel.bundle.js index 0408e8d436..4b9f3b1cc4 100644 --- a/tgui/public/tgui-panel.bundle.js +++ b/tgui/public/tgui-panel.bundle.js @@ -1,4 +1,4 @@ -(function(){(function(){var Bc={55852:function(v,m,t){"use strict";/** +(function(){(function(){var Bc={55852:function(v,h,t){"use strict";/** * @license React * react-dom.production.min.js * @@ -6,7 +6,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */function r(e,n){return n!=null&&typeof Symbol!="undefined"&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n}function a(e){"@swc/helpers - typeof";return e&&typeof Symbol!="undefined"&&e.constructor===Symbol?"symbol":typeof e}var i=t(69344),l=t(96336);function s(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=1;on}return!1}function b(e,n,o,u,E,R,$){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=u,this.attributeNamespace=E,this.mustUseProperty=o,this.propertyName=e,this.type=n,this.sanitizeURL=R,this.removeEmptyString=$}var U={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){U[e]=new b(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];U[n]=new b(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){U[e]=new b(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){U[e]=new b(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){U[e]=new b(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){U[e]=new b(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){U[e]=new b(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){U[e]=new b(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){U[e]=new b(e,5,!1,e.toLowerCase(),null,!1,!1)});var z=/[\-:]([a-z])/g;function j(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(z,j);U[n]=new b(n,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(z,j);U[n]=new b(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(z,j);U[n]=new b(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){U[e]=new b(e,1,!1,e.toLowerCase(),null,!1,!1)}),U.xlinkHref=new b("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){U[e]=new b(e,1,!1,e.toLowerCase(),null,!0,!0)});function F(e,n,o,u){var E=U.hasOwnProperty(n)?U[n]:null;(E!==null?E.type!==0:u||!(2et||E[$]!==R[et]){var dt="\n"+E[$].replace(" at new "," at ");return e.displayName&&dt.includes("")&&(dt=dt.replace("",e.displayName)),dt}while(1<=$&&0<=et);break}}}finally{Rt=!1,Error.prepareStackTrace=o}return(e=e?e.displayName||e.name:"")?vt(e):""}function ct(e){switch(e.tag){case 5:return vt(e.type);case 16:return vt("Lazy");case 13:return vt("Suspense");case 19:return vt("SuspenseList");case 0:case 2:case 15:return e=Nt(e.type,!1),e;case 11:return e=Nt(e.type.render,!1),e;case 1:return e=Nt(e.type,!0),e;default:return""}}function gt(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case K:return"Fragment";case B:return"Portal";case tt:return"Profiler";case Y:return"StrictMode";case st:return"Suspense";case V:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case q:return(e.displayName||"Context")+".Consumer";case H:return(e._context.displayName||"Context")+".Provider";case k:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case X:return n=e.displayName||null,n!==null?n:gt(e.type)||"Memo";case G:n=e._payload,e=e._init;try{return gt(e(n))}catch(o){}}return null}function ft(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return gt(n);case 8:return n===Y?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function Lt(e){switch(typeof e=="undefined"?"undefined":a(e)){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function zt(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function _t(e){var n=zt(e)?"checked":"value",o=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),u=""+e[n];if(!e.hasOwnProperty(n)&&typeof o!="undefined"&&typeof o.get=="function"&&typeof o.set=="function"){var E=o.get,R=o.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return E.call(this)},set:function(et){u=""+et,R.call(this,et)}}),Object.defineProperty(e,n,{enumerable:o.enumerable}),{getValue:function(){return u},setValue:function(et){u=""+et},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function te(e){e._valueTracker||(e._valueTracker=_t(e))}function Xt(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var o=n.getValue(),u="";return e&&(u=zt(e)?e.checked?"true":"false":e.value),e=u,e!==o?(n.setValue(e),!0):!1}function se(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(n){return e.body}}function me(e,n){var o=n.checked;return rt({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:o!=null?o:e._wrapperState.initialChecked})}function Ee(e,n){var o=n.defaultValue==null?"":n.defaultValue,u=n.checked!=null?n.checked:n.defaultChecked;o=Lt(n.value!=null?n.value:o),e._wrapperState={initialChecked:u,initialValue:o,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Ct(e,n){n=n.checked,n!=null&&F(e,"checked",n,!1)}function At(e,n){Ct(e,n);var o=Lt(n.value),u=n.type;if(o!=null)u==="number"?(o===0&&e.value===""||e.value!=o)&&(e.value=""+o):e.value!==""+o&&(e.value=""+o);else if(u==="submit"||u==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?It(e,n.type,o):n.hasOwnProperty("defaultValue")&&It(e,n.type,Lt(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function Ot(e,n,o){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var u=n.type;if(!(u!=="submit"&&u!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,o||n===e.value||(e.value=n),e.defaultValue=n}o=e.name,o!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,o!==""&&(e.name=o)}function It(e,n,o){(n!=="number"||se(e.ownerDocument)!==e)&&(o==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+o&&(e.defaultValue=""+o))}var St=Array.isArray;function Ut(e,n,o,u){if(e=e.options,n){n={};for(var E=0;E"+n.valueOf().toString()+"",n=De.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function ge(e,n){if(n){var o=e.firstChild;if(o&&o===e.lastChild&&o.nodeType===3){o.nodeValue=n;return}}e.textContent=n}var Jt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ne=["Webkit","ms","Moz","O"];Object.keys(Jt).forEach(function(e){ne.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Jt[n]=Jt[e]})});function Oe(e,n,o){return n==null||typeof n=="boolean"||n===""?"":o||typeof n!="number"||n===0||Jt.hasOwnProperty(e)&&Jt[e]?(""+n).trim():n+"px"}function Re(e,n){e=e.style;for(var o in n)if(n.hasOwnProperty(o)){var u=o.indexOf("--")===0,E=Oe(o,n[o],u);o==="float"&&(o="cssFloat"),u?e.setProperty(o,E):e[o]=E}}var nt=rt({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function xt(e,n){if(n){if(nt[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(s(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(s(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(s(61))}if(n.style!=null&&typeof n.style!="object")throw Error(s(62))}}function ut(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ht=null;function jt(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var $t=null,Qt=null,Ht=null;function xe(e){if(e=hi(e)){if(typeof $t!="function")throw Error(s(280));var n=e.stateNode;n&&(n=Xo(n),$t(e.stateNode,e.type,n))}}function re(e){Qt?Ht?Ht.push(e):Ht=[e]:Qt=e}function Ve(){if(Qt){var e=Qt,n=Ht;if(Ht=Qt=null,xe(e),n)for(e=0;e>>=0,e===0?32:31-(br(e)/bn|0)|0}var Wn=64,Ar=4194304;function Mr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function jr(e,n){var o=e.pendingLanes;if(o===0)return 0;var u=0,E=e.suspendedLanes,R=e.pingedLanes,$=o&268435455;if($!==0){var et=$&~E;et!==0?u=Mr(et):(R&=$,R!==0&&(u=Mr(R)))}else $=o&~E,$!==0?u=Mr($):R!==0&&(u=Mr(R));if(u===0)return 0;if(n!==0&&n!==u&&!(n&E)&&(E=u&-u,R=n&-n,E>=R||E===16&&(R&4194240)!==0))return n;if(u&4&&(u|=o&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=u;0o;o++)n.push(e);return n}function vr(e,n,o){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Qe(n),e[n]=o}function da(e,n){var o=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var u=e.eventTimes;for(e=e.expirationTimes;0=Wo),ys=" ",Ea=!1;function Bi(e,n){switch(e){case"keyup":return Eu.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ri(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var zo=!1;function Ol(e,n){switch(e){case"compositionend":return ri(n);case"keypress":return n.which!==32?null:(Ea=!0,ys);case"textInput":return e=n.data,e===ys&&Ea?null:e;default:return null}}function xs(e,n){if(zo)return e==="compositionend"||!hs&&Bi(e,n)?(e=Sr(),an=Lr=nn=null,zo=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:o,offset:n-e};e=u}t:{for(;o;){if(o.nextSibling){o=o.nextSibling;break t}o=o.parentNode}o=void 0}o=Ts(o)}}function Aa(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Aa(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function Cs(){for(var e=window,n=se();r(n,e.HTMLIFrameElement);){try{var o=typeof n.contentWindow.location.href=="string"}catch(u){o=!1}if(o)e=n.contentWindow;else break;n=se(e.document)}return n}function Wi(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function Il(e){var n=Cs(),o=e.focusedElem,u=e.selectionRange;if(n!==o&&o&&o.ownerDocument&&Aa(o.ownerDocument.documentElement,o)){if(u!==null&&Wi(o)){if(n=u.start,e=u.end,e===void 0&&(e=n),"selectionStart"in o)o.selectionStart=n,o.selectionEnd=Math.min(e,o.value.length);else if(e=(n=o.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var E=o.textContent.length,R=Math.min(u.start,E);u=u.end===void 0?R:Math.min(u.end,E),!e.extend&&R>u&&(E=u,u=R,R=E),E=Is(o,R);var $=Is(o,u);E&&$&&(e.rangeCount!==1||e.anchorNode!==E.node||e.anchorOffset!==E.offset||e.focusNode!==$.node||e.focusOffset!==$.offset)&&(n=n.createRange(),n.setStart(E.node,E.offset),e.removeAllRanges(),R>u?(e.addRange(n),e.extend($.node,$.offset)):(n.setEnd($.node,$.offset),e.addRange(n)))}}for(n=[],e=o;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;o=document.documentMode,Pa=null,Ps=null,Oo=null,ws=!1;function Cu(e,n,o){var u=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;ws||Pa==null||Pa!==se(u)||(u=Pa,"selectionStart"in u&&Wi(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),Oo&&Ca(Oo,u)||(Oo=u,u=fi(Ps,"onSelect"),0Qo||(e.current=Xi[Qo],Xi[Qo]=null,Qo--)}function Ze(e,n){Qo++,Xi[Qo]=e.current,e.current=n}var vo={},Qn=wo(vo),Zn=wo(!1),Qr=vo;function Zo(e,n){var o=e.type.contextTypes;if(!o)return vo;var u=e.stateNode;if(u&&u.__reactInternalMemoizedUnmaskedChildContext===n)return u.__reactInternalMemoizedMaskedChildContext;var E={},R;for(R in o)E[R]=n[R];return u&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=E),E}function ar(e){return e=e.childContextTypes,e!=null}function Jo(){pn(Zn),pn(Qn)}function Bs(e,n,o){if(Qn.current!==vo)throw Error(s(168));Ze(Qn,n),Ze(Zn,o)}function Qi(e,n,o){var u=e.stateNode;if(n=n.childContextTypes,typeof u.getChildContext!="function")return o;u=u.getChildContext();for(var E in u)if(!(E in n))throw Error(s(108,ft(e)||"Unknown",E));return rt({},o,u)}function Zi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||vo,Qr=Qn.current,Ze(Qn,e),Ze(Zn,Zn.current),!0}function Ba(e,n,o){var u=e.stateNode;if(!u)throw Error(s(169));o?(e=Qi(e,n,Qr),u.__reactInternalMemoizedMergedChildContext=e,pn(Zn),pn(Qn),Ze(Qn,e)):pn(Zn),Ze(Zn,o)}var Br=null,Ua=!1,Ji=!1;function mi(e){Br===null?Br=[e]:Br.push(e)}function Nu(e){Ua=!0,mi(e)}function Zr(){if(!Ji&&Br!==null){Ji=!0;var e=0,n=ze;try{var o=Br;for(ze=1;e>=$,E-=$,ho=1<<32-Qe(n)+E|o<je?(Gn=Pe,Pe=null):Gn=Pe.sibling;var Je=Kt(Tt,Pe,wt[je],Zt);if(Je===null){Pe===null&&(Pe=Gn);break}e&&Pe&&Je.alternate===null&&n(Tt,Pe),mt=R(Je,mt,je),Ae===null?Te=Je:Ae.sibling=Je,Ae=Je,Pe=Gn}if(je===wt.length)return o(Tt,Pe),A&&ta(Tt,je),Te;if(Pe===null){for(;jeje?(Gn=Pe,Pe=null):Gn=Pe.sibling;var fa=Kt(Tt,Pe,Je.value,Zt);if(fa===null){Pe===null&&(Pe=Gn);break}e&&Pe&&fa.alternate===null&&n(Tt,Pe),mt=R(fa,mt,je),Ae===null?Te=fa:Ae.sibling=fa,Ae=fa,Pe=Gn}if(Je.done)return o(Tt,Pe),A&&ta(Tt,je),Te;if(Pe===null){for(;!Je.done;je++,Je=wt.next())Je=Gt(Tt,Je.value,Zt),Je!==null&&(mt=R(Je,mt,je),Ae===null?Te=Je:Ae.sibling=Je,Ae=Je);return A&&ta(Tt,je),Te}for(Pe=u(Tt,Pe);!Je.done;je++,Je=wt.next())Je=ce(Pe,Tt,je,Je.value,Zt),Je!==null&&(e&&Je.alternate!==null&&Pe.delete(Je.key===null?je:Je.key),mt=R(Je,mt,je),Ae===null?Te=Je:Ae.sibling=Je,Ae=Je);return e&&Pe.forEach(function(gf){return n(Tt,gf)}),A&&ta(Tt,je),Te}function Pn(Tt,mt,wt,Zt){if(typeof wt=="object"&&wt!==null&&wt.type===K&&wt.key===null&&(wt=wt.props.children),typeof wt=="object"&&wt!==null){switch(wt.$$typeof){case N:t:{for(var Te=wt.key,Ae=mt;Ae!==null;){if(Ae.key===Te){if(Te=wt.type,Te===K){if(Ae.tag===7){o(Tt,Ae.sibling),mt=E(Ae,wt.props.children),mt.return=Tt,Tt=mt;break t}}else if(Ae.elementType===Te||typeof Te=="object"&&Te!==null&&Te.$$typeof===G&&Si(Te)===Ae.type){o(Tt,Ae.sibling),mt=E(Ae,wt.props),mt.ref=bo(Tt,Ae,wt),mt.return=Tt,Tt=mt;break t}o(Tt,Ae);break}else n(Tt,Ae);Ae=Ae.sibling}wt.type===K?(mt=Qa(wt.props.children,Tt.mode,Zt,wt.key),mt.return=Tt,Tt=mt):(Zt=ru(wt.type,wt.key,wt.props,null,Tt.mode,Zt),Zt.ref=bo(Tt,mt,wt),Zt.return=Tt,Tt=Zt)}return $(Tt);case B:t:{for(Ae=wt.key;mt!==null;){if(mt.key===Ae)if(mt.tag===4&&mt.stateNode.containerInfo===wt.containerInfo&&mt.stateNode.implementation===wt.implementation){o(Tt,mt.sibling),mt=E(mt,wt.children||[]),mt.return=Tt,Tt=mt;break t}else{o(Tt,mt);break}else n(Tt,mt);mt=mt.sibling}mt=vl(wt,Tt.mode,Zt),mt.return=Tt,Tt=mt}return $(Tt);case G:return Ae=wt._init,Pn(Tt,mt,Ae(wt._payload),Zt)}if(St(wt))return ve(Tt,mt,wt,Zt);if(J(wt))return ye(Tt,mt,wt,Zt);xi(Tt,wt)}return typeof wt=="string"&&wt!==""||typeof wt=="number"?(wt=""+wt,mt!==null&&mt.tag===6?(o(Tt,mt.sibling),mt=E(mt,wt),mt.return=Tt,Tt=mt):(o(Tt,mt),mt=dl(wt,Tt.mode,Zt),mt.return=Tt,Tt=mt),$(Tt)):o(Tt,mt)}return Pn}var Mo=Ws(!0),zs=Ws(!1),za={},wr=wo(za),oa=wo(za),$a=wo(za);function jo(e){if(e===za)throw Error(s(174));return e}function eo(e,n){switch(Ze($a,n),Ze(oa,e),Ze(wr,za),e=n.nodeType,e){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:ue(null,"");break;default:e=e===8?n.parentNode:n,n=e.namespaceURI||null,e=e.tagName,n=ue(n,e)}pn(wr),Ze(wr,n)}function no(){pn(wr),pn(oa),pn($a)}function ts(e){jo($a.current);var n=jo(wr.current),o=ue(n,e.type);n!==o&&(Ze(oa,e),Ze(wr,o))}function Ei(e){oa.current===e&&(pn(wr),pn(oa))}var fn=wo(0);function Va(e){for(var n=e;n!==null;){if(n.tag===13){var o=n.memoizedState;if(o!==null&&(o=o.dehydrated,o===null||o.data==="$?"||o.data==="$!"))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if(n.flags&128)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var Oi=[];function Ti(){for(var e=0;eo?o:4,e(!0);var u=Du.transition;Du.transition={};try{e(!1),n()}finally{ze=o,Du.transition=u}}function Vl(){return Wr().memoizedState}function zc(e,n,o){var u=ua(e);if(o={lane:u,action:o,hasEagerState:!1,eagerState:null,next:null},Kl(e))kl(n,o);else if(o=Me(e,n,o,u),o!==null){var E=mr();ao(o,e,u,E),Gl(o,n,u)}}function $c(e,n,o){var u=ua(e),E={lane:u,action:o,hasEagerState:!1,eagerState:null,next:null};if(Kl(e))kl(n,E);else{var R=e.alternate;if(e.lanes===0&&(R===null||R.lanes===0)&&(R=n.lastRenderedReducer,R!==null))try{var $=n.lastRenderedState,et=R($,o);if(E.hasEagerState=!0,E.eagerState=et,pr(et,$)){var dt=n.interleaved;dt===null?(E.next=E,He(n)):(E.next=dt.next,dt.next=E),n.interleaved=E;return}}catch(bt){}finally{}o=Me(e,n,E,u),o!==null&&(E=mr(),ao(o,e,u,E),Gl(o,n,u))}}function Kl(e){var n=e.alternate;return e===On||n!==null&&n===On}function kl(e,n){es=$s=!0;var o=e.pending;o===null?n.next=n:(n.next=o.next,o.next=n),e.pending=n}function Gl(e,n,o){if(o&4194240){var u=n.lanes;u&=e.pendingLanes,o|=u,n.lanes=o,va(e,o)}}var ks={readContext:de,useCallback:sr,useContext:sr,useEffect:sr,useImperativeHandle:sr,useInsertionEffect:sr,useLayoutEffect:sr,useMemo:sr,useReducer:sr,useRef:sr,useState:sr,useDebugValue:sr,useDeferredValue:sr,useTransition:sr,useMutableSource:sr,useSyncExternalStore:sr,useId:sr,unstable_isNewReconciler:!1},Vc={readContext:de,useCallback:function(n,o){return go().memoizedState=[n,o===void 0?null:o],n},useContext:de,useEffect:Dl,useImperativeHandle:function(n,o,u){return u=u!=null?u.concat([n]):null,Vs(4194308,4,Bl.bind(null,o,n),u)},useLayoutEffect:function(n,o){return Vs(4194308,4,n,o)},useInsertionEffect:function(n,o){return Vs(4,2,n,o)},useMemo:function(n,o){var u=go();return o=o===void 0?null:o,n=n(),u.memoizedState=[n,o],n},useReducer:function(n,o,u){var E=go();return o=u!==void 0?u(o):o,E.memoizedState=E.baseState=o,n={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:o},E.queue=n,n=n.dispatch=zc.bind(null,On,n),[E.memoizedState,n]},useRef:function(n){var o=go();return n={current:n},o.memoizedState=n},useState:jl,useDebugValue:$u,useDeferredValue:function(n){return go().memoizedState=n},useTransition:function(){var n=jl(!1),o=n[0];return n=Wc.bind(null,n[1]),go().memoizedState=n,[o,n]},useMutableSource:function(){},useSyncExternalStore:function(n,o,u){var E=On,R=go();if(A){if(u===void 0)throw Error(s(407));u=u()}else{if(u=o(),kn===null)throw Error(s(349));ka&30||Pl(E,o,u)}R.memoizedState=u;var $={value:u,getSnapshot:o};return R.queue=$,Dl(Rl.bind(null,E,$,n),[n]),E.flags|=2048,os(9,wl.bind(null,E,$,u,o),void 0,null),u},useId:function(){var n=go(),o=kn.identifierPrefix;if(A){var u=mo,E=ho;u=(E&~(1<<32-Qe(E)-1)).toString(32)+u,o=":"+o+"R"+u,u=ns++,0<\/script>",e=e.removeChild(e.firstChild)):typeof u.is=="string"?e=$.createElement(o,{is:u.is}):(e=$.createElement(o),o==="select"&&($=e,u.multiple?$.multiple=!0:u.size&&($.size=u.size))):e=$.createElementNS(e,o),e[Fr]=n,e[Po]=u,uc(e,n,!1,!1),n.stateNode=e;t:{switch($=ut(o,u),o){case"dialog":cn("cancel",e),cn("close",e),E=u;break;case"iframe":case"object":case"embed":cn("load",e),E=u;break;case"video":case"audio":for(E=0;EPi&&(n.flags|=128,u=!0,as(R,!1),n.lanes=4194304)}else{if(!u)if(e=Va($),e!==null){if(n.flags|=128,u=!0,o=e.updateQueue,o!==null&&(n.updateQueue=o,n.flags|=4),as(R,!0),R.tail===null&&R.tailMode==="hidden"&&!$.alternate&&!A)return ur(n),null}else 2*Fe()-R.renderingStartTime>Pi&&o!==1073741824&&(n.flags|=128,u=!0,as(R,!1),n.lanes=4194304);R.isBackwards?($.sibling=n.child,n.child=$):(o=R.last,o!==null?o.sibling=$:n.child=$,R.last=$)}return R.tail!==null?(n=R.tail,R.rendering=n,R.tail=n.sibling,R.renderingStartTime=Fe(),n.sibling=null,o=fn.current,Ze(fn,u?o&1|2:o&1),n):(ur(n),null);case 22:case 23:return ll(),u=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==u&&(n.flags|=8192),u&&n.mode&1?Rr&1073741824&&(ur(n),n.subtreeFlags&6&&(n.flags|=8192)):ur(n),null;case 24:return null;case 25:return null}throw Error(s(156,n.tag))}function Zc(e,n){switch(c(n),n.tag){case 1:return ar(n.type)&&Jo(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return no(),pn(Zn),pn(Qn),Ti(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return Ei(n),null;case 13:if(pn(fn),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(s(340));Wt()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return pn(fn),null;case 4:return no(),null;case 10:return Ie(n.type._context),null;case 22:case 23:return ll(),null;case 24:return null;default:return null}}var Ys=!1,lr=!1,Jc=typeof WeakSet=="function"?WeakSet:Set,fe=null;function Ci(e,n){var o=e.ref;if(o!==null)if(typeof o=="function")try{o(null)}catch(u){In(e,n,u)}else o.current=null}function Ju(e,n,o){try{o()}catch(u){In(e,n,u)}}var fc=!1;function qc(e,n){if(Ds=pe,e=Cs(),Wi(e)){if("selectionStart"in e)var o={start:e.selectionStart,end:e.selectionEnd};else t:{o=(o=e.ownerDocument)&&o.defaultView||window;var u=o.getSelection&&o.getSelection();if(u&&u.rangeCount!==0){o=u.anchorNode;var E=u.anchorOffset,R=u.focusNode;u=u.focusOffset;try{o.nodeType,R.nodeType}catch(Zt){o=null;break t}var $=0,et=-1,dt=-1,bt=0,Ft=0,Gt=e,Kt=null;e:for(;;){for(var ce;Gt!==o||E!==0&&Gt.nodeType!==3||(et=$+E),Gt!==R||u!==0&&Gt.nodeType!==3||(dt=$+u),Gt.nodeType===3&&($+=Gt.nodeValue.length),(ce=Gt.firstChild)!==null;)Kt=Gt,Gt=ce;for(;;){if(Gt===e)break e;if(Kt===o&&++bt===E&&(et=$),Kt===R&&++Ft===u&&(dt=$),(ce=Gt.nextSibling)!==null)break;Gt=Kt,Kt=Gt.parentNode}Gt=ce}o=et===-1||dt===-1?null:{start:et,end:dt}}else o=null}o=o||{start:0,end:0}}else o=null;for(vi={focusedElem:e,selectionRange:o},pe=!1,fe=n;fe!==null;)if(n=fe,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,fe=e;else for(;fe!==null;){n=fe;try{var ve=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(ve!==null){var ye=ve.memoizedProps,Pn=ve.memoizedState,Tt=n.stateNode,mt=Tt.getSnapshotBeforeUpdate(n.elementType===n.type?ye:kt(n.type,ye),Pn);Tt.__reactInternalSnapshotBeforeUpdate=mt}break;case 3:var wt=n.stateNode.containerInfo;wt.nodeType===1?wt.textContent="":wt.nodeType===9&&wt.documentElement&&wt.removeChild(wt.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(s(163))}}catch(Zt){In(n,n.return,Zt)}if(e=n.sibling,e!==null){e.return=n.return,fe=e;break}fe=n.return}return ve=fc,fc=!1,ve}function is(e,n,o){var u=n.updateQueue;if(u=u!==null?u.lastEffect:null,u!==null){var E=u=u.next;do{if((E.tag&e)===e){var R=E.destroy;E.destroy=void 0,R!==void 0&&Ju(n,o,R)}E=E.next}while(E!==u)}}function Xs(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var o=n=n.next;do{if((o.tag&e)===e){var u=o.create;o.destroy=u()}o=o.next}while(o!==n)}}function qu(e){var n=e.ref;if(n!==null){var o=e.stateNode;switch(e.tag){case 5:e=o;break;default:e=o}typeof n=="function"?n(e):n.current=e}}function dc(e){var n=e.alternate;n!==null&&(e.alternate=null,dc(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Fr],delete n[Po],delete n[La],delete n[ju],delete n[Fs])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function vc(e){return e.tag===5||e.tag===3||e.tag===4}function pc(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||vc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function _u(e,n,o){var u=e.tag;if(u===5||u===6)e=e.stateNode,n?o.nodeType===8?o.parentNode.insertBefore(e,n):o.insertBefore(e,n):(o.nodeType===8?(n=o.parentNode,n.insertBefore(e,o)):(n=o,n.appendChild(e)),o=o._reactRootContainer,o!=null||n.onclick!==null||(n.onclick=di));else if(u!==4&&(e=e.child,e!==null))for(_u(e,n,o),e=e.sibling;e!==null;)_u(e,n,o),e=e.sibling}function tl(e,n,o){var u=e.tag;if(u===5||u===6)e=e.stateNode,n?o.insertBefore(e,n):o.appendChild(e);else if(u!==4&&(e=e.child,e!==null))for(tl(e,n,o),e=e.sibling;e!==null;)tl(e,n,o),e=e.sibling}var Jn=null,ro=!1;function aa(e,n,o){for(o=o.child;o!==null;)hc(e,n,o),o=o.sibling}function hc(e,n,o){if(qe&&typeof qe.onCommitFiberUnmount=="function")try{qe.onCommitFiberUnmount(Un,o)}catch(et){}switch(o.tag){case 5:lr||Ci(o,n);case 6:var u=Jn,E=ro;Jn=null,aa(e,n,o),Jn=u,ro=E,Jn!==null&&(ro?(e=Jn,o=o.stateNode,e.nodeType===8?e.parentNode.removeChild(o):e.removeChild(o)):Jn.removeChild(o.stateNode));break;case 18:Jn!==null&&(ro?(e=Jn,o=o.stateNode,e.nodeType===8?Yi(e.parentNode,o):e.nodeType===1&&Yi(e,o),lo(e)):Yi(Jn,o.stateNode));break;case 4:u=Jn,E=ro,Jn=o.stateNode.containerInfo,ro=!0,aa(e,n,o),Jn=u,ro=E;break;case 0:case 11:case 14:case 15:if(!lr&&(u=o.updateQueue,u!==null&&(u=u.lastEffect,u!==null))){E=u=u.next;do{var R=E,$=R.destroy;R=R.tag,$!==void 0&&(R&2||R&4)&&Ju(o,n,$),E=E.next}while(E!==u)}aa(e,n,o);break;case 1:if(!lr&&(Ci(o,n),u=o.stateNode,typeof u.componentWillUnmount=="function"))try{u.props=o.memoizedProps,u.state=o.memoizedState,u.componentWillUnmount()}catch(et){In(o,n,et)}aa(e,n,o);break;case 21:aa(e,n,o);break;case 22:o.mode&1?(lr=(u=lr)||o.memoizedState!==null,aa(e,n,o),lr=u):aa(e,n,o);break;default:aa(e,n,o)}}function mc(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var o=e.stateNode;o===null&&(o=e.stateNode=new Jc),n.forEach(function(u){var E=uf.bind(null,e,u);o.has(u)||(o.add(u),u.then(E,E))})}}function oo(e,n){var o=n.deletions;if(o!==null)for(var u=0;uE&&(E=$),u&=~R}if(u=E,u=Fe()-u,u=(120>u?120:480>u?480:1080>u?1080:1920>u?1920:3e3>u?3e3:4320>u?4320:1960*tf(u/1960))-u,10e?16:e,sa===null)var u=!1;else{if(e=sa,sa=null,_s=0,Xe&6)throw Error(s(331));var E=Xe;for(Xe|=4,fe=e.current;fe!==null;){var R=fe,$=R.child;if(fe.flags&16){var et=R.deletions;if(et!==null){for(var dt=0;dtFe()-rl?Ya(e,0):nl|=o),Ir(e,n)}function Rc(e,n){n===0&&(e.mode&1?(n=Ar,Ar<<=1,!(Ar&130023424)&&(Ar=4194304)):n=1);var o=mr();e=he(e,n),e!==null&&(vr(e,n,o),Ir(e,o))}function sf(e){var n=e.memoizedState,o=0;n!==null&&(o=n.retryLane),Rc(e,o)}function uf(e,n){var o=0;switch(e.tag){case 13:var u=e.stateNode,E=e.memoizedState;E!==null&&(o=E.retryLane);break;case 19:u=e.stateNode;break;default:throw Error(s(314))}u!==null&&u.delete(n),Rc(e,o)}var bc;bc=function(n,o,u){if(n!==null)if(n.memoizedProps!==o.pendingProps||Zn.current)Or=!0;else{if(!(n.lanes&u)&&!(o.flags&128))return Or=!1,Xc(n,o,u);Or=!!(n.flags&131072)}else Or=!1,A&&o.flags&1048576&&gi(o,_i,o.index);switch(o.lanes=0,o.tag){case 2:var E=o.type;Hs(n,o),n=o.pendingProps;var R=Zo(o,Qn.current);Ce(o,u),R=Fu(null,o,E,n,R,u);var $=Bu();return o.flags|=1,typeof R=="object"&&R!==null&&typeof R.render=="function"&&R.$$typeof===void 0?(o.tag=1,o.memoizedState=null,o.updateQueue=null,ar(E)?($=!0,Zi(o)):$=!1,o.memoizedState=R.state!==null&&R.state!==void 0?R.state:null,Sn(o),R.updater=qr,o.stateNode=R,R._reactInternals=o,to(o,E,n,u),o=Gu(null,o,E,!0,$,u)):(o.tag=0,A&&$&&Us(o),hr(null,o,R,u),o=o.child),o;case 16:E=o.elementType;t:{switch(Hs(n,o),n=o.pendingProps,R=E._init,E=R(E._payload),o.type=E,R=o.tag=cf(E),n=kt(E,n),R){case 0:o=ku(null,o,E,n,u);break t;case 1:o=nc(null,o,E,n,u);break t;case 11:o=Jl(null,o,E,n,u);break t;case 14:o=ql(null,o,E,kt(E.type,n),u);break t}throw Error(s(306,E,""))}return o;case 0:return E=o.type,R=o.pendingProps,R=o.elementType===E?R:kt(E,R),ku(n,o,E,R,u);case 1:return E=o.type,R=o.pendingProps,R=o.elementType===E?R:kt(E,R),nc(n,o,E,R,u);case 3:t:{if(rc(o),n===null)throw Error(s(387));E=o.pendingProps,$=o.memoizedState,R=$.element,En(n,o),Ro(o,E,null,u);var et=o.memoizedState;if(E=et.element,$.isDehydrated)if($={element:E,isDehydrated:!1,cache:et.cache,pendingSuspenseBoundaries:et.pendingSuspenseBoundaries,transitions:et.transitions},o.updateQueue.baseState=$,o.memoizedState=$,o.flags&256){R=Ii(Error(s(423)),o),o=oc(n,o,E,u,R);break t}else if(E!==R){R=Ii(Error(s(424)),o),o=oc(n,o,E,u,R);break t}else for(P=Yr(o.stateNode.containerInfo.firstChild),f=o,A=!0,y=null,u=zs(o,null,E,u),o.child=u;u;)u.flags=u.flags&-3|4096,u=u.sibling;else{if(Wt(),E===R){o=No(n,o,u);break t}hr(n,o,E,u)}o=o.child}return o;case 5:return ts(o),n===null&&ot(o),E=o.type,R=o.pendingProps,$=n!==null?n.memoizedProps:null,et=R.children,Na(E,R)?et=null:$!==null&&Na(E,$)&&(o.flags|=32),ec(n,o),hr(n,o,et,u),o.child;case 6:return n===null&&ot(o),null;case 13:return ac(n,o,u);case 4:return eo(o,o.stateNode.containerInfo),E=o.pendingProps,n===null?o.child=Mo(o,null,E,u):hr(n,o,E,u),o.child;case 11:return E=o.type,R=o.pendingProps,R=o.elementType===E?R:kt(E,R),Jl(n,o,E,R,u);case 7:return hr(n,o,o.pendingProps,u),o.child;case 8:return hr(n,o,o.pendingProps.children,u),o.child;case 12:return hr(n,o,o.pendingProps.children,u),o.child;case 10:t:{if(E=o.type._context,R=o.pendingProps,$=o.memoizedProps,et=R.value,Ze(qt,E._currentValue),E._currentValue=et,$!==null)if(pr($.value,et)){if($.children===R.children&&!Zn.current){o=No(n,o,u);break t}}else for($=o.child,$!==null&&($.return=o);$!==null;){var dt=$.dependencies;if(dt!==null){et=$.child;for(var bt=dt.firstContext;bt!==null;){if(bt.context===E){if($.tag===1){bt=_e(-1,u&-u),bt.tag=2;var Ft=$.updateQueue;if(Ft!==null){Ft=Ft.shared;var Gt=Ft.pending;Gt===null?bt.next=bt:(bt.next=Gt.next,Gt.next=bt),Ft.pending=bt}}$.lanes|=u,bt=$.alternate,bt!==null&&(bt.lanes|=u),we($.return,u,o),dt.lanes|=u;break}bt=bt.next}}else if($.tag===10)et=$.type===o.type?null:$.child;else if($.tag===18){if(et=$.return,et===null)throw Error(s(341));et.lanes|=u,dt=et.alternate,dt!==null&&(dt.lanes|=u),we(et,u,o),et=$.sibling}else et=$.child;if(et!==null)et.return=$;else for(et=$;et!==null;){if(et===o){et=null;break}if($=et.sibling,$!==null){$.return=et.return,et=$;break}et=et.return}$=et}hr(n,o,R.children,u),o=o.child}return o;case 9:return R=o.type,E=o.pendingProps.children,Ce(o,u),R=de(R),E=E(R),o.flags|=1,hr(n,o,E,u),o.child;case 14:return E=o.type,R=kt(E,o.pendingProps),R=kt(E.type,R),ql(n,o,E,R,u);case 15:return _l(n,o,o.type,o.pendingProps,u);case 17:return E=o.type,R=o.pendingProps,R=o.elementType===E?R:kt(E,R),Hs(n,o),o.tag=1,ar(E)?(n=!0,Zi(o)):n=!1,Ce(o,u),ra(o,E,R),to(o,E,R,u),Gu(null,o,E,!0,n,u);case 19:return sc(n,o,u);case 22:return tc(n,o,u)}throw Error(s(156,o.tag))};function Mc(e,n){return Yn(e,n)}function lf(e,n,o,u){this.tag=e,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=u,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function $r(e,n,o,u){return new lf(e,n,o,u)}function fl(e){return e=e.prototype,!(!e||!e.isReactComponent)}function cf(e){if(typeof e=="function")return fl(e)?1:0;if(e!=null){if(e=e.$$typeof,e===k)return 11;if(e===X)return 14}return 2}function ca(e,n){var o=e.alternate;return o===null?(o=$r(e.tag,n,e.key,e.mode),o.elementType=e.elementType,o.type=e.type,o.stateNode=e.stateNode,o.alternate=e,e.alternate=o):(o.pendingProps=n,o.type=e.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=e.flags&14680064,o.childLanes=e.childLanes,o.lanes=e.lanes,o.child=e.child,o.memoizedProps=e.memoizedProps,o.memoizedState=e.memoizedState,o.updateQueue=e.updateQueue,n=e.dependencies,o.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},o.sibling=e.sibling,o.index=e.index,o.ref=e.ref,o}function ru(e,n,o,u,E,R){var $=2;if(u=e,typeof e=="function")fl(e)&&($=1);else if(typeof e=="string")$=5;else t:switch(e){case K:return Qa(o.children,E,R,n);case Y:$=8,E|=8;break;case tt:return e=$r(12,o,n,E|2),e.elementType=tt,e.lanes=R,e;case st:return e=$r(13,o,n,E),e.elementType=st,e.lanes=R,e;case V:return e=$r(19,o,n,E),e.elementType=V,e.lanes=R,e;case Z:return ou(o,E,R,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case H:$=10;break t;case q:$=9;break t;case k:$=11;break t;case X:$=14;break t;case G:$=16,u=null;break t}throw Error(s(130,e==null?e:typeof e=="undefined"?"undefined":a(e),""))}return n=$r($,o,n,E),n.elementType=e,n.type=u,n.lanes=R,n}function Qa(e,n,o,u){return e=$r(7,e,u,n),e.lanes=o,e}function ou(e,n,o,u){return e=$r(22,e,u,n),e.elementType=Z,e.lanes=o,e.stateNode={isHidden:!1},e}function dl(e,n,o){return e=$r(6,e,null,n),e.lanes=o,e}function vl(e,n,o){return n=$r(4,e.children!==null?e.children:[],e.key,n),n.lanes=o,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function ff(e,n,o,u,E){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=yr(0),this.expirationTimes=yr(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=yr(0),this.identifierPrefix=u,this.onRecoverableError=E,this.mutableSourceEagerHydrationData=null}function pl(e,n,o,u,E,R,$,et,dt){return e=new ff(e,n,o,et,dt),n===1?(n=1,R===!0&&(n|=8)):n=0,R=$r(3,null,null,n),e.current=R,R.stateNode=e,R.memoizedState={element:u,isDehydrated:o,cache:null,transitions:null,pendingSuspenseBoundaries:null},Sn(R),e}function df(e,n,o){var u=3it.length)&&(Et=it.length);for(var Pt=0,Dt=new Array(Et);Pt1?Pt-1:0),le=1;le/gm),te=M(/\${[\w\W]*}/gm),Xt=M(/^data-[\-\w.\u00B7-\uFFFF]/),se=M(/^aria-[\-\w]+$/),me=M(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Ee=M(/^(?:\w+script|data):/i),Ct=M(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),At=M(/^html$/i),Ot=function(){return typeof window=="undefined"?null:window},It=function(Et,Pt){if(t(Et)!=="object"||typeof Et.createPolicy!="function")return null;var Dt=null,le="data-tt-policy-suffix";Pt.currentScript&&Pt.currentScript.hasAttribute(le)&&(Dt=Pt.currentScript.getAttribute(le));var ue="dompurify"+(Dt?"#"+Dt:"");try{return Et.createPolicy(ue,{createHTML:function(Ue){return Ue},createScriptURL:function(Ue){return Ue}})}catch(De){return console.warn("TrustedTypes policy "+ue+" could not be created."),null}};function St(){var it=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Ot(),Et=function(yt){return St(yt)};if(Et.version="2.4.7",Et.removed=[],!it||!it.document||it.document.nodeType!==9)return Et.isSupported=!1,Et;var Pt=it.document,Dt=it.document,le=it.DocumentFragment,ue=it.HTMLTemplateElement,De=it.Node,Ue=it.Element,ge=it.NodeFilter,Jt=it.NamedNodeMap,ne=Jt===void 0?it.NamedNodeMap||it.MozNamedAttrMap:Jt,Oe=it.HTMLFormElement,Re=it.DOMParser,nt=it.trustedTypes,xt=Ue.prototype,ut=Z(xt,"cloneNode"),ht=Z(xt,"nextSibling"),jt=Z(xt,"childNodes"),$t=Z(xt,"parentNode");if(typeof ue=="function"){var Qt=Dt.createElement("template");Qt.content&&Qt.content.ownerDocument&&(Dt=Qt.content.ownerDocument)}var Ht=It(nt,Pt),xe=Ht?Ht.createHTML(""):"",re=Dt,Ve=re.implementation,We=re.createNodeIterator,dn=re.createDocumentFragment,gn=re.getElementsByTagName,rn=Pt.importNode,Ke={};try{Ke=G(Dt).documentMode?Dt.documentMode:{}}catch(pe){}var be={};Et.isSupported=typeof $t=="function"&&Ve&&Ve.createHTMLDocument!==void 0&&Ke!==9;var Tn=zt,sn=_t,ln=te,Ln=Xt,Cn=se,$e=Ee,cr=Ct,_n=me,tn=null,un=X({},[].concat(l(W),l(J),l(rt),l(vt),l(Nt))),ke=null,hn=X({},[].concat(l(ct),l(gt),l(ft),l(Lt))),Ge=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Fn=null,Hn=null,Yn=!0,en=!0,tr=!1,fr=!0,Fe=!1,Bn=!1,on=!1,gr=!1,wn=!1,er=!1,nr=!1,Un=!0,qe=!1,Vr="user-content-",Qe=!0,br=!1,bn={},Cr=null,Wn=X({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ar=null,Mr=X({},["audio","video","img","source","image","track"]),jr=null,dr=X({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),io="http://www.w3.org/1998/Math/MathML",Mn="http://www.w3.org/2000/svg",zn="http://www.w3.org/1999/xhtml",yr=zn,vr=!1,da=null,va=X({},[io,Mn,zn],B),ze,Za=["application/xhtml+xml","text/html"],pa="text/html",mn,Kr=null,Ja=Dt.createElement("form"),ha=function(yt){return m(yt,RegExp)||m(yt,Function)},so=function(yt){Kr&&Kr===yt||((!yt||t(yt)!=="object")&&(yt={}),yt=G(yt),ze=Za.indexOf(yt.PARSER_MEDIA_TYPE)===-1?ze=pa:ze=yt.PARSER_MEDIA_TYPE,mn=ze==="application/xhtml+xml"?B:N,tn="ALLOWED_TAGS"in yt?X({},yt.ALLOWED_TAGS,mn):un,ke="ALLOWED_ATTR"in yt?X({},yt.ALLOWED_ATTR,mn):hn,da="ALLOWED_NAMESPACES"in yt?X({},yt.ALLOWED_NAMESPACES,B):va,jr="ADD_URI_SAFE_ATTR"in yt?X(G(dr),yt.ADD_URI_SAFE_ATTR,mn):dr,Ar="ADD_DATA_URI_TAGS"in yt?X(G(Mr),yt.ADD_DATA_URI_TAGS,mn):Mr,Cr="FORBID_CONTENTS"in yt?X({},yt.FORBID_CONTENTS,mn):Wn,Fn="FORBID_TAGS"in yt?X({},yt.FORBID_TAGS,mn):{},Hn="FORBID_ATTR"in yt?X({},yt.FORBID_ATTR,mn):{},bn="USE_PROFILES"in yt?yt.USE_PROFILES:!1,Yn=yt.ALLOW_ARIA_ATTR!==!1,en=yt.ALLOW_DATA_ATTR!==!1,tr=yt.ALLOW_UNKNOWN_PROTOCOLS||!1,fr=yt.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Fe=yt.SAFE_FOR_TEMPLATES||!1,Bn=yt.WHOLE_DOCUMENT||!1,wn=yt.RETURN_DOM||!1,er=yt.RETURN_DOM_FRAGMENT||!1,nr=yt.RETURN_TRUSTED_TYPE||!1,gr=yt.FORCE_BODY||!1,Un=yt.SANITIZE_DOM!==!1,qe=yt.SANITIZE_NAMED_PROPS||!1,Qe=yt.KEEP_CONTENT!==!1,br=yt.IN_PLACE||!1,_n=yt.ALLOWED_URI_REGEXP||_n,yr=yt.NAMESPACE||zn,Ge=yt.CUSTOM_ELEMENT_HANDLING||{},yt.CUSTOM_ELEMENT_HANDLING&&ha(yt.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ge.tagNameCheck=yt.CUSTOM_ELEMENT_HANDLING.tagNameCheck),yt.CUSTOM_ELEMENT_HANDLING&&ha(yt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ge.attributeNameCheck=yt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),yt.CUSTOM_ELEMENT_HANDLING&&typeof yt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(Ge.allowCustomizedBuiltInElements=yt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Fe&&(en=!1),er&&(wn=!0),bn&&(tn=X({},l(Nt)),ke=[],bn.html===!0&&(X(tn,W),X(ke,ct)),bn.svg===!0&&(X(tn,J),X(ke,gt),X(ke,Lt)),bn.svgFilters===!0&&(X(tn,rt),X(ke,gt),X(ke,Lt)),bn.mathMl===!0&&(X(tn,vt),X(ke,ft),X(ke,Lt))),yt.ADD_TAGS&&(tn===un&&(tn=G(tn)),X(tn,yt.ADD_TAGS,mn)),yt.ADD_ATTR&&(ke===hn&&(ke=G(ke)),X(ke,yt.ADD_ATTR,mn)),yt.ADD_URI_SAFE_ATTR&&X(jr,yt.ADD_URI_SAFE_ATTR,mn),yt.FORBID_CONTENTS&&(Cr===Wn&&(Cr=G(Cr)),X(Cr,yt.FORBID_CONTENTS,mn)),Qe&&(tn["#text"]=!0),Bn&&X(tn,["html","head","body"]),tn.table&&(X(tn,["tbody"]),delete Fn.tbody),C&&C(yt),Kr=yt)},kr=X({},["mi","mo","mn","ms","mtext"]),rr=X({},["foreignobject","desc","title","annotation-xml"]),Nr=X({},["title","style","font","a","script"]),Xn=X({},J);X(Xn,rt),X(Xn,pt);var Dr=X({},vt);X(Dr,Rt);var xo=function(yt){var Yt=$t(yt);(!Yt||!Yt.tagName)&&(Yt={namespaceURI:yr,tagName:"template"});var oe=N(yt.tagName),Be=N(Yt.tagName);return da[yt.namespaceURI]?yt.namespaceURI===Mn?Yt.namespaceURI===zn?oe==="svg":Yt.namespaceURI===io?oe==="svg"&&(Be==="annotation-xml"||kr[Be]):!!Xn[oe]:yt.namespaceURI===io?Yt.namespaceURI===zn?oe==="math":Yt.namespaceURI===Mn?oe==="math"&&rr[Be]:!!Dr[oe]:yt.namespaceURI===zn?Yt.namespaceURI===Mn&&!rr[Be]||Yt.namespaceURI===io&&!kr[Be]?!1:!Dr[oe]&&(Nr[oe]||!Xn[oe]):!!(ze==="application/xhtml+xml"&&da[yt.namespaceURI]):!1},vn=function(yt){w(Et.removed,{element:yt});try{yt.parentNode.removeChild(yt)}catch(Yt){try{yt.outerHTML=xe}catch(oe){yt.remove()}}},Lo=function(yt,Yt){try{w(Et.removed,{attribute:Yt.getAttributeNode(yt),from:Yt})}catch(oe){w(Et.removed,{attribute:null,from:Yt})}if(Yt.removeAttribute(yt),yt==="is"&&!ke[yt])if(wn||er)try{vn(Yt)}catch(oe){}else try{Yt.setAttribute(yt,"")}catch(oe){}},Fo=function(yt){var Yt,oe;if(gr)yt=""+yt;else{var Be=K(yt,/^[\r\n\t ]+/);oe=Be&&Be[0]}ze==="application/xhtml+xml"&&yr===zn&&(yt=''+yt+"");var xn=Ht?Ht.createHTML(yt):yt;if(yr===zn)try{Yt=new Re().parseFromString(xn,ze)}catch(nn){}if(!Yt||!Yt.documentElement){Yt=Ve.createDocument(yr,"template",null);try{Yt.documentElement.innerHTML=vr?xe:xn}catch(nn){}}var An=Yt.body||Yt.documentElement;return yt&&oe&&An.insertBefore(Dt.createTextNode(oe),An.childNodes[0]||null),yr===zn?gn.call(Yt,Bn?"html":"body")[0]:Bn?Yt.documentElement:An},or=function(yt){return We.call(yt.ownerDocument||yt,yt,ge.SHOW_ELEMENT|ge.SHOW_COMMENT|ge.SHOW_TEXT,null,!1)},ma=function(yt){return m(yt,Oe)&&(typeof yt.nodeName!="string"||typeof yt.textContent!="string"||typeof yt.removeChild!="function"||!m(yt.attributes,ne)||typeof yt.removeAttribute!="function"||typeof yt.setAttribute!="function"||typeof yt.namespaceURI!="string"||typeof yt.insertBefore!="function"||typeof yt.hasChildNodes!="function")},xr=function(yt){return t(De)==="object"?m(yt,De):yt&&t(yt)==="object"&&typeof yt.nodeType=="number"&&typeof yt.nodeName=="string"},$n=function(yt,Yt,oe){be[yt]&&j(be[yt],function(Be){Be.call(Et,Yt,oe,Kr)})},Bo=function(yt){var Yt;if($n("beforeSanitizeElements",yt,null),ma(yt)||q(/[\u0080-\uFFFF]/,yt.nodeName))return vn(yt),!0;var oe=mn(yt.nodeName);if($n("uponSanitizeElement",yt,{tagName:oe,allowedTags:tn}),yt.hasChildNodes()&&!xr(yt.firstElementChild)&&(!xr(yt.content)||!xr(yt.content.firstElementChild))&&q(/<[/\w]/g,yt.innerHTML)&&q(/<[/\w]/g,yt.textContent)||oe==="select"&&q(/