Files
ST-Amily2-Chat-Optimisation…/core/table-system/manager.js
2025-08-24 11:52:49 +08:00

2 lines
38 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 _0x4df244=_0x29e8;(function(_0x57e6d9,_0x53cb1d){const _0x179f9d=_0x29e8,_0x28a148=_0x57e6d9();while(!![]){try{const _0x5a32f0=-parseInt(_0x179f9d(0x137))/0x1+-parseInt(_0x179f9d(0x198))/0x2*(parseInt(_0x179f9d(0x117))/0x3)+parseInt(_0x179f9d(0xf2))/0x4*(-parseInt(_0x179f9d(0x14d))/0x5)+-parseInt(_0x179f9d(0x17c))/0x6+-parseInt(_0x179f9d(0x132))/0x7+-parseInt(_0x179f9d(0x155))/0x8*(parseInt(_0x179f9d(0x18a))/0x9)+parseInt(_0x179f9d(0x131))/0xa;if(_0x5a32f0===_0x53cb1d)break;else _0x28a148['push'](_0x28a148['shift']());}catch(_0x2d6d6d){_0x28a148['push'](_0x28a148['shift']());}}}(_0x261b,0xa1e86));import{getContext,extension_settings}from'/scripts/extensions.js';import{saveChat,saveSettingsDebounced}from'/script.js';import{log}from'./logger.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';const TABLE_DATA_KEY=_0x4df244(0xed);let currentTablesState=null,highlightedCells=new Set();export function addHighlight(_0x2e680b,_0x110415,_0x15b648){const _0x2f35c0=_0x2e680b+'-'+_0x110415+'-'+_0x15b648;highlightedCells['add'](_0x2f35c0);}export function getHighlights(){return highlightedCells;}export function clearHighlights(){const _0x1a3d6c=_0x4df244;highlightedCells[_0x1a3d6c(0x158)]>0x0&&(highlightedCells[_0x1a3d6c(0xf5)](),log(_0x1a3d6c(0x118),_0x1a3d6c(0x153)));}export function setMemoryState(_0x589b0d){currentTablesState=_0x589b0d;}export function getMemoryState(){return currentTablesState;}const defaultTemplate={'tables':[{'name':_0x4df244(0x1a9),'headers':['日期','时段','时间','地点',_0x4df244(0x126)],'note':_0x4df244(0x1b0),'rule_add':'此表不存在任何一行时','rule_delete':'此表大于一行时应删除多余行','rule_update':_0x4df244(0x1a0),'rows':[]},{'name':_0x4df244(0x191),'headers':[_0x4df244(0x115),'外貌','身体','衣着','性格','身份','职业',_0x4df244(0x120),'对<user>态度','爱好','住所',_0x4df244(0x139)],'note':'角色的基础信息csv表格思考本轮有否有其中的角色他应作出什么反应/外貌指:五官、面容、肤色、发型等/身体指:体型、身材、肤色、罩杯等/衣着指:身上的穿戴、服装的式样等/身份指:出身、社会地位等/职业指职责、岗位等/与<user>关系指:角色与<user>的社会关系(如:父亲、母亲、姐姐、妻子等)/爱好指:拥有浓厚兴趣和喜爱的某种事物、人物、活动/住所指:经常居住地','rule_add':'当本轮出现表中没有的新角色时,应插入','rule_delete':'角色明确死亡且以后绝不会再出场时','rule_update':_0x4df244(0x17b),'rows':[]},{'name':_0x4df244(0x148),'headers':[_0x4df244(0x10d),'类型','详情','状态',_0x4df244(0x173),'地点','结果','开始时间',_0x4df244(0x103)],'note':_0x4df244(0x16e),'rule_add':_0x4df244(0x1a7),'rule_delete':_0x4df244(0x16a),'rule_update':'当大家赴约时/任务或命令有进展、完成、失败时/任务、命令、约定被取消时','rows':[]},{'name':_0x4df244(0x190),'headers':[_0x4df244(0x18c),'类型','详情','状态',_0x4df244(0x138),_0x4df244(0x1a5)],'note':_0x4df244(0x11d),'rule_add':_0x4df244(0xe9),'rule_delete':_0x4df244(0x14e),'rule_update':_0x4df244(0x13f),'rows':[]},{'name':_0x4df244(0xe6),'headers':['类型',_0x4df244(0xdb)],'note':'上层叙事者留下的各种提示、要求、命令/禁止私自增、删、改','rule_add':_0x4df244(0x178),'rule_delete':_0x4df244(0x13b),'rule_update':_0x4df244(0x152),'rows':[]}]};function getDefaultTables(){const _0x55222a=_0x4df244;return log(_0x55222a(0xf4),_0x55222a(0x153)),JSON[_0x55222a(0x116)](JSON[_0x55222a(0x168)](defaultTemplate['tables']));}export function loadTables(_0x47ae49=-0x1){const _0x34f8eb=_0x4df244,_0x4a22ef=getContext();if(_0x4a22ef&&_0x4a22ef[_0x34f8eb(0x157)]&&_0x4a22ef[_0x34f8eb(0x157)][_0x34f8eb(0x10a)]>0x0){const _0x45122d=_0x47ae49===-0x1?_0x4a22ef[_0x34f8eb(0x157)]['length']-0x1:_0x47ae49-0x1;for(let _0x34f6bf=_0x45122d;_0x34f6bf>=0x0;_0x34f6bf--){const _0x536d45=_0x4a22ef[_0x34f8eb(0x157)][_0x34f6bf];if(_0x536d45[_0x34f8eb(0x13d)]&&_0x536d45[_0x34f8eb(0x13d)][TABLE_DATA_KEY]){log(_0x34f8eb(0x10f)+_0x34f6bf+_0x34f8eb(0x175),_0x34f8eb(0x153));let _0x1a0d42=JSON[_0x34f8eb(0x116)](JSON[_0x34f8eb(0x168)](_0x536d45[_0x34f8eb(0x13d)][TABLE_DATA_KEY]));return _0x1a0d42[_0x34f8eb(0x102)](_0x3493d8=>{const _0x26997d=_0x34f8eb;if(_0x3493d8['note']===undefined)_0x3493d8['note']='无';if(_0x3493d8[_0x26997d(0x185)]===undefined)_0x3493d8[_0x26997d(0x185)]='允许';if(_0x3493d8[_0x26997d(0xfb)]===undefined)_0x3493d8[_0x26997d(0xfb)]='允许';if(_0x3493d8[_0x26997d(0xfa)]===undefined)_0x3493d8['rule_update']='允许';}),currentTablesState=_0x1a0d42,currentTablesState;}}}if(extension_settings[extensionName]?.[_0x34f8eb(0x125)]){log('未在聊天记录中找到表格,正在加载全局预设...',_0x34f8eb(0x153));try{const _0x23e474=extension_settings[extensionName][_0x34f8eb(0x125)];return currentTablesState=JSON[_0x34f8eb(0x116)](JSON[_0x34f8eb(0x168)](_0x23e474[_0x34f8eb(0xec)])),currentTablesState;}catch(_0x5199bf){log(_0x34f8eb(0x101)+_0x5199bf['message'],_0x34f8eb(0xee));}}return log(_0x34f8eb(0x144),_0x34f8eb(0x153)),currentTablesState=getDefaultTables(),currentTablesState;}export function saveStateToMessage(_0x1790de,_0x422a6f){const _0x3758a9=_0x4df244;if(!_0x1790de||!_0x422a6f)return log(_0x3758a9(0x151),_0x3758a9(0xee)),![];return!_0x422a6f['extra']&&(_0x422a6f[_0x3758a9(0x13d)]={}),_0x422a6f['extra'][TABLE_DATA_KEY]=JSON[_0x3758a9(0x116)](JSON[_0x3758a9(0x168)](_0x1790de)),log(_0x3758a9(0xfc)+_0x422a6f[_0x3758a9(0x15e)][_0x3758a9(0x134)](0x0,0x14)+'...]',_0x3758a9(0x153)),!![];}export function saveTables(_0x1c1ee5=_0x4df244(0x13e)){const _0x50c12a=_0x4df244;return log(_0x50c12a(0x183)+_0x1c1ee5+'\x22\x20已更新内存状态。',_0x50c12a(0x153)),!![];}export function deleteColumn(_0xcf4712,_0x22e5ad){const _0x165d90=_0x4df244,_0x208aa6=getMemoryState();if(!_0x208aa6[_0xcf4712]||_0x22e5ad<0x0||_0x22e5ad>=_0x208aa6[_0xcf4712][_0x165d90(0xe4)][_0x165d90(0x10a)]){log(_0x165d90(0x14c)+_0xcf4712+_0x165d90(0x12b)+_0x22e5ad+'\x20的列。',_0x165d90(0xee));return;}_0x208aa6[_0xcf4712][_0x165d90(0xe4)][_0x165d90(0x167)](_0x22e5ad,0x1),_0x208aa6[_0xcf4712]['rows']['forEach'](_0x2d2874=>{const _0x59265e=_0x165d90;_0x2d2874[_0x59265e(0x10a)]>_0x22e5ad&&_0x2d2874[_0x59265e(0x167)](_0x22e5ad,0x1);}),log(_0x165d90(0x12c)+_0xcf4712+'\x20的第\x20'+(_0x22e5ad+0x1)+_0x165d90(0xea),'success'),saveTables(_0x208aa6);}export function moveRow(_0x9f9e71,_0x91ac77,_0x236f80){const _0x6baf87=_0x4df244,_0x36155d=getMemoryState(),_0xce3967=_0x36155d[_0x9f9e71];if(!_0xce3967||_0x91ac77<0x0||_0x91ac77>=_0xce3967[_0x6baf87(0x174)][_0x6baf87(0x10a)])return;const _0x4c095d=_0x236f80==='up'?_0x91ac77-0x1:_0x91ac77+0x1;if(_0x4c095d<0x0||_0x4c095d>=_0xce3967['rows']['length'])return;const [_0x2a0a63]=_0xce3967['rows'][_0x6baf87(0x167)](_0x91ac77,0x1);_0xce3967[_0x6baf87(0x174)][_0x6baf87(0x167)](_0x4c095d,0x0,_0x2a0a63),log('成功将表格\x20'+_0x9f9e71+'\x20的第\x20'+(_0x91ac77+0x1)+_0x6baf87(0x149)+(_0x4c095d+0x1)+_0x6baf87(0x188),_0x6baf87(0xf8)),saveTables(_0x36155d);}export function insertRow(_0x3bd888,_0x5b3ada,_0x2b8f2c=_0x4df244(0xf7)){const _0xce97ca=_0x4df244,_0x28b234=getMemoryState(),_0x4ffd4c=_0x28b234[_0x3bd888];if(!_0x4ffd4c){log(_0xce97ca(0x106)+_0x3bd888+_0xce97ca(0x187),'error');return;}let _0x57708d;typeof _0x5b3ada==='number'?_0x57708d=_0x2b8f2c===_0xce97ca(0x194)?_0x5b3ada:_0x5b3ada+0x1:_0x57708d=_0x4ffd4c[_0xce97ca(0x174)][_0xce97ca(0x10a)];if(_0x57708d<0x0)_0x57708d=0x0;if(_0x57708d>_0x4ffd4c['rows'][_0xce97ca(0x10a)])_0x57708d=_0x4ffd4c['rows'][_0xce97ca(0x10a)];const _0x4e029a=new Array(_0x4ffd4c[_0xce97ca(0xe4)][_0xce97ca(0x10a)])[_0xce97ca(0xff)]('');if(typeof _0x5b3ada===_0xce97ca(0x156)&&_0x5b3ada!==null)for(const _0x8069e4 in _0x5b3ada){const _0x1fd0c4=parseInt(_0x8069e4,0xa);!isNaN(_0x1fd0c4)&&_0x1fd0c4<_0x4e029a[_0xce97ca(0x10a)]&&(_0x4e029a[_0x1fd0c4]=_0x5b3ada[_0x8069e4],addHighlight(_0x3bd888,_0x57708d,_0x1fd0c4));}_0x4ffd4c['rows'][_0xce97ca(0x167)](_0x57708d,0x0,_0x4e029a),log(_0xce97ca(0x17a)+_0x4ffd4c[_0xce97ca(0x130)]+_0xce97ca(0x11b)+_0x3bd888+_0xce97ca(0x193)+(_0x57708d+0x1)+_0xce97ca(0x104),_0xce97ca(0xf8));const _0x122123=getContext();if(_0x122123[_0xce97ca(0x157)]&&_0x122123[_0xce97ca(0x157)]['length']>0x0){const _0xb210d6=_0x122123['chat'][_0x122123['chat'][_0xce97ca(0x10a)]-0x1];if(saveStateToMessage(_0x28b234,_0xb210d6)){saveChat();return;}}saveChatDebounced();}function _0x261b(){const _0x1d20e7=['表格名称不能为空。','extra','未知操作','物品发生变化时/消耗品产生损耗时','left','createObjectURL','【删除】:\x20','batchFillerFlowTemplate','未找到任何表格数据或全局预设,使用默认模板。','\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',']\x20新增了一行。','rowIndex,','任务栏','\x20行移动到第\x20','injectionFlowTemplate','\x20列的','删除列失败:在表格\x20','5085665CciNie','消耗品彻底使用完后/一次性物品被使用后',']\x20的规则已更新。','导入失败:','缺少状态或目标消息,无法保存。','上层叙事者明确要求需要修改时','info','新列\x201','1036296jxgMjM','object','chat','size','some',']\x20在第\x20','runner','readAsText','),已智能转换为在表格\x20[','mes','导入操作已取消。','填表完成','名为\x20\x22','全局预设已清除,新聊天将使用默认模板。','join','push','导入预设失败:\x20','revokeObjectURL','splice','stringify','】已成功导出。','冻结留存/禁止删除','application/json','表格顺序调整后的状态已强制写入最新消息并立即保存。',']\x20的第\x20','记录已完成或进展中重要、关键事情的任务、命令、约定/禁止记录不重要、不关键的事情/开始和结束时间应精确至具体日期、时段、时间','【增加】:\x20','toString','预设已成功导入!','aiFlowTemplate','执行者','rows','\x20条消息中找到基准表格数据。','AI指令意图更新不存在的行\x20(rowIndex:\x20','\x20中操作。','上层叙事者在第四面墙外对故事或游戏进行提示、要求、命令时/上层叙事者使用括号包裹提示、要求、命令时','AI指令块为空无需执行任何操作。','成功在表格\x20','当角色的外貌、身体、衣着出现持久性变化时(如:五官长开、伤痕、减肥、染发、更衣、衣物破损等)/当角色有新的身份、职业、爱好时/当角色和<user>的关系改变时/当角色更换住所时/当角色提到重要信息时','68898prXgwS','\x0a---\x0a','file','没有可导出的表格数据。','confirm','【全局预设导入】\x0a\x0a这将把选定的预设设置为所有新聊天的默认表格。\x0a\x0a此操作将覆盖任何已存在的全局预设是否确定','纯净预设','UI操作\x20\x22','【说明】:\x0a','rule_add','accept','\x20的表格。','\x20行。','插入了新列。','27ghPICW','用户取消了全局预设导入操作。','物品名','batch_filler_flow_template','href','trim','物品栏','角色栏','aiRuleTemplate',')\x20的第\x20','above','无法创建表格:名称不能为空。','导入的预设已强制写入最新消息并立即保存。','\x20已在边界。','91742nGMBff','\x0a*\x20','设置成功','已成功创建新表格:[',']\x20新增了一列。',']\x20的顺序已调整。','function','无法创建表格:名为\x20\x22','当叙述的场景、时间、人物变更时','无法移动列:索引\x20','无法清空:当前表格状态为空。','无法移动表格:索引\x20','完整备份','重要原因','Amily2-','当特定时间约定一起去做某件重要、关键的事时/某角色收到做某件重要、关键事情的命令或任务时/某角色确定执行某件重要、关键的事时','无法导出:当前表格状态为空。','时空栏','split','fromCharCode','result','导入的表格数据格式不正确:\x20','未在AI返回内容中找到有效的\x20<Amily2Edit>\x20指令块。','onchange','记录时空信息的表格,应保持在一行/日期信息应精确到至几年几月几日(如果日期未知,应随便胡编一个日期)/时段规定凌晨0时至5时早晨5时至8时上午8时至11时中午11时至13时下午13时至16时傍晚16时至19时晚上19时至24时/时间信息应精确至几时几分(如果时间未知,应随便胡编一个时间)/地点应为当前叙述的地点,且约精确越好','无法找到可锚定的消息或保存失败,新表格可能不会被持久化!','已根据AI的指示成功更新表格','具体描述','removeChild','batch_filler_rule_template','toISOString','message','清空行数据后的状态已强制写入最新消息并立即保存。','执行失败','AI\x20指令更新了表格\x20[','files','headers','aiTemplate','公告栏','slice','文件格式无效或缺少版本号/表格数据。','当某人获得贵重或含有特殊意义的物品时/当某个已有物品获得特殊意义时','\x20列。','所有AI指令已成功执行完毕。','tables','amily2_tables_data','error','预设已成功导入并应用。','warn','replace','4ATzBur','AI返回内容为空无法更新表格。','从预设模板生成默认表格...','clear','version','below','success','执行AI指令:\x20insertRow(tableIndex=','rule_update','rule_delete','表格状态已准备写入消息\x20[','【警告】\x0a\x0a导入操作将完全覆盖您当前的AI指令模板和所有表格包括结构和内容。\x0a\x0a此操作不可逆是否确定要继续','操作已取消。','fill','Amily2-Table-Preset-v3.0-separated_templates','加载全局预设失败:\x20','forEach','结束时间','\x20行位置插入了新行。','导入成功','插入行失败:找不到索引为\x20','无法找到可锚定的消息或保存失败,清空操作可能不会被持久化!','dispatchEvent','新表格状态已强制写入最新消息并立即保存。','length','createElement','amily2-force-ui-reload','任务名','appendChild','在第\x20','every','body','filter','操作成功','map','角色名','parse','39dwZGcM','已清除所有单元格高亮标记。','表格\x20[','getPrototypeOf','\x20(索引\x20',',\x20data=','对某人很贵重或有特殊纪念意义的物品','无法找到可锚定的消息或保存失败,顺序调整可能不会被持久化!','click','与<user>关系','note','创建失败','【清除全局预设】\x0a\x0a您确定要清除已设置的全局预设吗\x0a\x0a清除后新聊天将恢复使用扩展内置的默认表格模板。','所有表格的剧情内容已清空。','global_table_preset','此地角色','input','isArray','onload','type','\x20中找不到索引为\x20','成功删除了表格\x20','match','执行AI指令时发生错误:\x20','所有表格的行数据已在内存中清空。','name','46762440MyReQa','6425832kIXQzt','.json','substring','当前没有设置全局预设。','\x20行已删除。','1081544ZrCTNm','拥有者','其他重要信息','target','上层叙事者明确要求需要删除时'];_0x261b=function(){return _0x1d20e7;};return _0x261b();}export function addRow(_0x124336){const _0x3f036b=_0x4df244;if(!currentTablesState||!currentTablesState[_0x124336])return;const _0x17db4e=currentTablesState[_0x124336],_0x2c05d1=_0x17db4e[_0x3f036b(0xe4)]['length'],_0x11a7d1=Array(_0x2c05d1)[_0x3f036b(0xff)]('');_0x17db4e['rows'][_0x3f036b(0x164)](_0x11a7d1);const _0x32b9f4=_0x3f036b(0x119)+_0x17db4e['name']+_0x3f036b(0x146);log(_0x32b9f4,'info');const _0x1d1364=getContext();if(_0x1d1364[_0x3f036b(0x157)]&&_0x1d1364['chat'][_0x3f036b(0x10a)]>0x0){const _0x298419=_0x1d1364[_0x3f036b(0x157)][_0x1d1364[_0x3f036b(0x157)][_0x3f036b(0x10a)]-0x1];if(saveStateToMessage(currentTablesState,_0x298419)){saveChat();return;}}saveChatDebounced();}export function addColumn(_0x59136e){const _0x3f80b2=_0x4df244;if(!currentTablesState||!currentTablesState[_0x59136e])return;const _0x362789=currentTablesState[_0x59136e],_0x58f5b0='新列\x20'+(_0x362789[_0x3f80b2(0xe4)][_0x3f80b2(0x10a)]+0x1);_0x362789[_0x3f80b2(0xe4)][_0x3f80b2(0x164)](_0x58f5b0),_0x362789[_0x3f80b2(0x174)][_0x3f80b2(0x102)](_0x129449=>_0x129449[_0x3f80b2(0x164)](''));const _0x24a930='表格\x20['+_0x362789[_0x3f80b2(0x130)]+_0x3f80b2(0x19c);log(_0x24a930,_0x3f80b2(0x153));const _0x5b48f8=getContext();if(_0x5b48f8[_0x3f80b2(0x157)]&&_0x5b48f8['chat'][_0x3f80b2(0x10a)]>0x0){const _0x2540e6=_0x5b48f8[_0x3f80b2(0x157)][_0x5b48f8[_0x3f80b2(0x157)][_0x3f80b2(0x10a)]-0x1];if(saveStateToMessage(currentTablesState,_0x2540e6)){saveChat();return;}}saveChatDebounced();}export function updateHeader(_0x14e6ec,_0x318c70,_0x3396d2){const _0x51eb6a=_0x4df244;if(!currentTablesState||!currentTablesState[_0x14e6ec]||currentTablesState[_0x14e6ec][_0x51eb6a(0xe4)][_0x318c70]===undefined)return;const _0x47648b=currentTablesState[_0x14e6ec][_0x51eb6a(0x130)],_0x575193=currentTablesState[_0x14e6ec][_0x51eb6a(0xe4)][_0x318c70];currentTablesState[_0x14e6ec][_0x51eb6a(0xe4)][_0x318c70]=_0x3396d2;const _0x5d8028=_0x51eb6a(0x119)+_0x47648b+']\x20的表头“'+_0x575193+'”已更新为“'+_0x3396d2+'”。';log(_0x5d8028,_0x51eb6a(0x153));const _0xa29471=getContext();if(_0xa29471[_0x51eb6a(0x157)]&&_0xa29471[_0x51eb6a(0x157)][_0x51eb6a(0x10a)]>0x0){const _0x488fdb=_0xa29471['chat'][_0xa29471[_0x51eb6a(0x157)][_0x51eb6a(0x10a)]-0x1];if(saveStateToMessage(currentTablesState,_0x488fdb)){saveChat();return;}}saveChatDebounced();}export async function deleteRow(_0xf8b245,_0x3f865b){const _0x558ab8=_0x4df244;if(!currentTablesState||!currentTablesState[_0xf8b245]||!currentTablesState[_0xf8b245]['rows'][_0x3f865b])return;const _0x33be92=currentTablesState[_0xf8b245]['name'];currentTablesState[_0xf8b245]['rows'][_0x558ab8(0x167)](_0x3f865b,0x1);const _0x49e835=_0x558ab8(0x119)+_0x33be92+_0x558ab8(0x16d)+(_0x3f865b+0x1)+_0x558ab8(0x136);log(_0x49e835,_0x558ab8(0x153));const _0xf6ebf=getContext();if(_0xf6ebf[_0x558ab8(0x157)]&&_0xf6ebf[_0x558ab8(0x157)][_0x558ab8(0x10a)]>0x0){const _0x56d414=_0xf6ebf['chat'][_0xf6ebf[_0x558ab8(0x157)][_0x558ab8(0x10a)]-0x1];if(saveStateToMessage(currentTablesState,_0x56d414)){await saveChat();return;}}await saveChatDebounced();}export function insertColumn(_0x2da69f,_0x8a25d3,_0x39c6d6){const _0x487237=_0x4df244;if(!currentTablesState||!currentTablesState[_0x2da69f])return;const _0x468c21=currentTablesState[_0x2da69f],_0x1fe19b=_0x39c6d6===_0x487237(0x140)?_0x8a25d3:_0x8a25d3+0x1,_0x3fb590='新列';_0x468c21[_0x487237(0xe4)][_0x487237(0x167)](_0x1fe19b,0x0,_0x3fb590),_0x468c21[_0x487237(0x174)][_0x487237(0x102)](_0x38b38f=>_0x38b38f[_0x487237(0x167)](_0x1fe19b,0x0,''));const _0xf56272=_0x487237(0x119)+_0x468c21['name']+_0x487237(0x15a)+(_0x8a25d3+0x1)+_0x487237(0x14b)+(_0x39c6d6===_0x487237(0x140)?'左侧':'右侧')+_0x487237(0x189);log(_0xf56272,_0x487237(0x153));const _0x3d96d0=getContext();if(_0x3d96d0[_0x487237(0x157)]&&_0x3d96d0[_0x487237(0x157)][_0x487237(0x10a)]>0x0){const _0xe34db4=_0x3d96d0['chat'][_0x3d96d0[_0x487237(0x157)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0xe34db4)){saveChat();return;}}saveChatDebounced();}export function moveColumn(_0x153b6e,_0xe19f2e,_0x4c4797){const _0x2deecc=_0x4df244;if(!currentTablesState||!currentTablesState[_0x153b6e])return;const _0x1b5e65=currentTablesState[_0x153b6e],_0x2c0d75=_0x1b5e65[_0x2deecc(0xe4)],_0x5cad27=_0x1b5e65[_0x2deecc(0x174)],_0x51f9fe=_0x4c4797==='left'?_0xe19f2e-0x1:_0xe19f2e+0x1;if(_0x51f9fe<0x0||_0x51f9fe>=_0x2c0d75[_0x2deecc(0x10a)]){log(_0x2deecc(0x1a1)+_0xe19f2e+_0x2deecc(0x197),_0x2deecc(0xf0));return;}const [_0x11fea3]=_0x2c0d75[_0x2deecc(0x167)](_0xe19f2e,0x1);_0x2c0d75[_0x2deecc(0x167)](_0x51f9fe,0x0,_0x11fea3),_0x5cad27[_0x2deecc(0x102)](_0x38a7e5=>{const _0x1a96f3=_0x2deecc,[_0x43b96e]=_0x38a7e5[_0x1a96f3(0x167)](_0xe19f2e,0x1);_0x38a7e5[_0x1a96f3(0x167)](_0x51f9fe,0x0,_0x43b96e);});const _0x6d7ee3=_0x2deecc(0x119)+_0x1b5e65[_0x2deecc(0x130)]+']\x20的列“'+_0x11fea3+'”已向'+(_0x4c4797===_0x2deecc(0x140)?'左':'右')+'移动。';log(_0x6d7ee3,_0x2deecc(0x153));const _0x1ec5cc=getContext();if(_0x1ec5cc[_0x2deecc(0x157)]&&_0x1ec5cc['chat'][_0x2deecc(0x10a)]>0x0){const _0x263bfb=_0x1ec5cc[_0x2deecc(0x157)][_0x1ec5cc['chat'][_0x2deecc(0x10a)]-0x1];if(saveStateToMessage(currentTablesState,_0x263bfb)){saveChat();return;}}saveChatDebounced();}export function deleteTable(_0x45518f){const _0x30aedc=_0x4df244;if(!currentTablesState||!currentTablesState[_0x45518f])return;const _0x2c3f5e=currentTablesState[_0x45518f]['name'];currentTablesState['splice'](_0x45518f,0x1);const _0x4e9ba1='表格\x20['+_0x2c3f5e+']\x20已被成功废黜。';log(_0x4e9ba1,_0x30aedc(0xf8));const _0x4170f7=getContext();if(_0x4170f7[_0x30aedc(0x157)]&&_0x4170f7[_0x30aedc(0x157)][_0x30aedc(0x10a)]>0x0){const _0x15b0dd=_0x4170f7[_0x30aedc(0x157)][_0x4170f7[_0x30aedc(0x157)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x15b0dd)){saveChat(),log('废黜表格后的状态已强制写入最新消息并立即保存。',_0x30aedc(0xf8));return;}}log('无法找到可锚定的消息或保存失败,删除操作可能不会被持久化!',_0x30aedc(0xee)),saveChatDebounced();}export function addTable(_0x400dcf){const _0x357064=_0x4df244;if(!_0x400dcf||!_0x400dcf[_0x357064(0x18f)]()){log(_0x357064(0x195),'error'),toastr['error'](_0x357064(0x13c),_0x357064(0x122));return;}!currentTablesState&&loadTables();if(currentTablesState[_0x357064(0x159)](_0x5863e8=>_0x5863e8[_0x357064(0x130)]===_0x400dcf[_0x357064(0x18f)]())){log(_0x357064(0x19f)+_0x400dcf+'\x22\x20的表格已存在。',_0x357064(0xee)),toastr['error'](_0x357064(0x161)+_0x400dcf+'\x22\x20的表格已存在。',_0x357064(0x122));return;}const _0x3d4085={'name':_0x400dcf[_0x357064(0x18f)](),'headers':[_0x357064(0x154)],'rows':[],'note':'这是一个新创建的表格。','rule_add':'允许','rule_delete':'允许','rule_update':'允许'};currentTablesState[_0x357064(0x164)](_0x3d4085);const _0x5c01c6=_0x357064(0x19b)+_0x400dcf[_0x357064(0x18f)]()+']。';log(_0x5c01c6,'success');const _0x74769d=getContext();if(_0x74769d[_0x357064(0x157)]&&_0x74769d[_0x357064(0x157)][_0x357064(0x10a)]>0x0){const _0x5d76b4=_0x74769d['chat'][_0x74769d['chat']['length']-0x1];if(saveStateToMessage(currentTablesState,_0x5d76b4)){saveChat(),log(_0x357064(0x109),_0x357064(0xf8));return;}}log(_0x357064(0x1b1),'error'),saveChatDebounced();}export function moveTable(_0x124203,_0xd8dea7){const _0x5b7724=_0x4df244;if(!currentTablesState||!currentTablesState[_0x124203])return;const _0x55e4fe=_0xd8dea7==='up'?_0x124203-0x1:_0x124203+0x1;if(_0x55e4fe<0x0||_0x55e4fe>=currentTablesState[_0x5b7724(0x10a)]){log(_0x5b7724(0x1a3)+_0x124203+_0x5b7724(0x197),_0x5b7724(0xf0));return;}const _0x9f2e25=currentTablesState[_0x124203];currentTablesState[_0x124203]=currentTablesState[_0x55e4fe],currentTablesState[_0x55e4fe]=_0x9f2e25;const _0x2a477a=_0x5b7724(0x119)+_0x9f2e25[_0x5b7724(0x130)]+_0x5b7724(0x19d);log(_0x2a477a,'success');const _0x140cdb=getContext();if(_0x140cdb[_0x5b7724(0x157)]&&_0x140cdb['chat']['length']>0x0){const _0x54b227=_0x140cdb['chat'][_0x140cdb[_0x5b7724(0x157)][_0x5b7724(0x10a)]-0x1];if(saveStateToMessage(currentTablesState,_0x54b227)){saveChat(),log(_0x5b7724(0x16c),_0x5b7724(0xf8));return;}}log(_0x5b7724(0x11e),'error'),saveChatDebounced();}export function updateTableRules(_0x5184e0,_0x270887){const _0x31309a=_0x4df244;if(!currentTablesState||!currentTablesState[_0x5184e0])return;const _0x80db39=currentTablesState[_0x5184e0];_0x80db39['note']=_0x270887['note'],_0x80db39['rule_add']=_0x270887['rule_add'],_0x80db39[_0x31309a(0xfb)]=_0x270887[_0x31309a(0xfb)],_0x80db39[_0x31309a(0xfa)]=_0x270887[_0x31309a(0xfa)];const _0x184533=_0x31309a(0x119)+_0x80db39[_0x31309a(0x130)]+_0x31309a(0x14f);log(_0x184533,'info');const _0x4aefa5=getContext();if(_0x4aefa5[_0x31309a(0x157)]&&_0x4aefa5[_0x31309a(0x157)][_0x31309a(0x10a)]>0x0){const _0x10878a=_0x4aefa5[_0x31309a(0x157)][_0x4aefa5[_0x31309a(0x157)][_0x31309a(0x10a)]-0x1];if(saveStateToMessage(currentTablesState,_0x10878a)){saveChat();return;}}saveChatDebounced();}export function updateRow(_0x714831,_0x4318ac,_0x43569a){const _0x4f69e7=_0x4df244;if(!currentTablesState||!currentTablesState[_0x714831]){log('AI指令错误尝试在不存在的表格索引\x20'+_0x714831+_0x4f69e7(0x177),'error');return;}const _0x5f5da5=currentTablesState[_0x714831];if(_0x4318ac>=_0x5f5da5[_0x4f69e7(0x174)][_0x4f69e7(0x10a)]){log(_0x4f69e7(0x176)+_0x4318ac+_0x4f69e7(0x15d)+_0x5f5da5[_0x4f69e7(0x130)]+']\x20末尾新增一行。','warn'),insertRow(_0x714831,_0x43569a);return;}const _0x1cffb7=_0x5f5da5[_0x4f69e7(0x174)][_0x4318ac];for(const _0x2f3fe2 in _0x43569a){const _0x4f6ef6=parseInt(_0x2f3fe2,0xa);_0x4f6ef6<_0x1cffb7[_0x4f69e7(0x10a)]&&(_0x1cffb7[_0x4f6ef6]=_0x43569a[_0x4f6ef6],addHighlight(_0x714831,_0x4318ac,_0x4f6ef6));}const _0x64e3a1=_0x4f69e7(0xe2)+_0x5f5da5[_0x4f69e7(0x130)]+']\x20的第\x20'+(_0x4318ac+0x1)+_0x4f69e7(0x188);log(_0x64e3a1,'info');const _0x15fd72=getContext();if(_0x15fd72[_0x4f69e7(0x157)]&&_0x15fd72[_0x4f69e7(0x157)][_0x4f69e7(0x10a)]>0x0){const _0x136228=_0x15fd72[_0x4f69e7(0x157)][_0x15fd72[_0x4f69e7(0x157)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x136228)){saveChat();return;}}saveChatDebounced();}export function clearAllTables(){const _0x571a62=_0x4df244;if(!currentTablesState){log(_0x571a62(0x1a2),_0x571a62(0xee));return;}currentTablesState['forEach'](_0xeae037=>{_0xeae037['rows']=[];}),log(_0x571a62(0x12f),_0x571a62(0xf0));const _0x5cf328=getContext();if(_0x5cf328[_0x571a62(0x157)]&&_0x5cf328[_0x571a62(0x157)][_0x571a62(0x10a)]>0x0){const _0x2a4532=_0x5cf328[_0x571a62(0x157)][_0x5cf328[_0x571a62(0x157)]['length']-0x1];if(saveStateToMessage(currentTablesState,_0x2a4532)){saveChat(),log(_0x571a62(0xe0),_0x571a62(0xf8)),toastr[_0x571a62(0xf8)](_0x571a62(0x124),'操作完成');return;}}log(_0x571a62(0x107),'error'),saveChatDebounced();}export function convertTablesToCsvString(){const _0x1c4edf=_0x4df244;!currentTablesState&&loadTables();if(!currentTablesState)return'';let _0x1d7ede='';return currentTablesState[_0x1c4edf(0x102)]((_0x24f86b,_0xdfa5a3)=>{const _0x2e0539=_0x1c4edf;_0x1d7ede+=_0x2e0539(0x199)+_0xdfa5a3+':'+_0x24f86b[_0x2e0539(0x130)]+'\x0a',_0x1d7ede+=_0x2e0539(0x184)+(_0x24f86b['note']||'无')+'\x0a';const _0x199354=_0x24f86b[_0x2e0539(0x130)][_0x2e0539(0xf1)](/\s/g,'')+'内容';_0x1d7ede+='<'+_0x199354+'>\x0a';const _0x151631=_0x24f86b[_0x2e0539(0xe4)][_0x2e0539(0x114)]((_0x3308f8,_0x340f45)=>_0x340f45+':'+_0x3308f8)[_0x2e0539(0x163)](',');_0x1d7ede+=_0x2e0539(0x147)+_0x151631+'\x0a',_0x24f86b[_0x2e0539(0x174)]['forEach']((_0x3f4f0a,_0x5806be)=>{const _0x16f05f=_0x2e0539;if(Array[_0x16f05f(0x128)](_0x3f4f0a)){const _0x24b9f4=_0x3f4f0a[_0x16f05f(0x114)](_0x5e4cfe=>{const _0x422b4f=_0x16f05f;return _0x5e4cfe===null||_0x5e4cfe===undefined||_0x5e4cfe===''?'未知':_0x5e4cfe[_0x422b4f(0x170)]();})[_0x16f05f(0x163)](',');_0x1d7ede+=_0x5806be+','+_0x24b9f4+'\x0a';}}),_0x1d7ede+='</'+_0x199354+'>\x0a',_0x1d7ede+=_0x2e0539(0x16f)+(_0x24f86b['rule_add']||'允许')+'\x0a',_0x1d7ede+=_0x2e0539(0x142)+(_0x24f86b['rule_delete']||'允许')+'\x0a',_0x1d7ede+='【修改】:\x20'+(_0x24f86b['rule_update']||'允许')+'\x0a',_0xdfa5a3<currentTablesState[_0x2e0539(0x10a)]-0x1&&(_0x1d7ede+=_0x2e0539(0x17d));}),_0x1d7ede;}export function convertTablesToCsvStringForContentOnly(){const _0x5d50f9=_0x4df244,_0x191686=getMemoryState();if(!_0x191686||_0x191686[_0x5d50f9(0x10a)]===0x0)return'';let _0x4fdd2c='';return _0x191686[_0x5d50f9(0x102)](_0x28b553=>{const _0x8d3c29=_0x5d50f9;_0x4fdd2c+='\x0a<'+_0x28b553[_0x8d3c29(0x130)]+'>\x0a';const _0x4e2974=_0x28b553[_0x8d3c29(0xe4)][_0x8d3c29(0x114)]((_0x4b3495,_0x529c2b)=>String[_0x8d3c29(0x1ab)](0x41+_0x529c2b)+':'+_0x4b3495)[_0x8d3c29(0x163)](',');_0x4fdd2c+=_0x4e2974+'\x0a',Array[_0x8d3c29(0x128)](_0x28b553[_0x8d3c29(0x174)])&&_0x28b553['rows'][_0x8d3c29(0x102)]((_0x56fc36,_0x2bf063)=>{const _0x538950=_0x8d3c29;if(Array[_0x538950(0x128)](_0x56fc36)){const _0x559563=_0x56fc36[_0x538950(0x163)](',');_0x4fdd2c+=_0x2bf063+0x1+':'+_0x559563+'\x0a';}}),_0x4fdd2c+='</'+_0x28b553[_0x8d3c29(0x130)]+'>\x0a';}),_0x4fdd2c[_0x5d50f9(0x18f)]();}loadTables();export function getBatchFillerRuleTemplate(){const _0x391032=_0x4df244;return extension_settings[extensionName]?.[_0x391032(0xdd)]??DEFAULT_AI_RULE_TEMPLATE;}export function saveBatchFillerRuleTemplate(_0x1e1444){const _0xd80699=_0x4df244;extension_settings[extensionName][_0xd80699(0xdd)]=_0x1e1444,saveSettingsDebounced();}export function getBatchFillerFlowTemplate(){return extension_settings[extensionName]?.['batch_filler_flow_template']??DEFAULT_AI_FLOW_TEMPLATE;}export function saveBatchFillerFlowTemplate(_0x55b823){const _0x38df45=_0x4df244;extension_settings[extensionName][_0x38df45(0x18d)]=_0x55b823,saveSettingsDebounced();}function _0x29e8(_0x1c3865,_0x4acaec){const _0x261b32=_0x261b();return _0x29e8=function(_0x29e8c1,_0x217b50){_0x29e8c1=_0x29e8c1-0xda;let _0x5c23f7=_0x261b32[_0x29e8c1];return _0x5c23f7;},_0x29e8(_0x1c3865,_0x4acaec);}export function getAiFlowTemplateForInjection(){return extension_settings[extensionName]?.['amily2_ai_template']??DEFAULT_AI_FLOW_TEMPLATE;}export async function updateTableFromText(_0x92befd){const _0x55615e=_0x4df244;if(!_0x92befd){log(_0x55615e(0xf3),_0x55615e(0xf0));return;}const _0xf80826=_0x92befd[_0x55615e(0x12d)](/<Amily2Edit>([\s\S]*?)<\/Amily2Edit>/);if(!_0xf80826||!_0xf80826[0x1]){log(_0x55615e(0x1ae),'warn');return;}let _0x4c518a=_0xf80826[0x1][_0x55615e(0xf1)](/<!--|-->/g,'')[_0x55615e(0x18f)]();if(!_0x4c518a){log(_0x55615e(0x179),_0x55615e(0x153));return;}const _0x4fdcc4=_0x4c518a[_0x55615e(0x1aa)]('\x0a')[_0x55615e(0x112)](_0x47f2fc=>_0x47f2fc[_0x55615e(0x18f)]()!=='');log('准备执行从AI返回的\x20'+_0x4fdcc4['length']+'\x20条表格操作指令...',_0x55615e(0x153));const _0x42d565={'insertRow':(_0x16b6fa,_0xed1363)=>{const _0x581abb=_0x55615e;log(_0x581abb(0xf9)+_0x16b6fa+_0x581abb(0x11c)+JSON[_0x581abb(0x168)](_0xed1363)+')',_0x581abb(0x153)),insertRow(_0x16b6fa,_0xed1363);},'deleteRow':(_0x456d86,_0x1de884)=>{const _0x24aa12=_0x55615e;log('执行AI指令:\x20deleteRow(tableIndex='+_0x456d86+',\x20rowIndex='+_0x1de884+')',_0x24aa12(0x153)),deleteRow(_0x456d86,_0x1de884);},'updateRow':(_0x288fb9,_0x5dc65c,_0x5dce23)=>{const _0x9ca8ba=_0x55615e;log('执行AI指令:\x20updateRow(tableIndex='+_0x288fb9+',\x20rowIndex='+_0x5dc65c+',\x20data='+JSON['stringify'](_0x5dce23)+')',_0x9ca8ba(0x153)),updateRow(_0x288fb9,_0x5dc65c,_0x5dce23);}};try{const _0x406bc1=Object[_0x55615e(0x11a)](async function(){})['constructor'],_0x30d464=new _0x406bc1(_0x55615e(0x15b),_0x55615e(0x145)+_0x4c518a+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20');await _0x30d464(_0x42d565),log(_0x55615e(0xeb),_0x55615e(0xf8)),toastr[_0x55615e(0xf8)](_0x55615e(0xda),_0x55615e(0x160)),document[_0x55615e(0x108)](new CustomEvent(_0x55615e(0x10c)));}catch(_0xd074fc){log(_0x55615e(0x12e)+_0xd074fc[_0x55615e(0xdf)],_0x55615e(0xee)),toastr[_0x55615e(0xee)]('执行AI指令时出错:\x20'+_0xd074fc[_0x55615e(0xdf)],_0x55615e(0xe1));}}export function saveAiTemplate(_0x3ac01f){extension_settings[extensionName]['amily2_ai_template']=_0x3ac01f,saveSettingsDebounced();}export function getAiTemplate(){return getAiFlowTemplateForInjection();}function exportPresetBase(_0x492da9=![]){const _0xb2367d=_0x4df244;if(!currentTablesState){log(_0xb2367d(0x1a8),_0xb2367d(0xee)),toastr[_0xb2367d(0xee)](_0xb2367d(0x17f));return;}let _0x1d207d,_0x371dea,_0x30d281;_0x492da9?(_0x1d207d=JSON[_0xb2367d(0x116)](JSON[_0xb2367d(0x168)](currentTablesState)),_0x371dea='Amily2-Table-Preset-v2.0-full',_0x30d281=_0xb2367d(0x1a4)):(_0x1d207d=currentTablesState['map'](_0x40f013=>({'name':_0x40f013['name'],'headers':_0x40f013[_0xb2367d(0xe4)],'note':_0x40f013[_0xb2367d(0x121)],'rule_add':_0x40f013[_0xb2367d(0x185)],'rule_delete':_0x40f013[_0xb2367d(0xfb)],'rule_update':_0x40f013[_0xb2367d(0xfa)],'rows':[]})),_0x371dea='Amily2-Table-Preset-v2.0-clean',_0x30d281=_0xb2367d(0x182));const _0x303681={'version':_0xb2367d(0x100),'batchFillerRuleTemplate':getBatchFillerRuleTemplate(),'batchFillerFlowTemplate':getBatchFillerFlowTemplate(),'injectionFlowTemplate':getAiFlowTemplateForInjection(),'tables':_0x1d207d},_0xdb5d68=new Blob([JSON[_0xb2367d(0x168)](_0x303681,null,0x2)],{'type':_0xb2367d(0x16b)}),_0x176bce=URL[_0xb2367d(0x141)](_0xdb5d68),_0x4c8327=document[_0xb2367d(0x10b)]('a');_0x4c8327[_0xb2367d(0x18e)]=_0x176bce,_0x4c8327['download']=_0xb2367d(0x1a6)+_0x30d281+'-'+new Date()[_0xb2367d(0xde)]()[_0xb2367d(0xe7)](0x0,0xa)+_0xb2367d(0x133),document[_0xb2367d(0x111)][_0xb2367d(0x10e)](_0x4c8327),_0x4c8327[_0xb2367d(0x11f)](),document['body'][_0xb2367d(0xdc)](_0x4c8327),URL[_0xb2367d(0x166)](_0x176bce),log('【'+_0x30d281+_0xb2367d(0x169),_0xb2367d(0xf8)),toastr[_0xb2367d(0xf8)]('【'+_0x30d281+'】已开始下载。','导出成功');}export function exportPreset(){exportPresetBase(![]);}export function exportPresetFull(){exportPresetBase(!![]);}export function importPreset(_0x4665c8){const _0x181609=_0x4df244,_0x55a03f=document[_0x181609(0x10b)](_0x181609(0x127));_0x55a03f[_0x181609(0x12a)]='file',_0x55a03f[_0x181609(0x186)]='.json',_0x55a03f[_0x181609(0x1af)]=_0x227735=>{const _0x381318=_0x181609,_0x327eaa=_0x227735[_0x381318(0x13a)][_0x381318(0xe3)][0x0];if(!_0x327eaa)return;const _0x4a57a9=new FileReader();_0x4a57a9[_0x381318(0x129)]=_0x6ae4d0=>{const _0x9abd12=_0x381318;try{const _0x1b718f=JSON['parse'](_0x6ae4d0[_0x9abd12(0x13a)][_0x9abd12(0x1ac)]);if(!_0x1b718f[_0x9abd12(0xf6)]||!Array[_0x9abd12(0x128)](_0x1b718f['tables']))throw new Error(_0x9abd12(0xe8));const _0xd363ab=window[_0x9abd12(0x180)](_0x9abd12(0xfd));if(!_0xd363ab){log('用户取消了导入操作。',_0x9abd12(0x153)),toastr[_0x9abd12(0x153)](_0x9abd12(0x15f));return;}if(_0x1b718f[_0x9abd12(0xf6)]===_0x9abd12(0x100))saveBatchFillerRuleTemplate(_0x1b718f['batchFillerRuleTemplate']),saveBatchFillerFlowTemplate(_0x1b718f[_0x9abd12(0x143)]),saveAiTemplate(_0x1b718f[_0x9abd12(0x14a)]);else{if(_0x1b718f['aiRuleTemplate']!==undefined&&_0x1b718f[_0x9abd12(0x172)]!==undefined)saveBatchFillerRuleTemplate(_0x1b718f[_0x9abd12(0x192)]),saveBatchFillerFlowTemplate(_0x1b718f['aiFlowTemplate']),saveAiTemplate(_0x1b718f['aiFlowTemplate']);else{if(_0x1b718f['aiTemplate'])saveBatchFillerRuleTemplate(''),saveBatchFillerFlowTemplate(_0x1b718f[_0x9abd12(0xe5)]),saveAiTemplate(_0x1b718f[_0x9abd12(0xe5)]);else throw new Error('预设中缺少必要的指令模板字段。');}}const _0xb33d27=_0x1b718f[_0x9abd12(0xec)];_0xb33d27[_0x9abd12(0x102)](_0x1a0ebf=>{const _0x1386e2=_0x9abd12;if(_0x1a0ebf[_0x1386e2(0x130)]===undefined||_0x1a0ebf[_0x1386e2(0xe4)]===undefined||_0x1a0ebf['rows']===undefined)throw new Error(_0x1386e2(0x1ad)+JSON['stringify'](_0x1a0ebf));if(_0x1a0ebf[_0x1386e2(0x121)]===undefined)_0x1a0ebf[_0x1386e2(0x121)]='无';if(_0x1a0ebf[_0x1386e2(0x185)]===undefined)_0x1a0ebf['rule_add']='允许';if(_0x1a0ebf['rule_delete']===undefined)_0x1a0ebf[_0x1386e2(0xfb)]='允许';if(_0x1a0ebf[_0x1386e2(0xfa)]===undefined)_0x1a0ebf['rule_update']='允许';}),setMemoryState(_0xb33d27);const _0x9de54b=getContext();if(_0x9de54b[_0x9abd12(0x157)]&&_0x9de54b[_0x9abd12(0x157)][_0x9abd12(0x10a)]>0x0){const _0x566a01=_0x9de54b[_0x9abd12(0x157)][_0x9de54b[_0x9abd12(0x157)]['length']-0x1];saveStateToMessage(getMemoryState(),_0x566a01)&&(saveChat(),log(_0x9abd12(0x196),_0x9abd12(0xf8)));}else saveChatDebounced();log(_0x9abd12(0xef),_0x9abd12(0xf8)),toastr[_0x9abd12(0xf8)](_0x9abd12(0x171),_0x9abd12(0x105)),typeof _0x4665c8===_0x9abd12(0x19e)&&_0x4665c8();}catch(_0x45cac9){log(_0x9abd12(0x165)+_0x45cac9[_0x9abd12(0xdf)],'error'),toastr[_0x9abd12(0xee)](_0x9abd12(0x150)+_0x45cac9[_0x9abd12(0xdf)],'错误');}},_0x4a57a9[_0x381318(0x15c)](_0x327eaa);},_0x55a03f[_0x181609(0x11f)]();}export function isCurrentTablesEmpty(){const _0x4e7be2=_0x4df244,_0x5fbc05=getMemoryState();if(!_0x5fbc05||_0x5fbc05[_0x4e7be2(0x10a)]===0x0)return!![];return _0x5fbc05[_0x4e7be2(0x110)](_0x2c73a3=>!_0x2c73a3['rows']||_0x2c73a3[_0x4e7be2(0x174)][_0x4e7be2(0x10a)]===0x0);}export function clearGlobalPreset(){const _0x37461b=_0x4df244;if(extension_settings[extensionName]&&extension_settings[extensionName]['global_table_preset']){const _0x21c76e=window[_0x37461b(0x180)](_0x37461b(0x123));_0x21c76e?(delete extension_settings[extensionName]['global_table_preset'],saveSettingsDebounced(),log('全局预设已被清除。',_0x37461b(0xf8)),toastr[_0x37461b(0xf8)](_0x37461b(0x162),_0x37461b(0x113))):(log('用户取消了清除全局预设的操作。','info'),toastr[_0x37461b(0x153)](_0x37461b(0xfe)));}else log('无需清除,当前未设置任何全局预设。','info'),toastr['info'](_0x37461b(0x135),'提示');}export function importGlobalPreset(_0x1154f0){const _0x167523=_0x4df244,_0x11a40d=document[_0x167523(0x10b)](_0x167523(0x127));_0x11a40d[_0x167523(0x12a)]=_0x167523(0x17e),_0x11a40d[_0x167523(0x186)]=_0x167523(0x133),_0x11a40d[_0x167523(0x1af)]=_0x3f73ec=>{const _0x368e50=_0x167523,_0x5ece1f=_0x3f73ec[_0x368e50(0x13a)][_0x368e50(0xe3)][0x0];if(!_0x5ece1f)return;const _0x4fa99f=new FileReader();_0x4fa99f['onload']=_0x4475b9=>{const _0x554968=_0x368e50;try{const _0x2a2cdb=JSON[_0x554968(0x116)](_0x4475b9[_0x554968(0x13a)][_0x554968(0x1ac)]);if(!_0x2a2cdb[_0x554968(0xf6)]||!Array[_0x554968(0x128)](_0x2a2cdb[_0x554968(0xec)]))throw new Error(_0x554968(0xe8));const _0x4f6d8f=window[_0x554968(0x180)](_0x554968(0x181));if(!_0x4f6d8f){log(_0x554968(0x18b),_0x554968(0x153)),toastr[_0x554968(0x153)](_0x554968(0xfe));return;}const _0x49352f=_0x2a2cdb[_0x554968(0xec)][_0x554968(0x114)](_0x50fd35=>({'name':_0x50fd35[_0x554968(0x130)],'headers':_0x50fd35[_0x554968(0xe4)],'note':_0x50fd35[_0x554968(0x121)],'rule_add':_0x50fd35['rule_add'],'rule_delete':_0x50fd35['rule_delete'],'rule_update':_0x50fd35[_0x554968(0xfa)],'rows':[]}));!extension_settings[extensionName]&&(extension_settings[extensionName]={}),extension_settings[extensionName]['global_table_preset']={'version':_0x2a2cdb[_0x554968(0xf6)],'tables':_0x49352f,'batchFillerRuleTemplate':_0x2a2cdb['batchFillerRuleTemplate'],'batchFillerFlowTemplate':_0x2a2cdb[_0x554968(0x143)],'injectionFlowTemplate':_0x2a2cdb[_0x554968(0x14a)]},saveSettingsDebounced(),log('全局预设已成功导入并保存到扩展设置中。',_0x554968(0xf8)),toastr[_0x554968(0xf8)]('全局预设已设置!新聊天将默认使用此预设。',_0x554968(0x19a)),typeof _0x1154f0===_0x554968(0x19e)&&_0x1154f0();}catch(_0xb7d0c0){log('导入全局预设失败:\x20'+_0xb7d0c0[_0x554968(0xdf)],_0x554968(0xee)),toastr['error']('导入失败:'+_0xb7d0c0[_0x554968(0xdf)],'错误');}},_0x4fa99f[_0x368e50(0x15c)](_0x5ece1f);},_0x11a40d[_0x167523(0x11f)]();}