@evomap/evolver-proxy 2.0.23 → 2.0.25
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/dist/bin/evolver-proxy.js +56 -1
- package/dist/daemon/proxyDaemon.d.ts +9 -0
- package/dist/daemon/proxyDaemon.js +224 -13
- package/dist/lifecycle/claimNudge.js +1 -1
- package/dist/lifecycle/deployGuard.js +1 -1
- package/dist/lifecycle/legacyNodeId.js +1 -1
- package/dist/lifecycle/manager.js +1 -1
- package/dist/llm/bodyCapture.js +1 -1
- package/dist/llm/index.js +1 -1
- package/dist/llm/server.js +1 -1
- package/dist/llm/traceBackfill.js +1 -1
- package/dist/llm/traceConfig.js +1 -1
- package/dist/llm/traceControl.js +1 -1
- package/dist/llm/traceEnvelope.js +1 -1
- package/dist/llm/traceSink.js +1 -1
- package/dist/llm/traceUploadPayload.js +1 -1
- package/dist/llm/upstream.js +1 -1
- package/dist/router/cachePassthrough.js +1 -1
- package/dist/router/features.js +1 -1
- package/dist/router/index.js +1 -1
- package/dist/router/messagesRoute.js +1 -1
- package/dist/router/modelRouter.js +1 -1
- package/dist/router/providerRoutes.js +1 -1
- package/dist/router/sseScan.js +1 -1
- package/dist/selfUpdate/builtinKey.d.ts +4 -2
- package/dist/selfUpdate/builtinKey.js +4 -2
- package/dist/selfUpdate/unixController.js +3 -1
- package/dist/selfUpdate/windowsController.js +3 -1
- package/dist/sync/engine.js +1 -1
- package/package.json +3 -3
|
@@ -4,7 +4,7 @@ import { readFileSync, realpathSync, rmSync } from 'node:fs';
|
|
|
4
4
|
import { homedir } from 'node:os';
|
|
5
5
|
import { join, resolve } from 'node:path';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
|
-
import { bootstrap as coreBootstrap, daemon, hub as hubNs, mailbox, util } from '@evomap/evolver-core';
|
|
7
|
+
import { bootstrap as coreBootstrap, daemon, hub as hubNs, mailbox, util, verify } from '@evomap/evolver-core';
|
|
8
8
|
import { AtpHubClient, connectPublicHub, globalFetchLike, isNodeSecret, parseNodeSecretVersion } from '@evomap/evolver-adapter-public';
|
|
9
9
|
import { ProxyDaemon } from '../daemon/proxyDaemon.js';
|
|
10
10
|
import { resolveHubMode, resolveHubUrl } from '../daemon/selectHub.js';
|
|
@@ -382,6 +382,7 @@ export function proxyUsage(command = 'evolver-proxy') {
|
|
|
382
382
|
'',
|
|
383
383
|
'Useful options are configured through env or EVOLVER_ENV_FILE:',
|
|
384
384
|
' EVOLVER_IPC_PORT, EVOLVER_IPC_TOKEN, EVOLVER_PROXY_SETTINGS_FILE',
|
|
385
|
+
' EVOLVER_NATIVE_PUBLISH_VERIFIER=1, EVOLVER_PUBLISH_VALIDATION_ROOT=<dir> (必须显式设置)',
|
|
385
386
|
' EVOLVER_SELF_UPDATE, EVOLVER_LLM_TRACE_CAPTURE_BODIES',
|
|
386
387
|
'',
|
|
387
388
|
].join('\n');
|
|
@@ -656,6 +657,7 @@ export function createProxyDaemonDeps(options) {
|
|
|
656
657
|
const env = options.env ?? process.env;
|
|
657
658
|
const traceBackfill = resolveTraceBackfillConfig(env);
|
|
658
659
|
const heartbeatIntervalMs = positiveIntegerEnv(env['HEARTBEAT_INTERVAL_MS']);
|
|
660
|
+
const publishExecutionVerifier = resolveNativePublishExecutionVerifier(env);
|
|
659
661
|
return {
|
|
660
662
|
hub: options.runtime.hub,
|
|
661
663
|
...(options.hubMode ? { hubMode: options.hubMode } : {}),
|
|
@@ -673,6 +675,59 @@ export function createProxyDaemonDeps(options) {
|
|
|
673
675
|
...(options.runtime.helloMode ? { helloMode: options.runtime.helloMode } : {}),
|
|
674
676
|
...(selfUpdate ? { selfUpdate } : {}),
|
|
675
677
|
...(traceBackfill ? { traceBackfill } : {}),
|
|
678
|
+
...(publishExecutionVerifier ? { publishExecutionVerifier } : {}),
|
|
679
|
+
};
|
|
680
|
+
}
|
|
681
|
+
/**
|
|
682
|
+
* 仅在显式启用且具备完整 OS 隔离时接入本地发布验证器;默认仍保持 draft-only。
|
|
683
|
+
* 这样不会把普通桌面进程意外变成可发布执行器,也不会在 Windows/macOS 上静默降级为弱隔离。
|
|
684
|
+
*/
|
|
685
|
+
function resolveNativePublishExecutionVerifier(env) {
|
|
686
|
+
if (env['EVOLVER_NATIVE_PUBLISH_VERIFIER']?.trim() !== '1')
|
|
687
|
+
return undefined;
|
|
688
|
+
// 原生发布验证器只能在完整的 OS 隔离可用时装配。Windows/macOS 目前没有
|
|
689
|
+
// 与 Linux namespace、只读文件系统和 cgroup 等价的实现,必须保持 draft-only,
|
|
690
|
+
// 不能先暴露一个运行时必然失败的“验证器”能力。
|
|
691
|
+
try {
|
|
692
|
+
if (!verify.readOnlyIsolationAvailable())
|
|
693
|
+
return undefined;
|
|
694
|
+
}
|
|
695
|
+
catch {
|
|
696
|
+
// 隔离探测本身失败也必须保持 fail-closed,而不能阻止代理启动。
|
|
697
|
+
return undefined;
|
|
698
|
+
}
|
|
699
|
+
// 发布验证必须绑定到调用方明确配置的项目根目录;回退到 daemon 当前目录会让验证对象与发布对象脱钩。
|
|
700
|
+
const configuredRoot = env['EVOLVER_PUBLISH_VALIDATION_ROOT']?.trim();
|
|
701
|
+
if (!configuredRoot)
|
|
702
|
+
return undefined;
|
|
703
|
+
const validationRoot = resolve(configuredRoot);
|
|
704
|
+
return async (input, signal) => {
|
|
705
|
+
const commands = Array.isArray(input.validation)
|
|
706
|
+
? input.validation.filter((value) => typeof value === 'string').map((value) => value.trim()).filter(Boolean)
|
|
707
|
+
: [];
|
|
708
|
+
if (commands.length === 0
|
|
709
|
+
|| commands.length > 8
|
|
710
|
+
|| !Array.isArray(input.validation)
|
|
711
|
+
|| input.validation.length !== commands.length
|
|
712
|
+
|| commands.some((command) => command.length > 180
|
|
713
|
+
|| !verify.isValidationCommandAllowed(command)
|
|
714
|
+
|| verify.sanitizeExecutionCommand(command).blocked)
|
|
715
|
+
|| signal.aborted)
|
|
716
|
+
return null;
|
|
717
|
+
const result = await verify.runSandboxedValidation(commands, validationRoot, {
|
|
718
|
+
requireIsolation: true,
|
|
719
|
+
signal,
|
|
720
|
+
});
|
|
721
|
+
if (signal.aborted || !result.passed || result.results.length !== commands.length)
|
|
722
|
+
return null;
|
|
723
|
+
return {
|
|
724
|
+
validation: commands,
|
|
725
|
+
trace: result.results.map((row) => ({
|
|
726
|
+
command: row.cmd,
|
|
727
|
+
exit: row.exitCode ?? 1,
|
|
728
|
+
...(row.stdoutSummary ? { summary: row.stdoutSummary } : {}),
|
|
729
|
+
})),
|
|
730
|
+
};
|
|
676
731
|
};
|
|
677
732
|
}
|
|
678
733
|
function positiveIntegerEnv(value) {
|
|
@@ -6,6 +6,7 @@ import type { AtpOrderConsentGate } from './atpConsent.js';
|
|
|
6
6
|
import { type PublishRecallVerifierPort } from './publishRecallVerifier.js';
|
|
7
7
|
type HubCapability = hubNs.HubCapability;
|
|
8
8
|
type AssetStoreProvider = assetstore.AssetStoreProvider;
|
|
9
|
+
type ConversationDistillExecutionVerifier = (input: hubNs.ConversationDistillInput, signal: AbortSignal) => Promise<hubNs.ConversationDistillVerifiedExecution | null>;
|
|
9
10
|
export declare const DEFAULT_IPC_PORT = 19820;
|
|
10
11
|
export interface ProxyDaemonDeps {
|
|
11
12
|
hub: HubCapability;
|
|
@@ -75,6 +76,12 @@ export interface ProxyDaemonDeps {
|
|
|
75
76
|
publishRecallVerifier?: PublishRecallVerifierPort;
|
|
76
77
|
/** Optional deterministic sanitizer environment for composition tests. Production omits this to scan process.env. */
|
|
77
78
|
publishSanitizeEnv?: Record<string, string | undefined>;
|
|
79
|
+
/**
|
|
80
|
+
* 宿主专属的真实执行验证器。缺失时,conversation distill 只能返回草稿,绝不持久化或排队发布。
|
|
81
|
+
*/
|
|
82
|
+
publishExecutionVerifier?: ConversationDistillExecutionVerifier;
|
|
83
|
+
/** 验证器响应的硬超时,防止发布请求因宿主执行器挂起而永久占用连接。 */
|
|
84
|
+
publishExecutionVerifierTimeoutMs?: number;
|
|
78
85
|
}
|
|
79
86
|
export interface ProxyTickReport {
|
|
80
87
|
outbound: OutboundResult;
|
|
@@ -180,6 +187,8 @@ export declare class ProxyDaemon {
|
|
|
180
187
|
private scheduledForceUpdateKey;
|
|
181
188
|
private traceBackfillDraining;
|
|
182
189
|
private loopWakeHandler;
|
|
190
|
+
/** 守护进程停止时取消宿主验证。 */
|
|
191
|
+
private publishAbortController;
|
|
183
192
|
constructor(deps: ProxyDaemonDeps);
|
|
184
193
|
/**
|
|
185
194
|
* core handler(确定性, 不经 agent): 目前只接 force_update(#108). 其他 core 类型(asset_publish_result/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash, randomUUID } from 'node:crypto';
|
|
2
2
|
import { dirname, join } from 'node:path';
|
|
3
|
-
import { mailbox, hub as hubNs, shadow as shadow_, assetstore, wire, util } from '@evomap/evolver-core';
|
|
3
|
+
import { mailbox, hub as hubNs, shadow as shadow_, assetstore, wire, util, verify } from '@evomap/evolver-core';
|
|
4
4
|
import { AuthError, HubClientError, HubUnreachableError } from '@evomap/evolver-adapter-public';
|
|
5
5
|
import { SyncEngine, SYNC_INTERVALS } from '../sync/engine.js';
|
|
6
6
|
import { LifecycleManager } from '../lifecycle/manager.js';
|
|
@@ -10,6 +10,7 @@ import { backfillProxyTraceUploads } from '../llm/traceBackfill.js';
|
|
|
10
10
|
import { hubAuthFailureHint } from './selectHub.js';
|
|
11
11
|
import { CollaborationFacade } from './collaborationFacade.js';
|
|
12
12
|
import { PublishRecallVerifier, resolvePublishRecallConfig, } from './publishRecallVerifier.js';
|
|
13
|
+
const DEFAULT_PUBLISH_EXECUTION_VERIFY_TIMEOUT_MS = 30_000;
|
|
13
14
|
export const DEFAULT_IPC_PORT = 19820;
|
|
14
15
|
// V1 local-proxy compatibility contract; independent of the V2 mailbox envelope schema.
|
|
15
16
|
const PROXY_PROTOCOL_VERSION = '0.1.0';
|
|
@@ -35,6 +36,27 @@ const SYNC_ASSET_SUBMIT_TYPE_RANK = {
|
|
|
35
36
|
const SYNC_ASSET_SUBMIT_SCOPE_STATE_KEY = 'sync_asset_submit:idempotency_scope:v1';
|
|
36
37
|
const SYNC_ASSET_SUBMIT_DIRECT_RETRY_GRACE_MS = 30_000;
|
|
37
38
|
const DEFAULT_SYNC_ASSET_SUBMIT_RESPONSE_TIMEOUT_MS = 15_000;
|
|
39
|
+
function withSynchronousPublishStatus(value, publishStatus) {
|
|
40
|
+
const body = isRecordValue(value) ? { ...value } : { receipt: value };
|
|
41
|
+
return { ...body, publish_status: publishStatus, queued: false };
|
|
42
|
+
}
|
|
43
|
+
function legacySynchronousResultStatus(result) {
|
|
44
|
+
if (result.ok)
|
|
45
|
+
return 'accepted';
|
|
46
|
+
// 202 表示兼容层已持久化但尚未完成;校验或终态/传输失败即使在 mailbox
|
|
47
|
+
// 中保留可重试意图,聚合仍归类为 failed。
|
|
48
|
+
return result.statusCode === 202 || result.error === 'publish_pending' ? 'pending' : 'failed';
|
|
49
|
+
}
|
|
50
|
+
function summarizeLegacySynchronousResults(results) {
|
|
51
|
+
const statuses = new Set(results.map(legacySynchronousResultStatus));
|
|
52
|
+
// publish_status 表示聚合终态,而 queued 独立表示是否仍有 durable mailbox 工作。
|
|
53
|
+
// 因此 pending+failed 必须是 failed/true:不能掩盖失败,也不能谎报没有排队。
|
|
54
|
+
if (statuses.has('failed') || statuses.size === 0)
|
|
55
|
+
return { publishStatus: 'failed', queued: statuses.has('pending') };
|
|
56
|
+
if (statuses.has('pending'))
|
|
57
|
+
return { publishStatus: 'pending', queued: true };
|
|
58
|
+
return { publishStatus: 'accepted', queued: false };
|
|
59
|
+
}
|
|
38
60
|
class OutboundHubModeMismatchError extends Error {
|
|
39
61
|
retryable = true;
|
|
40
62
|
retryAfterMs = 1_000;
|
|
@@ -100,6 +122,8 @@ export class ProxyDaemon {
|
|
|
100
122
|
scheduledForceUpdateKey;
|
|
101
123
|
traceBackfillDraining = false;
|
|
102
124
|
loopWakeHandler;
|
|
125
|
+
/** 守护进程停止时取消宿主验证。 */
|
|
126
|
+
publishAbortController = new AbortController();
|
|
103
127
|
constructor(deps) {
|
|
104
128
|
this.deps = deps;
|
|
105
129
|
this.now = deps.now ?? (() => Date.now());
|
|
@@ -265,6 +289,8 @@ export class ProxyDaemon {
|
|
|
265
289
|
async start() {
|
|
266
290
|
if (this.started)
|
|
267
291
|
throw new Error('ProxyDaemon 已启动');
|
|
292
|
+
if (this.publishAbortController.signal.aborted)
|
|
293
|
+
this.publishAbortController = new AbortController();
|
|
268
294
|
try {
|
|
269
295
|
this.daemon.start();
|
|
270
296
|
this.ipc = new mailbox.MailboxIpcServer({
|
|
@@ -512,6 +538,9 @@ export class ProxyDaemon {
|
|
|
512
538
|
async stop() {
|
|
513
539
|
this.started = false;
|
|
514
540
|
this.lifecycleArmed = false;
|
|
541
|
+
if (!this.publishAbortController.signal.aborted) {
|
|
542
|
+
this.publishAbortController.abort(new Error('proxy_daemon_stopped'));
|
|
543
|
+
}
|
|
515
544
|
this.nextTickDueAt = undefined;
|
|
516
545
|
if (this.forceUpdateTimer) {
|
|
517
546
|
clearTimeout(this.forceUpdateTimer);
|
|
@@ -1029,17 +1058,66 @@ export class ProxyDaemon {
|
|
|
1029
1058
|
}
|
|
1030
1059
|
if (ctx.route === 'POST /conversation/distill') {
|
|
1031
1060
|
const body = (await ctx.readJson());
|
|
1061
|
+
const publishRequested = body['publish'] === true;
|
|
1062
|
+
const abortPublish = () => {
|
|
1063
|
+
if (ctx.signal?.aborted)
|
|
1064
|
+
return true;
|
|
1065
|
+
if (!this.publishAbortController.signal.aborted)
|
|
1066
|
+
return false;
|
|
1067
|
+
// 守护进程停止时仍需结束开放的响应,否则 IPC server.close() 会等待该连接而无法完成停机。
|
|
1068
|
+
if (!ctx.res.destroyed && !ctx.res.writableEnded) {
|
|
1069
|
+
// 'blocked' (not 'failed'): the request was never queued, it was intercepted by
|
|
1070
|
+
// shutdown; the 503 + error field already explains why.
|
|
1071
|
+
ctx.json(503, { error: 'proxy_shutting_down', publish_status: 'blocked', queued: false });
|
|
1072
|
+
}
|
|
1073
|
+
return true;
|
|
1074
|
+
};
|
|
1032
1075
|
if (hubModeMismatch(body.expected_hub_mode, this.deps.hubMode)) {
|
|
1033
1076
|
ctx.json(409, { error: 'proxy_hub_mode_mismatch' });
|
|
1034
1077
|
return true;
|
|
1035
1078
|
}
|
|
1036
|
-
|
|
1079
|
+
// 请求已取消时禁止继续生成或持久化发布草稿,避免把取消前的陈旧状态留下。
|
|
1080
|
+
if (publishRequested && abortPublish())
|
|
1081
|
+
return true;
|
|
1082
|
+
const verifiedExecution = publishRequested
|
|
1083
|
+
? await resolveVerifiedExecutionAfterPreflight(this.deps.publishExecutionVerifier, body, this.deps.publishExecutionVerifierTimeoutMs, [this.publishAbortController.signal, ...(ctx.signal ? [ctx.signal] : [])])
|
|
1084
|
+
: undefined;
|
|
1085
|
+
if (publishRequested && abortPublish())
|
|
1086
|
+
return true;
|
|
1087
|
+
const distill = await hubNs.distillConversation(body, {
|
|
1088
|
+
// 调用方明确要求持久化时,即使发布被证据或质量闸门拦截,也保留可审查草稿;永不因此进入队列。
|
|
1089
|
+
persist: body.persist === true,
|
|
1090
|
+
store: this.assetStore,
|
|
1091
|
+
...(verifiedExecution ? { verifiedExecution } : {}),
|
|
1092
|
+
});
|
|
1093
|
+
if (publishRequested && abortPublish())
|
|
1094
|
+
return true;
|
|
1037
1095
|
if (!distill.ok) {
|
|
1038
|
-
ctx.json(200, {
|
|
1096
|
+
ctx.json(200, {
|
|
1097
|
+
...distill,
|
|
1098
|
+
queued: false,
|
|
1099
|
+
submission: null,
|
|
1100
|
+
publish_status: publishRequested ? 'blocked' : 'not_requested',
|
|
1101
|
+
});
|
|
1039
1102
|
return true;
|
|
1040
1103
|
}
|
|
1041
1104
|
let submission = null;
|
|
1042
|
-
if (
|
|
1105
|
+
if (publishRequested) {
|
|
1106
|
+
if (abortPublish())
|
|
1107
|
+
return true;
|
|
1108
|
+
// 未达到可复用质量阈值的蒸馏结果仍可作为有用草稿,
|
|
1109
|
+
// 但不得进入出站发布队列。安全与内容完整性闸门保持严格,质量负责晋级。
|
|
1110
|
+
if (distill.publishable !== true) {
|
|
1111
|
+
const reason = distill.quality.ok && verifiedExecution === undefined ? 'execution_evidence' : 'quality_gate';
|
|
1112
|
+
ctx.json(200, {
|
|
1113
|
+
...distill,
|
|
1114
|
+
queued: false,
|
|
1115
|
+
submission: null,
|
|
1116
|
+
publish_blocked: reason,
|
|
1117
|
+
publish_status: 'blocked',
|
|
1118
|
+
});
|
|
1119
|
+
return true;
|
|
1120
|
+
}
|
|
1043
1121
|
const env = mailbox.createEnvelope({
|
|
1044
1122
|
type: 'asset_submit',
|
|
1045
1123
|
payload: {
|
|
@@ -1059,7 +1137,12 @@ export class ProxyDaemon {
|
|
|
1059
1137
|
this.notifyNewOutbound();
|
|
1060
1138
|
submission = { id: env.id, message_id: env.id, receiptId: r.receiptId, status: 'pending', stored: r.stored };
|
|
1061
1139
|
}
|
|
1062
|
-
ctx.json(200, {
|
|
1140
|
+
ctx.json(200, {
|
|
1141
|
+
...distill,
|
|
1142
|
+
queued: submission !== null,
|
|
1143
|
+
submission,
|
|
1144
|
+
publish_status: publishRequested ? 'queued' : 'not_requested',
|
|
1145
|
+
});
|
|
1063
1146
|
return true;
|
|
1064
1147
|
}
|
|
1065
1148
|
if (ctx.route === 'POST /agent/search') {
|
|
@@ -1207,23 +1290,37 @@ export class ProxyDaemon {
|
|
|
1207
1290
|
});
|
|
1208
1291
|
}
|
|
1209
1292
|
async publishAssetSubmitSynchronously(ctx, items, composeRecipe = true) {
|
|
1293
|
+
const abortSynchronousPublish = () => {
|
|
1294
|
+
if (ctx.signal?.aborted)
|
|
1295
|
+
return true;
|
|
1296
|
+
if (!this.publishAbortController.signal.aborted)
|
|
1297
|
+
return false;
|
|
1298
|
+
if (!ctx.res.destroyed && !ctx.res.writableEnded) {
|
|
1299
|
+
ctx.json(503, { error: 'proxy_shutting_down', publish_status: 'failed', queued: false });
|
|
1300
|
+
}
|
|
1301
|
+
return true;
|
|
1302
|
+
};
|
|
1210
1303
|
const classified = classifySynchronousAssetSubmit(items);
|
|
1211
1304
|
if (!classified.ok) {
|
|
1212
1305
|
ctx.json(422, { error: classified.error, code: 'invalid_asset_submit' });
|
|
1213
1306
|
return;
|
|
1214
1307
|
}
|
|
1215
1308
|
if (classified.kind === 'wire') {
|
|
1309
|
+
if (abortSynchronousPublish())
|
|
1310
|
+
return;
|
|
1216
1311
|
const envelope = this.createSynchronousAssetSubmitEnvelope(classified.bundle, undefined, ctx.now, composeRecipe);
|
|
1217
1312
|
this.writeSynchronousAssetSubmitOutcome(ctx, await this.publishSynchronousBundle(envelope));
|
|
1218
1313
|
return;
|
|
1219
1314
|
}
|
|
1220
1315
|
const results = [];
|
|
1221
1316
|
for (const item of classified.items) {
|
|
1222
|
-
const converted = await convertLegacyLooseAsset(item);
|
|
1317
|
+
const converted = await convertLegacyLooseAsset(item, this.deps.publishExecutionVerifier, this.deps.publishExecutionVerifierTimeoutMs, ctx.signal, this.publishAbortController.signal);
|
|
1223
1318
|
if (!converted.ok) {
|
|
1224
1319
|
results.push({ ok: false, error: converted.error, statusCode: 422 });
|
|
1225
1320
|
continue;
|
|
1226
1321
|
}
|
|
1322
|
+
if (abortSynchronousPublish())
|
|
1323
|
+
return;
|
|
1227
1324
|
const envelope = this.createSynchronousAssetSubmitEnvelope(converted.bundle, 'v1_loose_asset_compat', ctx.now, composeRecipe);
|
|
1228
1325
|
const outcome = await this.publishSynchronousBundle(envelope);
|
|
1229
1326
|
if (outcome.kind === 'accepted') {
|
|
@@ -1253,10 +1350,13 @@ export class ProxyDaemon {
|
|
|
1253
1350
|
});
|
|
1254
1351
|
}
|
|
1255
1352
|
}
|
|
1353
|
+
const summary = summarizeLegacySynchronousResults(results);
|
|
1256
1354
|
ctx.json(200, {
|
|
1257
1355
|
published: results.filter((result) => result.ok).length,
|
|
1258
1356
|
total: results.length,
|
|
1259
1357
|
results,
|
|
1358
|
+
publish_status: summary.publishStatus,
|
|
1359
|
+
queued: summary.queued,
|
|
1260
1360
|
});
|
|
1261
1361
|
}
|
|
1262
1362
|
createSynchronousAssetSubmitEnvelope(bundle, source, now, composeRecipe = true) {
|
|
@@ -1510,13 +1610,19 @@ export class ProxyDaemon {
|
|
|
1510
1610
|
}
|
|
1511
1611
|
writeSynchronousAssetSubmitOutcome(ctx, outcome) {
|
|
1512
1612
|
if (outcome.kind === 'accepted') {
|
|
1513
|
-
ctx.json(200, outcome.receipt);
|
|
1613
|
+
ctx.json(200, withSynchronousPublishStatus(outcome.receipt, 'accepted'));
|
|
1514
1614
|
}
|
|
1515
1615
|
else if (outcome.kind === 'failed') {
|
|
1516
|
-
ctx.json(outcome.statusCode, outcome.body);
|
|
1616
|
+
ctx.json(outcome.statusCode, withSynchronousPublishStatus(outcome.body, 'failed'));
|
|
1517
1617
|
}
|
|
1518
1618
|
else {
|
|
1519
|
-
ctx.json(202, {
|
|
1619
|
+
ctx.json(202, {
|
|
1620
|
+
status: 'pending',
|
|
1621
|
+
message_id: outcome.messageId,
|
|
1622
|
+
durable: true,
|
|
1623
|
+
publish_status: 'pending',
|
|
1624
|
+
queued: true,
|
|
1625
|
+
});
|
|
1520
1626
|
}
|
|
1521
1627
|
}
|
|
1522
1628
|
async handleAtpRoute(ctx) {
|
|
@@ -1760,14 +1866,119 @@ function isClearlyLegacyLooseAsset(value) {
|
|
|
1760
1866
|
return false;
|
|
1761
1867
|
return ['content', 'summary', 'strategy'].some((key) => Object.prototype.hasOwnProperty.call(value, key));
|
|
1762
1868
|
}
|
|
1763
|
-
async function
|
|
1869
|
+
async function resolveVerifiedExecution(verifier, input, expectedValidation, timeoutMs = DEFAULT_PUBLISH_EXECUTION_VERIFY_TIMEOUT_MS, parentSignals = []) {
|
|
1870
|
+
if (!verifier)
|
|
1871
|
+
return undefined;
|
|
1872
|
+
if (parentSignals.some((signal) => signal.aborted))
|
|
1873
|
+
return undefined;
|
|
1874
|
+
const boundedTimeout = Number.isSafeInteger(timeoutMs) && timeoutMs > 0
|
|
1875
|
+
? timeoutMs
|
|
1876
|
+
: DEFAULT_PUBLISH_EXECUTION_VERIFY_TIMEOUT_MS;
|
|
1877
|
+
const controller = new AbortController();
|
|
1878
|
+
let timer;
|
|
1879
|
+
let resolveAborted;
|
|
1880
|
+
const aborted = new Promise((resolve) => {
|
|
1881
|
+
resolveAborted = () => resolve(null);
|
|
1882
|
+
});
|
|
1883
|
+
const onParentAbort = () => {
|
|
1884
|
+
if (!controller.signal.aborted)
|
|
1885
|
+
controller.abort(new Error('publish_verification_aborted'));
|
|
1886
|
+
resolveAborted();
|
|
1887
|
+
};
|
|
1888
|
+
for (const signal of parentSignals)
|
|
1889
|
+
signal.addEventListener('abort', onParentAbort, { once: true });
|
|
1890
|
+
try {
|
|
1891
|
+
const timeout = new Promise((resolve) => {
|
|
1892
|
+
timer = setTimeout(() => {
|
|
1893
|
+
if (!controller.signal.aborted)
|
|
1894
|
+
controller.abort(new Error('publish_verification_timeout'));
|
|
1895
|
+
resolve(null);
|
|
1896
|
+
}, boundedTimeout);
|
|
1897
|
+
timer.unref?.();
|
|
1898
|
+
});
|
|
1899
|
+
const candidate = await Promise.race([verifier(input, controller.signal), timeout, aborted]);
|
|
1900
|
+
if (!candidate || !Array.isArray(candidate.trace) || candidate.trace.length === 0)
|
|
1901
|
+
return undefined;
|
|
1902
|
+
if (controller.signal.aborted)
|
|
1903
|
+
return undefined;
|
|
1904
|
+
if (candidate.trace.some((row) => (!row
|
|
1905
|
+
|| typeof row.command !== 'string'
|
|
1906
|
+
|| row.command.trim().length === 0
|
|
1907
|
+
|| !Number.isInteger(row.exit)
|
|
1908
|
+
|| row.exit !== 0)))
|
|
1909
|
+
return undefined;
|
|
1910
|
+
if (candidate.trace.length !== expectedValidation.length)
|
|
1911
|
+
return undefined;
|
|
1912
|
+
if (candidate.trace.some((row, index) => row.command.trim() !== expectedValidation[index]))
|
|
1913
|
+
return undefined;
|
|
1914
|
+
// Compare the authoritative raw receipt first, then cross the common execution-evidence outlet exactly once.
|
|
1915
|
+
// A command that required redaction no longer identifies the executed program and must not unlock publication.
|
|
1916
|
+
const sanitized = verify.sanitizeExecutionPayload({ ...candidate, validation: expectedValidation });
|
|
1917
|
+
return sanitized.blocked ? undefined : sanitized.value;
|
|
1918
|
+
}
|
|
1919
|
+
catch {
|
|
1920
|
+
return undefined;
|
|
1921
|
+
}
|
|
1922
|
+
finally {
|
|
1923
|
+
if (timer !== undefined)
|
|
1924
|
+
clearTimeout(timer);
|
|
1925
|
+
for (const signal of parentSignals)
|
|
1926
|
+
signal.removeEventListener('abort', onParentAbort);
|
|
1927
|
+
if (!controller.signal.aborted)
|
|
1928
|
+
controller.abort(new Error('publish_verification_complete'));
|
|
1929
|
+
}
|
|
1930
|
+
}
|
|
1931
|
+
function declaredValidationCommands(input) {
|
|
1932
|
+
const raw = input.validation ?? input.verification ?? (input.execution && typeof input.execution === 'object' && !Array.isArray(input.execution)
|
|
1933
|
+
? input.execution['validation']
|
|
1934
|
+
: undefined);
|
|
1935
|
+
if (!Array.isArray(raw) || raw.length === 0 || raw.length > 8)
|
|
1936
|
+
return undefined;
|
|
1937
|
+
const commands = raw.map((command) => typeof command === 'string' ? command.trim() : '');
|
|
1938
|
+
if (commands.some((command) => command.length === 0
|
|
1939
|
+
|| command.length > 180
|
|
1940
|
+
|| !verify.isValidationCommandAllowed(command)
|
|
1941
|
+
|| verify.sanitizeExecutionCommand(command).blocked)) {
|
|
1942
|
+
return undefined;
|
|
1943
|
+
}
|
|
1944
|
+
return commands;
|
|
1945
|
+
}
|
|
1946
|
+
async function resolveVerifiedExecutionAfterPreflight(verifier, input, timeoutMs, parentSignals = []) {
|
|
1947
|
+
if (!verifier)
|
|
1948
|
+
return undefined;
|
|
1949
|
+
if (parentSignals.some((signal) => signal.aborted))
|
|
1950
|
+
return undefined;
|
|
1951
|
+
const preflight = await hubNs.distillConversation(input, { persist: false });
|
|
1952
|
+
if (parentSignals.some((signal) => signal.aborted) || !preflight.ok || !preflight.quality.ok)
|
|
1953
|
+
return undefined;
|
|
1954
|
+
const validation = declaredValidationCommands(input);
|
|
1955
|
+
if (!validation)
|
|
1956
|
+
return undefined;
|
|
1957
|
+
// 只把通过质量与命令策略预检的最小验证输入交给宿主,绝不转发调用方的 execution/status/trace。
|
|
1958
|
+
return resolveVerifiedExecution(verifier, { validation }, validation, timeoutMs, parentSignals);
|
|
1959
|
+
}
|
|
1960
|
+
async function convertLegacyLooseAsset(value, verifyExecution, verifyExecutionTimeoutMs, ...parentSignals) {
|
|
1764
1961
|
const normalized = legacyLooseDistillInput(value);
|
|
1765
1962
|
if (!normalized.ok)
|
|
1766
1963
|
return normalized;
|
|
1767
1964
|
try {
|
|
1768
|
-
const
|
|
1769
|
-
|
|
1965
|
+
const verifiedExecution = await resolveVerifiedExecutionAfterPreflight(verifyExecution, normalized.input, verifyExecutionTimeoutMs, parentSignals.filter((signal) => signal !== undefined));
|
|
1966
|
+
const distilled = await hubNs.distillConversation(normalized.input, {
|
|
1967
|
+
persist: false,
|
|
1968
|
+
...(verifiedExecution ? { verifiedExecution } : {}),
|
|
1969
|
+
});
|
|
1970
|
+
if (!distilled.ok)
|
|
1770
1971
|
return { ok: false, error: `legacy_distill_${safeIdentifier(distilled.reason)}` };
|
|
1972
|
+
// Mirror the /conversation/distill route: a draft that passed the quality gate but was
|
|
1973
|
+
// blocked only by the missing host execution evidence must not be reported as a
|
|
1974
|
+
// quality-gate failure.
|
|
1975
|
+
if (distilled.publishable !== true) {
|
|
1976
|
+
return {
|
|
1977
|
+
ok: false,
|
|
1978
|
+
error: distilled.quality.ok && verifiedExecution === undefined
|
|
1979
|
+
? 'legacy_distill_execution_evidence'
|
|
1980
|
+
: 'legacy_distill_quality_gate',
|
|
1981
|
+
};
|
|
1771
1982
|
}
|
|
1772
1983
|
const gene = {
|
|
1773
1984
|
...distilled.gene,
|
|
@@ -1899,7 +2110,7 @@ function parseLegacyCategory(value) {
|
|
|
1899
2110
|
return { ok: false, error: 'legacy category is invalid' };
|
|
1900
2111
|
}
|
|
1901
2112
|
function deterministicDistilledAsset(asset) {
|
|
1902
|
-
const draft = { ...asset, asset_id: '' };
|
|
2113
|
+
const draft = wire.stripGeneHints({ ...asset, asset_id: '' });
|
|
1903
2114
|
// `_source` is local distiller provenance and is not part of the current GEP Gene schema.
|
|
1904
2115
|
// It also contains a wall-clock timestamp, so it must not influence compatibility asset ids.
|
|
1905
2116
|
delete draft['_source'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0xc73363=_0x1598;(function(_0x32f63c,_0x535ee1){const _0x237198=_0x1598,_0x4ba50f=_0x32f63c();while(!![]){try{const _0x1854d8=-parseInt(_0x237198(0x1d5,'\x32\x5b\x70\x31'))/(0x2260+-0x1*-0xbcd+-0x2e2c)+parseInt(_0x237198(0x20a,'\x61\x42\x49\x50'))/(-0x42*0x71+0x23f*-0xd+0x3a57)*(parseInt(_0x237198(0x219,'\x75\x65\x5e\x55'))/(0x1fad+-0xb33*-0x1+-0x2add*0x1))+parseInt(_0x237198(0x1d8,'\x4f\x50\x39\x57'))/(-0x3f5+0x8*-0x3e+0x11*0x59)*(-parseInt(_0x237198(0x200,'\x49\x51\x67\x30'))/(0x1d29+-0x9d*-0x1+-0x1dc1))+parseInt(_0x237198(0x204,'\x37\x50\x67\x71'))/(0x13a7+-0xad9+0x4*-0x232)+parseInt(_0x237198(0x218,'\x47\x51\x40\x55'))/(-0x2088+-0x72+0x2101)*(parseInt(_0x237198(0x229,'\x28\x45\x44\x37'))/(0x1e1b+-0x922*0x1+-0x14f1))+-parseInt(_0x237198(0x1fa,'\x21\x6f\x63\x29'))/(-0x1*0x51a+-0x127e+0x17*0x107)+parseInt(_0x237198(0x1f1,'\x55\x33\x31\x6e'))/(0xdef+-0x25f7+0x1812)*(parseInt(_0x237198(0x1fc,'\x61\x42\x49\x50'))/(0xfd*-0x14+-0xe6f+0x223e));if(_0x1854d8===_0x535ee1)break;else _0x4ba50f['push'](_0x4ba50f['shift']());}catch(_0x14f43f){_0x4ba50f['push'](_0x4ba50f['shift']());}}}(_0x4d7b,-0x1df*-0x16+-0xa*-0x30aa+0x45a3));const DEFAULT_COOLDOWN_MS=(-0x2252+0xc0+-0xc8*-0x2b)*(0x206e+0xa*0x17+-0x2118)*(0x1*-0x10c65+0xad1f+0x1*0x149a6),MIN_COOLDOWN_MS=-0x6e17*0x1+-0x1cc18+-0x3248f*-0x1,MAX_COOLDOWN_MS=(-0x1cf1+0x1478+0x897)*(-0xd*0x186+0x28b+0x3*0x5c9)*(0x1*0x87+-0x1d09*-0x1+-0x1d54)*(-0x2323+0x1*0xc293+-0x368*-0x16),MAX_STATE_ENTRIES=0x48*0x7+0x1e80+-0x2058,STATE_KEY=_0xc73363(0x1d0,'\x54\x4b\x61\x6d')+_0xc73363(0x1db,'\x48\x4a\x29\x6a')+_0xc73363(0x1cf,'\x57\x38\x5b\x6f'),CLAIM_CODE_RE=/^[A-Za-z0-9][A-Za-z0-9_-]{1,127}$/;export function createClaimNudge(_0x6bbfdc){const _0x33e7bd=_0xc73363,_0x549f10=_0x6bbfdc['\x65\x6e\x76']??process.env,_0x2b02fd=_0x6bbfdc[_0x33e7bd(0x215,'\x70\x36\x4a\x43')]??(()=>Date['\x6e\x6f\x77']()),_0x562b25=_0x6bbfdc[_0x33e7bd(0x1e0,'\x6e\x4e\x6f\x61')]??(_0x23b886=>{const _0x52fb5b=_0x33e7bd;process['\x73\x74\x64\x65\x72\x72'][_0x52fb5b(0x203,'\x49\x69\x63\x6c')](_0x23b886);});let _0x2aaab6={'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};return _0x46e67d=>{const _0x28c84b=_0x33e7bd;if(_0x28c84b(0x21e,'\x68\x39\x68\x53')===_0x28c84b(0x213,'\x76\x5e\x5a\x32'))_0x25eccb(_0x138030);else{if(!_0x46e67d['\x6f\x6b']||_0x549f10[_0x28c84b(0x1cd,'\x61\x42\x49\x50')+_0x28c84b(0x1da,'\x50\x55\x58\x65')+_0x28c84b(0x210,'\x37\x50\x67\x71')+_0x28c84b(0x226,'\x55\x33\x31\x6e')]==='\x31')return![];const _0x568e30=normalizeClaimCode(_0x46e67d[_0x28c84b(0x1f5,'\x37\x6d\x29\x74')+'\x65']),_0x5c8ca6=_0x568e30?trustedClaimUrl(_0x46e67d[_0x28c84b(0x202,'\x6f\x6d\x28\x43')],_0x6bbfdc[_0x28c84b(0x1c7,'\x69\x44\x42\x5a')]):undefined;if(!_0x568e30||!_0x5c8ca6)return![];const _0x3ee58f=_0x2b02fd(),_0x50e9c8=claimNudgeCooldownMs(_0x549f10[_0x28c84b(0x1f0,'\x5b\x67\x4d\x41')+_0x28c84b(0x1d3,'\x68\x7a\x48\x31')+_0x28c84b(0x1f8,'\x55\x33\x31\x6e')+'\x44\x4f\x57\x4e\x5f\x4d\x53']),_0x1c22a1=mergeState(readState(_0x6bbfdc[_0x28c84b(0x1e8,'\x4e\x46\x74\x39')]),_0x2aaab6),_0x2e6ea8=_0x1c22a1[_0x28c84b(0x220,'\x4d\x6f\x72\x50')][_0x568e30]??0x2581*0x1+-0x4*-0x57e+-0x3b79;if(_0x2e6ea8>0x1796+0x132a+-0xe40*0x3&&_0x3ee58f-_0x2e6ea8<_0x50e9c8)return![];const _0x6a130a=['',_0x28c84b(0x1ec,'\x61\x42\x49\x50')+_0x28c84b(0x1dd,'\x61\x72\x38\x56')+'\x54\x68\x69\x73\x20\x6e\x6f\x64'+_0x28c84b(0x1e7,'\x6e\x5e\x72\x68')+_0x28c84b(0x201,'\x70\x36\x4a\x43')+_0x28c84b(0x225,'\x49\x51\x67\x30')+'\x6f\x4d\x61\x70\x20\x77\x65\x62'+_0x28c84b(0x214,'\x54\x4b\x61\x6d')+'\x2e',_0x28c84b(0x1e4,'\x5b\x67\x4d\x41')+_0x28c84b(0x1c3,'\x70\x6a\x34\x62')+_0x5c8ca6,_0x28c84b(0x211,'\x69\x44\x42\x5a')+_0x28c84b(0x1f7,'\x50\x55\x58\x65')+_0x568e30,_0x28c84b(0x1e3,'\x6f\x6d\x28\x43')+_0x28c84b(0x1be,'\x52\x76\x21\x41')+_0x28c84b(0x1fe,'\x68\x7a\x48\x31')+'\x65\x20\x70\x72\x6f\x78\x79\x20'+_0x28c84b(0x1cb,'\x55\x33\x31\x6e')+'\x73\x20\x74\x6f\x20\x72\x75\x6e'+_0x28c84b(0x222,'\x75\x65\x5e\x55')+_0x28c84b(0x1ff,'\x61\x71\x36\x57'),''][_0x28c84b(0x1e5,'\x4e\x34\x51\x5e')]('\x0a');try{_0x562b25(_0x6a130a);}catch{return![];}_0x2aaab6=pruneState({..._0x1c22a1[_0x28c84b(0x207,'\x6f\x6d\x28\x43')],[_0x568e30]:_0x3ee58f});try{_0x6bbfdc[_0x28c84b(0x1e8,'\x4e\x46\x74\x39')][_0x28c84b(0x217,'\x63\x41\x7a\x76')](STATE_KEY,JSON[_0x28c84b(0x1df,'\x28\x45\x63\x63')+'\x79'](_0x2aaab6));}catch{}return!![];}};}export function wrapHelloWithClaimNudge(_0x25fe7d,_0xdc41da){return async _0x34dae9=>{const _0x29f6c9=_0x1598,_0xb70852=await _0x25fe7d(_0x34dae9);try{if(_0x29f6c9(0x1e1,'\x55\x33\x31\x6e')!==_0x29f6c9(0x209,'\x6e\x4e\x6f\x61'))_0xdc41da(_0xb70852);else{if(_0x2b915a[_0x29f6c9(0x21a,'\x69\x44\x42\x5a')](_0x4e0d0a)&&typeof _0x210dfc===_0x29f6c9(0x221,'\x61\x42\x49\x50')&&_0x177f1d[_0x29f6c9(0x223,'\x57\x38\x5b\x6f')](_0x2081d2)&&_0x82142a>0x1d8d+0x48b*-0x2+-0xd*0x193)_0x4e76c5[_0x51a06]=_0x5b9f1a;}}catch{}return _0xb70852;};}export function claimNudgeCooldownMs(_0x295fb4){const _0x2721b4=_0xc73363,_0x39f5f3=Number(_0x295fb4);if(!Number[_0x2721b4(0x1c5,'\x57\x25\x56\x66')](_0x39f5f3)||_0x39f5f3<=0x4*-0x7ab+-0x2a*0xcf+0x40a2*0x1)return DEFAULT_COOLDOWN_MS;return Math['\x6d\x61\x78'](MIN_COOLDOWN_MS,Math[_0x2721b4(0x1e6,'\x63\x41\x7a\x76')](Math[_0x2721b4(0x228,'\x4e\x34\x51\x5e')](_0x39f5f3),MAX_COOLDOWN_MS));}function normalizeClaimCode(_0x35e72f){const _0x4ce097=_0xc73363,_0x4385f2=_0x35e72f?.[_0x4ce097(0x20f,'\x5e\x59\x31\x38')]();return _0x4385f2&&CLAIM_CODE_RE[_0x4ce097(0x21b,'\x50\x55\x58\x65')](_0x4385f2)?_0x4385f2:undefined;}function trustedClaimUrl(_0xf7d48e,_0x42b7da){const _0x16e127=_0xc73363,_0x573099=_0xf7d48e?.[_0x16e127(0x1c4,'\x63\x52\x24\x73')]();if(!_0x573099||_0x573099[_0x16e127(0x1c0,'\x50\x55\x58\x65')]>-0x1a90+-0x1d6b+0xb*0x5d1)return undefined;try{const _0x21a735=new URL(_0x573099),_0x524d34=new URL(_0x42b7da);if(_0x21a735[_0x16e127(0x1d9,'\x4f\x6e\x29\x51')]||_0x21a735[_0x16e127(0x1e2,'\x72\x30\x23\x25')])return undefined;const _0xde0db=_0x21a735[_0x16e127(0x1f4,'\x49\x69\x63\x6c')]===_0x524d34[_0x16e127(0x1f9,'\x54\x4b\x61\x6d')],_0x44d2f7=_0x21a735[_0x16e127(0x21d,'\x63\x49\x63\x28')]===_0x16e127(0x1ea,'\x54\x4b\x61\x6d')+'\x69'||_0x21a735['\x68\x6f\x73\x74\x6e\x61\x6d\x65'][_0x16e127(0x1d2,'\x4f\x6e\x29\x51')](_0x16e127(0x1d7,'\x68\x7a\x48\x31')+'\x61\x69');if(_0x21a735[_0x16e127(0x20d,'\x70\x36\x4a\x43')]===_0x16e127(0x22a,'\x57\x38\x5b\x6f')&&(_0xde0db||_0x44d2f7))return _0x21a735[_0x16e127(0x1fb,'\x52\x76\x21\x41')]();if(_0x21a735['\x70\x72\x6f\x74\x6f\x63\x6f\x6c']===_0x16e127(0x1f2,'\x68\x7a\x48\x31')&&_0xde0db&&isLoopback(_0x21a735['\x68\x6f\x73\x74\x6e\x61\x6d\x65']))return _0x21a735[_0x16e127(0x1d1,'\x37\x6d\x29\x74')]();}catch{}return undefined;}function isLoopback(_0x17aa3f){const _0xaf29f1=_0xc73363;return _0x17aa3f===_0xaf29f1(0x227,'\x57\x38\x5b\x6f')+'\x74'||_0x17aa3f===_0xaf29f1(0x1de,'\x75\x55\x49\x4f')+'\x31'||_0x17aa3f===_0xaf29f1(0x20e,'\x47\x70\x4b\x77');}function _0x1598(_0xa6c1b9,_0x377834){_0xa6c1b9=_0xa6c1b9-(-0x1633*-0x1+0x2654+-0x1*0x3aca);const _0x1293ab=_0x4d7b();let _0x54e1db=_0x1293ab[_0xa6c1b9];if(_0x1598['\x67\x51\x6e\x65\x6b\x54']===undefined){var _0x5083f5=function(_0x2a9b56){const _0x2d5ed0='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x44e850='',_0x4fe925='';for(let _0x2c8288=0xacf+-0x3*-0x21b+0x890*-0x2,_0xc79144,_0x498f3c,_0x238938=-0x2568+0xc0e+0x195a;_0x498f3c=_0x2a9b56['\x63\x68\x61\x72\x41\x74'](_0x238938++);~_0x498f3c&&(_0xc79144=_0x2c8288%(-0x7e7+-0x59*-0x59+0x7*-0x34a)?_0xc79144*(0x1690*-0x1+0x1*0x1075+0x65b)+_0x498f3c:_0x498f3c,_0x2c8288++%(-0x413+-0x4d6+0x8ed*0x1))?_0x44e850+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](-0x907*0x1+0x965+-0x7*-0x17&_0xc79144>>(-(0x7*0x143+-0xb*-0x2a2+-0x25c9)*_0x2c8288&0x5*-0x751+0x1aa1*0x1+0x9fa*0x1)):-0x7*-0x4+0x133e+-0x135a){_0x498f3c=_0x2d5ed0['\x69\x6e\x64\x65\x78\x4f\x66'](_0x498f3c);}for(let _0x1c89c2=-0x2080+-0x16bb+0x373b,_0x4066d6=_0x44e850['\x6c\x65\x6e\x67\x74\x68'];_0x1c89c2<_0x4066d6;_0x1c89c2++){_0x4fe925+='\x25'+('\x30\x30'+_0x44e850['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x1c89c2)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0xb1*0x2d+0x6d8+-0x25e5*0x1))['\x73\x6c\x69\x63\x65'](-(0x1*-0x1b81+-0x9*-0xe1+0x2*0x9cd));}return decodeURIComponent(_0x4fe925);};const _0x2ddde3=function(_0x2abe9a,_0x42dc97){let _0x12c452=[],_0x366651=-0xa5e*0x2+0x1a19+0x55d*-0x1,_0x5727f2,_0x1993a3='';_0x2abe9a=_0x5083f5(_0x2abe9a);let _0x22c5c0;for(_0x22c5c0=0x1*-0x242a+0x1*0x931+0x1af9;_0x22c5c0<-0x107c+-0xf11+-0xd*-0x281;_0x22c5c0++){_0x12c452[_0x22c5c0]=_0x22c5c0;}for(_0x22c5c0=-0x2e8+-0xc3*-0x1b+-0x11a9;_0x22c5c0<0xbfd+-0x1657*0x1+-0x1*-0xb5a;_0x22c5c0++){_0x366651=(_0x366651+_0x12c452[_0x22c5c0]+_0x42dc97['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x22c5c0%_0x42dc97['\x6c\x65\x6e\x67\x74\x68']))%(0x1c58+-0x1*0xc2f+-0xf29),_0x5727f2=_0x12c452[_0x22c5c0],_0x12c452[_0x22c5c0]=_0x12c452[_0x366651],_0x12c452[_0x366651]=_0x5727f2;}_0x22c5c0=-0x1261+-0x8d+0x12ee,_0x366651=0x1381+-0x1ef*0xb+0x1c4;for(let _0x2ecb41=-0x360+0x18e0+-0x1580;_0x2ecb41<_0x2abe9a['\x6c\x65\x6e\x67\x74\x68'];_0x2ecb41++){_0x22c5c0=(_0x22c5c0+(-0x2069+0x1*0x1937+0x733))%(0x915+0x1e*-0x30+-0x25*0x11),_0x366651=(_0x366651+_0x12c452[_0x22c5c0])%(0x7*-0x1b6+-0x1b33+0x282d),_0x5727f2=_0x12c452[_0x22c5c0],_0x12c452[_0x22c5c0]=_0x12c452[_0x366651],_0x12c452[_0x366651]=_0x5727f2,_0x1993a3+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x2abe9a['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x2ecb41)^_0x12c452[(_0x12c452[_0x22c5c0]+_0x12c452[_0x366651])%(0x14*-0x1b1+0x175*-0x2+-0x2*-0x12df)]);}return _0x1993a3;};_0x1598['\x4a\x45\x69\x4f\x4c\x53']=_0x2ddde3,_0x1598['\x78\x42\x4e\x51\x6e\x75']={},_0x1598['\x67\x51\x6e\x65\x6b\x54']=!![];}const _0x208999=_0x1293ab[0x59*-0xa+0x2*0xd2a+-0x16da],_0x95e5f7=_0xa6c1b9+_0x208999,_0x466934=_0x1598['\x78\x42\x4e\x51\x6e\x75'][_0x95e5f7];return!_0x466934?(_0x1598['\x76\x77\x76\x46\x43\x67']===undefined&&(_0x1598['\x76\x77\x76\x46\x43\x67']=!![]),_0x54e1db=_0x1598['\x4a\x45\x69\x4f\x4c\x53'](_0x54e1db,_0x377834),_0x1598['\x78\x42\x4e\x51\x6e\x75'][_0x95e5f7]=_0x54e1db):_0x54e1db=_0x466934,_0x54e1db;}function readState(_0x27c01e){const _0x24ac23=_0xc73363;try{const _0x1670aa=_0x27c01e[_0x24ac23(0x208,'\x54\x4b\x61\x6d')](STATE_KEY);if(!_0x1670aa)return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};const _0x2d428c=JSON[_0x24ac23(0x20c,'\x73\x49\x6e\x23')](_0x1670aa);if(_0x2d428c[_0x24ac23(0x1f3,'\x21\x6f\x63\x29')]!==0x1174*0x1+0x270b*-0x1+0x2b3*0x8||!_0x2d428c[_0x24ac23(0x1ee,'\x75\x55\x49\x4f')]||typeof _0x2d428c[_0x24ac23(0x207,'\x6f\x6d\x28\x43')]!==_0x24ac23(0x1fd,'\x5a\x6f\x4e\x6c')||Array[_0x24ac23(0x1bf,'\x63\x49\x63\x28')](_0x2d428c[_0x24ac23(0x1bd,'\x37\x6d\x29\x74')]))return _0x24ac23(0x1ca,'\x28\x45\x63\x63')==='\x4f\x79\x6d\x4e\x53'?![]:{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};const _0x1bff5f={};for(const [_0xf48036,_0x4246ec]of Object[_0x24ac23(0x1d4,'\x4e\x46\x74\x39')](_0x2d428c[_0x24ac23(0x1d6,'\x50\x55\x58\x65')])){if(CLAIM_CODE_RE[_0x24ac23(0x1cc,'\x68\x7a\x48\x31')](_0xf48036)&&typeof _0x4246ec===_0x24ac23(0x21c,'\x26\x4e\x42\x56')&&Number[_0x24ac23(0x1eb,'\x37\x50\x67\x71')](_0x4246ec)&&_0x4246ec>0xbd0+-0x6*-0x458+-0x25e0)_0x1bff5f[_0xf48036]=_0x4246ec;}return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':_0x1bff5f};}catch{return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};}}function mergeState(_0x1a6da6,_0x2f7d29){const _0x36c06f=_0xc73363,_0x5f2425={..._0x1a6da6[_0x36c06f(0x212,'\x37\x50\x67\x71')]};for(const [_0x266469,_0x31a7ae]of Object[_0x36c06f(0x216,'\x70\x6a\x34\x62')](_0x2f7d29[_0x36c06f(0x20b,'\x61\x42\x49\x50')]))_0x5f2425[_0x266469]=Math[_0x36c06f(0x224,'\x46\x34\x49\x71')](_0x5f2425[_0x266469]??0x11a4+-0x1c64*-0x1+-0x8*0x5c1,_0x31a7ae);return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':_0x5f2425};}function pruneState(_0x2becdd){const _0x10e5b0=_0xc73363;return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':Object[_0x10e5b0(0x1c1,'\x4f\x50\x39\x57')+_0x10e5b0(0x1e9,'\x6e\x5e\x72\x68')](Object[_0x10e5b0(0x1c9,'\x46\x34\x49\x71')](_0x2becdd)['\x73\x6f\x72\x74']((_0x100124,_0x31b62b)=>_0x31b62b[-0x165a+0x1f78+-0x91d]-_0x100124[0x11d5*-0x1+0x19a7+-0x7d1])[_0x10e5b0(0x21f,'\x28\x53\x6f\x66')](-0x985*-0x4+0x926+-0x2f3a,MAX_STATE_ENTRIES))};}function _0x4d7b(){const _0xb6c00d=['\x6a\x33\x38\x68\x57\x52\x68\x64\x49\x32\x47\x53\x73\x67\x78\x63\x4d\x43\x6f\x4d\x57\x35\x47','\x57\x51\x44\x54\x63\x43\x6f\x68\x73\x63\x62\x38','\x64\x4b\x46\x63\x50\x6d\x6b\x4b\x57\x4f\x71\x4d\x57\x34\x4f\x43','\x64\x49\x4f\x62\x63\x6d\x6b\x4d\x79\x65\x52\x63\x4c\x59\x79','\x6c\x6d\x6f\x78\x77\x43\x6f\x41\x75\x43\x6b\x47\x73\x4a\x43','\x57\x4f\x7a\x6b\x6c\x53\x6f\x30\x79\x57\x4c\x6b\x57\x36\x47','\x57\x37\x71\x56\x72\x63\x48\x76\x78\x63\x76\x75','\x57\x35\x37\x64\x51\x67\x2f\x64\x4d\x53\x6f\x69\x57\x4f\x6d\x73\x41\x71','\x7a\x64\x6c\x63\x47\x63\x6a\x42\x45\x59\x4e\x63\x4f\x47','\x69\x38\x6b\x76\x71\x6d\x6f\x44\x7a\x77\x4a\x63\x4c\x38\x6f\x75','\x65\x5a\x52\x63\x4e\x74\x75\x45\x57\x52\x34\x72\x57\x37\x61','\x57\x4f\x4c\x48\x71\x78\x57\x78','\x71\x4e\x6c\x63\x52\x59\x52\x64\x4e\x47','\x57\x35\x31\x59\x41\x43\x6b\x6f\x57\x34\x6c\x63\x53\x6d\x6f\x53\x68\x71','\x57\x36\x57\x39\x6e\x33\x69\x42\x57\x4f\x42\x63\x4f\x43\x6b\x6c','\x66\x32\x6c\x64\x4f\x72\x56\x63\x4b\x58\x2f\x64\x47\x43\x6f\x35','\x57\x50\x64\x64\x55\x43\x6f\x46\x57\x50\x75','\x62\x59\x64\x64\x4f\x47','\x57\x34\x7a\x78\x41\x77\x6c\x63\x4f\x38\x6f\x44\x6a\x63\x4f','\x57\x37\x46\x63\x56\x43\x6b\x33\x77\x6d\x6f\x6a','\x57\x34\x4f\x73\x43\x57','\x57\x35\x31\x56\x74\x53\x6b\x7a\x76\x6d\x6f\x51\x75\x6d\x6b\x35','\x57\x37\x57\x69\x61\x73\x79\x46\x57\x36\x42\x63\x48\x53\x6f\x77','\x57\x51\x4e\x63\x48\x58\x72\x33\x62\x78\x6e\x4b\x66\x47','\x75\x33\x5a\x63\x55\x43\x6f\x68\x57\x52\x47\x56\x57\x36\x4a\x64\x55\x6d\x6b\x55\x65\x47','\x44\x38\x6f\x6a\x61\x38\x6b\x62\x70\x63\x70\x64\x4c\x61','\x57\x37\x52\x64\x4e\x6d\x6f\x72\x57\x37\x78\x64\x50\x6d\x6b\x7a\x42\x31\x70\x63\x52\x53\x6f\x31\x43\x53\x6f\x75','\x65\x76\x4a\x64\x4a\x5a\x37\x63\x51\x68\x52\x64\x48\x53\x6f\x30','\x70\x74\x52\x63\x53\x47\x46\x64\x4b\x6d\x6b\x55\x72\x77\x38','\x73\x66\x42\x63\x50\x53\x6b\x37\x57\x35\x6d','\x6e\x6d\x6f\x34\x57\x37\x35\x42\x57\x52\x35\x44\x41\x57','\x7a\x43\x6f\x4f\x42\x57\x39\x44\x57\x34\x79','\x57\x35\x58\x70\x57\x37\x78\x63\x4b\x43\x6f\x4d\x72\x67\x70\x63\x48\x57','\x57\x34\x74\x64\x47\x43\x6b\x7a\x57\x52\x68\x63\x4b\x43\x6f\x78\x57\x36\x42\x64\x48\x6d\x6f\x44\x57\x37\x42\x64\x56\x62\x47','\x57\x51\x7a\x4d\x72\x38\x6b\x76','\x74\x65\x33\x63\x4f\x72\x37\x64\x4d\x43\x6b\x4e\x43\x65\x53','\x57\x35\x44\x52\x73\x6d\x6b\x74\x78\x6d\x6f\x30','\x43\x38\x6b\x56\x57\x52\x30\x7a\x57\x36\x65\x6c\x6d\x4d\x6a\x37\x57\x34\x6e\x4f\x43\x61\x38','\x57\x4f\x44\x33\x41\x38\x6f\x6f\x6e\x43\x6b\x78\x75\x4e\x38','\x57\x34\x46\x64\x4d\x4c\x61\x4f\x77\x5a\x72\x47\x62\x74\x39\x56\x65\x73\x43','\x57\x34\x6c\x63\x54\x78\x6c\x63\x4c\x57\x61\x47','\x74\x30\x5a\x63\x53\x38\x6b\x4e\x57\x35\x6a\x4e\x57\x34\x35\x41','\x57\x51\x2f\x63\x4b\x30\x43\x69','\x57\x35\x37\x63\x48\x30\x58\x79\x57\x36\x46\x63\x54\x6d\x6f\x52\x62\x38\x6f\x65\x77\x47','\x68\x76\x4f\x51\x42\x53\x6b\x51\x57\x37\x5a\x63\x51\x4e\x53','\x57\x34\x57\x39\x6e\x33\x69\x42\x57\x52\x52\x63\x56\x43\x6b\x61','\x46\x43\x6f\x4f\x42\x58\x58\x72','\x57\x51\x6a\x63\x46\x33\x44\x64\x57\x52\x46\x63\x56\x38\x6f\x64\x63\x76\x61\x2f\x57\x36\x47','\x41\x6d\x6b\x77\x73\x38\x6f\x67\x42\x53\x6b\x68\x44\x48\x47','\x45\x38\x6f\x2f\x57\x34\x6e\x34\x64\x6d\x6b\x39\x57\x37\x4e\x64\x4d\x43\x6b\x65','\x57\x34\x4f\x2f\x69\x4d\x4b\x46\x57\x4f\x52\x63\x56\x61','\x57\x35\x39\x38\x76\x43\x6b\x4e\x71\x43\x6f\x37\x63\x53\x6b\x39','\x57\x51\x48\x39\x77\x33\x69\x4e','\x57\x34\x70\x64\x4b\x62\x76\x32\x6f\x65\x6e\x71\x6c\x47','\x57\x50\x46\x63\x4a\x62\x7a\x51\x61\x67\x62\x59','\x57\x50\x56\x63\x56\x30\x46\x64\x53\x6d\x6f\x66','\x74\x75\x71\x53\x44\x6d\x6b\x55\x57\x37\x52\x63\x4f\x74\x43','\x71\x53\x6b\x72\x79\x43\x6f\x58\x62\x71','\x6f\x43\x6b\x39\x57\x50\x50\x5a','\x57\x35\x79\x33\x62\x47\x79\x38\x57\x35\x64\x63\x56\x6d\x6f\x4d','\x41\x62\x7a\x38\x57\x52\x42\x63\x4a\x6d\x6f\x78\x57\x34\x33\x64\x54\x57','\x57\x37\x61\x76\x6d\x5a\x30\x79\x57\x36\x52\x63\x47\x71','\x57\x51\x78\x64\x4e\x48\x56\x64\x47\x43\x6b\x36','\x57\x50\x48\x34\x71\x53\x6b\x78\x77\x53\x6f\x56\x65\x6d\x6b\x53','\x75\x31\x4b\x30','\x6b\x38\x6b\x38\x57\x50\x76\x65\x57\x36\x71\x53\x43\x61','\x67\x73\x5a\x64\x55\x6d\x6b\x48\x57\x52\x4b\x44\x57\x36\x4a\x64\x4b\x47','\x6e\x53\x6f\x75\x73\x76\x4c\x59\x72\x30\x71\x74','\x6b\x6d\x6b\x6d\x57\x51\x44\x35\x57\x50\x48\x37\x57\x51\x4a\x63\x4f\x38\x6b\x38\x57\x35\x39\x6c','\x78\x58\x39\x55\x57\x51\x53','\x57\x52\x7a\x4d\x64\x53\x6f\x62','\x6b\x43\x6b\x37\x73\x6d\x6f\x52\x57\x4f\x70\x64\x4e\x71','\x46\x6d\x6f\x30\x78\x38\x6f\x4a\x57\x50\x69\x4a\x57\x34\x54\x51','\x57\x50\x47\x49\x57\x34\x68\x63\x49\x61\x79','\x6b\x61\x33\x63\x50\x61\x33\x64\x47\x47','\x57\x51\x48\x2f\x57\x52\x75\x53\x57\x37\x56\x63\x54\x47\x57','\x57\x50\x5a\x63\x4c\x57\x39\x36\x64\x68\x43','\x70\x43\x6f\x6c\x57\x37\x38\x2f\x57\x34\x72\x72\x57\x51\x37\x63\x4b\x57','\x57\x51\x42\x64\x4d\x76\x78\x63\x4d\x6d\x6b\x51\x64\x43\x6f\x73\x65\x71','\x57\x50\x56\x63\x4c\x43\x6f\x75','\x57\x50\x70\x64\x4e\x76\x4b\x6d\x57\x37\x5a\x64\x48\x38\x6f\x41\x70\x47','\x74\x65\x33\x63\x4f\x71','\x57\x51\x70\x64\x48\x78\x64\x63\x4b\x6d\x6b\x4f\x64\x6d\x6f\x6a\x62\x57','\x57\x50\x5a\x64\x55\x53\x6f\x7a\x57\x50\x74\x63\x4f\x61','\x77\x74\x53\x4b\x68\x53\x6b\x50\x57\x34\x52\x63\x50\x75\x52\x63\x53\x78\x72\x2f\x57\x34\x34','\x57\x51\x46\x64\x4e\x4d\x46\x63\x47\x43\x6b\x33\x78\x47','\x57\x35\x50\x6e\x57\x36\x64\x63\x49\x53\x6f\x49\x79\x4e\x38','\x57\x35\x6e\x58\x73\x38\x6b\x41\x6b\x6d\x6b\x6f\x73\x68\x65','\x46\x43\x6f\x4f\x42\x43\x6f\x4c\x57\x4f\x34\x4a\x57\x35\x38','\x57\x51\x35\x4d\x65\x38\x6f\x73\x76\x73\x30','\x78\x4d\x48\x45\x61\x38\x6b\x36\x45\x4e\x70\x63\x54\x71','\x57\x4f\x4b\x52\x65\x6d\x6f\x66\x61\x38\x6b\x4a\x73\x43\x6b\x2f\x57\x52\x6c\x63\x48\x43\x6b\x72\x6e\x32\x71','\x61\x53\x6f\x4f\x57\x34\x65','\x57\x52\x5a\x63\x4d\x43\x6b\x5a\x57\x50\x4b','\x57\x37\x38\x64\x77\x38\x6b\x45\x57\x37\x4a\x64\x55\x53\x6f\x2f\x57\x52\x71','\x57\x51\x72\x6d\x46\x4e\x31\x68\x57\x52\x52\x63\x56\x6d\x6f\x76\x6b\x78\x4f\x2b\x57\x34\x57','\x71\x57\x39\x2f\x57\x4f\x52\x63\x4b\x38\x6b\x42','\x57\x52\x70\x64\x53\x6d\x6f\x47\x65\x53\x6b\x45\x66\x75\x6c\x64\x51\x4e\x30\x51\x57\x50\x4c\x59','\x57\x50\x70\x63\x4d\x53\x6f\x79\x57\x37\x42\x64\x4a\x43\x6b\x61\x57\x36\x38','\x67\x63\x6c\x63\x47\x73\x79\x73','\x41\x32\x78\x63\x49\x4a\x78\x64\x53\x38\x6b\x67\x73\x4d\x69','\x76\x65\x46\x63\x4f\x43\x6b\x2f','\x57\x52\x46\x63\x54\x63\x31\x75\x70\x30\x62\x74\x6f\x57','\x57\x34\x46\x64\x4b\x4a\x72\x45\x69\x30\x6e\x37\x64\x61','\x57\x51\x68\x64\x4e\x33\x46\x63\x4c\x53\x6b\x48\x78\x53\x6f\x71\x72\x71','\x57\x35\x72\x57\x72\x38\x6b\x72\x76\x53\x6f\x4a\x68\x43\x6b\x30','\x57\x34\x54\x6d\x57\x34\x46\x63\x4a\x6d\x6f\x35\x42\x4d\x6c\x63\x48\x61','\x70\x6d\x6f\x6b\x77\x6d\x6f\x42\x41\x6d\x6b\x4f\x75\x5a\x4f','\x79\x32\x37\x63\x4b\x38\x6b\x63\x57\x51\x71\x79\x57\x37\x72\x4e','\x57\x36\x68\x63\x50\x38\x6b\x53\x77\x6d\x6f\x66\x73\x68\x57'];_0x4d7b=function(){return _0xb6c00d;};return _0x4d7b();}
|
|
1
|
+
function _0x5eeb(){const _0x39223d=['\x6d\x38\x6b\x62\x57\x34\x74\x63\x47\x53\x6b\x48','\x77\x75\x4e\x63\x48\x53\x6f\x49\x57\x50\x76\x72\x7a\x71','\x67\x6d\x6b\x2f\x57\x50\x43\x4f\x78\x53\x6f\x57','\x6a\x6d\x6b\x59\x6d\x71\x31\x36\x57\x35\x4c\x65\x57\x51\x4f','\x42\x77\x56\x64\x48\x6d\x6b\x4e\x57\x37\x31\x2f\x7a\x48\x47','\x77\x62\x47\x39\x57\x34\x2f\x63\x4b\x71','\x57\x34\x6e\x49\x57\x50\x61\x4b\x70\x61','\x70\x5a\x33\x63\x51\x74\x75\x4d\x57\x4f\x43\x45\x57\x35\x58\x6e\x57\x36\x5a\x64\x52\x38\x6b\x74\x57\x35\x65','\x63\x38\x6b\x2b\x7a\x65\x74\x63\x55\x53\x6f\x6d\x57\x34\x68\x64\x4c\x57','\x57\x37\x4e\x63\x4e\x48\x74\x63\x48\x53\x6f\x4e\x44\x53\x6f\x72\x44\x61','\x75\x6d\x6b\x52\x46\x53\x6b\x54\x57\x36\x4b','\x57\x34\x35\x47\x57\x50\x53\x6f\x6e\x43\x6f\x4e\x72\x53\x6b\x56','\x69\x43\x6f\x48\x57\x37\x54\x4b','\x46\x6d\x6f\x68\x57\x50\x37\x64\x56\x4e\x72\x77\x6d\x6d\x6f\x4a','\x76\x76\x44\x6e\x57\x4f\x4b\x63','\x57\x37\x78\x64\x4a\x74\x56\x63\x4e\x6d\x6b\x50\x43\x43\x6f\x6b\x7a\x71','\x61\x66\x37\x63\x53\x43\x6f\x67\x57\x4f\x54\x47\x77\x66\x34','\x57\x52\x39\x50\x57\x34\x2f\x63\x4c\x33\x53\x30\x75\x4d\x71','\x74\x53\x6b\x41\x57\x37\x37\x64\x48\x75\x5a\x63\x52\x6d\x6f\x30\x63\x47','\x61\x75\x68\x64\x52\x6d\x6f\x33\x57\x36\x30\x69\x57\x37\x6c\x64\x55\x61','\x57\x50\x71\x4d\x57\x36\x58\x45\x42\x6d\x6b\x2b\x7a\x53\x6b\x62\x46\x6d\x6b\x45\x69\x65\x4b','\x57\x34\x56\x64\x55\x6d\x6f\x6b\x57\x4f\x4b','\x6b\x6d\x6b\x56\x61\x58\x7a\x39\x57\x35\x76\x64','\x57\x37\x56\x63\x48\x66\x37\x64\x50\x43\x6b\x55\x57\x37\x43\x4b','\x57\x34\x39\x45\x42\x38\x6f\x76\x6b\x74\x4a\x64\x54\x38\x6f\x57','\x57\x4f\x6c\x63\x4c\x43\x6f\x54\x57\x50\x33\x63\x55\x6d\x6f\x6f\x57\x51\x54\x41','\x57\x4f\x35\x62\x57\x4f\x37\x64\x4e\x43\x6b\x76\x57\x4f\x4c\x43\x43\x61','\x57\x36\x37\x63\x52\x43\x6f\x2b\x57\x35\x4b\x53\x57\x51\x42\x63\x4c\x72\x4b','\x57\x35\x2f\x64\x4a\x33\x2f\x63\x50\x75\x48\x47\x68\x61','\x62\x31\x66\x56\x7a\x43\x6b\x6c\x6c\x62\x2f\x63\x4d\x38\x6f\x55\x75\x4d\x2f\x63\x48\x4b\x69','\x6c\x6d\x6b\x52\x66\x32\x71','\x6f\x48\x44\x56\x57\x36\x42\x64\x55\x6d\x6f\x36\x57\x34\x37\x64\x4f\x71','\x57\x35\x68\x64\x4a\x32\x58\x2b\x72\x43\x6b\x4d\x6d\x48\x53','\x57\x34\x37\x64\x50\x43\x6f\x6b\x57\x4f\x62\x38\x57\x51\x61','\x6f\x38\x6b\x4b\x62\x72\x44\x39\x57\x35\x39\x45','\x57\x51\x5a\x63\x51\x63\x43\x71\x6f\x59\x4f','\x57\x51\x6c\x64\x53\x30\x4a\x63\x48\x72\x46\x63\x56\x47\x78\x64\x53\x47','\x64\x58\x30\x39\x57\x34\x2f\x63\x4e\x6d\x6f\x36\x61\x43\x6b\x69','\x57\x4f\x4e\x64\x48\x38\x6f\x72\x78\x6d\x6f\x35\x66\x57','\x44\x59\x64\x63\x54\x64\x43\x62\x57\x34\x6a\x32\x57\x4f\x61','\x57\x37\x33\x63\x48\x75\x74\x64\x4f\x38\x6b\x55\x57\x37\x57\x49\x57\x50\x38','\x71\x47\x6d\x36','\x57\x4f\x46\x63\x4a\x47\x4a\x64\x50\x71\x34\x30\x78\x43\x6b\x65\x7a\x4d\x6e\x6e\x57\x52\x56\x63\x4c\x47','\x57\x50\x62\x68\x66\x78\x31\x7a\x57\x36\x47\x36\x77\x71','\x57\x4f\x72\x76\x46\x43\x6f\x6a\x65\x5a\x64\x64\x53\x38\x6b\x32','\x57\x37\x6c\x64\x55\x33\x56\x63\x49\x68\x4c\x6f\x6b\x53\x6b\x64','\x6a\x48\x62\x58\x57\x35\x64\x64\x52\x38\x6f\x56','\x57\x37\x5a\x64\x4c\x73\x6a\x4b\x57\x52\x6d\x7a\x43\x57','\x57\x36\x4e\x63\x48\x4b\x64\x64\x52\x53\x6b\x49','\x6e\x77\x5a\x63\x52\x4e\x47\x65','\x57\x52\x74\x64\x53\x38\x6b\x56\x57\x4f\x53\x63\x57\x52\x64\x63\x52\x57\x74\x63\x4d\x43\x6b\x31','\x57\x4f\x2f\x64\x4f\x67\x34','\x65\x57\x4b\x5a\x57\x37\x72\x38\x6f\x53\x6b\x78\x45\x53\x6f\x49\x42\x53\x6b\x7a\x57\x37\x56\x64\x51\x71','\x6b\x38\x6b\x54\x57\x4f\x70\x64\x53\x68\x4b','\x57\x4f\x39\x65\x68\x33\x39\x71','\x57\x35\x4e\x64\x51\x64\x6c\x63\x55\x43\x6b\x72\x78\x43\x6f\x53\x78\x57','\x6f\x61\x68\x63\x56\x63\x4c\x6b\x57\x35\x62\x33\x57\x34\x69','\x6e\x43\x6b\x6a\x57\x52\x47\x69\x45\x47','\x57\x51\x2f\x64\x51\x4c\x74\x63\x4e\x62\x4a\x63\x52\x30\x42\x64\x54\x47','\x57\x50\x33\x64\x52\x43\x6f\x53\x57\x52\x53\x53','\x57\x36\x4a\x64\x4d\x57\x37\x63\x47\x71','\x62\x43\x6b\x38\x57\x50\x4e\x64\x51\x66\x65\x73\x43\x6d\x6f\x5a','\x72\x47\x43\x50\x6a\x43\x6f\x78','\x45\x43\x6b\x33\x57\x34\x4f\x72\x57\x4f\x69\x52\x78\x43\x6b\x46\x6a\x43\x6b\x58','\x57\x37\x78\x63\x54\x53\x6f\x58\x57\x34\x47\x51','\x57\x37\x68\x63\x53\x6d\x6f\x51\x57\x35\x75\x48\x57\x52\x4a\x63\x4e\x58\x6d','\x69\x43\x6b\x48\x71\x30\x74\x63\x55\x43\x6b\x66\x57\x36\x64\x64\x4f\x61','\x57\x50\x64\x64\x48\x68\x54\x39\x65\x38\x6f\x4e\x6e\x4c\x30','\x57\x36\x64\x63\x51\x53\x6b\x61\x72\x43\x6f\x63\x57\x36\x46\x64\x4c\x64\x4b','\x57\x35\x37\x64\x49\x65\x52\x63\x50\x30\x4b\x37','\x57\x51\x6c\x64\x51\x31\x70\x63\x4d\x48\x2f\x63\x51\x31\x47','\x6d\x43\x6f\x49\x57\x35\x39\x6b\x57\x50\x79','\x57\x4f\x4c\x75\x41\x53\x6f\x6f\x6b\x4a\x4a\x64\x51\x53\x6b\x37','\x66\x6d\x6f\x73\x57\x51\x72\x44\x57\x52\x4f\x30\x57\x4f\x75','\x44\x43\x6f\x36\x57\x36\x65\x50\x57\x50\x37\x64\x56\x43\x6f\x36\x6f\x57','\x74\x65\x35\x48\x57\x51\x65\x54\x6e\x43\x6f\x7a\x61\x61','\x6f\x43\x6f\x33\x67\x62\x5a\x63\x49\x71','\x6f\x73\x70\x63\x51\x47','\x57\x51\x76\x5a\x57\x52\x4e\x64\x55\x58\x75\x6b\x6c\x77\x34','\x69\x6d\x6b\x47\x64\x57','\x57\x4f\x6e\x72\x57\x4f\x5a\x64\x47\x64\x65\x57\x65\x61','\x46\x4b\x68\x63\x4b\x43\x6f\x4f\x66\x38\x6f\x6c\x57\x35\x75\x47','\x65\x4d\x64\x64\x4d\x6d\x6f\x54\x57\x36\x38','\x57\x52\x39\x6a\x57\x36\x2f\x63\x54\x31\x54\x6c\x46\x31\x34','\x57\x35\x2f\x64\x4d\x75\x30','\x6d\x59\x4e\x64\x50\x33\x4b','\x70\x72\x44\x4f\x57\x34\x65','\x57\x52\x46\x63\x51\x63\x43\x41','\x57\x51\x5a\x63\x47\x38\x6f\x2b\x57\x4f\x64\x63\x55\x53\x6f\x7a\x57\x51\x6e\x6e','\x67\x30\x78\x63\x50\x53\x6f\x78\x57\x50\x44\x5a','\x74\x65\x74\x64\x4a\x4b\x6a\x6d\x57\x37\x50\x2b','\x79\x6d\x6b\x67\x73\x43\x6b\x79\x57\x34\x75','\x57\x37\x78\x63\x54\x53\x6b\x42\x71\x38\x6f\x65\x57\x36\x68\x64\x49\x61','\x69\x76\x50\x78\x64\x4a\x6e\x58\x57\x50\x4b\x59','\x6a\x31\x42\x63\x50\x53\x6f\x6d\x63\x43\x6f\x36\x57\x36\x47','\x77\x53\x6b\x55\x70\x74\x34\x68\x57\x51\x6c\x64\x52\x57','\x57\x37\x6c\x63\x50\x43\x6f\x52\x57\x34\x38\x34\x57\x52\x64\x63\x48\x62\x65','\x69\x43\x6f\x38\x57\x52\x6a\x4f\x57\x50\x2f\x63\x52\x43\x6f\x6c\x6a\x61','\x6f\x38\x6b\x75\x57\x4f\x33\x64\x55\x77\x39\x39\x6c\x57','\x57\x36\x70\x63\x47\x6d\x6f\x35\x57\x35\x69\x32','\x46\x6d\x6b\x61\x74\x38\x6b\x6e\x57\x34\x4c\x38','\x46\x53\x6b\x32\x57\x34\x4b\x73\x57\x35\x50\x32\x6b\x43\x6b\x76\x6e\x43\x6b\x2b\x57\x50\x6a\x59\x57\x37\x69','\x57\x37\x78\x64\x4b\x66\x2f\x63\x56\x4c\x44\x4f\x63\x38\x6b\x4f','\x57\x37\x78\x63\x50\x62\x6a\x66\x70\x57','\x57\x50\x48\x56\x57\x52\x74\x64\x4c\x53\x6b\x68','\x75\x43\x6f\x31\x67\x48\x2f\x63\x48\x53\x6f\x70\x57\x34\x64\x64\x4b\x75\x64\x63\x51\x57','\x6c\x6d\x6b\x48\x6e\x32\x72\x4e\x71\x57\x42\x64\x47\x57','\x57\x4f\x76\x74\x57\x50\x4e\x64\x4d\x5a\x75\x77\x64\x66\x38','\x61\x75\x52\x63\x4d\x71','\x75\x65\x58\x72\x73\x6d\x6f\x45\x57\x36\x34\x45\x57\x35\x47','\x44\x57\x4c\x63\x6b\x74\x76\x75\x57\x50\x57\x34','\x57\x37\x6c\x63\x54\x53\x6f\x33\x57\x34\x47\x47\x57\x52\x5a\x63\x4d\x72\x4b','\x46\x4c\x52\x63\x4c\x53\x6f\x53\x63\x53\x6b\x71','\x6a\x6d\x6b\x42\x57\x52\x57','\x46\x4b\x71\x52\x57\x4f\x5a\x63\x55\x43\x6b\x52\x57\x4f\x4e\x64\x56\x53\x6f\x73\x65\x47\x46\x63\x4d\x71\x4b','\x76\x65\x46\x64\x56\x6d\x6f\x66','\x6b\x38\x6f\x55\x65\x68\x38\x31\x77\x62\x33\x64\x49\x47','\x43\x65\x54\x52\x74\x38\x6b\x6d\x57\x36\x4b\x46\x57\x35\x53','\x74\x31\x6a\x52','\x75\x4b\x4c\x51\x57\x52\x69\x4e\x42\x6d\x6f\x61\x78\x71','\x70\x43\x6b\x47\x65\x67\x6a\x38\x74\x58\x53','\x57\x50\x64\x63\x50\x43\x6b\x75\x57\x34\x4b\x4c\x57\x36\x61\x62\x57\x35\x30','\x57\x35\x61\x6a\x57\x34\x2f\x63\x47\x4a\x4b\x37\x6a\x4c\x70\x63\x54\x76\x30','\x6b\x75\x31\x6b\x6f\x49\x35\x2b','\x57\x50\x76\x55\x57\x4f\x38\x32\x63\x71','\x57\x51\x78\x63\x54\x49\x65\x79\x69\x61','\x57\x37\x5a\x63\x47\x74\x76\x36\x57\x52\x53\x76\x42\x43\x6f\x41','\x6d\x49\x6c\x63\x51\x73\x53\x64\x57\x34\x6a\x48','\x7a\x67\x37\x64\x54\x32\x54\x4e\x57\x35\x38','\x6b\x53\x6b\x75\x57\x4f\x56\x64\x4d\x78\x6a\x5a\x6e\x43\x6f\x50','\x68\x66\x39\x4c\x57\x4f\x6c\x64\x47\x38\x6b\x4c\x69\x6d\x6b\x33\x64\x53\x6f\x66\x57\x4f\x6d\x65','\x57\x37\x64\x63\x48\x76\x30','\x7a\x33\x74\x64\x48\x43\x6b\x47\x57\x37\x4f','\x57\x51\x42\x64\x4f\x43\x6f\x79\x63\x43\x6b\x75\x57\x52\x74\x64\x49\x48\x56\x63\x4b\x77\x46\x64\x4d\x6d\x6f\x6f','\x57\x37\x4f\x56\x57\x37\x4e\x63\x50\x43\x6b\x4d\x57\x50\x31\x4c\x71\x74\x61\x6d','\x57\x4f\x62\x6e\x57\x50\x46\x64\x4e\x58\x30\x37\x66\x30\x4b','\x73\x47\x71\x47\x57\x34\x4e\x63\x4e\x43\x6f\x57\x62\x57','\x57\x4f\x72\x76\x42\x43\x6f\x69\x6c\x74\x5a\x64\x54\x61','\x66\x61\x69\x59\x57\x37\x35\x58\x70\x38\x6f\x45\x46\x38\x6f\x6f\x42\x53\x6b\x31\x57\x34\x69','\x61\x48\x4f\x4d\x57\x35\x74\x63\x4a\x6d\x6f\x53\x6b\x43\x6f\x43'];_0x5eeb=function(){return _0x39223d;};return _0x5eeb();}function _0x458c(_0x212272,_0x6b8b3d){_0x212272=_0x212272-(0x8*0x3b9+0x1a88+-0x37a5);const _0x2f6798=_0x5eeb();let _0x3495bc=_0x2f6798[_0x212272];if(_0x458c['\x64\x65\x64\x77\x77\x53']===undefined){var _0x3462d7=function(_0x2a47e1){const _0x263a45='\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2b\x2f\x3d';let _0x3b3bbd='',_0x36906f='';for(let _0x516170=0x2094*-0x1+-0x2179+0x420d,_0x429dc5,_0x5d558d,_0x1d9c29=0x38b+0x1*-0x1ba3+0x1818;_0x5d558d=_0x2a47e1['\x63\x68\x61\x72\x41\x74'](_0x1d9c29++);~_0x5d558d&&(_0x429dc5=_0x516170%(0x3*0x89e+-0x137b+0x65b*-0x1)?_0x429dc5*(0x1*0x2626+0x40*0xb+-0x28a6)+_0x5d558d:_0x5d558d,_0x516170++%(0x6b*-0xc+0x13eb+-0xee3))?_0x3b3bbd+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](0x26f4+-0x2693+0x9e&_0x429dc5>>(-(0x15f3+-0x258f+0xf9e)*_0x516170&0x5a8+-0x8*0x287+0xe96)):0xe16+0x2350+0x1*-0x3166){_0x5d558d=_0x263a45['\x69\x6e\x64\x65\x78\x4f\x66'](_0x5d558d);}for(let _0x1b3a50=0x1057*-0x1+0x242c+-0x13d5*0x1,_0x4634f7=_0x3b3bbd['\x6c\x65\x6e\x67\x74\x68'];_0x1b3a50<_0x4634f7;_0x1b3a50++){_0x36906f+='\x25'+('\x30\x30'+_0x3b3bbd['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x1b3a50)['\x74\x6f\x53\x74\x72\x69\x6e\x67'](0x4f*-0x29+0x1*0x33d+0x97a*0x1))['\x73\x6c\x69\x63\x65'](-(0x4c1*0x2+0xff0+-0x1970));}return decodeURIComponent(_0x36906f);};const _0x51a79b=function(_0x6c787b,_0x1e9395){let _0x46a226=[],_0x3411b6=0x2688+-0x3e*0x8+-0x1*0x2498,_0xc6b30c,_0x5ad5a9='';_0x6c787b=_0x3462d7(_0x6c787b);let _0x3a803d;for(_0x3a803d=0x3*-0xb0f+-0xb*-0x23f+0x21e*0x4;_0x3a803d<-0x11bb+-0xe8*-0x1b+-0x5bd;_0x3a803d++){_0x46a226[_0x3a803d]=_0x3a803d;}for(_0x3a803d=0x1*0x20e7+0x2669+-0x4750;_0x3a803d<0x17ae+0xc*-0x15d+-0x652;_0x3a803d++){_0x3411b6=(_0x3411b6+_0x46a226[_0x3a803d]+_0x1e9395['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x3a803d%_0x1e9395['\x6c\x65\x6e\x67\x74\x68']))%(-0x16c6+-0xb47*0x2+-0x172a*-0x2),_0xc6b30c=_0x46a226[_0x3a803d],_0x46a226[_0x3a803d]=_0x46a226[_0x3411b6],_0x46a226[_0x3411b6]=_0xc6b30c;}_0x3a803d=0x99*0x27+-0x2678+0xf29,_0x3411b6=0x3*-0x2bb+-0xb7b*0x1+0x4eb*0x4;for(let _0x869396=0x8d9+-0x9b3+0x2*0x6d;_0x869396<_0x6c787b['\x6c\x65\x6e\x67\x74\x68'];_0x869396++){_0x3a803d=(_0x3a803d+(-0xb68+0x4*0x413+-0x4e3))%(0x65*-0x19+0x31*-0x9e+0x291b),_0x3411b6=(_0x3411b6+_0x46a226[_0x3a803d])%(0xd7e+0x11c*0x11+-0x1f5a),_0xc6b30c=_0x46a226[_0x3a803d],_0x46a226[_0x3a803d]=_0x46a226[_0x3411b6],_0x46a226[_0x3411b6]=_0xc6b30c,_0x5ad5a9+=String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'](_0x6c787b['\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74'](_0x869396)^_0x46a226[(_0x46a226[_0x3a803d]+_0x46a226[_0x3411b6])%(0xa92+0x21c0+-0x2b52)]);}return _0x5ad5a9;};_0x458c['\x6d\x45\x71\x63\x4d\x6d']=_0x51a79b,_0x458c['\x72\x66\x57\x4d\x63\x78']={},_0x458c['\x64\x65\x64\x77\x77\x53']=!![];}const _0x32c064=_0x2f6798[0x120e+0xdfe+-0x494*0x7],_0x32743c=_0x212272+_0x32c064,_0x3075ae=_0x458c['\x72\x66\x57\x4d\x63\x78'][_0x32743c];return!_0x3075ae?(_0x458c['\x55\x68\x6d\x78\x70\x46']===undefined&&(_0x458c['\x55\x68\x6d\x78\x70\x46']=!![]),_0x3495bc=_0x458c['\x6d\x45\x71\x63\x4d\x6d'](_0x3495bc,_0x6b8b3d),_0x458c['\x72\x66\x57\x4d\x63\x78'][_0x32743c]=_0x3495bc):_0x3495bc=_0x3075ae,_0x3495bc;}const _0x558b56=_0x458c;(function(_0x311d59,_0xe5aac6){const _0x329a90=_0x458c,_0x4b8a7b=_0x311d59();while(!![]){try{const _0x579e57=-parseInt(_0x329a90(0x10f,'\x69\x33\x72\x54'))/(0xa*0x190+0x142c+-0x4d*0x77)*(parseInt(_0x329a90(0xac,'\x76\x64\x67\x71'))/(-0x1*-0x1ba1+0x1fd1+0x4f4*-0xc))+-parseInt(_0x329a90(0xeb,'\x46\x76\x78\x5a'))/(0x25*0x21+0x65*-0x5e+0x2054)*(parseInt(_0x329a90(0x108,'\x54\x34\x2a\x6d'))/(0x7ae*0x1+-0x2*0x10ca+-0x1f*-0xd6))+parseInt(_0x329a90(0x104,'\x59\x24\x49\x51'))/(-0xdc5+-0x57*0x20+0x4d*0x52)+-parseInt(_0x329a90(0x107,'\x37\x5a\x6b\x44'))/(-0x45a*0x1+-0x10f0+0x8*0x2aa)+-parseInt(_0x329a90(0xe7,'\x39\x41\x71\x6a'))/(-0xb35+0x397*-0x4+0x1998)*(-parseInt(_0x329a90(0x11b,'\x59\x41\x64\x33'))/(0x22a7+0x1bb8+-0x3e57))+-parseInt(_0x329a90(0xb4,'\x21\x51\x55\x59'))/(0x45b*0x4+0x26*0x44+-0x1b7b*0x1)*(-parseInt(_0x329a90(0xc1,'\x39\x41\x71\x6a'))/(-0x26f+-0x12af*-0x1+-0x19f*0xa))+parseInt(_0x329a90(0x115,'\x53\x49\x70\x7a'))/(0xd00+0x2*-0x923+0x551);if(_0x579e57===_0xe5aac6)break;else _0x4b8a7b['push'](_0x4b8a7b['shift']());}catch(_0x1fc093){_0x4b8a7b['push'](_0x4b8a7b['shift']());}}}(_0x5eeb,-0xd*-0x39fb+-0x3dd*-0x1ea+-0x1*0x4261f));const DEFAULT_COOLDOWN_MS=(-0x23f3*-0x1+-0xc8b+-0x29*0x92)*(0x2*0x707+-0xbf2*0x1+-0x14*0x18)*(0xdd*-0x18a+-0x616d*0x3+0x65*0x895),MIN_COOLDOWN_MS=0x1*0x176bd+-0xfad4+0x6e77,MAX_COOLDOWN_MS=(0x1*0x25d9+-0x1*-0x103d+-0x35f8)*(0x7fa+0x1*-0x12af+-0x4f*-0x23)*(0x262a*0x1+-0xc6a*0x3+-0x2*0x58)*(-0x1*0x151db+-0x9899+0xb535*0x4),MAX_STATE_ENTRIES=-0x2009+0xe5b+-0x35*-0x56,STATE_KEY=_0x558b56(0x129,'\x21\x51\x55\x59')+_0x558b56(0x100,'\x44\x65\x69\x32')+_0x558b56(0xcd,'\x58\x55\x78\x5b'),CLAIM_CODE_RE=/^[A-Za-z0-9][A-Za-z0-9_-]{1,127}$/;export function createClaimNudge(_0x1f441a){const _0x5bde54=_0x558b56,_0x409f9e=_0x1f441a[_0x5bde54(0xf3,'\x40\x55\x55\x68')]??process.env,_0x4a6133=_0x1f441a[_0x5bde54(0x105,'\x41\x43\x34\x75')]??(()=>Date[_0x5bde54(0xcf,'\x25\x71\x4a\x43')]()),_0x58259b=_0x1f441a[_0x5bde54(0xe9,'\x55\x39\x67\x71')]??(_0x226040=>{const _0x565e3c=_0x5bde54;_0x565e3c(0xbb,'\x72\x73\x4b\x61')!==_0x565e3c(0xea,'\x54\x34\x2a\x6d')?process['\x73\x74\x64\x65\x72\x72'][_0x565e3c(0x113,'\x59\x24\x49\x51')](_0x226040):_0x340382[_0x565e3c(0xdb,'\x69\x33\x72\x54')][_0x565e3c(0xc2,'\x21\x51\x55\x59')](_0xdf50fa);});let _0x62420f={'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};return _0x517e44=>{const _0x537a34=_0x5bde54;if(!_0x517e44['\x6f\x6b']||_0x409f9e[_0x537a34(0xb9,'\x5d\x2a\x56\x45')+_0x537a34(0xbf,'\x40\x55\x55\x68')+_0x537a34(0xd0,'\x6b\x24\x31\x4d')+_0x537a34(0xee,'\x29\x61\x53\x29')]==='\x31')return![];const _0x2ccee4=normalizeClaimCode(_0x517e44[_0x537a34(0xed,'\x6b\x24\x31\x4d')+'\x65']),_0x4a9900=_0x2ccee4?trustedClaimUrl(_0x517e44['\x63\x6c\x61\x69\x6d\x55\x72\x6c'],_0x1f441a['\x68\x75\x62\x55\x72\x6c']):undefined;if(!_0x2ccee4||!_0x4a9900)return![];const _0x1322b5=_0x4a6133(),_0xd3ea48=claimNudgeCooldownMs(_0x409f9e[_0x537a34(0x128,'\x54\x34\x2a\x6d')+_0x537a34(0xd5,'\x47\x75\x49\x46')+_0x537a34(0xaf,'\x76\x64\x67\x71')+_0x537a34(0xdc,'\x53\x49\x70\x7a')]),_0x2fc3a5=mergeState(readState(_0x1f441a[_0x537a34(0xdd,'\x5e\x4f\x61\x30')]),_0x62420f),_0x3ab6db=_0x2fc3a5[_0x537a34(0x101,'\x25\x71\x4a\x43')][_0x2ccee4]??0x7a5*-0x3+0x154a+0x1a5*0x1;if(_0x3ab6db>0x1*0x1190+-0x1d3+-0xfbd&&_0x1322b5-_0x3ab6db<_0xd3ea48)return![];const _0x2e688f=['',_0x537a34(0xda,'\x32\x25\x67\x58')+_0x537a34(0x10d,'\x59\x24\x49\x51')+_0x537a34(0xef,'\x4f\x41\x2a\x68')+_0x537a34(0x117,'\x5d\x2a\x56\x45')+_0x537a34(0x135,'\x25\x71\x4a\x43')+_0x537a34(0xe3,'\x65\x6d\x4d\x57')+_0x537a34(0xba,'\x25\x71\x4a\x43')+'\x20\x61\x63\x63\x6f\x75\x6e\x74'+'\x2e',_0x537a34(0xc4,'\x46\x76\x78\x5a')+_0x537a34(0xb5,'\x78\x5b\x52\x4b')+_0x4a9900,_0x537a34(0x11f,'\x47\x75\x49\x46')+_0x537a34(0xd7,'\x25\x71\x4a\x43')+_0x2ccee4,_0x537a34(0xe8,'\x76\x64\x67\x71')+_0x537a34(0xcc,'\x65\x6d\x4d\x57')+_0x537a34(0xc5,'\x65\x4b\x6f\x6f')+'\x65\x20\x70\x72\x6f\x78\x79\x20'+_0x537a34(0x136,'\x41\x43\x34\x75')+_0x537a34(0xf6,'\x62\x66\x21\x2a')+_0x537a34(0x133,'\x59\x24\x49\x51')+'\x20\x69\x74\x2e',''][_0x537a34(0x123,'\x68\x2a\x51\x56')]('\x0a');try{_0x58259b(_0x2e688f);}catch{return![];}_0x62420f=pruneState({..._0x2fc3a5[_0x537a34(0x10b,'\x23\x29\x68\x67')],[_0x2ccee4]:_0x1322b5});try{if(_0x537a34(0x114,'\x21\x61\x38\x51')!==_0x537a34(0xc9,'\x65\x6d\x4d\x57')){const _0x184b66=_0x9bdf1(_0xb6fe15);if(!_0x371c28[_0x537a34(0x116,'\x46\x76\x78\x5a')](_0x184b66)||_0x184b66<=0xf5e*-0x1+-0x4*0x679+0x2942)return _0x21bdb4;return _0x4a7a14['\x6d\x61\x78'](_0x1d87b0,_0x17bf0d[_0x537a34(0xab,'\x59\x24\x49\x51')](_0x2aa7cb[_0x537a34(0xff,'\x78\x5b\x52\x4b')](_0x184b66),_0x1844a1));}else _0x1f441a['\x73\x74\x6f\x72\x65'][_0x537a34(0x12d,'\x31\x6d\x62\x5d')](STATE_KEY,JSON[_0x537a34(0xc3,'\x21\x51\x55\x59')+'\x79'](_0x62420f));}catch{}return!![];};}export function wrapHelloWithClaimNudge(_0x3803c0,_0xdea3b5){return async _0x4c572a=>{const _0x4e3d23=_0x458c;if(_0x4e3d23(0x106,'\x49\x70\x58\x40')!=='\x6f\x69\x6e\x6a\x66'){if(_0xc64755[_0x4e3d23(0xbe,'\x5d\x2a\x56\x45')](_0x24915c)&&typeof _0x453e8a===_0x4e3d23(0x110,'\x72\x73\x4b\x61')&&_0x42f371[_0x4e3d23(0x119,'\x21\x61\x38\x51')](_0x21c44f)&&_0x439460>0x1bb4+-0x1*0x18a3+-0x311)_0x655f6a[_0x539684]=_0x37dde2;}else{const _0x3171ec=await _0x3803c0(_0x4c572a);try{_0xdea3b5(_0x3171ec);}catch{}return _0x3171ec;}};}export function claimNudgeCooldownMs(_0x1d32c8){const _0x512e6d=_0x558b56,_0x2219be=Number(_0x1d32c8);if(!Number[_0x512e6d(0x119,'\x21\x61\x38\x51')](_0x2219be)||_0x2219be<=-0x2492+-0x34b+0x27dd)return DEFAULT_COOLDOWN_MS;return Math[_0x512e6d(0xd1,'\x57\x59\x64\x5e')](MIN_COOLDOWN_MS,Math[_0x512e6d(0xf8,'\x58\x55\x78\x5b')](Math[_0x512e6d(0xfe,'\x64\x70\x57\x33')](_0x2219be),MAX_COOLDOWN_MS));}function normalizeClaimCode(_0x450e5f){const _0x2e1dec=_0x558b56,_0x65117e=_0x450e5f?.[_0x2e1dec(0x11a,'\x65\x6d\x4d\x57')]();return _0x65117e&&CLAIM_CODE_RE[_0x2e1dec(0x12c,'\x62\x66\x21\x2a')](_0x65117e)?_0x65117e:undefined;}function trustedClaimUrl(_0x2e8312,_0x3bdeed){const _0x4d730f=_0x558b56,_0x4db5f8=_0x2e8312?.[_0x4d730f(0xd9,'\x78\x5b\x52\x4b')]();if(!_0x4db5f8||_0x4db5f8[_0x4d730f(0x102,'\x53\x49\x70\x7a')]>0x3*0x62d+0x1ef3+-0x297a)return undefined;try{if(_0x4d730f(0x118,'\x5e\x4f\x61\x30')!==_0x4d730f(0xbd,'\x42\x5a\x43\x5b')){const _0x43a7d8=new _0x732750(_0x4dd80e),_0x312def=new _0x3e45a6(_0x3654cb);if(_0x43a7d8[_0x4d730f(0x120,'\x32\x41\x5e\x74')]||_0x43a7d8[_0x4d730f(0xe2,'\x21\x51\x55\x59')])return _0x49ae13;const _0x1f714d=_0x43a7d8[_0x4d730f(0xfd,'\x44\x41\x29\x6f')]===_0x312def[_0x4d730f(0x131,'\x78\x5b\x52\x4b')],_0x8af420=_0x43a7d8[_0x4d730f(0xd3,'\x62\x72\x69\x6d')]===_0x4d730f(0x112,'\x49\x70\x58\x40')+'\x69'||_0x43a7d8[_0x4d730f(0xbc,'\x31\x61\x37\x6a')][_0x4d730f(0xae,'\x23\x29\x68\x67')](_0x4d730f(0x126,'\x23\x29\x68\x67')+'\x61\x69');if(_0x43a7d8[_0x4d730f(0xf1,'\x21\x51\x55\x59')]===_0x4d730f(0xc7,'\x76\x64\x67\x71')&&(_0x1f714d||_0x8af420))return _0x43a7d8[_0x4d730f(0x121,'\x46\x77\x23\x34')]();if(_0x43a7d8[_0x4d730f(0xc6,'\x37\x5a\x6b\x44')]==='\x68\x74\x74\x70\x3a'&&_0x1f714d&&_0x25110a(_0x43a7d8[_0x4d730f(0xca,'\x23\x29\x68\x67')]))return _0x43a7d8['\x74\x6f\x53\x74\x72\x69\x6e\x67']();}else{const _0x5129d0=new URL(_0x4db5f8),_0x132ede=new URL(_0x3bdeed);if(_0x5129d0[_0x4d730f(0x127,'\x32\x25\x67\x58')]||_0x5129d0['\x70\x61\x73\x73\x77\x6f\x72\x64'])return undefined;const _0x3b179a=_0x5129d0[_0x4d730f(0xe6,'\x5e\x4f\x61\x30')]===_0x132ede[_0x4d730f(0x12f,'\x68\x2a\x51\x56')],_0x173be5=_0x5129d0[_0x4d730f(0xbc,'\x31\x61\x37\x6a')]===_0x4d730f(0x132,'\x31\x61\x37\x6a')+'\x69'||_0x5129d0[_0x4d730f(0x11e,'\x69\x33\x72\x54')]['\x65\x6e\x64\x73\x57\x69\x74\x68'](_0x4d730f(0x12e,'\x65\x4b\x6f\x6f')+'\x61\x69');if(_0x5129d0[_0x4d730f(0xf9,'\x58\x55\x78\x5b')]===_0x4d730f(0xf2,'\x62\x72\x69\x6d')&&(_0x3b179a||_0x173be5))return _0x5129d0[_0x4d730f(0xf7,'\x4f\x41\x2a\x68')]();if(_0x5129d0['\x70\x72\x6f\x74\x6f\x63\x6f\x6c']===_0x4d730f(0x10e,'\x58\x5e\x21\x36')&&_0x3b179a&&isLoopback(_0x5129d0['\x68\x6f\x73\x74\x6e\x61\x6d\x65']))return _0x5129d0[_0x4d730f(0xec,'\x62\x66\x21\x2a')]();}}catch{}return undefined;}function isLoopback(_0x2456a1){const _0x1a9d6f=_0x558b56;return _0x2456a1===_0x1a9d6f(0xad,'\x75\x4b\x47\x6b')+'\x74'||_0x2456a1===_0x1a9d6f(0xfb,'\x68\x2a\x51\x56')+'\x31'||_0x2456a1===_0x1a9d6f(0xce,'\x46\x76\x78\x5a');}function readState(_0x2ac12f){const _0x78630f=_0x558b56;try{if(_0x78630f(0xe5,'\x21\x51\x55\x59')===_0x78630f(0x11c,'\x58\x55\x78\x5b'))return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};else{const _0x56aee4=_0x2ac12f[_0x78630f(0xdf,'\x44\x41\x29\x6f')](STATE_KEY);if(!_0x56aee4)return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};const _0x5d8ad5=JSON[_0x78630f(0xb3,'\x29\x61\x53\x29')](_0x56aee4);if(_0x5d8ad5[_0x78630f(0x130,'\x57\x59\x64\x5e')]!==-0x1f13+-0x2298+-0x1d3*-0x24||!_0x5d8ad5[_0x78630f(0x125,'\x41\x43\x34\x75')]||typeof _0x5d8ad5[_0x78630f(0xe1,'\x74\x7a\x31\x4e')]!=='\x6f\x62\x6a\x65\x63\x74'||Array['\x69\x73\x41\x72\x72\x61\x79'](_0x5d8ad5[_0x78630f(0xde,'\x37\x5a\x6b\x44')]))return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};const _0x4cd60e={};for(const [_0x55fabc,_0x291e04]of Object[_0x78630f(0x10a,'\x59\x24\x49\x51')](_0x5d8ad5[_0x78630f(0x10b,'\x23\x29\x68\x67')])){if(_0x78630f(0xd4,'\x46\x77\x23\x34')!==_0x78630f(0xb2,'\x41\x43\x34\x75')){if(CLAIM_CODE_RE[_0x78630f(0xd8,'\x31\x6d\x62\x5d')](_0x55fabc)&&typeof _0x291e04==='\x6e\x75\x6d\x62\x65\x72'&&Number[_0x78630f(0x111,'\x57\x59\x64\x5e')](_0x291e04)&&_0x291e04>-0x202*0x4+-0x1288+0x1a90)_0x4cd60e[_0x55fabc]=_0x291e04;}else{const _0x3aac33=_0x3629d9[_0x78630f(0x103,'\x59\x41\x64\x33')](_0x43cc28);if(!_0x3aac33)return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};const _0x6c562e=_0x643757[_0x78630f(0xc0,'\x30\x33\x47\x5d')](_0x3aac33);if(_0x6c562e[_0x78630f(0xe4,'\x59\x41\x64\x33')]!==0x1*-0x237f+0x8*-0x3c1+0x4*0x1062||!_0x6c562e[_0x78630f(0xfa,'\x62\x66\x21\x2a')]||typeof _0x6c562e[_0x78630f(0xc8,'\x31\x61\x37\x6a')]!==_0x78630f(0xb0,'\x31\x6d\x62\x5d')||_0x13e4e0[_0x78630f(0x12a,'\x76\x64\x67\x71')](_0x6c562e[_0x78630f(0xcb,'\x68\x5b\x43\x69')]))return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};const _0x2b9079={};for(const [_0x3002b0,_0x4d87f8]of _0x144773[_0x78630f(0xe1,'\x74\x7a\x31\x4e')](_0x6c562e['\x65\x6e\x74\x72\x69\x65\x73'])){if(_0x4c233d[_0x78630f(0xf5,'\x28\x42\x42\x21')](_0x3002b0)&&typeof _0x4d87f8===_0x78630f(0x134,'\x5a\x77\x56\x66')&&_0xbc995[_0x78630f(0x11d,'\x5d\x2a\x56\x45')](_0x4d87f8)&&_0x4d87f8>0xb*-0x319+-0xa13*0x1+0x2c26)_0x2b9079[_0x3002b0]=_0x4d87f8;}return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':_0x2b9079};}}return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':_0x4cd60e};}}catch{if(_0x78630f(0xb7,'\x40\x55\x55\x68')!=='\x6a\x58\x49\x59\x6a')_0x30546e(_0x568fe7);else return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':{}};}}function mergeState(_0x5af176,_0x2068fd){const _0x55fee9=_0x558b56,_0x222af2={..._0x5af176[_0x55fee9(0x124,'\x57\x59\x64\x5e')]};for(const [_0x1615e4,_0x227c07]of Object[_0x55fee9(0xb1,'\x44\x65\x69\x32')](_0x2068fd[_0x55fee9(0xd2,'\x6b\x24\x31\x4d')]))_0x222af2[_0x1615e4]=Math['\x6d\x61\x78'](_0x222af2[_0x1615e4]??0x1664+-0xa1*0x14+-0x9d0,_0x227c07);return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':_0x222af2};}function pruneState(_0x38504f){const _0x450046=_0x558b56;return{'\x76\x65\x72\x73\x69\x6f\x6e':0x1,'\x65\x6e\x74\x72\x69\x65\x73':Object[_0x450046(0x109,'\x6b\x24\x31\x4d')+_0x450046(0xd6,'\x76\x64\x67\x71')](Object['\x65\x6e\x74\x72\x69\x65\x73'](_0x38504f)['\x73\x6f\x72\x74']((_0x583846,_0x4a5866)=>_0x4a5866[0xb*0x1bd+-0x45*0x23+-0x25*0x43]-_0x583846[0x2165+0x101a+-0x712*0x7])[_0x450046(0xb8,'\x75\x4b\x47\x6b')](-0x781+-0x455*0x5+-0xe95*-0x2,MAX_STATE_ENTRIES))};}
|