mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 03:25:51 +00:00
ci: auto build & obfuscate [2026-04-26 23:26:32] (Jenkins #18)
This commit is contained in:
@@ -9,20 +9,20 @@ import {
|
||||
buildGoogleEmbeddingApiUrl
|
||||
} from './utils/googleAdapter.js';
|
||||
import { getSlotProfile } from './api/api-resolver.js';
|
||||
import { extensionName } from '../utils/settings.js';
|
||||
|
||||
const MODULE_NAME = 'hanlinyuan-rag-core';
|
||||
const GOOGLE_API_BASE_URL = 'https://generativelanguage.googleapis.com';
|
||||
|
||||
function getSettings() {
|
||||
const context = SillyTavern.getContext();
|
||||
if (!context || !context.extensionSettings || !context.extensionSettings[MODULE_NAME]) {
|
||||
const root = extension_settings[extensionName];
|
||||
const nested = root && root[MODULE_NAME];
|
||||
if (nested) return nested;
|
||||
// 读侧兼容:若迁移尚未触发(极早期调用),回退至旧顶层位置,避免空配置。
|
||||
const legacy = extension_settings[MODULE_NAME];
|
||||
if (legacy) return legacy;
|
||||
console.error('[翰林院-API] 无法获取设置,API调用可能失败。');
|
||||
return {
|
||||
retrieval: {},
|
||||
rerank: {}
|
||||
};
|
||||
}
|
||||
return context.extensionSettings[MODULE_NAME];
|
||||
return { retrieval: {}, rerank: {} };
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,14 +4,17 @@ import {
|
||||
extension_prompt_roles,
|
||||
setExtensionPrompt,
|
||||
eventSource,
|
||||
event_types
|
||||
event_types,
|
||||
saveSettingsDebounced
|
||||
} from '/script.js';
|
||||
import { extension_settings } from '/scripts/extensions.js';
|
||||
|
||||
import * as ContextUtils from './utils/context-utils.js';
|
||||
import { getCollectionIdInfo, getCharacterId, getCharacterStableId } from './utils/context-utils.js';
|
||||
import { defaultSettings as ragDefaultSettings } from './rag-settings.js';
|
||||
import { extractBlocksByTags, applyExclusionRules } from './utils/rag-tag-extractor.js';
|
||||
import { resolveQueryPreprocessingRuleConfig } from '../utils/config/RuleProfileManager.js';
|
||||
import { extensionName } from '../utils/settings.js';
|
||||
import * as IngestionManager from './ingestion-manager.js';
|
||||
import {
|
||||
getEmbeddings,
|
||||
@@ -148,6 +151,7 @@ function initialize() {
|
||||
console.error('[翰林院] 未能获取SillyTavern上下文,初始化失败。');
|
||||
return;
|
||||
}
|
||||
migrateLegacyRagSettings();
|
||||
settings = getSettings();
|
||||
if (!window.hanlinyuanRagProcessor) {
|
||||
window.hanlinyuanRagProcessor = {};
|
||||
@@ -296,17 +300,16 @@ async function ingestTextToHanlinyuan(text, source = 'manual', metadata = {}, pr
|
||||
}
|
||||
|
||||
function getSettings() {
|
||||
if (!context || !context.extensionSettings) {
|
||||
|
||||
return structuredClone(ragDefaultSettings);
|
||||
if (!extension_settings[extensionName]) {
|
||||
extension_settings[extensionName] = {};
|
||||
}
|
||||
const root = extension_settings[extensionName];
|
||||
|
||||
|
||||
let s = context.extensionSettings[MODULE_NAME];
|
||||
let s = root[MODULE_NAME];
|
||||
|
||||
if (!s) {
|
||||
s = {};
|
||||
context.extensionSettings[MODULE_NAME] = s;
|
||||
root[MODULE_NAME] = s;
|
||||
}
|
||||
|
||||
if (s.condensationHistory === undefined) {
|
||||
@@ -343,16 +346,49 @@ function getSettings() {
|
||||
}
|
||||
|
||||
function saveSettings() {
|
||||
|
||||
if (context) context.saveSettingsDebounced();
|
||||
saveSettingsDebounced();
|
||||
}
|
||||
|
||||
function resetSettings() {
|
||||
|
||||
if (context) {
|
||||
context.extensionSettings[MODULE_NAME] = structuredClone(ragDefaultSettings);
|
||||
if (!extension_settings[extensionName]) {
|
||||
extension_settings[extensionName] = {};
|
||||
}
|
||||
extension_settings[extensionName][MODULE_NAME] = structuredClone(ragDefaultSettings);
|
||||
saveSettings();
|
||||
}
|
||||
|
||||
function migrateLegacyRagSettings() {
|
||||
const legacy = extension_settings[MODULE_NAME];
|
||||
if (!legacy || typeof legacy !== 'object') return;
|
||||
|
||||
if (!extension_settings[extensionName]) {
|
||||
extension_settings[extensionName] = {};
|
||||
}
|
||||
const root = extension_settings[extensionName];
|
||||
|
||||
// legacy 是用户此前实际交互过的真数据来源;nested 可能已被 super-memory 等模块用默认值填过,
|
||||
// 因此采用 legacy-优先的深合并:legacy 中的叶子值覆盖 nested,nested 中 legacy 没有的键保留。
|
||||
if (!root[MODULE_NAME] || typeof root[MODULE_NAME] !== 'object') {
|
||||
root[MODULE_NAME] = legacy;
|
||||
console.log(`[翰林院] 已迁移旧版 '${MODULE_NAME}' 设置到 extension_settings['${extensionName}']。`);
|
||||
} else {
|
||||
const merged = root[MODULE_NAME];
|
||||
const overlayLegacy = (src, dst) => {
|
||||
for (const key of Object.keys(src)) {
|
||||
const sv = src[key];
|
||||
if (sv && typeof sv === 'object' && !Array.isArray(sv) && dst[key] && typeof dst[key] === 'object' && !Array.isArray(dst[key])) {
|
||||
overlayLegacy(sv, dst[key]);
|
||||
} else {
|
||||
dst[key] = sv;
|
||||
}
|
||||
}
|
||||
};
|
||||
overlayLegacy(legacy, merged);
|
||||
console.log(`[翰林院] 发现新旧两处配置;已将顶层 '${MODULE_NAME}' 深合并覆盖到 extension_settings['${extensionName}']。`);
|
||||
}
|
||||
|
||||
delete extension_settings[MODULE_NAME];
|
||||
saveSettingsDebounced();
|
||||
}
|
||||
|
||||
function showNotification(message, type = 'info') {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { getContext, extension_settings } from "/scripts/extensions.js";
|
||||
import { saveSettingsDebounced } from "/script.js";
|
||||
import { getCharacterStableId } from "../utils/context-utils.js";
|
||||
import { getMemoryState } from "../table-system/manager.js";
|
||||
import { extensionName } from "../../utils/settings.js";
|
||||
@@ -160,26 +161,62 @@ export function getRelatedNodes(nodeId, maxDepth = 1) {
|
||||
return related;
|
||||
}
|
||||
|
||||
function getGraphStore(create = false) {
|
||||
if (!extension_settings[extensionName]) {
|
||||
if (!create) return null;
|
||||
extension_settings[extensionName] = {};
|
||||
}
|
||||
const root = extension_settings[extensionName];
|
||||
if (!root.relationship_graphs) {
|
||||
if (!create) return null;
|
||||
root.relationship_graphs = {};
|
||||
}
|
||||
return root.relationship_graphs;
|
||||
}
|
||||
|
||||
function migrateLegacyRelationshipGraphs() {
|
||||
const legacy = extension_settings.relationship_graphs;
|
||||
if (!legacy || typeof legacy !== 'object') return;
|
||||
|
||||
if (!extension_settings[extensionName]) {
|
||||
extension_settings[extensionName] = {};
|
||||
}
|
||||
const root = extension_settings[extensionName];
|
||||
|
||||
if (!root.relationship_graphs) {
|
||||
root.relationship_graphs = legacy;
|
||||
console.log(`[关系图谱] 已迁移旧版 'relationship_graphs' 到 extension_settings['${extensionName}']。`);
|
||||
} else {
|
||||
console.log(`[关系图谱] 发现遗留顶层 'relationship_graphs',但新位置已存在;合并遗留数据并清理顶层。`);
|
||||
for (const [cid, data] of Object.entries(legacy)) {
|
||||
if (!root.relationship_graphs[cid]) {
|
||||
root.relationship_graphs[cid] = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
delete extension_settings.relationship_graphs;
|
||||
saveSettingsDebounced();
|
||||
}
|
||||
|
||||
export async function saveGraph() {
|
||||
const context = getContext();
|
||||
const charId = getCharacterStableId();
|
||||
if (!charId) return;
|
||||
|
||||
if (!context.extensionSettings.relationship_graphs) {
|
||||
context.extensionSettings.relationship_graphs = {};
|
||||
}
|
||||
const store = getGraphStore(true);
|
||||
if (!store) return;
|
||||
|
||||
context.extensionSettings.relationship_graphs[charId] = graphData;
|
||||
context.saveSettingsDebounced();
|
||||
store[charId] = graphData;
|
||||
saveSettingsDebounced();
|
||||
}
|
||||
|
||||
export async function loadGraph() {
|
||||
const context = getContext();
|
||||
const charId = getCharacterStableId();
|
||||
if (!charId) return;
|
||||
|
||||
if (context.extensionSettings.relationship_graphs && context.extensionSettings.relationship_graphs[charId]) {
|
||||
graphData = context.extensionSettings.relationship_graphs[charId];
|
||||
const store = getGraphStore(false);
|
||||
if (store && store[charId]) {
|
||||
graphData = store[charId];
|
||||
console.log(`[关系图谱] 已加载角色 ${charId} 的图谱: ${graphData.nodes.length} 个节点, ${graphData.edges.length} 条边。`);
|
||||
} else {
|
||||
graphData = { nodes: [], edges: [] };
|
||||
@@ -188,6 +225,7 @@ export async function loadGraph() {
|
||||
|
||||
const context = getContext();
|
||||
if (context) {
|
||||
migrateLegacyRelationshipGraphs();
|
||||
loadGraph();
|
||||
document.addEventListener('AMILY2_TABLE_UPDATED', (e) => {
|
||||
const { tableName } = e.detail;
|
||||
|
||||
@@ -161,14 +161,26 @@ export function bindHanlinyuanEvents() {
|
||||
|
||||
// 确保核心已经初始化
|
||||
if (HanlinyuanCore.initialize) {
|
||||
try {
|
||||
HanlinyuanCore.initialize();
|
||||
} catch (e) {
|
||||
console.error('[翰林院-枢纽] 核心初始化抛出异常:', e);
|
||||
}
|
||||
} else {
|
||||
console.error('[翰林院-枢纽] 核心法典未能提供初始化圣旨!');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
loadSettingsToUI();
|
||||
loadWorldbookList(); // 【新增】加载书库列表
|
||||
} catch (e) {
|
||||
console.error('[翰林院-枢纽] loadSettingsToUI 抛出异常:', e);
|
||||
}
|
||||
try {
|
||||
loadWorldbookList();
|
||||
} catch (e) {
|
||||
console.error('[翰林院-枢纽] loadWorldbookList 抛出异常:', e);
|
||||
}
|
||||
log('[翰林院-枢纽] 已成功连接各部,政令畅通。', 'info');
|
||||
const fileInput = document.getElementById('hanlinyuan-ingest-novel-file-input');
|
||||
const fileNameSpan = document.getElementById('hanlinyuan-ingest-novel-file-name');
|
||||
|
||||
@@ -1043,12 +1043,32 @@ function bindConcurrentWorldbookEvents() {
|
||||
});
|
||||
}
|
||||
|
||||
function opt_purgeGarbageKeys() {
|
||||
const store = extension_settings[extensionName];
|
||||
if (!store) return;
|
||||
let removed = 0;
|
||||
for (const key of Object.keys(store)) {
|
||||
// 历史 bug 造成的污染 key:handleSettingChange 误把世界书/条目复选框当作设置项,
|
||||
// 生成形如 plotOpt_amily2-opt-wb-*、plotOpt_amily2-opt-entry-*、plotOpt_amily2-opt-concurrent-wb-* 的键
|
||||
if (/^plotOpt_amily2-opt-/.test(key)) {
|
||||
delete store[key];
|
||||
removed++;
|
||||
}
|
||||
}
|
||||
if (removed > 0) {
|
||||
console.log(`[${extensionName}] 清理残留的 ${removed} 条无效 plotOpt_* 设置键。`);
|
||||
saveSettingsDebounced();
|
||||
}
|
||||
}
|
||||
|
||||
export function initializePlotOptimizationBindings() {
|
||||
const panel = $('#amily2_plot_optimization_panel');
|
||||
if (panel.length === 0 || panel.data('events-bound')) {
|
||||
return;
|
||||
}
|
||||
|
||||
opt_purgeGarbageKeys();
|
||||
|
||||
// Tab switching logic
|
||||
panel.find('.sinan-navigation-deck').on('click', '.sinan-nav-item', function() {
|
||||
const tabButton = $(this);
|
||||
@@ -1179,7 +1199,11 @@ export function initializePlotOptimizationBindings() {
|
||||
|
||||
const handleSettingChange = function(element) {
|
||||
const el = $(element);
|
||||
const key_part = (element.name || element.id).replace('amily2_opt_', '');
|
||||
const rawName = element.name || element.id || '';
|
||||
// 仅处理下划线前缀的真实设置项;动态生成的世界书/条目复选框用连字符命名(amily2-opt-wb-*、amily2-opt-entry-*),
|
||||
// 它们有自己的专属 handler,若被此处捕获会生成 plotOpt_amily2-opt-... 的垃圾 key 污染 settings
|
||||
if (!rawName.startsWith('amily2_opt_')) return;
|
||||
const key_part = rawName.replace('amily2_opt_', '');
|
||||
const key = 'plotOpt_' + key_part.replace(/_([a-z])/g, (g) => g[1].toUpperCase());
|
||||
|
||||
let value = element.type === 'checkbox' ? element.checked : el.val();
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
const a0_0x483ad6=a0_0xa4a6;(function(_0x347c41,_0x3681fa){const _0x439ab9=a0_0xa4a6,_0x19ae58=_0x347c41();while(!![]){try{const _0x5b741e=-parseInt(_0x439ab9(0x8b,'ZFoI'))/0x1*(-parseInt(_0x439ab9(0x9c,'FP7g'))/0x2)+-parseInt(_0x439ab9(0x8c,'*G1t'))/0x3*(-parseInt(_0x439ab9(0x9e,'DPPl'))/0x4)+parseInt(_0x439ab9(0x93,'*G1t'))/0x5*(-parseInt(_0x439ab9(0x96,'butc'))/0x6)+-parseInt(_0x439ab9(0x81,'0sy3'))/0x7*(parseInt(_0x439ab9(0x9b,'QR)F'))/0x8)+parseInt(_0x439ab9(0x86,'DPPl'))/0x9+parseInt(_0x439ab9(0x91,'&LNc'))/0xa*(parseInt(_0x439ab9(0x99,'I7rj'))/0xb)+-parseInt(_0x439ab9(0x90,'Ue90'))/0xc;if(_0x5b741e===_0x3681fa)break;else _0x19ae58['push'](_0x19ae58['shift']());}catch(_0x33f9a1){_0x19ae58['push'](_0x19ae58['shift']());}}}(a0_0x1527,0x8ab75));function a0_0xa4a6(_0xa2dfc1,_0x138a0c){_0xa2dfc1=_0xa2dfc1-0x7f;const _0x152796=a0_0x1527();let _0xa4a638=_0x152796[_0xa2dfc1];if(a0_0xa4a6['JmeJrD']===undefined){var _0x517737=function(_0x5a8e29){const _0x319d63='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4e0805='',_0x57921f='';for(let _0x997e7d=0x0,_0x2df684,_0x5ad720,_0x433629=0x0;_0x5ad720=_0x5a8e29['charAt'](_0x433629++);~_0x5ad720&&(_0x2df684=_0x997e7d%0x4?_0x2df684*0x40+_0x5ad720:_0x5ad720,_0x997e7d++%0x4)?_0x4e0805+=String['fromCharCode'](0xff&_0x2df684>>(-0x2*_0x997e7d&0x6)):0x0){_0x5ad720=_0x319d63['indexOf'](_0x5ad720);}for(let _0x33166c=0x0,_0x28e4f2=_0x4e0805['length'];_0x33166c<_0x28e4f2;_0x33166c++){_0x57921f+='%'+('00'+_0x4e0805['charCodeAt'](_0x33166c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x57921f);};const _0x6d6410=function(_0x4f3ad6,_0x28cd52){let _0x3a4fa6=[],_0x494034=0x0,_0x4f28b1,_0x1ec03f='';_0x4f3ad6=_0x517737(_0x4f3ad6);let _0x1acd8b;for(_0x1acd8b=0x0;_0x1acd8b<0x100;_0x1acd8b++){_0x3a4fa6[_0x1acd8b]=_0x1acd8b;}for(_0x1acd8b=0x0;_0x1acd8b<0x100;_0x1acd8b++){_0x494034=(_0x494034+_0x3a4fa6[_0x1acd8b]+_0x28cd52['charCodeAt'](_0x1acd8b%_0x28cd52['length']))%0x100,_0x4f28b1=_0x3a4fa6[_0x1acd8b],_0x3a4fa6[_0x1acd8b]=_0x3a4fa6[_0x494034],_0x3a4fa6[_0x494034]=_0x4f28b1;}_0x1acd8b=0x0,_0x494034=0x0;for(let _0x400606=0x0;_0x400606<_0x4f3ad6['length'];_0x400606++){_0x1acd8b=(_0x1acd8b+0x1)%0x100,_0x494034=(_0x494034+_0x3a4fa6[_0x1acd8b])%0x100,_0x4f28b1=_0x3a4fa6[_0x1acd8b],_0x3a4fa6[_0x1acd8b]=_0x3a4fa6[_0x494034],_0x3a4fa6[_0x494034]=_0x4f28b1,_0x1ec03f+=String['fromCharCode'](_0x4f3ad6['charCodeAt'](_0x400606)^_0x3a4fa6[(_0x3a4fa6[_0x1acd8b]+_0x3a4fa6[_0x494034])%0x100]);}return _0x1ec03f;};a0_0xa4a6['YEbknG']=_0x6d6410,a0_0xa4a6['QNQDqw']={},a0_0xa4a6['JmeJrD']=!![];}const _0x10211e=_0x152796[0x0],_0x2a793d=_0xa2dfc1+_0x10211e,_0x2bc5e3=a0_0xa4a6['QNQDqw'][_0x2a793d];return!_0x2bc5e3?(a0_0xa4a6['lYBLiN']===undefined&&(a0_0xa4a6['lYBLiN']=!![]),_0xa4a638=a0_0xa4a6['YEbknG'](_0xa4a638,_0x138a0c),a0_0xa4a6['QNQDqw'][_0x2a793d]=_0xa4a638):_0xa4a638=_0x2bc5e3,_0xa4a638;}function a0_0x1527(){const _0x21a110=['FSootSo+W67cRspcJZldV0FdTq','WOv7W59+W6BdKSodwIBcIa','uSo6W6FdHmkTCmovAa','WRxdUN/dOSkFbGe','fmkBfSoIWQCAcCoOWR9nW5hdVgO','WObJymkihSoVBWv+DW','ggWVW4rMuCkpW4dcGbyhW47dLCkvDGaXW43cMX7cKSoqy1q','lCoSWQzFumkPWRtcJSk6WOiJgCkHW5W','WQBcUmkeW7ZcSSocg8oL','ofBcQ8oWkSkehmkFWRD4WQnj','WRVcHWNcKmkdmcJdMmkUWQK','C8kBk1FdP2bcyNmYE8oaWQeQ','WOJcPgqbWPPsWPW','WPpdM0XKzenpgCkkmq','r8oOef3cP8oFqSk1WOdcOa','ESojs8oZW63cR3BcIYZdVNtdKSoo','W54TWOm1WPtcLmkCzYJcTSoJW7yv','BtjZW73cJCkxWRddTfK9WOj+W6Kk','hGddJqnBmvXdxMZdLgS','DqxdNb08cuhcHdeMzGW','WQ4zFqxdNLxcOJ8','WQieW5OeuXmWDColxCorf8oh','tSoGDaZcQCobDCkU','W4BdKSk1bmofWOtdPCoOWQJcMG','zCkPWOWIW5JdUSonWOC','nK4fldX7','W4tdTc7dKCoMrCknWOdcQCkyW7hdJ8ol','Ac3dH8okWOldPgqdWPCg','nNOYWQxdVSoFW6/cH0Op','WQOpW58duHm1wSoDq8oyl8o9','WPhdNWCmDubfiG','p3WPWPldNSoFW6/cK0qtWPC'];a0_0x1527=function(){return _0x21a110;};return a0_0x1527();}export const SENSITIVE_KEYS=new Set([a0_0x483ad6(0x82,'zzAg'),a0_0x483ad6(0x94,'Lp4^'),a0_0x483ad6(0x8f,']o&H'),a0_0x483ad6(0x8a,'I7rj'),a0_0x483ad6(0x80,'MLS]'),a0_0x483ad6(0x85,'x5GK'),a0_0x483ad6(0x88,'x5GK'),a0_0x483ad6(0x84,'Vzpf')]);
|
||||
const a0_0x33b40a=a0_0x153c;function a0_0x153c(_0x141037,_0x487604){_0x141037=_0x141037-0xda;const _0x1ced10=a0_0x1ced();let _0x153c92=_0x1ced10[_0x141037];if(a0_0x153c['fSORQe']===undefined){var _0x1471ba=function(_0x5a6a14){const _0x487e15='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x509e28='',_0x574adc='';for(let _0x2e13cc=0x0,_0xd4ba66,_0x1a9f55,_0x22ec5b=0x0;_0x1a9f55=_0x5a6a14['charAt'](_0x22ec5b++);~_0x1a9f55&&(_0xd4ba66=_0x2e13cc%0x4?_0xd4ba66*0x40+_0x1a9f55:_0x1a9f55,_0x2e13cc++%0x4)?_0x509e28+=String['fromCharCode'](0xff&_0xd4ba66>>(-0x2*_0x2e13cc&0x6)):0x0){_0x1a9f55=_0x487e15['indexOf'](_0x1a9f55);}for(let _0x1eebb0=0x0,_0x1c4182=_0x509e28['length'];_0x1eebb0<_0x1c4182;_0x1eebb0++){_0x574adc+='%'+('00'+_0x509e28['charCodeAt'](_0x1eebb0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x574adc);};const _0x54cb64=function(_0xcc6825,_0x4216ea){let _0xfc7b5b=[],_0x9eb86d=0x0,_0x3d3eec,_0x306518='';_0xcc6825=_0x1471ba(_0xcc6825);let _0x2132d4;for(_0x2132d4=0x0;_0x2132d4<0x100;_0x2132d4++){_0xfc7b5b[_0x2132d4]=_0x2132d4;}for(_0x2132d4=0x0;_0x2132d4<0x100;_0x2132d4++){_0x9eb86d=(_0x9eb86d+_0xfc7b5b[_0x2132d4]+_0x4216ea['charCodeAt'](_0x2132d4%_0x4216ea['length']))%0x100,_0x3d3eec=_0xfc7b5b[_0x2132d4],_0xfc7b5b[_0x2132d4]=_0xfc7b5b[_0x9eb86d],_0xfc7b5b[_0x9eb86d]=_0x3d3eec;}_0x2132d4=0x0,_0x9eb86d=0x0;for(let _0x49b57a=0x0;_0x49b57a<_0xcc6825['length'];_0x49b57a++){_0x2132d4=(_0x2132d4+0x1)%0x100,_0x9eb86d=(_0x9eb86d+_0xfc7b5b[_0x2132d4])%0x100,_0x3d3eec=_0xfc7b5b[_0x2132d4],_0xfc7b5b[_0x2132d4]=_0xfc7b5b[_0x9eb86d],_0xfc7b5b[_0x9eb86d]=_0x3d3eec,_0x306518+=String['fromCharCode'](_0xcc6825['charCodeAt'](_0x49b57a)^_0xfc7b5b[(_0xfc7b5b[_0x2132d4]+_0xfc7b5b[_0x9eb86d])%0x100]);}return _0x306518;};a0_0x153c['xqoOmK']=_0x54cb64,a0_0x153c['IbzNUv']={},a0_0x153c['fSORQe']=!![];}const _0x20deda=_0x1ced10[0x0],_0x1e73c6=_0x141037+_0x20deda,_0x598283=a0_0x153c['IbzNUv'][_0x1e73c6];return!_0x598283?(a0_0x153c['BsYZfU']===undefined&&(a0_0x153c['BsYZfU']=!![]),_0x153c92=a0_0x153c['xqoOmK'](_0x153c92,_0x487604),a0_0x153c['IbzNUv'][_0x1e73c6]=_0x153c92):_0x153c92=_0x598283,_0x153c92;}(function(_0x3585ad,_0x155ad9){const _0x45ae41=a0_0x153c,_0x579eed=_0x3585ad();while(!![]){try{const _0x56b1a4=parseInt(_0x45ae41(0xe5,'6]13'))/0x1+parseInt(_0x45ae41(0xe2,'mRPp'))/0x2+-parseInt(_0x45ae41(0xe4,'[*g@'))/0x3+-parseInt(_0x45ae41(0xdc,'R[z6'))/0x4*(parseInt(_0x45ae41(0xda,'WB]e'))/0x5)+-parseInt(_0x45ae41(0xe9,')A9k'))/0x6+parseInt(_0x45ae41(0xe1,'6g#R'))/0x7*(-parseInt(_0x45ae41(0xf0,'[*g@'))/0x8)+parseInt(_0x45ae41(0xdf,'8UFX'))/0x9;if(_0x56b1a4===_0x155ad9)break;else _0x579eed['push'](_0x579eed['shift']());}catch(_0x3b5c05){_0x579eed['push'](_0x579eed['shift']());}}}(a0_0x1ced,0xbf6e8));function a0_0x1ced(){const _0x3a51c2=['W4/dVCovomkiW7NdOmkRx8olt8kpWQ8','W5/cKa0WWQpcLH5ZW6Dz','W4/dVSoBp8koW7VdQ8ousmo8CmkGWRRcUG','WRzCW7Krs8o7amkSvhW','WOJdG1zXW5xdKuDHW4fcumoyW40','WOSpW4RcHKy4W7yRW6PC','qvzfWRKvF8kOW4BcRgxdVLG','W4NdVHuNd8kPWPC+WQNdRCo1c0ZcPa','sqddOmkhCmolW4FdHM1fmvPQ','pCkPC8oyW5BdRaRdJd97WPRdN8oi','ceRdL3FdUry5WOWPDq','W6pcQ8o3uG8BW6BcHmofWQtdKZa2','WPj/mgJcMSoRma','W6hcQmo6wqCuW6FcImo/WPFdHJGT','p8oeiIhcQCo5dSkBWQhdK0C','sWxdPSkpaSkLWPldO2PJ','W70sjM0RBCkMW5fxW6ybWO3dJq','ECofsCkGWQvXWPNcNf7cS8kZ','WP/cVCkeqmoDWRC','sGxcHIpdSJa9WQeGsW','cwnsz8ooCSk2W457WOiTWPRcSbK','WPBcVCodWOqGfCkxW5rnt8o9WORcU8oiWOORAN7dR2ZcIhvEWRa','WOFcS8oEBrfxWOq','WOKhWR0Hox8rW5qDWRChW61o','DaO3W5ZdSNRcGSoaW4xcLSox','W6hcRCo6uWavWO3cRmouWPBdKHy'];a0_0x1ced=function(){return _0x3a51c2;};return a0_0x1ced();}export const SENSITIVE_KEYS=new Set([a0_0x33b40a(0xdd,'6]13'),a0_0x33b40a(0xec,'1GsK'),a0_0x33b40a(0xe0,'3psm'),a0_0x33b40a(0xe8,'wBYI'),a0_0x33b40a(0xe6,')A9k'),a0_0x33b40a(0xea,'dyFm'),a0_0x33b40a(0xf3,'y#lc'),a0_0x33b40a(0xde,'Le8*')]);
|
||||
Reference in New Issue
Block a user