Files
ST-Amily2-Chat-Optimisation…/core/table-system/manager.js
2025-12-23 13:14:48 +08:00

2 lines
65 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const _0x2b9298=_0x5104;(function(_0x3120e5,_0x356fec){const _0xc5394f=_0x5104,_0x5b6bac=_0x3120e5();while(!![]){try{const _0x5f4e40=parseInt(_0xc5394f(0x1ce))/0x1+-parseInt(_0xc5394f(0x288))/0x2+parseInt(_0xc5394f(0x2a2))/0x3+-parseInt(_0xc5394f(0x216))/0x4*(-parseInt(_0xc5394f(0x217))/0x5)+parseInt(_0xc5394f(0x27b))/0x6*(-parseInt(_0xc5394f(0x1f4))/0x7)+parseInt(_0xc5394f(0x23e))/0x8+-parseInt(_0xc5394f(0x1ba))/0x9;if(_0x5f4e40===_0x356fec)break;else _0x5b6bac['push'](_0x5b6bac['shift']());}catch(_0x4008d3){_0x5b6bac['push'](_0x5b6bac['shift']());}}}(_0x1362,0xbc4f0));import{getContext,extension_settings}from'/scripts/extensions.js';function _0x5104(_0xbadaaf,_0x5a94a3){const _0x136221=_0x1362();return _0x5104=function(_0x51044f,_0x525f07){_0x51044f=_0x51044f-0x18c;let _0x5cff2f=_0x136221[_0x51044f];return _0x5cff2f;},_0x5104(_0xbadaaf,_0x5a94a3);}import{saveChat,saveSettingsDebounced}from'/script.js';import{log}from'./logger.js';import{fillWithSecondaryApi}from'./secondary-filler.js';import{getChatPiece,saveChatDebounced}from'../../utils/utils.js';import{extensionName}from'../../utils/settings.js';import{DEFAULT_AI_RULE_TEMPLATE,DEFAULT_AI_FLOW_TEMPLATE}from'./settings.js';import{renderTables}from'../../ui/table-bindings.js';import{updateOrInsertTableInChat}from'../../ui/message-table-renderer.js';const TABLE_DATA_KEY='amily2_tables_data';let currentTablesState=null,highlightedCells=new Set(),updatedTables=new Set();function dispatchTableUpdate(_0xf9e7d){const _0x2e73b6=_0x5104,_0x42d80f=extension_settings[extensionName]||{};if(_0x42d80f[_0x2e73b6(0x1fe)]===![])return;if(!currentTablesState||!currentTablesState[_0xf9e7d])return;const _0x23c8fc=currentTablesState[_0xf9e7d];let _0x514caf='database';if(_0x23c8fc[_0x2e73b6(0x243)][_0x2e73b6(0x22f)]('时空')||_0x23c8fc['name'][_0x2e73b6(0x22f)](_0x2e73b6(0x19a)))_0x514caf='anchor';if(_0x23c8fc[_0x2e73b6(0x243)][_0x2e73b6(0x22f)]('日志')||_0x23c8fc[_0x2e73b6(0x243)][_0x2e73b6(0x22f)](_0x2e73b6(0x2b5)))_0x514caf=_0x2e73b6(0x1c3);const _0x5a1853=new CustomEvent(_0x2e73b6(0x285),{'detail':{'tableName':_0x23c8fc[_0x2e73b6(0x243)],'data':_0x23c8fc[_0x2e73b6(0x1da)],'headers':_0x23c8fc[_0x2e73b6(0x29d)],'rowStatuses':_0x23c8fc[_0x2e73b6(0x210)]||[],'role':_0x514caf}});document[_0x2e73b6(0x249)](_0x5a1853),log(_0x2e73b6(0x19f)+_0x23c8fc[_0x2e73b6(0x243)],_0x2e73b6(0x276));}function dispatchAllTablesUpdate(){const _0x224424=_0x5104;if(!currentTablesState)return;log(_0x224424(0x20e),_0x224424(0x276)),currentTablesState[_0x224424(0x2a6)]((_0x5137bc,_0x1c6fc6)=>{dispatchTableUpdate(_0x1c6fc6);});}export function addHighlight(_0x3ad4ee,_0x4983ab,_0x111c85){const _0xec55c6=_0x3ad4ee+'-'+_0x4983ab+'-'+_0x111c85;highlightedCells['add'](_0xec55c6);}export function getHighlights(){return highlightedCells;}export function clearHighlights(){const _0x2f8431=_0x5104;highlightedCells['size']>0x0&&(highlightedCells['clear'](),log('已清除所有单元格高亮标记。',_0x2f8431(0x276)));}export function getUpdatedTables(){return updatedTables;}export function clearUpdatedTables(){const _0x58d11d=_0x5104;updatedTables[_0x58d11d(0x200)]>0x0&&(updatedTables[_0x58d11d(0x1eb)](),log(_0x58d11d(0x238),_0x58d11d(0x276)));}export function setMemoryState(_0x2905ee){currentTablesState=_0x2905ee;}export function loadMemoryState(_0x5f2d21){const _0x29aff7=_0x5104;if(!_0x5f2d21)return;setMemoryState(_0x5f2d21),renderTables(),updateOrInsertTableInChat(),log(_0x29aff7(0x2ab),_0x29aff7(0x276));}export function saveMemoryState(){const _0x21f7a1=_0x5104,_0x480c38=getContext();if(_0x480c38[_0x21f7a1(0x28d)]&&_0x480c38['chat'][_0x21f7a1(0x1ff)]>0x0){const _0x3b8f3b=_0x480c38[_0x21f7a1(0x28d)][_0x480c38[_0x21f7a1(0x28d)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x3b8f3b))return!![];}return![];}function _0x1362(){const _0x37ba99=['name','执行AI指令:\x20updateRow(tableIndex=','global_table_preset','\x0a*\x20','\x0a---\x0a','rowLimitRule','dispatchEvent','执行者','未能在上一楼找到可用的表格状态。','success','填表完成','),已智能转换为在表格\x20[','执行AI指令:\x20deleteRow(tableIndex=','【增加】:\x20','操作成功','fill','任务栏','设定栏','slice','全局预设已被清除。','rule_add','\x20行索引\x200\x20到\x20',',\x20rowIndex=','成功在表格\x20','新列\x201','type','AI指令块为空无需执行任何操作。',']\x20的表头“','confirm','【触发条件】当两个NPC之间的关系性质发生转变如从\x27盟友\x27变为\x27背叛者\x27必须更新。','无法回退:聊天记录不足。','UI操作\x20\x22','从预设模板生成默认表格...',')超出规定(','用户取消了导入操作。','below','createElement','table_system_enabled','pending-deletion','开始时间/结束时间','AI指令错误尝试在不存在的表格索引\x20','(该表当前内容为空)\x0a','aiTemplate','全局预设已设置!新聊天将默认使用此预设。','新表格状态已强制写入最新消息并立即保存。','removeChild','every','createObjectURL','message','已成功将回退后的状态保存至最新消息。',')行以下,但切莫完全删除。】','info','预设已成功导入并应用。','已提交并永久删除了\x20','simplifyRowThreshold','在第\x20','210138sMkmdw','已成功创建新表格:[','设置成功','全局预设已清除,新聊天将使用默认模板。','导入失败:','left','这是一个新创建的表格。','number','技能名','未在AI返回内容中找到有效的\x20<Amily2Edit>\x20指令块。','AMILY2_TABLE_UPDATED','download','无法移动表格:索引\x20','1249442hBrEpv',',\x20data=','replace','toISOString',']\x20新增了一列。','chat','技能效果','getPrototypeOf','\x20行。','target','未在聊天记录中找到表格,正在加载全局预设...','splice','【全局预设导入】\x0a\x0a这将把选定的预设设置为所有新聊天的默认表格。\x0a\x0a此操作将覆盖任何已存在的全局预设是否确定','导出成功','object','\x22\x20已重命名为\x20\x22','\x0a【系统提示】表格前\x20','【核心作用】专门用于记录除主角<user>以外的角色之间的复杂人际关系网NPC\x20to\x20NPC。\x0a【字段详解】\x0a-\x20主动方:\x20关系的发起者或主体例如\x27艾克\x27。\x0a-\x20被动方:\x20关系的接收者或对象例如\x27莉娜\x27。\x0a-\x20关系:\x20用简短的词汇描述两者之间的关系本质如\x27暗恋\x27、\x27世仇\x27、\x27师徒\x27。\x0a-\x20详情:\x20对这段关系的具体描述或背景补充。','【核心作用】追踪故事中的主要情节线、目标和挑战。只记录对剧情发展有重大影响的“任务”,忽略日常琐事。\x0a【字段详解】\x0a-\x20任务名:\x20任务的简洁概括如\x27寻找失落的神器\x27。\x0a-\x20类型:\x20任务的分类如\x27主线\x27、\x27支线\x27、\x27个人\x27、\x27约定\x27。\x0a-\x20详情:\x20对任务目标和背景的简要描述。\x0a-\x20状态:\x20任务的当前进展如\x27未开始\x27、\x27进行中\x27、\x27已完成\x27、\x27已失败\x27、\x27已取消\x27。\x0a-\x20执行者:\x20负责完成此任务的角色名。\x0a-\x20地点:\x20任务关键环节发生的地点。\x0a-\x20开始时间/结束时间:\x20记录任务的起止时间格式\x27YYYY-MM-DD\x27若未结束则结束时间留空。\x0a-\x20结果:\x20任务完成或失败后的最终结果。','【当前(','”已更新为“','headers','UI已更新以显示回退后的状态。','\x20列。','【核心作用】专门用于记录主角<user>掌握的各种技能、魔法、被动能力或特殊专长。\x0a【字段详解】\x0a-\x20技能名:\x20技能的正式名称。\x0a-\x20技能效果:\x20清晰、简洁地描述该技能使用时产生的具体效果、消耗和限制条件。','导入操作已取消。','2280420ADnToH','删除列失败:在表格\x20','limit','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20const\x20{\x20insertRow,\x20deleteRow,\x20updateRow\x20}\x20=\x20runner;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','forEach','|\x20...\x20|\x20','\x20的列。','表格状态已准备写入消息\x20[','插入行失败:找不到索引为\x20','[SuperMemory]\x20已从元数据恢复内存状态并刷新\x20UI。','trim','【删除】:\x20','导入预设失败:\x20','表格顺序调整后的状态已强制写入最新消息并立即保存。','时空栏','【触发条件】当两个NPC之间的关系彻底断绝且不再影响剧情或者其中一方彻底消失/死亡时,可以删除。','add','batch_filler_flow_template','【触发条件】当一个物品被明确赋予了特殊意义(如被赠予、在关键事件中扮演重要角色)或展示出独特功能时,应为其创建条目。','Log','此地角色','文件格式无效或缺少版本号/表格数据。','所有表格的剧情内容已清空。','rule_delete','未能保存回退状态,操作中止。','constructor','【触发条件】当<user>在故事中首次成功施展或习得一个全新的、表格中未记录的技能时,必须添加。','未能在上一楼找到可用的表格状态,无法回退。','其他重要信息','【触发条件】当角色的任何信息发生持久性或关键性变化时,必须更新对应单元格。例如:\x0a1.\x20外貌/身形/衣着发生永久性改变(如断肢、换上新装备)。\x0a2.\x20性格因重大事件而扭转。\x0a3.\x20身份或职业发生变更如继承王位、被解雇。\x0a4.\x20与<user>的关系发生根本性转变(如从敌人变为盟友)。','未找到任何表格数据或全局预设,使用默认模板。','清空行数据后的状态已强制写入最新消息并立即保存。',']\x20的规则已更新。','parse','charLimitRule','世界钟','用户取消了全局预设导入操作。','角色名','表格系统总开关已关闭,跳过回退填表。','tables','[SuperMemory]\x20Dispatched\x20update\x20event\x20for\x20','【核心作用】此表格用于精确追踪故事发生的即时时空背景,确保时间与空间的连续性。它应该始终只包含一行,代表当前的“镜头”位置。\x0a【字段详解】\x0a-\x20日期:\x20格式为\x27YYYY-MM-DD\x27。若日期未知请根据上下文合理推断或设定一个初始日期如\x27大夏3年-9月-10日\x27。\x0a-\x20时段:\x20严格遵循规定凌晨0-5时早晨5-8时上午8-11时中午11-13时下午13-16时傍晚16-19时晚上19-24时。\x0a-\x20时间:\x20格式为\x27HH:MM\x27。若时间未知可根据时段估算如\x2708:30\x27。\x0a-\x20地点:\x20描述当前场景发生的具体位置应尽可能精确例如\x27XX街的咖啡馆\x27而非\x27城里\x27。\x0a-\x20此地角色:\x20列出当前场景中所有在场且参与互动的主要角色用\x27/\x27分隔。','正在尝试从第\x20','”已向','---','normal','【清除全局预设】\x0a\x0a您确定要清除已设置的全局预设吗\x0a\x0a清除后新聊天将恢复使用扩展内置的默认表格模板。','\x0a\x20\x20\x20\x20\x20\x20\x20\x20','rowIndex','插入了新列。','角色栏','some','map','onload','files','表格名称不能为空。','\x20|\x0a','application/json','join','状态回退失败,已中止操作。','【触发条件】只能在<user>明确表示要修改某条设定时,才能更新对应行的描述。','\x20行已恢复。','.json',')的历史内容已简化并锁定,无需读取或修改。请专注于后续行的内容。\x0a','\x20的第\x20','columnIndex','filter','8731431lqmIgG','input','操作已取消。','\x20行位置插入了新行。','【触发条件】当以下情况发生时,应添加新行:\x0a1.\x20角色接下一个明确的、有目标的委托或命令。\x0a2.\x20角色们达成一个具体的、需要在未来执行的约定。\x0a3.\x20角色为自己设定一个长期的、关键性的目标。','拥有者','...]','\x20行已标记为待删除。','【核心作用】此表格是角色关系和状态的核心数据库,用于记录所有在故事中出现的重要角色的详细信息。\x0a【字段详解】\x0a-\x20角色名:\x20角色的唯一标识。\x0a-\x20外貌:\x20描述五官、发型、发色、肤色等面部特征。\x0a-\x20身形:\x20描述身高、体型、肌肉状况、特殊身体标记如伤疤等。\x0a-\x20衣着:\x20描述角色当前或标志性的穿着包括服装、配饰等。\x0a-\x20性格:\x20概括角色的核心性格特质使用1-3个关键词如\x27勇敢/鲁莽/忠诚\x27。\x0a-\x20身份:\x20角色的社会背景或出身如\x27贵族后裔\x27、\x27流浪者\x27。\x0a-\x20职业:\x20角色赖以谋生的工作或职责如\x27佣兵\x27、\x27学者\x27。\x0a-\x20与<user>关系:\x20描述该角色与主角<user>之间的社会或情感关系,如\x27盟友\x27、\x27导师\x27、\x27敌人\x27。\x0a-\x20爱好:\x20角色的兴趣和消遣活动。\x0a-\x20住所:\x20角色的常住地。\x0a-\x20其他重要信息:\x20记录任何不属于以上类别但对角色至关重要的信息如特殊能力、过去的经历等。','log','【修改】:\x20','无法找到可锚定的消息或保存失败,清空操作可能不会被持久化!','与<user>关系','\x20已在边界。','用户取消了清除全局预设的操作。','\x20(本表格无需重新整理,仅供参考)','amily2-force-ui-reload','\x20行移动到第\x20','click','version','143185KJniqV','【触发条件】当故事开始,且此表格为空时,必须立即根据初始场景创建第一行。','substring',']\x20已被成功废黜。','...','【触发条件】当物品的“状态”(如被损坏)、“拥有者”(如被转交或被盗)或“详情”(如发现了新功能)发生变化时,必须更新。','【触发条件】当任务列表超过10行时优先删除最早的、已经“已完成”且与当前剧情关联度最低的任务。如果存在内容完全重复的任务应删除。','charLimitRules','执行AI指令:\x20insertRow(tableIndex=','操作完成','Amily2-Table-Preset-v3.0-separated_templates','aiRuleTemplate','rows','名为\x20\x22','batch_filler_rule_template','重命名失败','【触发条件】当任务的“状态”发生任何变化时,必须更新。例如,从\x27进行中\x27变为\x27已完成\x27。当任务的“详情”或“结果”有新的关键信息补充时也应更新。','match','【触发条件】当<user>通过括号、旁白或其他明确的“第四面墙”方式,提出关于故事背景、规则或未来走向的指令时,必须记录于此。','创建失败','body','push','表格系统总开关已关闭,无法执行回退填表。','重新填表失败:\x20','技能栏','【触发条件】当一个已知技能的效果发生进化、变异或被添加了新的限制/效果时(例如,技能升级),必须更新其“技能效果”描述。','function','\x20|\x20','被动方','clear','状态回退成功,准备重新填表...','rule_update','无需清除,当前未设置任何全局预设。','没有可导出的表格数据。',']\x20在第\x20','【触发条件】如果发现表格中存在两个描述完全相同的重复技能,应删除其中一个。如果记录了非<user>的技能,应立即删除。','【触发条件】当一个有名有姓的角色首次出现,并与<user>或当前剧情发生有意义的互动时,必须为其创建新的一行。','】已成功导出。','7DqOnbu','物品栏','\x20的表格。','injectionFlowTemplate','【触发条件】当两个NPC之间展现出明确的、非临时性的人际关系时应添加新行。','revokeObjectURL','Amily2-','表格\x20[','所有表格的行数据已在内存中清空。','【核心作用】记录那些在故事中具有特殊功能、背景或情感价值的关键物品。普通物品不应记录。\x0a【字段详解】\x0a-\x20物品名:\x20物品的名称。\x0a-\x20类型:\x20物品的分类如\x27武器\x27、\x27道具\x27、\x27信物\x27、\x27关键物品\x27。\x0a-\x20详情:\x20描述物品的外观、材质和已知功能。\x0a-\x20状态:\x20物品的当前状况如\x27完好\x27、\x27破损\x27、\x27能量耗尽\x27。\x0a-\x20拥有者:\x20当前持有该物品的角色名。\x0a-\x20重要原因:\x20解释该物品为何重要例如\x27是解开谜题的钥匙\x27或\x27是母亲的遗物\x27。','super_memory_enabled','length','size','导入成功','\x22\x20的表格已存在。','执行AI指令时发生错误:\x20','mes','warn','stringify','batchFillerFlowTemplate','href','(此处省略未选中的表格内容,仅提供表头供索引参考)\x0a','\x20条消息中找到基准表格数据。','导入的表格数据格式不正确:\x20','】已开始下载。','columnWidths','[SuperMemory]\x20Dispatching\x20update\x20events\x20for\x20ALL\x20tables...','主动方','rowStatuses',')行(','纯净预设',']\x20的第\x20',')列,字符超出规定(','导入的预设已强制写入最新消息并立即保存。','32MuvIAl','405425SelQhH','Amily2-Table-Preset-v2.0-full','toString','当前没有设置全局预设。','所有AI指令已成功执行完毕。','batchFillerRuleTemplate','split','未知操作','isArray','【触发条件】当一个物品被彻底摧毁、消耗完毕或永久失去其特殊意义时,可以删除。','result','error',')字限制,请进行缩减。】','导入全局预设失败:\x20',')行,请结合剧情缩减至(','无法创建表格:名称不能为空。','新列\x20','file','加载全局预设失败:\x20','aiFlowTemplate','无法清空:当前表格状态为空。','无法导出:当前表格状态为空。','无法移动列:索引\x20','---已锁定---','includes','amily2_ai_template','【核心作用】此表格记录了来自<user>的、超越故事本身的“元指令”或世界观设定拥有最高解释权。内容应被严格遵守禁止AI自行修改。\x0a【字段详解】\x0a-\x20类型:\x20指令的分类如\x27世界观设定\x27、\x27剧情走向要求\x27、\x27角色行为禁令\x27。\x0a-\x20具体描述:\x20完整、准确地记录<user>提出的具体要求。','物品名','note','表格\x20\x22','accept','\x22\x20已更新内存状态。','回退状态保存失败,操作中止。','已清除所有表格的更新标记。','执行AI指令时出错:\x20','导入的预设中缺少指令模板字段,模板将不会被更新。','【说明】:\x0a','【触发条件】当一个角色被确认永久性死亡(非假死或失踪),且其存在不再对后续剧情有直接影响时,可以删除该行。','具体描述','6793680HplZfY','extra','重命名失败:名称不能为空。','【操作权限】:\x20禁止修改此表格\x0a','成功删除了表格\x20'];_0x1362=function(){return _0x37ba99;};return _0x1362();}export function getMemoryState(){return currentTablesState;}const defaultTemplate={'tables':[{'name':_0x2b9298(0x2b0),'headers':['日期','时段','时间','地点',_0x2b9298(0x2b6)],'note':_0x2b9298(0x1a0),'rule_add':_0x2b9298(0x1cf),'rule_delete':'【触发条件】任何时候,如果此表格的行数超过一行,必须删除旧的行,只保留最新、最准确的一行。','rule_update':'【触发条件】当以下任一情况发生时,必须更新此行:\x0a1.\x20时间发生显著跳跃例如\x27几小时后\x27、\x27第二天\x27。\x0a2.\x20角色从一个地点移动到另一个地点。\x0a3.\x20场景中关键角色的出入导致在场人员发生变化。','charLimitRules':{},'rowLimitRule':0x1,'rows':[]},{'name':_0x2b9298(0x1a9),'headers':[_0x2b9298(0x19c),'外貌','身形','衣着','性格','身份','职业',_0x2b9298(0x1c6),'爱好','住所',_0x2b9298(0x193)],'note':_0x2b9298(0x1c2),'rule_add':_0x2b9298(0x1f2),'rule_delete':_0x2b9298(0x23c),'rule_update':_0x2b9298(0x194),'charLimitRules':{'10':0x1e},'rowLimitRule':0x0,'rows':[]},{'name':'关系栏','headers':[_0x2b9298(0x20f),_0x2b9298(0x1ea),'关系','详情'],'columnWidths':[],'note':_0x2b9298(0x299),'rule_add':_0x2b9298(0x1f8),'rule_delete':_0x2b9298(0x2b1),'rule_update':_0x2b9298(0x260),'charLimitRules':{},'rowLimitRule':0x0,'rows':[],'rowStatuses':[]},{'name':_0x2b9298(0x253),'headers':['任务名','类型','详情','状态',_0x2b9298(0x24a),'地点',_0x2b9298(0x26a),'结果'],'note':_0x2b9298(0x29a),'rule_add':_0x2b9298(0x1be),'rule_delete':_0x2b9298(0x1d4),'rule_update':_0x2b9298(0x1de),'charLimitRules':{},'rowLimitRule':0xa,'rows':[]},{'name':_0x2b9298(0x1f5),'headers':[_0x2b9298(0x232),'类型','详情','状态',_0x2b9298(0x1bf),'重要原因'],'note':_0x2b9298(0x1fd),'rule_add':_0x2b9298(0x2b4),'rule_delete':_0x2b9298(0x220),'rule_update':_0x2b9298(0x1d3),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]},{'name':_0x2b9298(0x1e6),'headers':[_0x2b9298(0x283),_0x2b9298(0x28e)],'note':_0x2b9298(0x2a0),'rule_add':_0x2b9298(0x191),'rule_delete':_0x2b9298(0x1f1),'rule_update':_0x2b9298(0x1e7),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]},{'name':_0x2b9298(0x254),'headers':['类型',_0x2b9298(0x23d)],'note':_0x2b9298(0x231),'rule_add':_0x2b9298(0x1e0),'rule_delete':'【触发条件】只能在<user>明确表示要移除或废弃某条设定时,才能删除对应行。','rule_update':_0x2b9298(0x1b3),'charLimitRules':{},'rowLimitRule':0x0,'rows':[]}]};function getDefaultTables(){const _0x5e83af=_0x2b9298;log(_0x5e83af(0x263),'info');const _0x3d2811=JSON['parse'](JSON[_0x5e83af(0x206)](defaultTemplate['tables']));return _0x3d2811[_0x5e83af(0x2a6)](_0x2475db=>{const _0x4ebfb4=_0x5e83af;_0x2475db[_0x4ebfb4(0x199)]={'columnIndex':-0x1,'limit':0x0},_0x2475db[_0x4ebfb4(0x248)]=0x0,_0x2475db[_0x4ebfb4(0x20d)]=[];}),_0x3d2811;}export function loadTables(_0x39fbda=-0x1){const _0x159000=_0x2b9298,_0x18c2ee=getContext();if(_0x18c2ee&&_0x18c2ee[_0x159000(0x28d)]&&_0x18c2ee[_0x159000(0x28d)][_0x159000(0x1ff)]>0x0){const _0x3c2aa5=_0x39fbda===-0x1?_0x18c2ee['chat'][_0x159000(0x1ff)]-0x1:_0x39fbda-0x1;for(let _0x48f413=_0x3c2aa5;_0x48f413>=0x0;_0x48f413--){const _0x5dd016=_0x18c2ee[_0x159000(0x28d)][_0x48f413];if(_0x5dd016[_0x159000(0x23f)]&&_0x5dd016[_0x159000(0x23f)][TABLE_DATA_KEY]){log(_0x159000(0x27a)+_0x48f413+_0x159000(0x20a),_0x159000(0x276));let _0x419a26=JSON['parse'](JSON['stringify'](_0x5dd016['extra'][TABLE_DATA_KEY]));return _0x419a26['forEach'](_0x6c47e6=>{const _0x3fbcf0=_0x159000;if(_0x6c47e6[_0x3fbcf0(0x233)]===undefined)_0x6c47e6[_0x3fbcf0(0x233)]='无';if(_0x6c47e6[_0x3fbcf0(0x257)]===undefined)_0x6c47e6[_0x3fbcf0(0x257)]='允许';if(_0x6c47e6[_0x3fbcf0(0x18e)]===undefined)_0x6c47e6[_0x3fbcf0(0x18e)]='允许';if(_0x6c47e6[_0x3fbcf0(0x1ed)]===undefined)_0x6c47e6[_0x3fbcf0(0x1ed)]='允许';_0x6c47e6[_0x3fbcf0(0x199)]&&!_0x6c47e6[_0x3fbcf0(0x1d5)]&&(_0x6c47e6[_0x3fbcf0(0x1d5)]={},_0x6c47e6['charLimitRule']['columnIndex']!==-0x1&&_0x6c47e6['charLimitRule'][_0x3fbcf0(0x2a4)]>0x0&&(_0x6c47e6['charLimitRules'][_0x6c47e6[_0x3fbcf0(0x199)][_0x3fbcf0(0x1b8)]]=_0x6c47e6[_0x3fbcf0(0x199)]['limit']));delete _0x6c47e6[_0x3fbcf0(0x199)];if(_0x6c47e6[_0x3fbcf0(0x248)]===undefined)_0x6c47e6[_0x3fbcf0(0x248)]=0x0;if(_0x6c47e6['columnWidths']===undefined)_0x6c47e6[_0x3fbcf0(0x20d)]=[];!_0x6c47e6['rowStatuses']&&(_0x6c47e6[_0x3fbcf0(0x210)]=Array(_0x6c47e6['rows']['length'])[_0x3fbcf0(0x252)](_0x3fbcf0(0x1a4)));}),currentTablesState=_0x419a26,dispatchAllTablesUpdate(),currentTablesState;}}}if(extension_settings[extensionName]?.[_0x159000(0x245)]){log(_0x159000(0x292),_0x159000(0x276));try{const _0x196f1b=extension_settings[extensionName][_0x159000(0x245)];return currentTablesState=JSON['parse'](JSON['stringify'](_0x196f1b[_0x159000(0x19e)])),_0x196f1b[_0x159000(0x21c)]!==undefined&&saveBatchFillerRuleTemplate(_0x196f1b[_0x159000(0x21c)]),_0x196f1b[_0x159000(0x207)]!==undefined&&saveBatchFillerFlowTemplate(_0x196f1b[_0x159000(0x207)]),dispatchAllTablesUpdate(),currentTablesState;}catch(_0x25e472){log(_0x159000(0x229)+_0x25e472['message'],_0x159000(0x222));}}return log(_0x159000(0x195),_0x159000(0x276)),currentTablesState=getDefaultTables(),dispatchAllTablesUpdate(),currentTablesState;}export function saveStateToMessage(_0x3b4696,_0x1be52c){const _0x500014=_0x2b9298;if(!_0x3b4696||!_0x1be52c)return log('缺少状态或目标消息,无法保存。',_0x500014(0x222)),![];return!_0x1be52c[_0x500014(0x23f)]&&(_0x1be52c[_0x500014(0x23f)]={}),_0x1be52c[_0x500014(0x23f)][TABLE_DATA_KEY]=JSON[_0x500014(0x198)](JSON[_0x500014(0x206)](_0x3b4696)),log(_0x500014(0x2a9)+_0x1be52c[_0x500014(0x204)][_0x500014(0x1d0)](0x0,0x14)+_0x500014(0x1c0),'info'),!![];}export function saveTables(_0x2c2cce=_0x2b9298(0x21e)){const _0x19e1fa=_0x2b9298;return log(_0x19e1fa(0x262)+_0x2c2cce+_0x19e1fa(0x236),_0x19e1fa(0x276)),!![];}export function deleteColumn(_0x4713f7,_0x5de253){const _0x14a040=_0x2b9298,_0x3f1d07=getMemoryState();if(!_0x3f1d07[_0x4713f7]||_0x5de253<0x0||_0x5de253>=_0x3f1d07[_0x4713f7][_0x14a040(0x29d)][_0x14a040(0x1ff)]){log(_0x14a040(0x2a3)+_0x4713f7+'\x20中找不到索引为\x20'+_0x5de253+_0x14a040(0x2a8),'error');return;}_0x3f1d07[_0x4713f7][_0x14a040(0x29d)][_0x14a040(0x293)](_0x5de253,0x1),_0x3f1d07[_0x4713f7]['rows'][_0x14a040(0x2a6)](_0x19b23f=>{const _0x46cd3d=_0x14a040;_0x19b23f[_0x46cd3d(0x1ff)]>_0x5de253&&_0x19b23f[_0x46cd3d(0x293)](_0x5de253,0x1);}),_0x3f1d07[_0x4713f7][_0x14a040(0x20d)]&&_0x3f1d07[_0x4713f7][_0x14a040(0x20d)][_0x14a040(0x1ff)]>_0x5de253&&_0x3f1d07[_0x4713f7][_0x14a040(0x20d)][_0x14a040(0x293)](_0x5de253,0x1),log(_0x14a040(0x242)+_0x4713f7+_0x14a040(0x1b7)+(_0x5de253+0x1)+_0x14a040(0x29f),_0x14a040(0x24c)),saveTables(_0x3f1d07),dispatchTableUpdate(_0x4713f7);}export function moveRow(_0x5807c,_0x5d79e9,_0x573ab0){const _0x3b49c0=_0x2b9298,_0x515d82=getMemoryState(),_0x28edd8=_0x515d82[_0x5807c];if(!_0x28edd8||_0x5d79e9<0x0||_0x5d79e9>=_0x28edd8[_0x3b49c0(0x1da)][_0x3b49c0(0x1ff)])return;const _0x5d6149=_0x573ab0==='up'?_0x5d79e9-0x1:_0x5d79e9+0x1;if(_0x5d6149<0x0||_0x5d6149>=_0x28edd8[_0x3b49c0(0x1da)][_0x3b49c0(0x1ff)])return;const [_0x1b124f]=_0x28edd8[_0x3b49c0(0x1da)][_0x3b49c0(0x293)](_0x5d79e9,0x1);_0x28edd8[_0x3b49c0(0x1da)][_0x3b49c0(0x293)](_0x5d6149,0x0,_0x1b124f);if(_0x28edd8[_0x3b49c0(0x210)]&&_0x28edd8[_0x3b49c0(0x210)][_0x3b49c0(0x1ff)]===_0x28edd8[_0x3b49c0(0x1da)][_0x3b49c0(0x1ff)]+0x1){const [_0xd96db6]=_0x28edd8[_0x3b49c0(0x210)][_0x3b49c0(0x293)](_0x5d79e9,0x1);_0x28edd8[_0x3b49c0(0x210)]['splice'](_0x5d6149,0x0,_0xd96db6);}log('成功将表格\x20'+_0x5807c+_0x3b49c0(0x1b7)+(_0x5d79e9+0x1)+_0x3b49c0(0x1cb)+(_0x5d6149+0x1)+'\x20行。',_0x3b49c0(0x24c)),saveTables(_0x515d82),dispatchTableUpdate(_0x5807c);}export function insertRow(_0x2e9909,_0x530dc7,_0x1db628=_0x2b9298(0x266)){const _0x13eced=_0x2b9298,_0x15c0bd=getMemoryState(),_0x56989d=_0x15c0bd[_0x2e9909];if(!_0x56989d){log(_0x13eced(0x2aa)+_0x2e9909+_0x13eced(0x1f6),_0x13eced(0x222));return;}let _0x2f1e99;typeof _0x530dc7===_0x13eced(0x282)?_0x2f1e99=_0x1db628==='above'?_0x530dc7:_0x530dc7+0x1:_0x2f1e99=_0x56989d[_0x13eced(0x1da)][_0x13eced(0x1ff)];if(_0x2f1e99<0x0)_0x2f1e99=0x0;if(_0x2f1e99>_0x56989d[_0x13eced(0x1da)][_0x13eced(0x1ff)])_0x2f1e99=_0x56989d['rows'][_0x13eced(0x1ff)];const _0x21e03c=new Array(_0x56989d[_0x13eced(0x29d)][_0x13eced(0x1ff)])[_0x13eced(0x252)]('');if(typeof _0x530dc7===_0x13eced(0x296)&&_0x530dc7!==null)for(const _0x26cf96 in _0x530dc7){const _0x2a288b=parseInt(_0x26cf96,0xa);!isNaN(_0x2a288b)&&_0x2a288b<_0x21e03c['length']&&(_0x21e03c[_0x2a288b]=_0x530dc7[_0x26cf96],addHighlight(_0x2e9909,_0x2f1e99,_0x2a288b));}_0x56989d[_0x13eced(0x1da)][_0x13eced(0x293)](_0x2f1e99,0x0,_0x21e03c);if(!_0x56989d[_0x13eced(0x210)])_0x56989d[_0x13eced(0x210)]=Array(_0x56989d[_0x13eced(0x1da)][_0x13eced(0x1ff)])[_0x13eced(0x252)](_0x13eced(0x1a4));_0x56989d[_0x13eced(0x210)][_0x13eced(0x293)](_0x2f1e99,0x0,'normal'),updatedTables[_0x13eced(0x2b2)](_0x2e9909),dispatchTableUpdate(_0x2e9909),log(_0x13eced(0x25a)+_0x56989d[_0x13eced(0x243)]+'\x20(索引\x20'+_0x2e9909+')\x20的第\x20'+(_0x2f1e99+0x1)+_0x13eced(0x1bd),_0x13eced(0x24c));const _0x38559a=getContext();if(_0x38559a[_0x13eced(0x28d)]&&_0x38559a[_0x13eced(0x28d)][_0x13eced(0x1ff)]>0x0){const _0x17450f=_0x38559a[_0x13eced(0x28d)][_0x38559a[_0x13eced(0x28d)][_0x13eced(0x1ff)]-0x1];if(saveStateToMessage(_0x15c0bd,_0x17450f)){saveChat();return;}}saveChatDebounced();}export function addRow(_0x3e9f07){const _0x554d5b=_0x2b9298;if(!currentTablesState||!currentTablesState[_0x3e9f07])return;const _0x250b9c=currentTablesState[_0x3e9f07],_0x3cfdad=_0x250b9c[_0x554d5b(0x29d)][_0x554d5b(0x1ff)],_0x18a99a=Array(_0x3cfdad)[_0x554d5b(0x252)]('');_0x250b9c[_0x554d5b(0x1da)]['push'](_0x18a99a);if(!_0x250b9c['rowStatuses'])_0x250b9c[_0x554d5b(0x210)]=Array(_0x250b9c[_0x554d5b(0x1da)]['length'])[_0x554d5b(0x252)](_0x554d5b(0x1a4));_0x250b9c[_0x554d5b(0x210)][_0x554d5b(0x1e3)](_0x554d5b(0x1a4)),updatedTables[_0x554d5b(0x2b2)](_0x3e9f07),dispatchTableUpdate(_0x3e9f07);const _0x373332=_0x554d5b(0x1fb)+_0x250b9c[_0x554d5b(0x243)]+']\x20新增了一行。';log(_0x373332,_0x554d5b(0x276));const _0x2395fe=getContext();if(_0x2395fe[_0x554d5b(0x28d)]&&_0x2395fe['chat'][_0x554d5b(0x1ff)]>0x0){const _0x45256b=_0x2395fe[_0x554d5b(0x28d)][_0x2395fe['chat'][_0x554d5b(0x1ff)]-0x1];if(saveStateToMessage(currentTablesState,_0x45256b)){saveChat();return;}}saveChatDebounced();}export function addColumn(_0x11dd6d){const _0x95a228=_0x2b9298;if(!currentTablesState||!currentTablesState[_0x11dd6d])return;const _0x4a88e9=currentTablesState[_0x11dd6d],_0x4708d0=_0x95a228(0x227)+(_0x4a88e9[_0x95a228(0x29d)]['length']+0x1);_0x4a88e9[_0x95a228(0x29d)][_0x95a228(0x1e3)](_0x4708d0),_0x4a88e9[_0x95a228(0x1da)]['forEach'](_0x353096=>_0x353096[_0x95a228(0x1e3)](''));if(!_0x4a88e9[_0x95a228(0x20d)])_0x4a88e9['columnWidths']=[];_0x4a88e9[_0x95a228(0x20d)]['push'](null);const _0x15af49=_0x95a228(0x1fb)+_0x4a88e9[_0x95a228(0x243)]+_0x95a228(0x28c);log(_0x15af49,_0x95a228(0x276));const _0x1223c4=getContext();if(_0x1223c4['chat']&&_0x1223c4[_0x95a228(0x28d)][_0x95a228(0x1ff)]>0x0){const _0x46dfae=_0x1223c4['chat'][_0x1223c4[_0x95a228(0x28d)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x46dfae)){saveChat();return;}}saveChatDebounced();}export function updateHeader(_0x366130,_0x4038fa,_0x43e45e){const _0x3f71a5=_0x2b9298;if(!currentTablesState||!currentTablesState[_0x366130]||currentTablesState[_0x366130]['headers'][_0x4038fa]===undefined)return;const _0x4fea36=currentTablesState[_0x366130][_0x3f71a5(0x243)],_0x5c6963=currentTablesState[_0x366130]['headers'][_0x4038fa];currentTablesState[_0x366130][_0x3f71a5(0x29d)][_0x4038fa]=_0x43e45e;const _0x2750e9='表格\x20['+_0x4fea36+_0x3f71a5(0x25e)+_0x5c6963+_0x3f71a5(0x29c)+_0x43e45e+'”。';log(_0x2750e9,'info');const _0x1e9a32=getContext();if(_0x1e9a32[_0x3f71a5(0x28d)]&&_0x1e9a32[_0x3f71a5(0x28d)][_0x3f71a5(0x1ff)]>0x0){const _0x1009dd=_0x1e9a32[_0x3f71a5(0x28d)][_0x1e9a32[_0x3f71a5(0x28d)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x1009dd)){saveChat();return;}}saveChatDebounced();}export async function deleteRow(_0x341bb,_0x326278){const _0x2545ec=_0x2b9298,_0x1438c3=currentTablesState?.[_0x341bb];if(!_0x1438c3||!_0x1438c3[_0x2545ec(0x1da)][_0x326278])return;!_0x1438c3[_0x2545ec(0x210)]&&(_0x1438c3[_0x2545ec(0x210)]=Array(_0x1438c3[_0x2545ec(0x1da)][_0x2545ec(0x1ff)])[_0x2545ec(0x252)](_0x2545ec(0x1a4)));_0x1438c3['rowStatuses'][_0x326278]=_0x2545ec(0x269),updatedTables[_0x2545ec(0x2b2)](_0x341bb);const _0x46297e=_0x2545ec(0x1fb)+_0x1438c3[_0x2545ec(0x243)]+_0x2545ec(0x213)+(_0x326278+0x1)+_0x2545ec(0x1c1);log(_0x46297e,_0x2545ec(0x276));const _0x1f8991=getContext();if(_0x1f8991[_0x2545ec(0x28d)]?.[_0x2545ec(0x1ff)]>0x0){const _0x29658a=_0x1f8991[_0x2545ec(0x28d)][_0x1f8991[_0x2545ec(0x28d)][_0x2545ec(0x1ff)]-0x1];if(saveStateToMessage(currentTablesState,_0x29658a)){await saveChat(),renderTables(),dispatchTableUpdate(_0x341bb);return;}}await saveChatDebounced(),renderTables(),dispatchTableUpdate(_0x341bb);}export async function restoreRow(_0x1b0a74,_0x2cf92b){const _0x4fb08a=_0x2b9298,_0x547108=currentTablesState?.[_0x1b0a74];if(!_0x547108||!_0x547108[_0x4fb08a(0x1da)][_0x2cf92b]||!_0x547108['rowStatuses'])return;_0x547108[_0x4fb08a(0x210)][_0x2cf92b]=_0x4fb08a(0x1a4),updatedTables[_0x4fb08a(0x2b2)](_0x1b0a74);const _0x486b80=_0x4fb08a(0x1fb)+_0x547108[_0x4fb08a(0x243)]+']\x20的第\x20'+(_0x2cf92b+0x1)+_0x4fb08a(0x1b4);log(_0x486b80,_0x4fb08a(0x276));const _0x589e43=getContext();if(_0x589e43['chat']?.['length']>0x0){const _0x3e6eb7=_0x589e43[_0x4fb08a(0x28d)][_0x589e43[_0x4fb08a(0x28d)][_0x4fb08a(0x1ff)]-0x1];if(saveStateToMessage(currentTablesState,_0x3e6eb7)){await saveChat(),renderTables(),dispatchTableUpdate(_0x1b0a74);return;}}await saveChatDebounced(),renderTables(),dispatchTableUpdate(_0x1b0a74);}export function commitPendingDeletions(){const _0x499a33=_0x2b9298;if(!currentTablesState)return![];let _0x405426=0x0;currentTablesState[_0x499a33(0x2a6)]((_0x3f82b4,_0x27352c)=>{const _0x4556ff=_0x499a33;if(!_0x3f82b4[_0x4556ff(0x210)]||_0x3f82b4['rowStatuses'][_0x4556ff(0x1ff)]===0x0)return;let _0x2952f6=![];for(let _0x32315a=_0x3f82b4[_0x4556ff(0x1da)]['length']-0x1;_0x32315a>=0x0;_0x32315a--){_0x3f82b4['rowStatuses'][_0x32315a]===_0x4556ff(0x269)&&(_0x3f82b4[_0x4556ff(0x1da)]['splice'](_0x32315a,0x1),_0x3f82b4[_0x4556ff(0x210)][_0x4556ff(0x293)](_0x32315a,0x1),_0x405426++,_0x2952f6=!![]);}_0x2952f6&&updatedTables['add'](_0x27352c);});if(_0x405426>0x0)return log(_0x499a33(0x278)+_0x405426+'\x20行。',_0x499a33(0x276)),updatedTables[_0x499a33(0x200)]>0x0&&updatedTables[_0x499a33(0x2a6)](_0x44f2af=>{dispatchTableUpdate(_0x44f2af);}),!![];return![];}export function insertColumn(_0x4af7fa,_0x37d9cf,_0x55505b){const _0x32af32=_0x2b9298;if(!currentTablesState||!currentTablesState[_0x4af7fa])return;const _0x434cc7=currentTablesState[_0x4af7fa],_0x4bff03=_0x55505b==='left'?_0x37d9cf:_0x37d9cf+0x1,_0x8c2f12='新列';_0x434cc7['headers'][_0x32af32(0x293)](_0x4bff03,0x0,_0x8c2f12),_0x434cc7[_0x32af32(0x1da)][_0x32af32(0x2a6)](_0x17e7a5=>_0x17e7a5['splice'](_0x4bff03,0x0,''));if(!_0x434cc7[_0x32af32(0x20d)])_0x434cc7[_0x32af32(0x20d)]=[];_0x434cc7['columnWidths'][_0x32af32(0x293)](_0x4bff03,0x0,null);const _0x4bc7b9='表格\x20['+_0x434cc7['name']+_0x32af32(0x1f0)+(_0x37d9cf+0x1)+'\x20列的'+(_0x55505b===_0x32af32(0x280)?'左侧':'右侧')+_0x32af32(0x1a8);log(_0x4bc7b9,_0x32af32(0x276));const _0x42d2ba=getContext();if(_0x42d2ba[_0x32af32(0x28d)]&&_0x42d2ba['chat']['length']>0x0){const _0x2f9abb=_0x42d2ba[_0x32af32(0x28d)][_0x42d2ba[_0x32af32(0x28d)][_0x32af32(0x1ff)]-0x1];if(saveStateToMessage(currentTablesState,_0x2f9abb)){saveChat();return;}}saveChatDebounced();}export function moveColumn(_0x38ab53,_0x54a145,_0x12e3f6){const _0x38f4fd=_0x2b9298;if(!currentTablesState||!currentTablesState[_0x38ab53])return;const _0x1e99a8=currentTablesState[_0x38ab53],_0x77d15e=_0x1e99a8[_0x38f4fd(0x29d)],_0x3a4473=_0x1e99a8[_0x38f4fd(0x1da)],_0x577654=_0x12e3f6==='left'?_0x54a145-0x1:_0x54a145+0x1;if(_0x577654<0x0||_0x577654>=_0x77d15e[_0x38f4fd(0x1ff)]){log(_0x38f4fd(0x22d)+_0x54a145+_0x38f4fd(0x1c7),_0x38f4fd(0x205));return;}const [_0x1beb2e]=_0x77d15e[_0x38f4fd(0x293)](_0x54a145,0x1);_0x77d15e[_0x38f4fd(0x293)](_0x577654,0x0,_0x1beb2e),_0x3a4473[_0x38f4fd(0x2a6)](_0x5269cf=>{const _0x2eae79=_0x38f4fd,[_0x22732f]=_0x5269cf['splice'](_0x54a145,0x1);_0x5269cf[_0x2eae79(0x293)](_0x577654,0x0,_0x22732f);});if(_0x1e99a8['columnWidths']&&_0x1e99a8['columnWidths'][_0x38f4fd(0x1ff)]>_0x54a145){const [_0x3c4fab]=_0x1e99a8[_0x38f4fd(0x20d)][_0x38f4fd(0x293)](_0x54a145,0x1);_0x1e99a8[_0x38f4fd(0x20d)][_0x38f4fd(0x293)](_0x577654,0x0,_0x3c4fab);}const _0x29d643='表格\x20['+_0x1e99a8[_0x38f4fd(0x243)]+']\x20的列“'+_0x1beb2e+_0x38f4fd(0x1a2)+(_0x12e3f6===_0x38f4fd(0x280)?'左':'右')+'移动。';log(_0x29d643,_0x38f4fd(0x276));const _0x47153a=getContext();if(_0x47153a[_0x38f4fd(0x28d)]&&_0x47153a['chat']['length']>0x0){const _0x44a1c2=_0x47153a[_0x38f4fd(0x28d)][_0x47153a[_0x38f4fd(0x28d)][_0x38f4fd(0x1ff)]-0x1];if(saveStateToMessage(currentTablesState,_0x44a1c2)){saveChat();return;}}saveChatDebounced();}export function deleteTable(_0xacb978){const _0x50e777=_0x2b9298;if(!currentTablesState||!currentTablesState[_0xacb978])return;const _0x3f2396=currentTablesState[_0xacb978]['name'];currentTablesState['splice'](_0xacb978,0x1);const _0x3258c5=_0x50e777(0x1fb)+_0x3f2396+_0x50e777(0x1d1);log(_0x3258c5,_0x50e777(0x24c));const _0x101fbd=getContext();if(_0x101fbd[_0x50e777(0x28d)]&&_0x101fbd[_0x50e777(0x28d)][_0x50e777(0x1ff)]>0x0){const _0x30684a=_0x101fbd[_0x50e777(0x28d)][_0x101fbd[_0x50e777(0x28d)][_0x50e777(0x1ff)]-0x1];if(saveStateToMessage(currentTablesState,_0x30684a)){saveChat(),log('废黜表格后的状态已强制写入最新消息并立即保存。',_0x50e777(0x24c));return;}}log('无法找到可锚定的消息或保存失败,删除操作可能不会被持久化!',_0x50e777(0x222)),saveChatDebounced();}export function addTable(_0x425051){const _0x401fca=_0x2b9298;if(!_0x425051||!_0x425051[_0x401fca(0x2ac)]()){log(_0x401fca(0x226),_0x401fca(0x222)),toastr['error']('表格名称不能为空。',_0x401fca(0x1e1));return;}!currentTablesState&&loadTables();if(currentTablesState[_0x401fca(0x1aa)](_0x3f62bf=>_0x3f62bf[_0x401fca(0x243)]===_0x425051[_0x401fca(0x2ac)]())){log('无法创建表格:名为\x20\x22'+_0x425051+_0x401fca(0x202),'error'),toastr['error'](_0x401fca(0x1db)+_0x425051+_0x401fca(0x202),_0x401fca(0x1e1));return;}const _0x43a72f={'name':_0x425051[_0x401fca(0x2ac)](),'headers':[_0x401fca(0x25b)],'rows':[],'rowStatuses':[],'columnWidths':[],'note':_0x401fca(0x281),'rule_add':'允许','rule_delete':'允许','rule_update':'允许','charLimitRules':{},'rowLimitRule':0x0};currentTablesState['push'](_0x43a72f);const _0x2415fe=_0x401fca(0x27c)+_0x425051[_0x401fca(0x2ac)]()+']。';log(_0x2415fe,_0x401fca(0x24c));const _0x1fe5e8=getContext();if(_0x1fe5e8[_0x401fca(0x28d)]&&_0x1fe5e8['chat'][_0x401fca(0x1ff)]>0x0){const _0xda68d5=_0x1fe5e8[_0x401fca(0x28d)][_0x1fe5e8[_0x401fca(0x28d)][_0x401fca(0x1ff)]-0x1];if(saveStateToMessage(currentTablesState,_0xda68d5)){saveChat(),log(_0x401fca(0x26f),_0x401fca(0x24c));return;}}log('无法找到可锚定的消息或保存失败,新表格可能不会被持久化!',_0x401fca(0x222)),saveChatDebounced();}export function renameTable(_0xe41ef7,_0x305011){const _0xd100ad=_0x2b9298;if(!currentTablesState||!currentTablesState[_0xe41ef7]){log('重命名失败:表格不存在。',_0xd100ad(0x222)),toastr['error']('表格不存在。','重命名失败');return;}const _0x1267e8=_0x305011[_0xd100ad(0x2ac)]();if(!_0x1267e8){log(_0xd100ad(0x240),_0xd100ad(0x222)),toastr[_0xd100ad(0x222)](_0xd100ad(0x1ae),'重命名失败');return;}if(currentTablesState[_0xd100ad(0x1aa)]((_0x472b89,_0x9abb84)=>_0x9abb84!==_0xe41ef7&&_0x472b89[_0xd100ad(0x243)]===_0x1267e8)){log('重命名失败:名为\x20\x22'+_0x1267e8+_0xd100ad(0x202),'error'),toastr[_0xd100ad(0x222)](_0xd100ad(0x1db)+_0x1267e8+'\x22\x20的表格已存在。',_0xd100ad(0x1dd));return;}const _0x171be7=currentTablesState[_0xe41ef7]['name'];currentTablesState[_0xe41ef7][_0xd100ad(0x243)]=_0x1267e8,log(_0xd100ad(0x234)+_0x171be7+_0xd100ad(0x297)+_0x1267e8+'\x22。',_0xd100ad(0x24c));const _0x7bed21=getContext();if(_0x7bed21['chat']&&_0x7bed21[_0xd100ad(0x28d)][_0xd100ad(0x1ff)]>0x0){const _0x5607c7=_0x7bed21[_0xd100ad(0x28d)][_0x7bed21[_0xd100ad(0x28d)][_0xd100ad(0x1ff)]-0x1];if(saveStateToMessage(currentTablesState,_0x5607c7)){saveChat();return;}}saveChatDebounced();}export function moveTable(_0x10765c,_0x36cafa){const _0x50f740=_0x2b9298;if(!currentTablesState||!currentTablesState[_0x10765c])return;const _0x15eaab=_0x36cafa==='up'?_0x10765c-0x1:_0x10765c+0x1;if(_0x15eaab<0x0||_0x15eaab>=currentTablesState[_0x50f740(0x1ff)]){log(_0x50f740(0x287)+_0x10765c+_0x50f740(0x1c7),_0x50f740(0x205));return;}const _0x52e5f8=currentTablesState[_0x10765c];currentTablesState[_0x10765c]=currentTablesState[_0x15eaab],currentTablesState[_0x15eaab]=_0x52e5f8;const _0x53857e='表格\x20['+_0x52e5f8[_0x50f740(0x243)]+']\x20的顺序已调整。';log(_0x53857e,_0x50f740(0x24c));const _0x24e71b=getContext();if(_0x24e71b[_0x50f740(0x28d)]&&_0x24e71b['chat'][_0x50f740(0x1ff)]>0x0){const _0x11c5c5=_0x24e71b[_0x50f740(0x28d)][_0x24e71b[_0x50f740(0x28d)][_0x50f740(0x1ff)]-0x1];if(saveStateToMessage(currentTablesState,_0x11c5c5)){saveChat(),log(_0x50f740(0x2af),_0x50f740(0x24c));return;}}log('无法找到可锚定的消息或保存失败,顺序调整可能不会被持久化!',_0x50f740(0x222)),saveChatDebounced();}export function updateTableRules(_0x298c80,_0x23840c){const _0x2b6a93=_0x2b9298;if(!currentTablesState||!currentTablesState[_0x298c80])return;const _0x31d40a=currentTablesState[_0x298c80];_0x31d40a[_0x2b6a93(0x233)]=_0x23840c[_0x2b6a93(0x233)],_0x31d40a[_0x2b6a93(0x257)]=_0x23840c['rule_add'],_0x31d40a[_0x2b6a93(0x18e)]=_0x23840c[_0x2b6a93(0x18e)],_0x31d40a[_0x2b6a93(0x1ed)]=_0x23840c['rule_update'],_0x31d40a[_0x2b6a93(0x1d5)]=_0x23840c[_0x2b6a93(0x1d5)],_0x31d40a[_0x2b6a93(0x248)]=_0x23840c[_0x2b6a93(0x248)],_0x31d40a['simplifyRowThreshold']=_0x23840c[_0x2b6a93(0x279)],delete _0x31d40a[_0x2b6a93(0x199)];const _0xf45064=_0x2b6a93(0x1fb)+_0x31d40a[_0x2b6a93(0x243)]+_0x2b6a93(0x197);log(_0xf45064,'info');const _0x1d14ed=getContext();if(_0x1d14ed[_0x2b6a93(0x28d)]&&_0x1d14ed['chat']['length']>0x0){const _0x456ec1=_0x1d14ed[_0x2b6a93(0x28d)][_0x1d14ed[_0x2b6a93(0x28d)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x456ec1)){saveChat();return;}}saveChatDebounced();}export function updateRow(_0x394be4,_0x4f03d0,_0x6a9847){const _0x805b84=_0x2b9298;if(!currentTablesState||!currentTablesState[_0x394be4]){log(_0x805b84(0x26b)+_0x394be4+'\x20中操作。',_0x805b84(0x222));return;}const _0x50505e=currentTablesState[_0x394be4];if(_0x4f03d0>=_0x50505e[_0x805b84(0x1da)][_0x805b84(0x1ff)]){log('AI指令意图更新不存在的行\x20(rowIndex:\x20'+_0x4f03d0+_0x805b84(0x24e)+_0x50505e[_0x805b84(0x243)]+']\x20末尾新增一行。',_0x805b84(0x205)),insertRow(_0x394be4,_0x6a9847);return;}const _0x1b5cc8=_0x50505e[_0x805b84(0x1da)][_0x4f03d0];for(const _0x3869d6 in _0x6a9847){const _0x1d2626=parseInt(_0x3869d6,0xa);_0x1d2626<_0x1b5cc8[_0x805b84(0x1ff)]&&(_0x1b5cc8[_0x1d2626]=_0x6a9847[_0x1d2626],addHighlight(_0x394be4,_0x4f03d0,_0x1d2626));}updatedTables[_0x805b84(0x2b2)](_0x394be4),dispatchTableUpdate(_0x394be4);const _0x583e88='AI\x20指令更新了表格\x20['+_0x50505e[_0x805b84(0x243)]+_0x805b84(0x213)+(_0x4f03d0+0x1)+_0x805b84(0x290);log(_0x583e88,_0x805b84(0x276));const _0x4ca04a=getContext();if(_0x4ca04a['chat']&&_0x4ca04a[_0x805b84(0x28d)][_0x805b84(0x1ff)]>0x0){const _0x2df8a3=_0x4ca04a[_0x805b84(0x28d)][_0x4ca04a['chat']['length']-0x1];if(saveStateToMessage(currentTablesState,_0x2df8a3)){saveChat();return;}}saveChatDebounced();}export function clearAllTables(){const _0x486fff=_0x2b9298;if(!currentTablesState){log(_0x486fff(0x22b),_0x486fff(0x222));return;}currentTablesState['forEach']((_0x5a00e3,_0x4f1652)=>{const _0x4eafe3=_0x486fff;_0x5a00e3[_0x4eafe3(0x1da)][_0x4eafe3(0x1ff)]>0x0&&updatedTables['add'](_0x4f1652),_0x5a00e3['rows']=[],_0x5a00e3[_0x4eafe3(0x210)]=[];}),log(_0x486fff(0x1fc),_0x486fff(0x205)),dispatchAllTablesUpdate();const _0x1194b2=getContext();if(_0x1194b2[_0x486fff(0x28d)]&&_0x1194b2[_0x486fff(0x28d)][_0x486fff(0x1ff)]>0x0){const _0x1a11cb=_0x1194b2['chat'][_0x1194b2[_0x486fff(0x28d)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x1a11cb)){saveChat(),log(_0x486fff(0x196),_0x486fff(0x24c)),toastr[_0x486fff(0x24c)](_0x486fff(0x18d),_0x486fff(0x1d7));return;}}log(_0x486fff(0x1c5),_0x486fff(0x222)),saveChatDebounced();}function checkTableRules(_0x4f3d84){const _0x189af8=_0x2b9298;let _0x5a582f=[];_0x4f3d84[_0x189af8(0x248)]&&_0x4f3d84[_0x189af8(0x248)]>0x0&&_0x4f3d84[_0x189af8(0x1da)][_0x189af8(0x1ff)]>_0x4f3d84[_0x189af8(0x248)]&&_0x5a582f[_0x189af8(0x1e3)](_0x189af8(0x29b)+_0x4f3d84[_0x189af8(0x243)]+_0x189af8(0x264)+_0x4f3d84[_0x189af8(0x248)]+_0x189af8(0x225)+_0x4f3d84[_0x189af8(0x248)]+_0x189af8(0x275));const _0x42561e=_0x4f3d84[_0x189af8(0x1d5)]||{};for(const _0x27ce22 in _0x42561e){const _0x332f08=parseInt(_0x27ce22,0xa),_0x591079=_0x42561e[_0x332f08];if(_0x591079>0x0&&_0x332f08>=0x0&&_0x332f08<_0x4f3d84[_0x189af8(0x29d)][_0x189af8(0x1ff)]){const _0x97056e=_0x4f3d84[_0x189af8(0x29d)][_0x332f08],_0x5d3850=[];_0x4f3d84['rows']['forEach']((_0x3e8cf6,_0x312e13)=>{const _0x12464f=_0x189af8;if(_0x4f3d84[_0x12464f(0x210)]&&_0x4f3d84['rowStatuses'][_0x312e13]===_0x12464f(0x269))return;const _0x5de6fb=_0x3e8cf6[_0x332f08]||'';_0x5de6fb[_0x12464f(0x1ff)]>_0x591079&&_0x5d3850['push'](_0x312e13);});if(_0x5d3850[_0x189af8(0x1ff)]>0x0){const _0x2405fd=_0x5d3850['join']('、');_0x5a582f[_0x189af8(0x1e3)](_0x189af8(0x29b)+_0x4f3d84[_0x189af8(0x243)]+')第('+_0x2405fd+_0x189af8(0x211)+_0x97056e+_0x189af8(0x214)+_0x591079+_0x189af8(0x223));}}}return _0x5a582f['join']('\x0a');}export function convertTablesToCsvString(){const _0x1d6dbd=_0x2b9298;!currentTablesState&&loadTables();if(!currentTablesState)return'';let _0x302527='';return currentTablesState[_0x1d6dbd(0x2a6)]((_0x46aa8d,_0x56fa1c)=>{const _0x52fefd=_0x1d6dbd;_0x302527+='\x0a*\x20'+_0x56fa1c+':'+_0x46aa8d['name']+'\x0a',_0x302527+=_0x52fefd(0x23b)+(_0x46aa8d[_0x52fefd(0x233)]||'无')+'\x0a';const _0x9e771f=_0x46aa8d['name']['replace'](/\s/g,'')+'内容';_0x302527+='<'+_0x9e771f+'>\x0a';const _0x5a0956=[_0x52fefd(0x1a7),..._0x46aa8d[_0x52fefd(0x29d)]['map']((_0x265a8d,_0x39bc14)=>_0x39bc14+':'+_0x265a8d)];_0x302527+='|\x20'+_0x5a0956[_0x52fefd(0x1b1)](_0x52fefd(0x1e9))+_0x52fefd(0x1af),_0x302527+='|'+_0x5a0956['map'](()=>_0x52fefd(0x1a3))[_0x52fefd(0x1b1)]('|')+'|\x0a';const _0x2eb353=_0x46aa8d[_0x52fefd(0x1da)]['filter']((_0x561e7a,_0x34e9ef)=>!_0x46aa8d[_0x52fefd(0x210)]||_0x46aa8d[_0x52fefd(0x210)][_0x34e9ef]!==_0x52fefd(0x269));if(_0x2eb353[_0x52fefd(0x1ff)]===0x0)_0x302527+=_0x52fefd(0x26c);else{const _0x462675=_0x46aa8d[_0x52fefd(0x279)]||0x0;let _0x4e084f=0x0;_0x46aa8d[_0x52fefd(0x1da)]['forEach']((_0x30fd17,_0x2ddd80)=>{const _0x2a998e=_0x52fefd;if(_0x46aa8d[_0x2a998e(0x210)]&&_0x46aa8d[_0x2a998e(0x210)][_0x2ddd80]==='pending-deletion')return;if(_0x462675>0x0&&_0x2ddd80<_0x462675){if(_0x4e084f===0x0){const _0x3693d5=_0x30fd17['map'](()=>'---已锁定---');_0x302527+='|\x20'+_0x2ddd80+'\x20|\x20'+_0x3693d5[_0x2a998e(0x1b1)]('\x20|\x20')+_0x2a998e(0x1af),_0x302527+=_0x2a998e(0x2a7)+_0x30fd17[_0x2a998e(0x1ab)](()=>_0x2a998e(0x1d2))['join'](_0x2a998e(0x1e9))+_0x2a998e(0x1af);}if(_0x2ddd80===_0x462675-0x1){const _0x3d5c66=_0x30fd17['map'](()=>'---已锁定---');_0x302527+='|\x20'+_0x2ddd80+_0x2a998e(0x1e9)+_0x3d5c66[_0x2a998e(0x1b1)](_0x2a998e(0x1e9))+_0x2a998e(0x1af);}_0x4e084f++;return;}if(Array[_0x2a998e(0x21f)](_0x30fd17)){const _0x480f0c=_0x30fd17[_0x2a998e(0x1ab)](_0x184c36=>{const _0x550372=_0x2a998e,_0x171450=_0x184c36===null||_0x184c36===undefined||_0x184c36===''?'未知':String(_0x184c36);return _0x171450[_0x550372(0x28a)](/\|/g,'');});_0x302527+='|\x20'+_0x2ddd80+_0x2a998e(0x1e9)+_0x480f0c[_0x2a998e(0x1b1)](_0x2a998e(0x1e9))+_0x2a998e(0x1af);}}),_0x4e084f>0x0&&(_0x302527+=_0x52fefd(0x298)+_0x4e084f+_0x52fefd(0x258)+(_0x4e084f-0x1)+_0x52fefd(0x1b6));}const _0xe62cdd=checkTableRules(_0x46aa8d);_0xe62cdd&&(_0x302527+=_0xe62cdd+'\x0a'),_0x302527+='</'+_0x9e771f+'>\x0a',_0x302527+=_0x52fefd(0x250)+(_0x46aa8d['rule_add']||'允许')+'\x0a',_0x302527+=_0x52fefd(0x2ad)+(_0x46aa8d['rule_delete']||'允许')+'\x0a',_0x302527+=_0x52fefd(0x1c4)+(_0x46aa8d['rule_update']||'允许')+'\x0a',_0x56fa1c<currentTablesState[_0x52fefd(0x1ff)]-0x1&&(_0x302527+=_0x52fefd(0x247));}),_0x302527;}export function convertSelectedTablesToCsvString(_0xdd8502){!currentTablesState&&loadTables();if(!currentTablesState)return'';let _0x284c38='';return currentTablesState['forEach']((_0x4db3aa,_0x587e84)=>{const _0x2619f4=_0x5104,_0x15b2d0=_0xdd8502['includes'](_0x587e84);_0x284c38+=_0x2619f4(0x246)+_0x587e84+':'+_0x4db3aa[_0x2619f4(0x243)];!_0x15b2d0&&(_0x284c38+=_0x2619f4(0x1c9));_0x284c38+='\x0a',_0x284c38+=_0x2619f4(0x23b)+(_0x4db3aa['note']||'无')+'\x0a';const _0x1dca19=_0x4db3aa[_0x2619f4(0x243)][_0x2619f4(0x28a)](/\s/g,'')+'内容';_0x284c38+='<'+_0x1dca19+'>\x0a';const _0x2d2569=[_0x2619f4(0x1a7),..._0x4db3aa[_0x2619f4(0x29d)][_0x2619f4(0x1ab)]((_0x3add20,_0xd00447)=>_0xd00447+':'+_0x3add20)];_0x284c38+='|\x20'+_0x2d2569[_0x2619f4(0x1b1)]('\x20|\x20')+'\x20|\x0a',_0x284c38+='|'+_0x2d2569['map'](()=>_0x2619f4(0x1a3))['join']('|')+'|\x0a';if(_0x15b2d0){const _0x5666e8=_0x4db3aa[_0x2619f4(0x1da)][_0x2619f4(0x1b9)]((_0x2ecfb8,_0x9b2be8)=>!_0x4db3aa[_0x2619f4(0x210)]||_0x4db3aa[_0x2619f4(0x210)][_0x9b2be8]!=='pending-deletion');if(_0x5666e8[_0x2619f4(0x1ff)]===0x0)_0x284c38+=_0x2619f4(0x26c);else{const _0x38866e=_0x4db3aa[_0x2619f4(0x279)]||0x0;let _0x20b987=0x0;_0x4db3aa[_0x2619f4(0x1da)][_0x2619f4(0x2a6)]((_0x516a9c,_0x50a73e)=>{const _0x5329ca=_0x2619f4;if(_0x4db3aa[_0x5329ca(0x210)]&&_0x4db3aa[_0x5329ca(0x210)][_0x50a73e]===_0x5329ca(0x269))return;if(_0x38866e>0x0&&_0x50a73e<_0x38866e){if(_0x20b987===0x0){const _0x292cca=_0x516a9c[_0x5329ca(0x1ab)](()=>_0x5329ca(0x22e));_0x284c38+='|\x20'+_0x50a73e+_0x5329ca(0x1e9)+_0x292cca[_0x5329ca(0x1b1)](_0x5329ca(0x1e9))+_0x5329ca(0x1af),_0x284c38+='|\x20...\x20|\x20'+_0x516a9c['map'](()=>_0x5329ca(0x1d2))['join'](_0x5329ca(0x1e9))+_0x5329ca(0x1af);}if(_0x50a73e===_0x38866e-0x1){const _0x6736c3=_0x516a9c[_0x5329ca(0x1ab)](()=>'---已锁定---');_0x284c38+='|\x20'+_0x50a73e+_0x5329ca(0x1e9)+_0x6736c3[_0x5329ca(0x1b1)](_0x5329ca(0x1e9))+_0x5329ca(0x1af);}_0x20b987++;return;}if(Array[_0x5329ca(0x21f)](_0x516a9c)){const _0x466b9c=_0x516a9c[_0x5329ca(0x1ab)](_0x121b1a=>{const _0x25d75e=_0x5329ca,_0x916a9e=_0x121b1a===null||_0x121b1a===undefined||_0x121b1a===''?'未知':String(_0x121b1a);return _0x916a9e[_0x25d75e(0x28a)](/\|/g,'');});_0x284c38+='|\x20'+_0x50a73e+'\x20|\x20'+_0x466b9c[_0x5329ca(0x1b1)](_0x5329ca(0x1e9))+_0x5329ca(0x1af);}}),_0x20b987>0x0&&(_0x284c38+=_0x2619f4(0x298)+_0x20b987+_0x2619f4(0x258)+(_0x20b987-0x1)+_0x2619f4(0x1b6));}const _0x5ca48b=checkTableRules(_0x4db3aa);_0x5ca48b&&(_0x284c38+=_0x5ca48b+'\x0a');}else _0x284c38+=_0x2619f4(0x209);_0x284c38+='</'+_0x1dca19+'>\x0a',_0x15b2d0?(_0x284c38+=_0x2619f4(0x250)+(_0x4db3aa[_0x2619f4(0x257)]||'允许')+'\x0a',_0x284c38+=_0x2619f4(0x2ad)+(_0x4db3aa[_0x2619f4(0x18e)]||'允许')+'\x0a',_0x284c38+=_0x2619f4(0x1c4)+(_0x4db3aa['rule_update']||'允许')+'\x0a'):_0x284c38+=_0x2619f4(0x241),_0x587e84<currentTablesState[_0x2619f4(0x1ff)]-0x1&&(_0x284c38+='\x0a---\x0a');}),_0x284c38;}export function convertTablesToCsvStringForContentOnly(){const _0x3f96b4=_0x2b9298,_0x37d03c=getMemoryState();if(!_0x37d03c||_0x37d03c[_0x3f96b4(0x1ff)]===0x0)return'';let _0x4e055d='';return _0x37d03c[_0x3f96b4(0x2a6)](_0x4386ba=>{const _0x13c051=_0x3f96b4;_0x4e055d+='\x0a<'+_0x4386ba[_0x13c051(0x243)]+'>\x0a';const _0x4b8514='|\x20'+_0x4386ba['headers'][_0x13c051(0x1b1)](_0x13c051(0x1e9))+'\x20|';_0x4e055d+=_0x4b8514+'\x0a';const _0x58b75e='|'+_0x4386ba[_0x13c051(0x29d)][_0x13c051(0x1ab)](()=>_0x13c051(0x1a3))[_0x13c051(0x1b1)]('|')+'|';_0x4e055d+=_0x58b75e+'\x0a';const _0x2a8a5d=_0x4386ba[_0x13c051(0x1da)][_0x13c051(0x1b9)]((_0x2d7d05,_0x4d083e)=>!_0x4386ba['rowStatuses']||_0x4386ba[_0x13c051(0x210)][_0x4d083e]!==_0x13c051(0x269));_0x2a8a5d[_0x13c051(0x1ff)]>0x0?_0x2a8a5d[_0x13c051(0x2a6)](_0x3d8840=>{const _0x4e56fd=_0x13c051;if(Array[_0x4e56fd(0x21f)](_0x3d8840)){const _0x44440b=_0x3d8840[_0x4e56fd(0x1ab)](_0x1c5137=>_0x1c5137===null||_0x1c5137===undefined||_0x1c5137===''?'\x20':_0x1c5137[_0x4e56fd(0x219)]()),_0x57c3b8='|\x20'+_0x44440b[_0x4e56fd(0x1b1)](_0x4e56fd(0x1e9))+'\x20|';_0x4e055d+=_0x57c3b8+'\x0a';}}):_0x4e055d+=_0x13c051(0x26c),_0x4e055d+='</'+_0x4386ba[_0x13c051(0x243)]+'>\x0a';}),_0x4e055d['trim']();}loadTables();export function getBatchFillerRuleTemplate(){const _0x5f335e=_0x2b9298;return extension_settings[extensionName]?.[_0x5f335e(0x1dc)]??DEFAULT_AI_RULE_TEMPLATE;}export function saveBatchFillerRuleTemplate(_0x480b47){const _0x43f04=_0x2b9298;extension_settings[extensionName][_0x43f04(0x1dc)]=_0x480b47,saveSettingsDebounced();}export function getBatchFillerFlowTemplate(){const _0x412f52=_0x2b9298;return extension_settings[extensionName]?.[_0x412f52(0x2b3)]??DEFAULT_AI_FLOW_TEMPLATE;}export function saveBatchFillerFlowTemplate(_0x4f232c){const _0x39dbba=_0x2b9298;extension_settings[extensionName][_0x39dbba(0x2b3)]=_0x4f232c,saveSettingsDebounced();}export function getAiFlowTemplateForInjection(){const _0xc08632=_0x2b9298;return extension_settings[extensionName]?.[_0xc08632(0x230)]??DEFAULT_AI_FLOW_TEMPLATE;}export async function updateTableFromText(_0x549ae4){const _0x16763c=_0x2b9298,_0x527c76=extension_settings[extensionName];if(_0x527c76['table_system_enabled']===![]){log('表格系统总开关已关闭,跳过\x20<Amily2Edit>\x20标签处理。',_0x16763c(0x276));return;}if(!_0x549ae4){log('AI返回内容为空无法更新表格。','warn');return;}const _0x3e1b73=_0x549ae4[_0x16763c(0x1df)](/<Amily2Edit>([\s\S]*?)<\/Amily2Edit>/);if(!_0x3e1b73||!_0x3e1b73[0x1]){log(_0x16763c(0x284),_0x16763c(0x205));return;}let _0x55453a=_0x3e1b73[0x1][_0x16763c(0x28a)](/<!--|-->/g,'')[_0x16763c(0x2ac)]();if(!_0x55453a){log(_0x16763c(0x25d),_0x16763c(0x276));return;}const _0x257079=_0x55453a[_0x16763c(0x21d)]('\x0a')[_0x16763c(0x1b9)](_0x2919d0=>_0x2919d0['trim']()!=='');log('准备执行从AI返回的\x20'+_0x257079[_0x16763c(0x1ff)]+'\x20条表格操作指令...',_0x16763c(0x276));const _0x5883b4={'insertRow':(_0x2ba890,_0x1cb4de)=>{const _0x3d62d9=_0x16763c;log(_0x3d62d9(0x1d6)+_0x2ba890+_0x3d62d9(0x289)+JSON[_0x3d62d9(0x206)](_0x1cb4de)+')','info'),insertRow(_0x2ba890,_0x1cb4de);},'deleteRow':(_0xbf8e13,_0x4495f2)=>{const _0x7031b4=_0x16763c;log(_0x7031b4(0x24f)+_0xbf8e13+',\x20rowIndex='+_0x4495f2+')',_0x7031b4(0x276)),deleteRow(_0xbf8e13,_0x4495f2);},'updateRow':(_0x937c79,_0x2e6795,_0x2c01d8)=>{const _0x498610=_0x16763c;log(_0x498610(0x244)+_0x937c79+_0x498610(0x259)+_0x2e6795+_0x498610(0x289)+JSON[_0x498610(0x206)](_0x2c01d8)+')',_0x498610(0x276)),updateRow(_0x937c79,_0x2e6795,_0x2c01d8);}};try{const _0x1054f1=Object[_0x16763c(0x28f)](async function(){})[_0x16763c(0x190)],_0x1d0ffb=new _0x1054f1('runner',_0x16763c(0x2a5)+_0x55453a+_0x16763c(0x1a6));await _0x1d0ffb(_0x5883b4),log(_0x16763c(0x21b),_0x16763c(0x24c)),toastr[_0x16763c(0x24c)]('已根据AI的指示成功更新表格',_0x16763c(0x24d)),document[_0x16763c(0x249)](new CustomEvent(_0x16763c(0x1ca)));}catch(_0x49627d){log(_0x16763c(0x203)+_0x49627d[_0x16763c(0x273)],'error'),toastr[_0x16763c(0x222)](_0x16763c(0x239)+_0x49627d[_0x16763c(0x273)],'执行失败');}}export function saveAiTemplate(_0x382c8c){const _0xfa4411=_0x2b9298;extension_settings[extensionName][_0xfa4411(0x230)]=_0x382c8c,saveSettingsDebounced();}export function getAiTemplate(){return getAiFlowTemplateForInjection();}function exportPresetBase(_0x52f27a=![]){const _0x38b241=_0x2b9298;if(!currentTablesState){log(_0x38b241(0x22c),_0x38b241(0x222)),toastr[_0x38b241(0x222)](_0x38b241(0x1ef));return;}let _0x6ae24d,_0x13e8a6,_0x328f94;_0x52f27a?(_0x6ae24d=JSON[_0x38b241(0x198)](JSON[_0x38b241(0x206)](currentTablesState)),_0x13e8a6=_0x38b241(0x218),_0x328f94='完整备份'):(_0x6ae24d=currentTablesState[_0x38b241(0x1ab)](_0x53f17c=>({'name':_0x53f17c[_0x38b241(0x243)],'headers':_0x53f17c[_0x38b241(0x29d)],'columnWidths':_0x53f17c[_0x38b241(0x20d)]||[],'note':_0x53f17c[_0x38b241(0x233)],'rule_add':_0x53f17c[_0x38b241(0x257)],'rule_delete':_0x53f17c[_0x38b241(0x18e)],'rule_update':_0x53f17c[_0x38b241(0x1ed)],'charLimitRules':_0x53f17c[_0x38b241(0x1d5)]||{},'rowLimitRule':_0x53f17c[_0x38b241(0x248)]||0x0,'rows':[],'rowStatuses':[]})),_0x13e8a6='Amily2-Table-Preset-v2.0-clean',_0x328f94=_0x38b241(0x212));const _0x488fe0={'version':_0x38b241(0x1d8),'batchFillerRuleTemplate':getBatchFillerRuleTemplate(),'batchFillerFlowTemplate':getBatchFillerFlowTemplate(),'tables':_0x6ae24d},_0xac831=new Blob([JSON[_0x38b241(0x206)](_0x488fe0,null,0x2)],{'type':_0x38b241(0x1b0)}),_0x1ae358=URL[_0x38b241(0x272)](_0xac831),_0x2051df=document[_0x38b241(0x267)]('a');_0x2051df[_0x38b241(0x208)]=_0x1ae358,_0x2051df[_0x38b241(0x286)]=_0x38b241(0x1fa)+_0x328f94+'-'+new Date()[_0x38b241(0x28b)]()[_0x38b241(0x255)](0x0,0xa)+_0x38b241(0x1b5),document[_0x38b241(0x1e2)]['appendChild'](_0x2051df),_0x2051df[_0x38b241(0x1cc)](),document[_0x38b241(0x1e2)][_0x38b241(0x270)](_0x2051df),URL[_0x38b241(0x1f9)](_0x1ae358),log('【'+_0x328f94+_0x38b241(0x1f3),_0x38b241(0x24c)),toastr[_0x38b241(0x24c)]('【'+_0x328f94+_0x38b241(0x20c),_0x38b241(0x295));}export function exportPreset(){exportPresetBase(![]);}export function exportPresetFull(){exportPresetBase(!![]);}export function importPreset(_0xfb09e9){const _0x4dc077=_0x2b9298,_0x17277f=document[_0x4dc077(0x267)]('input');_0x17277f[_0x4dc077(0x25c)]=_0x4dc077(0x228),_0x17277f[_0x4dc077(0x235)]=_0x4dc077(0x1b5),_0x17277f['onchange']=_0x40018b=>{const _0x44a7a6=_0x4dc077,_0x4e60a9=_0x40018b['target'][_0x44a7a6(0x1ad)][0x0];if(!_0x4e60a9)return;const _0x4e7a40=new FileReader();_0x4e7a40[_0x44a7a6(0x1ac)]=_0xc77d47=>{const _0x172ddf=_0x44a7a6;try{const _0x16277c=JSON[_0x172ddf(0x198)](_0xc77d47[_0x172ddf(0x291)][_0x172ddf(0x221)]);if(!_0x16277c[_0x172ddf(0x1cd)]||!Array[_0x172ddf(0x21f)](_0x16277c[_0x172ddf(0x19e)]))throw new Error(_0x172ddf(0x18c));const _0x2aa8f4=window[_0x172ddf(0x25f)]('【警告】\x0a\x0a导入操作将完全覆盖您当前的AI指令模板和所有表格包括结构和内容。\x0a\x0a此操作不可逆是否确定要继续');if(!_0x2aa8f4){log(_0x172ddf(0x265),_0x172ddf(0x276)),toastr[_0x172ddf(0x276)](_0x172ddf(0x2a1));return;}if(_0x16277c[_0x172ddf(0x1cd)]===_0x172ddf(0x1d8))saveBatchFillerRuleTemplate(_0x16277c[_0x172ddf(0x21c)]||''),saveBatchFillerFlowTemplate(_0x16277c[_0x172ddf(0x207)]||''),saveAiTemplate(_0x16277c[_0x172ddf(0x1f7)]||'');else{if(_0x16277c['aiRuleTemplate']!==undefined&&_0x16277c[_0x172ddf(0x22a)]!==undefined)saveBatchFillerRuleTemplate(_0x16277c[_0x172ddf(0x1d9)]||''),saveBatchFillerFlowTemplate(_0x16277c[_0x172ddf(0x22a)]||''),saveAiTemplate(_0x16277c['aiFlowTemplate']||'');else _0x16277c[_0x172ddf(0x26d)]?(saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x16277c['aiTemplate']||''),saveAiTemplate(_0x16277c[_0x172ddf(0x26d)]||'')):log(_0x172ddf(0x23a),_0x172ddf(0x205));}const _0x49cec4=_0x16277c[_0x172ddf(0x19e)];_0x49cec4[_0x172ddf(0x2a6)](_0xa84e5a=>{const _0x2fa73e=_0x172ddf;if(_0xa84e5a['name']===undefined||_0xa84e5a[_0x2fa73e(0x29d)]===undefined||_0xa84e5a['rows']===undefined)throw new Error(_0x2fa73e(0x20b)+JSON[_0x2fa73e(0x206)](_0xa84e5a));if(_0xa84e5a[_0x2fa73e(0x233)]===undefined)_0xa84e5a[_0x2fa73e(0x233)]='无';if(_0xa84e5a['rule_add']===undefined)_0xa84e5a[_0x2fa73e(0x257)]='允许';if(_0xa84e5a[_0x2fa73e(0x18e)]===undefined)_0xa84e5a[_0x2fa73e(0x18e)]='允许';if(_0xa84e5a[_0x2fa73e(0x1ed)]===undefined)_0xa84e5a[_0x2fa73e(0x1ed)]='允许';if(_0xa84e5a[_0x2fa73e(0x199)]&&!_0xa84e5a[_0x2fa73e(0x1d5)])_0xa84e5a[_0x2fa73e(0x1d5)]={},_0xa84e5a[_0x2fa73e(0x199)][_0x2fa73e(0x1b8)]!==-0x1&&_0xa84e5a[_0x2fa73e(0x199)][_0x2fa73e(0x2a4)]>0x0&&(_0xa84e5a[_0x2fa73e(0x1d5)][_0xa84e5a['charLimitRule'][_0x2fa73e(0x1b8)]]=_0xa84e5a[_0x2fa73e(0x199)][_0x2fa73e(0x2a4)]);else _0xa84e5a['charLimitRules']===undefined&&(_0xa84e5a[_0x2fa73e(0x1d5)]={});delete _0xa84e5a[_0x2fa73e(0x199)],!_0xa84e5a['rowStatuses']&&(_0xa84e5a[_0x2fa73e(0x210)]=Array(_0xa84e5a[_0x2fa73e(0x1da)][_0x2fa73e(0x1ff)])[_0x2fa73e(0x252)](_0x2fa73e(0x1a4))),_0xa84e5a[_0x2fa73e(0x248)]===undefined&&(_0xa84e5a['rowLimitRule']=0x0),_0xa84e5a[_0x2fa73e(0x20d)]===undefined&&(_0xa84e5a[_0x2fa73e(0x20d)]=[]);}),setMemoryState(_0x49cec4),dispatchAllTablesUpdate();const _0x30965d=getContext();if(_0x30965d[_0x172ddf(0x28d)]&&_0x30965d[_0x172ddf(0x28d)][_0x172ddf(0x1ff)]>0x0){const _0x2e994d=_0x30965d[_0x172ddf(0x28d)][_0x30965d['chat']['length']-0x1];saveStateToMessage(getMemoryState(),_0x2e994d)&&(saveChat(),log(_0x172ddf(0x215),_0x172ddf(0x24c)));}else saveChatDebounced();log(_0x172ddf(0x277),_0x172ddf(0x24c)),toastr[_0x172ddf(0x24c)]('预设已成功导入!',_0x172ddf(0x201)),typeof _0xfb09e9===_0x172ddf(0x1e8)&&_0xfb09e9();}catch(_0x2b1ba1){log(_0x172ddf(0x2ae)+_0x2b1ba1['message'],_0x172ddf(0x222)),toastr[_0x172ddf(0x222)]('导入失败:'+_0x2b1ba1['message'],'错误');}},_0x4e7a40['readAsText'](_0x4e60a9);},_0x17277f[_0x4dc077(0x1cc)]();}export async function rollbackState(){const _0x159026=_0x2b9298,_0x370c01=getContext();if(!_0x370c01||!_0x370c01['chat']||_0x370c01[_0x159026(0x28d)][_0x159026(0x1ff)]<0x2)return log(_0x159026(0x261),'warn'),toastr['warning']('聊天记录不足,无法执行回退操作。'),![];const _0xaa7c1f=_0x370c01[_0x159026(0x28d)],_0x25dd49=_0xaa7c1f[_0x159026(0x1ff)]-0x1,_0x57f220=_0xaa7c1f[_0x25dd49];log(_0x159026(0x1a1)+(_0x25dd49-0x1)+'\x20条消息加载表格状态...',_0x159026(0x276));const _0x293224=loadTables(_0x25dd49);if(!_0x293224)return log(_0x159026(0x192),'error'),toastr[_0x159026(0x222)](_0x159026(0x24b)),![];setMemoryState(_0x293224);if(saveStateToMessage(_0x293224,_0x57f220))await saveChat(),log(_0x159026(0x274),_0x159026(0x24c));else return log(_0x159026(0x237),_0x159026(0x222)),toastr['error'](_0x159026(0x18f)),![];return renderTables(),updateOrInsertTableInChat(),log(_0x159026(0x29e),_0x159026(0x276)),!![];}export async function rollbackAndRefill(){const _0x179a49=_0x2b9298,_0x2b353f=extension_settings[extensionName];if(_0x2b353f[_0x179a49(0x268)]===![]){log(_0x179a49(0x19d),_0x179a49(0x276)),toastr[_0x179a49(0x276)](_0x179a49(0x1e4));return;}toastr[_0x179a49(0x276)]('正在执行回退并重新填表...');const _0x4230bf=await rollbackState();if(!_0x4230bf){toastr[_0x179a49(0x222)](_0x179a49(0x1b2));return;}toastr['success'](_0x179a49(0x1ec));const _0x5769b3=getContext(),_0x4c99b3=_0x5769b3[_0x179a49(0x28d)][_0x5769b3[_0x179a49(0x28d)]['length']-0x1];try{await fillWithSecondaryApi(_0x4c99b3,!![]),log('回退并重新填表操作完成。',_0x179a49(0x24c));}catch(_0x391047){log('回退重填过程中发生错误:\x20'+_0x391047['message'],_0x179a49(0x222)),toastr[_0x179a49(0x222)](_0x179a49(0x1e5)+_0x391047[_0x179a49(0x273)]);}}export function updateColumnWidth(_0x5438bb,_0x356626,_0xaaf4e3){const _0x56eeb1=_0x2b9298;if(!currentTablesState||!currentTablesState[_0x5438bb])return;const _0x4a4118=currentTablesState[_0x5438bb];!_0x4a4118[_0x56eeb1(0x20d)]&&(_0x4a4118[_0x56eeb1(0x20d)]=[]);while(_0x4a4118[_0x56eeb1(0x20d)][_0x56eeb1(0x1ff)]<_0x4a4118['headers'][_0x56eeb1(0x1ff)]){_0x4a4118[_0x56eeb1(0x20d)][_0x56eeb1(0x1e3)](null);}_0x4a4118[_0x56eeb1(0x20d)][_0x356626]=_0xaaf4e3;const _0x48eee8=getContext();if(_0x48eee8[_0x56eeb1(0x28d)]&&_0x48eee8[_0x56eeb1(0x28d)][_0x56eeb1(0x1ff)]>0x0){const _0x51165e=_0x48eee8[_0x56eeb1(0x28d)][_0x48eee8['chat'][_0x56eeb1(0x1ff)]-0x1];if(saveStateToMessage(currentTablesState,_0x51165e)){saveChat();return;}}saveChatDebounced();}export function isCurrentTablesEmpty(){const _0x501ad3=_0x2b9298,_0xb9bc0b=getMemoryState();if(!_0xb9bc0b||_0xb9bc0b[_0x501ad3(0x1ff)]===0x0)return!![];return _0xb9bc0b[_0x501ad3(0x271)](_0x85fd9e=>!_0x85fd9e[_0x501ad3(0x1da)]||_0x85fd9e['rows'][_0x501ad3(0x1ff)]===0x0);}export function clearGlobalPreset(){const _0x210411=_0x2b9298;if(extension_settings[extensionName]&&extension_settings[extensionName]['global_table_preset']){const _0x185db1=window[_0x210411(0x25f)](_0x210411(0x1a5));_0x185db1?(delete extension_settings[extensionName][_0x210411(0x245)],saveSettingsDebounced(),log(_0x210411(0x256),_0x210411(0x24c)),toastr[_0x210411(0x24c)](_0x210411(0x27e),_0x210411(0x251))):(log(_0x210411(0x1c8),_0x210411(0x276)),toastr[_0x210411(0x276)](_0x210411(0x1bc)));}else log(_0x210411(0x1ee),'info'),toastr[_0x210411(0x276)](_0x210411(0x21a),'提示');}export function importGlobalPreset(_0x4b6883){const _0x343ad8=_0x2b9298,_0x506815=document[_0x343ad8(0x267)](_0x343ad8(0x1bb));_0x506815[_0x343ad8(0x25c)]='file',_0x506815[_0x343ad8(0x235)]=_0x343ad8(0x1b5),_0x506815['onchange']=_0x1d2760=>{const _0x1de910=_0x343ad8,_0x1277df=_0x1d2760[_0x1de910(0x291)]['files'][0x0];if(!_0x1277df)return;const _0x2313c3=new FileReader();_0x2313c3[_0x1de910(0x1ac)]=_0x2217f3=>{const _0x2374fc=_0x1de910;try{const _0x54ea5c=JSON[_0x2374fc(0x198)](_0x2217f3[_0x2374fc(0x291)][_0x2374fc(0x221)]);if(!_0x54ea5c['version']||!Array['isArray'](_0x54ea5c[_0x2374fc(0x19e)]))throw new Error(_0x2374fc(0x18c));const _0x430542=window[_0x2374fc(0x25f)](_0x2374fc(0x294));if(!_0x430542){log(_0x2374fc(0x19b),_0x2374fc(0x276)),toastr[_0x2374fc(0x276)](_0x2374fc(0x1bc));return;}const _0x53b24b=_0x54ea5c[_0x2374fc(0x19e)][_0x2374fc(0x1ab)](_0x1011a9=>({'name':_0x1011a9[_0x2374fc(0x243)],'headers':_0x1011a9[_0x2374fc(0x29d)],'note':_0x1011a9[_0x2374fc(0x233)],'rule_add':_0x1011a9[_0x2374fc(0x257)],'rule_delete':_0x1011a9[_0x2374fc(0x18e)],'rule_update':_0x1011a9[_0x2374fc(0x1ed)],'rows':[]}));!extension_settings[extensionName]&&(extension_settings[extensionName]={});extension_settings[extensionName][_0x2374fc(0x245)]={'version':_0x54ea5c['version'],'tables':_0x53b24b,'batchFillerRuleTemplate':_0x54ea5c['batchFillerRuleTemplate'],'batchFillerFlowTemplate':_0x54ea5c['batchFillerFlowTemplate']},saveSettingsDebounced();if(_0x54ea5c[_0x2374fc(0x1cd)]==='Amily2-Table-Preset-v3.0-separated_templates')saveBatchFillerRuleTemplate(_0x54ea5c[_0x2374fc(0x21c)]||''),saveBatchFillerFlowTemplate(_0x54ea5c[_0x2374fc(0x207)]||''),saveAiTemplate(_0x54ea5c[_0x2374fc(0x1f7)]||'');else{if(_0x54ea5c[_0x2374fc(0x1d9)]!==undefined&&_0x54ea5c[_0x2374fc(0x22a)]!==undefined)saveBatchFillerRuleTemplate(_0x54ea5c[_0x2374fc(0x1d9)]||''),saveBatchFillerFlowTemplate(_0x54ea5c['aiFlowTemplate']||''),saveAiTemplate(_0x54ea5c[_0x2374fc(0x22a)]||'');else _0x54ea5c[_0x2374fc(0x26d)]&&(saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x54ea5c['aiTemplate']||''),saveAiTemplate(_0x54ea5c[_0x2374fc(0x26d)]||''));}log('全局预设已成功导入并保存到扩展设置中。',_0x2374fc(0x24c)),toastr[_0x2374fc(0x24c)](_0x2374fc(0x26e),_0x2374fc(0x27d)),typeof _0x4b6883===_0x2374fc(0x1e8)&&_0x4b6883();}catch(_0x4aa4a4){log(_0x2374fc(0x224)+_0x4aa4a4['message'],'error'),toastr[_0x2374fc(0x222)](_0x2374fc(0x27f)+_0x4aa4a4[_0x2374fc(0x273)],'错误');}},_0x2313c3['readAsText'](_0x1277df);},_0x506815[_0x343ad8(0x1cc)]();}