@allior/wmake-streamelements-events 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react/hooks/use-on-event-received.d.ts +13 -1
- package/dist/react/hooks/use-on-event-received.d.ts.map +1 -1
- package/dist/react/index.iife.js +1 -1
- package/dist/react/index.iife.js.map +1 -1
- package/dist/react/index.js +24 -3
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.iife.js","names":[],"sources":["../../src/root/classifier.ts","../../src/root/aggregator/index.ts","../../src/root/sources/on-widget-load-detail.ts","../../src/root/sources/alerts.ts","../../src/root/sources/messages.ts","../../src/root/commands.ts","../../src/root/keys.ts","../../src/root/message/twitch/user-message-data.ts","../../src/root/queue/alert-queue.ts","../../src/react/hooks/use-event-listener.ts","../../src/root/guards/on-event-received.ts","../../src/react/hooks/factory.ts","../../src/react/hooks/use-on-event-received.ts","../../src/react/hooks/use-on-widget-load.ts"],"sourcesContent":["/**\n * Shared classification and tier parsing for Twitch/StreamElements subscription events.\n * Used by aggregate normalizer.\n */\n\nimport type { ClassifiedEvent, IncomingDetail, TierInfo } from \"./types\";\n\nexport function parseTier(raw: string | number | null | undefined): TierInfo {\n\tif (raw == null) return { tier: 0, tierText: \"\" };\n\tconst tierText = typeof raw === \"string\" ? raw : String(raw);\n\tconst num = parseInt(tierText, 10);\n\tif (Number.isNaN(num)) return { tier: 0, tierText };\n\tconst tier = num >= 3000 ? 3 : num >= 2000 ? 2 : num >= 1000 ? 1 : 0;\n\treturn { tier, tierText };\n}\n\nexport function getCacheKey(detail: IncomingDetail): string {\n\tconst listener = detail.listener;\n\tconst event = detail.event ?? {};\n\tconst ag = event.activityGroup;\n\tconst aid = event.activityId ?? event._id;\n\tif (ag) return String(ag);\n\tif (aid) return String(aid);\n\tif (listener === \"subscriber-latest\" && event.bulkGifted) {\n\t\treturn (\n\t\t\t\"sl-bulk-\" +\n\t\t\t(event.sender ?? \"\") +\n\t\t\t\"-\" +\n\t\t\t(event.amount ?? \"\") +\n\t\t\t\"-\" +\n\t\t\t(event.tier ?? \"\") +\n\t\t\t\"-\" +\n\t\t\t(event._id ?? \"\")\n\t\t);\n\t}\n\treturn `sl-${event._id ?? event.activityId ?? \"\"}`;\n}\n\nexport function classifyEvent(detail: IncomingDetail): ClassifiedEvent | null {\n\tconst listener = detail.listener;\n\tconst event = detail.event ?? {};\n\tconst data = (event.data ?? event) as Record<string, unknown>;\n\tconst tierInfo = parseTier(\n\t\t(data.tier ?? event.tier) as string | number | undefined,\n\t);\n\n\tif (listener === \"event\") {\n\t\tif (event.type === \"communityGiftPurchase\") {\n\t\t\tconst isAnon =\n\t\t\t\t(data.username &&\n\t\t\t\t\tString(data.username).toLowerCase() === \"anonymous\") ||\n\t\t\t\tdata.sender === \"Anonymous\";\n\t\t\treturn {\n\t\t\t\ttype: isAnon ? \"community-gift-anonymous\" : \"community-gift\",\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\ttotalAmount: parseInt(String(data.amount), 10) || 1,\n\t\t\t\trecipients: [],\n\t\t\t\tsender: isAnon\n\t\t\t\t\t? undefined\n\t\t\t\t\t: ((data.sender ?? data.displayName ?? data.username) as string),\n\t\t\t\tanonymousDisplayName: isAnon\n\t\t\t\t\t? ((data.displayName as string) ?? \"Anonymous\")\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t}\n\t\tif (event.type === \"subscriber\") {\n\t\t\tconst gifted = data.gifted === true;\n\t\t\tconst sender = data.sender as string | undefined;\n\t\t\tconst amount = parseInt(String(data.amount), 10) || 1;\n\t\t\tconst username = (data.username ?? data.displayName) as\n\t\t\t\t| string\n\t\t\t\t| undefined;\n\t\t\tconst activityGroup = event.activityGroup as string | undefined;\n\n\t\t\tif (sender === \"Anonymous\" && activityGroup) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"community-gift-anonymous\",\n\t\t\t\t\t_role: \"recipient\",\n\t\t\t\t\tactivityGroup,\n\t\t\t\t\trecipient: (username ?? data.displayName) as string,\n\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (gifted && sender && sender !== \"Anonymous\") {\n\t\t\t\tconst isCommunity =\n\t\t\t\t\tdata.communityGifted === true ||\n\t\t\t\t\t(activityGroup != null && activityGroup !== \"\");\n\t\t\t\tif (!isCommunity) {\n\t\t\t\t\tconst firstGift =\n\t\t\t\t\t\tString(data.message ?? \"\").indexOf(\"first Gift Sub\") !== -1;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"solo-sub-to-someone\",\n\t\t\t\t\t\tsender,\n\t\t\t\t\t\trecipient: (username ?? data.displayName) as string,\n\t\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t\t\tfirstGiftInChannel: firstGift,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"community-gift\",\n\t\t\t\t\t_role: \"recipient\",\n\t\t\t\t\tactivityGroup: activityGroup ?? \"\",\n\t\t\t\t\trecipient: (username ?? data.displayName) as string,\n\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!gifted && amount > 1) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"sub-renewal\",\n\t\t\t\t\tname: (username ?? data.displayName) as string,\n\t\t\t\t\tmonths: amount,\n\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!gifted && amount === 1) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"self-sub\",\n\t\t\t\t\tname: (username ?? data.displayName) as string,\n\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (activityGroup) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"community-gift\",\n\t\t\t\t\t_role: \"recipient\",\n\t\t\t\t\tactivityGroup,\n\t\t\t\t\trecipient: (username ?? data.displayName) as string,\n\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"unknown\",\n\t\t\t\tdetail,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\ttype: \"unknown\",\n\t\t\tdetail,\n\t\t};\n\t}\n\n\tif (listener === \"subscriber-latest\") {\n\t\tconst bulkGifted = event.bulkGifted === true;\n\t\tconst sender = event.sender as string | undefined;\n\t\tconst name = event.name as string | undefined;\n\t\tconst amount = parseInt(String(event.amount), 10) || 1;\n\t\tconst gifted = event.gifted === true;\n\t\tconst isCommunityGift =\n\t\t\tevent.isCommunityGift === true || event.communityGifted === true;\n\n\t\tif (bulkGifted && sender === \"Anonymous\") {\n\t\t\treturn {\n\t\t\t\ttype: \"community-gift-anonymous\",\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\ttotalAmount: amount,\n\t\t\t\trecipients: [],\n\t\t\t};\n\t\t}\n\t\tif (bulkGifted && sender) {\n\t\t\treturn {\n\t\t\t\ttype: \"community-gift\",\n\t\t\t\tsender,\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\ttotalAmount: amount,\n\t\t\t\trecipients: [],\n\t\t\t};\n\t\t}\n\t\tif (gifted && !isCommunityGift && sender) {\n\t\t\tconst firstGift =\n\t\t\t\tString(event.message ?? \"\").indexOf(\"first Gift Sub\") !== -1;\n\t\t\treturn {\n\t\t\t\ttype: \"solo-sub-to-someone\",\n\t\t\t\tsender,\n\t\t\t\trecipient: name ?? \"\",\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\tfirstGiftInChannel: firstGift,\n\t\t\t};\n\t\t}\n\t\tif (!gifted && amount > 1) {\n\t\t\treturn {\n\t\t\t\ttype: \"sub-renewal\",\n\t\t\t\tname: name ?? \"\",\n\t\t\t\tmonths: amount,\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t};\n\t\t}\n\t\tif (!gifted && amount === 1 && (sender == null || name === sender)) {\n\t\t\treturn {\n\t\t\t\ttype: \"self-sub\",\n\t\t\t\tname: name ?? \"\",\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\ttype: \"unknown\",\n\t\t\tdetail,\n\t\t};\n\t}\n\n\tif (listener === \"follower-latest\") {\n\t\treturn {\n\t\t\ttype: \"follow\",\n\t\t\tname: (event.name as string) ?? \"\",\n\t\t};\n\t}\n\n\tif (listener === \"cheer-latest\") {\n\t\tconst amount = parseInt(String(event.amount), 10) || 0;\n\t\treturn {\n\t\t\ttype: \"cheer\",\n\t\t\tname: (event.name as string) ?? \"\",\n\t\t\tamount,\n\t\t};\n\t}\n\n\tif (listener === \"raid-latest\") {\n\t\tconst amount = parseInt(String(event.amount), 10) || 0;\n\t\treturn {\n\t\t\ttype: \"raid\",\n\t\t\tname: (event.name as string) ?? \"\",\n\t\t\tviewers: amount,\n\t\t};\n\t}\n\n\tif (listener === \"delete-message\") {\n\t\treturn {\n\t\t\ttype: \"delete-message\",\n\t\t\tmessageId: (event.msgId as string) ?? \"\",\n\t\t};\n\t}\n\n\tif (listener === \"delete-messages\") {\n\t\treturn {\n\t\t\ttype: \"delete-messages\",\n\t\t\tuserName: (event.userId as string) ?? \"\",\n\t\t};\n\t}\n\n\tif (listener === \"event:test\" && event.listener === \"widget-button\") {\n\t\treturn {\n\t\t\ttype: \"button\",\n\t\t\tfield: event.field as string,\n\t\t};\n\t}\n\n\n\treturn {\n\t\ttype: \"unknown\",\n\t\tdetail,\n\t};\n}\n","/**\n * Event normalizer — aggregate mode: buffer events by activityGroup,\n * merge into one normalized event per action (timeout 2.5s).\n */\n\nimport { classifyEvent, getCacheKey } from \"../classifier.js\";\nimport type {\n\tAggregatedCommunityGift,\n\tAggregatedRecipient,\n\tClassifiedEvent,\n\tIncomingDetail,\n} from \"../types/on-event-received/index.js\";\nimport type { AggregatorOptions, CacheSubsByType } from \"./types.js\";\n\nconst AGGREGATE_TIMEOUT_MS = 2500;\n\ninterface BufferEntry {\n\ttype: string;\n\tsubscribers: Array<{\n\t\trecipient?: string;\n\t\tusername?: string;\n\t\tname?: string;\n\t\tsender?: string;\n\t}>;\n\ttier: number;\n\ttierText: string;\n\ttotalAmount: number;\n\tpurchase?: AggregatedCommunityGift;\n\tsender?: string;\n}\n\nconst bufferByGroup: Record<string, BufferEntry> = {};\nconst bufferTimers: Record<string, ReturnType<typeof setTimeout>> = {};\n\nfunction getCacheForType(\n\tcacheSubs: CacheSubsByType | undefined,\n\ttype: string,\n): {\n\t_has: (k: string) => boolean;\n\t_set: (k: string, v: boolean) => void;\n} | null {\n\tif (!cacheSubs) return null;\n\tif (\n\t\ttypeof cacheSubs._has === \"function\" &&\n\t\ttypeof cacheSubs._set === \"function\"\n\t) {\n\t\treturn cacheSubs as unknown as {\n\t\t\t_has: (k: string) => boolean;\n\t\t\t_set: (k: string, v: boolean) => void;\n\t\t};\n\t}\n\tconst c = cacheSubs[type];\n\tif (c && typeof (c as { _has?: unknown })._has === \"function\") {\n\t\treturn c as {\n\t\t\t_has: (k: string) => boolean;\n\t\t\t_set: (k: string, v: boolean) => void;\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction emitAggregated(\n\tgroupKey: string,\n\tmerged: AggregatedCommunityGift,\n\tcacheSubs: CacheSubsByType | undefined,\n\tonNormalized: (event: ClassifiedEvent | null) => void,\n): void {\n\tconst cache = getCacheForType(cacheSubs, merged.type as string);\n\tif (cache?._has(groupKey)) return;\n\tif (cache) cache._set(groupKey, true);\n\tonNormalized(merged);\n}\n\nfunction flushBuffer(\n\tgroupKey: string,\n\tcacheSubs: CacheSubsByType | undefined,\n\tonNormalized: (event: ClassifiedEvent | null) => void,\n\tbroadcaster: string,\n): void {\n\tconst buf = bufferByGroup[groupKey];\n\tif (!buf) return;\n\tdelete bufferByGroup[groupKey];\n\tif (bufferTimers[groupKey]) {\n\t\tclearTimeout(bufferTimers[groupKey]);\n\t\tdelete bufferTimers[groupKey];\n\t}\n\tconst purchase = buf.purchase;\n\tconst subscribers = buf.subscribers ?? [];\n\tconst type = buf.type;\n\tconst tier = buf.tier;\n\tconst tierText = buf.tierText;\n\tconst totalAmount = buf.totalAmount ?? subscribers.length;\n\tconst recipients = subscribers\n\t\t.map((s) => s.recipient ?? s.username ?? s.name)\n\t\t.filter(Boolean) as string[];\n\tconst firstSub = subscribers[0];\n\tconst senderFromSub = firstSub?.sender;\n\tconst sender = purchase?.sender ?? buf.sender ?? senderFromSub;\n\tif (type === \"community-gift\" && broadcaster && sender === broadcaster) {\n\t\treturn;\n\t}\n\tif (type === \"community-gift-anonymous\") {\n\t\temitAggregated(\n\t\t\tgroupKey,\n\t\t\t{\n\t\t\t\ttype: \"community-gift-anonymous\",\n\t\t\t\ttier,\n\t\t\t\ttierText,\n\t\t\t\ttotalAmount,\n\t\t\t\trecipients,\n\t\t\t\tanonymousDisplayName: purchase?.anonymousDisplayName,\n\t\t\t},\n\t\t\tcacheSubs,\n\t\t\tonNormalized,\n\t\t);\n\t} else {\n\t\temitAggregated(\n\t\t\tgroupKey,\n\t\t\t{\n\t\t\t\ttype: \"community-gift\",\n\t\t\t\tsender,\n\t\t\t\ttier,\n\t\t\t\ttierText,\n\t\t\t\ttotalAmount,\n\t\t\t\trecipients,\n\t\t\t},\n\t\t\tcacheSubs,\n\t\t\tonNormalized,\n\t\t);\n\t}\n}\n\n/**\n * Normalizes an incoming subscription event (StreamElements/Twitch).\n * Buffers community-gift recipients by activityGroup, then emits one normalized event per group.\n * For self-sub, solo-sub, sub-renewal emits immediately (with optional cache dedup).\n */\nexport function aggregateIncomingEvent(\n\tdetail: IncomingDetail,\n\toptions: AggregatorOptions | undefined,\n\tonNormalized: (event: ClassifiedEvent | null) => void,\n): void {\n\tconst cacheSubs = options?.cacheSubs;\n\tconst broadcaster = options?.broadcasterLogin ?? \"\";\n\n\tconst classified = classifyEvent(detail);\n\tif (!classified) {\n\t\tonNormalized(null);\n\t\treturn;\n\t}\n\n\tconst cacheKey = getCacheKey(detail);\n\tconst event = detail.event ?? {};\n\tconst data = (event.data ?? event) as Record<string, unknown>;\n\n\tif ((classified as AggregatedRecipient)._role === \"recipient\") {\n\t\tconst recipient = classified as AggregatedRecipient;\n\t\tconst ag = recipient.activityGroup ?? cacheKey;\n\t\tif (!bufferByGroup[ag]) {\n\t\t\tbufferByGroup[ag] = {\n\t\t\t\ttype: recipient.type,\n\t\t\t\tsubscribers: [],\n\t\t\t\ttier: recipient.tier,\n\t\t\t\ttierText: recipient.tierText,\n\t\t\t\ttotalAmount: 0,\n\t\t\t};\n\t\t}\n\t\tif (bufferTimers[ag]) clearTimeout(bufferTimers[ag]);\n\t\tbufferTimers[ag] = setTimeout(() => {\n\t\t\tflushBuffer(ag, cacheSubs, onNormalized, broadcaster);\n\t\t}, AGGREGATE_TIMEOUT_MS);\n\t\tbufferByGroup[ag].subscribers.push({\n\t\t\trecipient: recipient.recipient,\n\t\t\tusername: data.username as string,\n\t\t\tname: data.displayName as string,\n\t\t\tsender: data.sender as string,\n\t\t});\n\t\tif (bufferByGroup[ag].totalAmount === 0) bufferByGroup[ag].totalAmount = 1;\n\t\treturn;\n\t}\n\n\tif (\n\t\tclassified.type === \"community-gift-anonymous\" ||\n\t\tclassified.type === \"community-gift\"\n\t) {\n\t\tconst isPurchase =\n\t\t\tdetail.listener === \"event\" && event.type === \"communityGiftPurchase\";\n\t\tif (isPurchase) {\n\t\t\tconst ag = (event.activityGroup ??\n\t\t\t\tdata?.activityGroup ??\n\t\t\t\tcacheKey) as string;\n\t\t\tconst cg = classified as AggregatedCommunityGift;\n\t\t\tif (!bufferByGroup[ag]) {\n\t\t\t\tbufferByGroup[ag] = {\n\t\t\t\t\ttype: cg.type,\n\t\t\t\t\tpurchase: cg,\n\t\t\t\t\tsubscribers: [],\n\t\t\t\t\ttier: cg.tier,\n\t\t\t\t\ttierText: cg.tierText,\n\t\t\t\t\ttotalAmount: Number(cg.totalAmount) || 0,\n\t\t\t\t\tsender: cg.sender,\n\t\t\t\t};\n\t\t\t\tbufferTimers[ag] = setTimeout(() => {\n\t\t\t\t\tflushBuffer(ag, cacheSubs, onNormalized, broadcaster);\n\t\t\t\t}, AGGREGATE_TIMEOUT_MS);\n\t\t\t} else {\n\t\t\t\tbufferByGroup[ag].purchase = cg;\n\t\t\t\tbufferByGroup[ag].tier = cg.tier;\n\t\t\t\tbufferByGroup[ag].tierText = cg.tierText;\n\t\t\t\tbufferByGroup[ag].totalAmount =\n\t\t\t\t\t(cg.totalAmount as number) ?? bufferByGroup[ag].totalAmount;\n\t\t\t\tbufferByGroup[ag].sender = cg.sender as string;\n\t\t\t\tif (bufferTimers[ag]) clearTimeout(bufferTimers[ag]);\n\t\t\t\tbufferTimers[ag] = setTimeout(() => {\n\t\t\t\t\tflushBuffer(ag, cacheSubs, onNormalized, broadcaster);\n\t\t\t\t}, AGGREGATE_TIMEOUT_MS);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (detail.listener === \"subscriber-latest\") {\n\t\t\tconst c = classified as AggregatedCommunityGift;\n\t\t\tif (\n\t\t\t\tclassified.type === \"community-gift\" &&\n\t\t\t\tbroadcaster &&\n\t\t\t\tc.sender === broadcaster\n\t\t\t) {\n\t\t\t\tonNormalized(null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\treturn;\n\t}\n}\n\nexport * from \"./types.js\";\n","export default {\n\tsession: {\n\t\tdata: {\n\t\t\t\"follower-latest\": {\n\t\t\t\tname: \"imacanadiannn\",\n\t\t\t},\n\t\t\t\"follower-session\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"follower-week\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"follower-month\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"follower-goal\": {\n\t\t\t\tamount: 137,\n\t\t\t},\n\t\t\t\"follower-total\": {\n\t\t\t\tcount: 118,\n\t\t\t\tactivityId: \"\",\n\t\t\t\tsessionTop: false,\n\t\t\t},\n\t\t\t\"subscriber-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\ttier: \"\",\n\t\t\t\tmessage: \"\",\n\t\t\t},\n\t\t\t\"subscriber-new-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\tmessage: \"\",\n\t\t\t},\n\t\t\t\"subscriber-resub-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\tmessage: \"\",\n\t\t\t},\n\t\t\t\"subscriber-gifted-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\tmessage: \"\",\n\t\t\t\ttier: \"\",\n\t\t\t\tsender: \"\",\n\t\t\t},\n\t\t\t\"subscriber-session\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-new-session\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-resub-session\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-gifted-session\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-week\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-month\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-goal\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"subscriber-total\": {\n\t\t\t\tcount: 0,\n\t\t\t\tactivityId: \"\",\n\t\t\t\tsessionTop: false,\n\t\t\t},\n\t\t\t\"subscriber-points\": {\n\t\t\t\tamount: 0,\n\t\t\t\tactivityId: \"\",\n\t\t\t\tsessionTop: false,\n\t\t\t},\n\t\t\t\"subscriber-alltime-gifter\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"host-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"raid-latest\": {\n\t\t\t\tname: \"agnascor2\",\n\t\t\t\tamount: 6,\n\t\t\t},\n\t\t\t\"cheer-session\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-week\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-month\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-total\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-count\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"cheer-goal\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-session-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-weekly-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-monthly-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-alltime-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-session-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-weekly-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-monthly-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-alltime-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"tip-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-session-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"tip-weekly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-monthly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-alltime-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-session-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"tip-weekly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-monthly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-alltime-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-session\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-week\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-month\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-total\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-count\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"tip-goal\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"merch-goal-orders\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"merch-goal-items\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"merch-goal-total\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"merch-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\titems: [],\n\t\t\t},\n\t\t\t\"charityCampaignDonation-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-weekly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-monthly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-alltime-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-weekly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-monthly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-alltime-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-weekly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-monthly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-alltime-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-weekly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-monthly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-alltime-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-weekly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-monthly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-alltime-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-weekly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-monthly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-alltime-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-session\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-week\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-month\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-total\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-count\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"superchat-goal\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"purchase-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\tavatar: \"\",\n\t\t\t\tmessage: \"\",\n\t\t\t\titems: [],\n\t\t\t},\n\t\t\t\"follower-recent\": [\n\t\t\t\t{\n\t\t\t\t\tname: \"imacanadiannn\",\n\t\t\t\t\tcreatedAt: \"2026-01-13T01:53:50.296Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"piwo143\",\n\t\t\t\t\tcreatedAt: \"2026-01-13T01:51:39.472Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"latvan_\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T23:54:29.235Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"wheinwait\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T23:11:28.946Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"agnascor2\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T23:11:14.880Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"sunlitetuts\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T21:03:59.207Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"ayanamya\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T20:00:55.509Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"hopeless28\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T18:35:21.731Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"kakoytoclown\",\n\t\t\t\t\tcreatedAt: \"2026-01-11T18:39:36.843Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"dababe__jq1\",\n\t\t\t\t\tcreatedAt: \"2024-10-10T23:27:49.699Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"jjjllkmf\",\n\t\t\t\t\tcreatedAt: \"2024-05-05T09:44:16.287Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"d4c_valintine\",\n\t\t\t\t\tcreatedAt: \"2024-05-03T15:13:28.365Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"angelbliss_\",\n\t\t\t\t\tcreatedAt: \"2024-04-30T20:07:23.132Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"o1zich\",\n\t\t\t\t\tcreatedAt: \"2024-04-22T16:23:26.139Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"nearbuziky\",\n\t\t\t\t\tcreatedAt: \"2024-04-19T19:21:27.569Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"samirkasamsa\",\n\t\t\t\t\tcreatedAt: \"2024-04-19T17:06:38.963Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"flip1mip\",\n\t\t\t\t\tcreatedAt: \"2024-04-19T17:06:18.276Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"valerie_solo\",\n\t\t\t\t\tcreatedAt: \"2024-04-19T17:06:07.473Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"sxaelence\",\n\t\t\t\t\tcreatedAt: \"2024-04-19T07:06:46.330Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"avokadik99\",\n\t\t\t\t\tcreatedAt: \"2024-04-17T16:11:29.604Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"blackvoronstream\",\n\t\t\t\t\tcreatedAt: \"2024-04-16T21:29:33.306Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"baldejniyy\",\n\t\t\t\t\tcreatedAt: \"2024-04-16T21:29:09.647Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"p3ch4n_ka\",\n\t\t\t\t\tcreatedAt: \"2024-04-16T16:37:31.841Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"kakosik_bee\",\n\t\t\t\t\tcreatedAt: \"2024-04-16T15:56:27.435Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"hikotoru\",\n\t\t\t\t\tcreatedAt: \"2024-04-16T15:13:25.226Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t],\n\t\t\t\"subscriber-recent\": [],\n\t\t\t\"host-recent\": [],\n\t\t\t\"raid-recent\": [\n\t\t\t\t{\n\t\t\t\t\tname: \"agnascor2\",\n\t\t\t\t\tamount: 6,\n\t\t\t\t\tcreatedAt: \"2026-01-12T23:08:21.815Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"justduckomgg\",\n\t\t\t\t\tamount: 7,\n\t\t\t\t\tcreatedAt: \"2024-04-19T17:05:53.185Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"veessmk\",\n\t\t\t\t\tamount: 6,\n\t\t\t\t\tcreatedAt: \"2024-04-17T15:40:43.945Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"night_sculptor\",\n\t\t\t\t\tamount: 12,\n\t\t\t\t\tcreatedAt: \"2024-04-16T18:07:40.040Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pixiemays\",\n\t\t\t\t\tamount: 6,\n\t\t\t\t\tcreatedAt: \"2024-04-16T16:37:24.433Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"night_sculptor\",\n\t\t\t\t\tamount: 8,\n\t\t\t\t\tcreatedAt: \"2024-04-14T18:31:20.049Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pixiemays\",\n\t\t\t\t\tamount: 19,\n\t\t\t\t\tcreatedAt: \"2024-04-14T13:22:05.794Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pixiemays\",\n\t\t\t\t\tamount: 15,\n\t\t\t\t\tcreatedAt: \"2024-04-12T17:03:36.115Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"alechkavt\",\n\t\t\t\t\tamount: 9,\n\t\t\t\t\tcreatedAt: \"2024-04-11T17:54:47.691Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pixiemays\",\n\t\t\t\t\tamount: 8,\n\t\t\t\t\tcreatedAt: \"2024-04-11T14:10:49.548Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"night_sculptor\",\n\t\t\t\t\tamount: 22,\n\t\t\t\t\tcreatedAt: \"2024-04-09T16:13:41.195Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pixiemays\",\n\t\t\t\t\tamount: 5,\n\t\t\t\t\tcreatedAt: \"2024-04-08T09:54:01.603Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"aki_neki\",\n\t\t\t\t\tamount: 5,\n\t\t\t\t\tcreatedAt: \"2024-04-07T21:52:45.919Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"alechkavt\",\n\t\t\t\t\tamount: 11,\n\t\t\t\t\tcreatedAt: \"2024-04-07T18:59:39.286Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"veessmk\",\n\t\t\t\t\tamount: 15,\n\t\t\t\t\tcreatedAt: \"2024-04-07T16:13:25.172Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"veessmk\",\n\t\t\t\t\tamount: 10,\n\t\t\t\t\tcreatedAt: \"2024-03-17T16:11:38.631Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t],\n\t\t\t\"charityCampaignDonation-recent\": [],\n\t\t\t\"cheer-recent\": [],\n\t\t\t\"cheerPurchase-recent\": [],\n\t\t\t\"superchat-recent\": [],\n\t\t\t\"tip-recent\": [],\n\t\t\t\"merch-recent\": [],\n\t\t\t\"channel-points-latest\": {\n\t\t\t\tamount: 0,\n\t\t\t\tmessage: \"\",\n\t\t\t\tname: \"\",\n\t\t\t\tredemption: \"\",\n\t\t\t},\n\t\t\t\"community-gift-latest\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t\ttier: \"\",\n\t\t\t},\n\t\t\t\"charityCampaignDonation-session-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"charityCampaignDonation-session-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheerPurchase-session-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheerPurchase-session-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"hypetrain-latest\": {\n\t\t\t\tactive: 0,\n\t\t\t\tamount: 0,\n\t\t\t\tlevel: 0,\n\t\t\t\tlevelChanged: 0,\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"\",\n\t\t\t},\n\t\t\t\"hypetrain-latest-top-contributors\": [],\n\t\t\t\"hypetrain-level-goal\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"hypetrain-level-progress\": {\n\t\t\t\tamount: 0,\n\t\t\t\tpercent: 0,\n\t\t\t},\n\t\t\t\"hypetrain-total\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-session-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"superchat-session-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t},\n\t\tsettings: {\n\t\t\tautoReset: true,\n\t\t\tcalendar: false,\n\t\t\tresetOnStart: false,\n\t\t},\n\t},\n\trecents: [\n\t\t{\n\t\t\tname: \"imacanadiannn\",\n\t\t\tcreatedAt: \"2026-01-13T01:53:50.296Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"piwo143\",\n\t\t\tcreatedAt: \"2026-01-13T01:51:39.472Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"latvan_\",\n\t\t\tcreatedAt: \"2026-01-12T23:54:29.235Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"wheinwait\",\n\t\t\tcreatedAt: \"2026-01-12T23:11:28.946Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"agnascor2\",\n\t\t\tcreatedAt: \"2026-01-12T23:11:14.880Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"sunlitetuts\",\n\t\t\tcreatedAt: \"2026-01-12T21:03:59.207Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"ayanamya\",\n\t\t\tcreatedAt: \"2026-01-12T20:00:55.509Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"hopeless28\",\n\t\t\tcreatedAt: \"2026-01-12T18:35:21.731Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"kakoytoclown\",\n\t\t\tcreatedAt: \"2026-01-11T18:39:36.843Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"dababe__jq1\",\n\t\t\tcreatedAt: \"2024-10-10T23:27:49.699Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"jjjllkmf\",\n\t\t\tcreatedAt: \"2024-05-05T09:44:16.287Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"d4c_valintine\",\n\t\t\tcreatedAt: \"2024-05-03T15:13:28.365Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"angelbliss_\",\n\t\t\tcreatedAt: \"2024-04-30T20:07:23.132Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"o1zich\",\n\t\t\tcreatedAt: \"2024-04-22T16:23:26.139Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"nearbuziky\",\n\t\t\tcreatedAt: \"2024-04-19T19:21:27.569Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"samirkasamsa\",\n\t\t\tcreatedAt: \"2024-04-19T17:06:38.963Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"flip1mip\",\n\t\t\tcreatedAt: \"2024-04-19T17:06:18.276Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"valerie_solo\",\n\t\t\tcreatedAt: \"2024-04-19T17:06:07.473Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"sxaelence\",\n\t\t\tcreatedAt: \"2024-04-19T07:06:46.330Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"avokadik99\",\n\t\t\tcreatedAt: \"2024-04-17T16:11:29.604Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"blackvoronstream\",\n\t\t\tcreatedAt: \"2024-04-16T21:29:33.306Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"baldejniyy\",\n\t\t\tcreatedAt: \"2024-04-16T21:29:09.647Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"p3ch4n_ka\",\n\t\t\tcreatedAt: \"2024-04-16T16:37:31.841Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"kakosik_bee\",\n\t\t\tcreatedAt: \"2024-04-16T15:56:27.435Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"hikotoru\",\n\t\t\tcreatedAt: \"2024-04-16T15:13:25.226Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"agnascor2\",\n\t\t\tamount: 6,\n\t\t\tcreatedAt: \"2026-01-12T23:08:21.815Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"justduckomgg\",\n\t\t\tamount: 7,\n\t\t\tcreatedAt: \"2024-04-19T17:05:53.185Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"veessmk\",\n\t\t\tamount: 6,\n\t\t\tcreatedAt: \"2024-04-17T15:40:43.945Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"night_sculptor\",\n\t\t\tamount: 12,\n\t\t\tcreatedAt: \"2024-04-16T18:07:40.040Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"pixiemays\",\n\t\t\tamount: 6,\n\t\t\tcreatedAt: \"2024-04-16T16:37:24.433Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"night_sculptor\",\n\t\t\tamount: 8,\n\t\t\tcreatedAt: \"2024-04-14T18:31:20.049Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"pixiemays\",\n\t\t\tamount: 19,\n\t\t\tcreatedAt: \"2024-04-14T13:22:05.794Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"pixiemays\",\n\t\t\tamount: 15,\n\t\t\tcreatedAt: \"2024-04-12T17:03:36.115Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"alechkavt\",\n\t\t\tamount: 9,\n\t\t\tcreatedAt: \"2024-04-11T17:54:47.691Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"pixiemays\",\n\t\t\tamount: 8,\n\t\t\tcreatedAt: \"2024-04-11T14:10:49.548Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"night_sculptor\",\n\t\t\tamount: 22,\n\t\t\tcreatedAt: \"2024-04-09T16:13:41.195Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"pixiemays\",\n\t\t\tamount: 5,\n\t\t\tcreatedAt: \"2024-04-08T09:54:01.603Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"aki_neki\",\n\t\t\tamount: 5,\n\t\t\tcreatedAt: \"2024-04-07T21:52:45.919Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"alechkavt\",\n\t\t\tamount: 11,\n\t\t\tcreatedAt: \"2024-04-07T18:59:39.286Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"veessmk\",\n\t\t\tamount: 15,\n\t\t\tcreatedAt: \"2024-04-07T16:13:25.172Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"veessmk\",\n\t\t\tamount: 10,\n\t\t\tcreatedAt: \"2024-03-17T16:11:38.631Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t],\n\tcurrency: {\n\t\tcode: \"USD\",\n\t\tname: \"U.S. Dollar\",\n\t\tsymbol: \"$\",\n\t},\n\tchannel: {\n\t\tusername: \"encry_s\",\n\t\tapiToken: \"HAHANOTNOW\",\n\t\tid: \"65ba7503dc0415cb368947b1\",\n\t\tproviderId: \"485678132\",\n\t\tavatar:\n\t\t\t\"https://static-cdn.jtvnw.net/jtv_user_pictures/6fe93724-803a-4e5a-b58a-1d42fbc84661-profile_image-300x300.jpeg\",\n\t},\n\tfieldData: {\n\t\ttestMessageButton: \"zaytri_dynamicchatbubbles\",\n\t\tpreviewMode: false,\n\t\tpreviewType: \"random\",\n\t\tpreviewMessage: \"\",\n\t\ttheme: \"animal-crossing\",\n\t\tcorner: \"round\",\n\t\tdarkMode: false,\n\t\thighlightStyle: \"normal\",\n\t\tactionStyle: \"italics\",\n\t\tmaxWidth: 400,\n\t\tmaxHeight: 300,\n\t\tfixedWidth: false,\n\t\tpositionMode: \"list\",\n\t\tlistDirection: \"bottom\",\n\t\tlistAlignment: \"center\",\n\t\ttopEdge: true,\n\t\tbottomEdge: true,\n\t\tleftEdge: true,\n\t\trightEdge: true,\n\t\tedgeDeviation: 0,\n\t\tpadding: 30,\n\t\tanimation: \"dynamic\",\n\t\tdynamicModifier: 1.75,\n\t\tmaxMessages: 25,\n\t\thideOutOfBounds: true,\n\t\tlifetime: 0,\n\t\tdelay: 1,\n\t\tgoogleFont: \"Nunito\",\n\t\tcustomFont: \"\",\n\t\tfontSize: 18,\n\t\tfontWeight: \"bold\",\n\t\ttextDirection: \"ltr\",\n\t\tuseCustomBorderColors: true,\n\t\tborderColor: \"#fed400\",\n\t\tnameColor: \"#000000\",\n\t\tuseCustomMessageColors: true,\n\t\tbackgroundColor: \"#fff3c0\",\n\t\ttextColor: \"#000000\",\n\t\tpronounsMode: \"suffix\",\n\t\tpronounsLowercase: true,\n\t\tpronounsBadgeCustomColors: false,\n\t\tpronounsBadgeBackgroundColor: \"#000000\",\n\t\tpronounsBadgeBorderColor: \"#FFFFFF\",\n\t\tpronounsBadgeTextColor: \"#FFFFFF\",\n\t\tshowBadges: true,\n\t\tlargeEmotes: true,\n\t\tffzGlobal: false,\n\t\tbttvGlobal: false,\n\t\temoteOnly: false,\n\t\thighlightOnly: false,\n\t\tallowedStrings: [],\n\t\tminMessages: 0,\n\t\tmessageCooldown: 0,\n\t\traidCooldown: 0,\n\t\traidMin: 0,\n\t\tincludeEveryone: true,\n\t\tincludeFollowers: \"true\",\n\t\tminFollowTime: 1,\n\t\tincludeSubs: true,\n\t\tincludeVIPs: true,\n\t\tincludeMods: true,\n\t\tallowUserList: [],\n\t\tignoreUserList: [\"StreamElements\", \"Streamlabs\", \"Nightbot\", \"Sery_Bot\"],\n\t\tignorePrefixList: [\"!\"],\n\t\tvolume: 50,\n\t\tsoundGroup1: [],\n\t\tuserLevelSoundGroup1: \"everyone\",\n\t\tspecificUsersSoundGroup1: [],\n\t\tmessageTypeSoundGroup1: \"all\",\n\t\tsoundGroup2: [],\n\t\tuserLevelSoundGroup2: \"everyone\",\n\t\tspecificUsersSoundGroup2: [],\n\t\tmessageTypeSoundGroup2: \"all\",\n\t\tsoundGroup3: [],\n\t\tuserLevelSoundGroup3: \"everyone\",\n\t\tspecificUsersSoundGroup3: [],\n\t\tmessageTypeSoundGroup3: \"all\",\n\t\tsoundGroup4: [],\n\t\tuserLevelSoundGroup4: \"everyone\",\n\t\tspecificUsersSoundGroup4: [],\n\t\tmessageTypeSoundGroup4: \"all\",\n\t\tsoundGroup5: [],\n\t\tuserLevelSoundGroup5: \"everyone\",\n\t\tspecificUsersSoundGroup5: [],\n\t\tmessageTypeSoundGroup5: \"all\",\n\t\tsoundGroup6: [],\n\t\tuserLevelSoundGroup6: \"everyone\",\n\t\tspecificUsersSoundGroup6: [],\n\t\tmessageTypeSoundGroup6: \"all\",\n\t\tsoundGroup7: [],\n\t\tuserLevelSoundGroup7: \"everyone\",\n\t\tspecificUsersSoundGroup7: [],\n\t\tmessageTypeSoundGroup7: \"all\",\n\t\tsoundGroup8: [],\n\t\tuserLevelSoundGroup8: \"everyone\",\n\t\tspecificUsersSoundGroup8: [],\n\t\tmessageTypeSoundGroup8: \"all\",\n\t\tsoundGroup9: [],\n\t\tuserLevelSoundGroup9: \"everyone\",\n\t\tspecificUsersSoundGroup9: [],\n\t\tmessageTypeSoundGroup9: \"all\",\n\t\tsoundGroup10: [],\n\t\tuserLevelSoundGroup10: \"everyone\",\n\t\tspecificUsersSoundGroup10: [],\n\t\tmessageTypeSoundGroup10: \"all\",\n\t\twidgetName: \"Chat Bubbles\",\n\t\twidgetAuthor: \"Zaytri\",\n\t\twidgetVersion: \"2.12.0\",\n\t\twidgetUpdateUrl:\n\t\t\t\"https://github.com/zaytri/stream-elements-widgets/blob/main/DynamicChatBubbles\",\n\t\tignoreFirst: true,\n\t},\n\toverlay: {\n\t\tisEditorMode: true,\n\t\tmuted: false,\n\t},\n};\n","export const testAlerts = {\n\tfollower: {\n\t\tlistener: \"follower-latest\",\n\t\tevent: {\n\t\t\tname: \"An1by\",\n\t\t},\n\t},\n\tcommunityGiftAnonymous: {\n\t\tlistener: \"event\",\n\t\tevent: {\n\t\t\ttype: \"communityGiftPurchase\",\n\t\t\tprovider: \"twitch\",\n\t\t\tchannel: \"663b10ba6cd449c4162a2230\",\n\t\t\tactivityGroup: \"41a50a915794e4ae7cf5e600fd3445d4\",\n\t\t\tdata: {\n\t\t\t\tamount: 2,\n\t\t\t\tusername: \"anonymous\",\n\t\t\t\tdisplayName: \"AnAnonymousGifter\",\n\t\t\t\ttier: \"2000\",\n\t\t\t\tsender: \"Anonymous\",\n\t\t\t},\n\t\t\t_id: \"699868d7df734989ec85d393\",\n\t\t\tactivityId: \"699868d7df734989ec85d393\",\n\t\t},\n\t},\n\tcommunityGift: {\n\t\tlistener: \"event\",\n\t\tevent: {\n\t\t\ttype: \"communityGiftPurchase\",\n\t\t\tprovider: \"twitch\",\n\t\t\tchannel: \"663b10ba6cd449c4162a2230\",\n\t\t\tactivityGroup: \"841592c0bccbf3e1e7de71e1c8f4d9f0\",\n\t\t\tdata: {\n\t\t\t\tamount: 1,\n\t\t\t\tusername: \"rishamon\",\n\t\t\t\tdisplayName: \"rishamon\",\n\t\t\t\ttier: \"1000\",\n\t\t\t\tsender: \"rishamon\",\n\t\t\t},\n\t\t\t_id: \"699867c7fef23197a6a089f5\",\n\t\t\tactivityId: \"699867c7fef23197a6a089f5\",\n\t\t},\n\t},\n\tsub: {\n\t\tlistener: \"subscriber-latest\",\n\t\tevent: {\n\t\t\tname: \"An1by\",\n\t\t\tamount: 1,\n\t\t},\n\t},\n\tselfSub: {\n\t\tlistener: \"event\",\n\t\tevent: {\n\t\t\ttype: \"subscriber\",\n\t\t\tprovider: \"twitch\",\n\t\t\tchannel: \"663b10ba6cd449c4162a2230\",\n\t\t\tdata: {\n\t\t\t\tamount: 1,\n\t\t\t\tusername: \"rishamon\",\n\t\t\t\tdisplayName: \"rishamon\",\n\t\t\t\ttier: \"1000\",\n\t\t\t},\n\t\t\t_id: \"6998676317aed69e62b8f283\",\n\t\t\tactivityId: \"6998676317aed69e62b8f283\",\n\t\t},\n\t},\n\tsoloSubToSomeone: {\n\t\tlistener: \"event\",\n\t\tevent: {\n\t\t\ttype: \"subscriber\",\n\t\t\tprovider: \"twitch\",\n\t\t\tchannel: \"663b10ba6cd449c4162a2230\",\n\t\t\tdata: {\n\t\t\t\tamount: 1,\n\t\t\t\tusername: \"encry_s\",\n\t\t\t\tdisplayName: \"encry_s\",\n\t\t\t\tmessage:\n\t\t\t\t\t\"rishamon gifted a Tier 1 sub to encry_s! This is their first Gift Sub in the channel!\",\n\t\t\t\ttier: \"1000\",\n\t\t\t\tsender: \"rishamon\",\n\t\t\t\tgifted: true,\n\t\t\t},\n\t\t\t_id: \"699866e82d9cd9a70854baf2\",\n\t\t\tactivityId: \"699866e82d9cd9a70854baf2\",\n\t\t},\n\t},\n\tsubRenewal: {\n\t\tlistener: \"event\",\n\t\tevent: {\n\t\t\ttype: \"subscriber\",\n\t\t\tprovider: \"twitch\",\n\t\t\tchannel: \"663b10ba6cd449c4162a2230\",\n\t\t\tdata: {\n\t\t\t\tamount: 8,\n\t\t\t\tusername: \"silgestian\",\n\t\t\t\tdisplayName: \"SilgeStian\",\n\t\t\t\ttier: \"1000\",\n\t\t\t},\n\t\t\t_id: \"69986dfaf25724ff4162bd1a\",\n\t\t\tactivityId: \"69986dfaf25724ff4162bd1a\",\n\t\t},\n\t},\n\tbits: {\n\t\tlistener: \"cheer-latest\",\n\t\tevent: {\n\t\t\tname: \"An1by\",\n\t\t\tamount: 30,\n\t\t},\n\t},\n\traid: {\n\t\tlistener: \"raid-latest\",\n\t\tevent: {\n\t\t\tname: \"An1by\",\n\t\t\tamount: 50,\n\t\t},\n\t},\n\tdonationShortText: {\n\t\tlistener: \"donation\",\n\t\tevent: {\n\t\t\tdata: {\n\t\t\t\talert_type: \"1\",\n\t\t\t\tcurrency: \"RUB\",\n\t\t\t\tbilling_system: \"CARD\",\n\t\t\t\tid: 5,\n\t\t\t\tamount_main: 500,\n\t\t\t\tamount: 500,\n\t\t\t\tusername: \"An1by\",\n\t\t\t\tmessage: \"Simple message text\",\n\t\t\t},\n\t\t},\n\t},\n\tdonationLongText: {\n\t\tlistener: \"donation\",\n\t\tevent: {\n\t\t\tdata: {\n\t\t\t\talert_type: \"1\",\n\t\t\t\tcurrency: \"RUB\",\n\t\t\t\tbilling_system: \"CARD\",\n\t\t\t\tid: 5,\n\t\t\t\tamount_main: 500,\n\t\t\t\tamount: 500,\n\t\t\t\tusername: \"An1by\",\n\t\t\t\tmessage:\n\t\t\t\t\t\"A plain gray stone lay on the shore, basking in the sun's warmth. A shove broke its peace—a thoughtless toss sent it flying. The stone splashed into water. Ripples spread, yet none noticed. It sank to the bottom, heavy with loneliness. \\\"Didn't I deserve to stay where I was happy still?\\\" it wondered.\",\n\t\t\t},\n\t\t},\n\t},\n\tdonation: {\n\t\tlistener: \"donation\",\n\t\tevent: {\n\t\t\tdata: {\n\t\t\t\talert_type: \"1\",\n\t\t\t\tcurrency: \"RUB\",\n\t\t\t\tbilling_system: \"CARD\",\n\t\t\t\tid: 5,\n\t\t\t\tamount_main: 500,\n\t\t\t\tamount: 500,\n\t\t\t\tusername: \"An1by\",\n\t\t\t\tmessage: \"\",\n\t\t\t},\n\t\t},\n\t},\n};\n","export const testMessages = {\n\tzeroWidthEmotesInRow: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1768317417111,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/23\",\n\t\t\t\t\tbadges: \"broadcaster/1,subscriber/0\",\n\t\t\t\t\t\"client-nonce\": \"f70c4cd8b6034d1f805298246ee1bc35\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"5f752ae3-4be9-4f93-82d1-d78575ba07fd\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1768317416862\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"Censored Censored Censored emotes in row\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 8,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 9,\n\t\t\t\t\t\tend: 17,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 18,\n\t\t\t\t\t\tend: 26,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"5f752ae3-4be9-4f93-82d1-d78575ba07fd\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\">emotes in row',\n\t\t},\n\t},\n\tzeroWidthEmoteInMiddle: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1768317383248,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/23\",\n\t\t\t\t\tbadges: \"broadcaster/1,subscriber/0\",\n\t\t\t\t\t\"client-nonce\": \"847f9c27722340d090eddcb0d0662b5b\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3dea1e1e-89f7-4a5f-b743-13ba0386492f\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1768317382987\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"text and Censored emote\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 9,\n\t\t\t\t\t\tend: 17,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"3dea1e1e-89f7-4a5f-b743-13ba0386492f\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'text and <img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\">emote',\n\t\t},\n\t},\n\tzeroWidthEmoteFirst: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1768317236883,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/23\",\n\t\t\t\t\tbadges: \"broadcaster/1,subscriber/0\",\n\t\t\t\t\t\"client-nonce\": \"e9d0621827184c1b940fd700ae599d60\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"6f347337-354a-42e5-bab0-935e19d74152\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1768317236625\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"Censored <- zeroWidth emote on the first place\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 8,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"6f347337-354a-42e5-bab0-935e19d74152\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\"><- zeroWidth emote on the first place',\n\t\t},\n\t},\n\tveryShort: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743750546,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\t\"client-nonce\": \"a3fe71a5771d0c31466dd333c963231e\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743749437\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"IHaveVeryBigNickname\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"IHaveVeryBigNickname\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"IHaveVeryBigNickname\",\n\t\t\t\ttext: \"A!\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t},\n\t\t\trenderedText: \"A!\",\n\t\t},\n\t},\n\tviewer: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743750546,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\t\"client-nonce\": \"a3fe71a5771d0c31466dd333c963231e\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743749437\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"SimpleViewer\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"SimpleViewer\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"SimpleViewer\",\n\t\t\t\ttext: \"I finally finished it...\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t},\n\t\t\trenderedText: \"I finally finished it...\",\n\t\t},\n\t},\n\tvip: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743844261,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"vip/1\",\n\t\t\t\t\t\"client-nonce\": \"fd72ba163a9cc1a6486b2eddb0f5d893\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"51cac44b-9908-49d2-b424-489276e1e521\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743843170\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t\tvip: \"1\",\n\t\t\t\t},\n\t\t\t\tnick: \"VipPersona\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"VipPersona\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"vip\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3\",\n\t\t\t\t\t\tdescription: \"VIP\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"VipPersona\",\n\t\t\t\ttext: \"I am a VIP persona!\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"51cac44b-9908-49d2-b424-489276e1e521\",\n\t\t\t},\n\t\t\trenderedText: \"I am a VIP persona!\",\n\t\t},\n\t},\n\tvipLong: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743844261,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"vip/1\",\n\t\t\t\t\t\"client-nonce\": \"fd72ba163a9cc1a6486b2eddb0f5d893\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"51cac44b-9908-49d2-b424-489276e1e521\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743843170\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t\tvip: \"1\",\n\t\t\t\t},\n\t\t\t\tnick: \"VipPersona\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"VipPersona\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"vip\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3\",\n\t\t\t\t\t\tdescription: \"VIP\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"VipPersona\",\n\t\t\t\ttext: \"I am a VIP persona! Are you see this?\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"51cac44b-9908-49d2-b424-489276e1e521\",\n\t\t\t},\n\t\t\trenderedText: \"I am a VIP persona! Are you see this?\",\n\t\t},\n\t},\n\tartist: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743916482,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"artist-badge/1\",\n\t\t\t\t\t\"client-nonce\": \"54128d734d44e28ffc32e1ce236993f5\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"8ee7e71a-3608-486a-bd82-a82b65982ca7\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743915371\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"StarArtist\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"StarArtist\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"artist-badge\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/4300a897-03dc-4e83-8c0e-c332fee7057f/3\",\n\t\t\t\t\t\tdescription: \"Artist\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"StarArtist\",\n\t\t\t\ttext: \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"8ee7e71a-3608-486a-bd82-a82b65982ca7\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n\t\t},\n\t},\n\tsubscriber: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tdata: {\n\t\t\t\ttags: {\n\t\t\t\t\tbadges: \"subscriber/1\",\n\t\t\t\t\tcolor: \"#ff69b4\",\n\t\t\t\t\tvip: \"0\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"user-id\": \"100135110\",\n\t\t\t\t\t\"user-type\": \"subscriber\",\n\t\t\t\t},\n\t\t\t\tnick: \"YourSub\",\n\t\t\t\tuserId: \"100135110\",\n\t\t\t\tdisplayName: \"YourSub\",\n\t\t\t\tdisplayColor: \"#ff69b4\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"partner\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/d12a2e27-16f6-41d0-ab77-b780518f00a3/3\",\n\t\t\t\t\t\tdescription: \"Verified\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\ttext: \"This is a subscriber's test message. I'm just a subscriber, srsly.\",\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"43285909-412c-4eee-b80d-89f1482ba53142\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t\"This is a subscriber's test message. I'm just a subscriber, srsly.\",\n\t\t},\n\t},\n\tfounder: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743750546,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"founder/1,subscriber/1\",\n\t\t\t\t\t\"client-nonce\": \"a3fe71a5771d0c31466dd333c963231e\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"sub__founder\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743749437\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"sub__founder\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"sub__founder\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"founder\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"I finally finished it...\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t},\n\t\t\trenderedText: \"I finally finished it...\",\n\t\t},\n\t},\n\tmoderator: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743997223,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"moderator/1\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3e7ba532-f181-4bcc-90f1-a3c48ca3c820\",\n\t\t\t\t\tmod: \"1\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743996136\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"mod\",\n\t\t\t\t},\n\t\t\t\tnick: \"mediator\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"mediator\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"moderator\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3\",\n\t\t\t\t\t\tdescription: \"Moderator\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"mediator\",\n\t\t\t\ttext: \"Did someone say... MODERATOR!?\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"3e7ba532-f181-4bcc-90f1-a3c48ca3c820\",\n\t\t\t},\n\t\t\trenderedText: \"Did someone say... MODERATOR!?\",\n\t\t},\n\t},\n\tmoderatorLong: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743997223,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"moderator/1\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3e7ba532-f181-4bcc-90f1-a3c48ca3c820\",\n\t\t\t\t\tmod: \"1\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743996136\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"mod\",\n\t\t\t\t},\n\t\t\t\tnick: \"mediator\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"mediator\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"moderator\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3\",\n\t\t\t\t\t\tdescription: \"Moderator\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"mediator\",\n\t\t\t\ttext: \"Did someone say... MODERATOR!? Yes, I am moderator!\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"3e7ba532-f181-4bcc-90f1-a3c48ca3c820\",\n\t\t\t},\n\t\t\trenderedText: \"Did someone say... MODERATOR!? Yes, I am moderator!\",\n\t\t},\n\t},\n\tbroadcaster: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744800809,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/16\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"6989104421ee14c0a8c216ef1c6bb5ed\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"35a9bea7-076e-4d17-8cb7-7e65c8111b3d\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744799706\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"I made this chat Besplatno\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Besplatno\",\n\t\t\t\t\t\tid: \"01FE70VRT00009TR6M9N941A28\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 17,\n\t\t\t\t\t\tend: 26,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"35a9bea7-076e-4d17-8cb7-7e65c8111b3d\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'I made this chat <img src=\"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp 1x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp 2x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp 4x\" title=\"Besplatno\" class=\"emote\">',\n\t\t},\n\t},\n\tbroadcasterShort: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744800809,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/16\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"6989104421ee14c0a8c216ef1c6bb5ed\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"35a9bea7-076e-4d17-8cb7-7e65c8111b3d\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744799706\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"okak\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"35a9bea7-076e-4d17-8cb7-7e65c8111b3d\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'I made this chat <img src=\"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp 1x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp 2x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp 4x\" title=\"Besplatno\" class=\"emote\">',\n\t\t},\n\t},\n\temoteSolo: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744097330,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"9ab645b9-7c27-4c6f-99fd-f63727ca3700\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744096217\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"tr0l1\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"tr0l1\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"tr0l1\",\n\t\t\t\ttext: \"🤤😮💀👈👉\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"emoji\",\n\t\t\t\t\t\tname: \"1f62e\",\n\t\t\t\t\t\tid: \"1f62e\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://twemoji.maxcdn.com/36x36/1f62e.png\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"emoji\",\n\t\t\t\t\t\tname: \"1f480\",\n\t\t\t\t\t\tid: \"1f480\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://twemoji.maxcdn.com/36x36/1f480.png\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"emoji\",\n\t\t\t\t\t\tname: \"1f448\",\n\t\t\t\t\t\tid: \"1f448\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://twemoji.maxcdn.com/36x36/1f448.png\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"emoji\",\n\t\t\t\t\t\tname: \"1f449\",\n\t\t\t\t\t\tid: \"1f449\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://twemoji.maxcdn.com/36x36/1f449.png\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"9ab645b9-7c27-4c6f-99fd-f63727ca3700\",\n\t\t\t},\n\t\t\trenderedText: \"🤤😮💀👈👉\",\n\t\t},\n\t},\n\temoteOne: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744131183,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes:\n\t\t\t\t\t\t\"41:20-27/245:29-43/28087:45-51/58765:53-63/555555584:65-66/64138:10-18\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"beb957ea-dfbd-4184-82a3-458121f44867\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744130018\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"tr0l1\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"tr0l1\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"tr0l1\",\n\t\t\t\ttext: \"SeemsGood\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"SeemsGood\",\n\t\t\t\t\t\tid: \"64138\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 9,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"beb957ea-dfbd-4184-82a3-458121f44867\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0 4x\" title=\"SeemsGood\" class=\"emote\">',\n\t\t},\n\t},\n\temoteText: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744131183,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"7TVUser\",\n\t\t\t\t\temotes:\n\t\t\t\t\t\t\"41:20-27/245:29-43/28087:45-51/58765:53-63/555555584:65-66/64138:10-18\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"beb957ea-dfbd-4184-82a3-458121f44867\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744130018\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"7TVUser\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"7TVUser\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"7TVUser\",\n\t\t\t\ttext: \"Not emote SeemsGood Kreygasm ResidentSleeper WutFace NotLikeThis <3\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"SeemsGood\",\n\t\t\t\t\t\tid: \"64138\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 10,\n\t\t\t\t\t\tend: 19,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"Kreygasm\",\n\t\t\t\t\t\tid: \"41\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 20,\n\t\t\t\t\t\tend: 28,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"ResidentSleeper\",\n\t\t\t\t\t\tid: \"245\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 29,\n\t\t\t\t\t\tend: 44,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"WutFace\",\n\t\t\t\t\t\tid: \"28087\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 45,\n\t\t\t\t\t\tend: 52,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"NotLikeThis\",\n\t\t\t\t\t\tid: \"58765\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 53,\n\t\t\t\t\t\tend: 64,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"<3\",\n\t\t\t\t\t\tid: \"9\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 65,\n\t\t\t\t\t\tend: 67,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"beb957ea-dfbd-4184-82a3-458121f44867\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'Not emote <img src=\"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0 4x\" title=\"SeemsGood\" class=\"emote\"><img src=\"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/3.0 4x\" title=\"Kreygasm\" class=\"emote\"><img src=\"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/3.0 4x\" title=\"ResidentSleeper\" class=\"emote\"><img src=\"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/3.0 4x\" title=\"WutFace\" class=\"emote\"><img src=\"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/3.0 4x\" title=\"NotLikeThis\" class=\"emote\"><img src=\"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/3.0 4x\" title=\"<3\" class=\"emote\">',\n\t\t},\n\t},\n\tzeroWidthEmotes: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1759956619137,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/20\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\t\"client-nonce\": \"f7b17aea5c07c5c08fd920278fb52b5a\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"7TVUser\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"b44d1c53-1de9-454c-a269-bd8849cbcd2d\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1759956618295\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"7TVUser\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"7TVUser\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"7TVUser\",\n\t\t\t\ttext: \"Zero-width emotes AYAYA PETPET right there!!\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"AYAYA\",\n\t\t\t\t\t\tid: \"01GB32XE6R00018VJGJ4A9BNCV\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 18,\n\t\t\t\t\t\tend: 23,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"PETPET\",\n\t\t\t\t\t\tid: \"01FE3XY508000AA32JP519W2EW\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 24,\n\t\t\t\t\t\tend: 30,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"b44d1c53-1de9-454c-a269-bd8849cbcd2d\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'Zero-width emotes <img src=\"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp 1x, https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/2x.webp 2x, https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/4x.webp 4x\" title=\"AYAYA\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp 1x, https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/2x.webp 2x, https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/4x.webp 4x\" title=\"PETPET\" class=\"emote\">right there!!',\n\t\t},\n\t},\n\tsevenTv: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744413746,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\t\"client-nonce\": \"2bd56e3c058b5a4fc4e46c3e369891e6\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"4c71789c-8c02-4e25-a71f-3a7d0ef19a33\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744412641\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"tr0l1\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"tr0l1\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"tr0l1\",\n\t\t\t\ttext: \"ало ало Инса Каори Hello everyone! Hello everyone! Hello everyone!Hello everyone! Hello everyone! Hello everyone! Hello everyone! Hello everyone!\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"ало\",\n\t\t\t\t\t\tid: \"01F6PRA3N80003BH8AEY9DWKDQ\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 3,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"ало\",\n\t\t\t\t\t\tid: \"01F6PRA3N80003BH8AEY9DWKDQ\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 4,\n\t\t\t\t\t\tend: 7,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Инса\",\n\t\t\t\t\t\tid: \"01JRE4VRRXWF0922HA3F9BZG6M\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 8,\n\t\t\t\t\t\tend: 12,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Каори\",\n\t\t\t\t\t\tid: \"01GY6TCEFG000BGHWA5T6NGBRA\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 13,\n\t\t\t\t\t\tend: 18,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"4c71789c-8c02-4e25-a71f-3a7d0ef19a33\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp 1x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp 2x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp 4x\" title=\"ало\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp 1x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp 2x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp 4x\" title=\"ало\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp 1x, https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/2x.webp 2x, https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/4x.webp 4x\" title=\"Инса\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp 1x, https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/2x.webp 2x, https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/4x.webp 4x\" title=\"Каори\" class=\"emote\">Hello everyone!',\n\t\t},\n\t},\n\tsevenTvSolo: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1768321684253,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/23\",\n\t\t\t\t\tbadges: \"broadcaster/1,subscriber/0\",\n\t\t\t\t\t\"client-nonce\": \"51cc77206bf346eda20774b75aac675d\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"e30a02bf-a3c7-40f2-9325-cdc2690d3631\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1768321684074\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"DurkaDance ͏\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"DurkaDance\",\n\t\t\t\t\t\tid: \"01JQBC7K2FX7HE4SFZFJEN6CWY\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 10,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"e30a02bf-a3c7-40f2-9325-cdc2690d3631\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp 1x, https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/2x.webp 2x, https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/4x.webp 4x\" title=\"DurkaDance\" class=\"emote\"> ͏',\n\t\t},\n\t},\n\treplyToEmotes: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1761442000746,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/21\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"467bc72d78248ec07dfb0602744268ca\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"9efd9377-2bd3-4c69-ace4-c21760337bab\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1761442000143\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"AREYOUAGIRL Censored Emotes there DiscoDoge Кута\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"AREYOUAGIRL\",\n\t\t\t\t\t\tid: \"01F6N58M5R0004P7N4A9PK7KD9\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/1x.webp\",\n\t\t\t\t\t\t\t2: \"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/2x.webp\",\n\t\t\t\t\t\t\t3: \"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/3x.webp\",\n\t\t\t\t\t\t\t4: \"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 11,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t2: \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t3: \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t4: \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 12,\n\t\t\t\t\t\tend: 20,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"DiscoDoge\",\n\t\t\t\t\t\tid: \"01F6REQR2R0006GRP49Q74YFVT\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/1x.webp\",\n\t\t\t\t\t\t\t2: \"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/2x.webp\",\n\t\t\t\t\t\t\t3: \"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/3x.webp\",\n\t\t\t\t\t\t\t4: \"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 34,\n\t\t\t\t\t\tend: 43,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Кута\",\n\t\t\t\t\t\tid: \"01GZRXWQMR0001GP2RPRY13KD2\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/1x.webp\",\n\t\t\t\t\t\t\t2: \"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/2x.webp\",\n\t\t\t\t\t\t\t3: \"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/3x.webp\",\n\t\t\t\t\t\t\t4: \"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 44,\n\t\t\t\t\t\tend: 48,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"9efd9377-2bd3-4c69-ace4-c21760337bab\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/1x.webp 1x, https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/2x.webp 2x, https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/4x.webp 4x\" title=\"AREYOUAGIRL\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\">Emotes there <img src=\"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/1x.webp 1x, https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/2x.webp 2x, https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/4x.webp 4x\" title=\"DiscoDoge\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/1x.webp 1x, https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/2x.webp 2x, https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/4x.webp 4x\" title=\"Кута\" class=\"emote\">',\n\t\t},\n\t},\n\treplyFromEmotes: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1761442023380,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/21\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"4052e6a7ed6bb6b8836aa625170c4f7b\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"f7bed8dd-5a48-4209-8617-e1a3c0720ee4\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"reply-parent-display-name\": \"An1by\",\n\t\t\t\t\t\"reply-parent-msg-body\":\n\t\t\t\t\t\t\"AREYOUAGIRL\\\\sCensored\\\\sThere\\\\semotes\\\\sDiscoDoge\\\\sКута\",\n\t\t\t\t\t\"reply-parent-msg-id\": \"9efd9377-2bd3-4c69-ace4-c21760337bab\",\n\t\t\t\t\t\"reply-parent-user-id\": \"958683839\",\n\t\t\t\t\t\"reply-parent-user-login\": \"an1by\",\n\t\t\t\t\t\"reply-thread-parent-display-name\": \"An1by\",\n\t\t\t\t\t\"reply-thread-parent-msg-id\": \"9efd9377-2bd3-4c69-ace4-c21760337bab\",\n\t\t\t\t\t\"reply-thread-parent-user-id\": \"958683839\",\n\t\t\t\t\t\"reply-thread-parent-user-login\": \"an1by\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1761442022738\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"@An1by I'm replying to message with emotes agarge Looks good, am I right?\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"agarge\",\n\t\t\t\t\t\tid: \"01HTDV6DE8000B1F9GAE4NZ73B\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/1x.webp\",\n\t\t\t\t\t\t\t2: \"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/2x.webp\",\n\t\t\t\t\t\t\t3: \"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/3x.webp\",\n\t\t\t\t\t\t\t4: \"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 43,\n\t\t\t\t\t\tend: 49,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"f7bed8dd-5a48-4209-8617-e1a3c0720ee4\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'@An1by I\\'m replying to message with emotes <img src=\"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/1x.webp 1x, https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/2x.webp 2x, https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/4x.webp 4x\" title=\"agarge\" class=\"emote\">Looks good, am I right?',\n\t\t},\n\t},\n\treplyTo: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1761435519083,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/21\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"da4c68fddba7eb1be7ae2b6a44c207a2\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"794c103d-a5d5-4ce1-bcd8-98ac6717c8e7\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1761435518511\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"I'll reply to that message\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"794c103d-a5d5-4ce1-bcd8-98ac6717c8e7\",\n\t\t\t},\n\t\t\trenderedText: \"I'll reply to that message\",\n\t\t},\n\t},\n\treplyFrom: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1761435541811,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/21\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"b59db94320a8a01942290c61f6a27480\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"emotesv2_f54e2bcddf4948808b845e37dd4e08de:26-36\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"bc101ec7-5663-4ee5-9580-536ed9a5804e\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"reply-parent-display-name\": \"An1by\",\n\t\t\t\t\t\"reply-parent-msg-body\": \"I'll\\\\sreply\\\\sto\\\\sthat\\\\smessage\",\n\t\t\t\t\t\"reply-parent-msg-id\": \"794c103d-a5d5-4ce1-bcd8-98ac6717c8e7\",\n\t\t\t\t\t\"reply-parent-user-id\": \"958683839\",\n\t\t\t\t\t\"reply-parent-user-login\": \"an1by\",\n\t\t\t\t\t\"reply-thread-parent-display-name\": \"An1by\",\n\t\t\t\t\t\"reply-thread-parent-msg-id\": \"794c103d-a5d5-4ce1-bcd8-98ac6717c8e7\",\n\t\t\t\t\t\"reply-thread-parent-user-id\": \"958683839\",\n\t\t\t\t\t\"reply-thread-parent-user-login\": \"an1by\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1761435541217\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"@An1by Replying right now akidaKrutoi\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"akidaKrutoi\",\n\t\t\t\t\t\tid: \"emotesv2_f54e2bcddf4948808b845e37dd4e08de\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/1.0\",\n\t\t\t\t\t\t\t2: \"https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/2.0\",\n\t\t\t\t\t\t\t4: \"https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 26,\n\t\t\t\t\t\tend: 36,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"bc101ec7-5663-4ee5-9580-536ed9a5804e\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'@An1by Replying right now <img src=\"https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/3.0 4x\" title=\"akidaKrutoi\" class=\"emote\">',\n\t\t},\n\t},\n};\n","/**\n * Команды, вызывающие onEventReceived с тестовыми сообщением или алертом.\n * Работают только в браузере (требуется window).\n */\nimport { testAlerts, testMessages } from \"./sources\";\n\nconst EVENT_NAME = \"onEventReceived\";\n\n/**\n * Отправляет тестовое сообщение по ключу: диспатчит CustomEvent onEventReceived.\n */\nexport function testMessage(key: string): void {\n\tif (typeof window === \"undefined\") {\n\t\treturn;\n\t}\n\tconst cleanKey = key.startsWith(\"testMessage_\")\n\t\t? key.replace(\"testMessage_\", \"\")\n\t\t: key;\n\tconst msg = testMessages[cleanKey as keyof typeof testMessages];\n\tif (msg) {\n\t\twindow.dispatchEvent(new CustomEvent(EVENT_NAME, { detail: msg }));\n\t}\n}\n\n/**\n * Отправляет тестовый алерт по ключу: диспатчит CustomEvent onEventReceived.\n */\nexport function testAlert(key: string): void {\n\tif (typeof window === \"undefined\") {\n\t\treturn;\n\t}\n\tconst cleanKey = key.startsWith(\"testAlert_\")\n\t\t? key.replace(\"testAlert_\", \"\")\n\t\t: key;\n\tconst alert = testAlerts[cleanKey as keyof typeof testAlerts];\n\tif (alert) {\n\t\twindow.dispatchEvent(new CustomEvent(EVENT_NAME, { detail: alert }));\n\t}\n}\n","/**\n * Преобразование fieldId виджета в ключ тестовых данных.\n */\nexport function getTestMessageKey(fieldId: string): string | null {\n\tif (!fieldId.startsWith(\"testMessage\")) return null;\n\tconst name = fieldId.replace(\"testMessage\", \"\");\n\treturn name.charAt(0).toLowerCase() + name.slice(1);\n}\n\nexport function getTestAlertKey(fieldId: string): string | null {\n\tif (!fieldId.startsWith(\"testAlert\")) return null;\n\tconst name = fieldId.replace(\"testAlert\", \"\");\n\treturn name.charAt(0).toLowerCase() + name.slice(1);\n}\n","import type { TwitchMessage } from \"./message\";\n\nexport enum UserRole {\n\tBROADCASTER = \"broadcaster\",\n\tLEAD_MODERATOR = \"lead_moderator\",\n\tMODERATOR = \"moderator\",\n\tVIP = \"vip\",\n\tARTIST = \"artist\",\n\tFOUNDER = \"founder\",\n\tSUBSCRIBER = \"subscriber\",\n\tTURBO = \"turbo\",\n\tDEFAULT = \"default\",\n}\n\ntype UserMessageDataOptions = {\n\tbadges?: TwitchMessage.Badge[];\n\ttags?: TwitchMessage.Tags;\n};\n\nexport const TwitchUserMessageData = ({\n\tbadges = [],\n\ttags = {},\n}: UserMessageDataOptions) => {\n\tconst includesBadgeType = (type: string) => {\n\t\treturn !!badges.find((b) => b.type === type);\n\t};\n\n\tconst tagBadgesString = tags.badges ?? \"\";\n\tconst userType = tags[\"user-type\"] ?? \"\";\n\n\tconst isSubscriber =\n\t\ttagBadgesString.includes(\"subscriber/1\") ||\n\t\ttags.subscriber === \"1\" ||\n\t\tincludesBadgeType(\"subscriber\");\n\n\tconst isFounder =\n\t\ttagBadgesString.includes(\"founder/1\") || includesBadgeType(\"founder\");\n\n\tconst isBroadcaster =\n\t\ttagBadgesString.includes(\"broadcaster/1\") ||\n\t\tincludesBadgeType(\"broadcaster\");\n\n\tconst isFirstMessageChatter = tags[\"first-msg\"] === \"1\";\n\n\tconst isTurbo = tags.turbo === \"1\";\n\n\tconst isVip =\n\t\ttags.vip === \"1\" ||\n\t\ttagBadgesString.includes(\"vip/1\") ||\n\t\tincludesBadgeType(\"vip\");\n\n\tconst isLeadModerator =\n\t\ttagBadgesString.includes(\"lead_moderator/1\") ||\n\t\tincludesBadgeType(\"lead_moderator\");\n\n\tconst isModerator =\n\t\t((tags.mod === \"1\" ||\n\t\t\ttagBadgesString.includes(\"moderator/1\") ||\n\t\t\tuserType === \"mod\") &&\n\t\t\t!isLeadModerator) ||\n\t\tincludesBadgeType(\"moderator\");\n\n\tconst isAnyModerator = isModerator || isLeadModerator;\n\n\tconst isArtist =\n\t\ttagBadgesString.includes(\"artist-badge/1\") ||\n\t\tincludesBadgeType(\"artist-badge\");\n\n\tconst roles: UserRole[] = [];\n\tif (isBroadcaster) roles.push(UserRole.BROADCASTER);\n\tif (isLeadModerator) roles.push(UserRole.LEAD_MODERATOR);\n\tif (isModerator) roles.push(UserRole.MODERATOR);\n\tif (isVip) roles.push(UserRole.VIP);\n\tif (isArtist) roles.push(UserRole.ARTIST);\n\tif (isFounder) roles.push(UserRole.FOUNDER);\n\tif (isSubscriber) roles.push(UserRole.SUBSCRIBER);\n\tif (isTurbo) roles.push(UserRole.TURBO);\n\troles.push(UserRole.DEFAULT);\n\n\tconst getSubscriberMonths = (): number => {\n\t\tfor (const key of [\"badge-info\", \"badges\"]) {\n\t\t\tconst tag = tags[key] as string;\n\t\t\tif (tag) {\n\t\t\t\tconst match = tag.match(/^subscriber\\/(\\d+)$/);\n\t\t\t\tif (match) {\n\t\t\t\t\treturn parseInt(match[1], 10);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t};\n\n\tconst getBadgeUrlByType = (type: string) =>\n\t\tbadges.find((b) => b.type === type)?.url;\n\n\treturn {\n\t\tisSubscriber,\n\t\tisBroadcaster,\n\t\tisFirstMessageChatter,\n\t\tisFounder,\n\t\tisTurbo,\n\t\tisVip,\n\t\tisAnyModerator,\n\t\tisModerator,\n\t\tisLeadModerator,\n\t\tisArtist,\n\t\troles,\n\t\tincludesBadgeType,\n\t\tgetSubscriberMonths,\n\t\tgetBadgeUrlByType,\n\t};\n};\n","import type { ClassifiedEvent } from \"@/root\";\nimport type { NextAlertCallback } from \".\";\n\nexport class AlertQueue {\n\tprivate readonly queue: ClassifiedEvent[] = [];\n\tpublic isShowingAlert: boolean = false;\n\tpublic onNextAlert: NextAlertCallback;\n\n\tconstructor(onNextAlert: NextAlertCallback) {\n\t\tthis.onNextAlert = onNextAlert;\n\t}\n\n\tpublic push(event: ClassifiedEvent) {\n\t\tthis.queue.push(event);\n\t}\n\n\t// DON'T FORGET SET \"this.isShowingAlert = false\" AFTER EXECUTION\n\tpublic processNextAlert() {\n\t\tif (this.queue.length === 0 || this.isShowingAlert) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst alertData = this.queue.shift();\n\t\tif (!alertData) {\n\t\t\treturn;\n\t\t}\n\t\tthis.isShowingAlert = true;\n\n\t\tthis.onNextAlert(this, alertData);\n\t}\n}\n","import { type DependencyList, useEffect, useRef } from \"react\";\nimport type {\n\tWindowEventKey,\n\tWindowEventListener,\n} from \"../types/window-events.js\";\n\nexport function useEventListener<K extends WindowEventKey>(\n\teventName: K,\n\thandler: WindowEventListener<K>,\n\tdeps: DependencyList = [],\n): void {\n\tconst callbackRef = useRef<WindowEventListener<K>>(handler);\n\tcallbackRef.current = handler;\n\n\tuseEffect(() => {\n\t\tconst fn = (ev: WindowEventMap[K]) => callbackRef.current.call(window, ev);\n\t\twindow.addEventListener(eventName, fn);\n\t\treturn () => window.removeEventListener(eventName, fn);\n\t}, [eventName, ...deps]);\n}\n","import type {\n\tCheerDetail,\n\tCommunityGiftPurchaseDetail,\n\tDeleteMessageDetail,\n\tDeleteMessagesDetail,\n\tFollowerDetail,\n\tMinimalEvent,\n\tRaidDetail,\n\tSubscriberDetail,\n\tSubscriberLatestDetail,\n\tTestButtonDetail,\n\tTwitchMessageDetail,\n} from \"@/root/types/on-event-received\";\n\nexport const isDetail = (d: unknown): d is MinimalEvent =>\n\ttypeof d === \"object\" && d !== null && \"listener\" in d;\n\nexport function createGuard<T extends MinimalEvent>(\n\tpredicate: (d: MinimalEvent) => boolean,\n) {\n\treturn (d: unknown): d is T => isDetail(d) && predicate(d);\n}\n\nexport const isTwitchMessageEvent = createGuard<TwitchMessageDetail>(\n\t(d) => d.listener === \"message\",\n);\nexport const isFollowerDetail = createGuard<FollowerDetail>(\n\t(d) => d.listener === \"follower-latest\",\n);\nexport const isSubscriberLatestDetail = createGuard<SubscriberLatestDetail>(\n\t(d) => d.listener === \"subscriber-latest\",\n);\nexport const isCheerDetail = createGuard<CheerDetail>(\n\t(d) => d.listener === \"cheer-latest\",\n);\nexport const isRaidDetail = createGuard<RaidDetail>(\n\t(d) => d.listener === \"raid-latest\",\n);\nexport const isDeleteMessageDetail = createGuard<DeleteMessageDetail>(\n\t(d) => d.listener === \"delete-message\",\n);\nexport const isDeleteMessagesDetail = createGuard<DeleteMessagesDetail>(\n\t(d) => d.listener === \"delete-messages\",\n);\nexport const isCommunityGiftPurchaseDetail =\n\tcreateGuard<CommunityGiftPurchaseDetail>(\n\t\t(d) => d.listener === \"event\" && d.event?.type === \"communityGiftPurchase\",\n\t);\nexport const isSubscriberDetail = createGuard<SubscriberDetail>(\n\t(d) => d.listener === \"event\" && d.event?.type === \"subscriber\",\n);\nexport const isWidgetButtonDetail = createGuard<TestButtonDetail>(\n\t(d) => d.listener === \"event:test\" && d.event?.listener === \"widget-button\",\n);\n","import type { DependencyList } from \"react\";\nimport { classifyEvent } from \"@/root/classifier\";\nimport type {\n\tClassifiedEvent,\n\tIncomingDetail,\n\tMinimalEvent,\n} from \"@/root/types/on-event-received\";\nimport { useEventListener } from \"./use-event-listener\";\n\n/**\n * Configuration options for StreamElements event hooks.\n */\nexport interface HookOptions<C extends boolean = boolean> {\n\t/**\n\t * If true, the hook will return a classified/normalized event object\n\t * instead of the raw StreamElements CustomEvent.\n\t *\n\t * Note: Only supported for alert-related hooks.\n\t */\n\tclassified?: C;\n\t/**\n\t * React dependency list to control hook re-subscription.\n\t */\n\tdeps?: DependencyList;\n}\n\nexport type HookHandler<T, C, R extends boolean> = (\n\tdata: R extends true ? C : CustomEvent<T>,\n) => void;\n\nexport function parseDepsOrOptions<C extends boolean>(\n\tdepsOrOptions?: DependencyList | HookOptions<C>,\n): HookOptions<C> {\n\tif (!depsOrOptions) return {} as HookOptions<C>;\n\tif (Array.isArray(depsOrOptions))\n\t\treturn { deps: depsOrOptions } as HookOptions<C>;\n\treturn depsOrOptions as HookOptions<C>;\n}\n\n/**\n * Base internal engine for event-guarded listeners.\n */\nexport function useOnEvent<\n\tT extends MinimalEvent,\n\tC = never,\n\tR extends boolean = boolean,\n>(\n\tguard: (d: unknown) => d is T,\n\thandler: HookHandler<T, C, R>,\n\toptions: HookOptions<R>,\n) {\n\tconst { classified, deps = [] } = options;\n\tuseEventListener(\n\t\t\"onEventReceived\",\n\t\t(ev) => {\n\t\t\tif (guard(ev.detail)) {\n\t\t\t\tif (classified) {\n\t\t\t\t\tconst data = classifyEvent(ev.detail as unknown as IncomingDetail);\n\t\t\t\t\tif (data) (handler as (d: C) => void)(data as C);\n\t\t\t\t} else {\n\t\t\t\t\t(handler as (d: CustomEvent<T>) => void)(ev as CustomEvent<T>);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdeps,\n\t);\n}\n\n/**\n * Hook Factory to reduce boilerplate.\n * If C is not provided, classification mode is disabled for the hook.\n */\nexport function createEventHook<T extends MinimalEvent>(\n\tguard: (d: unknown) => d is T,\n): (\n\thandler: (ev: CustomEvent<T>) => void,\n\tdepsOrOptions?: DependencyList | HookOptions<false>,\n) => void;\n\nexport function createEventHook<T extends MinimalEvent, C>(\n\tguard: (d: unknown) => d is T,\n): <R extends boolean = false>(\n\thandler: HookHandler<T, C, R>,\n\tdepsOrOptions?: DependencyList | HookOptions<R>,\n) => void;\n\nexport function createEventHook(guard: (d: unknown) => d is MinimalEvent) {\n\treturn <R extends boolean>(\n\t\thandler: HookHandler<MinimalEvent, ClassifiedEvent, R>,\n\t\tdepsOrOptions?: DependencyList | HookOptions<R>,\n\t) => {\n\t\tconst options = parseDepsOrOptions(depsOrOptions);\n\t\treturn useOnEvent(guard, handler, options);\n\t};\n}\n","import type { DependencyList } from \"react\";\nimport { aggregateIncomingEvent, type AggregatorOptions } from \"@/root/aggregator\";\nimport {\n\tisCheerDetail,\n\tisCommunityGiftPurchaseDetail,\n\tisDeleteMessageDetail,\n\tisDeleteMessagesDetail,\n\tisFollowerDetail,\n\tisRaidDetail,\n\tisSubscriberDetail,\n\tisSubscriberLatestDetail,\n\tisTwitchMessageEvent,\n\tisWidgetButtonDetail,\n} from \"@/root/guards\";\nimport type {\n\tAggregatedCommunityGift,\n\tCheerDetail,\n\tClassifiedButtonClick,\n\tClassifiedCheer,\n\tClassifiedDeleteMessage,\n\tClassifiedDeleteMessages,\n\tClassifiedEvent,\n\tClassifiedFollower,\n\tClassifiedRaid,\n\tCommunityGiftPurchaseDetail,\n\tDeleteMessageDetail,\n\tDeleteMessagesDetail,\n\tFollowerDetail,\n\tIncomingDetail,\n\tRaidDetail,\n\tSubscriberDetail,\n\tSubscriberLatestDetail,\n\tTestButtonDetail,\n\tTwitchMessageDetail,\n} from \"@/root/types/on-event-received\";\nimport type { WindowEventListener } from \"../types/window-events\";\nimport { createEventHook } from \"./factory\";\nimport { useEventListener } from \"./use-event-listener\";\n\n/**\n * Low-level hook to subscribe to the generic 'onEventReceived' from StreamElements.\n *\n * @param handler Generic event listener for all StreamElements events.\n * @param deps React dependency list.\n */\nexport function useOnEventReceived(\n\thandler: WindowEventListener<\"onEventReceived\">,\n\tdeps: DependencyList = [],\n): void {\n\tuseEventListener(\"onEventReceived\", handler, deps);\n}\n\n/**\n * Listens for Twitch chat messages received.\n * Classification is not supported for this hook.\n */\nexport const useOnTwitchMessageReceived =\n\tcreateEventHook<TwitchMessageDetail>(isTwitchMessageEvent);\n\n/** Alias for useOnTwitchMessageReceived */\nexport const useOnMessageReceived = useOnTwitchMessageReceived;\n\n/**\n * Listens for single message deletion events in Twitch chat.\n * Calls on deleting certain user message.\n * Supports classification into ClassifiedDeleteMessage.\n */\nexport const useOnDeleteMessage = createEventHook<\n\tDeleteMessageDetail,\n\tClassifiedDeleteMessage\n>(isDeleteMessageDetail);\n\n/**\n * Listens for multiple message deletion (clear chat/timeout) events in Twitch chat.\n * Calls on user ban or timeout.\n * Supports classification into ClassifiedDeleteMessages.\n */\nexport const useOnDeleteMessages = createEventHook<\n\tDeleteMessagesDetail,\n\tClassifiedDeleteMessages\n>(isDeleteMessagesDetail);\n\n/**\n * Listens for Widget Button clicks configured in the StreamElements Overlay Editor.\n * Supports classification into ClassifiedButtonClick.\n */\nexport const useOnWidgetButtonReceived = createEventHook<\n\tTestButtonDetail,\n\tClassifiedButtonClick\n>(isWidgetButtonDetail);\n\n/**\n * Listens for new Follower events.\n * Supports classification into ClassifiedFollower.\n */\nexport const useOnFollowerReceived = createEventHook<\n\tFollowerDetail,\n\tClassifiedFollower\n>(isFollowerDetail);\n\n/**\n * Listens for Cheer (bits) events.\n * Supports classification into ClassifiedCheer.\n */\nexport const useOnCheerReceived = createEventHook<CheerDetail, ClassifiedCheer>(\n\tisCheerDetail,\n);\n\n/**\n * Listens for Raid events.\n * Supports classification into ClassifiedRaid.\n */\nexport const useOnRaidReceived = createEventHook<RaidDetail, ClassifiedRaid>(\n\tisRaidDetail,\n);\n\n/**\n * Listens for general Subscriber events.\n * Supports classification into ClassifiedEvent union.\n */\nexport const useOnSubscriberReceived = createEventHook<\n\tSubscriberDetail,\n\tClassifiedEvent\n>(isSubscriberDetail);\n\n/**\n * Listens for the latest Subscriber status updates.\n * Supports classification into ClassifiedEvent union.\n */\nexport const useOnSubscriberLatestReceived = createEventHook<\n\tSubscriberLatestDetail,\n\tClassifiedEvent\n>(isSubscriberLatestDetail);\n\n/**\n * Listens for Community Gift Purchase (bulk gifts) events.\n */\nexport const useOnCommunityGiftPurchaseReceived = createEventHook<\n\tCommunityGiftPurchaseDetail,\n\tClassifiedEvent\n>(isCommunityGiftPurchaseDetail);\n\n/**\n * Specialized hook for handling aggregated mass-gift subscriptions.\n *\n * Normalizes Multiple subscriber events into a single sender event with a list of recipients.\n * Essential for \"Community Gift\" alerts to avoid spamming multiple notifications.\n *\n * @param handler Receives the aggregated community gift object.\n * @param options Aggregator options (broadcasterLogin, cache, etc).\n * @param deps React dependency list.\n */\nexport const useOnAggregatedCommunityGift = (\n\thandler: (event: AggregatedCommunityGift) => void,\n\toptions?: AggregatorOptions,\n\tdeps: DependencyList = [],\n) => {\n\tuseOnEventReceived((ev) => {\n\t\taggregateIncomingEvent(\n\t\t\tev.detail as unknown as IncomingDetail,\n\t\t\toptions,\n\t\t\t(normalized) => {\n\t\t\t\tif (normalized) handler(normalized as AggregatedCommunityGift);\n\t\t\t},\n\t\t);\n\t}, deps);\n};\n\nexport type { HookOptions } from \"./factory\";\n","import type { DependencyList } from \"react\";\nimport type { WindowEventListener } from \"@/react/types/window-events.js\";\nimport type { OnWidgetLoadEventDetails } from \"@/root/types/on-widget-load\";\nimport { useEventListener } from \"./use-event-listener.js\";\n\nexport function useOnWidgetLoad<FieldData = unknown>(\n\thandler: (ev: CustomEvent<OnWidgetLoadEventDetails<FieldData>>) => void,\n\tdeps: DependencyList = [],\n): void {\n\tuseEventListener(\n\t\t\"onWidgetLoad\",\n\t\thandler as WindowEventListener<\"onWidgetLoad\">,\n\t\tdeps,\n\t);\n}\n"],"mappings":"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B,OAAQ,EACR,CACD,kBAAmB,CAClB,OAAQ,EACR,CACD,kBAAmB,CAClB,OAAQ,EACR,CACD,kBAAmB,CAClB,MAAO,EACP,CACD,iBAAkB,CACjB,OAAQ,EACR,CACD,kBAAmB,CAClB,KAAM,GACN,OAAQ,EACR,OAAQ,GACR,QAAS,GACT,MAAO,EAAE,CACT,CACD,kBAAmB,CAClB,CACC,KAAM,gBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,UACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,UACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,gBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,SACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,mBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACD,oBAAqB,EAAE,CACvB,cAAe,EAAE,CACjB,cAAe,CACd,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,eACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,WACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACD,iCAAkC,EAAE,CACpC,eAAgB,EAAE,CAClB,uBAAwB,EAAE,CAC1B,mBAAoB,EAAE,CACtB,aAAc,EAAE,CAChB,eAAgB,EAAE,CAClB,wBAAyB,CACxB,OAAQ,EACR,QAAS,GACT,KAAM,GACN,WAAY,GACZ,CACD,wBAAyB,CACxB,OAAQ,EACR,KAAM,GACN,KAAM,GACN,CACD,+CAAgD,CAC/C,OAAQ,EACR,KAAM,GACN,CACD,8CAA+C,CAC9C,OAAQ,EACR,KAAM,GACN,CACD,qCAAsC,CACrC,OAAQ,EACR,KAAM,GACN,CACD,oCAAqC,CACpC,OAAQ,EACR,KAAM,GACN,CACD,mBAAoB,CACnB,OAAQ,EACR,OAAQ,EACR,MAAO,EACP,aAAc,EACd,KAAM,GACN,KAAM,GACN,CACD,oCAAqC,EAAE,CACvC,uBAAwB,CACvB,OAAQ,EACR,CACD,2BAA4B,CAC3B,OAAQ,EACR,QAAS,EACT,CACD,kBAAmB,CAClB,OAAQ,EACR,CACD,iCAAkC,CACjC,OAAQ,EACR,KAAM,GACN,CACD,gCAAiC,CAChC,OAAQ,EACR,KAAM,GACN,CACD,CACD,SAAU,CACT,UAAW,GACX,SAAU,GACV,aAAc,GACd,CACD,CACD,QAAS,CACR,CACC,KAAM,gBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,UACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,UACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,gBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,SACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,mBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,eACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,WACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACD,SAAU,CACT,KAAM,MACN,KAAM,cACN,OAAQ,IACR,CACD,QAAS,CACR,SAAU,UACV,SAAU,aACV,GAAI,2BACJ,WAAY,YACZ,OACC,iHACD,CACD,UAAW,CACV,kBAAmB,4BACnB,YAA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L,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,WACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,s6BACD,CACD,CACD,uBAAwB,CACvB,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OAAQ,6BACR,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACD,QAAS,QACT,KAAM,0BACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,WACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,mUACD,CACD,CACD,oBAAqB,CACpB,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OAAQ,6BACR,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CA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e,CACd,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,GACd,OAAQ,cACR,MAAO,GACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,MACb,CACD,KAAM,WACN,OAAQ,YACR,YAAa,WACb,aAAc,GACd,OAAQ,CACP,CACC,KAAM,YACN,QAAS,IACT,IAAK,gFACL,YAAa,YACb,CACD,CACD,QAAS,WACT,KAAM,sDACN,SAAU,GACV,OAAQ,EAAE,CACV,MAAO,uCACP,CACD,aAAc,sDACd,CACD,CACD,YAAa,CACZ,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,6BACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,YACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,uUACD,CACD,CACD,iBAAkB,CACjB,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,OACN,SAAU,GACV,OAAQ,EAAE,CACV,MAAO,uCACP,CACD,aACC,uUACD,CACD,CACD,UAAW,CACV,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,GACd,OAAQ,GACR,MAAO,GACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,GACd,OAAQ,EAAE,CACV,QAAS,QACT,KAAM,aACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,QACN,KAAM,QACN,GAAI,QACJ,IAAK,GACL,KAAM,CACL,EAAK,6CACL,CACD,CACD,CACC,KAAM,QACN,KAAM,QACN,GAAI,QACJ,IAAK,GACL,KAAM,CACL,EAAK,6CACL,CACD,CACD,CACC,KAAM,QACN,KAAM,QACN,GAAI,QACJ,IAAK,GACL,KAAM,CACL,EAAK,6CACL,CACD,CACD,CACC,KAAM,QACN,KAAM,QACN,GAAI,QACJ,IAAK,GACL,KAAM,CACL,EAAK,6CACL,CACD,CACD,CACD,MAAO,uCACP,CACD,aAAc,aACd,CACD,CACD,SAAU,CACT,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,GACd,OAAQ,GACR,MAAO,GACP,eAAgB,QAChB,OACC,yEACD,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,GACd,OAAQ,EAAE,CACV,QAAS,QACT,KAAM,YACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,SACN,KAAM,YACN,GAAI,QACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,kEACL,EAAK,kEACL,EAAK,kEACL,CACD,MAAO,EACP,IAAK,EACL,CACD,CACD,MAAO,uCACP,CACD,aACC,kUACD,CACD,CACD,UAAW,CACV,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,GACd,OAAQ,GACR,MAAO,GACP,eAAgB,UAChB,OACC,yEACD,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,UACN,OAAQ,YACR,YAAa,UACb,aAAc,GACd,OAAQ,EAAE,CACV,QAAS,UACT,KAAM,sEACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,SACN,KAAM,YACN,GAAI,QACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,kEACL,EAAK,kEACL,EAAK,kEACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,SACN,KAAM,WACN,GAAI,KACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,SACN,KAAM,kBACN,GAAI,MACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,gEACL,EAAK,gEACL,EAAK,gEACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,SACN,KAAM,UACN,GAAI,QACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,kEACL,EAAK,kEACL,EAAK,kEACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,SACN,KAAM,cACN,GAAI,QACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,kEACL,EAAK,kEACL,EAAK,kEACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,SACN,KAAM,KACN,GAAI,IACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,8DACL,EAAK,8DACL,EAAK,8DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,i2DACD,CACD,CACD,gBAAiB,CAChB,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OAAQ,GACR,eAAgB,mCAChB,MAAO,UACP,eAAgB,UAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,UACN,OAAQ,YACR,YAAa,UACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,UACT,KAAM,+CACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,QACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,SACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,ioBACD,CACD,CACD,QAAS,CACR,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,GACd,OAAQ,GACR,eAAgB,mCAChB,MAAO,GACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,GACd,OAAQ,EAAE,CACV,QAAS,QACT,KAAM,oJACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,MACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,EACL,CACD,CACC,KAAM,MACN,KAAM,MACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,EACL,CACD,CACC,KAAM,MACN,KAAM,OACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,QACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,ysCACD,CACD,CACD,YAAa,CACZ,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OAAQ,6BACR,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACD,QAAS,QACT,KAAM,gBACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,aACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,yTACD,CACD,CACD,cAAe,CACd,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,mDACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,cACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,CACD,MAAO,EACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,WACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,YACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,OACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,wtCACD,CACD,CACD,gBAAiB,CAChB,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,4BAA6B,QAC7B,wBACC,6DACD,sBAAuB,uCACvB,uBAAwB,YACxB,0BAA2B,QAC3B,mCAAoC,QACpC,6BAA8B,uCAC9B,8BAA+B,YAC/B,iCAAkC,QAClC,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,4EACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,SACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,qXACD,CACD,CACD,QAAS,CACR,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,6BACN,SAAU,GACV,OAAQ,EAAE,CACV,MAAO,uCACP,CACD,aAAc,6BACd,CACD,CACD,UAAW,CACV,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,kDACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,4BAA6B,QAC7B,wBAAyB,qCACzB,sBAAuB,uCACvB,uBAAwB,YACxB,0BAA2B,QAC3B,mCAAoC,QACpC,6BAA8B,uCAC9B,8BAA+B,YAC/B,iCAAkC,QAClC,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,wCACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,SACN,KAAM,cACN,GAAI,4CACJ,IAAK,GACL,KAAM,CACL,EAAG,uGACH,EAAG,uGACH,EAAG,uGACH,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,kfACD,CACD,CACD,CCpkD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"}
|
|
1
|
+
{"version":3,"file":"index.iife.js","names":[],"sources":["../../src/root/classifier.ts","../../src/root/aggregator/index.ts","../../src/root/sources/on-widget-load-detail.ts","../../src/root/sources/alerts.ts","../../src/root/sources/messages.ts","../../src/root/commands.ts","../../src/root/keys.ts","../../src/root/message/twitch/user-message-data.ts","../../src/root/queue/alert-queue.ts","../../src/react/hooks/use-event-listener.ts","../../src/root/guards/on-event-received.ts","../../src/react/hooks/factory.ts","../../src/react/hooks/use-on-event-received.ts","../../src/react/hooks/use-on-widget-load.ts"],"sourcesContent":["/**\n * Shared classification and tier parsing for Twitch/StreamElements subscription events.\n * Used by aggregate normalizer.\n */\n\nimport type { ClassifiedEvent, IncomingDetail, TierInfo } from \"./types\";\n\nexport function parseTier(raw: string | number | null | undefined): TierInfo {\n\tif (raw == null) return { tier: 0, tierText: \"\" };\n\tconst tierText = typeof raw === \"string\" ? raw : String(raw);\n\tconst num = parseInt(tierText, 10);\n\tif (Number.isNaN(num)) return { tier: 0, tierText };\n\tconst tier = num >= 3000 ? 3 : num >= 2000 ? 2 : num >= 1000 ? 1 : 0;\n\treturn { tier, tierText };\n}\n\nexport function getCacheKey(detail: IncomingDetail): string {\n\tconst listener = detail.listener;\n\tconst event = detail.event ?? {};\n\tconst ag = event.activityGroup;\n\tconst aid = event.activityId ?? event._id;\n\tif (ag) return String(ag);\n\tif (aid) return String(aid);\n\tif (listener === \"subscriber-latest\" && event.bulkGifted) {\n\t\treturn (\n\t\t\t\"sl-bulk-\" +\n\t\t\t(event.sender ?? \"\") +\n\t\t\t\"-\" +\n\t\t\t(event.amount ?? \"\") +\n\t\t\t\"-\" +\n\t\t\t(event.tier ?? \"\") +\n\t\t\t\"-\" +\n\t\t\t(event._id ?? \"\")\n\t\t);\n\t}\n\treturn `sl-${event._id ?? event.activityId ?? \"\"}`;\n}\n\nexport function classifyEvent(detail: IncomingDetail): ClassifiedEvent | null {\n\tconst listener = detail.listener;\n\tconst event = detail.event ?? {};\n\tconst data = (event.data ?? event) as Record<string, unknown>;\n\tconst tierInfo = parseTier(\n\t\t(data.tier ?? event.tier) as string | number | undefined,\n\t);\n\n\tif (listener === \"event\") {\n\t\tif (event.type === \"communityGiftPurchase\") {\n\t\t\tconst isAnon =\n\t\t\t\t(data.username &&\n\t\t\t\t\tString(data.username).toLowerCase() === \"anonymous\") ||\n\t\t\t\tdata.sender === \"Anonymous\";\n\t\t\treturn {\n\t\t\t\ttype: isAnon ? \"community-gift-anonymous\" : \"community-gift\",\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\ttotalAmount: parseInt(String(data.amount), 10) || 1,\n\t\t\t\trecipients: [],\n\t\t\t\tsender: isAnon\n\t\t\t\t\t? undefined\n\t\t\t\t\t: ((data.sender ?? data.displayName ?? data.username) as string),\n\t\t\t\tanonymousDisplayName: isAnon\n\t\t\t\t\t? ((data.displayName as string) ?? \"Anonymous\")\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t}\n\t\tif (event.type === \"subscriber\") {\n\t\t\tconst gifted = data.gifted === true;\n\t\t\tconst sender = data.sender as string | undefined;\n\t\t\tconst amount = parseInt(String(data.amount), 10) || 1;\n\t\t\tconst username = (data.username ?? data.displayName) as\n\t\t\t\t| string\n\t\t\t\t| undefined;\n\t\t\tconst activityGroup = event.activityGroup as string | undefined;\n\n\t\t\tif (sender === \"Anonymous\" && activityGroup) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"community-gift-anonymous\",\n\t\t\t\t\t_role: \"recipient\",\n\t\t\t\t\tactivityGroup,\n\t\t\t\t\trecipient: (username ?? data.displayName) as string,\n\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (gifted && sender && sender !== \"Anonymous\") {\n\t\t\t\tconst isCommunity =\n\t\t\t\t\tdata.communityGifted === true ||\n\t\t\t\t\t(activityGroup != null && activityGroup !== \"\");\n\t\t\t\tif (!isCommunity) {\n\t\t\t\t\tconst firstGift =\n\t\t\t\t\t\tString(data.message ?? \"\").indexOf(\"first Gift Sub\") !== -1;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"solo-sub-to-someone\",\n\t\t\t\t\t\tsender,\n\t\t\t\t\t\trecipient: (username ?? data.displayName) as string,\n\t\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t\t\tfirstGiftInChannel: firstGift,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"community-gift\",\n\t\t\t\t\t_role: \"recipient\",\n\t\t\t\t\tactivityGroup: activityGroup ?? \"\",\n\t\t\t\t\trecipient: (username ?? data.displayName) as string,\n\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!gifted && amount > 1) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"sub-renewal\",\n\t\t\t\t\tname: (username ?? data.displayName) as string,\n\t\t\t\t\tmonths: amount,\n\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!gifted && amount === 1) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"self-sub\",\n\t\t\t\t\tname: (username ?? data.displayName) as string,\n\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (activityGroup) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"community-gift\",\n\t\t\t\t\t_role: \"recipient\",\n\t\t\t\t\tactivityGroup,\n\t\t\t\t\trecipient: (username ?? data.displayName) as string,\n\t\t\t\t\ttier: tierInfo.tier,\n\t\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttype: \"unknown\",\n\t\t\t\tdetail,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\ttype: \"unknown\",\n\t\t\tdetail,\n\t\t};\n\t}\n\n\tif (listener === \"subscriber-latest\") {\n\t\tconst bulkGifted = event.bulkGifted === true;\n\t\tconst sender = event.sender as string | undefined;\n\t\tconst name = event.name as string | undefined;\n\t\tconst amount = parseInt(String(event.amount), 10) || 1;\n\t\tconst gifted = event.gifted === true;\n\t\tconst isCommunityGift =\n\t\t\tevent.isCommunityGift === true || event.communityGifted === true;\n\n\t\tif (bulkGifted && sender === \"Anonymous\") {\n\t\t\treturn {\n\t\t\t\ttype: \"community-gift-anonymous\",\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\ttotalAmount: amount,\n\t\t\t\trecipients: [],\n\t\t\t};\n\t\t}\n\t\tif (bulkGifted && sender) {\n\t\t\treturn {\n\t\t\t\ttype: \"community-gift\",\n\t\t\t\tsender,\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\ttotalAmount: amount,\n\t\t\t\trecipients: [],\n\t\t\t};\n\t\t}\n\t\tif (gifted && !isCommunityGift && sender) {\n\t\t\tconst firstGift =\n\t\t\t\tString(event.message ?? \"\").indexOf(\"first Gift Sub\") !== -1;\n\t\t\treturn {\n\t\t\t\ttype: \"solo-sub-to-someone\",\n\t\t\t\tsender,\n\t\t\t\trecipient: name ?? \"\",\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t\tfirstGiftInChannel: firstGift,\n\t\t\t};\n\t\t}\n\t\tif (!gifted && amount > 1) {\n\t\t\treturn {\n\t\t\t\ttype: \"sub-renewal\",\n\t\t\t\tname: name ?? \"\",\n\t\t\t\tmonths: amount,\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t};\n\t\t}\n\t\tif (!gifted && amount === 1 && (sender == null || name === sender)) {\n\t\t\treturn {\n\t\t\t\ttype: \"self-sub\",\n\t\t\t\tname: name ?? \"\",\n\t\t\t\ttier: tierInfo.tier,\n\t\t\t\ttierText: tierInfo.tierText,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\ttype: \"unknown\",\n\t\t\tdetail,\n\t\t};\n\t}\n\n\tif (listener === \"follower-latest\") {\n\t\treturn {\n\t\t\ttype: \"follow\",\n\t\t\tname: (event.name as string) ?? \"\",\n\t\t};\n\t}\n\n\tif (listener === \"cheer-latest\") {\n\t\tconst amount = parseInt(String(event.amount), 10) || 0;\n\t\treturn {\n\t\t\ttype: \"cheer\",\n\t\t\tname: (event.name as string) ?? \"\",\n\t\t\tamount,\n\t\t};\n\t}\n\n\tif (listener === \"raid-latest\") {\n\t\tconst amount = parseInt(String(event.amount), 10) || 0;\n\t\treturn {\n\t\t\ttype: \"raid\",\n\t\t\tname: (event.name as string) ?? \"\",\n\t\t\tviewers: amount,\n\t\t};\n\t}\n\n\tif (listener === \"delete-message\") {\n\t\treturn {\n\t\t\ttype: \"delete-message\",\n\t\t\tmessageId: (event.msgId as string) ?? \"\",\n\t\t};\n\t}\n\n\tif (listener === \"delete-messages\") {\n\t\treturn {\n\t\t\ttype: \"delete-messages\",\n\t\t\tuserName: (event.userId as string) ?? \"\",\n\t\t};\n\t}\n\n\tif (listener === \"event:test\" && event.listener === \"widget-button\") {\n\t\treturn {\n\t\t\ttype: \"button\",\n\t\t\tfield: event.field as string,\n\t\t};\n\t}\n\n\n\treturn {\n\t\ttype: \"unknown\",\n\t\tdetail,\n\t};\n}\n","/**\n * Event normalizer — aggregate mode: buffer events by activityGroup,\n * merge into one normalized event per action (timeout 2.5s).\n */\n\nimport { classifyEvent, getCacheKey } from \"../classifier.js\";\nimport type {\n\tAggregatedCommunityGift,\n\tAggregatedRecipient,\n\tClassifiedEvent,\n\tIncomingDetail,\n} from \"../types/on-event-received/index.js\";\nimport type { AggregatorOptions, CacheSubsByType } from \"./types.js\";\n\nconst AGGREGATE_TIMEOUT_MS = 2500;\n\ninterface BufferEntry {\n\ttype: string;\n\tsubscribers: Array<{\n\t\trecipient?: string;\n\t\tusername?: string;\n\t\tname?: string;\n\t\tsender?: string;\n\t}>;\n\ttier: number;\n\ttierText: string;\n\ttotalAmount: number;\n\tpurchase?: AggregatedCommunityGift;\n\tsender?: string;\n}\n\nconst bufferByGroup: Record<string, BufferEntry> = {};\nconst bufferTimers: Record<string, ReturnType<typeof setTimeout>> = {};\n\nfunction getCacheForType(\n\tcacheSubs: CacheSubsByType | undefined,\n\ttype: string,\n): {\n\t_has: (k: string) => boolean;\n\t_set: (k: string, v: boolean) => void;\n} | null {\n\tif (!cacheSubs) return null;\n\tif (\n\t\ttypeof cacheSubs._has === \"function\" &&\n\t\ttypeof cacheSubs._set === \"function\"\n\t) {\n\t\treturn cacheSubs as unknown as {\n\t\t\t_has: (k: string) => boolean;\n\t\t\t_set: (k: string, v: boolean) => void;\n\t\t};\n\t}\n\tconst c = cacheSubs[type];\n\tif (c && typeof (c as { _has?: unknown })._has === \"function\") {\n\t\treturn c as {\n\t\t\t_has: (k: string) => boolean;\n\t\t\t_set: (k: string, v: boolean) => void;\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction emitAggregated(\n\tgroupKey: string,\n\tmerged: AggregatedCommunityGift,\n\tcacheSubs: CacheSubsByType | undefined,\n\tonNormalized: (event: ClassifiedEvent | null) => void,\n): void {\n\tconst cache = getCacheForType(cacheSubs, merged.type as string);\n\tif (cache?._has(groupKey)) return;\n\tif (cache) cache._set(groupKey, true);\n\tonNormalized(merged);\n}\n\nfunction flushBuffer(\n\tgroupKey: string,\n\tcacheSubs: CacheSubsByType | undefined,\n\tonNormalized: (event: ClassifiedEvent | null) => void,\n\tbroadcaster: string,\n): void {\n\tconst buf = bufferByGroup[groupKey];\n\tif (!buf) return;\n\tdelete bufferByGroup[groupKey];\n\tif (bufferTimers[groupKey]) {\n\t\tclearTimeout(bufferTimers[groupKey]);\n\t\tdelete bufferTimers[groupKey];\n\t}\n\tconst purchase = buf.purchase;\n\tconst subscribers = buf.subscribers ?? [];\n\tconst type = buf.type;\n\tconst tier = buf.tier;\n\tconst tierText = buf.tierText;\n\tconst totalAmount = buf.totalAmount ?? subscribers.length;\n\tconst recipients = subscribers\n\t\t.map((s) => s.recipient ?? s.username ?? s.name)\n\t\t.filter(Boolean) as string[];\n\tconst firstSub = subscribers[0];\n\tconst senderFromSub = firstSub?.sender;\n\tconst sender = purchase?.sender ?? buf.sender ?? senderFromSub;\n\tif (type === \"community-gift\" && broadcaster && sender === broadcaster) {\n\t\treturn;\n\t}\n\tif (type === \"community-gift-anonymous\") {\n\t\temitAggregated(\n\t\t\tgroupKey,\n\t\t\t{\n\t\t\t\ttype: \"community-gift-anonymous\",\n\t\t\t\ttier,\n\t\t\t\ttierText,\n\t\t\t\ttotalAmount,\n\t\t\t\trecipients,\n\t\t\t\tanonymousDisplayName: purchase?.anonymousDisplayName,\n\t\t\t},\n\t\t\tcacheSubs,\n\t\t\tonNormalized,\n\t\t);\n\t} else {\n\t\temitAggregated(\n\t\t\tgroupKey,\n\t\t\t{\n\t\t\t\ttype: \"community-gift\",\n\t\t\t\tsender,\n\t\t\t\ttier,\n\t\t\t\ttierText,\n\t\t\t\ttotalAmount,\n\t\t\t\trecipients,\n\t\t\t},\n\t\t\tcacheSubs,\n\t\t\tonNormalized,\n\t\t);\n\t}\n}\n\n/**\n * Normalizes an incoming subscription event (StreamElements/Twitch).\n * Buffers community-gift recipients by activityGroup, then emits one normalized event per group.\n * For self-sub, solo-sub, sub-renewal emits immediately (with optional cache dedup).\n */\nexport function aggregateIncomingEvent(\n\tdetail: IncomingDetail,\n\toptions: AggregatorOptions | undefined,\n\tonNormalized: (event: ClassifiedEvent | null) => void,\n): void {\n\tconst cacheSubs = options?.cacheSubs;\n\tconst broadcaster = options?.broadcasterLogin ?? \"\";\n\n\tconst classified = classifyEvent(detail);\n\tif (!classified) {\n\t\tonNormalized(null);\n\t\treturn;\n\t}\n\n\tconst cacheKey = getCacheKey(detail);\n\tconst event = detail.event ?? {};\n\tconst data = (event.data ?? event) as Record<string, unknown>;\n\n\tif ((classified as AggregatedRecipient)._role === \"recipient\") {\n\t\tconst recipient = classified as AggregatedRecipient;\n\t\tconst ag = recipient.activityGroup ?? cacheKey;\n\t\tif (!bufferByGroup[ag]) {\n\t\t\tbufferByGroup[ag] = {\n\t\t\t\ttype: recipient.type,\n\t\t\t\tsubscribers: [],\n\t\t\t\ttier: recipient.tier,\n\t\t\t\ttierText: recipient.tierText,\n\t\t\t\ttotalAmount: 0,\n\t\t\t};\n\t\t}\n\t\tif (bufferTimers[ag]) clearTimeout(bufferTimers[ag]);\n\t\tbufferTimers[ag] = setTimeout(() => {\n\t\t\tflushBuffer(ag, cacheSubs, onNormalized, broadcaster);\n\t\t}, AGGREGATE_TIMEOUT_MS);\n\t\tbufferByGroup[ag].subscribers.push({\n\t\t\trecipient: recipient.recipient,\n\t\t\tusername: data.username as string,\n\t\t\tname: data.displayName as string,\n\t\t\tsender: data.sender as string,\n\t\t});\n\t\tif (bufferByGroup[ag].totalAmount === 0) bufferByGroup[ag].totalAmount = 1;\n\t\treturn;\n\t}\n\n\tif (\n\t\tclassified.type === \"community-gift-anonymous\" ||\n\t\tclassified.type === \"community-gift\"\n\t) {\n\t\tconst isPurchase =\n\t\t\tdetail.listener === \"event\" && event.type === \"communityGiftPurchase\";\n\t\tif (isPurchase) {\n\t\t\tconst ag = (event.activityGroup ??\n\t\t\t\tdata?.activityGroup ??\n\t\t\t\tcacheKey) as string;\n\t\t\tconst cg = classified as AggregatedCommunityGift;\n\t\t\tif (!bufferByGroup[ag]) {\n\t\t\t\tbufferByGroup[ag] = {\n\t\t\t\t\ttype: cg.type,\n\t\t\t\t\tpurchase: cg,\n\t\t\t\t\tsubscribers: [],\n\t\t\t\t\ttier: cg.tier,\n\t\t\t\t\ttierText: cg.tierText,\n\t\t\t\t\ttotalAmount: Number(cg.totalAmount) || 0,\n\t\t\t\t\tsender: cg.sender,\n\t\t\t\t};\n\t\t\t\tbufferTimers[ag] = setTimeout(() => {\n\t\t\t\t\tflushBuffer(ag, cacheSubs, onNormalized, broadcaster);\n\t\t\t\t}, AGGREGATE_TIMEOUT_MS);\n\t\t\t} else {\n\t\t\t\tbufferByGroup[ag].purchase = cg;\n\t\t\t\tbufferByGroup[ag].tier = cg.tier;\n\t\t\t\tbufferByGroup[ag].tierText = cg.tierText;\n\t\t\t\tbufferByGroup[ag].totalAmount =\n\t\t\t\t\t(cg.totalAmount as number) ?? bufferByGroup[ag].totalAmount;\n\t\t\t\tbufferByGroup[ag].sender = cg.sender as string;\n\t\t\t\tif (bufferTimers[ag]) clearTimeout(bufferTimers[ag]);\n\t\t\t\tbufferTimers[ag] = setTimeout(() => {\n\t\t\t\t\tflushBuffer(ag, cacheSubs, onNormalized, broadcaster);\n\t\t\t\t}, AGGREGATE_TIMEOUT_MS);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (detail.listener === \"subscriber-latest\") {\n\t\t\tconst c = classified as AggregatedCommunityGift;\n\t\t\tif (\n\t\t\t\tclassified.type === \"community-gift\" &&\n\t\t\t\tbroadcaster &&\n\t\t\t\tc.sender === broadcaster\n\t\t\t) {\n\t\t\t\tonNormalized(null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\treturn;\n\t}\n}\n\nexport * from \"./types.js\";\n","export default {\n\tsession: {\n\t\tdata: {\n\t\t\t\"follower-latest\": {\n\t\t\t\tname: \"imacanadiannn\",\n\t\t\t},\n\t\t\t\"follower-session\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"follower-week\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"follower-month\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"follower-goal\": {\n\t\t\t\tamount: 137,\n\t\t\t},\n\t\t\t\"follower-total\": {\n\t\t\t\tcount: 118,\n\t\t\t\tactivityId: \"\",\n\t\t\t\tsessionTop: false,\n\t\t\t},\n\t\t\t\"subscriber-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\ttier: \"\",\n\t\t\t\tmessage: \"\",\n\t\t\t},\n\t\t\t\"subscriber-new-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\tmessage: \"\",\n\t\t\t},\n\t\t\t\"subscriber-resub-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\tmessage: \"\",\n\t\t\t},\n\t\t\t\"subscriber-gifted-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\tmessage: \"\",\n\t\t\t\ttier: \"\",\n\t\t\t\tsender: \"\",\n\t\t\t},\n\t\t\t\"subscriber-session\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-new-session\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-resub-session\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-gifted-session\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-week\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-month\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"subscriber-goal\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"subscriber-total\": {\n\t\t\t\tcount: 0,\n\t\t\t\tactivityId: \"\",\n\t\t\t\tsessionTop: false,\n\t\t\t},\n\t\t\t\"subscriber-points\": {\n\t\t\t\tamount: 0,\n\t\t\t\tactivityId: \"\",\n\t\t\t\tsessionTop: false,\n\t\t\t},\n\t\t\t\"subscriber-alltime-gifter\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"host-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"raid-latest\": {\n\t\t\t\tname: \"agnascor2\",\n\t\t\t\tamount: 6,\n\t\t\t},\n\t\t\t\"cheer-session\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-week\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-month\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-total\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-count\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"cheer-goal\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheer-session-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-weekly-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-monthly-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-alltime-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-session-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-weekly-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-monthly-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheer-alltime-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"tip-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-session-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"tip-weekly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-monthly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-alltime-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-session-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"tip-weekly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-monthly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-alltime-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-session\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-week\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-month\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-total\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"tip-count\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"tip-goal\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"merch-goal-orders\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"merch-goal-items\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"merch-goal-total\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"merch-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\titems: [],\n\t\t\t},\n\t\t\t\"charityCampaignDonation-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-weekly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-monthly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-alltime-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-weekly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-monthly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"charityCampaignDonation-alltime-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-weekly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-monthly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-alltime-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-weekly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-monthly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"cheerPurchase-alltime-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-weekly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-monthly-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-alltime-top-donation\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-weekly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-monthly-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-alltime-top-donator\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-session\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-week\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-month\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-total\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-count\": {\n\t\t\t\tcount: 0,\n\t\t\t},\n\t\t\t\"superchat-goal\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"purchase-latest\": {\n\t\t\t\tname: \"\",\n\t\t\t\tamount: 0,\n\t\t\t\tavatar: \"\",\n\t\t\t\tmessage: \"\",\n\t\t\t\titems: [],\n\t\t\t},\n\t\t\t\"follower-recent\": [\n\t\t\t\t{\n\t\t\t\t\tname: \"imacanadiannn\",\n\t\t\t\t\tcreatedAt: \"2026-01-13T01:53:50.296Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"piwo143\",\n\t\t\t\t\tcreatedAt: \"2026-01-13T01:51:39.472Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"latvan_\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T23:54:29.235Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"wheinwait\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T23:11:28.946Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"agnascor2\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T23:11:14.880Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"sunlitetuts\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T21:03:59.207Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"ayanamya\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T20:00:55.509Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"hopeless28\",\n\t\t\t\t\tcreatedAt: \"2026-01-12T18:35:21.731Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"kakoytoclown\",\n\t\t\t\t\tcreatedAt: \"2026-01-11T18:39:36.843Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"dababe__jq1\",\n\t\t\t\t\tcreatedAt: \"2024-10-10T23:27:49.699Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"jjjllkmf\",\n\t\t\t\t\tcreatedAt: \"2024-05-05T09:44:16.287Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"d4c_valintine\",\n\t\t\t\t\tcreatedAt: \"2024-05-03T15:13:28.365Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"angelbliss_\",\n\t\t\t\t\tcreatedAt: \"2024-04-30T20:07:23.132Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"o1zich\",\n\t\t\t\t\tcreatedAt: \"2024-04-22T16:23:26.139Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"nearbuziky\",\n\t\t\t\t\tcreatedAt: \"2024-04-19T19:21:27.569Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"samirkasamsa\",\n\t\t\t\t\tcreatedAt: \"2024-04-19T17:06:38.963Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"flip1mip\",\n\t\t\t\t\tcreatedAt: \"2024-04-19T17:06:18.276Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"valerie_solo\",\n\t\t\t\t\tcreatedAt: \"2024-04-19T17:06:07.473Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"sxaelence\",\n\t\t\t\t\tcreatedAt: \"2024-04-19T07:06:46.330Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"avokadik99\",\n\t\t\t\t\tcreatedAt: \"2024-04-17T16:11:29.604Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"blackvoronstream\",\n\t\t\t\t\tcreatedAt: \"2024-04-16T21:29:33.306Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"baldejniyy\",\n\t\t\t\t\tcreatedAt: \"2024-04-16T21:29:09.647Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"p3ch4n_ka\",\n\t\t\t\t\tcreatedAt: \"2024-04-16T16:37:31.841Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"kakosik_bee\",\n\t\t\t\t\tcreatedAt: \"2024-04-16T15:56:27.435Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"hikotoru\",\n\t\t\t\t\tcreatedAt: \"2024-04-16T15:13:25.226Z\",\n\t\t\t\t\ttype: \"follower\",\n\t\t\t\t},\n\t\t\t],\n\t\t\t\"subscriber-recent\": [],\n\t\t\t\"host-recent\": [],\n\t\t\t\"raid-recent\": [\n\t\t\t\t{\n\t\t\t\t\tname: \"agnascor2\",\n\t\t\t\t\tamount: 6,\n\t\t\t\t\tcreatedAt: \"2026-01-12T23:08:21.815Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"justduckomgg\",\n\t\t\t\t\tamount: 7,\n\t\t\t\t\tcreatedAt: \"2024-04-19T17:05:53.185Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"veessmk\",\n\t\t\t\t\tamount: 6,\n\t\t\t\t\tcreatedAt: \"2024-04-17T15:40:43.945Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"night_sculptor\",\n\t\t\t\t\tamount: 12,\n\t\t\t\t\tcreatedAt: \"2024-04-16T18:07:40.040Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pixiemays\",\n\t\t\t\t\tamount: 6,\n\t\t\t\t\tcreatedAt: \"2024-04-16T16:37:24.433Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"night_sculptor\",\n\t\t\t\t\tamount: 8,\n\t\t\t\t\tcreatedAt: \"2024-04-14T18:31:20.049Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pixiemays\",\n\t\t\t\t\tamount: 19,\n\t\t\t\t\tcreatedAt: \"2024-04-14T13:22:05.794Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pixiemays\",\n\t\t\t\t\tamount: 15,\n\t\t\t\t\tcreatedAt: \"2024-04-12T17:03:36.115Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"alechkavt\",\n\t\t\t\t\tamount: 9,\n\t\t\t\t\tcreatedAt: \"2024-04-11T17:54:47.691Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pixiemays\",\n\t\t\t\t\tamount: 8,\n\t\t\t\t\tcreatedAt: \"2024-04-11T14:10:49.548Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"night_sculptor\",\n\t\t\t\t\tamount: 22,\n\t\t\t\t\tcreatedAt: \"2024-04-09T16:13:41.195Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"pixiemays\",\n\t\t\t\t\tamount: 5,\n\t\t\t\t\tcreatedAt: \"2024-04-08T09:54:01.603Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"aki_neki\",\n\t\t\t\t\tamount: 5,\n\t\t\t\t\tcreatedAt: \"2024-04-07T21:52:45.919Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"alechkavt\",\n\t\t\t\t\tamount: 11,\n\t\t\t\t\tcreatedAt: \"2024-04-07T18:59:39.286Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"veessmk\",\n\t\t\t\t\tamount: 15,\n\t\t\t\t\tcreatedAt: \"2024-04-07T16:13:25.172Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"veessmk\",\n\t\t\t\t\tamount: 10,\n\t\t\t\t\tcreatedAt: \"2024-03-17T16:11:38.631Z\",\n\t\t\t\t\ttype: \"raid\",\n\t\t\t\t},\n\t\t\t],\n\t\t\t\"charityCampaignDonation-recent\": [],\n\t\t\t\"cheer-recent\": [],\n\t\t\t\"cheerPurchase-recent\": [],\n\t\t\t\"superchat-recent\": [],\n\t\t\t\"tip-recent\": [],\n\t\t\t\"merch-recent\": [],\n\t\t\t\"channel-points-latest\": {\n\t\t\t\tamount: 0,\n\t\t\t\tmessage: \"\",\n\t\t\t\tname: \"\",\n\t\t\t\tredemption: \"\",\n\t\t\t},\n\t\t\t\"community-gift-latest\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t\ttier: \"\",\n\t\t\t},\n\t\t\t\"charityCampaignDonation-session-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"charityCampaignDonation-session-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheerPurchase-session-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"cheerPurchase-session-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"hypetrain-latest\": {\n\t\t\t\tactive: 0,\n\t\t\t\tamount: 0,\n\t\t\t\tlevel: 0,\n\t\t\t\tlevelChanged: 0,\n\t\t\t\tname: \"\",\n\t\t\t\ttype: \"\",\n\t\t\t},\n\t\t\t\"hypetrain-latest-top-contributors\": [],\n\t\t\t\"hypetrain-level-goal\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"hypetrain-level-progress\": {\n\t\t\t\tamount: 0,\n\t\t\t\tpercent: 0,\n\t\t\t},\n\t\t\t\"hypetrain-total\": {\n\t\t\t\tamount: 0,\n\t\t\t},\n\t\t\t\"superchat-session-top-donation\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t\t\"superchat-session-top-donator\": {\n\t\t\t\tamount: 0,\n\t\t\t\tname: \"\",\n\t\t\t},\n\t\t},\n\t\tsettings: {\n\t\t\tautoReset: true,\n\t\t\tcalendar: false,\n\t\t\tresetOnStart: false,\n\t\t},\n\t},\n\trecents: [\n\t\t{\n\t\t\tname: \"imacanadiannn\",\n\t\t\tcreatedAt: \"2026-01-13T01:53:50.296Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"piwo143\",\n\t\t\tcreatedAt: \"2026-01-13T01:51:39.472Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"latvan_\",\n\t\t\tcreatedAt: \"2026-01-12T23:54:29.235Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"wheinwait\",\n\t\t\tcreatedAt: \"2026-01-12T23:11:28.946Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"agnascor2\",\n\t\t\tcreatedAt: \"2026-01-12T23:11:14.880Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"sunlitetuts\",\n\t\t\tcreatedAt: \"2026-01-12T21:03:59.207Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"ayanamya\",\n\t\t\tcreatedAt: \"2026-01-12T20:00:55.509Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"hopeless28\",\n\t\t\tcreatedAt: \"2026-01-12T18:35:21.731Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"kakoytoclown\",\n\t\t\tcreatedAt: \"2026-01-11T18:39:36.843Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"dababe__jq1\",\n\t\t\tcreatedAt: \"2024-10-10T23:27:49.699Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"jjjllkmf\",\n\t\t\tcreatedAt: \"2024-05-05T09:44:16.287Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"d4c_valintine\",\n\t\t\tcreatedAt: \"2024-05-03T15:13:28.365Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"angelbliss_\",\n\t\t\tcreatedAt: \"2024-04-30T20:07:23.132Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"o1zich\",\n\t\t\tcreatedAt: \"2024-04-22T16:23:26.139Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"nearbuziky\",\n\t\t\tcreatedAt: \"2024-04-19T19:21:27.569Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"samirkasamsa\",\n\t\t\tcreatedAt: \"2024-04-19T17:06:38.963Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"flip1mip\",\n\t\t\tcreatedAt: \"2024-04-19T17:06:18.276Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"valerie_solo\",\n\t\t\tcreatedAt: \"2024-04-19T17:06:07.473Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"sxaelence\",\n\t\t\tcreatedAt: \"2024-04-19T07:06:46.330Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"avokadik99\",\n\t\t\tcreatedAt: \"2024-04-17T16:11:29.604Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"blackvoronstream\",\n\t\t\tcreatedAt: \"2024-04-16T21:29:33.306Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"baldejniyy\",\n\t\t\tcreatedAt: \"2024-04-16T21:29:09.647Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"p3ch4n_ka\",\n\t\t\tcreatedAt: \"2024-04-16T16:37:31.841Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"kakosik_bee\",\n\t\t\tcreatedAt: \"2024-04-16T15:56:27.435Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"hikotoru\",\n\t\t\tcreatedAt: \"2024-04-16T15:13:25.226Z\",\n\t\t\ttype: \"follower\",\n\t\t},\n\t\t{\n\t\t\tname: \"agnascor2\",\n\t\t\tamount: 6,\n\t\t\tcreatedAt: \"2026-01-12T23:08:21.815Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"justduckomgg\",\n\t\t\tamount: 7,\n\t\t\tcreatedAt: \"2024-04-19T17:05:53.185Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"veessmk\",\n\t\t\tamount: 6,\n\t\t\tcreatedAt: \"2024-04-17T15:40:43.945Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"night_sculptor\",\n\t\t\tamount: 12,\n\t\t\tcreatedAt: \"2024-04-16T18:07:40.040Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"pixiemays\",\n\t\t\tamount: 6,\n\t\t\tcreatedAt: \"2024-04-16T16:37:24.433Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"night_sculptor\",\n\t\t\tamount: 8,\n\t\t\tcreatedAt: \"2024-04-14T18:31:20.049Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"pixiemays\",\n\t\t\tamount: 19,\n\t\t\tcreatedAt: \"2024-04-14T13:22:05.794Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"pixiemays\",\n\t\t\tamount: 15,\n\t\t\tcreatedAt: \"2024-04-12T17:03:36.115Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"alechkavt\",\n\t\t\tamount: 9,\n\t\t\tcreatedAt: \"2024-04-11T17:54:47.691Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"pixiemays\",\n\t\t\tamount: 8,\n\t\t\tcreatedAt: \"2024-04-11T14:10:49.548Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"night_sculptor\",\n\t\t\tamount: 22,\n\t\t\tcreatedAt: \"2024-04-09T16:13:41.195Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"pixiemays\",\n\t\t\tamount: 5,\n\t\t\tcreatedAt: \"2024-04-08T09:54:01.603Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"aki_neki\",\n\t\t\tamount: 5,\n\t\t\tcreatedAt: \"2024-04-07T21:52:45.919Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"alechkavt\",\n\t\t\tamount: 11,\n\t\t\tcreatedAt: \"2024-04-07T18:59:39.286Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"veessmk\",\n\t\t\tamount: 15,\n\t\t\tcreatedAt: \"2024-04-07T16:13:25.172Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t\t{\n\t\t\tname: \"veessmk\",\n\t\t\tamount: 10,\n\t\t\tcreatedAt: \"2024-03-17T16:11:38.631Z\",\n\t\t\ttype: \"raid\",\n\t\t},\n\t],\n\tcurrency: {\n\t\tcode: \"USD\",\n\t\tname: \"U.S. Dollar\",\n\t\tsymbol: \"$\",\n\t},\n\tchannel: {\n\t\tusername: \"encry_s\",\n\t\tapiToken: \"HAHANOTNOW\",\n\t\tid: \"65ba7503dc0415cb368947b1\",\n\t\tproviderId: \"485678132\",\n\t\tavatar:\n\t\t\t\"https://static-cdn.jtvnw.net/jtv_user_pictures/6fe93724-803a-4e5a-b58a-1d42fbc84661-profile_image-300x300.jpeg\",\n\t},\n\tfieldData: {\n\t\ttestMessageButton: \"zaytri_dynamicchatbubbles\",\n\t\tpreviewMode: false,\n\t\tpreviewType: \"random\",\n\t\tpreviewMessage: \"\",\n\t\ttheme: \"animal-crossing\",\n\t\tcorner: \"round\",\n\t\tdarkMode: false,\n\t\thighlightStyle: \"normal\",\n\t\tactionStyle: \"italics\",\n\t\tmaxWidth: 400,\n\t\tmaxHeight: 300,\n\t\tfixedWidth: false,\n\t\tpositionMode: \"list\",\n\t\tlistDirection: \"bottom\",\n\t\tlistAlignment: \"center\",\n\t\ttopEdge: true,\n\t\tbottomEdge: true,\n\t\tleftEdge: true,\n\t\trightEdge: true,\n\t\tedgeDeviation: 0,\n\t\tpadding: 30,\n\t\tanimation: \"dynamic\",\n\t\tdynamicModifier: 1.75,\n\t\tmaxMessages: 25,\n\t\thideOutOfBounds: true,\n\t\tlifetime: 0,\n\t\tdelay: 1,\n\t\tgoogleFont: \"Nunito\",\n\t\tcustomFont: \"\",\n\t\tfontSize: 18,\n\t\tfontWeight: \"bold\",\n\t\ttextDirection: \"ltr\",\n\t\tuseCustomBorderColors: true,\n\t\tborderColor: \"#fed400\",\n\t\tnameColor: \"#000000\",\n\t\tuseCustomMessageColors: true,\n\t\tbackgroundColor: \"#fff3c0\",\n\t\ttextColor: \"#000000\",\n\t\tpronounsMode: \"suffix\",\n\t\tpronounsLowercase: true,\n\t\tpronounsBadgeCustomColors: false,\n\t\tpronounsBadgeBackgroundColor: \"#000000\",\n\t\tpronounsBadgeBorderColor: \"#FFFFFF\",\n\t\tpronounsBadgeTextColor: \"#FFFFFF\",\n\t\tshowBadges: true,\n\t\tlargeEmotes: true,\n\t\tffzGlobal: false,\n\t\tbttvGlobal: false,\n\t\temoteOnly: false,\n\t\thighlightOnly: false,\n\t\tallowedStrings: [],\n\t\tminMessages: 0,\n\t\tmessageCooldown: 0,\n\t\traidCooldown: 0,\n\t\traidMin: 0,\n\t\tincludeEveryone: true,\n\t\tincludeFollowers: \"true\",\n\t\tminFollowTime: 1,\n\t\tincludeSubs: true,\n\t\tincludeVIPs: true,\n\t\tincludeMods: true,\n\t\tallowUserList: [],\n\t\tignoreUserList: [\"StreamElements\", \"Streamlabs\", \"Nightbot\", \"Sery_Bot\"],\n\t\tignorePrefixList: [\"!\"],\n\t\tvolume: 50,\n\t\tsoundGroup1: [],\n\t\tuserLevelSoundGroup1: \"everyone\",\n\t\tspecificUsersSoundGroup1: [],\n\t\tmessageTypeSoundGroup1: \"all\",\n\t\tsoundGroup2: [],\n\t\tuserLevelSoundGroup2: \"everyone\",\n\t\tspecificUsersSoundGroup2: [],\n\t\tmessageTypeSoundGroup2: \"all\",\n\t\tsoundGroup3: [],\n\t\tuserLevelSoundGroup3: \"everyone\",\n\t\tspecificUsersSoundGroup3: [],\n\t\tmessageTypeSoundGroup3: \"all\",\n\t\tsoundGroup4: [],\n\t\tuserLevelSoundGroup4: \"everyone\",\n\t\tspecificUsersSoundGroup4: [],\n\t\tmessageTypeSoundGroup4: \"all\",\n\t\tsoundGroup5: [],\n\t\tuserLevelSoundGroup5: \"everyone\",\n\t\tspecificUsersSoundGroup5: [],\n\t\tmessageTypeSoundGroup5: \"all\",\n\t\tsoundGroup6: [],\n\t\tuserLevelSoundGroup6: \"everyone\",\n\t\tspecificUsersSoundGroup6: [],\n\t\tmessageTypeSoundGroup6: \"all\",\n\t\tsoundGroup7: [],\n\t\tuserLevelSoundGroup7: \"everyone\",\n\t\tspecificUsersSoundGroup7: [],\n\t\tmessageTypeSoundGroup7: \"all\",\n\t\tsoundGroup8: [],\n\t\tuserLevelSoundGroup8: \"everyone\",\n\t\tspecificUsersSoundGroup8: [],\n\t\tmessageTypeSoundGroup8: \"all\",\n\t\tsoundGroup9: [],\n\t\tuserLevelSoundGroup9: \"everyone\",\n\t\tspecificUsersSoundGroup9: [],\n\t\tmessageTypeSoundGroup9: \"all\",\n\t\tsoundGroup10: [],\n\t\tuserLevelSoundGroup10: \"everyone\",\n\t\tspecificUsersSoundGroup10: [],\n\t\tmessageTypeSoundGroup10: \"all\",\n\t\twidgetName: \"Chat Bubbles\",\n\t\twidgetAuthor: \"Zaytri\",\n\t\twidgetVersion: \"2.12.0\",\n\t\twidgetUpdateUrl:\n\t\t\t\"https://github.com/zaytri/stream-elements-widgets/blob/main/DynamicChatBubbles\",\n\t\tignoreFirst: true,\n\t},\n\toverlay: {\n\t\tisEditorMode: true,\n\t\tmuted: false,\n\t},\n};\n","export const testAlerts = {\n\tfollower: {\n\t\tlistener: \"follower-latest\",\n\t\tevent: {\n\t\t\tname: \"An1by\",\n\t\t},\n\t},\n\tcommunityGiftAnonymous: {\n\t\tlistener: \"event\",\n\t\tevent: {\n\t\t\ttype: \"communityGiftPurchase\",\n\t\t\tprovider: \"twitch\",\n\t\t\tchannel: \"663b10ba6cd449c4162a2230\",\n\t\t\tactivityGroup: \"41a50a915794e4ae7cf5e600fd3445d4\",\n\t\t\tdata: {\n\t\t\t\tamount: 2,\n\t\t\t\tusername: \"anonymous\",\n\t\t\t\tdisplayName: \"AnAnonymousGifter\",\n\t\t\t\ttier: \"2000\",\n\t\t\t\tsender: \"Anonymous\",\n\t\t\t},\n\t\t\t_id: \"699868d7df734989ec85d393\",\n\t\t\tactivityId: \"699868d7df734989ec85d393\",\n\t\t},\n\t},\n\tcommunityGift: {\n\t\tlistener: \"event\",\n\t\tevent: {\n\t\t\ttype: \"communityGiftPurchase\",\n\t\t\tprovider: \"twitch\",\n\t\t\tchannel: \"663b10ba6cd449c4162a2230\",\n\t\t\tactivityGroup: \"841592c0bccbf3e1e7de71e1c8f4d9f0\",\n\t\t\tdata: {\n\t\t\t\tamount: 1,\n\t\t\t\tusername: \"rishamon\",\n\t\t\t\tdisplayName: \"rishamon\",\n\t\t\t\ttier: \"1000\",\n\t\t\t\tsender: \"rishamon\",\n\t\t\t},\n\t\t\t_id: \"699867c7fef23197a6a089f5\",\n\t\t\tactivityId: \"699867c7fef23197a6a089f5\",\n\t\t},\n\t},\n\tsub: {\n\t\tlistener: \"subscriber-latest\",\n\t\tevent: {\n\t\t\tname: \"An1by\",\n\t\t\tamount: 1,\n\t\t},\n\t},\n\tselfSub: {\n\t\tlistener: \"event\",\n\t\tevent: {\n\t\t\ttype: \"subscriber\",\n\t\t\tprovider: \"twitch\",\n\t\t\tchannel: \"663b10ba6cd449c4162a2230\",\n\t\t\tdata: {\n\t\t\t\tamount: 1,\n\t\t\t\tusername: \"rishamon\",\n\t\t\t\tdisplayName: \"rishamon\",\n\t\t\t\ttier: \"1000\",\n\t\t\t},\n\t\t\t_id: \"6998676317aed69e62b8f283\",\n\t\t\tactivityId: \"6998676317aed69e62b8f283\",\n\t\t},\n\t},\n\tsoloSubToSomeone: {\n\t\tlistener: \"event\",\n\t\tevent: {\n\t\t\ttype: \"subscriber\",\n\t\t\tprovider: \"twitch\",\n\t\t\tchannel: \"663b10ba6cd449c4162a2230\",\n\t\t\tdata: {\n\t\t\t\tamount: 1,\n\t\t\t\tusername: \"encry_s\",\n\t\t\t\tdisplayName: \"encry_s\",\n\t\t\t\tmessage:\n\t\t\t\t\t\"rishamon gifted a Tier 1 sub to encry_s! This is their first Gift Sub in the channel!\",\n\t\t\t\ttier: \"1000\",\n\t\t\t\tsender: \"rishamon\",\n\t\t\t\tgifted: true,\n\t\t\t},\n\t\t\t_id: \"699866e82d9cd9a70854baf2\",\n\t\t\tactivityId: \"699866e82d9cd9a70854baf2\",\n\t\t},\n\t},\n\tsubRenewal: {\n\t\tlistener: \"event\",\n\t\tevent: {\n\t\t\ttype: \"subscriber\",\n\t\t\tprovider: \"twitch\",\n\t\t\tchannel: \"663b10ba6cd449c4162a2230\",\n\t\t\tdata: {\n\t\t\t\tamount: 8,\n\t\t\t\tusername: \"silgestian\",\n\t\t\t\tdisplayName: \"SilgeStian\",\n\t\t\t\ttier: \"1000\",\n\t\t\t},\n\t\t\t_id: \"69986dfaf25724ff4162bd1a\",\n\t\t\tactivityId: \"69986dfaf25724ff4162bd1a\",\n\t\t},\n\t},\n\tbits: {\n\t\tlistener: \"cheer-latest\",\n\t\tevent: {\n\t\t\tname: \"An1by\",\n\t\t\tamount: 30,\n\t\t},\n\t},\n\traid: {\n\t\tlistener: \"raid-latest\",\n\t\tevent: {\n\t\t\tname: \"An1by\",\n\t\t\tamount: 50,\n\t\t},\n\t},\n\tdonationShortText: {\n\t\tlistener: \"donation\",\n\t\tevent: {\n\t\t\tdata: {\n\t\t\t\talert_type: \"1\",\n\t\t\t\tcurrency: \"RUB\",\n\t\t\t\tbilling_system: \"CARD\",\n\t\t\t\tid: 5,\n\t\t\t\tamount_main: 500,\n\t\t\t\tamount: 500,\n\t\t\t\tusername: \"An1by\",\n\t\t\t\tmessage: \"Simple message text\",\n\t\t\t},\n\t\t},\n\t},\n\tdonationLongText: {\n\t\tlistener: \"donation\",\n\t\tevent: {\n\t\t\tdata: {\n\t\t\t\talert_type: \"1\",\n\t\t\t\tcurrency: \"RUB\",\n\t\t\t\tbilling_system: \"CARD\",\n\t\t\t\tid: 5,\n\t\t\t\tamount_main: 500,\n\t\t\t\tamount: 500,\n\t\t\t\tusername: \"An1by\",\n\t\t\t\tmessage:\n\t\t\t\t\t\"A plain gray stone lay on the shore, basking in the sun's warmth. A shove broke its peace—a thoughtless toss sent it flying. The stone splashed into water. Ripples spread, yet none noticed. It sank to the bottom, heavy with loneliness. \\\"Didn't I deserve to stay where I was happy still?\\\" it wondered.\",\n\t\t\t},\n\t\t},\n\t},\n\tdonation: {\n\t\tlistener: \"donation\",\n\t\tevent: {\n\t\t\tdata: {\n\t\t\t\talert_type: \"1\",\n\t\t\t\tcurrency: \"RUB\",\n\t\t\t\tbilling_system: \"CARD\",\n\t\t\t\tid: 5,\n\t\t\t\tamount_main: 500,\n\t\t\t\tamount: 500,\n\t\t\t\tusername: \"An1by\",\n\t\t\t\tmessage: \"\",\n\t\t\t},\n\t\t},\n\t},\n};\n","export const testMessages = {\n\tzeroWidthEmotesInRow: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1768317417111,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/23\",\n\t\t\t\t\tbadges: \"broadcaster/1,subscriber/0\",\n\t\t\t\t\t\"client-nonce\": \"f70c4cd8b6034d1f805298246ee1bc35\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"5f752ae3-4be9-4f93-82d1-d78575ba07fd\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1768317416862\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"Censored Censored Censored emotes in row\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 8,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 9,\n\t\t\t\t\t\tend: 17,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 18,\n\t\t\t\t\t\tend: 26,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"5f752ae3-4be9-4f93-82d1-d78575ba07fd\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\">emotes in row',\n\t\t},\n\t},\n\tzeroWidthEmoteInMiddle: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1768317383248,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/23\",\n\t\t\t\t\tbadges: \"broadcaster/1,subscriber/0\",\n\t\t\t\t\t\"client-nonce\": \"847f9c27722340d090eddcb0d0662b5b\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3dea1e1e-89f7-4a5f-b743-13ba0386492f\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1768317382987\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"text and Censored emote\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 9,\n\t\t\t\t\t\tend: 17,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"3dea1e1e-89f7-4a5f-b743-13ba0386492f\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'text and <img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\">emote',\n\t\t},\n\t},\n\tzeroWidthEmoteFirst: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1768317236883,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/23\",\n\t\t\t\t\tbadges: \"broadcaster/1,subscriber/0\",\n\t\t\t\t\t\"client-nonce\": \"e9d0621827184c1b940fd700ae599d60\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"6f347337-354a-42e5-bab0-935e19d74152\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1768317236625\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"Censored <- zeroWidth emote on the first place\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 8,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"6f347337-354a-42e5-bab0-935e19d74152\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\"><- zeroWidth emote on the first place',\n\t\t},\n\t},\n\tveryShort: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743750546,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\t\"client-nonce\": \"a3fe71a5771d0c31466dd333c963231e\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743749437\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"IHaveVeryBigNickname\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"IHaveVeryBigNickname\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"IHaveVeryBigNickname\",\n\t\t\t\ttext: \"A!\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t},\n\t\t\trenderedText: \"A!\",\n\t\t},\n\t},\n\tviewer: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743750546,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\t\"client-nonce\": \"a3fe71a5771d0c31466dd333c963231e\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743749437\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"SimpleViewer\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"SimpleViewer\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"SimpleViewer\",\n\t\t\t\ttext: \"I finally finished it...\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t},\n\t\t\trenderedText: \"I finally finished it...\",\n\t\t},\n\t},\n\tvip: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743844261,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"vip/1\",\n\t\t\t\t\t\"client-nonce\": \"fd72ba163a9cc1a6486b2eddb0f5d893\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"51cac44b-9908-49d2-b424-489276e1e521\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743843170\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t\tvip: \"1\",\n\t\t\t\t},\n\t\t\t\tnick: \"VipPersona\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"VipPersona\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"vip\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3\",\n\t\t\t\t\t\tdescription: \"VIP\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"VipPersona\",\n\t\t\t\ttext: \"I am a VIP persona!\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"51cac44b-9908-49d2-b424-489276e1e521\",\n\t\t\t},\n\t\t\trenderedText: \"I am a VIP persona!\",\n\t\t},\n\t},\n\tvipLong: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743844261,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"vip/1\",\n\t\t\t\t\t\"client-nonce\": \"fd72ba163a9cc1a6486b2eddb0f5d893\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"51cac44b-9908-49d2-b424-489276e1e521\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743843170\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t\tvip: \"1\",\n\t\t\t\t},\n\t\t\t\tnick: \"VipPersona\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"VipPersona\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"vip\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/b817aba4-fad8-49e2-b88a-7cc744dfa6ec/3\",\n\t\t\t\t\t\tdescription: \"VIP\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"VipPersona\",\n\t\t\t\ttext: \"I am a VIP persona! Are you see this?\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"51cac44b-9908-49d2-b424-489276e1e521\",\n\t\t\t},\n\t\t\trenderedText: \"I am a VIP persona! Are you see this?\",\n\t\t},\n\t},\n\tartist: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743916482,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"artist-badge/1\",\n\t\t\t\t\t\"client-nonce\": \"54128d734d44e28ffc32e1ce236993f5\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"8ee7e71a-3608-486a-bd82-a82b65982ca7\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743915371\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"StarArtist\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"StarArtist\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"artist-badge\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/4300a897-03dc-4e83-8c0e-c332fee7057f/3\",\n\t\t\t\t\t\tdescription: \"Artist\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"StarArtist\",\n\t\t\t\ttext: \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"8ee7e71a-3608-486a-bd82-a82b65982ca7\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\",\n\t\t},\n\t},\n\tsubscriber: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tdata: {\n\t\t\t\ttags: {\n\t\t\t\t\tbadges: \"subscriber/1\",\n\t\t\t\t\tcolor: \"#ff69b4\",\n\t\t\t\t\tvip: \"0\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"user-id\": \"100135110\",\n\t\t\t\t\t\"user-type\": \"subscriber\",\n\t\t\t\t},\n\t\t\t\tnick: \"YourSub\",\n\t\t\t\tuserId: \"100135110\",\n\t\t\t\tdisplayName: \"YourSub\",\n\t\t\t\tdisplayColor: \"#ff69b4\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"partner\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/d12a2e27-16f6-41d0-ab77-b780518f00a3/3\",\n\t\t\t\t\t\tdescription: \"Verified\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\ttext: \"This is a subscriber's test message. I'm just a subscriber, srsly.\",\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"43285909-412c-4eee-b80d-89f1482ba53142\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t\"This is a subscriber's test message. I'm just a subscriber, srsly.\",\n\t\t},\n\t},\n\tfounder: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743750546,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"founder/1,subscriber/1\",\n\t\t\t\t\t\"client-nonce\": \"a3fe71a5771d0c31466dd333c963231e\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"sub__founder\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743749437\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"sub__founder\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"sub__founder\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"founder\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"I finally finished it...\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"3d0d1a43-45e5-4652-be59-0b31dfeba796\",\n\t\t\t},\n\t\t\trenderedText: \"I finally finished it...\",\n\t\t},\n\t},\n\tmoderator: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743997223,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"moderator/1\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3e7ba532-f181-4bcc-90f1-a3c48ca3c820\",\n\t\t\t\t\tmod: \"1\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743996136\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"mod\",\n\t\t\t\t},\n\t\t\t\tnick: \"mediator\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"mediator\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"moderator\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3\",\n\t\t\t\t\t\tdescription: \"Moderator\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"mediator\",\n\t\t\t\ttext: \"Did someone say... MODERATOR!?\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"3e7ba532-f181-4bcc-90f1-a3c48ca3c820\",\n\t\t\t},\n\t\t\trenderedText: \"Did someone say... MODERATOR!?\",\n\t\t},\n\t},\n\tmoderatorLong: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749743997223,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"moderator/1\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"3e7ba532-f181-4bcc-90f1-a3c48ca3c820\",\n\t\t\t\t\tmod: \"1\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749743996136\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"mod\",\n\t\t\t\t},\n\t\t\t\tnick: \"mediator\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"mediator\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"moderator\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/3267646d-33f0-4b17-b3df-f923a41db1d0/3\",\n\t\t\t\t\t\tdescription: \"Moderator\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"mediator\",\n\t\t\t\ttext: \"Did someone say... MODERATOR!? Yes, I am moderator!\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"3e7ba532-f181-4bcc-90f1-a3c48ca3c820\",\n\t\t\t},\n\t\t\trenderedText: \"Did someone say... MODERATOR!? Yes, I am moderator!\",\n\t\t},\n\t},\n\tbroadcaster: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744800809,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/16\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"6989104421ee14c0a8c216ef1c6bb5ed\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"35a9bea7-076e-4d17-8cb7-7e65c8111b3d\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744799706\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"I made this chat Besplatno\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Besplatno\",\n\t\t\t\t\t\tid: \"01FE70VRT00009TR6M9N941A28\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 17,\n\t\t\t\t\t\tend: 26,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"35a9bea7-076e-4d17-8cb7-7e65c8111b3d\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'I made this chat <img src=\"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp 1x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp 2x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp 4x\" title=\"Besplatno\" class=\"emote\">',\n\t\t},\n\t},\n\tbroadcasterShort: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744800809,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/16\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"6989104421ee14c0a8c216ef1c6bb5ed\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"35a9bea7-076e-4d17-8cb7-7e65c8111b3d\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744799706\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"okak\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"35a9bea7-076e-4d17-8cb7-7e65c8111b3d\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'I made this chat <img src=\"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/1x.webp 1x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/2x.webp 2x, https://cdn.7tv.app/emote/01FE70VRT00009TR6M9N941A28/4x.webp 4x\" title=\"Besplatno\" class=\"emote\">',\n\t\t},\n\t},\n\temoteSolo: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744097330,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"9ab645b9-7c27-4c6f-99fd-f63727ca3700\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744096217\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"tr0l1\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"tr0l1\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"tr0l1\",\n\t\t\t\ttext: \"🤤😮💀👈👉\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"emoji\",\n\t\t\t\t\t\tname: \"1f62e\",\n\t\t\t\t\t\tid: \"1f62e\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://twemoji.maxcdn.com/36x36/1f62e.png\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"emoji\",\n\t\t\t\t\t\tname: \"1f480\",\n\t\t\t\t\t\tid: \"1f480\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://twemoji.maxcdn.com/36x36/1f480.png\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"emoji\",\n\t\t\t\t\t\tname: \"1f448\",\n\t\t\t\t\t\tid: \"1f448\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://twemoji.maxcdn.com/36x36/1f448.png\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"emoji\",\n\t\t\t\t\t\tname: \"1f449\",\n\t\t\t\t\t\tid: \"1f449\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://twemoji.maxcdn.com/36x36/1f449.png\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"9ab645b9-7c27-4c6f-99fd-f63727ca3700\",\n\t\t\t},\n\t\t\trenderedText: \"🤤😮💀👈👉\",\n\t\t},\n\t},\n\temoteOne: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744131183,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes:\n\t\t\t\t\t\t\"41:20-27/245:29-43/28087:45-51/58765:53-63/555555584:65-66/64138:10-18\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"beb957ea-dfbd-4184-82a3-458121f44867\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744130018\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"tr0l1\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"tr0l1\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"tr0l1\",\n\t\t\t\ttext: \"SeemsGood\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"SeemsGood\",\n\t\t\t\t\t\tid: \"64138\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 9,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"beb957ea-dfbd-4184-82a3-458121f44867\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0 4x\" title=\"SeemsGood\" class=\"emote\">',\n\t\t},\n\t},\n\temoteText: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744131183,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"7TVUser\",\n\t\t\t\t\temotes:\n\t\t\t\t\t\t\"41:20-27/245:29-43/28087:45-51/58765:53-63/555555584:65-66/64138:10-18\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"beb957ea-dfbd-4184-82a3-458121f44867\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744130018\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"7TVUser\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"7TVUser\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"7TVUser\",\n\t\t\t\ttext: \"Not emote SeemsGood Kreygasm ResidentSleeper WutFace NotLikeThis <3\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"SeemsGood\",\n\t\t\t\t\t\tid: \"64138\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 10,\n\t\t\t\t\t\tend: 19,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"Kreygasm\",\n\t\t\t\t\t\tid: \"41\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 20,\n\t\t\t\t\t\tend: 28,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"ResidentSleeper\",\n\t\t\t\t\t\tid: \"245\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 29,\n\t\t\t\t\t\tend: 44,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"WutFace\",\n\t\t\t\t\t\tid: \"28087\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 45,\n\t\t\t\t\t\tend: 52,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"NotLikeThis\",\n\t\t\t\t\t\tid: \"58765\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 53,\n\t\t\t\t\t\tend: 64,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"<3\",\n\t\t\t\t\t\tid: \"9\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0\",\n\t\t\t\t\t\t\t\"2\": \"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/2.0\",\n\t\t\t\t\t\t\t\"4\": \"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 65,\n\t\t\t\t\t\tend: 67,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"beb957ea-dfbd-4184-82a3-458121f44867\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'Not emote <img src=\"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/64138/static/dark/3.0 4x\" title=\"SeemsGood\" class=\"emote\"><img src=\"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/41/static/dark/3.0 4x\" title=\"Kreygasm\" class=\"emote\"><img src=\"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/245/static/dark/3.0 4x\" title=\"ResidentSleeper\" class=\"emote\"><img src=\"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/28087/static/dark/3.0 4x\" title=\"WutFace\" class=\"emote\"><img src=\"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/58765/static/dark/3.0 4x\" title=\"NotLikeThis\" class=\"emote\"><img src=\"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/9/static/dark/3.0 4x\" title=\"<3\" class=\"emote\">',\n\t\t},\n\t},\n\tzeroWidthEmotes: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1759956619137,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/20\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\t\"client-nonce\": \"f7b17aea5c07c5c08fd920278fb52b5a\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"7TVUser\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"b44d1c53-1de9-454c-a269-bd8849cbcd2d\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1759956618295\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"7TVUser\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"7TVUser\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"7TVUser\",\n\t\t\t\ttext: \"Zero-width emotes AYAYA PETPET right there!!\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"AYAYA\",\n\t\t\t\t\t\tid: \"01GB32XE6R00018VJGJ4A9BNCV\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 18,\n\t\t\t\t\t\tend: 23,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"PETPET\",\n\t\t\t\t\t\tid: \"01FE3XY508000AA32JP519W2EW\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 24,\n\t\t\t\t\t\tend: 30,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"b44d1c53-1de9-454c-a269-bd8849cbcd2d\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'Zero-width emotes <img src=\"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/1x.webp 1x, https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/2x.webp 2x, https://cdn.7tv.app/emote/01GB32XE6R00018VJGJ4A9BNCV/4x.webp 4x\" title=\"AYAYA\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/1x.webp 1x, https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/2x.webp 2x, https://cdn.7tv.app/emote/01FE3XY508000AA32JP519W2EW/4x.webp 4x\" title=\"PETPET\" class=\"emote\">right there!!',\n\t\t},\n\t},\n\tsevenTv: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1749744413746,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"\",\n\t\t\t\t\tbadges: \"\",\n\t\t\t\t\t\"client-nonce\": \"2bd56e3c058b5a4fc4e46c3e369891e6\",\n\t\t\t\t\tcolor: \"\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"4c71789c-8c02-4e25-a71f-3a7d0ef19a33\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"0\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1749744412641\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"tr0l1\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"tr0l1\",\n\t\t\t\tdisplayColor: \"\",\n\t\t\t\tbadges: [],\n\t\t\t\tchannel: \"tr0l1\",\n\t\t\t\ttext: \"ало ало Инса Каори Hello everyone! Hello everyone! Hello everyone!Hello everyone! Hello everyone! Hello everyone! Hello everyone! Hello everyone!\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"ало\",\n\t\t\t\t\t\tid: \"01F6PRA3N80003BH8AEY9DWKDQ\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 3,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"ало\",\n\t\t\t\t\t\tid: \"01F6PRA3N80003BH8AEY9DWKDQ\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 4,\n\t\t\t\t\t\tend: 7,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Инса\",\n\t\t\t\t\t\tid: \"01JRE4VRRXWF0922HA3F9BZG6M\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 8,\n\t\t\t\t\t\tend: 12,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Каори\",\n\t\t\t\t\t\tid: \"01GY6TCEFG000BGHWA5T6NGBRA\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 13,\n\t\t\t\t\t\tend: 18,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"4c71789c-8c02-4e25-a71f-3a7d0ef19a33\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp 1x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp 2x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp 4x\" title=\"ало\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/1x.webp 1x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/2x.webp 2x, https://cdn.7tv.app/emote/01F6PRA3N80003BH8AEY9DWKDQ/4x.webp 4x\" title=\"ало\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/1x.webp 1x, https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/2x.webp 2x, https://cdn.7tv.app/emote/01JRE4VRRXWF0922HA3F9BZG6M/4x.webp 4x\" title=\"Инса\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/1x.webp 1x, https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/2x.webp 2x, https://cdn.7tv.app/emote/01GY6TCEFG000BGHWA5T6NGBRA/4x.webp 4x\" title=\"Каори\" class=\"emote\">Hello everyone!',\n\t\t},\n\t},\n\tsevenTvSolo: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1768321684253,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/23\",\n\t\t\t\t\tbadges: \"broadcaster/1,subscriber/0\",\n\t\t\t\t\t\"client-nonce\": \"51cc77206bf346eda20774b75aac675d\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"e30a02bf-a3c7-40f2-9325-cdc2690d3631\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1768321684074\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"DurkaDance ͏\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"DurkaDance\",\n\t\t\t\t\t\tid: \"01JQBC7K2FX7HE4SFZFJEN6CWY\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t\"1\": \"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp\",\n\t\t\t\t\t\t\t\"2\": \"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/2x.webp\",\n\t\t\t\t\t\t\t\"3\": \"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/3x.webp\",\n\t\t\t\t\t\t\t\"4\": \"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 10,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"e30a02bf-a3c7-40f2-9325-cdc2690d3631\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/1x.webp 1x, https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/2x.webp 2x, https://cdn.7tv.app/emote/01JQBC7K2FX7HE4SFZFJEN6CWY/4x.webp 4x\" title=\"DurkaDance\" class=\"emote\"> ͏',\n\t\t},\n\t},\n\treplyToEmotes: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1761442000746,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/21\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"467bc72d78248ec07dfb0602744268ca\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"9efd9377-2bd3-4c69-ace4-c21760337bab\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1761442000143\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"AREYOUAGIRL Censored Emotes there DiscoDoge Кута\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"AREYOUAGIRL\",\n\t\t\t\t\t\tid: \"01F6N58M5R0004P7N4A9PK7KD9\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/1x.webp\",\n\t\t\t\t\t\t\t2: \"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/2x.webp\",\n\t\t\t\t\t\t\t3: \"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/3x.webp\",\n\t\t\t\t\t\t\t4: \"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 11,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Censored\",\n\t\t\t\t\t\tid: \"01GC2KBETR0009QMKQRDSHDTVB\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\",\n\t\t\t\t\t\t\t2: \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp\",\n\t\t\t\t\t\t\t3: \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/3x.webp\",\n\t\t\t\t\t\t\t4: \"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 12,\n\t\t\t\t\t\tend: 20,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"DiscoDoge\",\n\t\t\t\t\t\tid: \"01F6REQR2R0006GRP49Q74YFVT\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/1x.webp\",\n\t\t\t\t\t\t\t2: \"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/2x.webp\",\n\t\t\t\t\t\t\t3: \"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/3x.webp\",\n\t\t\t\t\t\t\t4: \"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 34,\n\t\t\t\t\t\tend: 43,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"Кута\",\n\t\t\t\t\t\tid: \"01GZRXWQMR0001GP2RPRY13KD2\",\n\t\t\t\t\t\tgif: true,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/1x.webp\",\n\t\t\t\t\t\t\t2: \"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/2x.webp\",\n\t\t\t\t\t\t\t3: \"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/3x.webp\",\n\t\t\t\t\t\t\t4: \"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 44,\n\t\t\t\t\t\tend: 48,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"9efd9377-2bd3-4c69-ace4-c21760337bab\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'<img src=\"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/1x.webp 1x, https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/2x.webp 2x, https://cdn.7tv.app/emote/01F6N58M5R0004P7N4A9PK7KD9/4x.webp 4x\" title=\"AREYOUAGIRL\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/1x.webp 1x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/2x.webp 2x, https://cdn.7tv.app/emote/01GC2KBETR0009QMKQRDSHDTVB/4x.webp 4x\" title=\"Censored\" class=\"emote\">Emotes there <img src=\"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/1x.webp 1x, https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/2x.webp 2x, https://cdn.7tv.app/emote/01F6REQR2R0006GRP49Q74YFVT/4x.webp 4x\" title=\"DiscoDoge\" class=\"emote\"><img src=\"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/1x.webp 1x, https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/2x.webp 2x, https://cdn.7tv.app/emote/01GZRXWQMR0001GP2RPRY13KD2/4x.webp 4x\" title=\"Кута\" class=\"emote\">',\n\t\t},\n\t},\n\treplyFromEmotes: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1761442023380,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/21\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"4052e6a7ed6bb6b8836aa625170c4f7b\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"f7bed8dd-5a48-4209-8617-e1a3c0720ee4\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"reply-parent-display-name\": \"An1by\",\n\t\t\t\t\t\"reply-parent-msg-body\":\n\t\t\t\t\t\t\"AREYOUAGIRL\\\\sCensored\\\\sThere\\\\semotes\\\\sDiscoDoge\\\\sКута\",\n\t\t\t\t\t\"reply-parent-msg-id\": \"9efd9377-2bd3-4c69-ace4-c21760337bab\",\n\t\t\t\t\t\"reply-parent-user-id\": \"958683839\",\n\t\t\t\t\t\"reply-parent-user-login\": \"an1by\",\n\t\t\t\t\t\"reply-thread-parent-display-name\": \"An1by\",\n\t\t\t\t\t\"reply-thread-parent-msg-id\": \"9efd9377-2bd3-4c69-ace4-c21760337bab\",\n\t\t\t\t\t\"reply-thread-parent-user-id\": \"958683839\",\n\t\t\t\t\t\"reply-thread-parent-user-login\": \"an1by\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1761442022738\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"@An1by I'm replying to message with emotes agarge Looks good, am I right?\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"7tv\",\n\t\t\t\t\t\tname: \"agarge\",\n\t\t\t\t\t\tid: \"01HTDV6DE8000B1F9GAE4NZ73B\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\tanimated: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/1x.webp\",\n\t\t\t\t\t\t\t2: \"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/2x.webp\",\n\t\t\t\t\t\t\t3: \"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/3x.webp\",\n\t\t\t\t\t\t\t4: \"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/4x.webp\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 43,\n\t\t\t\t\t\tend: 49,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"f7bed8dd-5a48-4209-8617-e1a3c0720ee4\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'@An1by I\\'m replying to message with emotes <img src=\"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/1x.webp\" srcset=\"https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/1x.webp 1x, https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/2x.webp 2x, https://cdn.7tv.app/emote/01HTDV6DE8000B1F9GAE4NZ73B/4x.webp 4x\" title=\"agarge\" class=\"emote\">Looks good, am I right?',\n\t\t},\n\t},\n\treplyTo: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1761435519083,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/21\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"da4c68fddba7eb1be7ae2b6a44c207a2\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"794c103d-a5d5-4ce1-bcd8-98ac6717c8e7\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1761435518511\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"I'll reply to that message\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [],\n\t\t\t\tmsgId: \"794c103d-a5d5-4ce1-bcd8-98ac6717c8e7\",\n\t\t\t},\n\t\t\trenderedText: \"I'll reply to that message\",\n\t\t},\n\t},\n\treplyFrom: {\n\t\tlistener: \"message\",\n\t\tevent: {\n\t\t\tservice: \"twitch\",\n\t\t\tdata: {\n\t\t\t\ttime: 1761435541811,\n\t\t\t\ttags: {\n\t\t\t\t\t\"badge-info\": \"subscriber/21\",\n\t\t\t\t\tbadges:\n\t\t\t\t\t\t\"broadcaster/1,subscriber/0,minecraft-15th-anniversary-celebration/1\",\n\t\t\t\t\t\"client-nonce\": \"b59db94320a8a01942290c61f6a27480\",\n\t\t\t\t\tcolor: \"#DAA520\",\n\t\t\t\t\t\"display-name\": \"An1by\",\n\t\t\t\t\temotes: \"emotesv2_f54e2bcddf4948808b845e37dd4e08de:26-36\",\n\t\t\t\t\t\"first-msg\": \"0\",\n\t\t\t\t\tflags: \"\",\n\t\t\t\t\tid: \"bc101ec7-5663-4ee5-9580-536ed9a5804e\",\n\t\t\t\t\tmod: \"0\",\n\t\t\t\t\t\"reply-parent-display-name\": \"An1by\",\n\t\t\t\t\t\"reply-parent-msg-body\": \"I'll\\\\sreply\\\\sto\\\\sthat\\\\smessage\",\n\t\t\t\t\t\"reply-parent-msg-id\": \"794c103d-a5d5-4ce1-bcd8-98ac6717c8e7\",\n\t\t\t\t\t\"reply-parent-user-id\": \"958683839\",\n\t\t\t\t\t\"reply-parent-user-login\": \"an1by\",\n\t\t\t\t\t\"reply-thread-parent-display-name\": \"An1by\",\n\t\t\t\t\t\"reply-thread-parent-msg-id\": \"794c103d-a5d5-4ce1-bcd8-98ac6717c8e7\",\n\t\t\t\t\t\"reply-thread-parent-user-id\": \"958683839\",\n\t\t\t\t\t\"reply-thread-parent-user-login\": \"an1by\",\n\t\t\t\t\t\"returning-chatter\": \"0\",\n\t\t\t\t\t\"room-id\": \"958683839\",\n\t\t\t\t\tsubscriber: \"1\",\n\t\t\t\t\t\"tmi-sent-ts\": \"1761435541217\",\n\t\t\t\t\tturbo: \"0\",\n\t\t\t\t\t\"user-id\": \"958683839\",\n\t\t\t\t\t\"user-type\": \"\",\n\t\t\t\t},\n\t\t\t\tnick: \"an1by\",\n\t\t\t\tuserId: \"958683839\",\n\t\t\t\tdisplayName: \"An1by\",\n\t\t\t\tdisplayColor: \"#DAA520\",\n\t\t\t\tbadges: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"broadcaster\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3\",\n\t\t\t\t\t\tdescription: \"Broadcaster\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"subscriber\",\n\t\t\t\t\t\tversion: \"0\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/5d9f2208-5dd8-11e7-8513-2ff4adfae661/3\",\n\t\t\t\t\t\tdescription: \"Subscriber\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"minecraft-15th-anniversary-celebration\",\n\t\t\t\t\t\tversion: \"1\",\n\t\t\t\t\t\turl: \"https://static-cdn.jtvnw.net/badges/v1/178077b2-8b86-4f8d-927c-66ed6c1b025f/3\",\n\t\t\t\t\t\tdescription: \"Minecraft 15th Anniversary Celebration\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tchannel: \"an1by\",\n\t\t\t\ttext: \"@An1by Replying right now akidaKrutoi\",\n\t\t\t\tisAction: false,\n\t\t\t\temotes: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"twitch\",\n\t\t\t\t\t\tname: \"akidaKrutoi\",\n\t\t\t\t\t\tid: \"emotesv2_f54e2bcddf4948808b845e37dd4e08de\",\n\t\t\t\t\t\tgif: false,\n\t\t\t\t\t\turls: {\n\t\t\t\t\t\t\t1: \"https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/1.0\",\n\t\t\t\t\t\t\t2: \"https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/2.0\",\n\t\t\t\t\t\t\t4: \"https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/3.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstart: 26,\n\t\t\t\t\t\tend: 36,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tmsgId: \"bc101ec7-5663-4ee5-9580-536ed9a5804e\",\n\t\t\t},\n\t\t\trenderedText:\n\t\t\t\t'@An1by Replying right now <img src=\"https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/1.0\" srcset=\"https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/1.0 1x, https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/2.0 2x, https://static-cdn.jtvnw.net/emoticons/v2/emotesv2_f54e2bcddf4948808b845e37dd4e08de/default/dark/3.0 4x\" title=\"akidaKrutoi\" class=\"emote\">',\n\t\t},\n\t},\n};\n","/**\n * Команды, вызывающие onEventReceived с тестовыми сообщением или алертом.\n * Работают только в браузере (требуется window).\n */\nimport { testAlerts, testMessages } from \"./sources\";\n\nconst EVENT_NAME = \"onEventReceived\";\n\n/**\n * Отправляет тестовое сообщение по ключу: диспатчит CustomEvent onEventReceived.\n */\nexport function testMessage(key: string): void {\n\tif (typeof window === \"undefined\") {\n\t\treturn;\n\t}\n\tconst cleanKey = key.startsWith(\"testMessage_\")\n\t\t? key.replace(\"testMessage_\", \"\")\n\t\t: key;\n\tconst msg = testMessages[cleanKey as keyof typeof testMessages];\n\tif (msg) {\n\t\twindow.dispatchEvent(new CustomEvent(EVENT_NAME, { detail: msg }));\n\t}\n}\n\n/**\n * Отправляет тестовый алерт по ключу: диспатчит CustomEvent onEventReceived.\n */\nexport function testAlert(key: string): void {\n\tif (typeof window === \"undefined\") {\n\t\treturn;\n\t}\n\tconst cleanKey = key.startsWith(\"testAlert_\")\n\t\t? key.replace(\"testAlert_\", \"\")\n\t\t: key;\n\tconst alert = testAlerts[cleanKey as keyof typeof testAlerts];\n\tif (alert) {\n\t\twindow.dispatchEvent(new CustomEvent(EVENT_NAME, { detail: alert }));\n\t}\n}\n","/**\n * Преобразование fieldId виджета в ключ тестовых данных.\n */\nexport function getTestMessageKey(fieldId: string): string | null {\n\tif (!fieldId.startsWith(\"testMessage\")) return null;\n\tconst name = fieldId.replace(\"testMessage\", \"\");\n\treturn name.charAt(0).toLowerCase() + name.slice(1);\n}\n\nexport function getTestAlertKey(fieldId: string): string | null {\n\tif (!fieldId.startsWith(\"testAlert\")) return null;\n\tconst name = fieldId.replace(\"testAlert\", \"\");\n\treturn name.charAt(0).toLowerCase() + name.slice(1);\n}\n","import type { TwitchMessage } from \"./message\";\n\nexport enum UserRole {\n\tBROADCASTER = \"broadcaster\",\n\tLEAD_MODERATOR = \"lead_moderator\",\n\tMODERATOR = \"moderator\",\n\tVIP = \"vip\",\n\tARTIST = \"artist\",\n\tFOUNDER = \"founder\",\n\tSUBSCRIBER = \"subscriber\",\n\tTURBO = \"turbo\",\n\tDEFAULT = \"default\",\n}\n\ntype UserMessageDataOptions = {\n\tbadges?: TwitchMessage.Badge[];\n\ttags?: TwitchMessage.Tags;\n};\n\nexport const TwitchUserMessageData = ({\n\tbadges = [],\n\ttags = {},\n}: UserMessageDataOptions) => {\n\tconst includesBadgeType = (type: string) => {\n\t\treturn !!badges.find((b) => b.type === type);\n\t};\n\n\tconst tagBadgesString = tags.badges ?? \"\";\n\tconst userType = tags[\"user-type\"] ?? \"\";\n\n\tconst isSubscriber =\n\t\ttagBadgesString.includes(\"subscriber/1\") ||\n\t\ttags.subscriber === \"1\" ||\n\t\tincludesBadgeType(\"subscriber\");\n\n\tconst isFounder =\n\t\ttagBadgesString.includes(\"founder/1\") || includesBadgeType(\"founder\");\n\n\tconst isBroadcaster =\n\t\ttagBadgesString.includes(\"broadcaster/1\") ||\n\t\tincludesBadgeType(\"broadcaster\");\n\n\tconst isFirstMessageChatter = tags[\"first-msg\"] === \"1\";\n\n\tconst isTurbo = tags.turbo === \"1\";\n\n\tconst isVip =\n\t\ttags.vip === \"1\" ||\n\t\ttagBadgesString.includes(\"vip/1\") ||\n\t\tincludesBadgeType(\"vip\");\n\n\tconst isLeadModerator =\n\t\ttagBadgesString.includes(\"lead_moderator/1\") ||\n\t\tincludesBadgeType(\"lead_moderator\");\n\n\tconst isModerator =\n\t\t((tags.mod === \"1\" ||\n\t\t\ttagBadgesString.includes(\"moderator/1\") ||\n\t\t\tuserType === \"mod\") &&\n\t\t\t!isLeadModerator) ||\n\t\tincludesBadgeType(\"moderator\");\n\n\tconst isAnyModerator = isModerator || isLeadModerator;\n\n\tconst isArtist =\n\t\ttagBadgesString.includes(\"artist-badge/1\") ||\n\t\tincludesBadgeType(\"artist-badge\");\n\n\tconst roles: UserRole[] = [];\n\tif (isBroadcaster) roles.push(UserRole.BROADCASTER);\n\tif (isLeadModerator) roles.push(UserRole.LEAD_MODERATOR);\n\tif (isModerator) roles.push(UserRole.MODERATOR);\n\tif (isVip) roles.push(UserRole.VIP);\n\tif (isArtist) roles.push(UserRole.ARTIST);\n\tif (isFounder) roles.push(UserRole.FOUNDER);\n\tif (isSubscriber) roles.push(UserRole.SUBSCRIBER);\n\tif (isTurbo) roles.push(UserRole.TURBO);\n\troles.push(UserRole.DEFAULT);\n\n\tconst getSubscriberMonths = (): number => {\n\t\tfor (const key of [\"badge-info\", \"badges\"]) {\n\t\t\tconst tag = tags[key] as string;\n\t\t\tif (tag) {\n\t\t\t\tconst match = tag.match(/^subscriber\\/(\\d+)$/);\n\t\t\t\tif (match) {\n\t\t\t\t\treturn parseInt(match[1], 10);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t};\n\n\tconst getBadgeUrlByType = (type: string) =>\n\t\tbadges.find((b) => b.type === type)?.url;\n\n\treturn {\n\t\tisSubscriber,\n\t\tisBroadcaster,\n\t\tisFirstMessageChatter,\n\t\tisFounder,\n\t\tisTurbo,\n\t\tisVip,\n\t\tisAnyModerator,\n\t\tisModerator,\n\t\tisLeadModerator,\n\t\tisArtist,\n\t\troles,\n\t\tincludesBadgeType,\n\t\tgetSubscriberMonths,\n\t\tgetBadgeUrlByType,\n\t};\n};\n","import type { ClassifiedEvent } from \"@/root\";\nimport type { NextAlertCallback } from \".\";\n\nexport class AlertQueue {\n\tprivate readonly queue: ClassifiedEvent[] = [];\n\tpublic isShowingAlert: boolean = false;\n\tpublic onNextAlert: NextAlertCallback;\n\n\tconstructor(onNextAlert: NextAlertCallback) {\n\t\tthis.onNextAlert = onNextAlert;\n\t}\n\n\tpublic push(event: ClassifiedEvent) {\n\t\tthis.queue.push(event);\n\t}\n\n\t// DON'T FORGET SET \"this.isShowingAlert = false\" AFTER EXECUTION\n\tpublic processNextAlert() {\n\t\tif (this.queue.length === 0 || this.isShowingAlert) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst alertData = this.queue.shift();\n\t\tif (!alertData) {\n\t\t\treturn;\n\t\t}\n\t\tthis.isShowingAlert = true;\n\n\t\tthis.onNextAlert(this, alertData);\n\t}\n}\n","import { type DependencyList, useEffect, useRef } from \"react\";\nimport type {\n\tWindowEventKey,\n\tWindowEventListener,\n} from \"../types/window-events.js\";\n\nexport function useEventListener<K extends WindowEventKey>(\n\teventName: K,\n\thandler: WindowEventListener<K>,\n\tdeps: DependencyList = [],\n): void {\n\tconst callbackRef = useRef<WindowEventListener<K>>(handler);\n\tcallbackRef.current = handler;\n\n\tuseEffect(() => {\n\t\tconst fn = (ev: WindowEventMap[K]) => callbackRef.current.call(window, ev);\n\t\twindow.addEventListener(eventName, fn);\n\t\treturn () => window.removeEventListener(eventName, fn);\n\t}, [eventName, ...deps]);\n}\n","import type {\n\tCheerDetail,\n\tCommunityGiftPurchaseDetail,\n\tDeleteMessageDetail,\n\tDeleteMessagesDetail,\n\tFollowerDetail,\n\tMinimalEvent,\n\tRaidDetail,\n\tSubscriberDetail,\n\tSubscriberLatestDetail,\n\tTestButtonDetail,\n\tTwitchMessageDetail,\n} from \"@/root/types/on-event-received\";\n\nexport const isDetail = (d: unknown): d is MinimalEvent =>\n\ttypeof d === \"object\" && d !== null && \"listener\" in d;\n\nexport function createGuard<T extends MinimalEvent>(\n\tpredicate: (d: MinimalEvent) => boolean,\n) {\n\treturn (d: unknown): d is T => isDetail(d) && predicate(d);\n}\n\nexport const isTwitchMessageEvent = createGuard<TwitchMessageDetail>(\n\t(d) => d.listener === \"message\",\n);\nexport const isFollowerDetail = createGuard<FollowerDetail>(\n\t(d) => d.listener === \"follower-latest\",\n);\nexport const isSubscriberLatestDetail = createGuard<SubscriberLatestDetail>(\n\t(d) => d.listener === \"subscriber-latest\",\n);\nexport const isCheerDetail = createGuard<CheerDetail>(\n\t(d) => d.listener === \"cheer-latest\",\n);\nexport const isRaidDetail = createGuard<RaidDetail>(\n\t(d) => d.listener === \"raid-latest\",\n);\nexport const isDeleteMessageDetail = createGuard<DeleteMessageDetail>(\n\t(d) => d.listener === \"delete-message\",\n);\nexport const isDeleteMessagesDetail = createGuard<DeleteMessagesDetail>(\n\t(d) => d.listener === \"delete-messages\",\n);\nexport const isCommunityGiftPurchaseDetail =\n\tcreateGuard<CommunityGiftPurchaseDetail>(\n\t\t(d) => d.listener === \"event\" && d.event?.type === \"communityGiftPurchase\",\n\t);\nexport const isSubscriberDetail = createGuard<SubscriberDetail>(\n\t(d) => d.listener === \"event\" && d.event?.type === \"subscriber\",\n);\nexport const isWidgetButtonDetail = createGuard<TestButtonDetail>(\n\t(d) => d.listener === \"event:test\" && d.event?.listener === \"widget-button\",\n);\n","import type { DependencyList } from \"react\";\nimport { classifyEvent } from \"@/root/classifier\";\nimport type {\n\tClassifiedEvent,\n\tIncomingDetail,\n\tMinimalEvent,\n} from \"@/root/types/on-event-received\";\nimport { useEventListener } from \"./use-event-listener\";\n\n/**\n * Configuration options for StreamElements event hooks.\n */\nexport interface HookOptions<C extends boolean = boolean> {\n\t/**\n\t * If true, the hook will return a classified/normalized event object\n\t * instead of the raw StreamElements CustomEvent.\n\t *\n\t * Note: Only supported for alert-related hooks.\n\t */\n\tclassified?: C;\n\t/**\n\t * React dependency list to control hook re-subscription.\n\t */\n\tdeps?: DependencyList;\n}\n\nexport type HookHandler<T, C, R extends boolean> = (\n\tdata: R extends true ? C : CustomEvent<T>,\n) => void;\n\nexport function parseDepsOrOptions<C extends boolean>(\n\tdepsOrOptions?: DependencyList | HookOptions<C>,\n): HookOptions<C> {\n\tif (!depsOrOptions) return {} as HookOptions<C>;\n\tif (Array.isArray(depsOrOptions))\n\t\treturn { deps: depsOrOptions } as HookOptions<C>;\n\treturn depsOrOptions as HookOptions<C>;\n}\n\n/**\n * Base internal engine for event-guarded listeners.\n */\nexport function useOnEvent<\n\tT extends MinimalEvent,\n\tC = never,\n\tR extends boolean = boolean,\n>(\n\tguard: (d: unknown) => d is T,\n\thandler: HookHandler<T, C, R>,\n\toptions: HookOptions<R>,\n) {\n\tconst { classified, deps = [] } = options;\n\tuseEventListener(\n\t\t\"onEventReceived\",\n\t\t(ev) => {\n\t\t\tif (guard(ev.detail)) {\n\t\t\t\tif (classified) {\n\t\t\t\t\tconst data = classifyEvent(ev.detail as unknown as IncomingDetail);\n\t\t\t\t\tif (data) (handler as (d: C) => void)(data as C);\n\t\t\t\t} else {\n\t\t\t\t\t(handler as (d: CustomEvent<T>) => void)(ev as CustomEvent<T>);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdeps,\n\t);\n}\n\n/**\n * Hook Factory to reduce boilerplate.\n * If C is not provided, classification mode is disabled for the hook.\n */\nexport function createEventHook<T extends MinimalEvent>(\n\tguard: (d: unknown) => d is T,\n): (\n\thandler: (ev: CustomEvent<T>) => void,\n\tdepsOrOptions?: DependencyList | HookOptions<false>,\n) => void;\n\nexport function createEventHook<T extends MinimalEvent, C>(\n\tguard: (d: unknown) => d is T,\n): <R extends boolean = false>(\n\thandler: HookHandler<T, C, R>,\n\tdepsOrOptions?: DependencyList | HookOptions<R>,\n) => void;\n\nexport function createEventHook(guard: (d: unknown) => d is MinimalEvent) {\n\treturn <R extends boolean>(\n\t\thandler: HookHandler<MinimalEvent, ClassifiedEvent, R>,\n\t\tdepsOrOptions?: DependencyList | HookOptions<R>,\n\t) => {\n\t\tconst options = parseDepsOrOptions(depsOrOptions);\n\t\treturn useOnEvent(guard, handler, options);\n\t};\n}\n","import type { DependencyList } from \"react\";\nimport { aggregateIncomingEvent, type AggregatorOptions } from \"@/root/aggregator\";\nimport {\n\tisCheerDetail,\n\tisCommunityGiftPurchaseDetail,\n\tisDeleteMessageDetail,\n\tisDeleteMessagesDetail,\n\tisFollowerDetail,\n\tisRaidDetail,\n\tisSubscriberDetail,\n\tisSubscriberLatestDetail,\n\tisTwitchMessageEvent,\n\tisWidgetButtonDetail,\n} from \"@/root/guards\";\nimport type {\n\tAggregatedCommunityGift,\n\tCheerDetail,\n\tClassifiedButtonClick,\n\tClassifiedCheer,\n\tClassifiedDeleteMessage,\n\tClassifiedDeleteMessages,\n\tClassifiedEvent,\n\tClassifiedFollower,\n\tClassifiedRaid,\n\tClassifiedSelfSub,\n\tClassifiedSoloSub,\n\tClassifiedSubRenewal,\n\tCommunityGiftPurchaseDetail,\n\tDeleteMessageDetail,\n\tDeleteMessagesDetail,\n\tFollowerDetail,\n\tIncomingDetail,\n\tRaidDetail,\n\tSubscriberDetail,\n\tSubscriberLatestDetail,\n\tTestButtonDetail,\n\tTwitchMessageDetail,\n} from \"@/root/types/on-event-received\";\nimport type { WindowEventListener } from \"../types/window-events\";\nimport { createEventHook } from \"./factory\";\nimport { useEventListener } from \"./use-event-listener\";\n\n/**\n * Low-level hook to subscribe to the generic 'onEventReceived' from StreamElements.\n *\n * @param handler Generic event listener for all StreamElements events.\n * @param deps React dependency list.\n */\nexport function useOnEventReceived(\n\thandler: WindowEventListener<\"onEventReceived\">,\n\tdeps: DependencyList = [],\n): void {\n\tuseEventListener(\"onEventReceived\", handler, deps);\n}\n\n/**\n * Listens for Twitch chat messages received.\n * Classification is not supported for this hook.\n */\nexport const useOnTwitchMessageReceived =\n\tcreateEventHook<TwitchMessageDetail>(isTwitchMessageEvent);\n\n/** Alias for useOnTwitchMessageReceived */\nexport const useOnMessageReceived = useOnTwitchMessageReceived;\n\n/**\n * Listens for single message deletion events in Twitch chat.\n * Calls on deleting certain user message.\n * Supports classification into ClassifiedDeleteMessage.\n */\nexport const useOnDeleteMessage = createEventHook<\n\tDeleteMessageDetail,\n\tClassifiedDeleteMessage\n>(isDeleteMessageDetail);\n\n/**\n * Listens for multiple message deletion (clear chat/timeout) events in Twitch chat.\n * Calls on user ban or timeout.\n * Supports classification into ClassifiedDeleteMessages.\n */\nexport const useOnDeleteMessages = createEventHook<\n\tDeleteMessagesDetail,\n\tClassifiedDeleteMessages\n>(isDeleteMessagesDetail);\n\n/**\n * Listens for Widget Button clicks configured in the StreamElements Overlay Editor.\n * Supports classification into ClassifiedButtonClick.\n */\nexport const useOnWidgetButtonReceived = createEventHook<\n\tTestButtonDetail,\n\tClassifiedButtonClick\n>(isWidgetButtonDetail);\n\n/**\n * Listens for new Follower events.\n * Supports classification into ClassifiedFollower.\n */\nexport const useOnFollowerReceived = createEventHook<\n\tFollowerDetail,\n\tClassifiedFollower\n>(isFollowerDetail);\n\n/**\n * Listens for Cheer (bits) events.\n * Supports classification into ClassifiedCheer.\n */\nexport const useOnCheerReceived = createEventHook<CheerDetail, ClassifiedCheer>(\n\tisCheerDetail,\n);\n\n/**\n * Listens for Raid events.\n * Supports classification into ClassifiedRaid.\n */\nexport const useOnRaidReceived = createEventHook<RaidDetail, ClassifiedRaid>(\n\tisRaidDetail,\n);\n\n/**\n * Listens for general Subscriber events.\n * Supports classification into ClassifiedEvent union.\n */\nexport const useOnSubscriberReceived = createEventHook<\n\tSubscriberDetail,\n\tClassifiedEvent\n>(isSubscriberDetail);\n\n/**\n * Listens for personal subscription events where a user subscribes for the first time.\n */\nexport const useOnSelfSubReceived = (\n\thandler: (event: ClassifiedSelfSub) => void,\n\tdeps: DependencyList = [],\n) => {\n\tuseOnSubscriberReceived(\n\t\t(sub) => {\n\t\t\tif (sub.type === \"self-sub\") handler(sub as ClassifiedSelfSub);\n\t\t},\n\t\t{ classified: true, deps },\n\t);\n};\n\n/**\n * Listens for subscription renewal events (resubs) with month count.\n */\nexport const useOnSubRenewalReceived = (\n\thandler: (event: ClassifiedSubRenewal) => void,\n\tdeps: DependencyList = [],\n) => {\n\tuseOnSubscriberReceived(\n\t\t(sub) => {\n\t\t\tif (sub.type === \"sub-renewal\") handler(sub as ClassifiedSubRenewal);\n\t\t},\n\t\t{ classified: true, deps },\n\t);\n};\n\n/**\n * Listens for solo gift subscription events (one user gifting to another specific user).\n */\nexport const useOnSoloGiftReceived = (\n\thandler: (event: ClassifiedSoloSub) => void,\n\tdeps: DependencyList = [],\n) => {\n\tuseOnSubscriberReceived(\n\t\t(sub) => {\n\t\t\tif (sub.type === \"solo-sub-to-someone\") handler(sub as ClassifiedSoloSub);\n\t\t},\n\t\t{ classified: true, deps },\n\t);\n};\n\n/**\n * Listens for the latest Subscriber status updates.\n * Supports classification into ClassifiedEvent union.\n */\nexport const useOnSubscriberLatestReceived = createEventHook<\n\tSubscriberLatestDetail,\n\tClassifiedEvent\n>(isSubscriberLatestDetail);\n\n/**\n * Listens for Community Gift Purchase (bulk gifts) events.\n */\nexport const useOnCommunityGiftPurchaseReceived = createEventHook<\n\tCommunityGiftPurchaseDetail,\n\tClassifiedEvent\n>(isCommunityGiftPurchaseDetail);\n\n/**\n * Specialized hook for handling aggregated mass-gift subscriptions.\n *\n * Normalizes Multiple subscriber events into a single sender event with a list of recipients.\n * Essential for \"Community Gift\" alerts to avoid spamming multiple notifications.\n *\n * @param handler Receives the aggregated community gift object.\n * @param options Aggregator options (broadcasterLogin, cache, etc).\n * @param deps React dependency list.\n */\nexport const useOnAggregatedCommunityGift = (\n\thandler: (event: AggregatedCommunityGift) => void,\n\toptions?: AggregatorOptions,\n\tdeps: DependencyList = [],\n) => {\n\tuseOnEventReceived((ev) => {\n\t\taggregateIncomingEvent(\n\t\t\tev.detail as unknown as IncomingDetail,\n\t\t\toptions,\n\t\t\t(normalized) => {\n\t\t\t\tif (normalized) handler(normalized as AggregatedCommunityGift);\n\t\t\t},\n\t\t);\n\t}, deps);\n};\n\nexport type { HookOptions } from \"./factory\";\n","import type { DependencyList } from \"react\";\nimport type { WindowEventListener } from \"@/react/types/window-events.js\";\nimport type { OnWidgetLoadEventDetails } from \"@/root/types/on-widget-load\";\nimport { useEventListener } from \"./use-event-listener.js\";\n\nexport function useOnWidgetLoad<FieldData = unknown>(\n\thandler: (ev: CustomEvent<OnWidgetLoadEventDetails<FieldData>>) => void,\n\tdeps: DependencyList = [],\n): void {\n\tuseEventListener(\n\t\t\"onWidgetLoad\",\n\t\thandler as WindowEventListener<\"onWidgetLoad\">,\n\t\tdeps,\n\t);\n}\n"],"mappings":"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B,OAAQ,EACR,CACD,kBAAmB,CAClB,OAAQ,EACR,CACD,kBAAmB,CAClB,OAAQ,EACR,CACD,kBAAmB,CAClB,MAAO,EACP,CACD,iBAAkB,CACjB,OAAQ,EACR,CACD,kBAAmB,CAClB,KAAM,GACN,OAAQ,EACR,OAAQ,GACR,QAAS,GACT,MAAO,EAAE,CACT,CACD,kBAAmB,CAClB,CACC,KAAM,gBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,UACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,UACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,gBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,SACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,mBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACD,oBAAqB,EAAE,CACvB,cAAe,EAAE,CACjB,cAAe,CACd,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,eACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,WACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACD,iCAAkC,EAAE,CACpC,eAAgB,EAAE,CAClB,uBAAwB,EAAE,CAC1B,mBAAoB,EAAE,CACtB,aAAc,EAAE,CAChB,eAAgB,EAAE,CAClB,wBAAyB,CACxB,OAAQ,EACR,QAAS,GACT,KAAM,GACN,WAAY,GACZ,CACD,wBAAyB,CACxB,OAAQ,EACR,KAAM,GACN,KAAM,GACN,CACD,+CAAgD,CAC/C,OAAQ,EACR,KAAM,GACN,CACD,8CAA+C,CAC9C,OAAQ,EACR,KAAM,GACN,CACD,qCAAsC,CACrC,OAAQ,EACR,KAAM,GACN,CACD,oCAAqC,CACpC,OAAQ,EACR,KAAM,GACN,CACD,mBAAoB,CACnB,OAAQ,EACR,OAAQ,EACR,MAAO,EACP,aAAc,EACd,KAAM,GACN,KAAM,GACN,CACD,oCAAqC,EAAE,CACvC,uBAAwB,CACvB,OAAQ,EACR,CACD,2BAA4B,CAC3B,OAAQ,EACR,QAAS,EACT,CACD,kBAAmB,CAClB,OAAQ,EACR,CACD,iCAAkC,CACjC,OAAQ,EACR,KAAM,GACN,CACD,gCAAiC,CAChC,OAAQ,EACR,KAAM,GACN,CACD,CACD,SAAU,CACT,UAAW,GACX,SAAU,GACV,aAAc,GACd,CACD,CACD,QAAS,CACR,CACC,KAAM,gBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,UACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,UACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,gBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,SACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,eACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,mBACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,aACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,cACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,WACN,UAAW,2BACX,KAAM,WACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,eACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,iBACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,WACN,OAAQ,EACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,YACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACC,KAAM,UACN,OAAQ,GACR,UAAW,2BACX,KAAM,OACN,CACD,CACD,SAAU,CACT,KAAM,MACN,KAAM,cACN,OAAQ,IACR,CACD,QAAS,CACR,SAAU,UACV,SAAU,aACV,GAAI,2BACJ,WAAY,YACZ,OACC,iHACD,CACD,UAAW,CACV,kBAAmB,4BACnB,YAA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L,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,WACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,s6BACD,CACD,CACD,uBAAwB,CACvB,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OAAQ,6BACR,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACD,QAAS,QACT,KAAM,0BACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,WACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,mUACD,CACD,CACD,oBAAqB,CACpB,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OAAQ,6BACR,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CA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e,CACd,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,GACd,OAAQ,cACR,MAAO,GACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,MACb,CACD,KAAM,WACN,OAAQ,YACR,YAAa,WACb,aAAc,GACd,OAAQ,CACP,CACC,KAAM,YACN,QAAS,IACT,IAAK,gFACL,YAAa,YACb,CACD,CACD,QAAS,WACT,KAAM,sDACN,SAAU,GACV,OAAQ,EAAE,CACV,MAAO,uCACP,CACD,aAAc,sDACd,CACD,CACD,YAAa,CACZ,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,6BACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,YACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,uUACD,CACD,CACD,iBAAkB,CACjB,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,OACN,SAAU,GACV,OAAQ,EAAE,CACV,MAAO,uCACP,CACD,aACC,uUACD,CACD,CACD,UAAW,CACV,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,GACd,OAAQ,GACR,MAAO,GACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,GACd,OAAQ,EAAE,CACV,QAAS,QACT,KAAM,aACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,QACN,KAAM,QACN,GAAI,QACJ,IAAK,GACL,KAAM,CACL,EAAK,6CACL,CACD,CACD,CACC,KAAM,QACN,KAAM,QACN,GAAI,QACJ,IAAK,GACL,KAAM,CACL,EAAK,6CACL,CACD,CACD,CACC,KAAM,QACN,KAAM,QACN,GAAI,QACJ,IAAK,GACL,KAAM,CACL,EAAK,6CACL,CACD,CACD,CACC,KAAM,QACN,KAAM,QACN,GAAI,QACJ,IAAK,GACL,KAAM,CACL,EAAK,6CACL,CACD,CACD,CACD,MAAO,uCACP,CACD,aAAc,aACd,CACD,CACD,SAAU,CACT,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,GACd,OAAQ,GACR,MAAO,GACP,eAAgB,QAChB,OACC,yEACD,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,GACd,OAAQ,EAAE,CACV,QAAS,QACT,KAAM,YACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,SACN,KAAM,YACN,GAAI,QACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,kEACL,EAAK,kEACL,EAAK,kEACL,CACD,MAAO,EACP,IAAK,EACL,CACD,CACD,MAAO,uCACP,CACD,aACC,kUACD,CACD,CACD,UAAW,CACV,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,GACd,OAAQ,GACR,MAAO,GACP,eAAgB,UAChB,OACC,yEACD,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,UACN,OAAQ,YACR,YAAa,UACb,aAAc,GACd,OAAQ,EAAE,CACV,QAAS,UACT,KAAM,sEACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,SACN,KAAM,YACN,GAAI,QACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,kEACL,EAAK,kEACL,EAAK,kEACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,SACN,KAAM,WACN,GAAI,KACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,SACN,KAAM,kBACN,GAAI,MACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,gEACL,EAAK,gEACL,EAAK,gEACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,SACN,KAAM,UACN,GAAI,QACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,kEACL,EAAK,kEACL,EAAK,kEACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,SACN,KAAM,cACN,GAAI,QACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,kEACL,EAAK,kEACL,EAAK,kEACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,SACN,KAAM,KACN,GAAI,IACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,8DACL,EAAK,8DACL,EAAK,8DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,i2DACD,CACD,CACD,gBAAiB,CAChB,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OAAQ,GACR,eAAgB,mCAChB,MAAO,UACP,eAAgB,UAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,UACN,OAAQ,YACR,YAAa,UACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,UACT,KAAM,+CACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,QACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,SACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,ioBACD,CACD,CACD,QAAS,CACR,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,GACd,OAAQ,GACR,eAAgB,mCAChB,MAAO,GACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,GACd,OAAQ,EAAE,CACV,QAAS,QACT,KAAM,oJACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,MACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,EACL,CACD,CACC,KAAM,MACN,KAAM,MACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,EACL,CACD,CACC,KAAM,MACN,KAAM,OACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,QACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,ysCACD,CACD,CACD,YAAa,CACZ,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OAAQ,6BACR,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACD,QAAS,QACT,KAAM,gBACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,aACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,EAAK,+DACL,CACD,MAAO,EACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,yTACD,CACD,CACD,cAAe,CACd,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,mDACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,cACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,CACD,MAAO,EACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,WACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,YACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,CACD,MAAO,GACP,IAAK,GACL,CACD,CACC,KAAM,MACN,KAAM,OACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,wtCACD,CACD,CACD,gBAAiB,CAChB,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,4BAA6B,QAC7B,wBACC,6DACD,sBAAuB,uCACvB,uBAAwB,YACxB,0BAA2B,QAC3B,mCAAoC,QACpC,6BAA8B,uCAC9B,8BAA+B,YAC/B,iCAAkC,QAClC,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,4EACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,MACN,KAAM,SACN,GAAI,6BACJ,IAAK,GACL,SAAU,GACV,KAAM,CACL,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,EAAG,+DACH,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,qXACD,CACD,CACD,QAAS,CACR,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,GACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,6BACN,SAAU,GACV,OAAQ,EAAE,CACV,MAAO,uCACP,CACD,aAAc,6BACd,CACD,CACD,UAAW,CACV,SAAU,UACV,MAAO,CACN,QAAS,SACT,KAAM,CACL,KAAM,cACN,KAAM,CACL,aAAc,gBACd,OACC,sEACD,eAAgB,mCAChB,MAAO,UACP,eAAgB,QAChB,OAAQ,kDACR,YAAa,IACb,MAAO,GACP,GAAI,uCACJ,IAAK,IACL,4BAA6B,QAC7B,wBAAyB,qCACzB,sBAAuB,uCACvB,uBAAwB,YACxB,0BAA2B,QAC3B,mCAAoC,QACpC,6BAA8B,uCAC9B,8BAA+B,YAC/B,iCAAkC,QAClC,oBAAqB,IACrB,UAAW,YACX,WAAY,IACZ,cAAe,gBACf,MAAO,IACP,UAAW,YACX,YAAa,GACb,CACD,KAAM,QACN,OAAQ,YACR,YAAa,QACb,aAAc,UACd,OAAQ,CACP,CACC,KAAM,cACN,QAAS,IACT,IAAK,gFACL,YAAa,cACb,CACD,CACC,KAAM,aACN,QAAS,IACT,IAAK,gFACL,YAAa,aACb,CACD,CACC,KAAM,yCACN,QAAS,IACT,IAAK,gFACL,YAAa,yCACb,CACD,CACD,QAAS,QACT,KAAM,wCACN,SAAU,GACV,OAAQ,CACP,CACC,KAAM,SACN,KAAM,cACN,GAAI,4CACJ,IAAK,GACL,KAAM,CACL,EAAG,uGACH,EAAG,uGACH,EAAG,uGACH,CACD,MAAO,GACP,IAAK,GACL,CACD,CACD,MAAO,uCACP,CACD,aACC,kfACD,CACD,CACD,CCpkD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"}
|