devicely 2.2.14 → 2.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/devicely.js +1 -1
- package/lib/advanced-logger.js +1 -1
- package/lib/aiProviders.js +1 -657
- package/lib/aiProvidersConfig.js +1 -86
- package/lib/androidDeviceDetection.js +1 -1
- package/lib/appMappings.js +1 -1
- package/lib/commanderService.js +1 -1
- package/lib/deviceDetection.js +1 -1
- package/lib/devices.js +1 -1
- package/lib/doctor.js +1 -1
- package/lib/encryption.js +1 -1
- package/lib/executor.js +1 -1
- package/lib/hybridAI.js +1 -1
- package/lib/intelligentLocatorService.js +1 -1
- package/lib/lightweightAI.js +1 -1
- package/lib/localBuiltInAI.js +1 -1
- package/lib/localBuiltInAI_backup.js +1 -1
- package/lib/localBuiltInAI_simple.js +1 -1
- package/lib/locatorStrategy.js +1 -1
- package/lib/logger-demo.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/quick-start-logger.js +1 -1
- package/lib/scriptLoader.js +1 -1
- package/lib/server.js +1 -1
- package/lib/tensorflowAI.js +1 -1
- package/lib/tinyAI.js +1 -1
- package/lib/universalSessionManager.js +1 -1
- package/package.json +1 -1
package/lib/aiProviders.js
CHANGED
|
@@ -1,657 +1 @@
|
|
|
1
|
-
// AI Provider Abstraction Layer - Enhanced Multi-Provider Support
|
|
2
|
-
// Supports: OpenAI, Google Gemini, Anthropic Claude, GitHub Copilot, Groq, Cohere, Mistral AI, Local Built-In AI
|
|
3
|
-
|
|
4
|
-
const { OpenAI } = require('openai');
|
|
5
|
-
const { GoogleGenerativeAI } = require('@google/generative-ai');
|
|
6
|
-
const { Anthropic } = require('@anthropic-ai/sdk');
|
|
7
|
-
const { getPackageId, APP_MAPPINGS } = require('./appMappings');
|
|
8
|
-
|
|
9
|
-
const Logger = require('./logger');
|
|
10
|
-
const logger = new Logger('AiProviders');
|
|
11
|
-
const LocalBuiltInAI = require('./localBuiltInAI'); // NEW: Import local AI
|
|
12
|
-
|
|
13
|
-
class AIProviderManager {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.provider = process.env.AI_PROVIDER || 'local'; // Default to Local Built-In AI (faster, no dependencies)
|
|
16
|
-
this.model = process.env.AI_MODEL || null; // Auto-select default if null
|
|
17
|
-
|
|
18
|
-
// Initialize Local Built-In AI first
|
|
19
|
-
this.localAI = new LocalBuiltInAI();
|
|
20
|
-
|
|
21
|
-
this.initializeProviders();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
initializeProviders() {
|
|
25
|
-
// OpenAI
|
|
26
|
-
if (process.env.OPENAI_API_KEY) {
|
|
27
|
-
this.openai = new OpenAI({
|
|
28
|
-
apiKey: process.env.OPENAI_API_KEY,
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Google Gemini
|
|
33
|
-
if (process.env.GEMINI_API_KEY) {
|
|
34
|
-
this.gemini = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Anthropic Claude
|
|
38
|
-
if (process.env.CLAUDE_API_KEY) {
|
|
39
|
-
this.claude = new Anthropic({
|
|
40
|
-
apiKey: process.env.CLAUDE_API_KEY,
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// GitHub Copilot
|
|
45
|
-
if (process.env.GITHUB_TOKEN) {
|
|
46
|
-
this.copilot = new OpenAI({
|
|
47
|
-
apiKey: process.env.GITHUB_TOKEN,
|
|
48
|
-
baseURL: 'https://api.githubcopilot.com',
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Groq (ultra-fast inference)
|
|
53
|
-
if (process.env.GROQ_API_KEY) {
|
|
54
|
-
this.groq = new OpenAI({
|
|
55
|
-
apiKey: process.env.GROQ_API_KEY,
|
|
56
|
-
baseURL: 'https://api.groq.com/openai/v1',
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Cohere
|
|
61
|
-
if (process.env.COHERE_API_KEY) {
|
|
62
|
-
this.cohere = new OpenAI({
|
|
63
|
-
apiKey: process.env.COHERE_API_KEY,
|
|
64
|
-
baseURL: 'https://api.cohere.ai/v1',
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Mistral AI
|
|
69
|
-
if (process.env.MISTRAL_API_KEY) {
|
|
70
|
-
this.mistral = new OpenAI({
|
|
71
|
-
apiKey: process.env.MISTRAL_API_KEY,
|
|
72
|
-
baseURL: 'https://api.mistral.ai/v1',
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
getSystemPrompt(platform = null) {
|
|
78
|
-
// Generate app list based on platform
|
|
79
|
-
let appListSection = '';
|
|
80
|
-
|
|
81
|
-
if (platform === 'both') {
|
|
82
|
-
// Multi-platform mode - use generic app names
|
|
83
|
-
const commonApps = Object.keys(APP_MAPPINGS)
|
|
84
|
-
.filter(app => APP_MAPPINGS[app].ios && APP_MAPPINGS[app].android)
|
|
85
|
-
.slice(0, 30);
|
|
86
|
-
|
|
87
|
-
appListSection = `\n\nMULTI-PLATFORM MODE (iOS + Android devices)
|
|
88
|
-
Available apps: ${commonApps.join(', ')}
|
|
89
|
-
|
|
90
|
-
IMPORTANT: Use generic app names (e.g., "launch settings", "launch chrome")
|
|
91
|
-
The system will automatically convert to platform-specific package IDs:
|
|
92
|
-
${commonApps.slice(0, 15).map(app => `- ${app} -> iOS: ${APP_MAPPINGS[app].ios} / Android: ${APP_MAPPINGS[app].android}`).join('\n')}
|
|
93
|
-
|
|
94
|
-
Commands will execute SIMULTANEOUSLY on all devices with correct package IDs.
|
|
95
|
-
`;
|
|
96
|
-
} else if (platform) {
|
|
97
|
-
const availableApps = Object.keys(APP_MAPPINGS)
|
|
98
|
-
.filter(app => APP_MAPPINGS[app][platform])
|
|
99
|
-
.slice(0, 50);
|
|
100
|
-
|
|
101
|
-
appListSection = `\n\nPLATFORM: ${platform.toUpperCase()}
|
|
102
|
-
Available apps for ${platform}: ${availableApps.join(', ')}
|
|
103
|
-
|
|
104
|
-
APP PACKAGE MAPPINGS:
|
|
105
|
-
When user says "launch chrome", "open chrome", etc., use the correct package ID:
|
|
106
|
-
${availableApps.slice(0, 20).map(app => `- ${app} -> launch ${APP_MAPPINGS[app][platform]}`).join('\n')}
|
|
107
|
-
`;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return `You are a COMPLETE mobile automation AI. Convert ENTIRE natural language requests to executable commands.
|
|
111
|
-
|
|
112
|
-
🚨 CRITICAL: PROCESS THE COMPLETE INPUT - DON'T STOP EARLY! 🚨
|
|
113
|
-
|
|
114
|
-
Available commands (work on both iOS & Android):
|
|
115
|
-
- launch <app_name>: Launch an app using generic name (e.g., "launch settings", "launch chrome")
|
|
116
|
-
- kill <app_name>: Close/force stop an app
|
|
117
|
-
- home: Go to home screen (press home button)
|
|
118
|
-
- back: Navigate back (Android/iOS)
|
|
119
|
-
- url <url>: Open URL in browser
|
|
120
|
-
- click <text>: Click on a button or element by visible text
|
|
121
|
-
- click <x,y>: Click at specific coordinates (e.g., click 500,1000)
|
|
122
|
-
- tap <text/coords>: Same as click
|
|
123
|
-
- longpress <text/coords>: Long press on element or coordinates
|
|
124
|
-
- swipe <direction>: Swipe up/down/left/right (use for scrolling)
|
|
125
|
-
- type <text>: Type text into focused field (just the text, no "type" prefix)
|
|
126
|
-
- screenshot: Take screenshot
|
|
127
|
-
- restart: Restart device
|
|
128
|
-
- rotate <left/right/portrait/landscape>: Rotate screen
|
|
129
|
-
|
|
130
|
-
iOS-specific commands:
|
|
131
|
-
- darkmode/lightmode: Change appearance
|
|
132
|
-
- airplane <on/off>: Toggle airplane mode
|
|
133
|
-
- wifi <on/off>: Toggle WiFi
|
|
134
|
-
- volume <up/down/mute>: Control volume
|
|
135
|
-
|
|
136
|
-
Android-specific commands:
|
|
137
|
-
- getLocators: Get all interactive elements on current screen
|
|
138
|
-
- recent: Open recent apps
|
|
139
|
-
- notifications: Open notification panel
|
|
140
|
-
- quicksettings: Open quick settings
|
|
141
|
-
${appListSection}
|
|
142
|
-
|
|
143
|
-
// 🎯 ENHANCED PHRASE MAPPINGS FOR COMPLEX SENTENCES:
|
|
144
|
-
- "launch X and do Y" -> launch X, WAIT, then Y commands
|
|
145
|
-
- "open X then scroll up" -> launch X, WAIT, swipe up
|
|
146
|
-
- "go to X and search Y" -> url X, WAIT, click search, WAIT, type Y
|
|
147
|
-
- "take photo" -> launch camera, WAIT, tap "capture button"
|
|
148
|
-
- "go back and open Y" -> back, WAIT, launch Y
|
|
149
|
-
- "scroll up and tap X" -> swipe up, WAIT, click X
|
|
150
|
-
|
|
151
|
-
// 🎯 COMPLEX SENTENCE EXAMPLES:
|
|
152
|
-
"launch camera and take photo" ->
|
|
153
|
-
launch camera
|
|
154
|
-
WAIT 3000
|
|
155
|
-
screenshot
|
|
156
|
-
|
|
157
|
-
"open settings then scroll up and go back" ->
|
|
158
|
-
launch settings
|
|
159
|
-
WAIT 2000
|
|
160
|
-
swipe up
|
|
161
|
-
WAIT 1000
|
|
162
|
-
back
|
|
163
|
-
|
|
164
|
-
"go to youtube.com search for cats and take screenshot" ->
|
|
165
|
-
url https://www.youtube.com
|
|
166
|
-
WAIT 3000
|
|
167
|
-
click "search"
|
|
168
|
-
WAIT 1000
|
|
169
|
-
type "cats"
|
|
170
|
-
WAIT 1000
|
|
171
|
-
screenshot
|
|
172
|
-
|
|
173
|
-
"launch chrome go to google.com type hello press home" ->
|
|
174
|
-
launch chrome
|
|
175
|
-
WAIT 3000
|
|
176
|
-
url https://www.google.com
|
|
177
|
-
WAIT 2000
|
|
178
|
-
click "search"
|
|
179
|
-
WAIT 1000
|
|
180
|
-
type "hello"
|
|
181
|
-
WAIT 1000
|
|
182
|
-
home
|
|
183
|
-
|
|
184
|
-
Convert this COMPLETE request to commands:
|
|
185
|
-
|
|
186
|
-
// 🔍 🔍 COMMON PHRASE MAPPINGS:
|
|
187
|
-
- "scroll up" OR "scroll down" -> swipe up OR swipe down
|
|
188
|
-
- "go to <url>" OR "open <url>" OR "visit <url>" -> url https://<url>
|
|
189
|
-
- "press home" OR "go home" OR "home button" -> home
|
|
190
|
-
- "open settings" OR "launch settings" -> launch settings
|
|
191
|
-
- "open camera" OR "launch camera" -> launch camera
|
|
192
|
-
|
|
193
|
-
Examples:
|
|
194
|
-
- "open chrome" -> launch chrome
|
|
195
|
-
- "launch settings" -> launch settings
|
|
196
|
-
- "open camera" -> launch camera
|
|
197
|
-
- "scroll up" -> swipe up
|
|
198
|
-
- "scroll down" -> swipe down
|
|
199
|
-
- "click on the login button" -> click Login
|
|
200
|
-
- "tap at center of screen" -> click 540,1000
|
|
201
|
-
- "swipe down" -> swipe down
|
|
202
|
-
- "type hello world" -> hello world
|
|
203
|
-
- "take a screenshot" -> screenshot
|
|
204
|
-
- "go back" -> back
|
|
205
|
-
- "press home" -> home
|
|
206
|
-
- "go to google.com" -> url https://www.google.com
|
|
207
|
-
- "visit youtube.com" -> url https://www.youtube.com
|
|
208
|
-
- "launch Chrome and search google.com" -> launch chrome
|
|
209
|
-
WAIT 3000
|
|
210
|
-
url https://www.google.com
|
|
211
|
-
- "launch settings scroll up launch camera go to google.com press home" ->
|
|
212
|
-
launch settings
|
|
213
|
-
WAIT 3000
|
|
214
|
-
swipe up
|
|
215
|
-
WAIT 1000
|
|
216
|
-
home
|
|
217
|
-
WAIT 500
|
|
218
|
-
launch camera
|
|
219
|
-
WAIT 3000
|
|
220
|
-
home
|
|
221
|
-
WAIT 500
|
|
222
|
-
url https://www.google.com
|
|
223
|
-
WAIT 2000
|
|
224
|
-
home
|
|
225
|
-
|
|
226
|
-
Convert this request to commands: "{INPUT}"
|
|
227
|
-
|
|
228
|
-
CRITICAL RULES - YOU MUST FOLLOW THESE EXACTLY:
|
|
229
|
-
1. Output ONLY executable commands, one per line
|
|
230
|
-
2. NO explanations, NO markdown code blocks, NO comments, NO extra text
|
|
231
|
-
3. For multi-step actions, insert WAIT <milliseconds> between commands
|
|
232
|
-
4. Use GENERIC app names (e.g., "launch settings", "launch chrome", "launch camera")
|
|
233
|
-
5. Do NOT use platform-specific package IDs - use simple app names
|
|
234
|
-
6. The system will automatically convert to correct package IDs for each platform
|
|
235
|
-
5. For URLs, always use: url https://example.com
|
|
236
|
-
6. For scrolling, use: swipe up OR swipe down (never "scroll")
|
|
237
|
-
7. For text input, output ONLY the text (never include "type" prefix)
|
|
238
|
-
8. For home button, output: home (never "press home" or "go home")
|
|
239
|
-
9. WAIT timings: apps=3000ms, pages=2000ms, UI=1000ms, quick=500ms
|
|
240
|
-
10. Parse compound requests into individual steps with WAIT between each
|
|
241
|
-
|
|
242
|
-
OUTPUT FORMAT EXAMPLE:
|
|
243
|
-
launch com.apple.Preferences
|
|
244
|
-
WAIT 3000
|
|
245
|
-
swipe up
|
|
246
|
-
WAIT 1000
|
|
247
|
-
home
|
|
248
|
-
|
|
249
|
-
DO NOT include any other text. Start your response with the first command.`;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
async convertCommand(text, platform = null, providerOverride = null) {
|
|
253
|
-
const provider = providerOverride || this.provider;
|
|
254
|
-
|
|
255
|
-
try {
|
|
256
|
-
switch (provider) {
|
|
257
|
-
case 'local':
|
|
258
|
-
case 'built-in':
|
|
259
|
-
case 'builtin':
|
|
260
|
-
return await this.convertWithLocalAI(text, platform);
|
|
261
|
-
case 'openai':
|
|
262
|
-
return await this.convertWithOpenAI(text, platform);
|
|
263
|
-
case 'gemini':
|
|
264
|
-
return await this.convertWithGemini(text, platform);
|
|
265
|
-
case 'claude':
|
|
266
|
-
return await this.convertWithClaude(text, platform);
|
|
267
|
-
case 'copilot':
|
|
268
|
-
return await this.convertWithCopilot(text, platform);
|
|
269
|
-
case 'groq':
|
|
270
|
-
return await this.convertWithGroq(text, platform);
|
|
271
|
-
case 'cohere':
|
|
272
|
-
return await this.convertWithCohere(text, platform);
|
|
273
|
-
case 'mistral':
|
|
274
|
-
return await this.convertWithMistral(text, platform);
|
|
275
|
-
default:
|
|
276
|
-
throw new Error(`Unknown AI provider: ${provider}`);
|
|
277
|
-
}
|
|
278
|
-
} catch (error) {
|
|
279
|
-
logger.error(`Error with ${provider}:`, error.message);;
|
|
280
|
-
|
|
281
|
-
// 🎯 GENIUS: Fallback to Local AI if external provider fails
|
|
282
|
-
if (provider !== 'local' && this.localAI) {
|
|
283
|
-
logger.info(`🔄 Falling back to Local Built-In AI...`);;
|
|
284
|
-
try {
|
|
285
|
-
return await this.convertWithLocalAI(text, platform);
|
|
286
|
-
} catch (fallbackError) {
|
|
287
|
-
logger.error('Local AI fallback also failed:', fallbackError.message);;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
throw new Error(`AI conversion failed (${provider}): ${error.message}`);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
// Get model to use (from env or default)
|
|
296
|
-
getModelForProvider(provider) {
|
|
297
|
-
// If specific model is set, use it
|
|
298
|
-
if (this.model) return this.model;
|
|
299
|
-
|
|
300
|
-
// Otherwise use defaults (optimized for speed)
|
|
301
|
-
const defaults = {
|
|
302
|
-
openai: 'gpt-4o-mini', // Faster than gpt-4o
|
|
303
|
-
gemini: 'gemini-2.5-flash', // Fast and reliable
|
|
304
|
-
claude: 'claude-3-5-sonnet-20241022',
|
|
305
|
-
copilot: 'gpt-4o',
|
|
306
|
-
groq: 'llama-3.3-70b-versatile',
|
|
307
|
-
cohere: 'command-r-plus',
|
|
308
|
-
mistral: 'mistral-large-latest',
|
|
309
|
-
};
|
|
310
|
-
|
|
311
|
-
return defaults[provider] || 'gpt-4';
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
async convertWithOpenAI(text, platform = null) {
|
|
315
|
-
if (!this.openai) {
|
|
316
|
-
throw new Error('OpenAI not configured');
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
const model = this.getModelForProvider('openai');
|
|
320
|
-
|
|
321
|
-
const response = await this.openai.chat.completions.create({
|
|
322
|
-
model: model,
|
|
323
|
-
messages: [
|
|
324
|
-
{ role: 'system', content: this.getSystemPrompt(platform) },
|
|
325
|
-
{ role: 'user', content: text }
|
|
326
|
-
],
|
|
327
|
-
temperature: 0.3,
|
|
328
|
-
max_tokens: 500,
|
|
329
|
-
});
|
|
330
|
-
|
|
331
|
-
let convertedText = response.choices[0].message.content.trim();
|
|
332
|
-
const cleanedResponse = this.cleanAIResponse(convertedText);
|
|
333
|
-
|
|
334
|
-
return {
|
|
335
|
-
success: true,
|
|
336
|
-
converted: cleanedResponse,
|
|
337
|
-
provider: 'OpenAI',
|
|
338
|
-
model: model,
|
|
339
|
-
confidence: 0.95,
|
|
340
|
-
processingTime: 'N/A'
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
async convertWithGemini(text, platform = null) {
|
|
345
|
-
if (!this.gemini) {
|
|
346
|
-
throw new Error('Gemini not configured');
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
let modelName = this.getModelForProvider('gemini');
|
|
350
|
-
|
|
351
|
-
try {
|
|
352
|
-
// Use default Gemini config for best accuracy
|
|
353
|
-
const model = this.gemini.getGenerativeModel({ model: modelName });
|
|
354
|
-
|
|
355
|
-
// Build prompt and sanitize for Gemini API (requires ASCII-safe ByteString)
|
|
356
|
-
const rawPrompt = this.getSystemPrompt(platform).replace('{INPUT}', text);
|
|
357
|
-
|
|
358
|
-
// Remove ALL non-ASCII characters that could cause ByteString errors
|
|
359
|
-
const sanitizedPrompt = rawPrompt
|
|
360
|
-
.replace(/[^\x00-\x7F]/g, ' ') // Replace non-ASCII with spaces
|
|
361
|
-
.replace(/\s+/g, ' ') // Normalize multiple spaces
|
|
362
|
-
.trim();
|
|
363
|
-
|
|
364
|
-
const result = await model.generateContent(sanitizedPrompt);
|
|
365
|
-
const response = await result.response;
|
|
366
|
-
let convertedText = response.text().trim();
|
|
367
|
-
|
|
368
|
-
const cleanedResponse = this.cleanAIResponse(convertedText);
|
|
369
|
-
|
|
370
|
-
return {
|
|
371
|
-
success: true,
|
|
372
|
-
converted: cleanedResponse,
|
|
373
|
-
provider: 'Google Gemini',
|
|
374
|
-
model: modelName,
|
|
375
|
-
confidence: 0.9,
|
|
376
|
-
processingTime: 'N/A'
|
|
377
|
-
};
|
|
378
|
-
} catch (error) {
|
|
379
|
-
// If the model fails, try with a faster fallback
|
|
380
|
-
if (modelName !== 'gemini-2.5-flash') {
|
|
381
|
-
logger.warn(`Gemini model ${modelName} failed, falling back to gemini-2.5-flash`);;
|
|
382
|
-
const fallbackModel = this.gemini.getGenerativeModel({ model: 'gemini-2.5-flash' });
|
|
383
|
-
const prompt = this.getSystemPrompt(platform).replace('{INPUT}', text);
|
|
384
|
-
const sanitizedPrompt = prompt.replace(/[^\x00-\x7F]/g, " ").replace(/\s+/g, ' ').trim();
|
|
385
|
-
const result = await fallbackModel.generateContent(sanitizedPrompt);
|
|
386
|
-
const response = await result.response;
|
|
387
|
-
const cleanedResponse = this.cleanAIResponse(response.text().trim());
|
|
388
|
-
|
|
389
|
-
return {
|
|
390
|
-
success: true,
|
|
391
|
-
converted: cleanedResponse,
|
|
392
|
-
provider: 'Google Gemini',
|
|
393
|
-
model: 'gemini-2.5-flash',
|
|
394
|
-
confidence: 0.85,
|
|
395
|
-
processingTime: 'N/A'
|
|
396
|
-
};
|
|
397
|
-
}
|
|
398
|
-
throw error;
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
async convertWithCopilot(text, platform = null) {
|
|
403
|
-
if (!this.copilot) {
|
|
404
|
-
throw new Error('GitHub Copilot not configured');
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
const model = this.getModelForProvider('copilot');
|
|
408
|
-
|
|
409
|
-
const response = await this.copilot.chat.completions.create({
|
|
410
|
-
model: model,
|
|
411
|
-
messages: [
|
|
412
|
-
{ role: 'system', content: this.getSystemPrompt(platform) },
|
|
413
|
-
{ role: 'user', content: text }
|
|
414
|
-
],
|
|
415
|
-
temperature: 0.3,
|
|
416
|
-
max_tokens: 500,
|
|
417
|
-
});
|
|
418
|
-
|
|
419
|
-
let convertedText = response.choices[0].message.content.trim();
|
|
420
|
-
convertedText = this.cleanAIResponse(convertedText);
|
|
421
|
-
|
|
422
|
-
return convertedText;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
async convertWithClaude(text, platform = null) {
|
|
426
|
-
if (!this.claude) {
|
|
427
|
-
throw new Error('Claude not configured');
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
const model = this.getModelForProvider('claude');
|
|
431
|
-
const systemPrompt = this.getSystemPrompt(platform);
|
|
432
|
-
|
|
433
|
-
const response = await this.claude.messages.create({
|
|
434
|
-
model: model,
|
|
435
|
-
max_tokens: 500,
|
|
436
|
-
system: systemPrompt,
|
|
437
|
-
messages: [
|
|
438
|
-
{ role: 'user', content: text }
|
|
439
|
-
],
|
|
440
|
-
temperature: 0.3,
|
|
441
|
-
});
|
|
442
|
-
|
|
443
|
-
let convertedText = response.content[0].text.trim();
|
|
444
|
-
const cleanedResponse = this.cleanAIResponse(convertedText);
|
|
445
|
-
|
|
446
|
-
return {
|
|
447
|
-
success: true,
|
|
448
|
-
converted: cleanedResponse,
|
|
449
|
-
provider: 'Anthropic Claude',
|
|
450
|
-
model: model,
|
|
451
|
-
confidence: 0.93,
|
|
452
|
-
processingTime: 'N/A'
|
|
453
|
-
};
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
async convertWithGroq(text, platform = null) {
|
|
457
|
-
if (!this.groq) {
|
|
458
|
-
throw new Error('Groq not configured');
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
const model = this.getModelForProvider('groq');
|
|
462
|
-
|
|
463
|
-
const response = await this.groq.chat.completions.create({
|
|
464
|
-
model: model,
|
|
465
|
-
messages: [
|
|
466
|
-
{ role: 'system', content: this.getSystemPrompt(platform) },
|
|
467
|
-
{ role: 'user', content: text }
|
|
468
|
-
],
|
|
469
|
-
temperature: 0.3,
|
|
470
|
-
max_tokens: 500,
|
|
471
|
-
});
|
|
472
|
-
|
|
473
|
-
let convertedText = response.choices[0].message.content.trim();
|
|
474
|
-
const cleanedResponse = this.cleanAIResponse(convertedText);
|
|
475
|
-
|
|
476
|
-
return {
|
|
477
|
-
success: true,
|
|
478
|
-
converted: cleanedResponse,
|
|
479
|
-
provider: 'Groq',
|
|
480
|
-
model: model,
|
|
481
|
-
confidence: 0.92,
|
|
482
|
-
processingTime: 'N/A'
|
|
483
|
-
};
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
async convertWithCohere(text, platform = null) {
|
|
487
|
-
if (!this.cohere) {
|
|
488
|
-
throw new Error('Cohere not configured');
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
const model = this.getModelForProvider('cohere');
|
|
492
|
-
|
|
493
|
-
const response = await this.cohere.chat.completions.create({
|
|
494
|
-
model: model,
|
|
495
|
-
messages: [
|
|
496
|
-
{ role: 'system', content: this.getSystemPrompt(platform) },
|
|
497
|
-
{ role: 'user', content: text }
|
|
498
|
-
],
|
|
499
|
-
temperature: 0.3,
|
|
500
|
-
max_tokens: 500,
|
|
501
|
-
});
|
|
502
|
-
|
|
503
|
-
let convertedText = response.choices[0].message.content.trim();
|
|
504
|
-
convertedText = this.cleanAIResponse(convertedText);
|
|
505
|
-
|
|
506
|
-
return convertedText;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
async convertWithMistral(text, platform = null) {
|
|
510
|
-
if (!this.mistral) {
|
|
511
|
-
throw new Error('Mistral AI not configured');
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
const model = this.getModelForProvider('mistral');
|
|
515
|
-
|
|
516
|
-
const response = await this.mistral.chat.completions.create({
|
|
517
|
-
model: model,
|
|
518
|
-
messages: [
|
|
519
|
-
{ role: 'system', content: this.getSystemPrompt(platform) },
|
|
520
|
-
{ role: 'user', content: text }
|
|
521
|
-
],
|
|
522
|
-
temperature: 0.3,
|
|
523
|
-
max_tokens: 500,
|
|
524
|
-
});
|
|
525
|
-
|
|
526
|
-
let convertedText = response.choices[0].message.content.trim();
|
|
527
|
-
convertedText = this.cleanAIResponse(convertedText);
|
|
528
|
-
|
|
529
|
-
return convertedText;
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
// Clean up AI responses - remove markdown, explanations, etc.
|
|
533
|
-
cleanAIResponse(text) {
|
|
534
|
-
// Remove markdown code blocks
|
|
535
|
-
text = text.replace(/```[\s\S]*?```/g, '').trim();
|
|
536
|
-
text = text.replace(/```/g, '').trim();
|
|
537
|
-
|
|
538
|
-
// Remove any lines that look like explanations (starting with explanatory text)
|
|
539
|
-
const lines = text.split('\n');
|
|
540
|
-
const cleanedLines = lines.filter(line => {
|
|
541
|
-
const trimmed = line.trim();
|
|
542
|
-
if (!trimmed) return false;
|
|
543
|
-
|
|
544
|
-
// Keep lines that are commands or WAIT
|
|
545
|
-
if (trimmed.startsWith('launch ')) return true;
|
|
546
|
-
if (trimmed.startsWith('kill ')) return true;
|
|
547
|
-
if (trimmed === 'home') return true;
|
|
548
|
-
if (trimmed === 'back') return true;
|
|
549
|
-
if (trimmed.startsWith('url ')) return true;
|
|
550
|
-
if (trimmed.startsWith('click ')) return true;
|
|
551
|
-
if (trimmed.startsWith('tap ')) return true;
|
|
552
|
-
if (trimmed.startsWith('longpress ')) return true;
|
|
553
|
-
if (trimmed.startsWith('swipe ')) return true;
|
|
554
|
-
if (trimmed.startsWith('WAIT ')) return true;
|
|
555
|
-
if (trimmed.startsWith('screenshot')) return true;
|
|
556
|
-
if (trimmed.startsWith('restart')) return true;
|
|
557
|
-
if (trimmed.startsWith('rotate ')) return true;
|
|
558
|
-
if (trimmed.startsWith('darkmode')) return true;
|
|
559
|
-
if (trimmed.startsWith('lightmode')) return true;
|
|
560
|
-
if (trimmed.startsWith('airplane ')) return true;
|
|
561
|
-
if (trimmed.startsWith('wifi ')) return true;
|
|
562
|
-
if (trimmed.startsWith('volume ')) return true;
|
|
563
|
-
if (trimmed === 'getLocators') return true;
|
|
564
|
-
if (trimmed === 'recent') return true;
|
|
565
|
-
if (trimmed === 'notifications') return true;
|
|
566
|
-
if (trimmed === 'quicksettings') return true;
|
|
567
|
-
|
|
568
|
-
// If it doesn't start with a known command, it might be text to type
|
|
569
|
-
// Check if previous line was a command that expects text input
|
|
570
|
-
return true; // For now, include it (could be text to type)
|
|
571
|
-
});
|
|
572
|
-
|
|
573
|
-
return cleanedLines.join('\n').trim();
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
getAvailableProviders() {
|
|
577
|
-
const available = [];
|
|
578
|
-
|
|
579
|
-
if (this.openai) available.push({ id: 'openai', name: 'OpenAI', icon: '🤖' });
|
|
580
|
-
if (this.gemini) available.push({ id: 'gemini', name: 'Google Gemini', icon: '✨' });
|
|
581
|
-
if (this.claude) available.push({ id: 'claude', name: 'Anthropic Claude', icon: '🧠' });
|
|
582
|
-
if (this.copilot) available.push({ id: 'copilot', name: 'GitHub Copilot', icon: '🐙' });
|
|
583
|
-
if (this.groq) available.push({ id: 'groq', name: 'Groq', icon: '⚡' });
|
|
584
|
-
if (this.cohere) available.push({ id: 'cohere', name: 'Cohere', icon: '🌊' });
|
|
585
|
-
if (this.mistral) available.push({ id: 'mistral', name: 'Mistral AI', icon: '🌬️' });
|
|
586
|
-
|
|
587
|
-
return available;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
setProvider(provider, model = null) {
|
|
591
|
-
const available = this.getAvailableProviders().map(p => p.id);
|
|
592
|
-
if (available.includes(provider)) {
|
|
593
|
-
this.provider = provider;
|
|
594
|
-
if (model) {
|
|
595
|
-
this.model = model;
|
|
596
|
-
}
|
|
597
|
-
return true;
|
|
598
|
-
}
|
|
599
|
-
return false;
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
getCurrentProvider() {
|
|
603
|
-
return {
|
|
604
|
-
id: this.provider,
|
|
605
|
-
name: this.getProviderName(this.provider),
|
|
606
|
-
model: this.model || this.getModelForProvider(this.provider),
|
|
607
|
-
available: this.getAvailableProviders(),
|
|
608
|
-
};
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
getProviderName(providerId) {
|
|
612
|
-
const names = {
|
|
613
|
-
local: 'Local Built-In AI',
|
|
614
|
-
'built-in': 'Local Built-In AI',
|
|
615
|
-
builtin: 'Local Built-In AI',
|
|
616
|
-
openai: 'OpenAI',
|
|
617
|
-
gemini: 'Google Gemini',
|
|
618
|
-
claude: 'Anthropic Claude',
|
|
619
|
-
copilot: 'GitHub Copilot',
|
|
620
|
-
groq: 'Groq',
|
|
621
|
-
cohere: 'Cohere',
|
|
622
|
-
mistral: 'Mistral AI',
|
|
623
|
-
};
|
|
624
|
-
return names[providerId] || 'Unknown';
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
/**
|
|
628
|
-
* 🤖 LOCAL BUILT-IN AI CONVERSION METHOD
|
|
629
|
-
* Zero-cost, offline, lightning-fast natural language processing
|
|
630
|
-
*/
|
|
631
|
-
async convertWithLocalAI(text, platform = null) {
|
|
632
|
-
logger.info(`🤖 Converting with Local Built-In AI: "${text}"`);;
|
|
633
|
-
|
|
634
|
-
try {
|
|
635
|
-
const devices = platform ? [{ platform }] : [];
|
|
636
|
-
const result = await this.localAI.convertCommand(text, devices);
|
|
637
|
-
|
|
638
|
-
if (result.success) {
|
|
639
|
-
return {
|
|
640
|
-
converted: result.converted,
|
|
641
|
-
provider: 'Local Built-In AI',
|
|
642
|
-
confidence: result.confidence,
|
|
643
|
-
processingTime: result.processingTime,
|
|
644
|
-
model: 'built-in-patterns',
|
|
645
|
-
cost: 0 // Always free!
|
|
646
|
-
};
|
|
647
|
-
} else {
|
|
648
|
-
throw new Error(result.error || 'Local AI conversion failed');
|
|
649
|
-
}
|
|
650
|
-
} catch (error) {
|
|
651
|
-
logger.error('Local AI conversion error:', error.message);;
|
|
652
|
-
throw error;
|
|
653
|
-
}
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
module.exports = AIProviderManager;
|
|
1
|
+
const _0x2fd133=_0x13e6;(function(_0x2505cd,_0x35d43e){const _0x31da65=_0x13e6,_0x1c7312=_0x2505cd();while(!![]){try{const _0x5d31c8=-parseInt(_0x31da65(0x19d))/0x1*(-parseInt(_0x31da65(0x1ad))/0x2)+parseInt(_0x31da65(0x18a))/0x3*(parseInt(_0x31da65(0x204))/0x4)+-parseInt(_0x31da65(0x13a))/0x5+-parseInt(_0x31da65(0x1f1))/0x6*(parseInt(_0x31da65(0x1b1))/0x7)+parseInt(_0x31da65(0x129))/0x8*(-parseInt(_0x31da65(0x19c))/0x9)+parseInt(_0x31da65(0x188))/0xa*(parseInt(_0x31da65(0xbb))/0xb)+parseInt(_0x31da65(0x1c3))/0xc*(-parseInt(_0x31da65(0x171))/0xd);if(_0x5d31c8===_0x35d43e)break;else _0x1c7312['push'](_0x1c7312['shift']());}catch(_0x4b4bf0){_0x1c7312['push'](_0x1c7312['shift']());}}}(_0x2b71,0xb9cf1));const {OpenAI}=require(_0x2fd133(0x1ec)),{GoogleGenerativeAI}=require(_0x2fd133(0xbe)),{Anthropic}=require(_0x2fd133(0x104)),{getPackageId,APP_MAPPINGS}=require('./appMappings'),Logger=require(_0x2fd133(0x1c0)),logger=new Logger('AiProviders'),LocalBuiltInAI=require('./localBuiltInAI');class AIProviderManager{constructor(){const _0xf5cb69=_0x2fd133,_0x1316a1={};_0x1316a1['EJmGm']='local';const _0x25bf6c=_0x1316a1;this[_0xf5cb69(0x1a7)]=process.env.AI_PROVIDER||_0x25bf6c[_0xf5cb69(0x20b)],this['model']=process.env.AI_MODEL||null,this['localAI']=new LocalBuiltInAI(),this['initializeProviders']();}[_0x2fd133(0x1e4)](){const _0x170bd9=_0x2fd133,_0xf048a1={};_0xf048a1[_0x170bd9(0x136)]='https://api.cohere.ai/v1',_0xf048a1['IhAoO']=function(_0x5c46bb,_0xaa37){return _0x5c46bb===_0xaa37;},_0xf048a1[_0x170bd9(0xd8)]=_0x170bd9(0x14c),_0xf048a1[_0x170bd9(0xd2)]='rHWUB',_0xf048a1[_0x170bd9(0x140)]=_0x170bd9(0x1a9),_0xf048a1[_0x170bd9(0x159)]=function(_0x1e4a37,_0xe26a17){return _0x1e4a37!==_0xe26a17;},_0xf048a1[_0x170bd9(0x20d)]=_0x170bd9(0x119),_0xf048a1['vSQax']=_0x170bd9(0x18b);const _0xc1d85=_0xf048a1;if(process.env.OPENAI_API_KEY){const _0x1495dc={};_0x1495dc['apiKey']=process.env.OPENAI_API_KEY,this[_0x170bd9(0x1ec)]=new OpenAI(_0x1495dc);}process.env.GEMINI_API_KEY&&(this[_0x170bd9(0x1db)]=new GoogleGenerativeAI(process.env.GEMINI_API_KEY));if(process.env.CLAUDE_API_KEY){if(_0xc1d85[_0x170bd9(0x1d4)](_0xc1d85['xfDkE'],_0xc1d85[_0x170bd9(0xd2)])){const _0x25b119={};_0x25b119[_0x170bd9(0x13d)]=_0x5f3277.env.COHERE_API_KEY,_0x25b119[_0x170bd9(0x1eb)]=_0xc1d85['DKwgU'],this[_0x170bd9(0xce)]=new _0x232c93(_0x25b119);}else{const _0x1a514b={};_0x1a514b[_0x170bd9(0x13d)]=process.env.CLAUDE_API_KEY,this[_0x170bd9(0x1a0)]=new Anthropic(_0x1a514b);}}if(process.env.GITHUB_TOKEN){const _0x2d2925={};_0x2d2925[_0x170bd9(0x13d)]=process.env.GITHUB_TOKEN,_0x2d2925['baseURL']=_0xc1d85[_0x170bd9(0x140)],this['copilot']=new OpenAI(_0x2d2925);}if(process.env.GROQ_API_KEY){const _0x4be17d={};_0x4be17d[_0x170bd9(0x13d)]=process.env.GROQ_API_KEY,_0x4be17d[_0x170bd9(0x1eb)]=_0x170bd9(0x130),this[_0x170bd9(0xdd)]=new OpenAI(_0x4be17d);}if(process.env.COHERE_API_KEY){if(_0xc1d85[_0x170bd9(0x159)](_0xc1d85[_0x170bd9(0x20d)],_0xc1d85[_0x170bd9(0x20d)]))throw new _0x2784bf(_0x4b11b1[_0x170bd9(0xfd)]||_0x170bd9(0x106));else{const _0x1185be={};_0x1185be[_0x170bd9(0x13d)]=process.env.COHERE_API_KEY,_0x1185be[_0x170bd9(0x1eb)]=_0xc1d85[_0x170bd9(0x136)],this['cohere']=new OpenAI(_0x1185be);}}if(process.env.MISTRAL_API_KEY){const _0x41ff49={};_0x41ff49[_0x170bd9(0x13d)]=process.env.MISTRAL_API_KEY,_0x41ff49[_0x170bd9(0x1eb)]=_0xc1d85[_0x170bd9(0x131)],this['mistral']=new OpenAI(_0x41ff49);}}[_0x2fd133(0x10f)](_0x55a4a4=null){const _0x5f8f8b=_0x2fd133,_0x2c3289={};_0x2c3289[_0x5f8f8b(0xf0)]=function(_0x3ae1b8,_0x5dc749){return _0x3ae1b8===_0x5dc749;},_0x2c3289[_0x5f8f8b(0x12c)]=_0x5f8f8b(0x12a),_0x2c3289[_0x5f8f8b(0xf7)]=function(_0x522849,_0x10ef71){return _0x522849!==_0x10ef71;},_0x2c3289['ucAzy']='FjzIw';const _0x296a79=_0x2c3289;let _0x56e454='';if(_0x296a79[_0x5f8f8b(0xf0)](_0x55a4a4,_0x296a79['wAFMj'])){const _0x400ef7=Object[_0x5f8f8b(0x123)](APP_MAPPINGS)[_0x5f8f8b(0x187)](_0x480223=>APP_MAPPINGS[_0x480223][_0x5f8f8b(0x105)]&&APP_MAPPINGS[_0x480223][_0x5f8f8b(0x12d)])[_0x5f8f8b(0x1f7)](0x0,0x1e);_0x56e454=_0x5f8f8b(0xf9)+_0x400ef7[_0x5f8f8b(0x13f)](',\x20')+_0x5f8f8b(0x190)+_0x400ef7[_0x5f8f8b(0x1f7)](0x0,0xf)['map'](_0x167527=>'-\x20'+_0x167527+_0x5f8f8b(0xda)+APP_MAPPINGS[_0x167527][_0x5f8f8b(0x105)]+'\x20/\x20Android:\x20'+APP_MAPPINGS[_0x167527][_0x5f8f8b(0x12d)])[_0x5f8f8b(0x13f)]('\x0a')+_0x5f8f8b(0x199);}else{if(_0x55a4a4){if(_0x296a79[_0x5f8f8b(0xf7)](_0x5f8f8b(0x154),_0x296a79['ucAzy'])){const _0x3ca951=Object[_0x5f8f8b(0x123)](APP_MAPPINGS)[_0x5f8f8b(0x187)](_0x595347=>APP_MAPPINGS[_0x595347][_0x55a4a4])['slice'](0x0,0x32);_0x56e454=_0x5f8f8b(0x1da)+_0x55a4a4['toUpperCase']()+_0x5f8f8b(0x14f)+_0x55a4a4+':\x20'+_0x3ca951[_0x5f8f8b(0x13f)](',\x20')+'\x0a\x0aAPP\x20PACKAGE\x20MAPPINGS:\x0aWhen\x20user\x20says\x20\x22launch\x20chrome\x22,\x20\x22open\x20chrome\x22,\x20etc.,\x20use\x20the\x20correct\x20package\x20ID:\x0a'+_0x3ca951['slice'](0x0,0x14)['map'](_0x3361bb=>'-\x20'+_0x3361bb+_0x5f8f8b(0x174)+APP_MAPPINGS[_0x3361bb][_0x55a4a4])[_0x5f8f8b(0x13f)]('\x0a')+'\x0a';}else{_0x514f3a[_0x5f8f8b(0xfd)]('Local\x20AI\x20fallback\x20also\x20failed:',_0x52d6ea[_0x5f8f8b(0xe5)]);;}}}return _0x5f8f8b(0x170)+_0x56e454+_0x5f8f8b(0x16b);}async[_0x2fd133(0xf5)](_0x3e46b0,_0x316d9b=null,_0x2732a6=null){const _0x2dfff1=_0x2fd133,_0x1eff20={};_0x1eff20[_0x2dfff1(0x103)]=_0x2dfff1(0x1a9),_0x1eff20['SmVtz']=_0x2dfff1(0x189),_0x1eff20['IsGmq']=_0x2dfff1(0x15a),_0x1eff20[_0x2dfff1(0x1df)]=_0x2dfff1(0x1ed),_0x1eff20[_0x2dfff1(0xc9)]=_0x2dfff1(0x147),_0x1eff20[_0x2dfff1(0x160)]='Cohere',_0x1eff20[_0x2dfff1(0x114)]='Mistral\x20AI',_0x1eff20[_0x2dfff1(0x1bd)]=function(_0x84a91d,_0x50bb70){return _0x84a91d!==_0x50bb70;},_0x1eff20[_0x2dfff1(0x1e7)]='lhhOG',_0x1eff20[_0x2dfff1(0xfc)]=_0x2dfff1(0x202),_0x1eff20['LCwbe']=_0x2dfff1(0xff),_0x1eff20[_0x2dfff1(0x17c)]=_0x2dfff1(0x137),_0x1eff20[_0x2dfff1(0x185)]=_0x2dfff1(0x1ec),_0x1eff20[_0x2dfff1(0x177)]=_0x2dfff1(0x1db),_0x1eff20[_0x2dfff1(0xc0)]='claude',_0x1eff20['urqap']=_0x2dfff1(0x15f),_0x1eff20[_0x2dfff1(0x1a1)]='cohere',_0x1eff20[_0x2dfff1(0x1c8)]=_0x2dfff1(0x184),_0x1eff20[_0x2dfff1(0xf8)]=function(_0x98b4f2,_0x58a30e){return _0x98b4f2!==_0x58a30e;},_0x1eff20[_0x2dfff1(0x1ea)]=function(_0x42b840,_0x28fc1b){return _0x42b840===_0x28fc1b;},_0x1eff20[_0x2dfff1(0x12b)]=_0x2dfff1(0x149),_0x1eff20[_0x2dfff1(0x17b)]=_0x2dfff1(0x178),_0x1eff20[_0x2dfff1(0x14e)]=_0x2dfff1(0x139);const _0x51b16e=_0x1eff20,_0x4cf127=_0x2732a6||this[_0x2dfff1(0x1a7)];try{if(_0x51b16e[_0x2dfff1(0x1bd)](_0x51b16e['nzCxI'],_0x51b16e[_0x2dfff1(0x1e7)])){const _0x18a5dc={};_0x18a5dc[_0x2dfff1(0x13d)]=_0x32cc6b.env.GITHUB_TOKEN,_0x18a5dc['baseURL']=ODTSBg['VoXJt'],this['copilot']=new _0x3b6366(_0x18a5dc);}else switch(_0x4cf127){case _0x51b16e[_0x2dfff1(0xfc)]:case _0x51b16e['LCwbe']:case _0x51b16e['Crlwc']:return await this[_0x2dfff1(0xea)](_0x3e46b0,_0x316d9b);case _0x51b16e['BcjrH']:return await this[_0x2dfff1(0x1d5)](_0x3e46b0,_0x316d9b);case _0x51b16e[_0x2dfff1(0x177)]:return await this[_0x2dfff1(0x1ff)](_0x3e46b0,_0x316d9b);case _0x51b16e['yuigL']:return await this['convertWithClaude'](_0x3e46b0,_0x316d9b);case _0x51b16e[_0x2dfff1(0x11b)]:return await this[_0x2dfff1(0xc3)](_0x3e46b0,_0x316d9b);case _0x2dfff1(0xdd):return await this[_0x2dfff1(0x1b7)](_0x3e46b0,_0x316d9b);case _0x51b16e['QrWIZ']:return await this[_0x2dfff1(0x20e)](_0x3e46b0,_0x316d9b);case _0x51b16e[_0x2dfff1(0x1c8)]:return await this[_0x2dfff1(0x100)](_0x3e46b0,_0x316d9b);default:throw new Error(_0x2dfff1(0x1ac)+_0x4cf127);}}catch(_0x573e18){logger[_0x2dfff1(0xfd)](_0x2dfff1(0x17e)+_0x4cf127+':',_0x573e18[_0x2dfff1(0xe5)]);;if(_0x51b16e['CZyPT'](_0x4cf127,_0x51b16e[_0x2dfff1(0xfc)])&&this[_0x2dfff1(0x109)]){logger[_0x2dfff1(0x176)]('🔄\x20Falling\x20back\x20to\x20Local\x20Built-In\x20AI...');;try{if(_0x51b16e['BrrzP'](_0x51b16e[_0x2dfff1(0x12b)],_0x51b16e['jdbAZ'])){const _0x16365e={};_0x16365e[_0x2dfff1(0x202)]=_0x51b16e['SmVtz'],_0x16365e[_0x2dfff1(0xff)]=_0x51b16e[_0x2dfff1(0x1ae)],_0x16365e[_0x2dfff1(0x137)]=_0x2dfff1(0x189),_0x16365e[_0x2dfff1(0x1ec)]=_0x2dfff1(0x11c),_0x16365e['gemini']=_0x51b16e[_0x2dfff1(0xeb)],_0x16365e['claude']=_0x51b16e[_0x2dfff1(0x1df)],_0x16365e[_0x2dfff1(0x15f)]=_0x2dfff1(0xe9),_0x16365e[_0x2dfff1(0xdd)]=_0x51b16e[_0x2dfff1(0xc9)],_0x16365e[_0x2dfff1(0xce)]=_0x51b16e[_0x2dfff1(0x160)],_0x16365e[_0x2dfff1(0x184)]=_0x51b16e[_0x2dfff1(0x114)];const _0x22b7a5=_0x16365e;return _0x22b7a5[_0x46370f]||_0x2dfff1(0x1bc);}else return await this[_0x2dfff1(0xea)](_0x3e46b0,_0x316d9b);}catch(_0x41c2f3){logger['error'](_0x51b16e[_0x2dfff1(0x14e)],_0x41c2f3[_0x2dfff1(0xe5)]);;}}throw new Error('AI\x20conversion\x20failed\x20('+_0x4cf127+'):\x20'+_0x573e18['message']);}}['getModelForProvider'](_0x3d2968){const _0x998d36=_0x2fd133,_0x216aba={};_0x216aba[_0x998d36(0x1e8)]=_0x998d36(0xcf),_0x216aba[_0x998d36(0xcb)]=_0x998d36(0xfa),_0x216aba[_0x998d36(0x172)]=_0x998d36(0x179),_0x216aba['Jdryk']=_0x998d36(0x1f6),_0x216aba['CThbv']=_0x998d36(0x1e5),_0x216aba[_0x998d36(0x111)]=_0x998d36(0x126),_0x216aba[_0x998d36(0x120)]=_0x998d36(0x194),_0x216aba[_0x998d36(0x13e)]='gpt-4';const _0x3d3ff6=_0x216aba;if(this['model'])return this['model'];const _0x280e2f={};_0x280e2f[_0x998d36(0x1ec)]=_0x3d3ff6[_0x998d36(0x1e8)],_0x280e2f[_0x998d36(0x1db)]=_0x3d3ff6[_0x998d36(0xcb)],_0x280e2f['claude']=_0x3d3ff6['XxOKC'],_0x280e2f[_0x998d36(0x15f)]=_0x3d3ff6[_0x998d36(0x19e)],_0x280e2f[_0x998d36(0xdd)]=_0x3d3ff6['CThbv'],_0x280e2f[_0x998d36(0xce)]=_0x3d3ff6[_0x998d36(0x111)],_0x280e2f[_0x998d36(0x184)]=_0x3d3ff6[_0x998d36(0x120)];const _0x6356f1=_0x280e2f;return _0x6356f1[_0x3d2968]||_0x3d3ff6[_0x998d36(0x13e)];}async[_0x2fd133(0x1d5)](_0xdbbc89,_0x234f68=null){const _0x5e2c35=_0x2fd133,_0x760712={};_0x760712[_0x5e2c35(0x117)]='OpenAI\x20not\x20configured',_0x760712[_0x5e2c35(0x11a)]=_0x5e2c35(0x1ec),_0x760712['kOPdv']='system',_0x760712[_0x5e2c35(0x1ce)]=_0x5e2c35(0x18d);const _0x3f33e4=_0x760712;if(!this[_0x5e2c35(0x1ec)])throw new Error(_0x3f33e4[_0x5e2c35(0x117)]);const _0x2c0141=this['getModelForProvider'](_0x3f33e4['aiWvn']),_0x388d6c=await this[_0x5e2c35(0x1ec)]['chat']['completions'][_0x5e2c35(0x1b4)]({'model':_0x2c0141,'messages':[{'role':_0x3f33e4['kOPdv'],'content':this[_0x5e2c35(0x10f)](_0x234f68)},{'role':_0x3f33e4[_0x5e2c35(0x1ce)],'content':_0xdbbc89}],'temperature':0.3,'max_tokens':0x1f4});let _0x1dbe07=_0x388d6c[_0x5e2c35(0x113)][0x0]['message'][_0x5e2c35(0x207)][_0x5e2c35(0x208)]();const _0x3ce0c3=this[_0x5e2c35(0x1c4)](_0x1dbe07),_0x18dc4f={};return _0x18dc4f[_0x5e2c35(0x148)]=!![],_0x18dc4f['converted']=_0x3ce0c3,_0x18dc4f[_0x5e2c35(0x1a7)]=_0x5e2c35(0x11c),_0x18dc4f[_0x5e2c35(0x14b)]=_0x2c0141,_0x18dc4f[_0x5e2c35(0x155)]=0.95,_0x18dc4f['processingTime']=_0x5e2c35(0x10e),_0x18dc4f;}async[_0x2fd133(0x1ff)](_0x43086a,_0xe87d56=null){const _0x4bdae3=_0x2fd133,_0x58f2fd={};_0x58f2fd[_0x4bdae3(0xc2)]=_0x4bdae3(0x133),_0x58f2fd['UOFSW']=_0x4bdae3(0xcf),_0x58f2fd['PYtXD']='gemini-2.5-flash',_0x58f2fd[_0x4bdae3(0x1a8)]=_0x4bdae3(0x1f6),_0x58f2fd[_0x4bdae3(0x143)]='command-r-plus',_0x58f2fd[_0x4bdae3(0x1bb)]=_0x4bdae3(0x194),_0x58f2fd[_0x4bdae3(0x183)]=_0x4bdae3(0xef),_0x58f2fd[_0x4bdae3(0x161)]=_0x4bdae3(0xba),_0x58f2fd[_0x4bdae3(0xc7)]=_0x4bdae3(0xfe),_0x58f2fd[_0x4bdae3(0xbd)]=_0x4bdae3(0x1e1),_0x58f2fd[_0x4bdae3(0x1c7)]=_0x4bdae3(0x15a),_0x58f2fd['WxAhU']='N/A',_0x58f2fd[_0x4bdae3(0xd7)]=_0x4bdae3(0x1c5),_0x58f2fd['kprcA']=function(_0x46caf1,_0x4b64d9){return _0x46caf1!==_0x4b64d9;},_0x58f2fd[_0x4bdae3(0x195)]=function(_0x181681,_0x236b38){return _0x181681===_0x236b38;},_0x58f2fd['tklXt']=_0x4bdae3(0x1f4);const _0x1e6d23=_0x58f2fd;if(!this['gemini']){if(_0x1e6d23[_0x4bdae3(0x161)]!==_0x1e6d23[_0x4bdae3(0x161)]){_0x4bd738[_0x4bdae3(0xfd)](_0x1e6d23[_0x4bdae3(0xc2)],_0xacc3ac['message']);;throw _0x2698bb;}else throw new Error(_0x1e6d23[_0x4bdae3(0xc7)]);}let _0x561295=this[_0x4bdae3(0x20a)](_0x4bdae3(0x1db));try{const _0x68cc3a={};_0x68cc3a[_0x4bdae3(0x14b)]=_0x561295;const _0xf97584=this[_0x4bdae3(0x1db)][_0x4bdae3(0x180)](_0x68cc3a),_0x45def5=this[_0x4bdae3(0x10f)](_0xe87d56)[_0x4bdae3(0x206)](_0x1e6d23[_0x4bdae3(0xbd)],_0x43086a),_0x34bebb=_0x45def5[_0x4bdae3(0x206)](/[^\x00-\x7F]/g,'\x20')['replace'](/\s+/g,'\x20')[_0x4bdae3(0x208)](),_0xa633bd=await _0xf97584[_0x4bdae3(0xe0)](_0x34bebb),_0x5f28f9=await _0xa633bd[_0x4bdae3(0x175)];let _0x147a66=_0x5f28f9['text']()['trim']();const _0x462b4c=this[_0x4bdae3(0x1c4)](_0x147a66),_0x2b3436={};return _0x2b3436[_0x4bdae3(0x148)]=!![],_0x2b3436[_0x4bdae3(0x18e)]=_0x462b4c,_0x2b3436['provider']=_0x1e6d23[_0x4bdae3(0x1c7)],_0x2b3436[_0x4bdae3(0x14b)]=_0x561295,_0x2b3436[_0x4bdae3(0x155)]=0.9,_0x2b3436[_0x4bdae3(0x1ca)]=_0x1e6d23['WxAhU'],_0x2b3436;}catch(_0x1bc909){if(_0x1e6d23[_0x4bdae3(0xd7)]!==_0x1e6d23[_0x4bdae3(0xd7)])this[_0x4bdae3(0x1db)]=new _0x9d0504(_0x599344.env.GEMINI_API_KEY);else{if(_0x1e6d23[_0x4bdae3(0x1f0)](_0x561295,'gemini-2.5-flash')){if(_0x1e6d23['neYJD'](_0x4bdae3(0x1f4),_0x1e6d23[_0x4bdae3(0xfb)])){logger[_0x4bdae3(0x157)](_0x4bdae3(0x1b2)+_0x561295+'\x20failed,\x20falling\x20back\x20to\x20gemini-2.5-flash');;const _0xd38c2a={};_0xd38c2a[_0x4bdae3(0x14b)]=_0x1e6d23[_0x4bdae3(0x163)];const _0x26fc81=this[_0x4bdae3(0x1db)]['getGenerativeModel'](_0xd38c2a),_0x5729c6=this['getSystemPrompt'](_0xe87d56)[_0x4bdae3(0x206)](_0x1e6d23['rlGQf'],_0x43086a),_0x353d05=_0x5729c6[_0x4bdae3(0x206)](/[^\x00-\x7F]/g,'\x20')['replace'](/\s+/g,'\x20')[_0x4bdae3(0x208)](),_0x2b2551=await _0x26fc81[_0x4bdae3(0xe0)](_0x353d05),_0x1ade7b=await _0x2b2551[_0x4bdae3(0x175)],_0x179375=this[_0x4bdae3(0x1c4)](_0x1ade7b[_0x4bdae3(0x107)]()[_0x4bdae3(0x208)]()),_0x3f5632={};return _0x3f5632[_0x4bdae3(0x148)]=!![],_0x3f5632[_0x4bdae3(0x18e)]=_0x179375,_0x3f5632[_0x4bdae3(0x1a7)]=_0x1e6d23['gxnqw'],_0x3f5632['model']=_0x1e6d23[_0x4bdae3(0x163)],_0x3f5632['confidence']=0.85,_0x3f5632[_0x4bdae3(0x1ca)]=_0x1e6d23[_0x4bdae3(0x1a2)],_0x3f5632;}else{if(this[_0x4bdae3(0x14b)])return this[_0x4bdae3(0x14b)];const _0x512488={};_0x512488[_0x4bdae3(0x1ec)]=oKGFKt[_0x4bdae3(0x1fc)],_0x512488['gemini']=oKGFKt['PYtXD'],_0x512488[_0x4bdae3(0x1a0)]='claude-3-5-sonnet-20241022',_0x512488[_0x4bdae3(0x15f)]=oKGFKt[_0x4bdae3(0x1a8)],_0x512488[_0x4bdae3(0xdd)]='llama-3.3-70b-versatile',_0x512488[_0x4bdae3(0xce)]=oKGFKt[_0x4bdae3(0x143)],_0x512488[_0x4bdae3(0x184)]=oKGFKt[_0x4bdae3(0x1bb)];const _0x2ae7ee=_0x512488;return _0x2ae7ee[_0x3f254c]||oKGFKt[_0x4bdae3(0x183)];}}throw _0x1bc909;}}}async['convertWithCopilot'](_0x4c3c04,_0x5d6c2f=null){const _0x4c760f=_0x2fd133,_0x636781={};_0x636781[_0x4c760f(0x11d)]='GitHub\x20Copilot\x20not\x20configured',_0x636781[_0x4c760f(0x16a)]=function(_0x2d22d8,_0x161898){return _0x2d22d8===_0x161898;},_0x636781[_0x4c760f(0x1a5)]=_0x4c760f(0x19a);const _0x501809=_0x636781;if(!this['copilot']){if(_0x501809[_0x4c760f(0x16a)](_0x501809[_0x4c760f(0x1a5)],_0x501809[_0x4c760f(0x1a5)]))throw new Error('GitHub\x20Copilot\x20not\x20configured');else throw new _0x5e991d(_0x501809[_0x4c760f(0x11d)]);}const _0x45f8e9=this[_0x4c760f(0x20a)](_0x4c760f(0x15f)),_0x28845d={};_0x28845d[_0x4c760f(0x108)]=_0x4c760f(0x18d),_0x28845d[_0x4c760f(0x207)]=_0x4c3c04;const _0x485f2a=await this[_0x4c760f(0x15f)][_0x4c760f(0x10c)][_0x4c760f(0x142)]['create']({'model':_0x45f8e9,'messages':[{'role':_0x4c760f(0xf3),'content':this[_0x4c760f(0x10f)](_0x5d6c2f)},_0x28845d],'temperature':0.3,'max_tokens':0x1f4});let _0x2a096c=_0x485f2a['choices'][0x0][_0x4c760f(0xe5)][_0x4c760f(0x207)][_0x4c760f(0x208)]();return _0x2a096c=this[_0x4c760f(0x1c4)](_0x2a096c),_0x2a096c;}async[_0x2fd133(0x158)](_0x5d8aac,_0x876cc6=null){const _0x563a26=_0x2fd133,_0x3cc2b5={};_0x3cc2b5['Avtbs']=_0x563a26(0xee),_0x3cc2b5[_0x563a26(0x1b5)]=function(_0x4a05af,_0x231b6e){return _0x4a05af!==_0x231b6e;},_0x3cc2b5[_0x563a26(0x210)]='XziYf',_0x3cc2b5['YrHah']=_0x563a26(0xdc),_0x3cc2b5[_0x563a26(0xd0)]=_0x563a26(0x156),_0x3cc2b5[_0x563a26(0x124)]=_0x563a26(0x1a0),_0x3cc2b5[_0x563a26(0x17f)]=_0x563a26(0x18d),_0x3cc2b5[_0x563a26(0x1ba)]=_0x563a26(0x1ed),_0x3cc2b5[_0x563a26(0xbc)]=_0x563a26(0x10e);const _0x1f7cb0=_0x3cc2b5;if(!this['claude']){if(_0x1f7cb0[_0x563a26(0x1b5)](_0x1f7cb0[_0x563a26(0x210)],_0x1f7cb0[_0x563a26(0xe2)]))throw new Error(_0x1f7cb0[_0x563a26(0xd0)]);else throw new _0x4d283c(_0x1f7cb0[_0x563a26(0x186)]);}const _0x440453=this['getModelForProvider'](_0x1f7cb0[_0x563a26(0x124)]),_0x4d1e3d=this[_0x563a26(0x10f)](_0x876cc6),_0x15dd9c={};_0x15dd9c[_0x563a26(0x108)]=_0x1f7cb0[_0x563a26(0x17f)],_0x15dd9c[_0x563a26(0x207)]=_0x5d8aac;const _0x155dda={};_0x155dda[_0x563a26(0x14b)]=_0x440453,_0x155dda['max_tokens']=0x1f4,_0x155dda[_0x563a26(0xf3)]=_0x4d1e3d,_0x155dda[_0x563a26(0x12e)]=[_0x15dd9c],_0x155dda['temperature']=0.3;const _0x543372=await this[_0x563a26(0x1a0)][_0x563a26(0x12e)][_0x563a26(0x1b4)](_0x155dda);let _0x2602f1=_0x543372[_0x563a26(0x207)][0x0][_0x563a26(0x107)][_0x563a26(0x208)]();const _0x11eccd=this[_0x563a26(0x1c4)](_0x2602f1),_0x4fda52={};return _0x4fda52['success']=!![],_0x4fda52[_0x563a26(0x18e)]=_0x11eccd,_0x4fda52[_0x563a26(0x1a7)]=_0x1f7cb0['ScCTa'],_0x4fda52[_0x563a26(0x14b)]=_0x440453,_0x4fda52['confidence']=0.93,_0x4fda52[_0x563a26(0x1ca)]=_0x1f7cb0[_0x563a26(0xbc)],_0x4fda52;}async[_0x2fd133(0x1b7)](_0x144694,_0x3afb5a=null){const _0x3e31f2=_0x2fd133,_0x2964b2={};_0x2964b2[_0x3e31f2(0xdb)]=_0x3e31f2(0x18b),_0x2964b2[_0x3e31f2(0x1fe)]=_0x3e31f2(0x193),_0x2964b2[_0x3e31f2(0xc1)]=_0x3e31f2(0xd4),_0x2964b2['UBXSC']=_0x3e31f2(0xee),_0x2964b2[_0x3e31f2(0x10d)]=_0x3e31f2(0xf3),_0x2964b2[_0x3e31f2(0x1e2)]=_0x3e31f2(0x18d),_0x2964b2[_0x3e31f2(0x16e)]=_0x3e31f2(0x10e);const _0x4972fc=_0x2964b2;if(!this[_0x3e31f2(0xdd)]){if(_0x4972fc[_0x3e31f2(0x1fe)]===_0x4972fc[_0x3e31f2(0xc1)]){const _0x2dfe29={};_0x2dfe29[_0x3e31f2(0x13d)]=_0x1a6981.env.MISTRAL_API_KEY,_0x2dfe29[_0x3e31f2(0x1eb)]=OWlWHS[_0x3e31f2(0xdb)],this[_0x3e31f2(0x184)]=new _0x12f6fd(_0x2dfe29);}else throw new Error(_0x4972fc[_0x3e31f2(0x10b)]);}const _0x522a0e=this['getModelForProvider']('groq'),_0x533852=await this[_0x3e31f2(0xdd)]['chat'][_0x3e31f2(0x142)][_0x3e31f2(0x1b4)]({'model':_0x522a0e,'messages':[{'role':_0x4972fc[_0x3e31f2(0x10d)],'content':this[_0x3e31f2(0x10f)](_0x3afb5a)},{'role':_0x4972fc['Wrcff'],'content':_0x144694}],'temperature':0.3,'max_tokens':0x1f4});let _0x2666c1=_0x533852[_0x3e31f2(0x113)][0x0][_0x3e31f2(0xe5)]['content']['trim']();const _0x4e547c=this['cleanAIResponse'](_0x2666c1),_0x3c7498={};return _0x3c7498[_0x3e31f2(0x148)]=!![],_0x3c7498[_0x3e31f2(0x18e)]=_0x4e547c,_0x3c7498['provider']=_0x3e31f2(0x147),_0x3c7498[_0x3e31f2(0x14b)]=_0x522a0e,_0x3c7498[_0x3e31f2(0x155)]=0.92,_0x3c7498[_0x3e31f2(0x1ca)]=_0x4972fc[_0x3e31f2(0x16e)],_0x3c7498;}async[_0x2fd133(0x20e)](_0x51cc74,_0x2bb609=null){const _0x1a56b8=_0x2fd133,_0x9e2bec={};_0x9e2bec[_0x1a56b8(0xec)]='Cohere\x20not\x20configured',_0x9e2bec[_0x1a56b8(0x1dc)]='cohere',_0x9e2bec[_0x1a56b8(0x173)]=_0x1a56b8(0xf3),_0x9e2bec[_0x1a56b8(0x11f)]='user';const _0x1dc72d=_0x9e2bec;if(!this[_0x1a56b8(0xce)])throw new Error(_0x1dc72d['ABulF']);const _0x5fba1f=this[_0x1a56b8(0x20a)](_0x1dc72d['jjeXM']),_0x2c2844=await this[_0x1a56b8(0xce)][_0x1a56b8(0x10c)]['completions'][_0x1a56b8(0x1b4)]({'model':_0x5fba1f,'messages':[{'role':_0x1dc72d[_0x1a56b8(0x173)],'content':this[_0x1a56b8(0x10f)](_0x2bb609)},{'role':_0x1dc72d[_0x1a56b8(0x11f)],'content':_0x51cc74}],'temperature':0.3,'max_tokens':0x1f4});let _0xecdd=_0x2c2844[_0x1a56b8(0x113)][0x0][_0x1a56b8(0xe5)][_0x1a56b8(0x207)][_0x1a56b8(0x208)]();return _0xecdd=this['cleanAIResponse'](_0xecdd),_0xecdd;}async[_0x2fd133(0x100)](_0x1c5fc1,_0x221eea=null){const _0x19f617=_0x2fd133,_0x2c64b6={};_0x2c64b6[_0x19f617(0x110)]='Mistral\x20AI\x20not\x20configured',_0x2c64b6[_0x19f617(0x15e)]='mistral',_0x2c64b6[_0x19f617(0x18c)]='system',_0x2c64b6[_0x19f617(0x1f9)]=_0x19f617(0x18d);const _0xba60c7=_0x2c64b6;if(!this[_0x19f617(0x184)])throw new Error(_0xba60c7[_0x19f617(0x110)]);const _0x23cf3e=this[_0x19f617(0x20a)](_0xba60c7[_0x19f617(0x15e)]),_0x1ac48b=await this[_0x19f617(0x184)][_0x19f617(0x10c)][_0x19f617(0x142)][_0x19f617(0x1b4)]({'model':_0x23cf3e,'messages':[{'role':_0xba60c7['ofZNp'],'content':this['getSystemPrompt'](_0x221eea)},{'role':_0xba60c7[_0x19f617(0x1f9)],'content':_0x1c5fc1}],'temperature':0.3,'max_tokens':0x1f4});let _0x50a0e1=_0x1ac48b[_0x19f617(0x113)][0x0][_0x19f617(0xe5)][_0x19f617(0x207)]['trim']();return _0x50a0e1=this[_0x19f617(0x1c4)](_0x50a0e1),_0x50a0e1;}[_0x2fd133(0x1c4)](_0x3c0266){const _0x35a2ef=_0x2fd133,_0x538570={};_0x538570['GwwbM']='local',_0x538570[_0x35a2ef(0x1c1)]=function(_0x1418c3,_0x2d72c4){return _0x1418c3===_0x2d72c4;},_0x538570[_0x35a2ef(0x1cf)]=_0x35a2ef(0xc6),_0x538570['wSznq']=_0x35a2ef(0x1dd),_0x538570[_0x35a2ef(0x169)]=_0x35a2ef(0x1d2),_0x538570[_0x35a2ef(0xdf)]=_0x35a2ef(0x16d),_0x538570[_0x35a2ef(0x112)]=_0x35a2ef(0x134),_0x538570['ZpAIu']=_0x35a2ef(0x116),_0x538570[_0x35a2ef(0xe7)]=_0x35a2ef(0x17d),_0x538570[_0x35a2ef(0x13b)]=_0x35a2ef(0x1b8),_0x538570['DKkHj']=_0x35a2ef(0x125),_0x538570[_0x35a2ef(0x1f3)]=_0x35a2ef(0xf2),_0x538570[_0x35a2ef(0x153)]='rotate\x20',_0x538570[_0x35a2ef(0x15b)]=_0x35a2ef(0x165),_0x538570[_0x35a2ef(0x1b9)]=_0x35a2ef(0xd1),_0x538570[_0x35a2ef(0x1aa)]=_0x35a2ef(0x19f),_0x538570['QrMsH']=_0x35a2ef(0xca),_0x538570[_0x35a2ef(0x127)]=_0x35a2ef(0x1a6),_0x538570[_0x35a2ef(0xde)]=_0x35a2ef(0x20c),_0x538570['oNsmT']=function(_0x351d1e,_0xfb8be0){return _0x351d1e===_0xfb8be0;},_0x538570[_0x35a2ef(0x150)]='recent',_0x538570[_0x35a2ef(0xe1)]=_0x35a2ef(0x16c),_0x538570[_0x35a2ef(0x1d6)]=_0x35a2ef(0xc5);const _0x47eeaa=_0x538570;_0x3c0266=_0x3c0266[_0x35a2ef(0x206)](/```[\s\S]*?```/g,'')[_0x35a2ef(0x208)](),_0x3c0266=_0x3c0266['replace'](/```/g,'')[_0x35a2ef(0x208)]();const _0xc41d31=_0x3c0266[_0x35a2ef(0xe6)]('\x0a'),_0x40cd1f=_0xc41d31[_0x35a2ef(0x187)](_0x818d5f=>{const _0x3974af=_0x35a2ef,_0x124891={};_0x124891[_0x3974af(0x10a)]=_0x47eeaa[_0x3974af(0x197)];const _0x60fd75=_0x124891;if(_0x47eeaa[_0x3974af(0x1c1)](_0x3974af(0xc6),_0x47eeaa[_0x3974af(0x1cf)])){const _0x2bef80=_0x818d5f[_0x3974af(0x208)]();if(!_0x2bef80)return![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa[_0x3974af(0x1d8)]))return!![];if(_0x2bef80['startsWith'](_0x47eeaa['VrLxR']))return!![];if(_0x47eeaa[_0x3974af(0x1c1)](_0x2bef80,_0x3974af(0x13c)))return!![];if(_0x2bef80===_0x3974af(0x1c6))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa[_0x3974af(0xdf)]))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa[_0x3974af(0x112)]))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x3974af(0x192)))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa['ZpAIu']))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa['uzemp']))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa[_0x3974af(0x13b)]))return!![];if(_0x2bef80['startsWith'](_0x47eeaa['DKkHj']))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa['VOYmF']))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa[_0x3974af(0x153)]))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa['MfDEi']))return!![];if(_0x2bef80['startsWith'](_0x47eeaa[_0x3974af(0x1b9)]))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa['aYMWW']))return!![];if(_0x2bef80[_0x3974af(0x1fb)](_0x47eeaa[_0x3974af(0x182)]))return!![];if(_0x2bef80['startsWith'](_0x47eeaa['ElUpk']))return!![];if(_0x2bef80===_0x47eeaa['AaXZQ'])return!![];if(_0x47eeaa[_0x3974af(0x14a)](_0x2bef80,_0x47eeaa[_0x3974af(0x150)]))return!![];if(_0x47eeaa[_0x3974af(0x1c1)](_0x2bef80,_0x47eeaa['TYHqT']))return!![];if(_0x47eeaa['oNsmT'](_0x2bef80,_0x47eeaa[_0x3974af(0x1d6)]))return!![];return!![];}else this[_0x3974af(0x1a7)]=_0xf14060.env.AI_PROVIDER||NNXMuc[_0x3974af(0x10a)],this[_0x3974af(0x14b)]=_0x452d32.env.AI_MODEL||null,this[_0x3974af(0x109)]=new _0x25869a(),this[_0x3974af(0x1e4)]();});return _0x40cd1f[_0x35a2ef(0x13f)]('\x0a')[_0x35a2ef(0x208)]();}['getAvailableProviders'](){const _0x4b8b4c=_0x2fd133,_0xeac463={};_0xeac463[_0x4b8b4c(0x16f)]=_0x4b8b4c(0x1ec),_0xeac463['Czynb']=_0x4b8b4c(0x1db),_0xeac463[_0x4b8b4c(0xe8)]=_0x4b8b4c(0x15a),_0xeac463[_0x4b8b4c(0x1e9)]=_0x4b8b4c(0x15f),_0xeac463[_0x4b8b4c(0x201)]=_0x4b8b4c(0xe9),_0xeac463[_0x4b8b4c(0x1d7)]='groq',_0xeac463['GnbfT']=_0x4b8b4c(0x147),_0xeac463[_0x4b8b4c(0x200)]=_0x4b8b4c(0xce),_0xeac463['WECUH']=_0x4b8b4c(0x162),_0xeac463[_0x4b8b4c(0x132)]=_0x4b8b4c(0x184),_0xeac463[_0x4b8b4c(0xd3)]=_0x4b8b4c(0xe4),_0xeac463[_0x4b8b4c(0xd5)]=_0x4b8b4c(0x166);const _0xd0dec=_0xeac463,_0xcfa135=[],_0x33ff73={};_0x33ff73['id']=_0xd0dec['DAHQj'],_0x33ff73[_0x4b8b4c(0xf4)]=_0x4b8b4c(0x11c),_0x33ff73[_0x4b8b4c(0x118)]='🤖';if(this[_0x4b8b4c(0x1ec)])_0xcfa135[_0x4b8b4c(0xe3)](_0x33ff73);const _0x4571e3={};_0x4571e3['id']=_0xd0dec[_0x4b8b4c(0x122)],_0x4571e3[_0x4b8b4c(0xf4)]=_0xd0dec[_0x4b8b4c(0xe8)],_0x4571e3[_0x4b8b4c(0x118)]='✨';if(this['gemini'])_0xcfa135[_0x4b8b4c(0xe3)](_0x4571e3);const _0x39f914={};_0x39f914['id']='claude',_0x39f914[_0x4b8b4c(0xf4)]=_0x4b8b4c(0x1ed),_0x39f914[_0x4b8b4c(0x118)]='🧠';if(this['claude'])_0xcfa135[_0x4b8b4c(0xe3)](_0x39f914);const _0x30fbf9={};_0x30fbf9['id']=_0xd0dec['yyGPe'],_0x30fbf9[_0x4b8b4c(0xf4)]=_0xd0dec[_0x4b8b4c(0x201)],_0x30fbf9['icon']='🐙';if(this[_0x4b8b4c(0x15f)])_0xcfa135[_0x4b8b4c(0xe3)](_0x30fbf9);const _0x50e7fb={};_0x50e7fb['id']=_0xd0dec['BcDtS'],_0x50e7fb['name']=_0xd0dec[_0x4b8b4c(0x1ee)],_0x50e7fb[_0x4b8b4c(0x118)]='⚡';if(this[_0x4b8b4c(0xdd)])_0xcfa135['push'](_0x50e7fb);const _0x5a483={};_0x5a483['id']=_0xd0dec[_0x4b8b4c(0x200)],_0x5a483[_0x4b8b4c(0xf4)]=_0xd0dec['WECUH'],_0x5a483[_0x4b8b4c(0x118)]='🌊';if(this['cohere'])_0xcfa135['push'](_0x5a483);const _0x497ea0={};_0x497ea0['id']=_0xd0dec[_0x4b8b4c(0x132)],_0x497ea0[_0x4b8b4c(0xf4)]=_0xd0dec[_0x4b8b4c(0xd3)],_0x497ea0[_0x4b8b4c(0x118)]=_0xd0dec[_0x4b8b4c(0xd5)];if(this['mistral'])_0xcfa135[_0x4b8b4c(0xe3)](_0x497ea0);return _0xcfa135;}['setProvider'](_0x140429,_0x236f87=null){const _0x27e33e=_0x2fd133,_0x4e0ae3={};_0x4e0ae3[_0x27e33e(0xf6)]=_0x27e33e(0x1ec),_0x4e0ae3['bhOqs']=_0x27e33e(0x11c),_0x4e0ae3[_0x27e33e(0x1f8)]='Google\x20Gemini',_0x4e0ae3['IfDPU']=_0x27e33e(0x1a0),_0x4e0ae3['lUXRT']=_0x27e33e(0x1ed),_0x4e0ae3[_0x27e33e(0x141)]=_0x27e33e(0x15f),_0x4e0ae3['XoIRw']=_0x27e33e(0xe9),_0x4e0ae3['yAwJm']=_0x27e33e(0xdd),_0x4e0ae3[_0x27e33e(0xc4)]=_0x27e33e(0xce),_0x4e0ae3[_0x27e33e(0x135)]=_0x27e33e(0x162),_0x4e0ae3['QJUIW']=_0x27e33e(0x184),_0x4e0ae3[_0x27e33e(0x121)]=_0x27e33e(0x166),_0x4e0ae3['Goffs']=function(_0x25484c,_0x436ee8){return _0x25484c===_0x436ee8;},_0x4e0ae3[_0x27e33e(0x1cd)]=_0x27e33e(0xbf);const _0x1da195=_0x4e0ae3,_0x74f7e8=this[_0x27e33e(0x102)]()[_0x27e33e(0x144)](_0x3b49e3=>_0x3b49e3['id']);if(_0x74f7e8[_0x27e33e(0x1b0)](_0x140429)){this[_0x27e33e(0x1a7)]=_0x140429;if(_0x236f87){if(_0x1da195['Goffs'](_0x1da195['IovdS'],_0x1da195['IovdS']))this[_0x27e33e(0x14b)]=_0x236f87;else{const _0x39692d=[],_0x136797={};_0x136797['id']=TdmCae[_0x27e33e(0xf6)],_0x136797[_0x27e33e(0xf4)]=TdmCae[_0x27e33e(0x20f)],_0x136797[_0x27e33e(0x118)]='🤖';if(this[_0x27e33e(0x1ec)])_0x39692d['push'](_0x136797);const _0xaa5224={};_0xaa5224['id']=_0x27e33e(0x1db),_0xaa5224[_0x27e33e(0xf4)]=TdmCae['muflc'],_0xaa5224[_0x27e33e(0x118)]='✨';if(this[_0x27e33e(0x1db)])_0x39692d[_0x27e33e(0xe3)](_0xaa5224);const _0x6bc03c={};_0x6bc03c['id']=TdmCae[_0x27e33e(0x146)],_0x6bc03c[_0x27e33e(0xf4)]=TdmCae[_0x27e33e(0x15d)],_0x6bc03c[_0x27e33e(0x118)]='🧠';if(this[_0x27e33e(0x1a0)])_0x39692d[_0x27e33e(0xe3)](_0x6bc03c);const _0x2b7a20={};_0x2b7a20['id']=TdmCae[_0x27e33e(0x141)],_0x2b7a20['name']=TdmCae[_0x27e33e(0x1d3)],_0x2b7a20[_0x27e33e(0x118)]='🐙';if(this[_0x27e33e(0x15f)])_0x39692d['push'](_0x2b7a20);const _0x5b0ca0={};_0x5b0ca0['id']=TdmCae[_0x27e33e(0x152)],_0x5b0ca0[_0x27e33e(0xf4)]='Groq',_0x5b0ca0['icon']='⚡';if(this[_0x27e33e(0xdd)])_0x39692d[_0x27e33e(0xe3)](_0x5b0ca0);const _0x3f2b12={};_0x3f2b12['id']=TdmCae[_0x27e33e(0xc4)],_0x3f2b12[_0x27e33e(0xf4)]=TdmCae[_0x27e33e(0x135)],_0x3f2b12[_0x27e33e(0x118)]='🌊';if(this[_0x27e33e(0xce)])_0x39692d[_0x27e33e(0xe3)](_0x3f2b12);const _0x49c53f={};_0x49c53f['id']=TdmCae['QJUIW'],_0x49c53f[_0x27e33e(0xf4)]=_0x27e33e(0xe4),_0x49c53f[_0x27e33e(0x118)]=TdmCae[_0x27e33e(0x121)];if(this[_0x27e33e(0x184)])_0x39692d[_0x27e33e(0xe3)](_0x49c53f);return _0x39692d;}}return!![];}return![];}['getCurrentProvider'](){const _0x1ddb5e=_0x2fd133;return{'id':this[_0x1ddb5e(0x1a7)],'name':this['getProviderName'](this['provider']),'model':this[_0x1ddb5e(0x14b)]||this[_0x1ddb5e(0x20a)](this[_0x1ddb5e(0x1a7)]),'available':this[_0x1ddb5e(0x102)]()};}['getProviderName'](_0x4aa2e8){const _0x2a7d96=_0x2fd133,_0x130e91={};_0x130e91[_0x2a7d96(0x1cc)]=_0x2a7d96(0x189),_0x130e91[_0x2a7d96(0x101)]=_0x2a7d96(0x11c),_0x130e91[_0x2a7d96(0x1e3)]='Google\x20Gemini',_0x130e91['vxFiA']=_0x2a7d96(0x1ed),_0x130e91[_0x2a7d96(0x191)]=_0x2a7d96(0xe9),_0x130e91['pqciq']='Cohere',_0x130e91[_0x2a7d96(0x145)]=_0x2a7d96(0x1bc);const _0x408919=_0x130e91,_0x4b8c1a={};_0x4b8c1a[_0x2a7d96(0x202)]=_0x408919['rgNZP'],_0x4b8c1a[_0x2a7d96(0xff)]=_0x408919['rgNZP'],_0x4b8c1a['builtin']=_0x408919[_0x2a7d96(0x1cc)],_0x4b8c1a[_0x2a7d96(0x1ec)]=_0x408919[_0x2a7d96(0x101)],_0x4b8c1a[_0x2a7d96(0x1db)]=_0x408919[_0x2a7d96(0x1e3)],_0x4b8c1a['claude']=_0x408919[_0x2a7d96(0x115)],_0x4b8c1a['copilot']=_0x408919[_0x2a7d96(0x191)],_0x4b8c1a[_0x2a7d96(0xdd)]=_0x2a7d96(0x147),_0x4b8c1a['cohere']=_0x408919[_0x2a7d96(0x128)],_0x4b8c1a[_0x2a7d96(0x184)]='Mistral\x20AI';const _0x51282c=_0x4b8c1a;return _0x51282c[_0x4aa2e8]||_0x408919[_0x2a7d96(0x145)];}async['convertWithLocalAI'](_0x1d07e5,_0x28baa3=null){const _0x412d57=_0x2fd133,_0x4c106c={};_0x4c106c[_0x412d57(0x1a3)]=_0x412d57(0x1bf),_0x4c106c[_0x412d57(0x1f5)]=_0x412d57(0x1dd),_0x4c106c['TseJB']='home',_0x4c106c[_0x412d57(0x1af)]='back',_0x4c106c[_0x412d57(0x164)]=_0x412d57(0x134),_0x4c106c[_0x412d57(0x1fd)]='tap\x20',_0x4c106c[_0x412d57(0x1ab)]=_0x412d57(0x116),_0x4c106c[_0x412d57(0x15c)]=_0x412d57(0x17d),_0x4c106c[_0x412d57(0x1e0)]='WAIT\x20',_0x4c106c[_0x412d57(0x1f2)]=_0x412d57(0x125),_0x4c106c['AdOlq']=_0x412d57(0xf2),_0x4c106c[_0x412d57(0x1cb)]='lightmode',_0x4c106c[_0x412d57(0x1c9)]=_0x412d57(0x19f),_0x4c106c['QejTf']='wifi\x20',_0x4c106c[_0x412d57(0x1d0)]=_0x412d57(0x1a6),_0x4c106c['uKefT']='getLocators',_0x4c106c[_0x412d57(0xd6)]=function(_0x275735,_0x86b614){return _0x275735===_0x86b614;},_0x4c106c[_0x412d57(0x1d9)]=function(_0x4dc27f,_0x35a26e){return _0x4dc27f===_0x35a26e;},_0x4c106c['oFUxq']=_0x412d57(0x16c),_0x4c106c[_0x412d57(0xcc)]=_0x412d57(0xc5),_0x4c106c[_0x412d57(0x203)]=function(_0x54886f,_0x585de7){return _0x54886f===_0x585de7;},_0x4c106c[_0x412d57(0x1b6)]=_0x412d57(0x196),_0x4c106c['gdHKL']='Local\x20Built-In\x20AI',_0x4c106c[_0x412d57(0x1e6)]='built-in-patterns',_0x4c106c[_0x412d57(0x167)]=function(_0x4ed7c2,_0x5bb637){return _0x4ed7c2!==_0x5bb637;},_0x4c106c['ZxPDs']=_0x412d57(0x205),_0x4c106c[_0x412d57(0x1fa)]='BGSyh',_0x4c106c[_0x412d57(0x19b)]=_0x412d57(0x133);const _0x50031d=_0x4c106c;logger[_0x412d57(0x176)](_0x412d57(0xd9)+_0x1d07e5+'\x22');;try{const _0x14315f=_0x28baa3?[{'platform':_0x28baa3}]:[],_0xfd0b4d=await this[_0x412d57(0x109)][_0x412d57(0xf5)](_0x1d07e5,_0x14315f);if(_0xfd0b4d[_0x412d57(0x148)]){if(_0x50031d[_0x412d57(0x203)](_0x50031d[_0x412d57(0x1b6)],_0x50031d[_0x412d57(0x1b6)])){const _0x249fa5={};return _0x249fa5[_0x412d57(0x18e)]=_0xfd0b4d[_0x412d57(0x18e)],_0x249fa5[_0x412d57(0x1a7)]=_0x50031d[_0x412d57(0xf1)],_0x249fa5['confidence']=_0xfd0b4d[_0x412d57(0x155)],_0x249fa5['processingTime']=_0xfd0b4d[_0x412d57(0x1ca)],_0x249fa5[_0x412d57(0x14b)]=_0x50031d[_0x412d57(0x1e6)],_0x249fa5[_0x412d57(0x1c2)]=0x0,_0x249fa5;}else throw new _0xe29fd3(lTBUOn[_0x412d57(0x1a3)]);}else{if(_0x50031d['hYhJO'](_0x50031d[_0x412d57(0x1b3)],_0x50031d['XjXVW']))throw new Error(_0xfd0b4d['error']||'Local\x20AI\x20conversion\x20failed');else{const _0x2337fb={'KpGBI':lTBUOn[_0x412d57(0x1f5)],'ocmmo':function(_0x300737,_0x4d6253){return _0x300737===_0x4d6253;},'qzbzN':lTBUOn['TseJB'],'MrZWi':lTBUOn[_0x412d57(0x1af)],'obJWW':lTBUOn[_0x412d57(0x164)],'LWaxh':lTBUOn[_0x412d57(0x1fd)],'zoZaa':lTBUOn['UYEWm'],'goCck':lTBUOn[_0x412d57(0x15c)],'sIzAu':lTBUOn['ZUIoh'],'IDZRR':lTBUOn[_0x412d57(0x1f2)],'KuBKr':lTBUOn[_0x412d57(0x1a4)],'yKVdw':_0x412d57(0x168),'ygjvq':lTBUOn[_0x412d57(0x1cb)],'rOKYX':lTBUOn['ZoNey'],'aqunl':lTBUOn[_0x412d57(0xed)],'hQNZw':lTBUOn[_0x412d57(0x1d0)],'TQzQE':lTBUOn['uKefT'],'PRmCF':function(_0x5483d5,_0x32b23e){const _0x2427ba=_0x412d57;return lTBUOn[_0x2427ba(0xd6)](_0x5483d5,_0x32b23e);},'DrGoe':function(_0x175751,_0x599f30){const _0xfeb578=_0x412d57;return lTBUOn[_0xfeb578(0x1d9)](_0x175751,_0x599f30);},'jUaUi':lTBUOn[_0x412d57(0x181)],'lCnXb':lTBUOn[_0x412d57(0xcc)]};_0x3c56b0=_0x22fa24[_0x412d57(0x206)](/```[\s\S]*?```/g,'')['trim'](),_0x528366=_0xa7d7f0[_0x412d57(0x206)](/```/g,'')[_0x412d57(0x208)]();const _0x27a127=_0x5dbc4f[_0x412d57(0xe6)]('\x0a'),_0x25f8ba=_0x27a127[_0x412d57(0x187)](_0x1aba29=>{const _0x40b2cc=_0x412d57,_0x2617df=_0x1aba29[_0x40b2cc(0x208)]();if(!_0x2617df)return![];if(_0x2617df[_0x40b2cc(0x1fb)](_0x2337fb[_0x40b2cc(0x151)]))return!![];if(_0x2617df['startsWith'](_0x40b2cc(0x1d2)))return!![];if(_0x2337fb[_0x40b2cc(0x14d)](_0x2617df,_0x2337fb['qzbzN']))return!![];if(_0x2617df===_0x2337fb[_0x40b2cc(0x1d1)])return!![];if(_0x2617df[_0x40b2cc(0x1fb)](_0x40b2cc(0x16d)))return!![];if(_0x2617df['startsWith'](_0x2337fb[_0x40b2cc(0x17a)]))return!![];if(_0x2617df[_0x40b2cc(0x1fb)](_0x2337fb[_0x40b2cc(0x1be)]))return!![];if(_0x2617df[_0x40b2cc(0x1fb)](_0x2337fb['zoZaa']))return!![];if(_0x2617df[_0x40b2cc(0x1fb)](_0x2337fb[_0x40b2cc(0xcd)]))return!![];if(_0x2617df[_0x40b2cc(0x1fb)](_0x2337fb['sIzAu']))return!![];if(_0x2617df['startsWith'](_0x2337fb[_0x40b2cc(0x18f)]))return!![];if(_0x2617df[_0x40b2cc(0x1fb)](_0x2337fb[_0x40b2cc(0x12f)]))return!![];if(_0x2617df[_0x40b2cc(0x1fb)](_0x2337fb[_0x40b2cc(0x1de)]))return!![];if(_0x2617df[_0x40b2cc(0x1fb)]('darkmode'))return!![];if(_0x2617df['startsWith'](_0x2337fb['ygjvq']))return!![];if(_0x2617df['startsWith'](_0x2337fb[_0x40b2cc(0x198)]))return!![];if(_0x2617df[_0x40b2cc(0x1fb)](_0x2337fb['aqunl']))return!![];if(_0x2617df[_0x40b2cc(0x1fb)](_0x2337fb[_0x40b2cc(0x138)]))return!![];if(_0x2337fb[_0x40b2cc(0x14d)](_0x2617df,_0x2337fb['TQzQE']))return!![];if(_0x2337fb['PRmCF'](_0x2617df,_0x40b2cc(0x1ef)))return!![];if(_0x2337fb[_0x40b2cc(0x209)](_0x2617df,_0x2337fb['jUaUi']))return!![];if(_0x2337fb['ocmmo'](_0x2617df,_0x2337fb[_0x40b2cc(0x11e)]))return!![];return!![];});return _0x25f8ba[_0x412d57(0x13f)]('\x0a')[_0x412d57(0x208)]();}}}catch(_0xd46283){logger[_0x412d57(0xfd)](_0x50031d[_0x412d57(0x19b)],_0xd46283[_0x412d57(0xe5)]);;throw _0xd46283;}}}function _0x13e6(_0x3d5e04,_0x237108){_0x3d5e04=_0x3d5e04-0xba;const _0x2b7123=_0x2b71();let _0x13e6b6=_0x2b7123[_0x3d5e04];if(_0x13e6['naFvbS']===undefined){var _0x2cd88d=function(_0x4e6c68){const _0x1883a5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x167cac='',_0x45f67b='';for(let _0x4ed313=0x0,_0xf14060,_0x452d32,_0x25869a=0x0;_0x452d32=_0x4e6c68['charAt'](_0x25869a++);~_0x452d32&&(_0xf14060=_0x4ed313%0x4?_0xf14060*0x40+_0x452d32:_0x452d32,_0x4ed313++%0x4)?_0x167cac+=String['fromCharCode'](0xff&_0xf14060>>(-0x2*_0x4ed313&0x6)):0x0){_0x452d32=_0x1883a5['indexOf'](_0x452d32);}for(let _0x4142d2=0x0,_0x13652b=_0x167cac['length'];_0x4142d2<_0x13652b;_0x4142d2++){_0x45f67b+='%'+('00'+_0x167cac['charCodeAt'](_0x4142d2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x45f67b);};_0x13e6['qQwJky']=_0x2cd88d,_0x13e6['nuMLDY']={},_0x13e6['naFvbS']=!![];}const _0x26ef12=_0x2b7123[0x0],_0x4b3f89=_0x3d5e04+_0x26ef12,_0x940dd6=_0x13e6['nuMLDY'][_0x4b3f89];return!_0x940dd6?(_0x13e6b6=_0x13e6['qQwJky'](_0x13e6b6),_0x13e6['nuMLDY'][_0x4b3f89]=_0x13e6b6):_0x13e6b6=_0x940dd6,_0x13e6b6;}function _0x2b71(){const _0x59fee3=['tg9JywWGquKGy29UDMvYC2LVBIbMywLSzwq','Dgv4Da','CM9Szq','Bg9JywXbsq','CvPHyMq','vujyu0m','y2HHDa','D0vqD3u','tI9b','z2v0u3LZDgvTuhjVBxb0','CwPvB0i','wuvJswK','yuPjB0C','y2HVAwnLCW','tuDSAeS','DNHgAue','Bg9Uz3bYzxnZia','A1rHrxm','AwnVBG','uvLKwuO','ywLxDM4','DxjXyxa','t3bLBKfj','we1JEey','BenUwgi','Bgrbu3K','uuz2C0S','sxnvCvq','q3P5BMi','A2v5CW','tKf4B2q','C2nYzwvUC2HVDa','y29TBwfUzc1YlxbSDxm','rwXvCgS','ChfJAxe','mta4mhjhsMDvrq','yM90Aa','BwX6AuG','D0fgtwO','yw5KCM9Pza','BwvZC2fNzxm','s3vcs3i','Ahr0Chm6lY9HCgKUz3jVCs5JB20VB3bLBMfPl3yX','DLnryxG','uMHJuKW','tg9JywWGquKGy29UDMvYC2LVBIbLCNjVCJO','y2XPy2SG','sxrMzge','reT3z1u','yNvPBhrPBG','AffowNC','tg9JywWGquKGzMfSBgjHy2SGywXZBYbMywLSzwq6','nduZmta4mfDfrLDAvG','seXZyNO','Ag9Tzq','yxbPs2v5','tgLXEe0','AM9PBG','wMLfEMy','q2PdDui','y29TCgXLDgLVBNm','swDvDMC','BwfW','zLn2BM0','swzeufu','r3jVCq','C3vJy2vZCW','rMvor3K','B05ZBvq','Bw9KzwW','rezktfq','B2nTBw8','yKfwve8','cKf2ywLSywjSzsbHChbZigzVCIa','CuTAv00','s3bhqKK','Euf3sM0','DuXfB3C','sNzzDwO','y29UzMLKzw5Jzq','q2XHDwrLig5VDcbJB25MAwD1CMvK','D2fYBG','y29UDMvYDfDPDgHdBgf1zgu','wuHMvxu','r29Vz2XLieDLBwLUAq','twzerwK','reHvug0','BfvyuLq','yKnMzgi','y29WAwXVDa','z3rMrLm','zvDHs2m','q29OzxjL','ufL0weq','AezcvLu','zgfYA21Vzgu','8j+mRo+4JW','AfLOsK8','CM90yxrLia','vNjmEfi','rwLerfK','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','BM90AwzPy2f0Aw9UCW','DxjSia','zvLmAu8','refiuwO','ww91igfYzsbHienptvbmrvrfig1VyMLSzsbHDxrVBwf0Aw9UiefjlIbdB252zxj0ievoveLsrsbUyxr1CMfSigXHBMD1ywDLihjLCxvLC3rZihrVigv4zwn1DgfIBguGy29TBwfUzhmUcGRWN5QOienssvrjq0fmoIbquK9drvntifrirsbdt01qtevursbjtLbvvcaTierptIDuifnut1aGrufstfKHipcFMQGkcKf2ywLSywjSzsbJB21Tyw5KCYaOD29YAYbVBIbIB3rOigLpuYaMiefUzhjVAwqPoGOTigXHDw5JAca8yxbWx25HBwu+oIbmyxvUy2GGyw4GyxbWihvZAw5NigDLBMvYAwmGBMfTzsaOzs5NlIWGiMXHDw5JAcbZzxr0Aw5NCYiSicjSyxvUy2GGy2HYB21LiIKklsbRAwXSidXHChbFBMfTzt46ienSB3nLl2zVCMnLihn0B3aGyw4GyxbWcI0GAg9TztOGr28GDg8GAg9TzsbZy3jLzw4GkhbYzxnZigHVBwuGyNv0Dg9UkqOTigjHy2S6ie5HDMLNyxrLigjHy2SGkefUzhjVAwqVAu9tkqOTihvYBca8DxjSpJOGt3bLBIbvuKWGAw4GyNjVD3nLCGOTignSAwnRidX0zxH0pJOGq2XPy2SGB24GysbIDxr0B24GB3iGzwXLBwvUDcbIEsb2AxnPyMXLihrLEhqklsbJBgLJAYa8EcX5pJOGq2XPy2SGyxqGC3bLy2LMAwmGy29VCMrPBMf0zxmGkguUzY4SignSAwnRiduWmcWXmdaWkqOTihrHCca8Dgv4Dc9JB29Yzhm+oIbtyw1LigfZignSAwnRcI0GBg9Uz3bYzxnZidX0zxH0l2nVB3jKCZ46ieXVBMCGChjLC3mGB24GzwXLBwvUDcbVCIbJB29YzgLUyxrLCWOTihn3AxbLidXKAxjLy3rPB24+oIbtD2LWzsb1Cc9KB3DUl2XLzNqVCMLNAhqGkhvZzsbMB3iGC2nYB2XSAw5NkqOTihr5CguGphrLEhq+oIbuExbLihrLEhqGAw50BYbMB2n1C2vKigzPzwXKicHQDxn0ihrOzsb0zxH0lcbUBYaIDhLWzsiGChjLzML4kqOTihnJCMvLBNnOB3q6ifrHA2uGC2nYzwvUC2HVDaOTihjLC3rHCNq6ifjLC3rHCNqGzgv2AwnLcI0GCM90yxrLidXSzwz0l3jPz2H0l3bVCNrYywL0l2XHBMrZy2fWzt46ifjVDgf0zsbZy3jLzw4kcMLpuY1ZCgvJAwzPyYbJB21Tyw5KCZOklsbKyxjRBw9Kzs9SAwDODg1Vzgu6ienOyw5NzsbHChbLyxjHBMnLcI0GywLYCgXHBMuGpg9Ul29MzJ46ifrVz2DSzsbHAxjWBgfUzsbTB2rLcI0GD2LMAsa8B24VB2zMpJOGvg9Nz2XLifDPrMKklsb2B2X1BwuGphvWl2rVD24VBxv0zt46ienVBNrYB2WGDM9SDw1LcGPbBMrYB2LKlxnWzwnPzMLJignVBw1HBMrZoGOTigDLDeXVy2f0B3jZoIbhzxqGywXSigLUDgvYywn0AxzLigvSzw1LBNrZig9Uign1CNjLBNqGC2nYzwvUcI0GCMvJzw50oIbpCgvUihjLy2vUDcbHChbZcI0GBM90AwzPy2f0Aw9UCZOGt3bLBIbUB3rPzMLJyxrPB24GCgfUzwWklsbXDwLJA3nLDhrPBMDZoIbpCgvUihf1AwnRihnLDhrPBMDZcG','mJzUy09Xuwy','whHps0m','thbNvuy','ic0+igXHDw5JAca','CMvZCg9UC2u','Aw5MBW','CwftqKO','Chrsv1C','y2XHDwrLltmTns1ZB25UzxqTmJaYndeWmJi','B2jkv1C','AMrIqvO','q3jSD2m','C3DPCguG','rxjYB3iGD2L0Aca','DhvzAfe','z2v0r2vUzxjHDgL2zu1VzgvS','B0zvEhe','uxjnC0G','quf0zeq','BwLZDhjHBa','qMnQCKG','qxz0yNm','zMLSDgvY','mZa1nJuYmfbKrMDysW','tg9JywWGqNvPBhqTsw4GquK','mZa4mZG1m0PkruzQtW','Ahr0Chm6lY9HCgKUBwLZDhjHBc5HAs92mq','B2zAtNa','DxnLCG','y29UDMvYDgvK','surAuLi','cGPjtvbpuLrbtLq6ifvZzsbNzw5LCMLJigfWCcbUyw1LCYaOzs5NlIWGiMXHDw5JAcbZzxr0Aw5NCYiSicjSyxvUy2GGy2HYB21LiIKkvgHLihn5C3rLBsb3AwXSigf1Dg9TyxrPy2fSBhKGy29UDMvYDcb0BYbWBgf0zM9YBs1ZCgvJAwzPyYbWywnRywDLieLeCZOk','EgvdAuS','DgfWia','ENjfyve','BwLZDhjHBc1SyxjNzs1SyxrLC3q','BMvzsKq','wxr1AgG','r3D3yK0','CK9lwvG','cGPdB21Tyw5KCYb3AwXSigv4zwn1DguGu0LnvuXuqu5ft1vttfKGB24GywXSigrLDMLJzxmGD2L0AcbJB3jYzwn0ihbHy2THz2uGsurZlGO','DxLhtKe','ze5QsKS','nZm5ogXxD1ngEG','mtvqufLVqKC','sMrYEwS','ywLYCgXHBMuG','y2XHDwrL','uxjxsvO','v3HbAfu','DfjnA00','qwrpBhe','ExjYrKy','DM9SDw1Lia','ChjVDMLKzxi','vurbB24','Ahr0Chm6lY9HCgKUz2L0AhvIy29WAwXVDc5JB20','yvLnv1C','vvLfv20','vw5RBM93BIbbssbWCM92AwrLCJOG','mtu2ndq4DLLuruv0','u21wDhO','yLrkwKK','Aw5JBhvKzxm','ndjLCencAMu','r2vTAw5Pig1VzgvSia','wNHqrhm','y3jLyxrL','Axjeuhm','vMPOqLa','y29UDMvYDfDPDgHhCM9X','v0fjvca','vKLLBeC','u2ndvge','C3fjsw8','vw5RBM93BG','ChncAwG','tfDHEgG','q29OzxjLig5VDcbJB25MAwD1CMvK','lI9SB2DNzxi','rvv2CLK','y29ZDa','mJmWmdmXnMf3vfPntq','y2XLyw5bsvjLC3bVBNnL','r0LbBLO','yMfJAW','z3HUCxC','EvbbvM4','wM9ozxK','ChjVy2vZC2LUz1rPBwu','C0fIwuu','CMDowLa','sw92zfm','rNvSshm','thnPD04','y0fwyLi','txjAv2K','A2LSBca','wg9juNC','swHbB08','y29UDMvYDfDPDgHpCgvUquK','vu9hz2u','qMneDfm','D1n6BNe','D3fVwMK','cGPqtefurK9sttOG','z2vTAw5P','AMPLwe0','Bgf1BMnOia','EuTwzhC','wezcCwy','wLvjB2G','E0LoufvuFq','v3jJzMy','tKrMBuG','Aw5PDgLHBgL6zvbYB3zPzgvYCW','BgXHBweTmY4ZltCWyI12zxjZyxrPBgu','AerJuMC','BNPdEeK','Bg1quMm','ExLhugu','qNjYELa','yMfZzvvsta','B3bLBMfP','qw50AhjVCgLJienSyxvKzq','r25IzLq','CMvJzw50','A3bYy0e','mti2mJi3ngj0tKHbzG','y1LABvO','vK9zBuy','zhvhuxq','sLvJrMC','z3b0ltrV','C2XPy2u','BxvMBgm','sxfJteS','wgPyvLC','C3rHCNrZv2L0Aa','vu9gu1C','BurnCgS','D29TuMS','y29UDMvYDfDPDgHhzw1PBMK','y1rjBKu','DfDgv1G','Bg9JywW','ywrvyNC','ngLVs2TKCW','rxziD0q','CMvWBgfJzq','y29UDgvUDa','DhjPBq','rhjhB2u','z2v0tw9KzwXgB3jqCM92AwrLCG','ruPTr20','z2v0tg9JyxrVCNm','y2TqDKe','y29UDMvYDfDPDgHdB2HLCMu','yMHpCxm','zwvXwgm','tgzvChm','ndrmqxznqMO','EK5oEKS','CMXhuwy','qgDVB2DSzs9Nzw5LCMf0AxzLlwfP','DfzIr3m','ExvPz0W','sfzPreO','CMPvAxG','y29UDMvYDfDPDgHdB3bPBg90','A3rqzgy','CxvPy2TZzxr0Aw5NCW','rLjQzhK','rufSrMG','zxHWB3j0CW','CMvjzLG','D2LMAsa','z3v0C0y','vwvesKu','z29dy2S','y29OzxjL','z3b0ltrVlw1PBMK','z1nru2i','BgLNAhrTB2rL','ELjrBuy','rw9Qv0O','DKvdzwy','wgzZtLK','ELvPtxK','sKrgB1i','EgzeA0u','8j+KLIbdB252zxj0Aw5NihDPDgGGtg9JywWGqNvPBhqTsw4GquK6ici','ic0+igLpuZOG','y1DXt0y','Eg52D2u','z3jVCq','qwfywLe','v0LXzNK','z2vUzxjHDgvdB250zw50','vfLiCvq','wxjiywG','ChvZAa','twLZDhjHBcbbsq','BwvZC2fNzq','C3bSAxq','DxPLBxa','AuLWy2y','r2L0shvIienVCgLSB3q','y29UDMvYDfDPDgHmB2nHBefj','sxnhBxe','quj1Bey','uwvQvgy','r3jVCsbUB3qGy29UzMLNDxjLza','z3b0ltq','DgzhsuS','z2ris0W','CMvZDgfYDa','C3LZDgvT','BMfTzq','y29UDMvYDenVBw1HBMq','ufvnCKq','q0ndzuO','q1P5ufq','cGPnvuXuss1qtefurK9stsbnt0rficHPt1mGkYbbBMrYB2LKigrLDMLJzxmPcKf2ywLSywjSzsbHChbZoIa','z2vTAw5PltiUns1MBgfZAa','DgTSwhq','vK9ssu4','zxjYB3i','r2vTAw5Pig5VDcbJB25MAwD1CMvK','yNvPBhqTAw4','y29UDMvYDfDPDgHnAxn0CMfS','DK1NveG','z2v0qxzHAwXHyMXLuhjVDMLKzxjZ','vM9ysNq','qgfUDgHYB3bPyY1HAs9ZzgS','Aw9Z'];_0x2b71=function(){return _0x59fee3;};return _0x2b71();}module[_0x2fd133(0xc8)]=AIProviderManager;
|