I made a code for you to snatch from me, it allows you to create clusters and manage clusters from one panel.
You can use it with secrets on everpanel and then get an external signer to sign extensions and instance acquisitions.
Deploy the image first everstoring/everstoring:latest--sec--high--sec1--wallet_seed_encrypted--sec2--otp--sec3--admin_public_keys to an everpanel node, then go to the url:gptcp1/setup to create your secrets.
Add those secrets to everpanel, you can add them comma seperated to have multiple ones. Same goes for wallet seed, but you should only use one wallet (can be encrypted with multiple different private keys in setup file).
Get your signer in url:gptcp1/signer, put in your privatekey and otp and you're ready to sign on the interface.
file structure:
/Dockerfile
/start.sh
/supervisord.conf
/package.json
/server.js
Dockerfile
Code: Select all
FROM evernode/sashimono:hp.latest-ubt.20.04-njs.20
ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && \
apt install -y tzdata && \
ln -fs /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
dpkg-reconfigure --frontend noninteractive tzdata && \
apt install -y curl zip unzip && \
curl -qL https://www.npmjs.com/install.sh | bash && \
apt install -y openssh-server openssl sudo bash nano && \
apt-get install -y supervisor && \
mkdir -p /var/log/supervisor && \
rm -rf /var/lib/apt/lists/*
RUN useradd -m -s /bin/bash everstoring && \
echo "everstoring:default" | chpasswd && \
usermod -aG sudo everstoring && \
echo "everstoring ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
RUN mkdir /var/run/sshd && \
echo "PermitRootLogin no" >> /etc/ssh/sshd_config && \
echo "ListenAddress 0.0.0.0" >> /etc/ssh/sshd_config
COPY start.sh /start.sh
COPY supervisord.conf /home/everstoring/supervisord.conf
COPY public /home/everstoring/public
COPY clustering /home/everstoring/clustering
COPY contracts /home/everstoring/contracts
COPY package.json /home/everstoring/package.json
COPY node_modules /home/everstoring/node_modules
COPY server.js /home/everstoring/server.js
RUN chmod +x /start.sh
RUN chmod +x /home/everstoring/clustering/evdevkit-extender.sh
RUN chmod +x /home/everstoring/clustering/evdevkit-runner.sh
VOLUME ["/home/"]
WORKDIR /home/everstoring
ENTRYPOINT ["/start.sh"]Code: Select all
#!/bin/bash
if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
ssh-keygen -A
fi
if [ -f /contract/env.vars ]; then
source /contract/env.vars
if [ -n "$EXTERNAL_GPTCP1_PORT" ]; then
sed -i "s/36525/${EXTERNAL_GPTCP1_PORT}/g" /home/everstoring/server.js
fi
fi
userport="$(
awk '
$0 ~ /"user"/ { user_block=1 }
user_block && $0 ~ /"port"/ {
gsub(/[ ,]/, "", $2)
gsub(/[^0-9]/, "", $2)
print $2
exit
}
' "/contract/cfg/hp.cfg"
)"
if [[ -z "${userport}" ]]; then
echo "Could not extract user.port from /contract/cfg/hp.cfg"
exit 1
fi
sed -i "s/__userport__/${userport}/g" /home/everstoring/public/index.html
ADMIN_KEY_DIR="/home/everstoring/config"
ADMIN_PUBLIC_KEY_FILE="$ADMIN_KEY_DIR/admin_public_key"
mkdir -p "$ADMIN_KEY_DIR"
chmod 700 "$ADMIN_KEY_DIR"
if [ ! -f "$ADMIN_PUBLIC_KEY_FILE" ]; then
admin_pubkey="$(
awk '
$0 ~ /"contract"/ { contract_block=1 }
contract_block && $0 ~ /"bin_args"/ {
gsub(/[",]/, "", $2)
print $2
exit
}
' "/contract/cfg/hp.cfg"
)"
if [[ -z "${admin_pubkey}" ]]; then
echo "Could not extract contract.bin_args admin public key from /contract/cfg/hp.cfg"
exit 1
fi
echo "$admin_pubkey" > "$ADMIN_PUBLIC_KEY_FILE"
chmod 600 "$ADMIN_PUBLIC_KEY_FILE"
echo "Admin public key saved to $ADMIN_PUBLIC_KEY_FILE"
else
echo "Admin public key already exists at $ADMIN_PUBLIC_KEY_FILE"
fi
check_service() {
local service_name="$1"
local start_command="$2"
if ! pgrep -f "$service_name" > /dev/null; then
echo "$service_name is not running. Restarting..."
nohup bash -c "$start_command" > /dev/null 2>&1 &
echo "$service_name restarted."
else
echo "$service_name is running."
fi
}
while true; do
check_service "supervisord" "/usr/bin/supervisord -c /home/everstoring/supervisord.conf"
sleep 10
doneCode: Select all
[supervisord]
nodaemon=true
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid
[unix_http_server]
file=/var/run/supervisor.sock
chmod=0770
chown=everstoring:everstoring
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock
[program:sshd]
startretries=100
startsecs=15
command=/usr/sbin/sshd -D
autostart=false
autorestart=false
stderr_logfile=/var/log/supervisor/sshd.err.log
stdout_logfile=/var/log/supervisor/sshd.out.log
priority=10
[program:hotpocket]
startretries=100
startsecs=15
command=/usr/local/bin/hotpocket/hpcore run /contract
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/hotpocket.err.log
stdout_logfile=/var/log/supervisor/hotpocket.out.log
priority=20
[program:everstoring]
startretries=100
startsecs=15
command=/usr/bin/node /home/everstoring/server.js
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/everstoring.err.log
stdout_logfile=/var/log/supervisor/everstoring.out.log
priority=30package.json
Code: Select all
{
"name": "everstoring",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^5.2.1",
"jsqr": "^1.4.0",
"qrcode": "^1.5.4",
"qrcode-generator": "^2.0.4"
}
}
Code: Select all
const express = require("express");
const https = require("https");
const net = require("net");
const fs = require("fs");
const fsp = require("fs/promises");
const path = require("path");
const { spawn } = require("child_process");
const crypto = require("crypto");
const QRCode = require("qrcode");
const app = express();
const PORT = 36525;
const BASE_DIR = "/home/everstoring";
const PUBLIC_DIR = path.join(BASE_DIR, "public");
const INSTANCES_DIR = path.join(PUBLIC_DIR, "instances");
const CLUSTERING_DIR = path.join(BASE_DIR, "clustering");
const LOG_DIR = path.join(CLUSTERING_DIR, "logs");
const CONTRACTS_DIR = path.join(BASE_DIR, "contracts");
const DEPLOYMENTS_DIR = path.join(BASE_DIR, "deployments");
const DEFAULT_ACQUIRE_IMAGE = "everstoring/everstoring:latest";
const EXTENDER = path.join(CLUSTERING_DIR, "evdevkit-extender.sh");
const EVDEVKIT_BIN = path.join(CLUSTERING_DIR, "evdevkit");
const ADMIN_PUBLIC_KEY_FILE = path.join(BASE_DIR, "config", "admin_public_key");
const HOST_APIS_FILE = path.join(BASE_DIR, "config", "host_apis.json");
const DASHBOARD_SETTINGS_FILE = path.join(BASE_DIR, "config", "dashboard_settings.json");
const MANUAL_EXTENSIONS_FILE = path.join(BASE_DIR, "config", "manual_extensions.json");
const MANUAL_EXTENSION_EXPIRE_AFTER_CREATED_MS = 60 * 60 * 1000;
const SSL_CERT = "/contract/cfg/tlscert.pem";
const SSL_KEY = "/contract/cfg/tlskey.pem";
const ENCRYPTED_SEED_SECRET_PATH = "/run/secrets/wallet_seed_encrypted";
const ADMIN_PUBLIC_KEYS_SECRET_FILE = "/run/secrets/admin_public_keys";
const OTP_SECRET_PATH = "/run/secrets/otp";
const ADMIN_KEY_ENVELOPE_PREFIX = "evadmin:v1:";
app.use(express.json({ limit: "10mb" }));
app.use((req, res, next) => {
res.setHeader("X-Content-Type-Options", "nosniff");
res.setHeader("X-Frame-Options", "DENY");
res.setHeader("Permissions-Policy", "camera=(self)");
next();
});
function allowSignRequestCors(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS");
res.setHeader(
"Access-Control-Allow-Headers",
"Content-Type, Accept, x-admin-key-envelope"
);
res.setHeader("Access-Control-Max-Age", "86400");
if (req.method === "OPTIONS") {
return res.sendStatus(204);
}
next();
}
const signRequests = new Map();
const SIGN_REQUEST_TTL_MS = Number(process.env.SIGN_REQUEST_TTL_MS || 10 * 60 * 1000);
function makePublicBaseUrl(req) {
const proto = req.headers["x-forwarded-proto"] || req.protocol || "https";
const host = req.headers["x-forwarded-host"] || req.headers.host;
return `${proto}://${host}`;
}
function cleanupSignRequests() {
const now = Date.now();
for (const [id, request] of signRequests.entries()) {
if (request.expiresAtMs <= now || request.status === "consumed") {
signRequests.delete(id);
}
}
}
setInterval(cleanupSignRequests, 10 * 60 * 1000).unref();
app.use("/api/sign-request", allowSignRequestCors);
app.post("/api/sign-request", express.json(), (req, res) => {
const actionName = String(req.body.actionName || "dashboard action").trim();
const requestId = crypto.randomBytes(18).toString("base64url");
const now = Date.now();
const expiresAtMs = now + SIGN_REQUEST_TTL_MS;
const baseUrl = makePublicBaseUrl(req);
const request = {
requestId,
actionName,
status: "pending",
createdAt: new Date(now).toISOString(),
expiresAt: new Date(expiresAtMs).toISOString(),
expiresAtMs,
adminEnvelope: "",
};
signRequests.set(requestId, request);
res.json({
ok: true,
requestId,
appName: "Everstoring",
actionName,
signUrl: `${baseUrl}/api/sign-request/${requestId}`,
submitUrl: `${baseUrl}/api/sign-request/${requestId}`,
expiresAt: request.expiresAt,
});
});
app.get("/api/sign-request/:requestId", (req, res) => {
const request = signRequests.get(req.params.requestId);
if (!request) {
return res.status(404).json({
ok: false,
error: "Sign request not found or expired",
});
}
if (request.expiresAtMs <= Date.now()) {
signRequests.delete(req.params.requestId);
return res.status(410).json({
ok: false,
error: "Sign request expired",
});
}
const baseUrl = makePublicBaseUrl(req);
res.json({
ok: true,
requestId: request.requestId,
appName: "Everstoring",
actionName: request.actionName,
submitUrl: `${baseUrl}/api/sign-request/${request.requestId}`,
expiresAt: request.expiresAt,
instructions: "Review this request in EV Signer, then sign and send a fresh evadmin:v1 envelope.",
});
});
function makeAcquireConsoleLogBlock({
address,
clusterMode,
placePortsEnvIntoSeedFolder,
generalEnvExtra,
bootstrapDeployDelaySeconds,
contractId,
savePrivateKeyToSystem = false,
acquireUnl = [],
acquireKnownPeers = [],
instance = {},
bootstrapDeploy = {},
}) {
const sequence = Array.isArray(bootstrapDeploy.sequence)
? bootstrapDeploy.sequence
: [];
const extraEnvLineCount = normalizeExtraGeneralEnvLines(generalEnvExtra).length;
const startLines = [
"",
"=== ACQUIRE MODAL CONSOLE SUMMARY ===",
`Starting acquire for ${address}`,
`Cluster mode: ${clusterMode}`,
`Pass 2 contract: bootstrap_alt / bootstrap2contract`,
`Pass 3 contract: bootstrap / bootstrap_contract`,
`Inject general.env in pass 2: ${placePortsEnvIntoSeedFolder === true}`,
`Extra general.env lines: ${extraEnvLineCount}`,
`Wait before bootstrap deploy: ${bootstrapDeployDelaySeconds}s`,
contractId ? `Acquire contract ID: ${contractId}` : "Acquire contract ID: [new/random]",
`Save acquisition private key to system: ${savePrivateKeyToSystem === true}`,
`Pass 2 bootstrap_alt UNL: acquired node itself`,
`Pass 2 bootstrap_alt known peer: acquired node itself`,
acquireUnl.length
? `Pass 3 restore bootstrap UNL: ${acquireUnl.join(",")}`
: "Pass 3 restore bootstrap UNL: acquired node itself",
acquireKnownPeers.length
? `Pass 3 restore bootstrap known peer: ${acquireKnownPeers.join(",")}`
: "Pass 3 restore bootstrap known peer: acquired node itself",
"",
`Acquire completed: ${instance.instance_id || "[unknown]"}`,
`Contract ID: ${instance.contract_id || "[unknown]"}`,
`Pubkey: ${instance.pubkey || "[unknown]"}`,
`Known peer: ${instance.domain || "[domain]"}:${instance.peer_port || "[peer_port]"}`,
`Waited before deploy sequence: ${bootstrapDeploy.bootstrap_deploy_delay_seconds ?? bootstrapDeployDelaySeconds ?? "[unknown]"}s`,
"",
];
const deployLines = sequence.flatMap((entry, index) => [
`Deploy pass ${index + 1}: ${entry.stage || entry.source || "bootstrap"}`,
` general.env injected: ${entry.place_ports_env_into_seed_folder === true}`,
entry.unl ? ` UNL: ${Array.isArray(entry.unl) ? entry.unl.join(",") : entry.unl}` : "",
entry.known_peers ? ` Known peers: ${Array.isArray(entry.known_peers) ? entry.known_peers.join(",") : entry.known_peers}` : "",
entry.log_file ? ` Log: ${entry.log_file}` : "",
]).filter(Boolean);
return [
...startLines,
...deployLines,
"",
"Done. Acquire + bootstrap_alt/restore deploy completed.",
"=== END ACQUIRE MODAL CONSOLE SUMMARY ===",
"",
].join("\n");
}
function isSafeContractName(value) {
return (
typeof value === "string" &&
/^[A-Za-z0-9._-]+$/.test(value) &&
value !== "." &&
value !== ".." &&
value !== "bundle"
);
}
async function resolveContractDir(contractName) {
const name = String(contractName || "bootstrap").trim();
if (!isSafeContractName(name)) {
throw new Error("Invalid contract folder name");
}
const baseReal = await fsp.realpath(CONTRACTS_DIR);
const fullPath = path.join(CONTRACTS_DIR, name);
const contractReal = await fsp.realpath(fullPath);
if (!contractReal.startsWith(baseReal + path.sep)) {
throw new Error("Contract folder escaped contracts directory");
}
const stat = await fsp.stat(contractReal);
if (!stat.isDirectory()) {
throw new Error("Selected contract is not a folder");
}
return {
name,
dir: contractReal,
};
}
const CONTRACT_DEPLOY_CONFIG_FILE = "contract.deploy.json";
function cleanOptionalString(value) {
const text = String(value || "").trim();
return text || "";
}
function cleanOptionalStringArray(value) {
if (!Array.isArray(value)) return [];
return value
.map((item) => String(item || "").trim())
.filter(Boolean);
}
async function readContractDeployConfig(contractDir) {
const configPath = path.join(contractDir, CONTRACT_DEPLOY_CONFIG_FILE);
if (!fs.existsSync(configPath)) {
return {};
}
const raw = await fsp.readFile(configPath, "utf8");
const parsed = JSON.parse(raw);
const deployBinPath = cleanOptionalString(parsed.deployBinPath);
const deployBinArgs = cleanOptionalString(parsed.deployBinArgs);
const roundtime = Number(parsed.roundtime || parsed.deployRoundtime || 4000);
const unl = cleanOptionalStringArray(
parsed.unl || parsed.knownUnl || parsed.knownUNL || []
);
const knownPeers = cleanOptionalStringArray(
parsed.knownPeers || parsed.knownPeer || []
);
const config = {};
if (deployBinPath) config.deployBinPath = deployBinPath;
if (deployBinArgs) config.deployBinArgs = deployBinArgs;
if (Number.isInteger(roundtime) && roundtime > 0) {
config.roundtime = roundtime;
}
if (unl.length) config.unl = unl;
if (knownPeers.length) config.knownPeers = knownPeers;
return config;
}
app.get("/api/contracts", async (req, res) => {
try {
const entries = await fsp.readdir(CONTRACTS_DIR, { withFileTypes: true });
const folders = entries
.filter((entry) => entry.isDirectory())
.map((entry) => entry.name)
.filter(isSafeContractName)
.sort((a, b) => a.localeCompare(b));
const contracts = [];
for (const name of folders) {
const contractDir = path.join(CONTRACTS_DIR, name);
const deployConfig = await readContractDeployConfig(contractDir);
contracts.push({
name,
path: contractDir,
deployConfig,
});
}
res.json({
ok: true,
contracts,
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/sign-request/:requestId", express.json(), (req, res) => {
const request = signRequests.get(req.params.requestId);
if (!request) {
return res.status(404).json({
ok: false,
error: "Sign request not found or expired",
});
}
if (request.expiresAtMs <= Date.now()) {
signRequests.delete(req.params.requestId);
return res.status(410).json({
ok: false,
error: "Sign request expired",
});
}
const adminEnvelope =
String(req.body.adminEnvelope || "").trim() ||
String(req.headers["x-admin-key-envelope"] || "").trim();
if (!adminEnvelope.startsWith("evadmin:v1:")) {
return res.status(400).json({
ok: false,
error: "Valid evadmin:v1 admin envelope is required",
});
}
request.status = "signed";
request.adminEnvelope = adminEnvelope;
request.signedAt = new Date().toISOString();
res.json({
ok: true,
signed: true,
requestId: request.requestId,
});
});
app.get("/api/sign-request/:requestId/status", (req, res) => {
const request = signRequests.get(req.params.requestId);
if (!request) {
return res.status(404).json({
ok: false,
error: "Sign request not found or expired",
});
}
if (request.expiresAtMs <= Date.now()) {
signRequests.delete(req.params.requestId);
return res.status(410).json({
ok: false,
error: "Sign request expired",
});
}
if (request.status !== "signed") {
return res.json({
ok: true,
status: "pending",
requestId: request.requestId,
expiresAt: request.expiresAt,
});
}
const adminEnvelope = request.adminEnvelope;
request.status = "consumed";
signRequests.delete(request.requestId);
res.json({
ok: true,
status: "signed",
requestId: request.requestId,
adminEnvelope,
});
});
function isSafeName(value) {
return typeof value === "string" && /^[A-Za-z0-9._-]+$/.test(value);
}
function isSafeRunId(value) {
return typeof value === "string" && /^[a-f0-9]{16}$/.test(value);
}
const extendJobs = new Map();
const EXTEND_JOB_TTL_MS = Number(process.env.EXTEND_JOB_TTL_MS || 30 * 60 * 1000);
const EXTEND_JOB_MAX_LOG_CHARS = Number(process.env.EXTEND_JOB_MAX_LOG_CHARS || 2 * 1024 * 1024);
function createExtendJob({ runId, instanceName, address, moments, manual = false }) {
const now = Date.now();
const job = {
runId,
instanceName,
address,
moments,
manual_extension: manual === true,
status: "queued",
createdAt: new Date(now).toISOString(),
updatedAt: new Date(now).toISOString(),
expiresAtMs: now + EXTEND_JOB_TTL_MS,
log: "",
error: "",
extension: null,
};
extendJobs.set(runId, job);
return job;
}
function appendExtendJobLog(runId, message) {
const job = extendJobs.get(runId);
if (!job) {
return;
}
const text = stripAnsi(String(message || ""));
if (!text) {
return;
}
job.log += text;
if (job.log.length > EXTEND_JOB_MAX_LOG_CHARS) {
job.log = `...[trimmed ${job.log.length - EXTEND_JOB_MAX_LOG_CHARS} earlier characters]\n${job.log.slice(-EXTEND_JOB_MAX_LOG_CHARS)}`;
}
job.updatedAt = new Date().toISOString();
job.expiresAtMs = Date.now() + EXTEND_JOB_TTL_MS;
}
function updateExtendJob(runId, updates = {}) {
const job = extendJobs.get(runId);
if (!job) {
return null;
}
Object.assign(job, updates, {
updatedAt: new Date().toISOString(),
expiresAtMs: Date.now() + EXTEND_JOB_TTL_MS,
});
return job;
}
function getExtendJobClientView(job) {
return {
runId: job.runId,
instanceName: job.instanceName,
address: job.address,
moments: job.moments,
manual_extension: job.manual_extension === true,
status: job.status,
createdAt: job.createdAt,
updatedAt: job.updatedAt,
log: job.log,
error: job.error || "",
extension: job.extension || null,
};
}
function cleanupExtendJobs() {
const now = Date.now();
for (const [runId, job] of extendJobs.entries()) {
if (job.expiresAtMs <= now) {
extendJobs.delete(runId);
}
}
}
setInterval(cleanupExtendJobs, 10 * 60 * 1000).unref();
function isPositiveInteger(value) {
return Number.isInteger(value) && value > 0;
}
function safeForFilename(value) {
const cleaned = String(value || "").replace(/[^A-Za-z0-9._-]/g, "");
return cleaned || "unknown";
}
function stripAnsi(value) {
return String(value || "").replace(
/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g,
""
);
}
function nowLog() {
return new Date().toISOString().replace("T", " ").replace("Z", " UTC");
}
async function appendLog(logFile, message) {
await fsp.mkdir(path.dirname(logFile), { recursive: true });
await fsp.appendFile(logFile, message, "utf8");
}
async function pathExists(filePath) {
try {
await fsp.access(filePath);
return true;
} catch {
return false;
}
}
async function findNewestZipInDir(dir) {
try {
const entries = await fsp.readdir(dir, { withFileTypes: true });
const zips = [];
for (const entry of entries) {
const fullPath = path.join(dir, entry.name);
if (entry.isDirectory()) {
const nested = await findNewestZipInDir(fullPath);
if (nested) {
zips.push(nested);
}
} else if (entry.isFile() && entry.name.endsWith(".zip")) {
const stat = await fsp.stat(fullPath);
zips.push({
path: fullPath,
mtimeMs: stat.mtimeMs,
});
}
}
if (!zips.length) {
return null;
}
zips.sort((a, b) => b.mtimeMs - a.mtimeMs);
return zips[0];
} catch {
return null;
}
}
async function findBundleZip({ jobDir, logFile }) {
const candidates = [
// Prefer bundle output created inside this deploy job.
path.join(jobDir, "contract_src", "bundle", "bundle.zip"),
path.join(jobDir, "bundle", "bundle.zip"),
path.join(jobDir, "bundle.zip"),
];
for (const candidate of candidates) {
if (await pathExists(candidate)) {
await fsp.appendFile(
logFile,
`Found bundle candidate: ${candidate}\n`,
"utf8"
);
return candidate;
}
}
const newestInJobDir = await findNewestZipInDir(jobDir);
if (newestInJobDir) {
await fsp.appendFile(
logFile,
`Found newest zip in job dir: ${newestInJobDir.path}\n`,
"utf8"
);
return newestInJobDir.path;
}
return null;
}
function formatUtcTimestamp(ms) {
const date = new Date(Number(ms));
const pad = (n) => String(n).padStart(2, "0");
return [
date.getUTCFullYear(),
"-",
pad(date.getUTCMonth() + 1),
"-",
pad(date.getUTCDate()),
" ",
pad(date.getUTCHours()),
":",
pad(date.getUTCMinutes()),
":",
pad(date.getUTCSeconds()),
].join("");
}
function extractQuoted(output, field) {
const regex = new RegExp(`${field}:\\s*'([^']*)'`);
const match = output.match(regex);
return match ? match[1] : "";
}
function extractNumber(output, field) {
const regex = new RegExp(`${field}:\\s*'?([0-9]+)'?`);
const match = output.match(regex);
return match ? Number(match[1]) : null;
}
function cleanNodeDescription(value) {
const text = String(value || "").trim();
if (!text) {
return "";
}
if (text.length > 200) {
return text.slice(0, 200);
}
return text;
}
function cleanAcquireImage(value) {
const image = String(value || "").trim();
if (!image) {
return "";
}
if (image.length > 200) {
throw new Error("Docker image name is too long");
}
if (!/^[A-Za-z0-9][A-Za-z0-9._/:@-]*$/.test(image)) {
throw new Error("Invalid Docker image name");
}
return image;
}
function normalizeDashboardSettings(settings = {}) {
const defaultAcquireImage = cleanAcquireImage(settings.defaultAcquireImage) || DEFAULT_ACQUIRE_IMAGE;
return {
defaultAcquireImage,
};
}
async function readDashboardSettings() {
try {
if (!fs.existsSync(DASHBOARD_SETTINGS_FILE)) {
return normalizeDashboardSettings({});
}
const raw = await fsp.readFile(DASHBOARD_SETTINGS_FILE, "utf8");
const parsed = JSON.parse(raw);
return normalizeDashboardSettings(parsed);
} catch {
return normalizeDashboardSettings({});
}
}
async function writeDashboardSettings(settings) {
const normalized = normalizeDashboardSettings(settings);
await fsp.mkdir(path.dirname(DASHBOARD_SETTINGS_FILE), { recursive: true });
const tmpPath = `${DASHBOARD_SETTINGS_FILE}.tmp`;
await fsp.writeFile(tmpPath, JSON.stringify(normalized, null, 2), "utf8");
await fsp.rename(tmpPath, DASHBOARD_SETTINGS_FILE);
return normalized;
}
function cleanNodeRole(value) {
return value === "observer" ? "observer" : "validator";
}
function cleanStringArray(value) {
if (!Array.isArray(value)) return [];
return value
.map((item) => String(item || "").trim())
.filter(Boolean);
}
function extractRequestedUnlFromConfigs(initConfig = {}, overrideConfig = {}) {
const sources = [
initConfig?.contract?.unl,
overrideConfig?.contract?.unl,
initConfig?.contract?.known_unl,
overrideConfig?.contract?.known_unl,
initConfig?.contract?.knownUnl,
overrideConfig?.contract?.knownUnl,
initConfig?.contract?.knownUNL,
overrideConfig?.contract?.knownUNL,
];
const seen = new Set();
const result = [];
for (const source of sources) {
if (!Array.isArray(source)) {
continue;
}
for (const item of source) {
const value = String(item || "").trim();
const key = value.toLowerCase();
if (!value || seen.has(key)) {
continue;
}
seen.add(key);
result.push(value);
}
}
return result;
}
function cleanPositiveInteger(value, fallback, fieldName) {
const raw = value === undefined || value === null || value === ""
? fallback
: value;
const numberValue = Number(raw);
if (!Number.isInteger(numberValue) || numberValue <= 0) {
throw new Error(`${fieldName} must be a positive integer`);
}
return numberValue;
}
function cleanOptionalPositiveInteger(value, fieldName) {
if (value === undefined || value === null || value === "") {
return null;
}
const numberValue = Number(value);
if (!Number.isInteger(numberValue) || numberValue <= 0) {
throw new Error(`${fieldName} must be a positive integer`);
}
return numberValue;
}
function buildAcquireInitConfig({
role = "validator",
unl = [],
knownPeers = [],
idleTimeout = 120000,
maxBytesPerMsg = null,
} = {}) {
const cleanRole = cleanNodeRole(role);
const cleanUnl = cleanStringArray(unl);
const cleanKnownPeers = cleanStringArray(knownPeers);
const cleanIdleTimeout = cleanPositiveInteger(
idleTimeout,
120000,
"idle_timeout"
);
const cleanMaxBytesPerMsg = cleanOptionalPositiveInteger(
maxBytesPerMsg,
"max_bytes_per_msg"
);
const config = {
node: {
role: cleanRole,
},
mesh: {
idle_timeout: cleanIdleTimeout,
known_peers: cleanKnownPeers,
peer_discovery: {
enabled: false,
},
},
contract: {
unl: cleanUnl,
consensus: {
roundtime: 4000,
},
},
};
if (cleanMaxBytesPerMsg !== null) {
config.mesh.max_bytes_per_msg = cleanMaxBytesPerMsg;
}
return config;
}
function derivePublicKeyFromPrivateKey(privateKey) {
let key = String(privateKey || "").trim();
if (!key) {
throw new Error("Missing private key");
}
key = key.replace(/^ed/i, "");
if (!/^[0-9a-fA-F]+$/.test(key)) {
throw new Error("Wrong private key used.");
}
if (key.length !== 64 && key.length !== 128) {
throw new Error(`Unsupported private key length: ${key.length} hex chars`);
}
const seedHex = key.length === 128 ? key.slice(0, 64) : key;
const seed = Buffer.from(seedHex, "hex");
const pkcs8Prefix = Buffer.from("302e020100300506032b657004220420", "hex");
const privateKeyDer = Buffer.concat([pkcs8Prefix, seed]);
const privateKeyObject = crypto.createPrivateKey({
key: privateKeyDer,
format: "der",
type: "pkcs8",
});
const publicKeyDer = crypto
.createPublicKey(privateKeyObject)
.export({
format: "der",
type: "spki",
});
const publicKeyBytes = publicKeyDer.subarray(publicKeyDer.length - 32);
return `ed${publicKeyBytes.toString("hex")}`;
}
function parseAcquireOutput(rawOutput) {
const output = stripAnsi(rawOutput);
const instanceBlockMatch = output.match(/Instance created!\s*\{[\s\S]*?\}/);
if (!instanceBlockMatch) {
throw new Error("Instance block not found in evdevkit output (Failed to acquire instance)");
}
const block = instanceBlockMatch[0];
const instance = {
instance_id: extractQuoted(block, "name"),
pubkey: extractQuoted(block, "pubkey"),
contract_id: extractQuoted(block, "contract_id"),
peer_port: extractNumber(block, "peer_port"),
user_port: extractNumber(block, "user_port"),
gp_tcp_port: extractNumber(block, "gp_tcp_port"),
gp_udp_port: extractNumber(block, "gp_udp_port"),
domain: extractQuoted(block, "domain"),
outbound_ip: extractQuoted(block, "outbound_ip"),
created_timestamp: extractNumber(block, "created_timestamp"),
};
if (
!instance.instance_id ||
!instance.pubkey ||
!instance.contract_id ||
!instance.domain ||
!instance.created_timestamp
) {
throw new Error(
[
"Failed to parse required instance fields.",
`instance_id=${instance.instance_id || ""}`,
`pubkey=${instance.pubkey || ""}`,
`contract_id=${instance.contract_id || ""}`,
`domain=${instance.domain || ""}`,
`created_timestamp=${instance.created_timestamp || ""}`,
].join("\n")
);
}
if (!isSafeName(instance.instance_id)) {
throw new Error(`Unsafe instance name: ${instance.instance_id}`);
}
const numericFields = [
"peer_port",
"user_port",
"gp_tcp_port",
"gp_udp_port",
"created_timestamp",
];
for (const field of numericFields) {
if (!Number.isInteger(instance[field]) || instance[field] <= 0) {
throw new Error(`Invalid numeric field from evdevkit output: ${field}`);
}
}
return instance;
}
const WALLET_SEED_KEY_ID_HEX_CHARS = Number(
process.env.WALLET_SEED_KEY_ID_HEX_CHARS || 16
);
function adminPublicKeyToSeedKeyId(publicKey) {
const cleanPublicKey = String(publicKey || "").trim().toLowerCase();
if (!/^ed[0-9a-f]{64}$/i.test(cleanPublicKey)) {
throw new Error("Invalid admin public key for wallet seed lookup");
}
return crypto
.createHash("sha256")
.update(cleanPublicKey)
.digest("hex")
.slice(0, WALLET_SEED_KEY_ID_HEX_CHARS);
}
function secretFileHasContent(secretPath) {
try {
if (!fs.existsSync(secretPath)) {
return false;
}
return fs.readFileSync(secretPath, "utf8").trim().length > 0;
} catch {
return false;
}
}
const IGNORED_SECRET_PLACEHOLDERS = new Set([
"placeholder-only",
"placeholder",
"changeme",
"change-me",
"empty",
"none",
"null",
"undefined",
]);
function isIgnoredSecretPlaceholder(value) {
const clean = String(value || "").trim().toLowerCase();
return !clean || IGNORED_SECRET_PLACEHOLDERS.has(clean);
}
function readEncryptedSeedSecretRaw() {
try {
if (!fs.existsSync(ENCRYPTED_SEED_SECRET_PATH)) {
return "";
}
const raw = fs.readFileSync(ENCRYPTED_SEED_SECRET_PATH, "utf8").trim();
if (isIgnoredSecretPlaceholder(raw)) {
return "";
}
return raw;
} catch {
return "";
}
}
function splitWalletSeedSecretEntries(raw) {
return String(raw || "")
.split(/[\r\n,]+/g)
.map((entry) => entry.trim())
.filter(Boolean)
.filter((entry) => !isIgnoredSecretPlaceholder(entry));
}
function getEnvelopeFromWalletSeedEntry(entry) {
const raw = String(entry || "").trim();
if (!raw) {
return "";
}
const equalsIndex = raw.indexOf("=");
if (equalsIndex === -1) {
return raw;
}
return raw.slice(equalsIndex + 1).trim();
}
function looksLikeEncryptedSeedEnvelope(value) {
const raw = String(value || "").trim();
if (isIgnoredSecretPlaceholder(raw)) {
return false;
}
return raw.startsWith("evseed:v1:") || raw.startsWith("{");
}
function encryptedSeedSecretHasUsableContent() {
const raw = readEncryptedSeedSecretRaw();
if (!raw) {
return false;
}
const entries = splitWalletSeedSecretEntries(raw);
if (!entries.length) {
return false;
}
return entries.some((entry) => {
const envelope = getEnvelopeFromWalletSeedEntry(entry);
return looksLikeEncryptedSeedEnvelope(envelope);
});
}
function parseAdminPublicKeys(raw) {
const ignoredPlaceholders = new Set([
"placeholder-only",
"placeholder",
"changeme",
"change-me",
"empty",
"none",
]);
return String(raw || "")
.split(/[\s,]+/g) // supports comma, newline, spaces
.map((key) => key.trim().toLowerCase())
.filter(Boolean)
.filter((key) => !ignoredPlaceholders.has(key));
}
function validateAdminPublicKeys(publicKeys, sourcePath) {
if (!publicKeys.length) {
throw new Error(`No admin public keys configured in ${sourcePath}`);
}
for (const publicKey of publicKeys) {
if (!/^ed[0-9a-f]{64}$/i.test(publicKey)) {
throw new Error(`Invalid admin public key in ${sourcePath}: ${publicKey}`);
}
}
return publicKeys;
}
async function readAdminPublicKeysFile(sourcePath) {
const raw = await fsp.readFile(sourcePath, "utf8");
const publicKeys = parseAdminPublicKeys(raw);
return validateAdminPublicKeys(publicKeys, sourcePath);
}
async function getAdminPublicKeys() {
if (fs.existsSync(ADMIN_PUBLIC_KEYS_SECRET_FILE)) {
const rawSecret = await fsp.readFile(ADMIN_PUBLIC_KEYS_SECRET_FILE, "utf8");
const secretKeys = parseAdminPublicKeys(rawSecret);
if (secretKeys.length > 0) {
return validateAdminPublicKeys(secretKeys, ADMIN_PUBLIC_KEYS_SECRET_FILE);
}
console.warn(
`Admin public keys secret exists but is empty. Falling back to ${ADMIN_PUBLIC_KEY_FILE}`
);
}
return readAdminPublicKeysFile(ADMIN_PUBLIC_KEY_FILE);
}
async function requireAdminPrivateKey(req, res, next) {
try {
const privateKey = getAdminPrivateKeyFromRequest(req);
if (!privateKey) {
return res.status(401).json({
ok: false,
error: otpEnvelopeEnabled()
? "Missing OTP-encrypted admin key envelope"
: "Missing admin private key",
});
}
const expectedPublicKeys = await getAdminPublicKeys();
const actualPublicKey = derivePublicKeyFromPrivateKey(privateKey)
.trim()
.toLowerCase();
if (!expectedPublicKeys.includes(actualPublicKey)) {
return res.status(401).json({
ok: false,
error: "Unauthorized admin private key",
});
}
req.adminPrivateKey = privateKey;
req.adminPublicKey = actualPublicKey;
next();
} catch (error) {
return res.status(401).json({
ok: false,
error: error.message,
});
}
}
app.post(
"/api/contracts/upload",
requireAdminPrivateKey,
express.raw({
type: [
"application/zip",
"application/x-zip-compressed",
"application/octet-stream",
],
limit: "50mb",
}),
async (req, res) => {
const uploadRunId = crypto.randomBytes(8).toString("hex");
const uploadDir = path.join(DEPLOYMENTS_DIR, `contract_upload_${uploadRunId}`);
const zipPath = path.join(uploadDir, "src.zip");
try {
const contractName =
String(req.query.name || "").trim() ||
String(req.headers["x-contract-name"] || "").trim();
if (!isSafeContractName(contractName)) {
return res.status(400).json({
ok: false,
error:
"Invalid contract name. Use only letters, numbers, dot, underscore, and dash.",
});
}
if (!Buffer.isBuffer(req.body) || req.body.length === 0) {
return res.status(400).json({
ok: false,
error: "Missing ZIP upload body",
});
}
const zipMagic = req.body.subarray(0, 4).toString("hex");
if (!zipMagic.startsWith("504b")) {
return res.status(400).json({
ok: false,
error: "Uploaded file does not look like a ZIP file",
});
}
await fsp.mkdir(uploadDir, { recursive: true });
await fsp.writeFile(zipPath, req.body);
const listResult = await runCommand("unzip", ["-Z1", zipPath], {
cwd: uploadDir,
});
const rawEntries = listResult.stdout
.split(/\r?\n/)
.map((entry) => entry.trim())
.filter(Boolean);
if (!rawEntries.length) {
return res.status(400).json({
ok: false,
error: "ZIP file is empty",
});
}
const entries = rawEntries.map((entry) => entry.replace(/\\/g, "/"));
for (const entry of entries) {
if (
!entry ||
entry.startsWith("/") ||
entry.includes("\0") ||
entry.split("/").includes("..")
) {
return res.status(400).json({
ok: false,
error: `Unsafe ZIP entry: ${entry}`,
});
}
}
const fileEntries = entries.filter((entry) => !entry.endsWith("/"));
if (!fileEntries.length) {
return res.status(400).json({
ok: false,
error: "ZIP contains no files",
});
}
const hasRootFile = fileEntries.some((entry) => !entry.includes("/"));
if (!hasRootFile) {
const topFolders = new Set(
fileEntries.map((entry) => entry.split("/")[0]).filter(Boolean)
);
if (topFolders.size === 1) {
return res.status(400).json({
ok: false,
error:
"ZIP appears to contain one wrapper folder. Upload the contract source files directly at the ZIP root instead.",
});
}
}
const contractsReal = await fsp.realpath(CONTRACTS_DIR);
const targetDir = path.join(CONTRACTS_DIR, contractName);
const targetResolved = path.resolve(targetDir);
if (!targetResolved.startsWith(contractsReal + path.sep)) {
return res.status(400).json({
ok: false,
error: "Contract folder escaped contracts directory",
});
}
const extractDir = path.join(uploadDir, "extract");
await fsp.mkdir(extractDir, { recursive: true });
await runCommand("unzip", ["-q", zipPath, "-d", extractDir], {
cwd: uploadDir,
});
await fsp.rm(targetDir, {
recursive: true,
force: true,
});
await fsp.rename(extractDir, targetDir);
await fsp.rm(uploadDir, {
recursive: true,
force: true,
});
res.json({
ok: true,
contract: {
name: contractName,
path: targetDir,
},
files: fileEntries.length,
});
} catch (error) {
await fsp.rm(uploadDir, {
recursive: true,
force: true,
}).catch(() => {});
res.status(500).json({
ok: false,
error: error.message,
});
}
}
);
function parseEncryptedSeedEnvelope(rawEnvelope) {
const raw = String(rawEnvelope || "").trim();
if (!raw) {
throw new Error("Missing encrypted seed envelope");
}
if (raw.startsWith("evseed:v1:")) {
const encoded = raw.slice("evseed:v1:".length).trim();
const json = Buffer.from(encoded, "base64url").toString("utf8");
return JSON.parse(json);
}
return JSON.parse(raw);
}
function getWalletSeedEntriesFromSecret() {
const raw = readEncryptedSeedSecretRaw();
if (!raw) {
return [];
}
return splitWalletSeedSecretEntries(raw);
}
function selectEncryptedSeedEnvelopeForRequest(req) {
if (!encryptedSeedSecretHasUsableContent()) {
return "";
}
const entries = getWalletSeedEntriesFromSecret();
if (!entries.length) {
return "";
}
// Legacy mode: the whole secret is just one evseed:v1:... value.
if (entries.length === 1 && !entries[0].includes("=")) {
return entries[0];
}
const keyId = adminPublicKeyToSeedKeyId(req.adminPublicKey);
for (const entry of entries) {
const equalsIndex = entry.indexOf("=");
if (equalsIndex === -1) {
continue;
}
const entryKeyId = entry.slice(0, equalsIndex).trim().toLowerCase();
const encryptedSeed = getEnvelopeFromWalletSeedEntry(entry);
if (!looksLikeEncryptedSeedEnvelope(encryptedSeed)) {
continue;
}
if (entryKeyId === keyId) {
if (!encryptedSeed) {
throw new Error(`Wallet seed entry for key ${keyId} is empty`);
}
return encryptedSeed;
}
}
throw new Error(`No encrypted wallet seed entry found for admin key id ${keyId}`);
}
function decryptSeedEnvelopeWithAdminPrivateKey(rawEnvelope, adminPrivateKey) {
const encryptedObject = parseEncryptedSeedEnvelope(rawEnvelope);
if (!encryptedObject || encryptedObject.v !== 1) {
throw new Error("Unsupported encrypted seed format");
}
const salt = Buffer.from(encryptedObject.salt, "base64");
const iv = Buffer.from(encryptedObject.iv, "base64");
const authTag = Buffer.from(encryptedObject.authTag, "base64");
const ciphertext = Buffer.from(encryptedObject.ciphertext, "base64");
const key = crypto.scryptSync(String(adminPrivateKey || "").trim(), salt, 32);
const decipher = crypto.createDecipheriv("aes-256-gcm", key, iv);
decipher.setAuthTag(authTag);
const decrypted = Buffer.concat([
decipher.update(ciphertext),
decipher.final(),
]);
return decrypted.toString("utf8").trim();
}
function resolveSeedForRequest(req, submittedSeed) {
if (encryptedSeedSecretHasUsableContent()) {
const encryptedSeedEnvelope = selectEncryptedSeedEnvelopeForRequest(req);
if (encryptedSeedEnvelope) {
return decryptSeedEnvelopeWithAdminPrivateKey(
encryptedSeedEnvelope,
req.adminPrivateKey
);
}
}
const seed = String(submittedSeed || "").trim();
if (!seed) {
throw new Error("Missing seed and no encrypted seed secret is available");
}
return seed;
}
function parseOtpSecrets(raw) {
const ignoredPlaceholders = new Set([
"placeholder-only",
"placeholder",
"changeme",
"change-me",
"empty",
"none",
"null",
"undefined",
]);
const text = String(raw || "").trim();
if (!text || ignoredPlaceholders.has(text.toLowerCase())) {
return [];
}
if (text.startsWith("otpauth://")) {
try {
const url = new URL(text);
const secret = String(url.searchParams.get("secret") || "")
.replace(/\s+/g, "")
.replace(/=+$/g, "")
.toUpperCase();
return secret ? [secret] : [];
} catch {
return [];
}
}
return text
.split(/[\s,]+/g)
.map((secret) =>
String(secret || "")
.trim()
.replace(/\s+/g, "")
.replace(/=+$/g, "")
.toUpperCase()
)
.filter(Boolean)
.filter((secret) => !ignoredPlaceholders.has(secret.toLowerCase()));
}
function getOtpSecrets() {
try {
if (!fs.existsSync(OTP_SECRET_PATH)) {
return [];
}
const raw = fs.readFileSync(OTP_SECRET_PATH, "utf8");
const secrets = parseOtpSecrets(raw);
return secrets.filter((secret) => {
try {
base32ToBuffer(secret);
return true;
} catch {
return false;
}
});
} catch {
return [];
}
}
function getOtpSecret() {
return getOtpSecrets()[0] || "";
}
function base32ToBuffer(base32) {
const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
const clean = String(base32 || "")
.replace(/=+$/g, "")
.replace(/\s+/g, "")
.toUpperCase();
if (!/^[A-Z2-7]+$/.test(clean)) {
throw new Error("Invalid OTP secret format");
}
let bits = "";
for (const char of clean) {
const value = alphabet.indexOf(char);
if (value === -1) {
throw new Error("Invalid OTP secret character");
}
bits += value.toString(2).padStart(5, "0");
}
const bytes = [];
for (let i = 0; i + 8 <= bits.length; i += 8) {
bytes.push(parseInt(bits.slice(i, i + 8), 2));
}
return Buffer.from(bytes);
}
function otpEnvelopeEnabled() {
return getOtpSecrets().length > 0;
}
const OTP_CODE_DIGITS = Number(process.env.OTP_CODE_DIGITS || 24);
const OTP_ENVELOPE_WINDOW_STEPS = Number(process.env.OTP_ENVELOPE_WINDOW_STEPS || 10); // 10 is about 10 minutes
function generateTotpCode(secret, timeMs = Date.now(), stepSeconds = 30, digits = OTP_CODE_DIGITS) {
const key = base32ToBuffer(secret);
const counter = Math.floor(timeMs / 1000 / stepSeconds);
const counterBuffer = Buffer.alloc(8);
counterBuffer.writeBigUInt64BE(BigInt(counter));
const hmac = crypto
.createHmac("sha256", key)
.update(counterBuffer)
.digest();
let value = 0n;
for (const byte of hmac) {
value = (value << 8n) + BigInt(byte);
}
const modulo = 10n ** BigInt(digits);
const otp = value % modulo;
return otp.toString().padStart(digits, "0");
}
function getTotpCandidates(secret) {
const now = Date.now();
const stepMs = 30000;
const codes = [];
for (
let i = -OTP_ENVELOPE_WINDOW_STEPS;
i <= OTP_ENVELOPE_WINDOW_STEPS;
i++
) {
codes.push(generateTotpCode(secret, now + i * stepMs));
}
return [...new Set(codes)];
}
function parseAdminKeyEnvelope(rawEnvelope) {
const raw = String(rawEnvelope || "").trim();
if (!raw) {
throw new Error("Missing admin key envelope");
}
if (!raw.startsWith(ADMIN_KEY_ENVELOPE_PREFIX)) {
throw new Error(`Invalid admin key envelope prefix. Expected ${ADMIN_KEY_ENVELOPE_PREFIX}`);
}
const encoded = raw.slice(ADMIN_KEY_ENVELOPE_PREFIX.length).trim();
if (!encoded) {
throw new Error("Admin key envelope payload is empty");
}
const envelope = JSON.parse(
Buffer.from(encoded, "base64url").toString("utf8")
);
if (!envelope || envelope.v !== 1) {
throw new Error("Unsupported admin key envelope version");
}
if (envelope.type !== "otp-encrypted-admin-private-key") {
throw new Error("Unsupported admin key envelope type");
}
if (envelope.kdf !== "pbkdf2-sha256") {
throw new Error("Unsupported admin key envelope KDF");
}
for (const field of ["salt", "iv", "authTag", "ciphertext", "iterations"]) {
if (!envelope[field]) {
throw new Error(`Admin key envelope missing field: ${field}`);
}
}
return envelope;
}
function deriveAdminEnvelopeKey(otpCode, salt, iterations) {
const code = String(otpCode || "").trim();
if (!/^[0-9]{24}$/.test(code)) {
throw new Error("OTP code must be 24 digits");
}
const cleanIterations = Number(iterations);
if (!Number.isInteger(cleanIterations) || cleanIterations < 100000) {
throw new Error("Invalid admin envelope KDF iterations");
}
return crypto.pbkdf2Sync(
`otp-admin-envelope-v1:${code}`,
salt,
cleanIterations,
32,
"sha256"
);
}
function tryDecryptAdminEnvelopeWithOtpCode(envelope, otpCode) {
const salt = Buffer.from(envelope.salt, "base64");
const iv = Buffer.from(envelope.iv, "base64");
const authTag = Buffer.from(envelope.authTag, "base64");
const ciphertext = Buffer.from(envelope.ciphertext, "base64");
const key = deriveAdminEnvelopeKey(otpCode, salt, envelope.iterations);
const decipher = crypto.createDecipheriv("aes-256-gcm", key, iv);
decipher.setAuthTag(authTag);
const decrypted = Buffer.concat([
decipher.update(ciphertext),
decipher.final(),
]);
return decrypted.toString("utf8").trim();
}
function decryptAdminPrivateKeyFromEnvelope(req) {
const otpSecrets = getOtpSecrets();
if (!otpSecrets.length) {
throw new Error("OTP secret is not configured");
}
const envelopeRaw = req.get("x-admin-key-envelope") || "";
if (!envelopeRaw) {
throw new Error("Missing OTP-encrypted admin key envelope");
}
const envelope = parseAdminKeyEnvelope(envelopeRaw);
for (const otpSecret of otpSecrets) {
const candidates = getTotpCandidates(otpSecret);
for (const code of candidates) {
try {
const privateKey = tryDecryptAdminEnvelopeWithOtpCode(envelope, code);
if (privateKey) {
return privateKey;
}
} catch {
// Try next code / next OTP secret.
}
}
}
throw new Error("Could not decrypt admin key envelope with configured OTP secrets");
}
function getAdminPrivateKeyFromRequest(req) {
if (otpEnvelopeEnabled()) {
return decryptAdminPrivateKeyFromEnvelope(req);
}
return req.get("x-admin-private-key") || "";
}
function runCommand(command, args, options = {}) {
return new Promise((resolve, reject) => {
const child = spawn(command, args, {
cwd: options.cwd || CLUSTERING_DIR,
stdio: ["ignore", "pipe", "pipe"],
env: {
...process.env,
...(options.env || {}),
},
});
let stdout = "";
let stderr = "";
const maxOutput = 1024 * 1024;
child.stdout.on("data", (chunk) => {
const text = chunk.toString();
stdout += text;
if (stdout.length > maxOutput) stdout = stdout.slice(-maxOutput);
});
child.stderr.on("data", (chunk) => {
const text = chunk.toString();
stderr += text;
if (stderr.length > maxOutput) stderr = stderr.slice(-maxOutput);
});
child.on("error", reject);
child.on("close", (code) => {
if (code === 0) {
resolve({ stdout, stderr });
} else {
reject(
new Error(
`Command failed with code ${code}\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}`
)
);
}
});
});
}
function runCommandWithInput(command, args, input, options = {}) {
return new Promise((resolve, reject) => {
const child = spawn(command, args, {
cwd: options.cwd || CLUSTERING_DIR,
stdio: ["pipe", "pipe", "pipe"],
env: {
...process.env,
...(options.env || {}),
},
});
let stdout = "";
let stderr = "";
const maxOutput = 1024 * 1024;
child.stdout.on("data", (chunk) => {
const text = chunk.toString();
stdout += text;
if (stdout.length > maxOutput) stdout = stdout.slice(-maxOutput);
});
child.stderr.on("data", (chunk) => {
const text = chunk.toString();
stderr += text;
if (stderr.length > maxOutput) stderr = stderr.slice(-maxOutput);
});
child.on("error", reject);
child.on("close", (code) => {
if (code === 0) {
resolve({ stdout, stderr });
} else {
reject(
new Error(
`Command failed with code ${code}\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}`
)
);
}
});
if (input) {
child.stdin.write(input);
}
child.stdin.end();
});
}
function runScript(script, args, seed, extraEnv = {}, hooks = {}) {
return new Promise((resolve, reject) => {
const child = spawn(script, args, {
cwd: CLUSTERING_DIR,
stdio: ["pipe", "pipe", "pipe"],
env: {
...process.env,
...extraEnv,
},
});
let stdout = "";
let stderr = "";
const maxOutput = 1024 * 1024;
child.stdout.on("data", (chunk) => {
const text = chunk.toString();
stdout += text;
if (stdout.length > maxOutput) stdout = stdout.slice(-maxOutput);
if (typeof hooks.onStdout === "function") {
hooks.onStdout(text);
}
});
child.stderr.on("data", (chunk) => {
const text = chunk.toString();
stderr += text;
if (stderr.length > maxOutput) stderr = stderr.slice(-maxOutput);
if (typeof hooks.onStderr === "function") {
hooks.onStderr(text);
}
});
child.on("error", reject);
child.on("close", (code) => {
if (code === 0) {
resolve({ stdout, stderr });
} else {
reject(
new Error(
`Script failed with code ${code}\nSTDOUT:\n${stdout}\nSTDERR:\n${stderr}`
)
);
}
});
child.stdin.write(`${seed}\n`);
child.stdin.end();
});
}
function buildAcquireArgs({ address, moments, contractId, image, sendMax }) {
const acquireImage = cleanAcquireImage(image);
const cleanSendMax = String(sendMax || "").trim();
const args = [
"--secret-stdin",
"acquire",
"-m",
String(moments),
];
if (acquireImage) {
args.push("-i", acquireImage);
}
if (cleanSendMax) {
args.push("-s", cleanSendMax);
}
if (contractId && String(contractId).trim()) {
args.push("-c", String(contractId).trim());
}
args.push(address);
return args;
}
async function runEvdevkitAcquire({
address,
moments,
seed,
privateKey,
contractId,
image,
initCfgPath,
sendMax,
}) {
const args = buildAcquireArgs({
address,
moments,
contractId,
image,
sendMax,
});
return runCommandWithInput(EVDEVKIT_BIN, args, `${seed}\n`, {
cwd: CLUSTERING_DIR,
env: {
EV_USER_PRIVATE_KEY: privateKey,
EV_HP_INIT_CFG_PATH: initCfgPath,
},
});
}
async function acquireInstanceWithPrivateKey({
runId,
address,
moments,
seed,
privateKey,
contractId,
image,
sendMax,
role,
unl,
knownPeers,
idleTimeout,
maxBytesPerMsg,
nodeDescription,
savePrivateKeyToSystem = false,
}) {
await fsp.mkdir(INSTANCES_DIR, { recursive: true });
await fsp.mkdir(LOG_DIR, { recursive: true });
const addressSafe = safeForFilename(address);
const acquireImage = cleanAcquireImage(image);
const acquireJobDir = path.join(LOG_DIR, `acquire_${addressSafe}_${runId}`);
const initCfgPath = path.join(acquireJobDir, "hp.cfg.init");
const logFile = path.join(LOG_DIR, `rent_${addressSafe}_${runId}.log`);
await fsp.mkdir(acquireJobDir, { recursive: true });
const acquireInitConfig = buildAcquireInitConfig({
role,
unl,
knownPeers,
idleTimeout,
maxBytesPerMsg,
});
await fsp.writeFile(
initCfgPath,
JSON.stringify(acquireInitConfig, null, 2),
"utf8"
);
await appendLog(
logFile,
[
`[${nowLog()}] === RENT JOB START RUN_ID=${runId} ===`,
`[${nowLog()}] Host: ${address}`,
`[${nowLog()}] Moments: ${moments}`,
`[${nowLog()}] Send max: ${sendMax || "[auto]"}`,
`[${nowLog()}] Contract ID requested: ${contractId || "[none]"}`,
`[${nowLog()}] User: ${process.env.USER || "unknown"}`,
`[${nowLog()}] Image: ${acquireImage}`,
`[${nowLog()}] EV_HP_INIT_CFG_PATH: ${initCfgPath}`,
`[${nowLog()}] Acquire init config: ${JSON.stringify(acquireInitConfig)}`,
`[${nowLog()}] Seed: [REDACTED]`,
`[${nowLog()}] Private key: [REDACTED]`,
`[${nowLog()}] evdevkit: ${EVDEVKIT_BIN}`,
"",
].join("\n")
);
if (!fs.existsSync(EVDEVKIT_BIN)) {
throw new Error(`evdevkit binary not found: ${EVDEVKIT_BIN}`);
}
const { stdout, stderr } = await runEvdevkitAcquire({
address,
moments,
seed,
privateKey,
contractId,
image: acquireImage,
initCfgPath,
sendMax,
});
const combinedOutput = `${stdout}${stderr ? `\nSTDERR:\n${stderr}` : ""}`;
await appendLog(logFile, `${combinedOutput}\n`);
const parsed = parseAcquireOutput(combinedOutput);
const expiresTimestamp = parsed.created_timestamp + moments * 3600000;
const shouldSavePrivateKeyToSystem = savePrivateKeyToSystem === true;
const savedPrivateKeyFields = shouldSavePrivateKeyToSystem
? {
private_key: String(privateKey || "").trim(),
private_key_saved_at: nowLog(),
acquisition_keypair: {
public_key: parsed.pubkey,
private_key: String(privateKey || "").trim(),
saved_at: nowLog(),
},
}
: {};
const instanceJson = {
instance_id: parsed.instance_id,
host_address: address,
r_address: address,
rAddress: address,
node_description: cleanNodeDescription(nodeDescription),
pubkey: parsed.pubkey,
contract_id: parsed.contract_id,
domain: parsed.domain,
outbound_ip: parsed.outbound_ip,
peer_port: parsed.peer_port,
user_port: parsed.user_port,
mesh_idle_timeout: idleTimeout,
mesh_max_bytes_per_msg: maxBytesPerMsg,
gp_tcp_port: parsed.gp_tcp_port,
gp_udp_port: parsed.gp_udp_port,
created_timestamp: parsed.created_timestamp,
expires_timestamp: expiresTimestamp,
created_at: formatUtcTimestamp(parsed.created_timestamp),
expires_at: formatUtcTimestamp(expiresTimestamp),
moments,
node_role: cleanNodeRole(role),
initial_unl: cleanStringArray(unl),
initial_known_peers: cleanStringArray(knownPeers),
requested_contract_id: contractId || null,
acquire_image: acquireImage,
acquire_init_cfg_path: initCfgPath,
peer_discovery_initially_enabled: false,
private_key_saved: shouldSavePrivateKeyToSystem,
keypair_saved_to_system: shouldSavePrivateKeyToSystem,
key_generated_by_user: true,
...savedPrivateKeyFields,
status: "active",
};
const jsonPath = path.join(INSTANCES_DIR, `${parsed.instance_id}.json`);
const tmpPath = `${jsonPath}.tmp`;
await fsp.writeFile(tmpPath, JSON.stringify(instanceJson, null, 2), "utf8");
await fsp.rename(tmpPath, jsonPath);
await appendLog(
logFile,
[
`[${nowLog()}] Parsing instance metadata`,
`[${nowLog()}] Instance JSON written: ${jsonPath}`,
`[${nowLog()}] STATUS: SUCCESS`,
`[${nowLog()}] Finished at ${nowLog()}`,
"",
].join("\n")
);
return instanceJson;
}
async function readInstances({ includeHidden = false } = {}) {
await fsp.mkdir(INSTANCES_DIR, { recursive: true });
const files = await fsp.readdir(INSTANCES_DIR);
const jsonFiles = files.filter((file) => file.endsWith(".json"));
let instances = [];
for (const file of jsonFiles) {
try {
const fullPath = path.join(INSTANCES_DIR, file);
const raw = await fsp.readFile(fullPath, "utf8");
const parsed = JSON.parse(raw);
parsed.__json_file = file;
parsed.hidden = parsed.hidden === true;
if (parsed.hidden && !includeHidden) {
continue;
}
const now = Date.now();
if (
typeof parsed.expires_timestamp === "number" &&
parsed.expires_timestamp < now
) {
parsed.status = "expired";
}
instances.push(parsed);
} catch {
// Skip invalid JSON files instead of breaking the whole dashboard.
}
}
const dedupedByInstanceId = new Map();
for (const item of instances) {
const key = String(item.instance_id || item.__json_file || "").trim();
if (!key) {
continue;
}
const previous = dedupedByInstanceId.get(key);
if (!previous) {
dedupedByInstanceId.set(key, item);
continue;
}
// When includeHidden is requested, prefer the hidden copy if duplicate JSON
// files exist for the same instance_id. This prevents active+hidden twins
// from showing as separate rows.
if (includeHidden && item.hidden === true && previous.hidden !== true) {
dedupedByInstanceId.set(key, item);
continue;
}
const previousUpdated = Date.parse(previous.updated_at || previous.hidden_at || previous.private_key_saved_at || "") || 0;
const itemUpdated = Date.parse(item.updated_at || item.hidden_at || item.private_key_saved_at || "") || 0;
if (itemUpdated > previousUpdated) {
dedupedByInstanceId.set(key, item);
}
}
instances = [...dedupedByInstanceId.values()];
instances.sort((a, b) => {
if (a.hidden && !b.hidden) return 1;
if (!a.hidden && b.hidden) return -1;
return (a.expires_timestamp || 0) - (b.expires_timestamp || 0);
});
return instances;
}
async function findMatchingInstanceJsonPaths(instanceName) {
const cleanName = String(instanceName || "").trim();
if (!isSafeName(cleanName)) {
throw new Error("Invalid instance name");
}
await fsp.mkdir(INSTANCES_DIR, { recursive: true });
const matches = [];
const seen = new Set();
const directPath = path.join(INSTANCES_DIR, `${cleanName}.json`);
if (fs.existsSync(directPath)) {
matches.push(directPath);
seen.add(directPath);
}
const files = (await fsp.readdir(INSTANCES_DIR))
.filter((file) => file.endsWith(".json"));
for (const file of files) {
const fullPath = path.join(INSTANCES_DIR, file);
if (seen.has(fullPath)) {
continue;
}
try {
const parsed = JSON.parse(await fsp.readFile(fullPath, "utf8"));
const parsedInstanceName = String(parsed.instance_id || "").trim();
if (parsedInstanceName === cleanName) {
matches.push(fullPath);
seen.add(fullPath);
}
} catch {
// Ignore broken JSON records while looking for the selected instance.
}
}
if (!matches.length) {
throw new Error(`Instance JSON not found: ${cleanName}`);
}
return matches;
}
async function findInstanceJsonPath(instanceName) {
const matches = await findMatchingInstanceJsonPaths(instanceName);
return matches[0];
}
function parseManualDateOrTimestamp(value, fieldName, { required = false } = {}) {
const raw = String(value ?? "").trim();
if (!raw) {
if (required) {
throw new Error(`${fieldName} is required`);
}
return null;
}
let timestamp;
if (/^[0-9]+$/.test(raw)) {
timestamp = Number(raw);
} else {
timestamp = Date.parse(raw);
}
if (!Number.isFinite(timestamp) || timestamp <= 0) {
throw new Error(`${fieldName} must be a valid timestamp or date`);
}
return timestamp;
}
function cleanManualInstanceName(value) {
const instanceName = String(value || "").trim();
if (!isSafeName(instanceName)) {
throw new Error("Manual instance name must use only letters, numbers, dot, underscore, and dash");
}
return instanceName;
}
function cleanManualRAddress(value) {
const address = String(value || "").trim();
if (!address) {
throw new Error("Manual r address is required");
}
if (address.length > 120 || /\s/.test(address)) {
throw new Error("Manual r address is invalid");
}
if (!address.startsWith("r")) {
throw new Error("Manual address should be an r address");
}
return address;
}
function normalizeManualExtensionRecord(input = {}, existing = {}) {
const instanceName = cleanManualInstanceName(
input.instanceName || input.instance_id || input.name
);
const address = cleanManualRAddress(
input.address || input.host_address || input.r_address
);
const createdTimestamp = parseManualDateOrTimestamp(
input.createdTimestamp ?? input.created_timestamp ?? input.createdAt ?? input.created_at_iso,
"Created timestamp"
);
let expiresTimestamp = parseManualDateOrTimestamp(
input.expiresAt ?? input.expires_at ?? input.expiresTimestamp ?? input.expires_timestamp,
"Expiry date"
);
if (!expiresTimestamp && createdTimestamp) {
expiresTimestamp = createdTimestamp + MANUAL_EXTENSION_EXPIRE_AFTER_CREATED_MS;
}
if (!expiresTimestamp) {
throw new Error("Enter an expiry date, or enter a created timestamp so expiry can be calculated as +1 hour");
}
const now = nowLog();
return {
...existing,
manual_extension: true,
instance_id: instanceName,
host_address: address,
r_address: address,
created_timestamp: createdTimestamp || null,
created_at_iso: createdTimestamp ? new Date(createdTimestamp).toISOString() : "",
expires_timestamp: expiresTimestamp,
expires_at: new Date(expiresTimestamp).toISOString(),
status: expiresTimestamp < Date.now() ? "expired" : "active",
added_at: existing.added_at || now,
updated_at: now,
last_extension: existing.last_extension || null,
};
}
async function readManualExtensions() {
try {
if (!fs.existsSync(MANUAL_EXTENSIONS_FILE)) {
return [];
}
const raw = await fsp.readFile(MANUAL_EXTENSIONS_FILE, "utf8");
const parsed = JSON.parse(raw);
const rawItems = Array.isArray(parsed) ? parsed : Array.isArray(parsed.items) ? parsed.items : [];
const items = [];
for (const item of rawItems) {
try {
const normalized = normalizeManualExtensionRecord(item, item);
normalized.status = normalized.expires_timestamp < Date.now() ? "expired" : "active";
items.push(normalized);
} catch {
// Skip invalid manual records instead of breaking the dashboard.
}
}
items.sort((a, b) => (a.expires_timestamp || 0) - (b.expires_timestamp || 0));
return items;
} catch {
return [];
}
}
async function writeManualExtensions(items) {
await fsp.mkdir(path.dirname(MANUAL_EXTENSIONS_FILE), { recursive: true });
const sorted = [...items].sort((a, b) => (a.expires_timestamp || 0) - (b.expires_timestamp || 0));
const tmpPath = `${MANUAL_EXTENSIONS_FILE}.tmp`;
await fsp.writeFile(
tmpPath,
JSON.stringify(
{
version: 1,
updated_at: new Date().toISOString(),
items: sorted,
},
null,
2
),
"utf8"
);
await fsp.rename(tmpPath, MANUAL_EXTENSIONS_FILE);
return sorted;
}
async function requireManualExtension(instanceName) {
const cleanInstanceName = cleanManualInstanceName(instanceName);
const items = await readManualExtensions();
const found = items.find((item) => item.instance_id === cleanInstanceName);
if (!found) {
throw new Error("Manual extension entry not found");
}
return found;
}
async function upsertManualExtension(input) {
const items = await readManualExtensions();
const instanceName = cleanManualInstanceName(input.instanceName || input.instance_id || input.name);
const existingIndex = items.findIndex((item) => item.instance_id === instanceName);
const existing = existingIndex >= 0 ? items[existingIndex] : {};
const record = normalizeManualExtensionRecord(input, existing);
if (existingIndex >= 0) {
items[existingIndex] = record;
} else {
items.push(record);
}
const saved = await writeManualExtensions(items);
return {
record,
items: saved,
};
}
async function deleteManualExtension(instanceName) {
const cleanInstanceName = cleanManualInstanceName(instanceName);
const items = await readManualExtensions();
const filtered = items.filter((item) => item.instance_id !== cleanInstanceName);
if (filtered.length === items.length) {
throw new Error("Manual extension entry not found");
}
return writeManualExtensions(filtered);
}
async function markManualExtensionResult(instanceName, extension = {}) {
const cleanInstanceName = cleanManualInstanceName(instanceName);
const items = await readManualExtensions();
const index = items.findIndex((item) => item.instance_id === cleanInstanceName);
if (index === -1) {
return null;
}
const moments = Number(extension.moments || 0);
const oldExpiresTimestamp = Number(items[index].expires_timestamp || 0);
const nowMs = Date.now();
let nextExpiresTimestamp = Number(extension.localExpiresTimestamp || 0);
if (!Number.isFinite(nextExpiresTimestamp) || nextExpiresTimestamp <= 0) {
if (Number.isInteger(moments) && moments > 0) {
nextExpiresTimestamp = Math.max(oldExpiresTimestamp || 0, nowMs) + moments * 3600000;
} else {
nextExpiresTimestamp = oldExpiresTimestamp || nowMs;
}
}
items[index] = {
...items[index],
expires_timestamp: nextExpiresTimestamp,
expires_at: formatUtcTimestamp(nextExpiresTimestamp),
status: "active",
last_extended_at: nowLog(),
last_extend_moments: moments || null,
last_extension: {
extended_at: new Date().toISOString(),
transactionResult: extension.transactionResult || "",
verificationLevel: extension.verificationLevel || "",
warning: extension.warning || "",
txHash: extension.txHash || "",
requestTxHash: extension.requestTxHash || "",
expiryMoment: extension.expiryMoment || null,
localExpiresTimestamp: nextExpiresTimestamp,
moments: moments || null,
},
updated_at: nowLog(),
};
await writeManualExtensions(items);
return items[index];
}
const INSTANCE_BACKUP_TYPE = "everstoring.instances.backup";
const INSTANCE_BACKUP_VERSION = 1;
function backupTimestamp() {
return new Date()
.toISOString()
.replace(/[:.]/g, "-");
}
async function readInstanceBackupItems() {
await fsp.mkdir(INSTANCES_DIR, { recursive: true });
const files = (await fsp.readdir(INSTANCES_DIR))
.filter((file) => file.endsWith(".json"))
.sort((a, b) => a.localeCompare(b));
const items = [];
for (const file of files) {
const instanceName = file.replace(/\.json$/i, "");
if (!isSafeName(instanceName)) {
continue;
}
const fullPath = path.join(INSTANCES_DIR, file);
const raw = await fsp.readFile(fullPath, "utf8");
const parsed = JSON.parse(raw);
items.push({
file,
instance_id: parsed.instance_id || instanceName,
data: parsed,
});
}
return items;
}
function validateBackupPayload(payload) {
if (!payload || typeof payload !== "object") {
throw new Error("Invalid backup payload");
}
if (payload.type !== INSTANCE_BACKUP_TYPE) {
throw new Error("Invalid backup type");
}
if (payload.version !== INSTANCE_BACKUP_VERSION) {
throw new Error("Unsupported backup version");
}
if (!Array.isArray(payload.instances)) {
throw new Error("Backup is missing instances array");
}
const cleanItems = [];
for (const item of payload.instances) {
const data = item && item.data;
if (!data || typeof data !== "object" || Array.isArray(data)) {
throw new Error("Backup contains an invalid instance record");
}
const instanceId = String(data.instance_id || item.instance_id || "").trim();
if (!isSafeName(instanceId)) {
throw new Error(`Backup contains invalid instance_id: ${instanceId}`);
}
cleanItems.push({
instance_id: instanceId,
data: {
...data,
instance_id: instanceId,
},
});
}
return cleanItems;
}
function validateManualBackupPayload(payload) {
if (!Object.prototype.hasOwnProperty.call(payload, "manualExtensions")) {
return {
present: false,
items: [],
};
}
if (!Array.isArray(payload.manualExtensions)) {
throw new Error("Backup manualExtensions must be an array");
}
const items = [];
const seen = new Set();
for (const rawItem of payload.manualExtensions) {
if (!rawItem || typeof rawItem !== "object" || Array.isArray(rawItem)) {
throw new Error("Backup contains an invalid manual extension record");
}
const normalized = normalizeManualExtensionRecord(rawItem, rawItem);
const key = normalized.instance_id;
if (seen.has(key)) {
continue;
}
seen.add(key);
items.push(normalized);
}
return {
present: true,
items,
};
}
async function writeInstanceBackupRestoreLog({ mode, count }) {
await fsp.mkdir(DEPLOYMENTS_DIR, { recursive: true });
const logPath = path.join(
DEPLOYMENTS_DIR,
`instances_restore_${backupTimestamp()}.json`
);
await fsp.writeFile(
logPath,
JSON.stringify(
{
restored_at: new Date().toISOString(),
mode,
count,
},
null,
2
),
"utf8"
);
return logPath;
}
app.get("/api/instances/backup", requireAdminPrivateKey, async (req, res) => {
try {
const instances = await readInstanceBackupItems();
const manualExtensions = await readManualExtensions();
const backup = {
type: INSTANCE_BACKUP_TYPE,
version: INSTANCE_BACKUP_VERSION,
exported_at: new Date().toISOString(),
source: "Evernode Instance Manager",
instances,
manualExtensions,
};
const filename = `everstoring-instances-backup-${backupTimestamp()}.json`;
res.setHeader("Cache-Control", "no-store");
res.setHeader("Content-Type", "application/json; charset=utf-8");
res.setHeader(
"Content-Disposition",
`attachment; filename="${filename}"`
);
res.send(JSON.stringify(backup, null, 2));
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/instances/restore", requireAdminPrivateKey, async (req, res) => {
try {
const mode = String(req.query.mode || req.body.mode || "merge").trim();
if (!["merge", "replace"].includes(mode)) {
return res.status(400).json({
ok: false,
error: "Restore mode must be merge or replace",
});
}
const payload = req.body.backup || req.body;
const items = validateBackupPayload(payload);
const manualBackup = validateManualBackupPayload(payload);
await fsp.mkdir(INSTANCES_DIR, { recursive: true });
if (mode === "replace") {
const existingFiles = (await fsp.readdir(INSTANCES_DIR))
.filter((file) => file.endsWith(".json"));
for (const file of existingFiles) {
const instanceName = file.replace(/\.json$/i, "");
if (!isSafeName(instanceName)) {
continue;
}
await fsp.rm(path.join(INSTANCES_DIR, file), {
force: true,
});
}
}
for (const item of items) {
const jsonPath = path.join(INSTANCES_DIR, `${item.instance_id}.json`);
const tmpPath = `${jsonPath}.tmp`;
await fsp.writeFile(
tmpPath,
JSON.stringify(item.data, null, 2),
"utf8"
);
await fsp.rename(tmpPath, jsonPath);
}
let restoredManualExtensions = 0;
let manualExtensions = await readManualExtensions();
if (manualBackup.present) {
if (mode === "replace") {
manualExtensions = await writeManualExtensions(manualBackup.items);
} else {
const byInstanceName = new Map();
for (const item of manualExtensions) {
byInstanceName.set(item.instance_id, item);
}
for (const item of manualBackup.items) {
byInstanceName.set(item.instance_id, item);
}
manualExtensions = await writeManualExtensions([...byInstanceName.values()]);
}
restoredManualExtensions = manualBackup.items.length;
}
const restoreLog = await writeInstanceBackupRestoreLog({
mode,
count: items.length,
});
const instances = await readInstances({ includeHidden: true });
res.json({
ok: true,
restored: items.length,
restoredManualExtensions,
manualBackupIncluded: manualBackup.present,
mode,
restoreLog,
instances,
manualExtensions,
});
} catch (error) {
res.status(400).json({
ok: false,
error: error.message,
});
}
});
async function setInstanceHidden(instanceName, hidden) {
const jsonPaths = await findMatchingInstanceJsonPaths(instanceName);
let updated = null;
for (const jsonPath of jsonPaths) {
const raw = await fsp.readFile(jsonPath, "utf8");
const parsed = JSON.parse(raw);
if (hidden) {
parsed.hidden = true;
parsed.hidden_at = nowLog();
} else {
parsed.hidden = false;
delete parsed.hidden_at;
}
const tmpPath = `${jsonPath}.tmp`;
await fsp.writeFile(tmpPath, JSON.stringify(parsed, null, 2), "utf8");
await fsp.rename(tmpPath, jsonPath);
updated = parsed;
}
return updated;
}
async function setClusterFirstInstance(instanceName, makeFirst) {
if (!isSafeName(instanceName)) {
throw new Error("Invalid instance name");
}
const selectedPath = await findInstanceJsonPath(instanceName);
const selectedRaw = await fsp.readFile(selectedPath, "utf8");
const selected = JSON.parse(selectedRaw);
const selectedContractId = String(selected.contract_id || "").trim();
if (makeFirst === true && !selectedContractId) {
throw new Error("Cannot mark first/source node without a contract ID");
}
const files = (await fsp.readdir(INSTANCES_DIR))
.filter((file) => file.endsWith(".json"));
let updatedSelected = null;
for (const file of files) {
const fullPath = path.join(INSTANCES_DIR, file);
let parsed;
try {
parsed = JSON.parse(await fsp.readFile(fullPath, "utf8"));
} catch {
continue;
}
const isSelected = parsed.instance_id === instanceName || file === `${instanceName}.json`;
const sameContract = selectedContractId && String(parsed.contract_id || "").trim() === selectedContractId;
let changed = false;
if (makeFirst === true && sameContract && parsed.cluster_first_instance === true) {
parsed.cluster_first_instance = false;
changed = true;
}
if (isSelected) {
parsed.cluster_first_instance = makeFirst === true;
parsed.cluster_first_manual = makeFirst === true;
if (makeFirst === true) {
parsed.cluster_first_marked_at = nowLog();
} else {
delete parsed.cluster_first_marked_at;
}
changed = true;
updatedSelected = parsed;
}
if (changed) {
const tmpPath = `${fullPath}.tmp`;
await fsp.writeFile(tmpPath, JSON.stringify(parsed, null, 2), "utf8");
await fsp.rename(tmpPath, fullPath);
}
}
if (!updatedSelected) {
throw new Error("Selected instance was not updated");
}
return updatedSelected;
}
app.post("/api/instances/cluster-first", requireAdminPrivateKey, async (req, res) => {
try {
const { instanceName, makeFirst } = req.body;
const instance = await setClusterFirstInstance(
String(instanceName || "").trim(),
makeFirst === true
);
const instances = await readInstances({ includeHidden: true });
res.json({
ok: true,
instance,
instances,
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.get("/api/instances", requireAdminPrivateKey, async (req, res) => {
try {
const includeHidden =
req.query.includeHidden === "1" ||
req.query.includeHidden === "true";
const instances = await readInstances({ includeHidden });
const manualExtensions = await readManualExtensions();
res.json({ ok: true, instances, manualExtensions });
} catch (error) {
res.status(500).json({ ok: false, error: error.message });
}
});
app.get("/api/manual-extensions", requireAdminPrivateKey, async (req, res) => {
try {
const manualExtensions = await readManualExtensions();
res.json({
ok: true,
manualExtensions,
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/manual-extensions", requireAdminPrivateKey, async (req, res) => {
try {
const { record, items } = await upsertManualExtension(req.body || {});
res.json({
ok: true,
manualExtension: record,
manualExtensions: items,
});
} catch (error) {
res.status(400).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/manual-extensions/delete", requireAdminPrivateKey, async (req, res) => {
try {
const manualExtensions = await deleteManualExtension(req.body?.instanceName || req.body?.instance_id);
res.json({
ok: true,
manualExtensions,
});
} catch (error) {
res.status(400).json({
ok: false,
error: error.message,
});
}
});
function cleanBulkInstanceNameList(value, fieldName = "instanceNames") {
if (!Array.isArray(value)) {
throw new Error(`${fieldName} must be an array`);
}
const names = [
...new Set(
value
.map((item) => String(item || "").trim())
.filter(Boolean)
),
];
if (!names.length) {
throw new Error("Select at least one instance");
}
if (names.length > 200) {
throw new Error("Too many selected instances");
}
for (const name of names) {
if (!isSafeName(name)) {
throw new Error(`Invalid instance name: ${name}`);
}
}
return names;
}
async function getInstanceJsonPath(instanceName) {
return findInstanceJsonPath(instanceName);
}
async function requireInstanceJsonFiles(instanceNames) {
for (const instanceName of instanceNames) {
await findMatchingInstanceJsonPaths(instanceName);
}
}
async function deleteInstanceJson(instanceName) {
const jsonPaths = await findMatchingInstanceJsonPaths(instanceName);
for (const jsonPath of jsonPaths) {
await fsp.rm(jsonPath, { force: false });
}
return {
instance_id: instanceName,
deleted: true,
deleted_files: jsonPaths.length,
};
}
async function deleteManualExtensionsBulk(instanceNames) {
const cleanNames = cleanBulkInstanceNameList(instanceNames);
const selected = new Set(cleanNames);
const items = await readManualExtensions();
const existing = new Set(items.map((item) => item.instance_id));
const missing = cleanNames.filter((name) => !existing.has(name));
if (missing.length) {
throw new Error(`Manual extension entry not found: ${missing.join(", ")}`);
}
const filtered = items.filter((item) => !selected.has(item.instance_id));
return writeManualExtensions(filtered);
}
app.post("/api/instances/bulk", requireAdminPrivateKey, async (req, res) => {
try {
const action = String(req.body?.action || "").trim().toLowerCase();
const instanceNames = cleanBulkInstanceNameList(req.body?.instanceNames);
if (!["hide", "unhide", "delete"].includes(action)) {
return res.status(400).json({
ok: false,
error: "Bulk action must be hide, unhide, or delete",
});
}
await requireInstanceJsonFiles(instanceNames);
const results = [];
for (const instanceName of instanceNames) {
if (action === "hide") {
results.push(await setInstanceHidden(instanceName, true));
} else if (action === "unhide") {
results.push(await setInstanceHidden(instanceName, false));
} else if (action === "delete") {
results.push(await deleteInstanceJson(instanceName));
}
}
const instances = await readInstances({ includeHidden: true });
const manualExtensions = await readManualExtensions();
res.json({
ok: true,
action,
count: instanceNames.length,
results,
instances,
manualExtensions,
});
} catch (error) {
res.status(400).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/manual-extensions/bulk-delete", requireAdminPrivateKey, async (req, res) => {
try {
const instanceNames = cleanBulkInstanceNameList(req.body?.instanceNames);
const manualExtensions = await deleteManualExtensionsBulk(instanceNames);
const instances = await readInstances({ includeHidden: true });
res.json({
ok: true,
deleted: instanceNames.length,
instances,
manualExtensions,
});
} catch (error) {
res.status(400).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/instances/hide", requireAdminPrivateKey, async (req, res) => {
try {
const { instanceName } = req.body;
const instance = await setInstanceHidden(instanceName, true);
const instances = await readInstances({ includeHidden: true });
res.json({
ok: true,
instance,
instances,
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/instances/unhide", requireAdminPrivateKey, async (req, res) => {
try {
const { instanceName } = req.body;
const instance = await setInstanceHidden(instanceName, false);
const instances = await readInstances({ includeHidden: true });
res.json({
ok: true,
instance,
instances,
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
const DEFAULT_HOST_API = {
id: "onledger",
name: "Onledger",
url: "https://api.onledger.net/hosts",
readonly: true,
};
function makeHostApiId(name, url) {
return crypto
.createHash("sha256")
.update(`${name}:${url}`)
.digest("hex")
.slice(0, 16);
}
function cleanHostApiUrl(value) {
const raw = String(value || "").trim();
if (!raw) {
throw new Error("Host API URL is required");
}
const url = new URL(raw);
if (url.protocol !== "https:") {
throw new Error("Host API URL must use https");
}
if (url.username || url.password) {
throw new Error("Host API URL cannot contain username/password");
}
return url.toString();
}
function normalizeHostApiRecord(record) {
const name = String(record.name || "").trim();
if (!name) {
throw new Error("Host API name is required");
}
if (name.length > 80) {
throw new Error("Host API name is too long");
}
const url = cleanHostApiUrl(record.url);
return {
id: String(record.id || makeHostApiId(name, url)).trim(),
name,
url,
};
}
async function readSavedHostApis() {
try {
if (!fs.existsSync(HOST_APIS_FILE)) {
return [];
}
const raw = await fsp.readFile(HOST_APIS_FILE, "utf8");
const parsed = JSON.parse(raw);
if (!Array.isArray(parsed)) {
return [];
}
return parsed
.map((item) => {
try {
return normalizeHostApiRecord(item);
} catch {
return null;
}
})
.filter(Boolean);
} catch {
return [];
}
}
async function writeSavedHostApis(apis) {
await fsp.mkdir(path.dirname(HOST_APIS_FILE), { recursive: true });
const tmpPath = `${HOST_APIS_FILE}.tmp`;
await fsp.writeFile(tmpPath, JSON.stringify(apis, null, 2), "utf8");
await fsp.rename(tmpPath, HOST_APIS_FILE);
}
async function getAllHostApis() {
const saved = await readSavedHostApis();
return [
DEFAULT_HOST_API,
...saved.filter((api) => api.id !== DEFAULT_HOST_API.id),
];
}
async function resolveHostApi(apiId) {
const apis = await getAllHostApis();
const wanted = String(apiId || DEFAULT_HOST_API.id).trim();
const api = apis.find((item) => item.id === wanted);
if (!api) {
throw new Error("Unknown host API selected");
}
return api;
}
function buildHostApiFetchUrl(apiUrl, params) {
const url = new URL(apiUrl);
// Allows saving either:
// https://api.onledger.net
// or:
// https://api.onledger.net/hosts
if (!url.pathname || url.pathname === "/") {
url.pathname = "/hosts";
}
for (const [key, value] of params.entries()) {
url.searchParams.set(key, value);
}
return url.toString();
}
app.get("/api/settings", async (req, res) => {
try {
const settings = await readDashboardSettings();
res.setHeader("Cache-Control", "no-store");
res.json({
ok: true,
settings,
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/settings/acquire-image", requireAdminPrivateKey, async (req, res) => {
try {
const defaultAcquireImage = cleanAcquireImage(req.body.defaultAcquireImage);
if (!defaultAcquireImage) {
return res.status(400).json({
ok: false,
error: "Docker image is required",
});
}
const settings = await writeDashboardSettings({
...(await readDashboardSettings()),
defaultAcquireImage,
});
res.json({
ok: true,
settings,
});
} catch (error) {
res.status(400).json({
ok: false,
error: error.message,
});
}
});
app.get("/api/host-apis", async (req, res) => {
try {
const apis = await getAllHostApis();
res.json({
ok: true,
apis,
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/host-apis", requireAdminPrivateKey, async (req, res) => {
try {
const nextApi = normalizeHostApiRecord({
name: req.body.name,
url: req.body.url,
});
const saved = await readSavedHostApis();
const withoutSame = saved.filter(
(api) => api.id !== nextApi.id && api.url !== nextApi.url
);
const nextSaved = [...withoutSame, nextApi].sort((a, b) =>
a.name.localeCompare(b.name)
);
await writeSavedHostApis(nextSaved);
res.json({
ok: true,
api: nextApi,
apis: await getAllHostApis(),
});
} catch (error) {
res.status(400).json({
ok: false,
error: error.message,
});
}
});
app.get("/api/hosts", requireAdminPrivateKey, async (req, res) => {
try {
const selectedApi = await resolveHostApi(req.query.apiId);
const params = new URLSearchParams();
params.set("active", "true");
params.set("minSlots", req.query.minSlots || "1");
params.set("minRep", req.query.minRep || "200");
params.set("limit", req.query.limit || "50");
params.set("sort", req.query.sort || "hostReputation:desc");
if (req.query.country) params.set("country", req.query.country);
if (req.query.minRam) params.set("minRam", req.query.minRam);
if (req.query.minDisk) params.set("minDisk", req.query.minDisk);
// For URLs like:
// /api/hosts?search=&description_like=evrpanel
if (Object.prototype.hasOwnProperty.call(req.query, "search")) {
params.set("search", String(req.query.search || ""));
}
if (req.query.description_like) {
params.set("description_like", String(req.query.description_like).trim());
}
const url = buildHostApiFetchUrl(selectedApi.url, params);
const upstream = await fetch(url);
if (!upstream.ok) {
throw new Error(`${selectedApi.name} API returned HTTP ${upstream.status}`);
}
const data = await upstream.json();
res.json({
ok: true,
hostApi: {
id: selectedApi.id,
name: selectedApi.name,
url: selectedApi.url,
},
...data,
});
} catch (error) {
res.status(500).json({ ok: false, error: error.message });
}
});
function isPrivateIpAddress(hostname) {
const host = String(hostname || "").replace(/^\[|\]$/g, "");
const family = net.isIP(host);
if (family === 4) {
const parts = host.split(".").map((part) => Number(part));
if (parts.length !== 4 || parts.some((part) => !Number.isInteger(part))) {
return true;
}
const [a, b] = parts;
return (
a === 10 ||
a === 127 ||
(a === 169 && b === 254) ||
(a === 172 && b >= 16 && b <= 31) ||
(a === 192 && b === 168)
);
}
if (family === 6) {
const lower = host.toLowerCase();
return (
lower === "::1" ||
lower.startsWith("fc") ||
lower.startsWith("fd") ||
lower.startsWith("fe80")
);
}
return false;
}
function buildEvrPanelApiUrl(domain) {
const raw = String(domain || "").trim();
if (!raw) {
throw new Error("Missing EvrPanel host domain");
}
if (raw.length > 253) {
throw new Error("EvrPanel host domain is too long");
}
const url = new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(raw) ? raw : `https://${raw}`);
if (url.protocol !== "https:") {
throw new Error("EvrPanel API URL must use https");
}
if (url.username || url.password) {
throw new Error("EvrPanel API URL cannot contain username/password");
}
const hostname = String(url.hostname || "").toLowerCase();
if (!hostname || hostname === "localhost" || hostname.endsWith(".localhost") || isPrivateIpAddress(hostname)) {
throw new Error("Unsafe EvrPanel API host");
}
url.pathname = "/api/";
url.search = "";
url.hash = "";
return url.toString();
}
async function fetchJsonWithTimeout(url, timeoutMs = 10000) {
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeoutMs);
try {
const upstream = await fetch(url, {
method: "GET",
headers: {
Accept: "application/json",
},
signal: controller.signal,
});
const text = await upstream.text();
if (!upstream.ok) {
throw new Error(`EvrPanel API returned HTTP ${upstream.status}`);
}
if (text.length > 1024 * 1024) {
throw new Error("EvrPanel API response is too large");
}
try {
return JSON.parse(text);
} catch {
throw new Error("EvrPanel API did not return valid JSON");
}
} catch (error) {
if (error && error.name === "AbortError") {
throw new Error("EvrPanel API request timed out");
}
throw error;
} finally {
clearTimeout(timer);
}
}
app.get("/api/evrpanel-info", async (req, res) => {
try {
const url = buildEvrPanelApiUrl(req.query.domain);
const data = await fetchJsonWithTimeout(url);
res.setHeader("Cache-Control", "no-store");
res.json({
ok: true,
url,
data,
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/keygen", async (req, res) => {
try {
const { stdout, stderr } = await runCommand(EVDEVKIT_BIN, ["keygen"]);
const output = `${stdout}\n${stderr}`;
const privateKeyMatch =
output.match(/privateKey:\s*'([^']+)'/) ||
output.match(/Private key:\s*([^\s]+)/i);
const publicKeyMatch =
output.match(/publicKey:\s*'([^']+)'/) ||
output.match(/Public key\s*:\s*([^\s]+)/i) ||
output.match(/Public key:\s*([^\s]+)/i);
if (!privateKeyMatch || !publicKeyMatch) {
return res.status(500).json({
ok: false,
error: "Could not parse evdevkit keygen output",
output,
});
}
res.json({
ok: true,
privateKey: privateKeyMatch[1],
publicKey: publicKeyMatch[1],
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.post("/api/publickey", async (req, res) => {
try {
const { privateKey } = req.body;
const publicKey = derivePublicKeyFromPrivateKey(privateKey);
res.json({
ok: true,
publicKey,
});
} catch (error) {
res.status(400).json({
ok: false,
error: error.message,
});
}
});
function getEncryptedSeedStatus() {
try {
if (!fs.existsSync(ENCRYPTED_SEED_SECRET_PATH)) {
return {
available: false,
exists: false,
path: ENCRYPTED_SEED_SECRET_PATH,
size: 0,
trimmedLength: 0,
reason: "secret file not found",
};
}
const stat = fs.statSync(ENCRYPTED_SEED_SECRET_PATH);
const raw = fs.readFileSync(ENCRYPTED_SEED_SECRET_PATH, "utf8");
const trimmed = raw.trim();
if (!trimmed) {
return {
available: false,
exists: true,
path: ENCRYPTED_SEED_SECRET_PATH,
size: stat.size,
trimmedLength: 0,
reason: "secret file is empty",
};
}
let parsed;
if (trimmed.startsWith("evseed:v1:")) {
const encoded = trimmed.slice("evseed:v1:".length).trim();
if (!encoded) {
return {
available: false,
exists: true,
path: ENCRYPTED_SEED_SECRET_PATH,
size: stat.size,
trimmedLength: trimmed.length,
reason: "evseed payload is empty",
};
}
const json = Buffer.from(encoded, "base64url").toString("utf8");
parsed = JSON.parse(json);
} else {
parsed = JSON.parse(trimmed);
}
const valid =
parsed &&
parsed.v === 1 &&
typeof parsed.salt === "string" &&
parsed.salt.length > 0 &&
typeof parsed.iv === "string" &&
parsed.iv.length > 0 &&
typeof parsed.authTag === "string" &&
parsed.authTag.length > 0 &&
typeof parsed.ciphertext === "string" &&
parsed.ciphertext.length > 0;
return {
available: !!valid,
exists: true,
path: ENCRYPTED_SEED_SECRET_PATH,
size: stat.size,
trimmedLength: trimmed.length,
reason: valid ? "valid encrypted seed found" : "encrypted seed payload is invalid",
};
} catch (error) {
return {
available: false,
exists: fs.existsSync(ENCRYPTED_SEED_SECRET_PATH),
path: ENCRYPTED_SEED_SECRET_PATH,
size: 0,
trimmedLength: 0,
reason: error.message,
};
}
}
function encryptedSeedSecretExists() {
return encryptedSeedSecretHasUsableContent();
}
app.get("/api/seed-status", async (req, res) => {
res.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate");
res.setHeader("Pragma", "no-cache");
res.setHeader("Expires", "0");
res.json({
ok: true,
encryptedSeedAvailable: encryptedSeedSecretHasUsableContent(),
otpEnvelopeEnabled: otpEnvelopeEnabled(),
});
});
async function updateInstanceJson(instanceName, updates) {
if (!isSafeName(instanceName)) {
throw new Error("Invalid instance name for update");
}
const jsonPath = path.join(INSTANCES_DIR, `${instanceName}.json`);
const raw = await fsp.readFile(jsonPath, "utf8");
const parsed = JSON.parse(raw);
const next = {
...parsed,
...(updates || {}),
};
const tmpPath = `${jsonPath}.tmp`;
await fsp.writeFile(tmpPath, JSON.stringify(next, null, 2), "utf8");
await fsp.rename(tmpPath, jsonPath);
return next;
}
async function readInstanceJson(instanceName) {
if (!isSafeName(instanceName)) {
throw new Error("Invalid instance name");
}
const jsonPath = path.join(INSTANCES_DIR, `${instanceName}.json`);
const raw = await fsp.readFile(jsonPath, "utf8");
return JSON.parse(raw);
}
async function writeInstanceJson(instanceName, data) {
if (!isSafeName(instanceName)) {
throw new Error("Invalid instance name");
}
const jsonPath = path.join(INSTANCES_DIR, `${instanceName}.json`);
const tmpPath = `${jsonPath}.tmp`;
await fsp.writeFile(tmpPath, JSON.stringify(data, null, 2), "utf8");
await fsp.rename(tmpPath, jsonPath);
return data;
}
function outputContainsInstanceName(output, instanceName) {
const cleanInstanceName = String(instanceName || "").trim();
if (!cleanInstanceName || !isSafeName(cleanInstanceName)) {
return false;
}
return stripAnsi(output || "")
.toLowerCase()
.includes(cleanInstanceName.toLowerCase());
}
function parseExtendOutput(rawOutput, expectedInstanceName = "", expectedRunId = "") {
const text = stripAnsi(rawOutput || "");
const transactionMatch = text.match(/Transaction result:\s*([^\s]+)/i);
const transactionResult = transactionMatch ? transactionMatch[1].trim() : "";
const txnRefMatch = text.match(/Extension txn Ref:\s*([A-Fa-f0-9]{64})/i);
const expiryMomentMatch = text.match(/Expiry\s+moment\s*:\s*([0-9]+)/i);
const txHashMatch = text.match(/txHash:\s*([A-Fa-f0-9]{64})/i);
const noTokenMatch = /(^|[^A-Za-z0-9_])NO_TOKEN([^A-Za-z0-9_]|$)/i.test(text);
const failureMarkerMatch = text.match(/EV_EXTEND_FAIL_JSON\s+({[^\n\r]+})/i);
const cleanExpectedInstanceName = String(expectedInstanceName || "").trim();
const cleanExpectedRunId = String(expectedRunId || "").trim();
function baseFailure(reason) {
return {
ok: false,
reason,
transactionResult,
verificationLevel: "failed",
warning: "",
txHash: txnRefMatch ? txnRefMatch[1] : "",
requestTxHash: txHashMatch ? txHashMatch[1] : "",
expiryMoment: expiryMomentMatch ? Number(expiryMomentMatch[1]) : null,
localExpiresTimestamp: null,
moments: null,
instanceNameMatched: outputContainsInstanceName(text, cleanExpectedInstanceName),
output: text,
};
}
if (noTokenMatch) {
return baseFailure("NO_TOKEN");
}
if (failureMarkerMatch) {
try {
const marker = JSON.parse(failureMarkerMatch[1]);
return {
...baseFailure(marker.error || "Extender failure marker"),
failureMarker: marker,
};
} catch {
return baseFailure("Extender failure marker");
}
}
/*
* Critical guard:
* The extender log can contain EV_EXTEND_OK_JSON even after evdevkit printed
* TRANSACTION_FAILURE. A visible transaction failure must always win over a
* later OK marker.
*/
if (/(^|\n)\s*TRANSACTION_FAILURE\s*($|\n)/i.test(text)) {
return baseFailure("TRANSACTION_FAILURE");
}
if (
transactionResult &&
!/^(tesSUCCESS|success|accepted|not-required)$/i.test(transactionResult)
) {
return baseFailure(`Bad transaction result: ${transactionResult}`);
}
const markerRegex = /EV_EXTEND_OK_JSON\s+({[^\n\r]+})/gi;
let marker = null;
let markerMatch;
while ((markerMatch = markerRegex.exec(text)) !== null) {
try {
const parsed = JSON.parse(markerMatch[1]);
const markerInstance = String(parsed.instance || "").trim();
const markerRunId = String(parsed.run_id || "").trim();
if (
cleanExpectedInstanceName &&
markerInstance !== cleanExpectedInstanceName
) {
continue;
}
if (cleanExpectedRunId && markerRunId !== cleanExpectedRunId) {
continue;
}
marker = parsed;
} catch {
// Ignore malformed marker and continue scanning.
}
}
if (!marker) {
return baseFailure("Missing EV_EXTEND_OK_JSON success marker");
}
const markerTransactionResult = String(marker.transactionResult || "").trim();
if (
markerTransactionResult &&
!/^(tesSUCCESS|success|accepted|not-required)$/i.test(markerTransactionResult)
) {
return baseFailure(`Bad marker transactionResult: ${markerTransactionResult}`);
}
return {
ok: true,
transactionResult:
markerTransactionResult ||
transactionResult ||
"not-required",
verificationLevel: "extender-success-marker",
warning: "",
txHash: marker.txHash || (txnRefMatch ? txnRefMatch[1] : ""),
requestTxHash: marker.requestTxHash || (txHashMatch ? txHashMatch[1] : ""),
expiryMoment:
marker.expiryMoment !== undefined && marker.expiryMoment !== null
? Number(marker.expiryMoment)
: expiryMomentMatch
? Number(expiryMomentMatch[1])
: null,
localExpiresTimestamp:
marker.localExpiresTimestamp !== undefined && marker.localExpiresTimestamp !== null
? Number(marker.localExpiresTimestamp)
: null,
moments:
marker.moments !== undefined && marker.moments !== null
? Number(marker.moments)
: null,
instanceNameMatched: true,
marker,
output: text,
};
}
async function collectRecentExtendLogOutput({ runId, startedAtMs }) {
const sinceMs = Number(startedAtMs || 0) - 5000;
const lowerRunId = String(runId || "").trim().toLowerCase();
if (!lowerRunId) {
return "";
}
const searchDirs = [LOG_DIR, CLUSTERING_DIR, DEPLOYMENTS_DIR];
const candidates = [];
const seen = new Set();
function isPotentialExtendLogPath(filePath) {
const lowerPath = String(filePath || "").toLowerCase();
const lowerName = path.basename(lowerPath);
return (
lowerPath.includes("extend") ||
lowerPath.includes("extender") ||
lowerPath.includes("log") ||
lowerName.endsWith(".log") ||
lowerName.endsWith(".txt")
);
}
async function maybeAddCandidate(filePath) {
if (seen.has(filePath)) return;
seen.add(filePath);
try {
const stat = await fsp.stat(filePath);
if (!stat.isFile() || stat.mtimeMs < sinceMs) {
return;
}
const lowerPath = filePath.toLowerCase();
if (lowerPath.includes(lowerRunId)) {
candidates.push({ filePath, mtimeMs: stat.mtimeMs, trustedBy: "path" });
return;
}
// Never trust generic/instance/"latest extend" logs. They can contain an
// older successful Expiry moment and make a failed extension look good.
// Only accept a fallback log when the current runId appears inside it.
if (!isPotentialExtendLogPath(filePath)) {
return;
}
const raw = await fsp.readFile(filePath, "utf8").catch(() => "");
if (raw.toLowerCase().includes(lowerRunId)) {
candidates.push({
filePath,
mtimeMs: stat.mtimeMs,
trustedBy: "content",
cachedRaw: raw,
});
}
} catch {}
}
async function scanDir(dir, depth = 0) {
if (!dir || depth > 3 || !fs.existsSync(dir)) return;
let entries = [];
try {
entries = await fsp.readdir(dir, { withFileTypes: true });
} catch {
return;
}
for (const entry of entries) {
const fullPath = path.join(dir, entry.name);
const lower = entry.name.toLowerCase();
if (entry.isDirectory()) {
if (
depth === 0 ||
lower.includes(lowerRunId) ||
lower.includes("log") ||
lower.includes("extend") ||
lower.includes("extender")
) {
await scanDir(fullPath, depth + 1);
}
} else if (entry.isFile()) {
await maybeAddCandidate(fullPath);
}
}
}
for (const dir of searchDirs) {
await scanDir(dir, 0);
}
const outputParts = [];
const selected = candidates.sort((a, b) => b.mtimeMs - a.mtimeMs).slice(0, 12);
for (const candidate of selected) {
try {
const raw = candidate.cachedRaw || await fsp.readFile(candidate.filePath, "utf8");
outputParts.push(
`\n--- CURRENT EXTEND LOG CONTENT (${candidate.trustedBy}) ---\n${raw.slice(-200000)}\n`
);
} catch {}
}
return outputParts.join("\n");
}
function formatExtendFailureMessage(parseResult, output) {
const cleanOutput = stripAnsi(output || parseResult?.output || "")
.split(/\r?\n/)
.map((line) => line.trim())
.filter(Boolean)
.slice(-20)
.join(" | ");
const reason = parseResult?.reason || "Extender command failed";
const suffix = cleanOutput ? ` Output: ${cleanOutput.slice(-1800)}` : "";
return `Extension failed: ${reason}.${suffix}`;
}
function deployOutputLooksFailed(output) {
const text = stripAnsi(String(output || ""));
return /Error occurred while uploading the bundle/i.test(text) ||
/Bootstrap contact is not available/i.test(text) ||
/Input submission failed/i.test(text) ||
/connection_error/i.test(text) ||
/Command failed with code/i.test(text);
}
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
async function acquireDeployFindFileByName(rootDir, fileName) {
const entries = await fsp.readdir(rootDir, { withFileTypes: true });
for (const entry of entries) {
const fullPath = path.join(rootDir, entry.name);
if (entry.isDirectory()) {
const nested = await acquireDeployFindFileByName(fullPath, fileName);
if (nested) {
return nested;
}
} else if (entry.isFile() && entry.name === fileName) {
return fullPath;
}
}
return "";
}
async function acquireDeployFindFilesByName(rootDir, fileName) {
const entries = await fsp.readdir(rootDir, { withFileTypes: true });
const matches = [];
for (const entry of entries) {
const fullPath = path.join(rootDir, entry.name);
if (entry.isDirectory()) {
const nested = await acquireDeployFindFilesByName(fullPath, fileName);
matches.push(...nested);
} else if (entry.isFile() && entry.name === fileName) {
matches.push(fullPath);
}
}
return matches;
}
async function patchAcquireDeployInstallShFile({
installPath,
logFile,
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
generalEnvExtra = "",
}) {
const block = makePortsEnvInstallBlock({
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
generalEnvExtra,
});
let existing = "";
let existed = false;
if (fs.existsSync(installPath)) {
existed = true;
existing = await fsp.readFile(installPath, "utf8");
existing = removeExistingPortsEnvInstallBlock(existing).trimStart();
}
let nextContent;
if (!existing) {
nextContent = [
"#!/usr/bin/env bash",
"set -e",
"",
block,
"",
].join("\n");
} else {
const lines = existing.split(/\r?\n/);
const firstLine = lines[0] || "";
if (firstLine.startsWith("#!")) {
nextContent = [
firstLine,
block,
...lines.slice(1),
].join("\n");
} else {
nextContent = [
"#!/usr/bin/env bash",
block,
existing,
].join("\n");
}
if (!nextContent.endsWith("\n")) {
nextContent += "\n";
}
}
await fsp.writeFile(installPath, nextContent, {
encoding: "utf8",
mode: 0o755,
});
await fsp.chmod(installPath, 0o755).catch(() => {});
await appendLog(
logFile,
existed
? `Patched bundled install.sh with general.env block: ${installPath}\n`
: `Created bundled install.sh with general.env block: ${installPath}\n`
);
}
async function patchAcquireDeployHpCfgOverrideMeshAndUnl({
patchDir,
logFile,
requestedUnl,
requestedKnownPeers,
}) {
const cleanRequestedUnl = cleanStringArray(requestedUnl);
const cleanRequestedKnownPeers = cleanStringArray(requestedKnownPeers);
if (!cleanRequestedUnl.length && !cleanRequestedKnownPeers.length) {
await appendLog(
logFile,
"No requested UNL or known peers supplied; hp.cfg.override not patched.\n"
);
return;
}
const directCandidates = [
path.join(patchDir, "hp.cfg.override"),
path.join(patchDir, "cfg", "hp.cfg.override"),
path.join(patchDir, "contract", "cfg", "hp.cfg.override"),
];
const found = await acquireDeployFindFilesByName(patchDir, "hp.cfg.override");
const allOverridePaths = [
...directCandidates,
...found,
].filter((value, index, arr) => value && arr.indexOf(value) === index);
const existingOverridePaths = [];
for (const candidate of allOverridePaths) {
if (await pathExists(candidate)) {
existingOverridePaths.push(candidate);
}
}
if (!existingOverridePaths.length) {
await appendLog(
logFile,
"hp.cfg.override not found inside bundle; UNL/known peers not patched.\n"
);
return;
}
for (const overridePath of existingOverridePaths) {
let parsed = {};
try {
const raw = await fsp.readFile(overridePath, "utf8");
parsed = raw.trim() ? JSON.parse(raw) : {};
} catch (error) {
throw new Error(`Could not parse bundled hp.cfg.override at ${overridePath}: ${error.message}`);
}
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
parsed = {};
}
if (!parsed.contract || typeof parsed.contract !== "object" || Array.isArray(parsed.contract)) {
parsed.contract = {};
}
if (!parsed.mesh || typeof parsed.mesh !== "object" || Array.isArray(parsed.mesh)) {
parsed.mesh = {};
}
const beforeUnl = Array.isArray(parsed.contract.unl)
? parsed.contract.unl.map((value) => String(value || "").trim()).filter(Boolean)
: [];
const beforeKnownPeers = Array.isArray(parsed.mesh.known_peers)
? parsed.mesh.known_peers.map((value) => String(value || "").trim()).filter(Boolean)
: [];
if (cleanRequestedUnl.length) {
parsed.contract.unl = cleanRequestedUnl;
}
if (cleanRequestedKnownPeers.length) {
parsed.mesh.known_peers = cleanRequestedKnownPeers;
if (!parsed.mesh.peer_discovery || typeof parsed.mesh.peer_discovery !== "object" || Array.isArray(parsed.mesh.peer_discovery)) {
parsed.mesh.peer_discovery = {};
}
parsed.mesh.peer_discovery.enabled = false;
}
await fsp.writeFile(
overridePath,
`${JSON.stringify(parsed, null, 2)}\n`,
"utf8"
);
await appendLog(
logFile,
[
`Patched bundled hp.cfg.override config: ${overridePath}`,
` UNL before: ${beforeUnl.length ? beforeUnl.join(",") : "[empty]"}`,
` UNL after: ${cleanRequestedUnl.length ? cleanRequestedUnl.join(",") : "[unchanged]"}`,
` known_peers before: ${beforeKnownPeers.length ? beforeKnownPeers.join(",") : "[empty]"}`,
` known_peers after: ${cleanRequestedKnownPeers.length ? cleanRequestedKnownPeers.join(",") : "[unchanged]"}`,
"",
].join("\n")
);
}
}
async function patchAcquireDeployBundleZipAfterBundle({
bundleZip,
jobDir,
logFile,
requestedUnl,
requestedKnownPeers,
shouldPatchPortsEnv,
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
generalEnvExtra = "",
}) {
const patchDir = path.join(jobDir, "bundle_patch");
const backupZip = `${bundleZip}.before_acquire_deploy_patch`;
await fsp.rm(patchDir, {
recursive: true,
force: true,
});
await fsp.mkdir(patchDir, {
recursive: true,
});
await appendLog(
logFile,
`\nExtracting bundle so hp.cfg.override/install.sh can be patched (UNL + known_peers): ${bundleZip}\n`
);
await runCommand("unzip", ["-q", bundleZip, "-d", patchDir], {
cwd: jobDir,
});
await patchAcquireDeployHpCfgOverrideMeshAndUnl({
patchDir,
logFile,
requestedUnl,
requestedKnownPeers,
});
if (shouldPatchPortsEnv === true) {
const installPath = path.join(patchDir, "install.sh");
await patchAcquireDeployInstallShFile({
installPath,
logFile,
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
generalEnvExtra,
});
} else {
const installPath = path.join(patchDir, "install.sh");
if (fs.existsSync(installPath)) {
const existingInstall = await fsp.readFile(installPath, "utf8");
const strippedInstall = removeExistingPortsEnvInstallBlock(existingInstall);
if (strippedInstall !== existingInstall) {
await fsp.writeFile(installPath, strippedInstall, "utf8");
await fsp.chmod(installPath, 0o755).catch(() => {});
await appendLog(
logFile,
"Removed stale everstoring general.env block from bundled install.sh.\n"
);
} else {
await appendLog(
logFile,
"install.sh/general.env block was not requested. No stale block found.\n"
);
}
} else {
await appendLog(
logFile,
"install.sh/general.env block was not requested and install.sh was not found.\n"
);
}
}
await fsp.copyFile(bundleZip, backupZip);
await fsp.rm(bundleZip, {
force: true,
});
await appendLog(
logFile,
`Repacking patched bundle zip: ${bundleZip}\n`
);
await runCommand("zip", ["-qr", bundleZip, "."], {
cwd: patchDir,
});
await appendLog(
logFile,
`Patched bundle zip ready. Backup saved at: ${backupZip}\n`
);
}
async function deployBundleWithRetry({
bundleZip,
domain,
userPort,
seed,
env,
logFile,
maxMs = 4 * 60 * 1000,
delayMs = 20 * 1000,
}) {
const startedAt = Date.now();
let attempt = 0;
let lastOutput = "";
while (Date.now() - startedAt <= maxMs) {
attempt += 1;
await appendLog(
logFile,
`\nRunning deploy attempt ${attempt} with patched bundle...\n\n`
);
try {
const deployResult = await runCommandWithInput(
EVDEVKIT_BIN,
[
"--secret-stdin",
"deploy",
bundleZip,
domain,
String(userPort),
],
`${seed}\n`,
{
cwd: CLUSTERING_DIR,
env,
}
);
lastOutput = [
"DEPLOY STDOUT:",
deployResult.stdout,
"DEPLOY STDERR:",
deployResult.stderr,
"",
].join("\n");
await appendLog(logFile, lastOutput);
if (!deployOutputLooksFailed(`${deployResult.stdout}\n${deployResult.stderr}`)) {
await appendLog(
logFile,
`Deploy attempt ${attempt} succeeded.\n`
);
return deployResult;
}
await appendLog(
logFile,
`Deploy attempt ${attempt} returned error text. Will retry if time remains.\n`
);
} catch (error) {
lastOutput = error.message;
await appendLog(
logFile,
`Deploy attempt ${attempt} threw error: ${error.message}\n`
);
}
const elapsed = Date.now() - startedAt;
const remaining = maxMs - elapsed;
if (remaining <= 0) {
break;
}
const waitMs = Math.min(delayMs, remaining);
await appendLog(
logFile,
`Waiting ${Math.round(waitMs / 1000)} seconds before retry...\n`
);
await sleep(waitMs);
}
throw new Error(
`Bootstrap deploy failed after ${Math.round(maxMs / 1000)} seconds. Last output: ${stripAnsi(lastOutput).slice(-2000)}`
);
}
async function deployBootstrapToAcquiredInstance({
source = "acquire",
runId,
instance,
seed,
privateKey,
contractName = "bootstrap",
binPath = "bootstrap2contract",
binArgs = "",
role = "validator",
unl = [],
knownPeers = [],
idleTimeout = 120000,
maxBytesPerMsg = null,
placePortsEnvIntoSeedFolder = false,
generalEnvExtra = "",
}) {
const selectedContract = await resolveContractDir(contractName || "bootstrap");
const deployRunId = crypto.randomBytes(8).toString("hex");
const jobDir = path.join(DEPLOYMENTS_DIR, `acquire_bootstrap_${deployRunId}`);
const initCfgPath = path.join(jobDir, "hp.cfg.init");
const overrideCfgPath = path.join(jobDir, "hp.cfg.override");
const logFile = path.join(jobDir, "deploy.log");
const jobContractRoot = path.join(jobDir, "contract_src");
const jobContractDir = path.join(jobContractRoot, selectedContract.name);
const deployUserPort = Number(instance.user_port);
const deployPeerPort = Number(instance.peer_port);
const deployGpTcpPort = Number(instance.gp_tcp_port);
const deployGpUdpPort = Number(instance.gp_udp_port);
const deployUnl = cleanStringArray(unl).length
? cleanStringArray(unl)
: [String(instance.pubkey || "").trim()].filter(Boolean);
const deployKnownPeers = cleanStringArray(knownPeers).length
? cleanStringArray(knownPeers)
: [`${instance.domain}:${instance.peer_port}`].filter(Boolean);
const cleanInitConfig = buildAcquireInitConfig({
role,
unl: deployUnl,
knownPeers: deployKnownPeers,
idleTimeout,
maxBytesPerMsg,
});
const cleanOverrideConfig = {};
const requestedUnl = extractRequestedUnlFromConfigs(cleanInitConfig, cleanOverrideConfig);
const bundlePubkey = String(instance.pubkey || "").trim();
const finalBinPath = String(binPath || "bootstrap2contract").trim() || "bootstrap2contract";
const finalBinArgs = String(binArgs || "").trim();
if (!isPositiveInteger(deployUserPort)) {
throw new Error("Invalid acquired user port for bootstrap deploy");
}
if (placePortsEnvIntoSeedFolder === true) {
if (!isPositiveInteger(deployPeerPort)) {
throw new Error("Invalid acquired peer port for general.env deploy");
}
if (!isPositiveInteger(deployGpTcpPort)) {
throw new Error("Invalid acquired GP TCP port for general.env deploy");
}
if (!isPositiveInteger(deployGpUdpPort)) {
throw new Error("Invalid acquired GP UDP port for general.env deploy");
}
}
await fsp.mkdir(jobDir, { recursive: true });
await fsp.writeFile(initCfgPath, JSON.stringify(cleanInitConfig, null, 2), "utf8");
await fsp.writeFile(overrideCfgPath, JSON.stringify(cleanOverrideConfig, null, 2), "utf8");
await fsp.writeFile(
logFile,
[
`RUN_ID=${deployRunId}`,
`PARENT_ACQUIRE_RUN_ID=${runId}`,
`SOURCE=${source}`,
`INSTANCE=${instance.instance_id}`,
`DOMAIN=${instance.domain}`,
`USER_PORT=${deployUserPort}`,
`PEER_PORT=${deployPeerPort || ""}`,
`GP_TCP_PORT=${deployGpTcpPort || ""}`,
`GP_UDP_PORT=${deployGpUdpPort || ""}`,
`PLACE_PORTS_ENV_INTO_SEED_FOLDER=${placePortsEnvIntoSeedFolder === true}`,
`GENERAL_ENV_EXTRA_LINES=${normalizeExtraGeneralEnvLines(generalEnvExtra).length}`,
`TARGET_PUBKEY=${instance.pubkey}`,
`BUNDLE_PUBKEY=${bundlePubkey}`,
`REQUESTED_UNL=${requestedUnl.join(",")}`,
`KNOWN_PEERS=${deployKnownPeers.join(",")}`,
`SOURCE_CONTRACT_DIR=${selectedContract.dir}`,
`JOB_CONTRACT_DIR=${jobContractDir}`,
`CONTRACT_NAME=${selectedContract.name}`,
`BIN_PATH=${finalBinPath}`,
`BIN_ARGS=${finalBinArgs}`,
`INIT_CFG=${initCfgPath}`,
`OVERRIDE_CFG=${overrideCfgPath}`,
`PRIVATE_KEY=[REDACTED]`,
`SEED=[REDACTED]`,
"",
"INIT CONFIG:",
JSON.stringify(cleanInitConfig, null, 2),
"",
"OVERRIDE CONFIG:",
JSON.stringify(cleanOverrideConfig, null, 2),
"",
"STATUS: STARTED",
"",
].join("\n"),
"utf8"
);
await appendLog(
logFile,
[
"Preparing isolated deploy contract source...",
`Source: ${selectedContract.dir}`,
`Job copy: ${jobContractDir}`,
"",
].join("\n")
);
await fsp.rm(jobContractRoot, { recursive: true, force: true });
await fsp.mkdir(jobContractRoot, { recursive: true });
await fsp.cp(selectedContract.dir, jobContractDir, { recursive: true });
const env = {
EV_USER_PRIVATE_KEY: privateKey,
EV_HP_INIT_CFG_PATH: initCfgPath,
EV_HP_OVERRIDE_CFG_PATH: overrideCfgPath,
HOME: jobDir,
};
const bundleArgs = [
"--secret-stdin",
"bundle",
jobContractDir,
bundlePubkey,
finalBinPath,
];
if (finalBinArgs) {
bundleArgs.push("-a", finalBinArgs);
}
await appendLog(logFile, "\nRunning bundle...\n\n");
const bundleResult = await runCommandWithInput(
EVDEVKIT_BIN,
bundleArgs,
`${seed}\n`,
{
cwd: CLUSTERING_DIR,
env,
}
);
await appendLog(
logFile,
`BUNDLE STDOUT:\n${bundleResult.stdout}\nBUNDLE STDERR:\n${bundleResult.stderr}\n`
);
const bundleZip = await findBundleZip({ jobDir, logFile });
if (!bundleZip) {
throw new Error(`Bundle zip not found after bundle. Check log: ${logFile}`);
}
await appendLog(logFile, `\nResolved bundle zip: ${bundleZip}\n`);
await patchAcquireDeployBundleZipAfterBundle({
bundleZip,
jobDir,
logFile,
requestedUnl,
requestedKnownPeers: deployKnownPeers,
shouldPatchPortsEnv: placePortsEnvIntoSeedFolder === true,
instanceName: instance.instance_id,
domain: instance.domain,
userPort: deployUserPort,
peerPort: deployPeerPort,
gpTcpPort: deployGpTcpPort,
gpUdpPort: deployGpUdpPort,
generalEnvExtra,
});
await deployBundleWithRetry({
bundleZip,
domain: instance.domain,
userPort: deployUserPort,
seed,
env,
logFile,
});
await appendLog(
logFile,
[
"",
"STATUS: SUCCESS",
`Finished at ${nowLog()}`,
"",
].join("\n")
);
return {
ok: true,
run_id: deployRunId,
log_file: logFile,
contract_name: selectedContract.name,
contract_dir: selectedContract.dir,
bundle_zip: bundleZip,
place_ports_env_into_seed_folder: placePortsEnvIntoSeedFolder === true,
unl: deployUnl,
known_peers: deployKnownPeers,
bin_path: finalBinPath,
bin_args: finalBinArgs,
finished_at: nowLog(),
};
}
app.post("/api/acquire", requireAdminPrivateKey, async (req, res) => {
try {
const {
address,
moments,
seed,
privateKey,
contractId,
image,
sendMax,
role,
unl,
knownPeers,
idleTimeout,
maxBytesPerMsg,
nodeDescription,
deployBootstrapAfterAcquire,
placePortsEnvIntoSeedFolder,
bootstrapDeployDelaySeconds,
clusterMode,
clusterName,
clusterSourceInstanceId,
generalEnvExtra,
savePrivateKeyToSystem,
} = req.body;
const leaseMoments = Number(moments || 1);
const cleanContractId = String(contractId || "").trim();
const acquireImage = cleanAcquireImage(image);
const cleanNodeDesc = cleanNodeDescription(nodeDescription);
const cleanClusterMode = ["first", "join"].includes(String(clusterMode || "").trim())
? String(clusterMode || "").trim()
: "none";
const cleanClusterName = String(clusterName || "").trim().slice(0, 80);
const cleanClusterSourceInstanceId = String(clusterSourceInstanceId || "").trim();
const shouldDeployBootstrapAfterAcquire = deployBootstrapAfterAcquire !== false;
const shouldPlacePortsEnvIntoSeedFolder = placePortsEnvIntoSeedFolder === true;
const shouldSavePrivateKeyToSystem = savePrivateKeyToSystem === true;
const cleanGeneralEnvExtra = normalizeExtraGeneralEnvText(generalEnvExtra);
const cleanBootstrapDeployDelaySeconds = (() => {
const raw = bootstrapDeployDelaySeconds === undefined || bootstrapDeployDelaySeconds === null || bootstrapDeployDelaySeconds === ""
? 90
: Number(bootstrapDeployDelaySeconds);
if (!Number.isInteger(raw) || raw < 0 || raw > 300) {
throw new Error("bootstrapDeployDelaySeconds must be an integer between 0 and 300");
}
return raw;
})();
if (!address || typeof address !== "string") {
return res.status(400).json({
ok: false,
error: "Missing address",
});
}
if (!isPositiveInteger(leaseMoments)) {
return res.status(400).json({
ok: false,
error: "Invalid moments",
});
}
const rawSendMax = String(sendMax || "").trim();
const cleanSendMax = rawSendMax.startsWith(".")
? `0${rawSendMax}`
: rawSendMax;
if (cleanSendMax && !/^(?:\d+|\d*\.\d+)$/.test(cleanSendMax)) {
return res.status(400).json({
ok: false,
error: "Invalid sendMax",
});
}
const resolvedSeed = resolveSeedForRequest(req, seed);
if (!privateKey || typeof privateKey !== "string") {
return res.status(400).json({
ok: false,
error: "Missing private key",
});
}
const cleanRole = cleanNodeRole(role);
const cleanUnl = cleanStringArray(unl);
const cleanKnownPeers = cleanStringArray(knownPeers);
if (cleanRole === "observer") {
if (!cleanContractId) {
return res.status(400).json({
ok: false,
error: "Observer acquire requires an existing contract ID",
});
}
if (!cleanUnl.length) {
return res.status(400).json({
ok: false,
error: "Observer acquire requires at least one validator pubkey in UNL",
});
}
if (!cleanKnownPeers.length) {
return res.status(400).json({
ok: false,
error: "Observer acquire requires at least one validator peer in knownPeers",
});
}
const newPubkey = derivePublicKeyFromPrivateKey(privateKey).trim().toLowerCase();
if (cleanUnl.some((pk) => pk.trim().toLowerCase() === newPubkey)) {
return res.status(400).json({
ok: false,
error: "Observer UNL must contain an existing validator pubkey, not the new observer pubkey",
});
}
}
if (cleanClusterMode === "first" && !cleanClusterName) {
return res.status(400).json({
ok: false,
error: "First cluster instance requires a cluster name",
});
}
if (cleanClusterMode === "join") {
if (!cleanContractId) {
return res.status(400).json({
ok: false,
error: "Joining a cluster requires an existing contract ID",
});
}
if (!cleanUnl.length) {
return res.status(400).json({
ok: false,
error: "Joining a cluster requires a source node public key / UNL",
});
}
if (!cleanKnownPeers.length) {
return res.status(400).json({
ok: false,
error: "Joining a cluster requires a source node known peer",
});
}
}
const runId = crypto.randomBytes(8).toString("hex");
const cleanIdleTimeout = cleanPositiveInteger(
idleTimeout,
120000,
"idle_timeout"
);
const cleanMaxBytesPerMsg = cleanOptionalPositiveInteger(
maxBytesPerMsg,
"max_bytes_per_msg"
);
// Important: do not inject the selected cluster UNL/known peer during acquire.
// Acquire only creates/joins the instance, optionally with -c <contractId>.
// The bootstrap deploy passes below are responsible for first using this node's
// own UNL/known peer, then later applying the selected cluster UNL/known peer.
const acquireStageUnl = [];
const acquireStageKnownPeers = [];
const instance = await acquireInstanceWithPrivateKey({
runId,
address,
moments: leaseMoments,
seed: resolvedSeed,
privateKey,
contractId: cleanContractId,
image: acquireImage,
sendMax: cleanSendMax,
role: cleanRole,
unl: acquireStageUnl,
knownPeers: acquireStageKnownPeers,
idleTimeout: cleanIdleTimeout,
maxBytesPerMsg: cleanMaxBytesPerMsg,
nodeDescription: cleanNodeDesc,
savePrivateKeyToSystem: shouldSavePrivateKeyToSystem,
});
const clusterUpdates = {
cluster_mode: cleanClusterMode,
cluster_name: cleanClusterName || null,
cluster_source_instance_id: cleanClusterSourceInstanceId || null,
cluster_first_instance: cleanClusterMode === "first",
bootstrap_deploy_delay_seconds: cleanBootstrapDeployDelaySeconds,
acquire_stage_unl: acquireStageUnl,
acquire_stage_known_peers: acquireStageKnownPeers,
selected_cluster_unl: cleanUnl,
selected_cluster_known_peers: cleanKnownPeers,
general_env_extra: cleanGeneralEnvExtra || null,
};
Object.assign(instance, clusterUpdates);
await updateInstanceJson(instance.instance_id, clusterUpdates).catch(() => {});
let bootstrapDeploy = null;
if (shouldDeployBootstrapAfterAcquire) {
const rentLogFile = path.join(
LOG_DIR,
`rent_${safeForFilename(address)}_${runId}.log`
);
const initialBootstrapUnl = [instance.pubkey].filter(Boolean);
const initialBootstrapKnownPeers = [`${instance.domain}:${instance.peer_port}`].filter(Boolean);
const clusterBootstrapUnl = cleanUnl;
const clusterBootstrapKnownPeers = cleanKnownPeers;
const shouldRunClusterCleanPass = cleanClusterMode === "join";
const betweenDeployDelaySeconds = Math.max(60, cleanBootstrapDeployDelaySeconds);
await appendLog(
rentLogFile,
[
`[${nowLog()}] Acquire succeeded. Bootstrap deploy sequence is scheduled.`,
`[${nowLog()}] Bootstrap deploy delay before first deploy: ${cleanBootstrapDeployDelaySeconds}s`,
`[${nowLog()}] Pass 1 acquire already completed.`,
`[${nowLog()}] Pass 2 bootstrap_alt UNL: ${initialBootstrapUnl.join(",")}`,
`[${nowLog()}] Pass 2 bootstrap_alt known peers: ${initialBootstrapKnownPeers.join(",")}`,
`[${nowLog()}] Pass 2 general.env install block: ${shouldPlacePortsEnvIntoSeedFolder === true}`,
`[${nowLog()}] Pass 2 extra general.env lines: ${normalizeExtraGeneralEnvLines(cleanGeneralEnvExtra).length}`,
`[${nowLog()}] Wait between pass 2 and pass 3: ${betweenDeployDelaySeconds}s`,
shouldRunClusterCleanPass
? `[${nowLog()}] Pass 3 restore bootstrap UNL: ${clusterBootstrapUnl.join(",")}`
: `[${nowLog()}] Pass 3 restore bootstrap UNL: ${initialBootstrapUnl.join(",")}`,
shouldRunClusterCleanPass
? `[${nowLog()}] Pass 3 restore bootstrap known peers: ${clusterBootstrapKnownPeers.join(",")}`
: `[${nowLog()}] Pass 3 restore bootstrap known peers: ${initialBootstrapKnownPeers.join(",")}`,
"",
].filter(Boolean).join("\n")
);
if (cleanBootstrapDeployDelaySeconds > 0) {
await appendLog(
rentLogFile,
`[${nowLog()}] Waiting ${cleanBootstrapDeployDelaySeconds}s before bootstrap deploy sequence...\n`
);
await sleep(cleanBootstrapDeployDelaySeconds * 1000);
await appendLog(
rentLogFile,
`[${nowLog()}] Delay finished. Starting bootstrap deploy sequence now.\n`
);
}
try {
const bootstrapDeploys = [];
const envBootstrapDeploy = await deployBootstrapToAcquiredInstance({
source: "acquire_pass2_bootstrap_alt_env",
runId,
instance,
seed: resolvedSeed,
privateKey,
contractName: "bootstrap_alt",
binPath: "bootstrap2contract",
binArgs: "",
role: cleanRole,
unl: initialBootstrapUnl,
knownPeers: initialBootstrapKnownPeers,
idleTimeout: cleanIdleTimeout,
maxBytesPerMsg: cleanMaxBytesPerMsg,
placePortsEnvIntoSeedFolder: shouldPlacePortsEnvIntoSeedFolder,
generalEnvExtra: cleanGeneralEnvExtra,
});
envBootstrapDeploy.stage = shouldPlacePortsEnvIntoSeedFolder
? "pass2_bootstrap_alt_env"
: "pass2_bootstrap_alt";
envBootstrapDeploy.bootstrap_deploy_delay_seconds = cleanBootstrapDeployDelaySeconds;
bootstrapDeploys.push(envBootstrapDeploy);
await appendLog(
rentLogFile,
`[${nowLog()}] Pass 2 bootstrap_alt deploy succeeded. Env block: ${shouldPlacePortsEnvIntoSeedFolder === true}. Deploy log: ${envBootstrapDeploy.log_file}
`
);
let restoreBootstrapDeploy = null;
if (betweenDeployDelaySeconds > 0) {
await appendLog(
rentLogFile,
`[${nowLog()}] Waiting ${betweenDeployDelaySeconds}s before pass 3 restore original bootstrap deploy so bootstrap_alt can finish reload/post-exec.
`
);
await sleep(betweenDeployDelaySeconds * 1000);
}
const restoreBootstrapUnl = shouldRunClusterCleanPass
? clusterBootstrapUnl
: initialBootstrapUnl;
const restoreBootstrapKnownPeers = shouldRunClusterCleanPass
? clusterBootstrapKnownPeers
: initialBootstrapKnownPeers;
await appendLog(
rentLogFile,
`[${nowLog()}] Starting pass 3 restore original bootstrap deploy. Contract=bootstrap, bin=bootstrap_contract, env block=false.
`
);
restoreBootstrapDeploy = await deployBootstrapToAcquiredInstance({
source: shouldRunClusterCleanPass
? "acquire_pass3_restore_original_bootstrap_cluster"
: "acquire_pass3_restore_original_bootstrap_self",
runId,
instance,
seed: resolvedSeed,
privateKey,
contractName: "bootstrap",
binPath: "bootstrap_contract",
binArgs: "",
role: cleanRole,
unl: restoreBootstrapUnl,
knownPeers: restoreBootstrapKnownPeers,
idleTimeout: cleanIdleTimeout,
maxBytesPerMsg: cleanMaxBytesPerMsg,
placePortsEnvIntoSeedFolder: false,
generalEnvExtra: "",
});
restoreBootstrapDeploy.stage = shouldRunClusterCleanPass
? "pass3_restore_original_bootstrap_cluster"
: "pass3_restore_original_bootstrap_self";
bootstrapDeploys.push(restoreBootstrapDeploy);
await appendLog(
rentLogFile,
`[${nowLog()}] Pass 3 restore original bootstrap deploy succeeded. Deploy log: ${restoreBootstrapDeploy.log_file}
`
);
const finalStageDeploy = restoreBootstrapDeploy || envBootstrapDeploy;
bootstrapDeploy = {
ok: true,
stage: finalStageDeploy.stage || "bootstrap_deploy",
run_id: finalStageDeploy.run_id || finalStageDeploy.runId || "",
log_file: finalStageDeploy.log_file || "",
contract_name: finalStageDeploy.contract_name || "bootstrap",
bundle_zip: finalStageDeploy.bundle_zip || "",
place_ports_env_into_seed_folder:
finalStageDeploy.place_ports_env_into_seed_folder === true,
bootstrap_deploy_delay_seconds: cleanBootstrapDeployDelaySeconds,
finished_at: finalStageDeploy.finished_at || nowLog(),
sequence: bootstrapDeploys.map((deploy) => ({
ok: deploy.ok !== false,
stage: deploy.stage || "bootstrap_deploy",
run_id: deploy.run_id || deploy.runId || "",
log_file: deploy.log_file || "",
contract_name: deploy.contract_name || "bootstrap",
bundle_zip: deploy.bundle_zip || "",
place_ports_env_into_seed_folder:
deploy.place_ports_env_into_seed_folder === true,
unl: Array.isArray(deploy.unl) ? deploy.unl : [],
known_peers: Array.isArray(deploy.known_peers) ? deploy.known_peers : [],
started_at: deploy.started_at || "",
finished_at: deploy.finished_at || "",
})),
};
Object.assign(instance, {
bootstrap_deployed: true,
bootstrap_deploy: bootstrapDeploy,
bootstrap_deploys: bootstrapDeploy.sequence,
});
await updateInstanceJson(instance.instance_id, {
bootstrap_deployed: true,
bootstrap_deploy: bootstrapDeploy,
bootstrap_deploys: bootstrapDeploy.sequence,
});
await appendLog(
rentLogFile,
`[${nowLog()}] Bootstrap deploy sequence succeeded. Final deploy log: ${bootstrapDeploy.log_file}
`
);
} catch (error) {
bootstrapDeploy = {
ok: false,
error: error.message,
bootstrap_deploy_delay_seconds: cleanBootstrapDeployDelaySeconds,
finished_at: nowLog(),
};
Object.assign(instance, {
bootstrap_deployed: false,
bootstrap_deploy: bootstrapDeploy,
});
await updateInstanceJson(instance.instance_id, {
bootstrap_deployed: false,
bootstrap_deploy: bootstrapDeploy,
}).catch(() => {});
await appendLog(
rentLogFile,
`[${nowLog()}] Bootstrap deploy sequence failed: ${error.message}\n`
);
throw new Error(`Acquire succeeded but bootstrap deploy sequence failed: ${error.message}`);
}
}
const rentLogFile = path.join(
LOG_DIR,
`rent_${safeForFilename(address)}_${runId}.log`
);
await appendLog(
rentLogFile,
makeAcquireConsoleLogBlock({
address,
clusterMode: cleanClusterMode,
placePortsEnvIntoSeedFolder: shouldPlacePortsEnvIntoSeedFolder,
generalEnvExtra: cleanGeneralEnvExtra,
bootstrapDeployDelaySeconds: cleanBootstrapDeployDelaySeconds,
contractId: cleanContractId,
savePrivateKeyToSystem: shouldSavePrivateKeyToSystem,
acquireUnl: cleanUnl,
acquireKnownPeers: cleanKnownPeers,
instance,
bootstrapDeploy,
})
);
const instances = await readInstances();
res.json({
ok: true,
runId,
logFile: rentLogFile,
instance,
bootstrapDeploy,
bootstrapDeployDelaySeconds: cleanBootstrapDeployDelaySeconds,
instances,
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
async function runExtendJob({ runId, instanceName, address, moments, resolvedSeed, manual = false }) {
let instanceSnapshot = null;
const cleanInstanceName = String(instanceName || "").trim();
const extendMoments = Number(moments);
const extendStartedAtMs = Date.now();
let latestOutput = "";
let latestExtension = null;
function finishFailure(error, extra = {}) {
const extension = extra.extension || latestExtension || null;
const message = error?.message || String(error || "Extend failed");
updateExtendJob(runId, {
status: "failed",
error: message,
extension,
});
appendExtendJobLog(runId, `\nFAILED: ${message}\n`);
}
try {
updateExtendJob(runId, { status: "running" });
appendExtendJobLog(
runId,
[
`Started: ${nowLog()}\n`,
`Run ID: ${runId}\n`,
`Instance: ${cleanInstanceName}\n`,
`Address: ${address}\n`,
`Moments: ${extendMoments}\n`,
`Manual: ${manual === true}\n`,
"\n--- extender output ---\n",
].join("")
);
if (manual === true) {
await requireManualExtension(cleanInstanceName);
} else {
instanceSnapshot = await readInstanceJson(cleanInstanceName);
}
let scriptResult;
try {
scriptResult = await runScript(
EXTENDER,
[
runId,
cleanInstanceName,
address,
String(extendMoments),
manual === true ? "manual" : "instance",
],
resolvedSeed,
{},
{
onStdout: (text) => appendExtendJobLog(runId, text),
onStderr: (text) => appendExtendJobLog(runId, `\nSTDERR:\n${text}`),
}
);
} catch (error) {
const logOutput = await collectRecentExtendLogOutput({
runId,
instanceName: cleanInstanceName,
startedAtMs: extendStartedAtMs,
}).catch(() => "");
const failedOutput = `${error.message || ""}\n${logOutput}`;
const failedParse = parseExtendOutput(failedOutput, cleanInstanceName, runId);
latestOutput = failedOutput;
latestExtension = failedParse;
if (logOutput) {
appendExtendJobLog(runId, `\n--- collected extender logs ---\n${logOutput}\n`);
}
if (instanceSnapshot) {
await writeInstanceJson(cleanInstanceName, instanceSnapshot).catch(() => {});
}
const extendError = new Error(formatExtendFailureMessage(failedParse, failedOutput));
finishFailure(extendError, { extension: failedParse });
return;
}
const logOutput = await collectRecentExtendLogOutput({
runId,
instanceName: cleanInstanceName,
startedAtMs: extendStartedAtMs,
}).catch(() => "");
if (logOutput) {
appendExtendJobLog(runId, `\n--- collected extender logs ---\n${logOutput}\n`);
}
const combinedOutput = [
scriptResult.stdout || "",
scriptResult.stderr ? `\nSTDERR:\n${scriptResult.stderr}` : "",
logOutput ? `\n${logOutput}` : "",
].join("");
const extension = parseExtendOutput(combinedOutput, cleanInstanceName, runId);
latestOutput = combinedOutput;
latestExtension = extension;
if (!extension.ok) {
if (instanceSnapshot) {
await writeInstanceJson(cleanInstanceName, instanceSnapshot).catch(() => {});
}
const extendError = new Error(formatExtendFailureMessage(extension, combinedOutput));
finishFailure(extendError, { extension });
return;
}
if (manual === true) {
await markManualExtensionResult(cleanInstanceName, {
...extension,
moments: extension.moments || extendMoments,
}).catch(() => null);
}
updateExtendJob(runId, {
status: "success",
error: "",
extension: {
transactionResult: extension.transactionResult,
verificationLevel: extension.verificationLevel,
warning: extension.warning || "",
instanceNameMatched: extension.instanceNameMatched === true,
txHash: extension.txHash,
requestTxHash: extension.requestTxHash,
expiryMoment: extension.expiryMoment,
localExpiresTimestamp: extension.localExpiresTimestamp,
moments: extension.moments || extendMoments,
},
});
appendExtendJobLog(
runId,
[
"\n--- result ---\n",
"STATUS: SUCCESS\n",
`Transaction result: ${extension.transactionResult || "not-required"}\n`,
extension.expiryMoment ? `Expiry moment: ${extension.expiryMoment}\n` : "",
extension.txHash ? `Extension txn Ref: ${extension.txHash}\n` : "",
extension.requestTxHash ? `Request txHash: ${extension.requestTxHash}\n` : "",
extension.localExpiresTimestamp ? `Local expires timestamp: ${extension.localExpiresTimestamp}\n` : "",
`Moments: ${extension.moments || extendMoments}\n`,
`Finished: ${nowLog()}\n`,
].join("")
);
} catch (error) {
if (instanceSnapshot && cleanInstanceName) {
await writeInstanceJson(cleanInstanceName, instanceSnapshot).catch(() => {});
}
latestOutput = latestOutput || error.message || "";
finishFailure(error);
}
}
app.post("/api/extend/start", requireAdminPrivateKey, async (req, res) => {
try {
const { instanceName, address, moments, seed, manual } = req.body;
const cleanInstanceName = String(instanceName || "").trim();
const extendMoments = Number(moments);
if (!isSafeName(cleanInstanceName)) {
return res.status(400).json({ ok: false, error: "Invalid instance name" });
}
if (!address || typeof address !== "string") {
return res.status(400).json({ ok: false, error: "Missing address" });
}
if (!isPositiveInteger(extendMoments)) {
return res.status(400).json({ ok: false, error: "Invalid moments" });
}
const isManualExtension = manual === true;
if (isManualExtension) {
await requireManualExtension(cleanInstanceName);
}
const resolvedSeed = resolveSeedForRequest(req, seed);
const runId = crypto.randomBytes(8).toString("hex");
createExtendJob({
runId,
instanceName: cleanInstanceName,
address,
moments: extendMoments,
manual: isManualExtension,
});
setImmediate(() => {
runExtendJob({
runId,
instanceName: cleanInstanceName,
address,
moments: extendMoments,
resolvedSeed,
manual: isManualExtension,
}).catch((error) => {
updateExtendJob(runId, {
status: "failed",
error: error.message || String(error || "Extend failed"),
});
appendExtendJobLog(runId, `\nFAILED: ${error.message || String(error || "Extend failed")}\n`);
});
});
res.json({
ok: true,
runId,
statusUrl: `/api/extend/jobs/${runId}`,
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.get("/api/extend/jobs/:runId", (req, res) => {
const runId = String(req.params.runId || "").trim();
if (!isSafeRunId(runId)) {
return res.status(400).json({ ok: false, error: "Invalid run ID" });
}
const job = extendJobs.get(runId);
if (!job) {
return res.status(404).json({ ok: false, error: "Extend job not found or expired" });
}
res.setHeader("Cache-Control", "no-store");
res.json({
ok: true,
job: getExtendJobClientView(job),
});
});
app.post("/api/extend", requireAdminPrivateKey, async (req, res) => {
return res.status(410).json({
ok: false,
error: "Use /api/extend/start instead.",
});
let instanceSnapshot = null;
let cleanInstanceName = "";
let runId = "";
let latestOutput = "";
let latestExtension = null;
try {
const { instanceName, address, moments, seed } = req.body;
cleanInstanceName = String(instanceName || "").trim();
const extendMoments = Number(moments);
if (!isSafeName(cleanInstanceName)) {
return res.status(400).json({
ok: false,
error: "Invalid instance name",
});
}
if (!address || typeof address !== "string") {
return res.status(400).json({
ok: false,
error: "Missing address",
});
}
if (!isPositiveInteger(extendMoments)) {
return res.status(400).json({
ok: false,
error: "Invalid moments",
});
}
instanceSnapshot = await readInstanceJson(cleanInstanceName);
const resolvedSeed = resolveSeedForRequest(req, seed);
runId = crypto.randomBytes(8).toString("hex");
const extendStartedAtMs = Date.now();
let scriptResult;
try {
scriptResult = await runScript(
EXTENDER,
[runId, cleanInstanceName, address, String(extendMoments), "instance"],
resolvedSeed
);
} catch (error) {
const logOutput = await collectRecentExtendLogOutput({
runId,
instanceName: cleanInstanceName,
startedAtMs: extendStartedAtMs,
}).catch(() => "");
const failedOutput = `${error.message || ""}
${logOutput}`;
const failedParse = parseExtendOutput(failedOutput, cleanInstanceName);
latestOutput = failedOutput;
latestExtension = failedParse;
// Some wrapper scripts can exit non-zero after the Evernode extension has
// actually succeeded. NO_TOKEN is still a hard failure; otherwise, treat
// the current response containing the instance name as authoritative.
if (failedParse.ok) {
scriptResult = {
stdout: failedOutput,
stderr: "",
};
} else {
if (instanceSnapshot) {
await writeInstanceJson(cleanInstanceName, instanceSnapshot).catch(() => {});
}
const extendError = new Error(formatExtendFailureMessage(failedParse, failedOutput));
extendError.runId = runId;
extendError.extension = failedParse;
extendError.output = failedOutput;
throw extendError;
}
}
const logOutput = await collectRecentExtendLogOutput({
runId,
instanceName: cleanInstanceName,
startedAtMs: extendStartedAtMs,
}).catch(() => "");
const combinedOutput = `${scriptResult.stdout || ""}${scriptResult.stderr ? `
STDERR:
${scriptResult.stderr}` : ""}
${logOutput}`;
const extension = parseExtendOutput(combinedOutput, cleanInstanceName);
latestOutput = combinedOutput;
latestExtension = extension;
if (!extension.ok) {
if (instanceSnapshot) {
await writeInstanceJson(cleanInstanceName, instanceSnapshot).catch(() => {});
}
return res.status(500).json({
ok: false,
runId,
extension,
output: combinedOutput,
error: formatExtendFailureMessage(extension, combinedOutput),
});
}
const instances = await readInstances();
res.json({
ok: true,
runId,
extension: {
transactionResult: extension.transactionResult,
verificationLevel: extension.verificationLevel,
warning: extension.warning || "",
instanceNameMatched: extension.instanceNameMatched === true,
txHash: extension.txHash,
requestTxHash: extension.requestTxHash,
expiryMoment: extension.expiryMoment,
},
output: combinedOutput,
instances,
});
} catch (error) {
if (instanceSnapshot && cleanInstanceName) {
await writeInstanceJson(cleanInstanceName, instanceSnapshot).catch(() => {});
}
res.status(500).json({
ok: false,
runId: error.runId || runId || "",
extension: error.extension || latestExtension || null,
output: error.output || latestOutput || "",
error: error.message,
});
}
});
const PORTS_ENV_INSTALL_BLOCK_START = "# everstoring general.env start";
const PORTS_ENV_INSTALL_BLOCK_END = "# everstoring general.env end";
function shellSingleQuote(value) {
return `'${String(value ?? "").replace(/'/g, `'\\''`)}'`;
}
function normalizeExtraGeneralEnvText(value) {
const text = String(value || "").replace(/\r\n/g, "\n").replace(/\r/g, "\n");
if (text.length > 8192) {
throw new Error("Extra general.env content is too long. Max 8192 characters.");
}
return normalizeExtraGeneralEnvLines(text).join("\n");
}
function normalizeExtraGeneralEnvLines(value) {
const reserved = new Set([
"INSTANCE_NAME",
"DOMAIN",
"USER_PORT",
"PEER_PORT",
"GP_TCP_PORT1",
"GP_TCP_PORT2",
"GP_UDP_PORT1",
"GP_UDP_PORT2",
"GP_TCP_PORT",
"GP_UDP_PORT",
]);
const lines = String(value || "")
.replace(/\r\n/g, "\n")
.replace(/\r/g, "\n")
.split("\n");
const result = [];
const seen = new Set();
for (const rawLine of lines) {
const line = String(rawLine || "").trim();
if (!line || line.startsWith("#")) {
continue;
}
if (line.includes("\0") || line === "EOF") {
throw new Error("Invalid extra general.env line");
}
const match = line.match(/^([A-Za-z_][A-Za-z0-9_]*)=(.*)$/);
if (!match) {
throw new Error(`Invalid extra general.env line: ${line}. Use KEY=value format.`);
}
const key = match[1];
const dedupeKey = key.toUpperCase();
if (reserved.has(dedupeKey)) {
throw new Error(`Extra general.env key ${key} is reserved`);
}
if (seen.has(dedupeKey)) {
throw new Error(`Duplicate extra general.env key: ${key}`);
}
seen.add(dedupeKey);
result.push(`${key}=${match[2]}`);
}
if (result.length > 100) {
throw new Error("Too many extra general.env lines. Max 100.");
}
return result;
}
function makePortsEnvInstallBlock({
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
generalEnvExtra = "",
}) {
const gpTcpPort1 = Number(gpTcpPort || 0);
const gpTcpPort2 = gpTcpPort1 > 0 ? gpTcpPort1 + 1 : "";
const gpUdpPort1 = Number(gpUdpPort || 0);
const gpUdpPort2 = gpUdpPort1 > 0 ? gpUdpPort1 + 1 : "";
const extraGeneralEnvLines = normalizeExtraGeneralEnvLines(generalEnvExtra);
return [
PORTS_ENV_INSTALL_BLOCK_START,
"cat > ../../../../cfg/general.env <<'EOF'",
`INSTANCE_NAME=${String(instanceName || "")}`,
`DOMAIN=${String(domain || "")}`,
`USER_PORT=${String(userPort || "")}`,
`PEER_PORT=${String(peerPort || "")}`,
`GP_TCP_PORT1=${String(gpTcpPort1 || "")}`,
`GP_TCP_PORT2=${String(gpTcpPort2 || "")}`,
`GP_UDP_PORT1=${String(gpUdpPort1 || "")}`,
`GP_UDP_PORT2=${String(gpUdpPort2 || "")}`,
// Backwards-compatible aliases.
`GP_TCP_PORT=${String(gpTcpPort1 || "")}`,
`GP_UDP_PORT=${String(gpUdpPort1 || "")}`,
...(extraGeneralEnvLines.length
? ["", "# Extra values from deploy UI", ...extraGeneralEnvLines]
: []),
"EOF",
"echo \"Wrote ../../../../cfg/general.env\"",
PORTS_ENV_INSTALL_BLOCK_END,
].join("\n");
}
function removeExistingPortsEnvInstallBlock(content) {
const escapedStart = PORTS_ENV_INSTALL_BLOCK_START.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const escapedEnd = PORTS_ENV_INSTALL_BLOCK_END.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const regex = new RegExp(
`\\n?${escapedStart}[\\s\\S]*?${escapedEnd}\\n?`,
"g"
);
return String(content || "").replace(regex, "\n");
}
async function patchInstallShForPortsEnv({
contractDir,
logFile,
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
}) {
const installPath = path.join(contractDir, "install.sh");
const block = makePortsEnvInstallBlock({
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
});
let existing = "";
let existed = false;
if (fs.existsSync(installPath)) {
existed = true;
existing = await fsp.readFile(installPath, "utf8");
existing = removeExistingPortsEnvInstallBlock(existing).trimStart();
}
let nextContent;
if (!existing) {
nextContent = [
"#!/usr/bin/env bash",
"set -e",
"",
block,
"",
].join("\n");
} else {
const lines = existing.split(/\r?\n/);
const firstLine = lines[0] || "";
if (firstLine.startsWith("#!")) {
nextContent = [
firstLine,
block,
...lines.slice(1),
].join("\n");
} else {
nextContent = [
"#!/usr/bin/env bash",
block,
existing,
].join("\n");
}
if (!nextContent.endsWith("\n")) {
nextContent += "\n";
}
}
await fsp.writeFile(installPath, nextContent, {
encoding: "utf8",
mode: 0o755,
});
await fsp.chmod(installPath, 0o755).catch(() => {});
await fsp.appendFile(
logFile,
existed
? `Patched existing install.sh with general.env block: ${installPath}\n`
: `Created install.sh with general.env block: ${installPath}\n`,
"utf8"
);
}
app.post("/api/deploy/bootstrap", requireAdminPrivateKey, async (req, res) => {
try {
const {
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
pubkey,
privateKey,
seed,
binPath,
binArgs,
initConfig,
overrideConfig,
contractName,
placePortsEnvIntoSeedFolder,
} = req.body;
if (!isSafeName(instanceName)) {
return res.status(400).json({ ok: false, error: "Invalid instance name" });
}
if (!domain || typeof domain !== "string") {
return res.status(400).json({ ok: false, error: "Missing domain" });
}
const deployUserPort = Number(userPort);
const deployPeerPort = Number(peerPort || 0);
const deployGpTcpPort = Number(gpTcpPort || 0);
const deployGpUdpPort = Number(gpUdpPort || 0);
if (!isPositiveInteger(deployUserPort)) {
return res.status(400).json({ ok: false, error: "Invalid user port" });
}
if (placePortsEnvIntoSeedFolder) {
if (!isPositiveInteger(deployPeerPort)) {
return res.status(400).json({ ok: false, error: "Invalid peer port" });
}
if (!isPositiveInteger(deployGpTcpPort)) {
return res.status(400).json({ ok: false, error: "Invalid GP TCP port" });
}
if (!isPositiveInteger(deployGpUdpPort)) {
return res.status(400).json({ ok: false, error: "Invalid GP UDP port" });
}
}
if (!pubkey || typeof pubkey !== "string") {
return res.status(400).json({ ok: false, error: "Missing instance pubkey" });
}
if (!privateKey || typeof privateKey !== "string") {
return res.status(400).json({ ok: false, error: "Missing private key" });
}
const resolvedSeed = resolveSeedForRequest(req, seed);
let selectedContract;
try {
selectedContract = await resolveContractDir(contractName || "bootstrap");
} catch (error) {
return res.status(400).json({
ok: false,
error: error.message,
});
}
if (!fs.existsSync(EVDEVKIT_BIN)) {
return res.status(500).json({
ok: false,
error: `evdevkit binary not found: ${EVDEVKIT_BIN}`,
});
}
const runId = crypto.randomBytes(8).toString("hex");
const jobDir = path.join(DEPLOYMENTS_DIR, runId);
const initCfgPath = path.join(jobDir, "hp.cfg.init");
const overrideCfgPath = path.join(jobDir, "hp.cfg.override");
const logFile = path.join(jobDir, "deploy.log");
const finalBinPath =
String(binPath || "/usr/bin/bash").trim() || "/usr/bin/bash";
const finalBinArgs = String(binArgs || "").trim();
const cleanInitConfig = initConfig && typeof initConfig === "object"
? initConfig
: {};
const cleanOverrideConfig = overrideConfig && typeof overrideConfig === "object"
? overrideConfig
: {};
const requestedUnl = extractRequestedUnlFromConfigs(
cleanInitConfig,
cleanOverrideConfig
);
// Important: the pubkey positional argument to `evdevkit bundle` becomes
// part of the initial UNL. If we always pass this target node's pubkey,
// evdevkit adds this node to the UNL even when the deploy config requested
// an existing validator's UNL. Use the first requested UNL pubkey for the
// bundle seed, and keep `pubkey` as the target instance pubkey for logging.
const bundlePubkey = requestedUnl[0] || String(pubkey || "").trim();
if (!bundlePubkey) {
return res.status(400).json({
ok: false,
error: "Missing bundle pubkey",
});
}
await fsp.mkdir(jobDir, { recursive: true });
const jobContractRoot = path.join(jobDir, "contract_src");
const jobContractDir = path.join(jobContractRoot, selectedContract.name);
await fsp.writeFile(
initCfgPath,
JSON.stringify(cleanInitConfig, null, 2),
"utf8"
);
await fsp.writeFile(
overrideCfgPath,
JSON.stringify(cleanOverrideConfig, null, 2),
"utf8"
);
await fsp.writeFile(
logFile,
[
`RUN_ID=${runId}`,
`INSTANCE=${instanceName}`,
`DOMAIN=${domain}`,
`USER_PORT=${deployUserPort}`,
`PEER_PORT=${deployPeerPort || ""}`,
`GP_TCP_PORT=${deployGpTcpPort || ""}`,
`GP_UDP_PORT=${deployGpUdpPort || ""}`,
`PLACE_PORTS_ENV_INTO_SEED_FOLDER=${placePortsEnvIntoSeedFolder === true}`,
`TARGET_PUBKEY=${pubkey}`,
`BUNDLE_PUBKEY=${bundlePubkey}`,
`REQUESTED_UNL=${requestedUnl.join(",")}`,
`SOURCE_CONTRACT_DIR=${selectedContract.dir}`,
`JOB_CONTRACT_DIR=${jobContractDir}`,
`CONTRACT_NAME=${selectedContract.name}`,
`BIN_PATH=${finalBinPath}`,
`BIN_ARGS=${finalBinArgs}`,
`INIT_CFG=${initCfgPath}`,
`OVERRIDE_CFG=${overrideCfgPath}`,
`PRIVATE_KEY=[REDACTED]`,
`SEED=[REDACTED]`,
"",
`INIT CONFIG:`,
JSON.stringify(cleanInitConfig, null, 2),
"",
`OVERRIDE CONFIG:`,
JSON.stringify(cleanOverrideConfig, null, 2),
"",
`STATUS: STARTED`,
"",
].join("\n"),
"utf8"
);
await fsp.appendFile(
logFile,
[
`Preparing isolated deploy contract source...`,
`Source: ${selectedContract.dir}`,
`Job copy: ${jobContractDir}`,
"",
].join("\n"),
"utf8"
);
await fsp.rm(jobContractRoot, {
recursive: true,
force: true,
});
await fsp.mkdir(jobContractRoot, {
recursive: true,
});
await fsp.cp(selectedContract.dir, jobContractDir, {
recursive: true,
});
await fsp.appendFile(
logFile,
`Copied contract source into deploy job folder: ${jobContractDir}\n`,
"utf8"
);
if (placePortsEnvIntoSeedFolder === true) {
await fsp.appendFile(
logFile,
"general.env install block requested. Will patch install.sh inside the finished bundle ZIP after bundling.\n",
"utf8"
);
}
res.json({
ok: true,
runId,
logFile,
message: "Deploy job started",
});
setImmediate(async () => {
try {
const env = {
EV_USER_PRIVATE_KEY: privateKey,
EV_HP_INIT_CFG_PATH: initCfgPath,
EV_HP_OVERRIDE_CFG_PATH: overrideCfgPath,
HOME: jobDir,
};
const bundleArgs = [
"--secret-stdin",
"bundle",
jobContractDir,
bundlePubkey,
finalBinPath,
];
if (finalBinArgs) {
bundleArgs.push("-a", finalBinArgs);
}
async function patchInstallShFileForPortsEnv({
installPath,
logFile,
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
}) {
const block = makePortsEnvInstallBlock({
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
});
let existing = "";
let existed = false;
if (fs.existsSync(installPath)) {
existed = true;
existing = await fsp.readFile(installPath, "utf8");
existing = removeExistingPortsEnvInstallBlock(existing).trimStart();
}
let nextContent;
if (!existing) {
nextContent = [
"#!/usr/bin/env bash",
"set -e",
"",
block,
"",
].join("\n");
} else {
const lines = existing.split(/\r?\n/);
const firstLine = lines[0] || "";
if (firstLine.startsWith("#!")) {
nextContent = [
firstLine,
block,
...lines.slice(1),
].join("\n");
} else {
nextContent = [
"#!/usr/bin/env bash",
block,
existing,
].join("\n");
}
if (!nextContent.endsWith("\n")) {
nextContent += "\n";
}
}
await fsp.writeFile(installPath, nextContent, {
encoding: "utf8",
mode: 0o755,
});
await fsp.chmod(installPath, 0o755).catch(() => {});
await fsp.appendFile(
logFile,
existed
? `Patched bundled install.sh with general.env block: ${installPath}\n`
: `Created bundled install.sh with general.env block: ${installPath}\n`,
"utf8"
);
}
async function findFileByName(rootDir, fileName) {
const entries = await fsp.readdir(rootDir, { withFileTypes: true });
for (const entry of entries) {
const fullPath = path.join(rootDir, entry.name);
if (entry.isDirectory()) {
const nested = await findFileByName(fullPath, fileName);
if (nested) {
return nested;
}
} else if (entry.isFile() && entry.name === fileName) {
return fullPath;
}
}
return "";
}
async function patchExtractedHpCfgOverrideUnl({
patchDir,
logFile,
requestedUnl,
}) {
const cleanRequestedUnl = cleanStringArray(requestedUnl);
if (!cleanRequestedUnl.length) {
await fsp.appendFile(
logFile,
"No requested UNL found in initConfig.contract.unl or overrideConfig.contract.unl; hp.cfg.override UNL not patched.\n",
"utf8"
);
return;
}
const candidates = [
path.join(patchDir, "hp.cfg.override"),
path.join(patchDir, "cfg", "hp.cfg.override"),
path.join(patchDir, "contract", "cfg", "hp.cfg.override"),
];
let overridePath = "";
for (const candidate of candidates) {
if (await pathExists(candidate)) {
overridePath = candidate;
break;
}
}
if (!overridePath) {
overridePath = await findFileByName(patchDir, "hp.cfg.override");
}
if (!overridePath) {
await fsp.appendFile(
logFile,
"hp.cfg.override not found inside bundle; UNL not patched.\n",
"utf8"
);
return;
}
let parsed = {};
try {
const raw = await fsp.readFile(overridePath, "utf8");
parsed = raw.trim() ? JSON.parse(raw) : {};
} catch (error) {
throw new Error(`Could not parse bundled hp.cfg.override at ${overridePath}: ${error.message}`);
}
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
parsed = {};
}
if (!parsed.contract || typeof parsed.contract !== "object" || Array.isArray(parsed.contract)) {
parsed.contract = {};
}
const beforeUnl = Array.isArray(parsed.contract.unl)
? parsed.contract.unl.map((value) => String(value || "").trim()).filter(Boolean)
: [];
parsed.contract.unl = cleanRequestedUnl;
await fsp.writeFile(
overridePath,
`${JSON.stringify(parsed, null, 2)}\n`,
"utf8"
);
await fsp.appendFile(
logFile,
[
`Patched bundled hp.cfg.override UNL: ${overridePath}`,
` before: ${beforeUnl.length ? beforeUnl.join(",") : "[empty]"}`,
` after: ${cleanRequestedUnl.join(",")}`,
"",
].join("\n"),
"utf8"
);
}
async function patchBundleZipAfterBundle({
bundleZip,
jobDir,
logFile,
requestedUnl,
shouldPatchPortsEnv,
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
}) {
const patchDir = path.join(jobDir, "bundle_patch");
const backupZip = `${bundleZip}.before_bundle_patch`;
await fsp.rm(patchDir, {
recursive: true,
force: true,
});
await fsp.mkdir(patchDir, {
recursive: true,
});
await fsp.appendFile(
logFile,
`\nExtracting bundle so hp.cfg.override/install.sh can be patched (UNL + known_peers): ${bundleZip}\n`,
"utf8"
);
await runCommand("unzip", ["-q", bundleZip, "-d", patchDir], {
cwd: jobDir,
});
await patchExtractedHpCfgOverrideUnl({
patchDir,
logFile,
requestedUnl,
});
if (shouldPatchPortsEnv === true) {
const installPath = path.join(patchDir, "install.sh");
await patchInstallShFileForPortsEnv({
installPath,
logFile,
instanceName,
domain,
userPort,
peerPort,
gpTcpPort,
gpUdpPort,
});
} else {
await fsp.appendFile(
logFile,
"install.sh/general.env block was not requested. install.sh not patched.\n",
"utf8"
);
}
await fsp.copyFile(bundleZip, backupZip);
await fsp.rm(bundleZip, {
force: true,
});
await fsp.appendFile(
logFile,
`Repacking patched bundle zip: ${bundleZip}\n`,
"utf8"
);
await runCommand("zip", ["-qr", bundleZip, "."], {
cwd: patchDir,
});
await fsp.appendFile(
logFile,
`Patched bundle zip ready. Backup saved at: ${backupZip}\n`,
"utf8"
);
}
await fsp.appendFile(logFile, `\nRunning bundle...\n\n`, "utf8");
const bundleResult = await runCommandWithInput(
EVDEVKIT_BIN,
bundleArgs,
`${resolvedSeed}\n`,
{
cwd: CLUSTERING_DIR,
env,
}
);
await fsp.appendFile(
logFile,
`BUNDLE STDOUT:\n${bundleResult.stdout}\nBUNDLE STDERR:\n${bundleResult.stderr}\n`,
"utf8"
);
const bundleZip = await findBundleZip({
jobDir,
logFile,
});
if (!bundleZip) {
throw new Error(
`Bundle zip not found after bundle. Check log: ${logFile}`
);
}
await fsp.appendFile(
logFile,
`\nResolved bundle zip: ${bundleZip}\n`,
"utf8"
);
await patchBundleZipAfterBundle({
bundleZip,
jobDir,
logFile,
requestedUnl,
shouldPatchPortsEnv: placePortsEnvIntoSeedFolder === true,
instanceName,
domain,
userPort: deployUserPort,
peerPort: deployPeerPort,
gpTcpPort: deployGpTcpPort,
gpUdpPort: deployGpUdpPort,
});
await fsp.appendFile(
logFile,
`\nRunning deploy...\n\n`,
"utf8"
);
const deployResult = await runCommandWithInput(
EVDEVKIT_BIN,
[
"--secret-stdin",
"deploy",
bundleZip,
domain,
String(deployUserPort),
],
`${resolvedSeed}\n`,
{
cwd: CLUSTERING_DIR,
env,
}
);
await fsp.appendFile(
logFile,
[
`DEPLOY STDOUT:`,
deployResult.stdout,
`DEPLOY STDERR:`,
deployResult.stderr,
"",
`STATUS: SUCCESS`,
`Finished at ${nowLog()}`,
"",
].join("\n"),
"utf8"
);
} catch (error) {
await fsp.appendFile(
logFile,
[
"",
`STATUS: FAILURE`,
`ERROR: ${error.message}`,
error.stack || "",
`Finished at ${nowLog()}`,
"",
].join("\n"),
"utf8"
);
}
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.get("/api/deploy/log-poll/:runId", requireAdminPrivateKey, async (req, res) => {
try {
const { runId } = req.params;
if (!isSafeRunId(runId)) {
return res.status(400).json({
ok: false,
error: "Invalid runId",
});
}
const logFile = path.join(DEPLOYMENTS_DIR, runId, "deploy.log");
const offset = Math.max(0, Number(req.query.offset || 0));
if (!fs.existsSync(logFile)) {
return res.json({
ok: true,
runId,
text: "",
offset: 0,
done: false,
status: "waiting",
});
}
const stat = await fsp.stat(logFile);
let nextOffset = offset;
let text = "";
if (stat.size < offset) {
nextOffset = 0;
}
if (stat.size > nextOffset) {
const fd = await fsp.open(logFile, "r");
const length = stat.size - nextOffset;
const buffer = Buffer.alloc(length);
await fd.read(buffer, 0, length, nextOffset);
await fd.close();
text = buffer.toString("utf8");
nextOffset = stat.size;
}
const fullLog = await fsp.readFile(logFile, "utf8");
const success = fullLog.includes("STATUS: SUCCESS");
const failure = fullLog.includes("STATUS: FAILURE");
res.json({
ok: true,
runId,
text,
offset: nextOffset,
done: success || failure,
status: success ? "success" : failure ? "failure" : "running",
});
} catch (error) {
res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.get("/api/qr", async (req, res) => {
try {
const text = String(req.query.text || "").trim();
if (!text) {
return res.status(400).send("Missing QR text");
}
if (text.length > 2048) {
return res.status(400).send("QR text too long");
}
const svg = await QRCode.toString(text, {
type: "svg",
errorCorrectionLevel: "M",
margin: 2,
width: 260,
});
res.setHeader("Content-Type", "image/svg+xml");
res.setHeader("Cache-Control", "no-store");
res.send(svg);
} catch (error) {
res.status(500).send(error.message);
}
});
const HP_CFG_PATH = "/contract/cfg/hp.cfg";
const CONTRACT_PUBLIC_DIR = "/contract/contract_fs/seed/state/public";
function sendContractIndex(req, res) {
const indexPath = path.join(CONTRACT_PUBLIC_DIR, "index.html");
if (!fs.existsSync(indexPath)) {
return res
.status(404)
.type("text/plain")
.send(`Missing contract index: ${indexPath}`);
}
res.setHeader("Cache-Control", "no-store");
return res.sendFile(indexPath);
}
app.use((req, res, next) => {
if (req.method === "GET" && req.path === "/contract") {
return res.redirect(302, "/contract/");
}
next();
});
app.get(/^\/contract\/$/, sendContractIndex);
app.get("/contract/runtime-config", async (req, res) => {
try {
const raw = await fs.promises.readFile(HP_CFG_PATH, "utf8");
const cfg = JSON.parse(raw);
const localUserPort = cfg?.user?.port;
if (!localUserPort) {
return res.status(500).json({
ok: false,
error: "user.port not found in hp.cfg",
});
}
res.setHeader("Cache-Control", "no-store");
return res.json({
ok: true,
localUserPort,
});
} catch (error) {
return res.status(500).json({
ok: false,
error: error.message,
});
}
});
app.use(
"/contract",
express.static(CONTRACT_PUBLIC_DIR, {
index: "index.html",
maxAge: "0",
etag: false,
fallthrough: true,
setHeaders: (res, filePath) => {
res.setHeader("Cache-Control", "no-store");
if (filePath.endsWith(".html")) {
res.setHeader("Content-Type", "text/html; charset=utf-8");
} else if (filePath.endsWith(".js")) {
res.setHeader("Content-Type", "application/javascript; charset=utf-8");
} else if (filePath.endsWith(".css")) {
res.setHeader("Content-Type", "text/css; charset=utf-8");
} else if (filePath.endsWith(".json")) {
res.setHeader("Content-Type", "application/json; charset=utf-8");
} else if (filePath.endsWith(".svg")) {
res.setHeader("Content-Type", "image/svg+xml");
}
},
})
);
app.use("/contract", (req, res) => {
res
.status(404)
.type("text/plain")
.send(`Contract public file not found: /contract${req.path}`);
});
app.use("/instances", (req, res) => {
res.setHeader("Cache-Control", "no-store");
return res.status(403).json({
ok: false,
error: "Instance files are private. Use /api/instances with admin authentication.",
});
});
// Normal dashboard/public app. This must stay AFTER all /contract routes.
app.use(
express.static(PUBLIC_DIR, {
index: "index.html",
maxAge: "0",
etag: false,
setHeaders: (res, filePath) => {
if (filePath.endsWith("index.html")) {
res.setHeader(
"Cache-Control",
"no-store, no-cache, must-revalidate, proxy-revalidate"
);
res.setHeader("Pragma", "no-cache");
res.setHeader("Expires", "0");
}
},
})
);
app.use((req, res) => {
res.sendFile(path.join(PUBLIC_DIR, "index.html"));
});
const options = {
key: fs.readFileSync(SSL_KEY),
cert: fs.readFileSync(SSL_CERT),
};
https.createServer(options, app).listen(PORT, "0.0.0.0", () => {
console.log(`HTTPS Express server running on port ${PORT}`);
console.log(`Serving static files from: ${PUBLIC_DIR}`);
console.log(`Admin public key file: ${ADMIN_PUBLIC_KEY_FILE}`);
});/contracts/bootstrap/bootstrap_contract
/contracts/bootstrap/bootstrap_upgrade.sh
/contracts/bootstrap/contract.deploy.json
/contracts/bootstrap_alt/bootstrap2contract
/contracts/bootstrap_alt/bootstrap2upgrade.sh
/contracts/bootstrap_alt/contract.deploy.json
/contracts/fileupload/public/hotpocket-js-client.min.js
/contracts/fileupload/public/index.html
/contracts/fileupload/public/sodium.js
/contracts/fileupload/index.js
/contracts/fileupload/contract.deploy.json
/contracts/fileupload_password_protected
/contracts/bootstrap/bootstrap_contract
you need to compile this file from here, or grab it from a deployed evernode image
https://github.com/EvernodeXRPL/evernode-bootstrap-contract/tree/main/src
/contracts/bootstrap/bootstrap_upgrade.sh
Code: Select all
#!/bin/bash
# This script is used to replace the bootstrap contract with the user-supplied contract bundle.
# (The contract bundle archive must already exist on the current directory)
echo "Sashimono bootstrap contract upgrader."
echo "Execution lcl $1-$2"
bootstrap_bin="bootstrap_contract"
install_script="install.sh"
patch_cfg="../patch.cfg"
patch_cfg_bk="../patch.cfg.bk"
contract_config="contract.config"
self_original_name="bootstrap_upgrade.sh" # Original name of this script before it was renamed to post_exec.sh
self_path=$(realpath $0) # Full path of this script.
self_name=$(basename $self_path) # File name of this script.
self_dir=$(dirname $self_path) # Parent path of this script.
post_exec_err_file="post_exec.err"
# If field exists, append to patch json.
function append_string_field() {
local field=$1
local req=$2 # '1' if empty value not allowed.
val=$(jq ".$field" $contract_config)
if [ "$val" != "null" ]; then
if [ "$req" == "1" ] && [ ${#val} -eq 2 ]; then # Empty means "" or ''
echo "$field cannot be empty."
return 1
fi
[ "${patch_json: -1}" != "{" ] && patch_json="$patch_json,"
patch_json="$patch_json${field##*.}:$val" # Append last . component field name with value.
fi
return 0
}
# If field exists, append to patch json.
function append_mode_field() {
local field=$1
val=$(jq ".$field" $contract_config)
if [ "$val" != "null" ]; then
if [ ${#val} -eq 2 ] || { [ "$val" != "\"public\"" ] && [ "$val" != "\"private\"" ]; }; then
echo "Invalid $field mode. Valid values: public|private."
return 1
fi
[ "${patch_json: -1}" != "{" ] && patch_json="$patch_json,"
patch_json="$patch_json${field##*.}:$val" # Append last . component field name with value.
fi
return 0
}
# If field exists, append to patch json.
function append_gt0_field() {
local field=$1
local val=$(jq ".$field" $contract_config)
if [ "$val" != "null" ]; then
if [ "$val" -lt 0 ]; then
echo "Invalid $field. Should be greater than zero."
return 1
fi
[ "${patch_json: -1}" != "{" ] && patch_json="$patch_json,"
patch_json="$patch_json${field##*.}:$val" # Append last . component field name with value.
fi
return 0
}
# If field exists, append to patch json.
function append_range_field() {
local field=$1
local min=$2
local max=$3
local val=$(jq ".$field" $contract_config)
if [ "$val" != "null" ]; then
if [ "$val" -le $min ] || [ "$val" -gt $max ]; then
echo "$field must be between $min and $max inclusive."
return 1
fi
[ "${patch_json: -1}" != "{" ] && patch_json="$patch_json,"
patch_json="$patch_json${field##*.}:$val" # Append last . component field name with value.
fi
return 0
}
function print_err() {
local error=$1
log=$(jq . $post_exec_err_file)
for key in $(jq -c 'keys[]' <<<$log); do
log=$(jq ".$key = \"$error\"" <<<$log)
done
echo $log >$post_exec_err_file
}
function upgrade() {
if [ -f "$contract_config" ]; then
# jq command is used for json manipulation.
if ! command -v jq &>/dev/null; then
echo "jq utility not found. Exiting.."
print_err "JqBundleNotFound"
return 1
fi
# ********Config check********
# bin_path is the only field that we require. Everything else can be ommitted.
local bin_path=$(jq '.bin_path' $contract_config)
if [ "$bin_path" == "null" ] || [ ${#bin_path} -eq 2 ]; then # Empty means "" or ''
echo "bin_path cannot be empty"
print_err "BinPathEmpty"
return 1
elif [ ! -f "${bin_path:1:-1}" ]; then
echo "Given binary file: $bin_path not found"
print_err "BinaryNotFound"
return 1
else
patch_json="{bin_path:$bin_path"
fi
if ! append_string_field "bin_args"; then
print_err "InvalidBinArgs"
return 1
fi
env_config=$(jq '.environment' $contract_config)
if [ "$env_config" != "null" ]; then
jq -e '.environment|type!="object"' $contract_config >/dev/null &&
echo "Contract environment config format is invalid. Its format should be an object with string keys and string values." &&
print_err "InvalidEnvFormat" && return 1
jq -e '[.environment|to_entries | .[] | select(.value|type!="string") ] | any' $contract_config >/dev/null &&
echo "Each contract environment variable's type should be a string." &&
print_err "InvalidEnvFormat" && return 1
patch_json="$patch_json,environment:$env_config"
fi
if ! append_string_field "version" 1; then
print_err "InvalidVersion"
return 1
fi
if ! append_gt0_field "max_input_ledger_offset"; then
print_err "InvalidMaxInputLedgerOffset"
return 1
fi
local unl=$(jq '.unl' $contract_config)
if [ "$unl" != "null" ]; then
unl_res=$(jq '.unl? | map(length == 66 and startswith("ed")) | index(false)' $contract_config)
if [ "$unl_res" != "null" ]; then
echo "Unl pubkey invalid. Invalid format. Key should be 66 in length with ed prefix"
print_err "InvalidUnlPubkey"
return 1
fi
patch_json="$patch_json,unl:$unl"
fi
local consensus_config=$(jq '.consensus' $contract_config)
if [ "$consensus_config" != "null" ]; then
patch_json="$patch_json,consensus:{"
if ! append_mode_field "consensus.mode"; then
print_err "InvalidConsensusMode"
return 1
fi
if ! append_range_field "consensus.roundtime" 0 3600000; then
print_err "InvalidConsensusRoundtime"
return 1
fi
if ! append_range_field "consensus.stage_slice" 0 33; then
print_err "InvalidConsensusStageSlice"
return 1
fi
if ! append_range_field "consensus.threshold" 1 100; then
print_err "InvalidConsensusThreshold"
return 1
fi
patch_json="$patch_json}"
fi
local npl_config=$(jq '.npl' $contract_config)
if [ "$npl_config" != "null" ]; then
patch_json="$patch_json,npl:{"
if ! append_mode_field "npl.mode"; then
print_err "InvalidNplMode"
return 1
fi
patch_json="$patch_json}"
fi
local round_limits=$(jq '.round_limits' $contract_config)
if [ "$round_limits" != "null" ]; then
patch_json="$patch_json,round_limits:{"
if ! append_gt0_field "round_limits.user_input_bytes"; then
print_err "InvalidUserInputBytes"
return 1
fi
if ! append_gt0_field "round_limits.user_output_bytes"; then
print_err "InvalidUserOutputBytes"
return 1
fi
if ! append_gt0_field "round_limits.npl_output_bytes"; then
print_err "InvalidNplOutputBytes"
return 1
fi
if ! append_gt0_field "round_limits.proc_cpu_seconds"; then
print_err "InvalidProcCpuSeconds"
return 1
fi
if ! append_gt0_field "round_limits.proc_mem_bytes"; then
print_err "InvalidProcMemBytes"
return 1
fi
if ! append_gt0_field "round_limits.proc_ofd_count"; then
print_err "InvalidProcOfdCount"
return 1
fi
patch_json="$patch_json}"
fi
patch_json="$patch_json}"
echo "All $contract_config checks passed."
echo "Updating $patch_cfg file."
echo "All $contract_config checks passed."
echo "Updating $patch_cfg file."
temp_cfg="../temp.cfg"
echo "{}" >$temp_cfg
new_patch_temp=$(jq -M ". + $patch_json" $temp_cfg)
echo $new_patch_temp >$temp_cfg
local new_patch=$(jq -M -s '.[0] * .[1]' $patch_cfg $temp_cfg) # Merge jsons.
rm $temp_cfg
cp $patch_cfg $patch_cfg_bk # Make a backup.
echo "$new_patch" >$patch_cfg
# Remove contract.config after patch file update.
rm $contract_config
fi
# *****Install Script*****.
if [ -f "$install_script" ]; then
echo "$install_script found. Executing..."
chmod +x $install_script
./$install_script
installcode=$?
rm $install_script
if [ "$installcode" -eq "0" ]; then
echo "$install_script executed successfully."
return 0
else
echo "$install_script ended with exit code:$installcode"
print_err "InstallScriptFailed"
return 1
fi
fi
return 0
}
function rollback() {
# Restore self-script original name (Because hp requires it to be named post_exec.sh before execution)
cp $self_name $self_original_name
# Restore patch.cfg if backup exists
[ -f $patch_cfg_bk ] && mv $patch_cfg_bk $patch_cfg
# Remove all files except the ones we need.
find . -not \( -name $bootstrap_bin -or -name $self_original_name -or -name $post_exec_err_file \) -delete
return 0
}
# Perform upgrade and rollback if failed.
upgrade
upgradecode=$?
pushd $self_dir >/dev/null 2>&1
if [ "$upgradecode" -eq "0" ]; then
# We have upgraded the contract successfully. Cleanup bootstrap contract resources.
echo "Upgrade successful. Cleaning up."
rm -f contract.deploy.json $bootstrap_bin $patch_cfg_bk $post_exec_err_file
else
echo "Upgrade failed. Rolling back."
rollback
fi
finalcode=$?
popd >/dev/null 2>&1
exit $finalcode
Code: Select all
{
"deployBinPath": "bootstrap_contract",
"deployBinArgs": "",
"roundtime": 4000,
"unl": [],
"knownPeers": []
}Open the bootstrap_contract in winhex and replace _ with 2, this is how we code in the Bronx.
/contracts/bootstrap_alt/bootstrap2upgrade.sh
Code: Select all
#!/bin/bash
# This script is used to replace the bootstrap contract with the user-supplied contract bundle.
# (The contract bundle archive must already exist on the current directory)
echo "Sashimono bootstrap contract upgrader."
echo "Execution lcl $1-$2"
bootstrap_bin="bootstrap2contract"
install_script="install.sh"
patch_cfg="../patch.cfg"
patch_cfg_bk="../patch.cfg.bk"
contract_config="contract.config"
self_original_name="bootstrap_upgrade.sh" # Original name of this script before it was renamed to post_exec.sh
self_path=$(realpath $0) # Full path of this script.
self_name=$(basename $self_path) # File name of this script.
self_dir=$(dirname $self_path) # Parent path of this script.
post_exec_err_file="post_exec.err"
# If field exists, append to patch json.
function append_string_field() {
local field=$1
local req=$2 # '1' if empty value not allowed.
val=$(jq ".$field" $contract_config)
if [ "$val" != "null" ]; then
if [ "$req" == "1" ] && [ ${#val} -eq 2 ]; then # Empty means "" or ''
echo "$field cannot be empty."
return 1
fi
[ "${patch_json: -1}" != "{" ] && patch_json="$patch_json,"
patch_json="$patch_json${field##*.}:$val" # Append last . component field name with value.
fi
return 0
}
# If field exists, append to patch json.
function append_mode_field() {
local field=$1
val=$(jq ".$field" $contract_config)
if [ "$val" != "null" ]; then
if [ ${#val} -eq 2 ] || { [ "$val" != "\"public\"" ] && [ "$val" != "\"private\"" ]; }; then
echo "Invalid $field mode. Valid values: public|private."
return 1
fi
[ "${patch_json: -1}" != "{" ] && patch_json="$patch_json,"
patch_json="$patch_json${field##*.}:$val" # Append last . component field name with value.
fi
return 0
}
# If field exists, append to patch json.
function append_gt0_field() {
local field=$1
local val=$(jq ".$field" $contract_config)
if [ "$val" != "null" ]; then
if [ "$val" -lt 0 ]; then
echo "Invalid $field. Should be greater than zero."
return 1
fi
[ "${patch_json: -1}" != "{" ] && patch_json="$patch_json,"
patch_json="$patch_json${field##*.}:$val" # Append last . component field name with value.
fi
return 0
}
# If field exists, append to patch json.
function append_range_field() {
local field=$1
local min=$2
local max=$3
local val=$(jq ".$field" $contract_config)
if [ "$val" != "null" ]; then
if [ "$val" -le $min ] || [ "$val" -gt $max ]; then
echo "$field must be between $min and $max inclusive."
return 1
fi
[ "${patch_json: -1}" != "{" ] && patch_json="$patch_json,"
patch_json="$patch_json${field##*.}:$val" # Append last . component field name with value.
fi
return 0
}
function print_err() {
local error=$1
log=$(jq . $post_exec_err_file)
for key in $(jq -c 'keys[]' <<<$log); do
log=$(jq ".$key = \"$error\"" <<<$log)
done
echo $log >$post_exec_err_file
}
function upgrade() {
if [ -f "$contract_config" ]; then
# jq command is used for json manipulation.
if ! command -v jq &>/dev/null; then
echo "jq utility not found. Exiting.."
print_err "JqBundleNotFound"
return 1
fi
# ********Config check********
# bin_path is the only field that we require. Everything else can be ommitted.
local bin_path=$(jq '.bin_path' $contract_config)
if [ "$bin_path" == "null" ] || [ ${#bin_path} -eq 2 ]; then # Empty means "" or ''
echo "bin_path cannot be empty"
print_err "BinPathEmpty"
return 1
elif [ ! -f "${bin_path:1:-1}" ]; then
echo "Given binary file: $bin_path not found"
print_err "BinaryNotFound"
return 1
else
patch_json="{bin_path:$bin_path"
fi
if ! append_string_field "bin_args"; then
print_err "InvalidBinArgs"
return 1
fi
env_config=$(jq '.environment' $contract_config)
if [ "$env_config" != "null" ]; then
jq -e '.environment|type!="object"' $contract_config >/dev/null &&
echo "Contract environment config format is invalid. Its format should be an object with string keys and string values." &&
print_err "InvalidEnvFormat" && return 1
jq -e '[.environment|to_entries | .[] | select(.value|type!="string") ] | any' $contract_config >/dev/null &&
echo "Each contract environment variable's type should be a string." &&
print_err "InvalidEnvFormat" && return 1
patch_json="$patch_json,environment:$env_config"
fi
if ! append_string_field "version" 1; then
print_err "InvalidVersion"
return 1
fi
if ! append_gt0_field "max_input_ledger_offset"; then
print_err "InvalidMaxInputLedgerOffset"
return 1
fi
local unl=$(jq '.unl' $contract_config)
if [ "$unl" != "null" ]; then
unl_res=$(jq '.unl? | map(length == 66 and startswith("ed")) | index(false)' $contract_config)
if [ "$unl_res" != "null" ]; then
echo "Unl pubkey invalid. Invalid format. Key should be 66 in length with ed prefix"
print_err "InvalidUnlPubkey"
return 1
fi
patch_json="$patch_json,unl:$unl"
fi
local consensus_config=$(jq '.consensus' $contract_config)
if [ "$consensus_config" != "null" ]; then
patch_json="$patch_json,consensus:{"
if ! append_mode_field "consensus.mode"; then
print_err "InvalidConsensusMode"
return 1
fi
if ! append_range_field "consensus.roundtime" 0 3600000; then
print_err "InvalidConsensusRoundtime"
return 1
fi
if ! append_range_field "consensus.stage_slice" 0 33; then
print_err "InvalidConsensusStageSlice"
return 1
fi
if ! append_range_field "consensus.threshold" 1 100; then
print_err "InvalidConsensusThreshold"
return 1
fi
patch_json="$patch_json}"
fi
local npl_config=$(jq '.npl' $contract_config)
if [ "$npl_config" != "null" ]; then
patch_json="$patch_json,npl:{"
if ! append_mode_field "npl.mode"; then
print_err "InvalidNplMode"
return 1
fi
patch_json="$patch_json}"
fi
local round_limits=$(jq '.round_limits' $contract_config)
if [ "$round_limits" != "null" ]; then
patch_json="$patch_json,round_limits:{"
if ! append_gt0_field "round_limits.user_input_bytes"; then
print_err "InvalidUserInputBytes"
return 1
fi
if ! append_gt0_field "round_limits.user_output_bytes"; then
print_err "InvalidUserOutputBytes"
return 1
fi
if ! append_gt0_field "round_limits.npl_output_bytes"; then
print_err "InvalidNplOutputBytes"
return 1
fi
if ! append_gt0_field "round_limits.proc_cpu_seconds"; then
print_err "InvalidProcCpuSeconds"
return 1
fi
if ! append_gt0_field "round_limits.proc_mem_bytes"; then
print_err "InvalidProcMemBytes"
return 1
fi
if ! append_gt0_field "round_limits.proc_ofd_count"; then
print_err "InvalidProcOfdCount"
return 1
fi
patch_json="$patch_json}"
fi
patch_json="$patch_json}"
echo "All $contract_config checks passed."
echo "Updating $patch_cfg file."
echo "All $contract_config checks passed."
echo "Updating $patch_cfg file."
temp_cfg="../temp.cfg"
echo "{}" >$temp_cfg
new_patch_temp=$(jq -M ". + $patch_json" $temp_cfg)
echo $new_patch_temp >$temp_cfg
local new_patch=$(jq -M -s '.[0] * .[1]' $patch_cfg $temp_cfg) # Merge jsons.
rm $temp_cfg
cp $patch_cfg $patch_cfg_bk # Make a backup.
echo "$new_patch" >$patch_cfg
# Remove contract.config after patch file update.
rm $contract_config
fi
# *****Install Script*****.
if [ -f "$install_script" ]; then
echo "$install_script found. Executing..."
chmod +x $install_script
./$install_script
installcode=$?
rm $install_script
if [ "$installcode" -eq "0" ]; then
echo "$install_script executed successfully."
return 0
else
echo "$install_script ended with exit code:$installcode"
print_err "InstallScriptFailed"
return 1
fi
fi
return 0
}
function rollback() {
# Restore self-script original name (Because hp requires it to be named post_exec.sh before execution)
cp $self_name $self_original_name
# Restore patch.cfg if backup exists
[ -f $patch_cfg_bk ] && mv $patch_cfg_bk $patch_cfg
# Remove all files except the ones we need.
find . -not \( -name $bootstrap_bin -or -name $self_original_name -or -name $post_exec_err_file \) -delete
return 0
}
# Perform upgrade and rollback if failed.
upgrade
upgradecode=$?
pushd $self_dir >/dev/null 2>&1
if [ "$upgradecode" -eq "0" ]; then
# We have upgraded the contract successfully. Cleanup bootstrap contract resources.
echo "Upgrade successful. Cleaning up."
rm -f contract.deploy.json $bootstrap_bin $patch_cfg_bk $post_exec_err_file
else
echo "Upgrade failed. Rolling back."
rollback
fi
finalcode=$?
popd >/dev/null 2>&1
exit $finalcode
Code: Select all
{
"deployBinPath": "bootstrap2contract",
"deployBinArgs": "",
"roundtime": 4000,
"unl": [],
"knownPeers": []
}Code: Select all
var BSON=function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function n(e,t){return e(t={exports:{}},t.exports),t.exports}for(var i=function(e){var t=p(e),r=t[0],n=t[1];return 3*(r+n)/4-n},o=function(e){var t,r,n=p(e),i=n[0],o=n[1],u=new a(function(e,t,r){return 3*(t+r)/4-r}(0,i,o)),s=0,l=o>0?i-4:i;for(r=0;r<l;r+=4)t=f[e.charCodeAt(r)]<<18|f[e.charCodeAt(r+1)]<<12|f[e.charCodeAt(r+2)]<<6|f[e.charCodeAt(r+3)],u[s++]=t>>16&255,u[s++]=t>>8&255,u[s++]=255&t;2===o&&(t=f[e.charCodeAt(r)]<<2|f[e.charCodeAt(r+1)]>>4,u[s++]=255&t);1===o&&(t=f[e.charCodeAt(r)]<<10|f[e.charCodeAt(r+1)]<<4|f[e.charCodeAt(r+2)]>>2,u[s++]=t>>8&255,u[s++]=255&t);return u},u=function(e){for(var t,r=e.length,n=r%3,i=[],o=16383,u=0,f=r-n;u<f;u+=o)i.push(d(e,u,u+o>f?f:u+o));1===n?(t=e[r-1],i.push(s[t>>2]+s[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],i.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return i.join("")},s=[],f=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,h=l.length;c<h;++c)s[c]=l[c],f[l.charCodeAt(c)]=c;function p(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function d(e,t,r){for(var n,i,o=[],u=t;u<r;u+=3)n=(e[u]<<16&16711680)+(e[u+1]<<8&65280)+(255&e[u+2]),o.push(s[(i=n)>>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return o.join("")}f["-".charCodeAt(0)]=62,f["_".charCodeAt(0)]=63;var y={byteLength:i,toByteArray:o,fromByteArray:u},g=function(e,t,r,n,i){var o,u,s=8*i-n-1,f=(1<<s)-1,a=f>>1,l=-7,c=r?i-1:0,h=r?-1:1,p=e[t+c];for(c+=h,o=p&(1<<-l)-1,p>>=-l,l+=s;l>0;o=256*o+e[t+c],c+=h,l-=8);for(u=o&(1<<-l)-1,o>>=-l,l+=n;l>0;u=256*u+e[t+c],c+=h,l-=8);if(0===o)o=1-a;else{if(o===f)return u?NaN:1/0*(p?-1:1);u+=Math.pow(2,n),o-=a}return(p?-1:1)*u*Math.pow(2,o-n)},_=function(e,t,r,n,i,o){var u,s,f,a=8*o-i-1,l=(1<<a)-1,c=l>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,u=l):(u=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-u))<1&&(u--,f*=2),(t+=u+c>=1?h/f:h*Math.pow(2,1-c))*f>=2&&(u++,f/=2),u+c>=l?(s=0,u=l):u+c>=1?(s=(t*f-1)*Math.pow(2,i),u+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,i),u=0));i>=8;e[r+p]=255&s,p+=d,s/=256,i-=8);for(u=u<<i|s,a+=i;a>0;e[r+p]=255&u,p+=d,u/=256,a-=8);e[r+p-d]|=128*y},b=n((function(e,t){var r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=Buffer,t.SlowBuffer=function(e){+e!=e&&(e=0);return Buffer.alloc(+e)},t.INSPECT_MAX_BYTES=50;var n=2147483647;function i(e){if(e>n)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,Buffer.prototype),t}function Buffer(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return s(e)}return o(e,t,r)}function o(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!Buffer.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|c(e,t),n=i(r),o=n.write(e,t);o!==r&&(n=n.slice(0,o));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(z(e,Uint8Array)){var t=new Uint8Array(e);return a(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+babelHelpers.typeof(e));if(z(e,ArrayBuffer)||e&&z(e.buffer,ArrayBuffer))return a(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(z(e,SharedArrayBuffer)||e&&z(e.buffer,SharedArrayBuffer)))return a(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return Buffer.from(n,t,r);var o=function(e){if(Buffer.isBuffer(e)){var t=0|l(e.length),r=i(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||$(e.length)?i(0):f(e);if("Buffer"===e.type&&Array.isArray(e.data))return f(e.data)}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return Buffer.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+babelHelpers.typeof(e))}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function s(e){return u(e),i(e<0?0:0|l(e))}function f(e){for(var t=e.length<0?0:0|l(e.length),r=i(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function a(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,Buffer.prototype),n}function l(e){if(e>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|e}function c(e,t){if(Buffer.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||z(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+babelHelpers.typeof(e));var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return P(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(e).length;default:if(i)return n?-1:P(e).length;t=(""+t).toLowerCase(),i=!0}}function h(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,r);case"utf8":case"utf-8":return A(this,t,r);case"ascii":return E(this,t,r);case"latin1":case"binary":return T(this,t,r);case"base64":return v(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function p(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function d(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),$(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=Buffer.from(t,n)),Buffer.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){var o,u=1,s=e.length,f=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;u=2,s/=2,f/=2,r/=2}function a(e,t){return 1===u?e[t]:e.readUInt16BE(t*u)}if(i){var l=-1;for(o=r;o<s;o++)if(a(e,o)===a(t,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===f)return l*u}else-1!==l&&(o-=o-l),l=-1}else for(r+f>s&&(r=s-f),o=r;o>=0;o--){for(var c=!0,h=0;h<f;h++)if(a(e,o+h)!==a(t,h)){c=!1;break}if(c)return o}return-1}function B(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n))>i&&(n=i):n=i;var o=t.length;n>o/2&&(n=o/2);for(var u=0;u<n;++u){var s=parseInt(t.substr(2*u,2),16);if($(s))return u;e[r+u]=s}return u}function O(e,t,r,n){return C(P(t,e.length-r),e,r,n)}function m(e,t,r,n){return C(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function S(e,t,r,n){return C(Y(t),e,r,n)}function N(e,t,r,n){return C(function(e,t){for(var r,n,i,o=[],u=0;u<e.length&&!((t-=2)<0);++u)n=(r=e.charCodeAt(u))>>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function v(e,t,r){return 0===t&&r===e.length?y.fromByteArray(e):y.fromByteArray(e.slice(t,r))}function A(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var o,u,s,f,a=e[i],l=null,c=a>239?4:a>223?3:a>191?2:1;if(i+c<=r)switch(c){case 1:a<128&&(l=a);break;case 2:128==(192&(o=e[i+1]))&&(f=(31&a)<<6|63&o)>127&&(l=f);break;case 3:o=e[i+1],u=e[i+2],128==(192&o)&&128==(192&u)&&(f=(15&a)<<12|(63&o)<<6|63&u)>2047&&(f<55296||f>57343)&&(l=f);break;case 4:o=e[i+1],u=e[i+2],s=e[i+3],128==(192&o)&&128==(192&u)&&128==(192&s)&&(f=(15&a)<<18|(63&o)<<12|(63&u)<<6|63&s)>65535&&f<1114112&&(l=f)}null===l?(l=65533,c=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=c}return function(e){var t=e.length;if(t<=w)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=w));return r}(n)}t.kMaxLength=n,Buffer.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),Buffer.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Buffer.prototype,"parent",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.buffer}}),Object.defineProperty(Buffer.prototype,"offset",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.byteOffset}}),Buffer.poolSize=8192,Buffer.from=function(e,t,r){return o(e,t,r)},Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype),Object.setPrototypeOf(Buffer,Uint8Array),Buffer.alloc=function(e,t,r){return function(e,t,r){return u(e),e<=0?i(e):void 0!==t?"string"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}(e,t,r)},Buffer.allocUnsafe=function(e){return s(e)},Buffer.allocUnsafeSlow=function(e){return s(e)},Buffer.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==Buffer.prototype},Buffer.compare=function(e,t){if(z(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),z(t,Uint8Array)&&(t=Buffer.from(t,t.offset,t.byteLength)),!Buffer.isBuffer(e)||!Buffer.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);i<o;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},Buffer.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Buffer.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Buffer.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=Buffer.allocUnsafe(t),i=0;for(r=0;r<e.length;++r){var o=e[r];if(z(o,Uint8Array))i+o.length>n.length?Buffer.from(o).copy(n,i):Uint8Array.prototype.set.call(n,o,i);else{if(!Buffer.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,i)}i+=o.length}return n},Buffer.byteLength=c,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)p(this,t,t+1);return this},Buffer.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)p(this,t,t+3),p(this,t+1,t+2);return this},Buffer.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)p(this,t,t+7),p(this,t+1,t+6),p(this,t+2,t+5),p(this,t+3,t+4);return this},Buffer.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?A(this,0,e):h.apply(this,arguments)},Buffer.prototype.toLocaleString=Buffer.prototype.toString,Buffer.prototype.equals=function(e){if(!Buffer.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Buffer.compare(this,e)},Buffer.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return e=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(e+=" ... "),"<Buffer "+e+">"},r&&(Buffer.prototype[r]=Buffer.prototype.inspect),Buffer.prototype.compare=function(e,t,r,n,i){if(z(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),!Buffer.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+babelHelpers.typeof(e));if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),u=(r>>>=0)-(t>>>=0),s=Math.min(o,u),f=this.slice(n,i),a=e.slice(t,r),l=0;l<s;++l)if(f[l]!==a[l]){o=f[l],u=a[l];break}return o<u?-1:u<o?1:0},Buffer.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},Buffer.prototype.indexOf=function(e,t,r){return d(this,e,t,r,!0)},Buffer.prototype.lastIndexOf=function(e,t,r){return d(this,e,t,r,!1)},Buffer.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return B(this,e,t,r);case"utf8":case"utf-8":return O(this,e,t,r);case"ascii":case"latin1":case"binary":return m(this,e,t,r);case"base64":return S(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},Buffer.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function E(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(127&e[i]);return n}function T(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function D(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var i="",o=t;o<r;++o)i+=k[e[o]];return i}function I(e,t,r){for(var n=e.slice(t,r),i="",o=0;o<n.length-1;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function x(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function U(e,t,r,n,i,o){if(!Buffer.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<o)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function R(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function L(e,t,r,n,i){return t=+t,r>>>=0,i||R(e,0,r,4),_(e,t,r,n,23,4),r+4}function j(e,t,r,n,i){return t=+t,r>>>=0,i||R(e,0,r,8),_(e,t,r,n,52,8),r+8}Buffer.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,Buffer.prototype),n},Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n},Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function(e,t){return e>>>=0,t||x(e,1,this.length),this[e]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function(e,t){return e>>>=0,t||x(e,2,this.length),this[e]|this[e+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function(e,t){return e>>>=0,t||x(e,2,this.length),this[e]<<8|this[e+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function(e,t){return e>>>=0,t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function(e,t){return e>>>=0,t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Buffer.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*t)),n},Buffer.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},Buffer.prototype.readInt8=function(e,t){return e>>>=0,t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Buffer.prototype.readInt16LE=function(e,t){e>>>=0,t||x(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt16BE=function(e,t){e>>>=0,t||x(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt32LE=function(e,t){return e>>>=0,t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Buffer.prototype.readInt32BE=function(e,t){return e>>>=0,t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Buffer.prototype.readFloatLE=function(e,t){return e>>>=0,t||x(e,4,this.length),g(this,e,!0,23,4)},Buffer.prototype.readFloatBE=function(e,t){return e>>>=0,t||x(e,4,this.length),g(this,e,!1,23,4)},Buffer.prototype.readDoubleLE=function(e,t){return e>>>=0,t||x(e,8,this.length),g(this,e,!0,52,8)},Buffer.prototype.readDoubleBE=function(e,t){return e>>>=0,t||x(e,8,this.length),g(this,e,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||U(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o<r&&(i*=256);)this[t+o]=e/i&255;return t+r},Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||U(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,1,255,0),this[t]=255&e,t+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Buffer.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);U(this,e,t,r,i-1,-i)}var o=0,u=1,s=0;for(this[t]=255&e;++o<r&&(u*=256);)e<0&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/u>>0)-s&255;return t+r},Buffer.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);U(this,e,t,r,i-1,-i)}var o=r-1,u=1,s=0;for(this[t+o]=255&e;--o>=0&&(u*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/u>>0)-s&255;return t+r},Buffer.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},Buffer.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},Buffer.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},Buffer.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},Buffer.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Buffer.prototype.writeFloatLE=function(e,t,r){return L(this,e,t,!0,r)},Buffer.prototype.writeFloatBE=function(e,t,r){return L(this,e,t,!1,r)},Buffer.prototype.writeDoubleLE=function(e,t,r){return j(this,e,t,!0,r)},Buffer.prototype.writeDoubleBE=function(e,t,r){return j(this,e,t,!1,r)},Buffer.prototype.copy=function(e,t,r,n){if(!Buffer.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var i=n-r;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,n):Uint8Array.prototype.set.call(e,this.subarray(r,n),t),i},Buffer.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!Buffer.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var i=e.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(e=i)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var o;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o<r;++o)this[o]=e;else{var u=Buffer.isBuffer(e)?e:Buffer.from(e,n),s=u.length;if(0===s)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(o=0;o<r-t;++o)this[o+t]=u[o%s]}return this};var M=/[^+/0-9A-Za-z-_]/g;function P(e,t){var r;t=t||1/0;for(var n=e.length,i=null,o=[],u=0;u<n;++u){if((r=e.charCodeAt(u))>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(u+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(e){return y.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function C(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function z(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function $(e){return e!=e}var k=function(){for(var e="0123456789abcdef",t=new Array(256),r=0;r<16;++r)for(var n=16*r,i=0;i<16;++i)t[n+i]=e[r]+e[i];return t}()}));
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */b.Buffer,b.SlowBuffer,b.INSPECT_MAX_BYTES,b.kMaxLength;var B={},O="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e},m=/%[sdj%]/g;function S(e){if(!j(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(A(arguments[r]));return t.join(" ")}r=1;for(var n=arguments,i=n.length,o=String(e).replace(m,(function(e){if("%%"===e)return"%";if(r>=i)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}})),u=n[r];r<i;u=n[++r])R(u)||!Y(u)?o+=" "+u:o+=" "+A(u);return o}var N,v={};function A(e,t){var r={seen:[],stylize:E};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),U(t)?r.showHidden=t:t&&V(r,t),M(r.showHidden)&&(r.showHidden=!1),M(r.depth)&&(r.depth=2),M(r.colors)&&(r.colors=!1),M(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=w),T(r,e,r.depth)}function w(e,t){var r=A.styles[t];return r?"["+A.colors[r][0]+"m"+e+"["+A.colors[r][1]+"m":e}function E(e,t){return e}function T(e,t,r){if(e.customInspect&&t&&$(t.inspect)&&t.inspect!==A&&(!t.constructor||t.constructor.prototype!==t)){var n=t.inspect(r,e);return j(n)||(n=T(e,n,r)),n}var i=function(e,t){if(M(t))return e.stylize("undefined","undefined");if(j(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(L(t))return e.stylize(""+t,"number");if(U(t))return e.stylize(""+t,"boolean");if(R(t))return e.stylize("null","null")}(e,t);if(i)return i;var o=Object.keys(t),u=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),z(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return D(t);if(0===o.length){if($(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(P(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(C(t))return e.stylize(Date.prototype.toString.call(t),"date");if(z(t))return D(t)}var f,a="",l=!1,c=["{","}"];(x(t)&&(l=!0,c=["[","]"]),$(t))&&(a=" [Function"+(t.name?": "+t.name:"")+"]");return P(t)&&(a=" "+RegExp.prototype.toString.call(t)),C(t)&&(a=" "+Date.prototype.toUTCString.call(t)),z(t)&&(a=" "+D(t)),0!==o.length||l&&0!=t.length?r<0?P(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),f=l?function(e,t,r,n,i){for(var o=[],u=0,s=t.length;u<s;++u)K(t,String(u))?o.push(I(e,t,r,n,String(u),!0)):o.push("");return i.forEach((function(i){i.match(/^\d+$/)||o.push(I(e,t,r,n,i,!0))})),o}(e,t,r,u,o):o.map((function(n){return I(e,t,r,u,n,l)})),e.seen.pop(),function(e,t,r){if(e.reduce((function(e,t){return t.indexOf("\n"),e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(f,a,c)):c[0]+a+c[1]}function D(e){return"["+Error.prototype.toString.call(e)+"]"}function I(e,t,r,n,i,o){var u,s,f;if((f=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=f.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):f.set&&(s=e.stylize("[Setter]","special")),K(n,i)||(u="["+i+"]"),s||(e.seen.indexOf(f.value)<0?(s=R(r)?T(e,f.value,null):T(e,f.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),M(u)){if(o&&i.match(/^\d+$/))return s;(u=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(u=u.substr(1,u.length-2),u=e.stylize(u,"name")):(u=u.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),u=e.stylize(u,"string"))}return u+": "+s}function x(e){return Array.isArray(e)}function U(e){return"boolean"==typeof e}function R(e){return null===e}function L(e){return"number"==typeof e}function j(e){return"string"==typeof e}function M(e){return void 0===e}function P(e){return Y(e)&&"[object RegExp]"===k(e)}function Y(e){return"object"===babelHelpers.typeof(e)&&null!==e}function C(e){return Y(e)&&"[object Date]"===k(e)}function z(e){return Y(e)&&("[object Error]"===k(e)||e instanceof Error)}function $(e){return"function"==typeof e}function k(e){return Object.prototype.toString.call(e)}function J(e){return e<10?"0"+e.toString(10):e.toString(10)}A.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},A.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};var q=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function F(){var e=new Date,t=[J(e.getHours()),J(e.getMinutes()),J(e.getSeconds())].join(":");return[e.getDate(),q[e.getMonth()],t].join(" ")}function V(e,t){if(!t||!Y(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}function K(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var H={inherits:O,_extend:V,log:function(){console.log("%s - %s",F(),S.apply(null,arguments))},isBuffer:function(e){return Buffer.isBuffer(e)},isPrimitive:function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"===babelHelpers.typeof(e)||void 0===e},isFunction:$,isError:z,isDate:C,isObject:Y,isRegExp:P,isUndefined:M,isSymbol:function(e){return"symbol"===babelHelpers.typeof(e)},isString:j,isNumber:L,isNullOrUndefined:function(e){return null==e},isNull:R,isBoolean:U,isArray:x,inspect:A,deprecate:function e(t,r){if(M(global.process))return function(){return e(t,r).apply(this,arguments)};var n=!1;return function(){return n||(console.error(r),n=!0),t.apply(this,arguments)}},format:S,debuglog:function(e){if(M(N)&&(N=""),e=e.toUpperCase(),!v[e])if(new RegExp("\\b"+e+"\\b","i").test(N)){v[e]=function(){var t=S.apply(null,arguments);console.error("%s %d: %s",e,0,t)}}else v[e]=function(){};return v[e]}},X=n((function(e,r){Object.defineProperty(r,"__esModule",{value:!0}),r.deprecate=r.isObjectLike=r.isDate=r.isBuffer=r.haveBuffer=r.isBigUInt64Array=r.isBigInt64Array=r.isUint8Array=r.randomBytes=r.normalizedFunctionString=void 0,r.normalizedFunctionString=function(e){return e.toString().replace("function(","function (")};var n="object"==typeof t.navigator&&"ReactNative"===t.navigator.product?"BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.":"BSON: No cryptographic implementation for random bytes present, falling back to a less secure implementation.",i=function(e){console.warn(n);for(var t=b.Buffer.alloc(e),r=0;r<e;++r)t[r]=Math.floor(256*Math.random());return t};function o(e){return"object"==typeof e&&null!==e}r.randomBytes=function(){if("undefined"!=typeof window){var e=window.crypto||window.msCrypto;if(e&&e.getRandomValues)return function(t){return e.getRandomValues(b.Buffer.alloc(t))}}if(void 0!==t&&t.crypto&&t.crypto.getRandomValues)return function(e){return t.crypto.getRandomValues(b.Buffer.alloc(e))};var r;try{r=B.randomBytes}catch(e){}return r||i}(),r.isUint8Array=function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},r.isBigInt64Array=function(e){return"[object BigInt64Array]"===Object.prototype.toString.call(e)},r.isBigUInt64Array=function(e){return"[object BigUint64Array]"===Object.prototype.toString.call(e)},r.haveBuffer=function(){return void 0!==t&&void 0!==t.Buffer},r.isBuffer=function(e){var t;return"object"==typeof e&&"Buffer"===(null===(t=null==e?void 0:e.constructor)||void 0===t?void 0:t.name)},r.isDate=function(e){return o(e)&&"[object Date]"===Object.prototype.toString.call(e)},r.isObjectLike=o,r.deprecate=function(e,t){if("undefined"==typeof window&&"undefined"==typeof self)return H.deprecate(e,t);var r=!1;return function(){for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];return r||(console.warn(t),r=!0),e.apply(this,n)}}}));r(X),X.deprecate,X.isObjectLike,X.isDate,X.isBuffer,X.haveBuffer,X.isBigUInt64Array,X.isBigInt64Array,X.isUint8Array,X.randomBytes,X.normalizedFunctionString;var W=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ensureBuffer=void 0,t.ensureBuffer=function(e){if(X.isBuffer(e))return e;if(ArrayBuffer.isView(e))return b.Buffer.from(e.buffer);if(e instanceof ArrayBuffer)return b.Buffer.from(e);throw new TypeError("Must use either Buffer or TypedArray")}}));r(W),W.ensureBuffer;var G=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.bufferToUuidHexString=t.uuidHexStringToBuffer=t.uuidValidateString=void 0;var r=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|[0-9a-f]{12}4[0-9a-f]{3}[89ab][0-9a-f]{15})$/i;t.uuidValidateString=function(e){return"string"==typeof e&&r.test(e)};t.uuidHexStringToBuffer=function(e){if(!t.uuidValidateString(e))throw new TypeError('UUID string representations must be a 32 or 36 character hex string (dashes excluded/included). Format: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" or "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".');var r=e.replace(/-/g,"");return b.Buffer.from(r,"hex")};t.bufferToUuidHexString=function(e,t){return void 0===t&&(t=!0),t?e.toString("hex",0,4)+"-"+e.toString("hex",4,6)+"-"+e.toString("hex",6,8)+"-"+e.toString("hex",8,10)+"-"+e.toString("hex",10,16):e.toString("hex")}}));r(G),G.bufferToUuidHexString,G.uuidHexStringToBuffer,G.uuidValidateString;var Z=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.UUID=void 0;var r=Symbol("id"),n=function(){function e(t){if(void 0===t)this.id=e.generate();else if(t instanceof e)this[r]=b.Buffer.from(t.id),this.__id=t.__id;else if((b.Buffer.isBuffer(t)||ArrayBuffer.isView(t))&&16===t.byteLength)this.id=W.ensureBuffer(t);else{if("string"!=typeof t)throw new TypeError("Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).");this.id=G.uuidHexStringToBuffer(t)}}return Object.defineProperty(e.prototype,"id",{get:function(){return this[r]},set:function(t){this[r]=t,e.cacheHexString&&(this.__id=G.bufferToUuidHexString(t))},enumerable:!1,configurable:!0}),e.prototype.toHexString=function(t){if(void 0===t&&(t=!0),e.cacheHexString&&this.__id)return this.__id;var r=G.bufferToUuidHexString(this.id,t);return e.cacheHexString&&(this.__id=r),r},e.prototype.toString=function(e){return e?this.id.toString(e):this.toHexString()},e.prototype.toJSON=function(){return this.toHexString()},e.prototype.equals=function(t){if(!t)return!1;if(t instanceof e)return t.id.equals(this.id);try{return new e(t).id.equals(this.id)}catch(e){return!1}},e.prototype.toBinary=function(){return new Q.Binary(this.id,Q.Binary.SUBTYPE_UUID)},e.generate=function(){var e=X.randomBytes(16);return e[6]=15&e[6]|64,e[8]=63&e[8]|128,b.Buffer.from(e)},e.isValid=function(t){if(!t)return!1;if(t instanceof e)return!0;if("string"==typeof t)return G.uuidValidateString(t);if(b.Buffer.isBuffer(t)){if(16!==t.length)return!1;try{return parseInt(t[6].toString(16)[0],10)===Q.Binary.SUBTYPE_UUID}catch(e){return!1}}return!1},e.createFromHexString=function(t){return new e(G.uuidHexStringToBuffer(t))},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'new UUID("'+this.toHexString()+'")'},e}();t.UUID=n,Object.defineProperty(n.prototype,"_bsontype",{value:"UUID"})}));r(Z),Z.UUID;var Q=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Binary=void 0;var Binary=function(){function Binary(e,t){if(!(this instanceof Binary))return new Binary(e,t);if(!(null==e||"string"==typeof e||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||Array.isArray(e)))throw new TypeError("Binary can only be constructed from string, Buffer, TypedArray, or Array<number>");this.sub_type=null!=t?t:Binary.BSON_BINARY_SUBTYPE_DEFAULT,null==e?(this.buffer=b.Buffer.alloc(Binary.BUFFER_SIZE),this.position=0):("string"==typeof e?this.buffer=b.Buffer.from(e,"binary"):Array.isArray(e)?this.buffer=b.Buffer.from(e):this.buffer=W.ensureBuffer(e),this.position=this.buffer.byteLength)}return Binary.prototype.put=function(e){if("string"==typeof e&&1!==e.length)throw new TypeError("only accepts single character String");if("number"!=typeof e&&1!==e.length)throw new TypeError("only accepts single character Uint8Array or Array");var t;if((t="string"==typeof e?e.charCodeAt(0):"number"==typeof e?e:e[0])<0||t>255)throw new TypeError("only accepts number in a valid unsigned byte range 0-255");if(this.buffer.length>this.position)this.buffer[this.position++]=t;else{var r=b.Buffer.alloc(Binary.BUFFER_SIZE+this.buffer.length);this.buffer.copy(r,0,0,this.buffer.length),this.buffer=r,this.buffer[this.position++]=t}},Binary.prototype.write=function(e,t){if(t="number"==typeof t?t:this.position,this.buffer.length<t+e.length){var r=b.Buffer.alloc(this.buffer.length+e.length);this.buffer.copy(r,0,0,this.buffer.length),this.buffer=r}ArrayBuffer.isView(e)?(this.buffer.set(W.ensureBuffer(e),t),this.position=t+e.byteLength>this.position?t+e.length:this.position):"string"==typeof e&&(this.buffer.write(e,t,e.length,"binary"),this.position=t+e.length>this.position?t+e.length:this.position)},Binary.prototype.read=function(e,t){return t=t&&t>0?t:this.position,this.buffer.slice(e,e+t)},Binary.prototype.value=function(e){return(e=!!e)&&this.buffer.length===this.position?this.buffer:e?this.buffer.slice(0,this.position):this.buffer.toString("binary",0,this.position)},Binary.prototype.length=function(){return this.position},Binary.prototype.toJSON=function(){return this.buffer.toString("base64")},Binary.prototype.toString=function(e){return this.buffer.toString(e)},Binary.prototype.toExtendedJSON=function(e){e=e||{};var t=this.buffer.toString("base64"),r=Number(this.sub_type).toString(16);return e.legacy?{$binary:t,$type:1===r.length?"0"+r:r}:{$binary:{base64:t,subType:1===r.length?"0"+r:r}}},Binary.prototype.toUUID=function(){if(this.sub_type===Binary.SUBTYPE_UUID)return new Z.UUID(this.buffer.slice(0,this.position));throw new Error('Binary sub_type "'+this.sub_type+'" is not supported for converting to UUID. Only "'+Binary.SUBTYPE_UUID+'" is currently supported.')},Binary.fromExtendedJSON=function(e,t){var r,n;if(t=t||{},"$binary"in e?t.legacy&&"string"==typeof e.$binary&&"$type"in e?(n=e.$type?parseInt(e.$type,16):0,r=b.Buffer.from(e.$binary,"base64")):"string"!=typeof e.$binary&&(n=e.$binary.subType?parseInt(e.$binary.subType,16):0,r=b.Buffer.from(e.$binary.base64,"base64")):"$uuid"in e&&(n=4,r=G.uuidHexStringToBuffer(e.$uuid)),!r)throw new TypeError("Unexpected Binary Extended JSON format "+JSON.stringify(e));return new Binary(r,n)},Binary.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},Binary.prototype.inspect=function(){return'new Binary(Buffer.from("'+this.value(!0).toString("hex")+'", "hex"), '+this.sub_type+")"},Binary.BSON_BINARY_SUBTYPE_DEFAULT=0,Binary.BUFFER_SIZE=256,Binary.SUBTYPE_DEFAULT=0,Binary.SUBTYPE_FUNCTION=1,Binary.SUBTYPE_BYTE_ARRAY=2,Binary.SUBTYPE_UUID_OLD=3,Binary.SUBTYPE_UUID=4,Binary.SUBTYPE_MD5=5,Binary.SUBTYPE_USER_DEFINED=128,Binary}();t.Binary=Binary,Object.defineProperty(Binary.prototype,"_bsontype",{value:"Binary"})}));r(Q),Q.Binary;var ee=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Code=void 0;var r=function(){function e(t,r){if(!(this instanceof e))return new e(t,r);this.code=t,this.scope=r}return e.prototype.toJSON=function(){return{code:this.code,scope:this.scope}},e.prototype.toExtendedJSON=function(){return this.scope?{$code:this.code,$scope:this.scope}:{$code:this.code}},e.fromExtendedJSON=function(t){return new e(t.$code,t.$scope)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){var e=this.toJSON();return'new Code("'+e.code+'"'+(e.scope?", "+JSON.stringify(e.scope):"")+")"},e}();t.Code=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Code"})}));r(ee),ee.Code;var te=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.DBRef=t.isDBRefLike=void 0,t.isDBRefLike=function(e){return X.isObjectLike(e)&&null!=e.$id&&null!=e.$ref};var r=function(){function e(t,r,n,i){if(!(this instanceof e))return new e(t,r,n,i);var o=t.split(".");2===o.length&&(n=o.shift(),t=o.shift()),this.collection=t,this.oid=r,this.db=n,this.fields=i||{}}return Object.defineProperty(e.prototype,"namespace",{get:function(){return this.collection},set:function(e){this.collection=e},enumerable:!1,configurable:!0}),e.prototype.toJSON=function(){var e=Object.assign({$ref:this.collection,$id:this.oid},this.fields);return null!=this.db&&(e.$db=this.db),e},e.prototype.toExtendedJSON=function(e){e=e||{};var t={$ref:this.collection,$id:this.oid};return e.legacy?t:(this.db&&(t.$db=this.db),t=Object.assign(t,this.fields))},e.fromExtendedJSON=function(t){var r=Object.assign({},t);return delete r.$ref,delete r.$id,delete r.$db,new e(t.$ref,t.$id,t.$db,r)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){var e=void 0===this.oid||void 0===this.oid.toString?this.oid:this.oid.toString();return'new DBRef("'+this.namespace+'", new ObjectId("'+e+'")'+(this.db?', "'+this.db+'"':"")+")"},e}();t.DBRef=r,Object.defineProperty(r.prototype,"_bsontype",{value:"DBRef"})}));r(te),te.DBRef,te.isDBRefLike;var re=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Long=void 0;var r=void 0;try{r=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}var n=4294967296,i=0x10000000000000000,o=i/2,u={},s={},f=function(){function e(t,r,n){if(void 0===t&&(t=0),void 0===r&&(r=0),!(this instanceof e))return new e(t,r,n);this.low=0|t,this.high=0|r,this.unsigned=!!n,Object.defineProperty(this,"__isLong__",{value:!0,configurable:!1,writable:!1,enumerable:!1})}return e.fromBits=function(t,r,n){return new e(t,r,n)},e.fromInt=function(t,r){var n,i,o;return r?(o=0<=(t>>>=0)&&t<256)&&(i=s[t])?i:(n=e.fromBits(t,(0|t)<0?-1:0,!0),o&&(s[t]=n),n):(o=-128<=(t|=0)&&t<128)&&(i=u[t])?i:(n=e.fromBits(t,t<0?-1:0,!1),o&&(u[t]=n),n)},e.fromNumber=function(t,r){if(isNaN(t))return r?e.UZERO:e.ZERO;if(r){if(t<0)return e.UZERO;if(t>=i)return e.MAX_UNSIGNED_VALUE}else{if(t<=-o)return e.MIN_VALUE;if(t+1>=o)return e.MAX_VALUE}return t<0?e.fromNumber(-t,r).neg():e.fromBits(t%n|0,t/n|0,r)},e.fromBigInt=function(t,r){return e.fromString(t.toString(),r)},e.fromString=function(t,r,n){if(0===t.length)throw Error("empty string");if("NaN"===t||"Infinity"===t||"+Infinity"===t||"-Infinity"===t)return e.ZERO;if("number"==typeof r?(n=r,r=!1):r=!!r,(n=n||10)<2||36<n)throw RangeError("radix");var i;if((i=t.indexOf("-"))>0)throw Error("interior hyphen");if(0===i)return e.fromString(t.substring(1),r,n).neg();for(var o=e.fromNumber(Math.pow(n,8)),u=e.ZERO,s=0;s<t.length;s+=8){var f=Math.min(8,t.length-s),a=parseInt(t.substring(s,s+f),n);if(f<8){var l=e.fromNumber(Math.pow(n,f));u=u.mul(l).add(e.fromNumber(a))}else u=(u=u.mul(o)).add(e.fromNumber(a))}return u.unsigned=r,u},e.fromBytes=function(t,r,n){return n?e.fromBytesLE(t,r):e.fromBytesBE(t,r)},e.fromBytesLE=function(t,r){return new e(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,r)},e.fromBytesBE=function(t,r){return new e(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],r)},e.isLong=function(e){return X.isObjectLike(e)&&!0===e.__isLong__},e.fromValue=function(t,r){return"number"==typeof t?e.fromNumber(t,r):"string"==typeof t?e.fromString(t,r):e.fromBits(t.low,t.high,"boolean"==typeof r?r:t.unsigned)},e.prototype.add=function(t){e.isLong(t)||(t=e.fromValue(t));var r=this.high>>>16,n=65535&this.high,i=this.low>>>16,o=65535&this.low,u=t.high>>>16,s=65535&t.high,f=t.low>>>16,a=0,l=0,c=0,h=0;return c+=(h+=o+(65535&t.low))>>>16,h&=65535,l+=(c+=i+f)>>>16,c&=65535,a+=(l+=n+s)>>>16,l&=65535,a+=r+u,a&=65535,e.fromBits(c<<16|h,a<<16|l,this.unsigned)},e.prototype.and=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low&t.low,this.high&t.high,this.unsigned)},e.prototype.compare=function(t){if(e.isLong(t)||(t=e.fromValue(t)),this.eq(t))return 0;var r=this.isNegative(),n=t.isNegative();return r&&!n?-1:!r&&n?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1},e.prototype.comp=function(e){return this.compare(e)},e.prototype.divide=function(t){if(e.isLong(t)||(t=e.fromValue(t)),t.isZero())throw Error("division by zero");if(r){if(!this.unsigned&&-2147483648===this.high&&-1===t.low&&-1===t.high)return this;var n=(this.unsigned?r.div_u:r.div_s)(this.low,this.high,t.low,t.high);return e.fromBits(n,r.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?e.UZERO:e.ZERO;var i,o,u;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return e.UZERO;if(t.gt(this.shru(1)))return e.UONE;u=e.UZERO}else{if(this.eq(e.MIN_VALUE))return t.eq(e.ONE)||t.eq(e.NEG_ONE)?e.MIN_VALUE:t.eq(e.MIN_VALUE)?e.ONE:(i=this.shr(1).div(t).shl(1)).eq(e.ZERO)?t.isNegative()?e.ONE:e.NEG_ONE:(o=this.sub(t.mul(i)),u=i.add(o.div(t)));if(t.eq(e.MIN_VALUE))return this.unsigned?e.UZERO:e.ZERO;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();u=e.ZERO}for(o=this;o.gte(t);){i=Math.max(1,Math.floor(o.toNumber()/t.toNumber()));for(var s=Math.ceil(Math.log(i)/Math.LN2),f=s<=48?1:Math.pow(2,s-48),a=e.fromNumber(i),l=a.mul(t);l.isNegative()||l.gt(o);)i-=f,l=(a=e.fromNumber(i,this.unsigned)).mul(t);a.isZero()&&(a=e.ONE),u=u.add(a),o=o.sub(l)}return u},e.prototype.div=function(e){return this.divide(e)},e.prototype.equals=function(t){return e.isLong(t)||(t=e.fromValue(t)),(this.unsigned===t.unsigned||this.high>>>31!=1||t.high>>>31!=1)&&(this.high===t.high&&this.low===t.low)},e.prototype.eq=function(e){return this.equals(e)},e.prototype.getHighBits=function(){return this.high},e.prototype.getHighBitsUnsigned=function(){return this.high>>>0},e.prototype.getLowBits=function(){return this.low},e.prototype.getLowBitsUnsigned=function(){return this.low>>>0},e.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.eq(e.MIN_VALUE)?64:this.neg().getNumBitsAbs();var t,r=0!==this.high?this.high:this.low;for(t=31;t>0&&0==(r&1<<t);t--);return 0!==this.high?t+33:t+1},e.prototype.greaterThan=function(e){return this.comp(e)>0},e.prototype.gt=function(e){return this.greaterThan(e)},e.prototype.greaterThanOrEqual=function(e){return this.comp(e)>=0},e.prototype.gte=function(e){return this.greaterThanOrEqual(e)},e.prototype.ge=function(e){return this.greaterThanOrEqual(e)},e.prototype.isEven=function(){return 0==(1&this.low)},e.prototype.isNegative=function(){return!this.unsigned&&this.high<0},e.prototype.isOdd=function(){return 1==(1&this.low)},e.prototype.isPositive=function(){return this.unsigned||this.high>=0},e.prototype.isZero=function(){return 0===this.high&&0===this.low},e.prototype.lessThan=function(e){return this.comp(e)<0},e.prototype.lt=function(e){return this.lessThan(e)},e.prototype.lessThanOrEqual=function(e){return this.comp(e)<=0},e.prototype.lte=function(e){return this.lessThanOrEqual(e)},e.prototype.modulo=function(t){if(e.isLong(t)||(t=e.fromValue(t)),r){var n=(this.unsigned?r.rem_u:r.rem_s)(this.low,this.high,t.low,t.high);return e.fromBits(n,r.get_high(),this.unsigned)}return this.sub(this.div(t).mul(t))},e.prototype.mod=function(e){return this.modulo(e)},e.prototype.rem=function(e){return this.modulo(e)},e.prototype.multiply=function(t){if(this.isZero())return e.ZERO;if(e.isLong(t)||(t=e.fromValue(t)),r){var n=r.mul(this.low,this.high,t.low,t.high);return e.fromBits(n,r.get_high(),this.unsigned)}if(t.isZero())return e.ZERO;if(this.eq(e.MIN_VALUE))return t.isOdd()?e.MIN_VALUE:e.ZERO;if(t.eq(e.MIN_VALUE))return this.isOdd()?e.MIN_VALUE:e.ZERO;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(e.TWO_PWR_24)&&t.lt(e.TWO_PWR_24))return e.fromNumber(this.toNumber()*t.toNumber(),this.unsigned);var i=this.high>>>16,o=65535&this.high,u=this.low>>>16,s=65535&this.low,f=t.high>>>16,a=65535&t.high,l=t.low>>>16,c=65535&t.low,h=0,p=0,d=0,y=0;return d+=(y+=s*c)>>>16,y&=65535,p+=(d+=u*c)>>>16,d&=65535,p+=(d+=s*l)>>>16,d&=65535,h+=(p+=o*c)>>>16,p&=65535,h+=(p+=u*l)>>>16,p&=65535,h+=(p+=s*a)>>>16,p&=65535,h+=i*c+o*l+u*a+s*f,h&=65535,e.fromBits(d<<16|y,h<<16|p,this.unsigned)},e.prototype.mul=function(e){return this.multiply(e)},e.prototype.negate=function(){return!this.unsigned&&this.eq(e.MIN_VALUE)?e.MIN_VALUE:this.not().add(e.ONE)},e.prototype.neg=function(){return this.negate()},e.prototype.not=function(){return e.fromBits(~this.low,~this.high,this.unsigned)},e.prototype.notEquals=function(e){return!this.equals(e)},e.prototype.neq=function(e){return this.notEquals(e)},e.prototype.ne=function(e){return this.notEquals(e)},e.prototype.or=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low|t.low,this.high|t.high,this.unsigned)},e.prototype.shiftLeft=function(t){return e.isLong(t)&&(t=t.toInt()),0==(t&=63)?this:t<32?e.fromBits(this.low<<t,this.high<<t|this.low>>>32-t,this.unsigned):e.fromBits(0,this.low<<t-32,this.unsigned)},e.prototype.shl=function(e){return this.shiftLeft(e)},e.prototype.shiftRight=function(t){return e.isLong(t)&&(t=t.toInt()),0==(t&=63)?this:t<32?e.fromBits(this.low>>>t|this.high<<32-t,this.high>>t,this.unsigned):e.fromBits(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},e.prototype.shr=function(e){return this.shiftRight(e)},e.prototype.shiftRightUnsigned=function(t){if(e.isLong(t)&&(t=t.toInt()),0===(t&=63))return this;var r=this.high;if(t<32){var n=this.low;return e.fromBits(n>>>t|r<<32-t,r>>>t,this.unsigned)}return 32===t?e.fromBits(r,0,this.unsigned):e.fromBits(r>>>t-32,0,this.unsigned)},e.prototype.shr_u=function(e){return this.shiftRightUnsigned(e)},e.prototype.shru=function(e){return this.shiftRightUnsigned(e)},e.prototype.subtract=function(t){return e.isLong(t)||(t=e.fromValue(t)),this.add(t.neg())},e.prototype.sub=function(e){return this.subtract(e)},e.prototype.toInt=function(){return this.unsigned?this.low>>>0:this.low},e.prototype.toNumber=function(){return this.unsigned?(this.high>>>0)*n+(this.low>>>0):this.high*n+(this.low>>>0)},e.prototype.toBigInt=function(){return BigInt(this.toString())},e.prototype.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},e.prototype.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},e.prototype.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},e.prototype.toSigned=function(){return this.unsigned?e.fromBits(this.low,this.high,!1):this},e.prototype.toString=function(t){if((t=t||10)<2||36<t)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(e.MIN_VALUE)){var r=e.fromNumber(t),n=this.div(r),i=n.mul(r).sub(this);return n.toString(t)+i.toInt().toString(t)}return"-"+this.neg().toString(t)}for(var o=e.fromNumber(Math.pow(t,6),this.unsigned),u=this,s="";;){var f=u.div(o),a=(u.sub(f.mul(o)).toInt()>>>0).toString(t);if((u=f).isZero())return a+s;for(;a.length<6;)a="0"+a;s=""+a+s}},e.prototype.toUnsigned=function(){return this.unsigned?this:e.fromBits(this.low,this.high,!0)},e.prototype.xor=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low^t.low,this.high^t.high,this.unsigned)},e.prototype.eqz=function(){return this.isZero()},e.prototype.le=function(e){return this.lessThanOrEqual(e)},e.prototype.toExtendedJSON=function(e){return e&&e.relaxed?this.toNumber():{$numberLong:this.toString()}},e.fromExtendedJSON=function(t,r){var n=e.fromString(t.$numberLong);return r&&r.relaxed?n.toNumber():n},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'new Long("'+this.toString()+'")'},e.TWO_PWR_24=e.fromInt(16777216),e.MAX_UNSIGNED_VALUE=e.fromBits(-1,-1,!0),e.ZERO=e.fromInt(0),e.UZERO=e.fromInt(0,!0),e.ONE=e.fromInt(1),e.UONE=e.fromInt(1,!0),e.NEG_ONE=e.fromInt(-1),e.MAX_VALUE=e.fromBits(-1,2147483647,!1),e.MIN_VALUE=e.fromBits(0,-2147483648,!1),e}();t.Long=f,Object.defineProperty(f.prototype,"__isLong__",{value:!0}),Object.defineProperty(f.prototype,"_bsontype",{value:"Long"})}));r(re),re.Long;var ne=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Decimal128=void 0;var r=/^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/,n=/^(\+|-)?(Infinity|inf)$/i,i=/^(\+|-)?NaN$/i,o=6111,u=-6176,s=[124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),f=[248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),a=[120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),l=/^([-+])?(\d+)?$/;function c(e){return!isNaN(parseInt(e,10))}function h(e){var t=re.Long.fromNumber(1e9),r=re.Long.fromNumber(0);if(!(e.parts[0]||e.parts[1]||e.parts[2]||e.parts[3]))return{quotient:e,rem:r};for(var n=0;n<=3;n++)r=(r=r.shiftLeft(32)).add(new re.Long(e.parts[n],0)),e.parts[n]=r.div(t).low,r=r.modulo(t);return{quotient:e,rem:r}}function p(e,t){throw new TypeError('"'+e+'" is not a valid Decimal128 string - '+t)}var d=function(){function e(t){if(!(this instanceof e))return new e(t);this.bytes=t}return e.fromString=function(t){var h,d=!1,y=!1,g=!1,_=0,B=0,O=0,m=0,S=0,N=[0],v=0,A=0,w=0,E=0,T=0,D=0,I=new re.Long(0,0),x=new re.Long(0,0),U=0;if(t.length>=7e3)throw new TypeError(t+" not a valid Decimal128 string");var R=t.match(r),L=t.match(n),j=t.match(i);if(!R&&!L&&!j||0===t.length)throw new TypeError(t+" not a valid Decimal128 string");if(R){var M=R[2],P=R[4],Y=R[5],C=R[6];P&&void 0===C&&p(t,"missing exponent power"),P&&void 0===M&&p(t,"missing exponent base"),void 0===P&&(Y||C)&&p(t,"missing e before exponent")}if("+"!==t[U]&&"-"!==t[U]||(d="-"===t[U++]),!c(t[U])&&"."!==t[U]){if("i"===t[U]||"I"===t[U])return new e(b.Buffer.from(d?f:a));if("N"===t[U])return new e(b.Buffer.from(s))}for(;c(t[U])||"."===t[U];)"."!==t[U]?(v<34&&("0"!==t[U]||g)&&(g||(S=B),g=!0,N[A++]=parseInt(t[U],10),v+=1),g&&(O+=1),y&&(m+=1),B+=1,U+=1):(y&&p(t,"contains multiple periods"),y=!0,U+=1);if(y&&!B)throw new TypeError(t+" not a valid Decimal128 string");if("e"===t[U]||"E"===t[U]){var z=t.substr(++U).match(l);if(!z||!z[2])return new e(b.Buffer.from(s));T=parseInt(z[0],10),U+=z[0].length}if(t[U])return new e(b.Buffer.from(s));if(w=0,v){if(E=v-1,1!==(_=O))for(;"0"===t[S+_-1];)_-=1}else w=0,E=0,N[0]=0,O=1,v=1,_=0;for(T<=m&&m-T>16384?T=u:T-=m;T>o;){if((E+=1)-w>34){if(N.join("").match(/^0+$/)){T=o;break}p(t,"overflow")}T-=1}for(;T<u||v<O;){if(0===E&&_<v){T=u,_=0;break}if(v<O?O-=1:E-=1,T<o)T+=1;else{if(N.join("").match(/^0+$/)){T=o;break}p(t,"overflow")}}if(E-w+1<_){var $=B;y&&(S+=1,$+=1),d&&(S+=1,$+=1);var k=parseInt(t[S+E+1],10),J=0;if(k>=5&&(J=1,5===k))for(J=N[E]%2==1?1:0,D=S+E+2;D<$;D++)if(parseInt(t[D],10)){J=1;break}if(J)for(var q=E;q>=0;q--)if(++N[q]>9&&(N[q]=0,0===q)){if(!(T<o))return new e(b.Buffer.from(d?f:a));T+=1,N[q]=1}}if(I=re.Long.fromNumber(0),x=re.Long.fromNumber(0),0===_)I=re.Long.fromNumber(0),x=re.Long.fromNumber(0);else if(E-w<17){q=w;for(x=re.Long.fromNumber(N[q++]),I=new re.Long(0,0);q<=E;q++)x=(x=x.multiply(re.Long.fromNumber(10))).add(re.Long.fromNumber(N[q]))}else{q=w;for(I=re.Long.fromNumber(N[q++]);q<=E-17;q++)I=(I=I.multiply(re.Long.fromNumber(10))).add(re.Long.fromNumber(N[q]));for(x=re.Long.fromNumber(N[q++]);q<=E;q++)x=(x=x.multiply(re.Long.fromNumber(10))).add(re.Long.fromNumber(N[q]))}var F,V,K,H,X=function(e,t){if(!e&&!t)return{high:re.Long.fromNumber(0),low:re.Long.fromNumber(0)};var r=e.shiftRightUnsigned(32),n=new re.Long(e.getLowBits(),0),i=t.shiftRightUnsigned(32),o=new re.Long(t.getLowBits(),0),u=r.multiply(i),s=r.multiply(o),f=n.multiply(i),a=n.multiply(o);return u=u.add(s.shiftRightUnsigned(32)),s=new re.Long(s.getLowBits(),0).add(f).add(a.shiftRightUnsigned(32)),{high:u=u.add(s.shiftRightUnsigned(32)),low:a=s.shiftLeft(32).add(new re.Long(a.getLowBits(),0))}}(I,re.Long.fromString("100000000000000000"));X.low=X.low.add(x),F=X.low,V=x,K=F.high>>>0,H=V.high>>>0,(K<H||K===H&&F.low>>>0<V.low>>>0)&&(X.high=X.high.add(re.Long.fromNumber(1))),h=T+6176;var W={low:re.Long.fromNumber(0),high:re.Long.fromNumber(0)};X.high.shiftRightUnsigned(49).and(re.Long.fromNumber(1)).equals(re.Long.fromNumber(1))?(W.high=W.high.or(re.Long.fromNumber(3).shiftLeft(61)),W.high=W.high.or(re.Long.fromNumber(h).and(re.Long.fromNumber(16383).shiftLeft(47))),W.high=W.high.or(X.high.and(re.Long.fromNumber(0x7fffffffffff)))):(W.high=W.high.or(re.Long.fromNumber(16383&h).shiftLeft(49)),W.high=W.high.or(X.high.and(re.Long.fromNumber(562949953421311)))),W.low=X.low,d&&(W.high=W.high.or(re.Long.fromString("9223372036854775808")));var G=b.Buffer.alloc(16);return U=0,G[U++]=255&W.low.low,G[U++]=W.low.low>>8&255,G[U++]=W.low.low>>16&255,G[U++]=W.low.low>>24&255,G[U++]=255&W.low.high,G[U++]=W.low.high>>8&255,G[U++]=W.low.high>>16&255,G[U++]=W.low.high>>24&255,G[U++]=255&W.high.low,G[U++]=W.high.low>>8&255,G[U++]=W.high.low>>16&255,G[U++]=W.high.low>>24&255,G[U++]=255&W.high.high,G[U++]=W.high.high>>8&255,G[U++]=W.high.high>>16&255,G[U++]=W.high.high>>24&255,new e(G)},e.prototype.toString=function(){for(var e,t=0,r=new Array(36),n=0;n<r.length;n++)r[n]=0;var i,o,u,s=0,f=!1,a={parts:[0,0,0,0]},l=[];s=0;var c=this.bytes,p=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24,d=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24,y=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24,g=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24;s=0,{low:new re.Long(p,d),high:new re.Long(y,g)}.high.lessThan(re.Long.ZERO)&&l.push("-");var _=g>>26&31;if(_>>3==3){if(30===_)return l.join("")+"Infinity";if(31===_)return"NaN";e=g>>15&16383,i=8+(g>>14&1)}else i=g>>14&7,e=g>>17&16383;var b=e-6176;if(a.parts[0]=(16383&g)+((15&i)<<14),a.parts[1]=y,a.parts[2]=d,a.parts[3]=p,0===a.parts[0]&&0===a.parts[1]&&0===a.parts[2]&&0===a.parts[3])f=!0;else for(u=3;u>=0;u--){var B=0,O=h(a);if(a=O.quotient,B=O.rem.low)for(o=8;o>=0;o--)r[9*u+o]=B%10,B=Math.floor(B/10)}if(f)t=1,r[s]=0;else for(t=36;!r[s];)t-=1,s+=1;var m=t-1+b;if(m>=34||m<=-7||b>0){if(t>34)return l.push("0"),b>0?l.push("E+"+b):b<0&&l.push("E"+b),l.join("");l.push(""+r[s++]),(t-=1)&&l.push(".");for(n=0;n<t;n++)l.push(""+r[s++]);l.push("E"),m>0?l.push("+"+m):l.push(""+m)}else if(b>=0)for(n=0;n<t;n++)l.push(""+r[s++]);else{var S=t+b;if(S>0)for(n=0;n<S;n++)l.push(""+r[s++]);else l.push("0");for(l.push(".");S++<0;)l.push("0");for(n=0;n<t-Math.max(S-1,0);n++)l.push(""+r[s++])}return l.join("")},e.prototype.toJSON=function(){return{$numberDecimal:this.toString()}},e.prototype.toExtendedJSON=function(){return{$numberDecimal:this.toString()}},e.fromExtendedJSON=function(t){return e.fromString(t.$numberDecimal)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'Decimal128.fromString("'+this.toString()+'")'},e}();t.Decimal128=d,Object.defineProperty(d.prototype,"_bsontype",{value:"Decimal128"})}));r(ne),ne.Decimal128;var ie=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Double=void 0;var r=function(){function e(t){if(!(this instanceof e))return new e(t);t instanceof Number&&(t=t.valueOf()),this.value=+t}return e.prototype.valueOf=function(){return this.value},e.prototype.toJSON=function(){return this.value},e.prototype.toExtendedJSON=function(e){return e&&(e.legacy||e.relaxed&&isFinite(this.value))?this.value:Object.is(Math.sign(this.value),-0)?{$numberDouble:"-"+this.value.toFixed(1)}:(Number.isInteger(this.value)?(t=this.value.toFixed(1)).length>=13&&(t=this.value.toExponential(13).toUpperCase()):t=this.value.toString(),{$numberDouble:t});var t},e.fromExtendedJSON=function(t,r){var n=parseFloat(t.$numberDouble);return r&&r.relaxed?n:new e(n)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new Double("+this.toExtendedJSON().$numberDouble+")"},e}();t.Double=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Double"})}));r(ie),ie.Double;var oe=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Int32=void 0;var r=function(){function e(t){if(!(this instanceof e))return new e(t);t instanceof Number&&(t=t.valueOf()),this.value=+t}return e.prototype.valueOf=function(){return this.value},e.prototype.toJSON=function(){return this.value},e.prototype.toExtendedJSON=function(e){return e&&(e.relaxed||e.legacy)?this.value:{$numberInt:this.value.toString()}},e.fromExtendedJSON=function(t,r){return r&&r.relaxed?parseInt(t.$numberInt,10):new e(t.$numberInt)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new Int32("+this.valueOf()+")"},e}();t.Int32=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Int32"})}));r(oe),oe.Int32;var ue=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MaxKey=void 0;var r=function(){function e(){if(!(this instanceof e))return new e}return e.prototype.toExtendedJSON=function(){return{$maxKey:1}},e.fromExtendedJSON=function(){return new e},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new MaxKey()"},e}();t.MaxKey=r,Object.defineProperty(r.prototype,"_bsontype",{value:"MaxKey"})}));r(ue),ue.MaxKey;var se=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MinKey=void 0;var r=function(){function e(){if(!(this instanceof e))return new e}return e.prototype.toExtendedJSON=function(){return{$minKey:1}},e.fromExtendedJSON=function(){return new e},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new MinKey()"},e}();t.MinKey=r,Object.defineProperty(r.prototype,"_bsontype",{value:"MinKey"})}));r(se),se.MinKey;var fe=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ObjectId=void 0;for(var r=X.randomBytes(5),n=new RegExp("^[0-9a-fA-F]{24}$"),i=[],o=0;o<256;o++)i[o]=(o<=15?"0":"")+o.toString(16);for(var u=[],s=0;s<10;)u[48+s]=s++;for(;s<16;)u[55+s]=u[87+s]=s++;var f=Symbol("id"),a=function(){function e(t){if(!(this instanceof e))return new e(t);if(t instanceof e&&(this[f]=t.id,this.__id=t.__id),"object"==typeof t&&t&&"id"in t&&("toHexString"in t&&"function"==typeof t.toHexString?this[f]=b.Buffer.from(t.toHexString(),"hex"):this[f]="string"==typeof t.id?b.Buffer.from(t.id):t.id),null!=t&&"number"!=typeof t||(this[f]=e.generate("number"==typeof t?t:void 0),e.cacheHexString&&(this.__id=this.id.toString("hex"))),ArrayBuffer.isView(t)&&12===t.byteLength&&(this[f]=W.ensureBuffer(t)),"string"==typeof t)if(12===t.length){var r=b.Buffer.from(t);12===r.byteLength&&(this[f]=r)}else{if(24!==t.length||!n.test(t))throw new TypeError("Argument passed in must be a Buffer or string of 12 bytes or a string of 24 hex characters");this[f]=b.Buffer.from(t,"hex")}e.cacheHexString&&(this.__id=this.id.toString("hex"))}return Object.defineProperty(e.prototype,"id",{get:function(){return this[f]},set:function(t){this[f]=t,e.cacheHexString&&(this.__id=t.toString("hex"))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"generationTime",{get:function(){return this.id.readInt32BE(0)},set:function(e){this.id.writeUInt32BE(e,0)},enumerable:!1,configurable:!0}),e.prototype.toHexString=function(){if(e.cacheHexString&&this.__id)return this.__id;var t=this.id.toString("hex");return e.cacheHexString&&!this.__id&&(this.__id=t),t},e.getInc=function(){return e.index=(e.index+1)%16777215},e.generate=function(t){"number"!=typeof t&&(t=~~(Date.now()/1e3));var n=e.getInc(),i=b.Buffer.alloc(12);return i.writeUInt32BE(t,0),i[4]=r[0],i[5]=r[1],i[6]=r[2],i[7]=r[3],i[8]=r[4],i[11]=255&n,i[10]=n>>8&255,i[9]=n>>16&255,i},e.prototype.toString=function(e){return e?this.id.toString(e):this.toHexString()},e.prototype.toJSON=function(){return this.toHexString()},e.prototype.equals=function(t){return null!=t&&(t instanceof e?this.toString()===t.toString():"string"==typeof t&&e.isValid(t)&&12===t.length&&b.Buffer.isBuffer(this.id)?t===this.id.toString("binary"):"string"==typeof t&&e.isValid(t)&&24===t.length?t.toLowerCase()===this.toHexString():"string"==typeof t&&e.isValid(t)&&12===t.length?b.Buffer.from(t).equals(this.id):"object"==typeof t&&"toHexString"in t&&"function"==typeof t.toHexString&&t.toHexString()===this.toHexString())},e.prototype.getTimestamp=function(){var e=new Date,t=this.id.readUInt32BE(0);return e.setTime(1e3*Math.floor(t)),e},e.createPk=function(){return new e},e.createFromTime=function(t){var r=b.Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0]);return r.writeUInt32BE(t,0),new e(r)},e.createFromHexString=function(t){if(void 0===t||null!=t&&24!==t.length)throw new TypeError("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters");return new e(b.Buffer.from(t,"hex"))},e.isValid=function(t){return null!=t&&("number"==typeof t||("string"==typeof t?12===t.length||24===t.length&&n.test(t):t instanceof e||(!(!b.Buffer.isBuffer(t)||12!==t.length)||"object"==typeof t&&"toHexString"in t&&"function"==typeof t.toHexString&&("string"==typeof t.id?12===t.id.length:24===t.toHexString().length&&n.test(t.id.toString("hex"))))))},e.prototype.toExtendedJSON=function(){return this.toHexString?{$oid:this.toHexString()}:{$oid:this.toString("hex")}},e.fromExtendedJSON=function(t){return new e(t.$oid)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'new ObjectId("'+this.toHexString()+'")'},e.index=~~(16777215*Math.random()),e}();t.ObjectId=a,Object.defineProperty(a.prototype,"generate",{value:X.deprecate((function(e){return a.generate(e)}),"Please use the static `ObjectId.generate(time)` instead")}),Object.defineProperty(a.prototype,"getInc",{value:X.deprecate((function(){return a.getInc()}),"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(a.prototype,"get_inc",{value:X.deprecate((function(){return a.getInc()}),"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(a,"get_inc",{value:X.deprecate((function(){return a.getInc()}),"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(a.prototype,"_bsontype",{value:"ObjectID"})}));r(fe),fe.ObjectId;var ae=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BSONRegExp=void 0;var r=function(){function e(t,r){if(!(this instanceof e))return new e(t,r);this.pattern=t,this.options=null!=r?r:"",this.options.split("").sort().join("");for(var n=0;n<this.options.length;n++)if("i"!==this.options[n]&&"m"!==this.options[n]&&"x"!==this.options[n]&&"l"!==this.options[n]&&"s"!==this.options[n]&&"u"!==this.options[n])throw new Error("The regular expression option ["+this.options[n]+"] is not supported")}return e.parseOptions=function(e){return e?e.split("").sort().join(""):""},e.prototype.toExtendedJSON=function(e){return(e=e||{}).legacy?{$regex:this.pattern,$options:this.options}:{$regularExpression:{pattern:this.pattern,options:this.options}}},e.fromExtendedJSON=function(t){if("$regex"in t){if("string"==typeof t.$regex)return new e(t.$regex,e.parseOptions(t.$options));if("BSONRegExp"===t.$regex._bsontype)return t}if("$regularExpression"in t)return new e(t.$regularExpression.pattern,e.parseOptions(t.$regularExpression.options));throw new TypeError("Unexpected BSONRegExp EJSON object form: "+JSON.stringify(t))},e}();t.BSONRegExp=r,Object.defineProperty(r.prototype,"_bsontype",{value:"BSONRegExp"})}));r(ae),ae.BSONRegExp;var le=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BSONSymbol=void 0;var r=function(){function e(t){if(!(this instanceof e))return new e(t);this.value=t}return e.prototype.valueOf=function(){return this.value},e.prototype.toString=function(){return this.value},e.prototype.inspect=function(){return'new BSONSymbol("'+this.value+'")'},e.prototype.toJSON=function(){return this.value},e.prototype.toExtendedJSON=function(){return{$symbol:this.value}},e.fromExtendedJSON=function(t){return new e(t.$symbol)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e}();t.BSONSymbol=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Symbol"})}));r(le),le.BSONSymbol;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var ce=function(e,t){return ce=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},ce(e,t)};var he=function(){return he=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},he.apply(this,arguments)};function pe(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function de(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),u=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)u.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return u}function ye(e){return this instanceof ye?(this.v=e,this):new ye(e)}var ge=Object.freeze({__proto__:null,__extends:function(e,t){function r(){this.constructor=e}ce(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},get __assign(){return he},__rest:function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r},__decorate:function(e,t,r,n){var i,o=arguments.length,u=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"===("undefined"==typeof Reflect?"undefined":babelHelpers.typeof(Reflect))&&"function"==typeof Reflect.decorate)u=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(u=(o<3?i(u):o>3?i(t,r,u):i(t,r))||u);return o>3&&u&&Object.defineProperty(t,r,u),u},__param:function(e,t){return function(r,n){t(r,n,e)}},__metadata:function(e,t){if("object"===("undefined"==typeof Reflect?"undefined":babelHelpers.typeof(Reflect))&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__awaiter:function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function u(e){try{f(n.next(e))}catch(e){o(e)}}function s(e){try{f(n.throw(e))}catch(e){o(e)}}function f(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(u,s)}f((n=n.apply(e,t||[])).next())}))},__generator:function(e,t){var r,n,i,o,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;u;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return u.label++,{value:o[1],done:!1};case 5:u.label++,n=o[1],o=[0];continue;case 7:o=u.ops.pop(),u.trys.pop();continue;default:if(!(i=u.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){u=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){u.label=o[1];break}if(6===o[0]&&u.label<i[1]){u.label=i[1],i=o;break}if(i&&u.label<i[2]){u.label=i[2],u.ops.push(o);break}i[2]&&u.ops.pop(),u.trys.pop();continue}o=t.call(e,u)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}},__createBinding:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]},__exportStar:function(e,t){for(var r in e)"default"===r||t.hasOwnProperty(r)||(t[r]=e[r])},__values:pe,__read:de,__spread:function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(de(arguments[t]));return e},__spreadArrays:function(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),i=0;for(t=0;t<r;t++)for(var o=arguments[t],u=0,s=o.length;u<s;u++,i++)n[i]=o[u];return n},__await:ye,__asyncGenerator:function(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,i=r.apply(e,t||[]),o=[];return n={},u("next"),u("throw"),u("return"),n[Symbol.asyncIterator]=function(){return this},n;function u(e){i[e]&&(n[e]=function(t){return new Promise((function(r,n){o.push([e,t,r,n])>1||s(e,t)}))})}function s(e,t){try{(r=i[e](t)).value instanceof ye?Promise.resolve(r.value.v).then(f,a):l(o[0][2],r)}catch(e){l(o[0][3],e)}var r}function f(e){s("next",e)}function a(e){s("throw",e)}function l(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}},__asyncDelegator:function(e){var t,r;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,i){t[n]=e[n]?function(t){return(r=!r)?{value:ye(e[n](t)),done:"return"===n}:i?i(t):t}:i}},__asyncValues:function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=pe(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,i){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,i,(t=e[r](t)).done,t.value)}))}}},__makeTemplateObject:function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},__importStar:function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t},__importDefault:function(e){return e&&e.__esModule?e:{default:e}},__classPrivateFieldGet:function(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)},__classPrivateFieldSet:function(e,t,r){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,r),r}}),_e=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Timestamp=t.LongWithoutOverridesClass=void 0,t.LongWithoutOverridesClass=re.Long;var r=function(e){function t(r,n){var i=this;return i instanceof t?(i=re.Long.isLong(r)?e.call(this,r.low,r.high,!0)||this:e.call(this,r,n,!0)||this,Object.defineProperty(i,"_bsontype",{value:"Timestamp",writable:!1,configurable:!1,enumerable:!1}),i):new t(r,n)}return ge.__extends(t,e),t.prototype.toJSON=function(){return{$timestamp:this.toString()}},t.fromInt=function(e){return new t(re.Long.fromInt(e,!0))},t.fromNumber=function(e){return new t(re.Long.fromNumber(e,!0))},t.fromBits=function(e,r){return new t(e,r)},t.fromString=function(e,r){return new t(re.Long.fromString(e,!0,r))},t.prototype.toExtendedJSON=function(){return{$timestamp:{t:this.high>>>0,i:this.low>>>0}}},t.fromExtendedJSON=function(e){return new t(e.$timestamp.i,e.$timestamp.t)},t.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},t.prototype.inspect=function(){return"new Timestamp("+this.getLowBits().toString()+", "+this.getHighBits().toString()+")"},t.MAX_VALUE=re.Long.MAX_UNSIGNED_VALUE,t}(t.LongWithoutOverridesClass);t.Timestamp=r}));r(_e),_e.Timestamp,_e.LongWithoutOverridesClass;var be=n((function(e,t){function r(e){return X.isObjectLike(e)&&Reflect.has(e,"_bsontype")&&"string"==typeof e._bsontype}Object.defineProperty(t,"__esModule",{value:!0}),t.EJSON=t.isBSONType=void 0,t.isBSONType=r;var n=2147483647,i=-2147483648,o=0x8000000000000000,u=-0x8000000000000000,s={$oid:fe.ObjectId,$binary:Q.Binary,$uuid:Q.Binary,$symbol:le.BSONSymbol,$numberInt:oe.Int32,$numberDecimal:ne.Decimal128,$numberDouble:ie.Double,$numberLong:re.Long,$minKey:se.MinKey,$maxKey:ue.MaxKey,$regex:ae.BSONRegExp,$regularExpression:ae.BSONRegExp,$timestamp:_e.Timestamp};function f(e,t){if(void 0===t&&(t={}),"number"==typeof e){if(t.relaxed||t.legacy)return e;if(Math.floor(e)===e){if(e>=i&&e<=n)return new oe.Int32(e);if(e>=u&&e<=o)return re.Long.fromNumber(e)}return new ie.Double(e)}if(null==e||"object"!=typeof e)return e;if(e.$undefined)return null;for(var r=Object.keys(e).filter((function(t){return t.startsWith("$")&&null!=e[t]})),a=0;a<r.length;a++){var l=s[r[a]];if(l)return l.fromExtendedJSON(e,t)}if(null!=e.$date){var c=e.$date,h=new Date;return t.legacy?"number"==typeof c?h.setTime(c):"string"==typeof c&&h.setTime(Date.parse(c)):"string"==typeof c?h.setTime(Date.parse(c)):re.Long.isLong(c)?h.setTime(c.toNumber()):"number"==typeof c&&t.relaxed&&h.setTime(c),h}if(null!=e.$code){var p=Object.assign({},e);return e.$scope&&(p.$scope=f(e.$scope)),ee.Code.fromExtendedJSON(e)}if(null!=e.$ref||null!=e.$dbPointer){var d=e.$ref?e:e.$dbPointer;if(d instanceof te.DBRef)return d;var y=Object.keys(d).filter((function(e){return e.startsWith("$")})),g=!0;if(y.forEach((function(e){-1===["$ref","$id","$db"].indexOf(e)&&(g=!1)})),g)return te.DBRef.fromExtendedJSON(d)}return e}function a(e){var t=e.toISOString();return 0!==e.getUTCMilliseconds()?t:t.slice(0,-5)+"Z"}function l(e,t){if(Array.isArray(e))return function(e,t){return e.map((function(e){return l(e,t)}))}(e,t);if(void 0===e)return null;if(e instanceof Date){var s=e.getTime(),f=s>-1&&s<2534023188e5;return t.legacy?t.relaxed&&f?{$date:e.getTime()}:{$date:a(e)}:t.relaxed&&f?{$date:a(e)}:{$date:{$numberLong:e.getTime().toString()}}}if("number"==typeof e&&!t.relaxed){if(Math.floor(e)===e){var h=e>=u&&e<=o;if(e>=i&&e<=n)return{$numberInt:e.toString()};if(h)return{$numberLong:e.toString()}}return{$numberDouble:e.toString()}}if(e instanceof RegExp){var p=e.flags;if(void 0===p){var d=e.toString().match(/[gimuy]*$/);d&&(p=d[0])}return new ae.BSONRegExp(e.source,p).toExtendedJSON(t)}return null!=e&&"object"==typeof e?function(e,t){if(null==e||"object"!=typeof e)throw new Error("not an object instance");var n=e._bsontype;if(void 0===n){var i={};for(var o in e)i[o]=l(e[o],t);return i}if(r(e)){var u=e;if("function"!=typeof u.toExtendedJSON){var s=c[e._bsontype];if(!s)throw new TypeError("Unrecognized or invalid _bsontype: "+e._bsontype);u=s(u)}return"Code"===n&&u.scope?u=new ee.Code(u.code,l(u.scope,t)):"DBRef"===n&&u.oid&&(u=new te.DBRef(u.collection,l(u.oid,t),u.db,u.fields)),u.toExtendedJSON(t)}throw new Error("_bsontype must be a string, but was: "+typeof n)}(e,t):e}var c={Binary:function(e){return new Q.Binary(e.value(),e.sub_type)},Code:function(e){return new ee.Code(e.code,e.scope)},DBRef:function(e){return new te.DBRef(e.collection||e.namespace,e.oid,e.db,e.fields)},Decimal128:function(e){return new ne.Decimal128(e.bytes)},Double:function(e){return new ie.Double(e.value)},Int32:function(e){return new oe.Int32(e.value)},Long:function(e){return re.Long.fromBits(null!=e.low?e.low:e.low_,null!=e.low?e.high:e.high_,null!=e.low?e.unsigned:e.unsigned_)},MaxKey:function(){return new ue.MaxKey},MinKey:function(){return new se.MinKey},ObjectID:function(e){return new fe.ObjectId(e)},ObjectId:function(e){return new fe.ObjectId(e)},BSONRegExp:function(e){return new ae.BSONRegExp(e.pattern,e.options)},Symbol:function(e){return new le.BSONSymbol(e.value)},Timestamp:function(e){return _e.Timestamp.fromBits(e.low,e.high)}};!function(e){function t(e,t){var r=Object.assign({},{relaxed:!0,legacy:!1},t);return"boolean"==typeof r.relaxed&&(r.strict=!r.relaxed),"boolean"==typeof r.strict&&(r.relaxed=!r.strict),JSON.parse(e,(function(e,t){return f(t,r)}))}function r(e,t,r,n){null!=r&&"object"==typeof r&&(n=r,r=0),null==t||"object"!=typeof t||Array.isArray(t)||(n=t,t=void 0,r=0);var i=l(e,n=Object.assign({},{relaxed:!0,legacy:!1},n));return JSON.stringify(i,t,r)}e.parse=t,e.stringify=r,e.serialize=function(e,t){return t=t||{},JSON.parse(r(e,t))},e.deserialize=function(e,r){return r=r||{},t(JSON.stringify(e),r)}}(t.EJSON||(t.EJSON={}))}));r(be),be.EJSON,be.isBSONType;var Be=n((function(e,r){var n;Object.defineProperty(r,"__esModule",{value:!0}),r.Map=void 0,r.Map=n;var i=function(e){return e&&e.Math==Math&&e};var o=i("object"==typeof globalThis&&globalThis)||i("object"==typeof window&&window)||i("object"==typeof self&&self)||i("object"==typeof t&&t)||Function("return this")();Object.prototype.hasOwnProperty.call(o,"Map")?r.Map=n=o.Map:r.Map=n=function(){function e(e){void 0===e&&(e=[]),this._keys=[],this._values={};for(var t=0;t<e.length;t++)if(null!=e[t]){var r=e[t],n=r[0],i=r[1];this._keys.push(n),this._values[n]={v:i,i:this._keys.length-1}}}return e.prototype.clear=function(){this._keys=[],this._values={}},e.prototype.delete=function(e){var t=this._values[e];return null!=t&&(delete this._values[e],this._keys.splice(t.i,1),!0)},e.prototype.entries=function(){var e=this,t=0;return{next:function(){var r=e._keys[t++];return{value:void 0!==r?[r,e._values[r].v]:void 0,done:void 0===r}}}},e.prototype.forEach=function(e,t){t=t||this;for(var r=0;r<this._keys.length;r++){var n=this._keys[r];e.call(t,this._values[n].v,n,t)}},e.prototype.get=function(e){return this._values[e]?this._values[e].v:void 0},e.prototype.has=function(e){return null!=this._values[e]},e.prototype.keys=function(){var e=this,t=0;return{next:function(){var r=e._keys[t++];return{value:void 0!==r?r:void 0,done:void 0===r}}}},e.prototype.set=function(e,t){return this._values[e]?(this._values[e].v=t,this):(this._keys.push(e),this._values[e]={v:t,i:this._keys.length-1},this)},e.prototype.values=function(){var e=this,t=0;return{next:function(){var r=e._keys[t++];return{value:void 0!==r?e._values[r].v:void 0,done:void 0===r}}}},Object.defineProperty(e.prototype,"size",{get:function(){return this._keys.length},enumerable:!1,configurable:!0}),e}()}));r(Be),Be.Map;var Oe=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BSON_BINARY_SUBTYPE_USER_DEFINED=t.BSON_BINARY_SUBTYPE_MD5=t.BSON_BINARY_SUBTYPE_UUID_NEW=t.BSON_BINARY_SUBTYPE_UUID=t.BSON_BINARY_SUBTYPE_BYTE_ARRAY=t.BSON_BINARY_SUBTYPE_FUNCTION=t.BSON_BINARY_SUBTYPE_DEFAULT=t.BSON_DATA_MAX_KEY=t.BSON_DATA_MIN_KEY=t.BSON_DATA_DECIMAL128=t.BSON_DATA_LONG=t.BSON_DATA_TIMESTAMP=t.BSON_DATA_INT=t.BSON_DATA_CODE_W_SCOPE=t.BSON_DATA_SYMBOL=t.BSON_DATA_CODE=t.BSON_DATA_DBPOINTER=t.BSON_DATA_REGEXP=t.BSON_DATA_NULL=t.BSON_DATA_DATE=t.BSON_DATA_BOOLEAN=t.BSON_DATA_OID=t.BSON_DATA_UNDEFINED=t.BSON_DATA_BINARY=t.BSON_DATA_ARRAY=t.BSON_DATA_OBJECT=t.BSON_DATA_STRING=t.BSON_DATA_NUMBER=t.JS_INT_MIN=t.JS_INT_MAX=t.BSON_INT64_MIN=t.BSON_INT64_MAX=t.BSON_INT32_MIN=t.BSON_INT32_MAX=void 0,t.BSON_INT32_MAX=2147483647,t.BSON_INT32_MIN=-2147483648,t.BSON_INT64_MAX=Math.pow(2,63)-1,t.BSON_INT64_MIN=-Math.pow(2,63),t.JS_INT_MAX=Math.pow(2,53),t.JS_INT_MIN=-Math.pow(2,53),t.BSON_DATA_NUMBER=1,t.BSON_DATA_STRING=2,t.BSON_DATA_OBJECT=3,t.BSON_DATA_ARRAY=4,t.BSON_DATA_BINARY=5,t.BSON_DATA_UNDEFINED=6,t.BSON_DATA_OID=7,t.BSON_DATA_BOOLEAN=8,t.BSON_DATA_DATE=9,t.BSON_DATA_NULL=10,t.BSON_DATA_REGEXP=11,t.BSON_DATA_DBPOINTER=12,t.BSON_DATA_CODE=13,t.BSON_DATA_SYMBOL=14,t.BSON_DATA_CODE_W_SCOPE=15,t.BSON_DATA_INT=16,t.BSON_DATA_TIMESTAMP=17,t.BSON_DATA_LONG=18,t.BSON_DATA_DECIMAL128=19,t.BSON_DATA_MIN_KEY=255,t.BSON_DATA_MAX_KEY=127,t.BSON_BINARY_SUBTYPE_DEFAULT=0,t.BSON_BINARY_SUBTYPE_FUNCTION=1,t.BSON_BINARY_SUBTYPE_BYTE_ARRAY=2,t.BSON_BINARY_SUBTYPE_UUID=3,t.BSON_BINARY_SUBTYPE_UUID_NEW=4,t.BSON_BINARY_SUBTYPE_MD5=5,t.BSON_BINARY_SUBTYPE_USER_DEFINED=128}));r(Oe),Oe.BSON_BINARY_SUBTYPE_USER_DEFINED,Oe.BSON_BINARY_SUBTYPE_MD5,Oe.BSON_BINARY_SUBTYPE_UUID_NEW,Oe.BSON_BINARY_SUBTYPE_UUID,Oe.BSON_BINARY_SUBTYPE_BYTE_ARRAY,Oe.BSON_BINARY_SUBTYPE_FUNCTION,Oe.BSON_BINARY_SUBTYPE_DEFAULT,Oe.BSON_DATA_MAX_KEY,Oe.BSON_DATA_MIN_KEY,Oe.BSON_DATA_DECIMAL128,Oe.BSON_DATA_LONG,Oe.BSON_DATA_TIMESTAMP,Oe.BSON_DATA_INT,Oe.BSON_DATA_CODE_W_SCOPE,Oe.BSON_DATA_SYMBOL,Oe.BSON_DATA_CODE,Oe.BSON_DATA_DBPOINTER,Oe.BSON_DATA_REGEXP,Oe.BSON_DATA_NULL,Oe.BSON_DATA_DATE,Oe.BSON_DATA_BOOLEAN,Oe.BSON_DATA_OID,Oe.BSON_DATA_UNDEFINED,Oe.BSON_DATA_BINARY,Oe.BSON_DATA_ARRAY,Oe.BSON_DATA_OBJECT,Oe.BSON_DATA_STRING,Oe.BSON_DATA_NUMBER,Oe.JS_INT_MIN,Oe.JS_INT_MAX,Oe.BSON_INT64_MIN,Oe.BSON_INT64_MAX,Oe.BSON_INT32_MIN,Oe.BSON_INT32_MAX;var me=n((function(e,t){function r(e,t,r){var i=5;if(Array.isArray(e))for(var o=0;o<e.length;o++)i+=n(o.toString(),e[o],t,!0,r);else for(var u in e.toBSON&&(e=e.toBSON()),e)i+=n(u,e[u],t,!1,r);return i}function n(e,t,n,i,o){switch(void 0===n&&(n=!1),void 0===i&&(i=!1),void 0===o&&(o=!1),t&&t.toBSON&&(t=t.toBSON()),typeof t){case"string":return 1+b.Buffer.byteLength(e,"utf8")+1+4+b.Buffer.byteLength(t,"utf8")+1;case"number":return Math.floor(t)===t&&t>=Oe.JS_INT_MIN&&t<=Oe.JS_INT_MAX&&t>=Oe.BSON_INT32_MIN&&t<=Oe.BSON_INT32_MAX?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+5:(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+9;case"undefined":return i||!o?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1:0;case"boolean":return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+2;case"object":if(null==t||"MinKey"===t._bsontype||"MaxKey"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1;if("ObjectId"===t._bsontype||"ObjectID"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+13;if(t instanceof Date||X.isDate(t))return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+9;if(ArrayBuffer.isView(t)||t instanceof ArrayBuffer)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+6+t.byteLength;if("Long"===t._bsontype||"Double"===t._bsontype||"Timestamp"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+9;if("Decimal128"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+17;if("Code"===t._bsontype)return null!=t.scope&&Object.keys(t.scope).length>0?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+4+b.Buffer.byteLength(t.code.toString(),"utf8")+1+r(t.scope,n,o):(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+b.Buffer.byteLength(t.code.toString(),"utf8")+1;if("Binary"===t._bsontype)return t.sub_type===Q.Binary.SUBTYPE_BYTE_ARRAY?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+(t.position+1+4+1+4):(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+(t.position+1+4+1);if("Symbol"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+b.Buffer.byteLength(t.value,"utf8")+4+1+1;if("DBRef"===t._bsontype){var u=Object.assign({$ref:t.collection,$id:t.oid},t.fields);return null!=t.db&&(u.$db=t.db),(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+r(u,n,o)}return t instanceof RegExp||"[object RegExp]"===Object.prototype.toString.call(t)?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+b.Buffer.byteLength(t.source,"utf8")+1+(t.global?1:0)+(t.ignoreCase?1:0)+(t.multiline?1:0)+1:"BSONRegExp"===t._bsontype?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+b.Buffer.byteLength(t.pattern,"utf8")+1+b.Buffer.byteLength(t.options,"utf8")+1:(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+r(t,n,o)+1;case"function":if(t instanceof RegExp||"[object RegExp]"===Object.prototype.toString.call(t)||"[object RegExp]"===String.call(t))return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+b.Buffer.byteLength(t.source,"utf8")+1+(t.global?1:0)+(t.ignoreCase?1:0)+(t.multiline?1:0)+1;if(n&&null!=t.scope&&Object.keys(t.scope).length>0)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+4+b.Buffer.byteLength(X.normalizedFunctionString(t),"utf8")+1+r(t.scope,n,o);if(n)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+b.Buffer.byteLength(X.normalizedFunctionString(t),"utf8")+1}return 0}Object.defineProperty(t,"__esModule",{value:!0}),t.calculateObjectSize=void 0,t.calculateObjectSize=r}));r(me),me.calculateObjectSize;var Se=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.validateUtf8=void 0;t.validateUtf8=function(e,t,r){for(var n=0,i=t;i<r;i+=1){var o=e[i];if(n){if(128!=(192&o))return!1;n-=1}else if(128&o)if(192==(224&o))n=1;else if(224==(240&o))n=2;else{if(240!=(248&o))return!1;n=3}}return!n}}));r(Se),Se.validateUtf8;var Ne=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.deserialize=void 0;var r=re.Long.fromNumber(Oe.JS_INT_MAX),n=re.Long.fromNumber(Oe.JS_INT_MIN),i={};function o(e,t,s,f){void 0===f&&(f=!1);var a=null!=s.evalFunctions&&s.evalFunctions,l=null!=s.cacheFunctions&&s.cacheFunctions,c=null==s.fieldsAsRaw?null:s.fieldsAsRaw,h=null!=s.raw&&s.raw,p="boolean"==typeof s.bsonRegExp&&s.bsonRegExp,d=null!=s.promoteBuffers&&s.promoteBuffers,y=null==s.promoteLongs||s.promoteLongs,g=null==s.promoteValues||s.promoteValues,_=t;if(e.length<5)throw new Error("corrupt bson message < 5 bytes long");var B=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;if(B<5||B>e.length)throw new Error("corrupt bson message");for(var O=f?[]:{},m=0;;){var S=e[t++];if(0===S)break;for(var N=t;0!==e[N]&&N<e.length;)N++;if(N>=e.byteLength)throw new Error("Bad BSON Document: illegal CString");var v=f?m++:e.toString("utf8",t,N);if(t=N+1,S===Oe.BSON_DATA_STRING){if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");if(!Se.validateUtf8(e,t,t+H-1))throw new Error("Invalid UTF-8 string in BSON document");var A=e.toString("utf8",t,t+H-1);O[v]=A,t+=H}else if(S===Oe.BSON_DATA_OID){var w=b.Buffer.alloc(12);e.copy(w,0,t,t+12),O[v]=new fe.ObjectId(w),t+=12}else if(S===Oe.BSON_DATA_INT&&!1===g)O[v]=new oe.Int32(e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24);else if(S===Oe.BSON_DATA_INT)O[v]=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;else if(S===Oe.BSON_DATA_NUMBER&&!1===g)O[v]=new ie.Double(e.readDoubleLE(t)),t+=8;else if(S===Oe.BSON_DATA_NUMBER)O[v]=e.readDoubleLE(t),t+=8;else if(S===Oe.BSON_DATA_DATE){var E=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,T=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;O[v]=new Date(new re.Long(E,T).toNumber())}else if(S===Oe.BSON_DATA_BOOLEAN){if(0!==e[t]&&1!==e[t])throw new Error("illegal boolean type value");O[v]=1===e[t++]}else if(S===Oe.BSON_DATA_OBJECT){var D=t;if((V=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)<=0||V>e.length-t)throw new Error("bad embedded document length in bson");O[v]=h?e.slice(t,t+V):o(e,D,s,!1),t+=V}else if(S===Oe.BSON_DATA_ARRAY){D=t;var I=s,x=t+(V=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24);if(c&&c[v]){for(var U in I={},s)I[U]=s[U];I.raw=!0}if(O[v]=o(e,D,I,!0),0!==e[(t+=V)-1])throw new Error("invalid array terminator byte");if(t!==x)throw new Error("corrupted array bson")}else if(S===Oe.BSON_DATA_UNDEFINED)O[v]=void 0;else if(S===Oe.BSON_DATA_NULL)O[v]=null;else if(S===Oe.BSON_DATA_LONG){E=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,T=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;var R=new re.Long(E,T);O[v]=y&&!0===g&&R.lessThanOrEqual(r)&&R.greaterThanOrEqual(n)?R.toNumber():R}else if(S===Oe.BSON_DATA_DECIMAL128){var L=b.Buffer.alloc(16);e.copy(L,0,t,t+16),t+=16;var j=new ne.Decimal128(L);"toObject"in j&&"function"==typeof j.toObject?O[v]=j.toObject():O[v]=j}else if(S===Oe.BSON_DATA_BINARY){var M=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,P=M,Y=e[t++];if(M<0)throw new Error("Negative binary type element size found");if(M>e.byteLength)throw new Error("Binary type size larger than document size");if(null!=e.slice){if(Y===Q.Binary.SUBTYPE_BYTE_ARRAY){if((M=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<0)throw new Error("Negative binary type element size found for subtype 0x02");if(M>P-4)throw new Error("Binary type with subtype 0x02 contains too long binary size");if(M<P-4)throw new Error("Binary type with subtype 0x02 contains too short binary size")}O[v]=d&&g?e.slice(t,t+M):new Q.Binary(e.slice(t,t+M),Y)}else{var C=b.Buffer.alloc(M);if(Y===Q.Binary.SUBTYPE_BYTE_ARRAY){if((M=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<0)throw new Error("Negative binary type element size found for subtype 0x02");if(M>P-4)throw new Error("Binary type with subtype 0x02 contains too long binary size");if(M<P-4)throw new Error("Binary type with subtype 0x02 contains too short binary size")}for(N=0;N<M;N++)C[N]=e[t+N];O[v]=d&&g?C:new Q.Binary(C,Y)}t+=M}else if(S===Oe.BSON_DATA_REGEXP&&!1===p){for(N=t;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");var z=e.toString("utf8",t,N);for(N=t=N+1;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");var $=e.toString("utf8",t,N);t=N+1;var k=new Array($.length);for(N=0;N<$.length;N++)switch($[N]){case"m":k[N]="m";break;case"s":k[N]="g";break;case"i":k[N]="i"}O[v]=new RegExp(z,k.join(""))}else if(S===Oe.BSON_DATA_REGEXP&&!0===p){for(N=t;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");z=e.toString("utf8",t,N);for(N=t=N+1;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");$=e.toString("utf8",t,N);t=N+1,O[v]=new ae.BSONRegExp(z,$)}else if(S===Oe.BSON_DATA_SYMBOL){if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");var J=e.toString("utf8",t,t+H-1);O[v]=g?J:new le.BSONSymbol(J),t+=H}else if(S===Oe.BSON_DATA_TIMESTAMP){E=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,T=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;O[v]=new _e.Timestamp(E,T)}else if(S===Oe.BSON_DATA_MIN_KEY)O[v]=new se.MinKey;else if(S===Oe.BSON_DATA_MAX_KEY)O[v]=new ue.MaxKey;else if(S===Oe.BSON_DATA_CODE){if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");var q=e.toString("utf8",t,t+H-1);O[v]=a?l?u(q,i,O):u(q):new ee.Code(q),t+=H}else if(S===Oe.BSON_DATA_CODE_W_SCOPE){var F=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;if(F<13)throw new Error("code_w_scope total size shorter minimum expected length");if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");q=e.toString("utf8",t,t+H-1),D=t+=H;var V=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24,K=o(e,D,s,!1);if(t+=V,F<8+V+H)throw new Error("code_w_scope total size is too short, truncating scope");if(F>8+V+H)throw new Error("code_w_scope total size is too long, clips outer document");a?(O[v]=l?u(q,i,O):u(q),O[v].scope=K):O[v]=new ee.Code(q,K)}else{if(S!==Oe.BSON_DATA_DBPOINTER)throw new Error("Detected unknown BSON type "+S.toString(16)+' for fieldname "'+v+'"');var H;if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");if(!Se.validateUtf8(e,t,t+H-1))throw new Error("Invalid UTF-8 string in BSON document");var X=e.toString("utf8",t,t+H-1);t+=H;var W=b.Buffer.alloc(12);e.copy(W,0,t,t+12);w=new fe.ObjectId(W);t+=12,O[v]=new te.DBRef(X,w)}}if(B!==t-_){if(f)throw new Error("corrupt array bson");throw new Error("corrupt object bson")}var G=Object.keys(O).filter((function(e){return e.startsWith("$")})),Z=!0;if(G.forEach((function(e){-1===["$ref","$id","$db"].indexOf(e)&&(Z=!1)})),!Z)return O;if(te.isDBRefLike(O)){var ce=Object.assign({},O);return delete ce.$ref,delete ce.$id,delete ce.$db,new te.DBRef(O.$ref,O.$id,O.$db,ce)}return O}function u(e,t,r){return t?(null==t[e]&&(t[e]=new Function(e)),t[e].bind(r)):new Function(e)}t.deserialize=function(e,t,r){var n=(t=null==t?{}:t)&&t.index?t.index:0,i=e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24;if(i<5)throw new Error("bson size must be >= 5, is "+i);if(t.allowObjectSmallerThanBufferSize&&e.length<i)throw new Error("buffer length "+e.length+" must be >= bson size "+i);if(!t.allowObjectSmallerThanBufferSize&&e.length!==i)throw new Error("buffer length "+e.length+" must === bson size "+i);if(i+n>e.byteLength)throw new Error("(bson size "+i+" + options.index "+n+" must be <= buffer length "+e.byteLength+")");if(0!==e[n+i-1])throw new Error("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");return o(e,n,t,r)}}));r(Ne),Ne.deserialize;var ve=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.writeIEEE754=t.readIEEE754=void 0,t.readIEEE754=function(e,t,r,n,i){var o,u,s="big"===r,f=8*i-n-1,a=(1<<f)-1,l=a>>1,c=-7,h=s?0:i-1,p=s?1:-1,d=e[t+h];for(h+=p,o=d&(1<<-c)-1,d>>=-c,c+=f;c>0;o=256*o+e[t+h],h+=p,c-=8);for(u=o&(1<<-c)-1,o>>=-c,c+=n;c>0;u=256*u+e[t+h],h+=p,c-=8);if(0===o)o=1-l;else{if(o===a)return u?NaN:1/0*(d?-1:1);u+=Math.pow(2,n),o-=l}return(d?-1:1)*u*Math.pow(2,o-n)},t.writeIEEE754=function(e,t,r,n,i,o){var u,s,f,a="big"===n,l=8*o-i-1,c=(1<<l)-1,h=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=a?o-1:0,y=a?-1:1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,u=c):(u=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-u))<1&&(u--,f*=2),(t+=u+h>=1?p/f:p*Math.pow(2,1-h))*f>=2&&(u++,f/=2),u+h>=c?(s=0,u=c):u+h>=1?(s=(t*f-1)*Math.pow(2,i),u+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),u=0)),isNaN(t)&&(s=0);i>=8;)e[r+d]=255&s,d+=y,s/=256,i-=8;for(u=u<<i|s,isNaN(t)&&(u+=8),l+=i;l>0;)e[r+d]=255&u,d+=y,u/=256,l-=8;e[r+d-y]|=128*g}}));r(ve),ve.writeIEEE754,ve.readIEEE754;var Ae=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.serializeInto=void 0;var r=/\x00/,n=new Set(["$db","$ref","$id","$clusterTime"]);function i(e){return"[object RegExp]"===Object.prototype.toString.call(e)}function o(e,t,r,n,i){e[n++]=Oe.BSON_DATA_STRING;var o=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8");e[(n=n+o+1)-1]=0;var u=e.write(r,n+4,void 0,"utf8");return e[n+3]=u+1>>24&255,e[n+2]=u+1>>16&255,e[n+1]=u+1>>8&255,e[n]=u+1&255,n=n+4+u,e[n++]=0,n}function u(e,t,r,n,i){Number.isInteger(r)&&r>=Oe.BSON_INT32_MIN&&r<=Oe.BSON_INT32_MAX?(e[n++]=Oe.BSON_DATA_INT,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,e[n++]=255&r,e[n++]=r>>8&255,e[n++]=r>>16&255,e[n++]=r>>24&255):(e[n++]=Oe.BSON_DATA_NUMBER,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,ve.writeIEEE754(e,r,n,"little",52,8),n+=8);return n}function s(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_NULL,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,n}function f(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_BOOLEAN,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,e[n++]=r?1:0,n}function a(e,t,r,n,i){e[n++]=Oe.BSON_DATA_DATE,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=re.Long.fromNumber(r.getTime()),u=o.getLowBits(),s=o.getHighBits();return e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255,e[n++]=255&s,e[n++]=s>>8&255,e[n++]=s>>16&255,e[n++]=s>>24&255,n}function l(e,t,n,i,o){if(e[i++]=Oe.BSON_DATA_REGEXP,i+=o?e.write(t,i,void 0,"ascii"):e.write(t,i,void 0,"utf8"),e[i++]=0,n.source&&null!=n.source.match(r))throw Error("value "+n.source+" must not contain null bytes");return i+=e.write(n.source,i,void 0,"utf8"),e[i++]=0,n.ignoreCase&&(e[i++]=105),n.global&&(e[i++]=115),n.multiline&&(e[i++]=109),e[i++]=0,i}function c(e,t,n,i,o){if(e[i++]=Oe.BSON_DATA_REGEXP,i+=o?e.write(t,i,void 0,"ascii"):e.write(t,i,void 0,"utf8"),e[i++]=0,null!=n.pattern.match(r))throw Error("pattern "+n.pattern+" must not contain null bytes");return i+=e.write(n.pattern,i,void 0,"utf8"),e[i++]=0,i+=e.write(n.options.split("").sort().join(""),i,void 0,"utf8"),e[i++]=0,i}function h(e,t,r,n,i){return null===r?e[n++]=Oe.BSON_DATA_NULL:"MinKey"===r._bsontype?e[n++]=Oe.BSON_DATA_MIN_KEY:e[n++]=Oe.BSON_DATA_MAX_KEY,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,n}function p(e,t,r,n,i){if(e[n++]=Oe.BSON_DATA_OID,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,"string"==typeof r.id)e.write(r.id,n,void 0,"binary");else{if(!r.id||!r.id.copy)throw new TypeError("object ["+JSON.stringify(r)+"] is not a valid ObjectId");r.id.copy(e,n,0,12)}return n+12}function d(e,t,r,n,i){e[n++]=Oe.BSON_DATA_BINARY,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=r.length;return e[n++]=255&o,e[n++]=o>>8&255,e[n++]=o>>16&255,e[n++]=o>>24&255,e[n++]=Oe.BSON_BINARY_SUBTYPE_DEFAULT,e.set(W.ensureBuffer(r),n),n+=o}function y(e,t,r,n,i,o,u,s,f,a){void 0===i&&(i=!1),void 0===o&&(o=0),void 0===u&&(u=!1),void 0===s&&(s=!0),void 0===f&&(f=!1),void 0===a&&(a=[]);for(var l=0;l<a.length;l++)if(a[l]===r)throw new Error("cyclic dependency detected");a.push(r),e[n++]=Array.isArray(r)?Oe.BSON_DATA_ARRAY:Oe.BSON_DATA_OBJECT,n+=f?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var c=A(e,r,i,n,o+1,u,s,a);return a.pop(),c}function g(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_DECIMAL128,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,r.bytes.copy(e,n,0,16),n+16}function _(e,t,r,n,i){e[n++]="Long"===r._bsontype?Oe.BSON_DATA_LONG:Oe.BSON_DATA_TIMESTAMP,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=r.getLowBits(),u=r.getHighBits();return e[n++]=255&o,e[n++]=o>>8&255,e[n++]=o>>16&255,e[n++]=o>>24&255,e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255,n}function b(e,t,r,n,i){return r=r.valueOf(),e[n++]=Oe.BSON_DATA_INT,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,e[n++]=255&r,e[n++]=r>>8&255,e[n++]=r>>16&255,e[n++]=r>>24&255,n}function B(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_NUMBER,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,ve.writeIEEE754(e,r.value,n,"little",52,8),n+=8}function O(e,t,r,n,i,o,u){e[n++]=Oe.BSON_DATA_CODE,n+=u?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var s=X.normalizedFunctionString(r),f=e.write(s,n+4,void 0,"utf8")+1;return e[n]=255&f,e[n+1]=f>>8&255,e[n+2]=f>>16&255,e[n+3]=f>>24&255,n=n+4+f-1,e[n++]=0,n}function m(e,t,r,n,i,o,u,s,f){if(void 0===i&&(i=!1),void 0===o&&(o=0),void 0===u&&(u=!1),void 0===s&&(s=!0),void 0===f&&(f=!1),r.scope&&"object"==typeof r.scope){e[n++]=Oe.BSON_DATA_CODE_W_SCOPE,n+=f?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var a=n,l="string"==typeof r.code?r.code:r.code.toString();n+=4;var c=e.write(l,n+4,void 0,"utf8")+1;e[n]=255&c,e[n+1]=c>>8&255,e[n+2]=c>>16&255,e[n+3]=c>>24&255,e[n+4+c-1]=0,n=n+c+4;var h=A(e,r.scope,i,n,o+1,u,s);n=h-1;var p=h-a;e[a++]=255&p,e[a++]=p>>8&255,e[a++]=p>>16&255,e[a++]=p>>24&255,e[n++]=0}else{e[n++]=Oe.BSON_DATA_CODE,n+=f?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;l=r.code.toString();var d=e.write(l,n+4,void 0,"utf8")+1;e[n]=255&d,e[n+1]=d>>8&255,e[n+2]=d>>16&255,e[n+3]=d>>24&255,n=n+4+d-1,e[n++]=0}return n}function S(e,t,r,n,i){e[n++]=Oe.BSON_DATA_BINARY,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=r.value(!0),u=r.position;return r.sub_type===Q.Binary.SUBTYPE_BYTE_ARRAY&&(u+=4),e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255,e[n++]=r.sub_type,r.sub_type===Q.Binary.SUBTYPE_BYTE_ARRAY&&(u-=4,e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255),e.set(o,n),n+=r.position}function N(e,t,r,n,i){e[n++]=Oe.BSON_DATA_SYMBOL,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=e.write(r.value,n+4,void 0,"utf8")+1;return e[n]=255&o,e[n+1]=o>>8&255,e[n+2]=o>>16&255,e[n+3]=o>>24&255,n=n+4+o-1,e[n++]=0,n}function v(e,t,r,n,i,o,u){e[n++]=Oe.BSON_DATA_OBJECT,n+=u?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var s=n,f={$ref:r.collection||r.namespace,$id:r.oid};null!=r.db&&(f.$db=r.db);var a=A(e,f=Object.assign(f,r.fields),!1,n,i+1,o),l=a-s;return e[s++]=255&l,e[s++]=l>>8&255,e[s++]=l>>16&255,e[s++]=l>>24&255,a}function A(e,t,A,w,E,T,D,I){void 0===A&&(A=!1),void 0===w&&(w=0),void 0===E&&(E=0),void 0===T&&(T=!1),void 0===D&&(D=!0),void 0===I&&(I=[]),w=w||0,(I=I||[]).push(t);var x=w+4;if(Array.isArray(t))for(var U=0;U<t.length;U++){var R=""+U;if((Y=t[U])&&Y.toBSON){if("function"!=typeof Y.toBSON)throw new TypeError("toBSON is not a function");Y=Y.toBSON()}if("string"==typeof Y)x=o(e,R,Y,x,!0);else if("number"==typeof Y)x=u(e,R,Y,x,!0);else{if("bigint"==typeof Y)throw new TypeError("Unsupported type BigInt, please use Decimal128");if("boolean"==typeof Y)x=f(e,R,Y,x,!0);else if(Y instanceof Date||X.isDate(Y))x=a(e,R,Y,x,!0);else if(void 0===Y)x=s(e,R,0,x,!0);else if(null===Y)x=s(e,R,0,x,!0);else if("ObjectId"===Y._bsontype||"ObjectID"===Y._bsontype)x=p(e,R,Y,x,!0);else if(X.isBuffer(Y)||X.isUint8Array(Y))x=d(e,R,Y,x,!0);else if(Y instanceof RegExp||i(Y))x=l(e,R,Y,x,!0);else if("object"==typeof Y&&null==Y._bsontype)x=y(e,R,Y,x,A,E,T,D,!0,I);else if("object"==typeof Y&&be.isBSONType(Y)&&"Decimal128"===Y._bsontype)x=g(e,R,Y,x,!0);else if("Long"===Y._bsontype||"Timestamp"===Y._bsontype)x=_(e,R,Y,x,!0);else if("Double"===Y._bsontype)x=B(e,R,Y,x,!0);else if("function"==typeof Y&&T)x=O(e,R,Y,x,0,0,!0);else if("Code"===Y._bsontype)x=m(e,R,Y,x,A,E,T,D,!0);else if("Binary"===Y._bsontype)x=S(e,R,Y,x,!0);else if("Symbol"===Y._bsontype)x=N(e,R,Y,x,!0);else if("DBRef"===Y._bsontype)x=v(e,R,Y,x,E,T,!0);else if("BSONRegExp"===Y._bsontype)x=c(e,R,Y,x,!0);else if("Int32"===Y._bsontype)x=b(e,R,Y,x,!0);else if("MinKey"===Y._bsontype||"MaxKey"===Y._bsontype)x=h(e,R,Y,x,!0);else if(void 0!==Y._bsontype)throw new TypeError("Unrecognized or invalid _bsontype: "+Y._bsontype)}}else if(t instanceof Be.Map)for(var L=t.entries(),j=!1;!j;){var M=L.next();if(!(j=!!M.done)){R=M.value[0];var P=typeof(Y=M.value[1]);if("string"==typeof R&&!n.has(R)){if(null!=R.match(r))throw Error("key "+R+" must not contain null bytes");if(A){if("$"===R[0])throw Error("key "+R+" must not start with '$'");if(~R.indexOf("."))throw Error("key "+R+" must not contain '.'")}}if("string"===P)x=o(e,R,Y,x);else if("number"===P)x=u(e,R,Y,x);else{if("bigint"===P||X.isBigInt64Array(Y)||X.isBigUInt64Array(Y))throw new TypeError("Unsupported type BigInt, please use Decimal128");if("boolean"===P)x=f(e,R,Y,x);else if(Y instanceof Date||X.isDate(Y))x=a(e,R,Y,x);else if(null===Y||void 0===Y&&!1===D)x=s(e,R,0,x);else if("ObjectId"===Y._bsontype||"ObjectID"===Y._bsontype)x=p(e,R,Y,x);else if(X.isBuffer(Y)||X.isUint8Array(Y))x=d(e,R,Y,x);else if(Y instanceof RegExp||i(Y))x=l(e,R,Y,x);else if("object"===P&&null==Y._bsontype)x=y(e,R,Y,x,A,E,T,D,!1,I);else if("object"===P&&"Decimal128"===Y._bsontype)x=g(e,R,Y,x);else if("Long"===Y._bsontype||"Timestamp"===Y._bsontype)x=_(e,R,Y,x);else if("Double"===Y._bsontype)x=B(e,R,Y,x);else if("Code"===Y._bsontype)x=m(e,R,Y,x,A,E,T,D);else if("function"==typeof Y&&T)x=O(e,R,Y,x,0,0,T);else if("Binary"===Y._bsontype)x=S(e,R,Y,x);else if("Symbol"===Y._bsontype)x=N(e,R,Y,x);else if("DBRef"===Y._bsontype)x=v(e,R,Y,x,E,T);else if("BSONRegExp"===Y._bsontype)x=c(e,R,Y,x);else if("Int32"===Y._bsontype)x=b(e,R,Y,x);else if("MinKey"===Y._bsontype||"MaxKey"===Y._bsontype)x=h(e,R,Y,x);else if(void 0!==Y._bsontype)throw new TypeError("Unrecognized or invalid _bsontype: "+Y._bsontype)}}}else{if(t.toBSON){if("function"!=typeof t.toBSON)throw new TypeError("toBSON is not a function");if(null!=(t=t.toBSON())&&"object"!=typeof t)throw new TypeError("toBSON function did not return an object")}for(var R in t){var Y;if((Y=t[R])&&Y.toBSON){if("function"!=typeof Y.toBSON)throw new TypeError("toBSON is not a function");Y=Y.toBSON()}P=typeof Y;if("string"==typeof R&&!n.has(R)){if(null!=R.match(r))throw Error("key "+R+" must not contain null bytes");if(A){if("$"===R[0])throw Error("key "+R+" must not start with '$'");if(~R.indexOf("."))throw Error("key "+R+" must not contain '.'")}}if("string"===P)x=o(e,R,Y,x);else if("number"===P)x=u(e,R,Y,x);else{if("bigint"===P)throw new TypeError("Unsupported type BigInt, please use Decimal128");if("boolean"===P)x=f(e,R,Y,x);else if(Y instanceof Date||X.isDate(Y))x=a(e,R,Y,x);else if(void 0===Y)!1===D&&(x=s(e,R,0,x));else if(null===Y)x=s(e,R,0,x);else if("ObjectId"===Y._bsontype||"ObjectID"===Y._bsontype)x=p(e,R,Y,x);else if(X.isBuffer(Y)||X.isUint8Array(Y))x=d(e,R,Y,x);else if(Y instanceof RegExp||i(Y))x=l(e,R,Y,x);else if("object"===P&&null==Y._bsontype)x=y(e,R,Y,x,A,E,T,D,!1,I);else if("object"===P&&"Decimal128"===Y._bsontype)x=g(e,R,Y,x);else if("Long"===Y._bsontype||"Timestamp"===Y._bsontype)x=_(e,R,Y,x);else if("Double"===Y._bsontype)x=B(e,R,Y,x);else if("Code"===Y._bsontype)x=m(e,R,Y,x,A,E,T,D);else if("function"==typeof Y&&T)x=O(e,R,Y,x,0,0,T);else if("Binary"===Y._bsontype)x=S(e,R,Y,x);else if("Symbol"===Y._bsontype)x=N(e,R,Y,x);else if("DBRef"===Y._bsontype)x=v(e,R,Y,x,E,T);else if("BSONRegExp"===Y._bsontype)x=c(e,R,Y,x);else if("Int32"===Y._bsontype)x=b(e,R,Y,x);else if("MinKey"===Y._bsontype||"MaxKey"===Y._bsontype)x=h(e,R,Y,x);else if(void 0!==Y._bsontype)throw new TypeError("Unrecognized or invalid _bsontype: "+Y._bsontype)}}}I.pop(),e[x++]=0;var C=x-w;return e[w++]=255&C,e[w++]=C>>8&255,e[w++]=C>>16&255,e[w++]=C>>24&255,x}t.serializeInto=A}));r(Ae),Ae.serializeInto;var we=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ObjectID=t.Decimal128=t.BSONRegExp=t.MaxKey=t.MinKey=t.Int32=t.Double=t.Timestamp=t.Long=t.UUID=t.ObjectId=t.Binary=t.DBRef=t.BSONSymbol=t.Map=t.Code=t.LongWithoutOverridesClass=t.EJSON=t.BSON_INT64_MIN=t.BSON_INT64_MAX=t.BSON_INT32_MIN=t.BSON_INT32_MAX=t.BSON_DATA_UNDEFINED=t.BSON_DATA_TIMESTAMP=t.BSON_DATA_SYMBOL=t.BSON_DATA_STRING=t.BSON_DATA_REGEXP=t.BSON_DATA_OID=t.BSON_DATA_OBJECT=t.BSON_DATA_NUMBER=t.BSON_DATA_NULL=t.BSON_DATA_MIN_KEY=t.BSON_DATA_MAX_KEY=t.BSON_DATA_LONG=t.BSON_DATA_INT=t.BSON_DATA_DECIMAL128=t.BSON_DATA_DBPOINTER=t.BSON_DATA_DATE=t.BSON_DATA_CODE_W_SCOPE=t.BSON_DATA_CODE=t.BSON_DATA_BOOLEAN=t.BSON_DATA_BINARY=t.BSON_DATA_ARRAY=t.BSON_BINARY_SUBTYPE_UUID_NEW=t.BSON_BINARY_SUBTYPE_UUID=t.BSON_BINARY_SUBTYPE_USER_DEFINED=t.BSON_BINARY_SUBTYPE_MD5=t.BSON_BINARY_SUBTYPE_FUNCTION=t.BSON_BINARY_SUBTYPE_DEFAULT=t.BSON_BINARY_SUBTYPE_BYTE_ARRAY=void 0,t.deserializeStream=t.calculateObjectSize=t.deserialize=t.serializeWithBufferAndIndex=t.serialize=t.setInternalBufferSize=void 0,Object.defineProperty(t,"Binary",{enumerable:!0,get:function(){return Q.Binary}}),Object.defineProperty(t,"Code",{enumerable:!0,get:function(){return ee.Code}}),Object.defineProperty(t,"DBRef",{enumerable:!0,get:function(){return te.DBRef}}),Object.defineProperty(t,"Decimal128",{enumerable:!0,get:function(){return ne.Decimal128}}),Object.defineProperty(t,"Double",{enumerable:!0,get:function(){return ie.Double}}),Object.defineProperty(t,"Int32",{enumerable:!0,get:function(){return oe.Int32}}),Object.defineProperty(t,"Long",{enumerable:!0,get:function(){return re.Long}}),Object.defineProperty(t,"Map",{enumerable:!0,get:function(){return Be.Map}}),Object.defineProperty(t,"MaxKey",{enumerable:!0,get:function(){return ue.MaxKey}}),Object.defineProperty(t,"MinKey",{enumerable:!0,get:function(){return se.MinKey}}),Object.defineProperty(t,"ObjectId",{enumerable:!0,get:function(){return fe.ObjectId}}),Object.defineProperty(t,"ObjectID",{enumerable:!0,get:function(){return fe.ObjectId}}),Object.defineProperty(t,"BSONRegExp",{enumerable:!0,get:function(){return ae.BSONRegExp}}),Object.defineProperty(t,"BSONSymbol",{enumerable:!0,get:function(){return le.BSONSymbol}}),Object.defineProperty(t,"Timestamp",{enumerable:!0,get:function(){return _e.Timestamp}}),Object.defineProperty(t,"UUID",{enumerable:!0,get:function(){return Z.UUID}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_BYTE_ARRAY",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_BYTE_ARRAY}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_DEFAULT",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_DEFAULT}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_FUNCTION",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_FUNCTION}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_MD5",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_MD5}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_USER_DEFINED",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_USER_DEFINED}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_UUID",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_UUID}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_UUID_NEW",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_UUID_NEW}}),Object.defineProperty(t,"BSON_DATA_ARRAY",{enumerable:!0,get:function(){return Oe.BSON_DATA_ARRAY}}),Object.defineProperty(t,"BSON_DATA_BINARY",{enumerable:!0,get:function(){return Oe.BSON_DATA_BINARY}}),Object.defineProperty(t,"BSON_DATA_BOOLEAN",{enumerable:!0,get:function(){return Oe.BSON_DATA_BOOLEAN}}),Object.defineProperty(t,"BSON_DATA_CODE",{enumerable:!0,get:function(){return Oe.BSON_DATA_CODE}}),Object.defineProperty(t,"BSON_DATA_CODE_W_SCOPE",{enumerable:!0,get:function(){return Oe.BSON_DATA_CODE_W_SCOPE}}),Object.defineProperty(t,"BSON_DATA_DATE",{enumerable:!0,get:function(){return Oe.BSON_DATA_DATE}}),Object.defineProperty(t,"BSON_DATA_DBPOINTER",{enumerable:!0,get:function(){return Oe.BSON_DATA_DBPOINTER}}),Object.defineProperty(t,"BSON_DATA_DECIMAL128",{enumerable:!0,get:function(){return Oe.BSON_DATA_DECIMAL128}}),Object.defineProperty(t,"BSON_DATA_INT",{enumerable:!0,get:function(){return Oe.BSON_DATA_INT}}),Object.defineProperty(t,"BSON_DATA_LONG",{enumerable:!0,get:function(){return Oe.BSON_DATA_LONG}}),Object.defineProperty(t,"BSON_DATA_MAX_KEY",{enumerable:!0,get:function(){return Oe.BSON_DATA_MAX_KEY}}),Object.defineProperty(t,"BSON_DATA_MIN_KEY",{enumerable:!0,get:function(){return Oe.BSON_DATA_MIN_KEY}}),Object.defineProperty(t,"BSON_DATA_NULL",{enumerable:!0,get:function(){return Oe.BSON_DATA_NULL}}),Object.defineProperty(t,"BSON_DATA_NUMBER",{enumerable:!0,get:function(){return Oe.BSON_DATA_NUMBER}}),Object.defineProperty(t,"BSON_DATA_OBJECT",{enumerable:!0,get:function(){return Oe.BSON_DATA_OBJECT}}),Object.defineProperty(t,"BSON_DATA_OID",{enumerable:!0,get:function(){return Oe.BSON_DATA_OID}}),Object.defineProperty(t,"BSON_DATA_REGEXP",{enumerable:!0,get:function(){return Oe.BSON_DATA_REGEXP}}),Object.defineProperty(t,"BSON_DATA_STRING",{enumerable:!0,get:function(){return Oe.BSON_DATA_STRING}}),Object.defineProperty(t,"BSON_DATA_SYMBOL",{enumerable:!0,get:function(){return Oe.BSON_DATA_SYMBOL}}),Object.defineProperty(t,"BSON_DATA_TIMESTAMP",{enumerable:!0,get:function(){return Oe.BSON_DATA_TIMESTAMP}}),Object.defineProperty(t,"BSON_DATA_UNDEFINED",{enumerable:!0,get:function(){return Oe.BSON_DATA_UNDEFINED}}),Object.defineProperty(t,"BSON_INT32_MAX",{enumerable:!0,get:function(){return Oe.BSON_INT32_MAX}}),Object.defineProperty(t,"BSON_INT32_MIN",{enumerable:!0,get:function(){return Oe.BSON_INT32_MIN}}),Object.defineProperty(t,"BSON_INT64_MAX",{enumerable:!0,get:function(){return Oe.BSON_INT64_MAX}}),Object.defineProperty(t,"BSON_INT64_MIN",{enumerable:!0,get:function(){return Oe.BSON_INT64_MIN}});var r=be;Object.defineProperty(t,"EJSON",{enumerable:!0,get:function(){return r.EJSON}});var n=_e;Object.defineProperty(t,"LongWithoutOverridesClass",{enumerable:!0,get:function(){return n.LongWithoutOverridesClass}});var i=17825792,o=b.Buffer.alloc(i);function u(e){o.length<e&&(o=b.Buffer.alloc(e))}function s(e,t){void 0===t&&(t={});var r="boolean"==typeof t.checkKeys&&t.checkKeys,n="boolean"==typeof t.serializeFunctions&&t.serializeFunctions,u="boolean"!=typeof t.ignoreUndefined||t.ignoreUndefined,s="number"==typeof t.minInternalBufferSize?t.minInternalBufferSize:i;o.length<s&&(o=b.Buffer.alloc(s));var f=Ae.serializeInto(o,e,r,0,0,n,u,[]),a=b.Buffer.alloc(f);return o.copy(a,0,0,a.length),a}function f(e,t,r){void 0===r&&(r={});var n="boolean"==typeof r.checkKeys&&r.checkKeys,i="boolean"==typeof r.serializeFunctions&&r.serializeFunctions,u="boolean"!=typeof r.ignoreUndefined||r.ignoreUndefined,s="number"==typeof r.index?r.index:0,f=Ae.serializeInto(o,e,n,0,0,i,u);return o.copy(t,s,0,f),s+f-1}function a(e,t){return void 0===t&&(t={}),Ne.deserialize(W.ensureBuffer(e),t)}function l(e,t){void 0===t&&(t={});var r="boolean"==typeof(t=t||{}).serializeFunctions&&t.serializeFunctions,n="boolean"!=typeof t.ignoreUndefined||t.ignoreUndefined;return me.calculateObjectSize(e,r,n)}function c(e,t,r,n,i,o){for(var u=Object.assign({allowObjectSmallerThanBufferSize:!0,index:0},o),s=W.ensureBuffer(e),f=t,a=0;a<r;a++){var l=s[f]|s[f+1]<<8|s[f+2]<<16|s[f+3]<<24;u.index=f,n[i+a]=Ne.deserialize(s,u),f+=l}return f}t.setInternalBufferSize=u,t.serialize=s,t.serializeWithBufferAndIndex=f,t.deserialize=a,t.calculateObjectSize=l,t.deserializeStream=c;var h={Binary:Q.Binary,Code:ee.Code,DBRef:te.DBRef,Decimal128:ne.Decimal128,Double:ie.Double,Int32:oe.Int32,Long:re.Long,UUID:Z.UUID,Map:Be.Map,MaxKey:ue.MaxKey,MinKey:se.MinKey,ObjectId:fe.ObjectId,ObjectID:fe.ObjectId,BSONRegExp:ae.BSONRegExp,BSONSymbol:le.BSONSymbol,Timestamp:_e.Timestamp,EJSON:be.EJSON,setInternalBufferSize:u,serialize:s,serializeWithBufferAndIndex:f,deserialize:a,calculateObjectSize:l,deserializeStream:c};t.default=h})),Ee=r(we),Te=we.ObjectID,De=we.Decimal128,Ie=we.BSONRegExp,xe=we.MaxKey,Ue=we.MinKey,Re=we.Int32,Le=we.Double,je=we.Timestamp,Me=we.Long,Pe=we.UUID,Ye=we.ObjectId,Ce=we.Binary,ze=we.DBRef,$e=we.BSONSymbol,ke=we.Map,Je=we.Code,qe=we.LongWithoutOverridesClass,Fe=we.EJSON,Ve=we.BSON_INT64_MIN,Ke=we.BSON_INT64_MAX,He=we.BSON_INT32_MIN,Xe=we.BSON_INT32_MAX,We=we.BSON_DATA_UNDEFINED,Ge=we.BSON_DATA_TIMESTAMP,Ze=we.BSON_DATA_SYMBOL,Qe=we.BSON_DATA_STRING,et=we.BSON_DATA_REGEXP,tt=we.BSON_DATA_OID,rt=we.BSON_DATA_OBJECT,nt=we.BSON_DATA_NUMBER,it=we.BSON_DATA_NULL,ot=we.BSON_DATA_MIN_KEY,ut=we.BSON_DATA_MAX_KEY,st=we.BSON_DATA_LONG,ft=we.BSON_DATA_INT,at=we.BSON_DATA_DECIMAL128,lt=we.BSON_DATA_DBPOINTER,ct=we.BSON_DATA_DATE,ht=we.BSON_DATA_CODE_W_SCOPE,pt=we.BSON_DATA_CODE,dt=we.BSON_DATA_BOOLEAN,yt=we.BSON_DATA_BINARY,gt=we.BSON_DATA_ARRAY,_t=we.BSON_BINARY_SUBTYPE_UUID_NEW,bt=we.BSON_BINARY_SUBTYPE_UUID,Bt=we.BSON_BINARY_SUBTYPE_USER_DEFINED,Ot=we.BSON_BINARY_SUBTYPE_MD5,mt=we.BSON_BINARY_SUBTYPE_FUNCTION,St=we.BSON_BINARY_SUBTYPE_DEFAULT,Nt=we.BSON_BINARY_SUBTYPE_BYTE_ARRAY,vt=we.deserializeStream,At=we.calculateObjectSize,wt=we.deserialize,Et=we.serializeWithBufferAndIndex,Tt=we.serialize,Dt=we.setInternalBufferSize;return e.BSONRegExp=Ie,e.BSONSymbol=$e,e.BSON_BINARY_SUBTYPE_BYTE_ARRAY=Nt,e.BSON_BINARY_SUBTYPE_DEFAULT=St,e.BSON_BINARY_SUBTYPE_FUNCTION=mt,e.BSON_BINARY_SUBTYPE_MD5=Ot,e.BSON_BINARY_SUBTYPE_USER_DEFINED=Bt,e.BSON_BINARY_SUBTYPE_UUID=bt,e.BSON_BINARY_SUBTYPE_UUID_NEW=_t,e.BSON_DATA_ARRAY=gt,e.BSON_DATA_BINARY=yt,e.BSON_DATA_BOOLEAN=dt,e.BSON_DATA_CODE=pt,e.BSON_DATA_CODE_W_SCOPE=ht,e.BSON_DATA_DATE=ct,e.BSON_DATA_DBPOINTER=lt,e.BSON_DATA_DECIMAL128=at,e.BSON_DATA_INT=ft,e.BSON_DATA_LONG=st,e.BSON_DATA_MAX_KEY=ut,e.BSON_DATA_MIN_KEY=ot,e.BSON_DATA_NULL=it,e.BSON_DATA_NUMBER=nt,e.BSON_DATA_OBJECT=rt,e.BSON_DATA_OID=tt,e.BSON_DATA_REGEXP=et,e.BSON_DATA_STRING=Qe,e.BSON_DATA_SYMBOL=Ze,e.BSON_DATA_TIMESTAMP=Ge,e.BSON_DATA_UNDEFINED=We,e.BSON_INT32_MAX=Xe,e.BSON_INT32_MIN=He,e.BSON_INT64_MAX=Ke,e.BSON_INT64_MIN=Ve,e.Binary=Ce,e.Code=Je,e.DBRef=ze,e.Decimal128=De,e.Double=Le,e.EJSON=Fe,e.Int32=Re,e.Long=Me,e.LongWithoutOverridesClass=qe,e.Map=ke,e.MaxKey=xe,e.MinKey=Ue,e.ObjectID=Te,e.ObjectId=Ye,e.Timestamp=je,e.UUID=Pe,e.calculateObjectSize=At,e.default=Ee,e.deserialize=wt,e.deserializeStream=vt,e.serialize=Tt,e.serializeWithBufferAndIndex=Et,e.setInternalBufferSize=Dt,e.BufferPolyfill=b.Buffer,Object.defineProperty(e,"__esModule",{value:!0}),e}({});(()=>{const e=!("undefined"==typeof window);if(e&&window.HotPocket)return;if(!e){const e=require("util");TextEncoder=e.TextEncoder,TextDecoder=e.TextDecoder}const t="0.6.",r=237,n=new TextEncoder,i=new TextDecoder;let o=null,u=null,s=null,f=null,a=0;const l={json:"json",bson:"bson"};Object.freeze(l);const c={disconnect:"disconnect",contractOutput:"contract_output",connectionChange:"connection_change",unlChange:"unl_change",ledgerEvent:"ledger_event",healthEvent:"health_event"};Object.freeze(c);const h={unlChange:"unl_change",ledgerEvent:"ledger_event",healthEvent:"health_event"};Object.freeze(h);const p=async(e=null)=>{if(await S(),e){const t=b(e);if(t[0]!=r)throw"Invaid key type. 'ed' expected.";const n=new Uint8Array(33);return n[0]=r,n.set(t.slice(33),1),{privateKey:t,publicKey:n}}{const e=u.crypto_sign_keypair(),t=new Uint8Array(65);t[0]=r,t.set(e.privateKey,1);const n=new Uint8Array(33);return n[0]=r,n.set(e.publicKey,1),{privateKey:t,publicKey:n}}},d=async(t,r,n)=>{const i={contractId:null,contractVersion:null,trustedServerKeys:null,protocol:l.json,requiredConnectionCount:1,connectionTimeoutMs:5e3},u=n?{...i,...n}:i;if(!r)throw"clientKeys not specified.";if(""==u.contractId)throw"contractId not specified. Specify null to bypass contract id validation.";if(""==u.contractVersion)throw"contractVersion not specified. Specify null to bypass contract version validation.";if(!u.protocol||u.protocol!=l.json&&u.protocol!=l.bson)throw"Valid protocol not specified.";if(!u.requiredConnectionCount||0==u.requiredConnectionCount)throw"requiredConnectionCount must be greater than 0.";if(!u.connectionTimeoutMs||0==u.connectionTimeoutMs)throw"Connection timeout must be greater than 0.";await S(),await async function(){if(f)return;if(e&&window.blake3)f=window.blake3;else{if(e&&!window.blake3)return v||(v=new Promise((e=>{"undefined"==typeof BigUint64Array&&(BigUint64Array=function(e){}),"undefined"==typeof BigInt&&(BigInt=function(e){});import("https://cdn.jsdelivr.net/npm/blake3@2.1.4/browser-async.js").then((t=>{t.default().then((t=>{f=t,e()})).catch((t=>{console.error(t),e()}))})).catch((t=>{console.error(t),e()}))}))),void await v;e||(f=require("blake3"))}if(!f)throw"Blake3 reference not found."}(),function(){if(o)return;e&&window.WebSocket?o=window.WebSocket:e||(o=require("ws"));if(!o)throw"WebSocket reference not found."}(),u.protocol==l.bson&&await async function(){if(s)return;e?(N||(N=new Promise((e=>{setTimeout((()=>{s=window.BSON,window.Buffer=window.BSON.BufferPolyfill,e()}),0)}))),await N):e||(s=require("bson"));if(!s)throw"BSON reference not found."}();const a={};if(t&&t.forEach((e=>{const t=e.trim();t.length>0&&(a[t]=!0)})),0==Object.keys(a).length)throw"servers not specified.";if(u.requiredConnectionCount>Object.keys(a).length)throw"requiredConnectionCount is higher than no. of servers.";let c={};return u.trustedServerKeys&&u.trustedServerKeys.sort().forEach((e=>{const t=e.trim();t.length>0&&(c[t]=!0)})),0==Object.keys(c).length&&(c=null),new y(u.contractId,u.contractVersion,r,a,c,u.protocol,u.requiredConnectionCount,u.connectionTimeoutMs)};function y(e,t,r,n,i,o,u,s){let f=new m;const a=()=>i,l=e=>i=e,p=Object.keys(n).map((e=>({server:e,connection:null,lastActivity:0}))),d={};d[h.unlChange]=!!i,d[h.ledgerEvent]=!1,d[h.healthEvent]=!1;let y=0,_=null,b=0,B=null;const O=()=>{if(2==y)return;if(B=setTimeout((()=>{O()}),1e3),p.filter((e=>e.connection&&e.connection.isConnected())).length==u)return b=0,_&&_(!0),_=null,void(y=1);if(0==b)b=(new Date).getTime();else if((new Date).getTime()-b>s)return w(1,"Missing-connections timeout reached."),void this.close().then((()=>{_?(_(!1),_=null):f&&f.emit(c.disconnect)}));let n=p.filter((e=>e.connection)).length;if(n==u)return;const i=p.filter((e=>!e.connection&&(new Date).getTime()-e.lastActivity>3e3));for(i.sort(((e,t)=>e.lastActivity-t.lastActivity));n<u&&i.length>0;){const u=i.shift();u.connection=new g(e,t,r,u.server,a,l,o,s,f),u.lastActivity=(new Date).getTime(),u.connection.connect().then((e=>{if(e){f&&f.emit(c.connectionChange,u.server,"add");for(const[e,t]of Object.entries(d))t&&u.connection.subscribe(e)}else u.connection=null})),u.connection.onClose=()=>{u.connection=null,f&&f.emit(c.connectionChange,u.server,"remove")},n++}},S=async(e,t)=>{if(2==y)return await Promise.resolve();null==t&&(t=u);const r=p.filter((e=>e.connection&&e.connection.isConnected())).map((e=>e.connection)).slice(0,t),n=await Promise.all(r.map((t=>e(t))));return 1==t&&n.length<=1?0==n.length?null:n[0]:n},N=(e,t)=>{if(2==y)return Promise.resolve();null==t&&(t=u);const r=p.filter((e=>e.connection&&e.connection.isConnected())).map((e=>e.connection)).slice(0,t);return Promise.all(r.map((t=>e(t))))};this.connect=()=>{if(!(y>0))return b=(new Date).getTime(),O(),new Promise((e=>{_=e}))},this.close=async()=>{2!=y&&(y=2,B&&(clearTimeout(B),B=null),f.clear(c.connectionChange),f.clear(c.contractOutput),await Promise.all(p.filter((e=>e.connection)).map((e=>e.connection.close()))),p.forEach((e=>e.connection=null)))},this.on=(e,t)=>{f.on(e,t)},this.clear=e=>{f.clear(e)},this.submitContractInput=(e,t=null,r=null,n=!0)=>S((i=>i.submitContractInput(e,t,r,n)),1),this.submitContractReadRequest=(e,t=null,r=15e3)=>(t=t?t.toString():(new Date).getTime().toString(),S((n=>n.submitContractReadRequest(e,t,r)))),this.getStatus=()=>S((e=>e.getStatus())),this.getLcl=()=>S((e=>e.getLcl())),this.subscribe=e=>(d[e]=!0,N((t=>t.subscribe(e)))),this.unsubscribe=e=>(d[e]=!1,N((t=>t.unsubscribe(e)))),this.getLedgerBySeqNo=(e,t,r)=>S((n=>n.getLedgerBySeqNo(e,t,r)))}function g(r,s,a,h,p,d,y,g,m){const S=new _(a,l.json);let N=0,v=null,A=null,E=null,T=!1,D=null,I=null,x=null,U=null,R=[],L=[],j={},M={},P={};const Y=e=>{const t=f.createHash();return e.forEach((e=>t.update(e))),new Uint8Array(t.digest())},C=(e,t)=>{const r=[];let n=!1;for(let i of e)if(Array.isArray(i)){const e=C(i,n?null:t);1==e[0]&&(n=!0),r.push(e[1])}else{if(!t&&!i)return w(1,"Self hash encountered more than once in output hash tree."),[!1,null];i||(n=!0);const e=i?S.binaryDecode(i):t;r.push(e)}return[n,Y(r)]},z=(e,t)=>{const r=Y([a.publicKey,...S.spreadArrayField(e.outputs)]);if(!function(e,t){if(e.length!=t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}(r,S.binaryDecode(e.output_hash)))return w(1,"Contract output hash mismatch."),!1;const n=C(e.hash_tree,r);if(1==n[0]){return((e,t,r)=>{const n=Object.keys(r).length;if(0==n)return w(1,"Cannot validate outputs with empty unl."),!1;const i={};for(const n of t){const t=S.stringifyValue(n[0]),o=S.binaryDecode(n[0]),s=S.binaryDecode(n[1]);!i[t]&&r[t]&&u.crypto_sign_verify_detached(s,e,o.slice(1))&&(i[t]=!0)}return Object.keys(i).length/n>=.8})(n[1],e.unl_sig,t)}return!1},$=(e,t)=>{e=e.map((e=>S.deserializeValue(e))).sort();let r=p();if(r&&r[T]){r={};e.map((e=>S.stringifyValue(e))).forEach((e=>r[e]=!0)),d(r),w(0,"Updated trusted keys.")}t||m&&m.emit(c.unlChange,e)},k=async n=>{const o=e&&(N<2||y==l.json)?i.decode(n.data):n.data;let f;try{f=S.deserializeMessage(o)}catch(e){return w(1,e),w(0,"Exception deserializing: "),w(0,o||n),void(N<2&&this.close())}let a=!1;N<2?a=(e=>{if(0==N&&"user_challenge"==e.type&&e.hp_version&&e.contract_id){if(!e.hp_version.startsWith(t))return w(1,`Incompatible HotPocket server version. Expected:0.6.* Got:${e.hp_version}`),!1;if(!e.contract_id)return w(1,"Server did not specify contract id."),!1;if(r&&e.contract_id!=r)return w(1,`Contract id mismatch. Expected:${r} Got:${e.contract_id}`),!1;if(!e.contract_version)return w(1,"Server did not specify contract version."),!1;if(s&&e.contract_version!=s)return w(1,`Contract version mismatch. Expected:${s} Got:${e.contract_version}`),!1;A=e.contract_id,E=e.contract_version,v=B(u.randombytes_buf(16));const n=S.createUserChallengeResponse(e.challenge,v,y);return V(S.serializeObject(n)),N=1,!0}if(1==N&&v&&"server_challenge_response"==e.type&&e.sig&&e.pubkey){const t=p();if(t&&!t[e.pubkey])return w(1,`${h} is not among the trusted servers.`),!1;const r=v+A+E,n=e.pubkey.substring(2);return u.crypto_sign_verify_detached(b(e.sig),r,b(n))?(clearTimeout(I),I=null,v=null,T=e.pubkey,N=2,$(e.unl,!0),S.useProtocol(y),x&&x(!0),w(0,`Connected to ${h}`),!0):(w(1,`${h} challenge response verification failed.`),!1)}return w(1,`${h} invalid message during handshake. Connection status:${N}`),w(0,e),!1})(f):2==N&&(a=(e=>{if("contract_read_response"==e.type){const t=e.reply_for,r=M[t];r&&(clearTimeout(r.timer),r.resolver(S.deserializeValue(e.content)),delete M[t])}else if("contract_input_status"==e.type){const t=S.stringifyValue(e.input_hash),r=j[t];if(r){const n={status:e.status};"accepted"==e.status?(n.ledgerSeqNo=e.ledger_seq_no,n.ledgerHash=S.deserializeValue(e.ledger_hash)):n.reason=e.reason,r(n),delete j[t]}}else if("contract_output"==e.type){if(m){const t=p();!t||z(e,t)?m.emit(c.contractOutput,{ledgerSeqNo:e.ledger_seq_no,ledgerHash:S.deserializeValue(e.ledger_hash),outputHash:S.deserializeValue(e.output_hash),outputs:e.outputs.map((e=>S.deserializeValue(e)))}):w(1,"Output validation failed.")}}else if("stat_response"==e.type)R.forEach((t=>{t({hpVersion:e.hp_version,ledgerSeqNo:e.ledger_seq_no,ledgerHash:S.deserializeValue(e.ledger_hash),voteStatus:e.vote_status,roundTime:e.round_time,contractExecutionEnabled:e.contract_execution_enabled,readRequestsEnabled:e.read_requests_enabled,isFullHistoryNode:e.is_full_history_node,weaklyConnected:e.weakly_connected,currentUnl:e.current_unl.map((e=>S.deserializeValue(e))),peers:e.peers})})),R=[];else if("lcl_response"==e.type)L.forEach((t=>{t({ledgerSeqNo:e.ledger_seq_no,ledgerHash:S.deserializeValue(e.ledger_hash)})})),L=[];else if("unl_change"==e.type)$(e.unl,!1);else if("ledger_event"==e.type){const t={event:e.event};"ledger_created"==t.event?t.ledger=S.deserializeLedger(e.ledger):"vote_status"==t.event&&(t.voteStatus=e.vote_status),m.emit(c.ledgerEvent,t)}else if("health_event"==e.type){const t=S.deserializeHealthEvent(e);m.emit(c.healthEvent,t)}else{if("ledger_query_result"!=e.type)return w(1,"Received unrecognized contract message: type:"+e.type),!1;{const t=P[e.reply_for];if(t){const r=e.results.map((e=>{const t=S.deserializeLedger(e);return e.inputs&&(t.inputs=e.inputs.map((e=>({pubkey:S.deserializeValue(e.pubkey),hash:S.deserializeValue(e.hash),nonce:e.nonce,blob:S.deserializeValue(e.blob)})))),e.outputs&&(t.outputs=e.outputs.map((e=>({pubkey:S.deserializeValue(e.pubkey),hash:S.deserializeValue(e.hash),blobs:e.blobs.map((e=>S.deserializeValue(e)))})))),t}));"seq_no"==t.type&&t.resolver(r.length>0?r[0]:null),delete P[e.reply_for]}}}return!0})(f)),a||N<2&&this.close()},J=()=>{D.addEventListener("message",k),D.addEventListener("close",q),I=setTimeout((()=>{this.close(),I=null}),g)},q=()=>{w(0,U?"Closing connection to "+h:"Disconnected from "+h),m=null,I&&(clearTimeout(I),I=null),x&&x(!1),x=null,R.forEach((e=>e(null))),R=[],Object.values(j).forEach((e=>e({status:"failed",reason:"connection_error"}))),j={},Object.values(M).forEach((e=>{clearTimeout(e.timer),e.resolver(null)})),M={},this.onClose&&this.onClose(),U&&U()},F=e=>{x&&x(!1)},V=e=>{O(e)?D.send(n.encode(e)):D.send(e)};this.isConnected=()=>2==N,this.connect=()=>(w(0,"Connecting to "+h),new Promise((t=>{D=e?new o(h):new o(h,{rejectUnauthorized:!1}),e&&(D.binaryType="arraybuffer"),x=t,D.addEventListener("error",F),D.addEventListener("open",J)}))),this.close=()=>D.readyState==o.OPEN?new Promise((e=>{U=e,D.close()})):(D.close(),Promise.resolve()),this.getStatus=()=>{if(2!=N)return Promise.resolve(null);const e=new Promise((e=>{R.push(e)}));if(1==R.length){const e=S.createStatusRequest();V(S.serializeObject(e))}return e},this.getLcl=()=>{if(2!=N)return Promise.resolve(null);const e=new Promise((e=>{L.push(e)}));if(1==L.length){const e=S.createLclRequest();V(S.serializeObject(e))}return e},this.submitContractInput=async(e,t,r,n)=>{if(2!=N)throw"Connection error.";if(0==r)throw"Max ledger seq no. or offset cannot be 0.";if(!n&&!r)throw"Max ledger seq. no not specified.";if(t&&(!Number.isInteger(t)||t<=0))throw"Input nonce must be a positive integer.";if(t||(t=(new Date).getTime()),n){r||(r=10);const e=await this.getLcl();if(!e)throw"Error retrieving last closed ledger.";r+=e.ledgerSeqNo}const i=S.createContractInputComponents(e,t,r),o=S.stringifyValue(i.hash),u=new Promise((e=>{j[o]=e})),s=S.createContractInputMessage(i.container,i.sig);return V(S.serializeObject(s)),{hash:S.binaryEncode(i.hash),submissionStatus:u}},this.submitContractReadRequest=(e,t,r)=>2!=N?Promise.resolve():new Promise((n=>{const i=setTimeout((()=>{n(null),delete M[t]}),r);M[t]={resolver:n,timer:i};const o=S.createReadRequest(e,t);V(S.serializeObject(o))})),this.subscribe=e=>{if(2!=N)return Promise.resolve();const t=S.createSubscriptionRequest(e,!0);return V(S.serializeObject(t)),Promise.resolve()},this.unsubscribe=e=>{if(2!=N)return Promise.resolve();const t=S.createSubscriptionRequest(e,!1);return V(S.serializeObject(t)),Promise.resolve()},this.getLedgerBySeqNo=(e,t,r)=>{if(2!=N)return Promise.resolve(null);const n={seq_no:S.serializeNumber(e)},i=S.createLedgerQuery("seq_no",n,t,r),o=new Promise((e=>{P[i.id]={type:"seq_no",resolver:e}}));return V(S.serializeObject(i)),o}}function _(e,t){this.useProtocol=e=>{t=e},this.binaryEncode=e=>t==l.json?B(e):Buffer.isBuffer(e)?e:Buffer.from(e),this.binaryDecode=e=>t==l.json?b(e):new Uint8Array(e.buffer),this.serializeObject=e=>t==l.json?JSON.stringify(e):s.serialize(e),this.deserializeMessage=e=>t==l.json?JSON.parse(e):s.deserialize(e),this.serializeInput=e=>t==l.json?O(e)?e:e.toString():Buffer.isBuffer(e)?e:Buffer.from(e),this.deserializeValue=e=>t==l.json?e:e.buffer,this.serializeNumber=e=>t==l.json?e:s.Long.fromNumber(e),this.stringifyValue=e=>{if(O(e))return e;if(e instanceof Uint8Array)return B(e);if(e.buffer)return B(new Uint8Array(e.buffer));throw"Cannot stringify signature."},this.spreadArrayField=e=>t==l.json?e:e.map((e=>e.buffer)),this.createUserChallengeResponse=(t,r,n)=>{const i=u.crypto_sign_detached(t,e.privateKey.slice(1));return{type:"user_challenge_response",sig:this.binaryEncode(i),pubkey:this.binaryEncode(e.publicKey),server_challenge:r,protocol:n}},this.createContractInputComponents=(t,r,n)=>{if(0==t.length)return null;const i={input:this.serializeInput(t),nonce:this.serializeNumber(r),max_ledger_seq_no:this.serializeNumber(n)},o=this.serializeObject(i),s=u.crypto_sign_detached(o,e.privateKey.slice(1));return{hash:new Uint8Array(f.hash(s)),container:o,sig:s}},this.createContractInputMessage=(e,t)=>({type:"contract_input",input_container:e,sig:this.binaryEncode(t)}),this.createReadRequest=(e,t)=>0==e.length?null:{type:"contract_read_request",id:t,content:this.serializeInput(e)},this.createStatusRequest=()=>({type:"stat"}),this.createLclRequest=()=>({type:"lcl"}),this.createSubscriptionRequest=(e,t)=>({type:"subscription",channel:e,enabled:t}),this.createLedgerQuery=(e,t,r,n)=>{const i=[];return r&&i.push("inputs"),n&&i.push("outputs"),{type:"ledger_query",id:"query_"+e+"_"+(new Date).getTime().toString(),filter_by:e,params:t,include:i}},this.deserializeLedger=e=>({seqNo:e.seq_no,timestamp:e.timestamp,hash:this.deserializeValue(e.hash),prevHash:this.deserializeValue(e.prev_hash),stateHash:this.deserializeValue(e.state_hash),configHash:this.deserializeValue(e.config_hash),userHash:this.deserializeValue(e.user_hash),inputHash:this.deserializeValue(e.input_hash),outputHash:this.deserializeValue(e.output_hash)}),this.deserializeHealthEvent=e=>"proposal"===e.event?{event:e.event,commLatency:e.comm_latency,readLatency:e.read_latency,batchSize:e.batch_size}:"connectivity"===e.event?{event:e.event,peerCount:e.peer_count,weaklyConnected:e.weakly_connected}:void 0}function b(e){return new Uint8Array(e.match(/.{1,2}/g).map((e=>parseInt(e,16))))}function B(e){return e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"")}function O(e){return"string"==typeof e||e instanceof String}function m(){const e={};this.on=(t,r)=>{e[t]||(e[t]=[]),e[t].push(r)},this.emit=(t,...r)=>{e[t]&&e[t].forEach((e=>e(...r)))},this.clear=t=>{t?delete e[t]:Object.keys(e).forEach((t=>delete e[t]))}}async function S(){if(e?u||(u=window.sodium||await new Promise((e=>{window.sodium={onload:async t=>e(t)}}))):(u||(u=require("libsodium-wrappers")),await u.ready),!u)throw"Sodium reference not found. Please include sodium js lib in browser scripts."}let N=null;let v=null;function A(e){a=e}function w(e,t){e>=a&&console.log(t)}e?window.HotPocket={generateKeys:p,createClient:d,events:c,notificationChannels:h,protocols:l,setLogLevel:A}:module.exports={generateKeys:p,createClient:d,events:c,notificationChannels:h,protocols:l,setLogLevel:A}})();
Code: Select all
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Simple HotPocket Upload</title>
<style>
body {
font-family: system-ui, sans-serif;
background: #f8fafc;
color: #111827;
margin: 0;
padding: 2rem;
}
.wrap {
max-width: 900px;
margin: 0 auto;
}
.card {
background: white;
border-radius: 14px;
padding: 1.5rem;
box-shadow: 0 8px 24px rgba(0,0,0,0.06);
margin-bottom: 1rem;
}
label {
display: block;
font-weight: 700;
margin-top: 1rem;
margin-bottom: 0.35rem;
}
.uploads-box {
margin-top: 1rem;
border: 1px solid #e5e7eb;
border-radius: 10px;
overflow: hidden;
}
.upload-row {
display: grid;
grid-template-columns: 1fr 110px 120px 130px;
gap: 0.75rem;
align-items: center;
padding: 0.75rem;
border-bottom: 1px solid #e5e7eb;
background: #fff;
}
.upload-row:last-child {
border-bottom: 0;
}
.upload-name {
font-family: monospace;
word-break: break-all;
}
.upload-size {
color: #6b7280;
font-size: 0.9rem;
text-align: right;
}
.upload-download {
background: #059669;
margin: 0;
padding: 0.5rem;
}
.upload-download:hover {
background: #10b981;
}
.upload-delete {
background: #dc2626;
margin: 0;
padding: 0.5rem;
}
.upload-delete:hover {
background: #ef4444;
}
.upload-delete.confirming {
background: #b45309;
}
.upload-delete.confirming:hover {
background: #d97706;
}
.empty-list {
padding: 1rem;
color: #6b7280;
background: #fff;
}
input,
textarea,
button {
width: 100%;
box-sizing: border-box;
padding: 0.75rem;
border-radius: 8px;
border: 1px solid #d1d5db;
font-size: 1rem;
}
textarea {
min-height: 70px;
font-family: monospace;
}
button {
border: 0;
background: #4f46e5;
color: white;
cursor: pointer;
font-weight: 700;
margin-top: 1rem;
}
button:hover {
background: #6366f1;
}
button:disabled {
background: #9ca3af;
cursor: not-allowed;
}
.danger {
background: #dc2626;
}
.danger:hover {
background: #ef4444;
}
.row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
}
pre {
background: #111827;
color: #e5e7eb;
padding: 1rem;
border-radius: 10px;
min-height: 260px;
max-height: 460px;
overflow: auto;
white-space: pre-wrap;
}
.small {
color: #6b7280;
font-size: 0.9rem;
}
code {
background: #eef2ff;
padding: 0.1rem 0.3rem;
border-radius: 4px;
}
@media (max-width: 700px) {
.row {
grid-template-columns: 1fr;
}
}
</style>
<script src="./sodium.js"></script>
<script src="./hotpocket-js-client.min.js"></script>
</head>
<body>
<div class="wrap">
<div class="card">
<h1>Upload Files to Cluster</h1>
<p class="small">
Files are uploaded into <code>uploads/</code>. If a file already exists, the contract rejects it.
</p>
<label>HotPocket websocket endpoint</label>
<input id="endpoint" value="" />
<div class="row">
<div>
<label>Generated public key</label>
<textarea id="publicKey" readonly></textarea>
</div>
<div>
<label>Generated private key</label>
<textarea id="privateKey" readonly></textarea>
</div>
</div>
<button id="connectBtn">Connect</button>
<button id="regenKeyBtn" class="danger">Generate New Keypair</button>
<p class="small">
The private key is saved in this browser's localStorage for testing.
</p>
</div>
<div class="card">
<h2>Select Files</h2>
<label>Target directory inside uploads/</label>
<input id="targetDir" placeholder="Example: images or docs/reports" />
<p class="small">
Empty means upload directly into <code>uploads/</code>.
Typing <code>images</code> uploads selected files into <code>uploads/images/</code>.
</p>
<label>Files</label>
<input id="fileInput" type="file" multiple />
<button id="uploadBtn" disabled>Upload</button>
<button id="listBtn" disabled>List Uploads</button>
<div id="uploadsGui" class="uploads-box">
<div class="empty-list">No uploads loaded yet.</div>
</div>
</div>
<div class="card">
<h2>Log</h2>
<pre id="log"></pre>
</div>
</div>
<script type="module">
import { BSON } from 'https://esm.sh/bson@6.4.0';
const CHUNK_SIZE = 2000 * 1024;
const STORAGE_KEY = 'simpleUploadHotPocketPrivateKeyHex';
let client = null;
let connected = false;
let userKeyPair = null;
const pending = new Map();
const pendingActions = new Map();
const endpointEl = document.getElementById('endpoint');
const publicKeyEl = document.getElementById('publicKey');
const privateKeyEl = document.getElementById('privateKey');
const targetDirEl = document.getElementById('targetDir');
const fileInputEl = document.getElementById('fileInput');
const connectBtn = document.getElementById('connectBtn');
const regenKeyBtn = document.getElementById('regenKeyBtn');
const uploadBtn = document.getElementById('uploadBtn');
const listBtn = document.getElementById('listBtn');
const logEl = document.getElementById('log');
connectBtn.addEventListener('click', connect);
regenKeyBtn.addEventListener('click', regenerateKeypair);
uploadBtn.addEventListener('click', uploadSelectedFiles);
listBtn.addEventListener('click', listUploads);
init();
async function init() {
try {
await ensureSodiumReady();
await loadOrCreateKeypair();
log('Ready.');
} catch (err) {
log('Init failed: ' + stringifyError(err));
}
}
function log(message) {
const line = `[${new Date().toLocaleTimeString()}] ${message}`;
logEl.textContent += line + '\n';
logEl.scrollTop = logEl.scrollHeight;
}
function formatBytes(bytes) {
const size = Number(bytes || 0);
if (size < 1024) return `${size} B`;
if (size < 1024 * 1024) return `${(size / 1024).toFixed(1)} KB`;
if (size < 1024 * 1024 * 1024) return `${(size / 1024 / 1024).toFixed(1)} MB`;
return `${(size / 1024 / 1024 / 1024).toFixed(1)} GB`;
}
function makeActionId() {
return crypto.randomUUID
? crypto.randomUUID()
: `action-${Date.now()}-${Math.random().toString(16).slice(2)}`;
}
function waitForAction(actionId) {
return new Promise((resolve, reject) => {
const timeout = setTimeout(() => {
pendingActions.delete(actionId);
reject(new Error('Timed out waiting for contract response.'));
}, 45000);
pendingActions.set(actionId, {
resolve,
reject,
timeout
});
});
}
async function submitActionMessage(message) {
const actionId = makeActionId();
const waitPromise = waitForAction(actionId);
const payload = BSON.serialize({
...message,
actionId
});
const submission = await client.submitContractInput(payload);
const status = await submission.submissionStatus;
if (status.status !== 'accepted') {
const waiter = pendingActions.get(actionId);
if (waiter) {
clearTimeout(waiter.timeout);
pendingActions.delete(actionId);
}
throw new Error('Contract input rejected: ' + JSON.stringify(status));
}
return waitPromise;
}
async function submitReadMessage(message, timeoutMs = 30000) {
const response = await client.submitContractReadRequest(
BSON.serialize(message),
null,
timeoutMs
);
return BSON.deserialize(normalizeOutputRaw(response));
}
function hexToUint8Array(hex) {
const clean = String(hex || '');
if (clean.length % 2 !== 0) {
throw new Error('Invalid hex chunk length.');
}
const bytes = new Uint8Array(clean.length / 2);
for (let i = 0; i < clean.length; i += 2) {
bytes[i / 2] = Number.parseInt(clean.slice(i, i + 2), 16);
}
return bytes;
}
function bsonBinaryToUint8Array(value) {
if (!value) {
return new Uint8Array();
}
if (value instanceof Uint8Array) {
return value;
}
if (value instanceof ArrayBuffer) {
return new Uint8Array(value);
}
if (Array.isArray(value)) {
return new Uint8Array(value);
}
// BSON Binary from the browser bson package usually exposes value() or buffer.
if (typeof value.value === 'function') {
return bsonBinaryToUint8Array(value.value());
}
if (value.buffer instanceof ArrayBuffer) {
const offset = Number(value.byteOffset || 0);
const length = Number(value.byteLength || value.buffer.byteLength);
return new Uint8Array(value.buffer, offset, length);
}
if (value.buffer instanceof Uint8Array) {
return value.buffer;
}
if (Array.isArray(value.buffer)) {
return new Uint8Array(value.buffer);
}
// Some decoded BSON/browser polyfills expose Buffer-like { data: [...] }.
if (value.data && Array.isArray(value.data)) {
return new Uint8Array(value.data);
}
throw new Error('Unsupported BSON binary chunk format.');
}
function getBaseFileName(filename) {
return String(filename || 'download')
.replace(/\\/g, '/')
.split('/')
.pop() || 'download';
}
function resetDownloadButton(button) {
if (!button) return;
button.disabled = false;
button.textContent = 'Download';
}
async function downloadUpload(filename, button) {
if (!connected || !client) {
log('Connect first.');
return;
}
button.disabled = true;
button.textContent = 'Preparing...';
try {
const info = await submitReadMessage({
type: 'get-upload-info',
filename
});
if (info.type === 'error') {
throw new Error(info.error || 'Contract returned an error.');
}
if (info.type !== 'download-info') {
throw new Error(`Unexpected download info response: ${JSON.stringify(info)}`);
}
const safeFilename = info.filename || filename;
const totalChunks = Number(info.totalChunks || 0);
const size = Number(info.size || 0);
if (!Number.isInteger(totalChunks) || totalChunks < 1) {
throw new Error('Invalid totalChunks in download response.');
}
log(`Downloading uploads/${safeFilename} (${formatBytes(size)}, ${totalChunks} chunk(s))`);
const chunks = [];
for (let chunkNo = 1; chunkNo <= totalChunks; chunkNo++) {
button.textContent = `Downloading ${chunkNo}/${totalChunks}`;
const part = await submitReadMessage({
type: 'get-upload-chunk',
filename: safeFilename,
chunkNo
});
if (part.type === 'error') {
throw new Error(part.error || 'Contract returned an error.');
}
if (part.type !== 'download-chunk') {
throw new Error(`Unexpected download chunk response: ${JSON.stringify(part)}`);
}
if (part.chunk) {
chunks.push(bsonBinaryToUint8Array(part.chunk));
} else if (part.chunkHex) {
// Backward-compatible fallback, but the fixed contract sends `chunk`.
chunks.push(hexToUint8Array(part.chunkHex));
} else {
throw new Error('Download chunk response did not include chunk data.');
}
log(`✓ downloaded ${chunkNo}/${totalChunks}`);
}
const blob = new Blob(chunks, { type: 'application/octet-stream' });
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = getBaseFileName(safeFilename);
document.body.appendChild(link);
link.click();
link.remove();
setTimeout(() => URL.revokeObjectURL(url), 1000);
log(`Downloaded uploads/${safeFilename}`);
} catch (err) {
log('Download failed: ' + stringifyError(err));
} finally {
resetDownloadButton(button);
}
}
function renderUploads(files) {
const box = document.getElementById('uploadsGui');
box.innerHTML = '';
if (!Array.isArray(files) || files.length === 0) {
const empty = document.createElement('div');
empty.className = 'empty-list';
empty.textContent = 'No uploaded files found.';
box.appendChild(empty);
return;
}
files
.slice()
.sort((a, b) => String(a.filename).localeCompare(String(b.filename)))
.forEach(file => {
const row = document.createElement('div');
row.className = 'upload-row';
const name = document.createElement('div');
name.className = 'upload-name';
name.textContent = `uploads/${file.filename}`;
const size = document.createElement('div');
size.className = 'upload-size';
size.textContent = formatBytes(file.size);
const download = document.createElement('button');
download.className = 'upload-download';
download.textContent = 'Download';
download.addEventListener('click', () => {
downloadUpload(file.filename, download);
});
const del = document.createElement('button');
del.className = 'upload-delete';
del.textContent = 'Delete';
del.dataset.state = 'idle';
del.addEventListener('click', () => {
if (del.dataset.state !== 'confirm') {
del.dataset.state = 'confirm';
del.classList.add('confirming');
del.textContent = 'Confirm delete';
setTimeout(() => {
if (del.dataset.state === 'confirm' && !del.disabled) {
del.dataset.state = 'idle';
del.classList.remove('confirming');
del.textContent = 'Delete';
}
}, 5000);
return;
}
deleteUpload(file.filename, del);
});
row.appendChild(name);
row.appendChild(size);
row.appendChild(download);
row.appendChild(del);
box.appendChild(row);
});
}
async function deleteUpload(filename, button) {
if (!connected || !client) {
log('Connect first.');
return;
}
button.disabled = true;
button.textContent = 'Deleting...';
try {
await submitActionMessage({
type: 'delete-upload',
filename
});
await listUploads(true);
} catch (err) {
log('Delete failed: ' + stringifyError(err));
button.disabled = false;
button.dataset.state = 'idle';
button.classList.remove('confirming');
button.textContent = 'Delete';
}
}
function stringifyError(err) {
if (!err) return 'Unknown error';
if (typeof err === 'string') return err;
if (err.message) return err.message;
return JSON.stringify(err);
}
async function ensureSodiumReady() {
if (!window.sodium) {
throw new Error('libsodium was not loaded.');
}
if (window.sodium.ready) {
await window.sodium.ready;
}
if (typeof window.sodium.crypto_sign_keypair !== 'function') {
throw new Error('libsodium is loaded, but crypto_sign_keypair() is missing.');
}
}
function bytesToHex(value) {
if (typeof value === 'string') {
return value.trim();
}
let bytes;
if (value instanceof Uint8Array) {
bytes = value;
} else if (value instanceof ArrayBuffer) {
bytes = new Uint8Array(value);
} else if (Array.isArray(value)) {
bytes = new Uint8Array(value);
} else if (value && value.data && Array.isArray(value.data)) {
bytes = new Uint8Array(value.data);
} else {
throw new Error('Unsupported bytes format.');
}
return Array.from(bytes)
.map(byte => byte.toString(16).padStart(2, '0'))
.join('');
}
async function loadOrCreateKeypair() {
const savedPrivateKeyHex = localStorage.getItem(STORAGE_KEY);
if (savedPrivateKeyHex) {
userKeyPair = await window.HotPocket.generateKeys(savedPrivateKeyHex);
log('Loaded saved keypair.');
} else {
userKeyPair = await window.HotPocket.generateKeys();
const privateKeyHex = bytesToHex(userKeyPair.privateKey);
localStorage.setItem(STORAGE_KEY, privateKeyHex);
log('Generated new keypair.');
}
publicKeyEl.value = bytesToHex(userKeyPair.publicKey);
privateKeyEl.value = bytesToHex(userKeyPair.privateKey);
}
async function regenerateKeypair() {
try {
await ensureSodiumReady();
if (connected && client) {
client.close();
connected = false;
uploadBtn.disabled = true;
uploadBtn.textContent = 'Uploading...';
listBtn.disabled = true;
connectBtn.textContent = 'Connect';
}
userKeyPair = await window.HotPocket.generateKeys();
const privateKeyHex = bytesToHex(userKeyPair.privateKey);
localStorage.setItem(STORAGE_KEY, privateKeyHex);
publicKeyEl.value = bytesToHex(userKeyPair.publicKey);
privateKeyEl.value = privateKeyHex;
log('Generated and saved new keypair.');
} catch (err) {
log('Key generation failed: ' + stringifyError(err));
}
}
function normalizeTypedDirectory(value) {
let dir = String(value || '').trim();
dir = dir.replace(/\\/g, '/');
dir = dir.replace(/^\/+/, '');
dir = dir.replace(/\/+$/, '');
dir = dir.replace(/\/+/g, '/');
if (!dir) {
return '';
}
const parts = dir.split('/');
if (parts.includes('..') || parts.includes('.')) {
throw new Error('Target directory cannot contain . or ...');
}
return parts
.map(part => part.replace(/[^a-zA-Z0-9._-]/g, '_'))
.filter(Boolean)
.join('/');
}
function normalizeFileName(name) {
return String(name || '')
.replace(/\\/g, '/')
.split('/')
.pop()
.replace(/[^a-zA-Z0-9._ #()\-]/g, '_')
.trim();
}
function makeUploadFilename(file) {
const dir = normalizeTypedDirectory(targetDirEl.value);
const cleanName = normalizeFileName(file.name);
if (!cleanName) {
throw new Error('Invalid file name.');
}
return dir ? `${dir}/${cleanName}` : cleanName;
}
function arrayBufferToHex(buffer) {
const bytes = new Uint8Array(buffer);
let hex = '';
for (const byte of bytes) {
hex += byte.toString(16).padStart(2, '0');
}
return hex;
}
function makeUploadId() {
return crypto.randomUUID
? crypto.randomUUID()
: `${Date.now()}-${Math.random().toString(16).slice(2)}`;
}
function normalizeOutputRaw(raw) {
if (raw instanceof Uint8Array) return raw;
if (raw instanceof ArrayBuffer) return new Uint8Array(raw);
if (raw && raw.data) return new Uint8Array(raw.data);
return raw;
}
function handleContractOutput(result) {
for (const raw of result.outputs || []) {
let output;
try {
output = BSON.deserialize(normalizeOutputRaw(raw));
} catch (err) {
log('Could not decode contract output: ' + stringifyError(err));
continue;
}
if (output.type === 'uploads') {
renderUploads(output.data);
log(`Loaded ${Array.isArray(output.data) ? output.data.length : 0} uploaded file(s).`);
}
if (output.type === 'delete-success') {
log(output.message || `Deleted uploads/${output.filename}`);
}
if (output.type === 'error' && output.action === 'delete-upload') {
log('Delete error: ' + output.error);
}
if (output.actionId && pendingActions.has(output.actionId)) {
const waiter = pendingActions.get(output.actionId);
pendingActions.delete(output.actionId);
clearTimeout(waiter.timeout);
if (output.type === 'error') {
waiter.reject(new Error(output.error || 'Contract returned an error.'));
} else {
waiter.resolve(output);
}
continue;
}
const key = output.uploadId && output.chunkNo
? `${output.uploadId}:${output.chunkNo}`
: null;
if (key && pending.has(key)) {
const waiter = pending.get(key);
pending.delete(key);
clearTimeout(waiter.timeout);
if (output.type === 'error') {
waiter.reject(new Error(output.error || 'Contract returned an error.'));
} else {
waiter.resolve(output);
}
} else if (!output.actionId) {
log(JSON.stringify(output, null, 2));
}
}
}
async function connect() {
try {
await ensureSodiumReady();
if (!userKeyPair) {
await loadOrCreateKeypair();
}
if (connected && client) {
client.close();
connected = false;
uploadBtn.disabled = true;
listBtn.disabled = true;
connectBtn.textContent = 'Connect';
log('Disconnected.');
return;
}
const endpoint = endpointEl.value.trim();
if (!endpoint) {
throw new Error('Endpoint is required.');
}
client = await window.HotPocket.createClient(
[endpoint],
userKeyPair,
{
protocol: window.HotPocket.protocols.bson,
requiredConnectionCount: 1,
connectionTimeoutMs: 10000
}
);
client.on(window.HotPocket.events.contractOutput, handleContractOutput);
client.on(window.HotPocket.events.disconnect, () => {
connected = false;
uploadBtn.disabled = true;
listBtn.disabled = true;
connectBtn.textContent = 'Connect';
log('Disconnected by server.');
});
const ok = await client.connect();
if (!ok) {
throw new Error('Failed to connect.');
}
connected = true;
uploadBtn.disabled = false;
listBtn.disabled = false;
connectBtn.textContent = 'Disconnect';
log('Connected.');
} catch (err) {
log('Connect failed: ' + stringifyError(err));
}
}
function waitForChunk(uploadId, chunkNo) {
const key = `${uploadId}:${chunkNo}`;
return new Promise((resolve, reject) => {
const timeout = setTimeout(() => {
pending.delete(key);
reject(new Error(`Timed out waiting for chunk ${chunkNo}.`));
}, 45000);
pending.set(key, { resolve, reject, timeout });
});
}
async function submitUploadMessage(message) {
const key = `${message.uploadId}:${message.chunkNo}`;
const waitPromise = waitForChunk(message.uploadId, message.chunkNo);
const payload = BSON.serialize(message);
const submission = await client.submitContractInput(payload);
const status = await submission.submissionStatus;
if (status.status !== 'accepted') {
const waiter = pending.get(key);
if (waiter) {
clearTimeout(waiter.timeout);
pending.delete(key);
}
throw new Error('Contract input rejected: ' + JSON.stringify(status));
}
return waitPromise;
}
async function submitSimpleMessage(message) {
const payload = BSON.serialize(message);
const submission = await client.submitContractInput(payload);
const status = await submission.submissionStatus;
if (status.status !== 'accepted') {
throw new Error('Contract input rejected: ' + JSON.stringify(status));
}
}
function getSelectedFiles() {
const files = Array.from(fileInputEl.files || []);
const seen = new Set();
return files.filter(file => {
const key = `${file.name}:${file.size}:${file.lastModified}`;
if (seen.has(key)) return false;
seen.add(key);
return true;
});
}
async function uploadSelectedFiles() {
if (!connected || !client) {
log('Connect first.');
return;
}
const files = getSelectedFiles();
if (files.length === 0) {
log('Select at least one file.');
return;
}
uploadBtn.disabled = true;
try {
const dir = normalizeTypedDirectory(targetDirEl.value);
log(
dir
? `Target: uploads/${dir}/`
: 'Target: uploads/'
);
log(`Starting upload of ${files.length} file(s).`);
for (const file of files) {
await uploadFile(file);
}
log('All uploads completed.');
await listUploads(true);
} catch (err) {
log('Upload stopped: ' + stringifyError(err));
} finally {
uploadBtn.disabled = false;
uploadBtn.textContent = 'Upload';
}
}
async function uploadFile(file) {
const filename = makeUploadFilename(file);
const totalChunks = Math.max(1, Math.ceil(file.size / CHUNK_SIZE));
const uploadId = makeUploadId();
log(`Uploading ${filename} (${file.size} bytes, ${totalChunks} chunk(s))`);
for (let chunkNo = 1; chunkNo <= totalChunks; chunkNo++) {
let chunkHex = '';
if (file.size > 0) {
const start = (chunkNo - 1) * CHUNK_SIZE;
const end = Math.min(start + CHUNK_SIZE, file.size);
const buffer = await file.slice(start, end).arrayBuffer();
chunkHex = arrayBufferToHex(buffer);
}
const message = {
type: 'upload',
uploadId,
filename,
chunkNo,
totalChunks,
chunk: chunkHex
};
const response = await submitUploadMessage(message);
if (response.type === 'ack') {
log(`✓ ${filename} chunk ${chunkNo}/${totalChunks}`);
}
if (response.type === 'success') {
log(`✓ ${response.message}`);
}
}
}
async function listUploads(silent = false) {
if (!connected || !client) {
log('Connect first.');
return;
}
listBtn.disabled = true;
listBtn.textContent = 'Loading...';
try {
await submitActionMessage({
type: 'list-uploads'
});
if (!silent) {
log('Uploads list refreshed.');
}
} catch (err) {
log('List failed: ' + stringifyError(err));
} finally {
listBtn.disabled = false;
listBtn.textContent = 'List Uploads';
}
}
</script>
</body>
</html>Code: Select all
!function(A){function g(A){"use strict";var g;void 0===(g=A)&&(g={});var I=g;"object"!=typeof I.sodium&&("object"==typeof global?I=global:"object"==typeof window&&(I=window));var C=g;return g.ready=new Promise((function(A,g){(e=C).onAbort=g,e.print=function(A){},e.printErr=function(A){},e.onRuntimeInitialized=function(){try{e._crypto_secretbox_keybytes(),A()}catch(A){g(A)}},e.useBackupModule=function(){return new Promise((function(A,g){(e={}).onAbort=g,e.onRuntimeInitialized=function(){Object.keys(C).forEach((function(A){"getRandomValue"!==A&&delete C[A]})),Object.keys(e).forEach((function(A){C[A]=e[A]})),A()};var I,e=void 0!==e?e:{},B="object"==typeof window,a="function"==typeof importScripts,i="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,r=Object.assign({},e),t="";if(i){var Q=require("fs"),o=require("path");t=__dirname+"/",I=A=>(A=K(A)?new URL(A):o.normalize(A),Q.readFileSync(A)),!e.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),"undefined"!=typeof module&&(module.exports=e)}else(B||a)&&(a?t=self.location.href:"undefined"!=typeof document&&document.currentScript&&(t=document.currentScript.src),t=t.startsWith("blob:")?"":t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1),a&&(I=A=>{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}));e.print;var c,E=e.printErr||void 0;Object.assign(e,r),r=null,e.arguments&&e.arguments,e.thisProgram&&e.thisProgram,e.quit&&e.quit,e.wasmBinary&&(c=e.wasmBinary);var y,_={Memory:function(A){this.buffer=new ArrayBuffer(65536*A.initial)},Module:function(A){},Instance:function(A,g){this.exports=function(A){for(var g,I=new Uint8Array(123),C=25;C>=0;--C)I[48+C]=52+C,I[65+C]=C,I[97+C]=26+C;function e(A,g,C){for(var e,B,a=0,i=g,r=C.length,t=g+(3*r>>2)-("="==C[r-2])-("="==C[r-1]);a<r;a+=4)e=I[C.charCodeAt(a+1)],B=I[C.charCodeAt(a+2)],A[i++]=I[C.charCodeAt(a)]<<2|e>>4,i<t&&(A[i++]=e<<4|B>>2),i<t&&(A[i++]=B<<6|I[C.charCodeAt(a+3)])}function B(){throw new Error("abort")}return I[43]=62,I[47]=63,function(A){var I=new ArrayBuffer(16777216),C=new Int8Array(I),a=(new Int16Array(I),new Int32Array(I)),i=new Uint8Array(I),r=(new Uint16Array(I),new Uint32Array(I)),t=(new Float32Array(I),new Float64Array(I),Math.imul),Q=(Math.fround,Math.abs,Math.clz32),o=(Math.min,Math.max,Math.floor,Math.ceil,Math.trunc,Math.sqrt,A.a),c=o.a,E=o.b,y=o.c,_=o.d,n=103200,h=0;function s(A,g){var I,e,B,a,r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,iA=0,rA=0,tA=0,QA=0,oA=0,cA=0,EA=0,yA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,kA=0,dA=0,lA=0,uA=0,SA=0,bA=0,MA=0;EA=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,_A=t=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,IA=i[g+104|0]|i[g+105|0]<<8|i[g+106|0]<<16|i[g+107|0]<<24,nA=t=i[g+108|0]|i[g+109|0]<<8|i[g+110|0]<<16|i[g+111|0]<<24,t=i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24,z=i[g+64|0]|i[g+65|0]<<8|i[g+66|0]<<16|i[g+67|0]<<24,eA=t,uA=t=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,u=t,rA=i[g+120|0]|i[g+121|0]<<8|i[g+122|0]<<16|i[g+123|0]<<24,fA=t=i[g+124|0]|i[g+125|0]<<8|i[g+126|0]<<16|i[g+127|0]<<24,B=t=i[g+92|0]|i[g+93|0]<<8|i[g+94|0]<<16|i[g+95|0]<<24,I=i[g+88|0]|i[g+89|0]<<8|i[g+90|0]<<16|i[g+91|0]<<24,q=t,iA=i[g+80|0]|i[g+81|0]<<8|i[g+82|0]<<16|i[g+83|0]<<24,sA=t=i[g+84|0]|i[g+85|0]<<8|i[g+86|0]<<16|i[g+87|0]<<24,j=t,BA=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,t=(QA=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24)+u|0,L=(tA=i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24)+(oA=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24)|0,t=(i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24)+(tA>>>0>L>>>0?t+1|0:t)|0,t=(BA=(Q=L)>>>0>(L=L+BA|0)>>>0?t+1|0:t)+_A|0,aA=yA=L+EA|0,yA=t=yA>>>0<L>>>0?t+1|0:t,L=vA(L^(i[A+80|0]|i[A+81|0]<<8|i[A+82|0]<<16|i[A+83|0]<<24)^-79577749,BA^(i[A+84|0]|i[A+85|0]<<8|i[A+86|0]<<16|i[A+87|0]<<24)^528734635,32),kA=t=h,t=t+1013904242|0,BA=L,V=t=(L=L-23791573|0)>>>0<4271175723?t+1|0:t,QA=vA(L^tA,t^QA,40),t=(t=yA)+(yA=h)|0,tA=vA(BA^(s=tA=QA+aA|0),kA^(p=s>>>0<QA>>>0?t+1|0:t),48),t=V+(P=h)|0,k=t=(tA=L+(f=tA)|0)>>>0<L>>>0?t+1|0:t,tA=t=vA(QA^(w=tA),yA^t,1),V=L=h,yA=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,kA=t=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,cA=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,L=(QA=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24)+(BA=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24)|0,t=(SA=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24)+(MA=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24)|0,t=(i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24)+(L>>>0<BA>>>0?t+1|0:t)|0,t=kA+(aA=(Q=L)>>>0>(L=L+cA|0)>>>0?t+1|0:t)|0,t=(cA=L+yA|0)>>>0<L>>>0?t+1|0:t,Q=vA(L^(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)^725511199,aA^(i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24)^-1694144372,32),y=vA(BA^(o=Q-2067093701|0),MA^(x=(Y=L=h)-((Q>>>0<2067093701)+1150833018|0)|0),40),t=(R=h)+t|0,t=(K=(d=L=y+cA|0)>>>0<y>>>0?t+1|0:t)+V|0,t=(d>>>0>(L=d+tA|0)>>>0?t+1|0:t)+j|0,t=(BA=(c=L)>>>0>(L=L+iA|0)>>>0?t+1|0:t)+q|0,J=q=L+I|0,n=t=q>>>0<L>>>0?t+1|0:t,D=tA,DA=V,V=L,aA=BA,tA=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,L=t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,MA=t=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a=BA=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,j=t,t=(dA=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)+(E=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24)|0,t=a+((q=i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24)>>>0>(c=q+(BA=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)|0)>>>0?t+1|0:t)|0,t=(cA=(j=c+j|0)>>>0<c>>>0?t+1|0:t)+L|0,pA=c=j+tA|0,c=t=c>>>0<j>>>0?t+1|0:t,_=q,q=vA(j^(i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)^-1377402159,cA^(i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24)^1359893119,32),cA=t=h,t=t+1779033703|0,j=q,M=t=(q=q-205731576|0)>>>0<4089235720?t+1|0:t,E=vA(_^(l=q),t^E,40),t=(G=h)+c|0,_=vA(j^(c=q=E+pA|0),cA^(v=E>>>0>c>>>0?t+1|0:t),48),t=vA(_^V,(W=h)^aA,32),O=q=h,U=t,e=t=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,cA=pA=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,b=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,q=(aA=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24)+(j=i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24)|0,t=(lA=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24)+(H=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24)|0,t=(i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24)+(q>>>0<j>>>0?t+1|0:t)|0,t=e+(V=(S=q)>>>0>(q=b+q|0)>>>0?t+1|0:t)|0,t=(b=q+cA|0)>>>0<q>>>0?t+1|0:t,V=vA(q^(i[A+88|0]|i[A+89|0]<<8|i[A+90|0]<<16|i[A+91|0]<<24)^327033209,V^(i[A+92|0]|i[A+93|0]<<8|i[A+94|0]<<16|i[A+95|0]<<24)^1541459225,32),j=vA(j^(cA=V+1595750129|0),(S=H)^(H=(F=q=h)-((V>>>0<2699217167)+1521486533|0)|0),40),t=(gA=h)+t|0,q=vA((b=q=j+b|0)^V,F^(S=b>>>0<j>>>0?t+1|0:t),48),t=H+($=h)|0,N=t=(q=cA+(H=q)|0)>>>0<cA>>>0?t+1|0:t,t=O+t|0,X=D^(V=U+(F=q)|0),D=t=V>>>0<F>>>0?t+1|0:t,cA=vA(X,t^DA,40),t=(DA=h)+n|0,q=vA(J=U^(n=q=cA+J|0),O^(U=n>>>0<cA>>>0?t+1|0:t),48),t=D+(CA=h)|0,O=t=(D=V+(J=q)|0)>>>0<V>>>0?t+1|0:t,q=(m=vA(D^cA,DA^t,1))+(V=i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)|0,t=(hA=h)+(DA=i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)|0,wA=q,T=q>>>0<V>>>0?t+1|0:t,Z=nA,q=i[g+96|0]|i[g+97|0]<<8|i[g+98|0]<<16|i[g+99|0]<<24,cA=t=i[g+100|0]|i[g+101|0]<<8|i[g+102|0]<<16|i[g+103|0]<<24,j=(t=s)+(s=vA(F^j,N^gA,1))|0,t=(F=h)+p|0,t=(s>>>0>j>>>0?t+1|0:t)+cA|0,t=(p=(p=j)>>>0>(j=q+j|0)>>>0?t+1|0:t)+Z|0,X=N=j+IA|0,N=t=N>>>0<j>>>0?t+1|0:t,d=vA(Q^d,K^Y,48),K=t=vA(d^j,(Y=h)^p,32),t=M+W|0,t=(gA=j=h)+(l=(j=_+l|0)>>>0<_>>>0?t+1|0:t)|0,M=t=(p=j)>>>0>(_=p+K|0)>>>0?t+1|0:t,s=vA(_^s,F^t,40),t=(W=h)+N|0,t=(F=s>>>0>(N=j=s+X|0)>>>0?t+1|0:t)+T|0,t=(Q=N>>>0>(j=N+wA|0)>>>0?t+1|0:t)+fA|0,wA=T=j+rA|0,T=t=T>>>0<j>>>0?t+1|0:t,X=j,Z=Q,j=i[g+116|0]|i[g+117|0]<<8|i[g+118|0]<<16|i[g+119|0]<<24,g=i[g+112|0]|i[g+113|0]<<8|i[g+114|0]<<16|i[g+115|0]<<24,E=vA(E^p,l^G,1),t=(G=h)+S|0,t=((Q=E+b|0)>>>0<E>>>0?t+1|0:t)+j|0,t=(p=(l=Q)>>>0>(Q=g+Q|0)>>>0?t+1|0:t)+fA|0,bA=l=Q+rA|0,l=t=l>>>0<Q>>>0?t+1|0:t,t=vA(Q^f,p^P,32),AA=Q=h,f=t,p=Q,t=Y+x|0,d=Q=o+d|0,b=t=Q>>>0<o>>>0?t+1|0:t,t=t+p|0,S=Q=Q+f|0,P=t=d>>>0>Q>>>0?t+1|0:t,p=vA(Q^E,G^t,40),t=(G=h)+l|0,f=vA((Q=p+bA|0)^f,AA^(o=Q>>>0<p>>>0?t+1|0:t),48),t=vA(f^X,(bA=h)^Z,32),AA=E=h,l=t,X=E,y=vA(y^d,b^R,1),t=v+(d=h)|0,t=((E=c)>>>0>(c=c+y|0)>>>0?t+1|0:t)+eA|0,t=(c=(E=c+z|0)>>>0<c>>>0?t+1|0:t)+DA|0,Z=v=E+V|0,v=t=v>>>0<E>>>0?t+1|0:t,b=y,E=vA(E^H,c^$,32),t=(H=h)+k|0,w=vA(b^(c=y=E+w|0),(k=E>>>0>c>>>0?t+1|0:t)^d,40),t=($=h)+v|0,d=y=w+Z|0,y=vA(E^y,H^(v=y>>>0<w>>>0?t+1|0:t),48),t=k+(r=h)|0,k=y,H=t=(y=c+y|0)>>>0<c>>>0?t+1|0:t,t=t+X|0,t=(b=y)>>>0>(y=y+l|0)>>>0?t+1|0:t,X=y,y^=m,m=t,E=vA(y,hA^t,40),t=(hA=h)+T|0,T=y=E+wA|0,t=B+(Z=E>>>0>y>>>0?t+1|0:t)|0,wA=y=y+I|0,Y=t=y>>>0<I>>>0?t+1|0:t,y=Q,x=IA,R=nA,Q=vA(K^N,F^gA,48),t=M+(gA=h)|0,K=Q,M=t=(c=_+Q|0)>>>0<_>>>0?t+1|0:t,Q=vA(c^s,W^t,1),t=(_=h)+R|0,t=((s=Q+x|0)>>>0<Q>>>0?t+1|0:t)+o|0,t=lA+(y=(o=y+s|0)>>>0<s>>>0?t+1|0:t)|0,N=s=o+aA|0,s=t=s>>>0<aA>>>0?t+1|0:t,o=vA(o^k,y^r,32),t=O+(F=h)|0,k=o,D=t=(o=D+o|0)>>>0<D>>>0?t+1|0:t,y=vA(Q^o,t^_,40),t=(t=s)+(s=h)|0,_=Q=y+N|0,Q=vA(Q^k,F^(N=Q>>>0<y>>>0?t+1|0:t),48),t=D+(W=h)|0,F=Q,O=t=(D=o+Q|0)>>>0<o>>>0?t+1|0:t,Q=vA(y^D,s^t,1),t=(s=h)+Y|0,t=e+(y=(o=Q+wA|0)>>>0<Q>>>0?t+1|0:t)|0,wA=k=o+pA|0,k=t=k>>>0<pA>>>0?t+1|0:t,Y=Q,x=s,t=P+bA|0,t=(Q=f+S|0)>>>0<f>>>0?t+1|0:t,f=Q,S=t,t=vA(Q^p,G^t,1),p=s=h,Q=t,t=v+j|0,t=((d=g+d|0)>>>0<g>>>0?t+1|0:t)+s|0,t=sA+(d=(s=Q+d|0)>>>0<d>>>0?t+1|0:t)|0,P=v=s+iA|0,v=t=v>>>0<iA>>>0?t+1|0:t,s=vA(s^J,d^CA,32),t=M+(J=h)|0,d=s,M=t=(M=c)>>>0>(c=c+s|0)>>>0?t+1|0:t,s=vA(Q^c,t^p,40),t=(G=h)+v|0,p=Q=s+P|0,Q=vA(v=Q^d,J^(d=Q>>>0<s>>>0?t+1|0:t),48),t=M+(CA=h)|0,M=Q,v=Q=c+Q|0,J=t=Q>>>0<c>>>0?t+1|0:t,P=o,R=y,Q=vA(w^b,H^$,1),t=(c=h)+u|0,t=U+((o=Q+oA|0)>>>0<Q>>>0?t+1|0:t)|0,t=eA+(y=(o=o+n|0)>>>0<n>>>0?t+1|0:t)|0,U=n=o+z|0,n=t=n>>>0<o>>>0?t+1|0:t,w=Q,Q=(o=vA(o^K,y^gA,32))+f|0,t=(f=h)+S|0,y=Q,c=vA(Q^w,(K=Q>>>0<o>>>0?t+1|0:t)^c,40),t=(gA=h)+n|0,n=Q=c+U|0,b=vA(Q^o,f^(U=Q>>>0<c>>>0?t+1|0:t),48),o=vA(b^P,(t=R)^(R=h),32),t=(P=h)+J|0,f=Q=o+v|0,w=vA(Q^Y,(S=Q>>>0<o>>>0?t+1|0:t)^x,40),t=(Y=h)+k|0,k=Q=w+wA|0,Q=vA(Q^o,P^(H=Q>>>0<w>>>0?t+1|0:t),48),t=S+($=h)|0,S=Q,P=t=(o=f)>>>0>(f=f+Q|0)>>>0?t+1|0:t,Q=vA(f^w,Y^t,1),t=fA+(wA=h)|0,Y=Q,bA=Q=rA+Q|0,w=t=Q>>>0<rA>>>0?t+1|0:t,o=EA,Q=vA(s^v,G^J,1),t=N+(s=h)|0,t=((v=_)>>>0>(_=Q+_|0)>>>0?t+1|0:t)+_A|0,t=(v=(o=o+_|0)>>>0<_>>>0?t+1|0:t)+kA|0,x=_=o+yA|0,N=t=_>>>0<o>>>0?t+1|0:t,J=Q,_=vA(l^T,Z^AA,48),t=vA(_^o,(G=h)^v,32),AA=Q=h,l=t,o=Q,t=K+R|0,t=(Q=y+b|0)>>>0<y>>>0?t+1|0:t,y=Q,K=t,t=t+o|0,v=Q=Q+l|0,b=t=y>>>0>Q>>>0?t+1|0:t,o=vA(Q^J,t^s,40),t=(t=N)+(N=h)|0,J=Q=o+x|0,T=t=Q>>>0<o>>>0?t+1|0:t,t=t+w|0,Z=t=(s=Q+bA|0)>>>0<Q>>>0?t+1|0:t,w=t,Q=vA(c^y,K^gA,1),t=L+(c=h)|0,t=d+((y=Q+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=cA+(p=(y=y+p|0)>>>0<p>>>0?t+1|0:t)|0,x=d=y+q|0,d=t=d>>>0<q>>>0?t+1|0:t,K=Q,t=vA(y^F,p^W,32),R=Q=h,y=t,p=Q,t=G+m|0,F=Q=_+X|0,m=t=Q>>>0<_>>>0?t+1|0:t,t=t+p|0,t=(_=Q+y|0)>>>0<Q>>>0?t+1|0:t,Q=_^K,K=t,p=vA(Q,t^c,40),t=(W=h)+d|0,c=Q=p+x|0,X=vA(Q^y,R^(d=Q>>>0<p>>>0?t+1|0:t),48),t=vA(X^s,(gA=h)^w,32),bA=Q=h,x=t,w=Q,Q=vA(E^F,m^hA,1),t=U+(E=h)|0,t=dA+((y=Q+n|0)>>>0<n>>>0?t+1|0:t)|0,t=(n=(y=y+BA|0)>>>0<BA>>>0?t+1|0:t)+SA|0,F=U=y+QA|0,U=t=U>>>0<y>>>0?t+1|0:t,y=vA(y^M,n^CA,32),t=O+(m=h)|0,M=y,n=E,E=t=(y=D+y|0)>>>0<D>>>0?t+1|0:t,n=vA(Q^y,n^t,40),t=(CA=h)+U|0,D=Q=n+F|0,Q=vA(F=Q^M,m^(M=Q>>>0<n>>>0?t+1|0:t),48),t=E+(G=h)|0,E=Q,U=Q=y+Q|0,F=t=Q>>>0<y>>>0?t+1|0:t,t=t+w|0,O=t=(w=Q+x|0)>>>0<Q>>>0?t+1|0:t,y=vA(w^Y,wA^t,40),t=Z+(m=h)|0,t=((Q=y+s|0)>>>0<s>>>0?t+1|0:t)+nA|0,s=Q,Z=Q=Q+IA|0,Y=t=s>>>0>Q>>>0?t+1|0:t,R=eA,s=vA(l^J,T^AA,48),t=(hA=h)+b|0,l=Q=s+v|0,t=vA(Q^o,(v=Q>>>0<s>>>0?t+1|0:t)^N,1),N=o=h,Q=t,t=d+B|0,t=((c=c+I|0)>>>0<I>>>0?t+1|0:t)+o|0,t=(c=(o=Q+c|0)>>>0<c>>>0?t+1|0:t)+R|0,b=d=o+z|0,d=t=d>>>0<o>>>0?t+1|0:t,o=vA(o^E,c^G,32),t=P+(J=h)|0,f=t=(E=o+f|0)>>>0<f>>>0?t+1|0:t,c=vA(Q^E,t^N,40),t=(T=h)+d|0,d=Q=c+b|0,o=vA(Q^o,J^(N=Q>>>0<c>>>0?t+1|0:t),48),t=f+(b=h)|0,J=t=(f=o+E|0)>>>0<E>>>0?t+1|0:t,Q=vA(c^f,T^t,1),t=(T=h)+Y|0,t=DA+((E=Q+Z|0)>>>0<Q>>>0?t+1|0:t)|0,t=(c=(E=E+V|0)>>>0<V>>>0?t+1|0:t)+u|0,wA=u=E+oA|0,u=t=u>>>0<E>>>0?t+1|0:t,P=Q,R=E,G=c,E=EA,Q=vA(n^U,F^CA,1),t=H+(n=h)|0,t=((c=k)>>>0>(k=Q+k|0)>>>0?t+1|0:t)+_A|0,t=SA+(c=(E=E+k|0)>>>0<k>>>0?t+1|0:t)|0,H=k=E+QA|0,U=t=k>>>0<QA>>>0?t+1|0:t,k=Q,c=t=vA(E^s,c^hA,32),t=K+gA|0,t=(F=Q=h)+(_=(Q=_+X|0)>>>0<_>>>0?t+1|0:t)|0,K=t=(s=Q+c|0)>>>0<Q>>>0?t+1|0:t,k=vA(s^k,t^n,40),t=(gA=h)+U|0,U=vA(H=(E=k+H|0)^c,F^(c=E>>>0<k>>>0?t+1|0:t),48),t=vA(U^R,(CA=h)^G,32),hA=n=h,H=t,F=n,Q=vA(Q^p,_^W,1),t=cA+(n=h)|0,t=M+((_=Q+q|0)>>>0<q>>>0?t+1|0:t)|0,t=dA+(D=(_=_+D|0)>>>0<D>>>0?t+1|0:t)|0,R=p=_+BA|0,p=t=p>>>0<BA>>>0?t+1|0:t,M=Q,X=n,_=vA(_^S,D^$,32),t=(S=h)+v|0,n=Q=_+l|0,D=vA(Q^M,(l=Q>>>0<_>>>0?t+1|0:t)^X,40),t=(W=h)+p|0,M=Q=D+R|0,Q=vA(Q^_,S^(v=Q>>>0<D>>>0?t+1|0:t),48),t=l+(R=h)|0,p=Q,l=Q=n+Q|0,S=t=Q>>>0<n>>>0?t+1|0:t,t=t+F|0,F=Q=Q+H|0,_=T,T=t=l>>>0>Q>>>0?t+1|0:t,_=vA(Q^P,_^t,40),t=(t=u)+(u=h)|0,X=Q=_+wA|0,P=t=Q>>>0<_>>>0?t+1|0:t,n=c,Q=vA(x^Z,Y^bA,48),t=O+($=h)|0,O=Q,c=(Q=w+Q|0)^y,y=t=Q>>>0<w>>>0?t+1|0:t,c=vA(c,t^m,1),t=(m=h)+n|0,t=e+((E=c+E|0)>>>0<c>>>0?t+1|0:t)|0,t=(n=(E=E+pA|0)>>>0<pA>>>0?t+1|0:t)+L|0,Z=w=E+tA|0,w=t=w>>>0<E>>>0?t+1|0:t,E=vA(E^p,n^R,32),t=J+(Y=h)|0,J=E,f=t=(n=f+E|0)>>>0<f>>>0?t+1|0:t,c=vA(c^n,m^t,40),t=(t=w)+(w=h)|0,p=E=c+Z|0,E=vA(x=E^J,Y^(J=E>>>0<c>>>0?t+1|0:t),48),t=f+(wA=h)|0,m=E,Z=t=(f=n+E|0)>>>0<n>>>0?t+1|0:t,E=vA(c^f,w^t,1),t=(w=h)+P|0,t=B+((c=E+X|0)>>>0<E>>>0?t+1|0:t)|0,t=j+(n=(c=c+I|0)>>>0<I>>>0?t+1|0:t)|0,bA=Y=g+c|0,Y=t=Y>>>0<g>>>0?t+1|0:t,x=E,R=w,w=c,G=n,E=vA(D^l,S^W,1),t=(n=h)+N|0,t=sA+((c=E+d|0)>>>0<E>>>0?t+1|0:t)|0,t=(D=(c=c+iA|0)>>>0<iA>>>0?t+1|0:t)+j|0,N=d=g+c|0,d=t=d>>>0<c>>>0?t+1|0:t,l=E,c=t=vA(c^O,D^$,32),D=E=h,t=K+CA|0,K=t=(E=s+U|0)>>>0<s>>>0?t+1|0:t,t=t+D|0,t=(s=E)>>>0>(E=E+c|0)>>>0?t+1|0:t,U=E,E^=l,l=t,n=vA(E,t^n,40),t=(W=h)+d|0,D=vA(d=(E=n+N|0)^c,D^(c=E>>>0<n>>>0?t+1|0:t),48),t=vA(D^w,(t=G)^(G=h),32),$=w=h,d=t,N=y,y=o,t=vA(s^k,K^gA,1),S=o=h,s=t,t=v+kA|0,t=((k=M+yA|0)>>>0<yA>>>0?t+1|0:t)+o|0,k=t=(o=s+k|0)>>>0<k>>>0?t+1|0:t,y=vA(o^y,t^b,32),t=(t=N)+(N=h)|0,s=vA((Q=y+Q|0)^s,S^(K=Q>>>0<y>>>0?t+1|0:t),40),t=k+(gA=h)|0,M=s,t=lA+((v=o)>>>0>(o=o+s|0)>>>0?t+1|0:t)|0,v=t=(s=o+aA|0)>>>0<aA>>>0?t+1|0:t,o=vA(y^s,N^t,48),t=K+(CA=h)|0,b=Q,y=o,K=Q=Q+o|0,N=t=b>>>0>Q>>>0?t+1|0:t,t=t+w|0,b=t=(w=Q+d|0)>>>0<Q>>>0?t+1|0:t,Q=(k=vA(w^x,t^R,40))+bA|0,t=(bA=h)+Y|0,S=Q,O=Q>>>0<k>>>0?t+1|0:t,Q=vA(H^X,P^hA,48),t=(H=h)+T|0,F=o=Q+F|0,x=u,u=t=o>>>0<Q>>>0?t+1|0:t,t=vA(o^_,x^t,1),X=o=h,_=t,t=c+e|0,t=((E=E+pA|0)>>>0<pA>>>0?t+1|0:t)+o|0,t=DA+(E=(o=E+_|0)>>>0<E>>>0?t+1|0:t)|0,P=c=o+V|0,c=t=c>>>0<V>>>0?t+1|0:t,o=vA(o^y,E^CA,32),t=Z+(Y=h)|0,T=o,o=(y=f+o|0)^_,_=t=y>>>0<f>>>0?t+1|0:t,E=vA(o,X^t,40),t=(t=c)+(c=h)|0,X=o=E+P|0,o=vA(f=o^T,Y^(T=o>>>0<E>>>0?t+1|0:t),48),t=_+(CA=h)|0,Z=o,y=t=(o=y+o|0)>>>0<y>>>0?t+1|0:t,E=vA(o^E,c^t,1),t=(f=h)+O|0,t=fA+((c=E+S|0)>>>0<E>>>0?t+1|0:t)|0,t=(_=(c=c+rA|0)>>>0<rA>>>0?t+1|0:t)+eA|0,AA=P=c+z|0,P=t=P>>>0<c>>>0?t+1|0:t,Y=E,x=c,R=_,E=vA(M^K,N^gA,1),t=(N=h)+nA|0,t=J+(E>>>0>(c=E+IA|0)>>>0?t+1|0:t)|0,_=t=(c=c+p|0)>>>0<p>>>0?t+1|0:t,t=vA(Q^c,t^H,32),H=Q=h,p=t,t=l+G|0,t=(Q=D+U|0)>>>0<D>>>0?t+1|0:t,D=Q,K=t,t=H+t|0,l=Q=Q+p|0,M=t=D>>>0>Q>>>0?t+1|0:t,Q=vA(Q^E,N^t,40),t=_+(G=h)|0,U=Q,t=cA+((Q=c+Q|0)>>>0<c>>>0?t+1|0:t)|0,t=(Q=Q+q|0)>>>0<q>>>0?t+1|0:t,N=Q,Q^=p,p=t,_=vA(Q,H^t,48),t=vA(_^x,(t=R)^(R=h),32),gA=Q=h,H=t,J=Q,Q=vA(n^D,K^W,1),t=kA+(c=h)|0,t=v+((E=Q+yA|0)>>>0<yA>>>0?t+1|0:t)|0,t=(n=(E=E+s|0)>>>0<s>>>0?t+1|0:t)+L|0,v=D=E+tA|0,D=t=D>>>0<E>>>0?t+1|0:t,s=Q,K=c,Q=(E=vA(E^m,n^wA,32))+F|0,t=(F=h)+u|0,c=Q,n=vA(n=Q^s,(s=Q>>>0<E>>>0?t+1|0:t)^K,40),t=(W=h)+D|0,D=Q=n+v|0,E=vA(Q^E,F^(u=Q>>>0<n>>>0?t+1|0:t),48),t=s+(K=h)|0,v=Q=E+c|0,F=t=Q>>>0<c>>>0?t+1|0:t,t=t+J|0,J=t=(s=Q+H|0)>>>0<Q>>>0?t+1|0:t,c=vA(s^Y,t^f,40),t=(m=h)+P|0,P=Q=c+AA|0,Y=t=Q>>>0<c>>>0?t+1|0:t,Q=o,f=y,y=E,o=vA(d^S,O^$,48),t=b+(AA=h)|0,d=o,w=t=(E=w+o|0)>>>0<w>>>0?t+1|0:t,t=vA(E^k,bA^t,1),b=o=h,k=t,t=p+uA|0,t=((p=N+oA|0)>>>0<oA>>>0?t+1|0:t)+o|0,p=t=(o=p+k|0)>>>0<p>>>0?t+1|0:t,y=vA(o^y,t^K,32),t=(N=h)+f|0,k=vA((Q=y+Q|0)^k,b^(f=Q>>>0<y>>>0?t+1|0:t),40),t=p+(S=h)|0,t=dA+((p=o)>>>0>(o=o+k|0)>>>0?t+1|0:t)|0,K=t=(p=o+BA|0)>>>0<BA>>>0?t+1|0:t,o=vA(y^p,N^t,48),t=f+($=h)|0,N=o,b=t=(f=Q+o|0)>>>0<Q>>>0?t+1|0:t,Q=vA(f^k,S^t,1),t=(k=h)+Y|0,t=sA+((o=Q+P|0)>>>0<Q>>>0?t+1|0:t)|0,t=fA+(y=(o=o+iA|0)>>>0<iA>>>0?t+1|0:t)|0,hA=S=o+rA|0,S=t=S>>>0<rA>>>0?t+1|0:t,O=Q,x=o,Q=vA(n^v,F^W,1),t=(n=h)+T|0,t=SA+((o=Q+X|0)>>>0<Q>>>0?t+1|0:t)|0,t=lA+(v=(o=o+QA|0)>>>0<QA>>>0?t+1|0:t)|0,X=F=o+aA|0,F=t=F>>>0<aA>>>0?t+1|0:t,T=Q,t=vA(o^d,v^AA,32),AA=Q=h,o=t,t=M+R|0,l=Q=_+l|0,d=t=Q>>>0<_>>>0?t+1|0:t,t=AA+t|0,M=t=(_=Q+o|0)>>>0<Q>>>0?t+1|0:t,n=vA(_^T,t^n,40),t=(R=h)+F|0,v=Q=n+X|0,T=vA(Q^o,AA^(F=Q>>>0<n>>>0?t+1|0:t),48),t=vA(T^x,(AA=h)^y,32),W=Q=h,X=t,y=Q,o=EA,Q=vA(l^U,d^G,1),t=u+(d=h)|0,t=((l=D)>>>0>(D=Q+D|0)>>>0?t+1|0:t)+_A|0,t=sA+(D=(o=o+D|0)>>>0<D>>>0?t+1|0:t)|0,l=u=o+iA|0,u=t=u>>>0<iA>>>0?t+1|0:t,o=vA(o^Z,D^CA,32),t=w+(U=h)|0,w=o,t=(o=E+o|0)>>>0<E>>>0?t+1|0:t,E=d,d=t,E=vA(Q^o,E^t,40),t=(G=h)+u|0,D=Q=E+l|0,Q=vA(Q^w,U^(u=Q>>>0<E>>>0?t+1|0:t),48),t=d+(x=h)|0,d=Q,l=Q=o+Q|0,U=t=Q>>>0<o>>>0?t+1|0:t,t=t+y|0,t=(w=Q+X|0)>>>0<Q>>>0?t+1|0:t,Q=w^O,O=t,k=vA(Q,t^k,40),t=(CA=h)+S|0,S=Q=k+hA|0,Z=Q>>>0<k>>>0?t+1|0:t,Q=vA(H^P,Y^gA,48),t=J+(gA=h)|0,H=Q,t=(Q=s+Q|0)>>>0<s>>>0?t+1|0:t,s=Q,J=t,t=vA(Q^c,t^m,1),m=Q=h,y=t,t=F+DA|0,t=((o=v+V|0)>>>0<V>>>0?t+1|0:t)+Q|0,t=dA+(o=(Q=o+y|0)>>>0<o>>>0?t+1|0:t)|0,v=c=Q+BA|0,c=t=c>>>0<BA>>>0?t+1|0:t,Q=vA(Q^d,o^x,32),t=b+(F=h)|0,d=Q,f=t=(o=f+Q|0)>>>0<f>>>0?t+1|0:t,y=vA(o^y,m^t,40),t=(m=h)+c|0,v=Q=y+v|0,Q=vA(c=Q^d,F^(d=Q>>>0<y>>>0?t+1|0:t),48),t=f+(hA=h)|0,f=Q,b=t=(c=o+Q|0)>>>0<o>>>0?t+1|0:t,Q=vA(c^y,m^t,1),t=(F=h)+Z|0,t=kA+((o=Q+S|0)>>>0<Q>>>0?t+1|0:t)|0,t=(y=(o=o+yA|0)>>>0<yA>>>0?t+1|0:t)+nA|0,wA=m=o+IA|0,m=t=m>>>0<o>>>0?t+1|0:t,P=Q,Y=o,x=y,Q=vA(E^l,G^U,1),t=SA+(y=h)|0,t=K+((o=Q+QA|0)>>>0<QA>>>0?t+1|0:t)|0,t=uA+(E=(o=o+p|0)>>>0<p>>>0?t+1|0:t)|0,U=p=o+oA|0,p=t=p>>>0<oA>>>0?t+1|0:t,K=Q,l=y,t=vA(o^H,E^gA,32),H=Q=h,E=t,o=Q,t=M+AA|0,t=(Q=_+T|0)>>>0<_>>>0?t+1|0:t,_=Q,M=t,t=t+o|0,t=(y=Q+E|0)>>>0<Q>>>0?t+1|0:t,Q=y^K,K=t,Q=vA(Q,t^l,40),t=(t=p)+(p=h)|0,l=o=Q+U|0,U=t=o>>>0<Q>>>0?t+1|0:t,H=vA(o^E,H^t,48),t=vA(H^Y,(t=x)^(x=h),32),G=o=h,T=t,o=vA(_^n,M^R,1),t=(_=h)+_A|0,t=u+((E=o+EA|0)>>>0<o>>>0?t+1|0:t)|0,t=e+(n=(E=E+D|0)>>>0<D>>>0?t+1|0:t)|0,R=D=E+pA|0,D=t=D>>>0<pA>>>0?t+1|0:t,u=o,M=_,E=vA(E^N,n^$,32),t=(N=h)+J|0,_=o=E+s|0,o=(n=vA(o^u,(s=o>>>0<E>>>0?t+1|0:t)^M,40))+R|0,t=(R=h)+D|0,u=o,o=vA(o^E,N^(M=o>>>0<n>>>0?t+1|0:t),48),t=s+(AA=h)|0,N=o,J=o=_+o|0,Y=t=o>>>0<_>>>0?t+1|0:t,t=G+t|0,t=(E=o+T|0)>>>0<o>>>0?t+1|0:t,o=F,F=t,_=vA(E^P,o^t,40),t=(gA=h)+m|0,D=o=_+wA|0,t=vA(o^T,G^(m=o>>>0<_>>>0?t+1|0:t),48),G=o=h,T=t,o=Q,t=K+x|0,K=Q=y+H|0,H=t=Q>>>0<y>>>0?t+1|0:t,t=vA(Q^o,t^p,1),y=o=h,Q=t,t=M+B|0,t=((s=u+I|0)>>>0<I>>>0?t+1|0:t)+o|0,t=cA+(s=(o=Q+s|0)>>>0<s>>>0?t+1|0:t)|0,x=p=o+q|0,p=t=p>>>0<q>>>0?t+1|0:t,u=Q,M=y,Q=vA(S^X,Z^W,48),t=O+(W=h)|0,S=Q,t=(Q=w+Q|0)>>>0<w>>>0?t+1|0:t,w=Q,o=vA(o^f,s^hA,32),O=t,t=t+(X=h)|0,y=Q=o+Q|0,s=vA(Q^u,(f=Q>>>0<o>>>0?t+1|0:t)^M,40),t=(Z=h)+p|0,p=Q=s+x|0,Q=vA(Q^o,X^(u=Q>>>0<s>>>0?t+1|0:t),48),t=f+($=h)|0,M=Q,X=t=(f=y+Q|0)>>>0<y>>>0?t+1|0:t,Q=vA(s^f,Z^t,1),t=dA+(x=h)|0,Z=Q,hA=Q=BA+Q|0,y=t=Q>>>0<BA>>>0?t+1|0:t,Q=vA(k^w,O^CA,1),t=(s=h)+U|0,t=lA+((o=Q+l|0)>>>0<Q>>>0?t+1|0:t)|0,t=eA+(w=(o=o+aA|0)>>>0<aA>>>0?t+1|0:t)|0,O=k=o+z|0,k=t=k>>>0<z>>>0?t+1|0:t,l=s,o=vA(o^N,w^AA,32),t=b+(AA=h)|0,U=o,t=(s=c+o|0)>>>0<c>>>0?t+1|0:t,c=l,l=t,w=vA(Q^s,c^t,40),t=(CA=h)+k|0,N=Q=w+O|0,t=(b=Q>>>0<w>>>0?t+1|0:t)+y|0,k=t=(y=Q+hA|0)>>>0<Q>>>0?t+1|0:t,O=t=vA(y^T,t^G,32),P=Q=h,Q=vA(n^J,Y^R,1),t=(c=h)+d|0,t=j+((o=Q+v|0)>>>0<Q>>>0?t+1|0:t)|0,t=(n=(o=g+o|0)>>>0<g>>>0?t+1|0:t)+L|0,Y=d=o+tA|0,d=t=d>>>0<o>>>0?t+1|0:t,v=Q,J=c,o=vA(o^S,n^W,32),t=(S=h)+H|0,c=Q=o+K|0,Q=(n=vA(Q^v,(K=Q>>>0<o>>>0?t+1|0:t)^J,40))+Y|0,t=(Y=h)+d|0,d=Q,Q=vA(Q^o,S^(v=Q>>>0<n>>>0?t+1|0:t),48),t=K+(W=h)|0,K=Q,S=t=(Q=c+Q|0)>>>0<c>>>0?t+1|0:t,t=t+P|0,H=t=(c=Q)>>>0>(Q=Q+O|0)>>>0?t+1|0:t,o=vA(Q^Z,x^t,40),t=k+(x=h)|0,J=o,t=B+((o=y+o|0)>>>0<y>>>0?t+1|0:t)|0,Z=o=o+I|0,y=o^O,O=t=o>>>0<I>>>0?t+1|0:t,o=vA(y,P^t,48),t=H+(P=h)|0,H=t=(k=Q+o|0)>>>0<Q>>>0?t+1|0:t,Q=t=vA(k^J,x^t,1),J=y=h,y=vA(c^n,S^Y,1),t=u+(n=h)|0,t=lA+((c=y+p|0)>>>0<p>>>0?t+1|0:t)|0,t=sA+(p=(c=c+aA|0)>>>0<aA>>>0?t+1|0:t)|0,x=u=c+iA|0,u=t=u>>>0<iA>>>0?t+1|0:t,S=y,Y=n,t=F+G|0,t=(y=E+T|0)>>>0<E>>>0?t+1|0:t,F=y,U=vA(N^U,b^AA,48),n=vA(c^U,p^(AA=h),32),N=t,t=t+(hA=h)|0,p=y=n+y|0,y=vA(y^S,(b=y>>>0<n>>>0?t+1|0:t)^Y,40),t=(S=h)+u|0,Y=t=(E=y+x|0)>>>0<y>>>0?t+1|0:t,t=t+J|0,t=e+((T=E)>>>0>(E=Q+E|0)>>>0?t+1|0:t)|0,t=(c=(E=E+pA|0)>>>0<pA>>>0?t+1|0:t)+_A|0,wA=u=E+EA|0,x=t=u>>>0<E>>>0?t+1|0:t,R=Q,G=E,t=vA(_^F,N^gA,1),_=E=h,Q=t,t=v+SA|0,t=((u=d+QA|0)>>>0<QA>>>0?t+1|0:t)+E|0,t=cA+(u=(E=Q+u|0)>>>0<u>>>0?t+1|0:t)|0,N=d=E+q|0,d=t=d>>>0<q>>>0?t+1|0:t,v=Q,t=vA(E^M,u^$,32),F=Q=h,E=t,u=Q,t=l+AA|0,l=Q=s+U|0,M=t=Q>>>0<s>>>0?t+1|0:t,t=t+u|0,t=(s=Q+E|0)>>>0<Q>>>0?t+1|0:t,Q=s^v;v=t,u=vA(Q,t^_,40),t=(AA=h)+d|0,U=vA(d=(Q=u+N|0)^E,F^(E=Q>>>0<u>>>0?t+1|0:t),48),t=vA(t=U^G,(G=h)^c,32),gA=c=h,N=t,d=c,c=vA(w^l,M^CA,1),t=eA+(w=h)|0,t=m+((_=c+z|0)>>>0<z>>>0?t+1|0:t)|0,t=kA+(D=(_=_+D|0)>>>0<D>>>0?t+1|0:t)|0,M=l=_+yA|0,l=t=l>>>0<yA>>>0?t+1|0:t,_=vA(_^K,D^W,32),t=X+(F=h)|0,K=_,f=t=(_=f+_|0)>>>0<f>>>0?t+1|0:t,D=vA(c^_,t^w,40),t=(W=h)+l|0,w=c=D+M|0,c=vA(l=c^K,F^(K=c>>>0<D>>>0?t+1|0:t),48),t=f+($=h)|0,l=c,M=c=_+c|0,F=t=c>>>0<_>>>0?t+1|0:t,t=t+d|0,t=(_=c+N|0)>>>0<c>>>0?t+1|0:t,c=J,J=t,f=vA(_^R,c^t,40),t=(m=h)+x|0,d=c=f+wA|0,c=vA(x=c^N,gA^(N=c>>>0<f>>>0?t+1|0:t),48),t=J+(gA=h)|0,J=c,_=t=(c=_+c|0)>>>0<_>>>0?t+1|0:t,m=t=vA(c^f,m^t,1),CA=t,X=f=h,f=E,E=y,y=vA(n^T,Y^hA,48),t=b+(hA=h)|0,b=y,t=(y=p+y|0)>>>0<p>>>0?t+1|0:t,p=Q,Q=E^y,E=t,Q=vA(Q,t^S,1),t=(S=h)+f|0,t=uA+(Q>>>0>(n=p+Q|0)>>>0?t+1|0:t)|0,t=nA+(p=(n=n+oA|0)>>>0<oA>>>0?t+1|0:t)|0,T=f=n+IA|0,f=t=f>>>0<IA>>>0?t+1|0:t,n=vA(n^l,p^$,32),t=H+(Y=h)|0,l=t=(p=n+k|0)>>>0<k>>>0?t+1|0:t,k=vA(Q^p,S^t,40),t=($=h)+f|0,S=Q=k+T|0,n=vA(Q^n,Y^(H=Q>>>0<k>>>0?t+1|0:t),48),t=l+(T=h)|0,Y=Q=n+p|0,l=Q,x=t=Q>>>0<p>>>0?t+1|0:t,p=y,f=E,t=v+G|0,t=(Q=s+U|0)>>>0<s>>>0?t+1|0:t,s=Q,Q^=u,u=t,t=vA(Q,AA^t,1),R=Q=h,v=t,E=t,t=K+L|0,t=((y=w+tA|0)>>>0<tA>>>0?t+1|0:t)+Q|0,w=t=(Q=y)>>>0>(y=E+y|0)>>>0?t+1|0:t,E=vA(o^y,t^P,32),t=(t=f)+(f=h)|0,U=Q=E+p|0,o=vA(o=Q^v,R^(v=Q>>>0<E>>>0?t+1|0:t),40),t=w+(P=h)|0,t=DA+((Q=o+y|0)>>>0<y>>>0?t+1|0:t)|0,R=t=(p=Q+V|0)>>>0<V>>>0?t+1|0:t,f=vA(E^p,f^t,48),wA=t=h,Q=vA(D^M,F^W,1),t=(E=h)+O|0,t=fA+((y=Q+Z|0)>>>0<Q>>>0?t+1|0:t)|0,t=j+(D=(y=y+rA|0)>>>0<rA>>>0?t+1|0:t)|0,O=w=g+y|0,M=t=w>>>0<g>>>0?t+1|0:t,F=Q,w=vA(y^b,D^hA,32),t=(W=h)+u|0,u=Q=w+s|0,y=vA(Q^F,(b=Q>>>0<w>>>0?t+1|0:t)^E,40),t=(t=M)+(M=h)|0,F=Q=y+O|0,O=t=Q>>>0<y>>>0?t+1|0:t,E=t,t=j+X|0,t=((D=g+m|0)>>>0<g>>>0?t+1|0:t)+E|0,K=t=(E=Q+D|0)>>>0<D>>>0?t+1|0:t,Q=vA(E^f,wA^t,32),t=(m=h)+x|0,s=vA((D=Q+l|0)^CA,(t=D>>>0<Q>>>0?t+1|0:t)^X,40),X=t,t=nA+(l=h)|0,t=K+((Z=s+IA|0)>>>0<IA>>>0?t+1|0:t)|0,t=(K=E+Z|0)>>>0<E>>>0?t+1|0:t,E=m,m=t,E=vA(Q^K,E^t,48),t=(t=X)+(X=h)|0,Q=s^(D=E+D|0),s=t=D>>>0<E>>>0?t+1|0:t,Z=t=vA(Q,t^l,1),CA=t,G=Q=h,l=c,AA=_,c=y,y=vA(w^F,O^W,48),t=b+(F=h)|0,w=Q=y+u|0,u=t=Q>>>0<u>>>0?t+1|0:t,c=vA(Q^c,t^M,1),t=(O=h)+uA|0,t=R+((Q=c+oA|0)>>>0<c>>>0?t+1|0:t)|0,p=t=(_=Q+p|0)>>>0<p>>>0?t+1|0:t,Q=vA(_^n,t^T,32),t=(M=h)+AA|0,l=n=Q+l|0,b=t=n>>>0<Q>>>0?t+1|0:t,c=vA(c^n,t^O,40),t=sA+(hA=h)|0,O=c,t=p+((c=iA+c|0)>>>0<iA>>>0?t+1|0:t)|0,_=t=(c=c+_|0)>>>0<_>>>0?t+1|0:t,n=vA(Q^c,t^M,48),t=(t=b)+(b=h)|0,T=Q=n+l|0,M=Q,R=t=Q>>>0<n>>>0?t+1|0:t,t=v+wA|0,l=(Q=f+U|0)^o,o=t=Q>>>0<f>>>0?t+1|0:t,t=vA(l,t^P,1),P=p=h,l=t,t=H+cA|0,t=((f=S+q|0)>>>0<q>>>0?t+1|0:t)+p|0,v=t=(v=f)>>>0>(f=f+l|0)>>>0?t+1|0:t,U=p=vA(f^J,gA^t,32),S=t=h,t=t+u|0,H=p=p+w|0,J=t=U>>>0>p>>>0?t+1|0:t,p=vA(p^l,P^t,40),t=_A+(P=h)|0,t=v+((w=p+EA|0)>>>0<EA>>>0?t+1|0:t)|0,w=t=(l=f)>>>0>(f=f+w|0)>>>0?t+1|0:t,l=vA(f^U,t^S,48),gA=t=h,u=t,k=vA(k^Y,x^$,1),v=t=h,U=y,t=t+L|0,t=N+((y=k+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=(y=y+d|0)>>>0<d>>>0?t+1|0:t,d=y^U,U=t,d=vA(d,t^F,32),t=($=h)+o|0,N=Q=d+Q|0,o=vA(Q^k,(o=v)^(v=Q>>>0<d>>>0?t+1|0:t),40),t=fA+(S=h)|0,t=U+((Q=o+rA|0)>>>0<rA>>>0?t+1|0:t)|0,U=Q=Q+y|0,F=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+lA|0,t=((k=Z+aA|0)>>>0<aA>>>0?t+1|0:t)+y|0,Z=t=(y=Q+k|0)>>>0<k>>>0?t+1|0:t,Q=vA(y^l,t^u,32),t=(Y=h)+R|0,u=vA((k=Q+M|0)^CA,(t=k>>>0<Q>>>0?t+1|0:t)^G,40),x=M=h,G=t,t=M+kA|0,t=Z+((M=u+yA|0)>>>0<yA>>>0?t+1|0:t)|0,Z=t=(M=y+M|0)>>>0<y>>>0?t+1|0:t,y=vA(Q^M,t^Y,48),t=(Y=h)+G|0,Q=(k=y+k|0)^u,u=t=k>>>0<y>>>0?t+1|0:t,x=t=vA(Q,t^x,1),G=Q=h,AA=D,W=n,n=o,o=vA(d^U,F^$,48),t=(d=h)+v|0,v=Q=o+N|0,U=t=Q>>>0<o>>>0?t+1|0:t,n=vA(Q^n,t^S,1),t=(S=h)+dA|0,t=((Q=n+BA|0)>>>0<n>>>0?t+1|0:t)+w|0,f=t=(D=Q+f|0)>>>0<Q>>>0?t+1|0:t,Q=vA(D^W,t^b,32),t=(w=h)+s|0,N=s=Q+AA|0,b=t=s>>>0<Q>>>0?t+1|0:t,n=vA(n^s,t^S,40),t=e+(W=h)|0,S=n,t=f+((n=pA+n|0)>>>0<pA>>>0?t+1|0:t)|0,F=t=(s=n+D|0)>>>0<D>>>0?t+1|0:t,n=vA(Q^s,t^w,48),t=(t=b)+(b=h)|0,N=Q=n+N|0,AA=t=Q>>>0<n>>>0?t+1|0:t,f=E,D=c,t=J+gA|0,E=t=(Q=l+H|0)>>>0<l>>>0?t+1|0:t,c=vA(Q^p,t^P,1),t=(p=h)+eA|0,t=((w=c+z|0)>>>0<c>>>0?t+1|0:t)+_|0,_=vA(f^(D=D+w|0),(t=D>>>0<w>>>0?t+1|0:t)^X,32),w=t,l=c,t=(f=h)+U|0,t=(c=_+v|0)>>>0<_>>>0?t+1|0:t,v=c,c^=l,l=t,c=vA(c,t^p,40),t=B+(U=h)|0,t=((p=c+I|0)>>>0<I>>>0?t+1|0:t)+w|0,H=t=(w=p)>>>0>(p=p+D|0)>>>0?t+1|0:t,f=vA(_^p,t^f,48),gA=t=h,D=t,_=vA(T^O,R^hA,1),J=t=h,O=E,t=t+DA|0,t=m+((E=_+V|0)>>>0<V>>>0?t+1|0:t)|0,w=d,d=t=(E=E+K|0)>>>0<K>>>0?t+1|0:t,w=vA(o^E,w^t,32),t=($=h)+O|0,K=Q=w+Q|0,o=vA(Q^_,(o=J)^(J=Q>>>0<w>>>0?t+1|0:t),40),t=SA+(O=h)|0,t=d+((Q=o+QA|0)>>>0<QA>>>0?t+1|0:t)|0,m=Q=Q+E|0,T=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+cA|0,t=((_=q+x|0)>>>0<q>>>0?t+1|0:t)+E|0,d=t=(E=Q+_|0)>>>0<_>>>0?t+1|0:t,Q=vA(E^f,t^D,32),t=(X=h)+AA|0,D=vA((_=Q+N|0)^x,(t=_>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=L+(P=h)|0,t=d+((R=D+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=(d=E+R|0)>>>0<E>>>0?t+1|0:t,E=X,X=t,E=vA(Q^d,E^t,48),t=(t=x)+(x=h)|0,Q=(_=E+_|0)^D,D=t=_>>>0<E>>>0?t+1|0:t,P=t=vA(Q,t^P,1),R=Q=h,G=n,n=o,o=vA(w^m,T^$,48),t=(t=J)+(J=h)|0,K=Q=o+K|0,w=O,O=t=Q>>>0<o>>>0?t+1|0:t,n=vA(Q^n,w^t,1),t=(m=h)+kA|0,t=H+((Q=n+yA|0)>>>0<n>>>0?t+1|0:t)|0,w=p,p=Q+p|0,Q=b,b=t=w>>>0>p>>>0?t+1|0:t,Q=vA(p^G,Q^t,32),t=(t=u)+(u=h)|0,H=t=(w=Q+k|0)>>>0<Q>>>0?t+1|0:t,k=w,n=vA(n^w,t^m,40),t=DA+($=h)|0,m=n,t=b+((n=V+n|0)>>>0<V>>>0?t+1|0:t)|0,b=t=(w=n+p|0)>>>0<p>>>0?t+1|0:t,n=vA(Q^w,t^u,48),t=(t=H)+(H=h)|0,T=Q=n+k|0,G=t=Q>>>0<n>>>0?t+1|0:t,k=y,t=l+gA|0,y=t=(Q=f+v|0)>>>0<f>>>0?t+1|0:t,c=vA(Q^c,t^U,1),t=nA+(f=h)|0,t=F+((p=c+IA|0)>>>0<IA>>>0?t+1|0:t)|0,l=(p=s+p|0)^k,k=t=p>>>0<s>>>0?t+1|0:t,s=vA(l,t^Y,32),u=t=h,l=c,t=t+O|0,t=(c=s+K|0)>>>0<s>>>0?t+1|0:t,v=c,c^=l,l=t,c=vA(c,t^f,40),t=B+(U=h)|0,t=k+((f=c+I|0)>>>0<I>>>0?t+1|0:t)|0,F=t=(f=p+f|0)>>>0<p>>>0?t+1|0:t,k=vA(s^f,t^u,48),gA=t=h,p=t,s=vA(S^N,W^AA,1),K=t=h,N=y,t=t+e|0,t=Z+((y=s+pA|0)>>>0<pA>>>0?t+1|0:t)|0,M=t=(y=y+M|0)>>>0<M>>>0?t+1|0:t,u=vA(o^y,t^J,32),t=(CA=h)+N|0,N=Q=u+Q|0,o=vA(Q^s,(S=Q>>>0<u>>>0?t+1|0:t)^K,40),t=j+(J=h)|0,t=M+((Q=g+o|0)>>>0<g>>>0?t+1|0:t)|0,M=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=R+fA|0,t=((s=P+rA|0)>>>0<rA>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+G|0,p=vA((s=Q+T|0)^P,(t=s>>>0<Q>>>0?t+1|0:t)^R,40),Y=t,t=uA+(P=h)|0,t=K+((R=p+oA|0)>>>0<oA>>>0?t+1|0:t)|0,t=(K=y+R|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=Y)+(Y=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,P=t=vA(Q,t^P,1),hA=t,R=Q=h,AA=_,W=n,_=o,o=vA(u^M,O^CA,48),t=(u=h)+S|0,M=Q=o+N|0,N=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^J,1),t=(J=h)+_A|0,t=F+((Q=_+EA|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(S=h)+D|0,H=t=(D=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^J,40),t=dA+(CA=h)|0,F=_,t=f+((_=BA+_|0)>>>0<BA>>>0?t+1|0:t)|0,f=_+n|0,_=S,S=t=f>>>0<n>>>0?t+1|0:t,_=vA(Q^f,_^t,48),t=(t=H)+(H=h)|0,J=Q=_+D|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=l+gA|0,E=t=(Q=k+v|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^U,1),t=(k=h)+SA|0,t=b+((D=c+QA|0)>>>0<c>>>0?t+1|0:t)|0,n=vA(n^(D=D+w|0),(t=D>>>0<w>>>0?t+1|0:t)^x,32),l=w=h,w=t,v=c,t=l+N|0,t=(c=n+M|0)>>>0<n>>>0?t+1|0:t,M=c,c^=v,v=t,c=vA(c,t^k,40),t=sA+(U=h)|0,t=((k=c+iA|0)>>>0<iA>>>0?t+1|0:t)+w|0,b=l,l=t=(w=D+k|0)>>>0<k>>>0?t+1|0:t,k=vA(n^w,b^t,48),gA=t=h,D=t,n=vA(T^m,G^$,1),N=t=h,b=E,t=t+eA|0,t=X+((E=n+z|0)>>>0<z>>>0?t+1|0:t)|0,d=t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,u=vA(o^E,t^u,32),t=($=h)+b|0,b=Q=u+Q|0,o=vA(Q^n,(o=N)^(N=Q>>>0<u>>>0?t+1|0:t),40),t=lA+(m=h)|0,t=d+((Q=o+aA|0)>>>0<aA>>>0?t+1|0:t)|0,T=Q=Q+E|0,X=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=R+B|0,t=((n=P+I|0)>>>0<I>>>0?t+1|0:t)+E|0,d=t=(E=Q+n|0)>>>0<n>>>0?t+1|0:t,Q=vA(E^k,t^D,32),t=(P=h)+O|0,D=vA((n=Q+J|0)^hA,(t=n>>>0<Q>>>0?t+1|0:t)^R,40),R=t,t=kA+(x=h)|0,t=d+((G=D+yA|0)>>>0<yA>>>0?t+1|0:t)|0,t=(d=E+G|0)>>>0<E>>>0?t+1|0:t,E=P,P=t,E=vA(Q^d,E^t,48),t=(t=R)+(R=h)|0,Q=(n=E+n|0)^D,D=t=n>>>0<E>>>0?t+1|0:t,x=t=vA(Q,t^x,1),G=Q=h,AA=s,W=_,_=o,o=vA(u^T,X^$,48),t=(u=h)+N|0,N=Q=o+b|0,b=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^m,1),t=(m=h)+dA|0,t=l+((Q=_+BA|0)>>>0<_>>>0?t+1|0:t)|0,w=t=(s=Q+w|0)>>>0<w>>>0?t+1|0:t,Q=vA(s^W,t^H,32),t=(l=h)+p|0,H=t=(p=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^p,t^m,40),t=eA+($=h)|0,m=_,t=w+((_=z+_|0)>>>0<z>>>0?t+1|0:t)|0,w=_+s|0,_=l,l=t=w>>>0<s>>>0?t+1|0:t,_=vA(Q^w,_^t,48),t=(t=H)+(H=h)|0,T=Q=_+p|0,X=t=Q>>>0<_>>>0?t+1|0:t,s=y,t=v+gA|0,y=t=(Q=k+M|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^U,1),t=lA+(k=h)|0,t=S+((p=c+aA|0)>>>0<aA>>>0?t+1|0:t)|0,f=t=(p=p+f|0)>>>0<f>>>0?t+1|0:t,s=vA(s^p,t^Y,32),M=t=h,v=c,t=t+b|0,t=(c=s+N|0)>>>0<s>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=fA+(N=h)|0,t=f+((k=c+rA|0)>>>0<rA>>>0?t+1|0:t)|0,t=(f=p+k|0)>>>0<p>>>0?t+1|0:t,p=M,M=t,k=vA(s^f,p^t,48),gA=t=h,p=t,s=vA(F^J,O^CA,1),b=t=h,S=y,t=t+j|0,t=Z+((y=g+s|0)>>>0<g>>>0?t+1|0:t)|0,K=t=(y=y+K|0)>>>0<K>>>0?t+1|0:t,u=vA(o^y,t^u,32),t=(CA=h)+S|0,S=Q=u+Q|0,o=vA(Q^s,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=DA+(F=h)|0,t=K+((Q=o+V|0)>>>0<V>>>0?t+1|0:t)|0,J=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+nA|0,t=((s=x+IA|0)>>>0<IA>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+X|0,p=vA((s=Q+T|0)^x,(t=s>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=e+(Y=h)|0,t=K+((G=p+pA|0)>>>0<pA>>>0?t+1|0:t)|0,t=(K=y+G|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=x)+(x=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=n,W=_,_=o,o=vA(u^J,O^CA,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^F,1),t=(F=h)+cA|0,t=M+((Q=_+q|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(M=h)+D|0,H=t=(D=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^F,40),t=SA+(CA=h)|0,F=_,t=f+((_=QA+_|0)>>>0<QA>>>0?t+1|0:t)|0,f=_+n|0,_=M,M=t=f>>>0<n>>>0?t+1|0:t,_=vA(Q^f,_^t,48),t=(t=H)+(H=h)|0,J=Q=_+D|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=v+gA|0,E=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=(k=h)+sA|0,t=l+((D=c+iA|0)>>>0<c>>>0?t+1|0:t)|0,w=t=(D=D+w|0)>>>0<w>>>0?t+1|0:t,n=vA(n^D,t^R,32),l=t=h,v=c,t=t+S|0,t=(c=n+b|0)>>>0<n>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=_A+(N=h)|0,t=w+((k=c+EA|0)>>>0<EA>>>0?t+1|0:t)|0,b=l,l=t=(w=D+k|0)>>>0<D>>>0?t+1|0:t,k=vA(n^w,b^t,48),gA=t=h,D=t,n=vA(T^m,X^$,1),b=t=h,S=E,t=t+L|0,t=P+((E=n+tA|0)>>>0<tA>>>0?t+1|0:t)|0,d=t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,u=vA(o^E,t^u,32),t=($=h)+S|0,S=Q=u+Q|0,o=vA(Q^n,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=uA+(m=h)|0,t=d+((Q=o+oA|0)>>>0<oA>>>0?t+1|0:t)|0,T=Q=Q+E|0,X=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+e|0,t=((n=Y+pA|0)>>>0<pA>>>0?t+1|0:t)+E|0,d=t=(E=Q+n|0)>>>0<n>>>0?t+1|0:t,Q=vA(E^k,t^D,32),t=(P=h)+O|0,D=vA((n=Q+J|0)^Y,(t=n>>>0<Q>>>0?t+1|0:t)^G,40),R=t,t=lA+(Y=h)|0,t=d+((G=D+aA|0)>>>0<aA>>>0?t+1|0:t)|0,t=(d=E+G|0)>>>0<E>>>0?t+1|0:t,E=P,P=t,E=vA(Q^d,E^t,48),t=(t=R)+(R=h)|0,Q=(n=E+n|0)^D,D=t=n>>>0<E>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=s,W=_,_=o,o=vA(u^T,X^$,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^m,1),t=(m=h)+L|0,t=l+((Q=_+tA|0)>>>0<_>>>0?t+1|0:t)|0,w=t=(s=Q+w|0)>>>0<w>>>0?t+1|0:t,Q=vA(s^W,t^H,32),t=(l=h)+p|0,H=t=(p=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^p,t^m,40),t=_A+($=h)|0,m=_,t=w+((_=EA+_|0)>>>0<EA>>>0?t+1|0:t)|0,w=_+s|0,_=l,l=t=w>>>0<s>>>0?t+1|0:t,_=vA(Q^w,_^t,48),t=(t=H)+(H=h)|0,T=Q=_+p|0,X=t=Q>>>0<_>>>0?t+1|0:t,s=y,t=v+gA|0,y=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=sA+(k=h)|0,t=M+((p=c+iA|0)>>>0<iA>>>0?t+1|0:t)|0,f=t=(p=p+f|0)>>>0<f>>>0?t+1|0:t,s=vA(s^p,t^x,32),M=t=h,v=c,t=t+S|0,t=(c=s+b|0)>>>0<s>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=SA+(N=h)|0,t=f+((k=c+QA|0)>>>0<QA>>>0?t+1|0:t)|0,t=(f=p+k|0)>>>0<p>>>0?t+1|0:t,p=M,M=t,k=vA(s^f,p^t,48),gA=t=h,p=t,s=vA(F^J,O^CA,1),b=t=h,S=y,t=t+eA|0,t=Z+((y=s+z|0)>>>0<z>>>0?t+1|0:t)|0,K=t=(y=y+K|0)>>>0<K>>>0?t+1|0:t,u=vA(o^y,t^u,32),t=(CA=h)+S|0,S=Q=u+Q|0,o=vA(Q^s,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=uA+(F=h)|0,t=K+((Q=o+oA|0)>>>0<oA>>>0?t+1|0:t)|0,J=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+DA|0,t=((s=Y+V|0)>>>0<V>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+X|0,p=vA((s=Q+T|0)^Y,(t=s>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=j+(Y=h)|0,t=K+((G=g+p|0)>>>0<g>>>0?t+1|0:t)|0,t=(K=y+G|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=x)+(x=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=n,W=_,_=o,o=vA(u^J,O^CA,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^F,1),t=(F=h)+fA|0,t=M+((Q=_+rA|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(M=h)+D|0,H=t=(D=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^F,40),t=B+(CA=h)|0,F=_,t=f+((_=I+_|0)>>>0<I>>>0?t+1|0:t)|0,f=_+n|0,_=M,M=t=f>>>0<n>>>0?t+1|0:t,_=vA(Q^f,_^t,48),t=(t=H)+(H=h)|0,J=Q=_+D|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=v+gA|0,E=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=(k=h)+nA|0,t=l+((D=c+IA|0)>>>0<c>>>0?t+1|0:t)|0,w=t=(D=D+w|0)>>>0<w>>>0?t+1|0:t,n=vA(n^D,t^R,32),l=t=h,v=c,t=t+S|0,t=(c=n+b|0)>>>0<n>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=dA+(N=h)|0,t=w+((k=c+BA|0)>>>0<BA>>>0?t+1|0:t)|0,b=l,l=t=(w=D+k|0)>>>0<D>>>0?t+1|0:t,k=vA(n^w,b^t,48),gA=t=h,D=t,n=vA(T^m,X^$,1),b=t=h,S=E,t=t+kA|0,t=P+((E=n+yA|0)>>>0<yA>>>0?t+1|0:t)|0,d=t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,u=vA(o^E,t^u,32),t=($=h)+S|0,S=Q=u+Q|0,o=vA(Q^n,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=cA+(m=h)|0,t=d+((Q=o+q|0)>>>0<q>>>0?t+1|0:t)|0,T=Q=Q+E|0,X=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+uA|0,t=((n=Y+oA|0)>>>0<oA>>>0?t+1|0:t)+E|0,d=t=(E=Q+n|0)>>>0<n>>>0?t+1|0:t,Q=vA(E^k,t^D,32),t=(P=h)+O|0,D=vA((n=Q+J|0)^Y,(t=n>>>0<Q>>>0?t+1|0:t)^G,40),R=t,t=_A+(Y=h)|0,t=d+((G=D+EA|0)>>>0<EA>>>0?t+1|0:t)|0,t=(d=E+G|0)>>>0<E>>>0?t+1|0:t,E=P,P=t,E=vA(Q^d,E^t,48),t=(t=R)+(R=h)|0,Q=(n=E+n|0)^D,D=t=n>>>0<E>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=s,W=_,_=o,o=vA(u^T,X^$,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^m,1),t=(m=h)+lA|0,t=l+((Q=_+aA|0)>>>0<_>>>0?t+1|0:t)|0,w=t=(s=Q+w|0)>>>0<w>>>0?t+1|0:t,Q=vA(s^W,t^H,32),t=(l=h)+p|0,H=t=(p=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^p,t^m,40),t=e+($=h)|0,m=_,t=w+((_=pA+_|0)>>>0<pA>>>0?t+1|0:t)|0,w=_+s|0,_=l,l=t=w>>>0<s>>>0?t+1|0:t,_=vA(Q^w,_^t,48),t=(t=H)+(H=h)|0,T=Q=_+p|0,X=t=Q>>>0<_>>>0?t+1|0:t,s=y,t=v+gA|0,y=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=dA+(k=h)|0,t=M+((p=c+BA|0)>>>0<BA>>>0?t+1|0:t)|0,f=t=(p=p+f|0)>>>0<f>>>0?t+1|0:t,s=vA(s^p,t^x,32),M=t=h,v=c,t=t+S|0,t=(c=s+b|0)>>>0<s>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=L+(N=h)|0,t=f+((k=c+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=(f=p+k|0)>>>0<p>>>0?t+1|0:t,p=M,M=t,k=vA(s^f,p^t,48),gA=t=h,p=t,s=vA(F^J,O^CA,1),b=t=h,S=y,t=t+SA|0,t=Z+((y=s+QA|0)>>>0<QA>>>0?t+1|0:t)|0,K=t=(y=y+K|0)>>>0<K>>>0?t+1|0:t,u=vA(o^y,t^u,32),t=(CA=h)+S|0,S=Q=u+Q|0,o=vA(Q^s,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=kA+(F=h)|0,t=K+((Q=o+yA|0)>>>0<yA>>>0?t+1|0:t)|0,J=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+sA|0,t=((s=Y+iA|0)>>>0<iA>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+X|0,p=vA((s=Q+T|0)^Y,(t=s>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=B+(Y=h)|0,t=K+((G=p+I|0)>>>0<I>>>0?t+1|0:t)|0,t=(K=y+G|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=x)+(x=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=n,W=_,_=o,o=vA(u^J,O^CA,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^F,1),t=(J=h)+eA|0,t=M+((Q=_+z|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(M=h)+D|0,H=D=Q+AA|0,F=t=D>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^J,40),t=DA+(AA=h)|0,J=_,t=f+((_=V+_|0)>>>0<V>>>0?t+1|0:t)|0,D=_+n|0,_=M,M=t=D>>>0<n>>>0?t+1|0:t,_=vA(Q^D,_^t,48),t=(t=F)+(F=h)|0,H=Q=_+H|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=v+gA|0,E=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=(k=h)+j|0,t=l+((f=g+c|0)>>>0<c>>>0?t+1|0:t)|0,w=t=(f=f+w|0)>>>0<w>>>0?t+1|0:t,l=n=vA(n^f,t^R,32),v=t=h,U=c,t=t+S|0,t=(c=n+b|0)>>>0<n>>>0?t+1|0:t,N=c,c^=U,U=t,c=vA(c,t^k,40),t=fA+(b=h)|0,t=w+((n=c+rA|0)>>>0<rA>>>0?t+1|0:t)|0,S=(n=n+f|0)^l,l=t=n>>>0<f>>>0?t+1|0:t,f=vA(S,t^v,48),R=t=h,k=t,v=w=vA(T^m,X^$,1),S=t=h,m=E,t=t+cA|0,t=P+((E=w+q|0)>>>0<q>>>0?t+1|0:t)|0,t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,d=u,u=t,w=vA(o^E,d^t,32),t=(W=h)+m|0,d=Q=w+Q|0,o=vA(o=Q^v,(v=Q>>>0<w>>>0?t+1|0:t)^S,40),t=nA+(S=h)|0,t=u+((Q=o+IA|0)>>>0<IA>>>0?t+1|0:t)|0,u=Q=Q+E|0,m=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+DA|0,t=((P=V)>>>0>(V=Y+V|0)>>>0?t+1|0:t)+E|0,DA=t=(Q=Q+V|0)>>>0<V>>>0?t+1|0:t,V=vA(Q^f,t^k,32),t=(T=h)+O|0,k=vA((E=H+V|0)^Y,(t=E>>>0<V>>>0?t+1|0:t)^G,40),P=t,t=fA+(X=h)|0,t=DA+((Y=rA)>>>0>(rA=k+rA|0)>>>0?t+1|0:t)|0,t=(rA=Q+rA|0)>>>0<Q>>>0?t+1|0:t,Q=V^rA,V=t,fA=vA(Q,t^T,48);t=(DA=h)+P|0,E=t=(Q=E+fA|0)>>>0<fA>>>0?t+1|0:t,t=vA(Q^k,t^X,1),k=h,T=t,X=s,s=IA,P=nA,nA=vA(w^u,m^W,48),t=(w=h)+v|0,v=s,d=t=(IA=d+nA|0)>>>0<nA>>>0?t+1|0:t,s=vA(o^(u=IA),t^S,1),t=(S=h)+P|0,t=l+(s>>>0>(IA=v+s|0)>>>0?t+1|0:t)|0,o=t=(IA=n+IA|0)>>>0<n>>>0?t+1|0:t,_=vA(_^IA,t^F,32),t=(t=p)+(p=h)|0,l=n=_+X|0,v=t=n>>>0<_>>>0?t+1|0:t,n=vA(n^s,t^S,40),t=(S=h)+lA|0,t=(n>>>0>(aA=n+aA|0)>>>0?t+1|0:t)+o|0,o=t=(o=aA)>>>0>(aA=IA+aA|0)>>>0?t+1|0:t,_=vA(_^aA,t^p,48),t=(s=h)+v|0,p=IA=_+l|0,lA=t=IA>>>0<_>>>0?t+1|0:t,l=g,v=j,t=U+R|0,IA=t=(g=f+N|0)>>>0<f>>>0?t+1|0:t,j=vA(g^c,t^b,1),t=(f=h)+v|0,t=M+((c=l+j|0)>>>0<j>>>0?t+1|0:t)|0,y=vA((c=c+D|0)^y,(t=c>>>0<D>>>0?t+1|0:t)^x,32),l=t,M=iA,iA=j,t=(D=h)+d|0,d=f,f=t=(j=y+u|0)>>>0<y>>>0?t+1|0:t,iA=vA(j^iA,d^t,40),t=(u=h)+sA|0,t=((sA=M+iA|0)>>>0<iA>>>0?t+1|0:t)+l|0,l=sA,c=y^(sA=c+sA|0),y=t=l>>>0>sA>>>0?t+1|0:t,t=vA(c,t^D,48),U=c=h,D=t,d=z,l=eA,z=vA(H^J,O^AA,1),v=t=h,t=t+uA|0,t=Z+((z=(M=z)+oA|0)>>>0<oA>>>0?t+1|0:t)|0,oA=t=(z=K+z|0)>>>0<K>>>0?t+1|0:t,eA=vA(z^nA,t^w,32),t=(K=h)+IA|0,IA=g=eA+g|0,nA=vA(g^M,(w=g>>>0<eA>>>0?t+1|0:t)^v,40),t=(t=l)+(l=h)|0,t=oA+((g=nA+d|0)>>>0<nA>>>0?t+1|0:t)|0,oA=g=g+z|0,uA=t=g>>>0<z>>>0?t+1|0:t,z=t,t=k+dA|0,t=((M=BA)>>>0>(BA=T+BA|0)>>>0?t+1|0:t)+z|0,dA=t=(z=g+BA|0)>>>0<BA>>>0?t+1|0:t,BA=vA(D^z,t^c,32),t=(M=h)+lA|0,c=g=BA+p|0,g=vA(g^T,(d=k)^(k=g>>>0<BA>>>0?t+1|0:t),40),t=SA+(v=h)|0,SA=g,t=dA+((g=QA+g|0)>>>0<QA>>>0?t+1|0:t)|0,t=(g=g+z|0)>>>0<z>>>0?t+1|0:t,dA=g,N=(i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24)^g,d=t,b=t^(i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24),z=vA(eA^oA,K^uA,48),t=(oA=h)+w|0,w=g=z+IA|0,uA=t=g>>>0<z>>>0?t+1|0:t,eA=EA,t=f+U|0,EA=t=(g=D+j|0)>>>0<j>>>0?t+1|0:t,iA=vA(g^iA,t^u,1),t=(D=h)+_A|0,t=((eA=iA+eA|0)>>>0<iA>>>0?t+1|0:t)+o|0,eA=t=(_A=eA+aA|0)>>>0<eA>>>0?t+1|0:t,IA=vA(_A^fA,t^DA,32),t=(j=h)+uA|0,aA=t=(QA=IA+w|0)>>>0<IA>>>0?t+1|0:t,fA=IA,IA=vA(iA^QA,t^D,40),t=(o=h)+kA|0,t=(IA>>>0>(iA=IA+yA|0)>>>0?t+1|0:t)+eA|0,f=j,j=t=(_A=iA+_A|0)>>>0<iA>>>0?t+1|0:t,iA=vA(fA^(yA=_A),f^t,48),t=(D=h)+aA|0,t=(eA=iA+QA|0)>>>0<iA>>>0?t+1|0:t,QA=eA,eA^=N,C[A+8|0]=eA,C[A+9|0]=eA>>>8,C[A+10|0]=eA>>>16,C[A+11|0]=eA>>>24,aA=t,t^=b,C[A+12|0]=t,C[A+13|0]=t>>>8,C[A+14|0]=t>>>16,C[A+15|0]=t>>>24,_A=g,eA=EA,g=z,z=vA(n^p,S^lA,1),t=(kA=h)+B|0,t=(z>>>0>(EA=z+I|0)>>>0?t+1|0:t)+V|0,rA=t=(p=EA)>>>0>(EA=rA+EA|0)>>>0?t+1|0:t,g=vA(g^EA,t^oA,32),t=(t=eA)+(eA=h)|0,oA=t=(_A=g+_A|0)>>>0<g>>>0?t+1|0:t,fA=g,_A=vA(z^(V=_A),t^kA,40),t=(n=h)+e|0,t=rA+((g=_A+pA|0)>>>0<_A>>>0?t+1|0:t)|0,t=(g=g+EA|0)>>>0<EA>>>0?t+1|0:t,rA=g,g^=fA,fA=t,EA=vA(g,t^eA,48),t=(p=h)+oA|0,V=g=EA+V|0,oA=g>>>0<EA>>>0?t+1|0:t,nA=g=vA(w^nA,l^uA,1),kA=t=h,t=t+L|0,t=y+((g=g+tA|0)>>>0<tA>>>0?t+1|0:t)|0,L=t=(z=g+sA|0)>>>0<sA>>>0?t+1|0:t,g=(eA=vA(_^z,t^s,32))+Q|0,t=(Q=h)+E|0,sA=g,g=(tA=vA(y=g^nA,(nA=g>>>0<eA>>>0?t+1|0:t)^kA,40))+q|0,t=(q=h)+cA|0,t=L+(g>>>0<tA>>>0?t+1|0:t)|0,t=(L=g+z|0)>>>0<z>>>0?t+1|0:t,z=L^MA^V,C[0|(g=A)]=z,C[g+1|0]=z>>>8,C[g+2|0]=z>>>16,C[g+3|0]=z>>>24,z=t^a^oA,C[g+4|0]=z,C[g+5|0]=z>>>8,C[g+6|0]=z>>>16,C[g+7|0]=z>>>24,z=(eA=vA(L^eA,t^Q,48))+sA|0,t=(sA=h)+nA|0,t=(nA=z>>>0<eA>>>0?t+1|0:t)^(i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24)^fA,L=(i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24)^rA^z,C[g+16|0]=L,C[g+17|0]=L>>>8,C[g+18|0]=L>>>16,C[g+19|0]=L>>>24,C[g+20|0]=t,C[g+21|0]=t>>>8,C[g+22|0]=t>>>16,C[g+23|0]=t>>>24,g=vA(BA^dA,d^M,48),L=h,rA=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,t=(i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24)^vA(IA^QA,o^aA,1)^g,C[A+32|0]=t,C[A+33|0]=t>>>8,C[A+34|0]=t>>>16,C[A+35|0]=t>>>24,t=h^rA^L,C[A+36|0]=t,C[A+37|0]=t>>>8,C[A+38|0]=t>>>16,C[A+39|0]=t>>>24,t=k+L|0,t=(rA=g+c|0)>>>0<g>>>0?t+1|0:t,IA=(i[(g=A)+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)^j^t,L=(i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24)^yA^rA,C[g+24|0]=L,C[g+25|0]=L>>>8,C[g+26|0]=L>>>16,C[g+27|0]=L>>>24,C[g+28|0]=IA,C[g+29|0]=IA>>>8,C[g+30|0]=IA>>>16,C[g+31|0]=IA>>>24,IA=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,g=EA^(i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24)^vA(z^tA,q^nA,1),C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,g=p^h^IA,C[A+44|0]=g,C[A+45|0]=g>>>8,C[A+46|0]=g>>>16,C[A+47|0]=g>>>24,z=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24,g=eA^(i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24)^vA(V^_A,n^oA,1),C[A+56|0]=g,C[A+57|0]=g>>>8,C[A+58|0]=g>>>16,C[A+59|0]=g>>>24,g=sA^h^z,C[A+60|0]=g,C[A+61|0]=g>>>8,C[A+62|0]=g>>>16,C[A+63|0]=g>>>24,z=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24,g=iA^(i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24)^vA(rA^SA,t^v,1),C[A+48|0]=g,C[A+49|0]=g>>>8,C[A+50|0]=g>>>16,C[A+51|0]=g>>>24,g=D^h^z,C[A+52|0]=g,C[A+53|0]=g>>>8,C[A+54|0]=g>>>16,C[A+55|0]=g>>>24}function p(A,g,I,e,B,r,t){var Q,o,c,E,y,_,s,p,f,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,U,x,m,P,R,L,T,q,z,j,X,O,V,$,AA,gA,IA,CA,eA,BA,aA,iA,rA,tA,QA=0,oA=0,cA=0,EA=0,yA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,kA=0,lA=0,uA=0,vA=0,SA=0,bA=0,MA=0,FA=0,NA=0,KA=0,YA=0,HA=0,JA=0,UA=0,xA=0,mA=0,PA=0,LA=0,TA=0,qA=0,zA=0,jA=0,XA=0,OA=0,VA=0,ZA=0,WA=0,$A=0,Ag=0,gg=0,Ig=0,Cg=0,eg=0,Bg=0;return n=c=n-560|0,dA(cA=c+352|0),t&&W(cA,35120,34,0),wA(c+288|0,r,32,0),W(_A=c+352|0,c+320|0,32,0),W(_A,I,e,B),J(_A,hA=c+224|0),pA=i[(oA=r)+32|0]|i[oA+33|0]<<8|i[oA+34|0]<<16|i[oA+35|0]<<24,fA=i[oA+36|0]|i[oA+37|0]<<8|i[oA+38|0]<<16|i[oA+39|0]<<24,EA=i[oA+40|0]|i[oA+41|0]<<8|i[oA+42|0]<<16|i[oA+43|0]<<24,QA=i[oA+44|0]|i[oA+45|0]<<8|i[oA+46|0]<<16|i[oA+47|0]<<24,cA=i[oA+48|0]|i[oA+49|0]<<8|i[oA+50|0]<<16|i[oA+51|0]<<24,r=i[oA+52|0]|i[oA+53|0]<<8|i[oA+54|0]<<16|i[oA+55|0]<<24,yA=i[oA+60|0]|i[oA+61|0]<<8|i[oA+62|0]<<16|i[oA+63|0]<<24,oA=i[oA+56|0]|i[oA+57|0]<<8|i[oA+58|0]<<16|i[oA+59|0]<<24,C[A+56|0]=oA,C[A+57|0]=oA>>>8,C[A+58|0]=oA>>>16,C[A+59|0]=oA>>>24,C[A+60|0]=yA,C[A+61|0]=yA>>>8,C[A+62|0]=yA>>>16,C[A+63|0]=yA>>>24,C[A+48|0]=cA,C[A+49|0]=cA>>>8,C[A+50|0]=cA>>>16,C[A+51|0]=cA>>>24,C[A+52|0]=r,C[A+53|0]=r>>>8,C[A+54|0]=r>>>16,C[A+55|0]=r>>>24,C[A+40|0]=EA,C[A+41|0]=EA>>>8,C[A+42|0]=EA>>>16,C[A+43|0]=EA>>>24,C[A+44|0]=QA,C[A+45|0]=QA>>>8,C[A+46|0]=QA>>>16,C[A+47|0]=QA>>>24,C[0|(r=A+32|0)]=pA,C[r+1|0]=pA>>>8,C[r+2|0]=pA>>>16,C[r+3|0]=pA>>>24,C[r+4|0]=fA,C[r+5|0]=fA>>>8,C[r+6|0]=fA>>>16,C[r+7|0]=fA>>>24,D(hA),Z(c,hA),RA(A,c),dA(_A),t&&W(_A,35120,34,0),W(t=c+352|0,A,64,0),W(t,I,e,B),J(t,nA=c+160|0),D(nA),C[c+288|0]=248&i[c+288|0],C[c+319|0]=63&i[c+319|0]|64,I=i[23+(A=o=c+288|0)|0],EA=GA(E=i[A+21|0]|i[A+22|0]<<8|I<<16&2031616,0,y=(i[nA+28|0]|i[nA+29|0]<<8|i[nA+30|0]<<16|i[nA+31|0]<<24)>>>7|0,0),cA=h,I=(A=i[nA+27|0])>>>24|0,B=A<<8|(QA=i[nA+23|0]|i[nA+24|0]<<8|i[nA+25|0]<<16|i[nA+26|0]<<24)>>>24,A=GA(_=2097151&((3&(fA=(A=(e=i[nA+28|0])>>>16|0)|I))<<30|(I=(e<<=16)|B)>>>2),0,s=(t=i[o+23|0]|i[o+24|0]<<8|i[o+25|0]<<16|i[o+26|0]<<24)>>>5&2097151,0),I=h+cA|0,e=A>>>0>(B=A+EA|0)>>>0?I+1|0:I,A=GA(p=(I=i[nA+23|0])<<16&2031616|i[nA+21|0]|i[nA+22|0]<<8,0,f=(i[o+28|0]|i[o+29|0]<<8|i[o+30|0]<<16|i[o+31|0]<<24)>>>7|0,0),e=h+e|0,cA=I=A+B|0,B=A>>>0>I>>>0?e+1|0:e,e=(A=i[o+27|0])>>>24|0,t=A<<8|t>>>24,A=GA(w=2097151&((3&(e|=I=(A=i[o+28|0])>>>16|0))<<30|(I=(A<<=16)|t)>>>2),0,k=QA>>>5&2097151,0),I=h+B|0,oA=e=A+cA|0,B=A>>>0>e>>>0?I+1|0:I,QA=GA(s,0,k,0),cA=h,I=(A=i[o+19|0])>>>24|0,t=A<<8|(bA=i[o+15|0]|i[o+16|0]<<8|i[o+17|0]<<16|i[o+18|0]<<24)>>>24,e=I,I=GA(d=(7&(e|=I=(A=i[o+20|0])>>>16|0))<<29|(I=(A<<=16)|t)>>>3,fA=e>>>3|0,y,0),A=h+cA|0,A=I>>>0>(e=I+QA|0)>>>0?A+1|0:A,t=(I=GA(E,0,_,0))+e|0,e=h+A|0,I=I>>>0>(QA=t)>>>0?e+1|0:e,e=(A=i[nA+19|0])>>>24|0,cA=A<<8|(uA=i[nA+15|0]|i[nA+16|0]<<8|i[nA+17|0]<<16|i[nA+18|0]<<24)>>>24,A=GA(l=(7&(EA=(A=(t=i[nA+20|0])>>>16|0)|e))<<29|(e=(t<<=16)|cA)>>>3,u=EA>>>3|0,f,0),I=h+I|0,I=A>>>0>(e=A+QA|0)>>>0?I+1|0:I,A=GA(p,0,w,0),I=h+I|0,pA=I=A>>>0>(hA=A+e|0)>>>0?I+1|0:I,DA=A=I-((hA>>>0<4293918720)-1|0)|0,e=(I=A>>>21|0)+B|0,QA=e=(A=(2097151&A)<<11|(EA=hA- -1048576|0)>>>21)>>>0>(oA=A+oA|0)>>>0?e+1|0:e,lA=A=e-((oA>>>0<4293918720)-1|0)|0,yA=(2097151&A)<<11|(cA=oA- -1048576|0)>>>21,t=A>>>21|0,A=GA(f,0,k,0),I=h,e=A,A=GA(y,0,s,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,kA=(A=e)+(e=GA(_,0,w,0))|0,A=h+I|0,A=e>>>0>kA>>>0?A+1|0:A,_A=kA-(I=-2097152&(e=kA- -1048576|0))|0,I=(A-((131071&(B=A-((kA>>>0<4293918720)-1|0)|0))+(I>>>0>kA>>>0)|0)|0)+t|0,R=I=(A=yA+_A|0)>>>0<_A>>>0?I+1|0:I,L=A,_A=GA(A,I,470296,0),yA=h,I=GA(y,0,w,0),A=h,t=I,I=GA(_,0,f,0),A=h+A|0,I=I>>>0>(t=t+I|0)>>>0?A+1|0:A,A=B>>>21|0,B=(2097151&B)<<11|e>>>21,e=A+I|0,KA=B=(e=B>>>0>(t=B+t|0)>>>0?e+1|0:e)-((t>>>0<4293918720)-1|0)|0,A=t-(I=-2097152&(NA=t- -1048576|0))|0,T=t=e-((131071&B)+(I>>>0>t>>>0)|0)|0,q=I=oA-(e=-2097152&cA)|0,z=B=QA-((e>>>0>oA>>>0)+lA|0)|0,j=A,e=GA(A,t,666643,0),A=h+yA|0,A=e>>>0>(t=e+_A|0)>>>0?A+1|0:A,e=GA(I,B,654183,0),I=h+A|0,sA=B=e+t|0,cA=e>>>0>B>>>0?I+1|0:I,kA=hA-(A=-2097152&EA)|0,DA=pA-((A>>>0>hA>>>0)+DA|0)|0,I=GA(_,0,d,fA),e=h,B=(A=I)+(I=GA(v=bA>>>6&2097151,0,y,0))|0,A=h+e|0,A=I>>>0>B>>>0?A+1|0:A,I=GA(s,0,p,0),e=h+A|0,e=I>>>0>(B=I+B|0)>>>0?e+1|0:e,A=GA(E,0,k,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(f,0,S=uA>>>6&2097151,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,e=GA(w,0,l,u),I=h+A|0,hA=B=e+B|0,t=e>>>0>B>>>0?I+1|0:I,I=(A=i[o+14|0])>>>24|0,B=A<<8|(pA=i[o+10|0]|i[o+11|0]<<8|i[o+12|0]<<16|i[o+13|0]<<24)>>>24,I=GA(b=2097151&((1&(I|=A=(e=i[o+15|0])>>>16|0))<<31|(A=(e<<=16)|B)>>>1),0,y,0),A=h,e=I,I=GA(_,0,v,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=GA(k,0,d,fA))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,A=GA(s,0,l,u),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,A=GA(E,0,p,0),I=h+I|0,EA=e=A+B|0,B=A>>>0>e>>>0?I+1|0:I,I=(A=i[nA+14|0])>>>24|0,QA=A<<8|(oA=i[nA+10|0]|i[nA+11|0]<<8|i[nA+12|0]<<16|i[nA+13|0]<<24)>>>24,e=I,I=(A=i[nA+15|0])>>>16|0,I=GA(M=2097151&((1&(I|=e))<<31|(A=A<<16|QA)>>>1),0,f,0),A=h+B|0,A=I>>>0>(e=I+EA|0)>>>0?A+1|0:A,I=GA(w,0,S,0),A=h+A|0,QA=A=I>>>0>(EA=I+e|0)>>>0?A+1|0:A,YA=I=A-((EA>>>0<4293918720)-1|0)|0,e=(A=I>>>21|0)+t|0,yA=e=(I=(2097151&I)<<11|(_A=EA- -1048576|0)>>>21)>>>0>(lA=I+hA|0)>>>0?e+1|0:e,MA=I=e-((lA>>>0<4293918720)-1|0)|0,A=(A=I>>>21|0)+DA|0,X=A=(I=(e=(2097151&I)<<11|(hA=lA- -1048576|0)>>>21)+kA|0)>>>0<e>>>0?A+1|0:A,O=I,A=GA(I,A,-997805,-1),I=h+cA|0,sA=e=A+sA|0,cA=A>>>0>e>>>0?I+1|0:I,kA=(UA=i[23+(Q=c+224|0)|0]|i[Q+24|0]<<8|i[Q+25|0]<<16|i[Q+26|0]<<24)>>>5&2097151,e=GA(F=(A=i[o+2|0])<<16&2031616|i[0|o]|i[o+1|0]<<8,0,k,0),I=h,B=(A=GA(p,0,N=(t=i[o+2|0]|i[o+3|0]<<8|i[o+4|0]<<16|i[o+5|0]<<24)>>>5&2097151,0))+e|0,e=h+I|0,e=A>>>0>B>>>0?e+1|0:e,A=GA(K=(i[o+7|0]|i[o+8|0]<<8|i[o+9|0]<<16|i[o+10|0]<<24)>>>7&2097151,0,S,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(M,0,Y=pA>>>4&2097151,0),A=h+I|0,pA=B=e+B|0,B=e>>>0>B>>>0?A+1|0:A,t=(I=i[o+6|0])<<8|t>>>24,e=A=I>>>24|0,I=(A=i[o+7|0])>>>16|0,I=GA(H=2097151&((3&(I|=e))<<30|(A=A<<16|t)>>>2),0,l,u),A=h+B|0,A=I>>>0>(e=I+pA|0)>>>0?A+1|0:A,B=(I=GA(v,0,G=(i[nA+7|0]|i[nA+8|0]<<8|i[nA+9|0]<<16|i[nA+10|0]<<24)>>>7&2097151,0))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,I=GA(b,0,FA=oA>>>4&2097151,0),A=h+e|0,t=I>>>0>(B=I+B|0)>>>0?A+1|0:A,A=(I=i[nA+6|0])>>>24|0,pA=I<<8|(oA=i[nA+2|0]|i[nA+3|0]<<8|i[nA+4|0]<<16|i[nA+5|0]<<24)>>>24,I=A,A=GA(d,fA,U=2097151&((3&(I|=e=(A=i[nA+7|0])>>>16|0))<<30|(A=A<<16|pA)>>>2),0),I=h+t|0,I=A>>>0>(e=A+B|0)>>>0?I+1|0:I,B=e,e=GA(x=(A=i[nA+2|0])<<16&2031616|i[0|nA]|i[nA+1|0]<<8,0,s,0),A=h+I|0,A=e>>>0>(B=B+e|0)>>>0?A+1|0:A,I=GA(E,0,m=oA>>>5&2097151,0),A=h+A|0,A=I>>>0>(e=I+B|0)>>>0?A+1|0:A,I=e,pA=e=e+kA|0,t=I=I>>>0>e>>>0?A+1|0:A,B=i[Q+21|0]|i[Q+22|0]<<8,A=GA(p,0,F,0),I=h,oA=(e=A)+(A=GA(l,u,N,0))|0,e=h+I|0,e=A>>>0>oA>>>0?e+1|0:e,A=GA(M,0,K,0),I=h+e|0,I=A>>>0>(oA=A+oA|0)>>>0?I+1|0:I,A=GA(Y,0,FA,0),I=h+I|0,I=A>>>0>(e=A+oA|0)>>>0?I+1|0:I,oA=(A=e)+(e=GA(S,0,H,0))|0,A=h+I|0,A=e>>>0>oA>>>0?A+1|0:A,I=GA(v,0,U,0),A=h+A|0,A=I>>>0>(e=I+oA|0)>>>0?A+1|0:A,oA=(I=GA(b,0,G,0))+e|0,e=h+A|0,e=I>>>0>oA>>>0?e+1|0:e,A=GA(d,fA,m,0),I=h+e|0,I=A>>>0>(oA=A+oA|0)>>>0?I+1|0:I,A=GA(E,0,x,0),I=h+I|0,A=A>>>0>(e=A+oA|0)>>>0?I+1|0:I,I=(I=e)>>>0>(e=e+B|0)>>>0?A+1|0:A,B=e,e=(A=i[Q+23|0])<<16&2031616,A=I,e=A=e>>>0>(B=B+e|0)>>>0?A+1|0:A,nA=A=A-((B>>>0<4293918720)-1|0)|0,I=(I=A>>>21|0)+t|0,A=(I=(t=pA=(A=(2097151&A)<<11|(oA=B- -1048576|0)>>>21)+pA|0)>>>0<A>>>0?I+1|0:I)+cA|0,A=(cA=t+sA|0)>>>0<t>>>0?A+1|0:A,uA=t- -1048576|0,vA=t=I-((t>>>0<4293918720)-1|0)|0,SA=cA-(I=-2097152&uA)|0,HA=A-((I>>>0>cA>>>0)+t|0)|0,pA=B,cA=e,A=GA(q,z,470296,0),I=h,e=A,A=GA(L,R,666643,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(O,X,654183,0))|0,A=h+I|0,bA=B,t=e>>>0>B>>>0?A+1|0:A,I=GA(l,u,F,0),A=h,e=I,I=GA(S,0,N,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(K,0,FA,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,A=GA(Y,0,G,0),e=h+I|0,e=A>>>0>(B=A+B|0)>>>0?e+1|0:e,A=GA(M,0,H,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(v,0,m,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,I=GA(b,0,U,0),A=h+A|0,A=I>>>0>(e=I+B|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(d,fA,x,0))|0,I=h+A|0,kA=B,e=e>>>0>B>>>0?I+1|0:I,I=(A=i[Q+19|0])>>>24|0,DA=A<<8|(sA=i[Q+15|0]|i[Q+16|0]<<8|i[Q+17|0]<<16|i[Q+18|0]<<24)>>>24,e=((JA=(A=(B=i[Q+20|0])>>>16|0)|I)>>>3|0)+e|0,kA=B=(I=(7&JA)<<29|(I=(B<<=16)|DA)>>>3)+kA|0,B=I>>>0>B>>>0?e+1|0:e,DA=sA>>>6&2097151,A=GA(S,0,F,0),I=h,e=A,A=GA(M,0,N,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,sA=(A=e)+(e=GA(K,0,G,0))|0,A=h+I|0,A=e>>>0>sA>>>0?A+1|0:A,e=GA(Y,0,U,0),I=h+A|0,I=e>>>0>(sA=e+sA|0)>>>0?I+1|0:I,e=GA(H,0,FA,0),A=h+I|0,A=e>>>0>(sA=e+sA|0)>>>0?A+1|0:A,I=GA(v,0,x,0),e=h+A|0,e=I>>>0>(sA=I+sA|0)>>>0?e+1|0:e,A=GA(b,0,m,0),I=h+e|0,A=A>>>0>(sA=A+sA|0)>>>0?I+1|0:I,XA=A=(mA=sA+DA|0)>>>0<sA>>>0?A+1|0:A,gg=A=A-((mA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(zA=mA- -1048576|0)>>>21,A=(A>>>21|0)+B|0,VA=A=e>>>0>(OA=e+kA|0)>>>0?A+1|0:A,Ig=A=A-((OA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(LA=OA- -1048576|0)>>>21,A=(A>>>21|0)+t|0,I=(e>>>0>(B=e+bA|0)>>>0?A+1|0:A)+cA|0,cA=(e=B+pA|0)-(A=-2097152&oA)|0,nA=A=(I=e>>>0<B>>>0?I+1|0:I)-((A>>>0>e>>>0)+nA|0)|0,Cg=A=A-((cA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(TA=cA- -1048576|0)>>>21,A=(A>>21)+HA|0,B=A=e>>>0>(t=e+SA|0)>>>0?A+1|0:A,Ag=A=A-((t>>>0<4293918720)-1|0)|0,qA=(2097151&A)<<11|(bA=t- -1048576|0)>>>21,pA=A>>21,JA=lA-(A=-2097152&hA)|0,MA=yA-((A>>>0>lA>>>0)+MA|0)|0,A=GA(y,0,f,0),jA=I=h,SA=A,sA=A- -1048576|0,PA=I=I-((A>>>0<4293918720)-1|0)|0,V=A=I>>>21|0,A=GA(P=(2097151&I)<<11|sA>>>21,A,-683901,-1),I=h+QA|0,I=A>>>0>(e=A+EA|0)>>>0?I+1|0:I,hA=e-(A=-2097152&_A)|0,oA=I-((A>>>0>e>>>0)+YA|0)|0,I=GA(k,0,v,0),A=h,e=I,I=GA(y,0,Y,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,I=GA(_,0,b,0),A=h+A|0,A=I>>>0>(e=I+e|0)>>>0?A+1|0:A,QA=(I=e)+(e=GA(p,0,d,fA))|0,I=h+A|0,I=e>>>0>QA>>>0?I+1|0:I,A=GA(s,0,S,0),e=h+I|0,e=A>>>0>(QA=A+QA|0)>>>0?e+1|0:e,A=GA(E,0,l,u),I=h+e|0,I=A>>>0>(QA=A+QA|0)>>>0?I+1|0:I,e=GA(f,0,FA,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,I=GA(w,0,M,0),A=h+A|0,EA=e=I+QA|0,QA=I>>>0>e>>>0?A+1|0:A,A=GA(_,0,Y,0),I=h,e=A,A=GA(y,0,K,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,yA=(A=GA(p,0,v,0))+e|0,e=h+I|0,e=A>>>0>yA>>>0?e+1|0:e,A=GA(k,0,b,0),I=h+e|0,I=A>>>0>(yA=A+yA|0)>>>0?I+1|0:I,e=GA(d,fA,l,u),A=h+I|0,A=e>>>0>(yA=e+yA|0)>>>0?A+1|0:A,I=GA(s,0,M,0),A=h+A|0,A=I>>>0>(e=I+yA|0)>>>0?A+1|0:A,yA=(I=e)+(e=GA(E,0,S,0))|0,I=h+A|0,I=e>>>0>yA>>>0?I+1|0:I,A=GA(f,0,G,0),e=h+I|0,e=A>>>0>(yA=A+yA|0)>>>0?e+1|0:e,A=GA(w,0,FA,0),I=h+e|0,DA=I=A>>>0>(kA=A+yA|0)>>>0?I+1|0:I,WA=A=I-((kA>>>0<4293918720)-1|0)|0,I=(2097151&A)<<11|(lA=kA- -1048576|0)>>>21,A=(A>>>21|0)+QA|0,_A=A=I>>>0>(YA=I+EA|0)>>>0?A+1|0:A,xA=A=A-((YA>>>0<4293918720)-1|0)|0,I=(e=A>>>21|0)+oA|0,hA=I=(A=(2097151&A)<<11|(yA=YA- -1048576|0)>>>21)>>>0>(HA=A+hA|0)>>>0?I+1|0:I,ZA=A=I-((HA>>>0<4293918720)-1|0)|0,QA=(2097151&A)<<11|(oA=HA- -1048576|0)>>>21,A=(A>>21)+MA|0,$=A=(I=QA+JA|0)>>>0<QA>>>0?A+1|0:A,AA=I,A=GA(I,A,-683901,-1),I=h+pA|0,qA=e=A+qA|0,pA=A>>>0>e>>>0?I+1|0:I,A=GA(_,0,F,0),I=h,e=A,A=GA(k,0,N,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,QA=(A=e)+(e=GA(l,u,K,0))|0,A=h+I|0,A=e>>>0>QA>>>0?A+1|0:A,I=GA(S,0,Y,0),e=h+A|0,e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,I=GA(p,0,H,0),A=h+e|0,A=I>>>0>(QA=I+QA|0)>>>0?A+1|0:A,e=GA(v,0,FA,0),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,A=GA(b,0,M,0),I=h+I|0,I=A>>>0>(e=A+QA|0)>>>0?I+1|0:I,QA=(A=e)+(e=GA(d,fA,G,0))|0,A=h+I|0,A=e>>>0>QA>>>0?A+1|0:A,I=GA(s,0,m,0),e=h+A|0,e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,I=GA(E,0,U,0),A=h+e|0,A=I>>>0>(QA=I+QA|0)>>>0?A+1|0:A,e=GA(w,0,x,0),I=h+A|0,MA=QA=e+QA|0,e=e>>>0>QA>>>0?I+1|0:I,I=(A=i[Q+27|0])>>>24|0,EA=A<<8|UA>>>24,QA=2097151&((3&(I|=A=(QA=i[Q+28|0])>>>16|0))<<30|(A=(QA<<=16)|EA)>>>2),I=e,EA=A=QA+MA|0,QA=A>>>0<QA>>>0?I+1|0:I,JA=GA(j,T,470296,0),MA=h,A=(e=(2097151&KA)<<11|NA>>>21)+(SA-(I=-2097152&sA)|0)|0,I=jA-((524287&PA)+(I>>>0>SA>>>0)|0)+(KA>>>21)|0,gA=I=A>>>0<e>>>0?I+1|0:I,IA=A,I=GA(A,I,666643,0),A=h+MA|0,A=I>>>0>(e=I+JA|0)>>>0?A+1|0:A,sA=(I=GA(L,R,654183,0))+e|0,e=h+A|0,e=I>>>0>sA>>>0?e+1|0:e,I=GA(q,z,-997805,-1),A=h+e|0,A=I>>>0>(sA=I+sA|0)>>>0?A+1|0:A,e=GA(O,X,136657,0),I=h+A|0,uA=(A=(2097151&vA)<<11|uA>>>21)+(sA=e+sA|0)|0,I=(vA>>>21|0)+(e>>>0>sA>>>0?I+1|0:I)|0,PA=sA=QA-((EA>>>0<4293918720)-1|0)|0,A=(A>>>0>uA>>>0?I+1|0:I)+QA|0,I=(QA=EA+uA|0)-(e=-2097152&(jA=EA- -1048576|0))|0,e=(A=(A=QA>>>0<uA>>>0?A+1|0:A)-((e>>>0>QA>>>0)+sA|0)|0)+pA|0,JA=QA=A-((I>>>0<4293918720)-1|0)|0,SA=(e=(EA=I+qA|0)>>>0<I>>>0?e+1|0:e)-(((I=-2097152&(MA=I- -1048576|0))>>>0>EA>>>0)+QA|0)|0,UA=A=EA-I|0,QA=t,t=B,$A=HA-(A=-2097152&oA)|0,sA=hA-((A>>>0>HA>>>0)+ZA|0)|0,A=GA(IA,gA,-683901,-1),I=h,B=(e=A)+(A=GA(P,V,136657,0))|0,e=h+I|0,I=_A+(A>>>0>B>>>0?e+1|0:e)|0,yA=(e=B+YA|0)-(A=-2097152&yA)|0,hA=(I=e>>>0<YA>>>0?I+1|0:I)-((A>>>0>e>>>0)+xA|0)|0,I=GA(P,V,-997805,-1),A=h+DA|0,A=I>>>0>(e=I+kA|0)>>>0?A+1|0:A,B=(I=GA(IA,gA,136657,0))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,A=GA(j,T,-683901,-1),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,oA=B-(A=-2097152&lA)|0,pA=I-((A>>>0>B>>>0)+WA|0)|0,I=GA(k,0,Y,0),A=h,e=I,I=GA(_,0,K,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=GA(y,0,H,0))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,A=GA(l,u,v,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(p,0,b,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,e=GA(d,fA,S,0),I=h+A|0,I=e>>>0>(B=e+B|0)>>>0?I+1|0:I,e=GA(s,0,FA,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,I=GA(E,0,M,0),e=h+A|0,e=I>>>0>(B=I+B|0)>>>0?e+1|0:e,A=GA(f,0,U,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(w,0,G,0),A=h+I|0,EA=B=e+B|0,B=e>>>0>B>>>0?A+1|0:A,A=GA(k,0,K,0),I=h,e=A,A=GA(y,0,N,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,_A=(A=e)+(e=GA(p,0,Y,0))|0,A=h+I|0,A=e>>>0>_A>>>0?A+1|0:A,I=GA(_,0,H,0),e=h+A|0,e=I>>>0>(_A=I+_A|0)>>>0?e+1|0:e,A=GA(v,0,S,0),I=h+e|0,I=A>>>0>(_A=A+_A|0)>>>0?I+1|0:I,e=GA(l,u,b,0),A=h+I|0,A=e>>>0>(_A=e+_A|0)>>>0?A+1|0:A,e=GA(d,fA,M,0),I=h+A|0,I=e>>>0>(_A=e+_A|0)>>>0?I+1|0:I,e=GA(s,0,G,0),A=h+I|0,A=e>>>0>(_A=e+_A|0)>>>0?A+1|0:A,I=GA(E,0,FA,0),e=h+A|0,e=I>>>0>(_A=I+_A|0)>>>0?e+1|0:e,_A=(A=GA(f,0,m,0))+_A|0,I=h+e|0,e=GA(w,0,U,0),A=h+(A>>>0>_A>>>0?I+1|0:I)|0,HA=A=e>>>0>(ZA=e+_A|0)>>>0?A+1|0:A,eA=A=A-((ZA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(KA=ZA- -1048576|0)>>>21,A=(A>>>21|0)+B|0,NA=A=e>>>0>(qA=e+EA|0)>>>0?A+1|0:A,BA=A=A-((qA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(vA=qA- -1048576|0)>>>21,A=(A>>>21|0)+pA|0,uA=A=e>>>0>(YA=e+oA|0)>>>0?A+1|0:A,aA=A=A-((YA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(DA=YA- -1048576|0)>>>21,A=(A>>21)+hA|0,B=A=e>>>0>(oA=e+yA|0)>>>0?A+1|0:A,hA=A=A-((oA>>>0<4293918720)-1|0)|0,pA=(2097151&A)<<11|(e=oA- -1048576|0)>>>21,A=(A>>21)+sA|0,WA=A=(EA=pA+$A|0)>>>0<pA>>>0?A+1|0:A,xA=EA,A=GA(EA,A,-683901,-1),I=h,EA=A,A=GA(AA,$,136657,0),I=h+I|0,A=(A>>>0>(EA=EA+A|0)>>>0?I+1|0:I)+t|0,eg=(t=QA+EA|0)-(I=-2097152&bA)|0,Bg=(A=t>>>0<EA>>>0?A+1|0:A)-((I>>>0>t>>>0)+Ag|0)|0,pA=cA,EA=nA,cA=GA(xA,WA,136657,0),t=h,$A=A=oA-(I=-2097152&e)|0,CA=B=B-((I>>>0>oA>>>0)+hA|0)|0,e=GA(AA,$,-997805,-1),I=h+t|0,I=e>>>0>(cA=e+cA|0)>>>0?I+1|0:I,e=GA(A,B,-683901,-1),A=h+I|0,Ag=B=e+cA|0,QA=e>>>0>B>>>0?A+1|0:A,A=GA(O,X,470296,0),I=h,B=(e=A)+(A=GA(q,z,666643,0))|0,e=h+I|0,I=VA+(A>>>0>B>>>0?e+1|0:e)|0,bA=A=B+OA|0,t=I=A>>>0<OA>>>0?I+1|0:I,I=GA(O,X,666643,0),A=h+XA|0,A=I>>>0>(e=I+mA|0)>>>0?A+1|0:A,yA=e-(I=-2097152&zA)|0,kA=A-((I>>>0>e>>>0)+gg|0)|0,I=GA(M,0,F,0),A=h,e=I,I=GA(N,0,FA,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(K,0,U,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,e=GA(Y,0,m,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,I=GA(H,0,G,0),e=h+A|0,e=I>>>0>(B=I+B|0)>>>0?e+1|0:e,A=GA(b,0,x,0),I=h+e|0,oA=B=A+B|0,B=A>>>0>B>>>0?I+1|0:I,I=(A=i[Q+14|0])>>>24|0,cA=A<<8|(hA=i[Q+10|0]|i[Q+11|0]<<8|i[Q+12|0]<<16|i[Q+13|0]<<24)>>>24,I=2097151&((1&(I|=e=(A=i[Q+15|0])>>>16|0))<<31|(A=cA|A<<16)>>>1),A=B,oA=e=I+oA|0,B=I>>>0>e>>>0?A+1|0:A,cA=hA>>>4&2097151,A=GA(F,0,FA,0),I=h,e=A,A=GA(N,0,G,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,A=GA(K,0,m,0),I=h+I|0,I=A>>>0>(e=A+e|0)>>>0?I+1|0:I,hA=(A=e)+(e=GA(Y,0,x,0))|0,A=h+I|0,A=e>>>0>hA>>>0?A+1|0:A,I=GA(H,0,U,0),e=h+A|0,A=I>>>0>(hA=I+hA|0)>>>0?e+1|0:e,nA=A=(zA=cA+hA|0)>>>0<hA>>>0?A+1|0:A,iA=A=A-((zA>>>0<4293918720)-1|0)|0,I=(e=A>>>21|0)+B|0,lA=I=(A=(2097151&A)<<11|(sA=zA- -1048576|0)>>>21)>>>0>(VA=A+oA|0)>>>0?I+1|0:I,rA=A=I-((VA>>>0<4293918720)-1|0)|0,I=(2097151&A)<<11|(_A=VA- -1048576|0)>>>21,A=(A>>>21|0)+kA|0,hA=A=I>>>0>(yA=I+yA|0)>>>0?A+1|0:A,tA=A=A-((yA>>>0<4293918720)-1|0)|0,I=(e=A>>21)+t|0,gg=I=(I=(A=(2097151&A)<<11|(oA=yA- -1048576|0)>>>21)>>>0>(B=A+bA|0)>>>0?I+1|0:I)-(((e=-2097152&LA)>>>0>B>>>0)+Ig|0)|0,LA=A=B-e|0,cA=A- -1048576|0,Ig=A=I-((A>>>0<4293918720)-1|0)|0,e=(I=A>>21)+QA|0,I=((A=(2097151&A)<<11|cA>>>21)>>>0>(B=A+Ag|0)>>>0?e+1|0:e)+EA|0,mA=I=(I=(A=B)>>>0>(B=B+pA|0)>>>0?I+1|0:I)-(((e=-2097152&TA)>>>0>B>>>0)+Cg|0)|0,EA=A=B-e|0,t=A- -1048576|0,XA=A=I-((A>>>0<4293918720)-1|0)|0,e=(I=A>>21)+Bg|0,TA=A=(e=(A=(2097151&A)<<11|t>>>21)>>>0>(QA=A+eg|0)>>>0?e+1|0:e)-((QA>>>0<4293918720)-1|0)|0,bA=UA- -1048576|0,kA=SA-((UA>>>0<4293918720)-1|0)|0,pA=(2097151&A)<<11|(B=QA- -1048576|0)>>>21,A=(A>>21)+SA|0,Cg=(UA=pA+UA|0)-(I=-2097152&bA)|0,eg=(pA>>>0>UA>>>0?A+1|0:A)-((I>>>0>UA>>>0)+kA|0)|0,Bg=QA-(A=-2097152&B)|0,Ag=e-((A>>>0>QA>>>0)+TA|0)|0,OA=EA-(A=-2097152&t)|0,UA=mA-((A>>>0>EA>>>0)+XA|0)|0,A=GA(xA,WA,-997805,-1),I=h,e=A,A=GA(AA,$,654183,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA($A,CA,136657,0))|0,A=h+I|0,I=gg+(e>>>0>B>>>0?A+1|0:A)|0,mA=(e=B+LA|0)-(A=-2097152&cA)|0,XA=(I=e>>>0<LA>>>0?I+1|0:I)-((A>>>0>e>>>0)+Ig|0)|0,LA=YA-(A=-2097152&DA)|0,SA=uA-((A>>>0>YA>>>0)+aA|0)|0,I=GA(IA,gA,-997805,-1),A=h,e=I,I=GA(P,V,654183,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(j,T,136657,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,A=GA(L,R,-683901,-1),e=h+I|0,I=NA+(A>>>0>(B=A+B|0)>>>0?e+1|0:e)|0,DA=(e=B+qA|0)-(A=-2097152&vA)|0,uA=(I=e>>>0<qA>>>0?I+1|0:I)-((A>>>0>e>>>0)+BA|0)|0,I=GA(IA,gA,654183,0),A=h,e=I,I=GA(P,V,470296,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=GA(j,T,-997805,-1))+e|0,e=h+A|0,I=HA+(I>>>0>B>>>0?e+1|0:e)|0,I=(A=B+ZA|0)>>>0<ZA>>>0?I+1|0:I,e=A,A=GA(L,R,136657,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(q,z,-683901,-1))|0,A=h+I|0,cA=B-(I=-2097152&KA)|0,t=(e>>>0>B>>>0?A+1|0:A)-((I>>>0>B>>>0)+eA|0)|0,B=(i[Q+28|0]|i[Q+29|0]<<8|i[Q+30|0]<<16|i[Q+31|0]<<24)>>>7|0,A=GA(y,0,F,0),I=h,QA=(e=A)+(A=GA(_,0,N,0))|0,e=h+I|0,e=A>>>0>QA>>>0?e+1|0:e,A=GA(p,0,K,0),I=h+e|0,I=A>>>0>(QA=A+QA|0)>>>0?I+1|0:I,e=GA(l,u,Y,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,e=GA(k,0,H,0),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,e=GA(v,0,M,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,I=GA(S,0,b,0),e=h+A|0,e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,A=GA(d,fA,FA,0),I=h+e|0,I=A>>>0>(QA=A+QA|0)>>>0?I+1|0:I,e=GA(s,0,U,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,e=GA(E,0,G,0),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,e=GA(f,0,x,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,I=GA(w,0,m,0),e=h+A|0,I=e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,NA=(e=(2097151&PA)<<11|jA>>>21)+(A=B+QA|0)|0,A=(PA>>>21|0)+(I=A>>>0<QA>>>0?I+1|0:I)|0,pA=A=e>>>0>NA>>>0?A+1|0:A,TA=I=A-((NA>>>0<4293918720)-1|0)|0,e=(A=I>>>21|0)+t|0,EA=e=(I=(2097151&I)<<11|(fA=NA- -1048576|0)>>>21)>>>0>(vA=I+cA|0)>>>0?e+1|0:e,jA=I=e-((vA>>>0<4293918720)-1|0)|0,A=(A=I>>21)+uA|0,cA=A=(I=(2097151&I)<<11|(QA=vA- -1048576|0)>>>21)>>>0>(DA=I+DA|0)>>>0?A+1|0:A,KA=I=A-((DA>>>0<4293918720)-1|0)|0,e=(A=I>>21)+SA|0,PA=e=(I=(B=(2097151&I)<<11|(t=DA- -1048576|0)>>>21)+LA|0)>>>0<B>>>0?e+1|0:e,SA=I,A=GA(I,e,-683901,-1),I=h+XA|0,uA=e=A+mA|0,B=A>>>0>e>>>0?I+1|0:I,I=GA(AA,$,470296,0),A=h+hA|0,A=I>>>0>(yA=I+yA|0)>>>0?A+1|0:A,I=GA(xA,WA,654183,0),A=h+(A-(((e=-2097152&oA)>>>0>yA>>>0)+tA|0)|0)|0,A=I>>>0>(oA=I+(yA-e|0)|0)>>>0?A+1|0:A,e=GA($A,CA,-997805,-1),I=h+A|0,I=e>>>0>(oA=e+oA|0)>>>0?I+1|0:I,HA=e=DA-(A=-2097152&t)|0,FA=cA=cA-((A>>>0>DA>>>0)+KA|0)|0,oA=(t=GA(SA,PA,136657,0))+oA|0,A=h+I|0,e=GA(e,cA,-683901,-1),I=h+(t>>>0>oA>>>0?A+1|0:A)|0,cA=I=e>>>0>(hA=e+oA|0)>>>0?I+1|0:I,KA=A=I-((hA>>>0<4293918720)-1|0)|0,I=(2097151&A)<<11|(t=hA- -1048576|0)>>>21,A=(A>>21)+B|0,DA=I=(A=I>>>0>(oA=I+uA|0)>>>0?A+1|0:A)-((oA>>>0<4293918720)-1|0)|0,yA=(2097151&I)<<11|(B=oA- -1048576|0)>>>21,I=(I>>21)+UA|0,OA=uA=yA+OA|0,uA=yA>>>0>uA>>>0?I+1|0:I,UA=oA-(I=-2097152&B)|0,ZA=A-((I>>>0>oA>>>0)+DA|0)|0,mA=hA-(A=-2097152&t)|0,XA=cA-((A>>>0>hA>>>0)+KA|0)|0,A=GA(AA,$,666643,0),e=lA+h|0,e=(t=A+VA|0)>>>0<VA>>>0?e+1|0:e,B=(A=GA(xA,WA,470296,0))+(t-(I=-2097152&_A)|0)|0,I=h+(e-((I>>>0>t>>>0)+rA|0)|0)|0,I=A>>>0>B>>>0?I+1|0:I,e=GA($A,CA,654183,0),A=h+I|0,oA=B=e+B|0,B=e>>>0>B>>>0?A+1|0:A,t=vA-(A=-2097152&QA)|0,cA=EA-((A>>>0>vA>>>0)+jA|0)|0,A=GA(IA,gA,470296,0),I=h,e=A,A=GA(P,V,666643,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,A=GA(j,T,654183,0),I=h+I|0,I=A>>>0>(e=A+e|0)>>>0?I+1|0:I,QA=(A=e)+(e=GA(L,R,-997805,-1))|0,A=h+I|0,A=e>>>0>QA>>>0?A+1|0:A,I=GA(q,z,136657,0),A=h+A|0,A=I>>>0>(e=I+QA|0)>>>0?A+1|0:A,QA=(I=GA(O,X,-683901,-1))+e|0,e=h+A|0,I=pA+(I>>>0>QA>>>0?e+1|0:e)|0,vA=(e=(2097151&JA)<<11|MA>>>21)+((QA=QA+NA|0)-(A=-2097152&fA)|0)|0,A=((I=QA>>>0<NA>>>0?I+1|0:I)-((A>>>0>QA>>>0)+TA|0)|0)+(JA>>21)|0,DA=A=e>>>0>vA>>>0?A+1|0:A,LA=A=A-((vA>>>0<4293918720)-1|0)|0,I=t,t=(2097151&A)<<11|(_A=vA- -1048576|0)>>>21,A=(A>>21)+cA|0,KA=A=(e=I+t|0)>>>0<t>>>0?A+1|0:A,NA=e,A=GA(e,A,-683901,-1),I=h+B|0,I=A>>>0>(e=A+oA|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(SA,PA,-997805,-1))|0,A=h+I|0,A=e>>>0>B>>>0?A+1|0:A,I=GA(HA,FA,136657,0),e=h+A|0,MA=B=I+B|0,EA=I>>>0>B>>>0?e+1|0:e,oA=zA-(A=-2097152&sA)|0,pA=nA-((A>>>0>zA>>>0)+iA|0)|0,I=GA(F,0,G,0),A=h,e=I,I=GA(N,0,U,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,I=GA(K,0,x,0),A=h+A|0,A=I>>>0>(e=I+e|0)>>>0?A+1|0:A,B=(I=GA(H,0,m,0))+e|0,e=h+A|0,I=I>>>0>B>>>0?e+1|0:e,fA=e=(A=(i[Q+7|0]|i[Q+8|0]<<8|i[Q+9|0]<<16|i[Q+10|0]<<24)>>>7&2097151)+B|0,QA=A>>>0>e>>>0?I+1|0:I,A=GA(F,0,U,0),I=h,e=A,A=GA(N,0,m,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(H,0,x,0))|0,A=h+I|0,cA=B,B=e>>>0>B>>>0?A+1|0:A,A=(I=i[Q+6|0])>>>24|0,t=I<<8|(TA=i[Q+2|0]|i[Q+3|0]<<8|i[Q+4|0]<<16|i[Q+5|0]<<24)>>>24,e=A,I=(A=i[Q+7|0])>>>16|0,I|=e,e=B,t=e=(A=2097151&((3&I)<<30|(A=A<<16|t)>>>2))>>>0>(cA=A+cA|0)>>>0?e+1|0:e,qA=A=e-((cA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(lA=cA- -1048576|0)>>>21,A=(A>>>21|0)+QA|0,yA=A=e>>>0>(nA=e+fA|0)>>>0?A+1|0:A,jA=A=A-((nA>>>0<4293918720)-1|0)|0,e=(I=A>>>21|0)+pA|0,e=(A=(2097151&A)<<11|(hA=nA- -1048576|0)>>>21)>>>0>(B=A+oA|0)>>>0?e+1|0:e,I=GA(xA,WA,666643,0),A=h+e|0,A=I>>>0>(B=I+B|0)>>>0?A+1|0:A,I=GA($A,CA,470296,0),A=h+A|0,A=I>>>0>(e=I+B|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(NA,KA,136657,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,A=GA(SA,PA,654183,0),I=h+I|0,I=A>>>0>(e=A+B|0)>>>0?I+1|0:I,oA=(A=GA(HA,FA,-997805,-1))+e|0,e=h+I|0,pA=e=A>>>0>oA>>>0?e+1|0:e,JA=A=e-((oA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(fA=oA- -1048576|0)>>>21,A=(A>>21)+EA|0,MA=e=(A=e>>>0>(B=e+MA|0)>>>0?A+1|0:A)-((B>>>0<4293918720)-1|0)|0,QA=(2097151&e)<<11|(EA=B- -1048576|0)>>>21,e=(e>>21)+XA|0,YA=sA=QA+mA|0,sA=QA>>>0>sA>>>0?e+1|0:e,QA=B,I=A,B=(vA-(A=-2097152&_A)|0)+(_A=(2097151&kA)<<11|bA>>>21)|0,A=(DA-((A>>>0>vA>>>0)+LA|0)|0)+(kA>>21)|0,kA=A=B>>>0<_A>>>0?A+1|0:A,mA=A=A-((B>>>0<4293918720)-1|0)|0,vA=e=A>>21,A=GA(xA=(2097151&A)<<11|(DA=B- -1048576|0)>>>21,e,-683901,-1),I=h+I|0,I=A>>>0>(e=A+QA|0)>>>0?I+1|0:I,XA=e-(A=-2097152&EA)|0,zA=I-((A>>>0>e>>>0)+MA|0)|0,I=GA(xA,vA,136657,0),A=h+pA|0,A=I>>>0>(e=I+oA|0)>>>0?A+1|0:A,VA=e-(I=-2097152&fA)|0,JA=A-((I>>>0>e>>>0)+JA|0)|0,I=GA($A,CA,666643,0),A=h+(yA-(((e=-2097152&hA)>>>0>nA>>>0)+jA|0)|0)|0,A=I>>>0>(QA=I+(nA-e|0)|0)>>>0?A+1|0:A,e=GA(NA,KA,-997805,-1),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,A=GA(SA,PA,470296,0),e=h+I|0,e=A>>>0>(QA=A+QA|0)>>>0?e+1|0:e,I=GA(HA,FA,654183,0),A=h+e|0,MA=QA=I+QA|0,pA=I>>>0>QA>>>0?A+1|0:A,e=TA>>>5&2097151,A=GA(F,0,m,0),I=h,EA=A,A=GA(N,0,x,0),I=h+I|0,A=A>>>0>(QA=EA+A|0)>>>0?I+1|0:I,EA=I=e+QA|0,e=A=I>>>0<QA>>>0?A+1|0:A,nA=(I=GA(F,0,x,0))+(A=(A=i[Q+2|0])<<16&2031616|i[0|Q]|i[Q+1|0]<<8)|0,I=h,_A=I=A>>>0>nA>>>0?I+1|0:I,LA=I=I-((nA>>>0<4293918720)-1|0)|0,A=(A=I>>>21|0)+e|0,hA=A=(I=(2097151&I)<<11|(yA=nA- -1048576|0)>>>21)>>>0>(bA=I+EA|0)>>>0?A+1|0:A,TA=I=A-((bA>>>0<4293918720)-1|0)|0,e=(2097151&I)<<11|(oA=bA- -1048576|0)>>>21,I=(I>>>21|0)+t|0,I=e>>>0>(QA=e+cA|0)>>>0?I+1|0:I,e=GA(NA,KA,654183,0),A=h+(I-(((t=-2097152&lA)>>>0>QA>>>0)+qA|0)|0)|0,A=e>>>0>(cA=e+(QA-t|0)|0)>>>0?A+1|0:A,I=GA(SA,PA,666643,0),A=h+A|0,A=I>>>0>(e=I+cA|0)>>>0?A+1|0:A,fA=(I=e)+(e=GA(HA,FA,470296,0))|0,I=h+A|0,EA=I=e>>>0>fA>>>0?I+1|0:I,jA=I=I-((fA>>>0<4293918720)-1|0)|0,e=(A=I>>21)+pA|0,lA=I=(e=(I=(2097151&I)<<11|(QA=fA- -1048576|0)>>>21)>>>0>(cA=I+MA|0)>>>0?e+1|0:e)-((cA>>>0<4293918720)-1|0)|0,pA=(2097151&I)<<11|(t=cA- -1048576|0)>>>21,I=(I>>21)+JA|0,PA=SA=pA+VA|0,pA=pA>>>0>SA>>>0?I+1|0:I,A=GA(xA,vA,-997805,-1),I=h+e|0,I=A>>>0>(cA=A+cA|0)>>>0?I+1|0:I,JA=cA-(A=-2097152&t)|0,MA=I-((A>>>0>cA>>>0)+lA|0)|0,I=GA(xA,vA,654183,0),A=h+EA|0,A=I>>>0>(e=I+fA|0)>>>0?A+1|0:A,SA=e-(I=-2097152&QA)|0,lA=A-((I>>>0>e>>>0)+jA|0)|0,A=GA(NA,KA,470296,0),e=h+(hA-(((I=-2097152&oA)>>>0>bA>>>0)+TA|0)|0)|0,e=A>>>0>(t=A+(bA-I|0)|0)>>>0?e+1|0:e,I=GA(HA,FA,666643,0),A=h+e|0,cA=t=I+t|0,e=I>>>0>t>>>0?A+1|0:A,I=GA(NA,KA,666643,0),A=h+(_A-((4095&LA)+((t=-2097152&yA)>>>0>nA>>>0)|0)|0)|0,fA=A=I>>>0>(oA=I+(nA-t|0)|0)>>>0?A+1|0:A,_A=A=A-((oA>>>0<4293918720)-1|0)|0,t=(2097151&A)<<11|(EA=oA- -1048576|0)>>>21,A=(A>>21)+e|0,e=A=t>>>0>(QA=t+cA|0)>>>0?A+1|0:A,yA=A=A-((QA>>>0<4293918720)-1|0)|0,t=(2097151&A)<<11|(cA=QA- -1048576|0)>>>21,A=(A>>21)+lA|0,t=t>>>0>(hA=t+SA|0)>>>0?A+1|0:A,A=GA(xA,vA,470296,0),e=h+e|0,e=A>>>0>(I=A+QA|0)>>>0?e+1|0:e,QA=I-(A=-2097152&cA)|0,cA=e-((A>>>0>I>>>0)+yA|0)|0,I=GA(xA,vA,666643,0),A=h+(fA-(((e=-2097152&EA)>>>0>oA>>>0)+_A|0)|0)|0,I=(e=(A=I>>>0>(lA=I+(oA-e|0)|0)>>>0?A+1|0:A)>>21)+cA|0,A=(A=(I=(A=(2097151&A)<<11|lA>>>21)>>>0>(_A=A+QA|0)>>>0?I+1|0:I)>>21)+t|0,I=(I=(A=(I=(2097151&I)<<11|_A>>>21)>>>0>(yA=I+hA|0)>>>0?A+1|0:A)>>21)+MA|0,e=(A=(I=(A=(2097151&A)<<11|yA>>>21)>>>0>(t=A+JA|0)>>>0?I+1|0:I)>>21)+pA|0,A=(I=(e=(I=(2097151&I)<<11|t>>>21)>>>0>(hA=I+PA|0)>>>0?e+1|0:e)>>21)+zA|0,I=(e=(A=(e=(2097151&e)<<11|hA>>>21)>>>0>(oA=e+XA|0)>>>0?A+1|0:A)>>21)+sA|0,A=(A=(I=(A=(2097151&A)<<11|oA>>>21)>>>0>(pA=A+YA|0)>>>0?I+1|0:I)>>21)+ZA|0,I=(I=(A=(I=(2097151&I)<<11|pA>>>21)>>>0>(fA=I+UA|0)>>>0?A+1|0:A)>>21)+uA|0,e=(A=(I=(A=(2097151&A)<<11|fA>>>21)>>>0>(EA=A+OA|0)>>>0?I+1|0:I)>>21)+Ag|0,A=(I=(e=(I=(2097151&I)<<11|EA>>>21)>>>0>(QA=I+Bg|0)>>>0?e+1|0:e)>>21)+eg|0,DA=(sA=B-(I=-2097152&DA)|0)+((2097151&(A=(e=(2097151&e)<<11|QA>>>21)>>>0>(cA=e+Cg|0)>>>0?A+1|0:A))<<11|cA>>>21)|0,A=(kA-((I>>>0>B>>>0)+mA|0)|0)+(A>>21)|0,kA=I=(A=sA>>>0>DA>>>0?A+1|0:A)>>21,lA=(A=GA(uA=(2097151&A)<<11|DA>>>21,I,666643,0))+(I=2097151&lA)|0,A=h,B=A=I>>>0>lA>>>0?A+1|0:A,C[0|r]=lA,C[r+1|0]=(255&A)<<24|lA>>>8,A=2097151&_A,I=GA(uA,kA,470296,0)+A|0,e=h,A=(B>>21)+(A>>>0>I>>>0?e+1|0:e)|0,A=(_A=(sA=(2097151&B)<<11|lA>>>21)+I|0)>>>0<sA>>>0?A+1|0:A,C[r+4|0]=(2047&A)<<21|_A>>>11,I=A,e=_A,C[r+3|0]=(7&A)<<29|e>>>3,C[r+2|0]=31&((65535&B)<<16|lA>>>16)|e<<5,B=2097151&yA,yA=GA(uA,kA,654183,0)+B|0,A=h,_A=(2097151&I)<<11|e>>>21,I=(I>>21)+(B=B>>>0>yA>>>0?A+1|0:A)|0,A=I=(yA=_A+yA|0)>>>0<_A>>>0?I+1|0:I,C[r+6|0]=(63&A)<<26|yA>>>6,B=yA,yA=0,C[r+5|0]=yA<<13|(1572864&e)>>>19|B<<2,e=2097151&t,t=GA(uA,kA,-997805,-1)+e|0,I=h,I=e>>>0>t>>>0?I+1|0:I,yA=(2097151&(e=A))<<11|B>>>21,e=(A>>=21)+I|0,e=(t=yA+t|0)>>>0<yA>>>0?e+1|0:e,C[r+9|0]=(511&e)<<23|t>>>9,C[r+8|0]=(1&e)<<31|t>>>1,I=0,C[r+7|0]=I<<18|(2080768&B)>>>14|t<<7,I=2097151&hA,B=GA(uA,kA,136657,0)+I|0,A=h,A=I>>>0>B>>>0?A+1|0:A,hA=(2097151&(I=e))<<11|t>>>21,I=A+(e=I>>21)|0,I=(B=hA+B|0)>>>0<hA>>>0?I+1|0:I,C[r+12|0]=(4095&I)<<20|B>>>12,e=B,C[r+11|0]=(15&I)<<28|e>>>4,B=0,C[r+10|0]=B<<15|(1966080&t)>>>17|e<<4,B=2097151&oA,t=GA(uA,kA,-683901,-1)+B|0,A=h,A=B>>>0>t>>>0?A+1|0:A,B=I,I=A+(I>>=21)|0,I=(B=(oA=t)+(t=(2097151&B)<<11|e>>>21)|0)>>>0<t>>>0?I+1|0:I,C[r+14|0]=(127&I)<<25|B>>>7,t=0,C[r+13|0]=t<<12|(1048576&e)>>>20|B<<1,A=I>>21,e=(I=(2097151&I)<<11|B>>>21)>>>0>(t=I+(2097151&pA)|0)>>>0?A+1|0:A,C[r+17|0]=(1023&e)<<22|t>>>10,C[r+16|0]=(3&e)<<30|t>>>2,I=0,C[r+15|0]=I<<17|(2064384&B)>>>15|t<<6,A=e>>21,A=(I=(2097151&e)<<11|t>>>21)>>>0>(e=I+(2097151&fA)|0)>>>0?A+1|0:A,C[r+20|0]=(8191&A)<<19|e>>>13,C[r+19|0]=(31&A)<<27|e>>>5,B=(I=2097151&EA)+(EA=(2097151&A)<<11|e>>>21)|0,I=A>>21,I=B>>>0<EA>>>0?I+1|0:I,EA=B,C[r+21|0]=B,fA=0,C[r+18|0]=fA<<14|(1835008&t)>>>18|e<<3,C[r+22|0]=(255&I)<<24|B>>>8,e=I>>21,e=(B=(t=(2097151&I)<<11|B>>>21)+(2097151&QA)|0)>>>0<t>>>0?e+1|0:e,C[r+25|0]=(2047&e)<<21|B>>>11,C[r+24|0]=(7&e)<<29|B>>>3,C[r+23|0]=31&((65535&I)<<16|EA>>>16)|B<<5,A=e>>21,A=(I=(2097151&e)<<11|B>>>21)>>>0>(e=I+(2097151&cA)|0)>>>0?A+1|0:A,C[r+27|0]=(63&A)<<26|e>>>6,t=0,C[r+26|0]=t<<13|(1572864&B)>>>19|e<<2,I=A,A>>=21,I=(B=(cA=(2097151&I)<<11|e>>>21)+(t=2097151&DA)|0)>>>0<t>>>0?A+1|0:A,C[r+31|0]=(131071&I)<<15|B>>>17,A=B,C[r+30|0]=(511&I)<<23|A>>>9,B=0,C[r+28|0]=B<<18|(2080768&e)>>>14|A<<7,C[r+29|0]=cA+DA>>>1,dg(o,64),dg(Q,64),g&&(a[g>>2]=64,a[g+4>>2]=0),n=c+560|0,0}function f(A,g,I,C){for(var e=0,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0;r=(e=Q<<3)+I|0,B=i[0|(e=g+e|0)]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,v=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,o=B<<24|(65280&B)<<8,c=(t=16711680&B)<<24,t=t>>>8|0,e=(y=-16777216&B)>>>24|0,a[r>>2]=c|y<<8|-16777216&((255&v)<<24|B>>>8)|16711680&((16777215&v)<<8|B>>>24)|v>>>8&65280|v>>>24,B=e|t|o,e=0,a[r+4>>2]=B|e,16!=(0|(Q=Q+1|0)););for(g=a[A+4>>2],a[C>>2]=a[A>>2],a[C+4>>2]=g,g=a[A+60>>2],a[C+56>>2]=a[A+56>>2],a[C+60>>2]=g,g=a[A+52>>2],a[C+48>>2]=a[A+48>>2],a[C+52>>2]=g,g=a[A+44>>2],a[C+40>>2]=a[A+40>>2],a[C+44>>2]=g,g=a[A+36>>2],a[C+32>>2]=a[A+32>>2],a[C+36>>2]=g,g=a[A+28>>2],a[C+24>>2]=a[A+24>>2],a[C+28>>2]=g,g=a[A+20>>2],a[C+16>>2]=a[A+16>>2],a[C+20>>2]=g,g=a[A+12>>2],a[C+8>>2]=a[A+8>>2],a[C+12>>2]=g;r=a[C+56>>2],t=a[C+60>>2],e=a[(g=v=(S=L<<3)+I|0)>>2],g=a[g+4>>2],k=B=a[C+36>>2],B=vA(f=a[C+32>>2],B,50),Q=h,B=vA(f,k,46)^B,Q^=h,B=vA(f,k,23)^B,g=(h^Q)+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,e=(Q=a[(B=S+33968|0)>>2])+e|0,g=a[B+4>>2]+g|0,g=e>>>0<Q>>>0?g+1|0:g,B=(Q=((c=a[C+48>>2])^(_=a[C+40>>2]))&f^c)+e|0,e=(((D=a[C+52>>2])^(d=a[C+44>>2]))&k^D)+g|0,g=(B>>>0<Q>>>0?e+1|0:e)+t|0,g=(r=B+r|0)>>>0<B>>>0?g+1|0:g,Q=(B=a[C+24>>2])+r|0,e=a[C+28>>2]+g|0,n=e=B>>>0>Q>>>0?e+1|0:e,a[C+24>>2]=Q,a[C+28>>2]=e,w=e=a[C+4>>2],e=vA(B=a[C>>2],e,36),t=h,e=vA(B,w,30)^e,t^=h,y=r+(vA(B,w,25)^e)|0,e=g+(h^t)|0,e=r>>>0>y>>>0?e+1|0:e,o=(g=y)+(y=B&((t=a[C+16>>2])|(r=a[C+8>>2]))|r&t)|0,g=(g=e)+(w&((e=a[C+20>>2])|(s=a[C+12>>2]))|e&s)|0,y=g=o>>>0<y>>>0?g+1|0:g,a[C+56>>2]=o,a[C+60>>2]=g,E=t,p=e,u=a[(g=J=(l=8|S)+I|0)>>2],M=a[g+4>>2],e=((k^d)&n^d)+D|0,e=(g=(t=(_^f)&Q^_)+c|0)>>>0<t>>>0?e+1|0:e,t=vA(Q,n,50),c=h,t=vA(Q,n,46)^t,c^=h,t=(D=vA(Q,n,23)^t)+g|0,g=(h^c)+e|0,g=(t>>>0<D>>>0?g+1|0:g)+M|0,g=(e=t+u|0)>>>0<t>>>0?g+1|0:g,t=(t=e)+(c=a[(e=l+33968|0)>>2])|0,e=a[e+4>>2]+g|0,e=(g=t>>>0<c>>>0?e+1|0:e)+p|0,D=e=(c=t+E|0)>>>0<t>>>0?e+1|0:e,a[C+16>>2]=c,a[C+20>>2]=e,g=g+((s|w)&y|s&w)|0,g=(e=t+((B|r)&o|B&r)|0)>>>0<t>>>0?g+1|0:g,t=vA(o,y,36),E=h,t=vA(o,y,30)^t,E^=h,p=e,e=vA(o,y,25)^t,g=(h^E)+g|0,E=g=e>>>0>(t=p+e|0)>>>0?g+1|0:g,a[C+48>>2]=t,a[C+52>>2]=g,p=r,l=s,g=(s=a[(e=K=(r=16|S)+I|0)>>2])+_|0,e=a[e+4>>2]+d|0,e=g>>>0<s>>>0?e+1|0:e,r=(_=g)+(s=a[(g=r+33968|0)>>2])|0,g=a[g+4>>2]+e|0,g=((n^k)&D^k)+(g=r>>>0<s>>>0?g+1|0:g)|0,g=(e=(e=r)+(r=(Q^f)&c^f)|0)>>>0<r>>>0?g+1|0:g,r=vA(c,D,50),s=h,r=vA(c,D,46)^r,s^=h,r=(_=vA(c,D,23)^r)+e|0,e=(h^s)+g|0,e=(_=r>>>0<_>>>0?e+1|0:e)+l|0,l=e=(s=r)>>>0>(r=r+p|0)>>>0?e+1|0:e,a[C+8>>2]=r,a[C+12>>2]=e,g=vA(t,E,36),e=h,g=vA(t,E,30)^g,e^=h,d=vA(t,E,25)^g,g=((y|w)&E|y&w)+(h^e)|0,e=_+((p=d+((B|o)&t|B&o)|0)>>>0<d>>>0?g+1|0:g)|0,s=e=(_=s+p|0)>>>0<s>>>0?e+1|0:e,a[C+40>>2]=_,a[C+44>>2]=e,p=B,e=(e=f)+(f=a[(g=U=(B=24|S)+I|0)>>2])|0,g=a[g+4>>2]+k|0,g=e>>>0<f>>>0?g+1|0:g,B=(d=e)+(f=a[(e=B+33968|0)>>2])|0,e=a[e+4>>2]+g|0,e=(n^(n^D)&l)+(e=B>>>0<f>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=Q^(Q^c)&r)|0)>>>0<B>>>0?e+1|0:e,B=vA(r,l,50),f=h,B=vA(r,l,46)^B,f^=h,B=(k=vA(r,l,23)^B)+g|0,g=(h^f)+e|0,e=(g=B>>>0<k>>>0?g+1|0:g)+w|0,k=e=(w=B+p|0)>>>0<B>>>0?e+1|0:e,a[C>>2]=w,a[C+4>>2]=e,e=vA(_,s,36),f=h,e=vA(_,s,30)^e,p=h^f,d=vA(_,s,25)^e,e=((y|E)&s|y&E)+(h^p)|0,g=g+((f=d+((t|o)&_|t&o)|0)>>>0<d>>>0?e+1|0:e)|0,f=g=(p=B+f|0)>>>0<B>>>0?g+1|0:g,a[C+32>>2]=p,a[C+36>>2]=g,B=a[(e=G=(g=32|S)+I|0)>>2],e=n+a[e+4>>2]|0,e=(B=B+Q|0)>>>0<Q>>>0?e+1|0:e,B=(Q=a[(g=g+33968|0)>>2])+B|0,g=a[g+4>>2]+e|0,g=(D^(D^l)&k)+(g=B>>>0<Q>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=c^(r^c)&w)|0)>>>0<B>>>0?g+1|0:g,B=vA(w,k,50),Q=h,B=vA(w,k,46)^B,Q^=h,B=(n=vA(w,k,23)^B)+e|0,e=(h^Q)+g|0,d=e=B>>>0<n>>>0?e+1|0:e,g=e,e=vA(p,f,36),Q=h,e=vA(p,f,30)^e,n=h^Q,u=vA(p,f,25)^e,e=((E|s)&f|E&s)+(h^n)|0,g=((Q=u+((t|_)&p|t&_)|0)>>>0<u>>>0?e+1|0:e)+g|0,Q=g=(n=B+Q|0)>>>0<Q>>>0?g+1|0:g,a[C+24>>2]=n,a[C+28>>2]=g,e=y+d|0,d=e=(y=B+o|0)>>>0<B>>>0?e+1|0:e,a[C+56>>2]=y,a[C+60>>2]=e,B=a[(g=Y=(e=40|S)+I|0)>>2],g=D+a[g+4>>2]|0,g=(B=B+c|0)>>>0<c>>>0?g+1|0:g,B=(o=a[(e=e+33968|0)>>2])+B|0,e=a[e+4>>2]+g|0,e=(l^(k^l)&d)+(e=B>>>0<o>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=r^(r^w)&y)|0)>>>0<B>>>0?e+1|0:e,B=vA(y,d,50),o=h,B=vA(y,d,46)^B,o^=h,B=(c=vA(y,d,23)^B)+g|0,g=(h^o)+e|0,g=B>>>0<c>>>0?g+1|0:g,e=vA(n,Q,36),o=h,e=vA(n,Q,30)^e,c=h^o,D=vA(n,Q,25)^e,e=((s|f)&Q|s&f)+(h^c)|0,e=((o=D+((_|p)&n|_&p)|0)>>>0<D>>>0?e+1|0:e)+g|0,o=e=(c=B+o|0)>>>0<o>>>0?e+1|0:e,a[C+16>>2]=c,a[C+20>>2]=e,g=g+E|0,u=g=(E=B+t|0)>>>0<t>>>0?g+1|0:g,a[C+48>>2]=E,a[C+52>>2]=g,B=a[(e=N=(g=48|S)+I|0)>>2],e=l+a[e+4>>2]|0,e=(B=B+r|0)>>>0<r>>>0?e+1|0:e,B=(r=a[(g=g+33968|0)>>2])+B|0,g=a[g+4>>2]+e|0,g=(k^(k^d)&u)+(g=B>>>0<r>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=w^(y^w)&E)|0)>>>0<B>>>0?g+1|0:g,B=vA(E,u,50),r=h,B=vA(E,u,46)^B,r^=h,B=(t=vA(E,u,23)^B)+e|0,e=(h^r)+g|0,t=e=B>>>0<t>>>0?e+1|0:e,g=e,e=vA(c,o,36),r=h,e=vA(c,o,30)^e,D=h^r,l=vA(c,o,25)^e,e=((Q|f)&o|Q&f)+(h^D)|0,g=((r=l+((n|p)&c|n&p)|0)>>>0<l>>>0?e+1|0:e)+g|0,D=g=(e=r)>>>0>(r=B+r|0)>>>0?g+1|0:g,a[C+8>>2]=r,a[C+12>>2]=g,e=t+s|0,l=e=(M=B+_|0)>>>0<B>>>0?e+1|0:e,a[C+40>>2]=M,a[C+44>>2]=e,B=a[(g=H=(e=56|S)+I|0)>>2],g=k+a[g+4>>2]|0,g=(B=B+w|0)>>>0<w>>>0?g+1|0:g,B=(t=a[(e=e+33968|0)>>2])+B|0,e=a[e+4>>2]+g|0,e=(d^(d^u)&l)+(e=B>>>0<t>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=y^(y^E)&M)|0)>>>0<B>>>0?e+1|0:e,B=vA(M,l,50),t=h,B=vA(M,l,46)^B,t^=h,B=(s=vA(M,l,23)^B)+g|0,g=(h^t)+e|0,g=B>>>0<s>>>0?g+1|0:g,e=vA(r,D,36),t=h,e=vA(r,D,30)^e,s=h^t,_=vA(r,D,25)^e,e=((Q|o)&D|Q&o)+(h^s)|0,e=((t=_+((c|n)&r|c&n)|0)>>>0<_>>>0?e+1|0:e)+g|0,s=e=(s=t)>>>0>(t=B+t|0)>>>0?e+1|0:e,a[C>>2]=t,a[C+4>>2]=e,g=g+f|0,k=g=(_=B+p|0)>>>0<B>>>0?g+1|0:g,a[C+32>>2]=_,a[C+36>>2]=g,B=a[(e=x=(g=64|S)+I|0)>>2],e=d+a[e+4>>2]|0,e=(B=B+y|0)>>>0<y>>>0?e+1|0:e,B=(y=a[(g=g+33968|0)>>2])+B|0,g=a[g+4>>2]+e|0,g=(u^(l^u)&k)+(g=B>>>0<y>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=E^(E^M)&_)|0)>>>0<B>>>0?g+1|0:g,B=vA(_,k,50),y=h,B=vA(_,k,46)^B,y^=h,B=(w=vA(_,k,23)^B)+e|0,e=(h^y)+g|0,f=e=B>>>0<w>>>0?e+1|0:e,g=e,e=vA(t,s,36),y=h,e=vA(t,s,30)^e,w=h^y,p=vA(t,s,25)^e,e=((o|D)&s|o&D)+(h^w)|0,g=((y=p+((r|c)&t|r&c)|0)>>>0<p>>>0?e+1|0:e)+g|0,y=g=(w=B+y|0)>>>0<y>>>0?g+1|0:g,a[C+56>>2]=w,a[C+60>>2]=g,e=Q+f|0,d=e=(Q=B+n|0)>>>0<B>>>0?e+1|0:e,a[C+24>>2]=Q,a[C+28>>2]=e,B=a[(g=F=(e=72|S)+I|0)>>2],g=u+a[g+4>>2]|0,g=(B=B+E|0)>>>0<E>>>0?g+1|0:g,B=(E=a[(e=e+33968|0)>>2])+B|0,e=a[e+4>>2]+g|0,e=(l^(k^l)&d)+(e=B>>>0<E>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=M^(_^M)&Q)|0)>>>0<B>>>0?e+1|0:e,B=vA(Q,d,50),E=h,B=vA(Q,d,46)^B,E^=h,B=(f=vA(Q,d,23)^B)+g|0,g=(h^E)+e|0,g=B>>>0<f>>>0?g+1|0:g,e=vA(w,y,36),E=h,e=vA(w,y,30)^e,f=h^E,p=vA(w,y,25)^e,e=((s|D)&y|s&D)+(h^f)|0,e=((E=p+((r|t)&w|r&t)|0)>>>0<p>>>0?e+1|0:e)+g|0,E=e=(f=B+E|0)>>>0<E>>>0?e+1|0:e,a[C+48>>2]=f,a[C+52>>2]=e,g=g+o|0,u=g=(o=B+c|0)>>>0<B>>>0?g+1|0:g,a[C+16>>2]=o,a[C+20>>2]=g,g=(g=M)+(c=a[(e=M=(B=80|S)+I|0)>>2])|0,e=a[e+4>>2]+l|0,e=g>>>0<c>>>0?e+1|0:e,B=(n=g)+(c=a[(g=B+33968|0)>>2])|0,g=a[g+4>>2]+e|0,g=(k^(k^d)&u)+(g=B>>>0<c>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=_^(Q^_)&o)|0)>>>0<B>>>0?g+1|0:g,B=vA(o,u,50),c=h,B=vA(o,u,46)^B,c^=h,B=(p=vA(o,u,23)^B)+e|0,e=(h^c)+g|0,n=e=B>>>0<p>>>0?e+1|0:e,g=e,e=vA(f,E,36),c=h,e=vA(f,E,30)^e,p=h^c,l=vA(f,E,25)^e,e=((y|s)&E|y&s)+(h^p)|0,g=((c=l+((t|w)&f|t&w)|0)>>>0<l>>>0?e+1|0:e)+g|0,c=g=(p=B+c|0)>>>0<c>>>0?g+1|0:g,a[C+40>>2]=p,a[C+44>>2]=g,e=n+D|0,D=e=(n=B+r|0)>>>0<r>>>0?e+1|0:e,a[C+8>>2]=n,a[C+12>>2]=e,e=33968+(g=88|S)|0,r=a[(g=b=g+I|0)>>2],B=a[e>>2]+r|0,g=a[e+4>>2]+a[g+4>>2]|0,e=k+(B>>>0<r>>>0?g+1|0:g)|0,e=(d^(d^u)&D)+(e=(g=B+_|0)>>>0<_>>>0?e+1|0:e)|0,e=(g=(B=Q^(Q^o)&n)+g|0)>>>0<B>>>0?e+1|0:e,B=vA(n,D,50),r=h,B=vA(n,D,46)^B,r^=h,B=(_=vA(n,D,23)^B)+g|0,g=(h^r)+e|0,g=B>>>0<_>>>0?g+1|0:g,e=vA(p,c,36),r=h,e=vA(p,c,30)^e,_=h^r,l=vA(p,c,25)^e,e=((y|E)&c|y&E)+(h^_)|0,e=((r=l+((f|w)&p|f&w)|0)>>>0<l>>>0?e+1|0:e)+g|0,_=e=(_=r)>>>0>(r=B+r|0)>>>0?e+1|0:e,a[C+32>>2]=r,a[C+36>>2]=e,g=g+s|0,s=g=(e=t)>>>0>(t=B+t|0)>>>0?g+1|0:g,a[C>>2]=t,a[C+4>>2]=g,e=33968+(g=96|S)|0,l=a[(g=m=g+I|0)>>2],B=a[e>>2]+l|0,e=a[e+4>>2]+a[g+4>>2]|0,g=d+(B>>>0<l>>>0?e+1|0:e)|0,g=(e=B+Q|0)>>>0<Q>>>0?g+1|0:g,B=(Q=o^(o^n)&t)+e|0,e=(u^(D^u)&s)+g|0,e=B>>>0<Q>>>0?e+1|0:e,g=vA(t,s,50),Q=h,g=vA(t,s,46)^g,Q^=h,d=B,B=vA(t,s,23)^g,e=(h^Q)+e|0,k=e=(g=d+B|0)>>>0<B>>>0?e+1|0:e,B=g,g=vA(r,_,36),Q=h,g=vA(r,_,30)^g,l=h^Q,d=vA(r,_,25)^g,g=((c|E)&_|c&E)+(h^l)|0,e=((Q=d+((f|p)&r|f&p)|0)>>>0<d>>>0?g+1|0:g)+e|0,Q=e=(l=B+Q|0)>>>0<Q>>>0?e+1|0:e,a[C+24>>2]=l,a[C+28>>2]=e,e=y+k|0,y=e=(w=B+w|0)>>>0<B>>>0?e+1|0:e,a[C+56>>2]=w,a[C+60>>2]=e,e=33968+(g=104|S)|0,k=a[(g=R=g+I|0)>>2],B=a[e>>2]+k|0,g=a[e+4>>2]+a[g+4>>2]|0,e=u+(B>>>0<k>>>0?g+1|0:g)|0,e=(g=B+o|0)>>>0<o>>>0?e+1|0:e,B=(o=n^(t^n)&w)+g|0,g=(D^(s^D)&y)+e|0,g=B>>>0<o>>>0?g+1|0:g,e=vA(w,y,50),o=h,e=vA(w,y,46)^e,o^=h,k=vA(w,y,23)^e,e=(h^o)+g|0,d=e=(B=k+B|0)>>>0<k>>>0?e+1|0:e,g=e,e=vA(l,Q,36),o=h,e=vA(l,Q,30)^e,k=h^o,u=vA(l,Q,25)^e,e=((c|_)&Q|c&_)+(h^k)|0,g=((o=u+((r|p)&l|r&p)|0)>>>0<u>>>0?e+1|0:e)+g|0,o=g=(k=B+o|0)>>>0<o>>>0?g+1|0:g,a[C+16>>2]=k,a[C+20>>2]=g,g=E+d|0,E=g=(f=B+f|0)>>>0<B>>>0?g+1|0:g,a[C+48>>2]=f,a[C+52>>2]=g,e=33968+(g=112|S)|0,d=a[(B=u=g+I|0)>>2],g=a[e>>2]+d|0,e=a[e+4>>2]+a[B+4>>2]|0,e=D+(g>>>0<d>>>0?e+1|0:e)|0,e=(s^(y^s)&E)+(e=(g=g+n|0)>>>0<n>>>0?e+1|0:e)|0,e=(g=(B=t^(t^w)&f)+g|0)>>>0<B>>>0?e+1|0:e,B=vA(f,E,50),n=h,B=vA(f,E,46)^B,n^=h,B=(D=vA(f,E,23)^B)+g|0,g=(h^n)+e|0,d=g=B>>>0<D>>>0?g+1|0:g,e=g,g=vA(k,o,36),n=h,g=vA(k,o,30)^g,D=h^n,P=vA(k,o,25)^g,g=((Q|_)&o|Q&_)+(h^D)|0,e=((n=P+((r|l)&k|r&l)|0)>>>0<P>>>0?g+1|0:g)+e|0,n=e=(D=B+n|0)>>>0<n>>>0?e+1|0:e,a[C+8>>2]=D,a[C+12>>2]=e,e=c+d|0,B=e=(c=B+p|0)>>>0<B>>>0?e+1|0:e,a[C+40>>2]=c,a[C+44>>2]=e,e=33968+(g=120|S)|0,S=a[(g=p=g+I|0)>>2],d=a[e>>2]+S|0,e=a[e+4>>2]+a[g+4>>2]|0,g=s+(d>>>0<S>>>0?e+1|0:e)|0,g=(y^(y^E)&B)+(g=(e=t+d|0)>>>0<t>>>0?g+1|0:g)|0,g=(e=(t=w^(f^w)&c)+e|0)>>>0<t>>>0?g+1|0:g,t=vA(c,B,50),y=h,t=vA(c,B,46)^t,y^=h,B=(t=vA(c,B,23)^t)+e|0,e=(h^y)+g|0,e=B>>>0<t>>>0?e+1|0:e,t=B,y=e,g=e,e=vA(D,n,36),c=h,e=vA(D,n,30)^e,E=h^c,s=vA(D,n,25)^e,e=((Q|o)&n|Q&o)+(h^E)|0,g=((c=s+((k|l)&D|k&l)|0)>>>0<s>>>0?e+1|0:e)+g|0,g=(B=B+c|0)>>>0<c>>>0?g+1|0:g,a[C>>2]=B,a[C+4>>2]=g,e=y+_|0,e=(E=r)>>>0>(r=r+t|0)>>>0?e+1|0:e,a[C+32>>2]=r,a[C+36>>2]=e,64!=(0|L);)o=((L=L+16|0)<<3)+I|0,t=a[v>>2],Q=a[v+4>>2],P=a[F>>2],y=g=a[F+4>>2],e=g,B=g=a[u+4>>2],g=vA(l=a[u>>2],g,45),r=h,E=((63&B)<<26|l>>>6)^(g=vA(l,B,3)^g),g=(B>>>6^(c=h^r))+e|0,e=((r=E+P|0)>>>0<E>>>0?g+1|0:g)+Q|0,e=(g=r+t|0)>>>0<r>>>0?e+1|0:e,t=r=a[J+4>>2],r=vA(Q=a[J>>2],r,63),c=h,r=((127&t)<<25|Q>>>7)^vA(Q,t,56)^r,e=(h^c^t>>>7)+e|0,r=e=r>>>0>(k=r+g|0)>>>0?e+1|0:e,a[o>>2]=k,a[o+4>>2]=e,Q=(u=a[M>>2])+Q|0,g=(o=a[M+4>>2])+t|0,e=Q>>>0<u>>>0?g+1|0:g,t=g=a[p+4>>2],g=vA(d=a[p>>2],g,45),c=h,E=Q,Q=((63&t)<<26|d>>>6)^vA(d,t,3)^g,e=(h^c^t>>>6)+e|0,Q=Q>>>0>(E=E+Q|0)>>>0?e+1|0:e,e=vA(c=a[K>>2],g=a[K+4>>2],63),s=h,n=E,E=((127&g)<<25|c>>>7)^vA(c,g,56)^e,e=(h^s^g>>>7)+Q|0,Q=e=E>>>0>(D=n+E|0)>>>0?e+1|0:e,a[v+136>>2]=D,a[v+140>>2]=e,e=(M=a[b>>2])+c|0,g=(c=a[b+4>>2])+g|0,E=vA(k,r,45),s=h,E=(_=((63&r)<<26|k>>>6)^vA(k,r,3)^E)+e|0,e=(h^s^r>>>6)+(e>>>0<M>>>0?g+1|0:g)|0,e=E>>>0<_>>>0?e+1|0:e,s=g=a[U+4>>2],g=vA(_=a[U>>2],g,63),w=h,n=E,E=((127&s)<<25|_>>>7)^vA(_,s,56)^g,e=(h^w^s>>>7)+e|0,E=e=E>>>0>(S=n+E|0)>>>0?e+1|0:e,a[v+144>>2]=S,a[v+148>>2]=e,_=(J=a[m>>2])+_|0,g=(g=s)+(s=a[m+4>>2])|0,e=_>>>0<J>>>0?g+1|0:g,g=vA(D,Q,45),w=h,f=((63&Q)<<26|D>>>6)^vA(D,Q,3)^g,e=(h^w^Q>>>6)+e|0,e=(_=f+_|0)>>>0<f>>>0?e+1|0:e,w=g=a[G+4>>2],g=vA(f=a[G>>2],g,63),p=h,n=_,_=((127&w)<<25|f>>>7)^vA(f,w,56)^g,e=(h^p^w>>>7)+e|0,_=e=_>>>0>(K=n+_|0)>>>0?e+1|0:e,a[v+152>>2]=K,a[v+156>>2]=e,g=(U=a[R>>2])+f|0,e=(e=w)+(w=a[R+4>>2])|0,f=vA(S,E,45),p=h,f=((63&E)<<26|S>>>6)^vA(S,E,3)^f,e=(h^p^E>>>6)+(g>>>0<U>>>0?e+1|0:e)|0,f=(n=f+g|0)>>>0<f>>>0?e+1|0:e,e=vA(p=a[Y>>2],g=a[Y+4>>2],63),G=h,b=n,n=((127&g)<<25|p>>>7)^(e=vA(p,g,56)^e),e=(g>>>7^(Y=h^G))+f|0,f=e=n>>>0>(G=b+n|0)>>>0?e+1|0:e,a[v+160>>2]=G,a[v+164>>2]=e,g=g+B|0,g=(e=p+l|0)>>>0<p>>>0?g+1|0:g,p=vA(K,_,45),n=h,p=(Y=((63&_)<<26|K>>>6)^vA(K,_,3)^p)+e|0,e=(h^n^_>>>6)+g|0,e=p>>>0<Y>>>0?e+1|0:e,n=a[N>>2],N=g=a[N+4>>2],g=vA(n,g,63),Y=h,g=vA(n,N,56)^g,b=p,e=(N>>>7^(F=h^Y))+e|0,p=e=(p=((127&N)<<25|n>>>7)^g)>>>0>(Y=b+p|0)>>>0?e+1|0:e,a[v+168>>2]=Y,a[v+172>>2]=e,g=t+N|0,g=(e=n+d|0)>>>0<n>>>0?g+1|0:g,b=n=a[H+4>>2],n=vA(F=a[H>>2],n,63),N=h,n=(H=((127&b)<<25|F>>>7)^vA(F,b,56)^n)+e|0,e=(h^N^b>>>7)+g|0,g=n>>>0<H>>>0?e+1|0:e,e=vA(G,f,45),N=h,e=vA(G,f,3)^e,H=h^N,N=n,g=(f>>>6^H)+g|0,n=g=(n=((63&f)<<26|G>>>6)^e)>>>0>(N=N+n|0)>>>0?g+1|0:g,a[v+176>>2]=N,a[v+180>>2]=g,m=a[x>>2],x=g=a[x+4>>2],H=g,g=vA(P,y,63),e=h,R=((127&y)<<25|P>>>7)^vA(P,y,56)^g,g=(h^e^y>>>7)+Q|0,e=((D=R+D|0)>>>0<R>>>0?g+1|0:g)+H|0,e=(g=D+m|0)>>>0<D>>>0?e+1|0:e,Q=vA(N,n,45),D=h,H=(Q=((63&n)<<26|N>>>6)^vA(N,n,3)^Q)+g|0,g=(h^D^n>>>6)+e|0,Q=g=Q>>>0>H>>>0?g+1|0:g,a[v+192>>2]=H,a[v+196>>2]=g,e=r+b|0,e=(g=k+F|0)>>>0<F>>>0?e+1|0:e,D=vA(m,x,63),F=h,b=((127&x)<<25|m>>>7)^vA(m,x,56)^D,e=(h^F^x>>>7)+e|0,g=(D=b+g|0)>>>0<b>>>0?e+1|0:e,e=vA(Y,p,45),F=h,e=vA(Y,p,3)^e,x=D,g=(p>>>6^(b=h^F))+g|0,D=g=(D=((63&p)<<26|Y>>>6)^e)>>>0>(F=x+D|0)>>>0?g+1|0:g,a[v+184>>2]=F,a[v+188>>2]=g,g=vA(M,c,63),e=h,g=((127&c)<<25|M>>>7)^vA(M,c,56)^g,e=(h^e^c>>>7)+o|0,g=_+(g>>>0>(b=g+u|0)>>>0?e+1|0:e)|0,g=(e=K+b|0)>>>0<K>>>0?g+1|0:g,_=vA(H,Q,45),K=h,_=vA(H,Q,3)^_,b=h^K,K=(_^=(63&Q)<<26|H>>>6)+e|0,e=(Q>>>6^b)+g|0,_=e=_>>>0>K>>>0?e+1|0:e,a[v+208>>2]=K,a[v+212>>2]=e,g=vA(u,o,63),e=h,b=vA(u,o,56)^g,e=((g=o>>>7|0)^h^e)+y|0,g=E+((o=(u=b^((127&o)<<25|u>>>7))+P|0)>>>0<u>>>0?e+1|0:e)|0,g=(e=o+S|0)>>>0<S>>>0?g+1|0:g,y=vA(F,D,45),o=h,E=(y=((63&D)<<26|F>>>6)^vA(F,D,3)^y)+e|0,e=(h^o^D>>>6)+g|0,y=e=y>>>0>E>>>0?e+1|0:e,a[v+200>>2]=E,a[v+204>>2]=e,g=vA(U,w,63),e=h,u=((127&w)<<25|U>>>7)^vA(U,w,56)^g,g=(h^e^w>>>7)+s|0,e=p+((o=u+J|0)>>>0<u>>>0?g+1|0:g)|0,e=(g=o+Y|0)>>>0<Y>>>0?e+1|0:e,o=vA(K,_,45),p=h,u=g,g=_>>>6|0,o=((63&_)<<26|K>>>6)^vA(K,_,3)^o,e=(g^h^p)+e|0,o=e=o>>>0>(_=u+o|0)>>>0?e+1|0:e,a[v+224>>2]=_,a[v+228>>2]=e,g=vA(J,s,63),e=h,g=vA(J,s,56)^g,p=h^e,u=((127&s)<<25|J>>>7)^g,g=((e=s>>>7|0)^p)+c|0,e=f+((s=u+M|0)>>>0<u>>>0?g+1|0:g)|0,e=(g=s+G|0)>>>0<G>>>0?e+1|0:e,c=vA(E,y,45),s=h,p=g,g=y>>>6|0,y=((63&y)<<26|E>>>6)^vA(E,y,3)^c,g=(g^h^s)+e|0,y=g=(c=p+y|0)>>>0<y>>>0?g+1|0:g,a[v+216>>2]=c,a[v+220>>2]=g,g=vA(d,t,63),e=h,s=((127&t)<<25|d>>>7)^vA(d,t,56)^g,e=(h^e^t>>>7)+B|0,e=D+((g=s+l|0)>>>0<s>>>0?e+1|0:e)|0,g=(E=g+F|0)>>>0<F>>>0?e+1|0:e,e=vA(_,o,45),s=h,p=E,E=vA(_,o,3)^e,e=o>>>6|0,o=p+(E^=(63&o)<<26|_>>>6)|0,g=(e^h^s)+g|0,a[v+240>>2]=o,a[v+244>>2]=o>>>0<E>>>0?g+1|0:g,g=vA(l,B,63),e=h,g=vA(l,B,56)^g,o=h^e,e=((e=B>>>7|0)^o)+w|0,g=n+((g^=(127&B)<<25|l>>>7)>>>0>(B=g+U|0)>>>0?e+1|0:e)|0,g=(e=B+N|0)>>>0<N>>>0?g+1|0:g,B=vA(c,y,45),o=h,E=e,e=y>>>6|0,B=((63&y)<<26|c>>>6)^vA(c,y,3)^B,e=(e^h^o)+g|0,B=e=B>>>0>(y=E+B|0)>>>0?e+1|0:e,a[v+232>>2]=y,a[v+236>>2]=e,g=vA(k,r,63),e=h,E=vA(k,r,56)^g,e=((g=r>>>7|0)^h^e)+t|0,g=Q+((r=(o=E^((127&r)<<25|k>>>7))+d|0)>>>0<o>>>0?e+1|0:e)|0,g=(e=r+H|0)>>>0<H>>>0?g+1|0:g,r=vA(y,B,45),t=h,E=e,e=B>>>6|0,B=E+(r=((63&B)<<26|y>>>6)^vA(y,B,3)^r)|0,e=(e^h^t)+g|0,a[v+248>>2]=B,a[v+252>>2]=B>>>0<r>>>0?e+1|0:e;g=g+a[A+4>>2]|0,g=(I=B+a[A>>2]|0)>>>0<B>>>0?g+1|0:g,a[A>>2]=I,a[A+4>>2]=g,e=a[A+12>>2]+a[C+12>>2]|0,g=(I=a[C+8>>2])+a[A+8>>2]|0,a[A+8>>2]=g,a[A+12>>2]=g>>>0<I>>>0?e+1|0:e,e=a[A+20>>2]+a[C+20>>2]|0,g=(I=a[C+16>>2])+a[A+16>>2]|0,a[A+16>>2]=g,a[A+20>>2]=g>>>0<I>>>0?e+1|0:e,g=a[A+28>>2]+a[C+28>>2]|0,I=(e=a[C+24>>2])+a[A+24>>2]|0,a[A+24>>2]=I,a[A+28>>2]=I>>>0<e>>>0?g+1|0:g,e=a[A+36>>2]+a[C+36>>2]|0,g=(I=a[C+32>>2])+a[A+32>>2]|0,a[A+32>>2]=g,a[A+36>>2]=g>>>0<I>>>0?e+1|0:e,g=a[A+44>>2]+a[C+44>>2]|0,I=(e=a[C+40>>2])+a[A+40>>2]|0,a[A+40>>2]=I,a[A+44>>2]=I>>>0<e>>>0?g+1|0:g,e=a[A+52>>2]+a[C+52>>2]|0,g=(I=a[C+48>>2])+a[A+48>>2]|0,a[A+48>>2]=g,a[A+52>>2]=g>>>0<I>>>0?e+1|0:e,e=a[A+60>>2]+a[C+60>>2]|0,g=(I=a[C+56>>2])+a[A+56>>2]|0,a[A+56>>2]=g,a[A+60>>2]=g>>>0<I>>>0?e+1|0:e}function D(A){var g,I,e,B,a,r,t,Q,o,c,E,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0;s=(M=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24)>>>5&2097151,n=GA(g=(i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24)>>>3|0,0,-683901,-1),_=(y=i[A+44|0])<<16&2031616|i[A+42|0]|i[A+43|0]<<8,y=h,w=y=_>>>0>(d=n+_|0)>>>0?y+1|0:y,S=y=y-((d>>>0<4293918720)-1|0)|0,n=y>>21,y=(_=s)+(s=(2097151&y)<<11|(f=d- -1048576|0)>>>21)|0,_=n,G=_=y>>>0<s>>>0?_+1|0:_,q=y,v=GA(y,_,-683901,-1),k=h,D=GA(I=(i[A+49|0]|i[A+50|0]<<8|i[A+51|0]<<16|i[A+52|0]<<24)>>>7&2097151,0,-997805,-1),n=(y=i[A+27|0])>>>24|0,s=y<<8|(b=i[A+23|0]|i[A+24|0]<<8|i[A+25|0]<<16|i[A+26|0]<<24)>>>24,_=(y=i[A+28|0])>>>16|0,_=2097151&((3&(_|=n))<<30|(y=s|y<<16)>>>2),y=h,y=_>>>0>(n=_+D|0)>>>0?y+1|0:y,_=GA(L=(l=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24)>>>4&2097151,0,654183,0),y=h+y|0,D=n=_+n|0,n=_>>>0>n>>>0?y+1|0:y,p=(_=i[A+48|0])<<8|M>>>24,_=y=_>>>24|0,y=GA(e=2097151&((3&(M=(y=(s=i[A+49|0])>>>16|0)|_))<<30|(_=(s<<=16)|p)>>>2),0,136657,0),n=h+n|0,n=y>>>0>(_=y+D|0)>>>0?n+1|0:n,s=(y=GA(B=(i[A+57|0]|i[A+58|0]<<8|i[A+59|0]<<16|i[A+60|0]<<24)>>>6&2097151,0,666643,0))+_|0,_=h+n|0,D=s,n=y>>>0>s>>>0?_+1|0:_,_=(y=i[A+56|0])>>>24|0,p=y<<8|l>>>24,_=GA(a=2097151&((1&(l=(y=(s=i[A+57|0])>>>16|0)|_))<<31|(_=(s<<=16)|p)>>>1),0,470296,0),y=h+n|0,_=(y=(n=s=_+D|0)>>>0<_>>>0?y+1|0:y)+k|0,_=n>>>0>(s=n+v|0)>>>0?_+1|0:_,F=n- -1048576|0,J=n=y-((n>>>0<4293918720)-1|0)|0,k=s-(y=-2097152&F)|0,v=_-((y>>>0>s>>>0)+n|0)|0,_=GA(I,0,654183,0),y=h,y=_>>>0>(n=_+(b>>>5&2097151)|0)>>>0?y+1|0:y,s=(_=n)+(n=GA(L,0,470296,0))|0,_=h+y|0,_=n>>>0>s>>>0?_+1|0:_,y=GA(e,z,-997805,-1),_=h+_|0,_=y>>>0>(n=y+s|0)>>>0?_+1|0:_,s=(y=n)+(n=GA(a,j,666643,0))|0,y=h+_|0,p=s,s=n>>>0>s>>>0?y+1|0:y,D=(n=GA(I,0,470296,0))+(y=(y=i[A+23|0])<<16&2031616|i[A+21|0]|i[A+22|0]<<8)|0,n=h,n=y>>>0>D>>>0?n+1|0:n,D=(_=GA(L,0,666643,0))+D|0,y=h+n|0,n=GA(e,z,654183,0),_=h+(_>>>0>D>>>0?y+1|0:y)|0,l=_=n>>>0>(b=n+D|0)>>>0?_+1|0:_,R=_=_-((b>>>0<4293918720)-1|0)|0,y=(y=_>>>21|0)+s|0,n=y=(_=(2097151&_)<<11|(D=b- -1048576|0)>>>21)>>>0>(p=_+p|0)>>>0?y+1|0:y,u=_=y-((p>>>0<4293918720)-1|0)|0,y=k,k=(2097151&_)<<11|(s=p- -1048576|0)>>>21,_=(_>>21)+v|0,M=k=(_=k>>>0>(N=y+k|0)>>>0?_+1|0:_)-((N>>>0<4293918720)-1|0)|0,T=N-(y=-2097152&(v=N- -1048576|0))|0,X=_-((y>>>0>N>>>0)+k|0)|0,y=GA(q,G,136657,0),n=h+n|0,n=y>>>0>(_=y+p|0)>>>0?n+1|0:n,H=_-(y=-2097152&s)|0,K=n-((y>>>0>_>>>0)+u|0)|0,N=d-(y=-2097152&f)|0,S=w-((y>>>0>d>>>0)+S|0)|0,w=GA(g,0,136657,0),_=(y=i[A+40|0])>>>24|0,s=y<<8|(f=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24)>>>24,n=(y=i[A+41|0])>>>16|0,_=(n|=_)>>>3|0,n=(7&n)<<29|(y=s|y<<16)>>>3,y=_+h|0,y=n>>>0>(s=n+w|0)>>>0?y+1|0:y,_=GA(B,0,-683901,-1),y=h+y|0,y=_>>>0>(n=_+s|0)>>>0?y+1|0:y,p=n,_=GA(g,0,-997805,-1),n=h,n=_>>>0>(s=_+(f>>>6&2097151)|0)>>>0?n+1|0:n,f=(_=s)+(s=GA(B,0,136657,0))|0,_=h+n|0,n=GA(a,j,-683901,-1),_=h+(s>>>0>f>>>0?_+1|0:_)|0,k=_=n>>>0>(U=n+f|0)>>>0?_+1|0:_,O=n=_-((U>>>0<4293918720)-1|0)|0,y=y+(_=n>>21)|0,f=y=(n=(2097151&n)<<11|(d=U- -1048576|0)>>>21)>>>0>(u=n+p|0)>>>0?y+1|0:y,x=y=y-((u>>>0<4293918720)-1|0)|0,_=(_=y>>21)+S|0,P=_=(y=(n=(2097151&y)<<11|(p=u- -1048576|0)>>>21)+N|0)>>>0<n>>>0?_+1|0:_,m=y,_=GA(y,_,-683901,-1),y=h+K|0,Y=n=_+H|0,s=_>>>0>n>>>0?y+1|0:y,N=b-(y=-2097152&D)|0,S=l-((4095&R)+(y>>>0>b>>>0)|0)|0,b=GA(I,0,666643,0),y=(_=i[A+19|0])>>>24|0,D=_<<8|(l=i[A+15|0]|i[A+16|0]<<8|i[A+17|0]<<16|i[A+18|0]<<24)>>>24,n=y,_=(7&(n|=_=(y=i[A+20|0])>>>16|0))<<29|(_=(y<<=16)|D)>>>3,n=h+(n>>>3|0)|0,n=_>>>0>(D=_+b|0)>>>0?n+1|0:n,y=GA(e,z,470296,0),_=h+n|0,y=y>>>0>(D=y+D|0)>>>0?_+1|0:_,n=GA(e,z,666643,0),_=h,b=_=n>>>0>(H=n+(l>>>6&2097151)|0)>>>0?_+1|0:_,V=n=_-((H>>>0<4293918720)-1|0)|0,y=y+(_=n>>>21|0)|0,l=y=(n=(2097151&n)<<11|(w=H- -1048576|0)>>>21)>>>0>(K=n+D|0)>>>0?y+1|0:y,Z=y=y-((K>>>0<4293918720)-1|0)|0,_=(_=y>>>21|0)+S|0,_=(y=(2097151&y)<<11|(D=K- -1048576|0)>>>21)>>>0>(n=y+N|0)>>>0?_+1|0:_,S=(y=n)+(n=GA(q,G,-997805,-1))|0,y=h+_|0,y=n>>>0>S>>>0?y+1|0:y,R=_=u-(n=-2097152&p)|0,r=p=f-((n>>>0>u>>>0)+x|0)|0,n=GA(m,P,136657,0),y=h+y|0,y=n>>>0>(f=n+S|0)>>>0?y+1|0:y,n=GA(_,p,-683901,-1),_=h+y|0,f=_=n>>>0>(S=n+f|0)>>>0?_+1|0:_,x=y=_-((S>>>0<4293918720)-1|0)|0,_=(2097151&y)<<11|(p=S- -1048576|0)>>>21,y=(y>>21)+s|0,Y=_=(y=_>>>0>(u=_+Y|0)>>>0?y+1|0:y)-((u>>>0<4293918720)-1|0)|0,N=(2097151&_)<<11|(s=u- -1048576|0)>>>21,_=(_>>21)+X|0,Q=T=N+T|0,N=N>>>0>T>>>0?_+1|0:_,o=u-(_=-2097152&s)|0,c=y-((_>>>0>u>>>0)+Y|0)|0,T=S-(y=-2097152&p)|0,X=f-((y>>>0>S>>>0)+x|0)|0,n=(y=GA(q,G,654183,0))+(K-(_=-2097152&D)|0)|0,_=h+(l-((2147483647&Z)+(_>>>0>K>>>0)|0)|0)|0,_=y>>>0>n>>>0?_+1|0:_,y=GA(m,P,-997805,-1),_=h+_|0,_=y>>>0>(n=y+n|0)>>>0?_+1|0:_,s=(y=n)+(n=GA(R,r,136657,0))|0,y=h+_|0,Y=s,f=n>>>0>s>>>0?y+1|0:y,K=U-(y=-2097152&d)|0,u=k-((y>>>0>U>>>0)+O|0)|0,l=GA(L,0,-683901,-1),y=(_=i[A+35|0])>>>24|0,s=_<<8|(D=i[A+31|0]|i[A+32|0]<<8|i[A+33|0]<<16|i[A+34|0]<<24)>>>24,n=y,_=(y=i[A+36|0])>>>16|0,_|=n,n=h,n=(y=2097151&((1&_)<<31|(y=y<<16|s)>>>1))>>>0>(_=y+l|0)>>>0?n+1|0:n,s=(y=GA(g,0,654183,0))+_|0,_=h+n|0,_=y>>>0>s>>>0?_+1|0:_,n=GA(B,0,-997805,-1),y=h+_|0,y=n>>>0>(s=n+s|0)>>>0?y+1|0:y,_=GA(a,j,136657,0),y=h+y|0,p=n=_+s|0,s=_>>>0>n>>>0?y+1|0:y,y=GA(I,0,-683901,-1),_=h,_=y>>>0>(n=y+(D>>>4&2097151)|0)>>>0?_+1|0:_,D=(y=GA(L,0,136657,0))+n|0,n=h+_|0,n=y>>>0>D>>>0?n+1|0:n,y=GA(g,0,470296,0),_=h+n|0,_=y>>>0>(D=y+D|0)>>>0?_+1|0:_,D=(n=GA(B,0,654183,0))+D|0,y=h+_|0,_=GA(a,j,-997805,-1),y=h+(n>>>0>D>>>0?y+1|0:y)|0,l=y=_>>>0>(k=_+D|0)>>>0?y+1|0:y,E=_=y-((k>>>0<4293918720)-1|0)|0,n=(y=_>>21)+s|0,S=_=(n=(_=(2097151&_)<<11|(D=k- -1048576|0)>>>21)>>>0>(d=_+p|0)>>>0?n+1|0:n)-((d>>>0<4293918720)-1|0)|0,y=(y=_>>21)+u|0,x=y=(_=(s=(2097151&_)<<11|(p=d- -1048576|0)>>>21)+K|0)>>>0<s>>>0?y+1|0:y,s=Y,Y=_,y=GA(_,y,-683901,-1),_=h+f|0,u=s=s+y|0,s=y>>>0>s>>>0?_+1|0:_,f=(y=GA(q,G,470296,0))+(H-(_=-2097152&w)|0)|0,_=h+(b-((2047&V)+(_>>>0>H>>>0)|0)|0)|0,_=y>>>0>f>>>0?_+1|0:_,w=(y=f)+(f=GA(m,P,654183,0))|0,y=h+_|0,y=f>>>0>w>>>0?y+1|0:y,f=GA(R,r,-997805,-1),_=h+y|0,_=f>>>0>(w=f+w|0)>>>0?_+1|0:_,U=p=d-(y=-2097152&p)|0,t=f=n-((y>>>0>d>>>0)+S|0)|0,n=GA(Y,x,136657,0),y=h+_|0,y=n>>>0>(w=n+w|0)>>>0?y+1|0:y,n=GA(p,f,-683901,-1),_=h+y|0,f=_=n>>>0>(b=n+w|0)>>>0?_+1|0:_,K=y=_-((b>>>0<4293918720)-1|0)|0,_=(2097151&y)<<11|(p=b- -1048576|0)>>>21,y=(y>>21)+s|0,u=_=(y=_>>>0>(w=_+u|0)>>>0?y+1|0:y)-((w>>>0<4293918720)-1|0)|0,d=(2097151&_)<<11|(s=w- -1048576|0)>>>21,_=(_>>21)+X|0,O=S=d+T|0,S=d>>>0>S>>>0?_+1|0:_,V=w-(_=-2097152&s)|0,Z=y-((_>>>0>w>>>0)+u|0)|0,T=b-(y=-2097152&p)|0,X=f-((y>>>0>b>>>0)+K|0)|0,f=GA(q,G,666643,0),y=(_=i[A+14|0])>>>24|0,s=_<<8|(u=i[A+10|0]|i[A+11|0]<<8|i[A+12|0]<<16|i[A+13|0]<<24)>>>24,n=y,_=(y=i[A+15|0])>>>16|0,_|=n,n=h,n=(y=2097151&((1&_)<<31|(y=y<<16|s)>>>1))>>>0>(_=y+f|0)>>>0?n+1|0:n,s=(y=_)+(_=GA(m,P,470296,0))|0,y=h+n|0,y=_>>>0>s>>>0?y+1|0:y,_=GA(R,r,654183,0),y=h+y|0,y=_>>>0>(n=_+s|0)>>>0?y+1|0:y,s=(_=n)+(n=GA(Y,x,-997805,-1))|0,_=h+y|0,_=n>>>0>s>>>0?_+1|0:_,y=GA(U,t,136657,0),_=h+_|0,b=n=y+s|0,s=y>>>0>n>>>0?_+1|0:_,D=k-(y=-2097152&D)|0,f=l-((y>>>0>k>>>0)+E|0)|0,n=GA(I,0,136657,0),y=h,y=(_=(i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24)>>>7&2097151)>>>0>(n=_+n|0)>>>0?y+1|0:y,p=(_=n)+(n=GA(L,0,-997805,-1))|0,_=h+y|0,_=n>>>0>p>>>0?_+1|0:_,y=GA(e,z,-683901,-1),_=h+_|0,_=y>>>0>(n=y+p|0)>>>0?_+1|0:_,p=(y=GA(g,0,666643,0))+n|0,n=h+_|0,n=y>>>0>p>>>0?n+1|0:n,_=GA(B,0,470296,0),y=h+n|0,y=_>>>0>(p=_+p|0)>>>0?y+1|0:y,_=GA(a,j,654183,0),y=h+y|0,_=(J>>21)+(_>>>0>(n=_+p|0)>>>0?y+1|0:y)|0,d=_=(p=(2097151&J)<<11|F>>>21)>>>0>(F=p+n|0)>>>0?_+1|0:_,J=y=_-((F>>>0<4293918720)-1|0)|0,p=(2097151&y)<<11|(w=F- -1048576|0)>>>21,y=(y>>21)+f|0,H=y=(_=p+D|0)>>>0<p>>>0?y+1|0:y,K=_,_=GA(_,y,-683901,-1),y=h+s|0,p=n=_+b|0,s=_>>>0>n>>>0?y+1|0:y,y=GA(m,P,666643,0),_=h,_=y>>>0>(n=y+(u>>>4&2097151)|0)>>>0?_+1|0:_,y=GA(R,r,470296,0),_=h+_|0,_=y>>>0>(n=y+n|0)>>>0?_+1|0:_,f=(y=GA(Y,x,654183,0))+n|0,n=h+_|0,n=y>>>0>f>>>0?n+1|0:n,_=GA(U,t,-997805,-1),y=h+n|0,y=_>>>0>(f=_+f|0)>>>0?y+1|0:y,_=GA(K,H,136657,0),y=h+y|0,l=y=_>>>0>(k=_+f|0)>>>0?y+1|0:y,P=_=y-((k>>>0<4293918720)-1|0)|0,y=p,p=(2097151&_)<<11|(D=k- -1048576|0)>>>21,_=(_>>21)+s|0,m=s=(_=(n=y+p|0)>>>0<p>>>0?_+1|0:_)-((n>>>0<4293918720)-1|0)|0,y=(y=s>>21)+X|0,q=p=(s=(2097151&s)<<11|(f=n- -1048576|0)>>>21)+T|0,b=s>>>0>p>>>0?y+1|0:y,p=n,n=_,s=(F-(_=-2097152&w)|0)+(w=(2097151&M)<<11|v>>>21)|0,_=(d-((_>>>0>F>>>0)+J|0)|0)+(M>>21)|0,u=_=s>>>0<w>>>0?_+1|0:_,L=_=_-((s>>>0<4293918720)-1|0)|0,v=y=_>>21,y=GA(G=(2097151&_)<<11|(J=s- -1048576|0)>>>21,y,-683901,-1),n=h+n|0,n=y>>>0>(_=y+p|0)>>>0?n+1|0:n,z=_-(y=-2097152&f)|0,j=n-((y>>>0>_>>>0)+m|0)|0,y=GA(G,v,136657,0),_=l+h|0,m=(n=y+k|0)-(y=-2097152&D)|0,F=(_=n>>>0<k>>>0?_+1|0:_)-((y>>>0>n>>>0)+P|0)|0,_=GA(R,r,666643,0),n=h,n=(y=(i[A+7|0]|i[A+8|0]<<8|i[A+9|0]<<16|i[A+10|0]<<24)>>>7&2097151)>>>0>(_=y+_|0)>>>0?n+1|0:n,p=(y=GA(Y,x,470296,0))+_|0,_=h+n|0,_=y>>>0>p>>>0?_+1|0:_,y=GA(U,t,654183,0),_=h+_|0,_=y>>>0>(n=y+p|0)>>>0?_+1|0:_,p=(y=n)+(n=GA(K,H,-997805,-1))|0,y=h+_|0,w=p,p=n>>>0>p>>>0?y+1|0:y,l=GA(Y,x,666643,0),y=(_=i[A+6|0])>>>24|0,f=_<<8|(P=i[A+2|0]|i[A+3|0]<<8|i[A+4|0]<<16|i[A+5|0]<<24)>>>24,n=y,_=(y=i[A+7|0])>>>16|0,_=2097151&((3&(_|=n))<<30|(y=y<<16|f)>>>2),y=h,y=_>>>0>(n=_+l|0)>>>0?y+1|0:y,f=(_=GA(U,t,470296,0))+n|0,n=h+y|0,n=_>>>0>f>>>0?n+1|0:n,_=GA(K,H,654183,0),y=h+n|0,l=y=_>>>0>(d=_+f|0)>>>0?y+1|0:y,M=y=y-((d>>>0<4293918720)-1|0)|0,_=(n=y>>21)+p|0,k=y=(_=(y=(2097151&y)<<11|(D=d- -1048576|0)>>>21)>>>0>(f=y+w|0)>>>0?_+1|0:_)-((f>>>0<4293918720)-1|0)|0,w=(2097151&y)<<11|(p=f- -1048576|0)>>>21,y=(y>>21)+F|0,m=Y=w+m|0,w=w>>>0>Y>>>0?y+1|0:y,y=GA(G,v,-997805,-1),_=h+_|0,_=y>>>0>(n=y+f|0)>>>0?_+1|0:_,R=n-(y=-2097152&p)|0,x=_-((y>>>0>n>>>0)+k|0)|0,_=GA(G,v,654183,0),y=l+h|0,Y=(n=_+d|0)-(_=-2097152&D)|0,F=(y=n>>>0<d>>>0?y+1|0:y)-((_>>>0>n>>>0)+M|0)|0,y=GA(U,t,666643,0),_=h,_=y>>>0>(n=y+(P>>>5&2097151)|0)>>>0?_+1|0:_,y=GA(K,H,470296,0),_=h+_|0,f=n=y+n|0,n=y>>>0>n>>>0?_+1|0:_,p=GA(K,H,666643,0),_=(y=i[A+2|0])<<16&2031616|i[0|A]|i[A+1|0]<<8,y=h,l=y=_>>>0>(k=p+_|0)>>>0?y+1|0:y,H=y=y-((k>>>0<4293918720)-1|0)|0,p=(2097151&y)<<11|(D=k- -1048576|0)>>>21,y=(y>>21)+n|0,n=y=p>>>0>(d=p+f|0)>>>0?y+1|0:y,M=y=y-((d>>>0<4293918720)-1|0)|0,p=(2097151&y)<<11|(f=d- -1048576|0)>>>21,y=(y>>21)+F|0,p=p>>>0>(K=p+Y|0)>>>0?y+1|0:y,y=GA(G,v,470296,0),n=n+h|0,n=(_=y+d|0)>>>0<d>>>0?n+1|0:n,d=_-(y=-2097152&f)|0,f=n-((y>>>0>_>>>0)+M|0)|0,_=GA(G,v,666643,0),y=h+(l-(((n=-2097152&D)>>>0>k>>>0)+H|0)|0)|0,_=(n=(y=_>>>0>(F=_+(k-n|0)|0)>>>0?y+1|0:y)>>21)+f|0,y=(y=(_=(y=(2097151&y)<<11|F>>>21)>>>0>(M=y+d|0)>>>0?_+1|0:_)>>21)+p|0,_=(_=(y=(_=(2097151&_)<<11|M>>>21)>>>0>(v=_+K|0)>>>0?y+1|0:y)>>21)+x|0,n=(y=(_=(y=(2097151&y)<<11|v>>>21)>>>0>(p=y+R|0)>>>0?_+1|0:_)>>21)+w|0,y=(_=(n=(_=(2097151&_)<<11|p>>>21)>>>0>(k=_+m|0)>>>0?n+1|0:n)>>21)+j|0,_=(n=(y=(n=(2097151&n)<<11|k>>>21)>>>0>(d=n+z|0)>>>0?y+1|0:y)>>21)+b|0,b=f=(y=(2097151&y)<<11|d>>>21)+q|0,y=(y=(_=y>>>0>f>>>0?_+1|0:_)>>21)+Z|0,_=(_=(y=(_=(2097151&_)<<11|f>>>21)>>>0>(w=_+V|0)>>>0?y+1|0:y)>>21)+S|0,n=(y=(_=(y=(2097151&y)<<11|w>>>21)>>>0>(l=y+O|0)>>>0?_+1|0:_)>>21)+c|0,y=(_=(n=(_=(2097151&_)<<11|l>>>21)>>>0>(D=_+o|0)>>>0?n+1|0:n)>>21)+N|0,J=(S=s-(_=-2097152&J)|0)+((2097151&(y=(n=(2097151&n)<<11|D>>>21)>>>0>(f=n+Q|0)>>>0?y+1|0:y))<<11|f>>>21)|0,y=(u-((_>>>0>s>>>0)+L|0)|0)+(y>>21)|0,u=_=(y=S>>>0>J>>>0?y+1|0:y)>>21,F=(y=GA(N=(2097151&y)<<11|J>>>21,_,666643,0))+(_=2097151&F)|0,y=h,s=y=_>>>0>F>>>0?y+1|0:y,C[0|A]=F,C[A+1|0]=(255&y)<<24|F>>>8,y=2097151&M,_=GA(N,u,470296,0)+y|0,n=h,y=(s>>21)+(y>>>0>_>>>0?n+1|0:n)|0,y=(S=(2097151&s)<<11|F>>>21)>>>0>(M=S+_|0)>>>0?y+1|0:y,C[A+4|0]=(2047&y)<<21|M>>>11,_=y,n=M,C[A+3|0]=(7&y)<<29|n>>>3,C[A+2|0]=31&((65535&s)<<16|F>>>16)|n<<5,s=2097151&v,v=GA(N,u,654183,0)+s|0,y=h,M=(2097151&_)<<11|n>>>21,_=(_>>21)+(s=s>>>0>v>>>0?y+1|0:y)|0,y=_=(v=M+v|0)>>>0<M>>>0?_+1|0:_,C[A+6|0]=(63&y)<<26|v>>>6,s=v,v=0,C[A+5|0]=v<<13|(1572864&n)>>>19|s<<2,n=2097151&p,p=GA(N,u,-997805,-1)+n|0,_=h,_=n>>>0>p>>>0?_+1|0:_,v=(2097151&(n=y))<<11|s>>>21,n=(y>>=21)+_|0,n=(p=v+p|0)>>>0<v>>>0?n+1|0:n,C[A+9|0]=(511&n)<<23|p>>>9,C[A+8|0]=(1&n)<<31|p>>>1,_=0,C[A+7|0]=_<<18|(2080768&s)>>>14|p<<7,_=2097151&k,s=GA(N,u,136657,0)+_|0,y=h,y=_>>>0>s>>>0?y+1|0:y,k=(2097151&(_=n))<<11|p>>>21,_=y+(n=_>>21)|0,_=(s=k+s|0)>>>0<k>>>0?_+1|0:_,C[A+12|0]=(4095&_)<<20|s>>>12,n=s,C[A+11|0]=(15&_)<<28|n>>>4,s=0,C[A+10|0]=s<<15|(1966080&p)>>>17|n<<4,s=2097151&d,p=GA(N,u,-683901,-1)+s|0,y=h,y=s>>>0>p>>>0?y+1|0:y,s=_,_=y+(_>>=21)|0,_=(s=(Y=p)+(p=(2097151&s)<<11|n>>>21)|0)>>>0<p>>>0?_+1|0:_,C[A+14|0]=(127&_)<<25|s>>>7,p=0,C[A+13|0]=p<<12|(1048576&n)>>>20|s<<1,y=_>>21,n=(_=(2097151&_)<<11|s>>>21)>>>0>(p=_+(2097151&b)|0)>>>0?y+1|0:y,C[A+17|0]=(1023&n)<<22|p>>>10,C[A+16|0]=(3&n)<<30|p>>>2,_=0,C[A+15|0]=_<<17|(2064384&s)>>>15|p<<6,y=n>>21,y=(_=(2097151&n)<<11|p>>>21)>>>0>(n=_+(2097151&w)|0)>>>0?y+1|0:y,C[A+20|0]=(8191&y)<<19|n>>>13,C[A+19|0]=(31&y)<<27|n>>>5,s=(_=2097151&l)+(l=(2097151&y)<<11|n>>>21)|0,_=y>>21,_=s>>>0<l>>>0?_+1|0:_,l=s,C[A+21|0]=s,w=0,C[A+18|0]=w<<14|(1835008&p)>>>18|n<<3,C[A+22|0]=(255&_)<<24|s>>>8,n=_>>21,n=(s=(p=(2097151&_)<<11|s>>>21)+(2097151&D)|0)>>>0<p>>>0?n+1|0:n,C[A+25|0]=(2047&n)<<21|s>>>11,C[A+24|0]=(7&n)<<29|s>>>3,C[A+23|0]=31&((65535&_)<<16|l>>>16)|s<<5,y=n>>21,y=(_=(2097151&n)<<11|s>>>21)>>>0>(n=_+(2097151&f)|0)>>>0?y+1|0:y,C[A+27|0]=(63&y)<<26|n>>>6,p=0,C[A+26|0]=p<<13|(1572864&s)>>>19|n<<2,_=y,y>>=21,_=(s=(f=(2097151&_)<<11|n>>>21)+(p=2097151&J)|0)>>>0<p>>>0?y+1|0:y,C[A+31|0]=(131071&_)<<15|s>>>17,y=s,C[A+30|0]=(511&_)<<23|y>>>9,s=0,C[A+28|0]=s<<18|(2080768&n)>>>14|y<<7,C[A+29|0]=f+J>>>1}function w(A,g,I,e,B,r){var Q,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,w=0,k=0,l=0,u=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,U=0,x=0,m=0,P=0,R=0,T=0,q=0,z=0,V=0,Z=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0;for(n=Q=n-592|0,S=-1,k=A+32|0,w=32,l=1;b=i[2656+(_=w-1|0)|0],E|=(_=((c=i[_+k|0])^b)-1>>8&l)&(h=i[k+(w=w-2|0)|0])-(y=i[w+2656|0])>>8|c-b>>8&l,l=_&(y^h)-1>>8,w;);if(255&E&&!(uA(A)|!(~((127&~i[B+31|0]|i[B+1|0]&i[B+2|0]&i[B+3|0]&i[B+4|0]&i[B+5|0]&i[B+6|0]&i[B+7|0]&i[B+8|0]&i[B+9|0]&i[B+10|0]&i[B+11|0]&i[B+12|0]&i[B+13|0]&i[B+14|0]&i[B+15|0]&i[B+16|0]&i[B+17|0]&i[B+18|0]&i[B+19|0]&i[B+20|0]&i[B+21|0]&i[B+22|0]&i[B+23|0]&i[B+24|0]&i[B+25|0]&i[B+26|0]&i[B+27|0]&i[B+28|0]&i[B+30|0]&i[B+29|0]^255)-1&236-i[0|B])>>>8&1)||uA(B)||L(_=Q+128|0,B))){for(dA(c=Q+384|0),r&&W(c,35120,34,0),W(c,A,32,0),W(c,B,32,0),W(c,g,I,e),J(c,I=Q+320|0),D(I),e=Q+8|0,B=0,g=0,n=o=n-2272|0;r=o+2016|0,c=i[I+(B>>>3|0)|0],C[r+B|0]=c>>>(6&B)&1,C[(E=r)+(r=1|B)|0]=c>>>(7&r)&1,256!=(0|(B=B+2|0)););for(;;){g=(I=g)+1|0;A:if(!(I>>>0>254)&&i[0|(E=(B=o+2016|0)+I|0)]){g:if(B=C[0|(y=g+B|0)])if((0|(B=(c=B<<1)+(r=C[0|E])|0))<=15)C[0|E]=B,C[0|y]=0;else{if((0|(B=r-c|0))<-15)break A;for(C[0|E]=B,B=g;;){if(!i[0|(r=(o+2016|0)+B|0)]){C[0|r]=1;break g}if(C[0|r]=0,r=B>>>0<255,B=B+1|0,!r)break}}if(!(I>>>0>253)){g:if(r=C[0|(h=(B=I+2|0)+(o+2016|0)|0)])if((0|(r=(y=r<<2)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(253!=(0|I)){g:if(r=C[0|(h=(B=I+3|0)+(o+2016|0)|0)])if((0|(r=(y=r<<3)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>251)){g:if(r=C[0|(h=(B=I+4|0)+(o+2016|0)|0)])if((0|(r=(y=r<<4)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(251!=(0|I)){g:if(r=C[0|(h=(B=I+5|0)+(o+2016|0)|0)])if((0|(r=(y=r<<5)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>249)&&(I=C[0|(y=(B=I+6|0)+(o+2016|0)|0)]))if((0|(I=(c=I<<6)+(r=C[0|E])|0))>=16){if((0|(I=r-c|0))<-15)break A;for(C[0|E]=I;;){if(i[0|(I=(o+2016|0)+B|0)]){if(C[0|I]=0,I=B>>>0<255,B=B+1|0,I)continue;break A}break}C[0|I]=1}else C[0|E]=I,C[0|y]=0}}}}}if(256==(0|g))break}for(B=0;g=o+1760|0,I=i[k+(B>>>3|0)|0],C[g+B|0]=I>>>(6&B)&1,C[(r=g)+(g=1|B)|0]=I>>>(7&g)&1,256!=(0|(B=B+2|0)););for(g=0;;){g=(I=g)+1|0;A:if(!(I>>>0>254)&&i[0|(E=(B=o+1760|0)+I|0)]){g:if(B=C[0|(y=g+B|0)])if((0|(B=(c=B<<1)+(r=C[0|E])|0))<=15)C[0|E]=B,C[0|y]=0;else{if((0|(B=r-c|0))<-15)break A;for(C[0|E]=B,B=g;;){if(!i[0|(r=(o+1760|0)+B|0)]){C[0|r]=1;break g}if(C[0|r]=0,r=B>>>0<255,B=B+1|0,!r)break}}if(!(I>>>0>253)){g:if(r=C[0|(h=(B=I+2|0)+(o+1760|0)|0)])if((0|(r=(y=r<<2)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(253!=(0|I)){g:if(r=C[0|(h=(B=I+3|0)+(o+1760|0)|0)])if((0|(r=(y=r<<3)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>251)){g:if(r=C[0|(h=(B=I+4|0)+(o+1760|0)|0)])if((0|(r=(y=r<<4)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(251!=(0|I)){g:if(r=C[0|(h=(B=I+5|0)+(o+1760|0)|0)])if((0|(r=(y=r<<5)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>249)&&(I=C[0|(y=(B=I+6|0)+(o+1760|0)|0)]))if((0|(I=(c=I<<6)+(r=C[0|E])|0))>=16){if((0|(I=r-c|0))<-15)break A;for(C[0|E]=I;;){if(i[0|(I=(o+1760|0)+B|0)]){if(C[0|I]=0,I=B>>>0<255,B=B+1|0,I)continue;break A}break}C[0|I]=1}else C[0|E]=I,C[0|y]=0}}}}}if(256==(0|g))break}for(QA(B=o+480|0,_),g=a[_+36>>2],a[o+192>>2]=a[_+32>>2],a[o+196>>2]=g,g=a[_+28>>2],a[o+184>>2]=a[_+24>>2],a[o+188>>2]=g,g=a[_+20>>2],a[o+176>>2]=a[_+16>>2],a[o+180>>2]=g,g=a[_+12>>2],a[o+168>>2]=a[_+8>>2],a[o+172>>2]=g,g=a[_+4>>2],a[o+160>>2]=a[_>>2],a[o+164>>2]=g,g=a[_+52>>2],a[o+208>>2]=a[_+48>>2],a[o+212>>2]=g,g=a[_+60>>2],a[o+216>>2]=a[_+56>>2],a[o+220>>2]=g,g=a[4+(I=_- -64|0)>>2],a[o+224>>2]=a[I>>2],a[o+228>>2]=g,g=a[_+76>>2],a[o+232>>2]=a[_+72>>2],a[o+236>>2]=g,g=a[_+44>>2],a[o+200>>2]=a[_+40>>2],a[o+204>>2]=g,g=a[_+92>>2],a[o+248>>2]=a[_+88>>2],a[o+252>>2]=g,g=a[_+100>>2],a[o+256>>2]=a[_+96>>2],a[o+260>>2]=g,g=a[_+108>>2],a[o+264>>2]=a[_+104>>2],a[o+268>>2]=g,g=a[_+116>>2],a[o+272>>2]=a[_+112>>2],a[o+276>>2]=g,g=a[_+84>>2],a[o+240>>2]=a[_+80>>2],a[o+244>>2]=g,v(r=o+320|0,I=o+160|0),d(o,r,s=o+440|0),d(o+40|0,p=o+360|0,f=o+400|0),d(o+80|0,f,s),d(o+120|0,r,p),j(r,o,B),d(I,r,s),d(M=o+200|0,p,f),d(F=o+240|0,f,s),d(u=o+280|0,r,p),QA(g=o+640|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+800|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+960|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+1120|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+1280|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+1440|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(o+1600|0,I),a[e+32>>2]=0,a[e+36>>2]=0,a[e+24>>2]=0,a[e+28>>2]=0,a[e+16>>2]=0,a[e+20>>2]=0,a[e+8>>2]=0,a[e+12>>2]=0,a[e>>2]=0,a[e+4>>2]=0,a[e+44>>2]=0,a[e+48>>2]=0,a[e+40>>2]=1,a[e+52>>2]=0,a[e+56>>2]=0,a[e+60>>2]=0,a[e+64>>2]=0,a[e+68>>2]=0,a[e+72>>2]=0,a[e+84>>2]=0,a[e+88>>2]=0,a[e+76>>2]=0,a[e+80>>2]=1,a[e+92>>2]=0,a[e+96>>2]=0,a[e+100>>2]=0,a[e+104>>2]=0,a[e+108>>2]=0,a[e+112>>2]=0,a[e+116>>2]=0,$=e+80|0,AA=e+40|0,g=255;;){A:{g:{if(!i[(I=o+2016|0)+g|0]&&!i[(B=o+1760|0)+g|0]){if(!(i[(r=I)+(I=g-1|0)|0]|i[I+B|0]))break g;g=I}if((0|g)<0)break A;for(;v(B=o+320|0,e),(0|(r=C[(I=g)+(o+2016|0)|0]))>0?(d(g=o+160|0,B,s),d(M,p,f),d(F,f,s),d(u,B,p),j(B,g,(o+480|0)+t((254&r)>>>1|0,160)|0)):(0|r)>=0||(d(g=o+160|0,B=o+320|0,s),d(M,p,f),d(F,f,s),d(u,B,p),X(B,g,(o+480|0)+t((0-r&254)>>>1|0,160)|0)),(0|(m=C[I+(o+1760|0)|0]))>0?(d(g=o+160|0,B=o+320|0,s),d(M,p,f),d(F,f,s),d(u,B,p),O(B,g,t((254&m)>>>1|0,120)+1472|0)):(0|m)>=0||(d(o+160|0,P=o+320|0,s),d(M,p,f),d(F,f,s),d(u,P,p),N=a[o+160>>2],K=a[o+200>>2],Y=a[o+164>>2],H=a[o+204>>2],G=a[o+168>>2],U=a[o+208>>2],x=a[o+172>>2],w=a[o+212>>2],k=a[o+176>>2],l=a[o+216>>2],S=a[o+180>>2],b=a[o+220>>2],E=a[o+184>>2],h=a[o+224>>2],y=a[o+188>>2],c=a[o+228>>2],_=a[o+192>>2],r=a[o+232>>2],B=a[o+236>>2],g=a[o+196>>2],a[o+396>>2]=B-g,a[o+392>>2]=r-_,a[o+388>>2]=c-y,a[o+384>>2]=h-E,a[o+380>>2]=b-S,a[o+376>>2]=l-k,a[o+372>>2]=w-x,a[o+368>>2]=U-G,a[o+364>>2]=H-Y,a[o+360>>2]=K-N,a[o+356>>2]=g+B,a[o+352>>2]=r+_,a[o+348>>2]=c+y,a[o+344>>2]=E+h,a[o+340>>2]=S+b,a[o+336>>2]=k+l,a[o+332>>2]=w+x,a[o+328>>2]=G+U,a[o+324>>2]=Y+H,a[o+320>>2]=N+K,d(f,P,40+(g=t((0-m&254)>>>1|0,120)+1472|0)|0),d(p,p,g),d(s,g+80|0,u),gA=a[o+276>>2],IA=a[o+272>>2],m=a[o+268>>2],P=a[o+264>>2],E=a[o+260>>2],h=a[o+256>>2],y=a[o+252>>2],c=a[o+248>>2],_=a[o+244>>2],r=a[o+240>>2],R=a[o+360>>2],T=a[o+400>>2],q=a[o+364>>2],z=a[o+404>>2],V=a[o+368>>2],Z=a[o+408>>2],N=a[o+372>>2],K=a[o+412>>2],Y=a[o+376>>2],H=a[o+416>>2],G=a[o+380>>2],U=a[o+420>>2],x=a[o+384>>2],w=a[o+424>>2],k=a[o+388>>2],l=a[o+428>>2],S=a[o+392>>2],b=a[o+432>>2],B=a[o+396>>2],g=a[o+436>>2],a[o+396>>2]=B+g,a[o+392>>2]=S+b,a[o+388>>2]=k+l,a[o+384>>2]=w+x,a[o+380>>2]=G+U,a[o+376>>2]=Y+H,a[o+372>>2]=N+K,a[o+368>>2]=V+Z,a[o+364>>2]=q+z,a[o+360>>2]=R+T,a[o+356>>2]=g-B,a[o+352>>2]=b-S,a[o+348>>2]=l-k,a[o+344>>2]=w-x,a[o+340>>2]=U-G,a[o+336>>2]=H-Y,a[o+332>>2]=K-N,a[o+328>>2]=Z-V,a[o+324>>2]=z-q,a[o+320>>2]=T-R,N=r<<1,K=a[o+440>>2],a[o+400>>2]=N-K,Y=_<<1,H=a[o+444>>2],a[o+404>>2]=Y-H,G=c<<1,U=a[o+448>>2],a[o+408>>2]=G-U,x=y<<1,w=a[o+452>>2],a[o+412>>2]=x-w,k=h<<1,l=a[o+456>>2],a[o+416>>2]=k-l,S=E<<1,b=a[o+460>>2],a[o+420>>2]=S-b,E=P<<1,h=a[o+464>>2],a[o+424>>2]=E-h,y=m<<1,c=a[o+468>>2],a[o+428>>2]=y-c,_=IA<<1,r=a[o+472>>2],a[o+432>>2]=_-r,B=gA<<1,g=a[o+476>>2],a[o+436>>2]=B-g,a[o+440>>2]=N+K,a[o+444>>2]=Y+H,a[o+448>>2]=G+U,a[o+452>>2]=w+x,a[o+456>>2]=k+l,a[o+460>>2]=S+b,a[o+464>>2]=E+h,a[o+468>>2]=c+y,a[o+472>>2]=r+_,a[o+476>>2]=g+B),d(e,o+320|0,s),d(AA,p,f),d($,f,s),g=I-1|0,(0|I)>0;);break A}if(g=g-2|0,I)continue}break}n=o+2272|0,RA(g=Q+288|0,e),CA=-1,eA=KA(g,A),S=((0|A)==(0|g)?CA:eA)|lA(A,g,32)}return n=Q+592|0,S}function k(A,g,I){var C,e,B,r,t,Q,o,c,E,y,_,h,s,p,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0;for(n=C=n-800|0,k=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,l=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,v=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,S=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,D=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,b=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,M=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,B=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,r=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,t=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,Q=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,o=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,c=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,E=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,w=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=I- -64|0,y=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[g>>2]=33620224^y,a[I+56>>2]=1496785429,a[I+60>>2]=1652156816,a[(A=I+48|0)>>2]=33620224,a[A+4>>2]=218629379,a[I+40>>2]=1110511904,a[I+44>>2]=-584534669,a[(e=I+32|0)>>2]=1427652059,a[e+4>>2]=-248528275,_=w^y,a[I>>2]=_,a[I+92>>2]=-584534669^E,a[I+88>>2]=1110511904^c,a[I+84>>2]=-248528275^o,a[(w=I+80|0)>>2]=1427652059^Q,a[I+76>>2]=1652156816^t,a[I+72>>2]=1496785429^r,a[I+68>>2]=218629379^B,M^=E,a[I+28>>2]=M,b^=c,a[I+24>>2]=b,h=D^o,a[I+20>>2]=h,S^=Q,a[(D=I+16|0)>>2]=S,v^=t,a[I+12>>2]=v,s=l^r,a[I+8>>2]=s,p=k^B,a[I+4>>2]=p,l=0;k=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=k,k=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=k,k=a[g+12>>2],a[C+760>>2]=a[g+8>>2],a[C+764>>2]=k,k=a[g+4>>2],a[C+752>>2]=a[g>>2],a[C+756>>2]=k,k=a[w+12>>2],a[C+744>>2]=a[w+8>>2],a[C+748>>2]=k,k=a[w+4>>2],a[C+736>>2]=a[w>>2],a[C+740>>2]=k,oA(k=C+768|0,C+752|0,C+736|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+728>>2]=a[A+8>>2],a[C+732>>2]=f,f=a[A+4>>2],a[C+720>>2]=a[A>>2],a[C+724>>2]=f,f=a[g+12>>2],a[C+712>>2]=a[g+8>>2],a[C+716>>2]=f,f=a[g+4>>2],a[C+704>>2]=a[g>>2],a[C+708>>2]=f,oA(k,C+720|0,C+704|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+696>>2]=a[e+8>>2],a[C+700>>2]=f,f=a[e+4>>2],a[C+688>>2]=a[e>>2],a[C+692>>2]=f,f=a[A+12>>2],a[C+680>>2]=a[A+8>>2],a[C+684>>2]=f,f=a[A+4>>2],a[C+672>>2]=a[A>>2],a[C+676>>2]=f,oA(k,C+688|0,C+672|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+664>>2]=a[D+8>>2],a[C+668>>2]=f,f=a[D+4>>2],a[C+656>>2]=a[D>>2],a[C+660>>2]=f,f=a[e+12>>2],a[C+648>>2]=a[e+8>>2],a[C+652>>2]=f,f=a[e+4>>2],a[C+640>>2]=a[e>>2],a[C+644>>2]=f,oA(k,C+656|0,C+640|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+632>>2]=a[I+8>>2],a[C+636>>2]=f,f=a[I+4>>2],a[C+624>>2]=a[I>>2],a[C+628>>2]=f,f=a[D+12>>2],a[C+616>>2]=a[D+8>>2],a[C+620>>2]=f,f=a[D+4>>2],a[C+608>>2]=a[D>>2],a[C+612>>2]=f,oA(k,C+624|0,C+608|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+600>>2]=a[C+792>>2],a[C+604>>2]=f,f=a[C+788>>2],a[C+592>>2]=a[C+784>>2],a[C+596>>2]=f,f=a[I+12>>2],a[C+584>>2]=a[I+8>>2],a[C+588>>2]=f,f=a[I+4>>2],a[C+576>>2]=a[I>>2],a[C+580>>2]=f,oA(k,C+592|0,C+576|0),f=a[C+768>>2],d=a[C+772>>2],u=a[C+776>>2],a[I+12>>2]=a[C+780>>2]^t,a[I+8>>2]=u^r,a[I+4>>2]=d^B,a[I>>2]=f^y,f=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=f,f=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=f,f=a[g+12>>2],a[C+568>>2]=a[g+8>>2],a[C+572>>2]=f,f=a[g+4>>2],a[C+560>>2]=a[g>>2],a[C+564>>2]=f,f=a[w+12>>2],a[C+552>>2]=a[w+8>>2],a[C+556>>2]=f,f=a[w+4>>2],a[C+544>>2]=a[w>>2],a[C+548>>2]=f,oA(k,C+560|0,C+544|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+536>>2]=a[A+8>>2],a[C+540>>2]=f,f=a[A+4>>2],a[C+528>>2]=a[A>>2],a[C+532>>2]=f,f=a[g+12>>2],a[C+520>>2]=a[g+8>>2],a[C+524>>2]=f,f=a[g+4>>2],a[C+512>>2]=a[g>>2],a[C+516>>2]=f,oA(k,C+528|0,C+512|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+504>>2]=a[e+8>>2],a[C+508>>2]=f,f=a[e+4>>2],a[C+496>>2]=a[e>>2],a[C+500>>2]=f,f=a[A+12>>2],a[C+488>>2]=a[A+8>>2],a[C+492>>2]=f,f=a[A+4>>2],a[C+480>>2]=a[A>>2],a[C+484>>2]=f,oA(k,C+496|0,C+480|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+472>>2]=a[D+8>>2],a[C+476>>2]=f,f=a[D+4>>2],a[C+464>>2]=a[D>>2],a[C+468>>2]=f,f=a[e+12>>2],a[C+456>>2]=a[e+8>>2],a[C+460>>2]=f,f=a[e+4>>2],a[C+448>>2]=a[e>>2],a[C+452>>2]=f,oA(k,C+464|0,C+448|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+440>>2]=a[I+8>>2],a[C+444>>2]=f,f=a[I+4>>2],a[C+432>>2]=a[I>>2],a[C+436>>2]=f,f=a[D+12>>2],a[C+424>>2]=a[D+8>>2],a[C+428>>2]=f,f=a[D+4>>2],a[C+416>>2]=a[D>>2],a[C+420>>2]=f,oA(k,C+432|0,C+416|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+408>>2]=a[C+792>>2],a[C+412>>2]=f,f=a[C+788>>2],a[C+400>>2]=a[C+784>>2],a[C+404>>2]=f,f=a[I+12>>2],a[C+392>>2]=a[I+8>>2],a[C+396>>2]=f,f=a[I+4>>2],a[C+384>>2]=a[I>>2],a[C+388>>2]=f,oA(k,C+400|0,C+384|0),f=a[C+768>>2],d=a[C+772>>2],u=a[C+776>>2],a[I+12>>2]=a[C+780>>2]^E,a[I+8>>2]=u^c,a[I+4>>2]=d^o,a[I>>2]=f^Q,f=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=f,f=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=f,f=a[g+12>>2],a[C+376>>2]=a[g+8>>2],a[C+380>>2]=f,f=a[g+4>>2],a[C+368>>2]=a[g>>2],a[C+372>>2]=f,f=a[w+12>>2],a[C+360>>2]=a[w+8>>2],a[C+364>>2]=f,f=a[w+4>>2],a[C+352>>2]=a[w>>2],a[C+356>>2]=f,oA(k,C+368|0,C+352|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+344>>2]=a[A+8>>2],a[C+348>>2]=f,f=a[A+4>>2],a[C+336>>2]=a[A>>2],a[C+340>>2]=f,f=a[g+12>>2],a[C+328>>2]=a[g+8>>2],a[C+332>>2]=f,f=a[g+4>>2],a[C+320>>2]=a[g>>2],a[C+324>>2]=f,oA(k,C+336|0,C+320|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+312>>2]=a[e+8>>2],a[C+316>>2]=f,f=a[e+4>>2],a[C+304>>2]=a[e>>2],a[C+308>>2]=f,f=a[A+12>>2],a[C+296>>2]=a[A+8>>2],a[C+300>>2]=f,f=a[A+4>>2],a[C+288>>2]=a[A>>2],a[C+292>>2]=f,oA(k,C+304|0,C+288|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+280>>2]=a[D+8>>2],a[C+284>>2]=f,f=a[D+4>>2],a[C+272>>2]=a[D>>2],a[C+276>>2]=f,f=a[e+12>>2],a[C+264>>2]=a[e+8>>2],a[C+268>>2]=f,f=a[e+4>>2],a[C+256>>2]=a[e>>2],a[C+260>>2]=f,oA(k,C+272|0,C+256|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+248>>2]=a[I+8>>2],a[C+252>>2]=f,f=a[I+4>>2],a[C+240>>2]=a[I>>2],a[C+244>>2]=f,f=a[D+12>>2],a[C+232>>2]=a[D+8>>2],a[C+236>>2]=f,f=a[D+4>>2],a[C+224>>2]=a[D>>2],a[C+228>>2]=f,oA(k,C+240|0,C+224|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+216>>2]=a[C+792>>2],a[C+220>>2]=f,f=a[C+788>>2],a[C+208>>2]=a[C+784>>2],a[C+212>>2]=f,f=a[I+12>>2],a[C+200>>2]=a[I+8>>2],a[C+204>>2]=f,f=a[I+4>>2],a[C+192>>2]=a[I>>2],a[C+196>>2]=f,oA(k,C+208|0,C+192|0),f=a[C+768>>2],d=a[C+772>>2],u=a[C+776>>2],a[I+12>>2]=v^a[C+780>>2],a[I+8>>2]=u^s,a[I+4>>2]=d^p,a[I>>2]=f^_,f=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=f,f=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=f,f=a[g+12>>2],a[C+184>>2]=a[g+8>>2],a[C+188>>2]=f,f=a[g+4>>2],a[C+176>>2]=a[g>>2],a[C+180>>2]=f,f=a[w+12>>2],a[C+168>>2]=a[w+8>>2],a[C+172>>2]=f,f=a[w+4>>2],a[C+160>>2]=a[w>>2],a[C+164>>2]=f,oA(k,C+176|0,C+160|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+152>>2]=a[A+8>>2],a[C+156>>2]=f,f=a[A+4>>2],a[C+144>>2]=a[A>>2],a[C+148>>2]=f,f=a[g+12>>2],a[C+136>>2]=a[g+8>>2],a[C+140>>2]=f,f=a[g+4>>2],a[C+128>>2]=a[g>>2],a[C+132>>2]=f,oA(k,C+144|0,C+128|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+120>>2]=a[e+8>>2],a[C+124>>2]=f,f=a[e+4>>2],a[C+112>>2]=a[e>>2],a[C+116>>2]=f,f=a[A+12>>2],a[C+104>>2]=a[A+8>>2],a[C+108>>2]=f,f=a[A+4>>2],a[C+96>>2]=a[A>>2],a[C+100>>2]=f,oA(k,C+112|0,C+96|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+88>>2]=a[D+8>>2],a[C+92>>2]=f,f=a[D+4>>2],a[C+80>>2]=a[D>>2],a[C+84>>2]=f,f=a[e+12>>2],a[C+72>>2]=a[e+8>>2],a[C+76>>2]=f,f=a[e+4>>2],a[C+64>>2]=a[e>>2],a[C+68>>2]=f,oA(k,C+80|0,C- -64|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+56>>2]=a[I+8>>2],a[C+60>>2]=f,f=a[I+4>>2],a[C+48>>2]=a[I>>2],a[C+52>>2]=f,f=a[D+12>>2],a[C+40>>2]=a[D+8>>2],a[C+44>>2]=f,f=a[D+4>>2],a[C+32>>2]=a[D>>2],a[C+36>>2]=f,oA(k,C+48|0,C+32|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+24>>2]=a[C+792>>2],a[C+28>>2]=f,f=a[C+788>>2],a[C+16>>2]=a[C+784>>2],a[C+20>>2]=f,f=a[I+12>>2],a[C+8>>2]=a[I+8>>2],a[C+12>>2]=f,f=a[I+4>>2],a[C>>2]=a[I>>2],a[C+4>>2]=f,oA(k,C+16|0,C),k=a[C+768>>2],f=a[C+772>>2],d=a[C+776>>2],a[I+12>>2]=M^a[C+780>>2],a[I+8>>2]=d^b,a[I+4>>2]=f^h,a[I>>2]=k^S,4!=(0|(l=l+1|0)););n=C+800|0}function d(A,g,I){var C,e,B,i,r,Q,o,c,E,y,_,n,s,p,f,D,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J,U,x,m,P,R,L,T,q,z,j,X,O,V,Z,W,$,AA,gA,IA,CA,eA,BA=0,aA=0,iA=0,rA=0,tA=0,QA=0,oA=0,cA=0,EA=0,yA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,kA=0,dA=0,lA=0,uA=0,vA=0,SA=0,bA=0;BA=GA(C=a[I+4>>2],y=C>>31,DA=(D=a[g+20>>2])<<1,G=DA>>31),iA=h,aA=(hA=GA(pA=a[I>>2],B=pA>>31,e=a[g+24>>2],i=e>>31))+BA|0,BA=h+iA|0,BA=aA>>>0<hA>>>0?BA+1|0:BA,EA=GA(r=a[I+8>>2],s=r>>31,hA=a[g+16>>2],Q=hA>>31),iA=h+BA|0,iA=(aA=EA+aA|0)>>>0<EA>>>0?iA+1|0:iA,BA=(EA=GA(_=a[I+12>>2],w=_>>31,b=(k=a[g+12>>2])<<1,J=b>>31))+aA|0,aA=h+iA|0,aA=BA>>>0<EA>>>0?aA+1|0:aA,iA=(sA=GA(p=a[I+16>>2],M=p>>31,EA=a[g+8>>2],o=EA>>31))+BA|0,BA=h+aA|0,BA=iA>>>0<sA>>>0?BA+1|0:BA,aA=iA,iA=GA(d=a[I+20>>2],U=d>>31,F=(l=a[g+4>>2])<<1,x=F>>31),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,Z=oA=a[I+24>>2],iA=(yA=GA(oA,O=oA>>31,sA=a[g>>2],c=sA>>31))+aA|0,aA=h+BA|0,aA=iA>>>0<yA>>>0?aA+1|0:aA,m=a[I+28>>2],BA=(yA=GA(nA=t(m,19),u=nA>>31,N=(v=a[g+36>>2])<<1,P=N>>31))+iA|0,iA=h+aA|0,iA=BA>>>0<yA>>>0?iA+1|0:iA,lA=a[I+32>>2],aA=(cA=GA(rA=t(lA,19),f=rA>>31,yA=a[g+32>>2],E=yA>>31))+BA|0,BA=h+iA|0,BA=aA>>>0<cA>>>0?BA+1|0:BA,W=a[I+36>>2],I=GA(cA=t(W,19),n=cA>>31,K=(S=a[g+28>>2])<<1,R=K>>31),BA=h+BA|0,tA=g=I+aA|0,I=g>>>0<I>>>0?BA+1|0:BA,g=GA(hA,Q,C,y),BA=h,aA=GA(pA,B,D,L=D>>31),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(r,s,k,T=k>>31),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(EA,o,_,w),BA=h+aA|0,BA=(g=iA+g|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(p,M,l,q=l>>31),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(sA,c,d,U),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(oA=t(oA,19),Y=oA>>31,v,z=v>>31),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(yA,E,nA,u),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(rA,f,S,j=S>>31),BA=h+aA|0,BA=(g=iA+g|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(cA,n,e,i),BA=h+BA|0,vA=g=aA+g|0,wA=g>>>0<aA>>>0?BA+1|0:BA,g=GA(C,y,b,J),BA=h,aA=GA(pA,B,hA,Q),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(EA,o,r,s),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(_,w,F,x),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(sA,c,p,M),BA=h+aA|0,BA=(g=iA+g|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(H=t(d,19),X=H>>31,N,P),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(yA,E,oA,Y),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(nA,u,K,R),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(rA,f,e,i),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(cA,n,DA,G),BA=h+aA|0,$=g=iA+g|0,AA=BA=g>>>0<iA>>>0?BA+1|0:BA,gA=g=g+33554432|0,IA=BA=g>>>0<33554432?BA+1|0:BA,iA=(67108863&BA)<<6|g>>>26,BA=(BA>>26)+wA|0,vA=g=iA+vA|0,BA=g>>>0<iA>>>0?BA+1|0:BA,CA=g=g+16777216|0,BA=I+(aA=(iA=g>>>0<16777216?BA+1|0:BA)>>25)|0,BA=(g=(iA=(33554431&iA)<<7|g>>>25)+tA|0)>>>0<iA>>>0?BA+1|0:BA,kA=I=(aA=g)+33554432|0,g=BA=I>>>0<33554432?BA+1|0:BA,a[A+24>>2]=aA-(-67108864&I),I=GA(C,y,F,x),BA=h,aA=GA(pA,B,EA,o),iA=h+BA|0,iA=(I=aA+I|0)>>>0<aA>>>0?iA+1|0:iA,aA=(BA=I)+(I=GA(sA,c,r,s))|0,BA=h+iA|0,BA=I>>>0>aA>>>0?BA+1|0:BA,iA=GA(I=t(_,19),dA=I>>31,N,P),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=(tA=GA(yA,E,wA=t(p,19),V=wA>>31))+aA|0,aA=h+BA|0,aA=iA>>>0<tA>>>0?aA+1|0:aA,tA=GA(K,R,H,X),BA=h+aA|0,BA=(iA=tA+iA|0)>>>0<tA>>>0?BA+1|0:BA,aA=(tA=GA(e,i,oA,Y))+iA|0,iA=h+BA|0,iA=aA>>>0<tA>>>0?iA+1|0:iA,tA=GA(nA,u,DA,G),BA=h+iA|0,BA=(aA=tA+aA|0)>>>0<tA>>>0?BA+1|0:BA,iA=GA(rA,f,hA,Q),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=(tA=GA(cA,n,b,J))+aA|0,aA=h+BA|0,_A=iA,SA=iA>>>0<tA>>>0?aA+1|0:aA,BA=GA(sA,c,C,y),aA=h,iA=(tA=GA(pA,B,l,q))+BA|0,BA=h+aA|0,BA=iA>>>0<tA>>>0?BA+1|0:BA,tA=aA=t(r,19),aA=(QA=GA(aA,uA=aA>>31,v,z))+iA|0,iA=h+BA|0,iA=aA>>>0<QA>>>0?iA+1|0:iA,QA=GA(yA,E,I,dA),BA=h+iA|0,BA=(aA=QA+aA|0)>>>0<QA>>>0?BA+1|0:BA,iA=GA(wA,V,S,j),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=(QA=GA(e,i,H,X))+aA|0,aA=h+BA|0,aA=iA>>>0<QA>>>0?aA+1|0:aA,QA=GA(oA,Y,D,L),BA=h+aA|0,BA=(iA=QA+iA|0)>>>0<QA>>>0?BA+1|0:BA,aA=(QA=GA(hA,Q,nA,u))+iA|0,iA=h+BA|0,iA=aA>>>0<QA>>>0?iA+1|0:iA,QA=GA(rA,f,k,T),BA=h+iA|0,BA=(aA=QA+aA|0)>>>0<QA>>>0?BA+1|0:BA,iA=GA(cA,n,EA,o),BA=h+BA|0,bA=aA=iA+aA|0,QA=aA>>>0<iA>>>0?BA+1|0:BA,BA=GA(BA=t(C,19),BA>>31,N,P),aA=h,iA=GA(pA,B,sA,c),aA=h+aA|0,aA=(BA=iA+BA|0)>>>0<iA>>>0?aA+1|0:aA,iA=(tA=GA(yA,E,tA,uA))+BA|0,BA=h+aA|0,I=(aA=GA(I,dA,K,R))+iA|0,iA=h+(iA>>>0<tA>>>0?BA+1|0:BA)|0,iA=I>>>0<aA>>>0?iA+1|0:iA,aA=GA(e,i,wA,V),BA=h+iA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(DA,G,H,X),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,iA=GA(hA,Q,oA,Y),aA=h+BA|0,aA=(I=iA+I|0)>>>0<iA>>>0?aA+1|0:aA,iA=GA(nA,u,b,J),BA=h+aA|0,BA=(I=iA+I|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(rA,f,EA,o),iA=h+BA|0,iA=(I=aA+I|0)>>>0<aA>>>0?iA+1|0:iA,aA=GA(cA,n,F,x),BA=h+iA|0,tA=I=aA+I|0,dA=BA=I>>>0<aA>>>0?BA+1|0:BA,uA=I=I+33554432|0,eA=BA=I>>>0<33554432?BA+1|0:BA,aA=(iA=BA>>26)+QA|0,QA=I=(BA=(67108863&BA)<<6|I>>>26)+bA|0,BA=I>>>0<BA>>>0?aA+1|0:aA,bA=I=I+16777216|0,aA=(33554431&(BA=I>>>0<16777216?BA+1|0:BA))<<7|I>>>25,BA=(BA>>25)+SA|0,BA=(I=aA+_A|0)>>>0<aA>>>0?BA+1|0:BA,SA=aA=(iA=I)+33554432|0,I=BA=aA>>>0<33554432?BA+1|0:BA,a[A+8>>2]=iA-(-67108864&aA),BA=GA(e,i,C,y),iA=h,aA=(_A=GA(pA,B,S,j))+BA|0,BA=h+iA|0,BA=aA>>>0<_A>>>0?BA+1|0:BA,iA=GA(r,s,D,L),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(hA,Q,_,w),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,_A=GA(p,M,k,T),iA=h+BA|0,iA=(aA=_A+aA|0)>>>0<_A>>>0?iA+1|0:iA,BA=(_A=GA(EA,o,d,U))+aA|0,aA=h+iA|0,aA=BA>>>0<_A>>>0?aA+1|0:aA,iA=(_A=GA(l,q,Z,O))+BA|0,BA=h+aA|0,BA=iA>>>0<_A>>>0?BA+1|0:BA,aA=iA,iA=GA(sA,c,m,_A=m>>31),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(rA,f,v,z),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,fA=GA(cA,n,yA,E),iA=h+BA|0,BA=g>>26,g=(kA=(67108863&g)<<6|kA>>>26)+(aA=fA+aA|0)|0,aA=BA+(aA>>>0<fA>>>0?iA+1|0:iA)|0,BA=(iA=g)>>>0<kA>>>0?aA+1|0:aA,kA=aA=iA+16777216|0,g=BA=aA>>>0<16777216?BA+1|0:BA,a[A+28>>2]=iA-(-33554432&aA),BA=GA(EA,o,C,y),aA=h,fA=GA(pA,B,k,T),iA=h+aA|0,iA=(BA=fA+BA|0)>>>0<fA>>>0?iA+1|0:iA,fA=GA(r,s,l,q),aA=h+iA|0,aA=(BA=fA+BA|0)>>>0<fA>>>0?aA+1|0:aA,iA=(fA=GA(sA,c,_,w))+BA|0,BA=h+aA|0,BA=iA>>>0<fA>>>0?BA+1|0:BA,aA=iA,iA=GA(wA,V,v,z),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(yA,E,H,X),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,aA=(oA=GA(oA,Y,S,j))+aA|0,iA=h+BA|0,BA=(nA=GA(e,i,nA,u))+aA|0,aA=h+(aA>>>0<oA>>>0?iA+1|0:iA)|0,iA=(rA=GA(rA,f,D,L))+BA|0,BA=h+(BA>>>0<nA>>>0?aA+1|0:aA)|0,BA=iA>>>0<rA>>>0?BA+1|0:BA,aA=iA,iA=GA(cA,n,hA,Q),BA=h+BA|0,rA=aA=aA+iA|0,BA=(BA=aA>>>0<iA>>>0?BA+1|0:BA)+(aA=I>>26)|0,rA=I=rA+(iA=(67108863&I)<<6|SA>>>26)|0,BA=I>>>0<iA>>>0?BA+1|0:BA,nA=aA=I+16777216|0,I=iA=aA>>>0<16777216?BA+1|0:BA,a[A+12>>2]=rA-(-33554432&aA),BA=GA(C,y,K,R),iA=h,aA=(rA=GA(pA,B,yA,E))+BA|0,BA=h+iA|0,BA=aA>>>0<rA>>>0?BA+1|0:BA,iA=GA(e,i,r,s),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,rA=GA(_,w,DA,G),iA=h+BA|0,iA=(aA=rA+aA|0)>>>0<rA>>>0?iA+1|0:iA,BA=(rA=GA(hA,Q,p,M))+aA|0,aA=h+iA|0,aA=BA>>>0<rA>>>0?aA+1|0:aA,iA=(rA=GA(b,J,d,U))+BA|0,BA=h+aA|0,BA=iA>>>0<rA>>>0?BA+1|0:BA,aA=iA,iA=GA(EA,o,Z,O),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(m,_A,F,x),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,aA=(DA=GA(sA,c,rA=lA,oA=rA>>31))+aA|0,iA=h+BA|0,BA=(cA=GA(cA,n,N,P))+aA|0,aA=h+(aA>>>0<DA>>>0?iA+1|0:iA)|0,aA=BA>>>0<cA>>>0?aA+1|0:aA,lA=BA,BA=(BA=g>>25)+aA|0,BA=(g=lA+(iA=(33554431&g)<<7|kA>>>25)|0)>>>0<iA>>>0?BA+1|0:BA,cA=aA=(iA=g)+33554432|0,g=BA=aA>>>0<33554432?BA+1|0:BA,a[A+32>>2]=iA-(-67108864&aA),aA=I>>25,I=(nA=(33554431&I)<<7|nA>>>25)+($-(BA=-67108864&gA)|0)|0,BA=aA+(AA-((BA>>>0>$>>>0)+IA|0)|0)|0,BA=I>>>0<nA>>>0?BA+1|0:BA,BA=((67108863&(BA=(I=(aA=I)+33554432|0)>>>0<33554432?BA+1|0:BA))<<6|I>>>26)+(iA=vA-(-33554432&CA)|0)|0,a[A+20>>2]=BA,a[A+16>>2]=aA-(-67108864&I),I=GA(yA,E,C,y),BA=h,aA=GA(pA,B,v,z),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,iA=GA(r,s,S,j),aA=h+BA|0,aA=(I=iA+I|0)>>>0<iA>>>0?aA+1|0:aA,BA=GA(e,i,_,w),iA=h+aA|0,iA=(I=BA+I|0)>>>0<BA>>>0?iA+1|0:iA,aA=GA(p,M,D,L),BA=h+iA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(hA,Q,d,U),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(k,T,Z,O),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,iA=GA(EA,o,m,_A),aA=h+BA|0,aA=(I=iA+I|0)>>>0<iA>>>0?aA+1|0:aA,BA=GA(rA,oA,l,q),iA=h+aA|0,iA=(I=BA+I|0)>>>0<BA>>>0?iA+1|0:iA,aA=GA(sA,c,W,W>>31),BA=h+iA|0,BA=(BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA)+(aA=g>>26)|0,BA=(g=(iA=I)+(I=(67108863&g)<<6|cA>>>26)|0)>>>0<I>>>0?BA+1|0:BA,BA=(g=(I=g)+16777216|0)>>>0<16777216?BA+1|0:BA,a[A+36>>2]=I-(-33554432&g),iA=QA-(-33554432&bA)|0,aA=tA-(I=-67108864&uA)|0,pA=dA-((I>>>0>tA>>>0)+eA|0)|0,g=(I=GA((33554431&(I=BA))<<7|g>>>25,BA>>=25,19,0))+aA|0,aA=h+pA|0,BA=g>>>0<I>>>0?aA+1|0:aA,BA=((67108863&(BA=(g=(I=g)+33554432|0)>>>0<33554432?BA+1|0:BA))<<6|g>>>26)+iA|0,a[A+4>>2]=BA,a[A>>2]=I-(-67108864&g)}function l(A,g){var I,C,e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D=0,w=0,k=0;n=I=n-544|0,C=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24,e=i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24,B=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24,r=i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24,t=i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24,Q=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,o=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,c=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24,D=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,E=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,y=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,_=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,h=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,s=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,p=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,f=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,A=a[g+124>>2],a[I+536>>2]=a[g+120>>2],a[I+540>>2]=A,A=a[g+116>>2],a[I+528>>2]=a[g+112>>2],a[I+532>>2]=A,A=a[g+108>>2],a[I+504>>2]=a[g+104>>2],a[I+508>>2]=A,A=a[g+100>>2],a[I+496>>2]=a[g+96>>2],a[I+500>>2]=A,A=a[g+124>>2],a[I+488>>2]=a[g+120>>2],a[I+492>>2]=A,A=a[g+116>>2],a[I+480>>2]=a[g+112>>2],a[I+484>>2]=A,oA(k=I+512|0,I+496|0,I+480|0),A=a[I+524>>2],a[g+120>>2]=a[I+520>>2],a[g+124>>2]=A,A=a[I+516>>2],a[g+112>>2]=a[I+512>>2],a[g+116>>2]=A,A=a[g+92>>2],a[I+472>>2]=a[g+88>>2],a[I+476>>2]=A,A=a[g+84>>2],a[I+464>>2]=a[g+80>>2],a[I+468>>2]=A,A=a[g+108>>2],a[I+456>>2]=a[g+104>>2],a[I+460>>2]=A,A=a[g+100>>2],a[I+448>>2]=a[g+96>>2],a[I+452>>2]=A,oA(k,I+464|0,I+448|0),A=a[I+524>>2],a[g+104>>2]=a[I+520>>2],a[g+108>>2]=A,A=a[I+516>>2],a[g+96>>2]=a[I+512>>2],a[g+100>>2]=A,A=a[g+76>>2],a[I+440>>2]=a[g+72>>2],a[I+444>>2]=A,w=a[4+(A=g- -64|0)>>2],a[I+432>>2]=a[A>>2],a[I+436>>2]=w,w=a[g+92>>2],a[I+424>>2]=a[g+88>>2],a[I+428>>2]=w,w=a[g+84>>2],a[I+416>>2]=a[g+80>>2],a[I+420>>2]=w,oA(k,I+432|0,I+416|0),w=a[I+524>>2],a[g+88>>2]=a[I+520>>2],a[g+92>>2]=w,w=a[I+516>>2],a[g+80>>2]=a[I+512>>2],a[g+84>>2]=w,w=a[g+60>>2],a[I+408>>2]=a[g+56>>2],a[I+412>>2]=w,w=a[g+52>>2],a[I+400>>2]=a[g+48>>2],a[I+404>>2]=w,w=a[g+76>>2],a[I+392>>2]=a[g+72>>2],a[I+396>>2]=w,w=a[A+4>>2],a[I+384>>2]=a[A>>2],a[I+388>>2]=w,oA(k,I+400|0,I+384|0),w=a[I+524>>2],a[g+72>>2]=a[I+520>>2],a[g+76>>2]=w,w=a[I+516>>2],a[A>>2]=a[I+512>>2],a[A+4>>2]=w,w=a[g+44>>2],a[I+376>>2]=a[g+40>>2],a[I+380>>2]=w,w=a[g+36>>2],a[I+368>>2]=a[g+32>>2],a[I+372>>2]=w,w=a[g+60>>2],a[I+360>>2]=a[g+56>>2],a[I+364>>2]=w,w=a[g+52>>2],a[I+352>>2]=a[g+48>>2],a[I+356>>2]=w,oA(k,I+368|0,I+352|0),w=a[I+524>>2],a[g+56>>2]=a[I+520>>2],a[g+60>>2]=w,w=a[I+516>>2],a[g+48>>2]=a[I+512>>2],a[g+52>>2]=w,w=a[g+28>>2],a[I+344>>2]=a[g+24>>2],a[I+348>>2]=w,w=a[g+20>>2],a[I+336>>2]=a[g+16>>2],a[I+340>>2]=w,w=a[g+44>>2],a[I+328>>2]=a[g+40>>2],a[I+332>>2]=w,w=a[g+36>>2],a[I+320>>2]=a[g+32>>2],a[I+324>>2]=w,oA(k,I+336|0,I+320|0),w=a[I+524>>2],a[g+40>>2]=a[I+520>>2],a[g+44>>2]=w,w=a[I+516>>2],a[g+32>>2]=a[I+512>>2],a[g+36>>2]=w,w=a[g+12>>2],a[I+312>>2]=a[g+8>>2],a[I+316>>2]=w,w=a[g+4>>2],a[I+304>>2]=a[g>>2],a[I+308>>2]=w,w=a[g+28>>2],a[I+296>>2]=a[g+24>>2],a[I+300>>2]=w,w=a[g+20>>2],a[I+288>>2]=a[g+16>>2],a[I+292>>2]=w,oA(k,I+304|0,I+288|0),w=a[I+524>>2],a[g+24>>2]=a[I+520>>2],a[g+28>>2]=w,w=a[I+516>>2],a[g+16>>2]=a[I+512>>2],a[g+20>>2]=w,w=a[I+540>>2],a[I+280>>2]=a[I+536>>2],a[I+284>>2]=w,w=a[I+532>>2],a[I+272>>2]=a[I+528>>2],a[I+276>>2]=w,w=a[g+12>>2],a[I+264>>2]=a[g+8>>2],a[I+268>>2]=w,w=a[g+4>>2],a[I+256>>2]=a[g>>2],a[I+260>>2]=w,oA(k,I+272|0,I+256|0),w=a[I+524>>2],a[g+8>>2]=a[I+520>>2],a[g+12>>2]=w,w=a[I+516>>2],a[g>>2]=a[I+512>>2],a[g+4>>2]=w,a[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^p,a[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^s,a[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^h,a[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^f,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^_,a[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^y,a[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^E,a[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^D,D=a[g+124>>2],a[I+536>>2]=a[g+120>>2],a[I+540>>2]=D,D=a[g+116>>2],a[I+528>>2]=a[g+112>>2],a[I+532>>2]=D,D=a[g+108>>2],a[I+248>>2]=a[g+104>>2],a[I+252>>2]=D,D=a[g+100>>2],a[I+240>>2]=a[g+96>>2],a[I+244>>2]=D,D=a[g+124>>2],a[I+232>>2]=a[g+120>>2],a[I+236>>2]=D,D=a[g+116>>2],a[I+224>>2]=a[g+112>>2],a[I+228>>2]=D,oA(k,I+240|0,I+224|0),D=a[I+524>>2],a[g+120>>2]=a[I+520>>2],a[g+124>>2]=D,D=a[I+516>>2],a[g+112>>2]=a[I+512>>2],a[g+116>>2]=D,D=a[g+92>>2],a[I+216>>2]=a[g+88>>2],a[I+220>>2]=D,D=a[g+84>>2],a[I+208>>2]=a[g+80>>2],a[I+212>>2]=D,D=a[g+108>>2],a[I+200>>2]=a[g+104>>2],a[I+204>>2]=D,D=a[g+100>>2],a[I+192>>2]=a[g+96>>2],a[I+196>>2]=D,oA(k,I+208|0,I+192|0),D=a[I+524>>2],a[g+104>>2]=a[I+520>>2],a[g+108>>2]=D,D=a[I+516>>2],a[g+96>>2]=a[I+512>>2],a[g+100>>2]=D,D=a[g+76>>2],a[I+184>>2]=a[g+72>>2],a[I+188>>2]=D,D=a[A+4>>2],a[I+176>>2]=a[A>>2],a[I+180>>2]=D,D=a[g+92>>2],a[I+168>>2]=a[g+88>>2],a[I+172>>2]=D,D=a[g+84>>2],a[I+160>>2]=a[g+80>>2],a[I+164>>2]=D,oA(k,I+176|0,I+160|0),D=a[I+524>>2],a[g+88>>2]=a[I+520>>2],a[g+92>>2]=D,D=a[I+516>>2],a[g+80>>2]=a[I+512>>2],a[g+84>>2]=D,D=a[g+60>>2],a[I+152>>2]=a[g+56>>2],a[I+156>>2]=D,D=a[g+52>>2],a[I+144>>2]=a[g+48>>2],a[I+148>>2]=D,D=a[g+76>>2],a[I+136>>2]=a[g+72>>2],a[I+140>>2]=D,D=a[A+4>>2],a[I+128>>2]=a[A>>2],a[I+132>>2]=D,oA(k,I+144|0,I+128|0),D=a[I+524>>2],a[g+72>>2]=a[I+520>>2],a[g+76>>2]=D,D=a[I+516>>2],a[A>>2]=a[I+512>>2],a[A+4>>2]=D,D=a[g+44>>2],a[I+120>>2]=a[g+40>>2],a[I+124>>2]=D,D=a[g+36>>2],a[I+112>>2]=a[g+32>>2],a[I+116>>2]=D,D=a[g+60>>2],a[I+104>>2]=a[g+56>>2],a[I+108>>2]=D,D=a[g+52>>2],a[I+96>>2]=a[g+48>>2],a[I+100>>2]=D,oA(k,I+112|0,I+96|0),D=a[I+524>>2],a[g+56>>2]=a[I+520>>2],a[g+60>>2]=D,D=a[I+516>>2],a[g+48>>2]=a[I+512>>2],a[g+52>>2]=D,D=a[g+28>>2],a[I+88>>2]=a[g+24>>2],a[I+92>>2]=D,D=a[g+20>>2],a[I+80>>2]=a[g+16>>2],a[I+84>>2]=D,D=a[g+44>>2],a[I+72>>2]=a[g+40>>2],a[I+76>>2]=D,D=a[g+36>>2],a[I+64>>2]=a[g+32>>2],a[I+68>>2]=D,oA(k,I+80|0,I- -64|0),D=a[I+524>>2],a[g+40>>2]=a[I+520>>2],a[g+44>>2]=D,D=a[I+516>>2],a[g+32>>2]=a[I+512>>2],a[g+36>>2]=D,D=a[g+12>>2],a[I+56>>2]=a[g+8>>2],a[I+60>>2]=D,D=a[g+4>>2],a[I+48>>2]=a[g>>2],a[I+52>>2]=D,D=a[g+28>>2],a[I+40>>2]=a[g+24>>2],a[I+44>>2]=D,D=a[g+20>>2],a[I+32>>2]=a[g+16>>2],a[I+36>>2]=D,oA(k,I+48|0,I+32|0),D=a[I+524>>2],a[g+24>>2]=a[I+520>>2],a[g+28>>2]=D,D=a[I+516>>2],a[g+16>>2]=a[I+512>>2],a[g+20>>2]=D,D=a[I+540>>2],a[I+24>>2]=a[I+536>>2],a[I+28>>2]=D,D=a[I+532>>2],a[I+16>>2]=a[I+528>>2],a[I+20>>2]=D,D=a[g+12>>2],a[I+8>>2]=a[g+8>>2],a[I+12>>2]=D,D=a[g+4>>2],a[I>>2]=a[g>>2],a[I+4>>2]=D,oA(k,I+16|0,I),k=a[I+524>>2],a[g+8>>2]=a[I+520>>2],a[g+12>>2]=k,k=a[I+516>>2],a[g>>2]=a[I+512>>2],a[g+4>>2]=k,a[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^c,a[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^o,a[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^Q,a[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^t,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^r,a[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^B,a[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^e,a[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^C,n=I+544|0}function u(A,g,I,e,B){var r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0;for(n=r=n-288|0,s=(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^e>>>29,p=(i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24)^e<<3,f=(i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24)^I>>>29,e=(i[0|(o=B+32|0)]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24)^I<<3,_=B+16|0,E=B+48|0,Q=B- -64|0,y=B+80|0,t=B+96|0,c=B+112|0;I=a[c+12>>2],a[r+280>>2]=a[c+8>>2],a[r+284>>2]=I,I=a[c+4>>2],a[r+272>>2]=a[c>>2],a[r+276>>2]=I,I=a[t+12>>2],a[r+248>>2]=a[t+8>>2],a[r+252>>2]=I,I=a[t+4>>2],a[r+240>>2]=a[t>>2],a[r+244>>2]=I,I=a[c+12>>2],a[r+232>>2]=a[c+8>>2],a[r+236>>2]=I,I=a[c+4>>2],a[r+224>>2]=a[c>>2],a[r+228>>2]=I,oA(h=r+256|0,r+240|0,r+224|0),I=a[r+268>>2],a[c+8>>2]=a[r+264>>2],a[c+12>>2]=I,I=a[r+260>>2],a[c>>2]=a[r+256>>2],a[c+4>>2]=I,I=a[y+12>>2],a[r+216>>2]=a[y+8>>2],a[r+220>>2]=I,I=a[y+4>>2],a[r+208>>2]=a[y>>2],a[r+212>>2]=I,I=a[t+12>>2],a[r+200>>2]=a[t+8>>2],a[r+204>>2]=I,I=a[t+4>>2],a[r+192>>2]=a[t>>2],a[r+196>>2]=I,oA(h,r+208|0,r+192|0),I=a[r+268>>2],a[t+8>>2]=a[r+264>>2],a[t+12>>2]=I,I=a[r+260>>2],a[t>>2]=a[r+256>>2],a[t+4>>2]=I,I=a[Q+12>>2],a[r+184>>2]=a[Q+8>>2],a[r+188>>2]=I,I=a[Q+4>>2],a[r+176>>2]=a[Q>>2],a[r+180>>2]=I,I=a[y+12>>2],a[r+168>>2]=a[y+8>>2],a[r+172>>2]=I,I=a[y+4>>2],a[r+160>>2]=a[y>>2],a[r+164>>2]=I,oA(h,r+176|0,r+160|0),I=a[r+268>>2],a[y+8>>2]=a[r+264>>2],a[y+12>>2]=I,I=a[r+260>>2],a[y>>2]=a[r+256>>2],a[y+4>>2]=I,I=a[E+12>>2],a[r+152>>2]=a[E+8>>2],a[r+156>>2]=I,I=a[E+4>>2],a[r+144>>2]=a[E>>2],a[r+148>>2]=I,I=a[Q+12>>2],a[r+136>>2]=a[Q+8>>2],a[r+140>>2]=I,I=a[Q+4>>2],a[r+128>>2]=a[Q>>2],a[r+132>>2]=I,oA(h,r+144|0,r+128|0),I=a[r+268>>2],a[Q+8>>2]=a[r+264>>2],a[Q+12>>2]=I,I=a[r+260>>2],a[Q>>2]=a[r+256>>2],a[Q+4>>2]=I,I=a[o+12>>2],a[r+120>>2]=a[o+8>>2],a[r+124>>2]=I,I=a[o+4>>2],a[r+112>>2]=a[o>>2],a[r+116>>2]=I,I=a[E+12>>2],a[r+104>>2]=a[E+8>>2],a[r+108>>2]=I,I=a[E+4>>2],a[r+96>>2]=a[E>>2],a[r+100>>2]=I,oA(h,r+112|0,r+96|0),I=a[r+268>>2],a[E+8>>2]=a[r+264>>2],a[E+12>>2]=I,I=a[r+260>>2],a[E>>2]=a[r+256>>2],a[E+4>>2]=I,I=a[_+12>>2],a[r+88>>2]=a[_+8>>2],a[r+92>>2]=I,I=a[_+4>>2],a[r+80>>2]=a[_>>2],a[r+84>>2]=I,I=a[o+12>>2],a[r+72>>2]=a[o+8>>2],a[r+76>>2]=I,I=a[o+4>>2],a[r+64>>2]=a[o>>2],a[r+68>>2]=I,oA(h,r+80|0,r- -64|0),I=a[r+268>>2],a[o+8>>2]=a[r+264>>2],a[o+12>>2]=I,I=a[r+260>>2],a[o>>2]=a[r+256>>2],a[o+4>>2]=I,I=a[B+12>>2],a[r+56>>2]=a[B+8>>2],a[r+60>>2]=I,I=a[B+4>>2],a[r+48>>2]=a[B>>2],a[r+52>>2]=I,I=a[_+12>>2],a[r+40>>2]=a[_+8>>2],a[r+44>>2]=I,I=a[_+4>>2],a[r+32>>2]=a[_>>2],a[r+36>>2]=I,oA(h,r+48|0,r+32|0),I=a[r+268>>2],a[_+8>>2]=a[r+264>>2],a[_+12>>2]=I,I=a[r+260>>2],a[_>>2]=a[r+256>>2],a[_+4>>2]=I,I=a[r+284>>2],a[r+24>>2]=a[r+280>>2],a[r+28>>2]=I,I=a[r+276>>2],a[r+16>>2]=a[r+272>>2],a[r+20>>2]=I,I=a[B+12>>2],a[r+8>>2]=a[B+8>>2],a[r+12>>2]=I,I=a[B+4>>2],a[r>>2]=a[B>>2],a[r+4>>2]=I,oA(h,r+16|0,r),I=a[r+268>>2],a[B+8>>2]=a[r+264>>2],a[B+12>>2]=I,I=a[r+260>>2],a[B>>2]=a[r+256>>2],a[B+4>>2]=I,w=s^(i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24),a[B+12>>2]=w,k=p^(i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24),a[B+8>>2]=k,d=f^(i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24),a[B+4>>2]=d,l=e^(i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),a[B>>2]=l,u=e^(i[0|Q]|i[Q+1|0]<<8|i[Q+2|0]<<16|i[Q+3|0]<<24),a[Q>>2]=u,v=f^(i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24),a[B+68>>2]=v,S=p^(i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24),a[B+72>>2]=S,b=s^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24),a[B+76>>2]=b,7!=(0|(D=D+1|0)););A:{g:{I:{if(I=g-16|0){if(16==(0|I))break I;break g}Q=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,o=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,_=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,E=i[B+96|0]|i[B+97|0]<<8|i[B+98|0]<<16|i[B+99|0]<<24,y=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,t=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,c=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,h=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,s=i[B+100|0]|i[B+101|0]<<8|i[B+102|0]<<16|i[B+103|0]<<24,p=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,f=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,D=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,e=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,I=i[B+104|0]|i[B+105|0]<<8|i[B+106|0]<<16|i[B+107|0]<<24,g=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,B=w^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24)^(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+108|0]|i[B+109|0]<<8|i[B+110|0]<<16|i[B+111|0]<<24)^b,C[A+12|0]=B,C[A+13|0]=B>>>8,C[A+14|0]=B>>>16,C[A+15|0]=B>>>24,g=f^D^e^g^I^S^k,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=t^c^h^s^p^v^d,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=Q^o^_^E^y^u^l,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24;break A}c=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,h=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,s=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,p=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,f=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,D=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,e=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,I=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,g=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,t=w^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24)^(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24),C[A+12|0]=t,C[A+13|0]=t>>>8,C[A+14|0]=t>>>16,C[A+15|0]=t>>>24,g=e^g^I^k,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=p^f^D^d,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=c^h^s^l,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,E=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,y=i[0|(g=B- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,t=i[B+112|0]|i[B+113|0]<<8|i[B+114|0]<<16|i[B+115|0]<<24,c=i[B+96|0]|i[B+97|0]<<8|i[B+98|0]<<16|i[B+99|0]<<24,h=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,s=i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24,p=i[B+116|0]|i[B+117|0]<<8|i[B+118|0]<<16|i[B+119|0]<<24,f=i[B+100|0]|i[B+101|0]<<8|i[B+102|0]<<16|i[B+103|0]<<24,D=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,e=i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24,I=i[B+120|0]|i[B+121|0]<<8|i[B+122|0]<<16|i[B+123|0]<<24,g=i[B+104|0]|i[B+105|0]<<8|i[B+106|0]<<16|i[B+107|0]<<24,B=(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24)^(i[B+124|0]|i[B+125|0]<<8|i[B+126|0]<<16|i[B+127|0]<<24)^(i[B+108|0]|i[B+109|0]<<8|i[B+110|0]<<16|i[B+111|0]<<24),C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,g=D^e^g^I,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=h^s^p^f,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=E^y^t^c,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24;break A}VA(A,0,g)}n=r+288|0}function v(A,g){var I,C,e,B,i,r,Q,o,c,E,y,_,s,p,f,D,w,k,d,l,u,v,S,b=0,M=0,F=0,N=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,iA=0,rA=0,tA=0,QA=0,oA=0;n=I=n-48|0,K(A,g),K(A+80|0,g+40|0),b=GA(R=(gA=a[g+92>>2])<<1,i=R>>31,J=(N=a[g+84>>2])<<1,C=J>>31),F=h,AA=q=a[g+88>>2],M=(m=GA(q,X=q>>31,q,X))+b|0,b=h+F|0,b=M>>>0<m>>>0?b+1|0:b,F=GA(Y=a[g+96>>2],r=Y>>31,m=(U=a[g+80>>2])<<1,e=m>>31),b=h+b|0,b=(M=F+M|0)>>>0<F>>>0?b+1|0:b,CA=a[g+108>>2],F=GA(P=t(CA,38),y=P>>31,CA,p=CA>>31),b=h+b|0,b=(M=F+M|0)>>>0<F>>>0?b+1|0:b,F=M,W=a[g+112>>2],x=GA(H=t(W,19),Q=H>>31,M=(O=a[g+104>>2])<<1,M>>31),M=h+b|0,M=(F=F+x|0)>>>0<x>>>0?M+1|0:M,aA=a[g+116>>2],b=GA(x=t(aA,38),B=x>>31,j=(Z=a[g+100>>2])<<1,c=j>>31),M=h+M|0,iA=b=(b>>>0>(F=b+F|0)>>>0?M+1:M)<<1|F>>>31,rA=F=33554432+(f=F<<1)|0,tA=b=F>>>0<33554432?b+1|0:b,G=(67108863&b)<<6|F>>>26,V=b>>26,b=GA(J,C,Y,r),F=h,M=($=GA(q<<=1,E=q>>31,gA,D=gA>>31))+b|0,b=h+F|0,b=M>>>0<$>>>0?b+1|0:b,F=($=GA(Z,_=Z>>31,m,e))+M|0,M=h+b|0,M=F>>>0<$>>>0?M+1|0:M,eA=GA(H,Q,$=CA<<1,w=$>>31),b=h+M|0,b=(F=eA+F|0)>>>0<eA>>>0?b+1|0:b,M=GA(x,B,O,o=O>>31),b=h+b|0,M=(M=(M>>>0>(F=M+F|0)>>>0?b+1:b)<<1|F>>>31)+V|0,eA=F=(b=F<<1)+G|0,b=M=b>>>0>F>>>0?M+1|0:M,QA=F=F+16777216|0,G=(33554431&(b=F>>>0<16777216?b+1|0:b))<<7|F>>>25,V=b>>25,b=GA(R,i,gA,D),F=h,M=(z=GA(Y,r,q,E))+b|0,b=h+F|0,b=M>>>0<z>>>0?b+1|0:b,F=GA(J,C,j,c),b=h+b|0,b=(M=F+M|0)>>>0<F>>>0?b+1|0:b,F=(z=GA(m,e,O,o))+M|0,M=h+b|0,M=F>>>0<z>>>0?M+1|0:M,z=GA(H,Q,W,s=W>>31),b=h+M|0,b=(F=z+F|0)>>>0<z>>>0?b+1|0:b,z=GA(x,B,$,w),M=h+b|0,M=((F=z+F|0)>>>0<z>>>0?M+1:M)<<1|F>>>31,F=(b=G)+(G=F<<1)|0,b=M+V|0,b=F>>>0<G>>>0?b+1|0:b,V=F,z=M=F+33554432|0,F=b=M>>>0<33554432?b+1|0:b,a[A+144>>2]=V-(-67108864&M),V=GA(b=t(Z,38),b>>31,Z,_),G=h,U=GA(b=U,M=b>>31,b,M),M=h+G|0,M=(b=U+V|0)>>>0<U>>>0?M+1|0:M,G=(IA=GA(U=t(O,19),k=U>>31,V=Y<<1,d=V>>31))+b|0,b=h+M|0,b=G>>>0<IA>>>0?b+1|0:b,M=G,G=GA(R,i,P,y),b=h+b|0,b=(M=M+G|0)>>>0<G>>>0?b+1|0:b,G=(IA=GA(H,Q,q,E))+M|0,M=h+b|0,M=G>>>0<IA>>>0?M+1|0:M,IA=GA(J,C,x,B),b=h+M|0,IA=b=((G=IA+G|0)>>>0<IA>>>0?b+1:b)<<1|G>>>31,v=M=(G=33554432+(l=G<<1)|0)>>>0<33554432?b+1|0:b,BA=(67108863&M)<<6|G>>>26,oA=M>>26,b=GA(U,k,j,c),L=h,T=N,M=(N=GA(m,e,N,u=N>>31))+b|0,b=h+L|0,b=M>>>0<N>>>0?b+1|0:b,N=(L=GA(Y,r,P,y))+M|0,M=h+b|0,M=N>>>0<L>>>0?M+1|0:M,L=GA(H,Q,R,i),b=h+M|0,b=(N=L+N|0)>>>0<L>>>0?b+1|0:b,L=GA(x,B,AA,X),M=h+b|0,M=((N=L+N|0)>>>0<L>>>0?M+1:M)<<1|N>>>31,N=(b=BA)+(BA=N<<1)|0,b=M+oA|0,b=N>>>0<BA>>>0?b+1|0:b,oA=N,BA=N=N+16777216|0,S=(33554431&(b=N>>>0<16777216?b+1|0:b))<<7|N>>>25,L=b>>25,b=GA(m,e,AA,X),N=h,M=(T=GA(J,C,T,u))+b|0,b=h+N|0,N=(U=GA(U,k,O,o))+M|0,M=h+(M>>>0<T>>>0?b+1|0:b)|0,M=N>>>0<U>>>0?M+1|0:M,U=GA(j,c,P,y),b=h+M|0,b=(N=U+N|0)>>>0<U>>>0?b+1|0:b,M=N,N=GA(H,Q,V,d),b=h+b|0,b=(M=M+N|0)>>>0<N>>>0?b+1|0:b,N=(U=GA(x,B,R,i))+M|0,M=h+b|0,b=(b=(N>>>0<U>>>0?M+1:M)<<1|N>>>31)+L|0,T=N=(M=N<<1)+S|0,b=M>>>0>N>>>0?b+1|0:b,N=(U=N+33554432|0)>>>0<33554432?b+1|0:b,a[A+128>>2]=T-(-67108864&U),b=GA(q,E,Z,_),M=h,T=GA(Y,r,R,i),M=h+M|0,M=(b=T+b|0)>>>0<T>>>0?M+1|0:M,T=(L=GA(J,C,O,o))+b|0,b=h+M|0,b=T>>>0<L>>>0?b+1|0:b,L=GA(m,e,CA,p),M=h+b|0,M=(T=L+T|0)>>>0<L>>>0?M+1|0:M,L=GA(x,B,W,s),b=h+M|0,b=(M=F>>26)+(((T=L+T|0)>>>0<L>>>0?b+1:b)<<1|T>>>31)|0,b=(F=(z=(67108863&F)<<6|z>>>26)+(T<<1)|0)>>>0<z>>>0?b+1|0:b,z=F,M=b,T=b=F+16777216|0,F=M=b>>>0<16777216?M+1|0:M,a[A+148>>2]=z-(-33554432&b),b=GA(m,e,gA,D),gA=h,M=(X=GA(J,C,AA,X))+b|0,b=h+gA|0,b=M>>>0<X>>>0?b+1|0:b,P=GA(O,o,P,y),b=h+b|0,b=(M=P+M|0)>>>0<P>>>0?b+1|0:b,H=(P=GA(H,Q,j,c))+M|0,M=h+b|0,M=H>>>0<P>>>0?M+1|0:M,b=H,H=GA(x,B,Y,r),M=h+M|0,M=((b=b+H|0)>>>0<H>>>0?M+1:M)<<1,H=b,b=(b=M|b>>>31)+(M=N>>26)|0,b=(N=(z=H<<1)+(H=(67108863&N)<<6|U>>>26)|0)>>>0<H>>>0?b+1|0:b,H=N,P=M=N+16777216|0,N=b=M>>>0<16777216?b+1|0:b,a[A+132>>2]=H-(-33554432&M),b=GA(O,o,q,E),H=h,M=(Y=GA(Y,r,Y,r))+b|0,b=h+H|0,b=M>>>0<Y>>>0?b+1|0:b,Y=GA(R,i,j,c),b=h+b|0,b=(M=Y+M|0)>>>0<Y>>>0?b+1|0:b,Y=GA(J,C,$,w),b=h+b|0,b=(M=Y+M|0)>>>0<Y>>>0?b+1|0:b,Y=(H=GA(m,e,W,s))+M|0,M=h+b|0,M=Y>>>0<H>>>0?M+1|0:M,b=Y,Y=GA(Y=x,B,x=aA,j=x>>31),M=h+M|0,M=((b=b+Y|0)>>>0<Y>>>0?M+1:M)<<1,Y=b,b=(b=M|b>>>31)+(M=F>>25)|0,b=(F=(H=Y<<1)+(Y=(33554431&F)<<7|T>>>25)|0)>>>0<Y>>>0?b+1|0:b,Y=F,H=M=F+33554432|0,F=b=M>>>0<33554432?b+1|0:b,a[A+152>>2]=Y-(-67108864&M),M=f-(b=-67108864&rA)|0,Y=iA-((b>>>0>f>>>0)+tA|0)|0,b=N>>25,N=(P=(33554431&N)<<7|P>>>25)+M|0,M=b+Y|0,Y=N,b=M=N>>>0<P>>>0?M+1|0:M,b=((67108863&(b=(N=N+33554432|0)>>>0<33554432?b+1|0:b))<<6|N>>>26)+(X=eA-(-33554432&QA)|0)|0,a[A+140>>2]=b,a[A+136>>2]=Y-(-67108864&N),b=GA(R,i,O,o),M=h,N=GA(Z,_,V,d),M=h+M|0,M=(b=N+b|0)>>>0<N>>>0?M+1|0:M,N=(R=GA(q,E,CA,p))+b|0,b=h+M|0,b=N>>>0<R>>>0?b+1|0:b,J=GA(J,C,W,s),M=h+b|0,M=(N=J+N|0)>>>0<J>>>0?M+1|0:M,J=GA(m,e,x,j),b=h+M|0,b=(b=((N=J+N|0)>>>0<J>>>0?b+1:b)<<1|N>>>31)+(M=F>>26)|0,M=(F=(Y=N<<1)+(N=(67108863&F)<<6|H>>>26)|0)>>>0<N>>>0?b+1|0:b,M=(b=F+16777216|0)>>>0<16777216?M+1|0:M,a[A+156>>2]=F-(-33554432&b),N=oA-(-33554432&BA)|0,J=l-(F=-67108864&G)|0,m=IA-((F>>>0>l>>>0)+v|0)|0,F=GA((33554431&M)<<7|b>>>25,M>>25,19,0),M=h+m|0,M=(b=F+J|0)>>>0<F>>>0?M+1|0:M,F=b,M=((67108863&(M=(b=b+33554432|0)>>>0<33554432?M+1|0:M))<<6|b>>>26)+N|0,a[A+124>>2]=M,a[A+120>>2]=F-(-67108864&b),b=a[g+44>>2],M=a[g+4>>2],F=a[g+48>>2],N=a[g+8>>2],J=a[g+52>>2],m=a[g+12>>2],x=a[g+56>>2],R=a[g+16>>2],Y=a[g+60>>2],H=a[g+20>>2],O=a[g- -64>>2],j=a[g+24>>2],q=a[g+68>>2],P=a[g+28>>2],X=a[g+72>>2],Z=a[g+32>>2],W=a[g+40>>2],AA=a[g>>2],a[A+76>>2]=a[g+76>>2]+a[g+36>>2],a[A+72>>2]=X+Z,a[A+68>>2]=P+q,a[(CA=A- -64|0)>>2]=O+j,a[A+60>>2]=Y+H,a[A+56>>2]=x+R,a[A+52>>2]=J+m,a[A+48>>2]=F+N,a[A+44>>2]=b+M,a[A+40>>2]=W+AA,K(I,A+40|0),g=a[A+4>>2],b=a[A+84>>2],M=a[A+8>>2],F=a[A+88>>2],N=a[A+12>>2],J=a[A+92>>2],m=a[A+16>>2],x=a[A+96>>2],R=a[A+20>>2],Y=a[A+100>>2],H=a[A+24>>2],O=a[A+104>>2],j=a[A+28>>2],q=a[A+108>>2],P=a[A+32>>2],X=a[A+112>>2],Z=a[A>>2],W=a[A+80>>2],$=(AA=a[A+116>>2])-(gA=a[A+36>>2])|0,a[A+116>>2]=$,U=X-P|0,a[A+112>>2]=U,V=q-j|0,a[A+108>>2]=V,G=O-H|0,a[A+104>>2]=G,aA=Y-R|0,a[A+100>>2]=aA,iA=x-m|0,a[A+96>>2]=iA,rA=J-N|0,a[A+92>>2]=rA,tA=F-M|0,a[A+88>>2]=tA,eA=b-g|0,a[A+84>>2]=eA,QA=W-Z|0,a[A+80>>2]=QA,AA=AA+gA|0,a[A+76>>2]=AA,P=P+X|0,a[A+72>>2]=P,j=q+j|0,a[A+68>>2]=j,H=H+O|0,a[CA>>2]=H,R=Y+R|0,a[A+60>>2]=R,m=x+m|0,a[A+56>>2]=m,N=N+J|0,a[A+52>>2]=N,M=M+F|0,a[A+48>>2]=M,g=g+b|0,a[A+44>>2]=g,b=Z+W|0,a[A+40>>2]=b,F=a[I>>2],J=a[I+4>>2],x=a[I+8>>2],Y=a[I+12>>2],O=a[I+16>>2],q=a[I+20>>2],X=a[I+24>>2],Z=a[I+28>>2],W=a[I+32>>2],a[A+36>>2]=a[I+36>>2]-AA,a[A+32>>2]=W-P,a[A+28>>2]=Z-j,a[A+24>>2]=X-H,a[A+20>>2]=q-R,a[A+16>>2]=O-m,a[A+12>>2]=Y-N,a[A+8>>2]=x-M,a[A+4>>2]=J-g,a[A>>2]=F-b,g=a[A+124>>2],b=a[A+128>>2],M=a[A+132>>2],F=a[A+136>>2],N=a[A+140>>2],J=a[A+144>>2],m=a[A+148>>2],x=a[A+152>>2],R=a[A+120>>2],a[A+156>>2]=a[A+156>>2]-$,a[A+152>>2]=x-U,a[A+148>>2]=m-V,a[A+144>>2]=J-G,a[A+140>>2]=N-aA,a[A+136>>2]=F-iA,a[A+132>>2]=M-rA,a[A+128>>2]=b-tA,a[A+124>>2]=g-eA,a[A+120>>2]=R-QA,n=I+48|0}function S(A,g,I,C){var e=0,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0;for(e=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,a[I>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,a[I+4>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,a[I+8>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,a[I+12>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,a[I+16>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,a[I+20>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,a[I+24>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,a[I+28>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,a[I+32>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,a[I+36>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,a[I+40>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,a[I+44>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,a[I+48>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,a[I+52>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,a[I+56>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,g=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,a[I+60>>2]=g<<24|(65280&g)<<8|g>>>8&65280|g>>>24,g=a[A+28>>2],a[C+24>>2]=a[A+24>>2],a[C+28>>2]=g,g=a[A+20>>2],a[C+16>>2]=a[A+16>>2],a[C+20>>2]=g,g=a[A+12>>2],a[C+8>>2]=a[A+8>>2],a[C+12>>2]=g,g=a[A+4>>2],a[C>>2]=a[A>>2],a[C+4>>2]=g;Q=a[C+28>>2],e=(g=w<<2)+I|0,r=a[C+16>>2],o=a[e>>2]+(Ig(r,26)^Ig(r,21)^Ig(r,7))|0,E=(Q=((B=a[g+34784>>2]+o|0)+(r&((o=a[C+24>>2])^(y=a[C+20>>2]))^o)|0)+Q|0)+a[C+12>>2]|0,a[C+12>>2]=E,Q=(n=Q+(Ig(c=a[C>>2],30)^Ig(c,19)^Ig(c,10))|0)+(c&((B=a[C+8>>2])|(t=a[C+4>>2]))|B&t)|0,a[C+28>>2]=Q,B=(n=B)+(o=(a[(s=(B=4|g)+I|0)>>2]+((o+(y^E&(r^y))|0)+(Ig(E,26)^Ig(E,21)^Ig(E,7))|0)|0)+a[B+34784>>2]|0)|0,a[C+8>>2]=B,o=(o+(Q&(t|c)|t&c)|0)+(Ig(Q,30)^Ig(Q,19)^Ig(Q,10))|0,a[C+24>>2]=o,y=(n=t)+(t=(((y+a[(D=(t=8|g)+I|0)>>2]|0)+a[t+34784>>2]|0)+(r^B&(r^E))|0)+(Ig(B,26)^Ig(B,21)^Ig(B,7))|0)|0,a[C+4>>2]=y,t=t+((o&(Q|c)|Q&c)+(Ig(o,30)^Ig(o,19)^Ig(o,10))|0)|0,a[C+20>>2]=t,r=(n=c)+(c=(((r+a[(k=(c=12|g)+I|0)>>2]|0)+a[c+34784>>2]|0)+(E^y&(B^E))|0)+(Ig(y,26)^Ig(y,21)^Ig(y,7))|0)|0,a[C>>2]=r,c=c+((t&(Q|o)|Q&o)+(Ig(t,30)^Ig(t,19)^Ig(t,10))|0)|0,a[C+16>>2]=c,E=(_=((((n=E)+a[(d=(E=16|g)+I|0)>>2]|0)+a[E+34784>>2]|0)+(B^r&(B^y))|0)+(Ig(r,26)^Ig(r,21)^Ig(r,7))|0)+((c&(t|o)|t&o)+(Ig(c,30)^Ig(c,19)^Ig(c,10))|0)|0,a[C+12>>2]=E,_=Q+_|0,a[C+28>>2]=_,Q=(B=(((B+a[(l=(Q=20|g)+I|0)>>2]|0)+a[Q+34784>>2]|0)+(y^_&(r^y))|0)+(Ig(_,26)^Ig(_,21)^Ig(_,7))|0)+((E&(t|c)|t&c)+(Ig(E,30)^Ig(E,19)^Ig(E,10))|0)|0,a[C+8>>2]=Q,B=B+o|0,a[C+24>>2]=B,o=(y=(((y+a[(u=(o=24|g)+I|0)>>2]|0)+a[o+34784>>2]|0)+(r^B&(r^_))|0)+(Ig(B,26)^Ig(B,21)^Ig(B,7))|0)+((Q&(c|E)|c&E)+(Ig(Q,30)^Ig(Q,19)^Ig(Q,10))|0)|0,a[C+4>>2]=o,y=t+y|0,a[C+20>>2]=y,t=(r=(((r+a[(v=(t=28|g)+I|0)>>2]|0)+a[t+34784>>2]|0)+(_^y&(B^_))|0)+(Ig(y,26)^Ig(y,21)^Ig(y,7))|0)+((o&(Q|E)|Q&E)+(Ig(o,30)^Ig(o,19)^Ig(o,10))|0)|0,a[C>>2]=t,r=r+c|0,a[C+16>>2]=r,c=(_=(((_+a[(S=(c=32|g)+I|0)>>2]|0)+a[c+34784>>2]|0)+(B^r&(B^y))|0)+(Ig(r,26)^Ig(r,21)^Ig(r,7))|0)+((t&(Q|o)|Q&o)+(Ig(t,30)^Ig(t,19)^Ig(t,10))|0)|0,a[C+28>>2]=c,_=E+_|0,a[C+12>>2]=_,E=(B=(((B+a[(b=(E=36|g)+I|0)>>2]|0)+a[E+34784>>2]|0)+(y^_&(r^y))|0)+(Ig(_,26)^Ig(_,21)^Ig(_,7))|0)+((c&(t|o)|t&o)+(Ig(c,30)^Ig(c,19)^Ig(c,10))|0)|0,a[C+24>>2]=E,B=B+Q|0,a[C+8>>2]=B,Q=(y=(((y+a[(M=(Q=40|g)+I|0)>>2]|0)+a[Q+34784>>2]|0)+(r^B&(r^_))|0)+(Ig(B,26)^Ig(B,21)^Ig(B,7))|0)+((E&(t|c)|t&c)+(Ig(E,30)^Ig(E,19)^Ig(E,10))|0)|0,a[C+20>>2]=Q,y=o+y|0,a[C+4>>2]=y,n=(o=44|g)+I|0,o=(r=((r+(a[o+34784>>2]+a[n>>2]|0)|0)+(_^y&(B^_))|0)+(Ig(y,26)^Ig(y,21)^Ig(y,7))|0)+((Q&(c|E)|c&E)+(Ig(Q,30)^Ig(Q,19)^Ig(Q,10))|0)|0,a[C+16>>2]=o,t=t+r|0,a[C>>2]=t,f=(r=48|g)+I|0,r=(_=((_+(a[r+34784>>2]+a[f>>2]|0)|0)+(B^t&(B^y))|0)+(Ig(t,26)^Ig(t,21)^Ig(t,7))|0)+((o&(Q|E)|Q&E)+(Ig(o,30)^Ig(o,19)^Ig(o,10))|0)|0,a[C+12>>2]=r,c=c+_|0,a[C+28>>2]=c,p=(_=52|g)+I|0,B=(_=(((a[_+34784>>2]+a[p>>2]|0)+B|0)+(y^c&(t^y))|0)+(Ig(c,26)^Ig(c,21)^Ig(c,7))|0)+((r&(Q|o)|Q&o)+(Ig(r,30)^Ig(r,19)^Ig(r,10))|0)|0,a[C+8>>2]=B,E=E+_|0,a[C+24>>2]=E,_=(h=56|g)+I|0,y=(h=(((a[h+34784>>2]+a[_>>2]|0)+y|0)+(t^E&(t^c))|0)+(Ig(E,26)^Ig(E,21)^Ig(E,7))|0)+((B&(o|r)|o&r)+(Ig(B,30)^Ig(B,19)^Ig(B,10))|0)|0,a[C+4>>2]=y,Q=Q+h|0,a[C+20>>2]=Q,h=(g|=60)+I|0,Q=(g=((t+(a[g+34784>>2]+a[h>>2]|0)|0)+(c^Q&(c^E))|0)+(Ig(Q,26)^Ig(Q,21)^Ig(Q,7))|0)+((y&(B|r)|B&r)+(Ig(y,30)^Ig(y,19)^Ig(y,10))|0)|0,a[C>>2]=Q,a[C+16>>2]=g+o,48!=(0|w);)t=a[b>>2],w=w+16|0,g=a[_>>2],Q=(B=a[e>>2]+(t+(Ig(g,15)^Ig(g,13)^g>>>10)|0)|0)+(Ig(o=a[s>>2],25)^Ig(o,14)^o>>>3)|0,a[(w<<2)+I>>2]=Q,E=(r=(B=(c=a[M>>2])+o|0)+(Ig(o=a[h>>2],15)^Ig(o,13)^o>>>10)|0)+(Ig(B=a[D>>2],25)^Ig(B,14)^B>>>3)|0,a[e+68>>2]=E,y=(n=((r=B)+(B=a[n>>2])|0)+(Ig(Q,15)^Ig(Q,13)^Q>>>10)|0)+(Ig(r=a[k>>2],25)^Ig(r,14)^r>>>3)|0,a[e+72>>2]=y,_=(h=((n=r)+(r=a[f>>2])|0)+(Ig(E,15)^Ig(E,13)^E>>>10)|0)+(Ig(n=a[d>>2],25)^Ig(n,14)^n>>>3)|0,a[e+76>>2]=_,f=(h=((h=n)+(n=a[p>>2])|0)+(Ig(y,15)^Ig(y,13)^y>>>10)|0)+(Ig(p=a[l>>2],25)^Ig(p,14)^p>>>3)|0,a[e+80>>2]=f,p=(s=(g+p|0)+(Ig(_,15)^Ig(_,13)^_>>>10)|0)+(Ig(h=a[u>>2],25)^Ig(h,14)^h>>>3)|0,a[e+84>>2]=p,h=((o+h|0)+(Ig(D=a[v>>2],25)^Ig(D,14)^D>>>3)|0)+(Ig(f,15)^Ig(f,13)^f>>>10)|0,a[e+88>>2]=h,E=((s=a[S>>2])+(E+(Ig(t,25)^Ig(t,14)^t>>>3)|0)|0)+(Ig(h,15)^Ig(h,13)^h>>>10)|0,a[e+96>>2]=E,s=((Q+D|0)+(Ig(s,25)^Ig(s,14)^s>>>3)|0)+(Ig(p,15)^Ig(p,13)^p>>>10)|0,a[e+92>>2]=s,_=(_+(c+(Ig(B,25)^Ig(B,14)^B>>>3)|0)|0)+(Ig(E,15)^Ig(E,13)^E>>>10)|0,a[e+104>>2]=_,t=(y+(t+(Ig(c,25)^Ig(c,14)^c>>>3)|0)|0)+(Ig(s,15)^Ig(s,13)^s>>>10)|0,a[e+100>>2]=t,c=(p+(r+(Ig(n,25)^Ig(n,14)^n>>>3)|0)|0)+(Ig(_,15)^Ig(_,13)^_>>>10)|0,a[e+112>>2]=c,t=(f+(B+(Ig(r,25)^Ig(r,14)^r>>>3)|0)|0)+(Ig(t,15)^Ig(t,13)^t>>>10)|0,a[e+108>>2]=t,F=e,N=(s+(g+(Ig(o,25)^Ig(o,14)^o>>>3)|0)|0)+(Ig(c,15)^Ig(c,13)^c>>>10)|0,a[F+120>>2]=N,g=(h+(n+(Ig(g,25)^Ig(g,14)^g>>>3)|0)|0)+(Ig(t,15)^Ig(t,13)^t>>>10)|0,a[e+116>>2]=g,F=e,N=(E+(o+(Ig(Q,25)^Ig(Q,14)^Q>>>3)|0)|0)+(Ig(g,15)^Ig(g,13)^g>>>10)|0,a[F+124>>2]=N;a[A>>2]=Q+a[A>>2],a[A+4>>2]=a[A+4>>2]+a[C+4>>2],a[A+8>>2]=a[A+8>>2]+a[C+8>>2],a[A+12>>2]=a[A+12>>2]+a[C+12>>2],a[A+16>>2]=a[A+16>>2]+a[C+16>>2],a[A+20>>2]=a[A+20>>2]+a[C+20>>2],a[A+24>>2]=a[A+24>>2]+a[C+24>>2],a[A+28>>2]=a[A+28>>2]+a[C+28>>2]}function b(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v,S,b,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0;n=e=n-288|0,c=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,E=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,y=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,_=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,s=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,p=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,f=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,Y=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,D=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,w=i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24,F=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,H=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,k=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,d=i[I+112|0]|i[I+113|0]<<8|i[I+114|0]<<16|i[I+115|0]<<24,M=i[I+96|0]|i[I+97|0]<<8|i[I+98|0]<<16|i[I+99|0]<<24,N=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,G=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,l=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,u=i[I+116|0]|i[I+117|0]<<8|i[I+118|0]<<16|i[I+119|0]<<24,r=i[I+100|0]|i[I+101|0]<<8|i[I+102|0]<<16|i[I+103|0]<<24,K=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,J=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,v=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,S=i[I+120|0]|i[I+121|0]<<8|i[I+122|0]<<16|i[I+123|0]<<24,t=i[I+104|0]|i[I+105|0]<<8|i[I+106|0]<<16|i[I+107|0]<<24,b=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,B=(Q=i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)^(o=i[I+108|0]|i[I+109|0]<<8|i[I+110|0]<<16|i[I+111|0]<<24)&(i[I+124|0]|i[I+125|0]<<8|i[I+126|0]<<16|i[I+127|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24)^(i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24),C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,J=K^t&S^J^v,C[A+24|0]=J,C[A+25|0]=J>>>8,C[A+26|0]=J>>>16,C[A+27|0]=J>>>24,G=N^r&u^G^l,C[A+20|0]=G,C[A+21|0]=G>>>8,C[A+22|0]=G>>>16,C[A+23|0]=G>>>24,H=F^M&d^H^k,C[A+16|0]=H,C[A+17|0]=H>>>8,C[A+18|0]=H>>>16,C[A+19|0]=H>>>24,Y=w&Q^Y^D^o,C[A+12|0]=Y,C[A+13|0]=Y>>>8,C[A+14|0]=Y>>>16,C[A+15|0]=Y>>>24,K=K&f^s^p^t,C[A+8|0]=K,C[A+9|0]=K>>>8,C[A+10|0]=K>>>16,C[A+11|0]=K>>>24,N=N&h^y^_^r,C[A+4|0]=N,C[A+5|0]=N>>>8,C[A+6|0]=N>>>16,C[A+7|0]=N>>>24,F=M^F&E^c^b,C[0|A]=F,C[A+1|0]=F>>>8,C[A+2|0]=F>>>16,C[A+3|0]=F>>>24,A=a[I+124>>2],a[e+280>>2]=a[I+120>>2],a[e+284>>2]=A,A=a[I+116>>2],a[e+272>>2]=a[I+112>>2],a[e+276>>2]=A,A=a[I+108>>2],a[e+248>>2]=a[I+104>>2],a[e+252>>2]=A,A=a[I+100>>2],a[e+240>>2]=a[I+96>>2],a[e+244>>2]=A,A=a[I+124>>2],a[e+232>>2]=a[I+120>>2],a[e+236>>2]=A,A=a[I+116>>2],a[e+224>>2]=a[I+112>>2],a[e+228>>2]=A,oA(g=e+256|0,e+240|0,e+224|0),A=a[e+268>>2],a[I+120>>2]=a[e+264>>2],a[I+124>>2]=A,A=a[e+260>>2],a[I+112>>2]=a[e+256>>2],a[I+116>>2]=A,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+108>>2],a[e+200>>2]=a[I+104>>2],a[e+204>>2]=A,A=a[I+100>>2],a[e+192>>2]=a[I+96>>2],a[e+196>>2]=A,oA(g,e+208|0,e+192|0),A=a[e+268>>2],a[I+104>>2]=a[e+264>>2],a[I+108>>2]=A,A=a[e+260>>2],a[I+96>>2]=a[e+256>>2],a[I+100>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,M=a[4+(A=I- -64|0)>>2],a[e+176>>2]=a[A>>2],a[e+180>>2]=M,M=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=M,M=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=M,oA(g,e+176|0,e+160|0),M=a[e+268>>2],a[I+88>>2]=a[e+264>>2],a[I+92>>2]=M,M=a[e+260>>2],a[I+80>>2]=a[e+256>>2],a[I+84>>2]=M,M=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=M,M=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=M,M=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=M,M=a[A+4>>2],a[e+128>>2]=a[A>>2],a[e+132>>2]=M,oA(g,e+144|0,e+128|0),M=a[e+268>>2],a[I+72>>2]=a[e+264>>2],a[I+76>>2]=M,M=a[e+260>>2],a[A>>2]=a[e+256>>2],a[A+4>>2]=M,M=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=M,M=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=M,M=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=M,M=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=M,oA(g,e+112|0,e+96|0),M=a[e+268>>2],a[I+56>>2]=a[e+264>>2],a[I+60>>2]=M,M=a[e+260>>2],a[I+48>>2]=a[e+256>>2],a[I+52>>2]=M,M=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=M,M=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=M,M=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=M,M=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=M,oA(g,e+80|0,e- -64|0),M=a[e+268>>2],a[I+40>>2]=a[e+264>>2],a[I+44>>2]=M,M=a[e+260>>2],a[I+32>>2]=a[e+256>>2],a[I+36>>2]=M,M=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=M,M=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=M,M=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=M,M=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=M,oA(g,e+48|0,e+32|0),M=a[e+268>>2],a[I+24>>2]=a[e+264>>2],a[I+28>>2]=M,M=a[e+260>>2],a[I+16>>2]=a[e+256>>2],a[I+20>>2]=M,M=a[e+284>>2],a[e+24>>2]=a[e+280>>2],a[e+28>>2]=M,M=a[e+276>>2],a[e+16>>2]=a[e+272>>2],a[e+20>>2]=M,M=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=M,M=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=M,oA(g,e+16|0,e),g=a[e+268>>2],a[I+8>>2]=a[e+264>>2],a[I+12>>2]=g,g=a[e+260>>2],a[I>>2]=a[e+256>>2],a[I+4>>2]=g,a[I+12>>2]=Y^(i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24),a[I+8>>2]=K^(i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24),a[I+4>>2]=N^(i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24),a[I>>2]=F^(i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24),a[A>>2]=H^(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24),a[I+68>>2]=G^(i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24),a[I+72>>2]=J^(i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24),a[I+76>>2]=B^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24),n=e+288|0}function M(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J=0;n=e=n-288|0,k=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,d=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,B=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,l=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,u=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,r=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,v=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,S=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,b=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,M=i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24,J=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,Q=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,F=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,N=i[I+112|0]|i[I+113|0]<<8|i[I+114|0]<<16|i[I+115|0]<<24,o=i[I+96|0]|i[I+97|0]<<8|i[I+98|0]<<16|i[I+99|0]<<24,c=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,E=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,K=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,Y=i[I+116|0]|i[I+117|0]<<8|i[I+118|0]<<16|i[I+119|0]<<24,y=i[I+100|0]|i[I+101|0]<<8|i[I+102|0]<<16|i[I+103|0]<<24,_=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,h=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,H=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,G=i[I+120|0]|i[I+121|0]<<8|i[I+122|0]<<16|i[I+123|0]<<24,s=i[I+104|0]|i[I+105|0]<<8|i[I+106|0]<<16|i[I+107|0]<<24,p=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(f=i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)^(D=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)^(w=i[I+108|0]|i[I+109|0]<<8|i[I+110|0]<<16|i[I+111|0]<<24)&(i[I+124|0]|i[I+125|0]<<8|i[I+126|0]<<16|i[I+127|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24),C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=s&G^H^h^_,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=y&Y^K^E^c,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=J^o&N^F^Q,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,g=M&f^b^t^w,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=_&S^v^r^s,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=c&u^l^B^y,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=J&d^k^p^o,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,A=a[I+124>>2],a[e+280>>2]=a[I+120>>2],a[e+284>>2]=A,A=a[I+116>>2],a[e+272>>2]=a[I+112>>2],a[e+276>>2]=A,A=a[I+108>>2],a[e+248>>2]=a[I+104>>2],a[e+252>>2]=A,A=a[I+100>>2],a[e+240>>2]=a[I+96>>2],a[e+244>>2]=A,A=a[I+124>>2],a[e+232>>2]=a[I+120>>2],a[e+236>>2]=A,A=a[I+116>>2],a[e+224>>2]=a[I+112>>2],a[e+228>>2]=A,oA(g=e+256|0,e+240|0,e+224|0),A=a[e+268>>2],a[I+120>>2]=a[e+264>>2],a[I+124>>2]=A,A=a[e+260>>2],a[I+112>>2]=a[e+256>>2],a[I+116>>2]=A,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+108>>2],a[e+200>>2]=a[I+104>>2],a[e+204>>2]=A,A=a[I+100>>2],a[e+192>>2]=a[I+96>>2],a[e+196>>2]=A,oA(g,e+208|0,e+192|0),A=a[e+268>>2],a[I+104>>2]=a[e+264>>2],a[I+108>>2]=A,A=a[e+260>>2],a[I+96>>2]=a[e+256>>2],a[I+100>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,J=a[4+(A=I- -64|0)>>2],a[e+176>>2]=a[A>>2],a[e+180>>2]=J,J=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=J,J=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=J,oA(g,e+176|0,e+160|0),J=a[e+268>>2],a[I+88>>2]=a[e+264>>2],a[I+92>>2]=J,J=a[e+260>>2],a[I+80>>2]=a[e+256>>2],a[I+84>>2]=J,J=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=J,J=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=J,J=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=J,J=a[A+4>>2],a[e+128>>2]=a[A>>2],a[e+132>>2]=J,oA(g,e+144|0,e+128|0),J=a[e+268>>2],a[I+72>>2]=a[e+264>>2],a[I+76>>2]=J,J=a[e+260>>2],a[A>>2]=a[e+256>>2],a[A+4>>2]=J,J=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=J,J=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=J,J=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=J,J=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=J,oA(g,e+112|0,e+96|0),J=a[e+268>>2],a[I+56>>2]=a[e+264>>2],a[I+60>>2]=J,J=a[e+260>>2],a[I+48>>2]=a[e+256>>2],a[I+52>>2]=J,J=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=J,J=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=J,J=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=J,J=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=J,oA(g,e+80|0,e- -64|0),J=a[e+268>>2],a[I+40>>2]=a[e+264>>2],a[I+44>>2]=J,J=a[e+260>>2],a[I+32>>2]=a[e+256>>2],a[I+36>>2]=J,J=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=J,J=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=J,J=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=J,J=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=J,oA(g,e+48|0,e+32|0),J=a[e+268>>2],a[I+24>>2]=a[e+264>>2],a[I+28>>2]=J,J=a[e+260>>2],a[I+16>>2]=a[e+256>>2],a[I+20>>2]=J,J=a[e+284>>2],a[e+24>>2]=a[e+280>>2],a[e+28>>2]=J,J=a[e+276>>2],a[e+16>>2]=a[e+272>>2],a[e+20>>2]=J,J=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=J,J=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=J,oA(g,e+16|0,e),g=a[e+268>>2],a[I+8>>2]=a[e+264>>2],a[I+12>>2]=g,g=a[e+260>>2],a[I>>2]=a[e+256>>2],a[I+4>>2]=g,a[I+12>>2]=(i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24)^t,a[I+8>>2]=(i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24)^r,a[I+4>>2]=(i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24)^B,a[I>>2]=(i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24)^p,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^Q,a[I+68>>2]=(i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24)^E,a[I+72>>2]=(i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24)^h,a[I+76>>2]=D^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24),n=e+288|0}function F(A,g,I,e,B){var r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0;for(n=r=n-224|0,p=(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^e>>>29,f=(i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24)^e<<3,y=(i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24)^I>>>29,h=(i[0|(t=B+48|0)]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24)^I<<3,Q=B+16|0,o=B+32|0,c=B- -64|0,E=B+80|0;I=a[E+12>>2],a[r+216>>2]=a[E+8>>2],a[r+220>>2]=I,I=a[E+4>>2],a[r+208>>2]=a[E>>2],a[r+212>>2]=I,I=a[c+12>>2],a[r+184>>2]=a[c+8>>2],a[r+188>>2]=I,I=a[c+4>>2],a[r+176>>2]=a[c>>2],a[r+180>>2]=I,I=a[E+12>>2],a[r+168>>2]=a[E+8>>2],a[r+172>>2]=I,I=a[E+4>>2],a[r+160>>2]=a[E>>2],a[r+164>>2]=I,oA(e=r+192|0,r+176|0,r+160|0),I=a[r+204>>2],a[E+8>>2]=a[r+200>>2],a[E+12>>2]=I,I=a[r+196>>2],a[E>>2]=a[r+192>>2],a[E+4>>2]=I,I=a[t+12>>2],a[r+152>>2]=a[t+8>>2],a[r+156>>2]=I,I=a[t+4>>2],a[r+144>>2]=a[t>>2],a[r+148>>2]=I,I=a[c+12>>2],a[r+136>>2]=a[c+8>>2],a[r+140>>2]=I,I=a[c+4>>2],a[r+128>>2]=a[c>>2],a[r+132>>2]=I,oA(e,r+144|0,r+128|0),I=a[r+204>>2],a[c+8>>2]=a[r+200>>2],a[c+12>>2]=I,I=a[r+196>>2],a[c>>2]=a[r+192>>2],a[c+4>>2]=I,I=a[o+12>>2],a[r+120>>2]=a[o+8>>2],a[r+124>>2]=I,I=a[o+4>>2],a[r+112>>2]=a[o>>2],a[r+116>>2]=I,I=a[t+12>>2],a[r+104>>2]=a[t+8>>2],a[r+108>>2]=I,I=a[t+4>>2],a[r+96>>2]=a[t>>2],a[r+100>>2]=I,oA(e,r+112|0,r+96|0),I=a[r+204>>2],a[t+8>>2]=a[r+200>>2],a[t+12>>2]=I,I=a[r+196>>2],a[t>>2]=a[r+192>>2],a[t+4>>2]=I,I=a[Q+12>>2],a[r+88>>2]=a[Q+8>>2],a[r+92>>2]=I,I=a[Q+4>>2],a[r+80>>2]=a[Q>>2],a[r+84>>2]=I,I=a[o+12>>2],a[r+72>>2]=a[o+8>>2],a[r+76>>2]=I,I=a[o+4>>2],a[r+64>>2]=a[o>>2],a[r+68>>2]=I,oA(e,r+80|0,r- -64|0),I=a[r+204>>2],a[o+8>>2]=a[r+200>>2],a[o+12>>2]=I,I=a[r+196>>2],a[o>>2]=a[r+192>>2],a[o+4>>2]=I,I=a[B+12>>2],a[r+56>>2]=a[B+8>>2],a[r+60>>2]=I,I=a[B+4>>2],a[r+48>>2]=a[B>>2],a[r+52>>2]=I,I=a[Q+12>>2],a[r+40>>2]=a[Q+8>>2],a[r+44>>2]=I,I=a[Q+4>>2],a[r+32>>2]=a[Q>>2],a[r+36>>2]=I,oA(e,r+48|0,r+32|0),I=a[r+204>>2],a[Q+8>>2]=a[r+200>>2],a[Q+12>>2]=I,I=a[r+196>>2],a[Q>>2]=a[r+192>>2],a[Q+4>>2]=I,I=a[r+220>>2],a[r+24>>2]=a[r+216>>2],a[r+28>>2]=I,I=a[r+212>>2],a[r+16>>2]=a[r+208>>2],a[r+20>>2]=I,I=a[B+12>>2],a[r+8>>2]=a[B+8>>2],a[r+12>>2]=I,I=a[B+4>>2],a[r>>2]=a[B>>2],a[r+4>>2]=I,oA(e,r+16|0,r),s=a[r+192>>2],e=a[r+196>>2],I=a[r+200>>2],D=p^a[r+204>>2],a[B+12>>2]=D,w=I^f,a[B+8>>2]=w,k=e^y,a[B+4>>2]=k,d=h^s,a[B>>2]=d,7!=(0|(_=_+1|0)););A:{g:{I:{if(I=g-16|0){if(16==(0|I))break I;break g}l=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,t=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,Q=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,o=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,c=i[0|(g=B- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,E=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,p=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,f=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,y=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,h=i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24,s=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,_=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,e=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,I=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,g=i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24,B=D^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24)^(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24),C[A+12|0]=B,C[A+13|0]=B>>>8,C[A+14|0]=B>>>16,C[A+15|0]=B>>>24,g=w^s^g^I^e^_,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=k^E^p^f^y^h,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=d^l^t^Q^o^c,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24;break A}h=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,s=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,_=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,e=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,I=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,g=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,y=D^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24),C[A+12|0]=y,C[A+13|0]=y>>>8,C[A+14|0]=y>>>16,C[A+15|0]=y>>>24,g=w^g^I,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=k^e^_,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=d^h^s,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,p=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,f=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,y=i[0|(g=B- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,h=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,s=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,_=i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24,e=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,I=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,g=i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24,B=(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24),C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,g=e^g^I,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=h^s^_,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=p^y^f,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24;break A}VA(A,0,g)}n=r+224|0}function N(A,g,I,C){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v,S,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0;n=e=n-320|0,a[e+280>>2]=0,a[e+284>>2]=0,a[e+272>>2]=0,a[e+276>>2]=0,a[e+264>>2]=0,a[e+268>>2]=0,a[e+256>>2]=0,a[e+260>>2]=0,OA(M=e+256|0,g,I),G=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,b=i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24,t=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,Q=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,o=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,c=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24,E=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,y=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24,g=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,_=i[C+84|0]|i[C+85|0]<<8|i[C+86|0]<<16|i[C+87|0]<<24,h=i[C+116|0]|i[C+117|0]<<8|i[C+118|0]<<16|i[C+119|0]<<24,F=i[C+100|0]|i[C+101|0]<<8|i[C+102|0]<<16|i[C+103|0]<<24,N=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24,s=i[C+92|0]|i[C+93|0]<<8|i[C+94|0]<<16|i[C+95|0]<<24,p=i[C+124|0]|i[C+125|0]<<8|i[C+126|0]<<16|i[C+127|0]<<24,K=i[C+108|0]|i[C+109|0]<<8|i[C+110|0]<<16|i[C+111|0]<<24,Y=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24,f=i[C+80|0]|i[C+81|0]<<8|i[C+82|0]<<16|i[C+83|0]<<24,D=i[C+112|0]|i[C+113|0]<<8|i[C+114|0]<<16|i[C+115|0]<<24,H=i[C+96|0]|i[C+97|0]<<8|i[C+98|0]<<16|i[C+99|0]<<24,w=a[e+272>>2],k=a[e+256>>2],d=a[e+260>>2],l=a[e+264>>2],u=a[e+268>>2],v=a[e+276>>2],S=a[e+284>>2],B=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,r=i[C+104|0]|i[C+105|0]<<8|i[C+106|0]<<16|i[C+107|0]<<24,a[e+280>>2]=B^r&(i[C+120|0]|i[C+121|0]<<8|i[C+122|0]<<16|i[C+123|0]<<24)^a[e+280>>2]^(i[C+88|0]|i[C+89|0]<<8|i[C+90|0]<<16|i[C+91|0]<<24),a[e+272>>2]=Y^H&D^f^w,a[e+284>>2]=N^K&p^s^S,a[e+276>>2]=g^F&h^_^v,a[e+268>>2]=K^N&y^E^u,a[e+264>>2]=c&B^o^l^r,a[e+260>>2]=F^g&Q^t^d,a[e+256>>2]=H^b&Y^G^k,VA(I+M|0,0,32-I|0),OA(A,M,I),I=a[e+280>>2],M=a[e+272>>2],F=a[e+284>>2],N=a[e+276>>2],K=a[e+256>>2],Y=a[e+260>>2],H=a[e+264>>2],G=a[e+268>>2],A=a[C+124>>2],a[e+312>>2]=a[C+120>>2],a[e+316>>2]=A,A=a[C+116>>2],a[e+304>>2]=a[C+112>>2],a[e+308>>2]=A,A=a[C+108>>2],a[e+248>>2]=a[C+104>>2],a[e+252>>2]=A,A=a[C+100>>2],a[e+240>>2]=a[C+96>>2],a[e+244>>2]=A,A=a[C+124>>2],a[e+232>>2]=a[C+120>>2],a[e+236>>2]=A,A=a[C+116>>2],a[e+224>>2]=a[C+112>>2],a[e+228>>2]=A,oA(g=e+288|0,e+240|0,e+224|0),A=a[e+300>>2],a[C+120>>2]=a[e+296>>2],a[C+124>>2]=A,A=a[e+292>>2],a[C+112>>2]=a[e+288>>2],a[C+116>>2]=A,A=a[C+92>>2],a[e+216>>2]=a[C+88>>2],a[e+220>>2]=A,A=a[C+84>>2],a[e+208>>2]=a[C+80>>2],a[e+212>>2]=A,A=a[C+108>>2],a[e+200>>2]=a[C+104>>2],a[e+204>>2]=A,A=a[C+100>>2],a[e+192>>2]=a[C+96>>2],a[e+196>>2]=A,oA(g,e+208|0,e+192|0),A=a[e+300>>2],a[C+104>>2]=a[e+296>>2],a[C+108>>2]=A,A=a[e+292>>2],a[C+96>>2]=a[e+288>>2],a[C+100>>2]=A,A=a[C+76>>2],a[e+184>>2]=a[C+72>>2],a[e+188>>2]=A,b=a[4+(A=C- -64|0)>>2],a[e+176>>2]=a[A>>2],a[e+180>>2]=b,b=a[C+92>>2],a[e+168>>2]=a[C+88>>2],a[e+172>>2]=b,b=a[C+84>>2],a[e+160>>2]=a[C+80>>2],a[e+164>>2]=b,oA(g,e+176|0,e+160|0),b=a[e+300>>2],a[C+88>>2]=a[e+296>>2],a[C+92>>2]=b,b=a[e+292>>2],a[C+80>>2]=a[e+288>>2],a[C+84>>2]=b,b=a[C+60>>2],a[e+152>>2]=a[C+56>>2],a[e+156>>2]=b,b=a[C+52>>2],a[e+144>>2]=a[C+48>>2],a[e+148>>2]=b,b=a[C+76>>2],a[e+136>>2]=a[C+72>>2],a[e+140>>2]=b,b=a[A+4>>2],a[e+128>>2]=a[A>>2],a[e+132>>2]=b,oA(g,e+144|0,e+128|0),b=a[e+300>>2],a[C+72>>2]=a[e+296>>2],a[C+76>>2]=b,b=a[e+292>>2],a[A>>2]=a[e+288>>2],a[A+4>>2]=b,b=a[C+44>>2],a[e+120>>2]=a[C+40>>2],a[e+124>>2]=b,b=a[C+36>>2],a[e+112>>2]=a[C+32>>2],a[e+116>>2]=b,b=a[C+60>>2],a[e+104>>2]=a[C+56>>2],a[e+108>>2]=b,b=a[C+52>>2],a[e+96>>2]=a[C+48>>2],a[e+100>>2]=b,oA(g,e+112|0,e+96|0),b=a[e+300>>2],a[C+56>>2]=a[e+296>>2],a[C+60>>2]=b,b=a[e+292>>2],a[C+48>>2]=a[e+288>>2],a[C+52>>2]=b,b=a[C+28>>2],a[e+88>>2]=a[C+24>>2],a[e+92>>2]=b,b=a[C+20>>2],a[e+80>>2]=a[C+16>>2],a[e+84>>2]=b,b=a[C+44>>2],a[e+72>>2]=a[C+40>>2],a[e+76>>2]=b,b=a[C+36>>2],a[e+64>>2]=a[C+32>>2],a[e+68>>2]=b,oA(g,e+80|0,e- -64|0),b=a[e+300>>2],a[C+40>>2]=a[e+296>>2],a[C+44>>2]=b,b=a[e+292>>2],a[C+32>>2]=a[e+288>>2],a[C+36>>2]=b,b=a[C+12>>2],a[e+56>>2]=a[C+8>>2],a[e+60>>2]=b,b=a[C+4>>2],a[e+48>>2]=a[C>>2],a[e+52>>2]=b,b=a[C+28>>2],a[e+40>>2]=a[C+24>>2],a[e+44>>2]=b,b=a[C+20>>2],a[e+32>>2]=a[C+16>>2],a[e+36>>2]=b,oA(g,e+48|0,e+32|0),b=a[e+300>>2],a[C+24>>2]=a[e+296>>2],a[C+28>>2]=b,b=a[e+292>>2],a[C+16>>2]=a[e+288>>2],a[C+20>>2]=b,b=a[e+316>>2],a[e+24>>2]=a[e+312>>2],a[e+28>>2]=b,b=a[e+308>>2],a[e+16>>2]=a[e+304>>2],a[e+20>>2]=b,b=a[C+12>>2],a[e+8>>2]=a[C+8>>2],a[e+12>>2]=b,b=a[C+4>>2],a[e>>2]=a[C>>2],a[e+4>>2]=b,oA(g,e+16|0,e),g=a[e+300>>2],a[C+8>>2]=a[e+296>>2],a[C+12>>2]=g,g=a[e+292>>2],a[C>>2]=a[e+288>>2],a[C+4>>2]=g,a[C+12>>2]=G^(i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24),a[C+8>>2]=H^(i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24),a[C+4>>2]=Y^(i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24),a[C>>2]=K^(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),a[A>>2]=M^(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24),a[C+68>>2]=N^(i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24),a[C+72>>2]=I^(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24),a[C+76>>2]=F^(i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24),n=e+320|0}function K(A,g){var I,C,e,B,i,r,Q,o,c,E,y,_,n,s,p,f,D,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0;J=GA(C=(f=a[g+12>>2])<<1,r=C>>31,f,l=f>>31),x=h,U=(q=GA(P=a[g+16>>2],Q=P>>31,o=(m=a[g+8>>2])<<1,_=o>>31))+J|0,J=h+x|0,J=U>>>0<q>>>0?J+1|0:J,x=(z=GA(O=(c=a[g+20>>2])<<1,n=O>>31,q=(R=a[g+4>>2])<<1,e=q>>31))+U|0,U=h+J|0,U=x>>>0<z>>>0?U+1|0:U,L=GA(I=a[g+24>>2],E=I>>31,z=(W=a[g>>2])<<1,B=z>>31),J=h+U|0,J=(x=L+x|0)>>>0<L>>>0?J+1|0:J,U=x,s=a[g+32>>2],x=GA(j=t(s,19),y=j>>31,s,w=s>>31),J=h+J|0,J=(U=U+x|0)>>>0<x>>>0?J+1|0:J,M=a[g+36>>2],x=GA(L=t(M,38),i=L>>31,k=(p=a[g+28>>2])<<1,u=k>>31),g=h+J|0,Z=U=x+U|0,x=U>>>0<x>>>0?g+1|0:g,g=GA(q,e,P,Q),J=h,U=GA(o,_,f,l),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,T=GA(c,d=c>>31,z,B),U=h+J|0,U=(g=T+g|0)>>>0<T>>>0?U+1|0:U,T=GA(j,y,k,u),J=h+U|0,J=(g=T+g|0)>>>0<T>>>0?J+1|0:J,U=GA(L,i,I,E),J=h+J|0,CA=g=U+g|0,X=g>>>0<U>>>0?J+1|0:J,J=GA(q,e,C,r),U=h,v=g=m,m=GA(g,V=g>>31,g,V),g=h+U|0,g=(J=m+J|0)>>>0<m>>>0?g+1|0:g,U=(m=GA(z,B,P,Q))+J|0,J=h+g|0,J=U>>>0<m>>>0?J+1|0:J,g=(m=GA(T=t(p,38),D=T>>31,p,S=p>>31))+U|0,U=h+J|0,U=g>>>0<m>>>0?U+1|0:U,g=(J=g)+(m=GA(j,y,g=I<<1,g>>31))|0,J=h+U|0,J=g>>>0<m>>>0?J+1|0:J,U=g,g=GA(L,i,O,n),J=h+J|0,F=U=U+g|0,N=J=g>>>0>U>>>0?J+1|0:J,g=J,K=U=U+33554432|0,Y=g=U>>>0<33554432?g+1|0:g,J=(J=g>>26)+X|0,CA=g=(U=(67108863&g)<<6|U>>>26)+CA|0,J=g>>>0<U>>>0?J+1|0:J,H=g=g+16777216|0,J=(J=(U=g>>>0<16777216?J+1|0:J)>>25)+x|0,g=(g=(33554431&U)<<7|g>>>25)>>>0>(U=g+Z|0)>>>0?J+1|0:J,Z=J=U+33554432|0,m=g=J>>>0<33554432?g+1|0:g,a[A+24>>2]=U-(-67108864&J),g=GA(z,B,v,V),J=h,x=GA(q,e,R,$=R>>31),U=h+J|0,U=(g=x+g|0)>>>0<x>>>0?U+1|0:U,X=GA(x=t(I,19),IA=x>>31,I,E),J=h+U|0,J=(g=X+g|0)>>>0<X>>>0?J+1|0:J,U=(X=GA(O,n,T,D))+g|0,g=h+J|0,g=U>>>0<X>>>0?g+1|0:g,AA=GA(j,y,X=P<<1,b=X>>31),J=h+g|0,J=(U=AA+U|0)>>>0<AA>>>0?J+1|0:J,g=U,U=GA(L,i,C,r),J=h+J|0,gA=g=g+U|0,AA=g>>>0<U>>>0?J+1|0:J,g=GA(O,n,x,IA),J=h,R=GA(z,B,R,$),U=h+J|0,U=(g=R+g|0)>>>0<R>>>0?U+1|0:U,R=GA(P,Q,T,D),J=h+U|0,J=(g=R+g|0)>>>0<R>>>0?J+1|0:J,U=(R=GA(j,y,C,r))+g|0,g=h+J|0,g=U>>>0<R>>>0?g+1|0:g,R=GA(L,i,v,V),J=h+g|0,eA=U=R+U|0,$=U>>>0<R>>>0?J+1|0:J,U=GA(g=t(c,38),g>>31,c,d),R=h,g=W,W=U,U=GA(g,J=g>>31,g,J),J=h+R|0,J=(g=W+U|0)>>>0<U>>>0?J+1|0:J,x=GA(x,IA,X,b),U=h+J|0,U=(g=x+g|0)>>>0<x>>>0?U+1|0:U,x=GA(C,r,T,D),J=h+U|0,J=(g=x+g|0)>>>0<x>>>0?J+1|0:J,U=(x=GA(j,y,o,_))+g|0,g=h+J|0,g=U>>>0<x>>>0?g+1|0:g,x=GA(q,e,L,i),J=h+g|0,R=U=x+U|0,W=J=U>>>0<x>>>0?J+1|0:J,IA=U=U+33554432|0,G=J=U>>>0<33554432?J+1|0:J,g=J>>26,J=(67108863&J)<<6|U>>>26,U=g+$|0,$=x=J+eA|0,J=J>>>0>x>>>0?U+1|0:U,eA=U=x+16777216|0,x=(33554431&(J=U>>>0<16777216?J+1|0:J))<<7|U>>>25,J=(J>>25)+AA|0,J=(U=x+gA|0)>>>0<x>>>0?J+1|0:J,AA=g=U+33554432|0,x=J=g>>>0<33554432?J+1|0:J,a[A+8>>2]=U-(-67108864&g),g=GA(o,_,c,d),J=h,U=GA(P,Q,C,r),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=GA(q,e,I,E),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=GA(z,B,p,S),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,gA=(U=GA(L,i,s,w))+g|0,g=h+J|0,U=(J=m>>26)+(U=U>>>0>gA>>>0?g+1|0:g)|0,Z=g=(m=(67108863&m)<<6|Z>>>26)+gA|0,J=g>>>0<m>>>0?U+1|0:U,gA=g=g+16777216|0,m=J=g>>>0<16777216?J+1|0:J,a[A+28>>2]=Z-(-33554432&g),g=GA(z,B,f,l),U=h,J=(V=GA(q,e,v,V))+g|0,g=h+U|0,g=J>>>0<V>>>0?g+1|0:g,J=(T=GA(I,E,T,D))+J|0,U=h+g|0,g=(j=GA(j,y,O,n))+J|0,J=h+(J>>>0<T>>>0?U+1|0:U)|0,J=g>>>0<j>>>0?J+1|0:J,U=GA(L,i,P,Q),J=h+J|0,J=(J=(g=U+g|0)>>>0<U>>>0?J+1|0:J)+(U=x>>26)|0,g=(U=x=(Z=g)+(g=(67108863&x)<<6|AA>>>26)|0)>>>0<g>>>0?J+1|0:J,j=J=U+16777216|0,x=g=J>>>0<16777216?g+1|0:g,a[A+12>>2]=U-(-33554432&J),g=GA(I,E,o,_),J=h,U=GA(P,Q,P,Q),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=GA(C,r,O,n),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=(P=GA(q,e,k,u))+g|0,g=h+J|0,g=U>>>0<P>>>0?g+1|0:g,J=(P=GA(z,B,s,w))+U|0,U=h+g|0,U=J>>>0<P>>>0?U+1|0:U,g=(P=GA(g=L,i,L=M,O=L>>31))+J|0,J=h+U|0,J=g>>>0<P>>>0?J+1|0:J,U=g,J=(g=m>>25)+J|0,J=(U=U+(m=(33554431&m)<<7|gA>>>25)|0)>>>0<m>>>0?J+1|0:J,P=g=U+33554432|0,m=J=g>>>0<33554432?J+1|0:J,a[A+32>>2]=U-(-67108864&g),J=x>>25,U=(x=(33554431&x)<<7|j>>>25)+(F-(g=-67108864&K)|0)|0,g=J+(N-((g>>>0>F>>>0)+Y|0)|0)|0,g=U>>>0<x>>>0?g+1|0:g,x=U,g=((67108863&(J=(U=U+33554432|0)>>>0<33554432?g+1|0:g))<<6|U>>>26)+(T=CA-(-33554432&H)|0)|0,a[A+20>>2]=g,a[A+16>>2]=x-(-67108864&U),g=GA(C,r,I,E),U=h,J=(x=GA(c,d,X,b))+g|0,g=h+U|0,g=J>>>0<x>>>0?g+1|0:g,U=(x=GA(o,_,p,S))+J|0,J=h+g|0,J=U>>>0<x>>>0?J+1|0:J,g=(x=GA(q,e,s,w))+U|0,U=h+J|0,U=g>>>0<x>>>0?U+1|0:U,x=(J=g)+(g=GA(z,B,L,O))|0,J=h+U|0,J=(g=g>>>0>x>>>0?J+1|0:J)+(J=m>>26)|0,g=(U=(m=(67108863&m)<<6|P>>>26)+x|0)>>>0<m>>>0?J+1|0:J,g=(J=U+16777216|0)>>>0<16777216?g+1|0:g,a[A+36>>2]=U-(-33554432&J),m=$-(-33554432&eA)|0,x=R-(U=-67108864&IA)|0,q=W-((U>>>0>R>>>0)+G|0)|0,g=GA((33554431&g)<<7|J>>>25,g>>25,19,0),J=h+q|0,g=g>>>0>(U=g+x|0)>>>0?J+1|0:J,g=((67108863&(g=(J=U+33554432|0)>>>0<33554432?g+1|0:g))<<6|J>>>26)+m|0,a[A+4>>2]=g,a[A>>2]=U-(-67108864&J)}function Y(A,g){var I,C,e,B,r,t,Q,o,c,E,y=0,_=0,h=0;n=I=n-416|0,C=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,e=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,B=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,r=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,h=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,t=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,Q=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,o=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,A=a[g+92>>2],a[I+408>>2]=a[g+88>>2],a[I+412>>2]=A,A=a[g+84>>2],a[I+400>>2]=a[g+80>>2],a[I+404>>2]=A,A=a[g+76>>2],a[I+376>>2]=a[g+72>>2],a[I+380>>2]=A,y=a[4+(A=_=g- -64|0)>>2],a[I+368>>2]=a[A>>2],a[I+372>>2]=y,A=a[g+92>>2],a[I+360>>2]=a[g+88>>2],a[I+364>>2]=A,A=a[g+84>>2],a[I+352>>2]=a[g+80>>2],a[I+356>>2]=A,oA(A=I+384|0,I+368|0,I+352|0),y=a[I+396>>2],a[g+88>>2]=a[I+392>>2],a[g+92>>2]=y,y=a[I+388>>2],a[g+80>>2]=a[I+384>>2],a[g+84>>2]=y,y=a[g+60>>2],a[I+344>>2]=a[g+56>>2],a[I+348>>2]=y,y=a[g+52>>2],a[I+336>>2]=a[g+48>>2],a[I+340>>2]=y,y=a[g+76>>2],a[I+328>>2]=a[g+72>>2],a[I+332>>2]=y,y=a[_+4>>2],a[I+320>>2]=a[_>>2],a[I+324>>2]=y,oA(A,I+336|0,I+320|0),y=a[I+396>>2],a[g+72>>2]=a[I+392>>2],a[g+76>>2]=y,y=a[I+388>>2],a[_>>2]=a[I+384>>2],a[_+4>>2]=y,y=a[g+44>>2],a[I+312>>2]=a[g+40>>2],a[I+316>>2]=y,y=a[g+36>>2],a[I+304>>2]=a[g+32>>2],a[I+308>>2]=y,y=a[g+60>>2],a[I+296>>2]=a[g+56>>2],a[I+300>>2]=y,y=a[g+52>>2],a[I+288>>2]=a[g+48>>2],a[I+292>>2]=y,oA(A,I+304|0,I+288|0),y=a[I+396>>2],a[g+56>>2]=a[I+392>>2],a[g+60>>2]=y,y=a[I+388>>2],a[g+48>>2]=a[I+384>>2],a[g+52>>2]=y,y=a[g+28>>2],a[I+280>>2]=a[g+24>>2],a[I+284>>2]=y,y=a[g+20>>2],a[I+272>>2]=a[g+16>>2],a[I+276>>2]=y,y=a[g+44>>2],a[I+264>>2]=a[g+40>>2],a[I+268>>2]=y,y=a[g+36>>2],a[I+256>>2]=a[g+32>>2],a[I+260>>2]=y,oA(A,I+272|0,I+256|0),y=a[I+396>>2],a[g+40>>2]=a[I+392>>2],a[g+44>>2]=y,y=a[I+388>>2],a[g+32>>2]=a[I+384>>2],a[g+36>>2]=y,y=a[g+12>>2],a[I+248>>2]=a[g+8>>2],a[I+252>>2]=y,y=a[g+4>>2],a[I+240>>2]=a[g>>2],a[I+244>>2]=y,y=a[g+28>>2],a[I+232>>2]=a[g+24>>2],a[I+236>>2]=y,y=a[g+20>>2],a[I+224>>2]=a[g+16>>2],a[I+228>>2]=y,oA(A,I+240|0,I+224|0),y=a[I+396>>2],a[g+24>>2]=a[I+392>>2],a[g+28>>2]=y,y=a[I+388>>2],a[g+16>>2]=a[I+384>>2],a[g+20>>2]=y,y=a[I+412>>2],a[I+216>>2]=a[I+408>>2],a[I+220>>2]=y,y=a[I+404>>2],a[I+208>>2]=a[I+400>>2],a[I+212>>2]=y,y=a[g+12>>2],a[I+200>>2]=a[g+8>>2],a[I+204>>2]=y,y=a[g+4>>2],a[I+192>>2]=a[g>>2],a[I+196>>2]=y,oA(A,I+208|0,I+192|0),y=a[I+384>>2],c=a[I+388>>2],E=a[I+392>>2],a[g+12>>2]=a[I+396>>2]^Q,a[g+8>>2]=t^E,a[g+4>>2]=h^c,a[g>>2]=y^o,h=a[g+92>>2],a[I+408>>2]=a[g+88>>2],a[I+412>>2]=h,h=a[g+84>>2],a[I+400>>2]=a[g+80>>2],a[I+404>>2]=h,h=a[g+76>>2],a[I+184>>2]=a[g+72>>2],a[I+188>>2]=h,h=a[_+4>>2],a[I+176>>2]=a[_>>2],a[I+180>>2]=h,h=a[g+92>>2],a[I+168>>2]=a[g+88>>2],a[I+172>>2]=h,h=a[g+84>>2],a[I+160>>2]=a[g+80>>2],a[I+164>>2]=h,oA(A,I+176|0,I+160|0),h=a[I+396>>2],a[g+88>>2]=a[I+392>>2],a[g+92>>2]=h,h=a[I+388>>2],a[g+80>>2]=a[I+384>>2],a[g+84>>2]=h,h=a[g+60>>2],a[I+152>>2]=a[g+56>>2],a[I+156>>2]=h,h=a[g+52>>2],a[I+144>>2]=a[g+48>>2],a[I+148>>2]=h,h=a[g+76>>2],a[I+136>>2]=a[g+72>>2],a[I+140>>2]=h,h=a[_+4>>2],a[I+128>>2]=a[_>>2],a[I+132>>2]=h,oA(A,I+144|0,I+128|0),h=a[I+396>>2],a[g+72>>2]=a[I+392>>2],a[g+76>>2]=h,h=a[I+388>>2],a[_>>2]=a[I+384>>2],a[_+4>>2]=h,_=a[g+44>>2],a[I+120>>2]=a[g+40>>2],a[I+124>>2]=_,_=a[g+36>>2],a[I+112>>2]=a[g+32>>2],a[I+116>>2]=_,_=a[g+60>>2],a[I+104>>2]=a[g+56>>2],a[I+108>>2]=_,_=a[g+52>>2],a[I+96>>2]=a[g+48>>2],a[I+100>>2]=_,oA(A,I+112|0,I+96|0),_=a[I+396>>2],a[g+56>>2]=a[I+392>>2],a[g+60>>2]=_,_=a[I+388>>2],a[g+48>>2]=a[I+384>>2],a[g+52>>2]=_,_=a[g+28>>2],a[I+88>>2]=a[g+24>>2],a[I+92>>2]=_,_=a[g+20>>2],a[I+80>>2]=a[g+16>>2],a[I+84>>2]=_,_=a[g+44>>2],a[I+72>>2]=a[g+40>>2],a[I+76>>2]=_,_=a[g+36>>2],a[I+64>>2]=a[g+32>>2],a[I+68>>2]=_,oA(A,I+80|0,I- -64|0),_=a[I+396>>2],a[g+40>>2]=a[I+392>>2],a[g+44>>2]=_,_=a[I+388>>2],a[g+32>>2]=a[I+384>>2],a[g+36>>2]=_,_=a[g+12>>2],a[I+56>>2]=a[g+8>>2],a[I+60>>2]=_,_=a[g+4>>2],a[I+48>>2]=a[g>>2],a[I+52>>2]=_,_=a[g+28>>2],a[I+40>>2]=a[g+24>>2],a[I+44>>2]=_,_=a[g+20>>2],a[I+32>>2]=a[g+16>>2],a[I+36>>2]=_,oA(A,I+48|0,I+32|0),_=a[I+396>>2],a[g+24>>2]=a[I+392>>2],a[g+28>>2]=_,_=a[I+388>>2],a[g+16>>2]=a[I+384>>2],a[g+20>>2]=_,_=a[I+412>>2],a[I+24>>2]=a[I+408>>2],a[I+28>>2]=_,_=a[I+404>>2],a[I+16>>2]=a[I+400>>2],a[I+20>>2]=_,_=a[g+12>>2],a[I+8>>2]=a[g+8>>2],a[I+12>>2]=_,_=a[g+4>>2],a[I>>2]=a[g>>2],a[I+4>>2]=_,oA(A,I+16|0,I),A=a[I+384>>2],_=a[I+388>>2],h=a[I+392>>2],a[g+12>>2]=a[I+396>>2]^r,a[g+8>>2]=h^B,a[g+4>>2]=_^e,a[g>>2]=A^C,n=I+416|0}function H(A,g,I){var C,e,B,r,t,Q,o,c,E,y,_,h,s,p,f=0,D=0,w=0;for(n=C=n-288|0,_=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,s=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,o=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,c=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,E=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,p=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=I+112|0,A=33620224^(y=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24),a[g>>2]=A,a[(t=I+96|0)>>2]=1427652059^y,a[(Q=I+80|0)>>2]=A,D=y^p,a[(A=I- -64|0)>>2]=D,a[I+56>>2]=1110511904,a[I+60>>2]=-584534669,a[(e=I+48|0)>>2]=1427652059,a[e+4>>2]=-248528275,a[I+40>>2]=1496785429,a[I+44>>2]=1652156816,a[(B=I+32|0)>>2]=33620224,a[B+4>>2]=218629379,a[I+24>>2]=1110511904,a[I+28>>2]=-584534669,a[(r=I+16|0)>>2]=1427652059,a[r+4>>2]=-248528275,a[I>>2]=D,D=1652156816^E,a[I+124>>2]=D,w=1496785429^c,a[I+120>>2]=w,f=218629379^o,a[I+116>>2]=f,a[I+108>>2]=-584534669^E,a[I+104>>2]=1110511904^c,a[I+100>>2]=-248528275^o,a[I+92>>2]=D,a[I+88>>2]=w,a[I+84>>2]=f,D=E^s,a[I+76>>2]=D,w=c^h,a[I+72>>2]=w,f=o^_,a[I+68>>2]=f,a[I+12>>2]=D,a[I+8>>2]=w,a[I+4>>2]=f,w=0;D=a[g+12>>2],a[C+280>>2]=a[g+8>>2],a[C+284>>2]=D,D=a[g+4>>2],a[C+272>>2]=a[g>>2],a[C+276>>2]=D,D=a[t+12>>2],a[C+248>>2]=a[t+8>>2],a[C+252>>2]=D,D=a[t+4>>2],a[C+240>>2]=a[t>>2],a[C+244>>2]=D,D=a[g+12>>2],a[C+232>>2]=a[g+8>>2],a[C+236>>2]=D,D=a[g+4>>2],a[C+224>>2]=a[g>>2],a[C+228>>2]=D,oA(D=C+256|0,C+240|0,C+224|0),f=a[C+268>>2],a[g+8>>2]=a[C+264>>2],a[g+12>>2]=f,f=a[C+260>>2],a[g>>2]=a[C+256>>2],a[g+4>>2]=f,f=a[Q+12>>2],a[C+216>>2]=a[Q+8>>2],a[C+220>>2]=f,f=a[Q+4>>2],a[C+208>>2]=a[Q>>2],a[C+212>>2]=f,f=a[t+12>>2],a[C+200>>2]=a[t+8>>2],a[C+204>>2]=f,f=a[t+4>>2],a[C+192>>2]=a[t>>2],a[C+196>>2]=f,oA(D,C+208|0,C+192|0),f=a[C+268>>2],a[t+8>>2]=a[C+264>>2],a[t+12>>2]=f,f=a[C+260>>2],a[t>>2]=a[C+256>>2],a[t+4>>2]=f,f=a[A+12>>2],a[C+184>>2]=a[A+8>>2],a[C+188>>2]=f,f=a[A+4>>2],a[C+176>>2]=a[A>>2],a[C+180>>2]=f,f=a[Q+12>>2],a[C+168>>2]=a[Q+8>>2],a[C+172>>2]=f,f=a[Q+4>>2],a[C+160>>2]=a[Q>>2],a[C+164>>2]=f,oA(D,C+176|0,C+160|0),f=a[C+268>>2],a[Q+8>>2]=a[C+264>>2],a[Q+12>>2]=f,f=a[C+260>>2],a[Q>>2]=a[C+256>>2],a[Q+4>>2]=f,f=a[e+12>>2],a[C+152>>2]=a[e+8>>2],a[C+156>>2]=f,f=a[e+4>>2],a[C+144>>2]=a[e>>2],a[C+148>>2]=f,f=a[A+12>>2],a[C+136>>2]=a[A+8>>2],a[C+140>>2]=f,f=a[A+4>>2],a[C+128>>2]=a[A>>2],a[C+132>>2]=f,oA(D,C+144|0,C+128|0),f=a[C+268>>2],a[A+8>>2]=a[C+264>>2],a[A+12>>2]=f,f=a[C+260>>2],a[A>>2]=a[C+256>>2],a[A+4>>2]=f,f=a[B+12>>2],a[C+120>>2]=a[B+8>>2],a[C+124>>2]=f,f=a[B+4>>2],a[C+112>>2]=a[B>>2],a[C+116>>2]=f,f=a[e+12>>2],a[C+104>>2]=a[e+8>>2],a[C+108>>2]=f,f=a[e+4>>2],a[C+96>>2]=a[e>>2],a[C+100>>2]=f,oA(D,C+112|0,C+96|0),f=a[C+268>>2],a[e+8>>2]=a[C+264>>2],a[e+12>>2]=f,f=a[C+260>>2],a[e>>2]=a[C+256>>2],a[e+4>>2]=f,f=a[r+12>>2],a[C+88>>2]=a[r+8>>2],a[C+92>>2]=f,f=a[r+4>>2],a[C+80>>2]=a[r>>2],a[C+84>>2]=f,f=a[B+12>>2],a[C+72>>2]=a[B+8>>2],a[C+76>>2]=f,f=a[B+4>>2],a[C+64>>2]=a[B>>2],a[C+68>>2]=f,oA(D,C+80|0,C- -64|0),f=a[C+268>>2],a[B+8>>2]=a[C+264>>2],a[B+12>>2]=f,f=a[C+260>>2],a[B>>2]=a[C+256>>2],a[B+4>>2]=f,f=a[I+12>>2],a[C+56>>2]=a[I+8>>2],a[C+60>>2]=f,f=a[I+4>>2],a[C+48>>2]=a[I>>2],a[C+52>>2]=f,f=a[r+12>>2],a[C+40>>2]=a[r+8>>2],a[C+44>>2]=f,f=a[r+4>>2],a[C+32>>2]=a[r>>2],a[C+36>>2]=f,oA(D,C+48|0,C+32|0),f=a[C+268>>2],a[r+8>>2]=a[C+264>>2],a[r+12>>2]=f,f=a[C+260>>2],a[r>>2]=a[C+256>>2],a[r+4>>2]=f,f=a[C+284>>2],a[C+24>>2]=a[C+280>>2],a[C+28>>2]=f,f=a[C+276>>2],a[C+16>>2]=a[C+272>>2],a[C+20>>2]=f,f=a[I+12>>2],a[C+8>>2]=a[I+8>>2],a[C+12>>2]=f,f=a[I+4>>2],a[C>>2]=a[I>>2],a[C+4>>2]=f,oA(D,C+16|0,C),D=a[C+268>>2],a[I+8>>2]=a[C+264>>2],a[I+12>>2]=D,D=a[C+260>>2],a[I>>2]=a[C+256>>2],a[I+4>>2]=D,a[I+12>>2]=(i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24)^s,a[I+8>>2]=(i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24)^h,a[I+4>>2]=(i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24)^_,a[I>>2]=(i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24)^p,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^y,a[I+68>>2]=(i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24)^o,a[I+72>>2]=(i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24)^c,a[I+76>>2]=(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24)^E,10!=(0|(w=w+1|0)););n=C+288|0}function G(A,g,I,e,B){var r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0;for(r=n+-64|0,t=a[A+60>>2],Q=a[A+56>>2],L=a[A+52>>2],R=a[A+48>>2],o=a[A+44>>2],c=a[A+40>>2],E=a[A+36>>2],y=a[A+32>>2],_=a[A+28>>2],h=a[A+24>>2],s=a[A+20>>2],p=a[A+16>>2],f=a[A+12>>2],D=a[A+8>>2],w=a[A+4>>2],k=a[A>>2];;){if(!B&e>>>0>63|B)d=I;else{if(a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,a[r+24>>2]=0,a[r+28>>2]=0,a[r+16>>2]=0,a[r+20>>2]=0,a[r+8>>2]=0,a[r+12>>2]=0,a[r>>2]=0,a[r+4>>2]=0,u=0,e|B)for(;C[u+r|0]=i[g+u|0],!B&(u=u+1|0)>>>0<e>>>0|B;);g=d=r,X=I}for(T=20,l=k,K=w,Y=D,J=f,u=p,I=s,S=h,b=_,M=y,x=E,H=c,v=t,m=Q,U=L,G=R,F=o;N=u,l=Ig((u=l+u|0)^G,16),N=G=Ig(N^(M=l+M|0),12),G=Ig((P=u+G|0)^l,8),u=Ig(N^(M=G+M|0),7),v=Ig((l=b+J|0)^v,16),b=Ig((F=v+F|0)^b,12),J=Ig((Y=S+Y|0)^m,16),S=Ig((H=J+H|0)^S,12),m=(q=l+b|0)+u|0,z=Ig((Y=S+Y|0)^J,8),l=Ig(m^z,16),J=Ig((K=I+K|0)^U,16),I=Ig((x=J+x|0)^I,12),N=u,U=Ig((K=I+K|0)^J,8),N=Ig(N^(u=(j=U+x|0)+l|0),12),m=Ig(l^(J=N+m|0),8),u=Ig((x=m+u|0)^N,7),N=M,M=Y,l=Ig(v^q,8),Y=Ig((v=l+F|0)^b,7),U=Ig((M=M+Y|0)^U,16),F=Ig((b=N+U|0)^Y,12),U=Ig(U^(Y=F+M|0),8),b=Ig((M=b+U|0)^F,7),F=v,v=K,K=Ig((H=H+z|0)^S,7),S=F+(G=Ig((v=v+K|0)^G,16))|0,F=v,v=Ig(S^K,12),G=Ig(G^(K=F+v|0),8),S=Ig((F=S+G|0)^v,7),N=H,v=l,l=Ig(I^j,7),v=Ig(v^(H=l+P|0),16),P=Ig((I=N+v|0)^l,12),v=Ig(v^(l=P+H|0),8),I=Ig((H=I+v|0)^P,7),T=T-2|0;);if(T=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,P=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,q=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,z=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,j=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,N=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,O=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,V=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,Z=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,W=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,$=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,AA=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,gA=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,IA=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,CA=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,l=l+k^(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),C[0|d]=l,C[d+1|0]=l>>>8,C[d+2|0]=l>>>16,C[d+3|0]=l>>>24,l=v+t^CA,C[d+60|0]=l,C[d+61|0]=l>>>8,C[d+62|0]=l>>>16,C[d+63|0]=l>>>24,l=m+Q^IA,C[d+56|0]=l,C[d+57|0]=l>>>8,C[d+58|0]=l>>>16,C[d+59|0]=l>>>24,l=U+L^gA,C[d+52|0]=l,C[d+53|0]=l>>>8,C[d+54|0]=l>>>16,C[d+55|0]=l>>>24,l=G+R^AA,C[d+48|0]=l,C[d+49|0]=l>>>8,C[d+50|0]=l>>>16,C[d+51|0]=l>>>24,l=F+o^$,C[d+44|0]=l,C[d+45|0]=l>>>8,C[d+46|0]=l>>>16,C[d+47|0]=l>>>24,l=H+c^W,C[d+40|0]=l,C[d+41|0]=l>>>8,C[d+42|0]=l>>>16,C[d+43|0]=l>>>24,l=x+E^Z,C[d+36|0]=l,C[d+37|0]=l>>>8,C[d+38|0]=l>>>16,C[d+39|0]=l>>>24,l=M+y^V,C[d+32|0]=l,C[d+33|0]=l>>>8,C[d+34|0]=l>>>16,C[d+35|0]=l>>>24,b=b+_^O,C[d+28|0]=b,C[d+29|0]=b>>>8,C[d+30|0]=b>>>16,C[d+31|0]=b>>>24,S=N^S+h,C[d+24|0]=S,C[d+25|0]=S>>>8,C[d+26|0]=S>>>16,C[d+27|0]=S>>>24,I=j^I+s,C[d+20|0]=I,C[d+21|0]=I>>>8,C[d+22|0]=I>>>16,C[d+23|0]=I>>>24,I=z^u+p,C[d+16|0]=I,C[d+17|0]=I>>>8,C[d+18|0]=I>>>16,C[d+19|0]=I>>>24,I=q^J+f,C[d+12|0]=I,C[d+13|0]=I>>>8,C[d+14|0]=I>>>16,C[d+15|0]=I>>>24,I=P^Y+D,C[d+8|0]=I,C[d+9|0]=I>>>8,C[d+10|0]=I>>>16,C[d+11|0]=I>>>24,I=T^K+w,C[d+4|0]=I,C[d+5|0]=I>>>8,C[d+6|0]=I>>>16,C[d+7|0]=I>>>24,L=!(R=R+1|0)+L|0,!B&e>>>0<=64){if(!(!(e|B)|!B&e>>>0>63|!!(0|B)))for(u=0;C[u+X|0]=i[d+u|0],e>>>0>(u=u+1|0)>>>0;);a[A+52>>2]=L,a[A+48>>2]=R;break}g=g- -64|0,I=d- -64|0,B=B-1|0,B=(e=e+-64|0)>>>0<4294967232?B+1|0:B}}function J(A,g){var I,e=0,B=0,i=0,r=0,t=0,Q=0,o=0;n=I=n-704|0,e=80+((B=a[A+72>>2]>>>3&127)+A|0)|0,B>>>0>=112?(OA(e,34608,128-B|0),f(A,B=A+80|0,I,I+640|0),VA(B,0,112)):OA(e,34608,112-B|0),Q=(i=a[A+64>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+68>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[A+192|0]=e,C[A+193|0]=e>>>8,C[A+194|0]=e>>>16,C[A+195|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[A+196|0]=B,C[A+197|0]=B>>>8,C[A+198|0]=B>>>16,C[A+199|0]=B>>>24,Q=(i=a[A+72>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+76>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[A+200|0]=e,C[A+201|0]=e>>>8,C[A+202|0]=e>>>16,C[A+203|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[A+204|0]=B,C[A+205|0]=B>>>8,C[A+206|0]=B>>>16,C[A+207|0]=B>>>24,f(A,A+80|0,I,I+640|0),Q=(i=a[A>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+4>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[0|g]=e,C[g+1|0]=e>>>8,C[g+2|0]=e>>>16,C[g+3|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+4|0]=B,C[g+5|0]=B>>>8,C[g+6|0]=B>>>16,C[g+7|0]=B>>>24,Q=(i=a[A+8>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+12>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+8|0]=e,C[g+9|0]=e>>>8,C[g+10|0]=e>>>16,C[g+11|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+12|0]=B,C[g+13|0]=B>>>8,C[g+14|0]=B>>>16,C[g+15|0]=B>>>24,Q=(i=a[A+16>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+20>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+16|0]=e,C[g+17|0]=e>>>8,C[g+18|0]=e>>>16,C[g+19|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+20|0]=B,C[g+21|0]=B>>>8,C[g+22|0]=B>>>16,C[g+23|0]=B>>>24,Q=(i=a[A+24>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+28>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+24|0]=e,C[g+25|0]=e>>>8,C[g+26|0]=e>>>16,C[g+27|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+28|0]=B,C[g+29|0]=B>>>8,C[g+30|0]=B>>>16,C[g+31|0]=B>>>24,Q=(i=a[A+32>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+36>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+32|0]=e,C[g+33|0]=e>>>8,C[g+34|0]=e>>>16,C[g+35|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+36|0]=B,C[g+37|0]=B>>>8,C[g+38|0]=B>>>16,C[g+39|0]=B>>>24,Q=(i=a[A+40>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+44>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+40|0]=e,C[g+41|0]=e>>>8,C[g+42|0]=e>>>16,C[g+43|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+44|0]=B,C[g+45|0]=B>>>8,C[g+46|0]=B>>>16,C[g+47|0]=B>>>24,Q=(i=a[A+48>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+52>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+48|0]=e,C[g+49|0]=e>>>8,C[g+50|0]=e>>>16,C[g+51|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+52|0]=B,C[g+53|0]=B>>>8,C[g+54|0]=B>>>16,C[g+55|0]=B>>>24,Q=(i=a[A+56>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,e=g,o=r<<24,r=(t=-16777216&i)>>>24|0,g=o|t<<8|-16777216&((255&(g=a[A+60>>2]))<<24|i>>>8)|16711680&((16777215&g)<<8|i>>>24)|g>>>8&65280|g>>>24,C[e+56|0]=g,C[e+57|0]=g>>>8,C[e+58|0]=g>>>16,C[e+59|0]=g>>>24,g=B|r|Q,g|=B=0,C[e+60|0]=g,C[e+61|0]=g>>>8,C[e+62|0]=g>>>16,C[e+63|0]=g>>>24,dg(I,704),dg(A,208),n=I+704|0}function U(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v=0;n=e=n-224|0,o=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,c=i[0|(v=I- -64|0)]|i[v+1|0]<<8|i[v+2|0]<<16|i[v+3|0]<<24,E=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,y=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,_=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,B=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,s=i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24,p=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,f=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,D=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,r=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,w=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,k=i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24,d=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,l=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,u=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,t=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(Q=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^(i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)&(i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24)^(i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24)^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24),C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=l&u^k^d^w^r,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=f&D^s^p^h^B,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=y&_^o^c^E^t,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,A=a[v+4>>2],a[e+176>>2]=a[v>>2],a[e+180>>2]=A,A=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=A,A=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=A,oA(A=e+192|0,e+176|0,e+160|0),g=a[e+204>>2],a[I+88>>2]=a[e+200>>2],a[I+92>>2]=g,g=a[e+196>>2],a[I+80>>2]=a[e+192>>2],a[I+84>>2]=g,g=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=g,g=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=g,g=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=g,g=a[v+4>>2],a[e+128>>2]=a[v>>2],a[e+132>>2]=g,oA(A,e+144|0,e+128|0),g=a[e+204>>2],a[I+72>>2]=a[e+200>>2],a[I+76>>2]=g,g=a[e+196>>2],a[v>>2]=a[e+192>>2],a[v+4>>2]=g,g=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=g,g=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=g,g=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=g,g=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=g,oA(A,e+112|0,e+96|0),g=a[e+204>>2],a[I+56>>2]=a[e+200>>2],a[I+60>>2]=g,g=a[e+196>>2],a[I+48>>2]=a[e+192>>2],a[I+52>>2]=g,g=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=g,g=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=g,g=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=g,g=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=g,oA(A,e+80|0,e- -64|0),g=a[e+204>>2],a[I+40>>2]=a[e+200>>2],a[I+44>>2]=g,g=a[e+196>>2],a[I+32>>2]=a[e+192>>2],a[I+36>>2]=g,g=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=g,g=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=g,g=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=g,g=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=g,oA(A,e+48|0,e+32|0),g=a[e+204>>2],a[I+24>>2]=a[e+200>>2],a[I+28>>2]=g,g=a[e+196>>2],a[I+16>>2]=a[e+192>>2],a[I+20>>2]=g,g=a[e+220>>2],a[e+24>>2]=a[e+216>>2],a[e+28>>2]=g,g=a[e+212>>2],a[e+16>>2]=a[e+208>>2],a[e+20>>2]=g,g=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=g,g=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=g,oA(A,e+16|0,e),A=a[e+192>>2],g=a[e+196>>2],v=a[e+200>>2],a[I+12>>2]=Q^a[e+204>>2],a[I+8>>2]=v^r,a[I+4>>2]=g^B,a[I>>2]=A^t,n=e+224|0}function x(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w=0,k=0,d=0,l=0,u=0;n=e=n-224|0,d=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,k=i[0|(w=I- -64|0)]|i[w+1|0]<<8|i[w+2|0]<<16|i[w+3|0]<<24,B=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,r=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,t=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,l=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,Q=i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24,o=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,c=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,E=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,y=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,u=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,_=i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24,h=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,s=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,p=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,f=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,D=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)&(i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24)^(i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24)^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24)^(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24),C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,u=p&f^u^h^s^_,C[A+8|0]=u,C[A+9|0]=u>>>8,C[A+10|0]=u>>>16,C[A+11|0]=u>>>24,l=E&y^l^o^c^Q,C[A+4|0]=l,C[A+5|0]=l>>>8,C[A+6|0]=l>>>16,C[A+7|0]=l>>>24,d=r&t^d^k^B^D,C[0|A]=d,C[A+1|0]=d>>>8,C[A+2|0]=d>>>16,C[A+3|0]=d>>>24,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,A=a[w+4>>2],a[e+176>>2]=a[w>>2],a[e+180>>2]=A,A=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=A,A=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=A,oA(A=e+192|0,e+176|0,e+160|0),k=a[e+204>>2],a[I+88>>2]=a[e+200>>2],a[I+92>>2]=k,k=a[e+196>>2],a[I+80>>2]=a[e+192>>2],a[I+84>>2]=k,k=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=k,k=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=k,k=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=k,k=a[w+4>>2],a[e+128>>2]=a[w>>2],a[e+132>>2]=k,oA(A,e+144|0,e+128|0),k=a[e+204>>2],a[I+72>>2]=a[e+200>>2],a[I+76>>2]=k,k=a[e+196>>2],a[w>>2]=a[e+192>>2],a[w+4>>2]=k,w=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=w,w=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=w,w=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=w,w=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=w,oA(A,e+112|0,e+96|0),w=a[e+204>>2],a[I+56>>2]=a[e+200>>2],a[I+60>>2]=w,w=a[e+196>>2],a[I+48>>2]=a[e+192>>2],a[I+52>>2]=w,w=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=w,w=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=w,w=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=w,w=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=w,oA(A,e+80|0,e- -64|0),w=a[e+204>>2],a[I+40>>2]=a[e+200>>2],a[I+44>>2]=w,w=a[e+196>>2],a[I+32>>2]=a[e+192>>2],a[I+36>>2]=w,w=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=w,w=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=w,w=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=w,w=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=w,oA(A,e+48|0,e+32|0),w=a[e+204>>2],a[I+24>>2]=a[e+200>>2],a[I+28>>2]=w,w=a[e+196>>2],a[I+16>>2]=a[e+192>>2],a[I+20>>2]=w,w=a[e+220>>2],a[e+24>>2]=a[e+216>>2],a[e+28>>2]=w,w=a[e+212>>2],a[e+16>>2]=a[e+208>>2],a[e+20>>2]=w,w=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=w,w=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=w,oA(A,e+16|0,e),A=a[e+192>>2],w=a[e+196>>2],k=a[e+200>>2],a[I+12>>2]=g^a[e+204>>2],a[I+8>>2]=k^u,a[I+4>>2]=w^l,a[I>>2]=A^d,n=e+224|0}function m(A,g){var I,C,e,B,r,t,Q,o,c,E=0,y=0;n=I=n-288|0,C=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,e=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,B=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,r=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,t=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,Q=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,o=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,c=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,A=a[g+124>>2],a[I+280>>2]=a[g+120>>2],a[I+284>>2]=A,A=a[g+116>>2],a[I+272>>2]=a[g+112>>2],a[I+276>>2]=A,A=a[g+108>>2],a[I+248>>2]=a[g+104>>2],a[I+252>>2]=A,A=a[g+100>>2],a[I+240>>2]=a[g+96>>2],a[I+244>>2]=A,A=a[g+124>>2],a[I+232>>2]=a[g+120>>2],a[I+236>>2]=A,A=a[g+116>>2],a[I+224>>2]=a[g+112>>2],a[I+228>>2]=A,oA(y=I+256|0,I+240|0,I+224|0),A=a[I+268>>2],a[g+120>>2]=a[I+264>>2],a[g+124>>2]=A,A=a[I+260>>2],a[g+112>>2]=a[I+256>>2],a[g+116>>2]=A,A=a[g+92>>2],a[I+216>>2]=a[g+88>>2],a[I+220>>2]=A,A=a[g+84>>2],a[I+208>>2]=a[g+80>>2],a[I+212>>2]=A,A=a[g+108>>2],a[I+200>>2]=a[g+104>>2],a[I+204>>2]=A,A=a[g+100>>2],a[I+192>>2]=a[g+96>>2],a[I+196>>2]=A,oA(y,I+208|0,I+192|0),A=a[I+268>>2],a[g+104>>2]=a[I+264>>2],a[g+108>>2]=A,A=a[I+260>>2],a[g+96>>2]=a[I+256>>2],a[g+100>>2]=A,A=a[g+76>>2],a[I+184>>2]=a[g+72>>2],a[I+188>>2]=A,E=a[4+(A=g- -64|0)>>2],a[I+176>>2]=a[A>>2],a[I+180>>2]=E,E=a[g+92>>2],a[I+168>>2]=a[g+88>>2],a[I+172>>2]=E,E=a[g+84>>2],a[I+160>>2]=a[g+80>>2],a[I+164>>2]=E,oA(y,I+176|0,I+160|0),E=a[I+268>>2],a[g+88>>2]=a[I+264>>2],a[g+92>>2]=E,E=a[I+260>>2],a[g+80>>2]=a[I+256>>2],a[g+84>>2]=E,E=a[g+60>>2],a[I+152>>2]=a[g+56>>2],a[I+156>>2]=E,E=a[g+52>>2],a[I+144>>2]=a[g+48>>2],a[I+148>>2]=E,E=a[g+76>>2],a[I+136>>2]=a[g+72>>2],a[I+140>>2]=E,E=a[A+4>>2],a[I+128>>2]=a[A>>2],a[I+132>>2]=E,oA(y,I+144|0,I+128|0),E=a[I+268>>2],a[g+72>>2]=a[I+264>>2],a[g+76>>2]=E,E=a[I+260>>2],a[A>>2]=a[I+256>>2],a[A+4>>2]=E,E=a[g+44>>2],a[I+120>>2]=a[g+40>>2],a[I+124>>2]=E,E=a[g+36>>2],a[I+112>>2]=a[g+32>>2],a[I+116>>2]=E,E=a[g+60>>2],a[I+104>>2]=a[g+56>>2],a[I+108>>2]=E,E=a[g+52>>2],a[I+96>>2]=a[g+48>>2],a[I+100>>2]=E,oA(y,I+112|0,I+96|0),E=a[I+268>>2],a[g+56>>2]=a[I+264>>2],a[g+60>>2]=E,E=a[I+260>>2],a[g+48>>2]=a[I+256>>2],a[g+52>>2]=E,E=a[g+28>>2],a[I+88>>2]=a[g+24>>2],a[I+92>>2]=E,E=a[g+20>>2],a[I+80>>2]=a[g+16>>2],a[I+84>>2]=E,E=a[g+44>>2],a[I+72>>2]=a[g+40>>2],a[I+76>>2]=E,E=a[g+36>>2],a[I+64>>2]=a[g+32>>2],a[I+68>>2]=E,oA(y,I+80|0,I- -64|0),E=a[I+268>>2],a[g+40>>2]=a[I+264>>2],a[g+44>>2]=E,E=a[I+260>>2],a[g+32>>2]=a[I+256>>2],a[g+36>>2]=E,E=a[g+12>>2],a[I+56>>2]=a[g+8>>2],a[I+60>>2]=E,E=a[g+4>>2],a[I+48>>2]=a[g>>2],a[I+52>>2]=E,E=a[g+28>>2],a[I+40>>2]=a[g+24>>2],a[I+44>>2]=E,E=a[g+20>>2],a[I+32>>2]=a[g+16>>2],a[I+36>>2]=E,oA(y,I+48|0,I+32|0),E=a[I+268>>2],a[g+24>>2]=a[I+264>>2],a[g+28>>2]=E,E=a[I+260>>2],a[g+16>>2]=a[I+256>>2],a[g+20>>2]=E,E=a[I+284>>2],a[I+24>>2]=a[I+280>>2],a[I+28>>2]=E,E=a[I+276>>2],a[I+16>>2]=a[I+272>>2],a[I+20>>2]=E,E=a[g+12>>2],a[I+8>>2]=a[g+8>>2],a[I+12>>2]=E,E=a[g+4>>2],a[I>>2]=a[g>>2],a[I+4>>2]=E,oA(y,I+16|0,I),y=a[I+268>>2],a[g+8>>2]=a[I+264>>2],a[g+12>>2]=y,y=a[I+260>>2],a[g>>2]=a[I+256>>2],a[g+4>>2]=y,a[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^o,a[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^Q,a[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^t,a[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^c,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^r,a[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^B,a[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^e,a[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^C,n=I+288|0}function P(A,g,I,C){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k=0,d=0,l=0,u=0;n=e=n-240|0,a[e+200>>2]=0,a[e+204>>2]=0,a[e+192>>2]=0,a[e+196>>2]=0,OA(d=e+192|0,g,I),l=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,u=i[0|(g=C- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,k=i[C+80|0]|i[C+81|0]<<8|i[C+82|0]<<16|i[C+83|0]<<24,B=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24,r=i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24,t=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,Q=i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24,o=i[C+84|0]|i[C+85|0]<<8|i[C+86|0]<<16|i[C+87|0]<<24,c=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,E=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,y=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,_=i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24,h=i[C+88|0]|i[C+89|0]<<8|i[C+90|0]<<16|i[C+91|0]<<24,s=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,p=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24,f=a[e+192>>2],D=a[e+196>>2],w=a[e+200>>2],a[e+204>>2]=(i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24)&(i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24)^(i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24)^(i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24)^a[e+204>>2]^(i[C+92|0]|i[C+93|0]<<8|i[C+94|0]<<16|i[C+95|0]<<24),a[e+200>>2]=s&p^h^w^_^y,a[e+196>>2]=c&E^o^D^Q^t,a[e+192>>2]=B&r^l^u^k^f,VA(I+d|0,0,16-I|0),OA(A,d,I),I=a[e+192>>2],d=a[e+196>>2],l=a[e+200>>2],u=a[e+204>>2],A=a[C+92>>2],a[e+232>>2]=a[C+88>>2],a[e+236>>2]=A,A=a[C+84>>2],a[e+224>>2]=a[C+80>>2],a[e+228>>2]=A,A=a[C+76>>2],a[e+184>>2]=a[C+72>>2],a[e+188>>2]=A,A=a[g+4>>2],a[e+176>>2]=a[g>>2],a[e+180>>2]=A,A=a[C+92>>2],a[e+168>>2]=a[C+88>>2],a[e+172>>2]=A,A=a[C+84>>2],a[e+160>>2]=a[C+80>>2],a[e+164>>2]=A,oA(A=e+208|0,e+176|0,e+160|0),k=a[e+220>>2],a[C+88>>2]=a[e+216>>2],a[C+92>>2]=k,k=a[e+212>>2],a[C+80>>2]=a[e+208>>2],a[C+84>>2]=k,k=a[C+60>>2],a[e+152>>2]=a[C+56>>2],a[e+156>>2]=k,k=a[C+52>>2],a[e+144>>2]=a[C+48>>2],a[e+148>>2]=k,k=a[C+76>>2],a[e+136>>2]=a[C+72>>2],a[e+140>>2]=k,k=a[g+4>>2],a[e+128>>2]=a[g>>2],a[e+132>>2]=k,oA(A,e+144|0,e+128|0),k=a[e+220>>2],a[C+72>>2]=a[e+216>>2],a[C+76>>2]=k,k=a[e+212>>2],a[g>>2]=a[e+208>>2],a[g+4>>2]=k,g=a[C+44>>2],a[e+120>>2]=a[C+40>>2],a[e+124>>2]=g,g=a[C+36>>2],a[e+112>>2]=a[C+32>>2],a[e+116>>2]=g,g=a[C+60>>2],a[e+104>>2]=a[C+56>>2],a[e+108>>2]=g,g=a[C+52>>2],a[e+96>>2]=a[C+48>>2],a[e+100>>2]=g,oA(A,e+112|0,e+96|0),g=a[e+220>>2],a[C+56>>2]=a[e+216>>2],a[C+60>>2]=g,g=a[e+212>>2],a[C+48>>2]=a[e+208>>2],a[C+52>>2]=g,g=a[C+28>>2],a[e+88>>2]=a[C+24>>2],a[e+92>>2]=g,g=a[C+20>>2],a[e+80>>2]=a[C+16>>2],a[e+84>>2]=g,g=a[C+44>>2],a[e+72>>2]=a[C+40>>2],a[e+76>>2]=g,g=a[C+36>>2],a[e+64>>2]=a[C+32>>2],a[e+68>>2]=g,oA(A,e+80|0,e- -64|0),g=a[e+220>>2],a[C+40>>2]=a[e+216>>2],a[C+44>>2]=g,g=a[e+212>>2],a[C+32>>2]=a[e+208>>2],a[C+36>>2]=g,g=a[C+12>>2],a[e+56>>2]=a[C+8>>2],a[e+60>>2]=g,g=a[C+4>>2],a[e+48>>2]=a[C>>2],a[e+52>>2]=g,g=a[C+28>>2],a[e+40>>2]=a[C+24>>2],a[e+44>>2]=g,g=a[C+20>>2],a[e+32>>2]=a[C+16>>2],a[e+36>>2]=g,oA(A,e+48|0,e+32|0),g=a[e+220>>2],a[C+24>>2]=a[e+216>>2],a[C+28>>2]=g,g=a[e+212>>2],a[C+16>>2]=a[e+208>>2],a[C+20>>2]=g,g=a[e+236>>2],a[e+24>>2]=a[e+232>>2],a[e+28>>2]=g,g=a[e+228>>2],a[e+16>>2]=a[e+224>>2],a[e+20>>2]=g,g=a[C+12>>2],a[e+8>>2]=a[C+8>>2],a[e+12>>2]=g,g=a[C+4>>2],a[e>>2]=a[C>>2],a[e+4>>2]=g,oA(A,e+16|0,e),A=a[e+208>>2],g=a[e+212>>2],k=a[e+216>>2],a[C+12>>2]=u^a[e+220>>2],a[C+8>>2]=k^l,a[C+4>>2]=g^d,a[C>>2]=A^I,n=e+240|0}function R(A,g,I){var e,r=0,t=0,Q=0,o=0,c=0;n=e=n+-64|0;A:{if((I-65&255)>>>0>191){if(t=-1,!(i[A+80|0]|i[A+81|0]<<8|i[A+82|0]<<16|i[A+83|0]<<24|i[A+84|0]|i[A+85|0]<<8|i[A+86|0]<<16|i[A+87|0]<<24)){if((Q=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)>>>0>=129){if(o=r=i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24,r=(Q=128+(t=i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)|0)>>>0<128?r+1|0:r,C[A+64|0]=Q,C[A+65|0]=Q>>>8,C[A+66|0]=Q>>>16,C[A+67|0]=Q>>>24,C[A+68|0]=r,C[A+69|0]=r>>>8,C[A+70|0]=r>>>16,C[A+71|0]=r>>>24,r=i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24,r=(c=t=-1==(0|o)&t>>>0>4294967167)>>>0>(t=t+(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)|0)>>>0?r+1|0:r,C[A+72|0]=t,C[A+73|0]=t>>>8,C[A+74|0]=t>>>16,C[A+75|0]=t>>>24,C[A+76|0]=r,C[A+77|0]=r>>>8,C[A+78|0]=r>>>16,C[A+79|0]=r>>>24,s(A,r=A+96|0),t=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)-128|0,C[A+352|0]=t,C[A+353|0]=t>>>8,C[A+354|0]=t>>>16,C[A+355|0]=t>>>24,t>>>0>=129)break A;OA(r,A+224|0,t),Q=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24}t=c=i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24,t=(o=Q+(r=i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)|0)>>>0<Q>>>0?t+1|0:t,C[A+64|0]=o,C[A+65|0]=o>>>8,C[A+66|0]=o>>>16,C[A+67|0]=o>>>24,C[A+68|0]=t,C[A+69|0]=t>>>8,C[A+70|0]=t>>>16,C[A+71|0]=t>>>24,t=(0|t)==(0|c)&r>>>0>o>>>0|t>>>0<c>>>0,r=i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24,r=(c=t)>>>0>(t=t+(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)|0)>>>0?r+1|0:r,C[A+72|0]=t,C[A+73|0]=t>>>8,C[A+74|0]=t>>>16,C[A+75|0]=t>>>24,C[A+76|0]=r,C[A+77|0]=r>>>8,C[A+78|0]=r>>>16,C[A+79|0]=r>>>24,i[A+356|0]&&(C[A+88|0]=255,C[A+89|0]=255,C[A+90|0]=255,C[A+91|0]=255,C[A+92|0]=255,C[A+93|0]=255,C[A+94|0]=255,C[A+95|0]=255),C[A+80|0]=255,C[A+81|0]=255,C[A+82|0]=255,C[A+83|0]=255,C[A+84|0]=255,C[A+85|0]=255,C[A+86|0]=255,C[A+87|0]=255,VA((t=A+96|0)+Q|0,0,256-Q|0),s(A,t),r=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[e>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[e+4>>2]=r,r=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[e+8>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[e+12>>2]=r,r=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[e+16>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[e+20>>2]=r,r=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[e+24>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[e+28>>2]=r,r=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[e+32>>2]=i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24,a[e+36>>2]=r,r=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24,a[e+40>>2]=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[e+44>>2]=r,r=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24,a[e+48>>2]=i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24,a[e+52>>2]=r,r=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24,a[e+56>>2]=i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24,a[e+60>>2]=r,OA(g,e,I),dg(A,64),dg(t,256),t=0}return n=e- -64|0,t}ig(),B()}E(1268,1130,306,1074),B()}function L(A,g){var I,e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w=0,k=0,l=0,u=0,v=0,S=0,b=0;for(n=I=n-320|0,V(e=A+40|0,g),a[A+84>>2]=0,a[A+88>>2]=0,a[A+80>>2]=1,a[A+92>>2]=0,a[A+96>>2]=0,a[A+100>>2]=0,a[A+104>>2]=0,a[A+108>>2]=0,a[A+112>>2]=0,a[A+116>>2]=0,K(S=I+240|0,e),d(u=I+192|0,S,1328),b=-1,B=a[I+240>>2]-1|0,a[I+240>>2]=B,a[I+192>>2]=a[I+192>>2]+1,r=a[I+244>>2],t=a[I+248>>2],Q=a[I+252>>2],o=a[I+256>>2],c=a[I+260>>2],E=a[I+264>>2],y=a[I+268>>2],_=a[I+272>>2],h=a[I+276>>2],K(v=I+144|0,u),d(v,v,u),K(A,v),d(A,A,u),d(A,A,S),n=k=n-144|0,K(l=k+96|0,A),K(w=k+48|0,l),K(w,w),d(w,A,w),d(l,l,w),K(l,l),d(l,w,l),K(w,l),K(w,w),K(w,w),K(w,w),K(w,w),d(l,w,l),K(w,l),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(w,w,l),K(k,w),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),d(w,k,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(l,w,l),K(w,l),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(w,w,l),K(k,w),w=1;K(k,k),100!=(0|(w=w+1|0)););d(w=k+48|0,k,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(l=k+96|0,w,l),K(l,l),K(l,l),d(A,l,A),n=k+144|0,d(A,A,v),d(A,A,S),K(w=I+96|0,A),d(w,w,u),w=a[I+132>>2],a[I+84>>2]=w-h,k=a[I+128>>2],a[I+80>>2]=k-_,l=a[I+124>>2],a[I+76>>2]=l-y,u=a[I+120>>2],a[I+72>>2]=u-E,v=a[I+116>>2],a[I+68>>2]=v-c,S=a[I+112>>2],a[I+64>>2]=S-o,s=a[I+108>>2],a[I+60>>2]=s-Q,p=a[I+104>>2],a[I+56>>2]=p-t,f=a[I+100>>2],a[I+52>>2]=f-r,D=a[I+96>>2],a[I+48>>2]=D-B,yA(I,I+48|0);A:{if(!kA(I,32)){if(a[I+36>>2]=w+h,a[I+32>>2]=k+_,a[I+28>>2]=l+y,a[I+24>>2]=u+E,a[I+20>>2]=v+c,a[I+16>>2]=S+o,a[I+12>>2]=Q+s,a[I+8>>2]=t+p,a[I+4>>2]=r+f,a[I>>2]=B+D,yA(w=I+288|0,I),!kA(w,32))break A;d(A,A,1376)}yA(I+288|0,A),(1&C[I+288|0])==(i[g+31|0]>>>7|0)&&(a[A>>2]=0-a[A>>2],a[A+36>>2]=0-a[A+36>>2],a[A+32>>2]=0-a[A+32>>2],a[A+28>>2]=0-a[A+28>>2],a[A+24>>2]=0-a[A+24>>2],a[A+20>>2]=0-a[A+20>>2],a[A+16>>2]=0-a[A+16>>2],a[A+12>>2]=0-a[A+12>>2],a[A+8>>2]=0-a[A+8>>2],a[A+4>>2]=0-a[A+4>>2]),d(A+120|0,A,e),b=0}return n=I+320|0,b}function T(A,g,I){var e,B,a,r,t,Q,o,c,E,y,_,n,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0;for(D=1634760805,s=e=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24,w=B=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,k=a=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,d=r=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,S=857760878,l=t=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,p=Q=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,v=o=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,M=c=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,g=2036477234,f=E=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,h=1797285236,F=y=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,b=_=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,I=n=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24;u=Ig(s+S|0,7)^M,N=Ig(u+S|0,9)^b,d=Ig(I+D|0,7)^d,K=Ig(d+D|0,9)^v,H=Ig(K+d|0,13)^I,k=Ig(h+f|0,7)^k,Y=Ig(k+h|0,9)^p,v=Ig(k+Y|0,13)^f,f=Ig(Y+v|0,18)^h,p=Ig(g+l|0,7)^F,I=H^Ig(f+p|0,7),b=N^Ig(I+f|0,9),F=Ig(I+b|0,13)^p,h=Ig(b+F|0,18)^f,w=Ig(g+p|0,9)^w,l=Ig(w+p|0,13)^l,g=Ig(l+w|0,18)^g,f=Ig(g+u|0,7)^v,v=Ig(f+g|0,9)^K,M=Ig(f+v|0,13)^u,g=Ig(v+M|0,18)^g,u=Ig(u+N|0,13)^s,s=Ig(u+N|0,18)^S,l=Ig(s+d|0,7)^l,p=Ig(l+s|0,9)^Y,d=Ig(p+l|0,13)^d,S=Ig(p+d|0,18)^s,D=Ig(K+H|0,18)^D,s=Ig(D+k|0,7)^u,w=Ig(s+D|0,9)^w,k=Ig(s+w|0,13)^k,D=Ig(w+k|0,18)^D,u=G>>>0<18,G=G+2|0,u;);h=h+1797285236|0,C[A+60|0]=h,C[A+61|0]=h>>>8,C[A+62|0]=h>>>16,C[A+63|0]=h>>>24,h=F+y|0,C[A+56|0]=h,C[A+57|0]=h>>>8,C[A+58|0]=h>>>16,C[A+59|0]=h>>>24,h=b+_|0,C[A+52|0]=h,C[A+53|0]=h>>>8,C[A+54|0]=h>>>16,C[A+55|0]=h>>>24,I=I+n|0,C[A+48|0]=I,C[A+49|0]=I>>>8,C[A+50|0]=I>>>16,C[A+51|0]=I>>>24,I=f+E|0,C[A+44|0]=I,C[A+45|0]=I>>>8,C[A+46|0]=I>>>16,C[A+47|0]=I>>>24,g=g+2036477234|0,C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,g=M+c|0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,g=v+o|0,C[A+32|0]=g,C[A+33|0]=g>>>8,C[A+34|0]=g>>>16,C[A+35|0]=g>>>24,g=p+Q|0,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=l+t|0,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=S+857760878|0,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=d+r|0,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,g=k+a|0,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=w+B|0,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=s+e|0,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=D+1634760805|0,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24}function q(A,g,I,C){var e=0,B=0,r=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0;if(s=a[A+36>>2],_=a[A+32>>2],n=a[A+28>>2],E=a[A+24>>2],y=a[A+20>>2],!C&I>>>0>=16|C)for(S=!i[A+80|0]<<24,f=a[A+4>>2],b=t(f,5),w=a[A+8>>2],u=t(w,5),d=a[A+12>>2],l=t(d,5),v=a[A+16>>2],k=t(v,5),D=a[A>>2];e=GA(r=((i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108863)+E|0,0,d,0),o=h,y=(Q=GA(E=(67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))+y|0,0,v,0))+e|0,e=h+o|0,e=Q>>>0>y>>>0?e+1|0:e,o=GA(n=((i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67108863)+n|0,0,w,0),e=h+e|0,e=o>>>0>(y=o+y|0)>>>0?e+1|0:e,o=GA(_=((i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6|0)+_|0,0,f,0),e=h+e|0,e=o>>>0>(y=o+y|0)>>>0?e+1|0:e,o=GA(s=s+S+((i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)>>>8)|0,0,D,0),e=h+e|0,M=y=o+y|0,y=o>>>0>y>>>0?e+1|0:e,e=GA(r,0,w,0),o=h,Q=GA(E,0,d,0),B=h+o|0,B=(e=Q+e|0)>>>0<Q>>>0?B+1|0:B,o=(Q=GA(n,0,f,0))+e|0,e=h+B|0,e=Q>>>0>o>>>0?e+1|0:e,Q=GA(_,0,D,0),e=h+e|0,e=Q>>>0>(o=Q+o|0)>>>0?e+1|0:e,Q=GA(s,0,k,0),e=h+e|0,F=o=Q+o|0,o=Q>>>0>o>>>0?e+1|0:e,e=GA(r,0,f,0),c=h,Q=(B=GA(E,0,w,0))+e|0,e=h+c|0,e=B>>>0>Q>>>0?e+1|0:e,c=GA(n,0,D,0),B=h+e|0,B=(Q=c+Q|0)>>>0<c>>>0?B+1|0:B,c=GA(_,0,k,0),e=h+B|0,e=(Q=c+Q|0)>>>0<c>>>0?e+1|0:e,c=GA(s,0,l,0),e=h+e|0,N=Q=c+Q|0,Q=Q>>>0<c>>>0?e+1|0:e,e=GA(r,0,D,0),B=h,c=(p=GA(E,0,f,0))+e|0,e=h+B|0,e=c>>>0<p>>>0?e+1|0:e,B=GA(n,0,k,0),e=h+e|0,e=B>>>0>(c=B+c|0)>>>0?e+1|0:e,p=GA(_,0,l,0),B=h+e|0,B=(c=p+c|0)>>>0<p>>>0?B+1|0:B,p=GA(s,0,u,0),e=h+B|0,e=(c=p+c|0)>>>0<p>>>0?e+1|0:e,p=c,c=e,e=GA(r,0,k,0),B=h,r=(E=GA(E,0,D,0))+e|0,e=h+B|0,e=r>>>0<E>>>0?e+1|0:e,E=GA(n,0,l,0),e=h+e|0,e=(r=E+r|0)>>>0<E>>>0?e+1|0:e,E=GA(_,0,u,0),e=h+e|0,e=(r=E+r|0)>>>0<E>>>0?e+1|0:e,E=GA(s,0,b,0),B=h+e|0,B=(r=E+r|0)>>>0<E>>>0?B+1|0:B,E=r,e=c,e=(r=(n=(67108863&B)<<6|r>>>26)+p|0)>>>0<n>>>0?e+1|0:e,n=r,_=(67108863&e)<<6|r>>>26,e=Q,e=(r=_+N|0)>>>0<_>>>0?e+1|0:e,_=r,B=o,s=e=(r=(67108863&e)<<6|r>>>26)+F|0,o=(67108863&(B=e>>>0<r>>>0?B+1|0:B))<<6|e>>>26,e=y,E=(67108863&n)+((e=t((67108863&((r=o+M|0)>>>0<o>>>0?e+1:e))<<6|r>>>26,5)+(67108863&E)|0)>>>26|0)|0,n=67108863&_,_=67108863&s,s=67108863&r,y=67108863&e,g=g+16|0,!(C=C-(I>>>0<16)|0)&(I=I-16|0)>>>0>15|C;);a[A+20>>2]=y,a[A+36>>2]=s,a[A+32>>2]=_,a[A+28>>2]=n,a[A+24>>2]=E}function z(A,g,I,e){A|=0,g|=0;var a=0;return a=-1,(e|=0)-65>>>0<4294967232|(I|=0)>>>0>64||(I&&g?(n=a=n-128|0,!g|((e&=255)-65&255)>>>0<=191|((I&=255)-65&255)>>>0<=191?(ig(),B()):(VA(A- -64|0,0,293),C[A+56|0]=121,C[A+57|0]=33,C[A+58|0]=126,C[A+59|0]=19,C[A+60|0]=25,C[A+61|0]=205,C[A+62|0]=224,C[A+63|0]=91,C[A+48|0]=107,C[A+49|0]=189,C[A+50|0]=65,C[A+51|0]=251,C[A+52|0]=171,C[A+53|0]=217,C[A+54|0]=131,C[A+55|0]=31,C[A+40|0]=31,C[A+41|0]=108,C[A+42|0]=62,C[A+43|0]=43,C[A+44|0]=140,C[A+45|0]=104,C[A+46|0]=5,C[A+47|0]=155,C[A+32|0]=209,C[A+33|0]=130,C[A+34|0]=230,C[A+35|0]=173,C[A+36|0]=127,C[A+37|0]=82,C[A+38|0]=14,C[A+39|0]=81,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,e=-222443256^(I<<8|e),C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,e=I>>>24^1779033703,C[A+4|0]=e,C[A+5|0]=e>>>8,C[A+6|0]=e>>>16,C[A+7|0]=e>>>24,I=OA(VA(a,0,128),g,I),OA(A+96|0,I,128),g=128+(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)|0,C[A+352|0]=g,C[A+353|0]=g>>>8,C[A+354|0]=g>>>16,C[A+355|0]=g>>>24,dg(I,128),n=I+128|0)):(((g=255&e)-65&255)>>>0<=191&&(ig(),B()),VA(A- -64|0,0,293),C[A+56|0]=121,C[A+57|0]=33,C[A+58|0]=126,C[A+59|0]=19,C[A+60|0]=25,C[A+61|0]=205,C[A+62|0]=224,C[A+63|0]=91,C[A+48|0]=107,C[A+49|0]=189,C[A+50|0]=65,C[A+51|0]=251,C[A+52|0]=171,C[A+53|0]=217,C[A+54|0]=131,C[A+55|0]=31,C[A+40|0]=31,C[A+41|0]=108,C[A+42|0]=62,C[A+43|0]=43,C[A+44|0]=140,C[A+45|0]=104,C[A+46|0]=5,C[A+47|0]=155,C[A+32|0]=209,C[A+33|0]=130,C[A+34|0]=230,C[A+35|0]=173,C[A+36|0]=127,C[A+37|0]=82,C[A+38|0]=14,C[A+39|0]=81,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,g^=-222443256,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=103,C[A+5|0]=230,C[A+6|0]=9,C[A+7|0]=106),a=0),0|a}function j(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0;_=a[g+4>>2],y=a[g+44>>2],h=a[g+8>>2],s=a[g+48>>2],p=a[g+12>>2],f=a[g+52>>2],D=a[g+16>>2],w=a[g+56>>2],k=a[g+20>>2],l=a[g+60>>2],u=a[g+24>>2],v=a[(n=g- -64|0)>>2],S=a[g+28>>2],b=a[g+68>>2],M=a[g+32>>2],F=a[g+72>>2],N=a[g+36>>2],K=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=N+K,a[A+32>>2]=M+F,a[A+28>>2]=S+b,a[A+24>>2]=u+v,a[A+20>>2]=k+l,a[A+16>>2]=D+w,a[A+12>>2]=p+f,a[A+8>>2]=h+s,a[A+4>>2]=y+_,y=a[g+4>>2],h=a[g+44>>2],s=a[g+8>>2],p=a[g+48>>2],f=a[g+12>>2],D=a[g+52>>2],w=a[g+16>>2],k=a[g+56>>2],l=a[g+20>>2],u=a[g+60>>2],v=a[g+24>>2],n=a[n>>2],_=a[g+28>>2],S=a[g+68>>2],b=a[g+32>>2],M=a[g+72>>2],F=a[g>>2],N=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=M-b,a[A+68>>2]=S-_,a[(_=A- -64|0)>>2]=n-v,a[A+60>>2]=u-l,a[A+56>>2]=k-w,a[A+52>>2]=D-f,a[A+48>>2]=p-s,a[A+44>>2]=h-y,a[A+40>>2]=N-F,d(A+80|0,A,I),d(y=A+40|0,y,I+40|0),d(A+120|0,I+120|0,g+120|0),d(A,g+80|0,I+80|0),N=a[A+4>>2],K=a[A+8>>2],B=a[A+12>>2],i=a[A+16>>2],r=a[A+20>>2],t=a[A+24>>2],Q=a[A+28>>2],o=a[A+32>>2],c=a[A+36>>2],g=a[A+44>>2],I=a[A+84>>2],y=a[A+48>>2],h=a[A+88>>2],s=a[A+52>>2],p=a[A+92>>2],f=a[A+56>>2],D=a[A+96>>2],w=a[A+60>>2],k=a[A+100>>2],l=a[_>>2],u=a[A+104>>2],n=a[A+68>>2],v=a[A+108>>2],S=a[A+72>>2],b=a[A+112>>2],E=a[A>>2],M=a[A+40>>2],F=a[A+80>>2],C=a[A+76>>2],e=a[A+116>>2],a[A+76>>2]=C+e,a[A+72>>2]=S+b,a[A+68>>2]=n+v,a[_>>2]=l+u,a[A+60>>2]=w+k,a[A+56>>2]=f+D,a[A+52>>2]=s+p,a[A+48>>2]=y+h,a[A+44>>2]=g+I,a[A+40>>2]=M+F,a[A+36>>2]=e-C,a[A+32>>2]=b-S,a[A+28>>2]=v-n,a[A+24>>2]=u-l,a[A+20>>2]=k-w,a[A+16>>2]=D-f,a[A+12>>2]=p-s,a[A+8>>2]=h-y,a[A+4>>2]=I-g,a[A>>2]=F-M,g=c<<1,I=a[A+156>>2],a[A+156>>2]=g-I,_=o<<1,y=a[A+152>>2],a[A+152>>2]=_-y,h=Q<<1,s=a[A+148>>2],a[A+148>>2]=h-s,p=t<<1,f=a[A+144>>2],a[A+144>>2]=p-f,D=r<<1,w=a[A+140>>2],a[A+140>>2]=D-w,k=i<<1,l=a[A+136>>2],a[A+136>>2]=k-l,u=B<<1,n=a[A+132>>2],a[A+132>>2]=u-n,v=K<<1,S=a[A+128>>2],a[A+128>>2]=v-S,b=N<<1,M=a[A+124>>2],a[A+124>>2]=b-M,F=E<<1,N=a[A+120>>2],a[A+120>>2]=F-N,a[A+112>>2]=y+_,a[A+108>>2]=h+s,a[A+104>>2]=p+f,a[A+100>>2]=D+w,a[A+96>>2]=k+l,a[A+92>>2]=u+n,a[A+88>>2]=v+S,a[A+84>>2]=b+M,a[A+80>>2]=F+N,a[A+116>>2]=g+I}function X(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0;_=a[g+4>>2],y=a[g+44>>2],h=a[g+8>>2],s=a[g+48>>2],p=a[g+12>>2],f=a[g+52>>2],D=a[g+16>>2],w=a[g+56>>2],k=a[g+20>>2],l=a[g+60>>2],u=a[g+24>>2],v=a[(n=g- -64|0)>>2],S=a[g+28>>2],b=a[g+68>>2],M=a[g+32>>2],F=a[g+72>>2],N=a[g+36>>2],K=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=N+K,a[A+32>>2]=M+F,a[A+28>>2]=S+b,a[A+24>>2]=u+v,a[A+20>>2]=k+l,a[A+16>>2]=D+w,a[A+12>>2]=p+f,a[A+8>>2]=h+s,a[A+4>>2]=y+_,y=a[g+4>>2],h=a[g+44>>2],s=a[g+8>>2],p=a[g+48>>2],f=a[g+12>>2],D=a[g+52>>2],w=a[g+16>>2],k=a[g+56>>2],l=a[g+20>>2],u=a[g+60>>2],v=a[g+24>>2],n=a[n>>2],_=a[g+28>>2],S=a[g+68>>2],b=a[g+32>>2],M=a[g+72>>2],F=a[g>>2],N=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=M-b,a[A+68>>2]=S-_,a[(_=A- -64|0)>>2]=n-v,a[A+60>>2]=u-l,a[A+56>>2]=k-w,a[A+52>>2]=D-f,a[A+48>>2]=p-s,a[A+44>>2]=h-y,a[A+40>>2]=N-F,d(A+80|0,A,I+40|0),d(y=A+40|0,y,I),d(A+120|0,I+120|0,g+120|0),d(A,g+80|0,I+80|0),N=a[A+4>>2],K=a[A+8>>2],B=a[A+12>>2],i=a[A+16>>2],r=a[A+20>>2],t=a[A+24>>2],Q=a[A+28>>2],o=a[A+32>>2],c=a[A+36>>2],g=a[A+44>>2],I=a[A+84>>2],y=a[A+48>>2],h=a[A+88>>2],s=a[A+52>>2],p=a[A+92>>2],f=a[A+56>>2],D=a[A+96>>2],w=a[A+60>>2],k=a[A+100>>2],l=a[_>>2],u=a[A+104>>2],n=a[A+68>>2],v=a[A+108>>2],S=a[A+72>>2],b=a[A+112>>2],E=a[A>>2],M=a[A+40>>2],F=a[A+80>>2],C=a[A+76>>2],e=a[A+116>>2],a[A+76>>2]=C+e,a[A+72>>2]=S+b,a[A+68>>2]=n+v,a[_>>2]=l+u,a[A+60>>2]=w+k,a[A+56>>2]=f+D,a[A+52>>2]=s+p,a[A+48>>2]=y+h,a[A+44>>2]=g+I,a[A+40>>2]=M+F,a[A+36>>2]=e-C,a[A+32>>2]=b-S,a[A+28>>2]=v-n,a[A+24>>2]=u-l,a[A+20>>2]=k-w,a[A+16>>2]=D-f,a[A+12>>2]=p-s,a[A+8>>2]=h-y,a[A+4>>2]=I-g,a[A>>2]=F-M,g=a[A+156>>2],I=c<<1,a[A+156>>2]=g+I,_=a[A+152>>2],y=o<<1,a[A+152>>2]=_+y,h=a[A+148>>2],s=Q<<1,a[A+148>>2]=h+s,p=a[A+144>>2],f=t<<1,a[A+144>>2]=p+f,D=a[A+140>>2],w=r<<1,a[A+140>>2]=D+w,k=a[A+136>>2],l=i<<1,a[A+136>>2]=k+l,u=a[A+132>>2],n=B<<1,a[A+132>>2]=u+n,v=a[A+128>>2],S=K<<1,a[A+128>>2]=v+S,b=a[A+124>>2],M=N<<1,a[A+124>>2]=b+M,F=a[A+120>>2],N=E<<1,a[A+120>>2]=F+N,a[A+112>>2]=y-_,a[A+108>>2]=s-h,a[A+104>>2]=f-p,a[A+100>>2]=w-D,a[A+96>>2]=l-k,a[A+92>>2]=n-u,a[A+88>>2]=S-v,a[A+84>>2]=M-b,a[A+80>>2]=N-F,a[A+116>>2]=I-g}function O(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0;_=a[g+4>>2],y=a[g+44>>2],h=a[g+8>>2],s=a[g+48>>2],p=a[g+12>>2],f=a[g+52>>2],D=a[g+16>>2],w=a[g+56>>2],k=a[g+20>>2],l=a[g+60>>2],u=a[g+24>>2],v=a[(n=g- -64|0)>>2],S=a[g+28>>2],b=a[g+68>>2],M=a[g+32>>2],F=a[g+72>>2],N=a[g+36>>2],K=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=N+K,a[A+32>>2]=M+F,a[A+28>>2]=S+b,a[A+24>>2]=u+v,a[A+20>>2]=k+l,a[A+16>>2]=D+w,a[A+12>>2]=p+f,a[A+8>>2]=h+s,a[A+4>>2]=y+_,y=a[g+4>>2],h=a[g+44>>2],s=a[g+8>>2],p=a[g+48>>2],f=a[g+12>>2],D=a[g+52>>2],w=a[g+16>>2],k=a[g+56>>2],l=a[g+20>>2],u=a[g+60>>2],v=a[g+24>>2],n=a[n>>2],_=a[g+28>>2],S=a[g+68>>2],b=a[g+32>>2],M=a[g+72>>2],F=a[g>>2],N=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=M-b,a[A+68>>2]=S-_,a[(_=A- -64|0)>>2]=n-v,a[A+60>>2]=u-l,a[A+56>>2]=k-w,a[A+52>>2]=D-f,a[A+48>>2]=p-s,a[A+44>>2]=h-y,a[A+40>>2]=N-F,d(A+80|0,A,I),d(y=A+40|0,y,I+40|0),d(A+120|0,I+80|0,g+120|0),N=a[g+84>>2],K=a[g+88>>2],B=a[g+92>>2],i=a[g+96>>2],r=a[g+100>>2],t=a[g+104>>2],Q=a[g+108>>2],o=a[g+112>>2],c=a[g+116>>2],I=a[A+44>>2],y=a[A+84>>2],h=a[A+48>>2],s=a[A+88>>2],p=a[A+52>>2],f=a[A+92>>2],D=a[A+56>>2],w=a[A+96>>2],k=a[A+60>>2],l=a[A+100>>2],u=a[_>>2],n=a[A+104>>2],v=a[A+68>>2],S=a[A+108>>2],b=a[A+72>>2],M=a[A+112>>2],E=a[g+80>>2],g=a[A+40>>2],F=a[A+80>>2],C=a[A+76>>2],e=a[A+116>>2],a[A+76>>2]=C+e,a[A+72>>2]=b+M,a[A+68>>2]=v+S,a[_>>2]=u+n,a[A+60>>2]=k+l,a[A+56>>2]=D+w,a[A+52>>2]=p+f,a[A+48>>2]=h+s,a[A+44>>2]=I+y,a[A+40>>2]=g+F,a[A+36>>2]=e-C,a[A+32>>2]=M-b,a[A+28>>2]=S-v,a[A+24>>2]=n-u,a[A+20>>2]=l-k,a[A+16>>2]=w-D,a[A+12>>2]=f-p,a[A+8>>2]=s-h,a[A+4>>2]=y-I,a[A>>2]=F-g,g=c<<1,I=a[A+156>>2],a[A+156>>2]=g-I,_=o<<1,y=a[A+152>>2],a[A+152>>2]=_-y,h=Q<<1,s=a[A+148>>2],a[A+148>>2]=h-s,p=t<<1,f=a[A+144>>2],a[A+144>>2]=p-f,D=r<<1,w=a[A+140>>2],a[A+140>>2]=D-w,k=i<<1,l=a[A+136>>2],a[A+136>>2]=k-l,u=B<<1,n=a[A+132>>2],a[A+132>>2]=u-n,v=K<<1,S=a[A+128>>2],a[A+128>>2]=v-S,b=N<<1,M=a[A+124>>2],a[A+124>>2]=b-M,F=E<<1,N=a[A+120>>2],a[A+120>>2]=F-N,a[A+112>>2]=y+_,a[A+108>>2]=h+s,a[A+104>>2]=p+f,a[A+100>>2]=D+w,a[A+96>>2]=k+l,a[A+92>>2]=u+n,a[A+88>>2]=v+S,a[A+84>>2]=b+M,a[A+80>>2]=F+N,a[A+116>>2]=g+I}function V(A,g){var I,C,e,B,r,t,Q,o,c,E,y,_,n,s,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0;n=i[g+31|0],I=i[g+30|0],C=i[g+29|0],e=i[g+6|0],B=i[g+5|0],r=i[g+4|0],t=i[g+9|0],Q=i[g+8|0],o=i[g+7|0],c=i[g+12|0],b=i[g+11|0],M=i[g+10|0],E=i[g+15|0],F=i[g+14|0],y=i[g+13|0],l=i[g+28|0],S=i[g+27|0],u=i[g+26|0],d=i[g+25|0],w=i[g+24|0],D=i[g+23|0],s=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,k=(f=i[g+21|0])<<15,f=p=f>>>17|0,v=k,v|=(k=i[g+20|0])<<7,k=(p=k>>>25|0)|f,f=(p=i[g+22|0])>>>9|0,p=p<<23|v,f|=k,_=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=0,k=p,p=(33554431&(g=(v=_+16777216|0)>>>0<16777216?1:g))<<7|v>>>25,g=(g>>>25|0)+f|0,p=(f=k=k+p|0)>>>0<p>>>0?g+1|0:g,g=(k=f+33554432|0)>>>0<33554432?p+1|0:p,a[A+24>>2]=f-(-67108864&k),p=(f=D>>>27|0)|w>>>19|d>>>11,f=D=(w=d<<21|(D=w<<13|D<<5))+(f=(67108863&(f=g))<<6|k>>>26)|0,g=p,p=(D=w+16777216|0)>>>0<16777216?g+1|0:g,a[A+28>>2]=f-(1040187392&D),f=(p=(g=p)>>>25|0)+(f=S>>>20|u>>>28|l>>>12)|0,g=f=(p=D=(g=(33554431&g)<<7|D>>>25)+(S<<12|u<<4|l<<20)|0)>>>0<g>>>0?f+1|0:f,D=(l=p+33554432|0)>>>0<33554432?g+1|0:g,a[A+32>>2]=p-(-67108864&l),f=c>>>13|(p=b>>>21|M>>>29),g=(f=(S=16777216+(b=b<<11|M<<3|c<<19)|0)>>>0<16777216?f+1|0:f)>>>25|0,f=(p=w=F<<10|y<<2|E<<18)+(w=(33554431&f)<<7|S>>>25)|0,p=g+(d=F>>>22|y>>>30|E>>>14)|0,g=p=f>>>0<w>>>0?p+1|0:p,w=((67108863&(g=(w=f+33554432|0)>>>0<33554432?g+1|0:g))<<6|(p=w)>>>26)+(u=_-(-33554432&v)|0)|0,a[A+20>>2]=w,a[A+16>>2]=f-(-67108864&p),p=B>>>18|r>>>26|e>>>10,f=(p=(u=16777216+(M=B<<14|r<<6|e<<22)|0)>>>0<16777216?p+1|0:p)>>>25|0,p=(g=w=Q<<13|o<<5|t<<21)+(w=(33554431&p)<<7|u>>>25)|0,g=f+(d=Q>>>19|o>>>27|t>>>11)|0,g=p>>>0<w>>>0?g+1|0:g,f=(d=p+33554432|0)>>>0<33554432?g+1|0:g,a[A+8>>2]=p-(-67108864&d),l=(D=(67108863&D)<<6|l>>>26)+(F=n<<18&33292288|I<<10|C<<2)|0,g=p=I>>>22|C>>>30,p=(D=F+16777216|0)>>>0<16777216?g+1|0:g,a[A+36>>2]=l-(33554432&D),f=b+((67108863&f)<<6|d>>>26)|0,a[A+12>>2]=f-(234881024&S),w=M-(2113929216&u)|0,f=GA((33554431&(g=p))<<7|D>>>25,p=g>>>25|0,19,0),g=h,f=(p=f+s|0)>>>0<f>>>0?g+1|0:g,D=((67108863&(f=(g=p+33554432|0)>>>0<33554432?f+1|0:f))<<6|g>>>26)+w|0,a[A+4>>2]=D,a[A>>2]=p-(-67108864&g)}function Z(A,g){var I,e,B,r,t=0,Q=0,o=0,c=0,E=0,y=0;for(n=I=n-480|0;o=(Q=I+288|0)+(t<<1)|0,c=i[g+t|0],C[o+1|0]=c>>>4,C[0|o]=15&c,Q=Q+((o=1|t)<<1)|0,o=i[g+o|0],C[Q+1|0]=o>>>4,C[0|Q]=15&o,32!=(0|(t=t+2|0)););for(g=0;t=8+(Q=(t=g)+i[0|(g=(I+288|0)+E|0)]|0)|0,C[0|g]=Q-(240&t),t=8+(Q=i[g+1|0]+(t<<24>>24>>4)|0)|0,C[g+1|0]=Q-(240&t),t=8+(Q=i[g+2|0]+(t<<24>>24>>4)|0)|0,C[g+2|0]=Q-(240&t),g=t<<24>>24>>4,63!=(0|(E=E+3|0)););for(C[I+351|0]=i[I+351|0]+g,a[A+32>>2]=0,a[A+36>>2]=0,a[A+24>>2]=0,a[A+28>>2]=0,a[A+16>>2]=0,a[A+20>>2]=0,a[A+8>>2]=0,a[A+12>>2]=0,a[A>>2]=0,a[A+4>>2]=0,a[A+44>>2]=0,a[A+48>>2]=0,a[A+40>>2]=1,a[A+52>>2]=0,a[A+56>>2]=0,a[A+60>>2]=0,a[A+64>>2]=0,a[A+68>>2]=0,a[A+72>>2]=0,a[A+76>>2]=0,a[A+80>>2]=1,VA(A+84|0,0,76),B=A+120|0,E=A+80|0,g=A+40|0,Q=I+208|0,e=I+168|0,o=I+248|0,t=1;rA(y=I+8|0,t>>>1|0,C[(I+288|0)+t|0]),O(c=I+128|0,A,y),d(A,c,o),d(g,e,Q),d(E,Q,o),d(B,c,e),y=t>>>0<62,t=t+2|0,y;);for(t=a[A+36>>2],a[I+392>>2]=a[A+32>>2],a[I+396>>2]=t,t=a[A+28>>2],a[I+384>>2]=a[A+24>>2],a[I+388>>2]=t,t=a[A+20>>2],a[I+376>>2]=a[A+16>>2],a[I+380>>2]=t,t=a[A+12>>2],a[I+368>>2]=a[A+8>>2],a[I+372>>2]=t,t=a[A+4>>2],a[I+360>>2]=a[A>>2],a[I+364>>2]=t,t=a[g+12>>2],a[I+408>>2]=a[g+8>>2],a[I+412>>2]=t,t=a[g+20>>2],a[I+416>>2]=a[g+16>>2],a[I+420>>2]=t,t=a[g+28>>2],a[I+424>>2]=a[g+24>>2],a[I+428>>2]=t,t=a[g+36>>2],a[I+432>>2]=a[g+32>>2],a[I+436>>2]=t,t=a[g+4>>2],a[I+400>>2]=a[g>>2],a[I+404>>2]=t,t=a[E+12>>2],a[I+448>>2]=a[E+8>>2],a[I+452>>2]=t,t=a[E+20>>2],a[I+456>>2]=a[E+16>>2],a[I+460>>2]=t,t=a[E+28>>2],a[I+464>>2]=a[E+24>>2],a[I+468>>2]=t,t=a[E+36>>2],a[I+472>>2]=a[E+32>>2],a[I+476>>2]=t,t=a[E+4>>2],a[I+440>>2]=a[E>>2],a[I+444>>2]=t,v(c,t=I+360|0),d(t,c,o),d(y=I+400|0,e,Q),d(r=I+440|0,Q,o),v(c,t),d(t,c,o),d(y,e,Q),d(r,Q,o),v(c,t),d(t,c,o),d(y,e,Q),d(r,Q,o),v(c,t),d(A,c,o),d(g,e,Q),d(E,Q,o),d(B,c,e),t=0;rA(y=I+8|0,t>>>1|0,C[(I+288|0)+t|0]),O(c=I+128|0,A,y),d(A,c,o),d(g,e,Q),d(E,Q,o),d(B,c,e),c=t>>>0<62,t=t+2|0,c;);n=I+480|0}function W(A,g,I,e){var B,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,D=0;if(n=B=n-704|0,I|e)if(r=(e<<3|I>>>29)+(t=o=a[A+76>>2])|0,Q=(E=a[A+72>>2])+(c=I<<3)|0,a[A+72>>2]=Q,r=Q>>>0<c>>>0?r+1|0:r,a[A+76>>2]=r,o=a[A+68>>2],r=(r=Q=(0|r)==(0|t)&Q>>>0<E>>>0|r>>>0<t>>>0)>>>0>(Q=Q+a[A+64>>2]|0)>>>0?o+1|0:o,Q=(c=e>>>29|0)+Q|0,a[A+64>>2]=Q,a[A+68>>2]=Q>>>0<c>>>0?r+1|0:r,Q=A+80|0,(0|e)==(0|(o=p=0-((r=0)+((c=127&((7&t)<<29|E>>>3))>>>0>128)|0)|0))&I>>>0>=(E=128-c|0)>>>0|e>>>0>o>>>0){if(t=0,o=0,!r&(127^c)>>>0>=3|r)for(D=252&E;C[(r=t+c|0)+Q|0]=i[g+t|0],C[Q+(c+(r=1|t)|0)|0]=i[g+r|0],C[Q+(c+(r=2|t)|0)|0]=i[g+r|0],C[Q+(c+(r=3|t)|0)|0]=i[g+r|0],r=o,o=(t=t+4|0)>>>0<4?r+1|0:r,r=h,h=r=(y=y+4|0)>>>0<4?r+1|0:r,(0|y)!=(0|D)|(0|s)!=(0|r););if(h=r=0,r|(y=3&E))for(;C[(r=t+c|0)+Q|0]=i[g+t|0],r=o,o=(t=t+1|0)?r:r+1|0,r=s,s=r=(_=_+1|0)?r:r+1|0,(0|y)!=(0|_)|(0|h)!=(0|r););if(f(A,Q,B,t=B+640|0),g=g+E|0,!(e=e-((I>>>0<E>>>0)+p|0)|0)&(I=I-E|0)>>>0>127|e)for(;f(A,g,B,t),g=g+128|0,!(e=e-(I>>>0<128)|0)&(I=I-128|0)>>>0>127|e;);if(I|e){if(A=3&I,_=0,s=0,t=0,o=0,!e&I>>>0>=4|e)for(y=124&I,E=0,I=0,e=0;C[t+Q|0]=i[g+t|0],C[(r=1|t)+Q|0]=i[g+r|0],C[(r=2|t)+Q|0]=i[g+r|0],C[(r=3|t)+Q|0]=i[g+r|0],r=o,o=(t=t+4|0)>>>0<4?r+1|0:r,r=e,e=r=(I=I+4|0)>>>0<4?r+1|0:r,(0|I)!=(0|y)|(0|E)!=(0|r););if(A|h)for(;C[t+Q|0]=i[g+t|0],o=(t=t+1|0)?o:o+1|0,r=s,s=r=(_=_+1|0)?r:r+1|0,(0|A)!=(0|_)|(0|h)!=(0|r););}dg(B,704)}else{if(t=0,o=0,!e&I>>>0>=4|e)for(A=-4&I;C[(r=t+c|0)+Q|0]=i[g+t|0],C[Q+(E=c+(r=1|t)|0)|0]=i[g+r|0],C[Q+(E=c+(r=2|t)|0)|0]=i[g+r|0],C[Q+(E=c+(r=3|t)|0)|0]=i[g+r|0],r=o,o=(t=t+4|0)>>>0<4?r+1|0:r,r=h,h=r=(y=y+4|0)>>>0<4?r+1|0:r,(0|A)!=(0|y)|(0|e)!=(0|r););if((I&=3)|(A=0))for(;C[(e=t+c|0)+Q|0]=i[g+t|0],o=(t=t+1|0)?o:o+1|0,r=s,s=r=(_=_+1|0)?r:r+1|0,(0|I)!=(0|_)|(0|A)!=(0|r););}return n=B+704|0,0}function $(A,g,I){var e=0,B=0,a=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0;for(B=2036477234,r=857760878,e=1634760805,Q=1797285236,a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,E=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,t=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,y=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,o=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,D=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,_=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,n=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,h=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,s=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,g=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,I=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24;c=I,I=Ig((p=g)^(g=I+e|0),16),c=_=Ig(c^(e=I+_|0),12),w=Ig((p=g+_|0)^I,8),g=Ig(c^(_=w+e|0),7),e=n,n=Ig((I=Q+n|0)^a,16),e=Ig(e^(y=n+y|0),12),a=h,Q=Ig((B=B+h|0)^E,16),a=Ig(a^(h=Q+o|0),12),o=Ig((B=a+B|0)^Q,8),I=Ig(o^(Q=g+(f=I+e|0)|0),16),E=Ig((r=r+s|0)^t,16),s=Ig((t=E+D|0)^s,12),c=g,g=Ig((r=r+s|0)^E,8),c=Ig(c^(t=I+(k=g+t|0)|0),12),E=Ig(I^(Q=c+Q|0),8),I=Ig((D=E+t|0)^c,7),c=B,B=e,f=Ig(n^f,8),B=Ig(B^(e=f+y|0),7),n=Ig((t=c+B|0)^g,16),y=Ig((g=n+_|0)^B,12),t=Ig(n^(B=y+t|0),8),n=Ig((_=g+t|0)^y,7),g=Ig((g=a)^(a=o+h|0),7),h=Ig((r=g+r|0)^w,16),o=Ig(g^(e=h+e|0),12),g=Ig(h^(r=o+r|0),8),h=Ig((y=e+g|0)^o,7),c=a,e=Ig(s^k,7),o=Ig((a=e+p|0)^f,16),p=Ig(e^(s=c+o|0),12),a=Ig(o^(e=p+a|0),8),s=Ig((o=s+a|0)^p,7),10!=(0|(d=d+1|0)););C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+24|0]=E,C[A+25|0]=E>>>8,C[A+26|0]=E>>>16,C[A+27|0]=E>>>24,C[A+20|0]=t,C[A+21|0]=t>>>8,C[A+22|0]=t>>>16,C[A+23|0]=t>>>24,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+12|0]=Q,C[A+13|0]=Q>>>8,C[A+14|0]=Q>>>16,C[A+15|0]=Q>>>24,C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+4|0]=r,C[A+5|0]=r>>>8,C[A+6|0]=r>>>16,C[A+7|0]=r>>>24}function AA(A,g,I){var e=0,B=0,a=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0;for(e=1797285236,o=2036477234,c=857760878,B=1634760805,a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,t=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,r=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,p=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,s=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,f=20,n=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,h=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,E=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,y=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,_=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,g=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,I=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24;Q=Ig(I+c|0,7)^a,D=Ig(Q+c|0,9)^s,E=Ig(B+n|0,7)^E,w=Ig(E+B|0,9)^t,k=Ig(w+E|0,13)^n,y=Ig(e+h|0,7)^y,r=Ig(y+e|0,9)^r,t=Ig(r+y|0,13)^h,e=Ig(r+t|0,18)^e,a=Ig(g+o|0,7)^p,n=k^Ig(e+a|0,7),s=D^Ig(n+e|0,9),p=Ig(n+s|0,13)^a,e=Ig(s+p|0,18)^e,_=Ig(a+o|0,9)^_,d=Ig(_+a|0,13)^g,g=Ig(d+_|0,18)^o,h=Ig(g+Q|0,7)^t,t=Ig(h+g|0,9)^w,a=Ig(t+h|0,13)^Q,o=Ig(a+t|0,18)^g,Q=Ig(Q+D|0,13)^I,I=Ig(Q+D|0,18)^c,g=Ig(I+E|0,7)^d,r=Ig(g+I|0,9)^r,E=Ig(g+r|0,13)^E,c=Ig(r+E|0,18)^I,B=Ig(w+k|0,18)^B,I=Ig(B+y|0,7)^Q,_=Ig(I+B|0,9)^_,y=Ig(I+_|0,13)^y,B=Ig(_+y|0,18)^B,Q=f>>>0>2,f=f-2|0,Q;);return C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+24|0]=t,C[A+25|0]=t>>>8,C[A+26|0]=t>>>16,C[A+27|0]=t>>>24,C[A+20|0]=r,C[A+21|0]=r>>>8,C[A+22|0]=r>>>16,C[A+23|0]=r>>>24,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+12|0]=e,C[A+13|0]=e>>>8,C[A+14|0]=e>>>16,C[A+15|0]=e>>>24,C[A+8|0]=o,C[A+9|0]=o>>>8,C[A+10|0]=o>>>16,C[A+11|0]=o>>>24,C[A+4|0]=c,C[A+5|0]=c>>>8,C[A+6|0]=c>>>16,C[A+7|0]=c>>>24,0}function gA(A,g){var I,e,B=0,i=0,r=0,t=0;n=I=n-288|0,i=40+((B=a[A+32>>2]>>>3&63)+A|0)|0,B>>>0>=56?(OA(i,35040,64-B|0),S(A,A+40|0,I,I+256|0),a[A+88>>2]=0,a[A+92>>2]=0,a[A+80>>2]=0,a[A+84>>2]=0,a[A+72>>2]=0,a[A+76>>2]=0,a[(B=A- -64|0)>>2]=0,a[B+4>>2]=0,a[A+56>>2]=0,a[A+60>>2]=0,a[A+48>>2]=0,a[A+52>>2]=0,a[A+40>>2]=0,a[A+44>>2]=0):OA(i,35040,56-B|0),r=(B=16711680&(i=a[A+32>>2]))>>>8|0,t=B<<24,e=(B=-16777216&i)>>>24|0,B=(t|=B<<8)|-16777216&((255&(B=a[A+36>>2]))<<24|i>>>8)|16711680&((16777215&B)<<8|i>>>24)|B>>>8&65280|B>>>24,C[A+96|0]=B,C[A+97|0]=B>>>8,C[A+98|0]=B>>>16,C[A+99|0]=B>>>24,B=r|e|i<<24|(65280&i)<<8,B|=r=0,C[A+100|0]=B,C[A+101|0]=B>>>8,C[A+102|0]=B>>>16,C[A+103|0]=B>>>24,S(A,A+40|0,I,I+256|0),B=(B=a[A>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[0|g]=B,C[g+1|0]=B>>>8,C[g+2|0]=B>>>16,C[g+3|0]=B>>>24,B=(B=a[A+4>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+4|0]=B,C[g+5|0]=B>>>8,C[g+6|0]=B>>>16,C[g+7|0]=B>>>24,B=(B=a[A+8>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+8|0]=B,C[g+9|0]=B>>>8,C[g+10|0]=B>>>16,C[g+11|0]=B>>>24,B=(B=a[A+12>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+12|0]=B,C[g+13|0]=B>>>8,C[g+14|0]=B>>>16,C[g+15|0]=B>>>24,B=(B=a[A+16>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+16|0]=B,C[g+17|0]=B>>>8,C[g+18|0]=B>>>16,C[g+19|0]=B>>>24,B=(B=a[A+20>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+20|0]=B,C[g+21|0]=B>>>8,C[g+22|0]=B>>>16,C[g+23|0]=B>>>24,B=(B=a[A+24>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+24|0]=B,C[g+25|0]=B>>>8,C[g+26|0]=B>>>16,C[g+27|0]=B>>>24,B=(B=a[A+28>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+28|0]=B,C[g+29|0]=B>>>8,C[g+30|0]=B>>>16,C[g+31|0]=B>>>24,dg(I,288),dg(A,104),n=I+288|0}function IA(A,g,I){var e,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0;if(n=e=n-96|0,I>>>0>=65&&(UA(A),eA(A,g,I),gA(A,e),I=32,g=e),UA(A),a[e+88>>2]=909522486,a[e+92>>2]=909522486,a[e+80>>2]=909522486,a[e+84>>2]=909522486,a[e+72>>2]=909522486,a[e+76>>2]=909522486,a[(t=E=e- -64|0)>>2]=909522486,a[t+4>>2]=909522486,a[e+56>>2]=909522486,a[e+60>>2]=909522486,a[e+48>>2]=909522486,a[e+52>>2]=909522486,a[e+40>>2]=909522486,a[e+44>>2]=909522486,a[e+32>>2]=909522486,a[e+36>>2]=909522486,I){if(I>>>0>=4)for(Q=124&I;C[0|(r=(t=e+32|0)+B|0)]=i[0|r]^i[g+B|0],C[0|(y=(r=1|B)+t|0)]=i[0|y]^i[g+r|0],C[0|(y=(r=2|B)+t|0)]=i[0|y]^i[g+r|0],C[0|(r=(r=t)+(t=3|B)|0)]=i[0|r]^i[g+t|0],B=B+4|0,(0|Q)!=(0|(o=o+4|0)););if(o=3&I)for(;C[0|(t=(e+32|0)+B|0)]=i[0|t]^i[g+B|0],B=B+1|0,(0|o)!=(0|(c=c+1|0)););}if(eA(A,e+32|0,64),UA(t=A+104|0),a[e+88>>2]=1549556828,a[e+92>>2]=1549556828,a[e+80>>2]=1549556828,a[e+84>>2]=1549556828,a[e+72>>2]=1549556828,a[e+76>>2]=1549556828,a[E>>2]=1549556828,a[E+4>>2]=1549556828,a[e+56>>2]=1549556828,a[e+60>>2]=1549556828,a[e+48>>2]=1549556828,a[e+52>>2]=1549556828,a[e+40>>2]=1549556828,a[e+44>>2]=1549556828,a[e+32>>2]=1549556828,a[e+36>>2]=1549556828,I){if(c=0,B=0,I>>>0>=4)for(E=124&I,o=0;C[0|(Q=(A=e+32|0)+B|0)]=i[0|Q]^i[g+B|0],C[0|(r=(Q=1|B)+A|0)]=i[0|r]^i[g+Q|0],C[0|(r=(Q=2|B)+A|0)]=i[0|r]^i[g+Q|0],C[0|(Q=(r=A)+(A=3|B)|0)]=i[0|Q]^i[A+g|0],B=B+4|0,(0|E)!=(0|(o=o+4|0)););if(A=3&I)for(;C[0|(I=(e+32|0)+B|0)]=i[0|I]^i[g+B|0],B=B+1|0,(0|A)!=(0|(c=c+1|0)););}return eA(t,A=e+32|0,64),dg(A,64),dg(e,32),n=e+96|0,0}function CA(A,g,I,C,e,i,r){var t=0,Q=0,o=0,c=0,E=0,y=0,_=0;if(g-65>>>0<4294967232|r>>>0>64)A=-1;else{y=t=n,n=t=t-512&-64;A:{g:if(!(!(!(C|e)|I)|!A|((Q=255&g)-65&255)>>>0<=191|!(!(g=255&r)||i)|g>>>0>=65)){if(g){if(!i)break g;VA(t- -64|0,0,293),a[t+56>>2]=327033209,a[t+60>>2]=1541459225,a[t+48>>2]=-79577749,a[t+52>>2]=528734635,a[t+40>>2]=725511199,a[t+44>>2]=-1694144372,a[t+32>>2]=-1377402159,a[t+36>>2]=1359893119,a[t+24>>2]=1595750129,a[t+28>>2]=-1521486534,a[t+16>>2]=-23791573,a[t+20>>2]=1013904242,a[t+8>>2]=-2067093701,a[t+12>>2]=-1150833019,a[t>>2]=-222443256^(g<<8|Q),a[t+4>>2]=g>>>24^1779033703,VA((r=t+384|0)+g|0,0,128-g|0),OA(r,i,g),OA(t+96|0,r,128),a[t+352>>2]=128,dg(r,128),g=128}else VA(t- -64|0,0,293),a[t+56>>2]=327033209,a[t+60>>2]=1541459225,a[t+48>>2]=-79577749,a[t+52>>2]=528734635,a[t+40>>2]=725511199,a[t+44>>2]=-1694144372,a[t+32>>2]=-1377402159,a[t+36>>2]=1359893119,a[t+24>>2]=1595750129,a[t+28>>2]=-1521486534,a[t+16>>2]=-23791573,a[t+20>>2]=1013904242,a[t+8>>2]=-2067093701,a[t+12>>2]=-1150833019,a[t>>2]=-222443256^Q,a[t+4>>2]=1779033703,g=0;I:if(C|e)for(_=t+224|0,o=t+96|0;;){if(r=g+o|0,!e&C>>>0<=(i=256-g|0)>>>0){OA(r,I,C),a[t+352>>2]=C+a[t+352>>2];break I}if(OA(r,I,i),a[t+352>>2]=i+a[t+352>>2],c=g=a[t+68>>2],g=(E=(r=a[t+64>>2])+128|0)>>>0<128?g+1|0:g,a[t+64>>2]=E,a[t+68>>2]=g,g=a[t+76>>2],g=(c=r=-1==(0|c)&r>>>0>4294967167)>>>0>(r=r+a[t+72>>2]|0)>>>0?g+1|0:g,a[t+72>>2]=r,a[t+76>>2]=g,s(t,o),OA(o,_,128),g=a[t+352>>2]-128|0,a[t+352>>2]=g,I=I+i|0,!((e=e-(C>>>0<i>>>0)|0)|(C=C-i|0)))break}R(t,A,Q),n=y;break A}ig(),B()}A=0}return A}function eA(A,g,I){var e,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0;if(n=e=n-288|0,I)if(B=a[A+36>>2],c=(Q=a[A+32>>2])+(o=I<<3)|0,a[A+32>>2]=c,t=(I>>>29|0)+B|0,a[A+36>>2]=o>>>0>c>>>0?t+1|0:t,o=A+40|0,!0&(t=64-(c=63&((7&B)<<29|Q>>>3))|0)>>>0<=I>>>0){if(B=0,Q=0,(63^c)>>>0>=3)for(s=124&t;C[(B+c|0)+o|0]=i[g+B|0],C[(c+(_=1|B)|0)+o|0]=i[g+_|0],C[(c+(_=2|B)|0)+o|0]=i[g+_|0],C[(c+(_=3|B)|0)+o|0]=i[g+_|0],Q=(B=B+4|0)>>>0<4?Q+1|0:Q,(r=(h=h+4|0)>>>0<4?r+1|0:r)|(0|h)!=(0|s););if(r=3&t)for(;C[(B+c|0)+o|0]=i[g+B|0],Q=(B=B+1|0)?Q:Q+1|0,(E=(y=y+1|0)?E:E+1|0)|(0|r)!=(0|y););if(S(A,o,e,E=e+256|0),g=g+t|0,!(r=0-((I>>>0<t>>>0)+0|0)|0)&(I=I-t|0)>>>0>63|r)for(;S(A,g,e,E),g=g- -64|0,r=r-1|0,!(r=(I=I+-64|0)>>>0<4294967232?r+1|0:r)&I>>>0>63|r;);if(I|r){if(A=3&I,y=0,E=0,B=0,Q=0,!r&I>>>0>=4|r)for(c=60&I,I=0,r=0;C[B+o|0]=i[g+B|0],C[(t=1|B)+o|0]=i[g+t|0],C[(t=2|B)+o|0]=i[g+t|0],C[(t=3|B)+o|0]=i[g+t|0],Q=(B=B+4|0)>>>0<4?Q+1|0:Q,(r=(I=I+4|0)>>>0<4?r+1|0:r)|(0|I)!=(0|c););if(A)for(;C[B+o|0]=i[g+B|0],Q=(B=B+1|0)?Q:Q+1|0,(E=(y=y+1|0)?E:E+1|0)|(0|A)!=(0|y););}dg(e,288)}else{if(B=0,Q=0,I>>>0>=4)for(A=-4&I;C[(B+c|0)+o|0]=i[g+B|0],C[(c+(t=1|B)|0)+o|0]=i[g+t|0],C[(c+(t=2|B)|0)+o|0]=i[g+t|0],C[(c+(t=3|B)|0)+o|0]=i[g+t|0],Q=(B=B+4|0)>>>0<4?Q+1|0:Q,(r=(h=h+4|0)>>>0<4?r+1|0:r)|(0|A)!=(0|h););if(A=3&I)for(;C[(B+c|0)+o|0]=i[g+B|0],Q=(B=B+1|0)?Q:Q+1|0,(E=(y=y+1|0)?E:E+1|0)|(0|A)!=(0|y););}n=e+288|0}function BA(A,g,I,e){var B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0;A:{if((r=a[A+56>>2])|(B=a[A+60>>2])){if(y=Q=16-r|0,c=(Q=(0|(t=0-((r>>>0>16)+B|0)|0))==(0|e)&I>>>0>Q>>>0|e>>>0>t>>>0)?y:I,y=Q=Q?t:e,Q|c){if(Q=A- -64|0,t=0,r=0,!y&c>>>0>=4|y)for(E=-4&c;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],B=(_=1|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+_|0],B=(_=2|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+_|0],B=(_=3|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+_|0],B=r,r=(t=t+4|0)>>>0<4?B+1|0:B,B=h,h=B=(o=o+4|0)>>>0<4?B+1|0:B,(0|o)!=(0|E)|(0|y)!=(0|B););if(h=B=0,B|(o=3&c))for(;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],r=(t=t+1|0)?r:r+1|0,B=s,s=B=(n=n+1|0)?B:B+1|0,(0|o)!=(0|n)|(0|h)!=(0|B););r=a[A+56>>2],B=a[A+60>>2]}if(B=B+y|0,B=(r=r+c|0)>>>0<c>>>0?B+1|0:B,a[A+56>>2]=r,a[A+60>>2]=B,!B&r>>>0<16)break A;q(A,A- -64|0,16,0),a[A+56>>2]=0,a[A+60>>2]=0,I=(r=I)-c|0,e=e-((r>>>0<c>>>0)+y|0)|0,g=g+c|0}if(!e&I>>>0>=16|e&&(q(A,g,r=-16&I,e),I&=15,e=0,g=g+r|0),I|e){if(Q=A- -64|0,n=0,s=0,t=0,r=0,!e&I>>>0>=4|e)for(c=12&I,y=0,o=0;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],B=(E=1|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+E|0],B=(E=2|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+E|0],B=(E=3|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+E|0],r=(t=t+4|0)>>>0<4?r+1|0:r,B=h,h=B=(o=o+4|0)>>>0<4?B+1|0:B,(0|c)!=(0|o)|(0|y)!=(0|B););if(h=B=0,B|(o=3&I))for(;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],r=(t=t+1|0)?r:r+1|0,B=s,s=B=(n=n+1|0)?B:B+1|0,(0|o)!=(0|n)|(0|h)!=(0|B););r=e+a[A+60>>2]|0,r=(g=I+a[A+56>>2]|0)>>>0<I>>>0?r+1|0:r,a[A+56>>2]=g,a[A+60>>2]=r}}}function aA(A,g,I){var C,e=0,B=0,i=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0;n=a[g+4>>2],e=a[A+4>>2],h=a[g+8>>2],B=a[A+8>>2],s=a[g+12>>2],i=a[A+12>>2],p=a[g+16>>2],r=a[A+16>>2],f=a[g+20>>2],t=a[A+20>>2],y=a[g+24>>2],Q=a[A+24>>2],D=a[g+28>>2],o=a[A+28>>2],w=a[g+32>>2],c=a[A+32>>2],k=a[g+36>>2],E=a[A+36>>2],I=0-I|0,_=a[A>>2],a[A>>2]=I&(_^a[g>>2])^_,a[A+36>>2]=E^I&(E^k),a[A+32>>2]=c^I&(c^w),a[A+28>>2]=o^I&(o^D),a[A+24>>2]=Q^I&(Q^y),a[A+20>>2]=t^I&(t^f),a[A+16>>2]=r^I&(r^p),a[A+12>>2]=i^I&(i^s),a[A+8>>2]=B^I&(B^h),a[A+4>>2]=e^I&(e^n),e=a[A+44>>2],n=a[g+44>>2],B=a[A+48>>2],h=a[g+48>>2],i=a[A+52>>2],s=a[g+52>>2],r=a[A+56>>2],p=a[g+56>>2],t=a[A+60>>2],f=a[g+60>>2],Q=a[(y=A- -64|0)>>2],D=a[g- -64>>2],o=a[A+68>>2],w=a[g+68>>2],c=a[A+72>>2],k=a[g+72>>2],E=a[A+40>>2],_=a[g+40>>2],C=a[A+76>>2],a[A+76>>2]=C^I&(a[g+76>>2]^C),a[A+72>>2]=c^I&(c^k),a[A+68>>2]=o^I&(o^w),a[y>>2]=Q^I&(Q^D),a[A+60>>2]=t^I&(t^f),a[A+56>>2]=r^I&(r^p),a[A+52>>2]=i^I&(i^s),a[A+48>>2]=B^I&(B^h),a[A+44>>2]=e^I&(e^n),a[A+40>>2]=E^I&(E^_),e=a[A+84>>2],n=a[g+84>>2],B=a[A+88>>2],h=a[g+88>>2],i=a[A+92>>2],s=a[g+92>>2],r=a[A+96>>2],p=a[g+96>>2],t=a[A+100>>2],f=a[g+100>>2],Q=a[A+104>>2],y=a[g+104>>2],o=a[A+108>>2],D=a[g+108>>2],c=a[A+112>>2],w=a[g+112>>2],E=a[A+80>>2],k=a[g+80>>2],_=a[g+116>>2],g=a[A+116>>2],a[A+116>>2]=I&(_^g)^g,a[A+112>>2]=c^I&(c^w),a[A+108>>2]=o^I&(o^D),a[A+104>>2]=Q^I&(Q^y),a[A+100>>2]=t^I&(t^f),a[A+96>>2]=r^I&(r^p),a[A+92>>2]=i^I&(i^s),a[A+88>>2]=B^I&(B^h),a[A+84>>2]=e^I&(e^n),a[A+80>>2]=E^I&(E^k)}function iA(A,g){var I,C,e=0;for(n=I=n-192|0,K(C=I+144|0,g),K(e=I+96|0,C),K(e,e),d(e,g,e),d(C,C,e),K(g=I+48|0,C),d(e,e,g),K(g,e),K(g,g),K(g,g),K(g,g),K(g,g),d(e,g,e),K(g,e),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(g,g,e),K(I,g),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),d(g,I,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(e,g,e),K(g,e),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(g,g,e),K(I,g),g=1;K(I,I),100!=(0|(g=g+1|0)););d(g=I+48|0,I,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(e=I+96|0,g,e),K(e,e),K(e,e),K(e,e),K(e,e),K(e,e),d(A,e,I+144|0),n=I+192|0}function rA(A,g,I){var C,e,B,i,r,Q,o,c,E=0;n=C=n-128|0,a[A>>2]=1,a[A+4>>2]=0,a[A+8>>2]=0,a[A+12>>2]=0,a[A+16>>2]=0,a[A+20>>2]=0,a[A+24>>2]=0,a[A+28>>2]=0,a[A+32>>2]=0,a[A+36>>2]=0,a[A+40>>2]=1,VA(A+44|0,0,76),aA(A,g=t(g,960)+2688|0,(255&(1^(E=I-((I>>31&I)<<1)|0)))-1>>>31|0),aA(A,g+120|0,(255&(2^E))-1>>>31|0),aA(A,g+240|0,(255&(3^E))-1>>>31|0),aA(A,g+360|0,(255&(4^E))-1>>>31|0),aA(A,g+480|0,(255&(5^E))-1>>>31|0),aA(A,g+600|0,(255&(6^E))-1>>>31|0),aA(A,g+720|0,(255&(7^E))-1>>>31|0),aA(A,g+840|0,(255&(8^E))-1>>>31|0),g=a[A+76>>2],a[C+40>>2]=a[A+72>>2],a[C+44>>2]=g,E=a[4+(g=A- -64|0)>>2],a[C+32>>2]=a[g>>2],a[C+36>>2]=E,g=a[A+60>>2],a[C+24>>2]=a[A+56>>2],a[C+28>>2]=g,g=a[A+52>>2],a[C+16>>2]=a[A+48>>2],a[C+20>>2]=g,g=a[A+44>>2],a[C+8>>2]=a[A+40>>2],a[C+12>>2]=g,g=a[A+12>>2],a[C+56>>2]=a[A+8>>2],a[C+60>>2]=g,E=a[A+20>>2],a[(g=C- -64|0)>>2]=a[A+16>>2],a[g+4>>2]=E,g=a[A+28>>2],a[C+72>>2]=a[A+24>>2],a[C+76>>2]=g,g=a[A+36>>2],a[C+80>>2]=a[A+32>>2],a[C+84>>2]=g,g=a[A+4>>2],a[C+48>>2]=a[A>>2],a[C+52>>2]=g,g=a[A+84>>2],E=a[A+88>>2],e=a[A+92>>2],B=a[A+96>>2],i=a[A+100>>2],r=a[A+104>>2],Q=a[A+108>>2],o=a[A+112>>2],c=a[A+80>>2],a[C+124>>2]=0-a[A+116>>2],a[C+120>>2]=0-o,a[C+116>>2]=0-Q,a[C+112>>2]=0-r,a[C+108>>2]=0-i,a[C+104>>2]=0-B,a[C+100>>2]=0-e,a[C+96>>2]=0-E,a[C+92>>2]=0-g,a[C+88>>2]=0-c,aA(A,C+8|0,(128&I)>>>7|0),n=C+128|0}function tA(A,g,I,e){var B=0,a=0,r=0,t=0,Q=0,o=0,c=0;if(I|e)A:for(c=A+224|0,Q=A+96|0,a=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24;;){if(B=a+Q|0,!e&I>>>0<=(r=256-a|0)>>>0){OA(B,g,I),g=I+(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)|0,C[A+352|0]=g,C[A+353|0]=g>>>8,C[A+354|0]=g>>>16,C[A+355|0]=g>>>24;break A}if(OA(B,g,r),B=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)+r|0,C[A+352|0]=B,C[A+353|0]=B>>>8,C[A+354|0]=B>>>16,C[A+355|0]=B>>>24,o=a=i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24,a=(t=128+(B=i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)|0)>>>0<128?a+1|0:a,C[A+64|0]=t,C[A+65|0]=t>>>8,C[A+66|0]=t>>>16,C[A+67|0]=t>>>24,C[A+68|0]=a,C[A+69|0]=a>>>8,C[A+70|0]=a>>>16,C[A+71|0]=a>>>24,a=i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24,a=(o=B=-1==(0|o)&B>>>0>4294967167)>>>0>(B=B+(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)|0)>>>0?a+1|0:a,C[A+72|0]=B,C[A+73|0]=B>>>8,C[A+74|0]=B>>>16,C[A+75|0]=B>>>24,C[A+76|0]=a,C[A+77|0]=a>>>8,C[A+78|0]=a>>>16,C[A+79|0]=a>>>24,s(A,Q),OA(Q,c,128),B=a=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)-128|0,C[A+352|0]=B,C[A+353|0]=B>>>8,C[A+354|0]=B>>>16,C[A+355|0]=B>>>24,g=g+r|0,!((e=e-(I>>>0<r>>>0)|0)|(I=I-r|0)))break}return 0}function QA(A,g){var I,C=0,e=0,B=0,i=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0;C=a[g+4>>2],B=a[g+44>>2],i=a[g+8>>2],r=a[g+48>>2],t=a[g+12>>2],Q=a[g+52>>2],o=a[g+16>>2],c=a[g+56>>2],E=a[g+20>>2],y=a[g+60>>2],_=a[g+24>>2],n=a[(e=g- -64|0)>>2],h=a[g+28>>2],s=a[g+68>>2],p=a[g+32>>2],f=a[g+72>>2],D=a[g+36>>2],I=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=D+I,a[A+32>>2]=p+f,a[A+28>>2]=h+s,a[A+24>>2]=_+n,a[A+20>>2]=E+y,a[A+16>>2]=o+c,a[A+12>>2]=t+Q,a[A+8>>2]=i+r,a[A+4>>2]=C+B,C=a[g+4>>2],B=a[g+44>>2],i=a[g+8>>2],r=a[g+48>>2],t=a[g+12>>2],Q=a[g+52>>2],o=a[g+16>>2],c=a[g+56>>2],E=a[g+20>>2],y=a[g+60>>2],_=a[g+24>>2],e=a[e>>2],n=a[g+28>>2],h=a[g+68>>2],s=a[g+32>>2],p=a[g+72>>2],f=a[g>>2],D=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=p-s,a[A+68>>2]=h-n,a[A- -64>>2]=e-_,a[A+60>>2]=y-E,a[A+56>>2]=c-o,a[A+52>>2]=Q-t,a[A+48>>2]=r-i,a[A+44>>2]=B-C,a[A+40>>2]=D-f,C=a[g+84>>2],a[A+80>>2]=a[g+80>>2],a[A+84>>2]=C,C=a[g+92>>2],a[A+88>>2]=a[g+88>>2],a[A+92>>2]=C,C=a[g+100>>2],a[A+96>>2]=a[g+96>>2],a[A+100>>2]=C,C=a[g+108>>2],a[A+104>>2]=a[g+104>>2],a[A+108>>2]=C,C=a[g+116>>2],a[A+112>>2]=a[g+112>>2],a[A+116>>2]=C,d(A+120|0,g+120|0,1424)}function oA(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y,_,h=0,s=0,p=0,f=0,D=0;h=a[g+12>>2],s=a[g+8>>2],p=a[g+4>>2],C=n+-64&-64,g=a[g>>2],a[C>>2]=a[35248+((255&g)<<2)>>2],a[C+4>>2]=a[35248+(p>>>6&1020)>>2],a[C+8>>2]=a[35248+(s>>>14&1020)>>2],a[C+12>>2]=a[35248+(h>>>22&1020)>>2],a[C+16>>2]=a[35248+((255&p)<<2)>>2],a[C+20>>2]=a[35248+(s>>>6&1020)>>2],a[C+24>>2]=a[35248+(h>>>14&1020)>>2],a[C+28>>2]=a[35248+(g>>>22&1020)>>2],a[C+32>>2]=a[35248+((255&s)<<2)>>2],a[C+36>>2]=a[35248+(h>>>6&1020)>>2],a[C+40>>2]=a[35248+(g>>>14&1020)>>2],a[C+44>>2]=a[35248+(p>>>22&1020)>>2],a[C+48>>2]=a[35248+((255&h)<<2)>>2],a[C+52>>2]=a[35248+(g>>>6&1020)>>2],a[C+56>>2]=a[35248+(p>>>14&1020)>>2],a[C+60>>2]=a[35248+(s>>>22&1020)>>2],g=a[C+12>>2],h=a[C>>2],s=a[C+4>>2],p=a[C+8>>2],e=a[C+28>>2],B=a[C+16>>2],i=a[C+20>>2],r=a[C+24>>2],t=a[C+44>>2],Q=a[C+32>>2],o=a[C+36>>2],c=a[C+40>>2],E=a[I>>2],y=a[I+4>>2],_=a[I+8>>2],f=A,D=a[I+12>>2]^a[C+48>>2]^Ig(a[C+52>>2],8)^Ig(a[C+56>>2],16)^Ig(a[C+60>>2],24),a[f+12>>2]=D,f=A,D=Ig(o,8)^Q^Ig(c,16)^Ig(t,24)^_,a[f+8>>2]=D,f=A,D=Ig(i,8)^B^Ig(r,16)^Ig(e,24)^y,a[f+4>>2]=D,f=A,D=Ig(s,8)^h^Ig(p,16)^Ig(g,24)^E,a[f>>2]=D}function cA(A,g){var I,e,B,i,r,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0;(Q=a[A+56>>2])|(o=a[A+60>>2])&&(C[(E=A- -64|0)+Q|0]=1,!((p=Q+1|0)?o:o+1|0)&p>>>0<=15&&VA(65+(A+Q|0)|0,0,15-Q|0),C[A+80|0]=1,q(A,E,16,0)),p=a[A+52>>2],h=a[A+48>>2],E=a[A+44>>2],Q=a[A+24>>2],y=a[A+28>>2]+(Q>>>26|0)|0,c=a[A+32>>2]+(y>>>26|0)|0,I=a[A+36>>2]+(c>>>26|0)|0,o=(n=(Q=(Q=(67108863&Q)+((_=a[A+20>>2]+t(I>>>26|0,5)|0)>>>26|0)|0)&(y=(c=(r=(67108863&I)+((i=(e=67108863&c)+((B=(s=67108863&y)+((_=Q+((o=5+(n=67108863&_)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)-67108864|0)>>31)|_&(c=67108863&(_=(c>>>31|0)-1|0)))<<26|o&c|y&n)+a[A+40>>2]|0,C[0|g]=o,C[g+1|0]=o>>>8,C[g+2|0]=o>>>16,C[g+3|0]=o>>>24,n=o>>>0<n>>>0,o=0,o=(Q=(s=y&s|c&B)<<20|Q>>>6)>>>0>(Q=Q+E|0)>>>0?1:o,o=(E=Q)>>>0>(Q=Q+n|0)>>>0?o+1|0:o,C[g+4|0]=Q,C[g+5|0]=Q>>>8,C[g+6|0]=Q>>>16,C[g+7|0]=Q>>>24,Q=0,E=(E=(c=y&e|c&i)<<14|s>>>12)>>>0>(h=E+h|0)>>>0?1:Q,Q=h,h=o,Q=Q+o|0,o=E,o=Q>>>0<h>>>0?o+1|0:o,C[g+8|0]=Q,C[g+9|0]=Q>>>8,C[g+10|0]=Q>>>16,C[g+11|0]=Q>>>24,o=(Q=(Q=(_&r|y&I)<<8|c>>>18)+p|0)+o|0,C[g+12|0]=o,C[g+13|0]=o>>>8,C[g+14|0]=o>>>16,C[g+15|0]=o>>>24,dg(A,88)}function EA(A,g,I){var e,B=0;return n=e=n-16|0,C[e+15|0]=0,B=-1,0|Jg[a[8806]](A,g,I)||(C[e+15|0]=i[0|A]|i[e+15|0],C[e+15|0]=i[A+1|0]|i[e+15|0],C[e+15|0]=i[A+2|0]|i[e+15|0],C[e+15|0]=i[A+3|0]|i[e+15|0],C[e+15|0]=i[A+4|0]|i[e+15|0],C[e+15|0]=i[A+5|0]|i[e+15|0],C[e+15|0]=i[A+6|0]|i[e+15|0],C[e+15|0]=i[A+7|0]|i[e+15|0],C[e+15|0]=i[A+8|0]|i[e+15|0],C[e+15|0]=i[A+9|0]|i[e+15|0],C[e+15|0]=i[A+10|0]|i[e+15|0],C[e+15|0]=i[A+11|0]|i[e+15|0],C[e+15|0]=i[A+12|0]|i[e+15|0],C[e+15|0]=i[A+13|0]|i[e+15|0],C[e+15|0]=i[A+14|0]|i[e+15|0],C[e+15|0]=i[A+15|0]|i[e+15|0],C[e+15|0]=i[A+16|0]|i[e+15|0],C[e+15|0]=i[A+17|0]|i[e+15|0],C[e+15|0]=i[A+18|0]|i[e+15|0],C[e+15|0]=i[A+19|0]|i[e+15|0],C[e+15|0]=i[A+20|0]|i[e+15|0],C[e+15|0]=i[A+21|0]|i[e+15|0],C[e+15|0]=i[A+22|0]|i[e+15|0],C[e+15|0]=i[A+23|0]|i[e+15|0],C[e+15|0]=i[A+24|0]|i[e+15|0],C[e+15|0]=i[A+25|0]|i[e+15|0],C[e+15|0]=i[A+26|0]|i[e+15|0],C[e+15|0]=i[A+27|0]|i[e+15|0],C[e+15|0]=i[A+28|0]|i[e+15|0],C[e+15|0]=i[A+29|0]|i[e+15|0],C[e+15|0]=i[A+30|0]|i[e+15|0],C[e+15|0]=i[A+31|0]|i[e+15|0],B=(i[e+15|0]<<23)-8388608>>31),n=e+16|0,B}function yA(A,g){var I,e,B,i,r,Q,o,c=0,E=0;e=a[g+32>>2],B=a[g+28>>2],i=a[g+24>>2],r=a[g+20>>2],Q=a[g+16>>2],o=a[g+12>>2],c=a[g+4>>2],E=a[g>>2],I=a[g+36>>2],g=a[g+8>>2],E=t((e+(B+(i+(r+(Q+(o+((c+(E+(t(I,19)+16777216>>>25|0)>>26)>>25)+g>>26)>>25)>>26)>>25)>>26)>>25)>>26)+I>>25,19)+E|0,C[0|A]=E,C[A+2|0]=E>>>16,C[A+1|0]=E>>>8,c=c+(E>>26)|0,C[A+5|0]=c>>>14,C[A+4|0]=c>>>6,C[A+3|0]=E>>>24&3|c<<2,g=g+(c>>25)|0,C[A+8|0]=g>>>13,C[A+7|0]=g>>>5,C[A+6|0]=g<<3|(29360128&c)>>>22,E=(g>>26)+o|0,C[A+11|0]=E>>>11,C[A+10|0]=E>>>3,C[A+9|0]=E<<5|(65011712&g)>>>21,c=(E>>25)+Q|0,C[A+15|0]=c>>>18,C[A+14|0]=c>>>10,C[A+13|0]=c>>>2,g=(c>>26)+r|0,C[A+16|0]=g,C[A+12|0]=c<<6|(33030144&E)>>>19,C[A+18|0]=g>>>16,C[A+17|0]=g>>>8,c=(g>>25)+i|0,C[A+21|0]=c>>>15,C[A+20|0]=c>>>7,C[A+19|0]=g>>>24&1|c<<1,g=(c>>26)+B|0,C[A+24|0]=g>>>13,C[A+23|0]=g>>>5,C[A+22|0]=g<<3|(58720256&c)>>>23,c=(g>>25)+e|0,C[A+27|0]=c>>>12,C[A+26|0]=c>>>4,C[A+25|0]=c<<4|(31457280&g)>>>21,g=I+(c>>26)|0,C[A+30|0]=g>>>10,C[A+29|0]=g>>>2,C[A+31|0]=(33292288&g)>>>18,C[A+28|0]=g<<6|(66060288&c)>>>20}function _A(A,g,I){var e,B=0,a=0,r=0,t=0,Q=0,o=0,c=0;if(n=e=n-192|0,I>>>0>=129&&(dA(A),W(A,g,I,0),J(A,e),I=64,g=e),dA(A),VA(e- -64|0,54,128),I){if(I>>>0>=4)for(c=252&I;C[0|(B=(r=e- -64|0)+a|0)]=i[0|B]^i[g+a|0],C[0|(t=(B=1|a)+r|0)]=i[0|t]^i[g+B|0],C[0|(t=(B=2|a)+r|0)]=i[0|t]^i[g+B|0],C[0|(B=(B=r)+(r=3|a)|0)]=i[0|B]^i[g+r|0],a=a+4|0,(0|c)!=(0|(Q=Q+4|0)););if(Q=3&I)for(;C[0|(r=(e- -64|0)+a|0)]=i[0|r]^i[g+a|0],a=a+1|0,(0|Q)!=(0|(o=o+1|0)););}if(W(A,a=e- -64|0,128,0),dA(r=A+208|0),VA(a,92,128),I){if(o=0,a=0,I>>>0>=4)for(c=252&I,Q=0;C[0|(B=(A=e- -64|0)+a|0)]=i[0|B]^i[g+a|0],C[0|(t=(B=1|a)+A|0)]=i[0|t]^i[g+B|0],C[0|(t=(B=2|a)+A|0)]=i[0|t]^i[g+B|0],C[0|(B=(B=A)+(A=3|a)|0)]=i[0|B]^i[A+g|0],a=a+4|0,(0|c)!=(0|(Q=Q+4|0)););if(A=3&I)for(;C[0|(I=(e- -64|0)+a|0)]=i[0|I]^i[g+a|0],a=a+1|0,(0|A)!=(0|(o=o+1|0)););}return W(r,A=e- -64|0,128,0),dg(A,128),dg(e,64),n=e+192|0,0}function nA(A,g){var I;return a[12+(I=n-16|0)>>2]=A,a[I+8>>2]=g,a[I+4>>2]=0,a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]]^i[a[I+8>>2]],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+1|0]^i[a[I+8>>2]+1|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+2|0]^i[a[I+8>>2]+2|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+3|0]^i[a[I+8>>2]+3|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+4|0]^i[a[I+8>>2]+4|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+5|0]^i[a[I+8>>2]+5|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+6|0]^i[a[I+8>>2]+6|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+7|0]^i[a[I+8>>2]+7|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+8|0]^i[a[I+8>>2]+8|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+9|0]^i[a[I+8>>2]+9|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+10|0]^i[a[I+8>>2]+10|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+11|0]^i[a[I+8>>2]+11|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+12|0]^i[a[I+8>>2]+12|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+13|0]^i[a[I+8>>2]+13|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+14|0]^i[a[I+8>>2]+14|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+15|0]^i[a[I+8>>2]+15|0],(a[I+4>>2]-1>>>8&1)-1|0}function hA(A,g,I,C,e,B,i){var r,t,Q,o=0,c=0,E=0,y=0;n=r=n-352|0,AA(r,B,i);A:{if(!(((o=!!(0|e))|!e&C>>>0>A-I>>>0)&A>>>0>I>>>0)&(!e&I-A>>>0>=C>>>0|A>>>0>=I>>>0)){if(a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,c=(i=(o=!!(0|e))|!e&C>>>0>=32)?32:C,E=i?0:e,i=o|!e&C>>>0>32,!(C|e)){y=1;break A}}else I=TA(A,I,C),a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,c=(i=o|!e&C>>>0>=32)?32:C,E=i?0:e,i=o|!e&C>>>0>32;OA(r- -64|0,I,c),y=0}return o=E,rg(t=r+32|0,t,Q=c+32|0,o=Q>>>0<32?o+1|0:o,o=B+16|0,r),fg(r+96|0,t),y||OA(A,r- -64|0,c),dg(r+32|0,64),i&&Qg(A+c|0,I+c|0,C-c|0,e-((C>>>0<c>>>0)+E|0)|0,o,r),dg(r,32),ng(I=r+96|0,A,C,e),Dg(I,g),dg(I,256),n=r+352|0,0}function sA(A,g){var I,C=0,e=0;I=g;A:{g:{I:{if(g&=255){if(3&A)for(;;){if(!(C=i[0|A])|(0|g)==(0|C))break A;if(!(3&(A=A+1|0)))break}if(-2139062144!=(-2139062144&((C=a[A>>2])|16843008-C)))break I;for(e=t(g,16843009);;){if(-2139062144!=(-2139062144&(16843008-(g=C^e)|g)))break I;if(C=a[A+4>>2],A=g=A+4|0,-2139062144!=(-2139062144&(16843008-C|C)))break}break g}C=A;C:{e:{B:if(3&A){if(g=0,!i[0|A])break C;for(;;){if(!(3&(A=A+1|0)))break B;if(!i[0|A])break}break e}for(;g=A,A=A+4|0,-2139062144==(-2139062144&(16843008-(e=a[g>>2])|e)););for(;g=(A=g)+1|0,i[0|A];);}g=A-C|0}A=g+C|0;break A}g=A}for(;;){if(!(C=i[0|(A=g)]))break A;if(g=A+1|0,(0|C)==(255&I))break}}return i[0|A]==(255&I)?A:0}function pA(A,g,I,C,e,B,i){var r,t,Q=0,o=0,c=0;n=r=n-96|0,AA(r,B,i),i=r+32|0,t=B+16|0,Jg[a[8808]](i,32,0,t,r),B=-1;A:{g:if(!(0|Jg[a[8802]](I,g,C,e,i))){if(B=0,!A)break A;I:{if(!(((I=!!(0|e))|!e&C>>>0>g-A>>>0)&A>>>0<g>>>0)&(!e&C>>>0<=A-g>>>0|A>>>0<=g>>>0)){if(!(C|e))break I;I=(B=!e&C>>>0>=32|!!(0|e))?32:C,Q=B?0:e}else g=TA(A,g,C),I=(B=I|!e&C>>>0>=32)?32:C,Q=B?0:e;if(B=Q,c=OA(r- -64|0,g,I),rg(i=r+32|0,i,o=I+32|0,B=o>>>0<32?B+1|0:B,t,r),A=OA(A,c,I),dg(i,64),B=0,!e&C>>>0<33)break g;Qg(A+I|0,g+I|0,C-I|0,e-(Q+(I>>>0>C>>>0)|0)|0,t,r);break g}rg(A=r+32|0,A,32,0,t,r),dg(A,64)}dg(r,32)}return n=r+96|0,B}function fA(A,g,I,C,e,B,r,t,Q,o){var c,E;return n=c=n-400|0,a[c+4>>2]=0,$(E=c+16|0,Q,o),o=i[Q+20|0]|i[Q+21|0]<<8|i[Q+22|0]<<16|i[Q+23|0]<<24,a[c+8>>2]=i[Q+16|0]|i[Q+17|0]<<8|i[Q+18|0]<<16|i[Q+19|0]<<24,a[c+12>>2]=o,yg(o=c+80|0,64,c+4|0,E),fg(Q=c+144|0,o),dg(o,64),ng(Q,B,r,t),ng(Q,35104,0-r&15,0),ng(Q,g,I,C),ng(Q,35104,0-I&15,0),a[c+72>>2]=r,a[c+76>>2]=t,ng(Q,B=c+72|0,8,0),a[c+72>>2]=I,a[c+76>>2]=C,ng(Q,B,8,0),Dg(Q,B=c+48|0),dg(Q,256),Q=nA(B,e),dg(B,16),A&&(Q?(VA(A,0,I),Q=-1):(eg(A,g,I,C,c+4|0,c+16|0),Q=0)),dg(c+16|0,32),n=c+400|0,Q}function DA(A,g,I,C,e,B,r,t,Q,o,c){var E,y,_;return n=E=n-384|0,a[E+4>>2]=0,$(y=E+16|0,o,c),c=i[o+20|0]|i[o+21|0]<<8|i[o+22|0]<<16|i[o+23|0]<<24,a[E+8>>2]=i[o+16|0]|i[o+17|0]<<8|i[o+18|0]<<16|i[o+19|0]<<24,a[E+12>>2]=c,yg(c=E- -64|0,64,_=E+4|0,y),fg(o=E+128|0,c),dg(c,64),ng(o,r,t,Q),ng(o,35104,0-t&15,0),eg(A,C,e,B,_,y),ng(o,A,e,B),ng(o,35104,0-e&15,0),a[E+56>>2]=t,a[E+60>>2]=Q,ng(o,A=E+56|0,8,0),a[E+56>>2]=e,a[E+60>>2]=B,ng(o,A,8,0),Dg(o,g),dg(o,256),I&&(a[I>>2]=16,a[I+4>>2]=0),dg(E+16|0,32),n=E+384|0,0}function wA(A,g,I,C){var e,B=0;return n=e=n-208|0,a[e+72>>2]=0,a[e+76>>2]=0,B=a[8479],a[e+8>>2]=a[8478],a[e+12>>2]=B,B=a[8481],a[e+16>>2]=a[8480],a[e+20>>2]=B,B=a[8483],a[e+24>>2]=a[8482],a[e+28>>2]=B,B=a[8485],a[e+32>>2]=a[8484],a[e+36>>2]=B,B=a[8487],a[e+40>>2]=a[8486],a[e+44>>2]=B,B=a[8489],a[e+48>>2]=a[8488],a[e+52>>2]=B,B=a[8491],a[e+56>>2]=a[8490],a[e+60>>2]=B,a[e+64>>2]=0,a[e+68>>2]=0,B=a[8477],a[e>>2]=a[8476],a[e+4>>2]=B,W(e,g,I,C),J(e,A),n=e+208|0,0}function kA(A,g){var I,e=0,B=0,a=0,r=0;if(C[15+(I=n-16|0)|0]=0,g){if(g>>>0>=4)for(r=-4&g;e=A+B|0,C[I+15|0]=i[0|e]|i[I+15|0],C[I+15|0]=i[e+1|0]|i[I+15|0],C[I+15|0]=i[e+2|0]|i[I+15|0],C[I+15|0]=i[e+3|0]|i[I+15|0],B=B+4|0,(0|r)!=(0|(a=a+4|0)););if(e=3&g)for(g=0;C[I+15|0]=i[A+B|0]|i[I+15|0],B=B+1|0,(0|e)!=(0|(g=g+1|0)););}return i[I+15|0]-1>>>8&1}function dA(A){var g=0;a[A+64>>2]=0,a[A+68>>2]=0,a[A+72>>2]=0,a[A+76>>2]=0,g=a[8477],a[A>>2]=a[8476],a[A+4>>2]=g,g=a[8479],a[A+8>>2]=a[8478],a[A+12>>2]=g,g=a[8481],a[A+16>>2]=a[8480],a[A+20>>2]=g,g=a[8483],a[A+24>>2]=a[8482],a[A+28>>2]=g,g=a[8485],a[A+32>>2]=a[8484],a[A+36>>2]=g,g=a[8487],a[A+40>>2]=a[8486],a[A+44>>2]=g,g=a[8489],a[A+48>>2]=a[8488],a[A+52>>2]=g,g=a[8491],a[A+56>>2]=a[8490],a[A+60>>2]=g}function lA(A,g,I){var e,B=0,r=0;if(a[12+(e=n-16|0)>>2]=A,a[e+8>>2]=g,A=0,C[e+7|0]=0,I){if(g=1&I,1!=(0|I))for(r=-2&I,I=0;C[e+7|0]=i[e+7|0]|i[a[e+12>>2]+A|0]^i[a[e+8>>2]+A|0],B=1|A,C[e+7|0]=i[e+7|0]|i[B+a[e+12>>2]|0]^i[a[e+8>>2]+B|0],A=A+2|0,(0|r)!=(0|(I=I+2|0)););g&&(C[e+7|0]=i[e+7|0]|i[a[e+12>>2]+A|0]^i[a[e+8>>2]+A|0])}return(i[e+7|0]-1>>>8&1)-1|0}function uA(A){for(var g=0,I=0,C=0,e=0,B=0,a=0,r=0,t=0,Q=0,o=0;e=(I=i[A+C|0])^i[0|(g=C+2432|0)]|e,B=I^i[g+192|0]|B,a=I^i[g+160|0]|a,r=I^i[g+128|0]|r,t=I^i[g+96|0]|t,Q=I^i[g- -64|0]|Q,o=I^i[g+32|0]|o,31!=(0|(C=C+1|0)););return((255&((g=127^(A=127&i[A+31|0]))|B))-1|(255&(g|a))-1|(255&(g|r))-1|(255&(122^A|t))-1|(255&(5^A|Q))-1|(255&(A|o))-1|(255&(A|e))-1)>>>8&1}function vA(A,g,I){var C=0,e=0,B=0,a=0;return e=31&(B=a=63&I),B=B>>>0>=32?-1>>>e|0:(C=-1>>>e|0)|(1<<e)-1<<32-e,B&=A,C&=g,e=31&a,a>>>0>=32?(C=B<<e,a=0):(C=(1<<e)-1&B>>>32-e|C<<e,a=B<<e),B=C,C=31&(e=0-I&63),e>>>0>=32?(C=-1<<C,I=0):C=(I=-1<<C)|(1<<C)-1&-1>>>32-C,A&=I,g&=C,C=31&e,e>>>0>=32?(I=0,A=g>>>C|0):(I=g>>>C|0,A=((1<<C)-1&g)<<32-C|A>>>C),h=I|B,A|a}function SA(A,g,I,C,e,B,i,r,t,Q){var o,c,E;return n=o=n-352|0,yg(E=o+32|0,64,t,Q),fg(c=o+96|0,E),dg(E,64),ng(c,B,i,r),ng(c,35168,0-i&15,0),ng(c,g,I,C),ng(c,35168,0-I&15,0),a[o+24>>2]=i,a[o+28>>2]=r,ng(c,B=o+24|0,8,0),a[o+24>>2]=I,a[o+28>>2]=C,ng(c,B,8,0),Dg(c,o),dg(c,256),B=nA(o,e),dg(o,16),A&&(B?(VA(A,0,I),B=-1):(JA(A,g,I,C,t,1,Q),B=0)),n=o+352|0,B}function bA(A,g,I,C,e,B,i,r,t,Q,o){var c,E,y;return n=c=n-336|0,yg(y=c+16|0,64,Q,o),fg(E=c+80|0,y),dg(y,64),ng(E,i,r,t),ng(E,35168,0-r&15,0),JA(A,C,e,B,Q,1,o),ng(E,A,e,B),ng(E,35168,0-e&15,0),a[c+8>>2]=r,a[c+12>>2]=t,ng(E,A=c+8|0,8,0),a[c+8>>2]=e,a[c+12>>2]=B,ng(E,A,8,0),Dg(E,g),dg(E,256),I&&(a[I>>2]=16,a[I+4>>2]=0),n=c+336|0,0}function MA(A,g,I,C,e,B,i,r,t,Q){var o,c,E;return n=o=n-352|0,_g(E=o+32|0,t,Q),fg(c=o+96|0,E),dg(E,64),ng(c,B,i,r),a[o+24>>2]=i,a[o+28>>2]=r,ng(c,B=o+24|0,8,0),ng(c,g,I,C),a[o+24>>2]=I,a[o+28>>2]=C,ng(c,B,8,0),Dg(c,o),dg(c,256),B=nA(o,e),dg(o,16),A&&(B?(VA(A,0,I),B=-1):(Cg(A,g,I,C,t,Q),B=0)),n=o+352|0,B}function FA(A,g,I,C,e,B,i,r,t,Q,o){var c,E,y;return n=c=n-336|0,_g(y=c+16|0,Q,o),fg(E=c+80|0,y),dg(y,64),ng(E,i,r,t),a[c+8>>2]=r,a[c+12>>2]=t,ng(E,i=c+8|0,8,0),Cg(A,C,e,B,Q,o),ng(E,A,e,B),a[c+8>>2]=e,a[c+12>>2]=B,ng(E,i,8,0),Dg(E,g),dg(E,256),I&&(a[I>>2]=16,a[I+4>>2]=0),n=c+336|0,0}function NA(A,g,I,C,e,B,i,r,t,Q,o){var c=0,E=0,y=0;return E=-1,(c=C>>>0<32)&!e||!(c=e-c|0)&(y=C-32|0)>>>0>4294967263|c|!r&i>>>0>4294967263|r||(E=0|Jg[a[o>>2]](A,I,y,(I+C|0)-32|0,32,B,i,t,Q)),g&&(a[g>>2]=E?0:C-32|0,a[g+4>>2]=E?0:e-(C>>>0<32)|0),E}function KA(A,g){var I;for(a[12+(I=n-16|0)>>2]=A,a[I+8>>2]=g,A=0,a[I+4>>2]=0;a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+A|0]^i[a[I+8>>2]+A|0],g=1|A,a[I+4>>2]=a[I+4>>2]|i[g+a[I+12>>2]|0]^i[g+a[I+8>>2]|0],32!=(0|(A=A+2|0)););return(a[I+4>>2]-1>>>8&1)-1|0}function YA(A){var g=0,I=0,e=0,B=0,a=0;for(g=1;I=(e=g)+i[0|(g=A+B|0)]|0,C[0|g]=I,I=i[g+1|0]+(I>>>8|0)|0,C[g+1|0]=I,I=i[g+2|0]+(I>>>8|0)|0,C[g+2|0]=I,e=g,g=i[g+3|0]+(I>>>8|0)|0,C[e+3|0]=g,g=g>>>8|0,B=B+4|0,4!=(0|(a=a+4|0)););}function HA(A,g,I,C,e,i,r,t,Q,o,c){return!e&C>>>0>4294967263|!!(0|e)|!t&r>>>0>=4294967264|!!(0|t)?(ig(),B()):(A=0|Jg[a[c>>2]](A,A+C|0,32,I,C,i,r,Q,o),g&&(C=(I=C+32|0)>>>0<32?e+1|0:e,a[g>>2]=A?0:I,a[g+4>>2]=A?0:C)),A}function GA(A,g,I,C){var e,B,a,i,r=0,Q=0;return i=t(r=I>>>16|0,Q=A>>>16|0),r=(65535&(Q=((a=t(e=65535&I,B=65535&A))>>>16|0)+t(Q,e)|0))+t(r,B)|0,h=(t(g,I)+i|0)+t(A,C)+(Q>>>16)+(r>>>16)|0,65535&a|r<<16}function JA(A,g,I,C,e,i,r){var t=0,Q=0;t=C,1==(((t=(Q=I+63|0)>>>0<63?t+1|0:t)>>>6|0)+!!(0|(t=(63&t)<<26|Q>>>6))|0)&i>>>0>(Q=0-t|0)>>>0|1==(0|C)|C>>>0>1?(ig(),B()):Jg[a[9075]](A,g,I,C,e,i,r)}function UA(A){var g=0;a[A+32>>2]=0,a[A+36>>2]=0,g=a[8689],a[A>>2]=a[8688],a[A+4>>2]=g,g=a[8691],a[A+8>>2]=a[8690],a[A+12>>2]=g,g=a[8693],a[A+16>>2]=a[8692],a[A+20>>2]=g,g=a[8695],a[A+24>>2]=a[8694],a[A+28>>2]=g}function xA(A,g){A|=0;var I,e=0,B=0,a=0;if(n=I=n-16|0,g|=0)for(;C[I+15|0]=0,B=A+e|0,a=0|c(36304,I+15|0,0),C[0|B]=a,(0|(e=e+1|0))!=(0|g););n=I+16|0}function mA(A,g,I,C,e,B,a){var i,r,t=0;return n=i=n-32|0,t=-1,(r=I>>>0<16)&!C||XA(i,B,a)||(t=pA(A,g+16|0,g,I-16|0,C-r|0,e,i),dg(i,32)),n=i+32|0,t}function PA(A){var g,I;A:{if(!((A=(g=a[8800])+(I=A+7&-8)|0)>>>0<=g>>>0&&I)){if(A>>>0<=Ug()<<16>>>0)break A;if(0|_(0|A))break A}return a[9280]=48,-1}return a[8800]=A,g}function RA(A,g){var I,e,B;n=I=n-176|0,iA(e=I+96|0,g+80|0),d(B=I+48|0,g,e),d(I,g+40|0,e),yA(A,I),yA(I+144|0,B),C[A+31|0]=i[A+31|0]^i[I+144|0]<<7,n=I+176|0}function LA(A,g,I,C,e,i,r,t,Q,o,c,E){return I&&(a[I>>2]=32,a[I+4>>2]=0),!Q&t>>>0<4294967264&!i&e>>>0<=4294967263||(ig(),B()),0|Jg[a[E>>2]](A,g,32,C,e,r,t,o,c)}function TA(A,g,I){var e=0;if(A>>>0<g>>>0)return OA(A,g,I);if(I)for(e=A+I|0,g=g+I|0;g=g-1|0,C[0|(e=e-1|0)]=i[0|g],I=I-1|0;);return A}function qA(A,g,I,C,e,a,i){var r,t=0;if(n=r=n-32|0,!C&I>>>0<4294967280)return t=-1,XA(r,a,i)||(t=hA(A+16|0,A,g,I,C,e,r),dg(r,32)),n=r+32|0,t;ig(),B()}function zA(A,g,I,C,e,B){return g|=0,0|(!(C|=0)&(I|=0)>>>0>=16|C?pA(A|=0,g+16|0,g,I-16|0,C-(I>>>0<16)|0,e|=0,B|=0):-1)}function jA(A,g,I,C,e,B,i,r,t,Q,o){return!C&I>>>0>4294967263|C|!r&i>>>0>4294967263|r?-1:0|Jg[a[o>>2]](A,g,I,e,32,B,i,t,Q)}function XA(A,g,I){A|=0;var C,e=0;return n=C=n-32|0,e=-1,EA(C,I|=0,g|=0)||(e=AA(A,35184,C)),n=C+32|0,0|e}function OA(A,g,I){var e=0;if(I)for(e=A;C[0|e]=i[0|g],e=e+1|0,g=g+1|0,I=I-1|0;);return A}function VA(A,g,I){var e=0;if(I)for(e=A;C[0|e]=g,e=e+1|0,I=I-1|0;);return A}function ZA(A,g,I){return A|=0,g|=0,(I|=0)>>>0>=256&&(E(1248,1175,107,1055),B()),0|R(A,g,255&I)}function WA(A,g){var I;n=I=n+-64|0,J(A,I),W(A=A+208|0,I,64,0),J(A,g),dg(I,64),n=I- -64|0}function $A(A,g,I,C,e,B,a){return 0|hA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)}function Ag(A,g,I,C,e,B,a){return 0|pA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)}function gg(A,g){var I;n=I=n-32|0,gA(A,I),eA(A=A+104|0,I,32),gA(A,g),dg(I,32),n=I+32|0}function Ig(A,g){var I=0;return(-1>>>(I=31&g)&A)<<I|((I=A)&-1<<(A=0-g&31))>>>A}function Cg(A,g,I,C,e,i){1==(0|C)|C>>>0>1&&(ig(),B()),Jg[a[9074]](A,g,I,C,e,1,0,i)}function eg(A,g,I,C,e,i){1==(0|C)|C>>>0>1&&(ig(),B()),Jg[a[9075]](A,g,I,C,e,1,i)}function Bg(){var A;n=A=n-16|0,C[A+15|0]=0,c(36340,A+15|0,0),n=A+16|0}function ag(A,g,I){return 0|EA(A|=0,g|=0,I|=0)}function ig(){var A;(A=a[9413])&&Jg[0|A](),y(),B()}function rg(A,g,I,C,e,B){Jg[a[8809]](A,g,I,C,e,0,0,B)}function tg(A,g){return A|=0,xA(g|=0,32),0|sg(A,g)}function Qg(A,g,I,C,e,B){Jg[a[8809]](A,g,I,C,e,1,0,B)}function og(A){return A?31-Q(A-1^A)|0:32}function cg(A,g,I,C){Jg[a[9075]](A,g,40,0,I,0,C)}function Eg(A,g){return 0|sg(A|=0,g|=0)}function yg(A,g,I,C){Jg[a[9073]](A,g,0,I,C)}function _g(A,g,I){Jg[a[9072]](A,64,0,g,I)}function ng(A,g,I,C){Jg[a[8804]](A,g,I,C)}function hg(A,g,I,C){return W(A,g,I,C),0}function sg(A,g){return 0|Jg[a[8807]](A,g)}function pg(A,g,I){return eA(A,g,I),0}function fg(A,g){Jg[a[8803]](A,g)}function Dg(A,g){Jg[a[8805]](A,g)}function wg(A){xA(A|=0,32)}function kg(A){xA(A|=0,16)}function dg(A,g){VA(A,0,g)}function lg(){return 208}function ug(){return 16}function vg(){return 32}function Sg(){return 24}function bg(){return-17}function Mg(){return-33}function Fg(){return 64}function Ng(){return 0}function Kg(){return 8}function Yg(){return 1}function Hg(){return 2}e(g=i,1024,"cmFuZG9tYnl0ZXMAYjY0X3BvcyA8PSBiNjRfbGVuAGNyeXB0b19nZW5lcmljaGFzaF9ibGFrZTJiX2ZpbmFsAHJhbmRvbWJ5dGVzL3JhbmRvbWJ5dGVzLmMAc29kaXVtL2NvZGVjcy5jAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9ibGFrZTJiLXJlZi5jAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9nZW5lcmljaGFzaF9ibGFrZTJiLmMAYnVmX2xlbiA8PSBTSVpFX01BWABvdXRsZW4gPD0gVUlOVDhfTUFYAFMtPmJ1ZmxlbiA8PSBCTEFLRTJCX0JMT0NLQllURVMAc29kaXVtX2JpbjJiYXNlNjQAMS4wLjIwAAAAALZ4Wf+FctMAvW4V/w8KagApwAEAmOh5/7w8oP+Zcc7/ALfi/rQNSP8AAAAAAAAAALCgDv7TyYb/nhiPAH9pNQBgDL0Ap9f7/59MgP5qZeH/HvwEAJIMrg=="),e(g,1424,"WfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQ"),e(g,1472,"hTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/"),e(g,2464,"AQ=="),e(g,2496,"JuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQ="),e(g,2687,"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"),e(g,33660,"AQ=="),e(g,33696,"AQ=="),e(g,33728,"4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4KZykpFPwv0kaFCrcnJskmXDghGy7tKsRa/G0sTd+zlZ0TDThT3mOvi1RzCmWosnc8uwpqduau7UcuycKBOzWCFIUscpJkA/FMoei/ogEwQrxLZhqokZf40HCLS8IwvlQGo1FsxxhS79YZ6JLREKllVSQGmdYqIHFXhTUO9LjRuzJwoGoQyNDSuBbBpBlTq0FRCGw3Hpnrjt9Md0gnqEib4bW8sDRjWsnFswwcOcuKQeNKqthOc+Njd0/KnFujuLLW828uaPyy713ugo90YC8XQ29jpXhyq/ChFHjIhOw5ZBoIAseMKB5jI/r/vpDpvYLe62xQpBV5xrL3o/m+K1Ny4/J4ccacYSbqzj4nygfCwCHHuIbRHuvgzdZ92up40W7uf0999bpvF3KqZ/AGppjIosV9YwquDfm+BJg/ERtHHBM1C3EbhH0EI/V32yiTJMdAe6vKMry+yRUKvp48TA0QnMRnHUO2Qj7LvtTFTCp+ZfycKX9Z7PrWOqtvy18XWEdKjBlEbIA="),e(g,34752,"Z+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FuYL4pCkUQ3cc/7wLWl27XpW8JWOfER8Vmkgj+S1V4cq5iqB9gBW4MSvoUxJMN9DFV0Xb5y/rHegKcG3Jt08ZvBwWmb5IZHvu/GncEPzKEMJG8s6S2qhHRK3KmwXNqI+XZSUT6YbcYxqMgnA7DHf1m/8wvgxkeRp9VRY8oGZykpFIUKtyc4IRsu/G0sTRMNOFNUcwpluwpqdi7JwoGFLHKSoei/oktmGqhwi0vCo1FsxxnoktEkBpnWhTUO9HCgahAWwaQZCGw3Hkx3SCe1vLA0swwcOUqq2E5Pypxb828uaO6Cj3RvY6V4FHjIhAgCx4z6/76Q62xQpPej+b7yeHHGgA=="),e(g,35120,"U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMB"),e(g,35200,"IJMBAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQ=="),e(g,35248,"xmNjpfh8fITud3eZ9nt7jf/y8g3Wa2u93m9vsZHFxVRgMDBQAgEBA85nZ6lWKyt95/7+GbXX12JNq6vm7HZ2mo/KykUfgoKdicnJQPp9fYfv+voVsllZ645HR8n78PALQa2t7LPU1GdfoqL9Ra+v6iOcnL9TpKT35HJylpvAwFt1t7fC4f39HD2Tk65MJiZqbDY2Wn4/P0H19/cCg8zMT2g0NFxRpaX00eXlNPnx8QjicXGTq9jYc2IxMVMqFRU/CAQEDJXHx1JGIyNlncPDXjAYGCg3lpahCgUFDy+amrUOBwcJJBISNhuAgJvf4uI9zevrJk4nJ2l/srLN6nV1nxIJCRsdg4OeWCwsdDQaGi42Gxst3G5usrRaWu5boKD7pFJS9nY7O0231tZhfbOzzlIpKXvd4+M+Xi8vcROEhJemU1P1udHRaAAAAADB7e0sQCAgYOP8/B95sbHItltb7dRqar6Ny8tGZ76+2XI5OUuUSkremExM1LBYWOiFz89Ku9DQa8Xv7ypPqqrl7fv7FoZDQ8WaTU3XZjMzVRGFhZSKRUXP6fn5EAQCAgb+f3+BoFBQ8Hg8PEQln5+6S6io46JRUfNdo6P+gEBAwAWPj4o/kpKtIZ2dvHA4OEjx9fUEY7y833e2tsGv2tp1QiEhYyAQEDDl//8a/fPzDr/S0m2Bzc1MGAwMFCYTEzXD7Owvvl9f4TWXl6KIRETMLhcXOZPExFdVp6fy/H5+gno9PUfIZGSsul1d5zIZGSvmc3OVwGBgoBmBgZieT0/Ro9zcf0QiImZUKip+O5CQqwuIiIOMRkbKx+7uKWu4uNMoFBQ8p97eebxeXuIWCwsdrdvbdtvg4DtkMjJWdDo6ThQKCh6SSUnbDAYGCkgkJGy4XFzkn8LCXb3T025DrKzvxGJipjmRkagxlZWk0+TkN/J5eYvV5+cyi8jIQ243N1nabW23AY2NjLHV1WScTk7SSamp4NhsbLSsVlb68/T0B8/q6iXKZWWv9Hp6jkeurukQCAgYb7q61fB4eIhKJSVvXC4ucjgcHCRXpqbxc7S0x5fGxlHL6Ogjod3dfOh0dJw+Hx8hlktL3WG9vdwNi4uGD4qKheBwcJB8Pj5CcbW1xMxmZqqQSEjYBgMDBff29gEcDg4SwmFho2o1NV+uV1f5abm50BeGhpGZwcFYOh0dJyeenrnZ4eE46/j4EyuYmLMiEREz0mlpu6nZ2XAHjo6JM5SUpy2bm7Y8Hh4iFYeHksnp6SCHzs5JqlVV/1AoKHil3996A4yMj1mhofgJiYmAGg0NF2W/v9rX5uYxhEJCxtBoaLiCQUHDKZmZsFotLXceDw8Re7Cwy6hUVPxtu7vWLBYWOgoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAAR");var Gg,Jg=(Gg=[null,function(A,g,I,e,B){var r,t,Q;return A|=0,g|=0,I|=0,e|=0,B|=0,n=r=(t=n)-128&-64,a[r>>2]=67108863&(i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),a[r+4>>2]=(i[B+3|0]|i[B+4|0]<<8|i[B+5|0]<<16|i[B+6|0]<<24)>>>2&67108611,a[r+8>>2]=(i[B+6|0]|i[B+7|0]<<8|i[B+8|0]<<16|i[B+9|0]<<24)>>>4&67092735,a[r+12>>2]=(i[B+9|0]|i[B+10|0]<<8|i[B+11|0]<<16|i[B+12|0]<<24)>>>6&66076671,Q=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[r+20>>2]=0,a[r+24>>2]=0,a[r+28>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,a[r+16>>2]=Q>>>8&1048575,a[r+40>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[r+44>>2]=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[r+48>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,B=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,C[r+80|0]=0,a[r+56>>2]=0,a[r+60>>2]=0,a[r+52>>2]=B,BA(r,g,I,e),cA(r,A),n=t,0},function(A,g,I,e,B){var r,t,Q;return A|=0,g|=0,I|=0,e|=0,B|=0,n=r=(t=n)-192&-64,a[r+64>>2]=67108863&(i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),a[r+68>>2]=(i[B+3|0]|i[B+4|0]<<8|i[B+5|0]<<16|i[B+6|0]<<24)>>>2&67108611,a[r+72>>2]=(i[B+6|0]|i[B+7|0]<<8|i[B+8|0]<<16|i[B+9|0]<<24)>>>4&67092735,a[r+76>>2]=(i[B+9|0]|i[B+10|0]<<8|i[B+11|0]<<16|i[B+12|0]<<24)>>>6&66076671,Q=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[r+84>>2]=0,a[r+88>>2]=0,a[r+92>>2]=0,a[r+96>>2]=0,a[r+100>>2]=0,a[r+80>>2]=Q>>>8&1048575,a[r+104>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[r+108>>2]=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[r+112>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,B=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,C[r+144|0]=0,a[r+120>>2]=0,a[r+124>>2]=0,a[r+116>>2]=B,BA(B=r- -64|0,g,I,e),cA(B,g=r+48|0),A=nA(A,g),n=t,0|A},function(A,g){var I;return g|=0,a[(A|=0)>>2]=67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),a[A+4>>2]=(i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108611,a[A+8>>2]=(i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67092735,a[A+12>>2]=(i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6&66076671,I=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,a[A+20>>2]=0,a[A+24>>2]=0,a[A+28>>2]=0,a[A+32>>2]=0,a[A+36>>2]=0,a[A+16>>2]=I>>>8&1048575,a[A+40>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,a[A+44>>2]=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,a[A+48>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,C[A+80|0]=0,a[A+56>>2]=0,a[A+60>>2]=0,a[A+52>>2]=g,0},function(A,g,I,C){return BA(A|=0,g|=0,I|=0,C|=0),0},function(A,g){return cA(A|=0,g|=0),0},function(A,g,I){A|=0,g|=0,I|=0;var e,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,rA=0,tA=0,QA=0,oA=0,cA=0,EA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,kA=0,dA=0,lA=0;for(n=e=n-368|0;p=(t=i[I+B|0])^i[0|(o=B+33664|0)]|p,s=t^i[o+192|0]|s,_=t^i[o+160|0]|_,y=t^i[o+128|0]|y,Q=t^i[o+96|0]|Q,c=t^i[o- -64|0]|c,r=t^i[o+32|0]|r,31!=(0|(B=B+1|0)););if(B=-1,!(256&((255&((t=127^(o=127&i[I+31|0]))|s))-1|(255&(t|_))-1|(255&(t|y))-1|(255&(87^o|Q))-1|(255&(c|o))-1|(255&(r|o))-1|(255&(o|p))-1))){for(B=g,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,a[e+360>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,a[e+364>>2]=g,g=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[e+352>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[e+356>>2]=g,r=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,g=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,a[e+336>>2]=g,a[e+340>>2]=r,r=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[e+344>>2]=i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,a[e+348>>2]=r,C[e+336|0]=248&g,C[e+367|0]=63&i[e+367|0]|64,V(e+288|0,I),a[e+260>>2]=0,a[e+264>>2]=0,a[e+268>>2]=0,a[e+272>>2]=0,a[e+276>>2]=0,a[e+208>>2]=0,a[e+212>>2]=0,a[e+216>>2]=0,a[e+220>>2]=0,a[e+224>>2]=0,a[e+228>>2]=0,g=a[e+308>>2],a[e+160>>2]=a[e+304>>2],a[e+164>>2]=g,g=a[e+316>>2],a[e+168>>2]=a[e+312>>2],a[e+172>>2]=g,g=a[e+324>>2],a[e+176>>2]=a[e+320>>2],a[e+180>>2]=g,a[e+244>>2]=0,a[e+248>>2]=0,a[e+240>>2]=1,a[e+252>>2]=0,a[e+256>>2]=0,a[e+192>>2]=0,a[e+196>>2]=0,a[e+200>>2]=0,a[e+204>>2]=0,g=a[e+292>>2],a[e+144>>2]=a[e+288>>2],a[e+148>>2]=g,g=a[e+300>>2],a[e+152>>2]=a[e+296>>2],a[e+156>>2]=g,a[e+116>>2]=0,a[e+120>>2]=0,a[e+124>>2]=0,a[e+128>>2]=0,a[e+132>>2]=0,a[e+100>>2]=0,a[e+104>>2]=0,a[e+96>>2]=1,a[e+108>>2]=0,a[e+112>>2]=0,I=254;W=a[e+276>>2],t=a[e+180>>2],$=a[e+96>>2],AA=a[e+192>>2],gA=a[e+144>>2],IA=a[e+240>>2],CA=a[e+100>>2],eA=a[e+196>>2],BA=a[e+148>>2],aA=a[e+244>>2],F=a[e+104>>2],rA=a[e+200>>2],N=a[e+152>>2],tA=a[e+248>>2],G=a[e+108>>2],QA=a[e+204>>2],J=a[e+156>>2],oA=a[e+252>>2],Y=a[e+112>>2],cA=a[e+208>>2],b=a[e+160>>2],EA=a[e+256>>2],p=a[e+116>>2],_A=a[e+212>>2],E=a[e+164>>2],nA=a[e+260>>2],s=a[e+120>>2],hA=a[e+216>>2],_=a[e+168>>2],sA=a[e+264>>2],y=a[e+124>>2],pA=a[e+220>>2],Q=a[e+172>>2],fA=a[e+268>>2],c=a[e+128>>2],DA=a[e+224>>2],r=a[e+176>>2],S=a[e+272>>2],wA=I,M=(l=(g=0-((g=Z)^(Z=i[(kA=e+336|0)+(I>>>3|0)|0]>>>(7&I)&1))|0)&((B=a[e+132>>2])^(z=a[e+228>>2])))^B,a[e+132>>2]=M,j=t^(u=g&(t^W)),a[e+84>>2]=j-M,H=c^(D=g&(c^DA)),a[e+128>>2]=H,X=(v=g&(r^S))^r,a[e+80>>2]=X-H,x=y^(w=g&(y^pA)),a[e+124>>2]=x,dA=Q^(k=g&(Q^fA)),a[e+76>>2]=dA-x,m=s^(f=g&(s^hA)),a[e+120>>2]=m,lA=_^(o=g&(_^sA)),a[e+72>>2]=lA-m,P=p^(t=g&(p^_A)),a[e+116>>2]=P,R=E^(p=g&(E^nA)),a[e+68>>2]=R-P,L=Y^(s=g&(Y^cA)),a[e+112>>2]=L,U=b^(_=g&(b^EA)),a[e+64>>2]=U-L,T=G^(y=g&(G^QA)),a[e+108>>2]=T,O=J^(Q=g&(J^oA)),a[e+60>>2]=O-T,q=F^(c=g&(F^rA)),a[e+104>>2]=q,G=N^(r=g&(N^tA)),a[e+56>>2]=G-q,F=CA^(B=g&(CA^eA)),a[e+100>>2]=F,J=BA^(I=g&(BA^aA)),a[e+52>>2]=J-F,N=$^(Y=g&($^AA)),a[e+96>>2]=N,b=(g&=gA^IA)^gA,a[e+48>>2]=b-N,E=u^W,l^=z,a[e+36>>2]=E-l,u=v^S,D^=DA,a[e+32>>2]=u-D,v=k^fA,w^=pA,a[e+28>>2]=v-w,k=o^sA,f^=hA,a[e+24>>2]=k-f,o=p^nA,t^=_A,a[e+20>>2]=o-t,p=_^EA,s^=cA,a[e+16>>2]=p-s,_=Q^oA,y^=QA,a[e+12>>2]=_-y,Q=r^tA,c^=rA,a[e+8>>2]=Q-c,r=I^aA,B^=eA,a[e+4>>2]=r-B,I=g^IA,g=Y^AA,a[e>>2]=I-g,a[e+276>>2]=E+l,a[e+272>>2]=u+D,a[e+268>>2]=w+v,a[e+264>>2]=f+k,a[e+260>>2]=t+o,a[e+256>>2]=s+p,a[e+248>>2]=Q+c,a[e+244>>2]=B+r,a[e+240>>2]=g+I,a[e+252>>2]=y+_,a[e+228>>2]=M+j,a[e+224>>2]=H+X,a[e+220>>2]=x+dA,a[e+216>>2]=m+lA,a[e+212>>2]=P+R,a[e+208>>2]=U+L,a[e+204>>2]=T+O,a[e+200>>2]=G+q,a[e+196>>2]=F+J,a[e+192>>2]=b+N,d(j=e+96|0,H=e+48|0,M=e+240|0),d(S=e+192|0,S,e),K(H,e),K(e,M),E=a[e+192>>2],l=a[e+96>>2],u=a[e+196>>2],D=a[e+100>>2],v=a[e+200>>2],w=a[e+104>>2],k=a[e+204>>2],f=a[e+108>>2],o=a[e+208>>2],t=a[e+112>>2],p=a[e+212>>2],s=a[e+116>>2],_=a[e+216>>2],y=a[e+120>>2],Q=a[e+220>>2],c=a[e+124>>2],r=a[e+224>>2],B=a[e+128>>2],I=a[e+228>>2],g=a[e+132>>2],a[e+180>>2]=I+g,a[e+176>>2]=B+r,a[e+172>>2]=Q+c,a[e+168>>2]=y+_,a[e+164>>2]=s+p,a[e+160>>2]=t+o,a[e+156>>2]=f+k,a[e+152>>2]=w+v,a[e+148>>2]=u+D,a[e+144>>2]=E+l,a[e+228>>2]=g-I,a[e+224>>2]=B-r,a[e+220>>2]=c-Q,a[e+216>>2]=y-_,a[e+212>>2]=s-p,a[e+208>>2]=t-o,a[e+204>>2]=f-k,a[e+200>>2]=w-v,a[e+196>>2]=D-u,a[e+192>>2]=l-E,d(M,e,H),x=a[e+52>>2],f=a[e+4>>2],m=a[e+56>>2],o=a[e+8>>2],P=a[e+64>>2],_=a[e+16>>2],L=a[e+60>>2],y=a[e+12>>2],T=a[e+72>>2],Q=a[e+24>>2],q=a[e+68>>2],c=a[e+20>>2],F=a[e+80>>2],r=a[e+32>>2],N=a[e+76>>2],B=a[e+28>>2],z=a[e+84>>2],g=a[e+36>>2],X=a[e+48>>2],I=a[e>>2]-X|0,a[e>>2]=I,g=g-z|0,a[e+36>>2]=g,Y=B-N|0,a[e+28>>2]=Y,b=r-F|0,a[e+32>>2]=b,t=c-q|0,a[e+20>>2]=t,p=Q-T|0,a[e+24>>2]=p,s=y-L|0,a[e+12>>2]=s,_=_-P|0,a[e+16>>2]=_,y=o-m|0,a[e+8>>2]=y,r=f-x|0,a[e+4>>2]=r,K(S,S),g=GA(g,g>>31,121666,0),B=h,O=g,g=GA((33554431&(B=(E=g+16777216|0)>>>0<16777216?B+1|0:B))<<7|E>>>25,B>>25,19,0),c=h,B=g,g=GA(I,I>>31,121666,0),U=h+c|0,g=g>>>0>(B=B+g|0)>>>0?U+1|0:U,I=(Q=B+33554432|0)>>>0<33554432?g+1|0:g,l=B-(-67108864&Q)|0,a[e+96>>2]=l,c=GA(r,r>>31,121666,0),B=h,B=(r=c+16777216|0)>>>0<16777216?B+1|0:B,u=(c-(-33554432&r)|0)+((67108863&I)<<6|Q>>>26)|0,a[e+100>>2]=u,U=(g=B)>>25,B=(33554431&g)<<7|r>>>25,I=GA(y,y>>31,121666,0)+B|0,g=U+h|0,g=I>>>0<B>>>0?g+1|0:g,c=(D=I+33554432|0)>>>0<33554432?g+1|0:g,v=I-(-67108864&D)|0,a[e+104>>2]=v,B=GA(_,_>>31,121666,0),r=h,I=GA(s,s>>31,121666,0),g=h,R=B,G=I,B=(33554431&(g=(w=I+16777216|0)>>>0<16777216?g+1|0:g))<<7|w>>>25,g=(g>>25)+r|0,g=(I=R+B|0)>>>0<B>>>0?g+1|0:g,r=(k=I+33554432|0)>>>0<33554432?g+1|0:g,f=I-(-67108864&k)|0,a[e+112>>2]=f,B=GA(p,p>>31,121666,0),Q=h,I=GA(t,t>>31,121666,0),g=h,R=B,J=I,B=(33554431&(g=(o=I+16777216|0)>>>0<16777216?g+1|0:g))<<7|o>>>25,g=(g>>25)+Q|0,g=(I=R+B|0)>>>0<B>>>0?g+1|0:g,B=(t=I+33554432|0)>>>0<33554432?g+1|0:g,p=I-(-67108864&t)|0,a[e+120>>2]=p,Q=GA(b,b>>31,121666,0),y=h,I=GA(Y,Y>>31,121666,0),g=h,b=I,I=(33554431&(g=(s=I+16777216|0)>>>0<16777216?g+1|0:g))<<7|s>>>25,g=(g>>25)+y|0,g=I>>>0>(Q=I+Q|0)>>>0?g+1|0:g,I=(_=Q+33554432|0)>>>0<33554432?g+1|0:g,y=Q-(-67108864&_)|0,a[e+128>>2]=y,Q=(c=G+((67108863&c)<<6|D>>>26)|0)-(-33554432&w)|0,a[e+108>>2]=Q,c=(r=J+((67108863&r)<<6|k>>>26)|0)-(-33554432&o)|0,a[e+116>>2]=c,r=(g=b+((67108863&B)<<6|t>>>26)|0)-(-33554432&s)|0,a[e+124>>2]=r,I=(I=O+((67108863&I)<<6|_>>>26)|0)-(-33554432&E)|0,a[e+132>>2]=I,K(g=e+144|0,g),a[e+84>>2]=I+z,a[e+80>>2]=y+F,a[e+76>>2]=r+N,a[e+72>>2]=p+T,a[e+68>>2]=c+q,a[e+64>>2]=f+P,a[e+60>>2]=Q+L,a[e+56>>2]=v+m,a[e+52>>2]=u+x,a[e+48>>2]=l+X,I=wA-1|0,d(j,e+288|0,S),d(S,e,H),wA;);p=a[e+144>>2],l=a[e+240>>2],s=a[e+148>>2],u=a[e+244>>2],_=a[e+152>>2],D=a[e+248>>2],y=a[e+156>>2],v=a[e+252>>2],Q=a[e+160>>2],w=a[e+256>>2],c=a[e+164>>2],k=a[e+260>>2],r=a[e+168>>2],f=a[e+264>>2],B=a[e+172>>2],o=a[e+268>>2],I=a[e+176>>2],t=a[e+272>>2],E=0-Z|0,g=a[e+276>>2],a[e+276>>2]=E&(g^a[e+180>>2])^g,a[e+272>>2]=t^E&(I^t),a[e+268>>2]=o^E&(B^o),a[e+264>>2]=f^E&(r^f),a[e+260>>2]=k^E&(c^k),a[e+256>>2]=w^E&(Q^w),a[e+252>>2]=v^E&(y^v),a[e+248>>2]=D^E&(_^D),a[e+244>>2]=u^E&(s^u),a[e+240>>2]=l^E&(p^l),l=a[e+192>>2],p=a[e+96>>2],u=a[e+196>>2],s=a[e+100>>2],D=a[e+200>>2],_=a[e+104>>2],v=a[e+204>>2],y=a[e+108>>2],w=a[e+208>>2],Q=a[e+112>>2],k=a[e+212>>2],c=a[e+116>>2],f=a[e+216>>2],r=a[e+120>>2],o=a[e+220>>2],B=a[e+124>>2],t=a[e+224>>2],I=a[e+128>>2],g=a[e+228>>2],a[e+228>>2]=E&(g^a[e+132>>2])^g,a[e+224>>2]=t^E&(I^t),a[e+220>>2]=o^E&(B^o),a[e+216>>2]=f^E&(r^f),a[e+212>>2]=k^E&(c^k),a[e+208>>2]=w^E&(Q^w),a[e+204>>2]=v^E&(y^v),a[e+200>>2]=D^E&(_^D),a[e+196>>2]=u^E&(s^u),a[e+192>>2]=l^E&(p^l),iA(S,S),d(M,M,S),yA(A,M),dg(kA,32),B=0}return n=e+368|0,0|B},function(A,g){var I,e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,l,u;return g|=0,n=I=n-304|0,C[0|(A|=0)]=i[0|g],C[A+1|0]=i[g+1|0],C[A+2|0]=i[g+2|0],C[A+3|0]=i[g+3|0],C[A+4|0]=i[g+4|0],C[A+5|0]=i[g+5|0],C[A+6|0]=i[g+6|0],C[A+7|0]=i[g+7|0],C[A+8|0]=i[g+8|0],C[A+9|0]=i[g+9|0],C[A+10|0]=i[g+10|0],C[A+11|0]=i[g+11|0],C[A+12|0]=i[g+12|0],C[A+13|0]=i[g+13|0],C[A+14|0]=i[g+14|0],C[A+15|0]=i[g+15|0],C[A+16|0]=i[g+16|0],C[A+17|0]=i[g+17|0],C[A+18|0]=i[g+18|0],C[A+19|0]=i[g+19|0],C[A+20|0]=i[g+20|0],C[A+21|0]=i[g+21|0],C[A+22|0]=i[g+22|0],C[A+23|0]=i[g+23|0],C[A+24|0]=i[g+24|0],C[A+25|0]=i[g+25|0],C[A+26|0]=i[g+26|0],C[A+27|0]=i[g+27|0],C[A+28|0]=i[g+28|0],C[A+29|0]=i[g+29|0],C[A+30|0]=i[g+30|0],g=i[g+31|0],C[0|A]=248&i[0|A],C[A+31|0]=63&g|64,Z(I+48|0,A),g=a[I+128>>2],e=a[I+88>>2],B=a[I+132>>2],r=a[I+92>>2],t=a[I+136>>2],Q=a[I+96>>2],o=a[I+140>>2],c=a[I+100>>2],E=a[I+144>>2],y=a[I+104>>2],_=a[I+148>>2],h=a[I+108>>2],s=a[I+152>>2],p=a[I+112>>2],f=a[I+156>>2],D=a[I+116>>2],w=a[I+160>>2],k=a[I+120>>2],l=a[I+124>>2],u=a[I+164>>2],a[I+292>>2]=l+u,a[I+288>>2]=w+k,a[I+284>>2]=f+D,a[I+280>>2]=s+p,a[I+276>>2]=_+h,a[I+272>>2]=E+y,a[I+268>>2]=o+c,a[I+264>>2]=t+Q,a[I+260>>2]=B+r,a[I+256>>2]=g+e,a[I+244>>2]=u-l,a[I+240>>2]=w-k,a[I+236>>2]=f-D,a[I+232>>2]=s-p,a[I+228>>2]=_-h,a[I+224>>2]=E-y,a[I+220>>2]=o-c,a[I+216>>2]=t-Q,a[I+212>>2]=B-r,a[I+208>>2]=g-e,iA(g=I+208|0,g),d(I,I+256|0,g),yA(A,I),n=I+304|0,0},function(A,g,I,e,B){A|=0,e|=0,B|=0;var r,t=0,Q=0,o=0,c=0;if(n=r=n-112|0,(g|=0)|(I|=0)){t=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,a[r+24>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,a[r+28>>2]=t,t=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[r+16>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[r+20>>2]=t,t=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,a[r>>2]=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,a[r+4>>2]=t,t=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[r+8>>2]=i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,a[r+12>>2]=t,B=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,e=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[r+104>>2]=0,a[r+108>>2]=0,a[r+96>>2]=B,a[r+100>>2]=e;A:{if(!I&g>>>0>=64|I){for(;T(A,r+96|0,r),e=i[r+104|0]+1|0,C[r+104|0]=e,e=i[r+105|0]+(e>>>8|0)|0,C[r+105|0]=e,e=i[r+106|0]+(e>>>8|0)|0,C[r+106|0]=e,e=i[r+107|0]+(e>>>8|0)|0,C[r+107|0]=e,e=i[r+108|0]+(e>>>8|0)|0,C[r+108|0]=e,e=i[r+109|0]+(e>>>8|0)|0,C[r+109|0]=e,e=i[r+110|0]+(e>>>8|0)|0,C[r+110|0]=e,C[r+111|0]=i[r+111|0]+(e>>>8|0),A=A- -64|0,I=I-1|0,!(I=(g=g+-64|0)>>>0<4294967232?I+1|0:I)&g>>>0>63|I;);if(!(g|I))break A}if(e=0,T(r+32|0,r+96|0,r),t=3&g,B=0,!I&g>>>0>=4|I)for(I=60&g,g=0;Q=o=r+32|0,C[A+B|0]=i[Q+B|0],C[(c=1|B)+A|0]=i[Q+c|0],C[(Q=2|B)+A|0]=i[Q+o|0],C[(Q=3|B)+A|0]=i[Q+(r+32|0)|0],B=B+4|0,(0|I)!=(0|(g=g+4|0)););if(t)for(;C[A+B|0]=i[(r+32|0)+B|0],B=B+1|0,(0|t)!=(0|(e=e+1|0)););}dg(r+32|0,64),dg(r,32)}return n=r+112|0,0},function(A,g,I,e,B,r,t,Q){A|=0,g|=0,B|=0,r|=0,t|=0,Q|=0;var o,c=0;if(n=o=n-112|0,(I|=0)|(e|=0)){c=i[Q+28|0]|i[Q+29|0]<<8|i[Q+30|0]<<16|i[Q+31|0]<<24,a[o+24>>2]=i[Q+24|0]|i[Q+25|0]<<8|i[Q+26|0]<<16|i[Q+27|0]<<24,a[o+28>>2]=c,c=i[Q+20|0]|i[Q+21|0]<<8|i[Q+22|0]<<16|i[Q+23|0]<<24,a[o+16>>2]=i[Q+16|0]|i[Q+17|0]<<8|i[Q+18|0]<<16|i[Q+19|0]<<24,a[o+20>>2]=c,c=i[Q+4|0]|i[Q+5|0]<<8|i[Q+6|0]<<16|i[Q+7|0]<<24,a[o>>2]=i[0|Q]|i[Q+1|0]<<8|i[Q+2|0]<<16|i[Q+3|0]<<24,a[o+4>>2]=c,c=i[Q+12|0]|i[Q+13|0]<<8|i[Q+14|0]<<16|i[Q+15|0]<<24,a[o+8>>2]=i[Q+8|0]|i[Q+9|0]<<8|i[Q+10|0]<<16|i[Q+11|0]<<24,a[o+12>>2]=c,Q=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,a[o+96>>2]=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,a[o+100>>2]=Q,C[o+104|0]=r,C[o+111|0]=t>>>24,C[o+110|0]=t>>>16,C[o+109|0]=t>>>8,C[o+108|0]=t,C[o+107|0]=(16777215&t)<<8|r>>>24,C[o+106|0]=(65535&t)<<16|r>>>16,C[o+105|0]=(255&t)<<24|r>>>8;A:{if(!e&I>>>0>=64|e){for(;;){for(Q=0,T(o+32|0,o+96|0,o);r=o+32|0,C[A+Q|0]=i[r+Q|0]^i[g+Q|0],C[(B=1|Q)+A|0]=i[B+r|0]^i[g+B|0],64!=(0|(Q=Q+2|0)););if(B=i[o+104|0]+1|0,C[o+104|0]=B,B=i[o+105|0]+(B>>>8|0)|0,C[o+105|0]=B,B=i[o+106|0]+(B>>>8|0)|0,C[o+106|0]=B,B=i[o+107|0]+(B>>>8|0)|0,C[o+107|0]=B,B=i[o+108|0]+(B>>>8|0)|0,C[o+108|0]=B,B=i[o+109|0]+(B>>>8|0)|0,C[o+109|0]=B,B=i[o+110|0]+(B>>>8|0)|0,C[o+110|0]=B,C[o+111|0]=i[o+111|0]+(B>>>8|0),g=g- -64|0,A=A- -64|0,e=e-1|0,!(!(e=(I=I+-64|0)>>>0<4294967232?e+1|0:e)&I>>>0>63|e))break}if(!(I|e))break A}if(Q=0,T(o+32|0,o+96|0,o),r=1&I,1!=(0|I)|e)for(e=62&I,B=0;t=o+32|0,C[A+Q|0]=i[t+Q|0]^i[g+Q|0],C[(I=1|Q)+A|0]=i[I+t|0]^i[g+I|0],Q=Q+2|0,(0|e)!=(0|(B=B+2|0)););r&&(C[A+Q|0]=i[(o+32|0)+Q|0]^i[g+Q|0])}dg(o+32|0,64),dg(o,32)}return n=o+112|0,0},function(A,g,I,C,e,B,a,i,r){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0;var t,Q,o=0;if(Q=o=n,n=t=o-192&-32,H(r|=0,i|=0,t- -64|0),r=0,a>>>0<=63)i=0;else for(o=64;l(B+r|0,t- -64|0),r=i=o,(o=i- -64|0)>>>0<=a>>>0;);if((o=32|i)>>>0>a>>>0)r=i;else for(;m(B+i|0,t- -64|0),r=o,(o=(i=o)+32|0)>>>0<=a>>>0;);if((i=31&a)&&(VA((o=t+32|0)|i,0,32-i|0),OA(o,B+r|0,i),m(o,t- -64|0)),r=32,i=0,e>>>0<32)B=0;else for(;M(A+i|0,C+i|0,t- -64|0),B=r,(r=(i=r)+32|0)>>>0<=e>>>0;);return(i=31&e)&&(VA((r=t+32|0)|i,0,32-i|0),OA(r,C+B|0,i),M(t,r,t- -64|0),OA(A+B|0,t,i)),u(g,I,a,e,t- -64|0),n=Q,0},function(A,g,I,C,e,B,a,i,r){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0;var t,Q,o=0;if(Q=o=n,n=t=o-224&-32,H(r|=0,i|=0,t+96|0),r=0,a>>>0<=63)i=0;else for(o=64;l(B+r|0,t+96|0),r=i=o,(o=i- -64|0)>>>0<=a>>>0;);if((o=32|i)>>>0>a>>>0)r=i;else for(;m(B+i|0,t+96|0),r=o,(o=(i=o)+32|0)>>>0<=a>>>0;);(i=31&a)&&(VA((o=t- -64|0)|i,0,32-i|0),OA(o,B+r|0,i),m(o,t+96|0));A:{g:{I:{C:{e:{if(A){if(r=32,I>>>0<32)break e;for(B=0;b(A+B|0,g+B|0,t+96|0),B=i=r,(r=i+32|0)>>>0<=I>>>0;);}else{if(B=32,I>>>0<32)break I;for(r=0;b(t+32|0,g+r|0,t+96|0),r=i=B,(B=i+32|0)>>>0<=I>>>0;);}if(!(B=31&I))break A;if(A)break C;break g}if(i=0,B=I,!I)break A}N(A+i|0,g+i|0,B,t+96|0);break A}if(i=0,B=I,!I)break A}N(t+32|0,g+i|0,B,t+96|0)}u(t,e,a,I,t+96|0),i=-1;A:{g:{if(g=e-16|0){if(16==(0|g))break g;break A}i=nA(t,C);break A}i=KA(t,C)}return!A|!i||VA(A,0,I),n=Q,0|i},function(A,g,I,C,e,B,r,t,Q){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,r|=0;var o,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0;if(n=o=n-528|0,k(Q|=0,t|=0,o+400|0),Q=0,r>>>0<=31)t=0;else for(E=32;Y(B+Q|0,o+400|0),Q=t=E,(E=t+32|0)>>>0<=r>>>0;);if((Q=16|t)>>>0<=r>>>0)for(E=o+416|0,_=o+432|0,h=o+448|0,y=o+464|0,s=o+480|0;p=i[0|(t=B+t|0)]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,f=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,D=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,w=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,t=a[s+12>>2],a[o+520>>2]=a[s+8>>2],a[o+524>>2]=t,t=a[s+4>>2],a[o+512>>2]=a[s>>2],a[o+516>>2]=t,t=a[y+12>>2],a[o+376>>2]=a[y+8>>2],a[o+380>>2]=t,t=a[y+4>>2],a[o+368>>2]=a[y>>2],a[o+372>>2]=t,t=a[s+12>>2],a[o+360>>2]=a[s+8>>2],a[o+364>>2]=t,t=a[s+4>>2],a[o+352>>2]=a[s>>2],a[o+356>>2]=t,oA(t=o+496|0,o+368|0,o+352|0),c=a[o+508>>2],a[s+8>>2]=a[o+504>>2],a[s+12>>2]=c,c=a[o+500>>2],a[s>>2]=a[o+496>>2],a[s+4>>2]=c,c=a[h+12>>2],a[o+344>>2]=a[h+8>>2],a[o+348>>2]=c,c=a[h+4>>2],a[o+336>>2]=a[h>>2],a[o+340>>2]=c,c=a[y+12>>2],a[o+328>>2]=a[y+8>>2],a[o+332>>2]=c,c=a[y+4>>2],a[o+320>>2]=a[y>>2],a[o+324>>2]=c,oA(t,o+336|0,o+320|0),c=a[o+508>>2],a[y+8>>2]=a[o+504>>2],a[y+12>>2]=c,c=a[o+500>>2],a[y>>2]=a[o+496>>2],a[y+4>>2]=c,c=a[_+12>>2],a[o+312>>2]=a[_+8>>2],a[o+316>>2]=c,c=a[_+4>>2],a[o+304>>2]=a[_>>2],a[o+308>>2]=c,c=a[h+12>>2],a[o+296>>2]=a[h+8>>2],a[o+300>>2]=c,c=a[h+4>>2],a[o+288>>2]=a[h>>2],a[o+292>>2]=c,oA(t,o+304|0,o+288|0),c=a[o+508>>2],a[h+8>>2]=a[o+504>>2],a[h+12>>2]=c,c=a[o+500>>2],a[h>>2]=a[o+496>>2],a[h+4>>2]=c,c=a[E+12>>2],a[o+280>>2]=a[E+8>>2],a[o+284>>2]=c,c=a[E+4>>2],a[o+272>>2]=a[E>>2],a[o+276>>2]=c,c=a[_+12>>2],a[o+264>>2]=a[_+8>>2],a[o+268>>2]=c,c=a[_+4>>2],a[o+256>>2]=a[_>>2],a[o+260>>2]=c,oA(t,o+272|0,o+256|0),c=a[o+508>>2],a[_+8>>2]=a[o+504>>2],a[_+12>>2]=c,c=a[o+500>>2],a[_>>2]=a[o+496>>2],a[_+4>>2]=c,c=a[o+412>>2],a[o+248>>2]=a[o+408>>2],a[o+252>>2]=c,c=a[o+404>>2],a[o+240>>2]=a[o+400>>2],a[o+244>>2]=c,c=a[E+12>>2],a[o+232>>2]=a[E+8>>2],a[o+236>>2]=c,c=a[E+4>>2],a[o+224>>2]=a[E>>2],a[o+228>>2]=c,oA(t,o+240|0,o+224|0),c=a[o+508>>2],a[E+8>>2]=a[o+504>>2],a[E+12>>2]=c,c=a[o+500>>2],a[E>>2]=a[o+496>>2],a[E+4>>2]=c,c=a[o+524>>2],a[o+216>>2]=a[o+520>>2],a[o+220>>2]=c,c=a[o+412>>2],a[o+200>>2]=a[o+408>>2],a[o+204>>2]=c,c=a[o+516>>2],a[o+208>>2]=a[o+512>>2],a[o+212>>2]=c,c=a[o+404>>2],a[o+192>>2]=a[o+400>>2],a[o+196>>2]=c,oA(t,o+208|0,o+192|0),a[o+412>>2]=w^a[o+508>>2],a[o+408>>2]=a[o+504>>2]^D,a[o+404>>2]=a[o+500>>2]^f,a[o+400>>2]=a[o+496>>2]^p,(Q=(t=Q)+16|0)>>>0<=r>>>0;);if((Q=15&r)&&(VA((E=o+384|0)|Q,0,16-Q|0),OA(E,B+t|0,Q),Q=a[o+384>>2],E=a[o+388>>2],_=a[o+392>>2],h=a[o+396>>2],t=a[o+492>>2],B=a[o+488>>2],a[o+520>>2]=B,a[o+524>>2]=t,y=a[o+476>>2],a[o+184>>2]=a[o+472>>2],a[o+188>>2]=y,a[o+168>>2]=B,a[o+172>>2]=t,t=a[o+484>>2],B=a[o+480>>2],a[o+512>>2]=B,a[o+516>>2]=t,y=a[o+468>>2],a[o+176>>2]=a[o+464>>2],a[o+180>>2]=y,a[o+160>>2]=B,a[o+164>>2]=t,oA(B=o+496|0,o+176|0,o+160|0),t=a[o+508>>2],a[o+488>>2]=a[o+504>>2],a[o+492>>2]=t,t=a[o+460>>2],a[o+152>>2]=a[o+456>>2],a[o+156>>2]=t,t=a[o+476>>2],a[o+136>>2]=a[o+472>>2],a[o+140>>2]=t,t=a[o+500>>2],a[o+480>>2]=a[o+496>>2],a[o+484>>2]=t,t=a[o+452>>2],a[o+144>>2]=a[o+448>>2],a[o+148>>2]=t,t=a[o+468>>2],a[o+128>>2]=a[o+464>>2],a[o+132>>2]=t,oA(B,o+144|0,o+128|0),t=a[o+508>>2],a[o+472>>2]=a[o+504>>2],a[o+476>>2]=t,t=a[o+444>>2],a[o+120>>2]=a[o+440>>2],a[o+124>>2]=t,t=a[o+460>>2],a[o+104>>2]=a[o+456>>2],a[o+108>>2]=t,t=a[o+500>>2],a[o+464>>2]=a[o+496>>2],a[o+468>>2]=t,t=a[o+436>>2],a[o+112>>2]=a[o+432>>2],a[o+116>>2]=t,t=a[o+452>>2],a[o+96>>2]=a[o+448>>2],a[o+100>>2]=t,oA(B,o+112|0,o+96|0),t=a[o+508>>2],a[o+456>>2]=a[o+504>>2],a[o+460>>2]=t,t=a[o+428>>2],a[o+88>>2]=a[o+424>>2],a[o+92>>2]=t,t=a[o+444>>2],a[o+72>>2]=a[o+440>>2],a[o+76>>2]=t,t=a[o+500>>2],a[o+448>>2]=a[o+496>>2],a[o+452>>2]=t,t=a[o+420>>2],a[o+80>>2]=a[o+416>>2],a[o+84>>2]=t,t=a[o+436>>2],a[o+64>>2]=a[o+432>>2],a[o+68>>2]=t,oA(B,o+80|0,o- -64|0),t=a[o+508>>2],a[o+440>>2]=a[o+504>>2],a[o+444>>2]=t,t=a[o+412>>2],a[o+56>>2]=a[o+408>>2],a[o+60>>2]=t,t=a[o+428>>2],a[o+40>>2]=a[o+424>>2],a[o+44>>2]=t,t=a[o+500>>2],a[o+432>>2]=a[o+496>>2],a[o+436>>2]=t,t=a[o+404>>2],a[o+48>>2]=a[o+400>>2],a[o+52>>2]=t,t=a[o+420>>2],a[o+32>>2]=a[o+416>>2],a[o+36>>2]=t,oA(B,o+48|0,o+32|0),t=a[o+508>>2],a[o+424>>2]=a[o+504>>2],a[o+428>>2]=t,t=a[o+524>>2],a[o+24>>2]=a[o+520>>2],a[o+28>>2]=t,t=a[o+412>>2],a[o+8>>2]=a[o+408>>2],a[o+12>>2]=t,t=a[o+500>>2],a[o+416>>2]=a[o+496>>2],a[o+420>>2]=t,t=a[o+516>>2],a[o+16>>2]=a[o+512>>2],a[o+20>>2]=t,t=a[o+404>>2],a[o>>2]=a[o+400>>2],a[o+4>>2]=t,oA(B,o+16|0,o),a[o+412>>2]=h^a[o+508>>2],a[o+408>>2]=_^a[o+504>>2],a[o+404>>2]=E^a[o+500>>2],a[o+400>>2]=Q^a[o+496>>2]),E=16,t=0,e>>>0<16)Q=0;else for(;U(A+t|0,C+t|0,o+400|0),Q=E,(E=(t=E)+16|0)>>>0<=e>>>0;);return(B=15&e)&&(VA((t=o+384|0)|B,0,16-B|0),OA(t,C+Q|0,B),U(C=o+512|0,t,o+400|0),OA(A+Q|0,C,B)),F(g,I,r,e,o+400|0),n=o+528|0,0},function(A,g,I,C,e,B,r,t,Q){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,r|=0;var o,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0;if(n=o=n-544|0,k(Q|=0,t|=0,o+432|0),Q=0,r>>>0<=31)t=0;else for(E=32;Y(B+Q|0,o+432|0),Q=t=E,(E=t+32|0)>>>0<=r>>>0;);if((Q=16|t)>>>0<=r>>>0)for(E=o+448|0,_=o+464|0,h=o+480|0,y=o+496|0,s=o+512|0;p=i[0|(t=B+t|0)]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,f=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,D=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,w=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,t=a[s+12>>2],a[o+392>>2]=a[s+8>>2],a[o+396>>2]=t,t=a[s+4>>2],a[o+384>>2]=a[s>>2],a[o+388>>2]=t,t=a[y+12>>2],a[o+376>>2]=a[y+8>>2],a[o+380>>2]=t,t=a[y+4>>2],a[o+368>>2]=a[y>>2],a[o+372>>2]=t,t=a[s+12>>2],a[o+360>>2]=a[s+8>>2],a[o+364>>2]=t,t=a[s+4>>2],a[o+352>>2]=a[s>>2],a[o+356>>2]=t,oA(t=o+528|0,o+368|0,o+352|0),c=a[o+540>>2],a[s+8>>2]=a[o+536>>2],a[s+12>>2]=c,c=a[o+532>>2],a[s>>2]=a[o+528>>2],a[s+4>>2]=c,c=a[h+12>>2],a[o+344>>2]=a[h+8>>2],a[o+348>>2]=c,c=a[h+4>>2],a[o+336>>2]=a[h>>2],a[o+340>>2]=c,c=a[y+12>>2],a[o+328>>2]=a[y+8>>2],a[o+332>>2]=c,c=a[y+4>>2],a[o+320>>2]=a[y>>2],a[o+324>>2]=c,oA(t,o+336|0,o+320|0),c=a[o+540>>2],a[y+8>>2]=a[o+536>>2],a[y+12>>2]=c,c=a[o+532>>2],a[y>>2]=a[o+528>>2],a[y+4>>2]=c,c=a[_+12>>2],a[o+312>>2]=a[_+8>>2],a[o+316>>2]=c,c=a[_+4>>2],a[o+304>>2]=a[_>>2],a[o+308>>2]=c,c=a[h+12>>2],a[o+296>>2]=a[h+8>>2],a[o+300>>2]=c,c=a[h+4>>2],a[o+288>>2]=a[h>>2],a[o+292>>2]=c,oA(t,o+304|0,o+288|0),c=a[o+540>>2],a[h+8>>2]=a[o+536>>2],a[h+12>>2]=c,c=a[o+532>>2],a[h>>2]=a[o+528>>2],a[h+4>>2]=c,c=a[E+12>>2],a[o+280>>2]=a[E+8>>2],a[o+284>>2]=c,c=a[E+4>>2],a[o+272>>2]=a[E>>2],a[o+276>>2]=c,c=a[_+12>>2],a[o+264>>2]=a[_+8>>2],a[o+268>>2]=c,c=a[_+4>>2],a[o+256>>2]=a[_>>2],a[o+260>>2]=c,oA(t,o+272|0,o+256|0),c=a[o+540>>2],a[_+8>>2]=a[o+536>>2],a[_+12>>2]=c,c=a[o+532>>2],a[_>>2]=a[o+528>>2],a[_+4>>2]=c,c=a[o+444>>2],a[o+248>>2]=a[o+440>>2],a[o+252>>2]=c,c=a[o+436>>2],a[o+240>>2]=a[o+432>>2],a[o+244>>2]=c,c=a[E+12>>2],a[o+232>>2]=a[E+8>>2],a[o+236>>2]=c,c=a[E+4>>2],a[o+224>>2]=a[E>>2],a[o+228>>2]=c,oA(t,o+240|0,o+224|0),c=a[o+540>>2],a[E+8>>2]=a[o+536>>2],a[E+12>>2]=c,c=a[o+532>>2],a[E>>2]=a[o+528>>2],a[E+4>>2]=c,c=a[o+396>>2],a[o+216>>2]=a[o+392>>2],a[o+220>>2]=c,c=a[o+444>>2],a[o+200>>2]=a[o+440>>2],a[o+204>>2]=c,c=a[o+388>>2],a[o+208>>2]=a[o+384>>2],a[o+212>>2]=c,c=a[o+436>>2],a[o+192>>2]=a[o+432>>2],a[o+196>>2]=c,oA(t,o+208|0,o+192|0),a[o+444>>2]=w^a[o+540>>2],a[o+440>>2]=a[o+536>>2]^D,a[o+436>>2]=a[o+532>>2]^f,a[o+432>>2]=a[o+528>>2]^p,(Q=(t=Q)+16|0)>>>0<=r>>>0;);(Q=15&r)&&(VA((E=o+416|0)|Q,0,16-Q|0),OA(E,B+t|0,Q),Q=a[o+416>>2],E=a[o+420>>2],_=a[o+424>>2],h=a[o+428>>2],t=a[o+524>>2],B=a[o+520>>2],a[o+392>>2]=B,a[o+396>>2]=t,y=a[o+508>>2],a[o+184>>2]=a[o+504>>2],a[o+188>>2]=y,a[o+168>>2]=B,a[o+172>>2]=t,t=a[o+516>>2],B=a[o+512>>2],a[o+384>>2]=B,a[o+388>>2]=t,y=a[o+500>>2],a[o+176>>2]=a[o+496>>2],a[o+180>>2]=y,a[o+160>>2]=B,a[o+164>>2]=t,oA(B=o+528|0,o+176|0,o+160|0),t=a[o+540>>2],a[o+520>>2]=a[o+536>>2],a[o+524>>2]=t,t=a[o+492>>2],a[o+152>>2]=a[o+488>>2],a[o+156>>2]=t,t=a[o+508>>2],a[o+136>>2]=a[o+504>>2],a[o+140>>2]=t,t=a[o+532>>2],a[o+512>>2]=a[o+528>>2],a[o+516>>2]=t,t=a[o+484>>2],a[o+144>>2]=a[o+480>>2],a[o+148>>2]=t,t=a[o+500>>2],a[o+128>>2]=a[o+496>>2],a[o+132>>2]=t,oA(B,o+144|0,o+128|0),t=a[o+540>>2],a[o+504>>2]=a[o+536>>2],a[o+508>>2]=t,t=a[o+476>>2],a[o+120>>2]=a[o+472>>2],a[o+124>>2]=t,t=a[o+492>>2],a[o+104>>2]=a[o+488>>2],a[o+108>>2]=t,t=a[o+532>>2],a[o+496>>2]=a[o+528>>2],a[o+500>>2]=t,t=a[o+468>>2],a[o+112>>2]=a[o+464>>2],a[o+116>>2]=t,t=a[o+484>>2],a[o+96>>2]=a[o+480>>2],a[o+100>>2]=t,oA(B,o+112|0,o+96|0),t=a[o+540>>2],a[o+488>>2]=a[o+536>>2],a[o+492>>2]=t,t=a[o+460>>2],a[o+88>>2]=a[o+456>>2],a[o+92>>2]=t,t=a[o+476>>2],a[o+72>>2]=a[o+472>>2],a[o+76>>2]=t,t=a[o+532>>2],a[o+480>>2]=a[o+528>>2],a[o+484>>2]=t,t=a[o+452>>2],a[o+80>>2]=a[o+448>>2],a[o+84>>2]=t,t=a[o+468>>2],a[o+64>>2]=a[o+464>>2],a[o+68>>2]=t,oA(B,o+80|0,o- -64|0),t=a[o+540>>2],a[o+472>>2]=a[o+536>>2],a[o+476>>2]=t,t=a[o+444>>2],a[o+56>>2]=a[o+440>>2],a[o+60>>2]=t,t=a[o+460>>2],a[o+40>>2]=a[o+456>>2],a[o+44>>2]=t,t=a[o+532>>2],a[o+464>>2]=a[o+528>>2],a[o+468>>2]=t,t=a[o+436>>2],a[o+48>>2]=a[o+432>>2],a[o+52>>2]=t,t=a[o+452>>2],a[o+32>>2]=a[o+448>>2],a[o+36>>2]=t,oA(B,o+48|0,o+32|0),t=a[o+540>>2],a[o+456>>2]=a[o+536>>2],a[o+460>>2]=t,t=a[o+396>>2],a[o+24>>2]=a[o+392>>2],a[o+28>>2]=t,t=a[o+444>>2],a[o+8>>2]=a[o+440>>2],a[o+12>>2]=t,t=a[o+532>>2],a[o+448>>2]=a[o+528>>2],a[o+452>>2]=t,t=a[o+388>>2],a[o+16>>2]=a[o+384>>2],a[o+20>>2]=t,t=a[o+436>>2],a[o>>2]=a[o+432>>2],a[o+4>>2]=t,oA(B,o+16|0,o),a[o+444>>2]=h^a[o+540>>2],a[o+440>>2]=_^a[o+536>>2],a[o+436>>2]=E^a[o+532>>2],a[o+432>>2]=Q^a[o+528>>2]);A:{g:{I:{C:{e:{if(A){if(E=16,I>>>0<16)break e;for(Q=0;x(A+Q|0,g+Q|0,o+432|0),Q=t=E,(E=t+16|0)>>>0<=I>>>0;);}else{if(Q=16,I>>>0<16)break I;for(E=0;x(o+528|0,g+E|0,o+432|0),E=t=Q,(Q=t+16|0)>>>0<=I>>>0;);}if(!(Q=15&I))break A;if(A)break C;break g}if(t=0,!(Q=I))break A}P(A+t|0,g+t|0,Q,o+432|0);break A}if(t=0,!(Q=I))break A}P(o+528|0,g+t|0,Q,o+432|0)}F(o+384|0,e,r,I,o+432|0),t=-1;A:{g:{if(g=e-16|0){if(16==(0|g))break g;break A}t=nA(o+384|0,C);break A}t=KA(o+384|0,C)}return!A|!t||VA(A,0,I),n=o+544|0,0|t},function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n+-64|0,(g|=0)|(I|=0)&&(a[B+8>>2]=2036477234,a[B+12>>2]=1797285236,a[B>>2]=1634760805,a[B+4>>2]=857760878,a[B+16>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[B+20>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[B+24>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,a[B+28>>2]=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,a[B+32>>2]=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,a[B+36>>2]=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,a[B+40>>2]=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,e=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,a[B+48>>2]=0,a[B+52>>2]=0,a[B+44>>2]=e,a[B+56>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,a[B+60>>2]=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,G(B,A=VA(A,0,g),A,g,I),dg(B,64)),n=B- -64|0,0},function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n+-64|0,(g|=0)|(I|=0)&&(a[B+8>>2]=2036477234,a[B+12>>2]=1797285236,a[B>>2]=1634760805,a[B+4>>2]=857760878,a[B+16>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[B+20>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[B+24>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,a[B+28>>2]=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,a[B+32>>2]=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,a[B+36>>2]=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,a[B+40>>2]=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,e=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,a[B+48>>2]=0,a[B+44>>2]=e,a[B+52>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,a[B+56>>2]=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,a[B+60>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,G(B,A=VA(A,0,g),A,g,I),dg(B,64)),n=B- -64|0,0},function(A,g,I,C,e,B,r,t){var Q;return A|=0,g|=0,e|=0,B|=0,r|=0,t|=0,n=Q=n+-64|0,(I|=0)|(C|=0)&&(a[Q+8>>2]=2036477234,a[Q+12>>2]=1797285236,a[Q>>2]=1634760805,a[Q+4>>2]=857760878,a[Q+16>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,a[Q+20>>2]=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,a[Q+24>>2]=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,a[Q+28>>2]=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,a[Q+32>>2]=i[t+16|0]|i[t+17|0]<<8|i[t+18|0]<<16|i[t+19|0]<<24,a[Q+36>>2]=i[t+20|0]|i[t+21|0]<<8|i[t+22|0]<<16|i[t+23|0]<<24,a[Q+40>>2]=i[t+24|0]|i[t+25|0]<<8|i[t+26|0]<<16|i[t+27|0]<<24,a[Q+44>>2]=i[t+28|0]|i[t+29|0]<<8|i[t+30|0]<<16|i[t+31|0]<<24,a[Q+48>>2]=B,a[Q+52>>2]=r,a[Q+56>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[Q+60>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,G(Q,g,A,I,C),dg(Q,64)),n=Q- -64|0,0},function(A,g,I,C,e,B,r){var t;return A|=0,g|=0,e|=0,B|=0,r|=0,n=t=n+-64|0,(I|=0)|(C|=0)&&(a[t+8>>2]=2036477234,a[t+12>>2]=1797285236,a[t>>2]=1634760805,a[t+4>>2]=857760878,a[t+16>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,a[t+20>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,a[t+24>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,a[t+28>>2]=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,a[t+32>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,a[t+36>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,a[t+40>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,a[t+48>>2]=B,a[t+44>>2]=r,a[t+52>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[t+56>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[t+60>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,G(t,g,A,I,C),dg(t,64)),n=t- -64|0,0}],Gg.grow=function(A){var g=this.length;return this.length=this.length+A,g},Gg.set=function(A,g){this[A]=g},Gg.get=function(A){return this[A]},Gg);function Ug(){return I.byteLength/65536|0}return{e:Object.create(Object.prototype,{grow:{value:function(A){A|=0;var e=0|Ug(),B=e+A|0;if(e<B&&B<65536){var Q=new ArrayBuffer(t(B,65536));new Int8Array(Q).set(C),C=new Int8Array(Q),new Int16Array(Q),a=new Int32Array(Q),i=new Uint8Array(Q),new Uint16Array(Q),r=new Uint32Array(Q),new Float32Array(Q),new Float64Array(Q),I=Q,g=i}return e}},buffer:{get:function(){return I}}}),f:function(){},g:ug,h:Ng,i:ug,j:vg,k:Mg,l:kg,m:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|HA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,t|=0,Q|=0,36272)},n:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|LA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,Q|=0,o|=0,36272)},o:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|NA(A|=0,g|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36276)},p:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|jA(A|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36276)},q:vg,r:Ng,s:vg,t:vg,u:Mg,v:wg,w:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|HA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,t|=0,Q|=0,36280)},x:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|LA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,Q|=0,o|=0,36280)},y:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|NA(A|=0,g|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36284)},z:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|jA(A|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36284)},A:Ng,B:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|FA(A|=0,g|=0,I|=0,C|=0,(A=0)|(e|=0),B|=0,a|=0,A|(i|=0),r|=0,Q|=0,o|=0)},C:function(A,g,I,C,e,i,r,t,Q,o,c){return A|=0,g|=0,C|=0,r|=0,Q|=0,r|=Q=0,!(e|=0)&(C|=Q)>>>0<4294967280?(FA(A,A+C|0,0,I|=0,C,e,i|=0,r,t|=0,o|=0,c|=0),g&&(e=(A=C+16|0)>>>0<16?e+1|0:e,a[g>>2]=A,a[g+4>>2]=e)):(ig(),B()),0},D:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|bA(A|=0,g|=0,I|=0,C|=0,(A=0)|(e|=0),B|=0,a|=0,A|(i|=0),r|=0,Q|=0,o|=0)},E:function(A,g,I,C,e,i,r,t,Q,o,c){return A|=0,g|=0,C|=0,r|=0,Q|=0,r|=Q=0,!(e|=0)&(C|=Q)>>>0<4294967280?(bA(A,A+C|0,0,I|=0,C,e,i|=0,r,t|=0,o|=0,c|=0),g&&(e=(A=C+16|0)>>>0<16?e+1|0:e,a[g>>2]=A,a[g+4>>2]=e)):(ig(),B()),0},F:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|MA(A|=0,I|=0,(A=0)|(C|=0),e|=0,B|=0,a|=0,A|(i|=0),r|=0,t|=0,Q|=0)},G:function(A,g,I,C,e,B,i,r,t,Q,o){return g|=0,I|=0,C|=0,e|=0,r|=0,r|=0,I=-1,!(B|=0)&(e|=0)>>>0>=16|B&&(I=MA(A|=0,C,e-16|0,B-(e>>>0<16)|0,(C+e|0)-16|0,i|=0,r,t|=0,Q|=0,o|=0)),g&&(a[g>>2]=I?0:e-16|0,a[g+4>>2]=I?0:B-(e>>>0<16)|0),0|I},H:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|SA(A|=0,I|=0,(A=0)|(C|=0),e|=0,B|=0,a|=0,A|(i|=0),r|=0,t|=0,Q|=0)},I:function(A,g,I,C,e,B,i,r,t,Q,o){return g|=0,I|=0,C|=0,e|=0,r|=0,r|=0,I=-1,!(B|=0)&(e|=0)>>>0>=16|B&&(I=SA(A|=0,C,e-16|0,B-(e>>>0<16)|0,(C+e|0)-16|0,i|=0,r,t|=0,Q|=0,o|=0)),g&&(a[g>>2]=I?0:e-16|0,a[g+4>>2]=I?0:B-(e>>>0<16)|0),0|I},J:vg,K:function(){return 12},L:Ng,M:ug,N:bg,O:wg,P:vg,Q:Kg,R:Ng,S:ug,T:bg,U:wg,V:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|DA(A|=0,g|=0,I|=0,C|=0,(A=0)|(e|=0),B|=0,a|=0,A|(i|=0),r|=0,Q|=0,o|=0)},W:function(A,g,I,C,e,i,r,t,Q,o,c){return A|=0,g|=0,C|=0,r|=0,Q|=0,r|=Q=0,!(e|=0)&(C|=Q)>>>0<4294967280?(DA(A,A+C|0,0,I|=0,C,e,i|=0,r,t|=0,o|=0,c|=0),g&&(e=(A=C+16|0)>>>0<16?e+1|0:e,a[g>>2]=A,a[g+4>>2]=e)):(ig(),B()),0},X:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|fA(A|=0,I|=0,(A=0)|(C|=0),e|=0,B|=0,a|=0,A|(i|=0),r|=0,t|=0,Q|=0)},Y:function(A,g,I,C,e,B,i,r,t,Q,o){return g|=0,I|=0,C|=0,e|=0,r|=0,r|=0,I=-1,!(B|=0)&(e|=0)>>>0>=16|B&&(I=fA(A|=0,C,e-16|0,B-(e>>>0<16)|0,(C+e|0)-16|0,i|=0,r,t|=0,Q|=0,o|=0)),g&&(a[g>>2]=I?0:e-16|0,a[g+4>>2]=I?0:B-(e>>>0<16)|0),0|I},Z:vg,_:Sg,$:Ng,aa:ug,ba:bg,ca:wg,da:vg,ea:vg,fa:function(A,g,I,e,B){var i;return A|=0,g|=0,I|=0,e|=0,n=i=n-480|0,_A(i,B|=0,32),hg(i,g,I,e),WA(i,i+416|0),g=a[i+444>>2],I=a[i+440>>2],C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[i+436>>2],I=a[i+432>>2],C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[i+428>>2],I=a[i+424>>2],C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[i+420>>2],I=a[i+416>>2],C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,n=i+480|0,0},ga:function(A,g,I,C,e){var B,i;return A|=0,g|=0,I|=0,C|=0,n=B=n-512|0,_A(i=B+32|0,e|=0,32),hg(i,g,I,C),WA(i,B+448|0),g=a[B+476>>2],a[B+24>>2]=a[B+472>>2],a[B+28>>2]=g,g=a[B+468>>2],a[B+16>>2]=a[B+464>>2],a[B+20>>2]=g,g=a[B+460>>2],a[B+8>>2]=a[B+456>>2],a[B+12>>2]=g,g=a[B+452>>2],a[B>>2]=a[B+448>>2],a[B+4>>2]=g,g=KA(A,B),I=lA(B,A,32),n=B+512|0,((0|A)==(0|B)?-1:g)|I},ha:wg,ia:vg,ja:vg,ka:vg,la:vg,ma:Sg,na:ug,oa:bg,pa:function(A,g,I){A|=0,g|=0;var e,B=0;return n=e=n+-64|0,wA(e,I|=0,32,0),I=a[e+28>>2],B=a[e+24>>2],C[g+24|0]=B,C[g+25|0]=B>>>8,C[g+26|0]=B>>>16,C[g+27|0]=B>>>24,C[g+28|0]=I,C[g+29|0]=I>>>8,C[g+30|0]=I>>>16,C[g+31|0]=I>>>24,I=a[e+20>>2],B=a[e+16>>2],C[g+16|0]=B,C[g+17|0]=B>>>8,C[g+18|0]=B>>>16,C[g+19|0]=B>>>24,C[g+20|0]=I,C[g+21|0]=I>>>8,C[g+22|0]=I>>>16,C[g+23|0]=I>>>24,I=a[e+12>>2],B=a[e+8>>2],C[g+8|0]=B,C[g+9|0]=B>>>8,C[g+10|0]=B>>>16,C[g+11|0]=B>>>24,C[g+12|0]=I,C[g+13|0]=I>>>8,C[g+14|0]=I>>>16,C[g+15|0]=I>>>24,I=a[e+4>>2],B=a[e>>2],C[0|g]=B,C[g+1|0]=B>>>8,C[g+2|0]=B>>>16,C[g+3|0]=B>>>24,C[g+4|0]=I,C[g+5|0]=I>>>8,C[g+6|0]=I>>>16,C[g+7|0]=I>>>24,dg(e,64),A=sg(A,g),n=e- -64|0,0|A},qa:tg,ra:XA,sa:$A,ta:function(A,g,I,C,e,B,a,i){A|=0,g|=0,I|=0,B|=0;var r,t=0;return t=C|=0,C=e|=0,r=0|t,n=t=n-32|0,e=-1,XA(t,a|=0,i|=0)||(e=hA(A,g,I,r,C,B,t),dg(t,32)),n=t+32|0,0|e},ua:function(A,g,I,C,e,a){return A|=0,g|=0,e|=0,a|=0,!(C|=0)&(I|=0)>>>0>=4294967280|C&&(ig(),B()),0|hA(A+16|0,A,g,I,C,e,a)},va:function(A,g,I,C,e,B,a){return 0|qA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)},wa:Ag,xa:function(A,g,I,C,e,B,a,i){A|=0,g|=0,I|=0,B|=0;var r,t=0;return t=C|=0,C=e|=0,r=0|t,n=t=n-32|0,e=-1,XA(t,a|=0,i|=0)||(e=pA(A,g,I,r,C,B,t),dg(t,32)),n=t+32|0,0|e},ya:zA,za:function(A,g,I,C,e,B,a){return 0|mA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)},Aa:function(A,g,I,e,B){A|=0,g|=0,B|=0;var i,r,t,Q,o=0,c=0;return o=I|=0,I=e|=0,Q=0|o,o=e=n,n=i=e-512&-64,e=-1,tg(r=i- -64|0,t=i+32|0)||(z(e=i+128|0,0,0,24),tA(e,r,32,0),tA(e,B,32,0),ZA(e,c=i+96|0,24),e=qA(A+32|0,g,Q,I,c,B,t),g=a[i+92>>2],I=a[i+88>>2],C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[i+84>>2],I=a[i+80>>2],C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[i+76>>2],I=a[i+72>>2],C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[i+68>>2],I=a[i+64>>2],C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,dg(t,32),dg(r,32),dg(c,24)),n=o,0|e},Ba:function(A,g,I,C,e,B){A|=0,g|=0,e|=0,B|=0;var a,i,r=0;return i=r=n,n=a=r-448&-64,r=-1,!(C|=0)&(I|=0)>>>0>=48|C&&(z(r=a- -64|0,0,0,24),tA(r,g,32,0),tA(r,e,32,0),ZA(r,e=a+32|0,24),r=mA(A,g+32|0,I-32|0,C-(I>>>0<32)|0,e,g,B)),n=i,0|r},Ca:function(){return 48},Da:ug,Ea:Fg,Fa:vg,Ga:ug,Ha:Fg,Ia:vg,Ja:function(){return 384},Ka:function(A,g,I,C,e,B,a){return 0|CA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)},La:z,Ma:function(A,g,I,C){return 0|tA(A|=0,g|=0,I|=0,C|=0)},Na:ZA,Oa:wg,Pa:Fg,Qa:function(A,g,I,C){return 0|wA(A|=0,g|=0,I|=0,C|=0)},Ra:ug,Sa:Fg,Ta:Kg,Ua:vg,Va:function(A,g,I,C,e,r){A|=0,g|=0,I|=0,C|=0,r|=0;var t,Q=0,o=0,c=0,E=0,y=0,_=0,h=0;return n=t=n-32|0,Q=i[0|(e|=0)]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,e=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[t+24>>2]=0,a[t+28>>2]=0,a[t+16>>2]=Q,a[t+20>>2]=e,a[t+8>>2]=0,a[t+12>>2]=0,a[(e=t)>>2]=I,a[e+4>>2]=C,g-65>>>0<=4294967246?(a[9280]=28,A=-1):g-65>>>0<4294967232?A=-1:(n=e=(c=n)-512&-64,!r|!A|((o=255&g)-65&255)>>>0<=191?(ig(),B()):(C=t+16|0,t?(E=725511199^(i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24),y=-1694144372^(i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24),I=-1377402159^(i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24),g=1359893119^(i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24)):(E=725511199,y=-1694144372,I=-1377402159,g=1359893119),C?(_=327033209^(i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24),h=1541459225^(i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24),Q=-79577749^(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),C=528734635^(i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24)):(_=327033209,h=1541459225,Q=-79577749,C=528734635),VA(e- -64|0,0,293),a[e+56>>2]=_,a[e+60>>2]=h,a[e+48>>2]=Q,a[e+52>>2]=C,a[e+40>>2]=E,a[e+44>>2]=y,a[e+32>>2]=I,a[e+36>>2]=g,a[e+24>>2]=1595750129,a[e+28>>2]=-1521486534,a[e+16>>2]=-23791573,a[e+20>>2]=1013904242,a[e+8>>2]=-2067093701,a[e+12>>2]=-1150833019,a[e>>2]=-222443256^(8192|o),a[e+4>>2]=1779033703,VA(32+(g=e+384|0)|0,0,96),OA(g,r,32),OA(e+96|0,g,128),a[e+352>>2]=128,dg(g,128),R(e,A,o),n=c),A=0),n=t+32|0,0|A},Wa:wg,Xa:function(A,g,I){return 0|IA(A|=0,g|=0,I|=0)},Ya:function(A,g,I){return 0|pg(A|=0,g|=0,I|=0)},Za:function(A,g){return gg(A|=0,g|=0),dg(A,4),0},_a:function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n-208|0,IA(B,g|=0,I|=0),pg(B,C,e),gg(B,A),dg(B,4),n=B+208|0,0},$a:wg,ab:function(A,g,I,e,B){A|=0,g|=0,I|=0,e|=0,B|=0;var r,t=0,Q=0,o=0,c=0;if(n=r=n-256|0,C[r+15|0]=1,g>>>0<=8160){if(g>>>0>=32)for(c=A-32|0,t=32;o=t,IA(t=r+48|0,B,32),Q&&pg(t,Q+c|0,32),pg(t=r+48|0,I,e),pg(t,r+15|0,1),gg(t,A+Q|0),C[r+15|0]=i[r+15|0]+1,(t=(Q=o)+32|0)>>>0<=g>>>0;);(Q=31&g)&&(IA(g=r+48|0,B,32),o&&pg(g,(A+o|0)-32|0,32),pg(g=r+48|0,I,e),pg(g,r+15|0,1),gg(I=g,g=r+16|0),OA(A+o|0,g,Q),dg(g,32)),dg(r+48|0,208),A=0}else a[9280]=28,A=-1;return n=r+256|0,0|A},bb:vg,cb:Ng,db:function(){return 8160},eb:lg,fb:function(A,g,I){return 0|_A(A|=0,g|=0,I|=0)},gb:function(A,g,I){return 0|hg(A|=0,g|=0,I|=0,0)},hb:function(A,g){return WA(A|=0,g|=0),dg(A,4),0},ib:function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n-416|0,_A(B,g|=0,I|=0),hg(B,C,e,0),WA(B,A),dg(B,4),n=B+416|0,0},jb:function(A){xA(A|=0,64)},kb:function(A,g,I,e,B){A|=0,g|=0,I|=0,e|=0,B|=0;var r,t=0,Q=0,o=0,c=0;if(n=r=n-496|0,C[r+15|0]=1,g>>>0<=16320){if(g>>>0>=64)for(c=A+-64|0,t=64;o=t,_A(t=r+80|0,B,64),Q&&hg(t,Q+c|0,64,0),hg(t=r+80|0,I,e,0),hg(t,r+15|0,1,0),WA(t,A+Q|0),C[r+15|0]=i[r+15|0]+1,(t=(Q=o)- -64|0)>>>0<=g>>>0;);(Q=63&g)&&(_A(g=r+80|0,B,64),o&&hg(g,(A+o|0)-64|0,64,0),hg(g=r+80|0,I,e,0),hg(g,r+15|0,1,0),WA(I=g,g=r+16|0),OA(A+o|0,g,Q),dg(g,64)),dg(r+80|0,416),A=0}else a[9280]=28,A=-1;return n=r+496|0,0|A},lb:Fg,mb:Ng,nb:function(){return 16320},ob:function(){return 416},pb:function(A,g,I){return A|=0,CA(g|=0,32,I|=0,32,0,0,0),0|Eg(A,g)},qb:function(A,g){return A|=0,xA(g|=0,32),0|Eg(A,g)},rb:function(A,g,I,e,a){g|=0,I|=0,e|=0,a|=0;var r,t,Q=0,o=0,c=0;if(t=Q=n,n=Q=Q-512&-64,r=(A|=0)||g){if(c=-1,!ag(o=Q+96|0,e,a)){for(e=g||A,A=0,z(g=Q+128|0,0,0,64),tA(g,o,32,0),dg(o,32),tA(g,I,32,0),tA(g,a,32,0),ZA(g,Q+32|0,64),dg(g,384);I=(g=Q+32|0)+A|0,C[A+r|0]=i[0|I],C[A+e|0]=i[I+32|0],C[(I=1|A)+r|0]=i[g+I|0],C[I+e|0]=i[g+(33|A)|0],32!=(0|(A=A+2|0)););dg(g,64),c=0}return n=t,0|c}ig(),B()},sb:function(A,g,I,e,a){g|=0,I|=0,e|=0,a|=0;var r,t,Q=0,o=0,c=0;if(t=Q=n,n=Q=Q-512&-64,r=(A|=0)||g){if(c=-1,!ag(o=Q+96|0,e,a)){for(e=g||A,A=0,z(g=Q+128|0,0,0,64),tA(g,o,32,0),dg(o,32),tA(g,a,32,0),tA(g,I,32,0),ZA(g,Q+32|0,64),dg(g,384);I=(g=Q+32|0)+A|0,C[A+e|0]=i[0|I],C[A+r|0]=i[I+32|0],C[(I=1|A)+e|0]=i[g+I|0],C[I+r|0]=i[g+(33|A)|0],32!=(0|(A=A+2|0)););dg(g,64),c=0}return n=t,0|c}ig(),B()},tb:vg,ub:vg,vb:vg,wb:vg,xb:Eg,yb:ag,zb:vg,Ab:vg,Bb:vg,Cb:Sg,Db:ug,Eb:bg,Fb:wg,Gb:$A,Hb:function(A,g,I,C,e,a){return A|=0,g|=0,e|=0,a|=0,!(C|=0)&(I|=0)>>>0>=4294967280|C&&(ig(),B()),hA(A+16|0,A,g,I,C,e,a),0},Ib:Ag,Jb:zA,Kb:wg,Lb:function(A,g,I){return A|=0,I|=0,xA(g|=0,24),$(A,g,I),C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,I=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,C[A+44|0]=0,C[A+45|0]=0,C[A+46|0]=0,C[A+47|0]=0,C[A+48|0]=0,C[A+49|0]=0,C[A+50|0]=0,C[A+51|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,0},Mb:function(A,g,I){return $(A|=0,g|=0,I|=0),C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,I=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,C[A+44|0]=0,C[A+45|0]=0,C[A+46|0]=0,C[A+47|0]=0,C[A+48|0]=0,C[A+49|0]=0,C[A+50|0]=0,C[A+51|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,0},Nb:function(A){var g,I=0,e=0;n=g=n-48|0,I=i[28+(A|=0)|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[g+24>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[g+28>>2]=I,I=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[g+16>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[g+20>>2]=I,I=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[g>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[g+4>>2]=I,I=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[g+8>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[g+12>>2]=I,I=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[g+32>>2]=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[g+36>>2]=I,cg(g,g,A+32|0,A),I=a[g+28>>2],e=a[g+24>>2],C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=a[g+20>>2],e=a[g+16>>2],C[A+16|0]=e,C[A+17|0]=e>>>8,C[A+18|0]=e>>>16,C[A+19|0]=e>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=a[g+12>>2],e=a[g+8>>2],C[A+8|0]=e,C[A+9|0]=e>>>8,C[A+10|0]=e>>>16,C[A+11|0]=e>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=a[g+4>>2],e=a[g>>2],C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,e=a[g+36>>2],I=a[g+32>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=e,C[A+41|0]=e>>>8,C[A+42|0]=e>>>16,C[A+43|0]=e>>>24,n=g+48|0},Ob:function(A,g,I,e,r,t,Q,o,c,E){A|=0,g|=0,e|=0,t|=0,Q|=0,c|=0,E|=0;var y,_=0,h=0,s=0;return _=r|=0,_|=r=0,y=r|(o|=0),n=r=n-384|0,(I|=0)&&(a[I>>2]=0,a[I+4>>2]=0),!t&_>>>0<4294967279?(yg(h=r+16|0,64,s=A+32|0,A),fg(o=r+80|0,h),dg(h,64),ng(o,Q,y,c),ng(o,34736,0-y&15,0),a[r+72>>2]=0,a[r+76>>2]=0,a[(Q=r- -64|0)>>2]=0,a[Q+4>>2]=0,a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,a[r+16>>2]=0,a[r+20>>2]=0,a[r+24>>2]=0,a[r+28>>2]=0,C[r+16|0]=E,JA(h,h,64,0,s,1,A),ng(o,h,64,0),C[0|g]=i[r+16|0],JA(g=g+1|0,e,_,t,s,2,A),ng(o,g,_,t),ng(o,34736,15&_,0),a[r+8>>2]=y,a[r+12>>2]=c,ng(o,e=r+8|0,8,0),a[r+8>>2]=_- -64,a[r+12>>2]=t-((_>>>0<4294967232)-1|0),ng(o,e,8,0),Dg(o,g=g+_|0),dg(o,256),C[A+36|0]=i[A+36|0]^i[0|g],C[A+37|0]=i[A+37|0]^i[g+1|0],C[A+38|0]=i[A+38|0]^i[g+2|0],C[A+39|0]=i[A+39|0]^i[g+3|0],C[A+40|0]=i[A+40|0]^i[g+4|0],C[A+41|0]=i[A+41|0]^i[g+5|0],C[A+42|0]=i[A+42|0]^i[g+6|0],C[A+43|0]=i[A+43|0]^i[g+7|0],YA(s),(2&E||kA(s,4))&&(g=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[r+360>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[r+364>>2]=g,g=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[r+352>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[r+356>>2]=g,g=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[r+336>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[r+340>>2]=g,g=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[r+344>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[r+348>>2]=g,g=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[r+368>>2]=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[r+372>>2]=g,cg(g=r+336|0,g,s,A),g=a[r+364>>2],e=a[r+360>>2],C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[r+356>>2],e=a[r+352>>2],C[A+16|0]=e,C[A+17|0]=e>>>8,C[A+18|0]=e>>>16,C[A+19|0]=e>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[r+348>>2],e=a[r+344>>2],C[A+8|0]=e,C[A+9|0]=e>>>8,C[A+10|0]=e>>>16,C[A+11|0]=e>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[r+340>>2],e=a[r+336>>2],C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=a[r+368>>2],e=a[r+372>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=e,C[A+41|0]=e>>>8,C[A+42|0]=e>>>16,C[A+43|0]=e>>>24),I&&(t=(A=_+17|0)>>>0<17?t+1|0:t,a[I>>2]=A,a[I+4>>2]=t),n=r+384|0):(ig(),B()),0},Pb:function(A,g,I,e,r,t,Q,o,c,E){A|=0,g|=0,e|=0,r|=0,o|=0,E|=0;var y,_=0,h=0,s=0,p=0,f=0,D=0;_=t|=0,t=Q|=0,h=0|_,y=c|=0,n=Q=n-400|0,(I|=0)&&(a[I>>2]=0,a[I+4>>2]=0),e&&(C[0|e]=255),D=-1;A:{g:{if(!((c=h>>>0<17)&!t)){if(f=_=t-c|0,!_&(c=h-17|0)>>>0>=4294967279|_)break g;yg(s=Q+32|0,64,p=A+32|0,A),fg(_=Q+96|0,s),dg(s,64),ng(_,o,y,E),ng(_,34736,0-y&15,0),a[Q+88>>2]=0,a[Q+92>>2]=0,a[Q+80>>2]=0,a[Q+84>>2]=0,a[Q+72>>2]=0,a[Q+76>>2]=0,a[(o=Q- -64|0)>>2]=0,a[o+4>>2]=0,a[Q+56>>2]=0,a[Q+60>>2]=0,a[Q+48>>2]=0,a[Q+52>>2]=0,a[Q+40>>2]=0,a[Q+44>>2]=0,a[Q+32>>2]=0,a[Q+36>>2]=0,C[Q+32|0]=i[0|r],JA(s,s,64,0,p,1,A),o=i[Q+32|0],C[Q+32|0]=i[0|r],ng(_,s,64,0),ng(_,r=r+1|0,c,f),ng(_,34736,h-1&15,0),a[Q+24>>2]=y,a[Q+28>>2]=E,ng(_,E=Q+24|0,8,0),t=(h=h+47|0)>>>0<47?t+1|0:t,a[Q+24>>2]=h,a[Q+28>>2]=t,ng(_,E,8,0),Dg(_,Q),dg(_,256),lA(Q,r+c|0,16)?dg(Q,16):(JA(g,r,c,f,p,2,A),C[A+36|0]=i[A+36|0]^i[0|Q],C[A+37|0]=i[A+37|0]^i[Q+1|0],C[A+38|0]=i[A+38|0]^i[Q+2|0],C[A+39|0]=i[A+39|0]^i[Q+3|0],C[A+40|0]=i[A+40|0]^i[Q+4|0],C[A+41|0]=i[A+41|0]^i[Q+5|0],C[A+42|0]=i[A+42|0]^i[Q+6|0],C[A+43|0]=i[A+43|0]^i[Q+7|0],YA(p),(2&o||kA(p,4))&&(g=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[Q+376>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[Q+380>>2]=g,g=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[Q+368>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[Q+372>>2]=g,g=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[Q+352>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[Q+356>>2]=g,g=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[Q+360>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[Q+364>>2]=g,g=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[Q+384>>2]=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[Q+388>>2]=g,cg(g=Q+352|0,g,p,A),g=a[Q+380>>2],r=a[Q+376>>2],C[A+24|0]=r,C[A+25|0]=r>>>8,C[A+26|0]=r>>>16,C[A+27|0]=r>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[Q+372>>2],r=a[Q+368>>2],C[A+16|0]=r,C[A+17|0]=r>>>8,C[A+18|0]=r>>>16,C[A+19|0]=r>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[Q+364>>2],r=a[Q+360>>2],C[A+8|0]=r,C[A+9|0]=r>>>8,C[A+10|0]=r>>>16,C[A+11|0]=r>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[Q+356>>2],r=a[Q+352>>2],C[0|A]=r,C[A+1|0]=r>>>8,C[A+2|0]=r>>>16,C[A+3|0]=r>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=a[Q+384>>2],r=a[Q+388>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=r,C[A+41|0]=r>>>8,C[A+42|0]=r>>>16,C[A+43|0]=r>>>24),I&&(a[I>>2]=c,a[I+4>>2]=f),D=0,e&&(C[0|e]=o))}n=Q+400|0;break A}ig(),B()}return 0|D},Qb:function(){return 52},Rb:function(){return 17},Sb:Sg,Tb:vg,Ub:function(){return-18},Vb:Ng,Wb:Yg,Xb:Hg,Yb:function(){return 3},Zb:Kg,_b:ug,$b:function(A,g,I,e,B){A|=0,g|=0,I|=0,e|=0;var a,r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0;if(w=1886610805^(t=i[0|(B|=0)]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),_=1936682341^(Q=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24),t^=1852142177,o=1819895653^Q,k=1852075885^(Q=i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24),f=1685025377^(B=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24),E=2037671283^Q,Q=1952801890^B,p=I,(0|(r=(I+g|0)-(a=7&I)|0))!=(0|g))for(;I=(c=Q^(D=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24))+o|0,E=e=t+(B=E^(n=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))|0,s=I=e>>>0<B>>>0?I+1|0:I,t=e,e=I,I=_+f|0,I=(Q=w+k|0)>>>0<w>>>0?I+1|0:I,y=(o=vA(k,f,13)^Q)+t|0,e=(t=h^I)+e|0,t=vA(o,t,17)^y,f=vA(t,e=(o=o>>>0>y>>>0?e+1|0:e)^h,13),_=h,c=vA(B,c,16),B=s^h,c^=E,s=vA(Q,I,32),I=h+B|0,I=(E=e)+(e=(Q=c+s|0)>>>0<s>>>0?I+1|0:I)|0,s=I=(E=t+Q|0)>>>0<Q>>>0?I+1|0:I,f=vA(t=E^f,I^=_,17),_=h,c=vA(c,B,21),B=e^h,c^=Q,Q=vA(y,o,32),e=h+B|0,I=(Q=Q>>>0>(o=c+Q|0)>>>0?e+1|0:e)+I|0,k=(t=t+o|0)^f,e=I=t>>>0<o>>>0?I+1|0:I,f=I^_,I=vA(c,B,16),c=Q^=h,y=vA(I^=o,Q,21),o=h,s=(Q=vA(E,s,32))+I|0,I=h+c|0,E=y^s,Q=(I=Q>>>0>s>>>0?I+1|0:I)^o,t=vA(t,e,32),o=h,w=s^n,_=I^D,(0|r)!=(0|(g=g+8|0)););switch(D=0,y=p<<24,a-1|0){case 6:y|=i[g+6|0]<<16;case 5:y|=i[g+5|0]<<8;case 4:y|=i[g+4|0];case 3:D|=(I=i[g+3|0])<<24,y|=e=I>>>8|0;case 2:D|=(e=i[g+2|0])<<16,y|=I=e>>>16|0;case 1:D|=(I=i[g+1|0])<<8,y|=e=I>>>24|0;case 0:D=i[0|g]|D}return g=A,e=vA(B=E^D,A=Q^y,16),A=A+o|0,Q=A=(s=B+t|0)>>>0<t>>>0?A+1|0:A,n=vA(B=e^s,A^=I=h,21),o=h,I=_+f|0,e=I=(t=w+k|0)>>>0<w>>>0?I+1|0:I,c=B,B=vA(t,I,32),I=h+A|0,A=o,o=I=B>>>0>(E=c+B|0)>>>0?I+1|0:I,_=vA(B=E^n,A^=I,16),c=h,I=(t=p=vA(k,f,13)^t)+s|0,e=(n=h^e)+Q|0,s=B,B=vA(I,e=I>>>0<t>>>0?e+1|0:e,32),A=h+A|0,_=vA(t=_^(s=s+B|0),B=(Q=B>>>0>s>>>0?A+1|0:A)^c,21),c=h,p=vA(p,n,17)^I,I=(n=h^e)+o|0,A=I=(e=E=(A=p)+E|0)>>>0<A>>>0?I+1|0:I,o=t,t=vA(e,I,32),I=h+B|0,c=I=(t=t>>>0>(o=o+t|0)>>>0?I+1|0:I)^c,_=vA(f=o^_,I,16),E=h,p=vA(p,n,13)^e,A=(n=A^h)+Q|0,e=A=(I=p)>>>0>(B=I+s|0)>>>0?A+1|0:A,A=vA(B,A,32),I=c+h|0,c=I=(Q=(A=f+(255^A)|0)>>>0<f>>>0?I+1|0:I)^E,s=A,_=vA(f=_^A,I,21),E=h,p=vA(p,n,17)^B,I=(n=e^h)+(t^y)|0,e=I=(A=o^D)>>>0>(B=p+A|0)>>>0?I+1|0:I,A=vA(B,I,32),I=c+h|0,c=I=(t=(A=A+f|0)>>>0<f>>>0?I+1|0:I)^E,o=A,y=vA(_^=A,I,16),E=h,p=vA(p,n,13)^B,A=Q+(n=h^e)|0,A=vA(B=s+p|0,I=A=B>>>0<s>>>0?A+1|0:A,32),e=c+h|0,c=e=(Q=(A=A+_|0)>>>0<_>>>0?e+1|0:e)^E,s=A,y=vA(_=y^A,e,21),E=h,A=vA(p,n,17),I=t+(p=I^h)|0,e=I=(B=o+(n=A^B)|0)>>>0<o>>>0?I+1|0:I,A=vA(B,I,32),I=c+h|0,o=A=A+_|0,t=I=A>>>0<_>>>0?I+1|0:I,y=vA(c=y^A,I^=E,16),E=h,A=vA(n,p,13),e=Q+(p=e^h)|0,A=vA(B=s+(n=A^B)|0,e=B>>>0<s>>>0?e+1|0:e,32),I=I+h|0,c=I=(Q=(A=A+c|0)>>>0<c>>>0?I+1|0:I)^E,s=A,y=vA(_=y^A,I,21),E=h,A=vA(n,p,17),I=t+(p=e^h)|0,e=I=(B=o+(n=A^B)|0)>>>0<o>>>0?I+1|0:I,I=vA(B,I,32),A=c+h|0,c=A=(t=(I=I+_|0)>>>0<_>>>0?A+1|0:A)^E,o=I,y=vA(_=y^I,A,16),E=h,A=vA(n,p,13),I=Q+(p=e^h)|0,e=I=(B=s+(n=A^B)|0)>>>0<s>>>0?I+1|0:I,A=vA(B,I,32),I=c+h|0,Q=A=A+_|0,y=vA(y^A,(I=A>>>0<_>>>0?I+1|0:I)^E,21),E=h,B=vA(n,p,17)^B,s=vA(B,A=e^h,13),A=A+t|0,e=A=h^((B=B+o|0)>>>0<o>>>0?A+1:A),B=vA(t=B^s,A,17)^y,A=h^E,e=I+e|0,I=vA(I=t+Q|0,e=I>>>0<Q>>>0?e+1|0:e,32)^B^I,C[0|g]=I,C[g+1|0]=I>>>8,C[g+2|0]=I>>>16,C[g+3|0]=I>>>24,A^=e^h,C[g+4|0]=A,C[g+5|0]=A>>>8,C[g+6|0]=A>>>16,C[g+7|0]=A>>>24,0},ac:kg,bc:lg,cc:Fg,dc:vg,ec:vg,fc:Fg,gc:function(){return-65},hc:function(A,g,I){A|=0;var e,B,a,r,t=0,Q=0,o=0,c=0,E=0;return n=a=n-160|0,wA(g|=0,I|=0,32,0),C[0|g]=248&i[0|g],C[g+31|0]=63&i[g+31|0]|64,Z(a,g),RA(A,a),Q=i[(B=I)+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,t=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,o=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,c=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,E=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,I=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,r=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,e=g,g=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,C[e+24|0]=g,C[e+25|0]=g>>>8,C[e+26|0]=g>>>16,C[e+27|0]=g>>>24,C[e+28|0]=r,C[e+29|0]=r>>>8,C[e+30|0]=r>>>16,C[e+31|0]=r>>>24,C[e+16|0]=o,C[e+17|0]=o>>>8,C[e+18|0]=o>>>16,C[e+19|0]=o>>>24,C[e+20|0]=c,C[e+21|0]=c>>>8,C[e+22|0]=c>>>16,C[e+23|0]=c>>>24,C[e+8|0]=Q,C[e+9|0]=Q>>>8,C[e+10|0]=Q>>>16,C[e+11|0]=Q>>>24,C[e+12|0]=t,C[e+13|0]=t>>>8,C[e+14|0]=t>>>16,C[e+15|0]=t>>>24,C[0|e]=E,C[e+1|0]=E>>>8,C[e+2|0]=E>>>16,C[e+3|0]=E>>>24,C[e+4|0]=I,C[e+5|0]=I>>>8,C[e+6|0]=I>>>16,C[e+7|0]=I>>>24,o=i[(t=A)+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,c=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,E=i[t+16|0]|i[t+17|0]<<8|i[t+18|0]<<16|i[t+19|0]<<24,I=i[t+20|0]|i[t+21|0]<<8|i[t+22|0]<<16|i[t+23|0]<<24,g=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,A=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,Q=i[t+28|0]|i[t+29|0]<<8|i[t+30|0]<<16|i[t+31|0]<<24,t=i[t+24|0]|i[t+25|0]<<8|i[t+26|0]<<16|i[t+27|0]<<24,C[e+56|0]=t,C[e+57|0]=t>>>8,C[e+58|0]=t>>>16,C[e+59|0]=t>>>24,C[e+60|0]=Q,C[e+61|0]=Q>>>8,C[e+62|0]=Q>>>16,C[e+63|0]=Q>>>24,C[e+48|0]=E,C[e+49|0]=E>>>8,C[e+50|0]=E>>>16,C[e+51|0]=E>>>24,C[e+52|0]=I,C[e+53|0]=I>>>8,C[e+54|0]=I>>>16,C[e+55|0]=I>>>24,C[e+40|0]=o,C[e+41|0]=o>>>8,C[e+42|0]=o>>>16,C[e+43|0]=o>>>24,C[e+44|0]=c,C[e+45|0]=c>>>8,C[e+46|0]=c>>>16,C[e+47|0]=c>>>24,C[e+32|0]=g,C[e+33|0]=g>>>8,C[e+34|0]=g>>>16,C[e+35|0]=g>>>24,C[e+36|0]=A,C[e+37|0]=A>>>8,C[e+38|0]=A>>>16,C[e+39|0]=A>>>24,n=a+160|0,0},ic:function(A,g){A|=0,g|=0;var I,e,B,r,t,Q=0,o=0,c=0;return n=o=n-192|0,xA(o,32),wA(g,o,32,0),C[0|g]=248&i[0|g],C[g+31|0]=63&i[g+31|0]|64,Z(c=o+32|0,g),RA(A,c),I=o,c=a[o+28>>2],o=a[o+24>>2],C[g+24|0]=o,C[g+25|0]=o>>>8,C[g+26|0]=o>>>16,C[g+27|0]=o>>>24,C[g+28|0]=c,C[g+29|0]=c>>>8,C[g+30|0]=c>>>16,C[g+31|0]=c>>>24,c=a[I+20>>2],o=a[I+16>>2],C[g+16|0]=o,C[g+17|0]=o>>>8,C[g+18|0]=o>>>16,C[g+19|0]=o>>>24,C[g+20|0]=c,C[g+21|0]=c>>>8,C[g+22|0]=c>>>16,C[g+23|0]=c>>>24,c=a[I+12>>2],o=a[I+8>>2],C[g+8|0]=o,C[g+9|0]=o>>>8,C[g+10|0]=o>>>16,C[g+11|0]=o>>>24,C[g+12|0]=c,C[g+13|0]=c>>>8,C[g+14|0]=c>>>16,C[g+15|0]=c>>>24,c=a[I+4>>2],o=a[I>>2],C[0|g]=o,C[g+1|0]=o>>>8,C[g+2|0]=o>>>16,C[g+3|0]=o>>>24,C[g+4|0]=c,C[g+5|0]=c>>>8,C[g+6|0]=c>>>16,C[g+7|0]=c>>>24,e=i[(Q=A)+8|0]|i[Q+9|0]<<8|i[Q+10|0]<<16|i[Q+11|0]<<24,B=i[Q+12|0]|i[Q+13|0]<<8|i[Q+14|0]<<16|i[Q+15|0]<<24,r=i[Q+16|0]|i[Q+17|0]<<8|i[Q+18|0]<<16|i[Q+19|0]<<24,c=i[Q+20|0]|i[Q+21|0]<<8|i[Q+22|0]<<16|i[Q+23|0]<<24,o=i[0|Q]|i[Q+1|0]<<8|i[Q+2|0]<<16|i[Q+3|0]<<24,A=i[Q+4|0]|i[Q+5|0]<<8|i[Q+6|0]<<16|i[Q+7|0]<<24,t=i[Q+28|0]|i[Q+29|0]<<8|i[Q+30|0]<<16|i[Q+31|0]<<24,Q=i[Q+24|0]|i[Q+25|0]<<8|i[Q+26|0]<<16|i[Q+27|0]<<24,C[g+56|0]=Q,C[g+57|0]=Q>>>8,C[g+58|0]=Q>>>16,C[g+59|0]=Q>>>24,C[g+60|0]=t,C[g+61|0]=t>>>8,C[g+62|0]=t>>>16,C[g+63|0]=t>>>24,C[g+48|0]=r,C[g+49|0]=r>>>8,C[g+50|0]=r>>>16,C[g+51|0]=r>>>24,C[g+52|0]=c,C[g+53|0]=c>>>8,C[g+54|0]=c>>>16,C[g+55|0]=c>>>24,C[g+40|0]=e,C[g+41|0]=e>>>8,C[g+42|0]=e>>>16,C[g+43|0]=e>>>24,C[g+44|0]=B,C[g+45|0]=B>>>8,C[g+46|0]=B>>>16,C[g+47|0]=B>>>24,C[g+32|0]=o,C[g+33|0]=o>>>8,C[g+34|0]=o>>>16,C[g+35|0]=o>>>24,C[g+36|0]=A,C[g+37|0]=A>>>8,C[g+38|0]=A>>>16,C[g+39|0]=A>>>24,dg(I,32),n=I+192|0,0},jc:function(A,g,I,C,e,B){g|=0,e|=0,B|=0;var i,r=0;return n=i=n-16|0,p(A|=0,i+8|0,TA(A- -64|0,I|=0,C|=0),C,e,B,0),64!=a[i+8>>2]|a[i+12>>2]?(g&&(a[g>>2]=0,a[g+4>>2]=0),VA(A,0,C- -64|0),r=-1):g&&(a[g>>2]=C- -64,a[g+4>>2]=e-((C>>>0<4294967232)-1|0)),n=i+16|0,0|r},kc:function(A,g,I,C,e,B){A|=0,g|=0,I|=0;var i=0;A:{g:{if(i=C|=0,!(!(e|=0)&C>>>0<64||(C=e-1|0,!(C=(e=i+-64|0)>>>0<4294967232?C+1|0:C)&e>>>0>4294967231|C))){if(!w(I,i=I- -64|0,e,C,B|=0,0))break g;A&&VA(A,0,e)}if(I=-1,!g)break A;a[g>>2]=0,a[g+4>>2]=0;break A}g&&(a[g>>2]=e,a[g+4>>2]=C),I=0,A&&TA(A,i,e)}return 0|I},lc:function(A,g,I,C,e,B){return p(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,0),0},mc:function(A,g,I,C,e){return 0|w(A|=0,g|=0,I|=0,C|=0,e|=0,0)},nc:function(A){return dA(A|=0),0},oc:function(A,g,I,C){return 0|W(A|=0,g|=0,I|=0,C|=0)},pc:function(A,g,I,C){var e;return g|=0,I|=0,C|=0,n=e=n+-64|0,J(A|=0,e),A=p(g,I,e,64,0,C,1),n=e- -64|0,0|A},qc:function(A,g,I){var C;return g|=0,I|=0,n=C=n+-64|0,J(A|=0,C),A=w(g,C,64,0,I,1),n=C- -64|0,0|A},rc:function(A,g){A|=0;var I,e=0,B=0,i=0,r=0,Q=0,o=0,c=0,E=0,y=0,_=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,T=0,q=0,z=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,rA=0,tA=0,oA=0,cA=0,EA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,dA=0,lA=0,vA=0,SA=0,bA=0,MA=0,FA=0,NA=0,KA=0,YA=0,HA=0,JA=0,UA=0,xA=0,mA=0,PA=0,RA=0,LA=0,TA=0;if(n=I=n-256|0,HA=-1,!uA(g|=0)&&!L(e=I+96|0,g)){for(n=i=n-2048|0,QA(r=i+640|0,e),e=a[(g=e)+36>>2],a[i+352>>2]=a[g+32>>2],a[i+356>>2]=e,e=a[g+28>>2],a[i+344>>2]=a[g+24>>2],a[i+348>>2]=e,e=a[g+20>>2],a[i+336>>2]=a[g+16>>2],a[i+340>>2]=e,e=a[g+12>>2],a[i+328>>2]=a[g+8>>2],a[i+332>>2]=e,e=a[g+4>>2],a[i+320>>2]=a[g>>2],a[i+324>>2]=e,e=a[g+52>>2],a[i+368>>2]=a[g+48>>2],a[i+372>>2]=e,e=a[g+60>>2],a[i+376>>2]=a[g+56>>2],a[i+380>>2]=e,B=a[4+(e=g- -64|0)>>2],a[i+384>>2]=a[e>>2],a[i+388>>2]=B,e=a[g+76>>2],a[i+392>>2]=a[g+72>>2],a[i+396>>2]=e,e=a[g+44>>2],a[i+360>>2]=a[g+40>>2],a[i+364>>2]=e,e=a[g+92>>2],a[i+408>>2]=a[g+88>>2],a[i+412>>2]=e,e=a[g+100>>2],a[i+416>>2]=a[g+96>>2],a[i+420>>2]=e,e=a[g+108>>2],a[i+424>>2]=a[g+104>>2],a[i+428>>2]=e,e=a[g+116>>2],a[i+432>>2]=a[g+112>>2],a[i+436>>2]=e,e=a[g+84>>2],a[i+400>>2]=a[g+80>>2],a[i+404>>2]=e,v(g=i+480|0,e=i+320|0),d(B=i+160|0,g,o=i+600|0),d(i+200|0,E=i+520|0,y=i+560|0),d(i+240|0,y,o),d(i+280|0,g,E),j(g,B,r),d(e,g,o),d(w=i+360|0,E,y),d(k=i+400|0,y,o),d(p=i+440|0,g,E),QA(r=i+800|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+960|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1120|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1280|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1440|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1600|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(i+1760|0,e),a[i+32>>2]=0,a[i+36>>2]=0,a[i+24>>2]=0,a[i+28>>2]=0,a[i+16>>2]=0,a[i+20>>2]=0,a[i+8>>2]=0,a[i+12>>2]=0,a[i+52>>2]=0,a[i+56>>2]=0,a[i+60>>2]=0,a[i+64>>2]=0,a[i+68>>2]=0,a[i+72>>2]=0,a[i+76>>2]=0,a[i+80>>2]=1,a[i>>2]=0,a[i+4>>2]=0,a[i+44>>2]=0,a[i+48>>2]=0,a[i+40>>2]=1,VA(i+84|0,0,76),_=i+120|0,D=i+2008|0,f=i+1968|0,e=i+80|0,B=i+40|0,r=252;Q=a[i+36>>2],a[(g=i+1960|0)>>2]=a[i+32>>2],a[g+4>>2]=Q,Q=a[i+28>>2],a[(g=i+1952|0)>>2]=a[i+24>>2],a[g+4>>2]=Q,Q=a[i+20>>2],a[(g=i+1944|0)>>2]=a[i+16>>2],a[g+4>>2]=Q,Q=a[i+12>>2],a[(g=i+1936|0)>>2]=a[i+8>>2],a[g+4>>2]=Q,g=a[i+4>>2],a[i+1928>>2]=a[i>>2],a[i+1932>>2]=g,Q=a[(g=B)+36>>2],a[f+32>>2]=a[g+32>>2],a[f+36>>2]=Q,Q=a[g+28>>2],a[f+24>>2]=a[g+24>>2],a[f+28>>2]=Q,Q=a[g+20>>2],a[f+16>>2]=a[g+16>>2],a[f+20>>2]=Q,Q=a[g+12>>2],a[f+8>>2]=a[g+8>>2],a[f+12>>2]=Q,Q=a[g+4>>2],a[f>>2]=a[g>>2],a[f+4>>2]=Q,Q=a[(g=e)+36>>2],a[D+32>>2]=a[g+32>>2],a[D+36>>2]=Q,Q=a[g+28>>2],a[D+24>>2]=a[g+24>>2],a[D+28>>2]=Q,Q=a[g+20>>2],a[D+16>>2]=a[g+16>>2],a[D+20>>2]=Q,Q=a[g+12>>2],a[D+8>>2]=a[g+8>>2],a[D+12>>2]=Q,Q=a[g+4>>2],a[D>>2]=a[g>>2],a[D+4>>2]=Q,r=C[(g=r)+33408|0],v(Q=i+480|0,i+1928|0),(0|r)>0?(d(u=i+320|0,Q,o),d(w,E,y),d(k,y,o),d(p,Q,E),j(Q,u,(i+640|0)+t((254&r)>>>1|0,160)|0)):(0|r)>=0||(d(u=i+320|0,Q=i+480|0,o),d(w,E,y),d(k,y,o),d(p,Q,E),X(Q,u,(i+640|0)+t((0-r&254)>>>1|0,160)|0)),d(i,r=i+480|0,o),d(B,E,y),d(e,y,o),d(_,r,E),r=g-1|0,g;);yA(g=i+640|0,i),g=kA(g,32),n=i+2048|0,g&&(HA=0,P=a[I+172>>2],a[I+36>>2]=0-P,w=a[I+168>>2],a[I+32>>2]=0-w,R=a[I+164>>2],a[I+28>>2]=0-R,E=a[I+160>>2],a[I+24>>2]=0-E,T=a[I+156>>2],a[I+20>>2]=0-T,y=a[I+152>>2],a[I+16>>2]=0-y,q=a[I+148>>2],a[I+12>>2]=0-q,D=a[I+144>>2],a[I+8>>2]=0-D,z=a[I+140>>2],a[I+4>>2]=0-z,i=a[I+136>>2],a[I>>2]=1-i,iA(I,I),g=GA(k=a[I+4>>2],U=k>>31,F=T<<1,rA=F>>31),e=h,B=GA(o=a[I>>2],N=o>>31,E,K=E>>31),e=h+e|0,e=(g=B+g|0)>>>0<B>>>0?e+1|0:e,B=(r=GA(Q=a[I+8>>2],O=Q>>31,y,Y=y>>31))+g|0,g=h+e|0,g=B>>>0<r>>>0?g+1|0:g,e=B,B=GA(x=a[I+12>>2],W=x>>31,gA=q<<1,tA=gA>>31),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(V=a[I+16>>2],IA=V>>31,D,H=D>>31),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,bA=r=a[I+20>>2],f=GA(r,oA=r>>31,CA=z<<1,cA=CA>>31),B=h+g|0,B=(e=f+e|0)>>>0<f>>>0?B+1|0:B,MA=S=a[I+24>>2],g=(i=GA(S,lA=S>>31,f=i+1|0,G=f>>31))+e|0,e=h+B|0,e=g>>>0<i>>>0?e+1|0:e,EA=a[I+28>>2],B=(i=GA(u=t(EA,19),$=u>>31,eA=P<<1,_A=eA>>31))+g|0,g=h+e|0,g=B>>>0<i>>>0?g+1|0:g,e=B,JA=a[I+32>>2],B=GA(_=t(JA,19),Z=_>>31,w,J=w>>31),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,UA=a[I+36>>2],B=GA(p=t(UA,19),m=p>>31,BA=R<<1,nA=BA>>31),g=h+g|0,s=e=B+e|0,i=e>>>0<B>>>0?g+1|0:g,g=GA(y,Y,k,U),e=h,c=GA(o,N,T,hA=T>>31),B=h+e|0,B=(g=c+g|0)>>>0<c>>>0?B+1|0:B,c=GA(Q,O,q,sA=q>>31),e=h+B|0,e=(g=c+g|0)>>>0<c>>>0?e+1|0:e,B=(c=GA(D,H,x,W))+g|0,g=h+e|0,g=B>>>0<c>>>0?g+1|0:g,e=B,B=GA(V,IA,z,pA=z>>31),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(f,G,r,oA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,c=GA(S=t(S,19),aA=S>>31,P,fA=P>>31),B=h+g|0,B=(e=c+e|0)>>>0<c>>>0?B+1|0:B,g=(c=GA(w,J,u,$))+e|0,e=h+B|0,e=g>>>0<c>>>0?e+1|0:e,B=(c=GA(_,Z,R,DA=R>>31))+g|0,g=h+e|0,g=B>>>0<c>>>0?g+1|0:g,e=B,B=GA(E,K,p,m),g=h+g|0,FA=e=e+B|0,AA=e>>>0<B>>>0?g+1|0:g,g=GA(k,U,gA,tA),B=h,e=(c=GA(o,N,y,Y))+g|0,g=h+B|0,g=e>>>0<c>>>0?g+1|0:g,c=GA(D,H,Q,O),B=h+g|0,B=(e=c+e|0)>>>0<c>>>0?B+1|0:B,g=(c=GA(x,W,CA,cA))+e|0,e=h+B|0,e=g>>>0<c>>>0?e+1|0:e,B=(c=GA(f,G,V,IA))+g|0,g=h+e|0,g=B>>>0<c>>>0?g+1|0:g,e=B,B=GA(c=t(r,19),wA=c>>31,eA,_A),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(w,J,S,aA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,r=GA(u,$,BA,nA),B=h+g|0,B=(e=r+e|0)>>>0<r>>>0?B+1|0:B,g=(r=GA(E,K,_,Z))+e|0,e=h+B|0,e=g>>>0<r>>>0?e+1|0:e,B=(r=GA(p,m,F,rA))+g|0,g=h+e|0,xA=B,mA=g=B>>>0<r>>>0?g+1|0:g,PA=B=B+33554432|0,RA=g=B>>>0<33554432?g+1|0:g,B=(67108863&g)<<6|B>>>26,g=(g>>26)+AA|0,FA=r=B+FA|0,g=B>>>0>r>>>0?g+1|0:g,LA=r=r+16777216|0,g=(e=(B=r>>>0<16777216?g+1|0:g)>>25)+i|0,g=(B=(r=(33554431&B)<<7|r>>>25)+s|0)>>>0<r>>>0?g+1|0:g,M=e=B+33554432|0,r=g=e>>>0<33554432?g+1|0:g,a[I+72>>2]=B-(-67108864&e),g=GA(k,U,CA,cA),e=h,i=GA(o,N,D,H),B=h+e|0,B=(g=i+g|0)>>>0<i>>>0?B+1|0:B,e=(i=GA(f,G,Q,O))+g|0,g=h+B|0,g=e>>>0<i>>>0?g+1|0:g,B=GA(i=t(x,19),dA=i>>31,eA,_A),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(s=GA(AA=t(V,19),vA=AA>>31,w,J))+e|0,e=h+g|0,e=B>>>0<s>>>0?e+1|0:e,s=GA(BA,nA,c,wA),g=h+e|0,g=(B=s+B|0)>>>0<s>>>0?g+1|0:g,e=(s=GA(E,K,S,aA))+B|0,B=h+g|0,B=e>>>0<s>>>0?B+1|0:B,s=GA(u,$,F,rA),g=h+B|0,g=(e=s+e|0)>>>0<s>>>0?g+1|0:g,B=GA(y,Y,_,Z),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(s=GA(p,m,gA,tA))+e|0,e=h+g|0,b=B,NA=B>>>0<s>>>0?e+1|0:e,g=GA(f,G,k,U),e=h,B=(s=GA(o,N,z,pA))+g|0,g=h+e|0,g=B>>>0<s>>>0?g+1|0:g,s=e=t(Q,19),e=(l=GA(e,SA=e>>31,P,fA))+B|0,B=h+g|0,B=e>>>0<l>>>0?B+1|0:B,l=GA(i,dA,w,J),g=h+B|0,g=(e=l+e|0)>>>0<l>>>0?g+1|0:g,B=GA(AA,vA,R,DA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(l=GA(E,K,c,wA))+e|0,e=h+g|0,e=B>>>0<l>>>0?e+1|0:e,l=GA(S,aA,T,hA),g=h+e|0,g=(B=l+B|0)>>>0<l>>>0?g+1|0:g,e=(l=GA(y,Y,u,$))+B|0,B=h+g|0,B=e>>>0<l>>>0?B+1|0:B,l=GA(_,Z,q,sA),g=h+B|0,g=(e=l+e|0)>>>0<l>>>0?g+1|0:g,B=GA(D,H,p,m),g=h+g|0,KA=e=B+e|0,l=e>>>0<B>>>0?g+1|0:g,g=GA(g=t(k,19),g>>31,eA,_A),e=h,B=GA(o,N,f,G),e=h+e|0,e=(g=B+g|0)>>>0<B>>>0?e+1|0:e,B=(s=GA(s,SA,w,J))+g|0,g=h+e|0,e=(i=GA(i,dA,BA,nA))+B|0,B=h+(B>>>0<s>>>0?g+1|0:g)|0,B=e>>>0<i>>>0?B+1|0:B,i=GA(E,K,AA,vA),g=h+B|0,g=(e=i+e|0)>>>0<i>>>0?g+1|0:g,B=GA(F,rA,c,wA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(i=GA(y,Y,S,aA))+e|0,e=h+g|0,e=B>>>0<i>>>0?e+1|0:e,i=GA(u,$,gA,tA),g=h+e|0,g=(B=i+B|0)>>>0<i>>>0?g+1|0:g,e=(i=GA(D,H,_,Z))+B|0,B=h+g|0,B=e>>>0<i>>>0?B+1|0:B,i=GA(p,m,CA,cA),g=h+B|0,s=e=i+e|0,dA=g=e>>>0<i>>>0?g+1|0:g,SA=e=e+33554432|0,TA=g=e>>>0<33554432?g+1|0:g,B=g>>26,g=(67108863&g)<<6|e>>>26,e=B+l|0,l=i=g+KA|0,g=e=g>>>0>i>>>0?e+1|0:e,KA=i=i+16777216|0,i=(33554431&(g=i>>>0<16777216?g+1|0:g))<<7|i>>>25,g=(g>>25)+NA|0,g=(e=i+b|0)>>>0<i>>>0?g+1|0:g,B=e,NA=e=e+33554432|0,i=g=e>>>0<33554432?g+1|0:g,a[I+56>>2]=B-(-67108864&e),g=GA(E,K,k,U),B=h,e=(b=GA(o,N,R,DA))+g|0,g=h+B|0,g=e>>>0<b>>>0?g+1|0:g,B=GA(Q,O,T,hA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=GA(y,Y,x,W),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,b=GA(V,IA,q,sA),B=h+g|0,B=(e=b+e|0)>>>0<b>>>0?B+1|0:B,g=(b=GA(D,H,bA,oA))+e|0,e=h+B|0,e=g>>>0<b>>>0?e+1|0:e,B=(b=GA(z,pA,MA,lA))+g|0,g=h+e|0,g=B>>>0<b>>>0?g+1|0:g,e=B,B=GA(EA,YA=EA>>31,f,G),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(_,Z,P,fA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,b=(B=e)+(e=GA(w,J,p,m))|0,B=h+g|0,e=(g=r>>26)+(e=e>>>0>b>>>0?B+1|0:B)|0,M=B=(r=(67108863&r)<<6|M>>>26)+b|0,g=e=B>>>0<r>>>0?e+1|0:e,b=B=B+16777216|0,r=g=B>>>0<16777216?g+1|0:g,a[I+76>>2]=M-(-33554432&B),g=GA(D,H,k,U),e=h,M=GA(o,N,q,sA),B=h+e|0,B=(g=M+g|0)>>>0<M>>>0?B+1|0:B,M=GA(Q,O,z,pA),e=h+B|0,e=(g=M+g|0)>>>0<M>>>0?e+1|0:e,B=(M=GA(f,G,x,W))+g|0,g=h+e|0,g=B>>>0<M>>>0?g+1|0:g,e=B,B=GA(AA,vA,P,fA),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(w,J,c,wA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,e=(S=GA(S,aA,R,DA))+e|0,B=h+g|0,g=(u=GA(E,K,u,$))+e|0,e=h+(e>>>0<S>>>0?B+1|0:B)|0,B=(_=GA(_,Z,T,hA))+g|0,g=h+(g>>>0<u>>>0?e+1|0:e)|0,g=B>>>0<_>>>0?g+1|0:g,e=B,B=GA(y,Y,p,m),g=h+g|0,M=e=e+B|0,g=(g=e>>>0<B>>>0?g+1|0:g)+(e=i>>26)|0,_=i=M+(B=(67108863&i)<<6|NA>>>26)|0,g=B>>>0>i>>>0?g+1|0:g,u=e=i+16777216|0,i=B=e>>>0<16777216?g+1|0:g,a[I+60>>2]=_-(-33554432&e),g=GA(k,U,BA,nA),B=h,e=(_=GA(o,N,w,J))+g|0,g=h+B|0,g=e>>>0<_>>>0?g+1|0:g,B=GA(E,K,Q,O),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,_=GA(x,W,F,rA),B=h+g|0,B=(e=_+e|0)>>>0<_>>>0?B+1|0:B,g=(_=GA(y,Y,V,IA))+e|0,e=h+B|0,e=g>>>0<_>>>0?e+1|0:e,B=(_=GA(gA,tA,bA,oA))+g|0,g=h+e|0,g=B>>>0<_>>>0?g+1|0:g,e=B,B=GA(D,H,MA,lA),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=e,e=GA(CA,cA,EA,YA),g=h+g|0,g=e>>>0>(B=B+e|0)>>>0?g+1|0:g,_=e=JA,e=(F=GA(e,S=e>>31,f,G))+B|0,B=h+g|0,g=(p=GA(p,m,eA,_A))+e|0,e=h+(e>>>0<F>>>0?B+1|0:B)|0,B=g>>>0<p>>>0?e+1|0:e,e=g,g=(g=r>>25)+B|0,g=(e=e+(r=(33554431&r)<<7|b>>>25)|0)>>>0<r>>>0?g+1|0:g,B=e,p=e=e+33554432|0,r=g=e>>>0<33554432?g+1|0:g,a[I+80>>2]=B-(-67108864&e),e=i>>25,B=(i=(33554431&i)<<7|u>>>25)+(xA-(g=-67108864&PA)|0)|0,g=e+(mA-((g>>>0>xA>>>0)+RA|0)|0)|0,g=B>>>0<i>>>0?g+1|0:g,g=((67108863&(g=(e=B+33554432|0)>>>0<33554432?g+1|0:g))<<6|e>>>26)+(F=FA-(-33554432&LA)|0)|0,a[I+68>>2]=g,a[I+64>>2]=B-(-67108864&e),g=GA(w,J,k,U),B=h,e=(i=GA(o,N,P,fA))+g|0,g=h+B|0,g=e>>>0<i>>>0?g+1|0:g,B=(i=GA(Q,O,R,DA))+e|0,e=h+g|0,e=B>>>0<i>>>0?e+1|0:e,g=(i=GA(E,K,x,W))+B|0,B=h+e|0,B=g>>>0<i>>>0?B+1|0:B,e=(i=GA(V,IA,T,hA))+g|0,g=h+B|0,g=e>>>0<i>>>0?g+1|0:g,B=GA(y,Y,bA,oA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=GA(q,sA,MA,lA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(i=GA(D,H,EA,YA))+e|0,e=h+g|0,e=B>>>0<i>>>0?e+1|0:e,i=(g=GA(_,S,z,pA))+B|0,B=h+e|0,B=g>>>0>i>>>0?B+1|0:B,e=i,i=GA(g=UA,g>>31,f,G),g=h+B|0,B=e=e+i|0,g=(g=e>>>0<i>>>0?g+1|0:g)+(e=r>>26)|0,g=(B=B+(r=(67108863&r)<<6|p>>>26)|0)>>>0<r>>>0?g+1|0:g,g=(e=B+16777216|0)>>>0<16777216?g+1|0:g,a[I+84>>2]=B-(-33554432&e),r=l-(-33554432&KA)|0,i=s-(B=-67108864&SA)|0,o=dA-((B>>>0>s>>>0)+TA|0)|0,g=GA((33554431&(B=g))<<7|e>>>25,g>>=25,19,0),e=h+o|0,g=g>>>0>(B=g+i|0)>>>0?e+1|0:e,g=((67108863&(g=(e=B+33554432|0)>>>0<33554432?g+1|0:g))<<6|e>>>26)+r|0,a[I+52>>2]=g,a[I+48>>2]=B-(-67108864&e),yA(A,I+48|0))}return n=I+256|0,0|HA},sc:function(A,g){A|=0;var I,e=0;return n=I=n+-64|0,wA(I,g|=0,32,0),C[0|I]=248&i[0|I],C[I+31|0]=63&i[I+31|0]|64,g=a[I+20>>2],e=a[I+16>>2],C[A+16|0]=e,C[A+17|0]=e>>>8,C[A+18|0]=e>>>16,C[A+19|0]=e>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[I+12>>2],e=a[I+8>>2],C[A+8|0]=e,C[A+9|0]=e>>>8,C[A+10|0]=e>>>16,C[A+11|0]=e>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[I+4>>2],e=a[I>>2],C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=a[I+28>>2],e=a[I+24>>2],C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,dg(I,64),n=I- -64|0,0},tc:function(){var A,g;return n=A=n-16|0,C[A+15|0]=0,g=0|c(36304,A+15|0,0),n=A+16|0,0|g},uc:Bg,vc:function(A){var g,I=0,e=0;if(n=g=n-16|0,(A|=0)>>>0>=2){for(I=(0-A>>>0)%(A>>>0)|0;C[g+15|0]=0,I>>>0>(e=0|c(36304,g+15|0,0))>>>0;);I=(e>>>0)%(A>>>0)|0}return n=g+16|0,0|I},wc:xA,xc:function(A,g,I){yg(A|=0,g|=0,33888,I|=0)},yc:vg,zc:function(){var A=0,g=0;return(A=a[9414])&&(A=a[A+20>>2])&&(g=0|Jg[0|A]()),0|g},Ac:function(A,g,I){A|=0,g|=0;var e,a=0,i=0,r=0;if(n=e=n-16|0,I|=0)E(1228,1088,198,1024),B();else{if(g|I)for(;C[e+15|0]=0,i=A+a|0,r=0|c(36304,e+15|0,0),C[0|i]=r,(0|g)!=(0|(a=a+1|0)););n=e+16|0}},Bc:function(A,g,I,e){A|=0,I|=0;var a=0,r=0,t=0;if(!((e|=0)>>>0>2147483646|e<<1>>>0>=(g|=0)>>>0)){if(g=0,e){for(;a=(g<<1)+A|0,r=15&(t=i[g+I|0]),C[a+1|0]=22272+((r<<8)+(r+65526&55552)|0)>>>8,r=a,a=t>>>4|0,C[0|r]=87+((a+65526>>>8&217)+a|0),(0|e)!=(0|(g=g+1|0)););g=e<<1}else g=0;return C[g+A|0]=0,0|A}ig(),B()},Cc:function(A,g,I,e,B,r,t){A|=0,g|=0,I|=0,B|=0,r|=0,t|=0;var Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0;A:{g:{I:{C:{e:{B:{a:{i:{r:{if(e|=0){if(B)break r;for(o=1,B=0;;){if(!(255&((n=(65526+(c=(223&(y=i[I+Q|0]))-55&255)^c+65520)>>>8|0)|(h=65526+(y^=48)>>>8|0))))break a;if(g>>>0<=_>>>0)break i;if(c=c&n|y&h,255&E?(C[A+_|0]=B|c,_=_+1|0):B=c<<4,E=~E,(0|(Q=Q+1|0))==(0|e))break}Q=e;break a}if(A=0,!t)break A;break I}for(;;){r:{t:{Q:{o:{c:{if(!(255&((y=(65526+(o=(223&(c=i[I+Q|0]))-55&255)^o+65520)>>>8|0)|(h=65526+(n=48^c)>>>8|0)))){if(255&E)break B;if(o=0,!sA(B,c))break C;if((Q=E=Q+1|0)>>>0<e>>>0)break c;break C}if(g>>>0<=_>>>0)break i;if(o=o&y|n&h,!(255&E))break o;C[A+_|0]=o|s,_=_+1|0;break r}for(;;){if(!(255&((n=(65526+(y=(223&(c=i[I+Q|0]))-55&255)^y+65520)>>>8|0)|(s=65526+(h=48^c)>>>8|0)))){if(!sA(B,c))break C;if((Q=Q+1|0)>>>0<e>>>0)continue;break Q}break}if(g>>>0<=_>>>0)break t;o=y&n|h&s}s=o<<4,E=0;break r}Q=e>>>0>E>>>0?e:E;break C}E=0;break i}if(E=~E,o=1,!((Q=Q+1|0)>>>0<e>>>0))break}break a}a[9280]=68,o=0}if(!(255&E))break e}a[9280]=28,o=-1,Q=Q-1|0,_=0;break C}_=o?_:0,o=o-1|0}if(!t){if((0|e)!=(0|Q))break g;A=o;break A}}a[t>>2]=I+Q,A=o;break A}a[9280]=28,A=-1}return r&&(a[r>>2]=_),0|A},Dc:function(A,g){A|=0;var I=0;return 1!=(-7&(g|=0))&&(ig(),B()),1+((3&(I=(I=A)+t(A=(A>>>0)/3|0,-3)|0)?2&g?I+1|0:4:0)+(A<<2)|0)|0},Ec:function(A,g,I,e,a){A|=0,g|=0,I|=0,e|=0;var r=0,Q=0,o=0,c=0,y=0,_=0,n=0;A:{g:{I:{C:{e:{B:{a:{if(1==(-7&(a|=0))&&(o=(r=(e>>>0)/3|0)<<2,(r=t(r,-3)+e|0)&&(o=2&a?2+((r>>>1|0)+o|0)|0:o+4|0),!(g>>>0<=o>>>0))){if(!(a>>>0>=4)){if(!e){a=0;break C}r=0,a=0;break a}if(!e){a=0;break C}for(r=0,a=0;;){for(y=i[I+c|0]|y<<8,r|=8;_=65510+(Q=y>>>(r=r-6|0)&63)>>>8|0,n=Q+65484>>>8|0,C[A+a|0]=~(1+(16321^Q))>>>8&45|Q+252&Q+65474>>>8&~n|~(Q+32705)>>>8&95|_&Q+65|n&Q+71&~_,a=a+1|0,r>>>0>5;);if((0|(c=c+1|0))==(0|e))break}if(!r)break e;c=45,Q=32705,e=95;break B}ig(),B()}for(;;){for(y=i[I+c|0]|y<<8,r|=8;_=65510+(Q=y>>>(r=r-6|0)&63)>>>8|0,n=Q+65484>>>8|0,C[A+a|0]=~(1+(16321^Q))>>>8&43|Q+252&Q+65474>>>8&~n|~(Q+16321)>>>8&47|_&Q+65|n&Q+71&~_,a=a+1|0,r>>>0>5;);if((0|(c=c+1|0))==(0|e))break}if(!r)break e;c=43,Q=16321,e=47}Q=~((I=y<<6-r&63)+Q)>>>8&e|(r=I+65510>>>8|0)&I+65,e=I+65484>>>8|0,C[A+a|0]=~(1+(16321^I))>>>8&c|Q|I+252&I+65474>>>8&~e|e&I+71&~r,a=a+1|0}if(a>>>0>o>>>0)break I}if(a>>>0<o>>>0)break g;o=a;break A}E(1036,1114,231,1300),B()}VA(A+a|0,61,o-a|0)}return VA(A+o|0,0,(g>>>0>(I=o+1|0)>>>0?g:I)-o|0),0|A},Fc:function(A,g,I,e,r,t,Q,o){A|=0,g|=0,I|=0,e|=0,r|=0,t|=0,Q|=0;var c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0;if(1==(-7&(o|=0))){A:{g:{I:{C:{e:{B:{a:{if(e){i:{r:{if(o>>>0<=3){for(;;){_=E;t:{Q:{o:{c:{for(;;){if(c=(c=(y=C[I+_|0])-65|0)&(~(90-y)&~c)>>>8&255|y+4&(~(y+65488)&~(57-y))>>>8&255|y+185&(~(y+65439)&~(122-y))>>>8&255|~(1+(16336^y))>>>8&63|~(1+(16340^y))>>>8&62,255!=(0|(c|=(c-1&1+(65470^y))>>>8&255)))break c;if(c=0,!r)break i;if(!sA(r,y))break;if((_=_+1|0)>>>0>=e>>>0)break o}E=_;break i}if(s=c+(s<<6)|0,n>>>0>1)break Q;n=n+6|0;break t}E=(A=E+1|0)>>>0<e>>>0?e:A;break i}if(n=n-2|0,g>>>0<=h>>>0)break r;C[A+h|0]=s>>>n,h=h+1|0}if(c=0,!((E=_+1|0)>>>0<e>>>0))break}break i}for(;;){t:{if(c=(c=(y=C[I+_|0])-65|0)&(~(90-y)&~c)>>>8&255|y+4&(~(y+65488)&~(57-y))>>>8&255|y+185&(~(y+65439)&~(122-y))>>>8&255|~(1+(16288^y))>>>8&63|~(1+(16338^y))>>>8&62,255==(0|(c|=(c-1&1+(65470^y))>>>8&255))){if(c=0,!r)break i;if(sA(r,y)){if((_=_+1|0)>>>0>=e>>>0)break t;continue}E=_;break i}if(s=c+(s<<6)|0,n>>>0<2)n=n+6|0;else{if(n=n-2|0,g>>>0<=h>>>0)break r;C[A+h|0]=s>>>n,h=h+1|0}if(c=0,(E=_+1|0)>>>0>=e>>>0)break i;_=E;continue}break}E=(A=E+1|0)>>>0<e>>>0?e:A;break i}E=_,a[9280]=68,c=1}if(n>>>0>4)break a;A=E}else A=0;if(g=-1,c){E=A;break A}if(~(-1<<n)&s){E=A;break A}if(2&o){o=A;break e}if(n>>>0<2){o=A;break e}if(E=A>>>0>e>>>0?A:e,_=n>>>1|0,!r)break B;for(o=A;;){if((0|o)==(0|E)){c=68;break C}if(61!=(0|(A=C[I+o|0]))){if(!sA(r,A)){c=28,E=o;break C}}else _=_-1|0;if(o=o+1|0,!_)break}break e}g=-1;break A}if(c=68,A>>>0>=e>>>0)break C;if(61!=i[A+I|0]){E=A,c=28;break C}if(o=A+_|0,1!=(0|_)){if((0|(n=A+1|0))==(0|E))break C;if(61!=i[I+n|0]){E=n,c=28;break C}if(2!=(0|_)){if((0|(A=A+2|0))==(0|E))break C;if(c=28,E=A,61!=i[A+I|0])break C}}}if(g=0,r)break I;break g}a[9280]=c;break A}if(!(e>>>0<=o>>>0)){for(;;){if(!sA(r,C[I+o|0]))break g;if((0|(o=o+1|0))==(0|e))break}o=e}}E=o,p=h}return Q?a[Q>>2]=I+E:(0|e)!=(0|E)&&(a[9280]=28,g=-1),t&&(a[t>>2]=p),0|g}ig(),B()},Gc:function(){var A=0;return a[9412]?A=1:(Bg(),xA(37632,16),a[9412]=1,A=0),0|A},Hc:function(A,g,I,e,r){A|=0,g|=0,I|=0,r|=0;var t,Q=0,o=0,c=0;n=t=n-16|0;A:{if(e|=0){if((Q=e-1|0)&e?(o=~I,Q=Q-((I>>>0)%(e>>>0)|0)|0):Q&=o=~I,Q>>>0>=o>>>0)break A;if((I=I+Q|0)>>>0>=r>>>0)g=-1;else for(A&&(a[A>>2]=I+1),A=g+I|0,g=0,C[t+15|0]=0,I=0;o=r=A-I|0,c=i[0|r]&i[t+15|0],r=(I^Q)-1>>>24|0,C[0|o]=c|128&r,C[t+15|0]=r|i[t+15|0],(0|e)!=(0|(I=I+1|0)););}else g=-1;return n=t+16|0,0|g}ig(),B()},Ic:function(A,g,I,C){A|=0,g|=0,I|=0,C|=0;var e,B=0,r=0,t=0,Q=0,o=0;if(a[12+(e=n-16|0)>>2]=0,C-1>>>0<I>>>0){for(o=(B=I-1|0)+g|0,I=0,g=0;Q=((128^(r=i[o-I|0]))-1&a[e+12>>2]-1&t-1)>>>8&1,a[e+12>>2]=a[e+12>>2]|0-Q&I,g|=Q,t|=r,(0|C)!=(0|(I=I+1|0)););a[A>>2]=B-a[e+12>>2],A=(255&g)-1|0}else A=-1;return 0|A},Jc:function(){return 1318},Kc:function(){return 26},Lc:Hg,Mc:Yg,Nc:function(A){var g,I=0,C=0,e=0,B=0,t=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0;n=g=n-16|0;A:{g:{I:{C:{e:{B:{a:{i:{r:{t:{if((A|=0)>>>0<=244){if(3&(I=(B=a[9281])>>>(A=(c=A>>>0<11?16:A+11&504)>>>3|0)|0)){A=37164+(I=(C=A+(1&~I)|0)<<3)|0,I=a[I+37172>>2],(0|A)!=(0|(e=a[I+8>>2]))?(a[e+12>>2]=A,a[A+8>>2]=e):(h=37124,s=Ig(-2,C)&B,a[h>>2]=s),A=I+8|0,C<<=3,a[I+4>>2]=3|C,a[4+(I=I+C|0)>>2]=1|a[I+4>>2];break A}if((E=a[9283])>>>0>=c>>>0)break t;if(I){I=37164+(C=(A=og((0-(C=2<<A)|C)&I<<A))<<3)|0,C=a[C+37172>>2],(0|I)!=(0|(e=a[C+8>>2]))?(a[e+12>>2]=I,a[I+8>>2]=e):(B=Ig(-2,A)&B,a[9281]=B),a[C+4>>2]=3|c,t=(A<<=3)-c|0,a[4+(o=C+c|0)>>2]=1|t,a[A+C>>2]=t,E&&(A=37164+(-8&E)|0,e=a[9286],(I=1<<(E>>>3))&B?I=a[A+8>>2]:(a[9281]=I|B,I=A),a[A+8>>2]=e,a[I+12>>2]=e,a[e+12>>2]=A,a[e+8>>2]=I),A=C+8|0,a[9286]=o,a[9283]=t;break A}if(!(_=a[9282]))break t;for(C=a[37428+(og(_)<<2)>>2],t=(-8&a[C+4>>2])-c|0,I=C;(A=a[I+16>>2])||(A=a[I+20>>2]);)t=(I=(e=(-8&a[A+4>>2])-c|0)>>>0<t>>>0)?e:t,C=I?A:C,I=A;if(y=a[C+24>>2],(0|C)!=(0|(A=a[C+12>>2]))){I=a[C+8>>2],a[I+12>>2]=A,a[A+8>>2]=I;break g}if(I=a[C+20>>2])e=C+20|0;else{if(!(I=a[C+16>>2]))break r;e=C+16|0}for(;o=e,e=(A=I)+20|0,(I=a[A+20>>2])||(e=A+16|0,I=a[A+16>>2]););a[o>>2]=0;break g}if(c=-1,!(A>>>0>4294967231)&&(c=-8&(I=A+11|0),o=a[9282])){E=31,t=0-c|0,A>>>0<=16777204&&(E=62+((c>>>38-(A=Q(I>>>8|0))&1)-(A<<1)|0)|0);Q:{o:{if(I=a[37428+(E<<2)>>2])for(A=0,C=c<<(31!=(0|E)?25-(E>>>1|0):0);;){if(!((B=(-8&a[I+4>>2])-c|0)>>>0>=t>>>0||(e=I,t=B))){t=0,A=I;break o}if(B=a[I+20>>2],I=a[16+((C>>>29&4)+I|0)>>2],A=B?(0|B)==(0|I)?A:B:A,C<<=1,!I)break}else A=0;if(!(A|e)){if(e=0,!(A=(0-(A=2<<E)|A)&o))break t;A=a[37428+(og(A)<<2)>>2]}if(!A)break Q}for(;t=(I=(C=(-8&a[A+4>>2])-c|0)>>>0<t>>>0)?C:t,e=I?A:e,A=(I=a[A+16>>2])||a[A+20>>2];);}if(!(!e|a[9283]-c>>>0<=t>>>0)){if(E=a[e+24>>2],(0|e)!=(0|(A=a[e+12>>2]))){I=a[e+8>>2],a[I+12>>2]=A,a[A+8>>2]=I;break I}if(I=a[e+20>>2])C=e+20|0;else{if(!(I=a[e+16>>2]))break i;C=e+16|0}for(;B=C,C=(A=I)+20|0,(I=a[A+20>>2])||(C=A+16|0,I=a[A+16>>2]););a[B>>2]=0;break I}}}if((e=a[9283])>>>0>=c>>>0){A=a[9286],(I=e-c|0)>>>0>=16?(a[4+(C=A+c|0)>>2]=1|I,a[A+e>>2]=I,a[A+4>>2]=3|c):(a[A+4>>2]=3|e,a[4+(I=A+e|0)>>2]=1|a[I+4>>2],C=0,I=0),a[9283]=I,a[9286]=C,A=A+8|0;break A}if((C=a[9284])>>>0>c>>>0){I=C-c|0,a[9284]=I,C=(A=a[9287])+c|0,a[9287]=C,a[C+4>>2]=1|I,a[A+4>>2]=3|c,A=A+8|0;break A}if(A=0,t=c+47|0,a[9399]?I=a[9401]:(a[9402]=-1,a[9403]=-1,a[9400]=4096,a[9401]=4096,a[9399]=g+12&-16^1431655768,a[9404]=0,a[9392]=0,I=4096),(I=(B=t+I|0)&(o=0-I|0))>>>0<=c>>>0)break A;if((E=a[9391])&&(e=(y=a[9389])+I|0)>>>0<=y>>>0|e>>>0>E>>>0)break A;t:{if(!(4&i[37568])){Q:{o:{c:{E:{if(e=a[9287])for(A=37572;;){if((E=a[A>>2])>>>0<=e>>>0&e>>>0<E+a[A+4>>2]>>>0)break E;if(!(A=a[A+8>>2]))break}if(-1==(0|(C=PA(0))))break Q;if(B=I,(e=(A=a[9400])-1|0)&C&&(B=(I-C|0)+(C+e&0-A)|0),B>>>0<=c>>>0)break Q;if((e=a[9391])&&(A=(o=a[9389])+B|0)>>>0<=o>>>0|A>>>0>e>>>0)break Q;if((0|C)!=(0|(A=PA(B))))break c;break t}if((0|(C=PA(B=o&B-C)))==(a[A>>2]+a[A+4>>2]|0))break o;A=C}if(-1==(0|A))break Q;if(c+48>>>0<=B>>>0){C=A;break t}if(-1==(0|PA(C=(C=a[9401])+(t-B|0)&0-C)))break Q;B=C+B|0,C=A;break t}if(-1!=(0|C))break t}a[9392]=4|a[9392]}if(-1==(0|(C=PA(I)))|-1==(0|(A=PA(0)))|A>>>0<=C>>>0)break e;if((B=A-C|0)>>>0<=c+40>>>0)break e}A=a[9389]+B|0,a[9389]=A,A>>>0>r[9390]&&(a[9390]=A);t:{if(t=a[9287]){for(A=37572;;){if(((I=a[A>>2])+(e=a[A+4>>2])|0)==(0|C))break t;if(!(A=a[A+8>>2]))break}break a}for((A=a[9285])>>>0<=C>>>0&&A||(a[9285]=C),A=0,a[9394]=B,a[9393]=C,a[9289]=-1,a[9290]=a[9399],a[9396]=0;e=37164+(I=A<<3)|0,a[I+37172>>2]=e,a[I+37176>>2]=e,32!=(0|(A=A+1|0)););e=(A=B-40|0)-(I=-8-C&7)|0,a[9284]=e,I=I+C|0,a[9287]=I,a[I+4>>2]=1|e,a[4+(A+C|0)>>2]=40,a[9288]=a[9403];break B}if(8&a[A+12>>2]|C>>>0<=t>>>0|I>>>0>t>>>0)break a;a[A+4>>2]=e+B,I=(A=-8-t&7)+t|0,a[9287]=I,A=(C=a[9284]+B|0)-A|0,a[9284]=A,a[I+4>>2]=1|A,a[4+(C+t|0)>>2]=40,a[9288]=a[9403];break B}A=0;break g}A=0;break I}r[9285]>C>>>0&&(a[9285]=C),e=C+B|0,A=37572;a:{for(;;){if((0|(I=a[A>>2]))!=(0|e)){if(A=a[A+8>>2])continue;break a}break}if(!(8&i[A+12|0]))break C}for(A=37572;!((I=a[A>>2])>>>0<=t>>>0&&(e=I+a[A+4>>2]|0)>>>0>t>>>0);)A=a[A+8>>2];for(o=(A=B-40|0)-(I=-8-C&7)|0,a[9284]=o,I=I+C|0,a[9287]=I,a[I+4>>2]=1|o,a[4+(A+C|0)>>2]=40,a[9288]=a[9403],a[(I=(A=(e+(39-e&7)|0)-47|0)>>>0<t+16>>>0?t:A)+4>>2]=27,A=a[9396],a[I+16>>2]=a[9395],a[I+20>>2]=A,A=a[9394],a[I+8>>2]=a[9393],a[I+12>>2]=A,a[9395]=I+8,a[9394]=B,a[9393]=C,a[9396]=0,A=I+24|0;a[A+4>>2]=7,C=A+8|0,A=A+4|0,C>>>0<e>>>0;);if((0|I)!=(0|t)){a[I+4>>2]=-2&a[I+4>>2],C=I-t|0,a[t+4>>2]=1|C,a[I>>2]=C;a:if(C>>>0<=255)A=37164+(-8&C)|0,(I=a[9281])&(C=1<<(C>>>3))?I=a[A+8>>2]:(a[9281]=I|C,I=A),a[A+8>>2]=t,a[I+12>>2]=t,e=8,C=12;else{A=31,C>>>0<=16777215&&(A=62+((C>>>38-(A=Q(C>>>8|0))&1)-(A<<1)|0)|0),a[t+28>>2]=A,a[t+16>>2]=0,a[t+20>>2]=0,I=37428+(A<<2)|0;i:{if((e=a[9282])&(B=1<<A)){for(A=C<<(31!=(0|A)?25-(A>>>1|0):0),e=a[I>>2];;){if((0|C)==(-8&a[(I=e)+4>>2]))break i;if(e=A>>>29|0,A<<=1,!(e=a[16+(B=(4&e)+I|0)>>2]))break}a[B+16>>2]=t}else a[9282]=e|B,a[I>>2]=t;a[t+24>>2]=I,A=I=t,e=12,C=8;break a}A=a[I+8>>2],a[A+12>>2]=t,a[I+8>>2]=t,a[t+8>>2]=A,A=0,e=12,C=24}a[e+t>>2]=I,a[C+t>>2]=A}}if(!((A=a[9284])>>>0<=c>>>0)){I=A-c|0,a[9284]=I,C=(A=a[9287])+c|0,a[9287]=C,a[C+4>>2]=1|I,a[A+4>>2]=3|c,A=A+8|0;break A}}a[9280]=48,A=0;break A}a[A>>2]=C,a[A+4>>2]=a[A+4>>2]+B,a[4+(E=(-8-C&7)+C|0)>>2]=3|c,o=(B=I+(-8-I&7)|0)-(t=c+E|0)|0;C:if(a[9287]!=(0|B))if(a[9286]!=(0|B)){if(1==(3&(A=a[B+4>>2]))){y=-8&A,C=a[B+12>>2];e:if(A>>>0<=255){if((0|(I=a[B+8>>2]))==(0|C)){h=37124,s=a[9281]&Ig(-2,A>>>3|0),a[h>>2]=s;break e}a[I+12>>2]=C,a[C+8>>2]=I}else{c=a[B+24>>2];B:if((0|C)==(0|B)){a:{if(A=a[B+20>>2])I=B+20|0;else{if(!(A=a[B+16>>2]))break a;I=B+16|0}for(;e=I,C=A,I=A+20|0,(A=a[A+20>>2])||(I=C+16|0,A=a[C+16>>2]););a[e>>2]=0;break B}C=0}else A=a[B+8>>2],a[A+12>>2]=C,a[C+8>>2]=A;if(c){A=a[B+28>>2];B:{if(a[(I=37428+(A<<2)|0)>>2]==(0|B)){if(a[I>>2]=C,C)break B;h=37128,s=a[9282]&Ig(-2,A),a[h>>2]=s;break e}if(a[c+(a[c+16>>2]==(0|B)?16:20)>>2]=C,!C)break e}a[C+24>>2]=c,(A=a[B+16>>2])&&(a[C+16>>2]=A,a[A+24>>2]=C),(A=a[B+20>>2])&&(a[C+20>>2]=A,a[A+24>>2]=C)}}o=o+y|0,A=a[4+(B=B+y|0)>>2]}if(a[B+4>>2]=-2&A,a[t+4>>2]=1|o,a[t+o>>2]=o,o>>>0<=255)A=37164+(-8&o)|0,(I=a[9281])&(C=1<<(o>>>3))?I=a[A+8>>2]:(a[9281]=I|C,I=A),a[A+8>>2]=t,a[I+12>>2]=t,a[t+12>>2]=A,a[t+8>>2]=I;else{C=31,o>>>0<=16777215&&(C=62+((o>>>38-(A=Q(o>>>8|0))&1)-(A<<1)|0)|0),a[t+28>>2]=C,a[t+16>>2]=0,a[t+20>>2]=0,A=37428+(C<<2)|0;e:{if((I=a[9282])&(e=1<<C)){for(C=o<<(31!=(0|C)?25-(C>>>1|0):0),I=a[A>>2];;){if((-8&a[(A=I)+4>>2])==(0|o))break e;if(I=C>>>29|0,C<<=1,!(I=a[16+(e=(4&I)+A|0)>>2]))break}a[e+16>>2]=t}else a[9282]=I|e,a[A>>2]=t;a[t+24>>2]=A,a[t+12>>2]=t,a[t+8>>2]=t;break C}I=a[A+8>>2],a[I+12>>2]=t,a[A+8>>2]=t,a[t+24>>2]=0,a[t+12>>2]=A,a[t+8>>2]=I}}else a[9286]=t,A=a[9283]+o|0,a[9283]=A,a[t+4>>2]=1|A,a[A+t>>2]=A;else a[9287]=t,A=a[9284]+o|0,a[9284]=A,a[t+4>>2]=1|A;A=E+8|0;break A}I:if(E){I=a[e+28>>2];C:{if(a[(C=37428+(I<<2)|0)>>2]==(0|e)){if(a[C>>2]=A,A)break C;o=Ig(-2,I)&o,a[9282]=o;break I}if(a[E+(a[E+16>>2]==(0|e)?16:20)>>2]=A,!A)break I}a[A+24>>2]=E,(I=a[e+16>>2])&&(a[A+16>>2]=I,a[I+24>>2]=A),(I=a[e+20>>2])&&(a[A+20>>2]=I,a[I+24>>2]=A)}I:if(t>>>0<=15)A=t+c|0,a[e+4>>2]=3|A,a[4+(A=A+e|0)>>2]=1|a[A+4>>2];else if(a[e+4>>2]=3|c,a[4+(B=e+c|0)>>2]=1|t,a[t+B>>2]=t,t>>>0<=255)A=37164+(-8&t)|0,(I=a[9281])&(C=1<<(t>>>3))?I=a[A+8>>2]:(a[9281]=I|C,I=A),a[A+8>>2]=B,a[I+12>>2]=B,a[B+12>>2]=A,a[B+8>>2]=I;else{A=31,t>>>0<=16777215&&(A=62+((t>>>38-(A=Q(t>>>8|0))&1)-(A<<1)|0)|0),a[B+28>>2]=A,a[B+16>>2]=0,a[B+20>>2]=0,I=37428+(A<<2)|0;C:{if((C=1<<A)&o){for(A=t<<(31!=(0|A)?25-(A>>>1|0):0),I=a[I>>2];;){if(C=I,(-8&a[I+4>>2])==(0|t))break C;if(o=A>>>29|0,A<<=1,!(I=a[16+(o=I+(4&o)|0)>>2]))break}a[o+16>>2]=B,a[B+24>>2]=C}else a[9282]=C|o,a[I>>2]=B,a[B+24>>2]=I;a[B+12>>2]=B,a[B+8>>2]=B;break I}A=a[C+8>>2],a[A+12>>2]=B,a[C+8>>2]=B,a[B+24>>2]=0,a[B+12>>2]=C,a[B+8>>2]=A}A=e+8|0;break A}g:if(y){I=a[C+28>>2];I:{if(a[(e=37428+(I<<2)|0)>>2]==(0|C)){if(a[e>>2]=A,A)break I;h=37128,s=Ig(-2,I)&_,a[h>>2]=s;break g}if(a[y+(a[y+16>>2]==(0|C)?16:20)>>2]=A,!A)break g}a[A+24>>2]=y,(I=a[C+16>>2])&&(a[A+16>>2]=I,a[I+24>>2]=A),(I=a[C+20>>2])&&(a[A+20>>2]=I,a[I+24>>2]=A)}t>>>0<=15?(A=t+c|0,a[C+4>>2]=3|A,a[4+(A=A+C|0)>>2]=1|a[A+4>>2]):(a[C+4>>2]=3|c,a[4+(o=C+c|0)>>2]=1|t,a[t+o>>2]=t,E&&(A=37164+(-8&E)|0,e=a[9286],(I=1<<(E>>>3))&B?I=a[A+8>>2]:(a[9281]=I|B,I=A),a[A+8>>2]=e,a[I+12>>2]=e,a[e+12>>2]=A,a[e+8>>2]=I),a[9286]=o,a[9283]=t),A=C+8|0}return n=g+16|0,0|A},Oc:function(A){var g=0,I=0,C=0,e=0,B=0,i=0,t=0,o=0,c=0;A:if(A|=0){B=(C=A-8|0)+(A=-8&(g=a[A-4>>2]))|0;g:if(!(1&g)){if(!(2&g))break A;if((C=C-(g=a[C>>2])|0)>>>0<r[9285])break A;A=A+g|0;I:{C:{e:{if(a[9286]!=(0|C)){if(I=a[C+12>>2],g>>>0<=255){if((0|(e=a[C+8>>2]))!=(0|I))break e;o=37124,c=a[9281]&Ig(-2,g>>>3|0),a[o>>2]=c;break g}if(t=a[C+24>>2],(0|I)!=(0|C)){g=a[C+8>>2],a[g+12>>2]=I,a[I+8>>2]=g;break I}if(e=a[C+20>>2])g=C+20|0;else{if(!(e=a[C+16>>2]))break C;g=C+16|0}for(;i=g,g=(I=e)+20|0,(e=a[I+20>>2])||(g=I+16|0,e=a[I+16>>2]););a[i>>2]=0;break I}if(3&~(g=a[B+4>>2]))break g;return a[9283]=A,a[B+4>>2]=-2&g,a[C+4>>2]=1|A,void(a[B>>2]=A)}a[e+12>>2]=I,a[I+8>>2]=e;break g}I=0}if(t){g=a[C+28>>2];I:{if(a[(e=37428+(g<<2)|0)>>2]==(0|C)){if(a[e>>2]=I,I)break I;o=37128,c=a[9282]&Ig(-2,g),a[o>>2]=c;break g}if(a[t+(a[t+16>>2]==(0|C)?16:20)>>2]=I,!I)break g}a[I+24>>2]=t,(g=a[C+16>>2])&&(a[I+16>>2]=g,a[g+24>>2]=I),(g=a[C+20>>2])&&(a[I+20>>2]=g,a[g+24>>2]=I)}}if(!(C>>>0>=B>>>0)&&1&(g=a[B+4>>2])){g:{I:{C:{e:{if(!(2&g)){if((0|B)==a[9287]){if(a[9287]=C,A=a[9284]+A|0,a[9284]=A,a[C+4>>2]=1|A,a[9286]!=(0|C))break A;return a[9283]=0,void(a[9286]=0)}if((0|B)==a[9286])return a[9286]=C,A=a[9283]+A|0,a[9283]=A,a[C+4>>2]=1|A,void(a[A+C>>2]=A);if(A=(-8&g)+A|0,I=a[B+12>>2],g>>>0<=255){if((0|(e=a[B+8>>2]))==(0|I)){o=37124,c=a[9281]&Ig(-2,g>>>3|0),a[o>>2]=c;break I}a[e+12>>2]=I,a[I+8>>2]=e;break I}if(t=a[B+24>>2],(0|I)!=(0|B)){g=a[B+8>>2],a[g+12>>2]=I,a[I+8>>2]=g;break C}if(e=a[B+20>>2])g=B+20|0;else{if(!(e=a[B+16>>2]))break e;g=B+16|0}for(;i=g,g=(I=e)+20|0,(e=a[I+20>>2])||(g=I+16|0,e=a[I+16>>2]););a[i>>2]=0;break C}a[B+4>>2]=-2&g,a[C+4>>2]=1|A,a[A+C>>2]=A;break g}I=0}if(t){g=a[B+28>>2];C:{if((0|B)==a[(e=37428+(g<<2)|0)>>2]){if(a[e>>2]=I,I)break C;o=37128,c=a[9282]&Ig(-2,g),a[o>>2]=c;break I}if(a[t+((0|B)==a[t+16>>2]?16:20)>>2]=I,!I)break I}a[I+24>>2]=t,(g=a[B+16>>2])&&(a[I+16>>2]=g,a[g+24>>2]=I),(g=a[B+20>>2])&&(a[I+20>>2]=g,a[g+24>>2]=I)}}if(a[C+4>>2]=1|A,a[A+C>>2]=A,a[9286]==(0|C))return void(a[9283]=A)}if(A>>>0<=255)return g=37164+(-8&A)|0,(e=a[9281])&(A=1<<(A>>>3))?A=a[g+8>>2]:(a[9281]=A|e,A=g),a[g+8>>2]=C,a[A+12>>2]=C,a[C+12>>2]=g,void(a[C+8>>2]=A);I=31,A>>>0<=16777215&&(I=62+((A>>>38-(g=Q(A>>>8|0))&1)-(g<<1)|0)|0),a[C+28>>2]=I,a[C+16>>2]=0,a[C+20>>2]=0,i=37428+(I<<2)|0;g:{I:{if((g=a[9282])&(e=1<<I)){for(I=A<<(31!=(0|I)?25-(I>>>1|0):0),g=a[i>>2];;){if(e=g,(-8&a[g+4>>2])==(0|A))break I;if(g=I>>>29|0,I<<=1,!(g=a[(i=16+((4&g)+e|0)|0)>>2]))break}I=24,g=e}else a[9282]=g|e,I=24,g=i;e=C,B=C,A=8;break g}g=a[e+8>>2],a[g+12>>2]=C,I=8,i=e+8|0,B=0,A=24}a[i>>2]=C,a[I+C>>2]=g,a[C+12>>2]=e,a[A+C>>2]=B,A=a[9289]-1|0,a[9289]=A||-1}}},Pc:Jg}}(A)}(g)},instantiate:function(A,g){return{then:function(I){var C=new _.Module(A);I({instance:new _.Instance(C,g)})}}},RuntimeError:Error};c=[];var n,h,s,p,f,D,w,k=!1;function d(){var A=y.buffer;e.HEAP8=n=new Int8Array(A),e.HEAP16=s=new Int16Array(A),e.HEAPU8=h=new Uint8Array(A),e.HEAPU16=new Uint16Array(A),e.HEAP32=p=new Int32Array(A),e.HEAPU32=f=new Uint32Array(A),e.HEAPF32=D=new Float32Array(A),e.HEAPF64=w=new Float64Array(A)}var l=[],u=[],v=[],S=0,b=null,M=null;function F(A){throw e.onAbort?.(A),E(A="Aborted("+A+")"),k=!0,A+=". Build with -sASSERTIONS for more info.",new _.RuntimeError(A)}var N,K=A=>A.startsWith("file://");var Y={36304:()=>e.getRandomValue(),36340:()=>{if(void 0===e.getRandomValue)try{var A="object"==typeof window?window:self,g=void 0!==A.crypto?A.crypto:A.msCrypto;g=void 0===g?C:g;var I=function(){var A=new Uint32Array(1);return g.getRandomValues(A),A[0]>>>0};I(),e.getRandomValue=I}catch(A){try{var C=require("crypto"),B=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};B(),e.getRandomValue=B}catch(A){throw"No secure random number generator found"}}}},H=A=>{for(;A.length>0;)A.shift()(e)};e.noExitRuntime;var G,J="undefined"!=typeof TextDecoder?new TextDecoder:void 0,U=(A,g)=>A?((A,g,I)=>{for(var C=g+I,e=g;A[e]&&!(e>=C);)++e;if(e-g>16&&A.buffer&&J)return J.decode(A.subarray(g,e));for(var B="";g<e;){var a=A[g++];if(128&a){var i=63&A[g++];if(192!=(224&a)){var r=63&A[g++];if((a=224==(240&a)?(15&a)<<12|i<<6|r:(7&a)<<18|i<<12|r<<6|63&A[g++])<65536)B+=String.fromCharCode(a);else{var t=a-65536;B+=String.fromCharCode(55296|t>>10,56320|1023&t)}}else B+=String.fromCharCode((31&a)<<6|i)}else B+=String.fromCharCode(a)}return B})(h,A,g):"",x=[],m=A=>{var g=(A-y.buffer.byteLength+65535)/65536;try{return y.grow(g),d(),1}catch(A){}},P={b:(A,g,I,C)=>{F(`Assertion failed: ${U(A)}, at: `+[g?U(g):"unknown filename",I,C?U(C):"unknown function"])},c:()=>{F("")},a:(A,g,I)=>((A,g,I)=>{var C=((A,g)=>{var I;for(x.length=0;I=h[A++];){var C=105!=I;g+=(C&=112!=I)&&g%8?4:0,x.push(112==I?f[g>>2]:105==I?p[g>>2]:w[g>>3]),g+=C?8:4}return x})(g,I);return Y[A](...C)})(A,g,I),d:A=>{var g=h.length,I=2147483648;if((A>>>=0)>I)return!1;for(var C,e=1;e<=4;e*=2){var B=g*(1+.2/e);B=Math.min(B,A+100663296);var a=Math.min(I,(C=Math.max(A,B))+(65536-C%65536)%65536);if(m(a))return!0}return!1}},R=function(){var A={a:P};function g(A,g){var I;return R=A.exports,y=R.e,d(),I=R.f,u.unshift(I),function(A){if(S--,e.monitorRunDependencies?.(S),0==S&&(null!==b&&(clearInterval(b),b=null),M)){var g=M;M=null,g()}}(),R}if(S++,e.monitorRunDependencies?.(S),e.instantiateWasm)try{return e.instantiateWasm(A,g)}catch(A){return E(`Module.instantiateWasm callback failed with error: ${A}`),!1}return N||(N="<<< WASM_BINARY_FILE >>>"),function(A,g,C){(function(A){return Promise.resolve().then((()=>function(A){if(A==N&&c)return new Uint8Array(c);if(I)return I(A);throw"both async and sync fetching of the wasm failed"}(A)))})(A).then((A=>_.instantiate(A,g))).then(C,(A=>{E(`failed to asynchronously prepare wasm: ${A}`),F(A)}))}(N,A,(function(A){g(A.instance)})),{}}();function L(){function A(){G||(G=!0,e.calledRun=!0,k||(H(u),e.onRuntimeInitialized?.(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)A=e.postRun.shift(),v.unshift(A);var A;H(v)}()))}S>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)A=e.preRun.shift(),l.unshift(A);var A;H(l)}(),S>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),A()}),1)):A()))}if(e._crypto_aead_aegis128l_keybytes=()=>(e._crypto_aead_aegis128l_keybytes=R.g)(),e._crypto_aead_aegis128l_nsecbytes=()=>(e._crypto_aead_aegis128l_nsecbytes=R.h)(),e._crypto_aead_aegis128l_npubbytes=()=>(e._crypto_aead_aegis128l_npubbytes=R.i)(),e._crypto_aead_aegis128l_abytes=()=>(e._crypto_aead_aegis128l_abytes=R.j)(),e._crypto_aead_aegis128l_messagebytes_max=()=>(e._crypto_aead_aegis128l_messagebytes_max=R.k)(),e._crypto_aead_aegis128l_keygen=A=>(e._crypto_aead_aegis128l_keygen=R.l)(A),e._crypto_aead_aegis128l_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_encrypt=R.m)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis128l_encrypt_detached=R.n)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis128l_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt=R.o)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt_detached=R.p)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_keybytes=()=>(e._crypto_aead_aegis256_keybytes=R.q)(),e._crypto_aead_aegis256_nsecbytes=()=>(e._crypto_aead_aegis256_nsecbytes=R.r)(),e._crypto_aead_aegis256_npubbytes=()=>(e._crypto_aead_aegis256_npubbytes=R.s)(),e._crypto_aead_aegis256_abytes=()=>(e._crypto_aead_aegis256_abytes=R.t)(),e._crypto_aead_aegis256_messagebytes_max=()=>(e._crypto_aead_aegis256_messagebytes_max=R.u)(),e._crypto_aead_aegis256_keygen=A=>(e._crypto_aead_aegis256_keygen=R.v)(A),e._crypto_aead_aegis256_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_encrypt=R.w)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis256_encrypt_detached=R.x)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis256_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt=R.y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt_detached=R.z)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aes256gcm_is_available=()=>(e._crypto_aead_aes256gcm_is_available=R.A)(),e._crypto_aead_chacha20poly1305_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_encrypt_detached=R.B)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_encrypt=R.C)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=R.D)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt=R.E)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt_detached=R.F)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt=R.G)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=R.H)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt=R.I)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_chacha20poly1305_ietf_keybytes=R.J)(),e._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_npubbytes=R.K)(),e._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_nsecbytes=R.L)(),e._crypto_aead_chacha20poly1305_ietf_abytes=()=>(e._crypto_aead_chacha20poly1305_ietf_abytes=R.M)(),e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=R.N)(),e._crypto_aead_chacha20poly1305_ietf_keygen=A=>(e._crypto_aead_chacha20poly1305_ietf_keygen=R.O)(A),e._crypto_aead_chacha20poly1305_keybytes=()=>(e._crypto_aead_chacha20poly1305_keybytes=R.P)(),e._crypto_aead_chacha20poly1305_npubbytes=()=>(e._crypto_aead_chacha20poly1305_npubbytes=R.Q)(),e._crypto_aead_chacha20poly1305_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_nsecbytes=R.R)(),e._crypto_aead_chacha20poly1305_abytes=()=>(e._crypto_aead_chacha20poly1305_abytes=R.S)(),e._crypto_aead_chacha20poly1305_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_messagebytes_max=R.T)(),e._crypto_aead_chacha20poly1305_keygen=A=>(e._crypto_aead_chacha20poly1305_keygen=R.U)(A),e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=R.V)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_xchacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt=R.W)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=R.X)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt=R.Y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_keybytes=R.Z)(),e._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_npubbytes=R._)(),e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=R.$)(),e._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_abytes=R.aa)(),e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=R.ba)(),e._crypto_aead_xchacha20poly1305_ietf_keygen=A=>(e._crypto_aead_xchacha20poly1305_ietf_keygen=R.ca)(A),e._crypto_auth_bytes=()=>(e._crypto_auth_bytes=R.da)(),e._crypto_auth_keybytes=()=>(e._crypto_auth_keybytes=R.ea)(),e._crypto_auth=(A,g,I,C,B)=>(e._crypto_auth=R.fa)(A,g,I,C,B),e._crypto_auth_verify=(A,g,I,C,B)=>(e._crypto_auth_verify=R.ga)(A,g,I,C,B),e._crypto_auth_keygen=A=>(e._crypto_auth_keygen=R.ha)(A),e._crypto_box_seedbytes=()=>(e._crypto_box_seedbytes=R.ia)(),e._crypto_box_publickeybytes=()=>(e._crypto_box_publickeybytes=R.ja)(),e._crypto_box_secretkeybytes=()=>(e._crypto_box_secretkeybytes=R.ka)(),e._crypto_box_beforenmbytes=()=>(e._crypto_box_beforenmbytes=R.la)(),e._crypto_box_noncebytes=()=>(e._crypto_box_noncebytes=R.ma)(),e._crypto_box_macbytes=()=>(e._crypto_box_macbytes=R.na)(),e._crypto_box_messagebytes_max=()=>(e._crypto_box_messagebytes_max=R.oa)(),e._crypto_box_seed_keypair=(A,g,I)=>(e._crypto_box_seed_keypair=R.pa)(A,g,I),e._crypto_box_keypair=(A,g)=>(e._crypto_box_keypair=R.qa)(A,g),e._crypto_box_beforenm=(A,g,I)=>(e._crypto_box_beforenm=R.ra)(A,g,I),e._crypto_box_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_detached_afternm=R.sa)(A,g,I,C,B,a,i),e._crypto_box_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_detached=R.ta)(A,g,I,C,B,a,i,r),e._crypto_box_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_easy_afternm=R.ua)(A,g,I,C,B,a),e._crypto_box_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_easy=R.va)(A,g,I,C,B,a,i),e._crypto_box_open_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_open_detached_afternm=R.wa)(A,g,I,C,B,a,i),e._crypto_box_open_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_open_detached=R.xa)(A,g,I,C,B,a,i,r),e._crypto_box_open_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_open_easy_afternm=R.ya)(A,g,I,C,B,a),e._crypto_box_open_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_open_easy=R.za)(A,g,I,C,B,a,i),e._crypto_box_seal=(A,g,I,C,B)=>(e._crypto_box_seal=R.Aa)(A,g,I,C,B),e._crypto_box_seal_open=(A,g,I,C,B,a)=>(e._crypto_box_seal_open=R.Ba)(A,g,I,C,B,a),e._crypto_box_sealbytes=()=>(e._crypto_box_sealbytes=R.Ca)(),e._crypto_generichash_bytes_min=()=>(e._crypto_generichash_bytes_min=R.Da)(),e._crypto_generichash_bytes_max=()=>(e._crypto_generichash_bytes_max=R.Ea)(),e._crypto_generichash_bytes=()=>(e._crypto_generichash_bytes=R.Fa)(),e._crypto_generichash_keybytes_min=()=>(e._crypto_generichash_keybytes_min=R.Ga)(),e._crypto_generichash_keybytes_max=()=>(e._crypto_generichash_keybytes_max=R.Ha)(),e._crypto_generichash_keybytes=()=>(e._crypto_generichash_keybytes=R.Ia)(),e._crypto_generichash_statebytes=()=>(e._crypto_generichash_statebytes=R.Ja)(),e._crypto_generichash=(A,g,I,C,B,a,i)=>(e._crypto_generichash=R.Ka)(A,g,I,C,B,a,i),e._crypto_generichash_init=(A,g,I,C)=>(e._crypto_generichash_init=R.La)(A,g,I,C),e._crypto_generichash_update=(A,g,I,C)=>(e._crypto_generichash_update=R.Ma)(A,g,I,C),e._crypto_generichash_final=(A,g,I)=>(e._crypto_generichash_final=R.Na)(A,g,I),e._crypto_generichash_keygen=A=>(e._crypto_generichash_keygen=R.Oa)(A),e._crypto_hash_bytes=()=>(e._crypto_hash_bytes=R.Pa)(),e._crypto_hash=(A,g,I,C)=>(e._crypto_hash=R.Qa)(A,g,I,C),e._crypto_kdf_bytes_min=()=>(e._crypto_kdf_bytes_min=R.Ra)(),e._crypto_kdf_bytes_max=()=>(e._crypto_kdf_bytes_max=R.Sa)(),e._crypto_kdf_contextbytes=()=>(e._crypto_kdf_contextbytes=R.Ta)(),e._crypto_kdf_keybytes=()=>(e._crypto_kdf_keybytes=R.Ua)(),e._crypto_kdf_derive_from_key=(A,g,I,C,B,a)=>(e._crypto_kdf_derive_from_key=R.Va)(A,g,I,C,B,a),e._crypto_kdf_keygen=A=>(e._crypto_kdf_keygen=R.Wa)(A),e._crypto_kdf_hkdf_sha256_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_init=R.Xa)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_update=R.Ya)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha256_extract_final=R.Za)(A,g),e._crypto_kdf_hkdf_sha256_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_extract=R._a)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keygen=A=>(e._crypto_kdf_hkdf_sha256_keygen=R.$a)(A),e._crypto_kdf_hkdf_sha256_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_expand=R.ab)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keybytes=()=>(e._crypto_kdf_hkdf_sha256_keybytes=R.bb)(),e._crypto_kdf_hkdf_sha256_bytes_min=()=>(e._crypto_kdf_hkdf_sha256_bytes_min=R.cb)(),e._crypto_kdf_hkdf_sha256_bytes_max=()=>(e._crypto_kdf_hkdf_sha256_bytes_max=R.db)(),e._crypto_kdf_hkdf_sha256_statebytes=()=>(e._crypto_kdf_hkdf_sha256_statebytes=R.eb)(),e._crypto_kdf_hkdf_sha512_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_init=R.fb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_update=R.gb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha512_extract_final=R.hb)(A,g),e._crypto_kdf_hkdf_sha512_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_extract=R.ib)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keygen=A=>(e._crypto_kdf_hkdf_sha512_keygen=R.jb)(A),e._crypto_kdf_hkdf_sha512_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_expand=R.kb)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keybytes=()=>(e._crypto_kdf_hkdf_sha512_keybytes=R.lb)(),e._crypto_kdf_hkdf_sha512_bytes_min=()=>(e._crypto_kdf_hkdf_sha512_bytes_min=R.mb)(),e._crypto_kdf_hkdf_sha512_bytes_max=()=>(e._crypto_kdf_hkdf_sha512_bytes_max=R.nb)(),e._crypto_kdf_hkdf_sha512_statebytes=()=>(e._crypto_kdf_hkdf_sha512_statebytes=R.ob)(),e._crypto_kx_seed_keypair=(A,g,I)=>(e._crypto_kx_seed_keypair=R.pb)(A,g,I),e._crypto_kx_keypair=(A,g)=>(e._crypto_kx_keypair=R.qb)(A,g),e._crypto_kx_client_session_keys=(A,g,I,C,B)=>(e._crypto_kx_client_session_keys=R.rb)(A,g,I,C,B),e._crypto_kx_server_session_keys=(A,g,I,C,B)=>(e._crypto_kx_server_session_keys=R.sb)(A,g,I,C,B),e._crypto_kx_publickeybytes=()=>(e._crypto_kx_publickeybytes=R.tb)(),e._crypto_kx_secretkeybytes=()=>(e._crypto_kx_secretkeybytes=R.ub)(),e._crypto_kx_seedbytes=()=>(e._crypto_kx_seedbytes=R.vb)(),e._crypto_kx_sessionkeybytes=()=>(e._crypto_kx_sessionkeybytes=R.wb)(),e._crypto_scalarmult_base=(A,g)=>(e._crypto_scalarmult_base=R.xb)(A,g),e._crypto_scalarmult=(A,g,I)=>(e._crypto_scalarmult=R.yb)(A,g,I),e._crypto_scalarmult_bytes=()=>(e._crypto_scalarmult_bytes=R.zb)(),e._crypto_scalarmult_scalarbytes=()=>(e._crypto_scalarmult_scalarbytes=R.Ab)(),e._crypto_secretbox_keybytes=()=>(e._crypto_secretbox_keybytes=R.Bb)(),e._crypto_secretbox_noncebytes=()=>(e._crypto_secretbox_noncebytes=R.Cb)(),e._crypto_secretbox_macbytes=()=>(e._crypto_secretbox_macbytes=R.Db)(),e._crypto_secretbox_messagebytes_max=()=>(e._crypto_secretbox_messagebytes_max=R.Eb)(),e._crypto_secretbox_keygen=A=>(e._crypto_secretbox_keygen=R.Fb)(A),e._crypto_secretbox_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_detached=R.Gb)(A,g,I,C,B,a,i),e._crypto_secretbox_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_easy=R.Hb)(A,g,I,C,B,a),e._crypto_secretbox_open_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_open_detached=R.Ib)(A,g,I,C,B,a,i),e._crypto_secretbox_open_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_open_easy=R.Jb)(A,g,I,C,B,a),e._crypto_secretstream_xchacha20poly1305_keygen=A=>(e._crypto_secretstream_xchacha20poly1305_keygen=R.Kb)(A),e._crypto_secretstream_xchacha20poly1305_init_push=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_push=R.Lb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_init_pull=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_pull=R.Mb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_rekey=A=>(e._crypto_secretstream_xchacha20poly1305_rekey=R.Nb)(A),e._crypto_secretstream_xchacha20poly1305_push=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_push=R.Ob)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_pull=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_pull=R.Pb)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_statebytes=()=>(e._crypto_secretstream_xchacha20poly1305_statebytes=R.Qb)(),e._crypto_secretstream_xchacha20poly1305_abytes=()=>(e._crypto_secretstream_xchacha20poly1305_abytes=R.Rb)(),e._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(e._crypto_secretstream_xchacha20poly1305_headerbytes=R.Sb)(),e._crypto_secretstream_xchacha20poly1305_keybytes=()=>(e._crypto_secretstream_xchacha20poly1305_keybytes=R.Tb)(),e._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(e._crypto_secretstream_xchacha20poly1305_messagebytes_max=R.Ub)(),e._crypto_secretstream_xchacha20poly1305_tag_message=()=>(e._crypto_secretstream_xchacha20poly1305_tag_message=R.Vb)(),e._crypto_secretstream_xchacha20poly1305_tag_push=()=>(e._crypto_secretstream_xchacha20poly1305_tag_push=R.Wb)(),e._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(e._crypto_secretstream_xchacha20poly1305_tag_rekey=R.Xb)(),e._crypto_secretstream_xchacha20poly1305_tag_final=()=>(e._crypto_secretstream_xchacha20poly1305_tag_final=R.Yb)(),e._crypto_shorthash_bytes=()=>(e._crypto_shorthash_bytes=R.Zb)(),e._crypto_shorthash_keybytes=()=>(e._crypto_shorthash_keybytes=R._b)(),e._crypto_shorthash=(A,g,I,C,B)=>(e._crypto_shorthash=R.$b)(A,g,I,C,B),e._crypto_shorthash_keygen=A=>(e._crypto_shorthash_keygen=R.ac)(A),e._crypto_sign_statebytes=()=>(e._crypto_sign_statebytes=R.bc)(),e._crypto_sign_bytes=()=>(e._crypto_sign_bytes=R.cc)(),e._crypto_sign_seedbytes=()=>(e._crypto_sign_seedbytes=R.dc)(),e._crypto_sign_publickeybytes=()=>(e._crypto_sign_publickeybytes=R.ec)(),e._crypto_sign_secretkeybytes=()=>(e._crypto_sign_secretkeybytes=R.fc)(),e._crypto_sign_messagebytes_max=()=>(e._crypto_sign_messagebytes_max=R.gc)(),e._crypto_sign_seed_keypair=(A,g,I)=>(e._crypto_sign_seed_keypair=R.hc)(A,g,I),e._crypto_sign_keypair=(A,g)=>(e._crypto_sign_keypair=R.ic)(A,g),e._crypto_sign=(A,g,I,C,B,a)=>(e._crypto_sign=R.jc)(A,g,I,C,B,a),e._crypto_sign_open=(A,g,I,C,B,a)=>(e._crypto_sign_open=R.kc)(A,g,I,C,B,a),e._crypto_sign_detached=(A,g,I,C,B,a)=>(e._crypto_sign_detached=R.lc)(A,g,I,C,B,a),e._crypto_sign_verify_detached=(A,g,I,C,B)=>(e._crypto_sign_verify_detached=R.mc)(A,g,I,C,B),e._crypto_sign_init=A=>(e._crypto_sign_init=R.nc)(A),e._crypto_sign_update=(A,g,I,C)=>(e._crypto_sign_update=R.oc)(A,g,I,C),e._crypto_sign_final_create=(A,g,I,C)=>(e._crypto_sign_final_create=R.pc)(A,g,I,C),e._crypto_sign_final_verify=(A,g,I)=>(e._crypto_sign_final_verify=R.qc)(A,g,I),e._crypto_sign_ed25519_pk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_pk_to_curve25519=R.rc)(A,g),e._crypto_sign_ed25519_sk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_sk_to_curve25519=R.sc)(A,g),e._randombytes_random=()=>(e._randombytes_random=R.tc)(),e._randombytes_stir=()=>(e._randombytes_stir=R.uc)(),e._randombytes_uniform=A=>(e._randombytes_uniform=R.vc)(A),e._randombytes_buf=(A,g)=>(e._randombytes_buf=R.wc)(A,g),e._randombytes_buf_deterministic=(A,g,I)=>(e._randombytes_buf_deterministic=R.xc)(A,g,I),e._randombytes_seedbytes=()=>(e._randombytes_seedbytes=R.yc)(),e._randombytes_close=()=>(e._randombytes_close=R.zc)(),e._randombytes=(A,g,I)=>(e._randombytes=R.Ac)(A,g,I),e._sodium_bin2hex=(A,g,I,C)=>(e._sodium_bin2hex=R.Bc)(A,g,I,C),e._sodium_hex2bin=(A,g,I,C,B,a,i)=>(e._sodium_hex2bin=R.Cc)(A,g,I,C,B,a,i),e._sodium_base64_encoded_len=(A,g)=>(e._sodium_base64_encoded_len=R.Dc)(A,g),e._sodium_bin2base64=(A,g,I,C,B)=>(e._sodium_bin2base64=R.Ec)(A,g,I,C,B),e._sodium_base642bin=(A,g,I,C,B,a,i,r)=>(e._sodium_base642bin=R.Fc)(A,g,I,C,B,a,i,r),e._sodium_init=()=>(e._sodium_init=R.Gc)(),e._sodium_pad=(A,g,I,C,B)=>(e._sodium_pad=R.Hc)(A,g,I,C,B),e._sodium_unpad=(A,g,I,C)=>(e._sodium_unpad=R.Ic)(A,g,I,C),e._sodium_version_string=()=>(e._sodium_version_string=R.Jc)(),e._sodium_library_version_major=()=>(e._sodium_library_version_major=R.Kc)(),e._sodium_library_version_minor=()=>(e._sodium_library_version_minor=R.Lc)(),e._sodium_library_minimal=()=>(e._sodium_library_minimal=R.Mc)(),e._malloc=A=>(e._malloc=R.Nc)(A),e._free=A=>(e._free=R.Oc)(A),e.setValue=function(A,g,I="i8"){switch(I.endsWith("*")&&(I="*"),I){case"i1":case"i8":n[A]=g;break;case"i16":s[A>>1]=g;break;case"i32":p[A>>2]=g;break;case"i64":F("to do setValue(i64) use WASM_BIGINT");case"float":D[A>>2]=g;break;case"double":w[A>>3]=g;break;case"*":f[A>>2]=g;break;default:F(`invalid type for setValue: ${I}`)}},e.getValue=function(A,g="i8"){switch(g.endsWith("*")&&(g="*"),g){case"i1":case"i8":return n[A];case"i16":return s[A>>1];case"i32":return p[A>>2];case"i64":F("to do getValue(i64) use WASM_BIGINT");case"float":return D[A>>2];case"double":return w[A>>3];case"*":return f[A>>2];default:F(`invalid type for getValue: ${g}`)}},e.UTF8ToString=U,M=function A(){G||L(),G||(M=A)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();L()}))};var I,e=void 0!==e?e:{},B="object"==typeof window,a="function"==typeof importScripts,i="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,r=Object.assign({},e),t="";if(i){var Q=require("fs"),o=require("path");t=__dirname+"/",I=A=>(A=K(A)?new URL(A):o.normalize(A),Q.readFileSync(A)),!e.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),"undefined"!=typeof module&&(module.exports=e)}else(B||a)&&(a?t=self.location.href:"undefined"!=typeof document&&document.currentScript&&(t=document.currentScript.src),t=t.startsWith("blob:")?"":t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1),a&&(I=A=>{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}));e.print;var c,E,y=e.printErr||void 0;Object.assign(e,r),r=null,e.arguments&&e.arguments,e.thisProgram&&e.thisProgram,e.quit&&e.quit,e.wasmBinary&&(c=e.wasmBinary);var _,n,h,s,p,f,D,w=!1;function k(){var A=E.buffer;e.HEAP8=_=new Int8Array(A),e.HEAP16=h=new Int16Array(A),e.HEAPU8=n=new Uint8Array(A),e.HEAPU16=new Uint16Array(A),e.HEAP32=s=new Int32Array(A),e.HEAPU32=p=new Uint32Array(A),e.HEAPF32=f=new Float32Array(A),e.HEAPF64=D=new Float64Array(A)}var d=[],l=[],u=[],v=0,S=null,b=null;function M(A){throw e.onAbort?.(A),y(A="Aborted("+A+")"),w=!0,A+=". Build with -sASSERTIONS for more info.",new WebAssembly.RuntimeError(A)}var F,N="data:application/octet-stream;base64,",K=A=>A.startsWith("file://");function Y(A){return Promise.resolve().then((()=>function(A){if(A==F&&c)return new Uint8Array(c);var g=function(A){if((A=>A.startsWith(N))(A))return function(A){if(void 0!==i&&i){var g=Buffer.from(A,"base64");return new Uint8Array(g.buffer,g.byteOffset,g.length)}for(var I=atob(A),C=new Uint8Array(I.length),e=0;e<I.length;++e)C[e]=I.charCodeAt(e);return C}(A.slice(37))}(A);if(g)return g;if(I)return I(A);throw"both async and sync fetching of the wasm failed"}(A)))}var H={36304:()=>e.getRandomValue(),36340:()=>{if(void 0===e.getRandomValue)try{var A="object"==typeof window?window:self,g=void 0!==A.crypto?A.crypto:A.msCrypto;g=void 0===g?C:g;var I=function(){var A=new Uint32Array(1);return g.getRandomValues(A),A[0]>>>0};I(),e.getRandomValue=I}catch(A){try{var C=require("crypto"),B=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};B(),e.getRandomValue=B}catch(A){throw"No secure random number generator found"}}}},G=A=>{for(;A.length>0;)A.shift()(e)};e.noExitRuntime;var J,U="undefined"!=typeof TextDecoder?new TextDecoder:void 0,x=(A,g)=>A?((A,g,I)=>{for(var C=g+I,e=g;A[e]&&!(e>=C);)++e;if(e-g>16&&A.buffer&&U)return U.decode(A.subarray(g,e));for(var B="";g<e;){var a=A[g++];if(128&a){var i=63&A[g++];if(192!=(224&a)){var r=63&A[g++];if((a=224==(240&a)?(15&a)<<12|i<<6|r:(7&a)<<18|i<<12|r<<6|63&A[g++])<65536)B+=String.fromCharCode(a);else{var t=a-65536;B+=String.fromCharCode(55296|t>>10,56320|1023&t)}}else B+=String.fromCharCode((31&a)<<6|i)}else B+=String.fromCharCode(a)}return B})(n,A,g):"",m=[],P=A=>{var g=(A-E.buffer.byteLength+65535)/65536;try{return E.grow(g),k(),1}catch(A){}},R={b:(A,g,I,C)=>{M(`Assertion failed: ${x(A)}, at: `+[g?x(g):"unknown filename",I,C?x(C):"unknown function"])},c:()=>{M("")},d:(A,g,I)=>n.copyWithin(A,g,g+I),a:(A,g,I)=>((A,g,I)=>{var C=((A,g)=>{var I;for(m.length=0;I=n[A++];){var C=105!=I;g+=(C&=112!=I)&&g%8?4:0,m.push(112==I?p[g>>2]:105==I?s[g>>2]:D[g>>3]),g+=C?8:4}return m})(g,I);return H[A](...C)})(A,g,I),e:A=>{var g=n.length,I=2147483648;if((A>>>=0)>I)return!1;for(var C,e=1;e<=4;e*=2){var B=g*(1+.2/e);B=Math.min(B,A+100663296);var a=Math.min(I,(C=Math.max(A,B))+(65536-C%65536)%65536);if(P(a))return!0}return!1}},L=function(){var A,g={a:R};function I(A,g){return L=A.exports,E=L.f,k(),function(A){if(v--,e.monitorRunDependencies?.(v),0==v&&(null!==S&&(clearInterval(S),S=null),b)){var g=b;b=null,g()}}(),L}if(v++,e.monitorRunDependencies?.(v),e.instantiateWasm)try{return e.instantiateWasm(g,I)}catch(A){return y(`Module.instantiateWasm callback failed with error: ${A}`),!1}return F||(F="data:application/octet-stream;base64,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IAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRrIAE2AgAgAkEYayABNgIAIAJBHGsgATYCACAEIANBBHFBGHIiBGsiAkEgSQ0AIAGtQoGAgIAQfiEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkEgayICQR9LDQALCyAAC4IEAQN/IAJBgARPBEAgACABIAIQAyAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLIANBfHEhBAJAIANBwABJDQAgAiAEQUBqIgVLDQADQCACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyAAIANBBGsiBEsEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAACxgBAX9BlKYCKAIAIgAEQCAAERMACxACAAsEAEEgC4kGAgd+A38jAEHABWsiCyQAAkAgAlANACAAIAApA0giAyACQgOGfCIENwNIIAAgACkDQCADIARWrXwgAkI9iHw3A0AgAEHQAGohCkKAASADQgOIQv8AgyIEfSIIIAJYBEBCACEDIARC/wCFQgNaBEAgCEL8AYMhBwNAIAogAyAEfKdqIAEgA6dqLQAAOgAAIAogA0IBhCIJIAR8p2ogASAJp2otAAA6AAAgCiADQgKEIgkgBHynaiABIAmnai0AADoAACAKIANCA4QiCSAEfKdqIAEgCadqLQAAOgAAIANCBHwhAyAFQgR8IgUgB1INAAsLIAhCA4MiBUIAUgRAA0AgCiADIAR8p2ogASADp2otAAA6AAAgA0IBfCEDIAZCAXwiBiAFUg0ACwsgACAKIAsgC0GABWoiDBAsIAEgCKdqIQEgAiAIfSICQv8AVgRAA0AgACABIAsgDBAsIAFBgAFqIQEgAkKAAX0iAkL/AFYNAAsLAkAgAlANACACQgODIQRCACEGQgAhAyACQgRaBEAgAkL8AIMhBUIAIQIDQCAKIAOnIgBqIAAgAWotAAA6AAAgCiAAQQFyIgxqIAEgDGotAAA6AAAgCiAAQQJyIgxqIAEgDGotAAA6AAAgCiAAQQNyIgBqIAAgAWotAAA6AAAgA0IEfCEDIAJCBHwiAiAFUg0ACwsgBFANAANAIAogA6ciAGogACABai0AADoAACADQgF8IQMgBkIBfCIGIARSDQALCyALQcAFEAgMAQtCACEDIAJCBFoEQCACQnyDIQgDQCAKIAMgBHynaiABIAOnai0AADoAACAKIANCAYQiByAEfKdqIAEgB6dqLQAAOgAAIAogA0IChCIHIAR8p2ogASAHp2otAAA6AAAgCiADQgOEIgcgBHynaiABIAenai0AADoAACADQgR8IQMgBUIEfCIFIAhSDQALCyACQgODIgJQDQADQCAKIAMgBHynaiABIAOnai0AADoAACADQgF8IQMgBkIBfCIGIAJSDQALCyALQcAFaiQAQQALnwQBE38gASgCBCECIAEoAiwhAyABKAIIIQQgASgCMCEFIAEoAgwhBiABKAI0IQcgASgCECEIIAEoAjghCSABKAIUIQogASgCPCELIAEoAhghDCABQUBrIg0oAgAhDiABKAIcIQ8gASgCRCEQIAEoAiAhESABKAJIIRIgASgCJCETIAEoAkwhFCAAIAEoAgAgASgCKGo2AgAgACATIBRqNgIkIAAgESASajYCICAAIA8gEGo2AhwgACAMIA5qNgIYIAAgCiALajYCFCAAIAggCWo2AhAgACAGIAdqNgIMIAAgBCAFajYCCCAAIAIgA2o2AgQgASgCBCECIAEoAiwhAyABKAIIIQQgASgCMCEFIAEoAgwhBiABKAI0IQcgASgCECEIIAEoAjghCSABKAIUIQogASgCPCELIAEoAhghDCANKAIAIQ0gASgCHCEOIAEoAkQhDyABKAIgIRAgASgCSCERIAEoAgAhEiABKAIoIRMgACABKAJMIAEoAiRrNgJMIAAgESAQazYCSCAAIA8gDms2AkQgAEFAayANIAxrNgIAIAAgCyAKazYCPCAAIAkgCGs2AjggACAHIAZrNgI0IAAgBSAEazYCMCAAIAMgAms2AiwgACATIBJrNgIoIAAgASkCUDcCUCAAIAEpAlg3AlggACABKQJgNwJgIAAgASkCaDcCaCAAIAEpAnA3AnAgAEH4AGogAUH4AGpBkAsQBgvwCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAIQBiAAQShqIgMgAyACQShqEAYgAEH4AGogAkH4AGogAUH4AGoQBiAAIAFB0ABqIAJB0ABqEAYgACgCBCEUIAAoAgghFSAAKAIMIRYgACgCECEXIAAoAhQhGCAAKAIYIRkgACgCHCEaIAAoAiAhGyAAKAIkIRwgACgCLCEBIAAoAlQhAiAAKAIwIQMg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KAI0ISMgASgCDCEkIAEoAjghJSABKAIQISYgASgCPCEnIAEoAhQhKCABQUBrKAIAISkgASgCGCEqIAEoAkQhKyABKAIcISwgASgCSCEtIAEoAiAhLiABKAIoIS8gASgCACEwIAAgASgCTCABKAIkajYCTCAAIC0gLmo2AkggACArICxqNgJEIABBQGsiMSApICpqNgIAIAAgJyAoajYCPCAAICUgJmo2AjggACAjICRqNgI0IAAgISAiajYCMCAAIB8gIGo2AiwgACAvIDBqNgIoIB4gAEEoahAFIAAoAgQhASAAKAJUIR8gACgCCCEgIAAoAlghISAAKAIMISIgACgCXCEjIAAoAhAhJCAAKAJgISUgACgCFCEmIAAoAmQhJyAAKAIYISggACgCaCEpIAAoAhwhKiAAKAJsISsgACgCICEsIAAoAnAhLSAAKAIAIS4gACgCUCEvIAAgACgCdCIwIAAoAiQiMmsiMzYCdCAAIC0gLGsiNDYCcCAAICsgKmsiNTYCbCAAICkgKGsiNjYCaCAAICcgJmsiNzYCZCAAICUgJGsiODYCYCAAICMgImsiOTYCXCAAICEgIGsiOjYCWCAAIB8gAWsiOzYCVCAAIC8gLmsiPDYCUCAAIDAgMmoiMDYCTCAAICwgLWoiLDYCSCAAICogK2oiKjYCRCAxICggKWoiKDYCACAAICYgJ2oiJjYCPCAAICQgJWoiJDYCOCAAICIgI2oiIjYCNCAAICAgIWoiIDYCMCAAIAEgH2oiATYCLCAAIC4gL2oiHzYCKCAeKAIAISEgHigCBCEjIB4oAgghJSAeKAIMIScgHigCECEpIB4oAhQhKyAeKAIYIS0gHigCHCEuIB4oAiAhLyAAIB4oAiQgMGs2AiQgACAvICxrNgIgIAAgLiAqazYCHCAAIC0gKGs2AhggACArICZrNgIUIAAgKSAkazYCECAAICcgIms2AgwgACAlICBrNgIIIAAgIyABazYCBCAAICEgH2s2AgAgACgCfCEBIAAoAoABIR8gACgChAEhICAAKAKIASEhIAAoAowBISIgACgCkAEhIyAAKAKUASEkIAAoApgBISUgACgCeCEmIAAgACgCnAEgM2s2ApwBIAAgJSA0azYCmAEgACAkIDVrNgKUASAAICMgNms2ApABIAAgIiA3azYCjAEgACAhIDhrNgKIASAAICAgOWs2AoQBIAAgHyA6azYCgAEgACABIDtrNgJ8IAAgJiA8azYCeCAeQTBqJAALDAAgACABIAIQKkEAC3AAIABCADcDQCAAQgA3A0ggAEHwiAIpAwA3AwAgAEH4iAIpAwA3AwggAEGAiQIpAwA3AxAgAEGIiQIpAwA3AxggAEGQiQIpAwA3AyAgAEGYiQIpAwA3AyggAEGgiQIpAwA3AzAgAEGoiQIpAwA3AzgLJAAgAUKAgICAEFoEQBALAAsgACABIAIgA0HEmwIoAgARDgAaCwUAQcAACzcBAX8jAEFAaiICJAAgACACEBQgAEHQAWoiACACQsAAEA0aIAAgARAUIAJBwAAQCCACQUBrJAAL1gQBCH8jAEHAAWsiBSQAIAJBgQFPBEAgABAbIAAgASACrRANGiAAIAUQFEHAACECIAUhAQsgABAbIAVBQGtBNkGAARAJGgJAIAJFDQAgAkEETwRAIAJB/AFxIQoDQCAFQUBrIgggA2oiBCAELQAAIAEgA2otAABzOgAAIAggA0EBciIEaiIGIAYtAAAgASAEai0AAHM6AAAgCCADQQJyIgRqIgYgBi0AACABIARqLQAAczoAACAIIANBA3IiBGoiBiAGLQAAIAEgBGotAABzOgAAIANBBGohAyAHQQRqIgcgCkcNAAsLIAJBA3EiB0UNAANAIAVBQGsgA2oiCiAKLQAAIAEgA2otAABzOgAAIANBAWohAyAJQQFqIgkgB0cNAAsLIAAgBUFAayIDQoABEA0aIABB0AFqIgAQGyADQdwAQYABEAkaAkAgAkUNAEEAIQlBACEDIAJBBE8EQCACQfwBcSEKQQAhBwNAIAVBQGsiCCADaiIEIAQtAAAgASADai0AAHM6AAAgCCADQQFyIgRqIgYgBi0AACABIARqLQAAczoAACAIIANBAnIiBGoiBiAGLQAAIAEgBGotAABzOgAAIAggA0EDciIEaiIGIAYtAAAgASAEai0AAHM6AAAgA0EEaiEDIAdBBGoiByAKRw0ACwsgAkEDcSICRQ0AA0AgBUFAayADaiIHIActAAAgASADai0AAHM6AAAgA0EBaiEDIAlBAWoiCSACRw0ACwsgACAFQUBrIgBCgAEQDRogAEGAARAIIAVBwAAQCCAFQcABaiQAQQALlQEBAX8jAEHQAWsiAyQAIANCADcDSCADQfiIAikDADcDCCADQYCJAikDADcDECADQYiJAikDADcDGCADQZCJAikDADcDICADQZiJAikDADcDKCADQaCJAikDADcDMCADQaiJAikDADcDOCADQgA3A0AgA0HwiAIpAwA3AwAgAyABIAIQDRogAyAAEBQgA0HQAWokAEEAC0AAAkAgBK1CgICAgBAgAkI/fEIGiH1WDQAgAkKAgICAEFoNACAAIAEgAiADIAQgBUHMmwIoAgARCgAaDwsQCwAL7wMBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADYCBCACIAIoAgQgAigCDC0AACACKAIILQAAc3I2AgQgAiACKAIEIAIoAgwtAAEgAigCCC0AAXNyNgIEIAIgAigCBCACKAIMLQACIAIoAggtAAJzcjYCBCACIAIoAgQgAigCDC0AAyACKAIILQADc3I2AgQgAiACKAIEIAIoAgwtAAQgAigCCC0ABHNyNgIEIAIgAigCBCACKAIMLQAFIAIoAggtAAVzcjYCBCACIAIoAgQgAigCDC0ABiACKAIILQAGc3I2AgQgAiACKAIEIAIoAgwtAAcgAigCCC0AB3NyNgIEIAIgAigCBCACKAIMLQAIIAIoAggtAAhzcjYCBCACIAIoAgQgAigCDC0ACSACKAIILQAJc3I2AgQgAiACKAIEIAIoAgwtAAogAigCCC0ACnNyNgIEIAIgAigCBCACKAIMLQALIAIoAggtAAtzcjYCBCACIAIoAgQgAigCDC0ADCACKAIILQAMc3I2AgQgAiACKAIEIAIoAgwtAA0gAigCCC0ADXNyNgIEIAIgAigCBCACKAIMLQAOIAIoAggtAA5zcjYCBCACIAIoAgQgAigCDC0ADyACKAIILQAPc3I2AgQgAigCBEEBa0EIdkEBcUEBawv3AgEDfwJ/AkACQAJAIAEiBEH/AXEiAQRAIABBA3EEQANAIAAtAAAiAkUNBSABIAJGDQUgAEEBaiIAQQNxDQALC0GAgoQIIAAoAgAiAmsgAnJBgIGChHhxQYCBgoR4Rw0BIAFBgYKECGwhAwNAQYCChAggAiADcyIBayABckGAgYKEeHFBgIGChHhHDQIgACgCBCECIABBBGoiASEAIAJBgIKECCACa3JBgIGChHhxQYCBgoR4Rg0ACwwCCwJ/AkACQCAAIgJBA3FFDQBBACAALQAA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NgAMIAUgFSAOIChqczYACCAFIBYgCiApanM2AAQgEiATQQFqIhNFaiESIANCwABYBEACQCADQj9WDQAgA1ANACADpyEBQQAhBANAIAQgK2ogBCAFai0AADoAACAEQQFqIgQgAUkNAAsLIAAgEjYCNCAAIBM2AjAFIAFBQGshASAFQUBrIQIgA0JAfCEDDAELCwvRBgEKfyMAQaACayICJAAgACgAHCEEIAAoABghBSAAKAAUIQYgACgAECEHIAAoAAQhCCAAKAAIIQkgACgADCEKIAAoAAAhCyACIAEpAng3A5gCIAIgASkCcDcDkAIgAiABKQJoNwP4ASACIAEpAmA3A/ABIAIgASkCeDcD6AEgAiABKQJwNwPgASACQYACaiIDIAJB8AFqIAJB4AFqEAcgASACKQKIAjcCeCABIAIpAoACNwJwIAIgASkCWDcD2AEgAiABKQJQNwPQASACIAEpAmg3A8gBIAIgASkCYDcDwAEgAyACQdABaiACQcABahAHIAEgAikCiAI3AmggASACKQKAAjcCYCACIAEpAkg3A7gBIAIgAUFAayIAKQIANwOwASACIAEpAlg3A6gBIAIgASkCUDcDoAEgAyACQbABaiACQaABahAHIAEgAikCiAI3AlggASACKQKAAjcCUCACIAEpAjg3A5gBIAIgASkCMDcDkAEgAiABKQJINwOIASACIAApAgA3A4ABIAMgAkGQAWogAkGAAWoQByABIAIpAogCNwJIIAAgAikCgAI3AgAgAiABKQIoNwN4IAIgASkCIDcDcCACIAEpAjg3A2ggAiABKQIwNwNgIAMgAkHwAGogAkHgAGoQByABIAIpAogCNwI4IAEgAikCgAI3AjAgAiABKQIYNwNYIAIgASkCEDcDUCACIAEpAig3A0ggAiABKQIgNwNAIAMgAkHQAGogAkFAaxAHIAEgAikCiAI3AiggASACKQKAAjcCICACIAEpAgg3AzggAiABKQIANwMwIAIgASkCGDcDKCACIAEpAhA3AyAgAyACQTBqIAJBIGoQByABIAIpAogCNwIYIAEgAikCgAI3AhAgAiACKQOYAjcDGCACIAIpA5ACNwMQIAIgASkCCDcDCCACIAEpAgA3AwAgAyACQRBqIAIQByABIAIpAogCNwIIIAEgAikCgAI3AgAgASAKIAEoAAxzNgIMIAEg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EAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgAyABIAMQBiABIAMQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEgAxAGIAIgARAFQQEhAQNAIAIgAhAFIAFBAWoiAUHkAEcNAAsgAkEwaiIBIAIgARAGIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAJB4ABqIgMgASADEAYgAyADEAUgAyADEAUgAyADEAUgAyADEAUgAyADEAUgACADIAJBkAFqEAYgAkHAAWokAAuLAQEBfyMAQRBrIgIgADYCDCACIAE2AghBACEAIAJBADYCBANAIAIgAigCBCACKAIMIABqLQAAIAIoAgggAGotAABzcjYCBCACIAIoAgQgAEEBciIBIAIoAgxqLQAAIAIoAgggAWotAABzcjYCBCAAQQJqIgBBIEcNAAsgAigCBEEBa0EIdkEBcUEBawvPAgICfwF+IwBB4ABrIgYkACAGIAQgBRBIGiAGQSBqIgdCICAEQRBqIgUgBkGgkwIoAgARDgAaQX8hBAJAAkAgAiABIAMgB0GIkwIoAgARFgANAEEAIQQgAEUNAQJAAn4CQCAAIAFJIAEgAGutIANUcUUEQCAAIAFNDQEgACABa60gA1oNAQsgACABIAOnEDYhAUIgIAMgA0IgWhsMAQsgA1ANAUIgIAMgA0IgWhsLIQggBkFAayABIAinIgIQCiEHIAZBIGoiBCAEIAhCIHwgBUIAIAZBpJMCKAIAEQwAGiAAIAcgAhAKIARBwAAQCEEAIQQgA0IhVA0BIAJqIAEgAmogAyAIfSAFQgEgBkGkkwIoAgARDAAaDAELIAZBIGoiACAAQiAgBUIAIAZBpJMCKAIAEQwAGiAAQcAAEAgLIAZBIBAICyAGQeAAaiQAIAQL6AIBAn8CQCAAIAFGDQAgASAAIAJqIgRrQQAgAkEBdGtNBEAgACABIAIQCg8LIAAgAXNBA3EhAwJAAkAgACABSQRAIAMEQCAAIQMMAwsgAEEDcUUEQCAAIQMMAgsgACEDA0AgAkUNBCADIAEtAAA6AAAgAUEBaiEBIAJBAWshAiADQQFqIgNBA3ENAAsMAQsCQCADDQAgBEEDcQRAA0AgAkUNBSAAIAJBAWsiAmoiAyABIAJqLQAAOgAAIANBA3ENAAsLIAJBA00NAANAIAAgAkEEayICaiABIAJqKAIANgIAIAJBA0sNAAsLIAJFDQIDQCAAIAJBAWsiAmogASACai0AADoAACACDQALDAILIAJBA00NAANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIAJBBGsiAkEDSw0ACwsgAkUNAANAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBIAJBAWsiAg0ACwsgAAs0AQF/IwBBIGsiAiQAIAAgAhBJIABB6ABqIgAgAkIgECogACABEEkgAkEgEAggAkEgaiQAC88HAQl/IwBB4ABrIgMkACACQcEATwRAIABCADcDICAAQcCPAikDADcDACAAQciPAikDADcDCCAAQdCPAikDADcDECAAQdiPAikDADcDGCAAIAEgAq0QKiAAIAMQSUEgIQIgAyEBCyAAQgA3AyAgAEHAjwIpAwA3AwAgAEHIjwIpAwA3AwggAEHQjwIpAwA3AxAgAEHYjwIpAwA3AxggA0K27Nix48aNmzY3A1ggA0K27Nix48aNmzY3A1AgA0K27Nix48aNmzY3A0ggA0FAayIKQrbs2LHjxo2bNjcDACADQrbs2LHjxo2bNjcDOCADQrbs2LHjxo2bNjcDMCADQrbs2LHjxo2bNjcDKCADQrbs2LHjxo2bNjcDIAJAIAJFDQAgAkEETwRAIAJB/ABxIQYDQCADQSBqIgcgBGoiBSAFLQAAIAEgBGotAABzOgAAIAcgBEEBciIFaiILIAstAAAgASAFai0AAHM6AAAgByAEQQJyIgVqIgsgCy0AACABIAVqLQAAczoAACAHIARBA3IiBWoiByAHLQAAIAEgBWotAABzOgAAIARBBGohBCAIQQRqIgggBkcNAAsLIAJBA3EiCEUNAANAIANBIGogBGoiByAHLQAAIAEgBGotAABzOgAAIARBAWohBCAJQQFqIgkgCEcNAAsLIAAgA0EgakLAABAqIABB6ABqIgciAEIANwMgIABBwI8CKQMANwMAIABByI8CKQMANwMIIABB0I8CKQMANwMQIABB2I8CKQMANwMYIANC3Ljx4sWLl67cADcDWCADQty48eLFi5eu3AA3A1AgA0LcuPHixYuXrtwANwNIIApC3Ljx4sWLl67cADcDACADQty48eLFi5eu3AA3AzggA0LcuPHixYuXrtwANwMwIANC3Ljx4sWLl67cADcDKCADQty48eLFi5eu3AA3AyACQCACRQ0AQQAhCUEAIQQgAkEETwRAIAJB/ABxIQpBACEIA0AgA0EgaiIAIARqIgYgBi0AACABIARqLQAAczoAACAAIARBAXIiBmoiBSAFLQAAIAEgBmotAABzOgAAIAAgBEECciIGaiIFIAUtAAAgASAGai0AAHM6AAAgACAEQQNyIgZqIgAgAC0AACABIAZqLQAAczoAACAEQQRqIQQgCEEEaiIIIApHDQALCyACQQNxIgBFDQADQCADQSBqIARqIgIgAi0AACABIARqLQAAczoAACAEQQFqIQQgCUEBaiIJIABHDQALCyAHIANBIGoiAELAABAqIABBwAAQCCADQSAQCCADQeAAaiQAQQAL7hsBGX8gAiABKAAAIgRBGHQgBEGA/gNxQQh0ciAEQQh2QYD+A3EgBEEYdnJyNgIA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QhOIhDwAGiAAIAFCFYciAyAEQv///wCDfCICQhGIPAAfIAAgAkIJiDwAHiAAIAJCB4YgAUKAgP8Ag0IOiIQ8ABwgACADpyAEp2pBAXatPAAdC/gBAQp/A0AgBCAAIANqLQAAIgEgA0GAE2oiAi0AAHNyIQQgCiABIAItAMABc3IhCiAJIAEgAi0AoAFzciEJIAggASACLQCAAXNyIQggByABIAItAGBzciEHIAYgASACQUBrLQAAc3IhBiAFIAEgAi0AIHNyIQUgA0EBaiIDQR9HDQALIAogAC0AH0H/AHEiAEH/AHMiAXJB/wFxQQFrIAEgCXJB/wFxQQFrIAEgCHJB/wFxQQFrIAcgAEH6AHNyQf8BcUEBayAGIABBBXNyQf8BcUEBayAAIAVyQf8BcUEBayAAIARyQf8BcUEBa3JycnJyckEIdkEBcQvgCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAIQBiAAQShqIgMgAyACQShqEAYgAEH4AGogAkHQAGogAUH4AGoQBiABKAJUIRQgASgCWCEVIAEoAlwhFiABKAJgIRcgASgCZCEYIAEoAmgh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wAEgBEHAAWoiCSABIAIQChogAygAECEGIANBQGsiASgAACEHIAMoAFAhBSADKAAgIQggAygAMCEKIAMoABQhCyADKABEIQwgAygAVCENIAMoACQhDiADKAA0IQ8gAygAGCEQIAMoAEghESADKABYIRIgAygAKCETIAMoADghFCAEKALAASEVIAQoAsQBIRYgBCgCyAEhFyAEIAMoACwgAygAPHEgAygAHCADKABMIAMoAFwgBCgCzAFzc3NzNgLMASAEIBMgFHEgECARIBIgF3Nzc3M2AsgBIAQgDiAPcSALIAwgDSAWc3NzczYCxAEgBCAIIApxIAYgByAFIBVzc3NzNgLAASACIAlqQQBBECACaxAJGiAAIAkgAhAKGiAEKALAASEAIAQoAsQBIQIgBCgCyAEhBiAEKALMASEHIAQgAykCWDcD6AEgBCADKQJQNwPgASAEIAMpAkg3A7gBIAQgASkCADcDsAEgBCADKQJYNwOoASAEIAMpAlA3A6ABIARB0AFqIgUgBEGwAWogBEGgAWoQByADIAQpAtgBNwJYIAMgBCkC0AE3AlAgBCADKQI4NwOYASAEIAMpAjA3A5ABIAQgAykCSDcDiAEgBCABKQIANwOAASAFIARBkAFqIARBgAFqEAcgAyAEKQLYATcCSCABIAQpAtABNwIAIAQgAykCKDcDeCAEIAMpAiA3A3AgBCADKQI4NwNoIAQgAykCMDcDYCAFIARB8ABqIARB4ABqEAcgAyAEKQLYATcCOCADIAQpAtABNwIwIAQgAykCGDcDWCAEIAMpAhA3A1AgBCADKQIoNwNIIAQgAykCIDcDQCAFIARB0ABqIARBQGsQByADIAQpAtgBNwIoIAMgBCkC0AE3AiAgBCADKQIINwM4IAQgAykCADcDMCAEIAMpAhg3AyggBCADKQIQNwMgIAUgBEEwaiAEQSBqEAcgAyAEKQLYATcCGCADIAQpAtABNwIQIAQgBCkD6AE3AxggBCAEKQPgATcDECAEIAMpAgg3AwggBCADKQIANwMAIAUgBEEQaiAEEAcgBCgC0AEhASAEKALUASEFIAQoAtgBIQggAyAHIAQoAtwBczYCDCADIAYgCHM2AgggAyACIAVzNgIEIAMgACABczYCACAEQfABaiQAC6sGARR/IwBB4AFrIgMkACACKAAQIQQgAkFAayIFKAAAIQYgAigAUCEJIAIoACAhCiACKAAwIQsgAigAFCEHIAIoAEQhDCACKABUIQ0gASgABCEOIAIoACQhDyACKAA0IRAgAigAGCEIIAIoAEghESACKABYIRIgASgACCETIAIoACghFCACKAA4IRUgASgAACEWIAAgAigALCACKAA8cSACKAAcIAIoAEwgAigAXCABKAAMc3NzcyIBNgAMIAAgFCAVcSAIIBEgEiATc3NzcyIINgAIIAAgDyAQcSAHIAwgDSAOc3NzcyIHNgAEIAAgCiALcSAEIAYgCSAWc3NzcyIANgAAIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAkg3A7gBIAMgBSkCADcDsAEgAyACKQJYNwOoASADIAIpAlA3A6ABIANBwAFqIgQgA0GwAWogA0GgAWoQByACIAMpAsgBNwJYIAIgAykCwAE3AlAgAyACKQI4NwOYASADIAIpAjA3A5ABIAMgAikCSDcDiAEgAyAFKQIANwOAASAEIANBkAFqIANBgAFqEAcgAiADKQLIATcCSCAFIAMpAsABNwIAIAMgAikCKDcDeCADIAIpAiA3A3AgAyACKQI4NwNoIAMgAikCMDcDYCAEIANB8ABqIANB4ABqEAcgAiADKQLIATcCOCACIAMpAsABNwIwIAMgAikCGDcDWCADIAIpAhA3A1AgAyACKQIoNwNIIAMgAikCIDcDQCAEIANB0ABqIANBQGsQByACIAMpAsgBNwIoIAIgAykCwAE3AiAgAyACKQIINwM4IAMgAikCADcDMCADIAIpAhg3AyggAyACKQIQNwMgIAQgA0EwaiADQSBqEAcgAiADKQLIATcCGCACIAMpAsABNwIQIAMgAykD2AE3AxggAyADKQPQATcDECADIAIpAgg3AwggAyACKQIANwMAIAQgA0EQaiADEAcgAygCwAEhBSADKALEASEEIAMoAsgBIQYgAiADKALMASABczYCDCACIAYgCHM2AgggAiAEIAdzNgIEIAIgACAFczYCACADQeABaiQAC4sJARF/IwBB4AFrIgUkACAEKAA8IANBHXZzIQ4gBCgAOCADQQN0cyEPIAQoADQgAkEddnMhECAEQTBqIgMoAAAgAkEDdHMhESAEQRBqIQIgBEEgaiEGIARBQGshByAEQdAAaiEIA0AgBSAIKQIINwPYASAFIAgpAgA3A9ABIAUgBykCCDcDuAEgBSAHKQIANwOwASAFIAgpAgg3A6gBIAUgCCkCADcDoAEgBUHAAWoiCSAFQbABaiAFQaABahAHIAggBSkCyAE3AgggCCAFKQLAATcCACAFIAMpAgg3A5gBIAUgAykCADcDkAEgBSAHKQIINwOIASAFIAcpAgA3A4ABIAkgBUGQAWogBUGAAWoQByAHIAUpAsgBNwIIIAcgBSkCwAE3AgAgBSAGKQIINwN4IAUgBikCADcDcCAFIAMpAgg3A2ggBSADKQIANwNgIAkgBUHwAGogBUHgAGoQByADIAUpAsgBNwIIIAMgBSkCwAE3AgAgBSACKQIINwNYIAUgAikCADcDUCAFIAYpAgg3A0ggBSAGKQIANwNAIAkgBUHQAGogBUFAaxAHIAYgBSkCyAE3AgggBiAFKQLAATcCACAFIAQpAgg3AzggBSAEKQIANwMwIAUgAikCCDcDKCAFIAIpAgA3AyAgCSAFQTBqIAVBIGoQByACIAUpAsgBNwIIIAIgBSkCwAE3AgAgBSAFKQPYATcDGCAFIAUpA9ABNwMQIAUgBCkCCDcDCCAFIAQpAgA3AwAgCSAFQRBqIAUQByAFKALAASELIAUoAsQBIQwgBSgCyAEhCSAEIA4gBSgCzAFzIg02AgwgBCAJIA9zIgk2AgggBCAMIBBzIgw2AgQgBCALIBFzIgs2AgAgCkEBaiIKQQdHDQALAkACQAJAAkAgAUEQaw4RAAICAgICAgICAgICAgICAgECCyAEKAAQIQEgBCgAMCECIAQoACAhAyAEKABQIQYgBEFAaygAACEHIAQoABQhCCAEKAA0IQogBCgAJCEOIAQoAFQhDyAEKABEIRAgBCgAGCERIAQoADghEiAEKAAoIRMgBCgAWCEUIAQoAEghFSAAIAQoABwgBCgAPCAEKAAsIAQoAFwgBCgATHNzc3MgDXM2AAwgACARIBIgEyAUIBVzc3NzIAlzNgAIIAAgCCAKIA4gDyAQc3NzcyAMczYABCAAIAEgAiADIAYgB3Nzc3MgC3M2AAAMAgsgBCgAICEBIAQoABAhAiAEKAAkIQMgBCgAFCEGIAQoACghByAEKAAYIQggACAEKAAsIAQoABxzIA1zNgAMIAAgByAIcyAJczYACCAAIAMgBnMgDHM2AAQgACABIAJzIAtzNgAAIAQoADAhASAEKABQIQIgBEFAaygAACEDIAQoADQhBiAEKABUIQcgBCgARCEIIAQoADghCiAEKABYIQ0gBCgASCEJIAAgBCgAPCAEKABcIAQoAExzczYAHCAAIAogCSANc3M2ABggACAGIAcgCHNzNgAUIAAgASACIANzczYAEAwBCyAAQQAgARAJGgsgBUHgAWokAAulBgEUfyMAQeABayIDJAAgAigAECEFIAJBQGsiBCgAACEJIAIoAFAhCiACKAAgIQsgAigAMCEMIAEoAAQhBiACKAAUIQ0gAigARCEOIAIoAFQhDyACKAAkIRAgAigANCERIAEoAAghByACKAAYIRIgAigASCETIAIoAFghFCACKAAoIRUgAigAOCEWIAEoAAAhCCAAIAEoAAwiASACKAAsIAIoADxxIAIoABwgAigAXCACKABMc3NzczYADCAAIAcgFSAWcSASIBMgFHNzc3M2AAggACAGIBAgEXEgDSAOIA9zc3NzNgAEIAAgCCALIAxxIAUgCSAKc3NzczYAACADIAIpAlg3A9gBIAMgAikCUDcD0AEgAyACKQJINwO4ASADIAQpAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASADQcABaiIAIANBsAFqIANBoAFqEAcgAiADKQLIATcCWCACIAMpAsABNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgBCkCADcDgAEgACADQZABaiADQYABahAHIAIgAykCyAE3AkggBCADKQLAATcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgACADQfAAaiADQeAAahAHIAIgAykCyAE3AjggAiADKQLAATcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgACADQdAAaiADQUBrEAcgAiADKQLIATcCKCACIAMpAsABNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAAIANBMGogA0EgahAHIAIgAykCyAE3AhggAiADKQLAATcCECADIAMpA9gBNwMYIAMgAykD0AE3AxAgAyACKQIINwMIIAMgAikCADcDACAAIANBEGogAxAHIAMoAsABIQAgAygCxAEhBCADKALIASEFIAIgASADKALMAXM2AgwgAiAFIAdzNgIIIAIgBCAGczYCBCACIAAgCHM2AgAgA0HgAWokAAulCQENfyMAQaADayICJAAgACgAECEGIAAoABQhByAAKAAYIQggACgAHCEJIAAoAAQhBCAAKAAIIQUgACgADCEKIAAoAAAhCyACIAEpAlg3A5gDIAIgASkCUDcDkAMgAiABKQJINwP4AiACIAFBQGsiACkCADcD8AIgAiABKQJYNwPoAiACIAEpAlA3A+ACIAJBgANqIgMgAkHwAmogAkHgAmoQByABIAIpAogDNwJYIAEgAikCgAM3AlAgAiABKQI4NwPYAiACIAEpAjA3A9ACIAIgASkCSDcDyAIgAiAAKQIANwPAAiADIAJB0AJqIAJBwAJqEAcgASACKQKIAzcCSCAAIAIpAoADNwIAIAIgASkCKDcDuAIgAiABKQIgNwOwAiACIAEpAjg3A6gCIAIgASkCMDcDoAIgAyACQbACaiACQaACahAHIAEgAikCiAM3AjggASACKQKAAzcCMCACIAEpAhg3A5gCIAIgASkCEDcDkAIgAiABKQIoNwOIAiACIAEpAiA3A4ACIAMgAkGQAmogAkGAAmoQByABIAIpAogDNwIoIAEgAikCgAM3AiAgAiABKQIINwP4ASACIAEpAgA3A/ABIAIgASkCGDcD6AEgAiABKQIQNwPgASADIAJB8AFqIAJB4AFqEAcgASACKQKIAzcCGCABIAIpAoADNwIQIAIgAikDmAM3A9gBIAIgAikDkAM3A9ABIAIgASkCCDcDyAEgAiABKQIANwPAASADIAJB0AFqIAJBwAFqEAcgAigCgAMhDCACKAKEAyENIAIoAogDIQ4gASAKIAIoAowDczYCDCABIAUgDnM2AgggASAEIA1zNgIEIAEgCyAMczYCACACIAEpAlg3A5gDIAIgASkCUDcDkAMgAiABKQJINwO4ASACIAApAgA3A7ABIAIgASkCWDcDqAEgAiABKQJQNwOgASADIAJBsAFqIAJBoAFqEAcgASACKQKIAzcCWCABIAIpAoADNwJQIAIgASkCODcDmAEgAiABKQIwNwOQASACIAEpAkg3A4gBIAIgACkCADcDgAEgAyACQZABaiACQYABahAHIAEgAikCiAM3AkggACACKQKAAzcCACACIAEpAig3A3ggAiABKQIgNwNwIAIgASkCODcDaCACIAEpAjA3A2AgAyACQfAAaiACQeAAahAHIAEgAikCiAM3AjggASACKQKAAzcCMCACIAEpAhg3A1ggAiABKQIQNwNQIAIgASkCKDcDSCACIAEpAiA3A0AgAyACQdAAaiACQUBrEAcgASACKQKIAzcCKCABIAIpAoADNwIgIAIgASkCCDcDOCACIAEpAgA3AzAgAiABKQIYNwMoIAIgASkCEDcDICADIAJBMGogAkEgahAHIAEgAikCiAM3AhggASACKQKAAzcCECACIAIpA5gDNwMYIAIgAikDkAM3AxAgAiABKQIINwMIIAIgASkCADcDACADIAJBEGogAhAHIAIoAoADIQAgAigChAMhBCACKAKIAyEFIAEgCSACKAKMA3M2AgwgASAFIAhzNgIIIAEgBCAHczYCBCABIAAgBnM2AgAgAkGgA2okAAvzFAEZfyMAQaAGayIDJAAgASgABCELIAEoAAghDCABKAAMIQ0gASgAECEOIAEoABQhBCABKAAYIQ8gASgAHCEQIAAoAAQhESAAKAAIIRIgACgADCETIAAoABAhFCAAKAAUIRUgACgAGCEWIAAoABwhFyABKAAAIQUgAkFAayIBIAAoAAAiGEGAgoQQczYCACACQpXE3MmFsvq84gA3AjggAkEwaiIAQoCChJCwoIGEDTcCACACQqCixJG0rq2UXTcCKCACQSBqIgZC2/vgqNXN8JdxNwIAIAIgBSAYcyIZNgIAIAIgF0Hz6qLpfXM2AlwgAiAWQaCixJEEczYCWCACIBVB7YS/iX9zNgJUIAJB0ABqIgUgFEHb++CoBXM2AgAgAiATQZDT55MGczYCTCACIBJBlcTcyQVzNgJIIAIgEUGDiqDoAHM2AkQgAiAQIBdzIhA2AhwgAiAPIBZzIg82AhggAiAEIBVzIho2AhQgAkEQaiIEIA4gFHMiDjYCACACIA0gE3MiDTYCDCACIAwgEnMiDDYCCCACIAsgEXMiGzYCBEEAIQsDQCADIAUpAgg3A5gGIAMgBSkCADcDkAYgAyABKQIINwP4BSADIAEpAgA3A/AFIAMgBSkCCDcD6AUgAyAFKQIANwPgBSADQYAGaiIHIANB8AVqIANB4AVqEAcgBSADKQKIBjcCCCAFIAMpAoAGNwIAIAMgACkCCDcD2AUgAyAAKQIANwPQBSADIAEpAgg3A8gFIAMgASkCADcDwAUgByADQdAFaiADQcAFahAHIAEgAykCiAY3AgggASADKQKABjcCACADIAYpAgg3A7gFIAMgBikCADcDsAUgAyAAKQIINwOoBSADIAApAgA3A6AFIAcgA0GwBWogA0GgBWoQByAAIAMpAogGNwIIIAAgAykCgAY3AgAgAyAEKQIINwOYBSADIAQpAgA3A5AFIAMgBikCCDcDiAUgAyAGKQIANwOABSAHIANBkAVqIANBgAVqEAcgBiADKQKIBjcCCCAGIAMpAoAGNwIAIAMgAikCCDcD+AQgAyACKQIANwPwBCADIAQpAgg3A+gEIAMgBCkCADcD4AQgByADQfAEaiADQeAEahAHIAQgAykCiAY3AgggBCADKQKABjcCACADIAMpA5gGNwPYBCADIAMpA5AGNwPQBCADIAIpAgg3A8gEIAMgAikCADcDwAQgByADQdAEaiADQcAEahAHIAMoAoAGIQggAygChAYhCSADKAKIBiEKIAIgAygCjAYgE3M2AgwgAiAKIBJzNgIIIAIgCSARczYCBCACIAggGHM2AgAgAyAFKQIINwOYBiADIAUpAgA3A5AGIAMgASkCCDcDuAQgAyABKQIANwOwBCADIAUpAgg3A6gEIAMgBSkCADcDoAQgByADQbAEaiADQaAEahAHIAUgAykCiAY3AgggBSADKQKABjcCACADIAApAgg3A5gEIAMgACkCADcDkAQgAyABKQIINwOIBCADIAEpAgA3A4AEIAcgA0GQBGogA0GABGoQByABIAMpAogGNwIIIAEgAykCgAY3AgAgAyAGKQIINwP4AyADIAYpAgA3A/ADIAMgACkCCDcD6AMgAyAAKQIANwPgAyAHIANB8ANqIANB4ANqEAcgACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcD2AMgAyAEKQIANwPQAyADIAYpAgg3A8gDIAMgBikCADcDwAMgByADQdADaiADQcADahAHIAYgAykCiAY3AgggBiADKQKABjcCACADIAIpAgg3A7gDIAMgAikCADcDsAMgAyAEKQIINwOoAyADIAQpAgA3A6ADIAcgA0GwA2ogA0GgA2oQByAEIAMpAogGNwIIIAQgAykCgAY3AgAgAyADKQOYBjcDmAMgAyADKQOQBjcDkAMgAyACKQIINwOIAyADIAIpAgA3A4ADIAcgA0GQA2ogA0GAA2oQByADKAKABiEIIAMoAoQGIQkgAygCiAYhCiACIAMoAowGIBdzNgIMIAIgCiAWczYCCCACIAkgFXM2AgQgAiAIIBRzNgIAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A/gCIAMgASkCADcD8AIgAyAFKQIINwPoAiADIAUpAgA3A+ACIAcgA0HwAmogA0HgAmoQByAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwPYAiADIAApAgA3A9ACIAMgASkCCDcDyAIgAyABKQIANwPAAiAHIANB0AJqIANBwAJqEAcgASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDuAIgAyAGKQIANwOwAiADIAApAgg3A6gCIAMgACkCADcDoAIgByADQbACaiADQaACahAHIAAgAykCiAY3AgggACADKQKABjcCACADIAQpAgg3A5gCIAMgBCkCADcDkAIgAyAGKQIINwOIAiADIAYpAgA3A4ACIAcgA0GQAmogA0GAAmoQByAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwP4ASADIAIpAgA3A/ABIAMgBCkCCDcD6AEgAyAEKQIANwPgASAHIANB8AFqIANB4AFqEAcgBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3A9gBIAMgAykDkAY3A9ABIAMgAikCCDcDyAEgAyACKQIANwPAASAHIANB0AFqIANBwAFqEAcgAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiANczYCDCACIAogDHM2AgggAiAJIBtzNgIEIAIgCCAZczYCACADIAUpAgg3A5gGIAMgBSkCADcDkAYgAyABKQIINwO4ASADIAEpAgA3A7ABIAMgBSkCCDcDqAEgAyAFKQIANwOgASAHIANBsAFqIANBoAFqEAcgBSADKQKIBjcCCCAFIAMpAoAGNwIAIAMgACkCCDcDmAEgAyAAKQIANwOQASADIAEpAgg3A4gBIAMgASkCADcDgAEgByADQZABaiADQYABahAHIAEgAykCiAY3AgggASADKQKABjcCACADIAYpAgg3A3ggAyAGKQIANwNwIAMgACkCCDcDaCADIAApAgA3A2AgByADQfAAaiADQeAAahAHIAAgAykCiAY3AgggACADKQKABjcCACADIAQpAgg3A1ggAyAEKQIANwNQIAMgBikCCDcDSCADIAYpAgA3A0AgByADQdAAaiADQUBrEAcgBiADKQKIBjcCCCAGIAMpAoAGNwIAIAMgAikCCDcDOCADIAIpAgA3AzAgAyAEKQIINwMoIAMgBCkCADcDICAHIANBMGogA0EgahAHIAQgAykCiAY3AgggBCADKQKABjcCACADIAMpA5gGNwMYIAMgAykDkAY3AxAgAyACKQIINwMIIAMgAikCADcDACAHIANBEGogAxAHIAMoAoAGIQggAygChAYhCSADKAKIBiEKIAIgAygCjAYgEHM2AgwgAiAKIA9zNgIIIAIgCSAaczYCBCACIAggDnM2AgAgC0EBaiILQQRHDQALIANBoAZqJAALCAAgAEEQEBgLBABBXwuYCgEefyMAQcACayIEJAAgBEIANwOYAiAEQgA3A5ACIARCADcDiAIgBEIANwOAAiAEQYACaiIFIAEgAhAKGiADKAAQIQsgAygAMCEMIAMoABQhDSADKAA0IQ4gAygAGCEPIAMoADghECADKAAcIREgAygAPCESIAMoACQhASADKABUIRMgAygAdCEUIAMoAGQhBiADKAAsIQcgAygAXCEVIAMoAHwhFiADKABsIQggAygAICEJIAMoAFAhFyADKABwIRggAygAYCEKIAQoApACIRkgBCgCgAIhGiAEKAKEAiEbIAQoAogCIRwgBCgCjAIhHSAEKAKUAiEeIAQoApwCIR8gBCADKAAoIiAgAygAaCIhIAMoAHhxIAMoAFggBCgCmAJzc3M2ApgCIAQgCSAKIBhxIBcgGXNzczYCkAIgBCAHIAggFnEgFSAfc3NzNgKcAiAEIAEgBiAUcSATIB5zc3M2ApQCIAQgCCAHIBJxIBEgHXNzczYCjAIgBCAhIBAgIHEgDyAcc3NzNgKIAiAEIAYgASAOcSANIBtzc3M2AoQCIAQgCiAJIAxxIAsgGnNzczYCgAIgAiAFakEAQSAgAmsQCRogACAFIAIQChogBCgCmAIhASAEKAKQAiECIAQoApwCIQYgBCgClAIhByAEKAKAAiEIIAQoAoQCIQkgBCgCiAIhCiAEKAKMAiELIAQgAykCeDcDuAIgBCADKQJwNwOwAiAEIAMpAmg3A/gBIAQgAykCYDcD8AEgBCADKQJ4NwPoASAEIAMpAnA3A+ABIARBoAJqIgUgBEHwAWogBEHgAWoQByADIAQpAqgCNwJ4IAMgBCkCoAI3AnAgBCADKQJYNwPYASAEIAMpAlA3A9ABIAQgAykCaDcDyAEgBCADKQJgNwPAASAFIARB0AFqIARBwAFqEAcgAyAEKQKoAjcCaCADIAQpAqACNwJgIAQgAykCSDcDuAEgBCADQUBrIgApAgA3A7ABIAQgAykCWDcDqAEgBCADKQJQNwOgASAFIARBsAFqIARBoAFqEAcgAyAEKQKoAjcCWCADIAQpAqACNwJQIAQgAykCODcDmAEgBCADKQIwNwOQASAEIAMpAkg3A4gBIAQgACkCADcDgAEgBSAEQZABaiAEQYABahAHIAMgBCkCqAI3AkggACAEKQKgAjcCACAEIAMpAig3A3ggBCADKQIgNwNwIAQgAykCODcDaCAEIAMpAjA3A2AgBSAEQfAAaiAEQeAAahAHIAMgBCkCqAI3AjggAyAEKQKgAjcCMCAEIAMpAhg3A1ggBCADKQIQNwNQIAQgAykCKDcDSCAEIAMpAiA3A0AgBSAEQdAAaiAEQUBrEAcgAyAEKQKoAjcCKCADIAQpAqACNwIgIAQgAykCCDcDOCAEIAMpAgA3AzAgBCADKQIYNwMoIAQgAykCEDcDICAFIARBMGogBEEgahAHIAMgBCkCqAI3AhggAyAEKQKgAjcCECAEIAQpA7gCNwMYIAQgBCkDsAI3AxAgBCADKQIINwMIIAQgAykCADcDACAFIARBEGogBBAHIAMgBCkCqAI3AgggAyAEKQKgAjcCACADIAsgAygADHM2AgwgAyAKIAMoAAhzNgIIIAMgCSADKAAEczYCBCADIAggAygAAHM2AgAgACACIAAoAABzNgIAIAMgByADKABEczYCRCADIAEgAygASHM2AkggAyAGIAMoAExzNgJMIARBwAJqJAALkQkBHn8jAEGgAmsiAyQAIAIoABAhDiACKAAwIQ8gAigAFCEQIAEoAAQhESACKAA0IRIgAigAGCETIAEoAAghFCACKAA4IRUgAigAHCEIIAEoAAwhFiACKAA8IRcgAigAICEFIAIoAFAhCSABKAAQIRggAigAcCEZIAIoAGAhBCACKAAkIQYgAigAVCEKIAEoABQhGiACKAB0IRsgAigAZCEMIAIoACghByACKABYIQsgASgAGCEcIAIoAHghHSACKABoIQ0gASgAACEeIAAgAigALCIfIAIoAGwiICACKAB8cSACKABcIAEoABxzc3MiATYAHCAAIAcgDSAdcSALIBxzc3MiCzYAGCAAIAYgDCAbcSAKIBpzc3MiCjYAFCAAIAUgBCAZcSAJIBhzc3MiCTYAECAAICAgFyAfcSAIIBZzc3MiCDYADCAAIA0gByAVcSATIBRzc3MiBzYACCAAIAwgBiAScSAQIBFzc3MiBjYABCAAIAQgBSAPcSAOIB5zc3MiBTYAACADIAIpAng3A5gCIAMgAikCcDcDkAIgAyACKQJoNwP4ASADIAIpAmA3A/ABIAMgAikCeDcD6AEgAyACKQJwNwPgASADQYACaiIEIANB8AFqIANB4AFqEAcgAiADKQKIAjcCeCACIAMpAoACNwJwIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAmg3A8gBIAMgAikCYDcDwAEgBCADQdABaiADQcABahAHIAIgAykCiAI3AmggAiADKQKAAjcCYCADIAIpAkg3A7gBIAMgAkFAayIAKQIANwOwASADIAIpAlg3A6gBIAMgAikCUDcDoAEgBCADQbABaiADQaABahAHIAIgAykCiAI3AlggAiADKQKAAjcCUCADIAIpAjg3A5gBIAMgAikCMDcDkAEgAyACKQJINwOIASADIAApAgA3A4ABIAQgA0GQAWogA0GAAWoQByACIAMpAogCNwJIIAAgAykCgAI3AgAgAyACKQIoNwN4IAMgAikCIDcDcCADIAIpAjg3A2ggAyACKQIwNwNgIAQgA0HwAGogA0HgAGoQByACIAMpAogCNwI4IAIgAykCgAI3AjAgAyACKQIYNwNYIAMgAikCEDcDUCADIAIpAig3A0ggAyACKQIgNwNAIAQgA0HQAGogA0FAaxAHIAIgAykCiAI3AiggAiADKQKAAjcCICADIAIpAgg3AzggAyACKQIANwMwIAMgAikCGDcDKCADIAIpAhA3AyAgBCADQTBqIANBIGoQByACIAMpAogCNwIYIAIgAykCgAI3AhAgAyADKQOYAjcDGCADIAMpA5ACNwMQIAMgAikCCDcDCCADIAIpAgA3AwAgBCADQRBqIAMQByACIAMpAogCNwIIIAIgAykCgAI3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AGghDyABKAAAIRAgACACKAAsIh8gASgAHCIBIAIoAFwgAigAbCIgIAIoAHxxc3NzNgAcIAAgDSAOIB0gDyAecXNzczYAGCAAIAogCyAbIAwgHHFzc3M2ABQgACAEIAggGSAJIBpxc3NzNgAQIAAgICAHIBcgGCAfcXNzczYADCAAIA8gBiAVIA0gFnFzc3M2AAggACAMIAUgEyAKIBRxc3NzNgAEIAAgCSAQIBEgBCAScXNzczYAACADIAIpAng3A5gCIAMgAikCcDcDkAIgAyACKQJoNwP4ASADIAIpAmA3A/ABIAMgAikCeDcD6AEgAyACKQJwNwPgASADQYACaiIEIANB8AFqIANB4AFqEAcgAiADKQKIAjcCeCACIAMpAoACNwJwIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAmg3A8gBIAMgAikCYDcDwAEgBCADQdABaiADQcABahAHIAIgAykCiAI3AmggAiADKQKAAjcCYCADIAIpAkg3A7gBIAMgAkFAayIAKQIANwOwASADIAIpAlg3A6gBIAMgAikCUDcDoAEgBCADQbABaiADQaABahAHIAIgAykCiAI3AlggAiADKQKAAjcCUCADIAIpAjg3A5gBIAMgAikCMDcDkAEgAyACKQJINwOIASADIAApAgA3A4ABIAQgA0GQAWogA0GAAWoQByACIAMpAogCNwJIIAAgAykCgAI3AgAgAyACKQIoNwN4IAMgAikCIDcDcCADIAIpAjg3A2ggAyACKQIwNwNgIAQgA0HwAGogA0HgAGoQByACIAMpAogCNwI4IAIgAykCgAI3AjAgAyACKQIYNwNYIAMgAikCEDcDUCADIAIpAig3A0ggAyACKQIgNwNAIAQgA0HQAGogA0FAaxAHIAIgAykCiAI3AiggAiADKQKAAjcCICADIAIpAgg3AzggAyACKQIANwMwIAMgAikCGDcDKCADIAIpAhA3AyAgBCADQTBqIANBIGoQByACIAMpAogCNwIYIAIgAykCgAI3AhAgAyADKQOYAjcDGCADIAMpA5ACNwMQIAMgAikCCDcDCCADIAIpAgA3AwAgBCADQRBqIAMQByACIAMpAogCNwIIIAIgAykCgAI3AgAgAiAHIAIoAAxzNgIMIAIgBiACKAAIczYCCCACIAUgAigABHM2AgQgAiAQIAIoAABzNgIAIAAgCCAAKAAAczYCACACIAsgAigARHM2AkQgAiAOIAIoAEhzNgJIIAIgASACKABMczYCTCADQaACaiQAC5kNARJ/IwBBoARrIgIkACAAKAA8IQQgACgAOCEFIAAoADQhBiAAKAAwIQcgACgAICEIIAAoACQhCSAAKAAoIQogACgALCELIAAoABwhDCAAKAAYIQ0gACgAFCEOIAAoABAhDyAAKAAEIRAgACgACCERIAAoAAwhEiAAKAAAIRMgAiABKQJ4NwOYBCACIAEpAnA3A5AEIAIgASkCaDcD+AMgAiABKQJgNwPwAyACIAEpAng3A+gDIAIgASkCcDcD4AMgAkGABGoiAyACQfADaiACQeADahAHIAEgAikCiAQ3AnggASACKQKABDcCcCACIAEpAlg3A9gDIAIgASkCUDcD0AMgAiABKQJoNwPIAyACIAEpAmA3A8ADIAMgAkHQA2ogAkHAA2oQByABIAIpAogENwJoIAEgAikCgAQ3AmAgAiABKQJINwO4AyACIAFBQGsiACkCADcDsAMgAiABKQJYNwOoAyACIAEpAlA3A6ADIAMgAkGwA2ogAkGgA2oQByABIAIpAogENwJYIAEgAikCgAQ3AlAgAiABKQI4NwOYAyACIAEpAjA3A5ADIAIgASkCSDcDiAMgAiAAKQIANwOAAyADIAJBkANqIAJBgANqEAcgASACKQKIBDcCSCAAIAIpAoAENwIAIAIgASkCKDcD+AIgAiABKQIgNwPwAiACIAEpAjg3A+gCIAIgASkCMDcD4AIgAyACQfACaiACQeACahAHIAEgAikCiAQ3AjggASACKQKABDcCMCACIAEpAhg3A9gCIAIgASkCEDcD0AIgAiABKQIoNwPIAiACIAEpAiA3A8ACIAMgAkHQAmogAkHAAmoQByABIAIpAogENwIoIAEgAikCgAQ3AiAgAiABKQIINwO4AiACIAEpAgA3A7ACIAIgASkCGDcDqAIgAiABKQIQNwOgAiADIAJBsAJqIAJBoAJqEAcgASACKQKIBDcCGCABIAIpAoAENwIQIAIgAikDmAQ3A5gCIAIgAikDkAQ3A5ACIAIgASkCCDcDiAIgAiABKQIANwOAAiADIAJBkAJqIAJBgAJqEAcgASACKQKIBDcCCCABIAIpAoAENwIAIAEgEiABKAAMczYCDCABIBEgASgACHM2AgggASAQIAEoAARzNgIEIAEgEyABKAAAczYCACAAIA8gACgAAHM2AgAgASAOIAEoAERzNgJEIAEgDSABKABIczYCSCABIAwgASgATHM2AkwgAiABKQJ4NwOYBCACIAEpAnA3A5AEIAIgASkCaDcD+AEgAiABKQJgNwPwASACIAEpAng3A+gBIAIgASkCcDcD4AEgAyACQfABaiACQeABahAHIAEgAikCiAQ3AnggASACKQKABDcCcCACIAEpAlg3A9gBIAIgASkCUDcD0AEgAiABKQJoNwPIASACIAEpAmA3A8ABIAMgAkHQAWogAkHAAWoQByABIAIpAogENwJoIAEgAikCgAQ3AmAgAiABKQJINwO4ASACIAApAgA3A7ABIAIgASkCWDcDqAEgAiABKQJQNwOgASADIAJBsAFqIAJBoAFqEAcgASACKQKIBDcCWCABIAIpAoAENwJQIAIgASkCODcDmAEgAiABKQIwNwOQASACIAEpAkg3A4gBIAIgACkCADcDgAEgAyACQZABaiACQYABahAHIAEgAikCiAQ3AkggACACKQKABDcCACACIAEpAig3A3ggAiABKQIgNwNwIAIgASkCODcDaCACIAEpAjA3A2AgAyACQfAAaiACQeAAahAHIAEgAikCiAQ3AjggASACKQKABDcCMCACIAEpAhg3A1ggAiABKQIQNwNQIAIgASkCKDcDSCACIAEpAiA3A0AgAyACQdAAaiACQUBrEAcgASACKQKIBDcCKCABIAIpAoAENwIgIAIgASkCCDcDOCACIAEpAgA3AzAgAiABKQIYNwMoIAIgASkCEDcDICADIAJBMGogAkEgahAHIAEgAikCiAQ3AhggASACKQKABDcCECACIAIpA5gENwMYIAIgAikDkAQ3AxAgAiABKQIINwMIIAIgASkCADcDACADIAJBEGogAhAHIAEgAikCiAQ3AgggASACKQKABDcCACABIAsgASgADHM2AgwgASAKIAEoAAhzNgIIIAEgCSABKAAEczYCBCABIAggASgAAHM2AgAgACAHIAAoAABzNgIAIAEgBiABKABEczYCRCABIAUgASgASHM2AkggASAEIAEoAExzNgJMIAJBoARqJAALvQkBEX8jAEGgAmsiAyQAIAEoAAQhECABKAAIIREgASgADCESIAAoAAQhCyAAKAAIIQwgACgADCENIAEoAAAhEyACQfAAaiIBIAAoAAAiDkGAgoQQcyIANgIAIAJB4ABqIgYgDkHb++CoBXM2AgAgAkHQAGoiByAANgIAIAJBQGsiACAOIBNzIgU2AgAgAkKgosSRtK6tlF03AjggAkEwaiIIQtv74KjVzfCXcTcCACACQpXE3MmFsvq84gA3AiggAkEgaiIJQoCChJCwoIGEDTcCACACQqCixJG0rq2UXTcCGCACQRBqIgpC2/vgqNXN8JdxNwIAIAIgBTYCACACIA1BkNPnkwZzIgU2AnwgAiAMQZXE3MkFcyIENgJ4IAIgC0GDiqDoAHMiDzYCdCACIA1B8+qi6X1zNgJsIAIgDEGgosSRBHM2AmggAiALQe2Ev4l/czYCZCACIAU2AlwgAiAENgJYIAIgDzYCVCACIA0gEnMiBTYCTCACIAwgEXMiBDYCSCACIAsgEHMiDzYCRCACIAU2AgwgAiAENgIIIAIgDzYCBEEAIQUDQCADIAEpAgg3A5gCIAMgASkCADcDkAIgAyAGKQIINwP4ASADIAYpAgA3A/ABIAMgASkCCDcD6AEgAyABKQIANwPgASADQYACaiIEIANB8AFqIANB4AFqEAcgASADKQKIAjcCCCABIAMpAoACNwIAIAMgBykCCDcD2AEgAyAHKQIANwPQASADIAYpAgg3A8gBIAMgBikCADcDwAEgBCADQdABaiADQcABahAHIAYgAykCiAI3AgggBiADKQKAAjcCACADIAApAgg3A7gBIAMgACkCADcDsAEgAyAHKQIINwOoASADIAcpAgA3A6ABIAQgA0GwAWogA0GgAWoQByAHIAMpAogCNwIIIAcgAykCgAI3AgAgAyAIKQIINwOYASADIAgpAgA3A5ABIAMgACkCCDcDiAEgAyAAKQIANwOAASAEIANBkAFqIANBgAFqEAcgACADKQKIAjcCCCAAIAMpAoACNwIAIAMgCSkCCDcDeCADIAkpAgA3A3AgAyAIKQIINwNoIAMgCCkCADcDYCAEIANB8ABqIANB4ABqEAcgCCADKQKIAjcCCCAIIAMpAoACNwIAIAMgCikCCDcDWCADIAopAgA3A1AgAyAJKQIINwNIIAMgCSkCADcDQCAEIANB0ABqIANBQGsQByAJIAMpAogCNwIIIAkgAykCgAI3AgAgAyACKQIINwM4IAMgAikCADcDMCADIAopAgg3AyggAyAKKQIANwMgIAQgA0EwaiADQSBqEAcgCiADKQKIAjcCCCAKIAMpAoACNwIAIAMgAykDmAI3AxggAyADKQOQAjcDECADIAIpAgg3AwggAyACKQIANwMAIAQgA0EQaiADEAcgAiADKQKIAjcCCCACIAMpAoACNwIAIAIgAigADCASczYCDCACIAIoAAggEXM2AgggAiACKAAEIBBzNgIEIAIgAigAACATczYCACAAIAAoAAAgDnM2AgAgAiACKABEIAtzNgJEIAIgAigASCAMczYCSCACIAIoAEwgDXM2AkwgBUEBaiIFQQpHDQALIANBoAJqJAALzwQBCX8jAEGAAWsiAyQAIABBATYCACAAQgA3AgQgAEIANwIMIABCADcCFCAAQgA3AhwgAEKAgICAEDcCJCAAQSxqQQBBzAAQCRogACABQcAHbEGAFWoiASACIAJBH3UgAnFBAXRrIgRBAXNB/wFxQQFrQR92EBUgACABQfgAaiAEQQJzQf8BcUEBa0EfdhAVIAAgAUHwAWogBEEDc0H/AXFBAWtBH3YQFSAAIAFB6AJqIARBBHNB/wFxQQFrQR92EBUgACABQeADaiAEQQVzQf8BcUEBa0EfdhAVIAAgAUHYBGogBEEGc0H/AXFBAWtBH3YQFSAAIAFB0AVqIARBB3NB/wFxQQFrQR92EBUgACABQcgGaiAEQQhzQf8BcUEBa0EfdhAVIAMgACkCSDcDKCADIABBQGspAgA3AyAgAyAAKQI4NwMYIAMgACkCMDcDECADIAApAig3AwggAyAAKQIINwM4IANBQGsgACkCEDcDACADIAApAhg3A0ggAyAAKQIgNwNQIAMgACkCADcDMCAAKAJUIQEgACgCWCEEIAAoAlwhBSAAKAJgIQYgACgCZCEHIAAoAmghCCAAKAJsIQkgACgCcCEKIAAoAlAhCyADQQAgACgCdGs2AnwgA0EAIAprNgJ4IANBACAJazYCdCADQQAgCGs2AnAgA0EAIAdrNgJsIANBACAGazYCaCADQQAgBWs2AmQgA0EAIARrNgJgIANBACABazYCXCADQQAgC2s2AlggACADQQhqIAJBgAFxQQd2EBUgA0GAAWokAAvwCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgC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BSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSAFIAIgBRAGIAIgBRAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAiAFEAYgBCACEAVBASECA0AgBCAEEAUgAkEBaiICQeQARw0ACyAEQTBqIgIgBCACEAYgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgBEHgAGoiBSACIAUQBiAFIAUQBSAFIAUQBSAAIAUgABAGIARBkAFqJAAgACAAIAcQBiAAIAAgCBAGIANB4ABqIgIgABAFIAIgAiAGEAYgAyADKAKEASICIBRrNgJUIAMgAygCgAEiBCATazYCUCADIAMoAnwiBSASazYCTCADIAMoAngiBiARazYCSCADIAMoAnQiByAQazYCRCADIAMoAnAiCCAPazYCQCADIAMoAmwiFSAOazYCPCADIAMoAmgiFiANazYCOCAD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QUBrIQAgAUJAfCIBQj9WDQALIAFQDQELQQAhAiAEQSBqIARB4ABqIAQQLyABpyIGQQNxIQdBACEDIAFCBFoEQCAGQTxxIQhBACEGA0AgACADaiAEQSBqIgkgA2otAAA6AAAgACADQQFyIgVqIAUgCWotAAA6AAAgACADQQJyIgVqIARBIGogBWotAAA6AAAgACADQQNyIgVqIARBIGogBWotAAA6AAAgA0EEaiEDIAZBBGoiBiAIRw0ACwsgB0UNAANAIAAgA2ogBEEgaiADai0AADoAACADQQFqIQMgAkEBaiICIAdHDQALCyAEQSBqQcAAEAggBEEgEAgLIARB8ABqJABBAAuGBgEUfyMAQbACayICJAAgACABLQAAOgAAIAAgAS0AAToAASAAIAEtAAI6AAIgACABLQADOgADIAAgAS0ABDoABCAAIAEtAAU6AAUgACABLQAGOgAGIAAgAS0ABzoAByAAIAEtAAg6AAggACABLQAJOgAJIAAgAS0ACjoACiAAIAEtAAs6AAsgACABLQAMOgAMIAAgAS0ADToADSAAIAEtAA46AA4gACABLQAPOgAPIAAgAS0AEDoAECAAIAEtABE6ABEgACABLQASOgASIAAgAS0AEzoAEyAAIAEtABQ6ABQgACABLQAVOgAVIAAgAS0AFjoAFiAAIAEtABc6ABcgACABLQAYOgAYIAAgAS0AGToAGSAAIAEtABo6ABogACABLQAbOgAbIAAgAS0AHDoAHCAAIAEtAB06AB0gACABLQAeOgAeIAEtAB8hASAAIAAtAABB+AFxOgAAIAAgAUE/cUHAAHI6AB8gAkEwaiAAEDEgAigCgAEhASACKAJYIQMgAigChAEhBCACKAJcIQUgAigCiAEhBiACKAJgIQcgAigCjAEhCCACKAJkIQkgAigCkAEhCiACKAJoIQsgAigClAEhDCACKAJsIQ0gAigCmAEhDiACKAJwIQ8gAigCnAEhECACKAJ0IREgAigCoAEhEiACKAJ4IRMgAiACKAJ8IhQgAigCpAEiFWo2AqQCIAIgEiATajYCoAIgAiAQIBFqNgKcAiACIA4gD2o2ApgCIAIgDCANajYClAIgAiAKIAtqNgKQAiACIAggCWo2AowCIAIgBiAHajYCiAIgAiAEIAVqNgKEAiACIAEgA2o2AoACIAIgFSAUazYC9AEgAiASIBNrNgLwASACIBAgEWs2AuwBIAIgDiAPazYC6AEgAiAMIA1rNgLkASACIAogC2s2AuABIAIgCCAJazYC3AEgAiAGIAdrNgLYASACIAQgBWs2AtQBIAIgASADazYC0AEgAkHQAWoiASABEDMgAiACQYACaiABEAYgACACEBYgAkGwAmokAEEAC+scAj5/DH4jAEHwAmsiAyQAA0AgAiAGai0AACIEIAZBgIcCaiIJLQAAcyAHciEHIAQgCS0AwAFzIAVyIQUgBCAJLQCgAXMgDHIhDCAEIAktAIABcyAIciEIIAQgCS0AYHMgDXIhDSAEIAlBQGstAABzIAtyIQsgBCAJLQAgcyAKciEKIAZBAWoiBkEfRw0AC0F/IQkgAi0AH0H/AHEiBCAKckH/AXFBAWsgBCAHckH/AXFBAWtyIAQgC3JB/wFxQQFrciAEQdcAcyANckH/AXFBAWtyIARB/wBzIgQgCHJB/wFxQQFrciAEIAxyQf8BcUEBa3IgBCAFckH/AXFBAWtyQYACcUUEQCADIAEpABg3A+gCIAMgASkAEDcD4AIgAyABKQAAIkM3A9ACIAMgASkACDcD2AIgAyBDp0H4AXE6ANACIAMgAy0A7wJBP3FBwAByOgDvAiADQaACaiACEGAgA0IANwKEAiADQgA3AowCIANBADYClAIgA0IANwPQASADQgA3A9gBIANCADcD4AEgAyADKQOwAjcDoAEgAyADKQO4AjcDqAEgAyADKQPAAjcDsAEgA0IANwL0ASADQQE2AvABIANCADcC/AEgA0IANwPAASADQgA3A8gBIAMgAykDoAI3A5ABIAMgAykDqAI3A5gBIANCADcCdCADQgA3AnwgA0EANgKEASADQgA3AmQgA0EBNgJgIANCADcCbEH+ASECQQAhBANAIAMoApQCIQkgAygCtAEhBiADKAJgIQcgAygCwAEhCiADKAKQASELIAMoAvABIQ0gAygCZCEIIAMoAsQBIQwgAygClAEhBSADKAL0ASEQIAMoAmghDiADKALIASERIAMoApgBIRIgAygC+AEhEyADKAJsIQ8gAygCzAEhFCADKAKcASEVIAMoAvwBIRcgAygCcCEYIAMoAtABIRwgAygCoAEhHSADKAKAAiEeIAMoAnQhGSADKALUASEfIAMoAqQBISAgAygChAIhISADKAJ4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/w9WDQAgC0Lf////D1YNACAAIAIgDKcgBUEgIAYgC6cgCSAKQbybAigCABEIACEBCyABC4ABAQN+IAetIAitQiCGhCEMQX8hAgJAIAStIAWtQiCGhCILQiBUDQAgC0IgfSINQt////8PVg0AIAxC3////w9WDQAgACADIA2nIAMgC6dqQSBrQSAgBiAMpyAJIApBvJsCKAIAEQgAIQILIAEEQCABQgAgC0IgfSACGzcDAAsgAgtgAQJ+IAStIAWtQiCGhCEMIAetIAitQiCGhCENIAIEQCACQiA3AwALIA1C4P///w9UIAxC3////w9YcUUEQBALAAsgACABQSAgAyAMpyAGIA2nIAogC0G4mwIoAgARCAALdgECfgJ/IAatIAetQiCGhCELAkAgA60gBK1CIIaEIgxC3////w9WDQAgC0Lg////D1oNACAAIAAgDKciA2pBICACIAMgBSALpyAJIApBuJsCKAIAEQgAIQAgAQRAIAFCACAMQiB8IAAbNwMACyAADAELEAsACwtZAQJ+IAetIAitQiCGhCELQX8hAQJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC3////w9WDQAgACACIAynIAVBICAGIAunIAkgCkG0mwIoAgARCAAhAQsgAQuAAQEDfiAHrSAIrUIghoQhDEF/IQICQCAErSAFrUIghoQiC0IgVA0AIAtCIH0iDULf////D1YNACAMQt////8PVg0AIAAgAyANpyADIAunakEga0EgIAYgDKcgCSAKQbSbAigCABEIACECCyABBEAgAUIAIAtCIH0gAhs3AwALIAILYAECfiAErSAFrUIghoQhDCAHrSAIrUIghoQhDSACBEAgAkIgNwMACyANQuD///8PVCAMQt////8PWHFFBEAQCwALIAAgAUEgIAMgDKcgBiANpyAKIAtBsJsCKAIAEQgAC3YBAn4CfyAGrSAHrUIghoQhCwJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC4P///w9aDQAgACAAIAynIgNqQSAgAiADIAUgC6cgCSAKQbCbAigCABEIACEAIAEEQCABQgAgDEIgfCAAGzcDAAsgAAwBCxALAAsLBABBMAv9AQEFfyMAIgUhCSAFQYAEa0FAcSIFJAAgACABIAAbIgcEQEF/IQYgBUHgAGoiCCADIAQQMEUEQCABIAAg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ASABLQAAQfgBcToAACABIAEtAB9BP3FBwAByOgAfIAJBIGoiAyABEDEgACADEDIgASACKQMYNwAYIAEgAikDEDcAECABIAIpAwg3AAggASACKQMANwAAIAApAAghBCAAKQAQIQUgACkAACEGIAEgACkAGDcAOCABIAU3ADAgASAENwAoIAEgBjcAICACQSAQCCACQcABaiQAQQALtgECAX8DfiMAQaABayIDJAAgASACQiAQIBogASABLQAAQfgBcToAACABIAEtAB9BP3FBwAByOgAfIAMgARAxIAAgAxAyIAIpAAghBCACKQAQIQUgAikAACEGIAEgAikAGDcAGCABIAU3ABAgASAENwAIIAEgBjcAACAAKQAIIQQgACkAECEFIAApAAAhBiABIAApABg3ADggASAFNwAwIAEgBDcAKCABIAY3ACAgA0GgAWokAEEACwUAQb9/C20BAX8jAEFAaiICJAAgAiABQiAQIBogAiACLQAAQfgBcToAACACIAItAB9BP3FBwAByOgAfIAAgAikDEDcAECAAIAIpAwg3AAggACACKQMANwAAIAAgAikDGDcAGCACQcAAEAggAkFAayQAQQALrRQCEX8ofiMAQYACayIDJABBfyESAkAgARA/DQAgA0HgAGoiBCABEF8NACMAQYAQayICJAAgAkGABWoiASAEEA4gAiAEKQIgNwPgAiACIAQpAhg3A9gCIAIgBCkCEDcD0AIgAiAEKQIINwPIAiACIAQpAgA3A8ACIAIgBCkCMDcD8AIgAiAEKQI4NwP4AiACIARBQGspAgA3A4ADIAIgBCkCSDcDiAMgAiAEKQIoNwPoAiACIAQpAlg3A5gDIAIgBCkCYDcDoAMgAiAEKQJoNwOoAyACIAQpAnA3A7ADIAIgBCkCUDcDkAMgAkHgA2oiBSACQcACaiIJEBkgAkGgAWoiBCAFIAJB2ARqIgYQBiACQcgBaiACQYgEaiIHIAJBsARqIggQBiACQfABaiAIIAYQBiACQZgCaiAFIAcQBiAFIAQgARAPIAkgBSAGEAYgAkHoAmoiCiAHIAgQBiACQZADaiILIAggBhAGIAJBuANqIgwgBSAHEAYgAkGgBmoiASAJEA4gBSAEIAEQDyAJIAUgBhAGIAogByAIEAYgCyAIIAYQBiAMIAUgBxAGIAJBwAdqIgEgCRAOIAUg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5cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/AEGgEwsBAQBBwBMLsAEm6JWPwrInsEXD9Iny75jw1d+sBdPGMzmxOAKIbVP8BccXanA9TdhPujwLdg0QZw8qIFP6LDnMxk7H/XeSrAN67P///////////////////////////////////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/7dP1XBpjEljWnPei3vneFABB/xQL/PABEIU7jAG98ST/+CXDAWDcNwC3TD7/w0I9ADJMpAHhpEz/TD2j/3U+HwBRkUD/dkEOAKJz1v8Gii4AfOb0/wqKjwA0GsIAuPRMAIGPKQG+9BP/e6p6/2KBRAB51ZMAVmUe/6FnmwCMWUP/7+W+AUMLtQDG8In+7kW8/+pxPP8l/zn/RbK2/oDQswB2Gn3+AwfW//EyTf9Vy8X/04f6/xkwZP+71bT+EVhpAFPRngEFc2IABK48/qs3bv/ZtRH/FLyqAJKcZv5X1q7/cnqbAeksqgB/CO8B1uzqAK8F2wAxaj3/BkLQ/wJqbv9R6hP/12vA/0OX7gATKmz/5VVxATJEh/8RagkAMmcB/1ABqAEjmB7/EKi5AThZ6P9l0vwAKfpHAMyqT/8OLu//UE3vAL3WS/8RjfkAJlBM/75VdQBW5KoAnNjQAcPPpP+WQkz/r+EQ/41QYgFM2/IAxqJyAC7amACbK/H+m6Bo/7IJ/P5kbtQADgWnAOnvo/8cl50BZZIK//6eRv5H+eQAWB4yAEQ6oP+/GGgBgUKB/8AyVf8Is4r/JvrJAHNQoACD5nEAfViTAFpExwD9TJ4AHP92AHH6/gBCSy4A5torAOV4ugGURCsAiHzuAbtrxf9UNfb/M3T+/zO7pQACEa8AQlSgAfc6HgAjQTX+Rey/AC2G9QGje90AIG4U/zQXpQC61kcA6bBgAPLvNgE5WYoAUwBU/4igZABcjnj+aHy+ALWxPv/6KVUAmIIqAWD89gCXlz/+74U+ACA4nAAtp73/joWzAYNW0wC7s5b++qoO/0RxFf/eujv/QgfxAUUGSABWnGz+N6dZAG002/4NsBf/xCxq/++VR/+kjH3/n60BADMp5wCRPiEAim9dAblTRQCQcy4AYZcQ/xjkGgAx2eIAcUvq/sGZDP+2MGD/Dg0aAIDD+f5FwTsAhCVR/n1qPADW8KkBpONCANKjTgAlNJcAY00aAO6c1f/VwNEBSS5UABRBKQE2zk8AyYOS/qpvGP+xITL+qybL/073dADR3ZkAhYCyATosGQDJJzsBvRP8ADHl0gF1u3UAtbO4AQBy2wAwXpMA9Sk4AH0NzP70rXcALN0g/lTqFAD5oMYB7H7q/48+3QCBWdb/N4sF/kQUv/8OzLIBI8PZAC8zzgEm9qUAzhsG/p5XJADZNJL/fXvX/1U8H/+rDQcA2vVY/vwjPAA31qD/hWU4AOAgE/6TQOoAGpGiAXJ2fQD4/PoAZV7E/8aN4v4zKrYAhwwJ/m2s0v/F7MIB8UGaADCcL/+ZQzf/2qUi/kq0swDaQkcBWHpjANS12/9cKuf/7wCaAPVNt/9eUaoBEtXYAKtdRwA0XvgAEpeh/sXRQv+u9A/+ojC3ADE98P62XcMAx+QGAcgFEf+JLe3/bJQEAFpP7f8nP03/NVLPAY4Wdv9l6BIBXBpDAAXIWP8hqIr/leFIAALRG/8s9agB3O0R/x7Taf6N7t0AgFD1/m/+DgDeX74B3wnxAJJM1P9szWj/P3WZAJBFMAAj5G8AwCHB/3DWvv5zmJcAF2ZYADNK+ADix4/+zKJl/9BhvQH1aBIA5vYe/xeURQBuWDT+4rVZ/9AvWv5yoVD/IXT4ALOYV/9FkLEBWO4a/zogcQEBTUUAO3k0/5juUwA0CMEA5yfp/8ciigDeRK0AWzny/tzSf//AB/b+lyO7AMPspQBvXc4A1PeFAZqF0f+b5woAQE4mAHr5ZAEeE2H/Plv5AfiFTQDFP6j+dApSALjscf7Uy8L/PWT8/iQFyv93W5n/gU8dAGdnq/7t12//2DVFAO/wFwDCld3/JuHeAOj/tP52UoX/OdGxAYvohQCesC7+wnMuAFj35QEcZ78A3d6v/pXrLACX5Bn+2mlnAI5V0gCVgb7/1UFe/nWG4P9SxnUAnd3cAKNlJADFciUAaKym/gu2AABRSLz/YbwQ/0UGCgDHk5H/CAlzAUHWr//ZrdEAUH+mAPflBP6nt3z/WhzM/q878P8LKfgBbCgz/5Cxw/6W+n4AiltBAXg83v/1we8AHda9/4ACGQBQmqIATdxrAerNSv82pmf/dEgJAOReL/8eyBn/I9ZZ/z2wjP9T4qP/S4KsAIAmEQBfiZj/13yfAU9dAACUUp3+w4L7/yjKTP/7fuAAnWM+/s8H4f9gRMMAjLqd/4MT5/8qgP4ANNs9/mbLSACNBwv/uqTVAB96dwCF8pEA0Pzo/1vVtv+PBPr++ddKAKUebwGrCd8A5XsiAVyCGv9Nmy0Bw4sc/zvgTgCIEfcAbHkgAE/6vf9g4/z+JvE+AD6uff+bb13/CubOAWHFKP8AMTn+QfoNABL7lv/cbdL/Ba6m/iyBvQDrI5P/JfeN/0iNBP9na/8A91oEADUsKgACHvAABDs/AFhOJABxp7QAvkfB/8eepP86CKwATSEMAEE/AwCZTSH/rP5mAeTdBP9XHv4BkilW/4rM7/5sjRH/u/KHANLQfwBELQ7+SWA+AFE8GP+qBiT/A/kaACPVbQAWgTb/FSPh/+o9OP862QYAj3xYAOx+QgDRJrf/Iu4G/66RZgBfFtMAxA+Z/i5U6P91IpIB5/pK/xuGZAFcu8P/qsZwAHgcKgDRRkMAHVEfAB2oZAGpraAAayN1AD5gO/9RDEUBh+++/9z8EgCj3Dr/iYm8/1NmbQBgBkwA6t7S/7muzQE8ntX/DfHWAKyBjABdaPIAwJz7ACt1HgDhUZ4Af+jaAOIcywDpG5f/dSsF//IOL/8hFAYAifss/hsf9f+31n3+KHmVALqe1f9ZCOMARVgA/suH4QDJrssAk0e4ABJ5Kf5eBU4A4Nbw/iQFtAD7h+cBo4rUANL5dP5YgbsAEwgx/j4OkP+fTNMA1jNSAG115P5n38v/S/wPAZpH3P8XDVsBjahg/7W2hQD6MzcA6urU/q8/ngAn8DQBnr0k/9UoVQEgtPf/E2YaAVQYYf9FFd4AlIt6/9zV6wHoy/8AeTmTAOMHmgA1FpMBSAHhAFKGMP5TPJ3/kUipACJn7wDG6S8AdBME/7hqCf+3gVMAJLDmASJnSADbooYA9SqeACCVYP6lLJAAyu9I/teWBQAqQiQBhNevAFauVv8axZz/MeiH/me2UgD9gLABmbJ6APX6CgDsGLIAiWqEACgdKQAyHpj/fGkmAOa/SwCPK6oALIMU/ywNF//t/5sBn21k/3C1GP9o3GwAN9ODAGMM1f+Yl5H/7gWfAGGbCAAhbFEAAQNnAD5tIv/6m7QAIEfD/yZGkQGfX/UAReVlAYgc8ABP4BkATm55//iofAC7gPcAApPr/k8LhABGOgwBtQij/0+Jhf8lqgv/jfNV/7Dn1//MlqT/79cn/y5XnP4Io1j/rCLoAEIsZv8bNin+7GNX/yl7qQE0cisAdYYoAJuGGgDnz1v+I4Qm/xNmff4k44X/dgNx/x0NfACYYEoBWJLO/6e/3P6iElj/tmQXAB91NABRLmoBDAIHAEVQyQHR9qwADDCNAeDTWAB04p8AemKCAEHs6gHh4gn/z+J7AVnWOwBwh1gBWvTL/zELJgGBbLoAWXAPAWUuzP9/zC3+T//d/zNJEv9/KmX/8RXKAKDjBwBpMuwATzTF/2jK0AG0DxAAZcVO/2JNywApufEBI8F8ACObF//PNcAAC32jAfmeuf8EgzAAFV1v/z155wFFyCT/uTC5/2/uFf8nMhn/Y9ej/1fUHv+kkwX/gAYjAWzfbv/CTLIASmW0APMvMACuGSv/Uq39ATZywP8oN1sA12yw/ws4BwDg6UwA0WLK/vIZfQAswV3+ywixAIewEwBwR9X/zjuwAQRDGgAOj9X+KjfQ/zxDeADBFaMAY6RzAAoUdgCc1N7+oAfZ/3L1TAF1O3sAsMJW/tUPsABOzs/+1YE7AOn7FgFgN5j/7P8P/8VZVP9dlYUArqBxAOpjqf+YdFgAkKRT/18dxv8iLw//Y3iG/wXswQD5937/k7seADLmdf9s2dv/o1Gm/0gZqf6beU//HJtZ/gd+EQCTQSEBL+r9ABozEgBpU8f/o8TmAHH4pADi/toAvdHL/6T33v7/I6UABLzzAX+zRwAl7f7/ZLrwAAU5R/5nSEn/9BJR/uXShP/uBrT/C+Wu/+PdwAERMRwAo9fE/gl2BP8z8EcAcYFt/0zw5wC8sX8AfUcsARqv8wBeqRn+G+YdAA+LdwGoqrr/rMVM//xLvACJfMQASBZg/y2X+QHckWQAQMCf/3jv4gCBspIAAMB9AOuK6gC3nZIAU8fA/7isSP9J4YAATQb6/7pBQwBo9s8AvCCK/9oY8gBDilH+7YF5/xTPlgEpxxD/BhSAAJ92BQC1EI//3CYPABdAk/5JGg0AV+Q5Acx8gAArGN8A22PHABZLFP8TG34AnT7XAG4d5gCzp/8BNvy+AN3Mtv6znkH/UZ0DAMLanwCq3wAA4Asg/ybFYgCopCUAF1gHAaS6bgBgJIYA6vLlAPp5EwDy/nD/Ay9eAQnvBv9Rhpn+1v2o/0N84AD1X0oAHB4s/gFt3P+yWVkA/CRMABjGLv9MTW8AhuqI/ydeHQC5SOr/RkSH/+dmB/5N54wApy86AZRhdv8QG+EBps6P/26y1v+0g6IAj43hAQ3aTv9ymSEBYmjMAK9ydQGnzksAysRTATpAQwCKL28BxPeA/4ng4P6ecM8AmmT/AYYlawDGgE//f9Gb/6P+uf48DvMAH9tw/h3ZQQDIDXT+ezzE/+A7uP7yWcQAexBL/pUQzgBF/jAB53Tf/9GgQQHIUGIAJcK4/pQ/IgCL8EH/2ZCE/zgmLf7HeNIAbLGm/6DeBADcfnf+pWug/1Lc+AHxr4gAkI0X/6mKVACgiU7/4nZQ/zQbhP8/YIv/mPonALybDwDoM5b+KA/o//DlCf+Jrxv/S0lhAdrUCwCHBaIBa7nVAAL5a/8o8kYA28gZABmdDQBDUlD/xPkX/5EUlQAySJIAXkyUARj7QQAfwBcAuNTJ/3vpogH3rUgAolfb/n6GWQCfCwz+pmkdAEkb5AFxeLf/QqNtAdSPC/+f56gB/4BaADkOOv5ZNAr//QijAQCR0v8KgVUBLrUbAGeIoP5+vNH/IiNvANfbGP/UC9b+ZQV2AOjFhf/fp23/7VBW/0aLXgCewb8Bmw8z/w++cwBOh8//+QobAbV96QBfrA3+qtWh/yfsiv9fXVf/voBfAH0PzgCmlp8A4w+e/86eeP8qjYAAZbJ4AZxtgwDaDiz+96jO/9RwHABwEeT/WhAlAcXebAD+z1P/CVrz//P0rAAaWHP/zXR6AL/mwQC0ZAsB2SVg/5pOnADr6h//zrKy/5XA+wC2+ocA9hZpAHzBbf8C0pX/qRGqAABgbv91CQgBMnso/8G9YwAi46AAMFBG/tMz7AAtevX+LK4IAK0l6f+eQasAekXX/1pQAv+DamD+43KHAM0xd/6wPkD/UjMR//EU8/+CDQj+gNnz/6IbAf5advEA9sb2/zcQdv/In50AoxEBAIxreQBVoXb/JgCVAJwv7gAJpqYBS2K1/zJKGQBCDy8Ai+GfAEwDjv8O7rgAC881/7fAugGrIK7/v0zdAfeq2wAZrDL+2QnpAMt+RP+3XDAAf6e3AUEx/gAQP38B/hWq/zvgf/4WMD//G06C/ijDHQD6hHD+I8uQAGipqADP/R7/aCgm/l7kWADOEID/1Dd6/98W6gDfxX8A/bW1AZFmdgDsmST/1NlI/xQmGP6KPj4AmIwEAObcY/8BFdT/lMnnAPR7Cf4Aq9IAMzol/wH/Dv/0t5H+APKmABZKhAB52CkAX8Ny/oUYl/+c4uf/9wVN//aUc/7hXFH/3lD2/qp7Wf9Kx40AHRQI/4qIRv9dS1wA3ZMx/jR+4gDlfBcALgm1AM1ANAGD/hwAl57UAINATgDOGasAAOaLAL/9bv5n96cAQCgoASql8f87S+T+fPO9/8Rcsv+CjFb/jVk4AZPGBf/L+J7+kKKNAAus4gCCKhX/AaeP/5AkJP8wWKT+qKrcAGJH1gBb0E8An0zJAaYq1v9F/wD/BoB9/74BjACSU9r/1+5IAXp/NQC9dKX/VAhC/9YD0P/VboUAw6gsAZ7nRQCiQMj+WzpoALY6u/755IgAy4ZM/mPd6QBL/tb+UEWaAECY+P7siMr/nWmZ/pWvFAAWIxP/fHnpALr6xv6E5YsAiVCu/6V9RACQypT+6+/4AIe4dgBlXhH/ekhG/kWCkgB/3vgBRX92/x5S1/68ShP/5afC/nUZQv9B6jj+1RacAJc7Xf4tHBv/un6k/yAG7wB/cmMB2zQC/2Ngpv4+vn7/bN6oAUvirgDm4scAPHXa//z4FAHWvMwAH8KG/ntFwP+prST+N2JbAN8qZv6JAWYAnVoZAO96QP/8BukABzYU/1J0rgCHJTb/D7p9AONwr/9ktOH/Ku30//St4v74EiEAq2OW/0rrMv91UiD+aqjtAM9t0AHkCboAhzyp/rNcjwD0qmj/6y18/0ZjugB1ibcA4B/XACgJZAAaEF8BRNlXAAiXFP8aZDr/sKXLATR2RgAHIP7+9P71/6eQwv99cRf/sHm1AIhU0QCKBh7/WTAcACGbDv8Z8JoAjc1tAUZzPv8UKGv+iprH/17f4v+dqyYAo7EZ/i12A/8O3hcB0b5R/3Z76AEN1WX/ezd7/hv2pQAyY0z/jNYg/2FBQ/8YDBwArlZOAUD3YACgh0MAQjfz/5PMYP8aBiH/YjNTAZnV0P8CuDb/GdoLADFD9v4SlUj/DRlIACpP1gAqBCYBG4uQ/5W7FwASpIQA9VS4/njGaP9+2mAAOHXq/w0d1v5ELwr/p5qE/pgmxgBCsln/yC6r/w1jU//Su/3/qi0qAYrRfADWoo0ADOacAGYkcP4Dk0MANNd7/+mrNv9iiT4A99on/+fa7AD3v38Aw5JUAKWwXP8T1F7/EUrjAFgomQHGkwH/zkP1/vAD2v89jdX/YbdqAMPo6/5fVpoA0TDN/nbR8f/weN8B1R2fAKN/k/8N2l0AVRhE/kYUUP+9BYwBUmH+/2Njv/+EVIX/a9p0/3B6LgBpESAAwqA//0TeJwHY/VwAsWnN/5XJwwAq4Qv/KKJzAAkHUQCl2tsAtBYA/h2S/P+Sz+EBtIdgAB+jcACxC9v/hQzB/itOMgBBcXkBO9kG/25eGAFwrG8ABw9gACRVewBHlhX/0Em8AMALpwHV9SIACeZcAKKOJ//XWhsAYmFZAF5P0wBanfAAX9x+AWaw4gAkHuD+Ix9/AOfocwFVU4IA0kn1/y+Pcv9EQcUAO0g+/7eFrf5deXb/O7FR/+pFrf/NgLEA3PQzABr00QFJ3k3/owhg/paV0wCe/ssBNn+LAKHgOwAEbRb/3iot/9CSZv/sjrsAMs31/wpKWf4wT44A3kyC/x6mPwDsDA3/Mbj0ALtxZgDaZf0AmTm2/iCWKgAZxpIB7fE4AIxEBQBbpKz/TpG6/kM0zQDbz4EBbXMRADaPOgEV+Hj/s/8eAMHsQv8B/wf//cAw/xNF2QED1gD/QGWSAd99I//rSbP/+afiAOGvCgFhojoAanCrAVSsBf+FjLL/hvWOAGFaff+6y7n/300X/8BcagAPxnP/2Zj4AKuyeP/khjUAsDbBAfr7NQDVCmQBIsdqAJcf9P6s4Ff/Du0X//1VGv9/J3T/rGhkAPsORv/U0Ir//dP6ALAxpQAPTHv/Jdqg/1yHEAEKfnL/RgXg//f5jQBEFDwB8dK9/8PZuwGXA3EAl1yuAOc+sv/bt+EAFxch/821UAA5uPj/Q7QB/1p7Xf8nAKL/YPg0/1RCjAAif+T/wooHAaZuvAAVEZsBmr7G/9ZQO/8SB48ASB3iAcfZ+QDooUcBlb7JANmvX/5xk0P/io/H/3/MAQAdtlMBzuab/7rMPAAKfVX/6GAZ//9Z9//V/q8B6MFRABwrnP4MRQgAkxj4ABLGMQCGPCMAdvYS/zFY/v7kFbr/tkFwAdsWAf8WfjT/vTUx/3AZjwAmfzf/4mWj/tCFPf+JRa4BvnaR/zxi2//ZDfX/+ogKAFT+4gDJH30B8DP7/x+Dgv8CijL/19exAd8M7v/8lTj/fFtE/0h+qv53/2QAgofo/w5PsgD6g8UAisbQAHnYi/53EiT/HcF6ABAqLf/V8OsB5r6p/8Yj5P5urUgA1t3x/ziUhwDAdU7+jV3P/49BlQAVEmL/Xyz0AWq/TQD+VQj+1m6w/0mtE/6gxMf/7VqQAMGscf/Im4j+5FrdAIkxSgGk3df/0b0F/2nsN/8qH4EBwf/sAC7ZPACKWLv/4lLs/1FFl/+OvhABDYYIAH96MP9RQJwAq/OLAO0j9gB6j8H+1HqSAF8p/wFXhE0ABNQfABEfTgAnLa3+GI7Z/18JBv/jUwYAYjuC/j4eIQAIc9MBomGA/we4F/50HKj/+IqX/2L08AC6doIAcvjr/2mtyAGgfEf/XiSkAa9Bkv/u8ar+ysbFAORHiv4t9m3/wjSeAIW7sABT/Jr+Wb3d/6pJ/ACUOn0AJEQz/ipFsf+oTFb/JmTM/yY1IwCvE2EA4e79/1FRhwDSG//+60lrAAjPcwBSf4gAVGMV/s8TiABkpGUAUNBN/4TP7f8PAw//IaZuAJxfVf8luW8Blmoj/6aXTAByV4f/n8JAAAx6H//oB2X+rXdiAJpH3P6/OTX/qOig/+AgY//anKUAl5mjANkNlAHFcVkAlRyh/s8XHgBphOP/NuZe/4WtzP9ct53/WJD8/mYhWgCfYQMAtdqb//BydwBq1jX/pb5zAZhb4f9Yaiz/0D1xAJc0fAC/G5z/bjbsAQ4epv8nf88B5cccALzkvP5knesA9tq3AWsWwf/OoF8ATO+TAM+hdQAzpgL/NHUK/kk44/+YweEAhF6I/2W/0QAga+X/xiu0AWTSdgByQ5n/F1ga/1maXAHceIz/kHLP//xz+v8izkgAioV//wiyfAFXS2EAD+Vc/vBDg/92e+P+knho/5HV/wGBu0b/23c2AAETrQAtlpQB+FNIAMvpqQGOazgA9/kmAS3yUP8e6WcAYFJGABfJbwBRJx7/obdO/8LqIf9E44z+2M50AEYb6/9okE8ApOZd/taHnACau/L+vBSD/yRtrgCfcPEABW6VASSl2gCmHRMBsi5JAF0rIP74ve0AZpuNAMldw//xi/3/D29i/2xBo/6bT77/Sa7B/vYoMP9rWAv+ymFV//3MEv9x8kIAbqDC/tASugBRFTwAvGin/3ymYf7ShY4AOPKJ/ilvggBvlzoBb9WN/7es8f8mBsT/uQd7/y4L9gD1aXcBDwKh/wjOLf8Sykr/U3xzAdSNnQBTCNH+iw/o/6w2rf4y94QA1r3VAJC4aQDf/vgA/5Pw/xe8SAAHMzYAvBm0/ty0AP9ToBQAo73z/zrRwv9XSTwAahgxAPX53AAWracAdgvD/xN+7QBunyX/O1IvALS7VgC8lNABZCWF/wdwwQCBvJz/VGqB/4XhygAO7G//KBRlAKysMf4zNkr/+7m4/12b4P+0+eAB5rKSAEg5Nv6yPrgAd81IALnv/f89D9oAxEM4/+ogqwEu2+QA0Gzq/xQ/6P+lNccBheQF/zTNawBK7oz/lpzb/u+ssv/7vd/+II7T/9oPigHxxFAAHCRi/hbqxwA97dz/9jklAI4Rjv+dPhoAK+5f/gPZBv/VGfABJ9yu/5rNMP4TDcD/9CI2/owQmwDwtQX+m8E8AKaABP8kkTj/lvDbAHgzkQBSmSoBjOySAGtc+AG9CgMAP4jyANMnGAATyqEBrRu6/9LM7/4p0aL/tv6f/6x0NADDZ97+zUU7ADUWKQHaMMIAUNLyANK8zwC7oaH+2BEBAIjhcQD6uD8A3x5i/k2oogA7Na8AE8kK/4vgwgCTwZr/1L0M/gHIrv8yhXEBXrNaAK22hwBesXEAK1nX/4j8av97hlP+BfVC/1IxJwHcAuAAYYGxAE07WQA9HZsBy6vc/1xOiwCRIbX/qRiNATeWswCLPFD/2idhAAKTa/88+EgAreYvAQZTtv8QaaL+idRR/7S4hgEn3qT/3Wn7Ae9wfQA/B2EAP2jj/5Q6DABaPOD/VNT8AE/XqAD43ccBc3kBACSseAAgorv/OWsx/5MqFQBqxisBOUpXAH7LUf+Bh8MAjB+xAN2LwgAD3tcAg0TnALFWsv58l7QAuHwmAUajEQD5+7UBKjfjAOKhLAAX7G4AM5WOAV0F7ADat2r+QxhNACj10f/eeZkApTkeAFN9PABGJlIB5Qa8AG3enf83dj//zZe6AOMhlf/+sPYB47HjACJqo/6wK08Aal9OAbnxev+5Dj0AJAHKAA2yov/3C4QAoeZcAUEBuf/UMqUBjZJA/57y2gAVpH0A1Yt6AUNHVwDLnrIBl1wrAJhvBf8nA+//2f/6/7A/R/9K9U0B+q4S/yIx4//2Lvv/miMwAX2dPf9qJE7/YeyZAIi7eP9xhqv/E9XZ/the0f/8BT0AXgPKAAMat/9Avyv/HhcVAIGNTf9meAcBwkyMALyvNP8RUZQA6FY3AeEwrACGKir/7jIvAKkS/gAUk1f/DsPv/0X3FwDu5YD/sTFwAKhi+/95R/gA8wiR/vbjmf/bqbH++4ul/wyjuf+kKKv/mZ8b/vNtW//eGHABEtbnAGudtf7DkwD/wmNo/1mMvv+xQn7+arlCADHaHwD8rp4AvE/mAe4p4ADU6ggBiAu1AKZ1U/9Ew14ALoTJAPCYWACkOUX+oOAq/zvXQ/93w43/JLR5/s8vCP+u0t8AZcVE//9SjQH6iekAYVaFARBQRQCEg58AdF1kAC2NiwCYrJ3/WitbAEeZLgAnEHD/2Yhh/9zGGf6xNTEA3liG/4APPADPwKn/wHTR/2pO0wHI1bf/Bwx6/t7LPP8hbsf++2p1AOThBAF4Ogf/3cFU/nCFGwC9yMn/i4eWAOo3sP89MkEAmGyp/9xVAf9wh+MAohq6AM9guf70iGsAXZkyAcZhlwBuC1b/j3Wu/3PUyAAFyrcA7aQK/rnvPgDseBL+Yntj/6jJwv4u6tYAv4Ux/2OpdwC+uyMBcxUt//mDSABwBnv/1jG1/qbpIgBcxWb+/eTN/wM7yQEqYi4A2yUj/6nDJgBefMEBnCvfAF9Ihf54zr8AesXv/7G7T//+LgIB+qe+AFSBEwDLcab/+R+9/kidyv/QR0n/zxhIAAoQEgHSUUz/WNDA/37za//ujXj/x3nq/4kMO/8k3Hv/lLM8/vAMHQBCAGEBJB4m/3MBXf9gZ+f/xZ47AcCk8ADKyjn/GK4wAFlNmwEqTNcA9JfpABcwUQDvfzT+44Il//h0XQF8hHYArf7AAQbrU/9ur+cB+xy2AIH5Xf5UuIAATLU+AK+AugBkNYj+bR3iAN3pOgEUY0oAABagAIYNFQAJNDf/EVmMAK8iOwBUpXf/4OLq/wdIpv97c/8BEtb2APoHRwHZ3LkA1CNM/yZ9rwC9YdIAcu4s/ym8qf4tupoAUVwWAISgwQB50GL/DVEs/8ucUgBHOhX/0HK//jImkwCa2MMAZRkSADz61//phOv/Z6+OARAOXACNH27+7vEt/5nZ7wFhqC//+VUQARyvPv85/jYA3ud+AKYtdf4SvWD/5EwyAMj0XgDGmHgBRCJF/wxBoP5lE1oAp8V4/0Q2uf8p2rwAcagwAFhpvQEaUiD/uV2kAeTw7f9CtjUAq8Vc/2sJ6QHHeJD/TjEK/22qaf9aBB//HPRx/0o6CwA+3Pb/eZrI/pDSsv9+OYEBK/oO/2VvHAEvVvH/PUaW/zVJBf8eGp4A0RpWAIrtSgCkX7wAjjwd/qJ0+P+7r6AAlxIQANFvQf7Lhif/WGwx/4MaR//dG9f+aGld/x/sH/6HANP/j39uAdRJ5QDpQ6f+wwHQ/4QR3f8z2VoAQ+sy/9/SjwCzNYIB6WrGANmt3P9w5Rj/r5pd/kfL9v8wQoX/A4jm/xfdcf7rb9UAqnhf/vvdAgAtgp7+aV7Z//I0tP7VRC3/aCYcAPSeTAChyGD/zzUN/7tDlACqNvgAd6Ky/1MUCwAqKsABkp+j/7fobwBN5RX/RzWPABtMIgD2iC//2ye2/1zgyQETjg7/Rbbx/6N29QAJbWoBqrX3/04v7v9U0rD/1WuLACcmCwBIFZYASIJFAM1Nm/6OhRUAR2+s/uIqO/+zANcBIYDxAOr8DQG4TwgAbh5J//aNvQCqz9oBSppF/4r2Mf+bIGQAfUpp/1pVPf8j5bH/Pn3B/5lWvAFJeNQA0Xv2/ofRJv+XOiwBXEXW/w4MWP/8mab//c9w/zxOU//jfG4AtGD8/zV1If6k3FL/KQEb/yakpv+kY6n+PZBG/8CmEgBr+kIAxUEyAAGzEv//aAH/K5kj/1BvqABur6gAKWkt/9sOzf+k6Yz+KwF2AOlDwwCyUp//ild6/9TuWv+QI3z+GYykAPvXLP6FRmv/ZeNQ/lypNwDXKjEAcrRV/yHoGwGs1RkAPrB7/iCFGP/hvz4AXUaZALUqaAEWv+D/yMiM//nqJQCVOY0AwzjQ//6CRv8grfD/HdzHAG5kc/+E5fkA5Onf/yXY0f6ysdH/ty2l/uBhcgCJYaj/4d6sAKUNMQHS68z//AQc/kaglwDovjT+U/hd/z7XTQGvr7P/oDJCAHkw0AA/qdH/ANLIAOC7LAFJolIACbCP/xNMwf8dO6cBGCuaABy+vgCNvIEA6OvL/+oAbf82QZ8APFjo/3n9lv786YP/xm4pAVNNR//IFjv+av3y/xUMz//tQr0AWsbKAeGsfwA1FsoAOOaEAAFWtwBtvioA80SuAW3kmgDIsXoBI6C3/7EwVf9a2qn/+JhOAMr+bgAGNCsAjmJB/z+RFgBGal0A6IprAW6zPf/TgdoB8tFcACNa2QG2j2r/dGXZ/3L63f+tzAYAPJajAEmsLP/vblD/7UyZ/qGM+QCV6OUAhR8o/66kdwBxM9YAgeQC/kAi8wBr4/T/rmrI/1SZRgEyIxAA+krY/uy9Qv+Z+Q0A5rIE/90p7gB243n/XleM/v53XABJ7/b+dVeAABPTkf+xLvwA5Vv2AUWA9//KTTYBCAsJ/5lgpgDZ1q3/hsACAQDPAAC9rmsBjIZkAJ7B8wG2ZqsA65ozAI4Fe/88qFkB2Q5c/xPWBQHTp/4ALAbK/ngS7P8Pcbj/uN+LACixd/62e1r/sKWwAPdNwgAb6ngA5wDW/zsnHgB9Y5H/lkREAY3e+ACZe9L/bn+Y/+Uh1gGH3cUAiWECAAyPzP9RKbwAc0+C/14DhACYr7v/fI0K/37As/8LZ8YAlQYtANtVuwHmErL/SLaYAAPGuP+AcOABYaHmAP5jJv86n8UAl0LbADtFj/+5cPkAd4gv/3uChACoR1//cbAoAei5rQDPXXUBRJ1s/2YFk/4xYSEAWUFv/vceo/982d0BZvrYAMauS/45NxIA4wXsAeXVrQDJbdoBMenvAB43ngEZsmoAm2+8AV5+jADXH+4BTfAQANXyGQEmR6gAzbpd/jHTjP/bALT/hnalAKCThv9uuiP/xvMqAPOSdwCG66MBBPGH/8Euwf5ntE//4QS4/vJ2ggCSh7AB6m8eAEVC1f4pYHsAeV4q/7K/w/8ugioAdVQI/+kx1v7uem0ABkdZAezTewD0DTD+d5QOAHIcVv9L7Rn/keUQ/oFkNf+Glnj+qJ0yABdIaP/gMQ4A/3sW/5e5l/+qULgBhrYUAClkZQGZIRAATJpvAVbO6v/AoKT+pXtd/wHYpP5DEa//qQs7/54pPf9JvA7/wwaJ/xaTHf8UZwP/9oLj/3oogADiLxj+IyQgAJi6t/9FyhQAw4XDAN4z9wCpq14BtwCg/0DNEgGcUw//xTr5/vtZbv8yClj+MyvYAGLyxgH1l3EAq+zCAcUfx//lUSYBKTsUAP1o5gCYXQ7/9vKS/tap8P/wZmz+oKfsAJravACW6cr/GxP6AQJHhf+vDD8BkbfGAGh4c/+C+/cAEdSn/z57hP/3ZL0Am9+YAI/FIQCbOyz/ll3wAX8DV/9fR88Bp1UB/7yYdP8KFxcAicNdATZiYQDwAKj/lLx/AIZrlwBM/asAWoTAAJIWNgDgQjb+5rrl/ye2xACU+4L/QYNs/oABoACpMaf+x/6U//sGgwC7/oH/VVI+ALIXOv/+hAUApNUnAIb8kv4lNVH/m4ZSAM2n7v9eLbT/hCihAP5vcAE2S9kAs+bdAetev/8X8zABypHL/yd2Kv91jf0A/gDeACv7MgA2qeoBUETQAJTL8/6RB4cABv4AAPy5fwBiCIH/JiNI/9Mk3AEoGlkAqEDF/gPe7/8CU9f+tJ9pADpzwgC6dGr/5ffb/4F2wQDKrrcBpqFIAMlrk/7tiEoA6eZqAWlvqABA4B4BAeUDAGaXr//C7uT//vrUALvteQBD+2ABxR4LALdfzADNWYoAQN0lAf/fHv+yMNP/8cha/6fRYP85gt0ALnLI/z24QgA3thj+brYhAKu+6P9yXh8AEt0IAC/n/gD/cFMAdg/X/60ZKP7AwR//7hWS/6vBdv9l6jX+g9RwAFnAawEI0BsAtdkP/+eV6ACM7H4AkAnH/wxPtf6Ttsr/E222/zHU4QBKo8sAr+mUABpwMwDBwQn/D4f5AJbjggDMANsBGPLNAO7Qdf8W9HAAGuUiACVQvP8mLc7+8Frh/x0DL/8q4EwAuvOnACCED/8FM30Ai4cYAAbx2wCs5YX/9tYyAOcLz/+/flMBtKOq//U4GAGypNP/AxDKAWI5dv+Ng1n+ITMYAPOVW//9NA4AI6lD/jEeWP+zGyT/pYy3ADq9lwBYHwAAS6lCAEJlx/8Y2McBecQa/w5Py/7w4lH/XhwK/1PB8P/MwYP/Xg9WANoonQAzwdEAAPKxAGa59wCebXQAJodbAN+vlQDcQgH/VjzoABlgJf/heqIB17uo/56dLgA4q6IA6PBlAXoWCQAzCRX/NRnu/9ke6P59qZQADehmAJQJJQClYY0B5IMpAN4P8//+EhEABjztAWoDcQA7hL0AXHAeAGnQ1QAwVLP/u3nn/hvYbf+i3Wv+Se/D//ofOf+Vh1n/uRdzAQOjnf8ScPoAGTm7/6FgpAAvEPMADI37/kPquP8pEqEArwZg/6CsNP4YsLf/xsFVAXx5if+XMnL/3Ms8/8/vBQEAJmv/N+5e/kaYXgDV3E0BeBFF/1Wkvv/L6lEAJjEl/j2QfACJTjH+qPcwAF+k/ABpqYcA/eSGAECmSwBRSRT/z9IKAOpqlv9eIlr//p85/tyFYwCLk7T+GBe5ACk5Hv+9YUwAQbvf/+CsJf8iPl8B55DwAE1qfv5AmFsAHWKbAOL7Nf/q0wX/kMve/6Sw3f4F5xgAs3rNACQBhv99Rpf+YeT8AKyBF/4wWtH/luBSAVSGHgDxxC4AZ3Hq/y5lef4ofPr/hy3y/gn5qP+MbIP/j6OrADKtx/9Y3o7/yF+eAI7Ao/8HdYcAb3wWAOwMQf5EJkH/467+APT1JgDwMtD/oT/6ADzR7wB6IxMADiHm/gKfcQBqFH//5M1gAInSrv601JD/WWKaASJYiwCnonABQW7FAPElqQBCOIP/CslT/oX9u/+xcC3+xPsAAMT6l//u6Nb/ltHNABzwdgBHTFMB7GNbACr6gwFgEkD/dt4jAHHWy/96d7j/QhMkAMxA+QCSWYsAhj6HAWjpZQC8VBoAMfmBANDWS//Pgk3/c6/rAKsCif+vkboBN/WH/5pWtQFkOvb/bcc8/1LMhv/XMeYBjOXA/97B+/9RiA//s5Wi/xcnHf8HX0v+v1HeAPFRWv9rMcn/9NOdAN6Mlf9B2zj+vfZa/7I7nQEw2zQAYiLXABwRu/+vqRgAXE+h/+zIwgGTj+oA5eEHAcWoDgDrMzUB/XiuAMUGqP/KdasAoxXOAHJVWv8PKQr/whNjAEE32P6iknQAMs7U/0CSHf+enoMBZKWC/6wXgf99NQn/D8ESARoxC/+1rskBh8kO/2QTlQDbYk8AKmOP/mAAMP/F+VP+aJVP/+tuiP5SgCz/QSkk/ljTCgC7ebsAYobHAKu8s/7SC+7/QnuC/jTqPQAwcRf+BlZ4/3ey9QBXgckA8o3RAMpyVQCUFqEAZ8MwABkxq/+KQ4IAtkl6/pQYggDT5ZoAIJueAFRpPQCxwgn/pllWATZTuwD5KHX/bQPX/zWSLAE/L7MAwtgD/g5UiACIsQ3/SPO6/3URff/TOtP/XU/fAFpY9f+L0W//Rt4vAAr2T//G2bIA4+ELAU5+s/8+K34AZ5QjAIEIpf718JQAPTOOAFHQhgAPiXP/03fs/5/1+P8Choj/5os6AaCk/gByVY3/Maa2/5BGVAFVtgcALjVdAAmmof83orL/Lbi8AJIcLP6pWjEAeLLxAQ57f/8H8ccBvUIy/8aPZf6984f/jRgY/kthVwB2+5oB7TacAKuSz/+DxPb/iEBxAZfoOQDw2nMAMT0b/0CBSQH8qRv/KIQKAVrJwf/8efABus4pACvGYQCRZLcAzNhQ/qyWQQD55cT+aHtJ/01oYP6CtAgAaHs5ANzK5f9m+dMAVg7o/7ZO0QDv4aQAag0g/3hJEf+GQ+kAU/61ALfscAEwQIP/8djz/0HB4gDO8WT+ZIam/+3KxQA3DVEAIHxm/yjksQB2tR8B56CG/3e7ygAAjjz/gCa9/6bJlgDPeBoBNrisAAzyzP6FQuYAIiYfAbhwUAAgM6X+v/M3ADpJkv6bp83/ZGiY/8X+z/+tE/cA7grKAO+X8gBeOyf/8B1m/wpcmv/lVNv/oYFQANBazAHw267/nmaRATWyTP80bKgBU95rANMkbQB2OjgACB0WAO2gxwCq0Z0AiUcvAI9WIADG8gIA1DCIAVysugDml2kBYL/lAIpQv/7w2IL/YisG/qjEMQD9ElsBkEl5AD2SJwE/aBj/uKVw/n7rYgBQ1WL/ezxX/1KM9QHfeK3/D8aGAc487wDn6lz/Ie4T/6VxjgGwdyYAoCum/u9baQBrPcIBGQREAA+LMwCkhGr/InQu/qhfxQCJ1BcASJw6AIlwRf6WaZr/7MmdABfUmv+IUuP+4jvd/1+VwABRdjT/ISvXAQ6TS/9ZnHn+DhJPAJPQiwGX2j7/nFgIAdK4Yv8Ur3v/ZlPlANxBdAGW+gT/XI7c/yL3Qv/M4bP+l1GXAEco7P+KPz4ABk/w/7e5tQB2MhsAP+PAAHtjOgEy4Jv/EeHf/tzgTf8OLHsBjYCvAPjUyACWO7f/k2EdAJbMtQD9JUcAkVV3AJrIugACgPn/Uxh8AA5XjwCoM/UBfJfn/9DwxQF8vrkAMDr2ABTp6AB9EmL/Df4f//Wxgv9sjiMAq33y/owMIv+loaIAzs1lAPcZIgFkkTkAJ0Y5AHbMy//yAKIApfQeAMZ04gCAb5n/jDa2ATx6D/+bOjkBNjLGAKvTHf9riqf/rWvH/22hwQBZSPL/znNZ//r+jv6xyl7/UVkyAAdpQv8Z/v/+y0AX/0/ebP8n+UsA8XwyAO+YhQDd8WkAk5diANWhef7yMYkA6SX5/iq3GwC4d+b/2SCj/9D75AGJPoP/T0AJ/l4wcQARijL+wf8WAPcSxQFDN2gAEM1f/zAlQgA3nD8BQFJK/8g1R/7vQ30AGuDeAN+JXf8e4Mr/CdyEAMYm6wFmjVYAPCtRAYgcGgDpJAj+z/KUAKSiPwAzLuD/cjBP/wmv4gDeA8H/L6Do//9daf4OKuYAGopSAdAr9AAbJyb/YtB//0CVtv8F+tEAuzwc/jEZ2v+pdM3/dxJ4AJx0k/+ENW3/DQrKAG5TpwCd24n/BgOC/zKnHv88ny//gYCd/l4DvQADpkQAU9/XAJZawgEPqEEA41Mz/82rQv82uzwBmGYt/3ea4QDw94gAZMWy/4tH3//MUhABKc4q/5zA3f/Ye/T/2tq5/7u67//8rKD/wzQWAJCutf67ZHP/006w/xsHwQCT1Wj/WskK/1B7QgEWIboAAQdj/h7OCgDl6gUANR7SAIoI3P5HN6cASOFWAXa+vAD+wWUBq/ms/16et/5dAmz/sF1M/0ljT/9KQIH+9i5BAGPxf/72l2b/LDXQ/jtm6gCar6T/WPIgAG8mAQD/tr7/c7AP/qk8gQB67fEAWkw/AD5KeP96w24AdwSyAN7y0gCCIS7+nCgpAKeScAExo2//ebDrAEzPDv8DGcYBKevVAFUk1gExXG3/yBge/qjswwCRJ3wB7MOVAFokuP9DVar/JiMa/oN8RP/vmyP/NsmkAMQWdf8xD80AGOAdAX5xkAB1FbYAy5+NAN+HTQCw5rD/vuXX/2Mltf8zFYr/Gb1Z/zEwpf6YLfcAqmzeAFDKBQAbRWf+zBaB/7T8Pv7SAVv/km7+/9uiHADf/NUBOwghAM4Q9ACB0zAAa6DQAHA70QBtTdj+IhW5//ZjOP+zixP/uR0y/1RZEwBK+mL/4SrI/8DZzf/SEKcAY4RfASvmOQD+C8v/Y7w//3fB+/5QaTYA6LW9AbdFcP/Qq6X/L220/3tTpQCSojT/mgsE/5fjWv+SiWH+Pekp/14qN/9spOwAmET+AAqMg/8Kak/+856JAEOyQv6xe8b/Dz4iAMVYKv+VX7H/mADG/5X+cf/hWqP/fdn3ABIR4ACAQnj+wBkJ/zLdzQAx1EYA6f+kAALRCQDdNNv+rOD0/144zgHyswL/H1ukAeYuiv+95twAOS89/28LnQCxW5gAHOZiAGFXfgDGWZH/p09rAPlNoAEd6eb/lhVW/jwLwQCXJST+uZbz/+TUUwGsl7QAyambAPQ86gCO6wQBQ9o8AMBxSwF088//QaybAFEenP9QSCH+Eudt/45rFf59GoT/sBA7/5bJOgDOqckA0HniACisDv+WPV7/ODmc/408kf8tbJX/7pGb/9FVH/7ADNIAY2Jd/pgQlwDhudwAjess/6CsFf5HGh//DUBd/hw4xgCxPvgBtgjxAKZllP9OUYX/gd7XAbypgf/oB2EAMXA8/9nl+wB3bIoAJxN7/oMx6wCEVJEAguaU/xlKuwAF9Tb/udvxARLC5P/xymYAaXHKAJvrTwAVCbL/nAHvAMiUPQBz99L/Md2HADq9CAEjLgkAUUEF/zSeuf99dC7/SowN/9JcrP6TF0cA2eD9/nNstP+ROjD+27EY/5z/PAGak/IA/YZXADVL5QAww97/H68y/5zSeP/QI97/EvizAQIKZf+dwvj/nsxl/2j+xf9PPgQAsqxlAWCS+/9BCpwAAoml/3QE5wDy1wEAEyMd/yuhTwA7lfYB+0KwAMghA/9Qbo7/w6ERAeQ4Qv97L5H+hASkAEOurAAZ/XIAV2FXAfrcVABgW8j/JX07ABNBdgChNPH/7awG/7C///8BQYL+377mAGX95/+SI20A+h1NATEAEwB7WpsBFlYg/9rVQQBvXX8APF2p/wh/tgARug7+/Yn2/9UZMP5M7gD/+FxG/2PgiwC4Cf8BB6TQAM2DxgFX1scAgtZfAN2V3gAXJqv+xW7VACtzjP7XsXYAYDRCAXWe7QAOQLb/Lj+u/55fvv/hzbH/KwWO/6xj1P/0u5MAHTOZ/+R0GP4eZc8AE/aW/4bnBQB9huIBTUFiAOyCIf8Fbj4ARWx//wdxFgCRFFP+wqHn/4O1PADZ0bH/5ZTU/gODuAB1sbsBHA4f/7BmUAAyVJf/fR82/xWdhf8Ts4sB4OgaACJ1qv+n/Kv/SY3O/oH6IwBIT+wB3OUU/ynKrf9jTO7/xhbg/2zGw/8kjWAB7J47/2pkVwBu4gIA4+reAJpdd/9KcKT/Q1sC/xWRIf9m1on/r+Zn/qP2pgBd93T+p+Ac/9wCOQGrzlQAe+QR/xt4dwB3C5MBtC/h/2jIuf6lAnIATU7UAC2asf8YxHn+Up22AFoQvgEMk8UAX++Y/wvrRwBWknf/rIbWADyDxACh4YEAH4J4/l/IMwBp59L/OgmU/yuo3f987Y4AxtMy/i71ZwCk+FQAmEbQ/7R1sQBGT7kA80ogAJWczwDFxKEB9TXvAA9d9v6L8DH/xFgk/6ImewCAyJ0Brkxn/62pIv7YAav/cjMRAIjkwgBuljj+avafABO4T/+WTfD/m1CiAAA1qf8dl1YARF4QAFwHbv5idZX/+U3m//0KjADWfFz+I3brAFkwOQEWNaYAuJA9/7P/wgDW+D3+O272AHkVUf6mA+QAakAa/0Xohv/y3DX+LtxVAHGV9/9hs2f/vn8LAIfRtgBfNIEBqpDO/3rIzP+oZJIAPJCV/kY8KAB6NLH/9tNl/67tCAAHM3gAEx+tAH7vnP+PvcsAxIBY/+mF4v8efa3/yWwyAHtkO//+owMB3ZS1/9aIOf7etIn/z1g2/xwh+/9D1jQB0tBkAFGqXgCRKDUA4G/n/iMc9P/ix8P+7hHmANnZpP6pnd0A2i6iAcfPo/9sc6IBDmC7/3Y8TAC4n5gA0edH/iqkuv+6mTP+3au2/6KOrQDrL8EAB4sQAV+kQP8Q3aYA28UQAIQdLP9kRXX/POtY/ihRrQBHvj3/u1idAOcLFwDtdaQA4ajf/5pydP+jmPIBGCCqAH1icf6oE0wAEZ3c/ps0BQATb6H/R1r8/61u8AAKxnn//f/w/0J70gDdwtf+eaMR/+EHYwC+MbYAcwmFAegaiv/VRIQALHd6/7NiMwCVWmoARzLm/wqZdv+xRhkApVfNADeK6gDuHmEAcZvPAGKZfwAia9v+dXKs/0y0//7yObP/3SKs/jiiMf9TA///cd29/7wZ5P4QWFn/RxzG/hYRlf/zef7/a8pj/wnODgHcL5kAa4knAWExwv+VM8X+ujoL/2sr6AHIBg7/tYVB/t3kq/97PucB4+qz/yK91P70u/kAvg1QAYJZAQDfha0ACd7G/0J/SgCn2F3/m6jGAUKRAABEZi4BrFqaANiAS/+gKDMAnhEbAXzwMQDsyrD/l3zA/ybBvgBftj0Ao5N8//+lM/8cKBH+12BOAFaR2v4fJMr/VgkFAG8pyP/tbGEAOT4sAHW4DwEt8XQAmAHc/52lvAD6D4MBPCx9/0Hc+/9LMrgANVqA/+dQwv+IgX8BFRK7/y06of9HkyIArvkL/iONHQDvRLH/c246AO6+sQFX9ab/vjH3/5JTuP+tDif/ktdoAI7feACVyJv/1M+RARC12QCtIFf//yO1AHffoQHI317/Rga6/8BDVf8yqZgAkBp7/zjzs/4URIgAJ4y8/v3QBf/Ic4cBK6zl/5xouwCX+6cANIcXAJeZSACTxWv+lJ4F/+6PzgB+mYn/WJjF/gdEpwD8n6X/7042/xg/N/8m3l4A7bcM/87M0gATJ/b+HkrnAIdsHQGzcwAAdXZ0AYQG/P+RgaEBaUONAFIl4v/u4uT/zNaB/qJ7ZP+5eeoALWznAEIIOP+EiIAArOBC/q+dvADm3+L+8ttFALgOdwFSojgAcnsUAKJnVf8x72P+nIfXAG//p/4nxNYAkCZPAfmofQCbYZz/FzTb/5YWkAAslaX/KH+3AMRN6f92gdL/qofm/9Z3xgDp8CMA/TQH/3VmMP8VzJr/s4ix/xcCAwGVgln//BGfAUY8GgCQaxEAtL48/zi2O/9uRzb/xhKB/5XgV//fFZj/iha2//qczQDsLdD/T5TyAWVG0QBnTq4AZZCs/5iI7QG/wogAcVB9AZgEjQCbljX/xHT1AO9ySf4TUhH/fH3q/yg0vwAq0p7/m4SlALIFKgFAXCj/JFVN/7LkdgCJQmD+c+JCAG7wRf6Xb1AAp67s/+Nsa/+88kH/t1H/ADnOtf8vIrX/1fCeAUdLXwCcKBj/ZtJRAKvH5P+aIikA469LABXvwwCK5V8BTMAxAHV7VwHj4YIAfT4//wLGqwD+JA3+kbrOAJT/9P8jAKYAHpbbAVzk1ABcxjz+PoXI/8kpOwB97m3/tKPuAYx6UgAJFlj/xZ0v/5leOQBYHrYAVKFVALKSfACmpgf/FdDfAJy28gCbebkAU5yu/poQdv+6U+gB3zp5/x0XWAAjfX//qgWV/qQMgv+bxB0AoWCIAAcjHQGiJfsAAy7y/wDZvAA5ruIBzukCADm7iP57vQn/yXV//7okzADnGdgAUE5pABOGgf+Uy0QAjVF9/vilyP/WkIcAlzem/ybrWwAVLpoA3/6W/yOZtP99sB0BK2Ie/9h65v/poAwAObkM/vBxB/8FCRD+GltsAG3GywAIkygAgYbk/3y6KP9yYoT+poQXAGNFLAAJ8u7/uDU7AISBZv80IPP+k9/I/3tTs/6HkMn/jSU4AZc84/9aSZwBy6y7AFCXL/9eief/JL87/+HRtf9K19X+Bnaz/5k2wQEyAOcAaJ1IAYzjmv+24hD+YOFc/3MUqv4G+k4A+Eut/zVZBv8AtHYASK0BAEAIzgGuhd8AuT6F/9YLYgDFH9AAq6f0/xbntQGW2rkA96lhAaWL9/8veJUBZ/gzADxFHP4Zs8QAfAfa/jprUQC46Zz//EokAHa8QwCNXzX/3l6l/i49NQDOO3P/L+z6/0oFIAGBmu7/aiDiAHm7Pf8DpvH+Q6qs/x3Ysv8XyfwA/W7zAMh9OQBtwGD/NHPuACZ58//JOCEAwnaCAEtgGf+qHub+Jz/9ACQt+v/7Ae8AoNRcAS3R7QDzIVf+7VTJ/9QSnf7UY3//2WIQ/ous7wCoyYL/j8Gp/+6XwQHXaCkA7z2l/gID8gAWy7H+scwWAJWB1f4fCyn/AJ95/qAZcv+iUMgAnZcLAJqGTgHYNvwAMGeFAGncxQD9qE3+NbMXABh58AH/LmD/azyH/mLN+f8/+Xf/eDvT/3K0N/5bVe0AldRNAThJMQBWxpYAXdGgAEXNtv/0WisAFCSwAHp03QAzpycB5wE//w3FhgAD0SL/hzvKAKdkTgAv30wAuTw+ALKmewGEDKH/Pa4rAMNFkAB/L78BIixOADnqNAH/Fij/9l6SAFPkgAA8TuD/AGDS/5mv7ACfFUkAtHPE/oPhagD/p4YAnwhw/3hEwv+wxMb/djCo/12pAQBwyGYBShj+ABONBP6OPj8Ag7O7/02cm/93VqQAqtCS/9CFmv+Umzr/onjo/vzVmwDxDSoAXjKDALOqcACMU5f/N3dUAYwj7/+ZLUMB7K8nADaXZ/+eKkH/xO+H/lY1ywCVYS/+2CMR/0YDRgFnJFr/KBqtALgwDQCj29n/UQYB/92qbP7p0F0AZMn5/lYkI//Rmh4B48n7/wK9p/5kOQMADYApAMVkSwCWzOv/ka47AHj4lf9VN+EActI1/sfMdwAO90oBP/uBAENolwGHglAAT1k3/3Xmnf8ZYI8A1ZEFAEXxeAGV81//cioUAINIAgCaNRT/ST5tAMRmmAApDMz/eiYLAfoKkQDPfZQA9vTe/ykgVQFw1X4AovlWAUfGf/9RCRUBYicE/8xHLQFLb4kA6jvnACAwX//MH3IBHcS1/zPxp/5dbY4AaJAtAOsMtf80cKQATP7K/64OogA965P/K0C5/ul92QDzWKf+SjEIAJzMQgB81nsAJt12AZJw7AByYrEAl1nHAFfFcAC5laEALGClAPizFP+829j+KD4NAPOOjQDl487/rMoj/3Ww4f9SbiYBKvUO/xRTYQAxqwoA8nd4ABnoPQDU8JP/BHM4/5ER7/7KEfv/+RL1/2N17wC4BLP/9u0z/yXvif+mcKb/Ubwh/7n6jv82u60A0HDJAPYr5AFouFj/1DTE/zN1bP/+dZsALlsP/1cOkP9X48wAUxpTAZ9M4wCfG9UBGJdsAHWQs/6J0VIAJp8KAHOFyQDftpwBbsRd/zk86QAFp2n/msWkAGAiuv+ThSUB3GO+AAGnVP8UkasAwsX7/l9Ohf/8+PP/4V2D/7uGxP/YmaoAFHae/owBdgBWng8BLdMp/5MBZP5xdEz/039sAWcPMADBEGYBRTNf/2uAnQCJq+kAWnyQAWqhtgCvTOwByI2s/6M6aADptDT/8P0O/6Jx/v8m74r+NC6mAPFlIf6DupwAb9A+/3xeoP8frP4AcK44/7xjG/9DivsAfTqAAZyYrv+yDPf//FSeAFLFDv6syFP/JScuAWrPpwAYvSIAg7KQAM7VBACh4tIASDNp/2Etu/9OuN//sB37AE+gVv90JbIAUk3VAVJUjf/iZdQBr1jH//Ve9wGsdm3/prm+AIO1eABX/l3/hvBJ/yD1j/+Lomf/s2IS/tnMcACT33j/NQrzAKaMlgB9UMj/Dm3b/1vaAf/8/C/+bZx0/3MxfwHMV9P/lMrZ/xpV+f8O9YYBTFmp//It5gA7Yqz/ckmE/k6bMf+eflQAMa8r/xC2VP+dZyMAaMFt/0PdmgDJrAH+CKJYAKUBHf99m+X/HprcAWfvXADcAW3/ysYBAF4CjgEkNiwA6+Ke/6r71v+5TQkAYUryANujlf/wI3b/33JY/sDHAwBqJRj/yaF2/2FZYwHgOmf/ZceT/t48YwDqGTsBNIcbAGYDW/6o2OsA5eiIAGg8gQAuqO4AJ79DAEujLwCPYWL/ONioAajp/P8jbxb/XFQrABrIVwFb/ZgAyjhGAI4ITQBQCq8B/MdMABZuUv+BAcIAC4A9AVcOkf/93r4BD0iuAFWjVv46Yyz/LRi8/hrNDwAT5dL++EPDAGNHuACaxyX/l/N5/yYzS//JVYL+LEH6ADmT8/6SKzv/WRw1ACFUGP+zMxL+vUZTAAucswFihncAnm9vAHeaSf/IP4z+LQ0N/5rAAv5RSCoALqC5/ixwBgCS15UBGrBoAEQcVwHsMpn/s4D6/s7Bv/+mXIn+NSjvANIBzP6orSMAjfMtASQybf8P8sL/4596/7Cvyv5GOUgAKN84ANCiOv+3Yl0AD28MAB4ITP+Ef/b/LfJnAEW1D/8K0R4AA7N5APHo2gF7x1j/AtLKAbyCUf9eZdABZyQtAEzBGAFfGvH/paK7ACRyjADKQgX/JTiTAJgL8wF/Vej/+ofUAbmxcQBa3Ev/RfiSADJvMgBcFlAA9CRz/qNkUv8ZwQYBfz0kAP1DHv5B7Kr/oRHX/j+vjAA3fwQAT3DpAG2gKACPUwf/QRru/9mpjP9OXr3/AJO+/5NHuv5qTX//6Z3pAYdX7f/QDewBm20k/7Rk2gC0oxIAvm4JARE/e/+ziLT/pXt7/5C8Uf5H8Gz/GXAL/+PaM/+nMur/ck9s/x8Tc/+38GMA41eP/0jZ+P9mqV8BgZWVAO6FDAHjzCMA0HMaAWYI6gBwWI8BkPkOAPCerP5kcHcAwo2Z/ig4U/95sC4AKjVM/56/mgBb0VwArQ0QAQVI4v/M/pUAULjPAGQJev52Zav//MsA/qDPNgA4SPkBOIwN/wpAa/5bZTT/4bX4AYv/hADmkREA6TgXAHcB8f/VqZf/Y2MJ/rkPv/+tZ20Brg37/7JYB/4bO0T/CiEC//hhOwAaHpIBsJMKAF95zwG8WBgAuV7+/nM3yQAYMkYAeDUGAI5CkgDk4vn/aMDeAa1E2wCiuCT/j2aJ/50LFwB9LWIA613h/jhwoP9GdPMBmfk3/4EnEQHxUPQAV0UVAV7kSf9OQkH/wuPnAD2SV/+tmxf/cHTb/tgmC/+DuoUAXtS7AGQvWwDM/q//3hLX/q1EbP/j5E//Jt3VAKPjlv4fvhIAoLMLAQpaXv/crlgAo9Pl/8eINACCX93/jLzn/otxgP91q+z+MdwU/zsUq//kbbwAFOEg/sMQrgDj/ogBhydpAJZNzv/S7uIAN9SE/u85fACqwl3/+RD3/xiXPv8KlwoAT4uy/3jyygAa29UAPn0j/5ACbP/mIVP/US3YAeA+EQDW2X0AYpmZ/7Owav6DXYr/bT4k/7J5IP94/EYA3PglAMxYZwGA3Pv/7OMHAWoxxv88OGsAY3LuANzMXgFJuwEAWZoiAE7Zpf8Ow/n/Ceb9/82H9QAa/Af/VM0bAYYCcAAlniAA51vt/7+qzP+YB94AbcAxAMGmkv/oE7X/aY40/2cQGwH9yKUAw9kE/zS9kP97m6D+V4I2/054Pf8OOCkAGSl9/1eo9QDWpUYA1KkG/9vTwv5IXaT/xSFn/yuOjQCD4awA9GkcAERE4QCIVA3/gjko/otNOABUljUANl+dAJANsf5fc7oAdRd2//Sm8f8LuocAsmrL/2HaXQAr/S0ApJgEAIt27wBgARj+65nT/6huFP8y77AAcinoAMH6NQD+oG/+iHop/2FsQwDXmBf/jNHUACq9owDKKjL/amq9/75E2f/pOnUA5dzzAcUDBAAleDb+BJyG/yQ9q/6liGT/1OgOAFquCgDYxkH/DANAAHRxc//4ZwgA530S/6AcxQAeuCMB30n5/3sULv6HOCX/rQ3lAXehIv/1PUkAzX1wAIlohgDZ9h7/7Y6PAEGfZv9spL4A23Wt/yIleP7IRVAAH3za/koboP+6msf/R8f8AGhRnwERyCcA0z3AARruWwCU2QwAO1vV/wtRt/+B5nr/csuRAXe0Qv9IirQA4JVqAHdSaP/QjCsAYgm2/81lhv8SZSYAX8Wm/8vxkwA+0JH/hfb7AAKpDgAN97gAjgf+ACTIF/9Yzd8AW4E0/xW6HgCP5NIB9+r4/+ZFH/6wuof/7s00AYtPKwARsNn+IPNDAPJv6QAsIwn/43JRAQRHDP8mab8AB3Uy/1FPEAA/REH/nSRu/03xA//iLfsBjhnOAHh70QEc/u7/BYB+/1ve1/+iD78AVvBJAIe5Uf4s8aMA1NvS/3CimwDPZXYAqEg4/8QFNABIrPL/fhad/5JgO/+ieZj+jBBfAMP+yP5SlqIAdyuR/sysTv+m4J8AaBPt//V+0P/iO9UAddnFAJhI7QDcHxf+Dlrn/7zUQAE8Zfb/VRhWAAGxbQCSUyABS7bAAHfx4AC57Rv/uGVSAeslTf/9hhMA6PZ6ADxqswDDCwwAbULrAX1xOwA9KKQAr2jwAAIvu/8yDI0Awou1/4f6aABhXN7/2ZXJ/8vxdv9Pl0MAeo7a/5X17wCKKsj+UCVh/3xwp/8kilf/gh2T//FXTv/MYRMBsdEW//fjf/5jd1P/1BnGARCzswCRTaz+WZkO/9q9pwBr6Tv/IyHz/ixwcP+hf08BzK8KACgViv5odOQAx1+J/4W+qP+SpeoBt2MnALfcNv7/3oUAott5/j/vBgDhZjb/+xL2AAQigQGHJIMAzjI7AQ9htwCr2If/ZZgr/5b7WwAmkV8AIswm/rKMU/8ZgfP/TJAlAGokGv52kKz/RLrl/2uh1f8uo0T/lar9ALsRDwDaoKX/qyP2AWANEwCly3UA1mvA//R7sQFkA2gAsvJh//tMgv/TTSoB+k9G/z/0UAFpZfYAPYg6Ae5b1QAOO2L/p1RNABGELv45r8X/uT64AExAzwCsr9D+r0olAIob0/6UfcIACllRAKjLZf8r1dEB6/U2AB4j4v8JfkYA4n1e/px1FP85+HAB5jBA/6RcpgHg1ub/JHiPADcIK//7AfUBamKlAEprav41BDb/WrKWAQN4e//0BVkBcvo9//6ZUgFNDxEAOe5aAV/f5gDsNC/+Z5Sk/3nPJAESELn/SxRKALsLZQAuMIH/Fu/S/03sgf9vTcz/PUhh/8fZ+/8q18wAhZHJ/znmkgHrZMYAkkkj/mzGFP+2T9L/UmeIAPZssAAiETz/E0py/qiqTv+d7xT/lSmoADp5HABPs4b/53mH/67RYv/zer4Aq6bNANR0MAAdbEL/ot62AQ53FQDVJ/n//t/k/7elxgCFvjAAfNBt/3evVf8J0XkBMKu9/8NHhgGI2zP/tluN/jGfSAAjdvX/cLrj/zuJHwCJLKMAcmc8/gjVlgCiCnH/wmhIANyDdP+yT1wAy/rV/l3Bvf+C/yL+1LyXAIgRFP8UZVP/1M6mAOXuSf+XSgP/qFfXAJu8hf+mgUkA8E+F/7LTUf/LSKP+wailAA6kx/4e/8wAQUhbAaZKZv/IKgD/wnHj/0IX0ADl2GT/GO8aAArpPv97CrIBGiSu/3fbxwEto74AEKgqAKY5xv8cGhoAfqXnAPtsZP895Xn/OnaKAEzPEQANInD+WRCoACXQaf8jydf/KGpl/gbvcgAoZ+L+9n9u/z+nOgCE8I4ABZ5Y/4FJnv9eWZIA5jaSAAgtrQBPqQEAc7r3AFRAgwBD4P3/z71AAJocUQEtuDb/V9Tg/wBgSf+BIesBNEJQ//uum/8EsyUA6qRd/l2v/QDGRVf/4GouAGMd0gA+vHL/LOoIAKmv9/8XbYn/5bYnAMClXv71ZdkAv1hgAMReY/9q7gv+NX7zAF4BZf8ukwIAyXx8/40M2gANpp0BMPvt/5v6fP9qlJL/tg3KABw9pwDZmAj+3IIt/8jm/wE3QVf/Xb9h/nL7DgAgaVwBGs+NABjPDf4VMjD/upR0/9Mr4QAlIqL+pNIq/0QXYP+21gj/9XWJ/0LDMgBLDFP+UIykAAmlJAHkbuMA8RFaARk01AAG3wz/i/M5AAxxSwH2t7//1b9F/+YPjgABw8T/iqsv/0A/agEQqdb/z644AVhJhf+2hYwAsQ4Z/5O4Nf8K46H/eNj0/0lN6QCd7osBO0HpAEb72AEpuJn/IMtwAJKT/QBXZW0BLFKF//SWNf9emOj/O10n/1iT3P9OUQ0BIC/8/6ATcv9dayf/dhDTAbl30f/j23/+WGns/6JuF/8kpm7/W+zd/0LqdABvE/T+CukaACC3Bv4Cv/IA2pw1/ik8Rv+o7G8Aebl+/+6Oz/83fjQA3IHQ/lDMpP9DF5D+2ihs/3/KpADLIQP/Ap4AACVgvP/AMUoAbQQAAG+nCv5b2of/y0Kt/5bC4gDJ/Qb/rmZ5AM2/bgA1wgQAUSgt/iNmj/8MbMb/EBvo//xHugGwbnIAjgN1AXFNjgATnMUBXC/8ADXoFgE2EusALiO9/+zUgQACYND+yO7H/zuvpP+SK+cAwtk0/wPfDACKNrL+VevPAOjPIgAxNDL/pnFZ/wot2P8+rRwAb6X2AHZzW/+AVDwAp5DLAFcN8wAWHuQBsXGS/4Gq5v78mYH/keErAEbnBf96aX7+VvaU/24lmv7RA1sARJE+AOQQpf833fn+stJbAFOS4v5FkroAXdJo/hAZrQDnuiYAvXqM//sNcP9pbl0A+0iqAMAX3/8YA8oB4V3kAJmTx/5tqhYA+GX2/7J8DP+y/mb+NwRBAH3WtAC3YJMALXUX/oS/+QCPsMv+iLc2/5LqsQCSZVb/LHuPASHRmADAWin+Uw99/9WsUgDXqZAAEA0iACDRZP9UEvkBxRHs/9m65gAxoLD/b3Zh/+1o6wBPO1z+RfkL/yOsSgETdkQA3nyl/7RCI/9WrvYAK0pv/36QVv/k6lsA8tUY/kUs6//ctCMACPgH/2YvXP/wzWb/cearAR+5yf/C9kb/ehG7AIZGx/+VA5b/dT9nAEFoe//UNhMBBo1YAFOG8/+INWcAqRu0ALExGABvNqcAwz3X/x8BbAE8KkYAuQOi/8KVKP/2fyb+vncm/z13CAFgodv/KsvdAbHypP/1nwoAdMQAAAVdzf6Af7MAfe32/5Wi2f9XJRT+jO7AAAkJwQBhAeIAHSYKAACIP//lSNL+JoZc/07a0AFoJFT/DAXB//KvPf+/qS4Bs5OT/3G+i/59rB8AA0v8/tckDwDBGxgB/0WV/26BdgDLXfkAiolA/iZGBgCZdN4AoUp7AMFjT/92O17/PQwrAZKxnQAuk78AEP8mAAszHwE8OmL/b8JNAZpb9ACMKJABrQr7AMvRMv5sgk4A5LRaAK4H+gAfrjwAKaseAHRjUv92wYv/u63G/tpvOAC5e9gA+Z40ADS0Xf/JCVv/OC2m/oSby/866G4ANNNZ//0AogEJV7cAkYgsAV569QBVvKsBk1zGAAAIaAAeX64A3eY0Aff36/+JrjX/IxXM/0fj1gHoUsIACzDj/6pJuP/G+/z+LHAiAINlg/9IqLsAhId9/4poYf/uuKj/82hU/4fY4v+LkO0AvImWAVA4jP9Wqaf/wk4Z/9wRtP8RDcEAdYnU/43glwAx9K8AwWOv/xNjmgH/QT7/nNI3//L0A//6DpUAnljZ/53Phv776BwALpz7/6s4uP/vM+oAjoqD/xn+8wEKycIAP2FLANLvogDAyB8BddbzABhH3v42KOj/TLdv/pAOV//WT4j/2MTUAIQbjP6DBf0AfGwT/xzXSwBM3jf+6bY/AESrv/40b97/CmlN/1Cq6wCPGFj/Led5AJSB4AE99lQA/S7b/+9MIQAxlBL+5iVFAEOGFv6Om14AH53T/tUqHv8E5Pf+/LAN/ycAH/7x9P//qi0K/v3e+QDecoQA/y8G/7SjswFUXpf/WdFS/uU0qf/V7AAB1jjk/4d3l/9wycEAU6A1/gaXQgASohEA6WFbAIMFTgG1eDX/dV8//+11uQC/foj/kHfpALc5YQEvybv/p6V3AS1kfgAVYgb+kZZf/3g2mADRYmgAj28e/riU+QDr2C4A+MqU/zlfFgDy4aMA6ffo/0erE/9n9DH/VGdd/0R59AFS4A0AKU8r//nOp//XNBX+wCAW//dvPABlSib/FltU/h0cDf/G59f+9JrIAN+J7QDThA4AX0DO/xE+9//pg3kBXRdNAM3MNP5RvYgAtNuKAY8SXgDMK4z+vK/bAG9ij/+XP6L/0zJH/hOSNQCSLVP+slLu/xCFVP/ixl3/yWEU/3h2I/9yMuf/ouWc/9MaDAByJ3P/ztSGAMXZoP90gV7+x9fb/0vf+QH9dLX/6Ndo/+SC9v+5dVYADgUIAO8dPQHtV4X/fZKJ/syo3wAuqPUAmmkWANzUof9rRRj/idq1//FUxv+CetP/jQiZ/76xdgBgWbIA/xAw/npgaf91Nuj/In5p/8xDpgDoNIr/05MMABk2BwAsD9f+M+wtAL5EgQFqk+EAHF0t/uyND/8RPaEA3HPAAOyRGP5vqKkA4Do//3+kvABS6ksB4J6GANFEbgHZptkARuGmAbvBj/8QB1j/Cs2MAHXAnAEROCYAG3xsAavXN/9f/dQAm4eo//aymf6aREoA6D1g/mmEOwAhTMcBvbCC/wloGf5Lxmb/6QFwAGzcFP9y5kYAjMKF/zmepP6SBlD/qcRhAVW3ggBGnt4BO+3q/2AZGv/or2H/C3n4/lgjwgDbtPz+SgjjAMPjSQG4bqH/MemkAYA1LwBSDnn/wb46ADCudf+EFyAAKAqGARYzGf/wC7D/bjmSAHWP7wGdZXb/NlRMAM24Ev8vBEj/TnBV/8EyQgFdEDT/CGmGAAxtSP86nPsAkCPMACygdf4ya8IAAUSl/29uogCeUyj+TNbqADrYzf+rYJP/KONyAbDj8QBG+bcBiFSL/zx69/6PCXX/sa6J/kn3jwDsuX7/Phn3/y1AOP+h9AYAIjk4AWnKUwCAk9AABmcK/0qKQf9hUGT/1q4h/zKGSv9ul4L+b1SsAFTHS/74O3D/CNiyAQm3XwDuGwj+qs3cAMPlhwBiTO3/4lsaAVLbJ//hvscB2ch5/1GzCP+MQc4Ass9X/vr8Lv9oWW4B/b2e/5DWnv+g9Tb/NbdcARXIwv+SIXEB0QH/AOtqK/+nNOgAneXdADMeGQD63RsBQZNX/097xABBxN//TCwRAVXxRADKt/n/QdTU/wkhmgFHO1AAr8I7/41ICQBkoPQA5tA4ADsZS/5QwsIAEgPI/qCfcwCEj/cBb105/zrtCwGG3of/eqNsAXsrvv/7vc7+ULZI/9D24AERPAkAoc8mAI1tWwDYD9P/iE5uAGKjaP8VUHn/rbK3AX+PBABoPFL+1hAN/2DuIQGelOb/f4E+/zP/0v8+jez+nTfg/3In9ADAvPr/5Ew1AGJUUf+tyz3+kzI3/8zrvwA0xfQAWCvT/hu/dwC855oAQlGhAFzBoAH643gAezfiALgRSACFqAr+Foec/ykZZ/8wyjoAupVR/7yG7wDrtb3+2Yu8/0owUgAu2uUAvf37ADLlDP/Tjb8BgPQZ/6nnev5WL73/hLcX/yWylv8zif0AyE4fABZpMgCCPAAAhKNb/hfnuwDAT+8AnWak/8BSFAEYtWf/8AnqAAF7pP+F6QD/yvLyADy69QDxEMf/4HSe/r99W//gVs8AeSXn/+MJxv8Pme//eejZ/ktwUgBfDDn+M9Zp/5TcYQHHYiQAnNEM/grUNADZtDf+1Kro/9gUVP+d+ocAnWN//gHOKQCVJEYBNsTJ/1d0AP7rq5YAG6PqAMqHtADQXwD+e5xdALc+SwCJ67YAzOH//9aL0v8Ccwj/HQxvADScAQD9Ffv/JaUf/gyC0wBqEjX+KmOaAA7ZPf7YC1z/yMVw/pMmxwAk/Hj+a6lNAAF7n//PS2YAo6/EACwB8AB4urD+DWJM/+188f/okrz/yGDgAMwfKQDQyA0AFeFg/6+cxAD30H4APrj0/gKrUQBVc54ANkAt/xOKcgCHR80A4y+TAdrnQgD90RwA9A+t/wYPdv4QltD/uRYy/1Zwz/9LcdcBP5Ir/wThE/7jFz7/Dv/W/i0Izf9XxZf+0lLX//X49/+A+EYA4fdXAFp4RgDV9VwADYXiAC+1BQFco2n/Bh6F/uiyPf/mlRj/EjGeAORkPf508/v/TUtcAVHbk/9Mo/7+jdX2AOglmP5hLGQAySUyAdT0OQCuq7f/+UpwAKacHgDe3WH/811J/vtlZP/Y2V3//oq7/46+NP87y7H/yF40AHNynv+lmGgBfmPi/3ad9AFryBAAwVrlAHkGWACcIF3+ffHT/w7tnf+lmhX/uOAW//oYmP9xTR8A96sX/+2xzP80iZH/wrZyAODqlQAKb2cByYEEAO6OTgA0Bij/btWl/jzP/QA+10UAYGEA/zEtygB4eRb/64swAcYtIv+2MhsBg9Jb/y42gACve2n/xo1O/kP07//1Nmf+Tiby/wJc+f77rlf/iz+QABhsG/8iZhIBIhaYAELldv4yj2MAkKmVAXYemACyCHkBCJ8SAFpl5v+BHXcARCQLAei3NwAX/2D/oSnB/z+L3gAPs/MA/2QP/1I1hwCJOZUBY/Cq/xbm5P4xtFL/PVIrAG712QDHfT0ALv00AI3F2wDTn8EAN3lp/rcUgQCpd6r/y7KL/4cotv+sDcr/QbKUAAjPKwB6NX8BSqEwAOPWgP5WC/P/ZFYHAfVEhv89KxUBmFRe/748+v7vduj/1oglAXFMa/9daGQBkM4X/26WmgHkZ7kA2jEy/odNi/+5AU4AAKGU/2Ed6f/PlJX/oKgAAFuAq/8GHBP+C2/3ACe7lv+K6JUAdT5E/z/YvP/r6iD+HTmg/xkM8QGpPL8AIION/+2fe/9exV7+dP4D/1yzYf55YVz/qnAOABWV+AD44wMAUGBtAEvASgEMWuL/oWpEAdByf/9yKv/+ShpK//ezlv55jDwAk0bI/9Yoof+hvMn/jUGH//Jz/AA+L8oAtJX//oI37QClEbr/CqnCAJxt2v9wjHv/aIDf/rGObP95Jdv/gE0S/29sFwFbwEsArvUW/wTsPv8rQJkB463+AO16hAF/Wbr/jlKA/vxUrgBas7EB89ZX/2c8ov/Qgg7/C4KLAM6B2/9e2Z3/7+bm/3Rzn/6ka18AM9oCAdh9xv+MyoD+C19E/zcJXf6umQb/zKxgAEWgbgDVJjH+G1DVAHZ9cgBGRkP/D45J/4N6uf/zFDL+gu0oANKfjAHFl0H/VJlCAMN+WgAQ7uwBdrtm/wMYhf+7ReYAOMVcAdVFXv9QiuUBzgfmAN5v5gFb6Xf/CVkHAQJiAQCUSoX/M/a0/+SxcAE6vWz/wsvt/hXRwwCTCiMBVp3iAB+ji/44B0v/Plp0ALU8qQCKotT+UacfAM1acP8hcOMAU5d1AbHgSf+ukNn/5sxP/xZN6P9yTuoA4Dl+/gkxjQDyk6UBaLaM/6eEDAF7RH8A4VcnAftsCADGwY8BeYfP/6wWRgAyRHT/Za8o//hp6QCmywcAbsXaANf+Gv6o4v0AH49gAAtnKQC3gcv+ZPdK/9V+hADSkywAx+obAZQvtQCbW54BNmmv/wJOkf5mml8AgM9//jR87P+CVEcA3fPTAJiqzwDeascAt1Re/lzIOP+KtnMBjmCSAIWI5ABhEpYAN/tCAIxmBADKZ5cAHhP4/zO4zwDKxlkAN8Xh/qlf+f9CQUT/vOp+AKbfZAFw7/QAkBfCADontgD0LBj+r0Sz/5h2mgGwooIA2XLM/q1+Tv8h3h7/JAJb/wKP8wAJ69cAA6uXARjX9f+oL6T+8ZLPAEWBtABE83EAkDVI/vstDgAXbqgARERP/25GX/6uW5D/Ic5f/4kpB/8Tu5n+I/9w/wmRuf4ynSUAC3AxAWYIvv/q86kBPFUXAEonvQB0Me8ArdXSAC6hbP+fliUAxHi5/yJiBv+Zwz7/YeZH/2Y9TAAa1Oz/pGEQAMY7kgCjF8QAOBg9ALViwQD7k+X/Yr0Y/y42zv/qUvYAt2cmAW0+zAAK8OAAkhZ1/46aeABF1CMA0GN2AXn/A/9IBsIAdRHF/30PFwCaT5kA1l7F/7k3k/8+/k7+f1KZAG5mP/9sUqH/abvUAVCKJwA8/13/SAy6ANL7HwG+p5D/5CwT/oBD6ADW+Wv+iJFW/4QusAC9u+P/0BaMANnTdAAyUbr+i/ofAB5AxgGHm2QAoM4X/rui0/8QvD8A/tAxAFVUvwDxwPL/mX6RAeqiov/mYdgBQId+AL6U3wE0ACv/HCe9AUCI7gCvxLkAYuLV/3+f9AHirzwAoOmOAbTzz/9FmFkBH2UVAJAZpP6Lv9EAWxl5ACCTBQAnunv/P3Pm/12nxv+P1dz/s5wT/xlCegDWoNn/Ai0+/2pPkv4ziWP/V2Tn/6+R6P9luAH/rgl9AFIloQEkco3/MN6O//W6mgAFrt3+P3Kb/4c3oAFQH4cAfvqzAezaLQAUHJEBEJNJAPm9hAERvcD/347G/0gUD//6Ne3+DwsSABvTcf7Vazj/rpOS/2B+MAAXwW0BJaJeAMed+f4YgLv/zTGy/l2kKv8rd+sBWLft/9rSAf9r/ioA5gpj/6IA4gDb7VsAgbLLANAyX/7O0F//979Z/m7qT/+lPfMAFHpw//b2uf5nBHsA6WPmAdtb/P/H3hb/s/Xp/9Px6gBv+sD/VVSIAGU6Mv+DrZz+dy0z/3bpEP7yWtYAXp/bAQMD6v9iTFz+UDbmAAXk5/41GN//cTh2ARSEAf+r0uwAOPGe/7pzE/8I5a4AMCwAAXJypv8GSeL/zVn0AInjSwH4rTgASnj2/ncDC/9ReMb/iHpi/5Lx3QFtwk7/3/FGAdbIqf9hvi//L2eu/2NcSP526bT/wSPp/hrlIP/e/MYAzCtH/8dUrACGZr4Ab+5h/uYo5gDjzUD+yAzhAKYZ3gBxRTP/j58YAKe4SgAd4HT+ntDpAMF0fv/UC4X/FjqMAcwkM//oHisA60a1/0A4kv6pElT/4gEN/8gysP801fX+qNFhAL9HNwAiTpwA6JA6AblKvQC6jpX+QEV//6HLk/+wl78AiOfL/qO2iQChfvv+6SBCAETPQgAeHCUAXXJgAf5c9/8sq0UAyncL/7x2MgH/U4j/R1IaAEbjAgAg63kBtSmaAEeG5f7K/yQAKZgFAJo/Sf8itnwAed2W/xrM1QEprFcAWp2S/22CFABHa8j/82a9AAHDkf4uWHUACM7jAL9u/f9tgBT+hlUz/4mxcAHYIhb/gxDQ/3mVqgByExcBplAf/3HwegDos/oARG60/tKqdwDfbKT/z0/p/xvl4v7RYlH/T0QHAIO5ZACqHaL/EaJr/zkVCwFkyLX/f0GmAaWGzABop6gAAaRPAJKHOwFGMoD/ZncN/uMGhwCijrP/oGTeABvg2wGeXcP/6o2JABAYff/uzi//YRFi/3RuDP9gc00AW+Po//j+T/9c5Qb+WMaLAM5LgQD6Tc7/jfR7AYpF3AAglwYBg6cW/+1Ep/7HvZYAo6uK/zO8Bv9fHYn+lOKzALVr0P+GH1L/l2Ut/4HK4QDgSJMAMIqX/8NAzv7t2p4Aah2J/v296f9nDxH/wmH/ALItqf7G4ZsAJzB1/4dqcwBhJrUAli9B/1OC5f72JoEAXO+a/ltjfwChbyH/7tny/4O5w//Vv57/KZbaAISpgwBZVPwBq0aA/6P4y/4BMrT/fExVAftvUABjQu//mu22/91+hf5KzGP/QZN3/2M4p/9P+JX/dJvk/+0rDv5FiQv/FvrxAVt6j//N+fMA1Bo8/zC2sAEwF7//y3mY/i1K1f8+WhL+9aPm/7lqdP9TI58ADCEC/1AiPgAQV67/rWVVAMokUf6gRcz/QOG7ADrOXgBWkC8A5Vb1AD+RvgElBScAbfsaAImT6gCieZH/kHTO/8Xouf+3voz/SQz+/4sU8v+qWu//YUK7//W1h/7eiDQA9QUz/ssvTgCYZdgASRd9AP5gIQHr0kn/K9FYAQeBbQB6aOT+qvLLAPLMh//KHOn/QQZ/AJ+QRwBkjF8ATpYNAPtrdgG2On3/ASZs/4290f8Im30BcaNb/3lPvv+G72z/TC/4AKPk7wARbwoAWJVL/9fr7wCnnxj/L5ds/2vRvADp52P+HMqU/64jiv9uGET/AkW1AGtmUgBm7QcAXCTt/92iUwE3ygb/h+qH/xj63gBBXqj+9fjS/6dsyf7/oW8AzQj+AIgNdABksIT/K9d+/7GFgv+eT5QAQ+AlAQzOFf8+Im4B7Wiv/1CEb/+OrkgAVOW0/mmzjABA+A//6YoQAPVDe/7aedT/P1/aAdWFif+PtlL/MBwLAPRyjQHRr0z/nbWW/7rlA/+knW8B572LAHfKvv/aakD/ROs//mAarP+7LwsB1xL7/1FUWQBEOoAAXnEFAVyB0P9hD1P+CRy8AO8JpAA8zZgAwKNi/7gSPADZtosAbTt4/wTA+wCp0vD/Jaxc/pTT9f+zQTQA/Q1zALmuzgFyvJX/7VqtACvHwP9YbHEANCNMAEIZlP/dBAf/l/Fy/77R6ABiMscAl5bV/xJKJAE1KAcAE4dB/xqsRQCu7VUAY18pAAM4EAAnoLH/yGra/rlEVP9buj3+Q4+N/w30pv9jcsYAx26j/8ESugB87/YBbkQWAALrLgHUPGsAaSppAQ7mmAAHBYMAjWia/9UDBgCD5KL/s2QcAed7Vf/ODt8B/WDmACaYlQFiiXoA1s0D/+KYs/8GhYkAnkWM/3Gimv+086z/G71z/48u3P/VhuH/fh1FALwriQHyRgkAWsz//+eqkwAXOBP+OH2d/zCz2v9Ptv3/JtS/ASnrfABglxwAh5S+AM35J/40YIj/1CyI/0PRg//8ghf/24AU/8aBdgBsZQsAsgWSAT4HZP+17F7+HBqkAEwWcP94Zk8AysDlAciw1wApQPT/zrhOAKctPwGgIwD/OwyO/8wJkP/bXuUBehtwAL1pbf9A0Er/+383AQLixgAsTNEAl5hN/9IXLgHJq0X/LNPnAL4l4P/1xD7/qbXe/yLTEQB38cX/5SOYARVFKP+y4qEAlLPBANvC/gEozjP/51z6AUOZqgAVlPEAqkVS/3kS5/9ccgMAuD7mAOHJV/+SYKL/tfLcAK273QHiPqr/OH7ZAXUN4/+zLO8AnY2b/5DdUwDr0dAAKhGlAftRhQB89cn+YdMY/1PWpgCaJAn/+C9/AFrbjP+h2Sb+1JM//0JUlAHPAwEA5oZZAX9Oev/gmwH/UohKALKc0P+6GTH/3gPSAeWWvv9VojT/KVSN/0l7VP5dEZYAdxMcASAW1/8cF8z/jvE0/+Q0fQAdTM8A16f6/q+k5gA3z2kBbbv1/6Es3AEpZYD/pxBeAF3Wa/92SAD+UD3q/3mvfQCLqfsAYSeT/vrEMf+ls27+30a7/xaOfQGas4r/drAqAQqumQCcXGYAqA2h/48QIAD6xbT/y6MsAVcgJAChmRT/e/wPABnjUAA8WI4AERbJAZrNTf8nPy8ACHqNAIAXtv7MJxP/BHAd/xckjP/S6nT+NTI//3mraP+g214AV1IO/ucqBQCli3/+Vk4mAII8Qv7LHi3/LsR6Afk1ov+Ij2f+19JyAOcHoP6pmCr/by32AI6Dh/+DR8z/JOILAAAc8v/hitX/9y7Y/vUDtwBs/EoBzhow/8029v/TxiT/eSMyADTYyv8mi4H+8kmUAEPnjf8qL8wATnQZAQThv/8Gk+QAOlixAHql5f/8U8n/4KdgAbG4nv/yabMB+MbwAIVCywH+JC8ALRhz/3c+/gDE4br+e42sABpVKf/ib7cA1eeXAAQ7B//uipQAQpMh/x/2jf/RjXT/aHAfAFihrABT1+b+L2+XAC0mNAGELcwAioBt/ul1hv/zvq3+8ezwAFJ/7P4o36H/brbh/3uu7wCH8pEBM9GaAJYDc/7ZpPz/N5xFAVRe///oSS0BFBPU/2DFO/5g+yEAJsdJAUCs9/91dDj/5BESAD6KZwH25aT/9HbJ/lYgn/9tIokBVdO6AArBwf56wrEAeu5m/6LaqwBs2aEBnqoiALAvmwG15Av/CJwAABBLXQDOYv8BOpojAAzzuP5DdUL/5uV7AMkqbgCG5LL+umx2/zoTmv9SqT7/co9zAe/EMv+tMMH/kwJU/5aGk/5f6EkAbeM0/r+JCgAozB7+TDRh/6TrfgD+fLwASrYVAXkdI//xHgf+VdrW/wdUlv5RG3X/oJ+Y/kIY3f/jCjwBjYdmANC9lgF1s1wAhBaI/3jHHAAVgU/+tglBANqjqQD2k8b/ayaQAU6vzf/WBfr+L1gd/6QvzP8rNwb/g4bP/nRk1gBgjEsBatyQAMMgHAGsUQX/x7M0/yVUywCqcK4ACwRbAEX0GwF1g1wAIZiv/4yZa//7hyv+V4oE/8bqk/55mFT/zWWbAZ0JGQBIahH+bJkA/73lugDBCLD/rpXRAO6CHQDp1n4BPeJmADmjBAHGbzP/LU9OAXPSCv/aCRn/novG/9NSu/5QhVMAnYHmAfOFhv8oiBAATWtP/7dVXAGxzMoAo0eT/5hFvgCsM7wB+tKs/9PycQFZWRr/QEJv/nSYKgChJxv/NlD+AGrRcwFnfGEA3eZi/x/nBgCywHj+D9nL/3yeTwBwkfcAXPowAaO1wf8lL47+kL2l/y6S8AAGS4AAKZ3I/ld51QABcewABS36AJAMUgAfbOcA4e93/6cHvf+75IT/br0iAF4szAGiNMUATrzx/jkUjQD0ki8BzmQzAH1rlP4bw00AmP1aAQePkP8zJR8AIncm/wfFdgCZvNMAlxR0/vVBNP+0/W4BL7HRAKFjEf923soAfbP8AXs2fv+ROb8AN7p5AArzigDN0+X/fZzx/pScuf/jE7z/fCkg/x8izv4ROVMAzBYl/ypgYgB3ZrgBA74cAG5S2v/IzMD/yZF2AHXMkgCEIGIBwMJ5AGqh+AHtWHwAF9QaAM2rWv/4MNgBjSXm/3zLAP6eqB7/1vgVAHC7B/9Lhe//SuPz//qTRgDWeKIApwmz/xaeEgDaTdEBYW1R//Qhs/85NDn/QazS//lH0f+Oqe4Anr2Z/67+Z/5iIQ4AjUzm/3GLNP8POtQAqNfJ//jM1wHfRKD/OZq3/i/neQBqpokAUYiKAKUrMwDniz0AOV87/nZiGf+XP+wBXr76/6m5cgEF+jr/S2lhAdffhgBxY6MBgD5wAGNqkwCjwwoAIc22ANYOrv+BJuf/NbbfAGIqn//3DSgAvNKxAQYVAP//PZT+iS2B/1kadP5+JnIA+zLy/nmGgP/M+af+pevXAMqx8wCFjT4A8IK+AW6v/wAAFJIBJdJ5/wcnggCO+lT/jcjPAAlfaP8L9K4Ahuh+AKcBe/4QwZX/6OnvAdVGcP/8dKD+8t7c/81V4wAHuToAdvc/AXRNsf8+9cj+PxIl/2s16P4y3dMAotsH/gJeKwC2Prb+oE7I/4eMqgDruOQArzWK/lA6Tf+YyQIBP8QiAAUeuACrsJoAeTvOACZjJwCsUE3+AIaXALoh8f5e/d//LHL8AGx+Of/JKA3/J+Ub/yfvFwGXeTP/mZb4AArqrv929gT+yPUmAEWh8gEQspYAcTiCAKsfaQAaWGz/MSpqAPupQgBFXZUAFDn+AKQZbwBavFr/zATFACjVMgHUYIT/WIq0/uSSfP+49vcAQXVW//1m0v7+eSQAiXMD/zwY2ACGEh0AO+JhALCORwAH0aEAvVQz/pv6SADVVOv/Ld7gAO6Uj/+qKjX/Tqd1ALoAKP99sWf/ReFCAOMHWAFLrAYAqS3jARAkRv8yAgn/i8EWAI+35/7aRTIA7DihAdWDKgCKkSz+iOUo/zE/I/89kfX/ZcAC/uincQCYaCYBebnaAHmL0/538CMAQb3Z/ruzov+gu+YAPvgO/zxOYQD/96P/4Ttb/2tHOv/xLyEBMnXsANuxP/70WrMAI8LX/71DMv8Xh4EAaL0l/7k5wgAjPuf/3PhsAAznsgCPUFsBg11l/5AnAgH/+rIABRHs/osgLgDMvCb+9XM0/79xSf6/bEX/FkX1ARfLsgCqY6oAQfhvACVsmf9AJUUAAFg+/lmUkP+/ROAB8Sc1ACnL7f+RfsL/3Sr9/xljlwBh/d8BSnMx/wavSP87sMsAfLf5AeTkYwCBDM/+qMDD/8ywEP6Y6qsATSVV/yF4h/+OwuMBH9Y6ANW7ff/oLjz/vnQq/peyE/8zPu3+zOzBAMLoPACsIp3/vRC4/mcDX/+N6ST+KRkL/xXDpgB29S0AQ9WV/58MEv+7pOMBoBkFAAxOwwErxeEAMI4p/sSbPP/fxxIBkYicAPx1qf6R4u4A7xdrAG21vP/mcDH+Sart/+e34/9Q3BQAwmt/AX/NZQAuNMUB0qsk/1gDWv84l40AYLv//ypOyAD+RkYB9H2oAMxEigF810YAZkLI/hE05AB13I/+y/h7ADgSrv+6l6T/M+jQAaDkK//5HRkBRL4/AA0AAAAA/wAAAAD1AAAAAAAA+wAAAAAAAP0AAAAA8wAAAAAHAAAAAAADAAAAAPMAAAAABQAAAAAAAAAACwAAAAAACwAAAADzAAAAAAAA/QAAAAAA/wAAAAADAAAAAPUAAAAAAAAADwAAAAAA/wAAAAD/AAAAAAcAAAAABQBB/IYCCwEBAEGghwILAQEAQcCHAgvxBuDrenw7QbiuFlbj+vGfxGraCY3rnDKx/YZiBRZfSbgAX5yVvKNQjCSx0LFVnIPvWwREXMRYHI6G2CJO3dCfEVfs////////////////////////////////////////f+3///////////////////////////////////////9/7v///////////////////////////////////////39MaWJzb2RpdW1EUkcAAAAACMm882fmCWo7p8qEha5nuyv4lP5y82488TYdXzr1T6XRguatf1IOUR9sPiuMaAWba71B+6vZgx95IX4TGc3gWyKuKNeYL4pCzWXvI5FEN3EvO03sz/vAtbzbiYGl27XpOLVI81vCVjkZ0AW28RHxWZtPGa+kgj+SGIFt2tVeHKtCAgOjmKoH2L5vcEUBW4MSjLLkTr6FMSTitP/Vw30MVW+Je/J0Xb5ysZYWO/6x3oA1Esclpwbcm5Qmac908ZvB0krxnsFpm+TjJU84hke+77XVjIvGncEPZZysd8yhDCR1AitZbyzpLYPkpm6qhHRK1PtBvdypsFy1UxGD2oj5dqvfZu5SUT6YEDK0LW3GMag/IfuYyCcDsOQO777Hf1m/wo+oPfML4MYlpwqTR5Gn1W+CA+BRY8oGcG4OCmcpKRT8L9JGhQq3JybJJlw4IRsu7SrEWvxtLE3fs5WdEw04U95jr4tUcwplqLJ3PLsKanbmru1HLsnCgTs1ghSFLHKSZAPxTKHov6IBMEK8S2YaqJGX+NBwi0vCML5UBqNRbMcYUu/WGeiS0RCpZVUkBpnWKiBxV4U1DvS40bsycKBqEMjQ0rgWwaQZU6tBUQhsNx6Z647fTHdIJ6hIm+G1vLA0Y1rJxbMMHDnLikHjSqrYTnPjY3dPypxbo7iy1vNvLmj8su9d7oKPdGAvF0NvY6V4cqvwoRR4yITsOWQaCALHjCgeYyP6/76Q6b2C3utsUKQVecay96P5vitTcuPyeHHGnGEm6s4+J8oHwsAhx7iG0R7r4M3WfdrqeNFu7n9PffW6bxdyqmfwBqaYyKLFfWMKrg35vgSYPxEbRxwTNQtxG4R9BCP1d9sokyTHQHuryjK8vskVCr6ePEwNEJzEZx1DtkI+y77UxUwqfmX8nCl/Wez61jqrb8tfF1hHSowZRGyAAEHAjwILoQJn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gW5gvikKRRDdxz/vAtaXbtelbwlY58RHxWaSCP5LVXhyrmKoH2AFbgxK+hTEkw30MVXRdvnL+sd6Apwbcm3Txm8HBaZvkhke+78adwQ/MoQwkbyzpLaqEdErcqbBc2oj5dlJRPphtxjGoyCcDsMd/Wb/zC+DGR5Gn1VFjygZnKSkUhQq3JzghGy78bSxNEw04U1RzCmW7Cmp2LsnCgYUscpKh6L+iS2YaqHCLS8KjUWzHGeiS0SQGmdaFNQ70cKBqEBbBpBkIbDceTHdIJ7W8sDSzDBw5SqrYTk/KnFvzby5o7oKPdG9jpXgUeMiECALHjPr/vpDrbFCk96P5vvJ4ccaAAEGwkgILIVNpZ0VkMjU1MTkgbm8gRWQyNTUxOSBjb2xsaXNpb25zAQBBgJMCCyUgkwEAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAEGwkwILnQjGY2Ol+Hx8hO53d5n2e3uN//LyDdZra73eb2+xkcXFVGAwMFACAQEDzmdnqVYrK33n/v4ZtdfXYk2rq+bsdnaaj8rKRR+Cgp2JyclA+n19h+/6+hWyWVnrjkdHyfvw8AtBra3ss9TUZ1+iov1Fr6/qI5ycv1OkpPfkcnKWm8DAW3W3t8Lh/f0cPZOTrkwmJmpsNjZafj8/QfX39wKDzMxPaDQ0XFGlpfTR5eU0+fHxCOJxcZOr2NhzYjExUyoVFT8IBAQMlcfHUkYjI2Wdw8NeMBgYKDeWlqEKBQUPL5qatQ4HBwkkEhI2G4CAm9/i4j3N6+smTicnaX+yss3qdXWfEgkJGx2Dg55YLCx0NBoaLjYbGy3cbm6ytFpa7lugoPukUlL2djs7TbfW1mF9s7POUikpe93j4z5eLy9xE4SEl6ZTU/W50dFoAAAAAMHt7SxAICBg4/z8H3mxsci2W1vt1Gpqvo3Ly0Znvr7Zcjk5S5RKSt6YTEzUsFhY6IXPz0q70NBrxe/vKk+qquXt+/sWhkNDxZpNTddmMzNVEYWFlIpFRc/p+fkQBAICBv5/f4GgUFDweDw8RCWfn7pLqKjjolFR812jo/6AQEDABY+Pij+Skq0hnZ28cDg4SPH19QRjvLzfd7a2wa/a2nVCISFjIBAQMOX//xr98/MOv9LSbYHNzUwYDAwUJhMTNcPs7C++X1/hNZeXoohERMwuFxc5k8TEV1Wnp/L8fn6Cej09R8hkZKy6XV3nMhkZK+Zzc5XAYGCgGYGBmJ5PT9Gj3Nx/RCIiZlQqKn47kJCrC4iIg4xGRsrH7u4pa7i40ygUFDyn3t55vF5e4hYLCx2t29t22+DgO2QyMlZ0OjpOFAoKHpJJSdsMBgYKSCQkbLhcXOSfwsJdvdPTbkOsrO/EYmKmOZGRqDGVlaTT5OQ38nl5i9Xn5zKLyMhDbjc3WdptbbcBjY2MsdXVZJxOTtJJqang2GxstKxWVvrz9PQHz+rqJcplZa/0enqOR66u6RAICBhvurrV8Hh4iEolJW9cLi5yOBwcJFempvFztLTHl8bGUcvo6COh3d186HR0nD4fHyGWS0vdYb293A2Li4YPioqF4HBwkHw+PkJxtbXEzGZmqpBISNgGAwMF9/b2ARwODhLCYWGjajU1X65XV/lpubnQF4aGkZnBwVg6HR0nJ56eudnh4Tjr+PgTK5iYsyIRETPSaWm7qdnZcAeOjokzlJSnLZubtjweHiIVh4eSyenpIIfOzkmqVVX/UCgoeKXf33oDjIyPWaGh+AmJiYAaDQ0XZb+/2tfm5jGEQkLG0GhouIJBQcMpmZmwWi0tdx4PDxF7sLDLqFRU/G27u9YsFhY6CgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABE="),A=g,Y(F).then((g=>WebAssembly.instantiate(g,A))).then((function(A){I(A.instance)}),(A=>{y(`failed to asynchronously prepare wasm: ${A}`),M(A)})),{}}();function T(){function A(){J||(J=!0,e.calledRun=!0,w||(G(l),e.onRuntimeInitialized?.(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)A=e.postRun.shift(),u.unshift(A);var A;G(u)}()))}v>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)A=e.preRun.shift(),d.unshift(A);var A;G(d)}(),v>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),A()}),1)):A()))}if(e._crypto_aead_aegis128l_keybytes=()=>(e._crypto_aead_aegis128l_keybytes=L.g)(),e._crypto_aead_aegis128l_nsecbytes=()=>(e._crypto_aead_aegis128l_nsecbytes=L.h)(),e._crypto_aead_aegis128l_npubbytes=()=>(e._crypto_aead_aegis128l_npubbytes=L.i)(),e._crypto_aead_aegis128l_abytes=()=>(e._crypto_aead_aegis128l_abytes=L.j)(),e._crypto_aead_aegis128l_messagebytes_max=()=>(e._crypto_aead_aegis128l_messagebytes_max=L.k)(),e._crypto_aead_aegis128l_keygen=A=>(e._crypto_aead_aegis128l_keygen=L.l)(A),e._crypto_aead_aegis128l_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_encrypt=L.m)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis128l_encrypt_detached=L.n)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis128l_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt=L.o)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt_detached=L.p)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_keybytes=()=>(e._crypto_aead_aegis256_keybytes=L.q)(),e._crypto_aead_aegis256_nsecbytes=()=>(e._crypto_aead_aegis256_nsecbytes=L.r)(),e._crypto_aead_aegis256_npubbytes=()=>(e._crypto_aead_aegis256_npubbytes=L.s)(),e._crypto_aead_aegis256_abytes=()=>(e._crypto_aead_aegis256_abytes=L.t)(),e._crypto_aead_aegis256_messagebytes_max=()=>(e._crypto_aead_aegis256_messagebytes_max=L.u)(),e._crypto_aead_aegis256_keygen=A=>(e._crypto_aead_aegis256_keygen=L.v)(A),e._crypto_aead_aegis256_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_encrypt=L.w)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis256_encrypt_detached=L.x)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis256_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt=L.y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt_detached=L.z)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aes256gcm_is_available=()=>(e._crypto_aead_aes256gcm_is_available=L.A)(),e._crypto_aead_chacha20poly1305_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_encrypt_detached=L.B)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_encrypt=L.C)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=L.D)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt=L.E)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt_detached=L.F)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt=L.G)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=L.H)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt=L.I)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_chacha20poly1305_ietf_keybytes=L.J)(),e._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_npubbytes=L.K)(),e._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_nsecbytes=L.L)(),e._crypto_aead_chacha20poly1305_ietf_abytes=()=>(e._crypto_aead_chacha20poly1305_ietf_abytes=L.M)(),e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=L.N)(),e._crypto_aead_chacha20poly1305_ietf_keygen=A=>(e._crypto_aead_chacha20poly1305_ietf_keygen=L.O)(A),e._crypto_aead_chacha20poly1305_keybytes=()=>(e._crypto_aead_chacha20poly1305_keybytes=L.P)(),e._crypto_aead_chacha20poly1305_npubbytes=()=>(e._crypto_aead_chacha20poly1305_npubbytes=L.Q)(),e._crypto_aead_chacha20poly1305_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_nsecbytes=L.R)(),e._crypto_aead_chacha20poly1305_abytes=()=>(e._crypto_aead_chacha20poly1305_abytes=L.S)(),e._crypto_aead_chacha20poly1305_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_messagebytes_max=L.T)(),e._crypto_aead_chacha20poly1305_keygen=A=>(e._crypto_aead_chacha20poly1305_keygen=L.U)(A),e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=L.V)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_xchacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt=L.W)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=L.X)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt=L.Y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_keybytes=L.Z)(),e._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_npubbytes=L._)(),e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=L.$)(),e._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_abytes=L.aa)(),e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=L.ba)(),e._crypto_aead_xchacha20poly1305_ietf_keygen=A=>(e._crypto_aead_xchacha20poly1305_ietf_keygen=L.ca)(A),e._crypto_auth_bytes=()=>(e._crypto_auth_bytes=L.da)(),e._crypto_auth_keybytes=()=>(e._crypto_auth_keybytes=L.ea)(),e._crypto_auth=(A,g,I,C,B)=>(e._crypto_auth=L.fa)(A,g,I,C,B),e._crypto_auth_verify=(A,g,I,C,B)=>(e._crypto_auth_verify=L.ga)(A,g,I,C,B),e._crypto_auth_keygen=A=>(e._crypto_auth_keygen=L.ha)(A),e._crypto_box_seedbytes=()=>(e._crypto_box_seedbytes=L.ia)(),e._crypto_box_publickeybytes=()=>(e._crypto_box_publickeybytes=L.ja)(),e._crypto_box_secretkeybytes=()=>(e._crypto_box_secretkeybytes=L.ka)(),e._crypto_box_beforenmbytes=()=>(e._crypto_box_beforenmbytes=L.la)(),e._crypto_box_noncebytes=()=>(e._crypto_box_noncebytes=L.ma)(),e._crypto_box_macbytes=()=>(e._crypto_box_macbytes=L.na)(),e._crypto_box_messagebytes_max=()=>(e._crypto_box_messagebytes_max=L.oa)(),e._crypto_box_seed_keypair=(A,g,I)=>(e._crypto_box_seed_keypair=L.pa)(A,g,I),e._crypto_box_keypair=(A,g)=>(e._crypto_box_keypair=L.qa)(A,g),e._crypto_box_beforenm=(A,g,I)=>(e._crypto_box_beforenm=L.ra)(A,g,I),e._crypto_box_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_detached_afternm=L.sa)(A,g,I,C,B,a,i),e._crypto_box_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_detached=L.ta)(A,g,I,C,B,a,i,r),e._crypto_box_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_easy_afternm=L.ua)(A,g,I,C,B,a),e._crypto_box_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_easy=L.va)(A,g,I,C,B,a,i),e._crypto_box_open_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_open_detached_afternm=L.wa)(A,g,I,C,B,a,i),e._crypto_box_open_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_open_detached=L.xa)(A,g,I,C,B,a,i,r),e._crypto_box_open_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_open_easy_afternm=L.ya)(A,g,I,C,B,a),e._crypto_box_open_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_open_easy=L.za)(A,g,I,C,B,a,i),e._crypto_box_seal=(A,g,I,C,B)=>(e._crypto_box_seal=L.Aa)(A,g,I,C,B),e._crypto_box_seal_open=(A,g,I,C,B,a)=>(e._crypto_box_seal_open=L.Ba)(A,g,I,C,B,a),e._crypto_box_sealbytes=()=>(e._crypto_box_sealbytes=L.Ca)(),e._crypto_generichash_bytes_min=()=>(e._crypto_generichash_bytes_min=L.Da)(),e._crypto_generichash_bytes_max=()=>(e._crypto_generichash_bytes_max=L.Ea)(),e._crypto_generichash_bytes=()=>(e._crypto_generichash_bytes=L.Fa)(),e._crypto_generichash_keybytes_min=()=>(e._crypto_generichash_keybytes_min=L.Ga)(),e._crypto_generichash_keybytes_max=()=>(e._crypto_generichash_keybytes_max=L.Ha)(),e._crypto_generichash_keybytes=()=>(e._crypto_generichash_keybytes=L.Ia)(),e._crypto_generichash_statebytes=()=>(e._crypto_generichash_statebytes=L.Ja)(),e._crypto_generichash=(A,g,I,C,B,a,i)=>(e._crypto_generichash=L.Ka)(A,g,I,C,B,a,i),e._crypto_generichash_init=(A,g,I,C)=>(e._crypto_generichash_init=L.La)(A,g,I,C),e._crypto_generichash_update=(A,g,I,C)=>(e._crypto_generichash_update=L.Ma)(A,g,I,C),e._crypto_generichash_final=(A,g,I)=>(e._crypto_generichash_final=L.Na)(A,g,I),e._crypto_generichash_keygen=A=>(e._crypto_generichash_keygen=L.Oa)(A),e._crypto_hash_bytes=()=>(e._crypto_hash_bytes=L.Pa)(),e._crypto_hash=(A,g,I,C)=>(e._crypto_hash=L.Qa)(A,g,I,C),e._crypto_kdf_bytes_min=()=>(e._crypto_kdf_bytes_min=L.Ra)(),e._crypto_kdf_bytes_max=()=>(e._crypto_kdf_bytes_max=L.Sa)(),e._crypto_kdf_contextbytes=()=>(e._crypto_kdf_contextbytes=L.Ta)(),e._crypto_kdf_keybytes=()=>(e._crypto_kdf_keybytes=L.Ua)(),e._crypto_kdf_derive_from_key=(A,g,I,C,B,a)=>(e._crypto_kdf_derive_from_key=L.Va)(A,g,I,C,B,a),e._crypto_kdf_keygen=A=>(e._crypto_kdf_keygen=L.Wa)(A),e._crypto_kdf_hkdf_sha256_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_init=L.Xa)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_update=L.Ya)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha256_extract_final=L.Za)(A,g),e._crypto_kdf_hkdf_sha256_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_extract=L._a)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keygen=A=>(e._crypto_kdf_hkdf_sha256_keygen=L.$a)(A),e._crypto_kdf_hkdf_sha256_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_expand=L.ab)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keybytes=()=>(e._crypto_kdf_hkdf_sha256_keybytes=L.bb)(),e._crypto_kdf_hkdf_sha256_bytes_min=()=>(e._crypto_kdf_hkdf_sha256_bytes_min=L.cb)(),e._crypto_kdf_hkdf_sha256_bytes_max=()=>(e._crypto_kdf_hkdf_sha256_bytes_max=L.db)(),e._crypto_kdf_hkdf_sha256_statebytes=()=>(e._crypto_kdf_hkdf_sha256_statebytes=L.eb)(),e._crypto_kdf_hkdf_sha512_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_init=L.fb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_update=L.gb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha512_extract_final=L.hb)(A,g),e._crypto_kdf_hkdf_sha512_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_extract=L.ib)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keygen=A=>(e._crypto_kdf_hkdf_sha512_keygen=L.jb)(A),e._crypto_kdf_hkdf_sha512_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_expand=L.kb)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keybytes=()=>(e._crypto_kdf_hkdf_sha512_keybytes=L.lb)(),e._crypto_kdf_hkdf_sha512_bytes_min=()=>(e._crypto_kdf_hkdf_sha512_bytes_min=L.mb)(),e._crypto_kdf_hkdf_sha512_bytes_max=()=>(e._crypto_kdf_hkdf_sha512_bytes_max=L.nb)(),e._crypto_kdf_hkdf_sha512_statebytes=()=>(e._crypto_kdf_hkdf_sha512_statebytes=L.ob)(),e._crypto_kx_seed_keypair=(A,g,I)=>(e._crypto_kx_seed_keypair=L.pb)(A,g,I),e._crypto_kx_keypair=(A,g)=>(e._crypto_kx_keypair=L.qb)(A,g),e._crypto_kx_client_session_keys=(A,g,I,C,B)=>(e._crypto_kx_client_session_keys=L.rb)(A,g,I,C,B),e._crypto_kx_server_session_keys=(A,g,I,C,B)=>(e._crypto_kx_server_session_keys=L.sb)(A,g,I,C,B),e._crypto_kx_publickeybytes=()=>(e._crypto_kx_publickeybytes=L.tb)(),e._crypto_kx_secretkeybytes=()=>(e._crypto_kx_secretkeybytes=L.ub)(),e._crypto_kx_seedbytes=()=>(e._crypto_kx_seedbytes=L.vb)(),e._crypto_kx_sessionkeybytes=()=>(e._crypto_kx_sessionkeybytes=L.wb)(),e._crypto_scalarmult_base=(A,g)=>(e._crypto_scalarmult_base=L.xb)(A,g),e._crypto_scalarmult=(A,g,I)=>(e._crypto_scalarmult=L.yb)(A,g,I),e._crypto_scalarmult_bytes=()=>(e._crypto_scalarmult_bytes=L.zb)(),e._crypto_scalarmult_scalarbytes=()=>(e._crypto_scalarmult_scalarbytes=L.Ab)(),e._crypto_secretbox_keybytes=()=>(e._crypto_secretbox_keybytes=L.Bb)(),e._crypto_secretbox_noncebytes=()=>(e._crypto_secretbox_noncebytes=L.Cb)(),e._crypto_secretbox_macbytes=()=>(e._crypto_secretbox_macbytes=L.Db)(),e._crypto_secretbox_messagebytes_max=()=>(e._crypto_secretbox_messagebytes_max=L.Eb)(),e._crypto_secretbox_keygen=A=>(e._crypto_secretbox_keygen=L.Fb)(A),e._crypto_secretbox_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_detached=L.Gb)(A,g,I,C,B,a,i),e._crypto_secretbox_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_easy=L.Hb)(A,g,I,C,B,a),e._crypto_secretbox_open_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_open_detached=L.Ib)(A,g,I,C,B,a,i),e._crypto_secretbox_open_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_open_easy=L.Jb)(A,g,I,C,B,a),e._crypto_secretstream_xchacha20poly1305_keygen=A=>(e._crypto_secretstream_xchacha20poly1305_keygen=L.Kb)(A),e._crypto_secretstream_xchacha20poly1305_init_push=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_push=L.Lb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_init_pull=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_pull=L.Mb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_rekey=A=>(e._crypto_secretstream_xchacha20poly1305_rekey=L.Nb)(A),e._crypto_secretstream_xchacha20poly1305_push=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_push=L.Ob)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_pull=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_pull=L.Pb)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_statebytes=()=>(e._crypto_secretstream_xchacha20poly1305_statebytes=L.Qb)(),e._crypto_secretstream_xchacha20poly1305_abytes=()=>(e._crypto_secretstream_xchacha20poly1305_abytes=L.Rb)(),e._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(e._crypto_secretstream_xchacha20poly1305_headerbytes=L.Sb)(),e._crypto_secretstream_xchacha20poly1305_keybytes=()=>(e._crypto_secretstream_xchacha20poly1305_keybytes=L.Tb)(),e._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(e._crypto_secretstream_xchacha20poly1305_messagebytes_max=L.Ub)(),e._crypto_secretstream_xchacha20poly1305_tag_message=()=>(e._crypto_secretstream_xchacha20poly1305_tag_message=L.Vb)(),e._crypto_secretstream_xchacha20poly1305_tag_push=()=>(e._crypto_secretstream_xchacha20poly1305_tag_push=L.Wb)(),e._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(e._crypto_secretstream_xchacha20poly1305_tag_rekey=L.Xb)(),e._crypto_secretstream_xchacha20poly1305_tag_final=()=>(e._crypto_secretstream_xchacha20poly1305_tag_final=L.Yb)(),e._crypto_shorthash_bytes=()=>(e._crypto_shorthash_bytes=L.Zb)(),e._crypto_shorthash_keybytes=()=>(e._crypto_shorthash_keybytes=L._b)(),e._crypto_shorthash=(A,g,I,C,B)=>(e._crypto_shorthash=L.$b)(A,g,I,C,B),e._crypto_shorthash_keygen=A=>(e._crypto_shorthash_keygen=L.ac)(A),e._crypto_sign_statebytes=()=>(e._crypto_sign_statebytes=L.bc)(),e._crypto_sign_bytes=()=>(e._crypto_sign_bytes=L.cc)(),e._crypto_sign_seedbytes=()=>(e._crypto_sign_seedbytes=L.dc)(),e._crypto_sign_publickeybytes=()=>(e._crypto_sign_publickeybytes=L.ec)(),e._crypto_sign_secretkeybytes=()=>(e._crypto_sign_secretkeybytes=L.fc)(),e._crypto_sign_messagebytes_max=()=>(e._crypto_sign_messagebytes_max=L.gc)(),e._crypto_sign_seed_keypair=(A,g,I)=>(e._crypto_sign_seed_keypair=L.hc)(A,g,I),e._crypto_sign_keypair=(A,g)=>(e._crypto_sign_keypair=L.ic)(A,g),e._crypto_sign=(A,g,I,C,B,a)=>(e._crypto_sign=L.jc)(A,g,I,C,B,a),e._crypto_sign_open=(A,g,I,C,B,a)=>(e._crypto_sign_open=L.kc)(A,g,I,C,B,a),e._crypto_sign_detached=(A,g,I,C,B,a)=>(e._crypto_sign_detached=L.lc)(A,g,I,C,B,a),e._crypto_sign_verify_detached=(A,g,I,C,B)=>(e._crypto_sign_verify_detached=L.mc)(A,g,I,C,B),e._crypto_sign_init=A=>(e._crypto_sign_init=L.nc)(A),e._crypto_sign_update=(A,g,I,C)=>(e._crypto_sign_update=L.oc)(A,g,I,C),e._crypto_sign_final_create=(A,g,I,C)=>(e._crypto_sign_final_create=L.pc)(A,g,I,C),e._crypto_sign_final_verify=(A,g,I)=>(e._crypto_sign_final_verify=L.qc)(A,g,I),e._crypto_sign_ed25519_pk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_pk_to_curve25519=L.rc)(A,g),e._crypto_sign_ed25519_sk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_sk_to_curve25519=L.sc)(A,g),e._randombytes_random=()=>(e._randombytes_random=L.tc)(),e._randombytes_stir=()=>(e._randombytes_stir=L.uc)(),e._randombytes_uniform=A=>(e._randombytes_uniform=L.vc)(A),e._randombytes_buf=(A,g)=>(e._randombytes_buf=L.wc)(A,g),e._randombytes_buf_deterministic=(A,g,I)=>(e._randombytes_buf_deterministic=L.xc)(A,g,I),e._randombytes_seedbytes=()=>(e._randombytes_seedbytes=L.yc)(),e._randombytes_close=()=>(e._randombytes_close=L.zc)(),e._randombytes=(A,g,I)=>(e._randombytes=L.Ac)(A,g,I),e._sodium_bin2hex=(A,g,I,C)=>(e._sodium_bin2hex=L.Bc)(A,g,I,C),e._sodium_hex2bin=(A,g,I,C,B,a,i)=>(e._sodium_hex2bin=L.Cc)(A,g,I,C,B,a,i),e._sodium_base64_encoded_len=(A,g)=>(e._sodium_base64_encoded_len=L.Dc)(A,g),e._sodium_bin2base64=(A,g,I,C,B)=>(e._sodium_bin2base64=L.Ec)(A,g,I,C,B),e._sodium_base642bin=(A,g,I,C,B,a,i,r)=>(e._sodium_base642bin=L.Fc)(A,g,I,C,B,a,i,r),e._sodium_init=()=>(e._sodium_init=L.Gc)(),e._sodium_pad=(A,g,I,C,B)=>(e._sodium_pad=L.Hc)(A,g,I,C,B),e._sodium_unpad=(A,g,I,C)=>(e._sodium_unpad=L.Ic)(A,g,I,C),e._sodium_version_string=()=>(e._sodium_version_string=L.Jc)(),e._sodium_library_version_major=()=>(e._sodium_library_version_major=L.Kc)(),e._sodium_library_version_minor=()=>(e._sodium_library_version_minor=L.Lc)(),e._sodium_library_minimal=()=>(e._sodium_library_minimal=L.Mc)(),e._malloc=A=>(e._malloc=L.Nc)(A),e._free=A=>(e._free=L.Oc)(A),e.setValue=function(A,g,I="i8"){switch(I.endsWith("*")&&(I="*"),I){case"i1":case"i8":_[A]=g;break;case"i16":h[A>>1]=g;break;case"i32":s[A>>2]=g;break;case"i64":M("to do setValue(i64) use WASM_BIGINT");case"float":f[A>>2]=g;break;case"double":D[A>>3]=g;break;case"*":p[A>>2]=g;break;default:M(`invalid type for setValue: ${I}`)}},e.getValue=function(A,g="i8"){switch(g.endsWith("*")&&(g="*"),g){case"i1":case"i8":return _[A];case"i16":return h[A>>1];case"i32":return s[A>>2];case"i64":M("to do getValue(i64) use WASM_BIGINT");case"float":return f[A>>2];case"double":return D[A>>3];case"*":return p[A>>2];default:M(`invalid type for getValue: ${g}`)}},e.UTF8ToString=x,b=function A(){J||T(),J||(b=A)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();T()})).catch((function(){return C.useBackupModule()})),g}"function"==typeof define&&define.amd?define(["exports"],g):"object"==typeof exports&&"string"!=typeof exports.nodeName?g(exports):A.libsodium=g(A.libsodium_mod||(A.commonJsStrict={}))}(this),function(A){function g(A,g){"use strict";var I,C="uint8array",e=g.ready.then((function(){function C(){if(0!==I._sodium_init())throw new Error("libsodium was not correctly initialized.");for(var g=["crypto_aead_aegis128l_decrypt","crypto_aead_aegis128l_decrypt_detached","crypto_aead_aegis128l_encrypt","crypto_aead_aegis128l_encrypt_detached","crypto_aead_aegis128l_keygen","crypto_aead_aegis256_decrypt","crypto_aead_aegis256_decrypt_detached","crypto_aead_aegis256_encrypt","crypto_aead_aegis256_encrypt_detached","crypto_aead_aegis256_keygen","crypto_aead_chacha20poly1305_decrypt","crypto_aead_chacha20poly1305_decrypt_detached","crypto_aead_chacha20poly1305_encrypt","crypto_aead_chacha20poly1305_encrypt_detached","crypto_aead_chacha20poly1305_ietf_decrypt","crypto_aead_chacha20poly1305_ietf_decrypt_detached","crypto_aead_chacha20poly1305_ietf_encrypt","crypto_aead_chacha20poly1305_ietf_encrypt_detached","crypto_aead_chacha20poly1305_ietf_keygen","crypto_aead_chacha20poly1305_keygen","crypto_aead_xchacha20poly1305_ietf_decrypt","crypto_aead_xchacha20poly1305_ietf_decrypt_detached","crypto_aead_xchacha20poly1305_ietf_encrypt","crypto_aead_xchacha20poly1305_ietf_encrypt_detached","crypto_aead_xchacha20poly1305_ietf_keygen","crypto_auth","crypto_auth_hmacsha256","crypto_auth_hmacsha256_final","crypto_auth_hmacsha256_init","crypto_auth_hmacsha256_keygen","crypto_auth_hmacsha256_update","crypto_auth_hmacsha256_verify","crypto_auth_hmacsha512","crypto_auth_hmacsha512256","crypto_auth_hmacsha512256_final","crypto_auth_hmacsha512256_init","crypto_auth_hmacsha512256_keygen","crypto_auth_hmacsha512256_update","crypto_auth_hmacsha512256_verify","crypto_auth_hmacsha512_final","crypto_auth_hmacsha512_init","crypto_auth_hmacsha512_keygen","crypto_auth_hmacsha512_update","crypto_auth_hmacsha512_verify","crypto_auth_keygen","crypto_auth_verify","crypto_box_beforenm","crypto_box_curve25519xchacha20poly1305_beforenm","crypto_box_curve25519xchacha20poly1305_detached","crypto_box_curve25519xchacha20poly1305_detached_afternm","crypto_box_curve25519xchacha20poly1305_easy","crypto_box_curve25519xchacha20poly1305_easy_afternm","crypto_box_curve25519xchacha20poly1305_keypair","crypto_box_curve25519xchacha20poly1305_open_detached","crypto_box_curve25519xchacha20poly1305_open_detached_afternm","crypto_box_curve25519xchacha20poly1305_open_easy","crypto_box_curve25519xchacha20poly1305_open_easy_afternm","crypto_box_curve25519xchacha20poly1305_seal","crypto_box_curve25519xchacha20poly1305_seal_open","crypto_box_curve25519xchacha20poly1305_seed_keypair","crypto_box_detached","crypto_box_easy","crypto_box_easy_afternm","crypto_box_keypair","crypto_box_open_detached","crypto_box_open_easy","crypto_box_open_easy_afternm","crypto_box_seal","crypto_box_seal_open","crypto_box_seed_keypair","crypto_core_ed25519_add","crypto_core_ed25519_from_hash","crypto_core_ed25519_from_uniform","crypto_core_ed25519_is_valid_point","crypto_core_ed25519_random","crypto_core_ed25519_scalar_add","crypto_core_ed25519_scalar_complement","crypto_core_ed25519_scalar_invert","crypto_core_ed25519_scalar_mul","crypto_core_ed25519_scalar_negate","crypto_core_ed25519_scalar_random","crypto_core_ed25519_scalar_reduce","crypto_core_ed25519_scalar_sub","crypto_core_ed25519_sub","crypto_core_hchacha20","crypto_core_hsalsa20","crypto_core_ristretto255_add","crypto_core_ristretto255_from_hash","crypto_core_ristretto255_is_valid_point","crypto_core_ristretto255_random","crypto_core_ristretto255_scalar_add","crypto_core_ristretto255_scalar_complement","crypto_core_ristretto255_scalar_invert","crypto_core_ristretto255_scalar_mul","crypto_core_ristretto255_scalar_negate","crypto_core_ristretto255_scalar_random","crypto_core_ristretto255_scalar_reduce","crypto_core_ristretto255_scalar_sub","crypto_core_ristretto255_sub","crypto_generichash","crypto_generichash_blake2b_salt_personal","crypto_generichash_final","crypto_generichash_init","crypto_generichash_keygen","crypto_generichash_update","crypto_hash","crypto_hash_sha256","crypto_hash_sha256_final","crypto_hash_sha256_init","crypto_hash_sha256_update","crypto_hash_sha512","crypto_hash_sha512_final","crypto_hash_sha512_init","crypto_hash_sha512_update","crypto_kdf_derive_from_key","crypto_kdf_keygen","crypto_kx_client_session_keys","crypto_kx_keypair","crypto_kx_seed_keypair","crypto_kx_server_session_keys","crypto_onetimeauth","crypto_onetimeauth_final","crypto_onetimeauth_init","crypto_onetimeauth_keygen","crypto_onetimeauth_update","crypto_onetimeauth_verify","crypto_pwhash","crypto_pwhash_scryptsalsa208sha256","crypto_pwhash_scryptsalsa208sha256_ll","crypto_pwhash_scryptsalsa208sha256_str","crypto_pwhash_scryptsalsa208sha256_str_verify","crypto_pwhash_str","crypto_pwhash_str_needs_rehash","crypto_pwhash_str_verify","crypto_scalarmult","crypto_scalarmult_base","crypto_scalarmult_ed25519","crypto_scalarmult_ed25519_base","crypto_scalarmult_ed25519_base_noclamp","crypto_scalarmult_ed25519_noclamp","crypto_scalarmult_ristretto255","crypto_scalarmult_ristretto255_base","crypto_secretbox_detached","crypto_secretbox_easy","crypto_secretbox_keygen","crypto_secretbox_open_detached","crypto_secretbox_open_easy","crypto_secretstream_xchacha20poly1305_init_pull","crypto_secretstream_xchacha20poly1305_init_push","crypto_secretstream_xchacha20poly1305_keygen","crypto_secretstream_xchacha20poly1305_pull","crypto_secretstream_xchacha20poly1305_push","crypto_secretstream_xchacha20poly1305_rekey","crypto_shorthash","crypto_shorthash_keygen","crypto_shorthash_siphashx24","crypto_sign","crypto_sign_detached","crypto_sign_ed25519_pk_to_curve25519","crypto_sign_ed25519_sk_to_curve25519","crypto_sign_ed25519_sk_to_pk","crypto_sign_ed25519_sk_to_seed","crypto_sign_final_create","crypto_sign_final_verify","crypto_sign_init","crypto_sign_keypair","crypto_sign_open","crypto_sign_seed_keypair","crypto_sign_update","crypto_sign_verify_detached","crypto_stream_chacha20","crypto_stream_chacha20_ietf_xor","crypto_stream_chacha20_ietf_xor_ic","crypto_stream_chacha20_keygen","crypto_stream_chacha20_xor","crypto_stream_chacha20_xor_ic","crypto_stream_keygen","crypto_stream_xchacha20_keygen","crypto_stream_xchacha20_xor","crypto_stream_xchacha20_xor_ic","randombytes_buf","randombytes_buf_deterministic","randombytes_close","randombytes_random","randombytes_set_implementation","randombytes_stir","randombytes_uniform","sodium_version_string"],C=[w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J,U,x,m,P,R,L,T,q,z,j,X,O,V,Z,W,$,AA,gA,IA,CA,eA,BA,aA,iA,rA,tA,QA,oA,cA,EA,yA,_A,nA,hA,sA,pA,fA,DA,wA,kA,dA,lA,uA,vA,SA,bA,MA,FA,NA,KA,YA,HA,GA,JA,UA,xA,mA,PA,RA,LA,TA,qA,zA,jA,XA,OA,VA,ZA,WA,$A,Ag,gg,Ig,Cg,eg,Bg,ag,ig,rg,tg,Qg,og,cg,Eg,yg,_g,ng,hg,sg,pg,fg,Dg,wg,kg,dg,lg,ug,vg,Sg,bg,Mg,Fg,Ng,Kg,Yg,Hg,Gg,Jg,Ug,xg,mg,Pg,Rg,Lg,Tg,qg,zg,jg,Xg,Og,Vg,Zg,Wg,$g,AI,gI,II,CI,eI,BI,aI,iI,rI,tI,QI,oI,cI,EI,yI,_I,nI,hI,sI,pI,fI,DI,wI,kI,dI,lI,uI,vI,SI,bI,MI,FI,NI,KI,YI,HI,GI,JI,UI,xI,mI,PI,RI,LI,TI,qI,zI,jI],e=0;e<C.length;e++)"function"==typeof I["_"+g[e]]&&(A[g[e]]=C[e]);var B=["SODIUM_LIBRARY_VERSION_MAJOR","SODIUM_LIBRARY_VERSION_MINOR","crypto_aead_aegis128l_ABYTES","crypto_aead_aegis128l_KEYBYTES","crypto_aead_aegis128l_MESSAGEBYTES_MAX","crypto_aead_aegis128l_NPUBBYTES","crypto_aead_aegis128l_NSECBYTES","crypto_aead_aegis256_ABYTES","crypto_aead_aegis256_KEYBYTES","crypto_aead_aegis256_MESSAGEBYTES_MAX","crypto_aead_aegis256_NPUBBYTES","crypto_aead_aegis256_NSECBYTES","crypto_aead_aes256gcm_ABYTES","crypto_aead_aes256gcm_KEYBYTES","crypto_aead_aes256gcm_MESSAGEBYTES_MAX","crypto_aead_aes256gcm_NPUBBYTES","crypto_aead_aes256gcm_NSECBYTES","crypto_aead_chacha20poly1305_ABYTES","crypto_aead_chacha20poly1305_IETF_ABYTES","crypto_aead_chacha20poly1305_IETF_KEYBYTES","crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_IETF_NPUBBYTES","crypto_aead_chacha20poly1305_IETF_NSECBYTES","crypto_aead_chacha20poly1305_KEYBYTES","crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_NPUBBYTES","crypto_aead_chacha20poly1305_NSECBYTES","crypto_aead_chacha20poly1305_ietf_ABYTES","crypto_aead_chacha20poly1305_ietf_KEYBYTES","crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_ietf_NPUBBYTES","crypto_aead_chacha20poly1305_ietf_NSECBYTES","crypto_aead_xchacha20poly1305_IETF_ABYTES","crypto_aead_xchacha20poly1305_IETF_KEYBYTES","crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX","crypto_aead_xchacha20poly1305_IETF_NPUBBYTES","crypto_aead_xchacha20poly1305_IETF_NSECBYTES","crypto_aead_xchacha20poly1305_ietf_ABYTES","crypto_aead_xchacha20poly1305_ietf_KEYBYTES","crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX","crypto_aead_xchacha20poly1305_ietf_NPUBBYTES","crypto_aead_xchacha20poly1305_ietf_NSECBYTES","crypto_auth_BYTES","crypto_auth_KEYBYTES","crypto_auth_hmacsha256_BYTES","crypto_auth_hmacsha256_KEYBYTES","crypto_auth_hmacsha512256_BYTES","crypto_auth_hmacsha512256_KEYBYTES","crypto_auth_hmacsha512_BYTES","crypto_auth_hmacsha512_KEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_MACBYTES","crypto_box_MESSAGEBYTES_MAX","crypto_box_NONCEBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SEALBYTES","crypto_box_SECRETKEYBYTES","crypto_box_SEEDBYTES","crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES","crypto_box_curve25519xchacha20poly1305_MACBYTES","crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX","crypto_box_curve25519xchacha20poly1305_NONCEBYTES","crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES","crypto_box_curve25519xchacha20poly1305_SEALBYTES","crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES","crypto_box_curve25519xchacha20poly1305_SEEDBYTES","crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES","crypto_box_curve25519xsalsa20poly1305_MACBYTES","crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX","crypto_box_curve25519xsalsa20poly1305_NONCEBYTES","crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES","crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES","crypto_box_curve25519xsalsa20poly1305_SEEDBYTES","crypto_core_ed25519_BYTES","crypto_core_ed25519_HASHBYTES","crypto_core_ed25519_NONREDUCEDSCALARBYTES","crypto_core_ed25519_SCALARBYTES","crypto_core_ed25519_UNIFORMBYTES","crypto_core_hchacha20_CONSTBYTES","crypto_core_hchacha20_INPUTBYTES","crypto_core_hchacha20_KEYBYTES","crypto_core_hchacha20_OUTPUTBYTES","crypto_core_hsalsa20_CONSTBYTES","crypto_core_hsalsa20_INPUTBYTES","crypto_core_hsalsa20_KEYBYTES","crypto_core_hsalsa20_OUTPUTBYTES","crypto_core_ristretto255_BYTES","crypto_core_ristretto255_HASHBYTES","crypto_core_ristretto255_NONREDUCEDSCALARBYTES","crypto_core_ristretto255_SCALARBYTES","crypto_core_salsa2012_CONSTBYTES","crypto_core_salsa2012_INPUTBYTES","crypto_core_salsa2012_KEYBYTES","crypto_core_salsa2012_OUTPUTBYTES","crypto_core_salsa208_CONSTBYTES","crypto_core_salsa208_INPUTBYTES","crypto_core_salsa208_KEYBYTES","crypto_core_salsa208_OUTPUTBYTES","crypto_core_salsa20_CONSTBYTES","crypto_core_salsa20_INPUTBYTES","crypto_core_salsa20_KEYBYTES","crypto_core_salsa20_OUTPUTBYTES","crypto_generichash_BYTES","crypto_generichash_BYTES_MAX","crypto_generichash_BYTES_MIN","crypto_generichash_KEYBYTES","crypto_generichash_KEYBYTES_MAX","crypto_generichash_KEYBYTES_MIN","crypto_generichash_blake2b_BYTES","crypto_generichash_blake2b_BYTES_MAX","crypto_generichash_blake2b_BYTES_MIN","crypto_generichash_blake2b_KEYBYTES","crypto_generichash_blake2b_KEYBYTES_MAX","crypto_generichash_blake2b_KEYBYTES_MIN","crypto_generichash_blake2b_PERSONALBYTES","crypto_generichash_blake2b_SALTBYTES","crypto_hash_BYTES","crypto_hash_sha256_BYTES","crypto_hash_sha512_BYTES","crypto_kdf_BYTES_MAX","crypto_kdf_BYTES_MIN","crypto_kdf_CONTEXTBYTES","crypto_kdf_KEYBYTES","crypto_kdf_blake2b_BYTES_MAX","crypto_kdf_blake2b_BYTES_MIN","crypto_kdf_blake2b_CONTEXTBYTES","crypto_kdf_blake2b_KEYBYTES","crypto_kdf_hkdf_sha256_BYTES_MAX","crypto_kdf_hkdf_sha256_BYTES_MIN","crypto_kdf_hkdf_sha256_KEYBYTES","crypto_kdf_hkdf_sha512_BYTES_MAX","crypto_kdf_hkdf_sha512_BYTES_MIN","crypto_kdf_hkdf_sha512_KEYBYTES","crypto_kx_PUBLICKEYBYTES","crypto_kx_SECRETKEYBYTES","crypto_kx_SEEDBYTES","crypto_kx_SESSIONKEYBYTES","crypto_onetimeauth_BYTES","crypto_onetimeauth_KEYBYTES","crypto_onetimeauth_poly1305_BYTES","crypto_onetimeauth_poly1305_KEYBYTES","crypto_pwhash_ALG_ARGON2I13","crypto_pwhash_ALG_ARGON2ID13","crypto_pwhash_ALG_DEFAULT","crypto_pwhash_BYTES_MAX","crypto_pwhash_BYTES_MIN","crypto_pwhash_MEMLIMIT_INTERACTIVE","crypto_pwhash_MEMLIMIT_MAX","crypto_pwhash_MEMLIMIT_MIN","crypto_pwhash_MEMLIMIT_MODERATE","crypto_pwhash_MEMLIMIT_SENSITIVE","crypto_pwhash_OPSLIMIT_INTERACTIVE","crypto_pwhash_OPSLIMIT_MAX","crypto_pwhash_OPSLIMIT_MIN","crypto_pwhash_OPSLIMIT_MODERATE","crypto_pwhash_OPSLIMIT_SENSITIVE","crypto_pwhash_PASSWD_MAX","crypto_pwhash_PASSWD_MIN","crypto_pwhash_SALTBYTES","crypto_pwhash_STRBYTES","crypto_pwhash_argon2i_BYTES_MAX","crypto_pwhash_argon2i_BYTES_MIN","crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE","crypto_pwhash_argon2i_MEMLIMIT_MAX","crypto_pwhash_argon2i_MEMLIMIT_MIN","crypto_pwhash_argon2i_MEMLIMIT_MODERATE","crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE","crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE","crypto_pwhash_argon2i_OPSLIMIT_MAX","crypto_pwhash_argon2i_OPSLIMIT_MIN","crypto_pwhash_argon2i_OPSLIMIT_MODERATE","crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE","crypto_pwhash_argon2i_PASSWD_MAX","crypto_pwhash_argon2i_PASSWD_MIN","crypto_pwhash_argon2i_SALTBYTES","crypto_pwhash_argon2i_STRBYTES","crypto_pwhash_argon2id_BYTES_MAX","crypto_pwhash_argon2id_BYTES_MIN","crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE","crypto_pwhash_argon2id_MEMLIMIT_MAX","crypto_pwhash_argon2id_MEMLIMIT_MIN","crypto_pwhash_argon2id_MEMLIMIT_MODERATE","crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE","crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE","crypto_pwhash_argon2id_OPSLIMIT_MAX","crypto_pwhash_argon2id_OPSLIMIT_MIN","crypto_pwhash_argon2id_OPSLIMIT_MODERATE","crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE","crypto_pwhash_argon2id_PASSWD_MAX","crypto_pwhash_argon2id_PASSWD_MIN","crypto_pwhash_argon2id_SALTBYTES","crypto_pwhash_argon2id_STRBYTES","crypto_pwhash_scryptsalsa208sha256_BYTES_MAX","crypto_pwhash_scryptsalsa208sha256_BYTES_MIN","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE","crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX","crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN","crypto_pwhash_scryptsalsa208sha256_SALTBYTES","crypto_pwhash_scryptsalsa208sha256_STRBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_scalarmult_curve25519_BYTES","crypto_scalarmult_curve25519_SCALARBYTES","crypto_scalarmult_ed25519_BYTES","crypto_scalarmult_ed25519_SCALARBYTES","crypto_scalarmult_ristretto255_BYTES","crypto_scalarmult_ristretto255_SCALARBYTES","crypto_secretbox_KEYBYTES","crypto_secretbox_MACBYTES","crypto_secretbox_MESSAGEBYTES_MAX","crypto_secretbox_NONCEBYTES","crypto_secretbox_xchacha20poly1305_KEYBYTES","crypto_secretbox_xchacha20poly1305_MACBYTES","crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX","crypto_secretbox_xchacha20poly1305_NONCEBYTES","crypto_secretbox_xsalsa20poly1305_KEYBYTES","crypto_secretbox_xsalsa20poly1305_MACBYTES","crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX","crypto_secretbox_xsalsa20poly1305_NONCEBYTES","crypto_secretstream_xchacha20poly1305_ABYTES","crypto_secretstream_xchacha20poly1305_HEADERBYTES","crypto_secretstream_xchacha20poly1305_KEYBYTES","crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX","crypto_secretstream_xchacha20poly1305_TAG_FINAL","crypto_secretstream_xchacha20poly1305_TAG_MESSAGE","crypto_secretstream_xchacha20poly1305_TAG_PUSH","crypto_secretstream_xchacha20poly1305_TAG_REKEY","crypto_shorthash_BYTES","crypto_shorthash_KEYBYTES","crypto_shorthash_siphash24_BYTES","crypto_shorthash_siphash24_KEYBYTES","crypto_shorthash_siphashx24_BYTES","crypto_shorthash_siphashx24_KEYBYTES","crypto_sign_BYTES","crypto_sign_MESSAGEBYTES_MAX","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","crypto_sign_SEEDBYTES","crypto_sign_ed25519_BYTES","crypto_sign_ed25519_MESSAGEBYTES_MAX","crypto_sign_ed25519_PUBLICKEYBYTES","crypto_sign_ed25519_SECRETKEYBYTES","crypto_sign_ed25519_SEEDBYTES","crypto_stream_KEYBYTES","crypto_stream_MESSAGEBYTES_MAX","crypto_stream_NONCEBYTES","crypto_stream_chacha20_IETF_KEYBYTES","crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX","crypto_stream_chacha20_IETF_NONCEBYTES","crypto_stream_chacha20_KEYBYTES","crypto_stream_chacha20_MESSAGEBYTES_MAX","crypto_stream_chacha20_NONCEBYTES","crypto_stream_chacha20_ietf_KEYBYTES","crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX","crypto_stream_chacha20_ietf_NONCEBYTES","crypto_stream_salsa2012_KEYBYTES","crypto_stream_salsa2012_MESSAGEBYTES_MAX","crypto_stream_salsa2012_NONCEBYTES","crypto_stream_salsa208_KEYBYTES","crypto_stream_salsa208_MESSAGEBYTES_MAX","crypto_stream_salsa208_NONCEBYTES","crypto_stream_salsa20_KEYBYTES","crypto_stream_salsa20_MESSAGEBYTES_MAX","crypto_stream_salsa20_NONCEBYTES","crypto_stream_xchacha20_KEYBYTES","crypto_stream_xchacha20_MESSAGEBYTES_MAX","crypto_stream_xchacha20_NONCEBYTES","crypto_stream_xsalsa20_KEYBYTES","crypto_stream_xsalsa20_MESSAGEBYTES_MAX","crypto_stream_xsalsa20_NONCEBYTES","crypto_verify_16_BYTES","crypto_verify_32_BYTES","crypto_verify_64_BYTES"];for(e=0;e<B.length;e++)"function"==typeof(i=I["_"+B[e].toLowerCase()])&&(A[B[e]]=i());var a=["SODIUM_VERSION_STRING","crypto_pwhash_STRPREFIX","crypto_pwhash_argon2i_STRPREFIX","crypto_pwhash_argon2id_STRPREFIX","crypto_pwhash_scryptsalsa208sha256_STRPREFIX"];for(e=0;e<a.length;e++){var i;"function"==typeof(i=I["_"+a[e].toLowerCase()])&&(A[a[e]]=I.UTF8ToString(i()))}}I=g;try{C();var e=new Uint8Array([98,97,108,108,115]),B=A.randombytes_buf(A.crypto_secretbox_NONCEBYTES),a=A.randombytes_buf(A.crypto_secretbox_KEYBYTES),i=A.crypto_secretbox_easy(e,B,a),r=A.crypto_secretbox_open_easy(i,B,a);if(A.memcmp(e,r))return}catch(A){if(null==I.useBackupModule)throw new Error("Both wasm and asm failed to load"+A)}I.useBackupModule(),C()}));function B(A){if("function"==typeof TextEncoder)return(new TextEncoder).encode(A);A=unescape(encodeURIComponent(A));for(var g=new Uint8Array(A.length),I=0,C=A.length;I<C;I++)g[I]=A.charCodeAt(I);return g}function a(A){if("function"==typeof TextDecoder)return new TextDecoder("utf-8",{fatal:!0}).decode(A);var g=8192,I=Math.ceil(A.length/g);if(I<=1)try{return decodeURIComponent(escape(String.fromCharCode.apply(null,A)))}catch(A){throw new TypeError("The encoded data was not valid.")}for(var C="",e=0,B=0;B<I;B++){var i=Array.prototype.slice.call(A,B*g+e,(B+1)*g+e);if(0!=i.length){var r,t=i.length,Q=0;do{var o=i[--t];o>=240?(Q=4,r=!0):o>=224?(Q=3,r=!0):o>=192?(Q=2,r=!0):o<128&&(Q=1,r=!0)}while(!r);for(var c=Q-(i.length-t),E=0;E<c;E++)e--,i.pop();C+=a(i)}}return C}function i(A){A=D(null,A,"input");for(var g,I,C,e="",B=0;B<A.length;B++)C=87+(I=15&A[B])+(I-10>>8&-39)<<8|87+(g=A[B]>>>4)+(g-10>>8&-39),e+=String.fromCharCode(255&C)+String.fromCharCode(C>>>8);return e}var r={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function t(A){if(null==A)return r.URLSAFE_NO_PADDING;if(A!==r.ORIGINAL&&A!==r.ORIGINAL_NO_PADDING&&A!==r.URLSAFE&&A!=r.URLSAFE_NO_PADDING)throw new Error("unsupported base64 variant");return A}function Q(A,g){g=t(g),A=D(e,A,"input");var C,e=[],B=0|Math.floor(A.length/3),i=A.length-3*B,r=4*B+(0!==i?2&g?2+(i>>>1):4:0),Q=new y(r+1),o=_(A);return e.push(o),e.push(Q.address),0===I._sodium_bin2base64(Q.address,Q.length,o,A.length,g)&&s(e,"conversion failed"),Q.length=r,C=a(Q.to_Uint8Array()),h(e),C}function o(A,g){var I=g||C;if(!c(I))throw new Error(I+" output format is not available");if(A instanceof y){if("uint8array"===I)return A.to_Uint8Array();if("text"===I)return a(A.to_Uint8Array());if("hex"===I)return i(A.to_Uint8Array());if("base64"===I)return Q(A.to_Uint8Array(),r.URLSAFE_NO_PADDING);throw new Error('What is output format "'+I+'"?')}if("object"==typeof A){for(var e=Object.keys(A),B={},t=0;t<e.length;t++)B[e[t]]=o(A[e[t]],I);return B}if("string"==typeof A)return A;throw new TypeError("Cannot format output")}function c(A){for(var g=["uint8array","text","hex","base64"],I=0;I<g.length;I++)if(g[I]===A)return!0;return!1}function E(A){if(A){if("string"!=typeof A)throw new TypeError("When defined, the output format must be a string");if(!c(A))throw new Error(A+" is not a supported output format")}}function y(A){this.length=A,this.address=n(A)}function _(A){var g=n(A.length);return I.HEAPU8.set(A,g),g}function n(A){var g=I._malloc(A);if(0===g)throw{message:"_malloc() failed",length:A};return g}function h(A){if(A)for(var g=0;g<A.length;g++)C=A[g],I._free(C);var C}function s(A,g){throw h(A),new Error(g)}function p(A,g){throw h(A),new TypeError(g)}function f(A,g,I){null==g&&p(A,I+" cannot be null or undefined")}function D(A,g,I){return f(A,g,I),g instanceof Uint8Array?g:"string"==typeof g?B(g):void p(A,"unsupported input type for "+I)}function w(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_aegis128l_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_aegis128l_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_aegis128l_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_aegis128l_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_aegis128l_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function k(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_aegis128l_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_aegis128l_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_aegis128l_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function d(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis128l_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis128l_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_aegis128l_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_aegis128l_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function l(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis128l_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis128l_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_aegis128l_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_aegis128l_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function u(A){var g=[];E(A);var C=new y(0|I._crypto_aead_aegis128l_keybytes()),e=C.address;g.push(e),I._crypto_aead_aegis128l_keygen(e);var B=o(C,A);return h(g),B}function v(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_aegis256_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_aegis256_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_aegis256_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_aegis256_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_aegis256_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function S(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_aegis256_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_aegis256_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_aegis256_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function b(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis256_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis256_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_aegis256_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_aegis256_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function M(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis256_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis256_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_aegis256_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_aegis256_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function F(A){var g=[];E(A);var C=new y(0|I._crypto_aead_aegis256_keybytes()),e=C.address;g.push(e),I._crypto_aead_aegis256_keygen(e);var B=o(C,A);return h(g),B}function N(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_chacha20poly1305_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_chacha20poly1305_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_chacha20poly1305_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_chacha20poly1305_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_chacha20poly1305_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function K(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_chacha20poly1305_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_chacha20poly1305_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_chacha20poly1305_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function Y(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_chacha20poly1305_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_chacha20poly1305_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function H(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_chacha20poly1305_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_chacha20poly1305_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function G(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_chacha20poly1305_ietf_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_chacha20poly1305_ietf_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_chacha20poly1305_ietf_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function J(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_chacha20poly1305_ietf_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function U(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_chacha20poly1305_ietf_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_chacha20poly1305_ietf_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function x(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_chacha20poly1305_ietf_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_chacha20poly1305_ietf_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function m(A){var g=[];E(A);var C=new y(0|I._crypto_aead_chacha20poly1305_ietf_keybytes()),e=C.address;g.push(e),I._crypto_aead_chacha20poly1305_ietf_keygen(e);var B=o(C,A);return h(g),B}function P(A){var g=[];E(A);var C=new y(0|I._crypto_aead_chacha20poly1305_keybytes()),e=C.address;g.push(e),I._crypto_aead_chacha20poly1305_keygen(e);var B=o(C,A);return h(g),B}function R(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_xchacha20poly1305_ietf_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_xchacha20poly1305_ietf_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_xchacha20poly1305_ietf_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function L(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_xchacha20poly1305_ietf_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function T(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_xchacha20poly1305_ietf_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_xchacha20poly1305_ietf_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function q(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_xchacha20poly1305_ietf_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_xchacha20poly1305_ietf_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function z(A){var g=[];E(A);var C=new y(0|I._crypto_aead_xchacha20poly1305_ietf_keybytes()),e=C.address;g.push(e),I._crypto_aead_xchacha20poly1305_ietf_keygen(e);var B=o(C,A);return h(g),B}function j(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function X(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_hmacsha256_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_hmacsha256_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth_hmacsha256(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function O(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_auth_hmacsha256_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_auth_hmacsha256_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function V(A,g){var C=[];E(g);var e=null,B=0;null!=A&&(e=_(A=D(C,A,"key")),B=A.length,C.push(e));var a=new y(208).address;if(!(0|I._crypto_auth_hmacsha256_init(a,e,B))){var i=a;return h(C),i}s(C,"invalid usage")}function Z(A){var g=[];E(A);var C=new y(0|I._crypto_auth_hmacsha256_keybytes()),e=C.address;g.push(e),I._crypto_auth_hmacsha256_keygen(e);var B=o(C,A);return h(g),B}function W(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_auth_hmacsha256_update(A,B,a)&&s(e,"invalid usage"),h(e)}function $(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_hmacsha256_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_hmacsha256_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_hmacsha256_verify(B,i,r,0,t));return h(e),o}function AA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_hmacsha512_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_hmacsha512_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth_hmacsha512(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function gA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_hmacsha512256_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_hmacsha512256_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth_hmacsha512256(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function IA(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_auth_hmacsha512256_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_auth_hmacsha512256_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function CA(A,g){var C=[];E(g);var e=null,B=0;null!=A&&(e=_(A=D(C,A,"key")),B=A.length,C.push(e));var a=new y(416).address;if(!(0|I._crypto_auth_hmacsha512256_init(a,e,B))){var i=a;return h(C),i}s(C,"invalid usage")}function eA(A){var g=[];E(A);var C=new y(0|I._crypto_auth_hmacsha512256_keybytes()),e=C.address;g.push(e),I._crypto_auth_hmacsha512256_keygen(e);var B=o(C,A);return h(g),B}function BA(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_auth_hmacsha512256_update(A,B,a)&&s(e,"invalid usage"),h(e)}function aA(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_hmacsha512256_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_hmacsha512256_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_hmacsha512256_verify(B,i,r,0,t));return h(e),o}function iA(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_auth_hmacsha512_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_auth_hmacsha512_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function rA(A,g){var C=[];E(g);var e=null,B=0;null!=A&&(e=_(A=D(C,A,"key")),B=A.length,C.push(e));var a=new y(416).address;if(!(0|I._crypto_auth_hmacsha512_init(a,e,B))){var i=a;return h(C),i}s(C,"invalid usage")}function tA(A){var g=[];E(A);var C=new y(0|I._crypto_auth_hmacsha512_keybytes()),e=C.address;g.push(e),I._crypto_auth_hmacsha512_keygen(e);var B=o(C,A);return h(g),B}function QA(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_auth_hmacsha512_update(A,B,a)&&s(e,"invalid usage"),h(e)}function oA(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_hmacsha512_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_hmacsha512_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_hmacsha512_verify(B,i,r,0,t));return h(e),o}function cA(A){var g=[];E(A);var C=new y(0|I._crypto_auth_keybytes()),e=C.address;g.push(e),I._crypto_auth_keygen(e);var B=o(C,A);return h(g),B}function EA(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_verify(B,i,r,0,t));return h(e),o}function yA(A,g,C){var e=[];E(C),A=D(e,A,"publicKey");var B,a=0|I._crypto_box_publickeybytes();A.length!==a&&p(e,"invalid publicKey length"),B=_(A),e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_box_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_box_beforenmbytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_box_beforenm(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function _A(A,g,C){var e=[];E(C),A=D(e,A,"publicKey");var B,a=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();A.length!==a&&p(e,"invalid publicKey length"),B=_(A),e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_box_curve25519xchacha20poly1305_beforenm(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function nA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;a.push(d);var l=new y(0|I._crypto_box_curve25519xchacha20poly1305_macbytes()),u=l.address;if(a.push(u),!(0|I._crypto_box_curve25519xchacha20poly1305_detached(d,u,i,r,0,t,c,f))){var v=o({ciphertext:k,mac:l},B);return h(a),v}s(a,"invalid usage")}function hA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;B.push(f);var w=new y(0|I._crypto_box_curve25519xchacha20poly1305_macbytes()),k=w.address;if(B.push(k),!(0|I._crypto_box_curve25519xchacha20poly1305_detached_afternm(f,k,a,i,0,r,Q))){var d=o({ciphertext:n,mac:w},e);return h(B),d}s(B,"invalid usage")}function sA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(r+I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),d=k.address;if(a.push(d),!(0|I._crypto_box_curve25519xchacha20poly1305_easy(d,i,r,0,t,c,f))){var l=o(k,B);return h(a),l}s(a,"invalid usage")}function pA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i+I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_curve25519xchacha20poly1305_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function fA(A){var g=[];E(A);var C=new y(0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),a=B.address;g.push(a),I._crypto_box_curve25519xchacha20poly1305_keypair(e,a);var i=o({publicKey:C,privateKey:B,keyType:"curve25519"},A);return h(g),i}function DA(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"ciphertext")),t=A.length;i.push(r),g=D(i,g,"mac");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_macbytes();g.length!==c&&p(i,"invalid mac length"),Q=_(g),i.push(Q),C=D(i,C,"nonce");var n,f=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();C.length!==f&&p(i,"invalid nonce length"),n=_(C),i.push(n),e=D(i,e,"publicKey");var w,k=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();e.length!==k&&p(i,"invalid publicKey length"),w=_(e),i.push(w),B=D(i,B,"privateKey");var d,l=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();B.length!==l&&p(i,"invalid privateKey length"),d=_(B),i.push(d);var u=new y(0|t),v=u.address;if(i.push(v),!(0|I._crypto_box_curve25519xchacha20poly1305_open_detached(v,r,Q,t,0,n,w,d))){var S=o(u,a);return h(i),S}s(i,"incorrect key pair for the given ciphertext")}function wA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"ciphertext")),r=A.length;a.push(i),g=D(a,g,"mac");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_macbytes();g.length!==Q&&p(a,"invalid mac length"),t=_(g),a.push(t),C=D(a,C,"nonce");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();C.length!==n&&p(a,"invalid nonce length"),c=_(C),a.push(c),e=D(a,e,"sharedKey");var f,w=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();e.length!==w&&p(a,"invalid sharedKey length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;if(a.push(d),!(0|I._crypto_box_curve25519xchacha20poly1305_open_detached_afternm(d,i,t,r,0,c,f))){var l=o(k,B);return h(a),l}s(a,"incorrect secret key for the given ciphertext")}function kA(A,g,C,e,B){var a=[];E(B),A=D(a,A,"ciphertext");var i,r=I._crypto_box_curve25519xchacha20poly1305_macbytes(),t=A.length;t<r&&p(a,"ciphertext is too short"),i=_(A),a.push(i),g=D(a,g,"nonce");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==c&&p(a,"invalid nonce length"),Q=_(g),a.push(Q),C=D(a,C,"publicKey");var n,f=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();C.length!==f&&p(a,"invalid publicKey length"),n=_(C),a.push(n),e=D(a,e,"privateKey");var w,k=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();e.length!==k&&p(a,"invalid privateKey length"),w=_(e),a.push(w);var d=new y(t-I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),l=d.address;if(a.push(l),!(0|I._crypto_box_curve25519xchacha20poly1305_open_easy(l,i,t,0,Q,n,w))){var u=o(d,B);return h(a),u}s(a,"incorrect key pair for the given ciphertext")}function dA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"ciphertext")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i-I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_curve25519xchacha20poly1305_open_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"incorrect secret key for the given ciphertext")}function lA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"publicKey");var i,r=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();g.length!==r&&p(e,"invalid publicKey length"),i=_(g),e.push(i);var t=new y(a+I._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),Q=t.address;e.push(Q),I._crypto_box_curve25519xchacha20poly1305_seal(Q,B,a,0,i);var c=o(t,C);return h(e),c}function uA(A,g,C,e){var B=[];E(e),A=D(B,A,"ciphertext");var a,i=I._crypto_box_curve25519xchacha20poly1305_sealbytes(),r=A.length;r<i&&p(B,"ciphertext is too short"),a=_(A),B.push(a),g=D(B,g,"publicKey");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();g.length!==Q&&p(B,"invalid publicKey length"),t=_(g),B.push(t),C=D(B,C,"secretKey");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();C.length!==n&&p(B,"invalid secretKey length"),c=_(C),B.push(c);var s=new y(r-I._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),f=s.address;B.push(f),I._crypto_box_curve25519xchacha20poly1305_seal_open(f,a,r,0,t,c);var w=o(s,e);return h(B),w}function vA(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_box_curve25519xchacha20poly1305_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_box_curve25519xchacha20poly1305_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"x25519"};return h(C),Q}s(C,"invalid usage")}function SA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;a.push(d);var l=new y(0|I._crypto_box_macbytes()),u=l.address;if(a.push(u),!(0|I._crypto_box_detached(d,u,i,r,0,t,c,f))){var v=o({ciphertext:k,mac:l},B);return h(a),v}s(a,"invalid usage")}function bA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(r+I._crypto_box_macbytes()|0),d=k.address;if(a.push(d),!(0|I._crypto_box_easy(d,i,r,0,t,c,f))){var l=o(k,B);return h(a),l}s(a,"invalid usage")}function MA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i+I._crypto_box_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function FA(A){var g=[];E(A);var C=new y(0|I._crypto_box_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_box_secretkeybytes()),a=B.address;if(g.push(a),!(0|I._crypto_box_keypair(e,a))){var i={publicKey:o(C,A),privateKey:o(B,A),keyType:"x25519"};return h(g),i}s(g,"internal error")}function NA(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"ciphertext")),t=A.length;i.push(r),g=D(i,g,"mac");var Q,c=0|I._crypto_box_macbytes();g.length!==c&&p(i,"invalid mac length"),Q=_(g),i.push(Q),C=D(i,C,"nonce");var n,f=0|I._crypto_box_noncebytes();C.length!==f&&p(i,"invalid nonce length"),n=_(C),i.push(n),e=D(i,e,"publicKey");var w,k=0|I._crypto_box_publickeybytes();e.length!==k&&p(i,"invalid publicKey length"),w=_(e),i.push(w),B=D(i,B,"privateKey");var d,l=0|I._crypto_box_secretkeybytes();B.length!==l&&p(i,"invalid privateKey length"),d=_(B),i.push(d);var u=new y(0|t),v=u.address;if(i.push(v),!(0|I._crypto_box_open_detached(v,r,Q,t,0,n,w,d))){var S=o(u,a);return h(i),S}s(i,"incorrect key pair for the given ciphertext")}function KA(A,g,C,e,B){var a=[];E(B),A=D(a,A,"ciphertext");var i,r=I._crypto_box_macbytes(),t=A.length;t<r&&p(a,"ciphertext is too short"),i=_(A),a.push(i),g=D(a,g,"nonce");var Q,c=0|I._crypto_box_noncebytes();g.length!==c&&p(a,"invalid nonce length"),Q=_(g),a.push(Q),C=D(a,C,"publicKey");var n,f=0|I._crypto_box_publickeybytes();C.length!==f&&p(a,"invalid publicKey length"),n=_(C),a.push(n),e=D(a,e,"privateKey");var w,k=0|I._crypto_box_secretkeybytes();e.length!==k&&p(a,"invalid privateKey length"),w=_(e),a.push(w);var d=new y(t-I._crypto_box_macbytes()|0),l=d.address;if(a.push(l),!(0|I._crypto_box_open_easy(l,i,t,0,Q,n,w))){var u=o(d,B);return h(a),u}s(a,"incorrect key pair for the given ciphertext")}function YA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"ciphertext")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i-I._crypto_box_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_open_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"incorrect secret key for the given ciphertext")}function HA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"publicKey");var i,r=0|I._crypto_box_publickeybytes();g.length!==r&&p(e,"invalid publicKey length"),i=_(g),e.push(i);var t=new y(a+I._crypto_box_sealbytes()|0),Q=t.address;if(e.push(Q),!(0|I._crypto_box_seal(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function GA(A,g,C,e){var B=[];E(e),A=D(B,A,"ciphertext");var a,i=I._crypto_box_sealbytes(),r=A.length;r<i&&p(B,"ciphertext is too short"),a=_(A),B.push(a),g=D(B,g,"publicKey");var t,Q=0|I._crypto_box_publickeybytes();g.length!==Q&&p(B,"invalid publicKey length"),t=_(g),B.push(t),C=D(B,C,"privateKey");var c,n=0|I._crypto_box_secretkeybytes();C.length!==n&&p(B,"invalid privateKey length"),c=_(C),B.push(c);var f=new y(r-I._crypto_box_sealbytes()|0),w=f.address;if(B.push(w),!(0|I._crypto_box_seal_open(w,a,r,0,t,c))){var k=o(f,e);return h(B),k}s(B,"incorrect key pair for the given ciphertext")}function JA(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_box_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_box_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_box_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_box_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"x25519"};return h(C),Q}s(C,"invalid usage")}function UA(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ed25519_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ed25519_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ed25519_add(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function xA(A,g){var C=[];E(g);var e=_(A=D(C,A,"r"));A.length,C.push(e);var B=new y(0|I._crypto_core_ed25519_bytes()),a=B.address;if(C.push(a),!(0|I._crypto_core_ed25519_from_hash(a,e))){var i=o(B,g);return h(C),i}s(C,"invalid usage")}function mA(A,g){var C=[];E(g);var e=_(A=D(C,A,"r"));A.length,C.push(e);var B=new y(0|I._crypto_core_ed25519_bytes()),a=B.address;if(C.push(a),!(0|I._crypto_core_ed25519_from_uniform(a,e))){var i=o(B,g);return h(C),i}s(C,"invalid usage")}function PA(A,g){var C=[];E(g),A=D(C,A,"repr");var e,B=0|I._crypto_core_ed25519_bytes();A.length!==B&&p(C,"invalid repr length"),e=_(A),C.push(e);var a=1==(0|I._crypto_core_ed25519_is_valid_point(e));return h(C),a}function RA(A){var g=[];E(A);var C=new y(0|I._crypto_core_ed25519_bytes()),e=C.address;g.push(e),I._crypto_core_ed25519_random(e);var B=o(C,A);return h(g),B}function LA(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ed25519_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ed25519_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ed25519_scalar_add(Q,B,i);var c=o(t,C);return h(e),c}function TA(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ed25519_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ed25519_scalar_complement(i,e);var r=o(a,g);return h(C),r}function qA(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ed25519_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_core_ed25519_scalar_invert(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid reciprocate")}function zA(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ed25519_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ed25519_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ed25519_scalar_mul(Q,B,i);var c=o(t,C);return h(e),c}function jA(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ed25519_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ed25519_scalar_negate(i,e);var r=o(a,g);return h(C),r}function XA(A){var g=[];E(A);var C=new y(0|I._crypto_core_ed25519_scalarbytes()),e=C.address;g.push(e),I._crypto_core_ed25519_scalar_random(e);var B=o(C,A);return h(g),B}function OA(A,g){var C=[];E(g),A=D(C,A,"sample");var e,B=0|I._crypto_core_ed25519_nonreducedscalarbytes();A.length!==B&&p(C,"invalid sample length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ed25519_scalar_reduce(i,e);var r=o(a,g);return h(C),r}function VA(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ed25519_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ed25519_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ed25519_scalar_sub(Q,B,i);var c=o(t,C);return h(e),c}function ZA(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ed25519_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ed25519_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ed25519_sub(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function WA(A,g,C,e){var B=[];E(e),A=D(B,A,"input");var a,i=0|I._crypto_core_hchacha20_inputbytes();A.length!==i&&p(B,"invalid input length"),a=_(A),B.push(a),g=D(B,g,"privateKey");var r,t=0|I._crypto_core_hchacha20_keybytes();g.length!==t&&p(B,"invalid privateKey length"),r=_(g),B.push(r);var Q=null;null!=C&&(Q=_(C=D(B,C,"constant")),C.length,B.push(Q));var c=new y(0|I._crypto_core_hchacha20_outputbytes()),n=c.address;if(B.push(n),!(0|I._crypto_core_hchacha20(n,a,r,Q))){var f=o(c,e);return h(B),f}s(B,"invalid usage")}function $A(A,g,C,e){var B=[];E(e),A=D(B,A,"input");var a,i=0|I._crypto_core_hsalsa20_inputbytes();A.length!==i&&p(B,"invalid input length"),a=_(A),B.push(a),g=D(B,g,"privateKey");var r,t=0|I._crypto_core_hsalsa20_keybytes();g.length!==t&&p(B,"invalid privateKey length"),r=_(g),B.push(r);var Q=null;null!=C&&(Q=_(C=D(B,C,"constant")),C.length,B.push(Q));var c=new y(0|I._crypto_core_hsalsa20_outputbytes()),n=c.address;if(B.push(n),!(0|I._crypto_core_hsalsa20(n,a,r,Q))){var f=o(c,e);return h(B),f}s(B,"invalid usage")}function Ag(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ristretto255_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ristretto255_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ristretto255_add(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function gg(A,g){var C=[];E(g);var e=_(A=D(C,A,"r"));A.length,C.push(e);var B=new y(0|I._crypto_core_ristretto255_bytes()),a=B.address;if(C.push(a),!(0|I._crypto_core_ristretto255_from_hash(a,e))){var i=o(B,g);return h(C),i}s(C,"invalid usage")}function Ig(A,g){var C=[];E(g),A=D(C,A,"repr");var e,B=0|I._crypto_core_ristretto255_bytes();A.length!==B&&p(C,"invalid repr length"),e=_(A),C.push(e);var a=1==(0|I._crypto_core_ristretto255_is_valid_point(e));return h(C),a}function Cg(A){var g=[];E(A);var C=new y(0|I._crypto_core_ristretto255_bytes()),e=C.address;g.push(e),I._crypto_core_ristretto255_random(e);var B=o(C,A);return h(g),B}function eg(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ristretto255_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ristretto255_scalar_add(Q,B,i);var c=o(t,C);return h(e),c}function Bg(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ristretto255_scalar_complement(i,e);var r=o(a,g);return h(C),r}function ag(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_core_ristretto255_scalar_invert(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid reciprocate")}function ig(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ristretto255_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ristretto255_scalar_mul(Q,B,i);var c=o(t,C);return h(e),c}function rg(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ristretto255_scalar_negate(i,e);var r=o(a,g);return h(C),r}function tg(A){var g=[];E(A);var C=new y(0|I._crypto_core_ristretto255_scalarbytes()),e=C.address;g.push(e),I._crypto_core_ristretto255_scalar_random(e);var B=o(C,A);return h(g),B}function Qg(A,g){var C=[];E(g),A=D(C,A,"sample");var e,B=0|I._crypto_core_ristretto255_nonreducedscalarbytes();A.length!==B&&p(C,"invalid sample length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ristretto255_scalar_reduce(i,e);var r=o(a,g);return h(C),r}function og(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ristretto255_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ristretto255_scalar_sub(Q,B,i);var c=o(t,C);return h(e),c}function cg(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ristretto255_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ristretto255_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ristretto255_sub(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function Eg(A,g,C,e){var B=[];E(e),f(B,A,"hash_length"),("number"!=typeof A||(0|A)!==A||A<0)&&p(B,"hash_length must be an unsigned integer");var a=_(g=D(B,g,"message")),i=g.length;B.push(a);var r=null,t=0;null!=C&&(r=_(C=D(B,C,"key")),t=C.length,B.push(r));var Q=new y(A|=0),c=Q.address;if(B.push(c),!(0|I._crypto_generichash(c,A,a,i,0,r,t))){var n=o(Q,e);return h(B),n}s(B,"invalid usage")}function yg(A,g,C,e,B){var a=[];E(B),f(a,A,"subkey_len"),("number"!=typeof A||(0|A)!==A||A<0)&&p(a,"subkey_len must be an unsigned integer");var i=null,r=0;null!=g&&(i=_(g=D(a,g,"key")),r=g.length,a.push(i));var t=null,Q=0;null!=C&&(C=D(a,C,"id"),Q=0|I._crypto_generichash_blake2b_saltbytes(),C.length!==Q&&p(a,"invalid id length"),t=_(C),a.push(t));var c=null,n=0;null!=e&&(e=D(a,e,"ctx"),n=0|I._crypto_generichash_blake2b_personalbytes(),e.length!==n&&p(a,"invalid ctx length"),c=_(e),a.push(c));var w=new y(0|A),k=w.address;if(a.push(k),!(0|I._crypto_generichash_blake2b_salt_personal(k,A,null,0,0,i,r,t,c))){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function _g(A,g,C){var e=[];E(C),f(e,A,"state_address"),f(e,g,"hash_length"),("number"!=typeof g||(0|g)!==g||g<0)&&p(e,"hash_length must be an unsigned integer");var B=new y(g|=0),a=B.address;if(e.push(a),!(0|I._crypto_generichash_final(A,a,g))){var i=(I._free(A),o(B,C));return h(e),i}s(e,"invalid usage")}function ng(A,g,C){var e=[];E(C);var B=null,a=0;null!=A&&(B=_(A=D(e,A,"key")),a=A.length,e.push(B)),f(e,g,"hash_length"),("number"!=typeof g||(0|g)!==g||g<0)&&p(e,"hash_length must be an unsigned integer");var i=new y(357).address;if(!(0|I._crypto_generichash_init(i,B,a,g))){var r=i;return h(e),r}s(e,"invalid usage")}function hg(A){var g=[];E(A);var C=new y(0|I._crypto_generichash_keybytes()),e=C.address;g.push(e),I._crypto_generichash_keygen(e);var B=o(C,A);return h(g),B}function sg(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_generichash_update(A,B,a)&&s(e,"invalid usage"),h(e)}function pg(A,g){var C=[];E(g);var e=_(A=D(C,A,"message")),B=A.length;C.push(e);var a=new y(0|I._crypto_hash_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_hash(i,e,B,0))){var r=o(a,g);return h(C),r}s(C,"invalid usage")}function fg(A,g){var C=[];E(g);var e=_(A=D(C,A,"message")),B=A.length;C.push(e);var a=new y(0|I._crypto_hash_sha256_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_hash_sha256(i,e,B,0))){var r=o(a,g);return h(C),r}s(C,"invalid usage")}function Dg(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_hash_sha256_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_hash_sha256_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function wg(A){var g=[];E(A);var C=new y(104).address;if(!(0|I._crypto_hash_sha256_init(C))){var e=C;return h(g),e}s(g,"invalid usage")}function kg(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_hash_sha256_update(A,B,a)&&s(e,"invalid usage"),h(e)}function dg(A,g){var C=[];E(g);var e=_(A=D(C,A,"message")),B=A.length;C.push(e);var a=new y(0|I._crypto_hash_sha512_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_hash_sha512(i,e,B,0))){var r=o(a,g);return h(C),r}s(C,"invalid usage")}function lg(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_hash_sha512_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_hash_sha512_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function ug(A){var g=[];E(A);var C=new y(208).address;if(!(0|I._crypto_hash_sha512_init(C))){var e=C;return h(g),e}s(g,"invalid usage")}function vg(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_hash_sha512_update(A,B,a)&&s(e,"invalid usage"),h(e)}function Sg(A,g,C,e,a){var i=[];E(a),f(i,A,"subkey_len"),("number"!=typeof A||(0|A)!==A||A<0)&&p(i,"subkey_len must be an unsigned integer"),f(i,g,"subkey_id");var r,t=0;if("bigint"==typeof g&&g>=BigInt(0)){const A=g>>BigInt(32);A>BigInt(4294967295)&&p(i,"subkey_id cannot be more than 64 bits"),t=Number(A),r=Number(g&BigInt(4294967295))}else"number"==typeof g&&(0|g)===g&&g>=0?r=g:p(i,"subkey_id must be an unsigned integer or bigint");"string"!=typeof C&&p(i,"ctx must be a string"),C=B(C+"\0"),null!=c&&C.length-1!==c&&p(i,"invalid ctx length");var Q=_(C),c=C.length-1;i.push(Q),e=D(i,e,"key");var n,s=0|I._crypto_kdf_keybytes();e.length!==s&&p(i,"invalid key length"),n=_(e),i.push(n);var w=new y(0|A),k=w.address;i.push(k),I._crypto_kdf_derive_from_key(k,A,r,t,Q,n);var d=o(w,a);return h(i),d}function bg(A){var g=[];E(A);var C=new y(0|I._crypto_kdf_keybytes()),e=C.address;g.push(e),I._crypto_kdf_keygen(e);var B=o(C,A);return h(g),B}function Mg(A,g,C,e){var B=[];E(e),A=D(B,A,"clientPublicKey");var a,i=0|I._crypto_kx_publickeybytes();A.length!==i&&p(B,"invalid clientPublicKey length"),a=_(A),B.push(a),g=D(B,g,"clientSecretKey");var r,t=0|I._crypto_kx_secretkeybytes();g.length!==t&&p(B,"invalid clientSecretKey length"),r=_(g),B.push(r),C=D(B,C,"serverPublicKey");var Q,c=0|I._crypto_kx_publickeybytes();C.length!==c&&p(B,"invalid serverPublicKey length"),Q=_(C),B.push(Q);var n=new y(0|I._crypto_kx_sessionkeybytes()),f=n.address;B.push(f);var w=new y(0|I._crypto_kx_sessionkeybytes()),k=w.address;if(B.push(k),!(0|I._crypto_kx_client_session_keys(f,k,a,r,Q))){var d=o({sharedRx:n,sharedTx:w},e);return h(B),d}s(B,"invalid usage")}function Fg(A){var g=[];E(A);var C=new y(0|I._crypto_kx_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_kx_secretkeybytes()),a=B.address;if(g.push(a),!(0|I._crypto_kx_keypair(e,a))){var i={publicKey:o(C,A),privateKey:o(B,A),keyType:"x25519"};return h(g),i}s(g,"internal error")}function Ng(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_kx_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_kx_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_kx_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_kx_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"x25519"};return h(C),Q}s(C,"internal error")}function Kg(A,g,C,e){var B=[];E(e),A=D(B,A,"serverPublicKey");var a,i=0|I._crypto_kx_publickeybytes();A.length!==i&&p(B,"invalid serverPublicKey length"),a=_(A),B.push(a),g=D(B,g,"serverSecretKey");var r,t=0|I._crypto_kx_secretkeybytes();g.length!==t&&p(B,"invalid serverSecretKey length"),r=_(g),B.push(r),C=D(B,C,"clientPublicKey");var Q,c=0|I._crypto_kx_publickeybytes();C.length!==c&&p(B,"invalid clientPublicKey length"),Q=_(C),B.push(Q);var n=new y(0|I._crypto_kx_sessionkeybytes()),f=n.address;B.push(f);var w=new y(0|I._crypto_kx_sessionkeybytes()),k=w.address;if(B.push(k),!(0|I._crypto_kx_server_session_keys(f,k,a,r,Q))){var d=o({sharedRx:n,sharedTx:w},e);return h(B),d}s(B,"invalid usage")}function Yg(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_onetimeauth_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_onetimeauth_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_onetimeauth(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function Hg(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_onetimeauth_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_onetimeauth_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function Gg(A,g){var C=[];E(g);var e=null;null!=A&&(e=_(A=D(C,A,"key")),A.length,C.push(e));var B=new y(144).address;if(!(0|I._crypto_onetimeauth_init(B,e))){var a=B;return h(C),a}s(C,"invalid usage")}function Jg(A){var g=[];E(A);var C=new y(0|I._crypto_onetimeauth_keybytes()),e=C.address;g.push(e),I._crypto_onetimeauth_keygen(e);var B=o(C,A);return h(g),B}function Ug(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_onetimeauth_update(A,B,a)&&s(e,"invalid usage"),h(e)}function xg(A,g,C){var e=[];A=D(e,A,"hash");var B,a=0|I._crypto_onetimeauth_bytes();A.length!==a&&p(e,"invalid hash length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_onetimeauth_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_onetimeauth_verify(B,i,r,0,t));return h(e),o}function mg(A,g,C,e,B,a,i){var r=[];E(i),f(r,A,"keyLength"),("number"!=typeof A||(0|A)!==A||A<0)&&p(r,"keyLength must be an unsigned integer");var t=_(g=D(r,g,"password")),Q=g.length;r.push(t),C=D(r,C,"salt");var c,n=0|I._crypto_pwhash_saltbytes();C.length!==n&&p(r,"invalid salt length"),c=_(C),r.push(c),f(r,e,"opsLimit"),("number"!=typeof e||(0|e)!==e||e<0)&&p(r,"opsLimit must be an unsigned integer"),f(r,B,"memLimit"),("number"!=typeof B||(0|B)!==B||B<0)&&p(r,"memLimit must be an unsigned integer"),f(r,a,"algorithm"),("number"!=typeof a||(0|a)!==a||a<0)&&p(r,"algorithm must be an unsigned integer");var w=new y(0|A),k=w.address;if(r.push(k),!(0|I._crypto_pwhash(k,A,0,t,Q,0,c,e,0,B,a))){var d=o(w,i);return h(r),d}s(r,"invalid usage")}function Pg(A,g,C,e,B,a){var i=[];E(a),f(i,A,"keyLength"),("number"!=typeof A||(0|A)!==A||A<0)&&p(i,"keyLength must be an unsigned integer");var r=_(g=D(i,g,"password")),t=g.length;i.push(r),C=D(i,C,"salt");var Q,c=0|I._crypto_pwhash_scryptsalsa208sha256_saltbytes();C.length!==c&&p(i,"invalid salt length"),Q=_(C),i.push(Q),f(i,e,"opsLimit"),("number"!=typeof e||(0|e)!==e||e<0)&&p(i,"opsLimit must be an unsigned integer"),f(i,B,"memLimit"),("number"!=typeof B||(0|B)!==B||B<0)&&p(i,"memLimit must be an unsigned integer");var n=new y(0|A),w=n.address;if(i.push(w),!(0|I._crypto_pwhash_scryptsalsa208sha256(w,A,0,r,t,0,Q,e,0,B))){var k=o(n,a);return h(i),k}s(i,"invalid usage")}function Rg(A,g,C,e,B,a,i){var r=[];E(i);var t=_(A=D(r,A,"password")),Q=A.length;r.push(t);var c=_(g=D(r,g,"salt")),n=g.length;r.push(c),f(r,C,"opsLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(r,"opsLimit must be an unsigned integer"),f(r,e,"r"),("number"!=typeof e||(0|e)!==e||e<0)&&p(r,"r must be an unsigned integer"),f(r,B,"p"),("number"!=typeof B||(0|B)!==B||B<0)&&p(r,"p must be an unsigned integer"),f(r,a,"keyLength"),("number"!=typeof a||(0|a)!==a||a<0)&&p(r,"keyLength must be an unsigned integer");var w=new y(0|a),k=w.address;if(r.push(k),!(0|I._crypto_pwhash_scryptsalsa208sha256_ll(t,Q,c,n,C,0,e,B,k,a))){var d=o(w,i);return h(r),d}s(r,"invalid usage")}function Lg(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"password")),i=A.length;B.push(a),f(B,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&p(B,"opsLimit must be an unsigned integer"),f(B,C,"memLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(B,"memLimit must be an unsigned integer");var r=new y(0|I._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(B.push(r),!(0|I._crypto_pwhash_scryptsalsa208sha256_str(r,a,i,0,g,0,C))){var t=I.UTF8ToString(r);return h(B),t}s(B,"invalid usage")}function Tg(A,g,C){var e=[];E(C),"string"!=typeof A&&p(e,"hashed_password must be a string"),A=B(A+"\0"),null!=i&&A.length-1!==i&&p(e,"invalid hashed_password length");var a=_(A),i=A.length-1;e.push(a);var r=_(g=D(e,g,"password")),t=g.length;e.push(r);var Q=!(0|I._crypto_pwhash_scryptsalsa208sha256_str_verify(a,r,t,0));return h(e),Q}function qg(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"password")),i=A.length;B.push(a),f(B,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&p(B,"opsLimit must be an unsigned integer"),f(B,C,"memLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(B,"memLimit must be an unsigned integer");var r=new y(0|I._crypto_pwhash_strbytes()).address;if(B.push(r),!(0|I._crypto_pwhash_str(r,a,i,0,g,0,C))){var t=I.UTF8ToString(r);return h(B),t}s(B,"invalid usage")}function zg(A,g,C,e){var a=[];E(e),"string"!=typeof A&&p(a,"hashed_password must be a string"),A=B(A+"\0"),null!=r&&A.length-1!==r&&p(a,"invalid hashed_password length");var i=_(A),r=A.length-1;a.push(i),f(a,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&p(a,"opsLimit must be an unsigned integer"),f(a,C,"memLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"memLimit must be an unsigned integer");var t=!!(0|I._crypto_pwhash_str_needs_rehash(i,g,0,C));return h(a),t}function jg(A,g,C){var e=[];E(C),"string"!=typeof A&&p(e,"hashed_password must be a string"),A=B(A+"\0"),null!=i&&A.length-1!==i&&p(e,"invalid hashed_password length");var a=_(A),i=A.length-1;e.push(a);var r=_(g=D(e,g,"password")),t=g.length;e.push(r);var Q=!(0|I._crypto_pwhash_str_verify(a,r,t,0));return h(e),Q}function Xg(A,g,C){var e=[];E(C),A=D(e,A,"privateKey");var B,a=0|I._crypto_scalarmult_scalarbytes();A.length!==a&&p(e,"invalid privateKey length"),B=_(A),e.push(B),g=D(e,g,"publicKey");var i,r=0|I._crypto_scalarmult_bytes();g.length!==r&&p(e,"invalid publicKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"weak public key")}function Og(A,g){var C=[];E(g),A=D(C,A,"privateKey");var e,B=0|I._crypto_scalarmult_scalarbytes();A.length!==B&&p(C,"invalid privateKey length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_base(i,e))){var r=o(a,g);return h(C),r}s(C,"unknown error")}function Vg(A,g,C){var e=[];E(C),A=D(e,A,"n");var B,a=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==a&&p(e,"invalid n length"),B=_(A),e.push(B),g=D(e,g,"p");var i,r=0|I._crypto_scalarmult_ed25519_bytes();g.length!==r&&p(e,"invalid p length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult_ed25519(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid point or scalar is 0")}function Zg(A,g){var C=[];E(g),A=D(C,A,"scalar");var e,B=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==B&&p(C,"invalid scalar length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_ed25519_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_ed25519_base(i,e))){var r=o(a,g);return h(C),r}s(C,"scalar is 0")}function Wg(A,g){var C=[];E(g),A=D(C,A,"scalar");var e,B=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==B&&p(C,"invalid scalar length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_ed25519_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_ed25519_base_noclamp(i,e))){var r=o(a,g);return h(C),r}s(C,"scalar is 0")}function $g(A,g,C){var e=[];E(C),A=D(e,A,"n");var B,a=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==a&&p(e,"invalid n length"),B=_(A),e.push(B),g=D(e,g,"p");var i,r=0|I._crypto_scalarmult_ed25519_bytes();g.length!==r&&p(e,"invalid p length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult_ed25519_noclamp(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid point or scalar is 0")}function AI(A,g,C){var e=[];E(C),A=D(e,A,"scalar");var B,a=0|I._crypto_scalarmult_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid scalar length"),B=_(A),e.push(B),g=D(e,g,"element");var i,r=0|I._crypto_scalarmult_ristretto255_bytes();g.length!==r&&p(e,"invalid element length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_ristretto255_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult_ristretto255(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"result is identity element")}function gI(A,g){var C=[];E(g),A=D(C,A,"scalar");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid scalar length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_ristretto255_base(i,e))){var r=o(a,g);return h(C),r}s(C,"scalar is 0")}function II(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_secretbox_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_secretbox_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;B.push(f);var w=new y(0|I._crypto_secretbox_macbytes()),k=w.address;if(B.push(k),!(0|I._crypto_secretbox_detached(f,k,a,i,0,r,Q))){var d=o({mac:w,cipher:n},e);return h(B),d}s(B,"invalid usage")}function CI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_secretbox_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_secretbox_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(i+I._crypto_secretbox_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_secretbox_easy(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function eI(A){var g=[];E(A);var C=new y(0|I._crypto_secretbox_keybytes()),e=C.address;g.push(e),I._crypto_secretbox_keygen(e);var B=o(C,A);return h(g),B}function BI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"ciphertext")),r=A.length;a.push(i),g=D(a,g,"mac");var t,Q=0|I._crypto_secretbox_macbytes();g.length!==Q&&p(a,"invalid mac length"),t=_(g),a.push(t),C=D(a,C,"nonce");var c,n=0|I._crypto_secretbox_noncebytes();C.length!==n&&p(a,"invalid nonce length"),c=_(C),a.push(c),e=D(a,e,"key");var f,w=0|I._crypto_secretbox_keybytes();e.length!==w&&p(a,"invalid key length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;if(a.push(d),!(0|I._crypto_secretbox_open_detached(d,i,t,r,0,c,f))){var l=o(k,B);return h(a),l}s(a,"wrong secret key for the given ciphertext")}function aI(A,g,C,e){var B=[];E(e),A=D(B,A,"ciphertext");var a,i=I._crypto_secretbox_macbytes(),r=A.length;r<i&&p(B,"ciphertext is too short"),a=_(A),B.push(a),g=D(B,g,"nonce");var t,Q=0|I._crypto_secretbox_noncebytes();g.length!==Q&&p(B,"invalid nonce length"),t=_(g),B.push(t),C=D(B,C,"key");var c,n=0|I._crypto_secretbox_keybytes();C.length!==n&&p(B,"invalid key length"),c=_(C),B.push(c);var f=new y(r-I._crypto_secretbox_macbytes()|0),w=f.address;if(B.push(w),!(0|I._crypto_secretbox_open_easy(w,a,r,0,t,c))){var k=o(f,e);return h(B),k}s(B,"wrong secret key for the given ciphertext")}function iI(A,g,C){var e=[];E(C),A=D(e,A,"header");var B,a=0|I._crypto_secretstream_xchacha20poly1305_headerbytes();A.length!==a&&p(e,"invalid header length"),B=_(A),e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_secretstream_xchacha20poly1305_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(52).address;if(!(0|I._crypto_secretstream_xchacha20poly1305_init_pull(t,B,i))){var Q=t;return h(e),Q}s(e,"invalid usage")}function rI(A,g){var C=[];E(g),A=D(C,A,"key");var e,B=0|I._crypto_secretstream_xchacha20poly1305_keybytes();A.length!==B&&p(C,"invalid key length"),e=_(A),C.push(e);var a=new y(52).address,i=new y(0|I._crypto_secretstream_xchacha20poly1305_headerbytes()),r=i.address;if(C.push(r),!(0|I._crypto_secretstream_xchacha20poly1305_init_push(a,r,e))){var t={state:a,header:o(i,g)};return h(C),t}s(C,"invalid usage")}function tI(A){var g=[];E(A);var C=new y(0|I._crypto_secretstream_xchacha20poly1305_keybytes()),e=C.address;g.push(e),I._crypto_secretstream_xchacha20poly1305_keygen(e);var B=o(C,A);return h(g),B}function QI(A,g,C,e){var B=[];E(e),f(B,A,"state_address"),g=D(B,g,"cipher");var a,i=I._crypto_secretstream_xchacha20poly1305_abytes(),r=g.length;r<i&&p(B,"cipher is too short"),a=_(g),B.push(a);var t=null,Q=0;null!=C&&(t=_(C=D(B,C,"ad")),Q=C.length,B.push(t));var c=new y(r-I._crypto_secretstream_xchacha20poly1305_abytes()|0),s=c.address;B.push(s);var w,k=(w=n(1),B.push(w),(k=0===I._crypto_secretstream_xchacha20poly1305_pull(A,s,0,w,a,r,0,t,Q)&&{tag:I.HEAPU8[w],message:c})&&{message:o(k.message,e),tag:k.tag});return h(B),k}function oI(A,g,C,e,B){var a=[];E(B),f(a,A,"state_address");var i=_(g=D(a,g,"message_chunk")),r=g.length;a.push(i);var t=null,Q=0;null!=C&&(t=_(C=D(a,C,"ad")),Q=C.length,a.push(t)),f(a,e,"tag"),("number"!=typeof e||(0|e)!==e||e<0)&&p(a,"tag must be an unsigned integer");var c=new y(r+I._crypto_secretstream_xchacha20poly1305_abytes()|0),n=c.address;if(a.push(n),!(0|I._crypto_secretstream_xchacha20poly1305_push(A,n,0,i,r,0,t,Q,0,e))){var w=o(c,B);return h(a),w}s(a,"invalid usage")}function cI(A,g){var C=[];return E(g),f(C,A,"state_address"),I._crypto_secretstream_xchacha20poly1305_rekey(A),h(C),!0}function EI(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_shorthash_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_shorthash_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_shorthash(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function yI(A){var g=[];E(A);var C=new y(0|I._crypto_shorthash_keybytes()),e=C.address;g.push(e),I._crypto_shorthash_keygen(e);var B=o(C,A);return h(g),B}function _I(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_shorthash_siphashx24_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_shorthash_siphashx24_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_shorthash_siphashx24(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function nI(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_sign_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(A.length+I._crypto_sign_bytes()|0),Q=t.address;if(e.push(Q),!(0|I._crypto_sign(Q,null,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function hI(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_sign_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_sign_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_sign_detached(Q,null,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function sI(A,g){var C=[];E(g),A=D(C,A,"edPk");var e,B=0|I._crypto_sign_publickeybytes();A.length!==B&&p(C,"invalid edPk length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_pk_to_curve25519(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function pI(A,g){var C=[];E(g),A=D(C,A,"edSk");var e,B=0|I._crypto_sign_secretkeybytes();A.length!==B&&p(C,"invalid edSk length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_sk_to_curve25519(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function fI(A,g){var C=[];E(g),A=D(C,A,"privateKey");var e,B=0|I._crypto_sign_secretkeybytes();A.length!==B&&p(C,"invalid privateKey length"),e=_(A),C.push(e);var a=new y(0|I._crypto_sign_publickeybytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_sk_to_pk(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function DI(A,g){var C=[];E(g),A=D(C,A,"privateKey");var e,B=0|I._crypto_sign_secretkeybytes();A.length!==B&&p(C,"invalid privateKey length"),e=_(A),C.push(e);var a=new y(0|I._crypto_sign_seedbytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_sk_to_seed(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function wI(A,g,C){var e=[];E(C),f(e,A,"state_address"),g=D(e,g,"privateKey");var B,a=0|I._crypto_sign_secretkeybytes();g.length!==a&&p(e,"invalid privateKey length"),B=_(g),e.push(B);var i=new y(0|I._crypto_sign_bytes()),r=i.address;if(e.push(r),!(0|I._crypto_sign_final_create(A,r,null,B))){var t=(I._free(A),o(i,C));return h(e),t}s(e,"invalid usage")}function kI(A,g,C,e){var B=[];E(e),f(B,A,"state_address"),g=D(B,g,"signature");var a,i=0|I._crypto_sign_bytes();g.length!==i&&p(B,"invalid signature length"),a=_(g),B.push(a),C=D(B,C,"publicKey");var r,t=0|I._crypto_sign_publickeybytes();C.length!==t&&p(B,"invalid publicKey length"),r=_(C),B.push(r);var Q=!(0|I._crypto_sign_final_verify(A,a,r));return h(B),Q}function dI(A){var g=[];E(A);var C=new y(208).address;if(!(0|I._crypto_sign_init(C))){var e=C;return h(g),e}s(g,"internal error")}function lI(A){var g=[];E(A);var C=new y(0|I._crypto_sign_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_sign_secretkeybytes()),a=B.address;if(g.push(a),!(0|I._crypto_sign_keypair(e,a))){var i={publicKey:o(C,A),privateKey:o(B,A),keyType:"ed25519"};return h(g),i}s(g,"internal error")}function uI(A,g,C){var e=[];E(C),A=D(e,A,"signedMessage");var B,a=I._crypto_sign_bytes(),i=A.length;i<a&&p(e,"signedMessage is too short"),B=_(A),e.push(B),g=D(e,g,"publicKey");var r,t=0|I._crypto_sign_publickeybytes();g.length!==t&&p(e,"invalid publicKey length"),r=_(g),e.push(r);var Q=new y(i-I._crypto_sign_bytes()|0),c=Q.address;if(e.push(c),!(0|I._crypto_sign_open(c,null,B,i,0,r))){var n=o(Q,C);return h(e),n}s(e,"incorrect signature for the given public key")}function vI(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_sign_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_sign_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_sign_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_sign_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"ed25519"};return h(C),Q}s(C,"invalid usage")}function SI(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_sign_update(A,B,a,0)&&s(e,"invalid usage"),h(e)}function bI(A,g,C){var e=[];A=D(e,A,"signature");var B,a=0|I._crypto_sign_bytes();A.length!==a&&p(e,"invalid signature length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"publicKey");var t,Q=0|I._crypto_sign_publickeybytes();C.length!==Q&&p(e,"invalid publicKey length"),t=_(C),e.push(t);var o=!(0|I._crypto_sign_verify_detached(B,i,r,0,t));return h(e),o}function MI(A,g,C,e){var B=[];E(e),f(B,A,"outLength"),("number"!=typeof A||(0|A)!==A||A<0)&&p(B,"outLength must be an unsigned integer"),g=D(B,g,"key");var a,i=0|I._crypto_stream_chacha20_keybytes();g.length!==i&&p(B,"invalid key length"),a=_(g),B.push(a),C=D(B,C,"nonce");var r,t=0|I._crypto_stream_chacha20_noncebytes();C.length!==t&&p(B,"invalid nonce length"),r=_(C),B.push(r);var Q=new y(0|A),c=Q.address;B.push(c),I._crypto_stream_chacha20(c,A,0,r,a);var n=o(Q,e);return h(B),n}function FI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"input_message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_stream_chacha20_ietf_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_stream_chacha20_ietf_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;if(B.push(f),0===I._crypto_stream_chacha20_ietf_xor(f,a,i,0,r,Q)){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function NI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"input_message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_stream_chacha20_ietf_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),f(a,C,"nonce_increment"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"nonce_increment must be an unsigned integer"),e=D(a,e,"key");var c,n=0|I._crypto_stream_chacha20_ietf_keybytes();e.length!==n&&p(a,"invalid key length"),c=_(e),a.push(c);var w=new y(0|r),k=w.address;if(a.push(k),0===I._crypto_stream_chacha20_ietf_xor_ic(k,i,r,0,t,C,c)){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function KI(A){var g=[];E(A);var C=new y(0|I._crypto_stream_chacha20_keybytes()),e=C.address;g.push(e),I._crypto_stream_chacha20_keygen(e);var B=o(C,A);return h(g),B}function YI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"input_message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_stream_chacha20_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_stream_chacha20_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;if(B.push(f),0===I._crypto_stream_chacha20_xor(f,a,i,0,r,Q)){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function HI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"input_message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_stream_chacha20_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),f(a,C,"nonce_increment"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"nonce_increment must be an unsigned integer"),e=D(a,e,"key");var c,n=0|I._crypto_stream_chacha20_keybytes();e.length!==n&&p(a,"invalid key length"),c=_(e),a.push(c);var w=new y(0|r),k=w.address;if(a.push(k),0===I._crypto_stream_chacha20_xor_ic(k,i,r,0,t,C,0,c)){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function GI(A){var g=[];E(A);var C=new y(0|I._crypto_stream_keybytes()),e=C.address;g.push(e),I._crypto_stream_keygen(e);var B=o(C,A);return h(g),B}function JI(A){var g=[];E(A);var C=new y(0|I._crypto_stream_xchacha20_keybytes()),e=C.address;g.push(e),I._crypto_stream_xchacha20_keygen(e);var B=o(C,A);return h(g),B}function UI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"input_message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_stream_xchacha20_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_stream_xchacha20_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;if(B.push(f),0===I._crypto_stream_xchacha20_xor(f,a,i,0,r,Q)){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function xI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"input_message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_stream_xchacha20_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),f(a,C,"nonce_increment"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"nonce_increment must be an unsigned integer"),e=D(a,e,"key");var c,n=0|I._crypto_stream_xchacha20_keybytes();e.length!==n&&p(a,"invalid key length"),c=_(e),a.push(c);var w=new y(0|r),k=w.address;if(a.push(k),0===I._crypto_stream_xchacha20_xor_ic(k,i,r,0,t,C,0,c)){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function mI(A,g){var C=[];E(g),f(C,A,"length"),("number"!=typeof A||(0|A)!==A||A<0)&&p(C,"length must be an unsigned integer");var e=new y(0|A),B=e.address;C.push(B),I._randombytes_buf(B,A);var a=o(e,g);return h(C),a}function PI(A,g,C){var e=[];E(C),f(e,A,"length"),("number"!=typeof A||(0|A)!==A||A<0)&&p(e,"length must be an unsigned integer"),g=D(e,g,"seed");var B,a=0|I._randombytes_seedbytes();g.length!==a&&p(e,"invalid seed length"),B=_(g),e.push(B);var i=new y(0|A),r=i.address;e.push(r),I._randombytes_buf_deterministic(r,A,B);var t=o(i,C);return h(e),t}function RI(A){E(A),I._randombytes_close()}function LI(A){E(A);var g=I._randombytes_random()>>>0;return h([]),g}function TI(A,g){var C=[];E(g);for(var e=I._malloc(24),B=0;B<6;B++)I.setValue(e+4*B,I.Runtime.addFunction(A[["implementation_name","random","stir","uniform","buf","close"][B]]),"i32");0|I._randombytes_set_implementation(e)&&s(C,"unsupported implementation"),h(C)}function qI(A){E(A),I._randombytes_stir()}function zI(A,g){var C=[];E(g),f(C,A,"upper_bound"),("number"!=typeof A||(0|A)!==A||A<0)&&p(C,"upper_bound must be an unsigned integer");var e=I._randombytes_uniform(A)>>>0;return h(C),e}function jI(){var A=I._sodium_version_string(),g=I.UTF8ToString(A);return h([]),g}return y.prototype.to_Uint8Array=function(){var A=new Uint8Array(this.length);return A.set(I.HEAPU8.subarray(this.address,this.address+this.length)),A},A.add=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can added");var I=A.length,C=0,e=0;if(g.length!=A.length)throw new TypeError("Arguments must have the same length");for(e=0;e<I;e++)C>>=8,C+=A[e]+g[e],A[e]=255&C},A.base64_variants=r,A.compare=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(A.length!==g.length)throw new TypeError("Only instances of identical length can be compared");for(var I=0,C=1,e=A.length;e-- >0;)I|=g[e]-A[e]>>8&C,C&=(g[e]^A[e])-1>>8;return I+I+C-1},A.from_base64=function(A,g){g=t(g);var C,e=[],B=new y(3*(A=D(e,A,"input")).length/4),a=_(A),i=n(4),r=n(4);return e.push(a),e.push(B.address),e.push(B.result_bin_len_p),e.push(B.b64_end_p),0!==I._sodium_base642bin(B.address,B.length,a,A.length,0,i,r,g)&&s(e,"invalid input"),I.getValue(r,"i32")-a!==A.length&&s(e,"incomplete input"),B.length=I.getValue(i,"i32"),C=B.to_Uint8Array(),h(e),C},A.from_hex=function(A){var g,C=[],e=new y((A=D(C,A,"input")).length/2),B=_(A),a=n(4);return C.push(B),C.push(e.address),C.push(e.hex_end_p),0!==I._sodium_hex2bin(e.address,e.length,B,A.length,0,0,a)&&s(C,"invalid input"),I.getValue(a,"i32")-B!==A.length&&s(C,"incomplete input"),g=e.to_Uint8Array(),h(C),g},A.from_string=B,A.increment=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be incremented");for(var g=256,I=0,C=A.length;I<C;I++)g>>=8,g+=A[I],A[I]=255&g},A.is_zero=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be checked");for(var g=0,I=0,C=A.length;I<C;I++)g|=A[I];return 0===g},A.libsodium=g,A.memcmp=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(A.length!==g.length)throw new TypeError("Only instances of identical length can be compared");for(var I=0,C=0,e=A.length;C<e;C++)I|=A[C]^g[C];return 0===I},A.memzero=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be wiped");for(var g=0,I=A.length;g<I;g++)A[g]=0},A.output_formats=function(){return["uint8array","text","hex","base64"]},A.pad=function(A,g){if(!(A instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((g|=0)<=0)throw new Error("block size must be > 0");var C,e=[],B=n(4),a=1,i=0,r=0|A.length,t=new y(r+g);e.push(B),e.push(t.address);for(var Q=t.address,o=t.address+r+g;Q<o;Q++)I.HEAPU8[Q]=A[i],i+=a=1&~((65535&((r-=a)>>>48|r>>>32|r>>>16|r))-1>>16);return 0!==I._sodium_pad(B,t.address,A.length,g,t.length)&&s(e,"internal error"),t.length=I.getValue(B,"i32"),C=t.to_Uint8Array(),h(e),C},A.unpad=function(A,g){if(!(A instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((g|=0)<=0)throw new Error("block size must be > 0");var C=[],e=_(A),B=n(4);return C.push(e),C.push(B),0!==I._sodium_unpad(B,e,A.length,g)&&s(C,"unsupported/invalid padding"),A=(A=new Uint8Array(A)).subarray(0,I.getValue(B,"i32")),h(C),A},A.ready=e,A.symbols=function(){return Object.keys(A).sort()},A.to_base64=Q,A.to_hex=i,A.to_string=a,A}var I="object"==typeof A.sodium&&"function"==typeof A.sodium.onload?A.sodium.onload:null;"function"==typeof define&&define.amd?define(["exports","libsodium"],g):"object"==typeof exports&&"string"!=typeof exports.nodeName?g(exports,require("libsodium")):A.sodium=g(A.commonJsStrict={},A.libsodium),I&&A.sodium.ready.then((function(){I(A.sodium)}))}(this);
Code: Select all
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 875:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 782:
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require2_) => {
"use strict";
__nccwpck_require2_.r(__webpack_exports__);
/* harmony export */ __nccwpck_require2_.d(__webpack_exports__, {
/* harmony export */ "controlMessages": () => (/* binding */ controlMessages),
/* harmony export */ "clientProtocols": () => (/* binding */ clientProtocols),
/* harmony export */ "constants": () => (/* binding */ constants),
/* harmony export */ "writeAsync": () => (/* binding */ writeAsync),
/* harmony export */ "writevAsync": () => (/* binding */ writevAsync),
/* harmony export */ "readAsync": () => (/* binding */ readAsync),
/* harmony export */ "invokeCallback": () => (/* binding */ invokeCallback),
/* harmony export */ "errHandler": () => (/* binding */ errHandler)
/* harmony export */ });
const fs = __nccwpck_require2_(147);
const controlMessages = {
peerChangeset: "peer_changeset"
}
Object.freeze(controlMessages);
const clientProtocols = {
json: "json",
bson: "bson"
}
Object.freeze(clientProtocols);
const constants = {
MAX_SEQ_PACKET_SIZE: 128 * 1024,
PATCH_CONFIG_PATH: "../patch.cfg",
POST_EXEC_SCRIPT_NAME: "post_exec.sh"
}
Object.freeze(constants);
function writeAsync(fd, buf) {
return new Promise(resolve => fs.write(fd, buf, resolve));
}
function writevAsync(fd, bufList) {
return new Promise(resolve => fs.writev(fd, bufList, resolve));
}
function readAsync(fd, buf, offset, size) {
return new Promise(resolve => fs.read(fd, buf, 0, size, offset, resolve));
}
async function invokeCallback(callback, ...args) {
if (!callback)
return;
if (callback.constructor.name === 'AsyncFunction') {
await callback(...args).catch(errHandler);
}
else {
callback(...args);
}
}
function errHandler(err) {
console.log(err);
}
/***/ }),
/***/ 244:
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require2_) => {
"use strict";
// ESM COMPAT FLAG
__nccwpck_require2_.r(__webpack_exports__);
// EXPORTS
__nccwpck_require2_.d(__webpack_exports__, {
"HotPocketContract": () => (/* binding */ HotPocketContract)
});
// EXTERNAL MODULE: ./src/common.js
var common = __nccwpck_require2_(782);
;// CONCATENATED MODULE: ./src/patch-config.js
const fs = __nccwpck_require2_(147);
// Handles patch config manipulation.
class PatchConfig {
// Loads the config value if there's a patch config file. Otherwise throw error.
getConfig() {
if (!fs.existsSync(common.constants.PATCH_CONFIG_PATH))
throw "Patch config file does not exist.";
return new Promise((resolve, reject) => {
fs.readFile(common.constants.PATCH_CONFIG_PATH, 'utf8', function (err, data) {
if (err) reject(err);
else resolve(JSON.parse(data));
});
});
}
updateConfig(config) {
this.validateConfig(config);
return new Promise((resolve, reject) => {
// Format json to match with the patch.cfg json format created by HP at the startup.
fs.writeFile(common.constants.PATCH_CONFIG_PATH, JSON.stringify(config, null, 4), (err) => {
if (err) reject(err);
else resolve();
});
});
}
validateConfig(config) {
// Validate all config fields.
if (!config.version)
throw "Contract version is not specified.";
if (!config.unl || !config.unl.length)
throw "UNL list cannot be empty.";
for (let publicKey of config.unl) {
// Public keys are validated against length, ed prefix and hex characters.
if (!publicKey.length)
throw "UNL public key not specified.";
else if (!(/^(e|E)(d|D)[0-9a-fA-F]{64}$/g.test(publicKey)))
throw "Invalid UNL public key specified.";
}
if (!config.bin_path || !config.bin_path.length)
throw "Binary path cannot be empty.";
if (config.consensus.mode != "public" && config.consensus.mode != "private")
throw "Invalid consensus mode configured in patch file. Valid values: public|private";
if (config.consensus.roundtime < 1 && config.consensus.roundtime > 3600000)
throw "Round time must be between 1 and 3600000ms inclusive.";
if (config.consensus.stage_slice < 1 || config.consensus.stage_slice > 33)
throw "Stage slice must be between 1 and 33 percent inclusive.";
if (config.consensus.threshold < 1 || config.consensus.threshold > 100)
throw "Consensus threshold must be between 1 and 100 percent inclusive.";
if (config.npl.mode != "public" && config.npl.mode != "private")
throw "Invalid npl mode configured in patch file. Valid values: public|private";
if (config.round_limits.user_input_bytes < 0 || config.round_limits.user_output_bytes < 0 || config.round_limits.npl_output_bytes < 0 ||
config.round_limits.proc_cpu_seconds < 0 || config.round_limits.proc_mem_bytes < 0 || config.round_limits.proc_ofd_count < 0)
throw "Invalid round limits.";
if (config.max_input_ledger_offset < 0)
throw "Invalid max input ledger offset";
}
}
;// CONCATENATED MODULE: ./src/contract-context.js
// HotPocket contract context which is passed into every smart contract invocation.
class ContractContext {
#patchConfig = null;
#controlChannel = null;
constructor(hpargs, users, unl, controlChannel) {
this.#patchConfig = new PatchConfig();
this.#controlChannel = controlChannel;
this.contractId = hpargs.contract_id;
this.publicKey = hpargs.public_key;
this.privateKey = hpargs.private_key;
this.readonly = hpargs.readonly;
this.timestamp = hpargs.timestamp;
this.users = users;
this.unl = unl; // Not available in readonly mode.
this.lclSeqNo = hpargs.lcl_seq_no; // Not available in readonly mode.
this.lclHash = hpargs.lcl_hash; // Not available in readonly mode.
}
// Returns the config values in patch config.
getConfig() {
return this.#patchConfig.getConfig();
}
// Updates the config with given config object and save the patch config.
updateConfig(config) {
return this.#patchConfig.updateConfig(config);
}
// Updates the known-peers this node must attempt connections to.
// toAdd: Array of strings containing peers to be added. Each string must be in the format of "<ip>:<port>".
updatePeers(toAdd, toRemove) {
return this.#controlChannel.send({
type: common.controlMessages.peerChangeset,
add: toAdd || [],
remove: toRemove || []
});
}
}
;// CONCATENATED MODULE: ./src/control.js
const control_fs = __nccwpck_require2_(147);
class ControlChannel {
#fd = null;
#readStream = null;
constructor(fd) {
this.#fd = fd;
}
consume(onMessage) {
if (this.#readStream)
throw "Control channel already consumed.";
this.#readStream = control_fs.createReadStream(null, { fd: this.#fd, highWaterMark: common.constants.MAX_SEQ_PACKET_SIZE });
this.#readStream.on("data", onMessage);
this.#readStream.on("error", (err) => { });
}
send(obj) {
const buf = Buffer.from(JSON.stringify(obj));
if (buf.length > common.constants.MAX_SEQ_PACKET_SIZE)
throw ("Control message exceeds max size " + common.constants.MAX_SEQ_PACKET_SIZE);
return (0,common.writeAsync)(this.#fd, buf);
}
close() {
this.#readStream && this.#readStream.close();
}
}
;// CONCATENATED MODULE: ./src/npl.js
const npl_fs = __nccwpck_require2_(147);
// Represents the node-party-line that can be used to communicate with unl nodes.
class NplChannel {
#fd = null;
#readStream = null;
constructor(fd) {
this.#fd = fd;
}
consume(onMessage) {
if (this.#readStream)
throw "NPL channel already consumed.";
this.#readStream = npl_fs.createReadStream(null, { fd: this.#fd, highWaterMark: common.constants.MAX_SEQ_PACKET_SIZE });
// When hotpocket is sending the npl messages, first it sends the public key of the particular node
// and then the message, First data buffer is taken as public key and the second one as message,
// then npl message object is constructed and the event is emmited.
let publicKey = null;
this.#readStream.on("data", (data) => {
if (!publicKey) {
publicKey = data.toString();
}
else {
onMessage(publicKey, data);
publicKey = null;
}
});
this.#readStream.on("error", (err) => { });
}
send(msg) {
const buf = Buffer.from(msg);
if (buf.length > common.constants.MAX_SEQ_PACKET_SIZE)
throw ("NPL message exceeds max size " + common.constants.MAX_SEQ_PACKET_SIZE);
return (0,common.writeAsync)(this.#fd, buf);
}
close() {
this.#readStream && this.#readStream.close();
}
}
;// CONCATENATED MODULE: ./src/unl.js
class UnlCollection {
#readonly = null;
#pendingTasks = null;
#channel = null;
constructor(readonly, unl, channel, pendingTasks) {
this.nodes = {};
this.#readonly = readonly;
this.#pendingTasks = pendingTasks;
if (!readonly) {
for (const [publicKey, stat] of Object.entries(unl)) {
this.nodes[publicKey] = new UnlNode(publicKey, stat.active_on);
}
this.#channel = channel;
}
}
// Returns the unl node for the specified public key. Returns null if not found.
find(publicKey) {
return this.nodes[publicKey];
}
// Returns all the unl nodes.
list() {
return Object.values(this.nodes);
}
count() {
return Object.keys(this.nodes).length;
}
// Registers for NPL messages.
onMessage(callback) {
if (this.#readonly)
throw "NPL messages not available in readonly mode.";
this.#channel.consume((publicKey, msg) => {
this.#pendingTasks.push((0,common.invokeCallback)(callback, this.nodes[publicKey], msg));
});
}
// Broadcasts a message to all unl nodes (including self if self is part of unl).
async send(msg) {
if (this.#readonly)
throw "NPL messages not available in readonly mode.";
await this.#channel.send(msg);
}
}
// Represents a node that's part of unl.
class UnlNode {
constructor(publicKey, activeOn) {
this.publicKey = publicKey;
this.activeOn = activeOn;
}
}
;// CONCATENATED MODULE: ./src/user.js
class UsersCollection {
#users = {};
#infd = null;
constructor(userInputsFd, usersObj, clientProtocol) {
this.#infd = userInputsFd;
Object.entries(usersObj).forEach(([publicKey, arr]) => {
const outfd = arr[0]; // First array element is the output fd.
arr.splice(0, 1); // Remove first element (output fd). The rest are pairs of msg offset/length tuples.
const channel = new UserChannel(outfd, clientProtocol);
this.#users[publicKey] = new User(publicKey, channel, arr);
});
}
// Returns the User for the specified public key. Returns null if not found.
find(publicKey) {
return this.#users[publicKey]
}
// Returns all the currently connected users.
list() {
return Object.values(this.#users);
}
count() {
return Object.keys(this.#users).length;
}
async read(input) {
const [offset, size] = input;
const buf = Buffer.alloc(size);
await (0,common.readAsync)(this.#infd, buf, offset, size);
return buf;
}
}
class User {
#channel = null;
constructor(publicKey, channel, inputs) {
this.publicKey = publicKey;
this.inputs = inputs;
this.#channel = channel;
}
async send(msg) {
await this.#channel.send(msg);
}
}
class UserChannel {
#outfd = null;
#clientProtocol = null;
constructor(outfd, clientProtocol) {
this.#outfd = outfd;
this.#clientProtocol = clientProtocol;
}
send(msg) {
const messageBuf = this.serialize(msg);
let headerBuf = Buffer.alloc(4);
// Writing message length in big endian format.
headerBuf.writeUInt32BE(messageBuf.byteLength)
return (0,common.writevAsync)(this.#outfd, [headerBuf, messageBuf]);
}
serialize(msg) {
if (!msg)
throw "Cannot serialize null content.";
if (Buffer.isBuffer(msg))
return msg;
else if (this.#clientProtocol == common.clientProtocols.bson)
return Buffer.from(msg);
else // json
return Buffer.from(JSON.stringify(msg));
}
}
;// CONCATENATED MODULE: ./src/hotpocket-contract.js
const hotpocket_contract_fs = __nccwpck_require2_(147);
const tty = __nccwpck_require2_(224);
class HotPocketContract {
#controlChannel = null;
#clientProtocol = null;
#forceTerminate = false;
init(contractFunc, clientProtocol = common.clientProtocols.json, forceTerminate = false) {
return new Promise(resolve => {
if (this.#controlChannel) { // Already initialized.
resolve(false);
return;
}
this.#clientProtocol = clientProtocol;
// Check whether we are running on a console and provide error.
if (tty.isatty(process.stdin.fd)) {
console.error("Error: HotPocket smart contracts must be executed via HotPocket.");
resolve(false);
return;
}
this.#forceTerminate = forceTerminate;
// Parse HotPocket args.
hotpocket_contract_fs.readFile(process.stdin.fd, 'utf8', (err, argsJson) => {
const hpargs = JSON.parse(argsJson);
this.#controlChannel = new ControlChannel(hpargs.control_fd);
this.#executeContract(hpargs, contractFunc);
resolve(true);
});
});
}
#executeContract(hpargs, contractFunc) {
// Keeps track of all the tasks (promises) that must be awaited before the termination.
const pendingTasks = [];
const nplChannel = new NplChannel(hpargs.npl_fd);
const users = new UsersCollection(hpargs.user_in_fd, hpargs.users, this.#clientProtocol);
const unl = new UnlCollection(hpargs.readonly, hpargs.unl, nplChannel, pendingTasks);
const executionContext = new ContractContext(hpargs, users, unl, this.#controlChannel);
(0,common.invokeCallback)(contractFunc, executionContext).catch(common.errHandler).finally(() => {
// Wait for any pending tasks added during execution.
Promise.all(pendingTasks).catch(common.errHandler).finally(() => {
nplChannel.close();
this.#terminate();
});
});
}
#terminate() {
this.#controlChannel.close();
if (this.#forceTerminate)
process.kill(process.pid, 'SIGINT');
}
}
/***/ }),
/***/ 53:
/***/ ((module, __unused_webpack_exports, __nccwpck_require2_) => {
const { clientProtocols, constants } = __nccwpck_require2_(782);
const { HotPocketContract } = __nccwpck_require2_(244);
module.exports = {
Contract: HotPocketContract,
clientProtocols,
POST_EXEC_SCRIPT_NAME: constants.POST_EXEC_SCRIPT_NAME,
}
/***/ }),
/***/ 147:
/***/ ((module) => {
"use strict";
module.exports = __nccwpck_require__(147);
/***/ }),
/***/ 224:
/***/ ((module) => {
"use strict";
module.exports = __nccwpck_require__(224);
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __nccwpck_require2_(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ var threw = true;
/******/ try {
/******/ __webpack_modules__[moduleId](module, module.exports, __nccwpck_require2_);
/******/ threw = false;
/******/ } finally {
/******/ if(threw) delete __webpack_module_cache__[moduleId];
/******/ }
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __nccwpck_require2_.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__nccwpck_require2_.o(definition, key) && !__nccwpck_require2_.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __nccwpck_require2_.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __nccwpck_require2_.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/compat */
/******/
/******/ if (typeof __nccwpck_require2_ !== 'undefined') __nccwpck_require2_.ab = __dirname + "/";
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module is referenced by other modules so it can't be inlined
/******/ var __webpack_exports__ = __nccwpck_require2_(53);
/******/ module.exports = __webpack_exports__;
/******/
/******/ })()
;
/***/ }),
/***/ 113:
/***/ ((module) => {
"use strict";
module.exports = require("crypto");
/***/ }),
/***/ 147:
/***/ ((module) => {
"use strict";
module.exports = require("fs");
/***/ }),
/***/ 17:
/***/ ((module) => {
"use strict";
module.exports = require("path");
/***/ }),
/***/ 224:
/***/ ((module) => {
"use strict";
module.exports = require("tty");
/***/ }),
/***/ 618:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
function isAnyArrayBuffer(value) {
return ['[object ArrayBuffer]', '[object SharedArrayBuffer]'].includes(Object.prototype.toString.call(value));
}
function isUint8Array(value) {
return Object.prototype.toString.call(value) === '[object Uint8Array]';
}
function isRegExp(d) {
return Object.prototype.toString.call(d) === '[object RegExp]';
}
function isMap(d) {
return Object.prototype.toString.call(d) === '[object Map]';
}
function isDate(d) {
return Object.prototype.toString.call(d) === '[object Date]';
}
function defaultInspect(x, _options) {
return JSON.stringify(x, (k, v) => {
if (typeof v === 'bigint') {
return { $numberLong: `${v}` };
}
else if (isMap(v)) {
return Object.fromEntries(v);
}
return v;
});
}
function getStylizeFunction(options) {
const stylizeExists = options != null &&
typeof options === 'object' &&
'stylize' in options &&
typeof options.stylize === 'function';
if (stylizeExists) {
return options.stylize;
}
}
const BSON_MAJOR_VERSION = 6;
const BSON_INT32_MAX = 0x7fffffff;
const BSON_INT32_MIN = -0x80000000;
const BSON_INT64_MAX = Math.pow(2, 63) - 1;
const BSON_INT64_MIN = -Math.pow(2, 63);
const JS_INT_MAX = Math.pow(2, 53);
const JS_INT_MIN = -Math.pow(2, 53);
const BSON_DATA_NUMBER = 1;
const BSON_DATA_STRING = 2;
const BSON_DATA_OBJECT = 3;
const BSON_DATA_ARRAY = 4;
const BSON_DATA_BINARY = 5;
const BSON_DATA_UNDEFINED = 6;
const BSON_DATA_OID = 7;
const BSON_DATA_BOOLEAN = 8;
const BSON_DATA_DATE = 9;
const BSON_DATA_NULL = 10;
const BSON_DATA_REGEXP = 11;
const BSON_DATA_DBPOINTER = 12;
const BSON_DATA_CODE = 13;
const BSON_DATA_SYMBOL = 14;
const BSON_DATA_CODE_W_SCOPE = 15;
const BSON_DATA_INT = 16;
const BSON_DATA_TIMESTAMP = 17;
const BSON_DATA_LONG = 18;
const BSON_DATA_DECIMAL128 = 19;
const BSON_DATA_MIN_KEY = 0xff;
const BSON_DATA_MAX_KEY = 0x7f;
const BSON_BINARY_SUBTYPE_DEFAULT = 0;
const BSON_BINARY_SUBTYPE_UUID_NEW = 4;
const BSONType = Object.freeze({
double: 1,
string: 2,
object: 3,
array: 4,
binData: 5,
undefined: 6,
objectId: 7,
bool: 8,
date: 9,
null: 10,
regex: 11,
dbPointer: 12,
javascript: 13,
symbol: 14,
javascriptWithScope: 15,
int: 16,
timestamp: 17,
long: 18,
decimal: 19,
minKey: -1,
maxKey: 127
});
class BSONError extends Error {
get bsonError() {
return true;
}
get name() {
return 'BSONError';
}
constructor(message, options) {
super(message, options);
}
static isBSONError(value) {
return (value != null &&
typeof value === 'object' &&
'bsonError' in value &&
value.bsonError === true &&
'name' in value &&
'message' in value &&
'stack' in value);
}
}
class BSONVersionError extends BSONError {
get name() {
return 'BSONVersionError';
}
constructor() {
super(`Unsupported BSON version, bson types must be from bson ${BSON_MAJOR_VERSION}.x.x`);
}
}
class BSONRuntimeError extends BSONError {
get name() {
return 'BSONRuntimeError';
}
constructor(message) {
super(message);
}
}
const FIRST_BIT = 0x80;
const FIRST_TWO_BITS = 0xc0;
const FIRST_THREE_BITS = 0xe0;
const FIRST_FOUR_BITS = 0xf0;
const FIRST_FIVE_BITS = 0xf8;
const TWO_BIT_CHAR = 0xc0;
const THREE_BIT_CHAR = 0xe0;
const FOUR_BIT_CHAR = 0xf0;
const CONTINUING_CHAR = 0x80;
function validateUtf8(bytes, start, end) {
let continuation = 0;
for (let i = start; i < end; i += 1) {
const byte = bytes[i];
if (continuation) {
if ((byte & FIRST_TWO_BITS) !== CONTINUING_CHAR) {
return false;
}
continuation -= 1;
}
else if (byte & FIRST_BIT) {
if ((byte & FIRST_THREE_BITS) === TWO_BIT_CHAR) {
continuation = 1;
}
else if ((byte & FIRST_FOUR_BITS) === THREE_BIT_CHAR) {
continuation = 2;
}
else if ((byte & FIRST_FIVE_BITS) === FOUR_BIT_CHAR) {
continuation = 3;
}
else {
return false;
}
}
}
return !continuation;
}
function tryReadBasicLatin(uint8array, start, end) {
if (uint8array.length === 0) {
return '';
}
const stringByteLength = end - start;
if (stringByteLength === 0) {
return '';
}
if (stringByteLength > 20) {
return null;
}
if (stringByteLength === 1 && uint8array[start] < 128) {
return String.fromCharCode(uint8array[start]);
}
if (stringByteLength === 2 && uint8array[start] < 128 && uint8array[start + 1] < 128) {
return String.fromCharCode(uint8array[start]) + String.fromCharCode(uint8array[start + 1]);
}
if (stringByteLength === 3 &&
uint8array[start] < 128 &&
uint8array[start + 1] < 128 &&
uint8array[start + 2] < 128) {
return (String.fromCharCode(uint8array[start]) +
String.fromCharCode(uint8array[start + 1]) +
String.fromCharCode(uint8array[start + 2]));
}
const latinBytes = [];
for (let i = start; i < end; i++) {
const byte = uint8array[i];
if (byte > 127) {
return null;
}
latinBytes.push(byte);
}
return String.fromCharCode(...latinBytes);
}
function tryWriteBasicLatin(destination, source, offset) {
if (source.length === 0)
return 0;
if (source.length > 25)
return null;
if (destination.length - offset < source.length)
return null;
for (let charOffset = 0, destinationOffset = offset; charOffset < source.length; charOffset++, destinationOffset++) {
const char = source.charCodeAt(charOffset);
if (char > 127)
return null;
destination[destinationOffset] = char;
}
return source.length;
}
function nodejsMathRandomBytes(byteLength) {
return nodeJsByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
}
const nodejsRandomBytes = (() => {
try {
return (__nccwpck_require__(113).randomBytes);
}
catch {
return nodejsMathRandomBytes;
}
})();
const nodeJsByteUtils = {
toLocalBufferType(potentialBuffer) {
if (Buffer.isBuffer(potentialBuffer)) {
return potentialBuffer;
}
if (ArrayBuffer.isView(potentialBuffer)) {
return Buffer.from(potentialBuffer.buffer, potentialBuffer.byteOffset, potentialBuffer.byteLength);
}
const stringTag = potentialBuffer?.[Symbol.toStringTag] ?? Object.prototype.toString.call(potentialBuffer);
if (stringTag === 'ArrayBuffer' ||
stringTag === 'SharedArrayBuffer' ||
stringTag === '[object ArrayBuffer]' ||
stringTag === '[object SharedArrayBuffer]') {
return Buffer.from(potentialBuffer);
}
throw new BSONError(`Cannot create Buffer from ${String(potentialBuffer)}`);
},
allocate(size) {
return Buffer.alloc(size);
},
allocateUnsafe(size) {
return Buffer.allocUnsafe(size);
},
equals(a, b) {
return nodeJsByteUtils.toLocalBufferType(a).equals(b);
},
fromNumberArray(array) {
return Buffer.from(array);
},
fromBase64(base64) {
return Buffer.from(base64, 'base64');
},
toBase64(buffer) {
return nodeJsByteUtils.toLocalBufferType(buffer).toString('base64');
},
fromISO88591(codePoints) {
return Buffer.from(codePoints, 'binary');
},
toISO88591(buffer) {
return nodeJsByteUtils.toLocalBufferType(buffer).toString('binary');
},
fromHex(hex) {
return Buffer.from(hex, 'hex');
},
toHex(buffer) {
return nodeJsByteUtils.toLocalBufferType(buffer).toString('hex');
},
toUTF8(buffer, start, end, fatal) {
const basicLatin = end - start <= 20 ? tryReadBasicLatin(buffer, start, end) : null;
if (basicLatin != null) {
return basicLatin;
}
const string = nodeJsByteUtils.toLocalBufferType(buffer).toString('utf8', start, end);
if (fatal) {
for (let i = 0; i < string.length; i++) {
if (string.charCodeAt(i) === 0xfffd) {
if (!validateUtf8(buffer, start, end)) {
throw new BSONError('Invalid UTF-8 string in BSON document');
}
break;
}
}
}
return string;
},
utf8ByteLength(input) {
return Buffer.byteLength(input, 'utf8');
},
encodeUTF8Into(buffer, source, byteOffset) {
const latinBytesWritten = tryWriteBasicLatin(buffer, source, byteOffset);
if (latinBytesWritten != null) {
return latinBytesWritten;
}
return nodeJsByteUtils.toLocalBufferType(buffer).write(source, byteOffset, undefined, 'utf8');
},
randomBytes: nodejsRandomBytes
};
function isReactNative() {
const { navigator } = globalThis;
return typeof navigator === 'object' && navigator.product === 'ReactNative';
}
function webMathRandomBytes(byteLength) {
if (byteLength < 0) {
throw new RangeError(`The argument 'byteLength' is invalid. Received ${byteLength}`);
}
return webByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
}
const webRandomBytes = (() => {
const { crypto } = globalThis;
if (crypto != null && typeof crypto.getRandomValues === 'function') {
return (byteLength) => {
return crypto.getRandomValues(webByteUtils.allocate(byteLength));
};
}
else {
if (isReactNative()) {
const { console } = globalThis;
console?.warn?.('BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.');
}
return webMathRandomBytes;
}
})();
const HEX_DIGIT = /(\d|[a-f])/i;
const webByteUtils = {
toLocalBufferType(potentialUint8array) {
const stringTag = potentialUint8array?.[Symbol.toStringTag] ??
Object.prototype.toString.call(potentialUint8array);
if (stringTag === 'Uint8Array') {
return potentialUint8array;
}
if (ArrayBuffer.isView(potentialUint8array)) {
return new Uint8Array(potentialUint8array.buffer.slice(potentialUint8array.byteOffset, potentialUint8array.byteOffset + potentialUint8array.byteLength));
}
if (stringTag === 'ArrayBuffer' ||
stringTag === 'SharedArrayBuffer' ||
stringTag === '[object ArrayBuffer]' ||
stringTag === '[object SharedArrayBuffer]') {
return new Uint8Array(potentialUint8array);
}
throw new BSONError(`Cannot make a Uint8Array from ${String(potentialUint8array)}`);
},
allocate(size) {
if (typeof size !== 'number') {
throw new TypeError(`The "size" argument must be of type number. Received ${String(size)}`);
}
return new Uint8Array(size);
},
allocateUnsafe(size) {
return webByteUtils.allocate(size);
},
equals(a, b) {
if (a.byteLength !== b.byteLength) {
return false;
}
for (let i = 0; i < a.byteLength; i++) {
if (a[i] !== b[i]) {
return false;
}
}
return true;
},
fromNumberArray(array) {
return Uint8Array.from(array);
},
fromBase64(base64) {
return Uint8Array.from(atob(base64), c => c.charCodeAt(0));
},
toBase64(uint8array) {
return btoa(webByteUtils.toISO88591(uint8array));
},
fromISO88591(codePoints) {
return Uint8Array.from(codePoints, c => c.charCodeAt(0) & 0xff);
},
toISO88591(uint8array) {
return Array.from(Uint16Array.from(uint8array), b => String.fromCharCode(b)).join('');
},
fromHex(hex) {
const evenLengthHex = hex.length % 2 === 0 ? hex : hex.slice(0, hex.length - 1);
const buffer = [];
for (let i = 0; i < evenLengthHex.length; i += 2) {
const firstDigit = evenLengthHex[i];
const secondDigit = evenLengthHex[i + 1];
if (!HEX_DIGIT.test(firstDigit)) {
break;
}
if (!HEX_DIGIT.test(secondDigit)) {
break;
}
const hexDigit = Number.parseInt(`${firstDigit}${secondDigit}`, 16);
buffer.push(hexDigit);
}
return Uint8Array.from(buffer);
},
toHex(uint8array) {
return Array.from(uint8array, byte => byte.toString(16).padStart(2, '0')).join('');
},
toUTF8(uint8array, start, end, fatal) {
const basicLatin = end - start <= 20 ? tryReadBasicLatin(uint8array, start, end) : null;
if (basicLatin != null) {
return basicLatin;
}
if (fatal) {
try {
return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
}
catch (cause) {
throw new BSONError('Invalid UTF-8 string in BSON document', { cause });
}
}
return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
},
utf8ByteLength(input) {
return new TextEncoder().encode(input).byteLength;
},
encodeUTF8Into(uint8array, source, byteOffset) {
const bytes = new TextEncoder().encode(source);
uint8array.set(bytes, byteOffset);
return bytes.byteLength;
},
randomBytes: webRandomBytes
};
const hasGlobalBuffer = typeof Buffer === 'function' && Buffer.prototype?._isBuffer !== true;
const ByteUtils = hasGlobalBuffer ? nodeJsByteUtils : webByteUtils;
class BSONValue {
get [Symbol.for('@@mdb.bson.version')]() {
return BSON_MAJOR_VERSION;
}
[Symbol.for('nodejs.util.inspect.custom')](depth, options, inspect) {
return this.inspect(depth, options, inspect);
}
}
class Binary extends BSONValue {
get _bsontype() {
return 'Binary';
}
constructor(buffer, subType) {
super();
if (!(buffer == null) &&
typeof buffer === 'string' &&
!ArrayBuffer.isView(buffer) &&
!isAnyArrayBuffer(buffer) &&
!Array.isArray(buffer)) {
throw new BSONError('Binary can only be constructed from Uint8Array or number[]');
}
this.sub_type = subType ?? Binary.BSON_BINARY_SUBTYPE_DEFAULT;
if (buffer == null) {
this.buffer = ByteUtils.allocate(Binary.BUFFER_SIZE);
this.position = 0;
}
else {
this.buffer = Array.isArray(buffer)
? ByteUtils.fromNumberArray(buffer)
: ByteUtils.toLocalBufferType(buffer);
this.position = this.buffer.byteLength;
}
}
put(byteValue) {
if (typeof byteValue === 'string' && byteValue.length !== 1) {
throw new BSONError('only accepts single character String');
}
else if (typeof byteValue !== 'number' && byteValue.length !== 1)
throw new BSONError('only accepts single character Uint8Array or Array');
let decodedByte;
if (typeof byteValue === 'string') {
decodedByte = byteValue.charCodeAt(0);
}
else if (typeof byteValue === 'number') {
decodedByte = byteValue;
}
else {
decodedByte = byteValue[0];
}
if (decodedByte < 0 || decodedByte > 255) {
throw new BSONError('only accepts number in a valid unsigned byte range 0-255');
}
if (this.buffer.byteLength > this.position) {
this.buffer[this.position++] = decodedByte;
}
else {
const newSpace = ByteUtils.allocate(Binary.BUFFER_SIZE + this.buffer.length);
newSpace.set(this.buffer, 0);
this.buffer = newSpace;
this.buffer[this.position++] = decodedByte;
}
}
write(sequence, offset) {
offset = typeof offset === 'number' ? offset : this.position;
if (this.buffer.byteLength < offset + sequence.length) {
const newSpace = ByteUtils.allocate(this.buffer.byteLength + sequence.length);
newSpace.set(this.buffer, 0);
this.buffer = newSpace;
}
if (ArrayBuffer.isView(sequence)) {
this.buffer.set(ByteUtils.toLocalBufferType(sequence), offset);
this.position =
offset + sequence.byteLength > this.position ? offset + sequence.length : this.position;
}
else if (typeof sequence === 'string') {
throw new BSONError('input cannot be string');
}
}
read(position, length) {
length = length && length > 0 ? length : this.position;
return this.buffer.slice(position, position + length);
}
value() {
return this.buffer.length === this.position
? this.buffer
: this.buffer.subarray(0, this.position);
}
length() {
return this.position;
}
toJSON() {
return ByteUtils.toBase64(this.buffer);
}
toString(encoding) {
if (encoding === 'hex')
return ByteUtils.toHex(this.buffer);
if (encoding === 'base64')
return ByteUtils.toBase64(this.buffer);
if (encoding === 'utf8' || encoding === 'utf-8')
return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
}
toExtendedJSON(options) {
options = options || {};
const base64String = ByteUtils.toBase64(this.buffer);
const subType = Number(this.sub_type).toString(16);
if (options.legacy) {
return {
$binary: base64String,
$type: subType.length === 1 ? '0' + subType : subType
};
}
return {
$binary: {
base64: base64String,
subType: subType.length === 1 ? '0' + subType : subType
}
};
}
toUUID() {
if (this.sub_type === Binary.SUBTYPE_UUID) {
return new UUID(this.buffer.slice(0, this.position));
}
throw new BSONError(`Binary sub_type "${this.sub_type}" is not supported for converting to UUID. Only "${Binary.SUBTYPE_UUID}" is currently supported.`);
}
static createFromHexString(hex, subType) {
return new Binary(ByteUtils.fromHex(hex), subType);
}
static createFromBase64(base64, subType) {
return new Binary(ByteUtils.fromBase64(base64), subType);
}
static fromExtendedJSON(doc, options) {
options = options || {};
let data;
let type;
if ('$binary' in doc) {
if (options.legacy && typeof doc.$binary === 'string' && '$type' in doc) {
type = doc.$type ? parseInt(doc.$type, 16) : 0;
data = ByteUtils.fromBase64(doc.$binary);
}
else {
if (typeof doc.$binary !== 'string') {
type = doc.$binary.subType ? parseInt(doc.$binary.subType, 16) : 0;
data = ByteUtils.fromBase64(doc.$binary.base64);
}
}
}
else if ('$uuid' in doc) {
type = 4;
data = UUID.bytesFromString(doc.$uuid);
}
if (!data) {
throw new BSONError(`Unexpected Binary Extended JSON format ${JSON.stringify(doc)}`);
}
return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
const base64 = ByteUtils.toBase64(this.buffer.subarray(0, this.position));
const base64Arg = inspect(base64, options);
const subTypeArg = inspect(this.sub_type, options);
return `Binary.createFromBase64(${base64Arg}, ${subTypeArg})`;
}
}
Binary.BSON_BINARY_SUBTYPE_DEFAULT = 0;
Binary.BUFFER_SIZE = 256;
Binary.SUBTYPE_DEFAULT = 0;
Binary.SUBTYPE_FUNCTION = 1;
Binary.SUBTYPE_BYTE_ARRAY = 2;
Binary.SUBTYPE_UUID_OLD = 3;
Binary.SUBTYPE_UUID = 4;
Binary.SUBTYPE_MD5 = 5;
Binary.SUBTYPE_ENCRYPTED = 6;
Binary.SUBTYPE_COLUMN = 7;
Binary.SUBTYPE_USER_DEFINED = 128;
const UUID_BYTE_LENGTH = 16;
const UUID_WITHOUT_DASHES = /^[0-9A-F]{32}$/i;
const UUID_WITH_DASHES = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
class UUID extends Binary {
constructor(input) {
let bytes;
if (input == null) {
bytes = UUID.generate();
}
else if (input instanceof UUID) {
bytes = ByteUtils.toLocalBufferType(new Uint8Array(input.buffer));
}
else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) {
bytes = ByteUtils.toLocalBufferType(input);
}
else if (typeof input === 'string') {
bytes = UUID.bytesFromString(input);
}
else {
throw new BSONError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).');
}
super(bytes, BSON_BINARY_SUBTYPE_UUID_NEW);
}
get id() {
return this.buffer;
}
set id(value) {
this.buffer = value;
}
toHexString(includeDashes = true) {
if (includeDashes) {
return [
ByteUtils.toHex(this.buffer.subarray(0, 4)),
ByteUtils.toHex(this.buffer.subarray(4, 6)),
ByteUtils.toHex(this.buffer.subarray(6, 8)),
ByteUtils.toHex(this.buffer.subarray(8, 10)),
ByteUtils.toHex(this.buffer.subarray(10, 16))
].join('-');
}
return ByteUtils.toHex(this.buffer);
}
toString(encoding) {
if (encoding === 'hex')
return ByteUtils.toHex(this.id);
if (encoding === 'base64')
return ByteUtils.toBase64(this.id);
return this.toHexString();
}
toJSON() {
return this.toHexString();
}
equals(otherId) {
if (!otherId) {
return false;
}
if (otherId instanceof UUID) {
return ByteUtils.equals(otherId.id, this.id);
}
try {
return ByteUtils.equals(new UUID(otherId).id, this.id);
}
catch {
return false;
}
}
toBinary() {
return new Binary(this.id, Binary.SUBTYPE_UUID);
}
static generate() {
const bytes = ByteUtils.randomBytes(UUID_BYTE_LENGTH);
bytes[6] = (bytes[6] & 0x0f) | 0x40;
bytes[8] = (bytes[8] & 0x3f) | 0x80;
return bytes;
}
static isValid(input) {
if (!input) {
return false;
}
if (typeof input === 'string') {
return UUID.isValidUUIDString(input);
}
if (isUint8Array(input)) {
return input.byteLength === UUID_BYTE_LENGTH;
}
return (input._bsontype === 'Binary' &&
input.sub_type === this.SUBTYPE_UUID &&
input.buffer.byteLength === 16);
}
static createFromHexString(hexString) {
const buffer = UUID.bytesFromString(hexString);
return new UUID(buffer);
}
static createFromBase64(base64) {
return new UUID(ByteUtils.fromBase64(base64));
}
static bytesFromString(representation) {
if (!UUID.isValidUUIDString(representation)) {
throw new BSONError('UUID string representation must be 32 hex digits or canonical hyphenated representation');
}
return ByteUtils.fromHex(representation.replace(/-/g, ''));
}
static isValidUUIDString(representation) {
return UUID_WITHOUT_DASHES.test(representation) || UUID_WITH_DASHES.test(representation);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
return `new UUID(${inspect(this.toHexString(), options)})`;
}
}
class Code extends BSONValue {
get _bsontype() {
return 'Code';
}
constructor(code, scope) {
super();
this.code = code.toString();
this.scope = scope ?? null;
}
toJSON() {
if (this.scope != null) {
return { code: this.code, scope: this.scope };
}
return { code: this.code };
}
toExtendedJSON() {
if (this.scope) {
return { $code: this.code, $scope: this.scope };
}
return { $code: this.code };
}
static fromExtendedJSON(doc) {
return new Code(doc.$code, doc.$scope);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
let parametersString = inspect(this.code, options);
const multiLineFn = parametersString.includes('\n');
if (this.scope != null) {
parametersString += `,${multiLineFn ? '\n' : ' '}${inspect(this.scope, options)}`;
}
const endingNewline = multiLineFn && this.scope === null;
return `new Code(${multiLineFn ? '\n' : ''}${parametersString}${endingNewline ? '\n' : ''})`;
}
}
function isDBRefLike(value) {
return (value != null &&
typeof value === 'object' &&
'$id' in value &&
value.$id != null &&
'$ref' in value &&
typeof value.$ref === 'string' &&
(!('$db' in value) || ('$db' in value && typeof value.$db === 'string')));
}
class DBRef extends BSONValue {
get _bsontype() {
return 'DBRef';
}
constructor(collection, oid, db, fields) {
super();
const parts = collection.split('.');
if (parts.length === 2) {
db = parts.shift();
collection = parts.shift();
}
this.collection = collection;
this.oid = oid;
this.db = db;
this.fields = fields || {};
}
get namespace() {
return this.collection;
}
set namespace(value) {
this.collection = value;
}
toJSON() {
const o = Object.assign({
$ref: this.collection,
$id: this.oid
}, this.fields);
if (this.db != null)
o.$db = this.db;
return o;
}
toExtendedJSON(options) {
options = options || {};
let o = {
$ref: this.collection,
$id: this.oid
};
if (options.legacy) {
return o;
}
if (this.db)
o.$db = this.db;
o = Object.assign(o, this.fields);
return o;
}
static fromExtendedJSON(doc) {
const copy = Object.assign({}, doc);
delete copy.$ref;
delete copy.$id;
delete copy.$db;
return new DBRef(doc.$ref, doc.$id, doc.$db, copy);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
const args = [
inspect(this.namespace, options),
inspect(this.oid, options),
...(this.db ? [inspect(this.db, options)] : []),
...(Object.keys(this.fields).length > 0 ? [inspect(this.fields, options)] : [])
];
args[1] = inspect === defaultInspect ? `new ObjectId(${args[1]})` : args[1];
return `new DBRef(${args.join(', ')})`;
}
}
let wasm = undefined;
try {
wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports;
}
catch {
}
const TWO_PWR_16_DBL = 1 << 16;
const TWO_PWR_24_DBL = 1 << 24;
const TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;
const TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;
const TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;
const INT_CACHE = {};
const UINT_CACHE = {};
const MAX_INT64_STRING_LENGTH = 20;
const DECIMAL_REG_EX = /^(\+?0|(\+|-)?[1-9][0-9]*)$/;
class Long extends BSONValue {
get _bsontype() {
return 'Long';
}
get __isLong__() {
return true;
}
constructor(low = 0, high, unsigned) {
super();
if (typeof low === 'bigint') {
Object.assign(this, Long.fromBigInt(low, !!high));
}
else if (typeof low === 'string') {
Object.assign(this, Long.fromString(low, !!high));
}
else {
this.low = low | 0;
this.high = high | 0;
this.unsigned = !!unsigned;
}
}
static fromBits(lowBits, highBits, unsigned) {
return new Long(lowBits, highBits, unsigned);
}
static fromInt(value, unsigned) {
let obj, cachedObj, cache;
if (unsigned) {
value >>>= 0;
if ((cache = 0 <= value && value < 256)) {
cachedObj = UINT_CACHE[value];
if (cachedObj)
return cachedObj;
}
obj = Long.fromBits(value, (value | 0) < 0 ? -1 : 0, true);
if (cache)
UINT_CACHE[value] = obj;
return obj;
}
else {
value |= 0;
if ((cache = -128 <= value && value < 128)) {
cachedObj = INT_CACHE[value];
if (cachedObj)
return cachedObj;
}
obj = Long.fromBits(value, value < 0 ? -1 : 0, false);
if (cache)
INT_CACHE[value] = obj;
return obj;
}
}
static fromNumber(value, unsigned) {
if (isNaN(value))
return unsigned ? Long.UZERO : Long.ZERO;
if (unsigned) {
if (value < 0)
return Long.UZERO;
if (value >= TWO_PWR_64_DBL)
return Long.MAX_UNSIGNED_VALUE;
}
else {
if (value <= -TWO_PWR_63_DBL)
return Long.MIN_VALUE;
if (value + 1 >= TWO_PWR_63_DBL)
return Long.MAX_VALUE;
}
if (value < 0)
return Long.fromNumber(-value, unsigned).neg();
return Long.fromBits(value % TWO_PWR_32_DBL | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);
}
static fromBigInt(value, unsigned) {
return Long.fromString(value.toString(), unsigned);
}
static fromString(str, unsigned, radix) {
if (str.length === 0)
throw new BSONError('empty string');
if (str === 'NaN' || str === 'Infinity' || str === '+Infinity' || str === '-Infinity')
return Long.ZERO;
if (typeof unsigned === 'number') {
(radix = unsigned), (unsigned = false);
}
else {
unsigned = !!unsigned;
}
radix = radix || 10;
if (radix < 2 || 36 < radix)
throw new BSONError('radix');
let p;
if ((p = str.indexOf('-')) > 0)
throw new BSONError('interior hyphen');
else if (p === 0) {
return Long.fromString(str.substring(1), unsigned, radix).neg();
}
const radixToPower = Long.fromNumber(Math.pow(radix, 8));
let result = Long.ZERO;
for (let i = 0; i < str.length; i += 8) {
const size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix);
if (size < 8) {
const power = Long.fromNumber(Math.pow(radix, size));
result = result.mul(power).add(Long.fromNumber(value));
}
else {
result = result.mul(radixToPower);
result = result.add(Long.fromNumber(value));
}
}
result.unsigned = unsigned;
return result;
}
static fromBytes(bytes, unsigned, le) {
return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);
}
static fromBytesLE(bytes, unsigned) {
return new Long(bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24), bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24), unsigned);
}
static fromBytesBE(bytes, unsigned) {
return new Long((bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7], (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3], unsigned);
}
static isLong(value) {
return (value != null &&
typeof value === 'object' &&
'__isLong__' in value &&
value.__isLong__ === true);
}
static fromValue(val, unsigned) {
if (typeof val === 'number')
return Long.fromNumber(val, unsigned);
if (typeof val === 'string')
return Long.fromString(val, unsigned);
return Long.fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);
}
add(addend) {
if (!Long.isLong(addend))
addend = Long.fromValue(addend);
const a48 = this.high >>> 16;
const a32 = this.high & 0xffff;
const a16 = this.low >>> 16;
const a00 = this.low & 0xffff;
const b48 = addend.high >>> 16;
const b32 = addend.high & 0xffff;
const b16 = addend.low >>> 16;
const b00 = addend.low & 0xffff;
let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
c00 += a00 + b00;
c16 += c00 >>> 16;
c00 &= 0xffff;
c16 += a16 + b16;
c32 += c16 >>> 16;
c16 &= 0xffff;
c32 += a32 + b32;
c48 += c32 >>> 16;
c32 &= 0xffff;
c48 += a48 + b48;
c48 &= 0xffff;
return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
}
and(other) {
if (!Long.isLong(other))
other = Long.fromValue(other);
return Long.fromBits(this.low & other.low, this.high & other.high, this.unsigned);
}
compare(other) {
if (!Long.isLong(other))
other = Long.fromValue(other);
if (this.eq(other))
return 0;
const thisNeg = this.isNegative(), otherNeg = other.isNegative();
if (thisNeg && !otherNeg)
return -1;
if (!thisNeg && otherNeg)
return 1;
if (!this.unsigned)
return this.sub(other).isNegative() ? -1 : 1;
return other.high >>> 0 > this.high >>> 0 ||
(other.high === this.high && other.low >>> 0 > this.low >>> 0)
? -1
: 1;
}
comp(other) {
return this.compare(other);
}
divide(divisor) {
if (!Long.isLong(divisor))
divisor = Long.fromValue(divisor);
if (divisor.isZero())
throw new BSONError('division by zero');
if (wasm) {
if (!this.unsigned &&
this.high === -0x80000000 &&
divisor.low === -1 &&
divisor.high === -1) {
return this;
}
const low = (this.unsigned ? wasm.div_u : wasm.div_s)(this.low, this.high, divisor.low, divisor.high);
return Long.fromBits(low, wasm.get_high(), this.unsigned);
}
if (this.isZero())
return this.unsigned ? Long.UZERO : Long.ZERO;
let approx, rem, res;
if (!this.unsigned) {
if (this.eq(Long.MIN_VALUE)) {
if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE))
return Long.MIN_VALUE;
else if (divisor.eq(Long.MIN_VALUE))
return Long.ONE;
else {
const halfThis = this.shr(1);
approx = halfThis.div(divisor).shl(1);
if (approx.eq(Long.ZERO)) {
return divisor.isNegative() ? Long.ONE : Long.NEG_ONE;
}
else {
rem = this.sub(divisor.mul(approx));
res = approx.add(rem.div(divisor));
return res;
}
}
}
else if (divisor.eq(Long.MIN_VALUE))
return this.unsigned ? Long.UZERO : Long.ZERO;
if (this.isNegative()) {
if (divisor.isNegative())
return this.neg().div(divisor.neg());
return this.neg().div(divisor).neg();
}
else if (divisor.isNegative())
return this.div(divisor.neg()).neg();
res = Long.ZERO;
}
else {
if (!divisor.unsigned)
divisor = divisor.toUnsigned();
if (divisor.gt(this))
return Long.UZERO;
if (divisor.gt(this.shru(1)))
return Long.UONE;
res = Long.UZERO;
}
rem = this;
while (rem.gte(divisor)) {
approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));
const log2 = Math.ceil(Math.log(approx) / Math.LN2);
const delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48);
let approxRes = Long.fromNumber(approx);
let approxRem = approxRes.mul(divisor);
while (approxRem.isNegative() || approxRem.gt(rem)) {
approx -= delta;
approxRes = Long.fromNumber(approx, this.unsigned);
approxRem = approxRes.mul(divisor);
}
if (approxRes.isZero())
approxRes = Long.ONE;
res = res.add(approxRes);
rem = rem.sub(approxRem);
}
return res;
}
div(divisor) {
return this.divide(divisor);
}
equals(other) {
if (!Long.isLong(other))
other = Long.fromValue(other);
if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1)
return false;
return this.high === other.high && this.low === other.low;
}
eq(other) {
return this.equals(other);
}
getHighBits() {
return this.high;
}
getHighBitsUnsigned() {
return this.high >>> 0;
}
getLowBits() {
return this.low;
}
getLowBitsUnsigned() {
return this.low >>> 0;
}
getNumBitsAbs() {
if (this.isNegative()) {
return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();
}
const val = this.high !== 0 ? this.high : this.low;
let bit;
for (bit = 31; bit > 0; bit--)
if ((val & (1 << bit)) !== 0)
break;
return this.high !== 0 ? bit + 33 : bit + 1;
}
greaterThan(other) {
return this.comp(other) > 0;
}
gt(other) {
return this.greaterThan(other);
}
greaterThanOrEqual(other) {
return this.comp(other) >= 0;
}
gte(other) {
return this.greaterThanOrEqual(other);
}
ge(other) {
return this.greaterThanOrEqual(other);
}
isEven() {
return (this.low & 1) === 0;
}
isNegative() {
return !this.unsigned && this.high < 0;
}
isOdd() {
return (this.low & 1) === 1;
}
isPositive() {
return this.unsigned || this.high >= 0;
}
isZero() {
return this.high === 0 && this.low === 0;
}
lessThan(other) {
return this.comp(other) < 0;
}
lt(other) {
return this.lessThan(other);
}
lessThanOrEqual(other) {
return this.comp(other) <= 0;
}
lte(other) {
return this.lessThanOrEqual(other);
}
modulo(divisor) {
if (!Long.isLong(divisor))
divisor = Long.fromValue(divisor);
if (wasm) {
const low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(this.low, this.high, divisor.low, divisor.high);
return Long.fromBits(low, wasm.get_high(), this.unsigned);
}
return this.sub(this.div(divisor).mul(divisor));
}
mod(divisor) {
return this.modulo(divisor);
}
rem(divisor) {
return this.modulo(divisor);
}
multiply(multiplier) {
if (this.isZero())
return Long.ZERO;
if (!Long.isLong(multiplier))
multiplier = Long.fromValue(multiplier);
if (wasm) {
const low = wasm.mul(this.low, this.high, multiplier.low, multiplier.high);
return Long.fromBits(low, wasm.get_high(), this.unsigned);
}
if (multiplier.isZero())
return Long.ZERO;
if (this.eq(Long.MIN_VALUE))
return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO;
if (multiplier.eq(Long.MIN_VALUE))
return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;
if (this.isNegative()) {
if (multiplier.isNegative())
return this.neg().mul(multiplier.neg());
else
return this.neg().mul(multiplier).neg();
}
else if (multiplier.isNegative())
return this.mul(multiplier.neg()).neg();
if (this.lt(Long.TWO_PWR_24) && multiplier.lt(Long.TWO_PWR_24))
return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);
const a48 = this.high >>> 16;
const a32 = this.high & 0xffff;
const a16 = this.low >>> 16;
const a00 = this.low & 0xffff;
const b48 = multiplier.high >>> 16;
const b32 = multiplier.high & 0xffff;
const b16 = multiplier.low >>> 16;
const b00 = multiplier.low & 0xffff;
let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
c00 += a00 * b00;
c16 += c00 >>> 16;
c00 &= 0xffff;
c16 += a16 * b00;
c32 += c16 >>> 16;
c16 &= 0xffff;
c16 += a00 * b16;
c32 += c16 >>> 16;
c16 &= 0xffff;
c32 += a32 * b00;
c48 += c32 >>> 16;
c32 &= 0xffff;
c32 += a16 * b16;
c48 += c32 >>> 16;
c32 &= 0xffff;
c32 += a00 * b32;
c48 += c32 >>> 16;
c32 &= 0xffff;
c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
c48 &= 0xffff;
return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
}
mul(multiplier) {
return this.multiply(multiplier);
}
negate() {
if (!this.unsigned && this.eq(Long.MIN_VALUE))
return Long.MIN_VALUE;
return this.not().add(Long.ONE);
}
neg() {
return this.negate();
}
not() {
return Long.fromBits(~this.low, ~this.high, this.unsigned);
}
notEquals(other) {
return !this.equals(other);
}
neq(other) {
return this.notEquals(other);
}
ne(other) {
return this.notEquals(other);
}
or(other) {
if (!Long.isLong(other))
other = Long.fromValue(other);
return Long.fromBits(this.low | other.low, this.high | other.high, this.unsigned);
}
shiftLeft(numBits) {
if (Long.isLong(numBits))
numBits = numBits.toInt();
if ((numBits &= 63) === 0)
return this;
else if (numBits < 32)
return Long.fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);
else
return Long.fromBits(0, this.low << (numBits - 32), this.unsigned);
}
shl(numBits) {
return this.shiftLeft(numBits);
}
shiftRight(numBits) {
if (Long.isLong(numBits))
numBits = numBits.toInt();
if ((numBits &= 63) === 0)
return this;
else if (numBits < 32)
return Long.fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);
else
return Long.fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);
}
shr(numBits) {
return this.shiftRight(numBits);
}
shiftRightUnsigned(numBits) {
if (Long.isLong(numBits))
numBits = numBits.toInt();
numBits &= 63;
if (numBits === 0)
return this;
else {
const high = this.high;
if (numBits < 32) {
const low = this.low;
return Long.fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);
}
else if (numBits === 32)
return Long.fromBits(high, 0, this.unsigned);
else
return Long.fromBits(high >>> (numBits - 32), 0, this.unsigned);
}
}
shr_u(numBits) {
return this.shiftRightUnsigned(numBits);
}
shru(numBits) {
return this.shiftRightUnsigned(numBits);
}
subtract(subtrahend) {
if (!Long.isLong(subtrahend))
subtrahend = Long.fromValue(subtrahend);
return this.add(subtrahend.neg());
}
sub(subtrahend) {
return this.subtract(subtrahend);
}
toInt() {
return this.unsigned ? this.low >>> 0 : this.low;
}
toNumber() {
if (this.unsigned)
return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);
return this.high * TWO_PWR_32_DBL + (this.low >>> 0);
}
toBigInt() {
return BigInt(this.toString());
}
toBytes(le) {
return le ? this.toBytesLE() : this.toBytesBE();
}
toBytesLE() {
const hi = this.high, lo = this.low;
return [
lo & 0xff,
(lo >>> 8) & 0xff,
(lo >>> 16) & 0xff,
lo >>> 24,
hi & 0xff,
(hi >>> 8) & 0xff,
(hi >>> 16) & 0xff,
hi >>> 24
];
}
toBytesBE() {
const hi = this.high, lo = this.low;
return [
hi >>> 24,
(hi >>> 16) & 0xff,
(hi >>> 8) & 0xff,
hi & 0xff,
lo >>> 24,
(lo >>> 16) & 0xff,
(lo >>> 8) & 0xff,
lo & 0xff
];
}
toSigned() {
if (!this.unsigned)
return this;
return Long.fromBits(this.low, this.high, false);
}
toString(radix) {
radix = radix || 10;
if (radix < 2 || 36 < radix)
throw new BSONError('radix');
if (this.isZero())
return '0';
if (this.isNegative()) {
if (this.eq(Long.MIN_VALUE)) {
const radixLong = Long.fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this);
return div.toString(radix) + rem1.toInt().toString(radix);
}
else
return '-' + this.neg().toString(radix);
}
const radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned);
let rem = this;
let result = '';
while (true) {
const remDiv = rem.div(radixToPower);
const intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0;
let digits = intval.toString(radix);
rem = remDiv;
if (rem.isZero()) {
return digits + result;
}
else {
while (digits.length < 6)
digits = '0' + digits;
result = '' + digits + result;
}
}
}
toUnsigned() {
if (this.unsigned)
return this;
return Long.fromBits(this.low, this.high, true);
}
xor(other) {
if (!Long.isLong(other))
other = Long.fromValue(other);
return Long.fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);
}
eqz() {
return this.isZero();
}
le(other) {
return this.lessThanOrEqual(other);
}
toExtendedJSON(options) {
if (options && options.relaxed)
return this.toNumber();
return { $numberLong: this.toString() };
}
static fromExtendedJSON(doc, options) {
const { useBigInt64 = false, relaxed = true } = { ...options };
if (doc.$numberLong.length > MAX_INT64_STRING_LENGTH) {
throw new BSONError('$numberLong string is too long');
}
if (!DECIMAL_REG_EX.test(doc.$numberLong)) {
throw new BSONError(`$numberLong string "${doc.$numberLong}" is in an invalid format`);
}
if (useBigInt64) {
const bigIntResult = BigInt(doc.$numberLong);
return BigInt.asIntN(64, bigIntResult);
}
const longResult = Long.fromString(doc.$numberLong);
if (relaxed) {
return longResult.toNumber();
}
return longResult;
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
const longVal = inspect(this.toString(), options);
const unsignedVal = this.unsigned ? `, ${inspect(this.unsigned, options)}` : '';
return `new Long(${longVal}${unsignedVal})`;
}
}
Long.TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL);
Long.MAX_UNSIGNED_VALUE = Long.fromBits(0xffffffff | 0, 0xffffffff | 0, true);
Long.ZERO = Long.fromInt(0);
Long.UZERO = Long.fromInt(0, true);
Long.ONE = Long.fromInt(1);
Long.UONE = Long.fromInt(1, true);
Long.NEG_ONE = Long.fromInt(-1);
Long.MAX_VALUE = Long.fromBits(0xffffffff | 0, 0x7fffffff | 0, false);
Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0, false);
const PARSE_STRING_REGEXP = /^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/;
const PARSE_INF_REGEXP = /^(\+|-)?(Infinity|inf)$/i;
const PARSE_NAN_REGEXP = /^(\+|-)?NaN$/i;
const EXPONENT_MAX = 6111;
const EXPONENT_MIN = -6176;
const EXPONENT_BIAS = 6176;
const MAX_DIGITS = 34;
const NAN_BUFFER = ByteUtils.fromNumberArray([
0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
].reverse());
const INF_NEGATIVE_BUFFER = ByteUtils.fromNumberArray([
0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
].reverse());
const INF_POSITIVE_BUFFER = ByteUtils.fromNumberArray([
0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
].reverse());
const EXPONENT_REGEX = /^([-+])?(\d+)?$/;
const COMBINATION_MASK = 0x1f;
const EXPONENT_MASK = 0x3fff;
const COMBINATION_INFINITY = 30;
const COMBINATION_NAN = 31;
function isDigit(value) {
return !isNaN(parseInt(value, 10));
}
function divideu128(value) {
const DIVISOR = Long.fromNumber(1000 * 1000 * 1000);
let _rem = Long.fromNumber(0);
if (!value.parts[0] && !value.parts[1] && !value.parts[2] && !value.parts[3]) {
return { quotient: value, rem: _rem };
}
for (let i = 0; i <= 3; i++) {
_rem = _rem.shiftLeft(32);
_rem = _rem.add(new Long(value.parts[i], 0));
value.parts[i] = _rem.div(DIVISOR).low;
_rem = _rem.modulo(DIVISOR);
}
return { quotient: value, rem: _rem };
}
function multiply64x2(left, right) {
if (!left && !right) {
return { high: Long.fromNumber(0), low: Long.fromNumber(0) };
}
const leftHigh = left.shiftRightUnsigned(32);
const leftLow = new Long(left.getLowBits(), 0);
const rightHigh = right.shiftRightUnsigned(32);
const rightLow = new Long(right.getLowBits(), 0);
let productHigh = leftHigh.multiply(rightHigh);
let productMid = leftHigh.multiply(rightLow);
const productMid2 = leftLow.multiply(rightHigh);
let productLow = leftLow.multiply(rightLow);
productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
productMid = new Long(productMid.getLowBits(), 0)
.add(productMid2)
.add(productLow.shiftRightUnsigned(32));
productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
productLow = productMid.shiftLeft(32).add(new Long(productLow.getLowBits(), 0));
return { high: productHigh, low: productLow };
}
function lessThan(left, right) {
const uhleft = left.high >>> 0;
const uhright = right.high >>> 0;
if (uhleft < uhright) {
return true;
}
else if (uhleft === uhright) {
const ulleft = left.low >>> 0;
const ulright = right.low >>> 0;
if (ulleft < ulright)
return true;
}
return false;
}
function invalidErr(string, message) {
throw new BSONError(`"${string}" is not a valid Decimal128 string - ${message}`);
}
class Decimal128 extends BSONValue {
get _bsontype() {
return 'Decimal128';
}
constructor(bytes) {
super();
if (typeof bytes === 'string') {
this.bytes = Decimal128.fromString(bytes).bytes;
}
else if (isUint8Array(bytes)) {
if (bytes.byteLength !== 16) {
throw new BSONError('Decimal128 must take a Buffer of 16 bytes');
}
this.bytes = bytes;
}
else {
throw new BSONError('Decimal128 must take a Buffer or string');
}
}
static fromString(representation) {
return Decimal128._fromString(representation, { allowRounding: false });
}
static fromStringWithRounding(representation) {
return Decimal128._fromString(representation, { allowRounding: true });
}
static _fromString(representation, options) {
let isNegative = false;
let sawSign = false;
let sawRadix = false;
let foundNonZero = false;
let significantDigits = 0;
let nDigitsRead = 0;
let nDigits = 0;
let radixPosition = 0;
let firstNonZero = 0;
const digits = [0];
let nDigitsStored = 0;
let digitsInsert = 0;
let lastDigit = 0;
let exponent = 0;
let significandHigh = new Long(0, 0);
let significandLow = new Long(0, 0);
let biasedExponent = 0;
let index = 0;
if (representation.length >= 7000) {
throw new BSONError('' + representation + ' not a valid Decimal128 string');
}
const stringMatch = representation.match(PARSE_STRING_REGEXP);
const infMatch = representation.match(PARSE_INF_REGEXP);
const nanMatch = representation.match(PARSE_NAN_REGEXP);
if ((!stringMatch && !infMatch && !nanMatch) || representation.length === 0) {
throw new BSONError('' + representation + ' not a valid Decimal128 string');
}
if (stringMatch) {
const unsignedNumber = stringMatch[2];
const e = stringMatch[4];
const expSign = stringMatch[5];
const expNumber = stringMatch[6];
if (e && expNumber === undefined)
invalidErr(representation, 'missing exponent power');
if (e && unsignedNumber === undefined)
invalidErr(representation, 'missing exponent base');
if (e === undefined && (expSign || expNumber)) {
invalidErr(representation, 'missing e before exponent');
}
}
if (representation[index] === '+' || representation[index] === '-') {
sawSign = true;
isNegative = representation[index++] === '-';
}
if (!isDigit(representation[index]) && representation[index] !== '.') {
if (representation[index] === 'i' || representation[index] === 'I') {
return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
}
else if (representation[index] === 'N') {
return new Decimal128(NAN_BUFFER);
}
}
while (isDigit(representation[index]) || representation[index] === '.') {
if (representation[index] === '.') {
if (sawRadix)
invalidErr(representation, 'contains multiple periods');
sawRadix = true;
index = index + 1;
continue;
}
if (nDigitsStored < MAX_DIGITS) {
if (representation[index] !== '0' || foundNonZero) {
if (!foundNonZero) {
firstNonZero = nDigitsRead;
}
foundNonZero = true;
digits[digitsInsert++] = parseInt(representation[index], 10);
nDigitsStored = nDigitsStored + 1;
}
}
if (foundNonZero)
nDigits = nDigits + 1;
if (sawRadix)
radixPosition = radixPosition + 1;
nDigitsRead = nDigitsRead + 1;
index = index + 1;
}
if (sawRadix && !nDigitsRead)
throw new BSONError('' + representation + ' not a valid Decimal128 string');
if (representation[index] === 'e' || representation[index] === 'E') {
const match = representation.substr(++index).match(EXPONENT_REGEX);
if (!match || !match[2])
return new Decimal128(NAN_BUFFER);
exponent = parseInt(match[0], 10);
index = index + match[0].length;
}
if (representation[index])
return new Decimal128(NAN_BUFFER);
if (!nDigitsStored) {
digits[0] = 0;
nDigits = 1;
nDigitsStored = 1;
significantDigits = 0;
}
else {
lastDigit = nDigitsStored - 1;
significantDigits = nDigits;
if (significantDigits !== 1) {
while (representation[firstNonZero + significantDigits - 1 + Number(sawSign) + Number(sawRadix)] === '0') {
significantDigits = significantDigits - 1;
}
}
}
if (exponent <= radixPosition && radixPosition > exponent + (1 << 14)) {
exponent = EXPONENT_MIN;
}
else {
exponent = exponent - radixPosition;
}
while (exponent > EXPONENT_MAX) {
lastDigit = lastDigit + 1;
if (lastDigit >= MAX_DIGITS) {
if (significantDigits === 0) {
exponent = EXPONENT_MAX;
break;
}
invalidErr(representation, 'overflow');
}
exponent = exponent - 1;
}
if (options.allowRounding) {
while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
if (lastDigit === 0 && significantDigits < nDigitsStored) {
exponent = EXPONENT_MIN;
significantDigits = 0;
break;
}
if (nDigitsStored < nDigits) {
nDigits = nDigits - 1;
}
else {
lastDigit = lastDigit - 1;
}
if (exponent < EXPONENT_MAX) {
exponent = exponent + 1;
}
else {
const digitsString = digits.join('');
if (digitsString.match(/^0+$/)) {
exponent = EXPONENT_MAX;
break;
}
invalidErr(representation, 'overflow');
}
}
if (lastDigit + 1 < significantDigits) {
let endOfString = nDigitsRead;
if (sawRadix) {
firstNonZero = firstNonZero + 1;
endOfString = endOfString + 1;
}
if (sawSign) {
firstNonZero = firstNonZero + 1;
endOfString = endOfString + 1;
}
const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
let roundBit = 0;
if (roundDigit >= 5) {
roundBit = 1;
if (roundDigit === 5) {
roundBit = digits[lastDigit] % 2 === 1 ? 1 : 0;
for (let i = firstNonZero + lastDigit + 2; i < endOfString; i++) {
if (parseInt(representation[i], 10)) {
roundBit = 1;
break;
}
}
}
}
if (roundBit) {
let dIdx = lastDigit;
for (; dIdx >= 0; dIdx--) {
if (++digits[dIdx] > 9) {
digits[dIdx] = 0;
if (dIdx === 0) {
if (exponent < EXPONENT_MAX) {
exponent = exponent + 1;
digits[dIdx] = 1;
}
else {
return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
}
}
}
else {
break;
}
}
}
}
}
else {
while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
if (lastDigit === 0) {
if (significantDigits === 0) {
exponent = EXPONENT_MIN;
break;
}
invalidErr(representation, 'exponent underflow');
}
if (nDigitsStored < nDigits) {
if (representation[nDigits - 1 + Number(sawSign) + Number(sawRadix)] !== '0' &&
significantDigits !== 0) {
invalidErr(representation, 'inexact rounding');
}
nDigits = nDigits - 1;
}
else {
if (digits[lastDigit] !== 0) {
invalidErr(representation, 'inexact rounding');
}
lastDigit = lastDigit - 1;
}
if (exponent < EXPONENT_MAX) {
exponent = exponent + 1;
}
else {
invalidErr(representation, 'overflow');
}
}
if (lastDigit + 1 < significantDigits) {
if (sawRadix) {
firstNonZero = firstNonZero + 1;
}
if (sawSign) {
firstNonZero = firstNonZero + 1;
}
const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
if (roundDigit !== 0) {
invalidErr(representation, 'inexact rounding');
}
}
}
significandHigh = Long.fromNumber(0);
significandLow = Long.fromNumber(0);
if (significantDigits === 0) {
significandHigh = Long.fromNumber(0);
significandLow = Long.fromNumber(0);
}
else if (lastDigit < 17) {
let dIdx = 0;
significandLow = Long.fromNumber(digits[dIdx++]);
significandHigh = new Long(0, 0);
for (; dIdx <= lastDigit; dIdx++) {
significandLow = significandLow.multiply(Long.fromNumber(10));
significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
}
}
else {
let dIdx = 0;
significandHigh = Long.fromNumber(digits[dIdx++]);
for (; dIdx <= lastDigit - 17; dIdx++) {
significandHigh = significandHigh.multiply(Long.fromNumber(10));
significandHigh = significandHigh.add(Long.fromNumber(digits[dIdx]));
}
significandLow = Long.fromNumber(digits[dIdx++]);
for (; dIdx <= lastDigit; dIdx++) {
significandLow = significandLow.multiply(Long.fromNumber(10));
significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
}
}
const significand = multiply64x2(significandHigh, Long.fromString('100000000000000000'));
significand.low = significand.low.add(significandLow);
if (lessThan(significand.low, significandLow)) {
significand.high = significand.high.add(Long.fromNumber(1));
}
biasedExponent = exponent + EXPONENT_BIAS;
const dec = { low: Long.fromNumber(0), high: Long.fromNumber(0) };
if (significand.high.shiftRightUnsigned(49).and(Long.fromNumber(1)).equals(Long.fromNumber(1))) {
dec.high = dec.high.or(Long.fromNumber(0x3).shiftLeft(61));
dec.high = dec.high.or(Long.fromNumber(biasedExponent).and(Long.fromNumber(0x3fff).shiftLeft(47)));
dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x7fffffffffff)));
}
else {
dec.high = dec.high.or(Long.fromNumber(biasedExponent & 0x3fff).shiftLeft(49));
dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x1ffffffffffff)));
}
dec.low = significand.low;
if (isNegative) {
dec.high = dec.high.or(Long.fromString('9223372036854775808'));
}
const buffer = ByteUtils.allocateUnsafe(16);
index = 0;
buffer[index++] = dec.low.low & 0xff;
buffer[index++] = (dec.low.low >> 8) & 0xff;
buffer[index++] = (dec.low.low >> 16) & 0xff;
buffer[index++] = (dec.low.low >> 24) & 0xff;
buffer[index++] = dec.low.high & 0xff;
buffer[index++] = (dec.low.high >> 8) & 0xff;
buffer[index++] = (dec.low.high >> 16) & 0xff;
buffer[index++] = (dec.low.high >> 24) & 0xff;
buffer[index++] = dec.high.low & 0xff;
buffer[index++] = (dec.high.low >> 8) & 0xff;
buffer[index++] = (dec.high.low >> 16) & 0xff;
buffer[index++] = (dec.high.low >> 24) & 0xff;
buffer[index++] = dec.high.high & 0xff;
buffer[index++] = (dec.high.high >> 8) & 0xff;
buffer[index++] = (dec.high.high >> 16) & 0xff;
buffer[index++] = (dec.high.high >> 24) & 0xff;
return new Decimal128(buffer);
}
toString() {
let biased_exponent;
let significand_digits = 0;
const significand = new Array(36);
for (let i = 0; i < significand.length; i++)
significand[i] = 0;
let index = 0;
let is_zero = false;
let significand_msb;
let significand128 = { parts: [0, 0, 0, 0] };
let j, k;
const string = [];
index = 0;
const buffer = this.bytes;
const low = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
const midl = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
const midh = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
const high = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
index = 0;
const dec = {
low: new Long(low, midl),
high: new Long(midh, high)
};
if (dec.high.lessThan(Long.ZERO)) {
string.push('-');
}
const combination = (high >> 26) & COMBINATION_MASK;
if (combination >> 3 === 3) {
if (combination === COMBINATION_INFINITY) {
return string.join('') + 'Infinity';
}
else if (combination === COMBINATION_NAN) {
return 'NaN';
}
else {
biased_exponent = (high >> 15) & EXPONENT_MASK;
significand_msb = 0x08 + ((high >> 14) & 0x01);
}
}
else {
significand_msb = (high >> 14) & 0x07;
biased_exponent = (high >> 17) & EXPONENT_MASK;
}
const exponent = biased_exponent - EXPONENT_BIAS;
significand128.parts[0] = (high & 0x3fff) + ((significand_msb & 0xf) << 14);
significand128.parts[1] = midh;
significand128.parts[2] = midl;
significand128.parts[3] = low;
if (significand128.parts[0] === 0 &&
significand128.parts[1] === 0 &&
significand128.parts[2] === 0 &&
significand128.parts[3] === 0) {
is_zero = true;
}
else {
for (k = 3; k >= 0; k--) {
let least_digits = 0;
const result = divideu128(significand128);
significand128 = result.quotient;
least_digits = result.rem.low;
if (!least_digits)
continue;
for (j = 8; j >= 0; j--) {
significand[k * 9 + j] = least_digits % 10;
least_digits = Math.floor(least_digits / 10);
}
}
}
if (is_zero) {
significand_digits = 1;
significand[index] = 0;
}
else {
significand_digits = 36;
while (!significand[index]) {
significand_digits = significand_digits - 1;
index = index + 1;
}
}
const scientific_exponent = significand_digits - 1 + exponent;
if (scientific_exponent >= 34 || scientific_exponent <= -7 || exponent > 0) {
if (significand_digits > 34) {
string.push(`${0}`);
if (exponent > 0)
string.push(`E+${exponent}`);
else if (exponent < 0)
string.push(`E${exponent}`);
return string.join('');
}
string.push(`${significand[index++]}`);
significand_digits = significand_digits - 1;
if (significand_digits) {
string.push('.');
}
for (let i = 0; i < significand_digits; i++) {
string.push(`${significand[index++]}`);
}
string.push('E');
if (scientific_exponent > 0) {
string.push(`+${scientific_exponent}`);
}
else {
string.push(`${scientific_exponent}`);
}
}
else {
if (exponent >= 0) {
for (let i = 0; i < significand_digits; i++) {
string.push(`${significand[index++]}`);
}
}
else {
let radix_position = significand_digits + exponent;
if (radix_position > 0) {
for (let i = 0; i < radix_position; i++) {
string.push(`${significand[index++]}`);
}
}
else {
string.push('0');
}
string.push('.');
while (radix_position++ < 0) {
string.push('0');
}
for (let i = 0; i < significand_digits - Math.max(radix_position - 1, 0); i++) {
string.push(`${significand[index++]}`);
}
}
}
return string.join('');
}
toJSON() {
return { $numberDecimal: this.toString() };
}
toExtendedJSON() {
return { $numberDecimal: this.toString() };
}
static fromExtendedJSON(doc) {
return Decimal128.fromString(doc.$numberDecimal);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
const d128string = inspect(this.toString(), options);
return `new Decimal128(${d128string})`;
}
}
class Double extends BSONValue {
get _bsontype() {
return 'Double';
}
constructor(value) {
super();
if (value instanceof Number) {
value = value.valueOf();
}
this.value = +value;
}
valueOf() {
return this.value;
}
toJSON() {
return this.value;
}
toString(radix) {
return this.value.toString(radix);
}
toExtendedJSON(options) {
if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) {
return this.value;
}
if (Object.is(Math.sign(this.value), -0)) {
return { $numberDouble: '-0.0' };
}
return {
$numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString()
};
}
static fromExtendedJSON(doc, options) {
const doubleValue = parseFloat(doc.$numberDouble);
return options && options.relaxed ? doubleValue : new Double(doubleValue);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
return `new Double(${inspect(this.value, options)})`;
}
}
class Int32 extends BSONValue {
get _bsontype() {
return 'Int32';
}
constructor(value) {
super();
if (value instanceof Number) {
value = value.valueOf();
}
this.value = +value | 0;
}
valueOf() {
return this.value;
}
toString(radix) {
return this.value.toString(radix);
}
toJSON() {
return this.value;
}
toExtendedJSON(options) {
if (options && (options.relaxed || options.legacy))
return this.value;
return { $numberInt: this.value.toString() };
}
static fromExtendedJSON(doc, options) {
return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new Int32(doc.$numberInt);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
return `new Int32(${inspect(this.value, options)})`;
}
}
class MaxKey extends BSONValue {
get _bsontype() {
return 'MaxKey';
}
toExtendedJSON() {
return { $maxKey: 1 };
}
static fromExtendedJSON() {
return new MaxKey();
}
inspect() {
return 'new MaxKey()';
}
}
class MinKey extends BSONValue {
get _bsontype() {
return 'MinKey';
}
toExtendedJSON() {
return { $minKey: 1 };
}
static fromExtendedJSON() {
return new MinKey();
}
inspect() {
return 'new MinKey()';
}
}
const FLOAT = new Float64Array(1);
const FLOAT_BYTES = new Uint8Array(FLOAT.buffer, 0, 8);
const NumberUtils = {
getInt32LE(source, offset) {
return (source[offset] |
(source[offset + 1] << 8) |
(source[offset + 2] << 16) |
(source[offset + 3] << 24));
},
getUint32LE(source, offset) {
return (source[offset] +
source[offset + 1] * 256 +
source[offset + 2] * 65536 +
source[offset + 3] * 16777216);
},
getUint32BE(source, offset) {
return (source[offset + 3] +
source[offset + 2] * 256 +
source[offset + 1] * 65536 +
source[offset] * 16777216);
},
getBigInt64LE(source, offset) {
const lo = NumberUtils.getUint32LE(source, offset);
const hi = NumberUtils.getUint32LE(source, offset + 4);
return (BigInt(hi) << BigInt(32)) + BigInt(lo);
},
getFloat64LE(source, offset) {
FLOAT_BYTES[0] = source[offset];
FLOAT_BYTES[1] = source[offset + 1];
FLOAT_BYTES[2] = source[offset + 2];
FLOAT_BYTES[3] = source[offset + 3];
FLOAT_BYTES[4] = source[offset + 4];
FLOAT_BYTES[5] = source[offset + 5];
FLOAT_BYTES[6] = source[offset + 6];
FLOAT_BYTES[7] = source[offset + 7];
return FLOAT[0];
},
setInt32BE(destination, offset, value) {
destination[offset + 3] = value;
value >>>= 8;
destination[offset + 2] = value;
value >>>= 8;
destination[offset + 1] = value;
value >>>= 8;
destination[offset] = value;
return 4;
},
setInt32LE(destination, offset, value) {
destination[offset] = value;
value >>>= 8;
destination[offset + 1] = value;
value >>>= 8;
destination[offset + 2] = value;
value >>>= 8;
destination[offset + 3] = value;
return 4;
},
setBigInt64LE(destination, offset, value) {
const mask32bits = BigInt(4294967295);
let lo = Number(value & mask32bits);
destination[offset] = lo;
lo >>= 8;
destination[offset + 1] = lo;
lo >>= 8;
destination[offset + 2] = lo;
lo >>= 8;
destination[offset + 3] = lo;
let hi = Number((value >> BigInt(32)) & mask32bits);
destination[offset + 4] = hi;
hi >>= 8;
destination[offset + 5] = hi;
hi >>= 8;
destination[offset + 6] = hi;
hi >>= 8;
destination[offset + 7] = hi;
return 8;
},
setFloat64LE(destination, offset, value) {
FLOAT[0] = value;
destination[offset] = FLOAT_BYTES[0];
destination[offset + 1] = FLOAT_BYTES[1];
destination[offset + 2] = FLOAT_BYTES[2];
destination[offset + 3] = FLOAT_BYTES[3];
destination[offset + 4] = FLOAT_BYTES[4];
destination[offset + 5] = FLOAT_BYTES[5];
destination[offset + 6] = FLOAT_BYTES[6];
destination[offset + 7] = FLOAT_BYTES[7];
return 8;
}
};
const checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');
let PROCESS_UNIQUE = null;
class ObjectId extends BSONValue {
get _bsontype() {
return 'ObjectId';
}
constructor(inputId) {
super();
let workingId;
if (typeof inputId === 'object' && inputId && 'id' in inputId) {
if (typeof inputId.id !== 'string' && !ArrayBuffer.isView(inputId.id)) {
throw new BSONError('Argument passed in must have an id that is of type string or Buffer');
}
if ('toHexString' in inputId && typeof inputId.toHexString === 'function') {
workingId = ByteUtils.fromHex(inputId.toHexString());
}
else {
workingId = inputId.id;
}
}
else {
workingId = inputId;
}
if (workingId == null || typeof workingId === 'number') {
this.buffer = ObjectId.generate(typeof workingId === 'number' ? workingId : undefined);
}
else if (ArrayBuffer.isView(workingId) && workingId.byteLength === 12) {
this.buffer = ByteUtils.toLocalBufferType(workingId);
}
else if (typeof workingId === 'string') {
if (workingId.length === 24 && checkForHexRegExp.test(workingId)) {
this.buffer = ByteUtils.fromHex(workingId);
}
else {
throw new BSONError('input must be a 24 character hex string, 12 byte Uint8Array, or an integer');
}
}
else {
throw new BSONError('Argument passed in does not match the accepted types');
}
if (ObjectId.cacheHexString) {
this.__id = ByteUtils.toHex(this.id);
}
}
get id() {
return this.buffer;
}
set id(value) {
this.buffer = value;
if (ObjectId.cacheHexString) {
this.__id = ByteUtils.toHex(value);
}
}
toHexString() {
if (ObjectId.cacheHexString && this.__id) {
return this.__id;
}
const hexString = ByteUtils.toHex(this.id);
if (ObjectId.cacheHexString && !this.__id) {
this.__id = hexString;
}
return hexString;
}
static getInc() {
return (ObjectId.index = (ObjectId.index + 1) % 0xffffff);
}
static generate(time) {
if ('number' !== typeof time) {
time = Math.floor(Date.now() / 1000);
}
const inc = ObjectId.getInc();
const buffer = ByteUtils.allocateUnsafe(12);
NumberUtils.setInt32BE(buffer, 0, time);
if (PROCESS_UNIQUE === null) {
PROCESS_UNIQUE = ByteUtils.randomBytes(5);
}
buffer[4] = PROCESS_UNIQUE[0];
buffer[5] = PROCESS_UNIQUE[1];
buffer[6] = PROCESS_UNIQUE[2];
buffer[7] = PROCESS_UNIQUE[3];
buffer[8] = PROCESS_UNIQUE[4];
buffer[11] = inc & 0xff;
buffer[10] = (inc >> 8) & 0xff;
buffer[9] = (inc >> 16) & 0xff;
return buffer;
}
toString(encoding) {
if (encoding === 'base64')
return ByteUtils.toBase64(this.id);
if (encoding === 'hex')
return this.toHexString();
return this.toHexString();
}
toJSON() {
return this.toHexString();
}
static is(variable) {
return (variable != null &&
typeof variable === 'object' &&
'_bsontype' in variable &&
variable._bsontype === 'ObjectId');
}
equals(otherId) {
if (otherId === undefined || otherId === null) {
return false;
}
if (ObjectId.is(otherId)) {
return (this.buffer[11] === otherId.buffer[11] && ByteUtils.equals(this.buffer, otherId.buffer));
}
if (typeof otherId === 'string') {
return otherId.toLowerCase() === this.toHexString();
}
if (typeof otherId === 'object' && typeof otherId.toHexString === 'function') {
const otherIdString = otherId.toHexString();
const thisIdString = this.toHexString();
return typeof otherIdString === 'string' && otherIdString.toLowerCase() === thisIdString;
}
return false;
}
getTimestamp() {
const timestamp = new Date();
const time = NumberUtils.getUint32BE(this.buffer, 0);
timestamp.setTime(Math.floor(time) * 1000);
return timestamp;
}
static createPk() {
return new ObjectId();
}
serializeInto(uint8array, index) {
uint8array[index] = this.buffer[0];
uint8array[index + 1] = this.buffer[1];
uint8array[index + 2] = this.buffer[2];
uint8array[index + 3] = this.buffer[3];
uint8array[index + 4] = this.buffer[4];
uint8array[index + 5] = this.buffer[5];
uint8array[index + 6] = this.buffer[6];
uint8array[index + 7] = this.buffer[7];
uint8array[index + 8] = this.buffer[8];
uint8array[index + 9] = this.buffer[9];
uint8array[index + 10] = this.buffer[10];
uint8array[index + 11] = this.buffer[11];
return 12;
}
static createFromTime(time) {
const buffer = ByteUtils.allocate(12);
for (let i = 11; i >= 4; i--)
buffer[i] = 0;
NumberUtils.setInt32BE(buffer, 0, time);
return new ObjectId(buffer);
}
static createFromHexString(hexString) {
if (hexString?.length !== 24) {
throw new BSONError('hex string must be 24 characters');
}
return new ObjectId(ByteUtils.fromHex(hexString));
}
static createFromBase64(base64) {
if (base64?.length !== 16) {
throw new BSONError('base64 string must be 16 characters');
}
return new ObjectId(ByteUtils.fromBase64(base64));
}
static isValid(id) {
if (id == null)
return false;
try {
new ObjectId(id);
return true;
}
catch {
return false;
}
}
toExtendedJSON() {
if (this.toHexString)
return { $oid: this.toHexString() };
return { $oid: this.toString('hex') };
}
static fromExtendedJSON(doc) {
return new ObjectId(doc.$oid);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
return `new ObjectId(${inspect(this.toHexString(), options)})`;
}
}
ObjectId.index = Math.floor(Math.random() * 0xffffff);
function internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined) {
let totalLength = 4 + 1;
if (Array.isArray(object)) {
for (let i = 0; i < object.length; i++) {
totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true, ignoreUndefined);
}
}
else {
if (typeof object?.toBSON === 'function') {
object = object.toBSON();
}
for (const key of Object.keys(object)) {
totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);
}
}
return totalLength;
}
function calculateElement(name, value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
if (typeof value?.toBSON === 'function') {
value = value.toBSON();
}
switch (typeof value) {
case 'string':
return 1 + ByteUtils.utf8ByteLength(name) + 1 + 4 + ByteUtils.utf8ByteLength(value) + 1;
case 'number':
if (Math.floor(value) === value &&
value >= JS_INT_MIN &&
value <= JS_INT_MAX) {
if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (4 + 1);
}
else {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
}
}
else {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
}
case 'undefined':
if (isArray || !ignoreUndefined)
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
return 0;
case 'boolean':
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 1);
case 'object':
if (value != null &&
typeof value._bsontype === 'string' &&
value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
throw new BSONVersionError();
}
else if (value == null || value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
}
else if (value._bsontype === 'ObjectId') {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (12 + 1);
}
else if (value instanceof Date || isDate(value)) {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
}
else if (ArrayBuffer.isView(value) ||
value instanceof ArrayBuffer ||
isAnyArrayBuffer(value)) {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 4 + 1) + value.byteLength);
}
else if (value._bsontype === 'Long' ||
value._bsontype === 'Double' ||
value._bsontype === 'Timestamp') {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
}
else if (value._bsontype === 'Decimal128') {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (16 + 1);
}
else if (value._bsontype === 'Code') {
if (value.scope != null && Object.keys(value.scope).length > 0) {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
4 +
4 +
ByteUtils.utf8ByteLength(value.code.toString()) +
1 +
internalCalculateObjectSize(value.scope, serializeFunctions, ignoreUndefined));
}
else {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
4 +
ByteUtils.utf8ByteLength(value.code.toString()) +
1);
}
}
else if (value._bsontype === 'Binary') {
const binary = value;
if (binary.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
(binary.position + 1 + 4 + 1 + 4));
}
else {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (binary.position + 1 + 4 + 1));
}
}
else if (value._bsontype === 'Symbol') {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
ByteUtils.utf8ByteLength(value.value) +
4 +
1 +
1);
}
else if (value._bsontype === 'DBRef') {
const ordered_values = Object.assign({
$ref: value.collection,
$id: value.oid
}, value.fields);
if (value.db != null) {
ordered_values['$db'] = value.db;
}
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
internalCalculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined));
}
else if (value instanceof RegExp || isRegExp(value)) {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
ByteUtils.utf8ByteLength(value.source) +
1 +
(value.global ? 1 : 0) +
(value.ignoreCase ? 1 : 0) +
(value.multiline ? 1 : 0) +
1);
}
else if (value._bsontype === 'BSONRegExp') {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
ByteUtils.utf8ByteLength(value.pattern) +
1 +
ByteUtils.utf8ByteLength(value.options) +
1);
}
else {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
internalCalculateObjectSize(value, serializeFunctions, ignoreUndefined) +
1);
}
case 'function':
if (serializeFunctions) {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
4 +
ByteUtils.utf8ByteLength(value.toString()) +
1);
}
}
return 0;
}
function alphabetize(str) {
return str.split('').sort().join('');
}
class BSONRegExp extends BSONValue {
get _bsontype() {
return 'BSONRegExp';
}
constructor(pattern, options) {
super();
this.pattern = pattern;
this.options = alphabetize(options ?? '');
if (this.pattern.indexOf('\x00') !== -1) {
throw new BSONError(`BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}`);
}
if (this.options.indexOf('\x00') !== -1) {
throw new BSONError(`BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}`);
}
for (let i = 0; i < this.options.length; i++) {
if (!(this.options[i] === 'i' ||
this.options[i] === 'm' ||
this.options[i] === 'x' ||
this.options[i] === 'l' ||
this.options[i] === 's' ||
this.options[i] === 'u')) {
throw new BSONError(`The regular expression option [${this.options[i]}] is not supported`);
}
}
}
static parseOptions(options) {
return options ? options.split('').sort().join('') : '';
}
toExtendedJSON(options) {
options = options || {};
if (options.legacy) {
return { $regex: this.pattern, $options: this.options };
}
return { $regularExpression: { pattern: this.pattern, options: this.options } };
}
static fromExtendedJSON(doc) {
if ('$regex' in doc) {
if (typeof doc.$regex !== 'string') {
if (doc.$regex._bsontype === 'BSONRegExp') {
return doc;
}
}
else {
return new BSONRegExp(doc.$regex, BSONRegExp.parseOptions(doc.$options));
}
}
if ('$regularExpression' in doc) {
return new BSONRegExp(doc.$regularExpression.pattern, BSONRegExp.parseOptions(doc.$regularExpression.options));
}
throw new BSONError(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(doc)}`);
}
inspect(depth, options, inspect) {
const stylize = getStylizeFunction(options) ?? (v => v);
inspect ??= defaultInspect;
const pattern = stylize(inspect(this.pattern), 'regexp');
const flags = stylize(inspect(this.options), 'regexp');
return `new BSONRegExp(${pattern}, ${flags})`;
}
}
class BSONSymbol extends BSONValue {
get _bsontype() {
return 'BSONSymbol';
}
constructor(value) {
super();
this.value = value;
}
valueOf() {
return this.value;
}
toString() {
return this.value;
}
toJSON() {
return this.value;
}
toExtendedJSON() {
return { $symbol: this.value };
}
static fromExtendedJSON(doc) {
return new BSONSymbol(doc.$symbol);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
return `new BSONSymbol(${inspect(this.value, options)})`;
}
}
const LongWithoutOverridesClass = Long;
class Timestamp extends LongWithoutOverridesClass {
get _bsontype() {
return 'Timestamp';
}
constructor(low) {
if (low == null) {
super(0, 0, true);
}
else if (typeof low === 'bigint') {
super(low, true);
}
else if (Long.isLong(low)) {
super(low.low, low.high, true);
}
else if (typeof low === 'object' && 't' in low && 'i' in low) {
if (typeof low.t !== 'number' && (typeof low.t !== 'object' || low.t._bsontype !== 'Int32')) {
throw new BSONError('Timestamp constructed from { t, i } must provide t as a number');
}
if (typeof low.i !== 'number' && (typeof low.i !== 'object' || low.i._bsontype !== 'Int32')) {
throw new BSONError('Timestamp constructed from { t, i } must provide i as a number');
}
const t = Number(low.t);
const i = Number(low.i);
if (t < 0 || Number.isNaN(t)) {
throw new BSONError('Timestamp constructed from { t, i } must provide a positive t');
}
if (i < 0 || Number.isNaN(i)) {
throw new BSONError('Timestamp constructed from { t, i } must provide a positive i');
}
if (t > 4294967295) {
throw new BSONError('Timestamp constructed from { t, i } must provide t equal or less than uint32 max');
}
if (i > 4294967295) {
throw new BSONError('Timestamp constructed from { t, i } must provide i equal or less than uint32 max');
}
super(i, t, true);
}
else {
throw new BSONError('A Timestamp can only be constructed with: bigint, Long, or { t: number; i: number }');
}
}
toJSON() {
return {
$timestamp: this.toString()
};
}
static fromInt(value) {
return new Timestamp(Long.fromInt(value, true));
}
static fromNumber(value) {
return new Timestamp(Long.fromNumber(value, true));
}
static fromBits(lowBits, highBits) {
return new Timestamp({ i: lowBits, t: highBits });
}
static fromString(str, optRadix) {
return new Timestamp(Long.fromString(str, true, optRadix));
}
toExtendedJSON() {
return { $timestamp: { t: this.high >>> 0, i: this.low >>> 0 } };
}
static fromExtendedJSON(doc) {
const i = Long.isLong(doc.$timestamp.i)
? doc.$timestamp.i.getLowBitsUnsigned()
: doc.$timestamp.i;
const t = Long.isLong(doc.$timestamp.t)
? doc.$timestamp.t.getLowBitsUnsigned()
: doc.$timestamp.t;
return new Timestamp({ t, i });
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
const t = inspect(this.high >>> 0, options);
const i = inspect(this.low >>> 0, options);
return `new Timestamp({ t: ${t}, i: ${i} })`;
}
}
Timestamp.MAX_VALUE = Long.MAX_UNSIGNED_VALUE;
const JS_INT_MAX_LONG = Long.fromNumber(JS_INT_MAX);
const JS_INT_MIN_LONG = Long.fromNumber(JS_INT_MIN);
function internalDeserialize(buffer, options, isArray) {
options = options == null ? {} : options;
const index = options && options.index ? options.index : 0;
const size = NumberUtils.getInt32LE(buffer, index);
if (size < 5) {
throw new BSONError(`bson size must be >= 5, is ${size}`);
}
if (options.allowObjectSmallerThanBufferSize && buffer.length < size) {
throw new BSONError(`buffer length ${buffer.length} must be >= bson size ${size}`);
}
if (!options.allowObjectSmallerThanBufferSize && buffer.length !== size) {
throw new BSONError(`buffer length ${buffer.length} must === bson size ${size}`);
}
if (size + index > buffer.byteLength) {
throw new BSONError(`(bson size ${size} + options.index ${index} must be <= buffer length ${buffer.byteLength})`);
}
if (buffer[index + size - 1] !== 0) {
throw new BSONError("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");
}
return deserializeObject(buffer, index, options, isArray);
}
const allowedDBRefKeys = /^\$ref$|^\$id$|^\$db$/;
function deserializeObject(buffer, index, options, isArray = false) {
const fieldsAsRaw = options['fieldsAsRaw'] == null ? null : options['fieldsAsRaw'];
const raw = options['raw'] == null ? false : options['raw'];
const bsonRegExp = typeof options['bsonRegExp'] === 'boolean' ? options['bsonRegExp'] : false;
const promoteBuffers = options.promoteBuffers ?? false;
const promoteLongs = options.promoteLongs ?? true;
const promoteValues = options.promoteValues ?? true;
const useBigInt64 = options.useBigInt64 ?? false;
if (useBigInt64 && !promoteValues) {
throw new BSONError('Must either request bigint or Long for int64 deserialization');
}
if (useBigInt64 && !promoteLongs) {
throw new BSONError('Must either request bigint or Long for int64 deserialization');
}
const validation = options.validation == null ? { utf8: true } : options.validation;
let globalUTFValidation = true;
let validationSetting;
let utf8KeysSet;
const utf8ValidatedKeys = validation.utf8;
if (typeof utf8ValidatedKeys === 'boolean') {
validationSetting = utf8ValidatedKeys;
}
else {
globalUTFValidation = false;
const utf8ValidationValues = Object.keys(utf8ValidatedKeys).map(function (key) {
return utf8ValidatedKeys[key];
});
if (utf8ValidationValues.length === 0) {
throw new BSONError('UTF-8 validation setting cannot be empty');
}
if (typeof utf8ValidationValues[0] !== 'boolean') {
throw new BSONError('Invalid UTF-8 validation option, must specify boolean values');
}
validationSetting = utf8ValidationValues[0];
if (!utf8ValidationValues.every(item => item === validationSetting)) {
throw new BSONError('Invalid UTF-8 validation option - keys must be all true or all false');
}
}
if (!globalUTFValidation) {
utf8KeysSet = new Set();
for (const key of Object.keys(utf8ValidatedKeys)) {
utf8KeysSet.add(key);
}
}
const startIndex = index;
if (buffer.length < 5)
throw new BSONError('corrupt bson message < 5 bytes long');
const size = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (size < 5 || size > buffer.length)
throw new BSONError('corrupt bson message');
const object = isArray ? [] : {};
let arrayIndex = 0;
const done = false;
let isPossibleDBRef = isArray ? false : null;
while (!done) {
const elementType = buffer[index++];
if (elementType === 0)
break;
let i = index;
while (buffer[i] !== 0x00 && i < buffer.length) {
i++;
}
if (i >= buffer.byteLength)
throw new BSONError('Bad BSON Document: illegal CString');
const name = isArray ? arrayIndex++ : ByteUtils.toUTF8(buffer, index, i, false);
let shouldValidateKey = true;
if (globalUTFValidation || utf8KeysSet?.has(name)) {
shouldValidateKey = validationSetting;
}
else {
shouldValidateKey = !validationSetting;
}
if (isPossibleDBRef !== false && name[0] === '$') {
isPossibleDBRef = allowedDBRefKeys.test(name);
}
let value;
index = i + 1;
if (elementType === BSON_DATA_STRING) {
const stringSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (stringSize <= 0 ||
stringSize > buffer.length - index ||
buffer[index + stringSize - 1] !== 0) {
throw new BSONError('bad string length in bson');
}
value = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
index = index + stringSize;
}
else if (elementType === BSON_DATA_OID) {
const oid = ByteUtils.allocateUnsafe(12);
for (let i = 0; i < 12; i++)
oid[i] = buffer[index + i];
value = new ObjectId(oid);
index = index + 12;
}
else if (elementType === BSON_DATA_INT && promoteValues === false) {
value = new Int32(NumberUtils.getInt32LE(buffer, index));
index += 4;
}
else if (elementType === BSON_DATA_INT) {
value = NumberUtils.getInt32LE(buffer, index);
index += 4;
}
else if (elementType === BSON_DATA_NUMBER) {
value = NumberUtils.getFloat64LE(buffer, index);
index += 8;
if (promoteValues === false)
value = new Double(value);
}
else if (elementType === BSON_DATA_DATE) {
const lowBits = NumberUtils.getInt32LE(buffer, index);
const highBits = NumberUtils.getInt32LE(buffer, index + 4);
index += 8;
value = new Date(new Long(lowBits, highBits).toNumber());
}
else if (elementType === BSON_DATA_BOOLEAN) {
if (buffer[index] !== 0 && buffer[index] !== 1)
throw new BSONError('illegal boolean type value');
value = buffer[index++] === 1;
}
else if (elementType === BSON_DATA_OBJECT) {
const _index = index;
const objectSize = NumberUtils.getInt32LE(buffer, index);
if (objectSize <= 0 || objectSize > buffer.length - index)
throw new BSONError('bad embedded document length in bson');
if (raw) {
value = buffer.slice(index, index + objectSize);
}
else {
let objectOptions = options;
if (!globalUTFValidation) {
objectOptions = { ...options, validation: { utf8: shouldValidateKey } };
}
value = deserializeObject(buffer, _index, objectOptions, false);
}
index = index + objectSize;
}
else if (elementType === BSON_DATA_ARRAY) {
const _index = index;
const objectSize = NumberUtils.getInt32LE(buffer, index);
let arrayOptions = options;
const stopIndex = index + objectSize;
if (fieldsAsRaw && fieldsAsRaw[name]) {
arrayOptions = { ...options, raw: true };
}
if (!globalUTFValidation) {
arrayOptions = { ...arrayOptions, validation: { utf8: shouldValidateKey } };
}
value = deserializeObject(buffer, _index, arrayOptions, true);
index = index + objectSize;
if (buffer[index - 1] !== 0)
throw new BSONError('invalid array terminator byte');
if (index !== stopIndex)
throw new BSONError('corrupted array bson');
}
else if (elementType === BSON_DATA_UNDEFINED) {
value = undefined;
}
else if (elementType === BSON_DATA_NULL) {
value = null;
}
else if (elementType === BSON_DATA_LONG) {
if (useBigInt64) {
value = NumberUtils.getBigInt64LE(buffer, index);
index += 8;
}
else {
const lowBits = NumberUtils.getInt32LE(buffer, index);
const highBits = NumberUtils.getInt32LE(buffer, index + 4);
index += 8;
const long = new Long(lowBits, highBits);
if (promoteLongs && promoteValues === true) {
value =
long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG)
? long.toNumber()
: long;
}
else {
value = long;
}
}
}
else if (elementType === BSON_DATA_DECIMAL128) {
const bytes = ByteUtils.allocateUnsafe(16);
for (let i = 0; i < 16; i++)
bytes[i] = buffer[index + i];
index = index + 16;
value = new Decimal128(bytes);
}
else if (elementType === BSON_DATA_BINARY) {
let binarySize = NumberUtils.getInt32LE(buffer, index);
index += 4;
const totalBinarySize = binarySize;
const subType = buffer[index++];
if (binarySize < 0)
throw new BSONError('Negative binary type element size found');
if (binarySize > buffer.byteLength)
throw new BSONError('Binary type size larger than document size');
if (buffer['slice'] != null) {
if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
binarySize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (binarySize < 0)
throw new BSONError('Negative binary type element size found for subtype 0x02');
if (binarySize > totalBinarySize - 4)
throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
if (binarySize < totalBinarySize - 4)
throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
}
if (promoteBuffers && promoteValues) {
value = ByteUtils.toLocalBufferType(buffer.slice(index, index + binarySize));
}
else {
value = new Binary(buffer.slice(index, index + binarySize), subType);
if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
value = value.toUUID();
}
}
}
else {
if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
binarySize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (binarySize < 0)
throw new BSONError('Negative binary type element size found for subtype 0x02');
if (binarySize > totalBinarySize - 4)
throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
if (binarySize < totalBinarySize - 4)
throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
}
if (promoteBuffers && promoteValues) {
value = ByteUtils.allocateUnsafe(binarySize);
for (i = 0; i < binarySize; i++) {
value[i] = buffer[index + i];
}
}
else {
value = new Binary(buffer.slice(index, index + binarySize), subType);
if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
value = value.toUUID();
}
}
}
index = index + binarySize;
}
else if (elementType === BSON_DATA_REGEXP && bsonRegExp === false) {
i = index;
while (buffer[i] !== 0x00 && i < buffer.length) {
i++;
}
if (i >= buffer.length)
throw new BSONError('Bad BSON Document: illegal CString');
const source = ByteUtils.toUTF8(buffer, index, i, false);
index = i + 1;
i = index;
while (buffer[i] !== 0x00 && i < buffer.length) {
i++;
}
if (i >= buffer.length)
throw new BSONError('Bad BSON Document: illegal CString');
const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
index = i + 1;
const optionsArray = new Array(regExpOptions.length);
for (i = 0; i < regExpOptions.length; i++) {
switch (regExpOptions[i]) {
case 'm':
optionsArray[i] = 'm';
break;
case 's':
optionsArray[i] = 'g';
break;
case 'i':
optionsArray[i] = 'i';
break;
}
}
value = new RegExp(source, optionsArray.join(''));
}
else if (elementType === BSON_DATA_REGEXP && bsonRegExp === true) {
i = index;
while (buffer[i] !== 0x00 && i < buffer.length) {
i++;
}
if (i >= buffer.length)
throw new BSONError('Bad BSON Document: illegal CString');
const source = ByteUtils.toUTF8(buffer, index, i, false);
index = i + 1;
i = index;
while (buffer[i] !== 0x00 && i < buffer.length) {
i++;
}
if (i >= buffer.length)
throw new BSONError('Bad BSON Document: illegal CString');
const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
index = i + 1;
value = new BSONRegExp(source, regExpOptions);
}
else if (elementType === BSON_DATA_SYMBOL) {
const stringSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (stringSize <= 0 ||
stringSize > buffer.length - index ||
buffer[index + stringSize - 1] !== 0) {
throw new BSONError('bad string length in bson');
}
const symbol = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
value = promoteValues ? symbol : new BSONSymbol(symbol);
index = index + stringSize;
}
else if (elementType === BSON_DATA_TIMESTAMP) {
value = new Timestamp({
i: NumberUtils.getUint32LE(buffer, index),
t: NumberUtils.getUint32LE(buffer, index + 4)
});
index += 8;
}
else if (elementType === BSON_DATA_MIN_KEY) {
value = new MinKey();
}
else if (elementType === BSON_DATA_MAX_KEY) {
value = new MaxKey();
}
else if (elementType === BSON_DATA_CODE) {
const stringSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (stringSize <= 0 ||
stringSize > buffer.length - index ||
buffer[index + stringSize - 1] !== 0) {
throw new BSONError('bad string length in bson');
}
const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
value = new Code(functionString);
index = index + stringSize;
}
else if (elementType === BSON_DATA_CODE_W_SCOPE) {
const totalSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (totalSize < 4 + 4 + 4 + 1) {
throw new BSONError('code_w_scope total size shorter minimum expected length');
}
const stringSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (stringSize <= 0 ||
stringSize > buffer.length - index ||
buffer[index + stringSize - 1] !== 0) {
throw new BSONError('bad string length in bson');
}
const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
index = index + stringSize;
const _index = index;
const objectSize = NumberUtils.getInt32LE(buffer, index);
const scopeObject = deserializeObject(buffer, _index, options, false);
index = index + objectSize;
if (totalSize < 4 + 4 + objectSize + stringSize) {
throw new BSONError('code_w_scope total size is too short, truncating scope');
}
if (totalSize > 4 + 4 + objectSize + stringSize) {
throw new BSONError('code_w_scope total size is too long, clips outer document');
}
value = new Code(functionString, scopeObject);
}
else if (elementType === BSON_DATA_DBPOINTER) {
const stringSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (stringSize <= 0 ||
stringSize > buffer.length - index ||
buffer[index + stringSize - 1] !== 0)
throw new BSONError('bad string length in bson');
if (validation != null && validation.utf8) {
if (!validateUtf8(buffer, index, index + stringSize - 1)) {
throw new BSONError('Invalid UTF-8 string in BSON document');
}
}
const namespace = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, false);
index = index + stringSize;
const oidBuffer = ByteUtils.allocateUnsafe(12);
for (let i = 0; i < 12; i++)
oidBuffer[i] = buffer[index + i];
const oid = new ObjectId(oidBuffer);
index = index + 12;
value = new DBRef(namespace, oid);
}
else {
throw new BSONError(`Detected unknown BSON type ${elementType.toString(16)} for fieldname "${name}"`);
}
if (name === '__proto__') {
Object.defineProperty(object, name, {
value,
writable: true,
enumerable: true,
configurable: true
});
}
else {
object[name] = value;
}
}
if (size !== index - startIndex) {
if (isArray)
throw new BSONError('corrupt array bson');
throw new BSONError('corrupt object bson');
}
if (!isPossibleDBRef)
return object;
if (isDBRefLike(object)) {
const copy = Object.assign({}, object);
delete copy.$ref;
delete copy.$id;
delete copy.$db;
return new DBRef(object.$ref, object.$id, object.$db, copy);
}
return object;
}
const regexp = /\x00/;
const ignoreKeys = new Set(['$db', '$ref', '$id', '$clusterTime']);
function serializeString(buffer, key, value, index) {
buffer[index++] = BSON_DATA_STRING;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes + 1;
buffer[index - 1] = 0;
const size = ByteUtils.encodeUTF8Into(buffer, value, index + 4);
NumberUtils.setInt32LE(buffer, index, size + 1);
index = index + 4 + size;
buffer[index++] = 0;
return index;
}
function serializeNumber(buffer, key, value, index) {
const isNegativeZero = Object.is(value, -0);
const type = !isNegativeZero &&
Number.isSafeInteger(value) &&
value <= BSON_INT32_MAX &&
value >= BSON_INT32_MIN
? BSON_DATA_INT
: BSON_DATA_NUMBER;
buffer[index++] = type;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0x00;
if (type === BSON_DATA_INT) {
index += NumberUtils.setInt32LE(buffer, index, value);
}
else {
index += NumberUtils.setFloat64LE(buffer, index, value);
}
return index;
}
function serializeBigInt(buffer, key, value, index) {
buffer[index++] = BSON_DATA_LONG;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index += numberOfWrittenBytes;
buffer[index++] = 0;
index += NumberUtils.setBigInt64LE(buffer, index, value);
return index;
}
function serializeNull(buffer, key, _, index) {
buffer[index++] = BSON_DATA_NULL;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
return index;
}
function serializeBoolean(buffer, key, value, index) {
buffer[index++] = BSON_DATA_BOOLEAN;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
buffer[index++] = value ? 1 : 0;
return index;
}
function serializeDate(buffer, key, value, index) {
buffer[index++] = BSON_DATA_DATE;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const dateInMilis = Long.fromNumber(value.getTime());
const lowBits = dateInMilis.getLowBits();
const highBits = dateInMilis.getHighBits();
index += NumberUtils.setInt32LE(buffer, index, lowBits);
index += NumberUtils.setInt32LE(buffer, index, highBits);
return index;
}
function serializeRegExp(buffer, key, value, index) {
buffer[index++] = BSON_DATA_REGEXP;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
if (value.source && value.source.match(regexp) != null) {
throw new BSONError('value ' + value.source + ' must not contain null bytes');
}
index = index + ByteUtils.encodeUTF8Into(buffer, value.source, index);
buffer[index++] = 0x00;
if (value.ignoreCase)
buffer[index++] = 0x69;
if (value.global)
buffer[index++] = 0x73;
if (value.multiline)
buffer[index++] = 0x6d;
buffer[index++] = 0x00;
return index;
}
function serializeBSONRegExp(buffer, key, value, index) {
buffer[index++] = BSON_DATA_REGEXP;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
if (value.pattern.match(regexp) != null) {
throw new BSONError('pattern ' + value.pattern + ' must not contain null bytes');
}
index = index + ByteUtils.encodeUTF8Into(buffer, value.pattern, index);
buffer[index++] = 0x00;
const sortedOptions = value.options.split('').sort().join('');
index = index + ByteUtils.encodeUTF8Into(buffer, sortedOptions, index);
buffer[index++] = 0x00;
return index;
}
function serializeMinMax(buffer, key, value, index) {
if (value === null) {
buffer[index++] = BSON_DATA_NULL;
}
else if (value._bsontype === 'MinKey') {
buffer[index++] = BSON_DATA_MIN_KEY;
}
else {
buffer[index++] = BSON_DATA_MAX_KEY;
}
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
return index;
}
function serializeObjectId(buffer, key, value, index) {
buffer[index++] = BSON_DATA_OID;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
index += value.serializeInto(buffer, index);
return index;
}
function serializeBuffer(buffer, key, value, index) {
buffer[index++] = BSON_DATA_BINARY;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const size = value.length;
index += NumberUtils.setInt32LE(buffer, index, size);
buffer[index++] = BSON_BINARY_SUBTYPE_DEFAULT;
if (size <= 16) {
for (let i = 0; i < size; i++)
buffer[index + i] = value[i];
}
else {
buffer.set(value, index);
}
index = index + size;
return index;
}
function serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path) {
if (path.has(value)) {
throw new BSONError('Cannot convert circular structure to BSON');
}
path.add(value);
buffer[index++] = Array.isArray(value) ? BSON_DATA_ARRAY : BSON_DATA_OBJECT;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const endIndex = serializeInto(buffer, value, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
path.delete(value);
return endIndex;
}
function serializeDecimal128(buffer, key, value, index) {
buffer[index++] = BSON_DATA_DECIMAL128;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
for (let i = 0; i < 16; i++)
buffer[index + i] = value.bytes[i];
return index + 16;
}
function serializeLong(buffer, key, value, index) {
buffer[index++] =
value._bsontype === 'Long' ? BSON_DATA_LONG : BSON_DATA_TIMESTAMP;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const lowBits = value.getLowBits();
const highBits = value.getHighBits();
index += NumberUtils.setInt32LE(buffer, index, lowBits);
index += NumberUtils.setInt32LE(buffer, index, highBits);
return index;
}
function serializeInt32(buffer, key, value, index) {
value = value.valueOf();
buffer[index++] = BSON_DATA_INT;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
index += NumberUtils.setInt32LE(buffer, index, value);
return index;
}
function serializeDouble(buffer, key, value, index) {
buffer[index++] = BSON_DATA_NUMBER;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
index += NumberUtils.setFloat64LE(buffer, index, value.value);
return index;
}
function serializeFunction(buffer, key, value, index) {
buffer[index++] = BSON_DATA_CODE;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const functionString = value.toString();
const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
NumberUtils.setInt32LE(buffer, index, size);
index = index + 4 + size - 1;
buffer[index++] = 0;
return index;
}
function serializeCode(buffer, key, value, index, checkKeys = false, depth = 0, serializeFunctions = false, ignoreUndefined = true, path) {
if (value.scope && typeof value.scope === 'object') {
buffer[index++] = BSON_DATA_CODE_W_SCOPE;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
let startIndex = index;
const functionString = value.code;
index = index + 4;
const codeSize = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
NumberUtils.setInt32LE(buffer, index, codeSize);
buffer[index + 4 + codeSize - 1] = 0;
index = index + codeSize + 4;
const endIndex = serializeInto(buffer, value.scope, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
index = endIndex - 1;
const totalSize = endIndex - startIndex;
startIndex += NumberUtils.setInt32LE(buffer, startIndex, totalSize);
buffer[index++] = 0;
}
else {
buffer[index++] = BSON_DATA_CODE;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const functionString = value.code.toString();
const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
NumberUtils.setInt32LE(buffer, index, size);
index = index + 4 + size - 1;
buffer[index++] = 0;
}
return index;
}
function serializeBinary(buffer, key, value, index) {
buffer[index++] = BSON_DATA_BINARY;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const data = value.buffer;
let size = value.position;
if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY)
size = size + 4;
index += NumberUtils.setInt32LE(buffer, index, size);
buffer[index++] = value.sub_type;
if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
size = size - 4;
index += NumberUtils.setInt32LE(buffer, index, size);
}
if (size <= 16) {
for (let i = 0; i < size; i++)
buffer[index + i] = data[i];
}
else {
buffer.set(data, index);
}
index = index + value.position;
return index;
}
function serializeSymbol(buffer, key, value, index) {
buffer[index++] = BSON_DATA_SYMBOL;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const size = ByteUtils.encodeUTF8Into(buffer, value.value, index + 4) + 1;
NumberUtils.setInt32LE(buffer, index, size);
index = index + 4 + size - 1;
buffer[index++] = 0;
return index;
}
function serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path) {
buffer[index++] = BSON_DATA_OBJECT;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
let startIndex = index;
let output = {
$ref: value.collection || value.namespace,
$id: value.oid
};
if (value.db != null) {
output.$db = value.db;
}
output = Object.assign(output, value.fields);
const endIndex = serializeInto(buffer, output, false, index, depth + 1, serializeFunctions, true, path);
const size = endIndex - startIndex;
startIndex += NumberUtils.setInt32LE(buffer, index, size);
return endIndex;
}
function serializeInto(buffer, object, checkKeys, startingIndex, depth, serializeFunctions, ignoreUndefined, path) {
if (path == null) {
if (object == null) {
buffer[0] = 0x05;
buffer[1] = 0x00;
buffer[2] = 0x00;
buffer[3] = 0x00;
buffer[4] = 0x00;
return 5;
}
if (Array.isArray(object)) {
throw new BSONError('serialize does not support an array as the root input');
}
if (typeof object !== 'object') {
throw new BSONError('serialize does not support non-object as the root input');
}
else if ('_bsontype' in object && typeof object._bsontype === 'string') {
throw new BSONError(`BSON types cannot be serialized as a document`);
}
else if (isDate(object) ||
isRegExp(object) ||
isUint8Array(object) ||
isAnyArrayBuffer(object)) {
throw new BSONError(`date, regexp, typedarray, and arraybuffer cannot be BSON documents`);
}
path = new Set();
}
path.add(object);
let index = startingIndex + 4;
if (Array.isArray(object)) {
for (let i = 0; i < object.length; i++) {
const key = `${i}`;
let value = object[i];
if (typeof value?.toBSON === 'function') {
value = value.toBSON();
}
if (typeof value === 'string') {
index = serializeString(buffer, key, value, index);
}
else if (typeof value === 'number') {
index = serializeNumber(buffer, key, value, index);
}
else if (typeof value === 'bigint') {
index = serializeBigInt(buffer, key, value, index);
}
else if (typeof value === 'boolean') {
index = serializeBoolean(buffer, key, value, index);
}
else if (value instanceof Date || isDate(value)) {
index = serializeDate(buffer, key, value, index);
}
else if (value === undefined) {
index = serializeNull(buffer, key, value, index);
}
else if (value === null) {
index = serializeNull(buffer, key, value, index);
}
else if (isUint8Array(value)) {
index = serializeBuffer(buffer, key, value, index);
}
else if (value instanceof RegExp || isRegExp(value)) {
index = serializeRegExp(buffer, key, value, index);
}
else if (typeof value === 'object' && value._bsontype == null) {
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (typeof value === 'object' &&
value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
throw new BSONVersionError();
}
else if (value._bsontype === 'ObjectId') {
index = serializeObjectId(buffer, key, value, index);
}
else if (value._bsontype === 'Decimal128') {
index = serializeDecimal128(buffer, key, value, index);
}
else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
index = serializeLong(buffer, key, value, index);
}
else if (value._bsontype === 'Double') {
index = serializeDouble(buffer, key, value, index);
}
else if (typeof value === 'function' && serializeFunctions) {
index = serializeFunction(buffer, key, value, index);
}
else if (value._bsontype === 'Code') {
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (value._bsontype === 'Binary') {
index = serializeBinary(buffer, key, value, index);
}
else if (value._bsontype === 'BSONSymbol') {
index = serializeSymbol(buffer, key, value, index);
}
else if (value._bsontype === 'DBRef') {
index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
}
else if (value._bsontype === 'BSONRegExp') {
index = serializeBSONRegExp(buffer, key, value, index);
}
else if (value._bsontype === 'Int32') {
index = serializeInt32(buffer, key, value, index);
}
else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
index = serializeMinMax(buffer, key, value, index);
}
else if (typeof value._bsontype !== 'undefined') {
throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
}
}
}
else if (object instanceof Map || isMap(object)) {
const iterator = object.entries();
let done = false;
while (!done) {
const entry = iterator.next();
done = !!entry.done;
if (done)
continue;
const key = entry.value[0];
let value = entry.value[1];
if (typeof value?.toBSON === 'function') {
value = value.toBSON();
}
const type = typeof value;
if (typeof key === 'string' && !ignoreKeys.has(key)) {
if (key.match(regexp) != null) {
throw new BSONError('key ' + key + ' must not contain null bytes');
}
if (checkKeys) {
if ('$' === key[0]) {
throw new BSONError('key ' + key + " must not start with '$'");
}
else if (key.includes('.')) {
throw new BSONError('key ' + key + " must not contain '.'");
}
}
}
if (type === 'string') {
index = serializeString(buffer, key, value, index);
}
else if (type === 'number') {
index = serializeNumber(buffer, key, value, index);
}
else if (type === 'bigint') {
index = serializeBigInt(buffer, key, value, index);
}
else if (type === 'boolean') {
index = serializeBoolean(buffer, key, value, index);
}
else if (value instanceof Date || isDate(value)) {
index = serializeDate(buffer, key, value, index);
}
else if (value === null || (value === undefined && ignoreUndefined === false)) {
index = serializeNull(buffer, key, value, index);
}
else if (isUint8Array(value)) {
index = serializeBuffer(buffer, key, value, index);
}
else if (value instanceof RegExp || isRegExp(value)) {
index = serializeRegExp(buffer, key, value, index);
}
else if (type === 'object' && value._bsontype == null) {
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (typeof value === 'object' &&
value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
throw new BSONVersionError();
}
else if (value._bsontype === 'ObjectId') {
index = serializeObjectId(buffer, key, value, index);
}
else if (type === 'object' && value._bsontype === 'Decimal128') {
index = serializeDecimal128(buffer, key, value, index);
}
else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
index = serializeLong(buffer, key, value, index);
}
else if (value._bsontype === 'Double') {
index = serializeDouble(buffer, key, value, index);
}
else if (value._bsontype === 'Code') {
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (typeof value === 'function' && serializeFunctions) {
index = serializeFunction(buffer, key, value, index);
}
else if (value._bsontype === 'Binary') {
index = serializeBinary(buffer, key, value, index);
}
else if (value._bsontype === 'BSONSymbol') {
index = serializeSymbol(buffer, key, value, index);
}
else if (value._bsontype === 'DBRef') {
index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
}
else if (value._bsontype === 'BSONRegExp') {
index = serializeBSONRegExp(buffer, key, value, index);
}
else if (value._bsontype === 'Int32') {
index = serializeInt32(buffer, key, value, index);
}
else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
index = serializeMinMax(buffer, key, value, index);
}
else if (typeof value._bsontype !== 'undefined') {
throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
}
}
}
else {
if (typeof object?.toBSON === 'function') {
object = object.toBSON();
if (object != null && typeof object !== 'object') {
throw new BSONError('toBSON function did not return an object');
}
}
for (const key of Object.keys(object)) {
let value = object[key];
if (typeof value?.toBSON === 'function') {
value = value.toBSON();
}
const type = typeof value;
if (typeof key === 'string' && !ignoreKeys.has(key)) {
if (key.match(regexp) != null) {
throw new BSONError('key ' + key + ' must not contain null bytes');
}
if (checkKeys) {
if ('$' === key[0]) {
throw new BSONError('key ' + key + " must not start with '$'");
}
else if (key.includes('.')) {
throw new BSONError('key ' + key + " must not contain '.'");
}
}
}
if (type === 'string') {
index = serializeString(buffer, key, value, index);
}
else if (type === 'number') {
index = serializeNumber(buffer, key, value, index);
}
else if (type === 'bigint') {
index = serializeBigInt(buffer, key, value, index);
}
else if (type === 'boolean') {
index = serializeBoolean(buffer, key, value, index);
}
else if (value instanceof Date || isDate(value)) {
index = serializeDate(buffer, key, value, index);
}
else if (value === undefined) {
if (ignoreUndefined === false)
index = serializeNull(buffer, key, value, index);
}
else if (value === null) {
index = serializeNull(buffer, key, value, index);
}
else if (isUint8Array(value)) {
index = serializeBuffer(buffer, key, value, index);
}
else if (value instanceof RegExp || isRegExp(value)) {
index = serializeRegExp(buffer, key, value, index);
}
else if (type === 'object' && value._bsontype == null) {
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (typeof value === 'object' &&
value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
throw new BSONVersionError();
}
else if (value._bsontype === 'ObjectId') {
index = serializeObjectId(buffer, key, value, index);
}
else if (type === 'object' && value._bsontype === 'Decimal128') {
index = serializeDecimal128(buffer, key, value, index);
}
else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
index = serializeLong(buffer, key, value, index);
}
else if (value._bsontype === 'Double') {
index = serializeDouble(buffer, key, value, index);
}
else if (value._bsontype === 'Code') {
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (typeof value === 'function' && serializeFunctions) {
index = serializeFunction(buffer, key, value, index);
}
else if (value._bsontype === 'Binary') {
index = serializeBinary(buffer, key, value, index);
}
else if (value._bsontype === 'BSONSymbol') {
index = serializeSymbol(buffer, key, value, index);
}
else if (value._bsontype === 'DBRef') {
index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
}
else if (value._bsontype === 'BSONRegExp') {
index = serializeBSONRegExp(buffer, key, value, index);
}
else if (value._bsontype === 'Int32') {
index = serializeInt32(buffer, key, value, index);
}
else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
index = serializeMinMax(buffer, key, value, index);
}
else if (typeof value._bsontype !== 'undefined') {
throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
}
}
}
path.delete(object);
buffer[index++] = 0x00;
const size = index - startingIndex;
startingIndex += NumberUtils.setInt32LE(buffer, startingIndex, size);
return index;
}
function isBSONType(value) {
return (value != null &&
typeof value === 'object' &&
'_bsontype' in value &&
typeof value._bsontype === 'string');
}
const keysToCodecs = {
$oid: ObjectId,
$binary: Binary,
$uuid: Binary,
$symbol: BSONSymbol,
$numberInt: Int32,
$numberDecimal: Decimal128,
$numberDouble: Double,
$numberLong: Long,
$minKey: MinKey,
$maxKey: MaxKey,
$regex: BSONRegExp,
$regularExpression: BSONRegExp,
$timestamp: Timestamp
};
function deserializeValue(value, options = {}) {
if (typeof value === 'number') {
const in32BitRange = value <= BSON_INT32_MAX && value >= BSON_INT32_MIN;
const in64BitRange = value <= BSON_INT64_MAX && value >= BSON_INT64_MIN;
if (options.relaxed || options.legacy) {
return value;
}
if (Number.isInteger(value) && !Object.is(value, -0)) {
if (in32BitRange) {
return new Int32(value);
}
if (in64BitRange) {
if (options.useBigInt64) {
return BigInt(value);
}
return Long.fromNumber(value);
}
}
return new Double(value);
}
if (value == null || typeof value !== 'object')
return value;
if (value.$undefined)
return null;
const keys = Object.keys(value).filter(k => k.startsWith('$') && value[k] != null);
for (let i = 0; i < keys.length; i++) {
const c = keysToCodecs[keys[i]];
if (c)
return c.fromExtendedJSON(value, options);
}
if (value.$date != null) {
const d = value.$date;
const date = new Date();
if (options.legacy) {
if (typeof d === 'number')
date.setTime(d);
else if (typeof d === 'string')
date.setTime(Date.parse(d));
else if (typeof d === 'bigint')
date.setTime(Number(d));
else
throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
}
else {
if (typeof d === 'string')
date.setTime(Date.parse(d));
else if (Long.isLong(d))
date.setTime(d.toNumber());
else if (typeof d === 'number' && options.relaxed)
date.setTime(d);
else if (typeof d === 'bigint')
date.setTime(Number(d));
else
throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
}
return date;
}
if (value.$code != null) {
const copy = Object.assign({}, value);
if (value.$scope) {
copy.$scope = deserializeValue(value.$scope);
}
return Code.fromExtendedJSON(value);
}
if (isDBRefLike(value) || value.$dbPointer) {
const v = value.$ref ? value : value.$dbPointer;
if (v instanceof DBRef)
return v;
const dollarKeys = Object.keys(v).filter(k => k.startsWith('$'));
let valid = true;
dollarKeys.forEach(k => {
if (['$ref', '$id', '$db'].indexOf(k) === -1)
valid = false;
});
if (valid)
return DBRef.fromExtendedJSON(v);
}
return value;
}
function serializeArray(array, options) {
return array.map((v, index) => {
options.seenObjects.push({ propertyName: `index ${index}`, obj: null });
try {
return serializeValue(v, options);
}
finally {
options.seenObjects.pop();
}
});
}
function getISOString(date) {
const isoStr = date.toISOString();
return date.getUTCMilliseconds() !== 0 ? isoStr : isoStr.slice(0, -5) + 'Z';
}
function serializeValue(value, options) {
if (value instanceof Map || isMap(value)) {
const obj = Object.create(null);
for (const [k, v] of value) {
if (typeof k !== 'string') {
throw new BSONError('Can only serialize maps with string keys');
}
obj[k] = v;
}
return serializeValue(obj, options);
}
if ((typeof value === 'object' || typeof value === 'function') && value !== null) {
const index = options.seenObjects.findIndex(entry => entry.obj === value);
if (index !== -1) {
const props = options.seenObjects.map(entry => entry.propertyName);
const leadingPart = props
.slice(0, index)
.map(prop => `${prop} -> `)
.join('');
const alreadySeen = props[index];
const circularPart = ' -> ' +
props
.slice(index + 1, props.length - 1)
.map(prop => `${prop} -> `)
.join('');
const current = props[props.length - 1];
const leadingSpace = ' '.repeat(leadingPart.length + alreadySeen.length / 2);
const dashes = '-'.repeat(circularPart.length + (alreadySeen.length + current.length) / 2 - 1);
throw new BSONError('Converting circular structure to EJSON:\n' +
` ${leadingPart}${alreadySeen}${circularPart}${current}\n` +
` ${leadingSpace}\\${dashes}/`);
}
options.seenObjects[options.seenObjects.length - 1].obj = value;
}
if (Array.isArray(value))
return serializeArray(value, options);
if (value === undefined)
return null;
if (value instanceof Date || isDate(value)) {
const dateNum = value.getTime(), inRange = dateNum > -1 && dateNum < 253402318800000;
if (options.legacy) {
return options.relaxed && inRange
? { $date: value.getTime() }
: { $date: getISOString(value) };
}
return options.relaxed && inRange
? { $date: getISOString(value) }
: { $date: { $numberLong: value.getTime().toString() } };
}
if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) {
if (Number.isInteger(value) && !Object.is(value, -0)) {
if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
return { $numberInt: value.toString() };
}
if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) {
return { $numberLong: value.toString() };
}
}
return { $numberDouble: Object.is(value, -0) ? '-0.0' : value.toString() };
}
if (typeof value === 'bigint') {
if (!options.relaxed) {
return { $numberLong: BigInt.asIntN(64, value).toString() };
}
return Number(BigInt.asIntN(64, value));
}
if (value instanceof RegExp || isRegExp(value)) {
let flags = value.flags;
if (flags === undefined) {
const match = value.toString().match(/[gimuy]*$/);
if (match) {
flags = match[0];
}
}
const rx = new BSONRegExp(value.source, flags);
return rx.toExtendedJSON(options);
}
if (value != null && typeof value === 'object')
return serializeDocument(value, options);
return value;
}
const BSON_TYPE_MAPPINGS = {
Binary: (o) => new Binary(o.value(), o.sub_type),
Code: (o) => new Code(o.code, o.scope),
DBRef: (o) => new DBRef(o.collection || o.namespace, o.oid, o.db, o.fields),
Decimal128: (o) => new Decimal128(o.bytes),
Double: (o) => new Double(o.value),
Int32: (o) => new Int32(o.value),
Long: (o) => Long.fromBits(o.low != null ? o.low : o.low_, o.low != null ? o.high : o.high_, o.low != null ? o.unsigned : o.unsigned_),
MaxKey: () => new MaxKey(),
MinKey: () => new MinKey(),
ObjectId: (o) => new ObjectId(o),
BSONRegExp: (o) => new BSONRegExp(o.pattern, o.options),
BSONSymbol: (o) => new BSONSymbol(o.value),
Timestamp: (o) => Timestamp.fromBits(o.low, o.high)
};
function serializeDocument(doc, options) {
if (doc == null || typeof doc !== 'object')
throw new BSONError('not an object instance');
const bsontype = doc._bsontype;
if (typeof bsontype === 'undefined') {
const _doc = {};
for (const name of Object.keys(doc)) {
options.seenObjects.push({ propertyName: name, obj: null });
try {
const value = serializeValue(doc[name], options);
if (name === '__proto__') {
Object.defineProperty(_doc, name, {
value,
writable: true,
enumerable: true,
configurable: true
});
}
else {
_doc[name] = value;
}
}
finally {
options.seenObjects.pop();
}
}
return _doc;
}
else if (doc != null &&
typeof doc === 'object' &&
typeof doc._bsontype === 'string' &&
doc[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
throw new BSONVersionError();
}
else if (isBSONType(doc)) {
let outDoc = doc;
if (typeof outDoc.toExtendedJSON !== 'function') {
const mapper = BSON_TYPE_MAPPINGS[doc._bsontype];
if (!mapper) {
throw new BSONError('Unrecognized or invalid _bsontype: ' + doc._bsontype);
}
outDoc = mapper(outDoc);
}
if (bsontype === 'Code' && outDoc.scope) {
outDoc = new Code(outDoc.code, serializeValue(outDoc.scope, options));
}
else if (bsontype === 'DBRef' && outDoc.oid) {
outDoc = new DBRef(serializeValue(outDoc.collection, options), serializeValue(outDoc.oid, options), serializeValue(outDoc.db, options), serializeValue(outDoc.fields, options));
}
return outDoc.toExtendedJSON(options);
}
else {
throw new BSONError('_bsontype must be a string, but was: ' + typeof bsontype);
}
}
function parse(text, options) {
const ejsonOptions = {
useBigInt64: options?.useBigInt64 ?? false,
relaxed: options?.relaxed ?? true,
legacy: options?.legacy ?? false
};
return JSON.parse(text, (key, value) => {
if (key.indexOf('\x00') !== -1) {
throw new BSONError(`BSON Document field names cannot contain null bytes, found: ${JSON.stringify(key)}`);
}
return deserializeValue(value, ejsonOptions);
});
}
function stringify(value, replacer, space, options) {
if (space != null && typeof space === 'object') {
options = space;
space = 0;
}
if (replacer != null && typeof replacer === 'object' && !Array.isArray(replacer)) {
options = replacer;
replacer = undefined;
space = 0;
}
const serializeOptions = Object.assign({ relaxed: true, legacy: false }, options, {
seenObjects: [{ propertyName: '(root)', obj: null }]
});
const doc = serializeValue(value, serializeOptions);
return JSON.stringify(doc, replacer, space);
}
function EJSONserialize(value, options) {
options = options || {};
return JSON.parse(stringify(value, options));
}
function EJSONdeserialize(ejson, options) {
options = options || {};
return parse(JSON.stringify(ejson), options);
}
const EJSON = Object.create(null);
EJSON.parse = parse;
EJSON.stringify = stringify;
EJSON.serialize = EJSONserialize;
EJSON.deserialize = EJSONdeserialize;
Object.freeze(EJSON);
const MAXSIZE = 1024 * 1024 * 17;
let buffer = ByteUtils.allocate(MAXSIZE);
function setInternalBufferSize(size) {
if (buffer.length < size) {
buffer = ByteUtils.allocate(size);
}
}
function serialize(object, options = {}) {
const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
const minInternalBufferSize = typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE;
if (buffer.length < minInternalBufferSize) {
buffer = ByteUtils.allocate(minInternalBufferSize);
}
const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
const finishedBuffer = ByteUtils.allocateUnsafe(serializationIndex);
finishedBuffer.set(buffer.subarray(0, serializationIndex), 0);
return finishedBuffer;
}
function serializeWithBufferAndIndex(object, finalBuffer, options = {}) {
const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
const startIndex = typeof options.index === 'number' ? options.index : 0;
const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
finalBuffer.set(buffer.subarray(0, serializationIndex), startIndex);
return startIndex + serializationIndex - 1;
}
function deserialize(buffer, options = {}) {
return internalDeserialize(ByteUtils.toLocalBufferType(buffer), options);
}
function calculateObjectSize(object, options = {}) {
options = options || {};
const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
return internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined);
}
function deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options) {
const internalOptions = Object.assign({ allowObjectSmallerThanBufferSize: true, index: 0 }, options);
const bufferData = ByteUtils.toLocalBufferType(data);
let index = startIndex;
for (let i = 0; i < numberOfDocuments; i++) {
const size = NumberUtils.getInt32LE(bufferData, index);
internalOptions.index = index;
documents[docStartIndex + i] = internalDeserialize(bufferData, internalOptions);
index = index + size;
}
return index;
}
var bson = /*#__PURE__*/Object.freeze({
__proto__: null,
BSONError: BSONError,
BSONRegExp: BSONRegExp,
BSONRuntimeError: BSONRuntimeError,
BSONSymbol: BSONSymbol,
BSONType: BSONType,
BSONValue: BSONValue,
BSONVersionError: BSONVersionError,
Binary: Binary,
Code: Code,
DBRef: DBRef,
Decimal128: Decimal128,
Double: Double,
EJSON: EJSON,
Int32: Int32,
Long: Long,
MaxKey: MaxKey,
MinKey: MinKey,
ObjectId: ObjectId,
Timestamp: Timestamp,
UUID: UUID,
calculateObjectSize: calculateObjectSize,
deserialize: deserialize,
deserializeStream: deserializeStream,
serialize: serialize,
serializeWithBufferAndIndex: serializeWithBufferAndIndex,
setInternalBufferSize: setInternalBufferSize
});
exports.BSON = bson;
exports.BSONError = BSONError;
exports.BSONRegExp = BSONRegExp;
exports.BSONRuntimeError = BSONRuntimeError;
exports.BSONSymbol = BSONSymbol;
exports.BSONType = BSONType;
exports.BSONValue = BSONValue;
exports.BSONVersionError = BSONVersionError;
exports.Binary = Binary;
exports.Code = Code;
exports.DBRef = DBRef;
exports.Decimal128 = Decimal128;
exports.Double = Double;
exports.EJSON = EJSON;
exports.Int32 = Int32;
exports.Long = Long;
exports.MaxKey = MaxKey;
exports.MinKey = MinKey;
exports.ObjectId = ObjectId;
exports.Timestamp = Timestamp;
exports.UUID = UUID;
exports.calculateObjectSize = calculateObjectSize;
exports.deserialize = deserialize;
exports.deserializeStream = deserializeStream;
exports.serialize = serialize;
exports.serializeWithBufferAndIndex = serializeWithBufferAndIndex;
exports.setInternalBufferSize = setInternalBufferSize;
//# sourceMappingURL=bson.cjs.map
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __nccwpck_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ var threw = true;
/******/ try {
/******/ __webpack_modules__[moduleId](module, module.exports, __nccwpck_require__);
/******/ threw = false;
/******/ } finally {
/******/ if(threw) delete __webpack_module_cache__[moduleId];
/******/ }
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat */
/******/
/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/";
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
(() => {
const HotPocket = __nccwpck_require__(875);
const bson = __nccwpck_require__(618);
const fs = __nccwpck_require__(147);
const path = __nccwpck_require__(17);
const UPLOADS_ROOT = path.resolve('uploads');
const SESSION_FILE = path.resolve('upload_sessions.json');
function sendOutput(user, output) {
return user.send(bson.serialize(output));
}
function normalizeFilename(filename) {
let normalized = String(filename || '').replace(/\\/g, '/');
normalized = normalized.replace(/^\/+/, '');
normalized = path.posix.normalize(normalized);
if (
!normalized ||
normalized === '.' ||
normalized.split('/').includes('..') ||
path.isAbsolute(normalized)
) {
throw new Error('Invalid filename.');
}
return normalized;
}
function safeUploadId(uploadId) {
const safe = String(uploadId || '').replace(/[^a-zA-Z0-9._-]/g, '_');
if (!safe) {
throw new Error('Missing uploadId.');
}
return safe;
}
function loadSessions() {
if (!fs.existsSync(SESSION_FILE)) {
return {};
}
try {
return JSON.parse(fs.readFileSync(SESSION_FILE, 'utf8'));
} catch {
return {};
}
}
function saveSessions(sessions) {
fs.writeFileSync(SESSION_FILE, JSON.stringify(sessions, null, 2));
}
function getTargetPath(filename) {
const targetPath = path.resolve(UPLOADS_ROOT, filename);
if (!targetPath.startsWith(UPLOADS_ROOT + path.sep)) {
throw new Error('Upload path escapes uploads folder.');
}
return targetPath;
}
function cleanupEmptyDirs(startDir, stopDir) {
let current = path.resolve(startDir);
const root = path.resolve(stopDir);
while (current.startsWith(root) && current !== root) {
if (!fs.existsSync(current)) {
current = path.dirname(current);
continue;
}
const entries = fs.readdirSync(current);
if (entries.length > 0) {
break;
}
fs.rmdirSync(current);
current = path.dirname(current);
}
}
async function deleteUpload(user, message, isReadOnly) {
const actionId = message.actionId || null;
if (isReadOnly) {
await sendOutput(user, {
type: 'error',
action: 'delete-upload',
actionId,
filename: message.filename,
error: 'Read-only mode does not allow deletes.'
});
return;
}
const filename = normalizeFilename(message.filename);
const targetPath = getTargetPath(filename);
if (!fs.existsSync(targetPath)) {
await sendOutput(user, {
type: 'error',
action: 'delete-upload',
actionId,
filename,
error: `File does not exist: uploads/${filename}`
});
return;
}
const stat = fs.statSync(targetPath);
if (stat.isDirectory()) {
await sendOutput(user, {
type: 'error',
action: 'delete-upload',
actionId,
filename,
error: 'Deleting directories is not supported. Delete files individually.'
});
return;
}
fs.rmSync(targetPath, { force: true });
cleanupEmptyDirs(path.dirname(targetPath), UPLOADS_ROOT);
await sendOutput(user, {
type: 'delete-success',
actionId,
filename,
message: `Deleted uploads/${filename}`
});
}
async function handleUpload(user, message, isReadOnly) {
if (isReadOnly) {
await sendOutput(user, {
type: 'error',
uploadId: message.uploadId,
chunkNo: message.chunkNo,
error: 'Read-only mode does not allow uploads.'
});
return;
}
const uploadId = safeUploadId(message.uploadId);
const filename = normalizeFilename(message.filename);
const chunkNo = Number.parseInt(message.chunkNo, 10);
const totalChunks = Number.parseInt(message.totalChunks, 10);
const chunkHex = typeof message.chunk === 'string' ? message.chunk : '';
if (!Number.isInteger(chunkNo) || chunkNo < 1) {
throw new Error('Invalid chunkNo.');
}
if (!Number.isInteger(totalChunks) || totalChunks < 1) {
throw new Error('Invalid totalChunks.');
}
if (chunkNo > totalChunks) {
throw new Error('chunkNo cannot be greater than totalChunks.');
}
if (!/^[0-9a-fA-F]*$/.test(chunkHex)) {
throw new Error('Chunk must be hex encoded.');
}
const targetPath = getTargetPath(filename);
const sessions = loadSessions();
fs.mkdirSync(UPLOADS_ROOT, { recursive: true });
fs.mkdirSync(path.dirname(targetPath), { recursive: true });
if (chunkNo === 1) {
if (fs.existsSync(targetPath)) {
await sendOutput(user, {
type: 'error',
uploadId,
filename,
chunkNo,
totalChunks,
error: `File already exists: uploads/${filename}`
});
return;
}
sessions[uploadId] = {
filename,
totalChunks,
nextChunk: 1
};
}
const session = sessions[uploadId];
if (!session) {
throw new Error(`No active upload session for '${filename}'.`);
}
if (session.filename !== filename) {
throw new Error('Upload session filename mismatch.');
}
if (session.totalChunks !== totalChunks) {
throw new Error('Upload session totalChunks mismatch.');
}
if (session.nextChunk !== chunkNo) {
throw new Error(`Expected chunk ${session.nextChunk}, got chunk ${chunkNo}.`);
}
const chunkData = Buffer.from(chunkHex, 'hex');
// Direct state write, same style as your old system.
fs.appendFileSync(targetPath, chunkData);
if (chunkNo === totalChunks) {
delete sessions[uploadId];
saveSessions(sessions);
await sendOutput(user, {
type: 'success',
uploadId,
filename,
chunkNo,
totalChunks,
path: `uploads/${filename}`,
message: `Uploaded '${filename}' to uploads/.`
});
return;
}
sessions[uploadId].nextChunk = chunkNo + 1;
saveSessions(sessions);
await sendOutput(user, {
type: 'ack',
uploadId,
filename,
chunkNo,
totalChunks,
message: `Chunk ${chunkNo}/${totalChunks} written to uploads/${filename}.`
});
}
async function listUploads(user, message = {}) {
function walk(dir, prefix = '') {
if (!fs.existsSync(dir)) {
return [];
}
const out = [];
const entries = fs.readdirSync(dir).sort((a, b) => a.localeCompare(b));
for (const entry of entries) {
const full = path.join(dir, entry);
const rel = prefix ? `${prefix}/${entry}` : entry;
const stat = fs.statSync(full);
if (stat.isDirectory()) {
out.push(...walk(full, rel));
} else {
out.push({
filename: rel,
size: stat.size
});
}
}
return out;
}
await sendOutput(user, {
type: 'uploads',
actionId: message.actionId || null,
data: walk(UPLOADS_ROOT)
});
}
const READ_DOWNLOAD_CHUNK_SIZE = 128 * 1024;
async function getUploadInfo(user, message = {}) {
const filename = normalizeFilename(message.filename);
const targetPath = getTargetPath(filename);
if (!fs.existsSync(targetPath)) {
await sendOutput(user, {
type: 'error',
action: 'get-upload-info',
filename,
error: `File does not exist: uploads/${filename}`
});
return;
}
const stat = fs.statSync(targetPath);
if (stat.isDirectory()) {
await sendOutput(user, {
type: 'error',
action: 'get-upload-info',
filename,
error: 'Downloading directories is not supported. Download files individually.'
});
return;
}
await sendOutput(user, {
type: 'download-info',
filename,
size: stat.size,
chunkSize: READ_DOWNLOAD_CHUNK_SIZE,
totalChunks: Math.max(1, Math.ceil(stat.size / READ_DOWNLOAD_CHUNK_SIZE))
});
}
async function getUploadChunk(user, message = {}) {
const filename = normalizeFilename(message.filename);
const chunkNo = Number.parseInt(message.chunkNo, 10);
const targetPath = getTargetPath(filename);
if (!Number.isInteger(chunkNo) || chunkNo < 1) {
throw new Error('Invalid download chunkNo.');
}
if (!fs.existsSync(targetPath)) {
await sendOutput(user, {
type: 'error',
action: 'get-upload-chunk',
filename,
chunkNo,
error: `File does not exist: uploads/${filename}`
});
return;
}
const stat = fs.statSync(targetPath);
if (stat.isDirectory()) {
await sendOutput(user, {
type: 'error',
action: 'get-upload-chunk',
filename,
chunkNo,
error: 'Downloading directories is not supported. Download files individually.'
});
return;
}
const totalChunks = Math.max(1, Math.ceil(stat.size / READ_DOWNLOAD_CHUNK_SIZE));
if (chunkNo > totalChunks) {
throw new Error(`Download chunkNo cannot be greater than totalChunks (${totalChunks}).`);
}
const offset = (chunkNo - 1) * READ_DOWNLOAD_CHUNK_SIZE;
const remaining = Math.max(0, stat.size - offset);
const length = Math.min(READ_DOWNLOAD_CHUNK_SIZE, remaining);
const buffer = Buffer.alloc(length);
if (length > 0) {
const fd = fs.openSync(targetPath, 'r');
try {
fs.readSync(fd, buffer, 0, length, offset);
} finally {
fs.closeSync(fd);
}
}
// Important: send the file bytes as BSON binary, not as a hex string.
// Hex doubles the payload size and can exceed HotPocket/client response limits.
await sendOutput(user, {
type: 'download-chunk',
action: 'get-upload-chunk',
filename,
chunkNo,
totalChunks,
size: stat.size,
chunk: buffer
});
}
async function rejectOldDownloadMessage(user, message = {}) {
await sendOutput(user, {
type: 'error',
action: 'download-upload',
filename: message.filename,
error: "Your browser is still using the old download frontend. Hard-refresh the page or replace the HTML with the read-request version."
});
}
async function contract(ctx) {
for (const user of ctx.users.list()) {
for (const input of user.inputs) {
let message;
try {
const buf = await ctx.users.read(input);
message = bson.deserialize(buf);
} catch (err) {
await sendOutput(user, {
type: 'error',
error: `Failed to decode BSON input: ${err.message}`
});
continue;
}
try {
if (message.type === 'upload') {
await handleUpload(user, message, ctx.readonly);
} else if (message.type === 'list-uploads') {
await listUploads(user, message);
} else if (message.type === 'delete-upload') {
await deleteUpload(user, message, ctx.readonly);
} else if (message.type === 'get-upload-info') {
await getUploadInfo(user, message);
} else if (message.type === 'get-upload-chunk') {
await getUploadChunk(user, message);
} else if (message.type === 'download-upload') {
await rejectOldDownloadMessage(user, message);
} else if (message.type === 'ping') {
await sendOutput(user, {
type: 'pong',
message: 'Contract is alive.'
});
} else {
await sendOutput(user, {
type: 'error',
error: `Unknown message type: ${message.type}`
});
}
} catch (err) {
await sendOutput(user, {
type: 'error',
actionId: message?.actionId || null,
uploadId: message?.uploadId,
filename: message?.filename,
chunkNo: message?.chunkNo,
totalChunks: message?.totalChunks,
action: message?.type,
error: err.message
});
}
}
}
}
const hpc = new HotPocket.Contract();
hpc.init(contract);
})();
module.exports = __webpack_exports__;
/******/ })()
;Code: Select all
{
"deployBinPath": "/usr/bin/node",
"deployBinArgs": "index.js",
"roundtime": 4000,
"unl": [],
"knownPeers": []
}Code: Select all
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 875:
/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 782:
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require2_) => {
"use strict";
__nccwpck_require2_.r(__webpack_exports__);
/* harmony export */ __nccwpck_require2_.d(__webpack_exports__, {
/* harmony export */ "controlMessages": () => (/* binding */ controlMessages),
/* harmony export */ "clientProtocols": () => (/* binding */ clientProtocols),
/* harmony export */ "constants": () => (/* binding */ constants),
/* harmony export */ "writeAsync": () => (/* binding */ writeAsync),
/* harmony export */ "writevAsync": () => (/* binding */ writevAsync),
/* harmony export */ "readAsync": () => (/* binding */ readAsync),
/* harmony export */ "invokeCallback": () => (/* binding */ invokeCallback),
/* harmony export */ "errHandler": () => (/* binding */ errHandler)
/* harmony export */ });
const fs = __nccwpck_require2_(147);
const controlMessages = {
peerChangeset: "peer_changeset"
}
Object.freeze(controlMessages);
const clientProtocols = {
json: "json",
bson: "bson"
}
Object.freeze(clientProtocols);
const constants = {
MAX_SEQ_PACKET_SIZE: 128 * 1024,
PATCH_CONFIG_PATH: "../patch.cfg",
POST_EXEC_SCRIPT_NAME: "post_exec.sh"
}
Object.freeze(constants);
function writeAsync(fd, buf) {
return new Promise(resolve => fs.write(fd, buf, resolve));
}
function writevAsync(fd, bufList) {
return new Promise(resolve => fs.writev(fd, bufList, resolve));
}
function readAsync(fd, buf, offset, size) {
return new Promise(resolve => fs.read(fd, buf, 0, size, offset, resolve));
}
async function invokeCallback(callback, ...args) {
if (!callback)
return;
if (callback.constructor.name === 'AsyncFunction') {
await callback(...args).catch(errHandler);
}
else {
callback(...args);
}
}
function errHandler(err) {
console.log(err);
}
/***/ }),
/***/ 244:
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require2_) => {
"use strict";
// ESM COMPAT FLAG
__nccwpck_require2_.r(__webpack_exports__);
// EXPORTS
__nccwpck_require2_.d(__webpack_exports__, {
"HotPocketContract": () => (/* binding */ HotPocketContract)
});
// EXTERNAL MODULE: ./src/common.js
var common = __nccwpck_require2_(782);
;// CONCATENATED MODULE: ./src/patch-config.js
const fs = __nccwpck_require2_(147);
// Handles patch config manipulation.
class PatchConfig {
// Loads the config value if there's a patch config file. Otherwise throw error.
getConfig() {
if (!fs.existsSync(common.constants.PATCH_CONFIG_PATH))
throw "Patch config file does not exist.";
return new Promise((resolve, reject) => {
fs.readFile(common.constants.PATCH_CONFIG_PATH, 'utf8', function (err, data) {
if (err) reject(err);
else resolve(JSON.parse(data));
});
});
}
updateConfig(config) {
this.validateConfig(config);
return new Promise((resolve, reject) => {
// Format json to match with the patch.cfg json format created by HP at the startup.
fs.writeFile(common.constants.PATCH_CONFIG_PATH, JSON.stringify(config, null, 4), (err) => {
if (err) reject(err);
else resolve();
});
});
}
validateConfig(config) {
// Validate all config fields.
if (!config.version)
throw "Contract version is not specified.";
if (!config.unl || !config.unl.length)
throw "UNL list cannot be empty.";
for (let publicKey of config.unl) {
// Public keys are validated against length, ed prefix and hex characters.
if (!publicKey.length)
throw "UNL public key not specified.";
else if (!(/^(e|E)(d|D)[0-9a-fA-F]{64}$/g.test(publicKey)))
throw "Invalid UNL public key specified.";
}
if (!config.bin_path || !config.bin_path.length)
throw "Binary path cannot be empty.";
if (config.consensus.mode != "public" && config.consensus.mode != "private")
throw "Invalid consensus mode configured in patch file. Valid values: public|private";
if (config.consensus.roundtime < 1 && config.consensus.roundtime > 3600000)
throw "Round time must be between 1 and 3600000ms inclusive.";
if (config.consensus.stage_slice < 1 || config.consensus.stage_slice > 33)
throw "Stage slice must be between 1 and 33 percent inclusive.";
if (config.consensus.threshold < 1 || config.consensus.threshold > 100)
throw "Consensus threshold must be between 1 and 100 percent inclusive.";
if (config.npl.mode != "public" && config.npl.mode != "private")
throw "Invalid npl mode configured in patch file. Valid values: public|private";
if (config.round_limits.user_input_bytes < 0 || config.round_limits.user_output_bytes < 0 || config.round_limits.npl_output_bytes < 0 ||
config.round_limits.proc_cpu_seconds < 0 || config.round_limits.proc_mem_bytes < 0 || config.round_limits.proc_ofd_count < 0)
throw "Invalid round limits.";
if (config.max_input_ledger_offset < 0)
throw "Invalid max input ledger offset";
}
}
;// CONCATENATED MODULE: ./src/contract-context.js
// HotPocket contract context which is passed into every smart contract invocation.
class ContractContext {
#patchConfig = null;
#controlChannel = null;
constructor(hpargs, users, unl, controlChannel) {
this.#patchConfig = new PatchConfig();
this.#controlChannel = controlChannel;
this.contractId = hpargs.contract_id;
this.publicKey = hpargs.public_key;
this.privateKey = hpargs.private_key;
this.readonly = hpargs.readonly;
this.timestamp = hpargs.timestamp;
this.users = users;
this.unl = unl; // Not available in readonly mode.
this.lclSeqNo = hpargs.lcl_seq_no; // Not available in readonly mode.
this.lclHash = hpargs.lcl_hash; // Not available in readonly mode.
}
// Returns the config values in patch config.
getConfig() {
return this.#patchConfig.getConfig();
}
// Updates the config with given config object and save the patch config.
updateConfig(config) {
return this.#patchConfig.updateConfig(config);
}
// Updates the known-peers this node must attempt connections to.
// toAdd: Array of strings containing peers to be added. Each string must be in the format of "<ip>:<port>".
updatePeers(toAdd, toRemove) {
return this.#controlChannel.send({
type: common.controlMessages.peerChangeset,
add: toAdd || [],
remove: toRemove || []
});
}
}
;// CONCATENATED MODULE: ./src/control.js
const control_fs = __nccwpck_require2_(147);
class ControlChannel {
#fd = null;
#readStream = null;
constructor(fd) {
this.#fd = fd;
}
consume(onMessage) {
if (this.#readStream)
throw "Control channel already consumed.";
this.#readStream = control_fs.createReadStream(null, { fd: this.#fd, highWaterMark: common.constants.MAX_SEQ_PACKET_SIZE });
this.#readStream.on("data", onMessage);
this.#readStream.on("error", (err) => { });
}
send(obj) {
const buf = Buffer.from(JSON.stringify(obj));
if (buf.length > common.constants.MAX_SEQ_PACKET_SIZE)
throw ("Control message exceeds max size " + common.constants.MAX_SEQ_PACKET_SIZE);
return (0,common.writeAsync)(this.#fd, buf);
}
close() {
this.#readStream && this.#readStream.close();
}
}
;// CONCATENATED MODULE: ./src/npl.js
const npl_fs = __nccwpck_require2_(147);
// Represents the node-party-line that can be used to communicate with unl nodes.
class NplChannel {
#fd = null;
#readStream = null;
constructor(fd) {
this.#fd = fd;
}
consume(onMessage) {
if (this.#readStream)
throw "NPL channel already consumed.";
this.#readStream = npl_fs.createReadStream(null, { fd: this.#fd, highWaterMark: common.constants.MAX_SEQ_PACKET_SIZE });
// When hotpocket is sending the npl messages, first it sends the public key of the particular node
// and then the message, First data buffer is taken as public key and the second one as message,
// then npl message object is constructed and the event is emmited.
let publicKey = null;
this.#readStream.on("data", (data) => {
if (!publicKey) {
publicKey = data.toString();
}
else {
onMessage(publicKey, data);
publicKey = null;
}
});
this.#readStream.on("error", (err) => { });
}
send(msg) {
const buf = Buffer.from(msg);
if (buf.length > common.constants.MAX_SEQ_PACKET_SIZE)
throw ("NPL message exceeds max size " + common.constants.MAX_SEQ_PACKET_SIZE);
return (0,common.writeAsync)(this.#fd, buf);
}
close() {
this.#readStream && this.#readStream.close();
}
}
;// CONCATENATED MODULE: ./src/unl.js
class UnlCollection {
#readonly = null;
#pendingTasks = null;
#channel = null;
constructor(readonly, unl, channel, pendingTasks) {
this.nodes = {};
this.#readonly = readonly;
this.#pendingTasks = pendingTasks;
if (!readonly) {
for (const [publicKey, stat] of Object.entries(unl)) {
this.nodes[publicKey] = new UnlNode(publicKey, stat.active_on);
}
this.#channel = channel;
}
}
// Returns the unl node for the specified public key. Returns null if not found.
find(publicKey) {
return this.nodes[publicKey];
}
// Returns all the unl nodes.
list() {
return Object.values(this.nodes);
}
count() {
return Object.keys(this.nodes).length;
}
// Registers for NPL messages.
onMessage(callback) {
if (this.#readonly)
throw "NPL messages not available in readonly mode.";
this.#channel.consume((publicKey, msg) => {
this.#pendingTasks.push((0,common.invokeCallback)(callback, this.nodes[publicKey], msg));
});
}
// Broadcasts a message to all unl nodes (including self if self is part of unl).
async send(msg) {
if (this.#readonly)
throw "NPL messages not available in readonly mode.";
await this.#channel.send(msg);
}
}
// Represents a node that's part of unl.
class UnlNode {
constructor(publicKey, activeOn) {
this.publicKey = publicKey;
this.activeOn = activeOn;
}
}
;// CONCATENATED MODULE: ./src/user.js
class UsersCollection {
#users = {};
#infd = null;
constructor(userInputsFd, usersObj, clientProtocol) {
this.#infd = userInputsFd;
Object.entries(usersObj).forEach(([publicKey, arr]) => {
const outfd = arr[0]; // First array element is the output fd.
arr.splice(0, 1); // Remove first element (output fd). The rest are pairs of msg offset/length tuples.
const channel = new UserChannel(outfd, clientProtocol);
this.#users[publicKey] = new User(publicKey, channel, arr);
});
}
// Returns the User for the specified public key. Returns null if not found.
find(publicKey) {
return this.#users[publicKey]
}
// Returns all the currently connected users.
list() {
return Object.values(this.#users);
}
count() {
return Object.keys(this.#users).length;
}
async read(input) {
const [offset, size] = input;
const buf = Buffer.alloc(size);
await (0,common.readAsync)(this.#infd, buf, offset, size);
return buf;
}
}
class User {
#channel = null;
constructor(publicKey, channel, inputs) {
this.publicKey = publicKey;
this.inputs = inputs;
this.#channel = channel;
}
async send(msg) {
await this.#channel.send(msg);
}
}
class UserChannel {
#outfd = null;
#clientProtocol = null;
constructor(outfd, clientProtocol) {
this.#outfd = outfd;
this.#clientProtocol = clientProtocol;
}
send(msg) {
const messageBuf = this.serialize(msg);
let headerBuf = Buffer.alloc(4);
// Writing message length in big endian format.
headerBuf.writeUInt32BE(messageBuf.byteLength)
return (0,common.writevAsync)(this.#outfd, [headerBuf, messageBuf]);
}
serialize(msg) {
if (!msg)
throw "Cannot serialize null content.";
if (Buffer.isBuffer(msg))
return msg;
else if (this.#clientProtocol == common.clientProtocols.bson)
return Buffer.from(msg);
else // json
return Buffer.from(JSON.stringify(msg));
}
}
;// CONCATENATED MODULE: ./src/hotpocket-contract.js
const hotpocket_contract_fs = __nccwpck_require2_(147);
const tty = __nccwpck_require2_(224);
class HotPocketContract {
#controlChannel = null;
#clientProtocol = null;
#forceTerminate = false;
init(contractFunc, clientProtocol = common.clientProtocols.json, forceTerminate = false) {
return new Promise(resolve => {
if (this.#controlChannel) { // Already initialized.
resolve(false);
return;
}
this.#clientProtocol = clientProtocol;
// Check whether we are running on a console and provide error.
if (tty.isatty(process.stdin.fd)) {
console.error("Error: HotPocket smart contracts must be executed via HotPocket.");
resolve(false);
return;
}
this.#forceTerminate = forceTerminate;
// Parse HotPocket args.
hotpocket_contract_fs.readFile(process.stdin.fd, 'utf8', (err, argsJson) => {
const hpargs = JSON.parse(argsJson);
this.#controlChannel = new ControlChannel(hpargs.control_fd);
this.#executeContract(hpargs, contractFunc);
resolve(true);
});
});
}
#executeContract(hpargs, contractFunc) {
// Keeps track of all the tasks (promises) that must be awaited before the termination.
const pendingTasks = [];
const nplChannel = new NplChannel(hpargs.npl_fd);
const users = new UsersCollection(hpargs.user_in_fd, hpargs.users, this.#clientProtocol);
const unl = new UnlCollection(hpargs.readonly, hpargs.unl, nplChannel, pendingTasks);
const executionContext = new ContractContext(hpargs, users, unl, this.#controlChannel);
(0,common.invokeCallback)(contractFunc, executionContext).catch(common.errHandler).finally(() => {
// Wait for any pending tasks added during execution.
Promise.all(pendingTasks).catch(common.errHandler).finally(() => {
nplChannel.close();
this.#terminate();
});
});
}
#terminate() {
this.#controlChannel.close();
if (this.#forceTerminate)
process.kill(process.pid, 'SIGINT');
}
}
/***/ }),
/***/ 53:
/***/ ((module, __unused_webpack_exports, __nccwpck_require2_) => {
const { clientProtocols, constants } = __nccwpck_require2_(782);
const { HotPocketContract } = __nccwpck_require2_(244);
module.exports = {
Contract: HotPocketContract,
clientProtocols,
POST_EXEC_SCRIPT_NAME: constants.POST_EXEC_SCRIPT_NAME,
}
/***/ }),
/***/ 147:
/***/ ((module) => {
"use strict";
module.exports = __nccwpck_require__(147);
/***/ }),
/***/ 224:
/***/ ((module) => {
"use strict";
module.exports = __nccwpck_require__(224);
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __nccwpck_require2_(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ var threw = true;
/******/ try {
/******/ __webpack_modules__[moduleId](module, module.exports, __nccwpck_require2_);
/******/ threw = false;
/******/ } finally {
/******/ if(threw) delete __webpack_module_cache__[moduleId];
/******/ }
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __nccwpck_require2_.d = (exports, definition) => {
/******/ for(var key in definition) {
/******/ if(__nccwpck_require2_.o(definition, key) && !__nccwpck_require2_.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ __nccwpck_require2_.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ (() => {
/******/ // define __esModule on exports
/******/ __nccwpck_require2_.r = (exports) => {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ })();
/******/
/******/ /* webpack/runtime/compat */
/******/
/******/ if (typeof __nccwpck_require2_ !== 'undefined') __nccwpck_require2_.ab = __dirname + "/";
/******/
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module is referenced by other modules so it can't be inlined
/******/ var __webpack_exports__ = __nccwpck_require2_(53);
/******/ module.exports = __webpack_exports__;
/******/
/******/ })()
;
/***/ }),
/***/ 113:
/***/ ((module) => {
"use strict";
module.exports = require("crypto");
/***/ }),
/***/ 147:
/***/ ((module) => {
"use strict";
module.exports = require("fs");
/***/ }),
/***/ 17:
/***/ ((module) => {
"use strict";
module.exports = require("path");
/***/ }),
/***/ 224:
/***/ ((module) => {
"use strict";
module.exports = require("tty");
/***/ }),
/***/ 618:
/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
"use strict";
function isAnyArrayBuffer(value) {
return ['[object ArrayBuffer]', '[object SharedArrayBuffer]'].includes(Object.prototype.toString.call(value));
}
function isUint8Array(value) {
return Object.prototype.toString.call(value) === '[object Uint8Array]';
}
function isRegExp(d) {
return Object.prototype.toString.call(d) === '[object RegExp]';
}
function isMap(d) {
return Object.prototype.toString.call(d) === '[object Map]';
}
function isDate(d) {
return Object.prototype.toString.call(d) === '[object Date]';
}
function defaultInspect(x, _options) {
return JSON.stringify(x, (k, v) => {
if (typeof v === 'bigint') {
return { $numberLong: `${v}` };
}
else if (isMap(v)) {
return Object.fromEntries(v);
}
return v;
});
}
function getStylizeFunction(options) {
const stylizeExists = options != null &&
typeof options === 'object' &&
'stylize' in options &&
typeof options.stylize === 'function';
if (stylizeExists) {
return options.stylize;
}
}
const BSON_MAJOR_VERSION = 6;
const BSON_INT32_MAX = 0x7fffffff;
const BSON_INT32_MIN = -0x80000000;
const BSON_INT64_MAX = Math.pow(2, 63) - 1;
const BSON_INT64_MIN = -Math.pow(2, 63);
const JS_INT_MAX = Math.pow(2, 53);
const JS_INT_MIN = -Math.pow(2, 53);
const BSON_DATA_NUMBER = 1;
const BSON_DATA_STRING = 2;
const BSON_DATA_OBJECT = 3;
const BSON_DATA_ARRAY = 4;
const BSON_DATA_BINARY = 5;
const BSON_DATA_UNDEFINED = 6;
const BSON_DATA_OID = 7;
const BSON_DATA_BOOLEAN = 8;
const BSON_DATA_DATE = 9;
const BSON_DATA_NULL = 10;
const BSON_DATA_REGEXP = 11;
const BSON_DATA_DBPOINTER = 12;
const BSON_DATA_CODE = 13;
const BSON_DATA_SYMBOL = 14;
const BSON_DATA_CODE_W_SCOPE = 15;
const BSON_DATA_INT = 16;
const BSON_DATA_TIMESTAMP = 17;
const BSON_DATA_LONG = 18;
const BSON_DATA_DECIMAL128 = 19;
const BSON_DATA_MIN_KEY = 0xff;
const BSON_DATA_MAX_KEY = 0x7f;
const BSON_BINARY_SUBTYPE_DEFAULT = 0;
const BSON_BINARY_SUBTYPE_UUID_NEW = 4;
const BSONType = Object.freeze({
double: 1,
string: 2,
object: 3,
array: 4,
binData: 5,
undefined: 6,
objectId: 7,
bool: 8,
date: 9,
null: 10,
regex: 11,
dbPointer: 12,
javascript: 13,
symbol: 14,
javascriptWithScope: 15,
int: 16,
timestamp: 17,
long: 18,
decimal: 19,
minKey: -1,
maxKey: 127
});
class BSONError extends Error {
get bsonError() {
return true;
}
get name() {
return 'BSONError';
}
constructor(message, options) {
super(message, options);
}
static isBSONError(value) {
return (value != null &&
typeof value === 'object' &&
'bsonError' in value &&
value.bsonError === true &&
'name' in value &&
'message' in value &&
'stack' in value);
}
}
class BSONVersionError extends BSONError {
get name() {
return 'BSONVersionError';
}
constructor() {
super(`Unsupported BSON version, bson types must be from bson ${BSON_MAJOR_VERSION}.x.x`);
}
}
class BSONRuntimeError extends BSONError {
get name() {
return 'BSONRuntimeError';
}
constructor(message) {
super(message);
}
}
const FIRST_BIT = 0x80;
const FIRST_TWO_BITS = 0xc0;
const FIRST_THREE_BITS = 0xe0;
const FIRST_FOUR_BITS = 0xf0;
const FIRST_FIVE_BITS = 0xf8;
const TWO_BIT_CHAR = 0xc0;
const THREE_BIT_CHAR = 0xe0;
const FOUR_BIT_CHAR = 0xf0;
const CONTINUING_CHAR = 0x80;
function validateUtf8(bytes, start, end) {
let continuation = 0;
for (let i = start; i < end; i += 1) {
const byte = bytes[i];
if (continuation) {
if ((byte & FIRST_TWO_BITS) !== CONTINUING_CHAR) {
return false;
}
continuation -= 1;
}
else if (byte & FIRST_BIT) {
if ((byte & FIRST_THREE_BITS) === TWO_BIT_CHAR) {
continuation = 1;
}
else if ((byte & FIRST_FOUR_BITS) === THREE_BIT_CHAR) {
continuation = 2;
}
else if ((byte & FIRST_FIVE_BITS) === FOUR_BIT_CHAR) {
continuation = 3;
}
else {
return false;
}
}
}
return !continuation;
}
function tryReadBasicLatin(uint8array, start, end) {
if (uint8array.length === 0) {
return '';
}
const stringByteLength = end - start;
if (stringByteLength === 0) {
return '';
}
if (stringByteLength > 20) {
return null;
}
if (stringByteLength === 1 && uint8array[start] < 128) {
return String.fromCharCode(uint8array[start]);
}
if (stringByteLength === 2 && uint8array[start] < 128 && uint8array[start + 1] < 128) {
return String.fromCharCode(uint8array[start]) + String.fromCharCode(uint8array[start + 1]);
}
if (stringByteLength === 3 &&
uint8array[start] < 128 &&
uint8array[start + 1] < 128 &&
uint8array[start + 2] < 128) {
return (String.fromCharCode(uint8array[start]) +
String.fromCharCode(uint8array[start + 1]) +
String.fromCharCode(uint8array[start + 2]));
}
const latinBytes = [];
for (let i = start; i < end; i++) {
const byte = uint8array[i];
if (byte > 127) {
return null;
}
latinBytes.push(byte);
}
return String.fromCharCode(...latinBytes);
}
function tryWriteBasicLatin(destination, source, offset) {
if (source.length === 0)
return 0;
if (source.length > 25)
return null;
if (destination.length - offset < source.length)
return null;
for (let charOffset = 0, destinationOffset = offset; charOffset < source.length; charOffset++, destinationOffset++) {
const char = source.charCodeAt(charOffset);
if (char > 127)
return null;
destination[destinationOffset] = char;
}
return source.length;
}
function nodejsMathRandomBytes(byteLength) {
return nodeJsByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
}
const nodejsRandomBytes = (() => {
try {
return (__nccwpck_require__(113).randomBytes);
}
catch {
return nodejsMathRandomBytes;
}
})();
const nodeJsByteUtils = {
toLocalBufferType(potentialBuffer) {
if (Buffer.isBuffer(potentialBuffer)) {
return potentialBuffer;
}
if (ArrayBuffer.isView(potentialBuffer)) {
return Buffer.from(potentialBuffer.buffer, potentialBuffer.byteOffset, potentialBuffer.byteLength);
}
const stringTag = potentialBuffer?.[Symbol.toStringTag] ?? Object.prototype.toString.call(potentialBuffer);
if (stringTag === 'ArrayBuffer' ||
stringTag === 'SharedArrayBuffer' ||
stringTag === '[object ArrayBuffer]' ||
stringTag === '[object SharedArrayBuffer]') {
return Buffer.from(potentialBuffer);
}
throw new BSONError(`Cannot create Buffer from ${String(potentialBuffer)}`);
},
allocate(size) {
return Buffer.alloc(size);
},
allocateUnsafe(size) {
return Buffer.allocUnsafe(size);
},
equals(a, b) {
return nodeJsByteUtils.toLocalBufferType(a).equals(b);
},
fromNumberArray(array) {
return Buffer.from(array);
},
fromBase64(base64) {
return Buffer.from(base64, 'base64');
},
toBase64(buffer) {
return nodeJsByteUtils.toLocalBufferType(buffer).toString('base64');
},
fromISO88591(codePoints) {
return Buffer.from(codePoints, 'binary');
},
toISO88591(buffer) {
return nodeJsByteUtils.toLocalBufferType(buffer).toString('binary');
},
fromHex(hex) {
return Buffer.from(hex, 'hex');
},
toHex(buffer) {
return nodeJsByteUtils.toLocalBufferType(buffer).toString('hex');
},
toUTF8(buffer, start, end, fatal) {
const basicLatin = end - start <= 20 ? tryReadBasicLatin(buffer, start, end) : null;
if (basicLatin != null) {
return basicLatin;
}
const string = nodeJsByteUtils.toLocalBufferType(buffer).toString('utf8', start, end);
if (fatal) {
for (let i = 0; i < string.length; i++) {
if (string.charCodeAt(i) === 0xfffd) {
if (!validateUtf8(buffer, start, end)) {
throw new BSONError('Invalid UTF-8 string in BSON document');
}
break;
}
}
}
return string;
},
utf8ByteLength(input) {
return Buffer.byteLength(input, 'utf8');
},
encodeUTF8Into(buffer, source, byteOffset) {
const latinBytesWritten = tryWriteBasicLatin(buffer, source, byteOffset);
if (latinBytesWritten != null) {
return latinBytesWritten;
}
return nodeJsByteUtils.toLocalBufferType(buffer).write(source, byteOffset, undefined, 'utf8');
},
randomBytes: nodejsRandomBytes
};
function isReactNative() {
const { navigator } = globalThis;
return typeof navigator === 'object' && navigator.product === 'ReactNative';
}
function webMathRandomBytes(byteLength) {
if (byteLength < 0) {
throw new RangeError(`The argument 'byteLength' is invalid. Received ${byteLength}`);
}
return webByteUtils.fromNumberArray(Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256)));
}
const webRandomBytes = (() => {
const { crypto } = globalThis;
if (crypto != null && typeof crypto.getRandomValues === 'function') {
return (byteLength) => {
return crypto.getRandomValues(webByteUtils.allocate(byteLength));
};
}
else {
if (isReactNative()) {
const { console } = globalThis;
console?.warn?.('BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.');
}
return webMathRandomBytes;
}
})();
const HEX_DIGIT = /(\d|[a-f])/i;
const webByteUtils = {
toLocalBufferType(potentialUint8array) {
const stringTag = potentialUint8array?.[Symbol.toStringTag] ??
Object.prototype.toString.call(potentialUint8array);
if (stringTag === 'Uint8Array') {
return potentialUint8array;
}
if (ArrayBuffer.isView(potentialUint8array)) {
return new Uint8Array(potentialUint8array.buffer.slice(potentialUint8array.byteOffset, potentialUint8array.byteOffset + potentialUint8array.byteLength));
}
if (stringTag === 'ArrayBuffer' ||
stringTag === 'SharedArrayBuffer' ||
stringTag === '[object ArrayBuffer]' ||
stringTag === '[object SharedArrayBuffer]') {
return new Uint8Array(potentialUint8array);
}
throw new BSONError(`Cannot make a Uint8Array from ${String(potentialUint8array)}`);
},
allocate(size) {
if (typeof size !== 'number') {
throw new TypeError(`The "size" argument must be of type number. Received ${String(size)}`);
}
return new Uint8Array(size);
},
allocateUnsafe(size) {
return webByteUtils.allocate(size);
},
equals(a, b) {
if (a.byteLength !== b.byteLength) {
return false;
}
for (let i = 0; i < a.byteLength; i++) {
if (a[i] !== b[i]) {
return false;
}
}
return true;
},
fromNumberArray(array) {
return Uint8Array.from(array);
},
fromBase64(base64) {
return Uint8Array.from(atob(base64), c => c.charCodeAt(0));
},
toBase64(uint8array) {
return btoa(webByteUtils.toISO88591(uint8array));
},
fromISO88591(codePoints) {
return Uint8Array.from(codePoints, c => c.charCodeAt(0) & 0xff);
},
toISO88591(uint8array) {
return Array.from(Uint16Array.from(uint8array), b => String.fromCharCode(b)).join('');
},
fromHex(hex) {
const evenLengthHex = hex.length % 2 === 0 ? hex : hex.slice(0, hex.length - 1);
const buffer = [];
for (let i = 0; i < evenLengthHex.length; i += 2) {
const firstDigit = evenLengthHex[i];
const secondDigit = evenLengthHex[i + 1];
if (!HEX_DIGIT.test(firstDigit)) {
break;
}
if (!HEX_DIGIT.test(secondDigit)) {
break;
}
const hexDigit = Number.parseInt(`${firstDigit}${secondDigit}`, 16);
buffer.push(hexDigit);
}
return Uint8Array.from(buffer);
},
toHex(uint8array) {
return Array.from(uint8array, byte => byte.toString(16).padStart(2, '0')).join('');
},
toUTF8(uint8array, start, end, fatal) {
const basicLatin = end - start <= 20 ? tryReadBasicLatin(uint8array, start, end) : null;
if (basicLatin != null) {
return basicLatin;
}
if (fatal) {
try {
return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
}
catch (cause) {
throw new BSONError('Invalid UTF-8 string in BSON document', { cause });
}
}
return new TextDecoder('utf8', { fatal }).decode(uint8array.slice(start, end));
},
utf8ByteLength(input) {
return new TextEncoder().encode(input).byteLength;
},
encodeUTF8Into(uint8array, source, byteOffset) {
const bytes = new TextEncoder().encode(source);
uint8array.set(bytes, byteOffset);
return bytes.byteLength;
},
randomBytes: webRandomBytes
};
const hasGlobalBuffer = typeof Buffer === 'function' && Buffer.prototype?._isBuffer !== true;
const ByteUtils = hasGlobalBuffer ? nodeJsByteUtils : webByteUtils;
class BSONValue {
get [Symbol.for('@@mdb.bson.version')]() {
return BSON_MAJOR_VERSION;
}
[Symbol.for('nodejs.util.inspect.custom')](depth, options, inspect) {
return this.inspect(depth, options, inspect);
}
}
class Binary extends BSONValue {
get _bsontype() {
return 'Binary';
}
constructor(buffer, subType) {
super();
if (!(buffer == null) &&
typeof buffer === 'string' &&
!ArrayBuffer.isView(buffer) &&
!isAnyArrayBuffer(buffer) &&
!Array.isArray(buffer)) {
throw new BSONError('Binary can only be constructed from Uint8Array or number[]');
}
this.sub_type = subType ?? Binary.BSON_BINARY_SUBTYPE_DEFAULT;
if (buffer == null) {
this.buffer = ByteUtils.allocate(Binary.BUFFER_SIZE);
this.position = 0;
}
else {
this.buffer = Array.isArray(buffer)
? ByteUtils.fromNumberArray(buffer)
: ByteUtils.toLocalBufferType(buffer);
this.position = this.buffer.byteLength;
}
}
put(byteValue) {
if (typeof byteValue === 'string' && byteValue.length !== 1) {
throw new BSONError('only accepts single character String');
}
else if (typeof byteValue !== 'number' && byteValue.length !== 1)
throw new BSONError('only accepts single character Uint8Array or Array');
let decodedByte;
if (typeof byteValue === 'string') {
decodedByte = byteValue.charCodeAt(0);
}
else if (typeof byteValue === 'number') {
decodedByte = byteValue;
}
else {
decodedByte = byteValue[0];
}
if (decodedByte < 0 || decodedByte > 255) {
throw new BSONError('only accepts number in a valid unsigned byte range 0-255');
}
if (this.buffer.byteLength > this.position) {
this.buffer[this.position++] = decodedByte;
}
else {
const newSpace = ByteUtils.allocate(Binary.BUFFER_SIZE + this.buffer.length);
newSpace.set(this.buffer, 0);
this.buffer = newSpace;
this.buffer[this.position++] = decodedByte;
}
}
write(sequence, offset) {
offset = typeof offset === 'number' ? offset : this.position;
if (this.buffer.byteLength < offset + sequence.length) {
const newSpace = ByteUtils.allocate(this.buffer.byteLength + sequence.length);
newSpace.set(this.buffer, 0);
this.buffer = newSpace;
}
if (ArrayBuffer.isView(sequence)) {
this.buffer.set(ByteUtils.toLocalBufferType(sequence), offset);
this.position =
offset + sequence.byteLength > this.position ? offset + sequence.length : this.position;
}
else if (typeof sequence === 'string') {
throw new BSONError('input cannot be string');
}
}
read(position, length) {
length = length && length > 0 ? length : this.position;
return this.buffer.slice(position, position + length);
}
value() {
return this.buffer.length === this.position
? this.buffer
: this.buffer.subarray(0, this.position);
}
length() {
return this.position;
}
toJSON() {
return ByteUtils.toBase64(this.buffer);
}
toString(encoding) {
if (encoding === 'hex')
return ByteUtils.toHex(this.buffer);
if (encoding === 'base64')
return ByteUtils.toBase64(this.buffer);
if (encoding === 'utf8' || encoding === 'utf-8')
return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
return ByteUtils.toUTF8(this.buffer, 0, this.buffer.byteLength, false);
}
toExtendedJSON(options) {
options = options || {};
const base64String = ByteUtils.toBase64(this.buffer);
const subType = Number(this.sub_type).toString(16);
if (options.legacy) {
return {
$binary: base64String,
$type: subType.length === 1 ? '0' + subType : subType
};
}
return {
$binary: {
base64: base64String,
subType: subType.length === 1 ? '0' + subType : subType
}
};
}
toUUID() {
if (this.sub_type === Binary.SUBTYPE_UUID) {
return new UUID(this.buffer.slice(0, this.position));
}
throw new BSONError(`Binary sub_type "${this.sub_type}" is not supported for converting to UUID. Only "${Binary.SUBTYPE_UUID}" is currently supported.`);
}
static createFromHexString(hex, subType) {
return new Binary(ByteUtils.fromHex(hex), subType);
}
static createFromBase64(base64, subType) {
return new Binary(ByteUtils.fromBase64(base64), subType);
}
static fromExtendedJSON(doc, options) {
options = options || {};
let data;
let type;
if ('$binary' in doc) {
if (options.legacy && typeof doc.$binary === 'string' && '$type' in doc) {
type = doc.$type ? parseInt(doc.$type, 16) : 0;
data = ByteUtils.fromBase64(doc.$binary);
}
else {
if (typeof doc.$binary !== 'string') {
type = doc.$binary.subType ? parseInt(doc.$binary.subType, 16) : 0;
data = ByteUtils.fromBase64(doc.$binary.base64);
}
}
}
else if ('$uuid' in doc) {
type = 4;
data = UUID.bytesFromString(doc.$uuid);
}
if (!data) {
throw new BSONError(`Unexpected Binary Extended JSON format ${JSON.stringify(doc)}`);
}
return type === BSON_BINARY_SUBTYPE_UUID_NEW ? new UUID(data) : new Binary(data, type);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
const base64 = ByteUtils.toBase64(this.buffer.subarray(0, this.position));
const base64Arg = inspect(base64, options);
const subTypeArg = inspect(this.sub_type, options);
return `Binary.createFromBase64(${base64Arg}, ${subTypeArg})`;
}
}
Binary.BSON_BINARY_SUBTYPE_DEFAULT = 0;
Binary.BUFFER_SIZE = 256;
Binary.SUBTYPE_DEFAULT = 0;
Binary.SUBTYPE_FUNCTION = 1;
Binary.SUBTYPE_BYTE_ARRAY = 2;
Binary.SUBTYPE_UUID_OLD = 3;
Binary.SUBTYPE_UUID = 4;
Binary.SUBTYPE_MD5 = 5;
Binary.SUBTYPE_ENCRYPTED = 6;
Binary.SUBTYPE_COLUMN = 7;
Binary.SUBTYPE_USER_DEFINED = 128;
const UUID_BYTE_LENGTH = 16;
const UUID_WITHOUT_DASHES = /^[0-9A-F]{32}$/i;
const UUID_WITH_DASHES = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;
class UUID extends Binary {
constructor(input) {
let bytes;
if (input == null) {
bytes = UUID.generate();
}
else if (input instanceof UUID) {
bytes = ByteUtils.toLocalBufferType(new Uint8Array(input.buffer));
}
else if (ArrayBuffer.isView(input) && input.byteLength === UUID_BYTE_LENGTH) {
bytes = ByteUtils.toLocalBufferType(input);
}
else if (typeof input === 'string') {
bytes = UUID.bytesFromString(input);
}
else {
throw new BSONError('Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).');
}
super(bytes, BSON_BINARY_SUBTYPE_UUID_NEW);
}
get id() {
return this.buffer;
}
set id(value) {
this.buffer = value;
}
toHexString(includeDashes = true) {
if (includeDashes) {
return [
ByteUtils.toHex(this.buffer.subarray(0, 4)),
ByteUtils.toHex(this.buffer.subarray(4, 6)),
ByteUtils.toHex(this.buffer.subarray(6, 8)),
ByteUtils.toHex(this.buffer.subarray(8, 10)),
ByteUtils.toHex(this.buffer.subarray(10, 16))
].join('-');
}
return ByteUtils.toHex(this.buffer);
}
toString(encoding) {
if (encoding === 'hex')
return ByteUtils.toHex(this.id);
if (encoding === 'base64')
return ByteUtils.toBase64(this.id);
return this.toHexString();
}
toJSON() {
return this.toHexString();
}
equals(otherId) {
if (!otherId) {
return false;
}
if (otherId instanceof UUID) {
return ByteUtils.equals(otherId.id, this.id);
}
try {
return ByteUtils.equals(new UUID(otherId).id, this.id);
}
catch {
return false;
}
}
toBinary() {
return new Binary(this.id, Binary.SUBTYPE_UUID);
}
static generate() {
const bytes = ByteUtils.randomBytes(UUID_BYTE_LENGTH);
bytes[6] = (bytes[6] & 0x0f) | 0x40;
bytes[8] = (bytes[8] & 0x3f) | 0x80;
return bytes;
}
static isValid(input) {
if (!input) {
return false;
}
if (typeof input === 'string') {
return UUID.isValidUUIDString(input);
}
if (isUint8Array(input)) {
return input.byteLength === UUID_BYTE_LENGTH;
}
return (input._bsontype === 'Binary' &&
input.sub_type === this.SUBTYPE_UUID &&
input.buffer.byteLength === 16);
}
static createFromHexString(hexString) {
const buffer = UUID.bytesFromString(hexString);
return new UUID(buffer);
}
static createFromBase64(base64) {
return new UUID(ByteUtils.fromBase64(base64));
}
static bytesFromString(representation) {
if (!UUID.isValidUUIDString(representation)) {
throw new BSONError('UUID string representation must be 32 hex digits or canonical hyphenated representation');
}
return ByteUtils.fromHex(representation.replace(/-/g, ''));
}
static isValidUUIDString(representation) {
return UUID_WITHOUT_DASHES.test(representation) || UUID_WITH_DASHES.test(representation);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
return `new UUID(${inspect(this.toHexString(), options)})`;
}
}
class Code extends BSONValue {
get _bsontype() {
return 'Code';
}
constructor(code, scope) {
super();
this.code = code.toString();
this.scope = scope ?? null;
}
toJSON() {
if (this.scope != null) {
return { code: this.code, scope: this.scope };
}
return { code: this.code };
}
toExtendedJSON() {
if (this.scope) {
return { $code: this.code, $scope: this.scope };
}
return { $code: this.code };
}
static fromExtendedJSON(doc) {
return new Code(doc.$code, doc.$scope);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
let parametersString = inspect(this.code, options);
const multiLineFn = parametersString.includes('\n');
if (this.scope != null) {
parametersString += `,${multiLineFn ? '\n' : ' '}${inspect(this.scope, options)}`;
}
const endingNewline = multiLineFn && this.scope === null;
return `new Code(${multiLineFn ? '\n' : ''}${parametersString}${endingNewline ? '\n' : ''})`;
}
}
function isDBRefLike(value) {
return (value != null &&
typeof value === 'object' &&
'$id' in value &&
value.$id != null &&
'$ref' in value &&
typeof value.$ref === 'string' &&
(!('$db' in value) || ('$db' in value && typeof value.$db === 'string')));
}
class DBRef extends BSONValue {
get _bsontype() {
return 'DBRef';
}
constructor(collection, oid, db, fields) {
super();
const parts = collection.split('.');
if (parts.length === 2) {
db = parts.shift();
collection = parts.shift();
}
this.collection = collection;
this.oid = oid;
this.db = db;
this.fields = fields || {};
}
get namespace() {
return this.collection;
}
set namespace(value) {
this.collection = value;
}
toJSON() {
const o = Object.assign({
$ref: this.collection,
$id: this.oid
}, this.fields);
if (this.db != null)
o.$db = this.db;
return o;
}
toExtendedJSON(options) {
options = options || {};
let o = {
$ref: this.collection,
$id: this.oid
};
if (options.legacy) {
return o;
}
if (this.db)
o.$db = this.db;
o = Object.assign(o, this.fields);
return o;
}
static fromExtendedJSON(doc) {
const copy = Object.assign({}, doc);
delete copy.$ref;
delete copy.$id;
delete copy.$db;
return new DBRef(doc.$ref, doc.$id, doc.$db, copy);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
const args = [
inspect(this.namespace, options),
inspect(this.oid, options),
...(this.db ? [inspect(this.db, options)] : []),
...(Object.keys(this.fields).length > 0 ? [inspect(this.fields, options)] : [])
];
args[1] = inspect === defaultInspect ? `new ObjectId(${args[1]})` : args[1];
return `new DBRef(${args.join(', ')})`;
}
}
let wasm = undefined;
try {
wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports;
}
catch {
}
const TWO_PWR_16_DBL = 1 << 16;
const TWO_PWR_24_DBL = 1 << 24;
const TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;
const TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;
const TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;
const INT_CACHE = {};
const UINT_CACHE = {};
const MAX_INT64_STRING_LENGTH = 20;
const DECIMAL_REG_EX = /^(\+?0|(\+|-)?[1-9][0-9]*)$/;
class Long extends BSONValue {
get _bsontype() {
return 'Long';
}
get __isLong__() {
return true;
}
constructor(low = 0, high, unsigned) {
super();
if (typeof low === 'bigint') {
Object.assign(this, Long.fromBigInt(low, !!high));
}
else if (typeof low === 'string') {
Object.assign(this, Long.fromString(low, !!high));
}
else {
this.low = low | 0;
this.high = high | 0;
this.unsigned = !!unsigned;
}
}
static fromBits(lowBits, highBits, unsigned) {
return new Long(lowBits, highBits, unsigned);
}
static fromInt(value, unsigned) {
let obj, cachedObj, cache;
if (unsigned) {
value >>>= 0;
if ((cache = 0 <= value && value < 256)) {
cachedObj = UINT_CACHE[value];
if (cachedObj)
return cachedObj;
}
obj = Long.fromBits(value, (value | 0) < 0 ? -1 : 0, true);
if (cache)
UINT_CACHE[value] = obj;
return obj;
}
else {
value |= 0;
if ((cache = -128 <= value && value < 128)) {
cachedObj = INT_CACHE[value];
if (cachedObj)
return cachedObj;
}
obj = Long.fromBits(value, value < 0 ? -1 : 0, false);
if (cache)
INT_CACHE[value] = obj;
return obj;
}
}
static fromNumber(value, unsigned) {
if (isNaN(value))
return unsigned ? Long.UZERO : Long.ZERO;
if (unsigned) {
if (value < 0)
return Long.UZERO;
if (value >= TWO_PWR_64_DBL)
return Long.MAX_UNSIGNED_VALUE;
}
else {
if (value <= -TWO_PWR_63_DBL)
return Long.MIN_VALUE;
if (value + 1 >= TWO_PWR_63_DBL)
return Long.MAX_VALUE;
}
if (value < 0)
return Long.fromNumber(-value, unsigned).neg();
return Long.fromBits(value % TWO_PWR_32_DBL | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);
}
static fromBigInt(value, unsigned) {
return Long.fromString(value.toString(), unsigned);
}
static fromString(str, unsigned, radix) {
if (str.length === 0)
throw new BSONError('empty string');
if (str === 'NaN' || str === 'Infinity' || str === '+Infinity' || str === '-Infinity')
return Long.ZERO;
if (typeof unsigned === 'number') {
(radix = unsigned), (unsigned = false);
}
else {
unsigned = !!unsigned;
}
radix = radix || 10;
if (radix < 2 || 36 < radix)
throw new BSONError('radix');
let p;
if ((p = str.indexOf('-')) > 0)
throw new BSONError('interior hyphen');
else if (p === 0) {
return Long.fromString(str.substring(1), unsigned, radix).neg();
}
const radixToPower = Long.fromNumber(Math.pow(radix, 8));
let result = Long.ZERO;
for (let i = 0; i < str.length; i += 8) {
const size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix);
if (size < 8) {
const power = Long.fromNumber(Math.pow(radix, size));
result = result.mul(power).add(Long.fromNumber(value));
}
else {
result = result.mul(radixToPower);
result = result.add(Long.fromNumber(value));
}
}
result.unsigned = unsigned;
return result;
}
static fromBytes(bytes, unsigned, le) {
return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);
}
static fromBytesLE(bytes, unsigned) {
return new Long(bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24), bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24), unsigned);
}
static fromBytesBE(bytes, unsigned) {
return new Long((bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7], (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3], unsigned);
}
static isLong(value) {
return (value != null &&
typeof value === 'object' &&
'__isLong__' in value &&
value.__isLong__ === true);
}
static fromValue(val, unsigned) {
if (typeof val === 'number')
return Long.fromNumber(val, unsigned);
if (typeof val === 'string')
return Long.fromString(val, unsigned);
return Long.fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);
}
add(addend) {
if (!Long.isLong(addend))
addend = Long.fromValue(addend);
const a48 = this.high >>> 16;
const a32 = this.high & 0xffff;
const a16 = this.low >>> 16;
const a00 = this.low & 0xffff;
const b48 = addend.high >>> 16;
const b32 = addend.high & 0xffff;
const b16 = addend.low >>> 16;
const b00 = addend.low & 0xffff;
let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
c00 += a00 + b00;
c16 += c00 >>> 16;
c00 &= 0xffff;
c16 += a16 + b16;
c32 += c16 >>> 16;
c16 &= 0xffff;
c32 += a32 + b32;
c48 += c32 >>> 16;
c32 &= 0xffff;
c48 += a48 + b48;
c48 &= 0xffff;
return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
}
and(other) {
if (!Long.isLong(other))
other = Long.fromValue(other);
return Long.fromBits(this.low & other.low, this.high & other.high, this.unsigned);
}
compare(other) {
if (!Long.isLong(other))
other = Long.fromValue(other);
if (this.eq(other))
return 0;
const thisNeg = this.isNegative(), otherNeg = other.isNegative();
if (thisNeg && !otherNeg)
return -1;
if (!thisNeg && otherNeg)
return 1;
if (!this.unsigned)
return this.sub(other).isNegative() ? -1 : 1;
return other.high >>> 0 > this.high >>> 0 ||
(other.high === this.high && other.low >>> 0 > this.low >>> 0)
? -1
: 1;
}
comp(other) {
return this.compare(other);
}
divide(divisor) {
if (!Long.isLong(divisor))
divisor = Long.fromValue(divisor);
if (divisor.isZero())
throw new BSONError('division by zero');
if (wasm) {
if (!this.unsigned &&
this.high === -0x80000000 &&
divisor.low === -1 &&
divisor.high === -1) {
return this;
}
const low = (this.unsigned ? wasm.div_u : wasm.div_s)(this.low, this.high, divisor.low, divisor.high);
return Long.fromBits(low, wasm.get_high(), this.unsigned);
}
if (this.isZero())
return this.unsigned ? Long.UZERO : Long.ZERO;
let approx, rem, res;
if (!this.unsigned) {
if (this.eq(Long.MIN_VALUE)) {
if (divisor.eq(Long.ONE) || divisor.eq(Long.NEG_ONE))
return Long.MIN_VALUE;
else if (divisor.eq(Long.MIN_VALUE))
return Long.ONE;
else {
const halfThis = this.shr(1);
approx = halfThis.div(divisor).shl(1);
if (approx.eq(Long.ZERO)) {
return divisor.isNegative() ? Long.ONE : Long.NEG_ONE;
}
else {
rem = this.sub(divisor.mul(approx));
res = approx.add(rem.div(divisor));
return res;
}
}
}
else if (divisor.eq(Long.MIN_VALUE))
return this.unsigned ? Long.UZERO : Long.ZERO;
if (this.isNegative()) {
if (divisor.isNegative())
return this.neg().div(divisor.neg());
return this.neg().div(divisor).neg();
}
else if (divisor.isNegative())
return this.div(divisor.neg()).neg();
res = Long.ZERO;
}
else {
if (!divisor.unsigned)
divisor = divisor.toUnsigned();
if (divisor.gt(this))
return Long.UZERO;
if (divisor.gt(this.shru(1)))
return Long.UONE;
res = Long.UZERO;
}
rem = this;
while (rem.gte(divisor)) {
approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));
const log2 = Math.ceil(Math.log(approx) / Math.LN2);
const delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48);
let approxRes = Long.fromNumber(approx);
let approxRem = approxRes.mul(divisor);
while (approxRem.isNegative() || approxRem.gt(rem)) {
approx -= delta;
approxRes = Long.fromNumber(approx, this.unsigned);
approxRem = approxRes.mul(divisor);
}
if (approxRes.isZero())
approxRes = Long.ONE;
res = res.add(approxRes);
rem = rem.sub(approxRem);
}
return res;
}
div(divisor) {
return this.divide(divisor);
}
equals(other) {
if (!Long.isLong(other))
other = Long.fromValue(other);
if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1)
return false;
return this.high === other.high && this.low === other.low;
}
eq(other) {
return this.equals(other);
}
getHighBits() {
return this.high;
}
getHighBitsUnsigned() {
return this.high >>> 0;
}
getLowBits() {
return this.low;
}
getLowBitsUnsigned() {
return this.low >>> 0;
}
getNumBitsAbs() {
if (this.isNegative()) {
return this.eq(Long.MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();
}
const val = this.high !== 0 ? this.high : this.low;
let bit;
for (bit = 31; bit > 0; bit--)
if ((val & (1 << bit)) !== 0)
break;
return this.high !== 0 ? bit + 33 : bit + 1;
}
greaterThan(other) {
return this.comp(other) > 0;
}
gt(other) {
return this.greaterThan(other);
}
greaterThanOrEqual(other) {
return this.comp(other) >= 0;
}
gte(other) {
return this.greaterThanOrEqual(other);
}
ge(other) {
return this.greaterThanOrEqual(other);
}
isEven() {
return (this.low & 1) === 0;
}
isNegative() {
return !this.unsigned && this.high < 0;
}
isOdd() {
return (this.low & 1) === 1;
}
isPositive() {
return this.unsigned || this.high >= 0;
}
isZero() {
return this.high === 0 && this.low === 0;
}
lessThan(other) {
return this.comp(other) < 0;
}
lt(other) {
return this.lessThan(other);
}
lessThanOrEqual(other) {
return this.comp(other) <= 0;
}
lte(other) {
return this.lessThanOrEqual(other);
}
modulo(divisor) {
if (!Long.isLong(divisor))
divisor = Long.fromValue(divisor);
if (wasm) {
const low = (this.unsigned ? wasm.rem_u : wasm.rem_s)(this.low, this.high, divisor.low, divisor.high);
return Long.fromBits(low, wasm.get_high(), this.unsigned);
}
return this.sub(this.div(divisor).mul(divisor));
}
mod(divisor) {
return this.modulo(divisor);
}
rem(divisor) {
return this.modulo(divisor);
}
multiply(multiplier) {
if (this.isZero())
return Long.ZERO;
if (!Long.isLong(multiplier))
multiplier = Long.fromValue(multiplier);
if (wasm) {
const low = wasm.mul(this.low, this.high, multiplier.low, multiplier.high);
return Long.fromBits(low, wasm.get_high(), this.unsigned);
}
if (multiplier.isZero())
return Long.ZERO;
if (this.eq(Long.MIN_VALUE))
return multiplier.isOdd() ? Long.MIN_VALUE : Long.ZERO;
if (multiplier.eq(Long.MIN_VALUE))
return this.isOdd() ? Long.MIN_VALUE : Long.ZERO;
if (this.isNegative()) {
if (multiplier.isNegative())
return this.neg().mul(multiplier.neg());
else
return this.neg().mul(multiplier).neg();
}
else if (multiplier.isNegative())
return this.mul(multiplier.neg()).neg();
if (this.lt(Long.TWO_PWR_24) && multiplier.lt(Long.TWO_PWR_24))
return Long.fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);
const a48 = this.high >>> 16;
const a32 = this.high & 0xffff;
const a16 = this.low >>> 16;
const a00 = this.low & 0xffff;
const b48 = multiplier.high >>> 16;
const b32 = multiplier.high & 0xffff;
const b16 = multiplier.low >>> 16;
const b00 = multiplier.low & 0xffff;
let c48 = 0, c32 = 0, c16 = 0, c00 = 0;
c00 += a00 * b00;
c16 += c00 >>> 16;
c00 &= 0xffff;
c16 += a16 * b00;
c32 += c16 >>> 16;
c16 &= 0xffff;
c16 += a00 * b16;
c32 += c16 >>> 16;
c16 &= 0xffff;
c32 += a32 * b00;
c48 += c32 >>> 16;
c32 &= 0xffff;
c32 += a16 * b16;
c48 += c32 >>> 16;
c32 &= 0xffff;
c32 += a00 * b32;
c48 += c32 >>> 16;
c32 &= 0xffff;
c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
c48 &= 0xffff;
return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);
}
mul(multiplier) {
return this.multiply(multiplier);
}
negate() {
if (!this.unsigned && this.eq(Long.MIN_VALUE))
return Long.MIN_VALUE;
return this.not().add(Long.ONE);
}
neg() {
return this.negate();
}
not() {
return Long.fromBits(~this.low, ~this.high, this.unsigned);
}
notEquals(other) {
return !this.equals(other);
}
neq(other) {
return this.notEquals(other);
}
ne(other) {
return this.notEquals(other);
}
or(other) {
if (!Long.isLong(other))
other = Long.fromValue(other);
return Long.fromBits(this.low | other.low, this.high | other.high, this.unsigned);
}
shiftLeft(numBits) {
if (Long.isLong(numBits))
numBits = numBits.toInt();
if ((numBits &= 63) === 0)
return this;
else if (numBits < 32)
return Long.fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);
else
return Long.fromBits(0, this.low << (numBits - 32), this.unsigned);
}
shl(numBits) {
return this.shiftLeft(numBits);
}
shiftRight(numBits) {
if (Long.isLong(numBits))
numBits = numBits.toInt();
if ((numBits &= 63) === 0)
return this;
else if (numBits < 32)
return Long.fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);
else
return Long.fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);
}
shr(numBits) {
return this.shiftRight(numBits);
}
shiftRightUnsigned(numBits) {
if (Long.isLong(numBits))
numBits = numBits.toInt();
numBits &= 63;
if (numBits === 0)
return this;
else {
const high = this.high;
if (numBits < 32) {
const low = this.low;
return Long.fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);
}
else if (numBits === 32)
return Long.fromBits(high, 0, this.unsigned);
else
return Long.fromBits(high >>> (numBits - 32), 0, this.unsigned);
}
}
shr_u(numBits) {
return this.shiftRightUnsigned(numBits);
}
shru(numBits) {
return this.shiftRightUnsigned(numBits);
}
subtract(subtrahend) {
if (!Long.isLong(subtrahend))
subtrahend = Long.fromValue(subtrahend);
return this.add(subtrahend.neg());
}
sub(subtrahend) {
return this.subtract(subtrahend);
}
toInt() {
return this.unsigned ? this.low >>> 0 : this.low;
}
toNumber() {
if (this.unsigned)
return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);
return this.high * TWO_PWR_32_DBL + (this.low >>> 0);
}
toBigInt() {
return BigInt(this.toString());
}
toBytes(le) {
return le ? this.toBytesLE() : this.toBytesBE();
}
toBytesLE() {
const hi = this.high, lo = this.low;
return [
lo & 0xff,
(lo >>> 8) & 0xff,
(lo >>> 16) & 0xff,
lo >>> 24,
hi & 0xff,
(hi >>> 8) & 0xff,
(hi >>> 16) & 0xff,
hi >>> 24
];
}
toBytesBE() {
const hi = this.high, lo = this.low;
return [
hi >>> 24,
(hi >>> 16) & 0xff,
(hi >>> 8) & 0xff,
hi & 0xff,
lo >>> 24,
(lo >>> 16) & 0xff,
(lo >>> 8) & 0xff,
lo & 0xff
];
}
toSigned() {
if (!this.unsigned)
return this;
return Long.fromBits(this.low, this.high, false);
}
toString(radix) {
radix = radix || 10;
if (radix < 2 || 36 < radix)
throw new BSONError('radix');
if (this.isZero())
return '0';
if (this.isNegative()) {
if (this.eq(Long.MIN_VALUE)) {
const radixLong = Long.fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this);
return div.toString(radix) + rem1.toInt().toString(radix);
}
else
return '-' + this.neg().toString(radix);
}
const radixToPower = Long.fromNumber(Math.pow(radix, 6), this.unsigned);
let rem = this;
let result = '';
while (true) {
const remDiv = rem.div(radixToPower);
const intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0;
let digits = intval.toString(radix);
rem = remDiv;
if (rem.isZero()) {
return digits + result;
}
else {
while (digits.length < 6)
digits = '0' + digits;
result = '' + digits + result;
}
}
}
toUnsigned() {
if (this.unsigned)
return this;
return Long.fromBits(this.low, this.high, true);
}
xor(other) {
if (!Long.isLong(other))
other = Long.fromValue(other);
return Long.fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);
}
eqz() {
return this.isZero();
}
le(other) {
return this.lessThanOrEqual(other);
}
toExtendedJSON(options) {
if (options && options.relaxed)
return this.toNumber();
return { $numberLong: this.toString() };
}
static fromExtendedJSON(doc, options) {
const { useBigInt64 = false, relaxed = true } = { ...options };
if (doc.$numberLong.length > MAX_INT64_STRING_LENGTH) {
throw new BSONError('$numberLong string is too long');
}
if (!DECIMAL_REG_EX.test(doc.$numberLong)) {
throw new BSONError(`$numberLong string "${doc.$numberLong}" is in an invalid format`);
}
if (useBigInt64) {
const bigIntResult = BigInt(doc.$numberLong);
return BigInt.asIntN(64, bigIntResult);
}
const longResult = Long.fromString(doc.$numberLong);
if (relaxed) {
return longResult.toNumber();
}
return longResult;
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
const longVal = inspect(this.toString(), options);
const unsignedVal = this.unsigned ? `, ${inspect(this.unsigned, options)}` : '';
return `new Long(${longVal}${unsignedVal})`;
}
}
Long.TWO_PWR_24 = Long.fromInt(TWO_PWR_24_DBL);
Long.MAX_UNSIGNED_VALUE = Long.fromBits(0xffffffff | 0, 0xffffffff | 0, true);
Long.ZERO = Long.fromInt(0);
Long.UZERO = Long.fromInt(0, true);
Long.ONE = Long.fromInt(1);
Long.UONE = Long.fromInt(1, true);
Long.NEG_ONE = Long.fromInt(-1);
Long.MAX_VALUE = Long.fromBits(0xffffffff | 0, 0x7fffffff | 0, false);
Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0, false);
const PARSE_STRING_REGEXP = /^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/;
const PARSE_INF_REGEXP = /^(\+|-)?(Infinity|inf)$/i;
const PARSE_NAN_REGEXP = /^(\+|-)?NaN$/i;
const EXPONENT_MAX = 6111;
const EXPONENT_MIN = -6176;
const EXPONENT_BIAS = 6176;
const MAX_DIGITS = 34;
const NAN_BUFFER = ByteUtils.fromNumberArray([
0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
].reverse());
const INF_NEGATIVE_BUFFER = ByteUtils.fromNumberArray([
0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
].reverse());
const INF_POSITIVE_BUFFER = ByteUtils.fromNumberArray([
0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
].reverse());
const EXPONENT_REGEX = /^([-+])?(\d+)?$/;
const COMBINATION_MASK = 0x1f;
const EXPONENT_MASK = 0x3fff;
const COMBINATION_INFINITY = 30;
const COMBINATION_NAN = 31;
function isDigit(value) {
return !isNaN(parseInt(value, 10));
}
function divideu128(value) {
const DIVISOR = Long.fromNumber(1000 * 1000 * 1000);
let _rem = Long.fromNumber(0);
if (!value.parts[0] && !value.parts[1] && !value.parts[2] && !value.parts[3]) {
return { quotient: value, rem: _rem };
}
for (let i = 0; i <= 3; i++) {
_rem = _rem.shiftLeft(32);
_rem = _rem.add(new Long(value.parts[i], 0));
value.parts[i] = _rem.div(DIVISOR).low;
_rem = _rem.modulo(DIVISOR);
}
return { quotient: value, rem: _rem };
}
function multiply64x2(left, right) {
if (!left && !right) {
return { high: Long.fromNumber(0), low: Long.fromNumber(0) };
}
const leftHigh = left.shiftRightUnsigned(32);
const leftLow = new Long(left.getLowBits(), 0);
const rightHigh = right.shiftRightUnsigned(32);
const rightLow = new Long(right.getLowBits(), 0);
let productHigh = leftHigh.multiply(rightHigh);
let productMid = leftHigh.multiply(rightLow);
const productMid2 = leftLow.multiply(rightHigh);
let productLow = leftLow.multiply(rightLow);
productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
productMid = new Long(productMid.getLowBits(), 0)
.add(productMid2)
.add(productLow.shiftRightUnsigned(32));
productHigh = productHigh.add(productMid.shiftRightUnsigned(32));
productLow = productMid.shiftLeft(32).add(new Long(productLow.getLowBits(), 0));
return { high: productHigh, low: productLow };
}
function lessThan(left, right) {
const uhleft = left.high >>> 0;
const uhright = right.high >>> 0;
if (uhleft < uhright) {
return true;
}
else if (uhleft === uhright) {
const ulleft = left.low >>> 0;
const ulright = right.low >>> 0;
if (ulleft < ulright)
return true;
}
return false;
}
function invalidErr(string, message) {
throw new BSONError(`"${string}" is not a valid Decimal128 string - ${message}`);
}
class Decimal128 extends BSONValue {
get _bsontype() {
return 'Decimal128';
}
constructor(bytes) {
super();
if (typeof bytes === 'string') {
this.bytes = Decimal128.fromString(bytes).bytes;
}
else if (isUint8Array(bytes)) {
if (bytes.byteLength !== 16) {
throw new BSONError('Decimal128 must take a Buffer of 16 bytes');
}
this.bytes = bytes;
}
else {
throw new BSONError('Decimal128 must take a Buffer or string');
}
}
static fromString(representation) {
return Decimal128._fromString(representation, { allowRounding: false });
}
static fromStringWithRounding(representation) {
return Decimal128._fromString(representation, { allowRounding: true });
}
static _fromString(representation, options) {
let isNegative = false;
let sawSign = false;
let sawRadix = false;
let foundNonZero = false;
let significantDigits = 0;
let nDigitsRead = 0;
let nDigits = 0;
let radixPosition = 0;
let firstNonZero = 0;
const digits = [0];
let nDigitsStored = 0;
let digitsInsert = 0;
let lastDigit = 0;
let exponent = 0;
let significandHigh = new Long(0, 0);
let significandLow = new Long(0, 0);
let biasedExponent = 0;
let index = 0;
if (representation.length >= 7000) {
throw new BSONError('' + representation + ' not a valid Decimal128 string');
}
const stringMatch = representation.match(PARSE_STRING_REGEXP);
const infMatch = representation.match(PARSE_INF_REGEXP);
const nanMatch = representation.match(PARSE_NAN_REGEXP);
if ((!stringMatch && !infMatch && !nanMatch) || representation.length === 0) {
throw new BSONError('' + representation + ' not a valid Decimal128 string');
}
if (stringMatch) {
const unsignedNumber = stringMatch[2];
const e = stringMatch[4];
const expSign = stringMatch[5];
const expNumber = stringMatch[6];
if (e && expNumber === undefined)
invalidErr(representation, 'missing exponent power');
if (e && unsignedNumber === undefined)
invalidErr(representation, 'missing exponent base');
if (e === undefined && (expSign || expNumber)) {
invalidErr(representation, 'missing e before exponent');
}
}
if (representation[index] === '+' || representation[index] === '-') {
sawSign = true;
isNegative = representation[index++] === '-';
}
if (!isDigit(representation[index]) && representation[index] !== '.') {
if (representation[index] === 'i' || representation[index] === 'I') {
return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
}
else if (representation[index] === 'N') {
return new Decimal128(NAN_BUFFER);
}
}
while (isDigit(representation[index]) || representation[index] === '.') {
if (representation[index] === '.') {
if (sawRadix)
invalidErr(representation, 'contains multiple periods');
sawRadix = true;
index = index + 1;
continue;
}
if (nDigitsStored < MAX_DIGITS) {
if (representation[index] !== '0' || foundNonZero) {
if (!foundNonZero) {
firstNonZero = nDigitsRead;
}
foundNonZero = true;
digits[digitsInsert++] = parseInt(representation[index], 10);
nDigitsStored = nDigitsStored + 1;
}
}
if (foundNonZero)
nDigits = nDigits + 1;
if (sawRadix)
radixPosition = radixPosition + 1;
nDigitsRead = nDigitsRead + 1;
index = index + 1;
}
if (sawRadix && !nDigitsRead)
throw new BSONError('' + representation + ' not a valid Decimal128 string');
if (representation[index] === 'e' || representation[index] === 'E') {
const match = representation.substr(++index).match(EXPONENT_REGEX);
if (!match || !match[2])
return new Decimal128(NAN_BUFFER);
exponent = parseInt(match[0], 10);
index = index + match[0].length;
}
if (representation[index])
return new Decimal128(NAN_BUFFER);
if (!nDigitsStored) {
digits[0] = 0;
nDigits = 1;
nDigitsStored = 1;
significantDigits = 0;
}
else {
lastDigit = nDigitsStored - 1;
significantDigits = nDigits;
if (significantDigits !== 1) {
while (representation[firstNonZero + significantDigits - 1 + Number(sawSign) + Number(sawRadix)] === '0') {
significantDigits = significantDigits - 1;
}
}
}
if (exponent <= radixPosition && radixPosition > exponent + (1 << 14)) {
exponent = EXPONENT_MIN;
}
else {
exponent = exponent - radixPosition;
}
while (exponent > EXPONENT_MAX) {
lastDigit = lastDigit + 1;
if (lastDigit >= MAX_DIGITS) {
if (significantDigits === 0) {
exponent = EXPONENT_MAX;
break;
}
invalidErr(representation, 'overflow');
}
exponent = exponent - 1;
}
if (options.allowRounding) {
while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
if (lastDigit === 0 && significantDigits < nDigitsStored) {
exponent = EXPONENT_MIN;
significantDigits = 0;
break;
}
if (nDigitsStored < nDigits) {
nDigits = nDigits - 1;
}
else {
lastDigit = lastDigit - 1;
}
if (exponent < EXPONENT_MAX) {
exponent = exponent + 1;
}
else {
const digitsString = digits.join('');
if (digitsString.match(/^0+$/)) {
exponent = EXPONENT_MAX;
break;
}
invalidErr(representation, 'overflow');
}
}
if (lastDigit + 1 < significantDigits) {
let endOfString = nDigitsRead;
if (sawRadix) {
firstNonZero = firstNonZero + 1;
endOfString = endOfString + 1;
}
if (sawSign) {
firstNonZero = firstNonZero + 1;
endOfString = endOfString + 1;
}
const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
let roundBit = 0;
if (roundDigit >= 5) {
roundBit = 1;
if (roundDigit === 5) {
roundBit = digits[lastDigit] % 2 === 1 ? 1 : 0;
for (let i = firstNonZero + lastDigit + 2; i < endOfString; i++) {
if (parseInt(representation[i], 10)) {
roundBit = 1;
break;
}
}
}
}
if (roundBit) {
let dIdx = lastDigit;
for (; dIdx >= 0; dIdx--) {
if (++digits[dIdx] > 9) {
digits[dIdx] = 0;
if (dIdx === 0) {
if (exponent < EXPONENT_MAX) {
exponent = exponent + 1;
digits[dIdx] = 1;
}
else {
return new Decimal128(isNegative ? INF_NEGATIVE_BUFFER : INF_POSITIVE_BUFFER);
}
}
}
else {
break;
}
}
}
}
}
else {
while (exponent < EXPONENT_MIN || nDigitsStored < nDigits) {
if (lastDigit === 0) {
if (significantDigits === 0) {
exponent = EXPONENT_MIN;
break;
}
invalidErr(representation, 'exponent underflow');
}
if (nDigitsStored < nDigits) {
if (representation[nDigits - 1 + Number(sawSign) + Number(sawRadix)] !== '0' &&
significantDigits !== 0) {
invalidErr(representation, 'inexact rounding');
}
nDigits = nDigits - 1;
}
else {
if (digits[lastDigit] !== 0) {
invalidErr(representation, 'inexact rounding');
}
lastDigit = lastDigit - 1;
}
if (exponent < EXPONENT_MAX) {
exponent = exponent + 1;
}
else {
invalidErr(representation, 'overflow');
}
}
if (lastDigit + 1 < significantDigits) {
if (sawRadix) {
firstNonZero = firstNonZero + 1;
}
if (sawSign) {
firstNonZero = firstNonZero + 1;
}
const roundDigit = parseInt(representation[firstNonZero + lastDigit + 1], 10);
if (roundDigit !== 0) {
invalidErr(representation, 'inexact rounding');
}
}
}
significandHigh = Long.fromNumber(0);
significandLow = Long.fromNumber(0);
if (significantDigits === 0) {
significandHigh = Long.fromNumber(0);
significandLow = Long.fromNumber(0);
}
else if (lastDigit < 17) {
let dIdx = 0;
significandLow = Long.fromNumber(digits[dIdx++]);
significandHigh = new Long(0, 0);
for (; dIdx <= lastDigit; dIdx++) {
significandLow = significandLow.multiply(Long.fromNumber(10));
significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
}
}
else {
let dIdx = 0;
significandHigh = Long.fromNumber(digits[dIdx++]);
for (; dIdx <= lastDigit - 17; dIdx++) {
significandHigh = significandHigh.multiply(Long.fromNumber(10));
significandHigh = significandHigh.add(Long.fromNumber(digits[dIdx]));
}
significandLow = Long.fromNumber(digits[dIdx++]);
for (; dIdx <= lastDigit; dIdx++) {
significandLow = significandLow.multiply(Long.fromNumber(10));
significandLow = significandLow.add(Long.fromNumber(digits[dIdx]));
}
}
const significand = multiply64x2(significandHigh, Long.fromString('100000000000000000'));
significand.low = significand.low.add(significandLow);
if (lessThan(significand.low, significandLow)) {
significand.high = significand.high.add(Long.fromNumber(1));
}
biasedExponent = exponent + EXPONENT_BIAS;
const dec = { low: Long.fromNumber(0), high: Long.fromNumber(0) };
if (significand.high.shiftRightUnsigned(49).and(Long.fromNumber(1)).equals(Long.fromNumber(1))) {
dec.high = dec.high.or(Long.fromNumber(0x3).shiftLeft(61));
dec.high = dec.high.or(Long.fromNumber(biasedExponent).and(Long.fromNumber(0x3fff).shiftLeft(47)));
dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x7fffffffffff)));
}
else {
dec.high = dec.high.or(Long.fromNumber(biasedExponent & 0x3fff).shiftLeft(49));
dec.high = dec.high.or(significand.high.and(Long.fromNumber(0x1ffffffffffff)));
}
dec.low = significand.low;
if (isNegative) {
dec.high = dec.high.or(Long.fromString('9223372036854775808'));
}
const buffer = ByteUtils.allocateUnsafe(16);
index = 0;
buffer[index++] = dec.low.low & 0xff;
buffer[index++] = (dec.low.low >> 8) & 0xff;
buffer[index++] = (dec.low.low >> 16) & 0xff;
buffer[index++] = (dec.low.low >> 24) & 0xff;
buffer[index++] = dec.low.high & 0xff;
buffer[index++] = (dec.low.high >> 8) & 0xff;
buffer[index++] = (dec.low.high >> 16) & 0xff;
buffer[index++] = (dec.low.high >> 24) & 0xff;
buffer[index++] = dec.high.low & 0xff;
buffer[index++] = (dec.high.low >> 8) & 0xff;
buffer[index++] = (dec.high.low >> 16) & 0xff;
buffer[index++] = (dec.high.low >> 24) & 0xff;
buffer[index++] = dec.high.high & 0xff;
buffer[index++] = (dec.high.high >> 8) & 0xff;
buffer[index++] = (dec.high.high >> 16) & 0xff;
buffer[index++] = (dec.high.high >> 24) & 0xff;
return new Decimal128(buffer);
}
toString() {
let biased_exponent;
let significand_digits = 0;
const significand = new Array(36);
for (let i = 0; i < significand.length; i++)
significand[i] = 0;
let index = 0;
let is_zero = false;
let significand_msb;
let significand128 = { parts: [0, 0, 0, 0] };
let j, k;
const string = [];
index = 0;
const buffer = this.bytes;
const low = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
const midl = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
const midh = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
const high = buffer[index++] | (buffer[index++] << 8) | (buffer[index++] << 16) | (buffer[index++] << 24);
index = 0;
const dec = {
low: new Long(low, midl),
high: new Long(midh, high)
};
if (dec.high.lessThan(Long.ZERO)) {
string.push('-');
}
const combination = (high >> 26) & COMBINATION_MASK;
if (combination >> 3 === 3) {
if (combination === COMBINATION_INFINITY) {
return string.join('') + 'Infinity';
}
else if (combination === COMBINATION_NAN) {
return 'NaN';
}
else {
biased_exponent = (high >> 15) & EXPONENT_MASK;
significand_msb = 0x08 + ((high >> 14) & 0x01);
}
}
else {
significand_msb = (high >> 14) & 0x07;
biased_exponent = (high >> 17) & EXPONENT_MASK;
}
const exponent = biased_exponent - EXPONENT_BIAS;
significand128.parts[0] = (high & 0x3fff) + ((significand_msb & 0xf) << 14);
significand128.parts[1] = midh;
significand128.parts[2] = midl;
significand128.parts[3] = low;
if (significand128.parts[0] === 0 &&
significand128.parts[1] === 0 &&
significand128.parts[2] === 0 &&
significand128.parts[3] === 0) {
is_zero = true;
}
else {
for (k = 3; k >= 0; k--) {
let least_digits = 0;
const result = divideu128(significand128);
significand128 = result.quotient;
least_digits = result.rem.low;
if (!least_digits)
continue;
for (j = 8; j >= 0; j--) {
significand[k * 9 + j] = least_digits % 10;
least_digits = Math.floor(least_digits / 10);
}
}
}
if (is_zero) {
significand_digits = 1;
significand[index] = 0;
}
else {
significand_digits = 36;
while (!significand[index]) {
significand_digits = significand_digits - 1;
index = index + 1;
}
}
const scientific_exponent = significand_digits - 1 + exponent;
if (scientific_exponent >= 34 || scientific_exponent <= -7 || exponent > 0) {
if (significand_digits > 34) {
string.push(`${0}`);
if (exponent > 0)
string.push(`E+${exponent}`);
else if (exponent < 0)
string.push(`E${exponent}`);
return string.join('');
}
string.push(`${significand[index++]}`);
significand_digits = significand_digits - 1;
if (significand_digits) {
string.push('.');
}
for (let i = 0; i < significand_digits; i++) {
string.push(`${significand[index++]}`);
}
string.push('E');
if (scientific_exponent > 0) {
string.push(`+${scientific_exponent}`);
}
else {
string.push(`${scientific_exponent}`);
}
}
else {
if (exponent >= 0) {
for (let i = 0; i < significand_digits; i++) {
string.push(`${significand[index++]}`);
}
}
else {
let radix_position = significand_digits + exponent;
if (radix_position > 0) {
for (let i = 0; i < radix_position; i++) {
string.push(`${significand[index++]}`);
}
}
else {
string.push('0');
}
string.push('.');
while (radix_position++ < 0) {
string.push('0');
}
for (let i = 0; i < significand_digits - Math.max(radix_position - 1, 0); i++) {
string.push(`${significand[index++]}`);
}
}
}
return string.join('');
}
toJSON() {
return { $numberDecimal: this.toString() };
}
toExtendedJSON() {
return { $numberDecimal: this.toString() };
}
static fromExtendedJSON(doc) {
return Decimal128.fromString(doc.$numberDecimal);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
const d128string = inspect(this.toString(), options);
return `new Decimal128(${d128string})`;
}
}
class Double extends BSONValue {
get _bsontype() {
return 'Double';
}
constructor(value) {
super();
if (value instanceof Number) {
value = value.valueOf();
}
this.value = +value;
}
valueOf() {
return this.value;
}
toJSON() {
return this.value;
}
toString(radix) {
return this.value.toString(radix);
}
toExtendedJSON(options) {
if (options && (options.legacy || (options.relaxed && isFinite(this.value)))) {
return this.value;
}
if (Object.is(Math.sign(this.value), -0)) {
return { $numberDouble: '-0.0' };
}
return {
$numberDouble: Number.isInteger(this.value) ? this.value.toFixed(1) : this.value.toString()
};
}
static fromExtendedJSON(doc, options) {
const doubleValue = parseFloat(doc.$numberDouble);
return options && options.relaxed ? doubleValue : new Double(doubleValue);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
return `new Double(${inspect(this.value, options)})`;
}
}
class Int32 extends BSONValue {
get _bsontype() {
return 'Int32';
}
constructor(value) {
super();
if (value instanceof Number) {
value = value.valueOf();
}
this.value = +value | 0;
}
valueOf() {
return this.value;
}
toString(radix) {
return this.value.toString(radix);
}
toJSON() {
return this.value;
}
toExtendedJSON(options) {
if (options && (options.relaxed || options.legacy))
return this.value;
return { $numberInt: this.value.toString() };
}
static fromExtendedJSON(doc, options) {
return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new Int32(doc.$numberInt);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
return `new Int32(${inspect(this.value, options)})`;
}
}
class MaxKey extends BSONValue {
get _bsontype() {
return 'MaxKey';
}
toExtendedJSON() {
return { $maxKey: 1 };
}
static fromExtendedJSON() {
return new MaxKey();
}
inspect() {
return 'new MaxKey()';
}
}
class MinKey extends BSONValue {
get _bsontype() {
return 'MinKey';
}
toExtendedJSON() {
return { $minKey: 1 };
}
static fromExtendedJSON() {
return new MinKey();
}
inspect() {
return 'new MinKey()';
}
}
const FLOAT = new Float64Array(1);
const FLOAT_BYTES = new Uint8Array(FLOAT.buffer, 0, 8);
const NumberUtils = {
getInt32LE(source, offset) {
return (source[offset] |
(source[offset + 1] << 8) |
(source[offset + 2] << 16) |
(source[offset + 3] << 24));
},
getUint32LE(source, offset) {
return (source[offset] +
source[offset + 1] * 256 +
source[offset + 2] * 65536 +
source[offset + 3] * 16777216);
},
getUint32BE(source, offset) {
return (source[offset + 3] +
source[offset + 2] * 256 +
source[offset + 1] * 65536 +
source[offset] * 16777216);
},
getBigInt64LE(source, offset) {
const lo = NumberUtils.getUint32LE(source, offset);
const hi = NumberUtils.getUint32LE(source, offset + 4);
return (BigInt(hi) << BigInt(32)) + BigInt(lo);
},
getFloat64LE(source, offset) {
FLOAT_BYTES[0] = source[offset];
FLOAT_BYTES[1] = source[offset + 1];
FLOAT_BYTES[2] = source[offset + 2];
FLOAT_BYTES[3] = source[offset + 3];
FLOAT_BYTES[4] = source[offset + 4];
FLOAT_BYTES[5] = source[offset + 5];
FLOAT_BYTES[6] = source[offset + 6];
FLOAT_BYTES[7] = source[offset + 7];
return FLOAT[0];
},
setInt32BE(destination, offset, value) {
destination[offset + 3] = value;
value >>>= 8;
destination[offset + 2] = value;
value >>>= 8;
destination[offset + 1] = value;
value >>>= 8;
destination[offset] = value;
return 4;
},
setInt32LE(destination, offset, value) {
destination[offset] = value;
value >>>= 8;
destination[offset + 1] = value;
value >>>= 8;
destination[offset + 2] = value;
value >>>= 8;
destination[offset + 3] = value;
return 4;
},
setBigInt64LE(destination, offset, value) {
const mask32bits = BigInt(4294967295);
let lo = Number(value & mask32bits);
destination[offset] = lo;
lo >>= 8;
destination[offset + 1] = lo;
lo >>= 8;
destination[offset + 2] = lo;
lo >>= 8;
destination[offset + 3] = lo;
let hi = Number((value >> BigInt(32)) & mask32bits);
destination[offset + 4] = hi;
hi >>= 8;
destination[offset + 5] = hi;
hi >>= 8;
destination[offset + 6] = hi;
hi >>= 8;
destination[offset + 7] = hi;
return 8;
},
setFloat64LE(destination, offset, value) {
FLOAT[0] = value;
destination[offset] = FLOAT_BYTES[0];
destination[offset + 1] = FLOAT_BYTES[1];
destination[offset + 2] = FLOAT_BYTES[2];
destination[offset + 3] = FLOAT_BYTES[3];
destination[offset + 4] = FLOAT_BYTES[4];
destination[offset + 5] = FLOAT_BYTES[5];
destination[offset + 6] = FLOAT_BYTES[6];
destination[offset + 7] = FLOAT_BYTES[7];
return 8;
}
};
const checkForHexRegExp = new RegExp('^[0-9a-fA-F]{24}$');
let PROCESS_UNIQUE = null;
class ObjectId extends BSONValue {
get _bsontype() {
return 'ObjectId';
}
constructor(inputId) {
super();
let workingId;
if (typeof inputId === 'object' && inputId && 'id' in inputId) {
if (typeof inputId.id !== 'string' && !ArrayBuffer.isView(inputId.id)) {
throw new BSONError('Argument passed in must have an id that is of type string or Buffer');
}
if ('toHexString' in inputId && typeof inputId.toHexString === 'function') {
workingId = ByteUtils.fromHex(inputId.toHexString());
}
else {
workingId = inputId.id;
}
}
else {
workingId = inputId;
}
if (workingId == null || typeof workingId === 'number') {
this.buffer = ObjectId.generate(typeof workingId === 'number' ? workingId : undefined);
}
else if (ArrayBuffer.isView(workingId) && workingId.byteLength === 12) {
this.buffer = ByteUtils.toLocalBufferType(workingId);
}
else if (typeof workingId === 'string') {
if (workingId.length === 24 && checkForHexRegExp.test(workingId)) {
this.buffer = ByteUtils.fromHex(workingId);
}
else {
throw new BSONError('input must be a 24 character hex string, 12 byte Uint8Array, or an integer');
}
}
else {
throw new BSONError('Argument passed in does not match the accepted types');
}
if (ObjectId.cacheHexString) {
this.__id = ByteUtils.toHex(this.id);
}
}
get id() {
return this.buffer;
}
set id(value) {
this.buffer = value;
if (ObjectId.cacheHexString) {
this.__id = ByteUtils.toHex(value);
}
}
toHexString() {
if (ObjectId.cacheHexString && this.__id) {
return this.__id;
}
const hexString = ByteUtils.toHex(this.id);
if (ObjectId.cacheHexString && !this.__id) {
this.__id = hexString;
}
return hexString;
}
static getInc() {
return (ObjectId.index = (ObjectId.index + 1) % 0xffffff);
}
static generate(time) {
if ('number' !== typeof time) {
time = Math.floor(Date.now() / 1000);
}
const inc = ObjectId.getInc();
const buffer = ByteUtils.allocateUnsafe(12);
NumberUtils.setInt32BE(buffer, 0, time);
if (PROCESS_UNIQUE === null) {
PROCESS_UNIQUE = ByteUtils.randomBytes(5);
}
buffer[4] = PROCESS_UNIQUE[0];
buffer[5] = PROCESS_UNIQUE[1];
buffer[6] = PROCESS_UNIQUE[2];
buffer[7] = PROCESS_UNIQUE[3];
buffer[8] = PROCESS_UNIQUE[4];
buffer[11] = inc & 0xff;
buffer[10] = (inc >> 8) & 0xff;
buffer[9] = (inc >> 16) & 0xff;
return buffer;
}
toString(encoding) {
if (encoding === 'base64')
return ByteUtils.toBase64(this.id);
if (encoding === 'hex')
return this.toHexString();
return this.toHexString();
}
toJSON() {
return this.toHexString();
}
static is(variable) {
return (variable != null &&
typeof variable === 'object' &&
'_bsontype' in variable &&
variable._bsontype === 'ObjectId');
}
equals(otherId) {
if (otherId === undefined || otherId === null) {
return false;
}
if (ObjectId.is(otherId)) {
return (this.buffer[11] === otherId.buffer[11] && ByteUtils.equals(this.buffer, otherId.buffer));
}
if (typeof otherId === 'string') {
return otherId.toLowerCase() === this.toHexString();
}
if (typeof otherId === 'object' && typeof otherId.toHexString === 'function') {
const otherIdString = otherId.toHexString();
const thisIdString = this.toHexString();
return typeof otherIdString === 'string' && otherIdString.toLowerCase() === thisIdString;
}
return false;
}
getTimestamp() {
const timestamp = new Date();
const time = NumberUtils.getUint32BE(this.buffer, 0);
timestamp.setTime(Math.floor(time) * 1000);
return timestamp;
}
static createPk() {
return new ObjectId();
}
serializeInto(uint8array, index) {
uint8array[index] = this.buffer[0];
uint8array[index + 1] = this.buffer[1];
uint8array[index + 2] = this.buffer[2];
uint8array[index + 3] = this.buffer[3];
uint8array[index + 4] = this.buffer[4];
uint8array[index + 5] = this.buffer[5];
uint8array[index + 6] = this.buffer[6];
uint8array[index + 7] = this.buffer[7];
uint8array[index + 8] = this.buffer[8];
uint8array[index + 9] = this.buffer[9];
uint8array[index + 10] = this.buffer[10];
uint8array[index + 11] = this.buffer[11];
return 12;
}
static createFromTime(time) {
const buffer = ByteUtils.allocate(12);
for (let i = 11; i >= 4; i--)
buffer[i] = 0;
NumberUtils.setInt32BE(buffer, 0, time);
return new ObjectId(buffer);
}
static createFromHexString(hexString) {
if (hexString?.length !== 24) {
throw new BSONError('hex string must be 24 characters');
}
return new ObjectId(ByteUtils.fromHex(hexString));
}
static createFromBase64(base64) {
if (base64?.length !== 16) {
throw new BSONError('base64 string must be 16 characters');
}
return new ObjectId(ByteUtils.fromBase64(base64));
}
static isValid(id) {
if (id == null)
return false;
try {
new ObjectId(id);
return true;
}
catch {
return false;
}
}
toExtendedJSON() {
if (this.toHexString)
return { $oid: this.toHexString() };
return { $oid: this.toString('hex') };
}
static fromExtendedJSON(doc) {
return new ObjectId(doc.$oid);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
return `new ObjectId(${inspect(this.toHexString(), options)})`;
}
}
ObjectId.index = Math.floor(Math.random() * 0xffffff);
function internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined) {
let totalLength = 4 + 1;
if (Array.isArray(object)) {
for (let i = 0; i < object.length; i++) {
totalLength += calculateElement(i.toString(), object[i], serializeFunctions, true, ignoreUndefined);
}
}
else {
if (typeof object?.toBSON === 'function') {
object = object.toBSON();
}
for (const key of Object.keys(object)) {
totalLength += calculateElement(key, object[key], serializeFunctions, false, ignoreUndefined);
}
}
return totalLength;
}
function calculateElement(name, value, serializeFunctions = false, isArray = false, ignoreUndefined = false) {
if (typeof value?.toBSON === 'function') {
value = value.toBSON();
}
switch (typeof value) {
case 'string':
return 1 + ByteUtils.utf8ByteLength(name) + 1 + 4 + ByteUtils.utf8ByteLength(value) + 1;
case 'number':
if (Math.floor(value) === value &&
value >= JS_INT_MIN &&
value <= JS_INT_MAX) {
if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (4 + 1);
}
else {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
}
}
else {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
}
case 'undefined':
if (isArray || !ignoreUndefined)
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
return 0;
case 'boolean':
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 1);
case 'object':
if (value != null &&
typeof value._bsontype === 'string' &&
value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
throw new BSONVersionError();
}
else if (value == null || value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + 1;
}
else if (value._bsontype === 'ObjectId') {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (12 + 1);
}
else if (value instanceof Date || isDate(value)) {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
}
else if (ArrayBuffer.isView(value) ||
value instanceof ArrayBuffer ||
isAnyArrayBuffer(value)) {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (1 + 4 + 1) + value.byteLength);
}
else if (value._bsontype === 'Long' ||
value._bsontype === 'Double' ||
value._bsontype === 'Timestamp') {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (8 + 1);
}
else if (value._bsontype === 'Decimal128') {
return (name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (16 + 1);
}
else if (value._bsontype === 'Code') {
if (value.scope != null && Object.keys(value.scope).length > 0) {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
4 +
4 +
ByteUtils.utf8ByteLength(value.code.toString()) +
1 +
internalCalculateObjectSize(value.scope, serializeFunctions, ignoreUndefined));
}
else {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
4 +
ByteUtils.utf8ByteLength(value.code.toString()) +
1);
}
}
else if (value._bsontype === 'Binary') {
const binary = value;
if (binary.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
(binary.position + 1 + 4 + 1 + 4));
}
else {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) + (binary.position + 1 + 4 + 1));
}
}
else if (value._bsontype === 'Symbol') {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
ByteUtils.utf8ByteLength(value.value) +
4 +
1 +
1);
}
else if (value._bsontype === 'DBRef') {
const ordered_values = Object.assign({
$ref: value.collection,
$id: value.oid
}, value.fields);
if (value.db != null) {
ordered_values['$db'] = value.db;
}
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
internalCalculateObjectSize(ordered_values, serializeFunctions, ignoreUndefined));
}
else if (value instanceof RegExp || isRegExp(value)) {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
ByteUtils.utf8ByteLength(value.source) +
1 +
(value.global ? 1 : 0) +
(value.ignoreCase ? 1 : 0) +
(value.multiline ? 1 : 0) +
1);
}
else if (value._bsontype === 'BSONRegExp') {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
ByteUtils.utf8ByteLength(value.pattern) +
1 +
ByteUtils.utf8ByteLength(value.options) +
1);
}
else {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
internalCalculateObjectSize(value, serializeFunctions, ignoreUndefined) +
1);
}
case 'function':
if (serializeFunctions) {
return ((name != null ? ByteUtils.utf8ByteLength(name) + 1 : 0) +
1 +
4 +
ByteUtils.utf8ByteLength(value.toString()) +
1);
}
}
return 0;
}
function alphabetize(str) {
return str.split('').sort().join('');
}
class BSONRegExp extends BSONValue {
get _bsontype() {
return 'BSONRegExp';
}
constructor(pattern, options) {
super();
this.pattern = pattern;
this.options = alphabetize(options ?? '');
if (this.pattern.indexOf('\x00') !== -1) {
throw new BSONError(`BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}`);
}
if (this.options.indexOf('\x00') !== -1) {
throw new BSONError(`BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}`);
}
for (let i = 0; i < this.options.length; i++) {
if (!(this.options[i] === 'i' ||
this.options[i] === 'm' ||
this.options[i] === 'x' ||
this.options[i] === 'l' ||
this.options[i] === 's' ||
this.options[i] === 'u')) {
throw new BSONError(`The regular expression option [${this.options[i]}] is not supported`);
}
}
}
static parseOptions(options) {
return options ? options.split('').sort().join('') : '';
}
toExtendedJSON(options) {
options = options || {};
if (options.legacy) {
return { $regex: this.pattern, $options: this.options };
}
return { $regularExpression: { pattern: this.pattern, options: this.options } };
}
static fromExtendedJSON(doc) {
if ('$regex' in doc) {
if (typeof doc.$regex !== 'string') {
if (doc.$regex._bsontype === 'BSONRegExp') {
return doc;
}
}
else {
return new BSONRegExp(doc.$regex, BSONRegExp.parseOptions(doc.$options));
}
}
if ('$regularExpression' in doc) {
return new BSONRegExp(doc.$regularExpression.pattern, BSONRegExp.parseOptions(doc.$regularExpression.options));
}
throw new BSONError(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(doc)}`);
}
inspect(depth, options, inspect) {
const stylize = getStylizeFunction(options) ?? (v => v);
inspect ??= defaultInspect;
const pattern = stylize(inspect(this.pattern), 'regexp');
const flags = stylize(inspect(this.options), 'regexp');
return `new BSONRegExp(${pattern}, ${flags})`;
}
}
class BSONSymbol extends BSONValue {
get _bsontype() {
return 'BSONSymbol';
}
constructor(value) {
super();
this.value = value;
}
valueOf() {
return this.value;
}
toString() {
return this.value;
}
toJSON() {
return this.value;
}
toExtendedJSON() {
return { $symbol: this.value };
}
static fromExtendedJSON(doc) {
return new BSONSymbol(doc.$symbol);
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
return `new BSONSymbol(${inspect(this.value, options)})`;
}
}
const LongWithoutOverridesClass = Long;
class Timestamp extends LongWithoutOverridesClass {
get _bsontype() {
return 'Timestamp';
}
constructor(low) {
if (low == null) {
super(0, 0, true);
}
else if (typeof low === 'bigint') {
super(low, true);
}
else if (Long.isLong(low)) {
super(low.low, low.high, true);
}
else if (typeof low === 'object' && 't' in low && 'i' in low) {
if (typeof low.t !== 'number' && (typeof low.t !== 'object' || low.t._bsontype !== 'Int32')) {
throw new BSONError('Timestamp constructed from { t, i } must provide t as a number');
}
if (typeof low.i !== 'number' && (typeof low.i !== 'object' || low.i._bsontype !== 'Int32')) {
throw new BSONError('Timestamp constructed from { t, i } must provide i as a number');
}
const t = Number(low.t);
const i = Number(low.i);
if (t < 0 || Number.isNaN(t)) {
throw new BSONError('Timestamp constructed from { t, i } must provide a positive t');
}
if (i < 0 || Number.isNaN(i)) {
throw new BSONError('Timestamp constructed from { t, i } must provide a positive i');
}
if (t > 4294967295) {
throw new BSONError('Timestamp constructed from { t, i } must provide t equal or less than uint32 max');
}
if (i > 4294967295) {
throw new BSONError('Timestamp constructed from { t, i } must provide i equal or less than uint32 max');
}
super(i, t, true);
}
else {
throw new BSONError('A Timestamp can only be constructed with: bigint, Long, or { t: number; i: number }');
}
}
toJSON() {
return {
$timestamp: this.toString()
};
}
static fromInt(value) {
return new Timestamp(Long.fromInt(value, true));
}
static fromNumber(value) {
return new Timestamp(Long.fromNumber(value, true));
}
static fromBits(lowBits, highBits) {
return new Timestamp({ i: lowBits, t: highBits });
}
static fromString(str, optRadix) {
return new Timestamp(Long.fromString(str, true, optRadix));
}
toExtendedJSON() {
return { $timestamp: { t: this.high >>> 0, i: this.low >>> 0 } };
}
static fromExtendedJSON(doc) {
const i = Long.isLong(doc.$timestamp.i)
? doc.$timestamp.i.getLowBitsUnsigned()
: doc.$timestamp.i;
const t = Long.isLong(doc.$timestamp.t)
? doc.$timestamp.t.getLowBitsUnsigned()
: doc.$timestamp.t;
return new Timestamp({ t, i });
}
inspect(depth, options, inspect) {
inspect ??= defaultInspect;
const t = inspect(this.high >>> 0, options);
const i = inspect(this.low >>> 0, options);
return `new Timestamp({ t: ${t}, i: ${i} })`;
}
}
Timestamp.MAX_VALUE = Long.MAX_UNSIGNED_VALUE;
const JS_INT_MAX_LONG = Long.fromNumber(JS_INT_MAX);
const JS_INT_MIN_LONG = Long.fromNumber(JS_INT_MIN);
function internalDeserialize(buffer, options, isArray) {
options = options == null ? {} : options;
const index = options && options.index ? options.index : 0;
const size = NumberUtils.getInt32LE(buffer, index);
if (size < 5) {
throw new BSONError(`bson size must be >= 5, is ${size}`);
}
if (options.allowObjectSmallerThanBufferSize && buffer.length < size) {
throw new BSONError(`buffer length ${buffer.length} must be >= bson size ${size}`);
}
if (!options.allowObjectSmallerThanBufferSize && buffer.length !== size) {
throw new BSONError(`buffer length ${buffer.length} must === bson size ${size}`);
}
if (size + index > buffer.byteLength) {
throw new BSONError(`(bson size ${size} + options.index ${index} must be <= buffer length ${buffer.byteLength})`);
}
if (buffer[index + size - 1] !== 0) {
throw new BSONError("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");
}
return deserializeObject(buffer, index, options, isArray);
}
const allowedDBRefKeys = /^\$ref$|^\$id$|^\$db$/;
function deserializeObject(buffer, index, options, isArray = false) {
const fieldsAsRaw = options['fieldsAsRaw'] == null ? null : options['fieldsAsRaw'];
const raw = options['raw'] == null ? false : options['raw'];
const bsonRegExp = typeof options['bsonRegExp'] === 'boolean' ? options['bsonRegExp'] : false;
const promoteBuffers = options.promoteBuffers ?? false;
const promoteLongs = options.promoteLongs ?? true;
const promoteValues = options.promoteValues ?? true;
const useBigInt64 = options.useBigInt64 ?? false;
if (useBigInt64 && !promoteValues) {
throw new BSONError('Must either request bigint or Long for int64 deserialization');
}
if (useBigInt64 && !promoteLongs) {
throw new BSONError('Must either request bigint or Long for int64 deserialization');
}
const validation = options.validation == null ? { utf8: true } : options.validation;
let globalUTFValidation = true;
let validationSetting;
let utf8KeysSet;
const utf8ValidatedKeys = validation.utf8;
if (typeof utf8ValidatedKeys === 'boolean') {
validationSetting = utf8ValidatedKeys;
}
else {
globalUTFValidation = false;
const utf8ValidationValues = Object.keys(utf8ValidatedKeys).map(function (key) {
return utf8ValidatedKeys[key];
});
if (utf8ValidationValues.length === 0) {
throw new BSONError('UTF-8 validation setting cannot be empty');
}
if (typeof utf8ValidationValues[0] !== 'boolean') {
throw new BSONError('Invalid UTF-8 validation option, must specify boolean values');
}
validationSetting = utf8ValidationValues[0];
if (!utf8ValidationValues.every(item => item === validationSetting)) {
throw new BSONError('Invalid UTF-8 validation option - keys must be all true or all false');
}
}
if (!globalUTFValidation) {
utf8KeysSet = new Set();
for (const key of Object.keys(utf8ValidatedKeys)) {
utf8KeysSet.add(key);
}
}
const startIndex = index;
if (buffer.length < 5)
throw new BSONError('corrupt bson message < 5 bytes long');
const size = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (size < 5 || size > buffer.length)
throw new BSONError('corrupt bson message');
const object = isArray ? [] : {};
let arrayIndex = 0;
const done = false;
let isPossibleDBRef = isArray ? false : null;
while (!done) {
const elementType = buffer[index++];
if (elementType === 0)
break;
let i = index;
while (buffer[i] !== 0x00 && i < buffer.length) {
i++;
}
if (i >= buffer.byteLength)
throw new BSONError('Bad BSON Document: illegal CString');
const name = isArray ? arrayIndex++ : ByteUtils.toUTF8(buffer, index, i, false);
let shouldValidateKey = true;
if (globalUTFValidation || utf8KeysSet?.has(name)) {
shouldValidateKey = validationSetting;
}
else {
shouldValidateKey = !validationSetting;
}
if (isPossibleDBRef !== false && name[0] === '$') {
isPossibleDBRef = allowedDBRefKeys.test(name);
}
let value;
index = i + 1;
if (elementType === BSON_DATA_STRING) {
const stringSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (stringSize <= 0 ||
stringSize > buffer.length - index ||
buffer[index + stringSize - 1] !== 0) {
throw new BSONError('bad string length in bson');
}
value = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
index = index + stringSize;
}
else if (elementType === BSON_DATA_OID) {
const oid = ByteUtils.allocateUnsafe(12);
for (let i = 0; i < 12; i++)
oid[i] = buffer[index + i];
value = new ObjectId(oid);
index = index + 12;
}
else if (elementType === BSON_DATA_INT && promoteValues === false) {
value = new Int32(NumberUtils.getInt32LE(buffer, index));
index += 4;
}
else if (elementType === BSON_DATA_INT) {
value = NumberUtils.getInt32LE(buffer, index);
index += 4;
}
else if (elementType === BSON_DATA_NUMBER) {
value = NumberUtils.getFloat64LE(buffer, index);
index += 8;
if (promoteValues === false)
value = new Double(value);
}
else if (elementType === BSON_DATA_DATE) {
const lowBits = NumberUtils.getInt32LE(buffer, index);
const highBits = NumberUtils.getInt32LE(buffer, index + 4);
index += 8;
value = new Date(new Long(lowBits, highBits).toNumber());
}
else if (elementType === BSON_DATA_BOOLEAN) {
if (buffer[index] !== 0 && buffer[index] !== 1)
throw new BSONError('illegal boolean type value');
value = buffer[index++] === 1;
}
else if (elementType === BSON_DATA_OBJECT) {
const _index = index;
const objectSize = NumberUtils.getInt32LE(buffer, index);
if (objectSize <= 0 || objectSize > buffer.length - index)
throw new BSONError('bad embedded document length in bson');
if (raw) {
value = buffer.slice(index, index + objectSize);
}
else {
let objectOptions = options;
if (!globalUTFValidation) {
objectOptions = { ...options, validation: { utf8: shouldValidateKey } };
}
value = deserializeObject(buffer, _index, objectOptions, false);
}
index = index + objectSize;
}
else if (elementType === BSON_DATA_ARRAY) {
const _index = index;
const objectSize = NumberUtils.getInt32LE(buffer, index);
let arrayOptions = options;
const stopIndex = index + objectSize;
if (fieldsAsRaw && fieldsAsRaw[name]) {
arrayOptions = { ...options, raw: true };
}
if (!globalUTFValidation) {
arrayOptions = { ...arrayOptions, validation: { utf8: shouldValidateKey } };
}
value = deserializeObject(buffer, _index, arrayOptions, true);
index = index + objectSize;
if (buffer[index - 1] !== 0)
throw new BSONError('invalid array terminator byte');
if (index !== stopIndex)
throw new BSONError('corrupted array bson');
}
else if (elementType === BSON_DATA_UNDEFINED) {
value = undefined;
}
else if (elementType === BSON_DATA_NULL) {
value = null;
}
else if (elementType === BSON_DATA_LONG) {
if (useBigInt64) {
value = NumberUtils.getBigInt64LE(buffer, index);
index += 8;
}
else {
const lowBits = NumberUtils.getInt32LE(buffer, index);
const highBits = NumberUtils.getInt32LE(buffer, index + 4);
index += 8;
const long = new Long(lowBits, highBits);
if (promoteLongs && promoteValues === true) {
value =
long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG)
? long.toNumber()
: long;
}
else {
value = long;
}
}
}
else if (elementType === BSON_DATA_DECIMAL128) {
const bytes = ByteUtils.allocateUnsafe(16);
for (let i = 0; i < 16; i++)
bytes[i] = buffer[index + i];
index = index + 16;
value = new Decimal128(bytes);
}
else if (elementType === BSON_DATA_BINARY) {
let binarySize = NumberUtils.getInt32LE(buffer, index);
index += 4;
const totalBinarySize = binarySize;
const subType = buffer[index++];
if (binarySize < 0)
throw new BSONError('Negative binary type element size found');
if (binarySize > buffer.byteLength)
throw new BSONError('Binary type size larger than document size');
if (buffer['slice'] != null) {
if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
binarySize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (binarySize < 0)
throw new BSONError('Negative binary type element size found for subtype 0x02');
if (binarySize > totalBinarySize - 4)
throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
if (binarySize < totalBinarySize - 4)
throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
}
if (promoteBuffers && promoteValues) {
value = ByteUtils.toLocalBufferType(buffer.slice(index, index + binarySize));
}
else {
value = new Binary(buffer.slice(index, index + binarySize), subType);
if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
value = value.toUUID();
}
}
}
else {
if (subType === Binary.SUBTYPE_BYTE_ARRAY) {
binarySize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (binarySize < 0)
throw new BSONError('Negative binary type element size found for subtype 0x02');
if (binarySize > totalBinarySize - 4)
throw new BSONError('Binary type with subtype 0x02 contains too long binary size');
if (binarySize < totalBinarySize - 4)
throw new BSONError('Binary type with subtype 0x02 contains too short binary size');
}
if (promoteBuffers && promoteValues) {
value = ByteUtils.allocateUnsafe(binarySize);
for (i = 0; i < binarySize; i++) {
value[i] = buffer[index + i];
}
}
else {
value = new Binary(buffer.slice(index, index + binarySize), subType);
if (subType === BSON_BINARY_SUBTYPE_UUID_NEW && UUID.isValid(value)) {
value = value.toUUID();
}
}
}
index = index + binarySize;
}
else if (elementType === BSON_DATA_REGEXP && bsonRegExp === false) {
i = index;
while (buffer[i] !== 0x00 && i < buffer.length) {
i++;
}
if (i >= buffer.length)
throw new BSONError('Bad BSON Document: illegal CString');
const source = ByteUtils.toUTF8(buffer, index, i, false);
index = i + 1;
i = index;
while (buffer[i] !== 0x00 && i < buffer.length) {
i++;
}
if (i >= buffer.length)
throw new BSONError('Bad BSON Document: illegal CString');
const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
index = i + 1;
const optionsArray = new Array(regExpOptions.length);
for (i = 0; i < regExpOptions.length; i++) {
switch (regExpOptions[i]) {
case 'm':
optionsArray[i] = 'm';
break;
case 's':
optionsArray[i] = 'g';
break;
case 'i':
optionsArray[i] = 'i';
break;
}
}
value = new RegExp(source, optionsArray.join(''));
}
else if (elementType === BSON_DATA_REGEXP && bsonRegExp === true) {
i = index;
while (buffer[i] !== 0x00 && i < buffer.length) {
i++;
}
if (i >= buffer.length)
throw new BSONError('Bad BSON Document: illegal CString');
const source = ByteUtils.toUTF8(buffer, index, i, false);
index = i + 1;
i = index;
while (buffer[i] !== 0x00 && i < buffer.length) {
i++;
}
if (i >= buffer.length)
throw new BSONError('Bad BSON Document: illegal CString');
const regExpOptions = ByteUtils.toUTF8(buffer, index, i, false);
index = i + 1;
value = new BSONRegExp(source, regExpOptions);
}
else if (elementType === BSON_DATA_SYMBOL) {
const stringSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (stringSize <= 0 ||
stringSize > buffer.length - index ||
buffer[index + stringSize - 1] !== 0) {
throw new BSONError('bad string length in bson');
}
const symbol = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
value = promoteValues ? symbol : new BSONSymbol(symbol);
index = index + stringSize;
}
else if (elementType === BSON_DATA_TIMESTAMP) {
value = new Timestamp({
i: NumberUtils.getUint32LE(buffer, index),
t: NumberUtils.getUint32LE(buffer, index + 4)
});
index += 8;
}
else if (elementType === BSON_DATA_MIN_KEY) {
value = new MinKey();
}
else if (elementType === BSON_DATA_MAX_KEY) {
value = new MaxKey();
}
else if (elementType === BSON_DATA_CODE) {
const stringSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (stringSize <= 0 ||
stringSize > buffer.length - index ||
buffer[index + stringSize - 1] !== 0) {
throw new BSONError('bad string length in bson');
}
const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
value = new Code(functionString);
index = index + stringSize;
}
else if (elementType === BSON_DATA_CODE_W_SCOPE) {
const totalSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (totalSize < 4 + 4 + 4 + 1) {
throw new BSONError('code_w_scope total size shorter minimum expected length');
}
const stringSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (stringSize <= 0 ||
stringSize > buffer.length - index ||
buffer[index + stringSize - 1] !== 0) {
throw new BSONError('bad string length in bson');
}
const functionString = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, shouldValidateKey);
index = index + stringSize;
const _index = index;
const objectSize = NumberUtils.getInt32LE(buffer, index);
const scopeObject = deserializeObject(buffer, _index, options, false);
index = index + objectSize;
if (totalSize < 4 + 4 + objectSize + stringSize) {
throw new BSONError('code_w_scope total size is too short, truncating scope');
}
if (totalSize > 4 + 4 + objectSize + stringSize) {
throw new BSONError('code_w_scope total size is too long, clips outer document');
}
value = new Code(functionString, scopeObject);
}
else if (elementType === BSON_DATA_DBPOINTER) {
const stringSize = NumberUtils.getInt32LE(buffer, index);
index += 4;
if (stringSize <= 0 ||
stringSize > buffer.length - index ||
buffer[index + stringSize - 1] !== 0)
throw new BSONError('bad string length in bson');
if (validation != null && validation.utf8) {
if (!validateUtf8(buffer, index, index + stringSize - 1)) {
throw new BSONError('Invalid UTF-8 string in BSON document');
}
}
const namespace = ByteUtils.toUTF8(buffer, index, index + stringSize - 1, false);
index = index + stringSize;
const oidBuffer = ByteUtils.allocateUnsafe(12);
for (let i = 0; i < 12; i++)
oidBuffer[i] = buffer[index + i];
const oid = new ObjectId(oidBuffer);
index = index + 12;
value = new DBRef(namespace, oid);
}
else {
throw new BSONError(`Detected unknown BSON type ${elementType.toString(16)} for fieldname "${name}"`);
}
if (name === '__proto__') {
Object.defineProperty(object, name, {
value,
writable: true,
enumerable: true,
configurable: true
});
}
else {
object[name] = value;
}
}
if (size !== index - startIndex) {
if (isArray)
throw new BSONError('corrupt array bson');
throw new BSONError('corrupt object bson');
}
if (!isPossibleDBRef)
return object;
if (isDBRefLike(object)) {
const copy = Object.assign({}, object);
delete copy.$ref;
delete copy.$id;
delete copy.$db;
return new DBRef(object.$ref, object.$id, object.$db, copy);
}
return object;
}
const regexp = /\x00/;
const ignoreKeys = new Set(['$db', '$ref', '$id', '$clusterTime']);
function serializeString(buffer, key, value, index) {
buffer[index++] = BSON_DATA_STRING;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes + 1;
buffer[index - 1] = 0;
const size = ByteUtils.encodeUTF8Into(buffer, value, index + 4);
NumberUtils.setInt32LE(buffer, index, size + 1);
index = index + 4 + size;
buffer[index++] = 0;
return index;
}
function serializeNumber(buffer, key, value, index) {
const isNegativeZero = Object.is(value, -0);
const type = !isNegativeZero &&
Number.isSafeInteger(value) &&
value <= BSON_INT32_MAX &&
value >= BSON_INT32_MIN
? BSON_DATA_INT
: BSON_DATA_NUMBER;
buffer[index++] = type;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0x00;
if (type === BSON_DATA_INT) {
index += NumberUtils.setInt32LE(buffer, index, value);
}
else {
index += NumberUtils.setFloat64LE(buffer, index, value);
}
return index;
}
function serializeBigInt(buffer, key, value, index) {
buffer[index++] = BSON_DATA_LONG;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index += numberOfWrittenBytes;
buffer[index++] = 0;
index += NumberUtils.setBigInt64LE(buffer, index, value);
return index;
}
function serializeNull(buffer, key, _, index) {
buffer[index++] = BSON_DATA_NULL;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
return index;
}
function serializeBoolean(buffer, key, value, index) {
buffer[index++] = BSON_DATA_BOOLEAN;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
buffer[index++] = value ? 1 : 0;
return index;
}
function serializeDate(buffer, key, value, index) {
buffer[index++] = BSON_DATA_DATE;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const dateInMilis = Long.fromNumber(value.getTime());
const lowBits = dateInMilis.getLowBits();
const highBits = dateInMilis.getHighBits();
index += NumberUtils.setInt32LE(buffer, index, lowBits);
index += NumberUtils.setInt32LE(buffer, index, highBits);
return index;
}
function serializeRegExp(buffer, key, value, index) {
buffer[index++] = BSON_DATA_REGEXP;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
if (value.source && value.source.match(regexp) != null) {
throw new BSONError('value ' + value.source + ' must not contain null bytes');
}
index = index + ByteUtils.encodeUTF8Into(buffer, value.source, index);
buffer[index++] = 0x00;
if (value.ignoreCase)
buffer[index++] = 0x69;
if (value.global)
buffer[index++] = 0x73;
if (value.multiline)
buffer[index++] = 0x6d;
buffer[index++] = 0x00;
return index;
}
function serializeBSONRegExp(buffer, key, value, index) {
buffer[index++] = BSON_DATA_REGEXP;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
if (value.pattern.match(regexp) != null) {
throw new BSONError('pattern ' + value.pattern + ' must not contain null bytes');
}
index = index + ByteUtils.encodeUTF8Into(buffer, value.pattern, index);
buffer[index++] = 0x00;
const sortedOptions = value.options.split('').sort().join('');
index = index + ByteUtils.encodeUTF8Into(buffer, sortedOptions, index);
buffer[index++] = 0x00;
return index;
}
function serializeMinMax(buffer, key, value, index) {
if (value === null) {
buffer[index++] = BSON_DATA_NULL;
}
else if (value._bsontype === 'MinKey') {
buffer[index++] = BSON_DATA_MIN_KEY;
}
else {
buffer[index++] = BSON_DATA_MAX_KEY;
}
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
return index;
}
function serializeObjectId(buffer, key, value, index) {
buffer[index++] = BSON_DATA_OID;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
index += value.serializeInto(buffer, index);
return index;
}
function serializeBuffer(buffer, key, value, index) {
buffer[index++] = BSON_DATA_BINARY;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const size = value.length;
index += NumberUtils.setInt32LE(buffer, index, size);
buffer[index++] = BSON_BINARY_SUBTYPE_DEFAULT;
if (size <= 16) {
for (let i = 0; i < size; i++)
buffer[index + i] = value[i];
}
else {
buffer.set(value, index);
}
index = index + size;
return index;
}
function serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path) {
if (path.has(value)) {
throw new BSONError('Cannot convert circular structure to BSON');
}
path.add(value);
buffer[index++] = Array.isArray(value) ? BSON_DATA_ARRAY : BSON_DATA_OBJECT;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const endIndex = serializeInto(buffer, value, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
path.delete(value);
return endIndex;
}
function serializeDecimal128(buffer, key, value, index) {
buffer[index++] = BSON_DATA_DECIMAL128;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
for (let i = 0; i < 16; i++)
buffer[index + i] = value.bytes[i];
return index + 16;
}
function serializeLong(buffer, key, value, index) {
buffer[index++] =
value._bsontype === 'Long' ? BSON_DATA_LONG : BSON_DATA_TIMESTAMP;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const lowBits = value.getLowBits();
const highBits = value.getHighBits();
index += NumberUtils.setInt32LE(buffer, index, lowBits);
index += NumberUtils.setInt32LE(buffer, index, highBits);
return index;
}
function serializeInt32(buffer, key, value, index) {
value = value.valueOf();
buffer[index++] = BSON_DATA_INT;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
index += NumberUtils.setInt32LE(buffer, index, value);
return index;
}
function serializeDouble(buffer, key, value, index) {
buffer[index++] = BSON_DATA_NUMBER;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
index += NumberUtils.setFloat64LE(buffer, index, value.value);
return index;
}
function serializeFunction(buffer, key, value, index) {
buffer[index++] = BSON_DATA_CODE;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const functionString = value.toString();
const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
NumberUtils.setInt32LE(buffer, index, size);
index = index + 4 + size - 1;
buffer[index++] = 0;
return index;
}
function serializeCode(buffer, key, value, index, checkKeys = false, depth = 0, serializeFunctions = false, ignoreUndefined = true, path) {
if (value.scope && typeof value.scope === 'object') {
buffer[index++] = BSON_DATA_CODE_W_SCOPE;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
let startIndex = index;
const functionString = value.code;
index = index + 4;
const codeSize = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
NumberUtils.setInt32LE(buffer, index, codeSize);
buffer[index + 4 + codeSize - 1] = 0;
index = index + codeSize + 4;
const endIndex = serializeInto(buffer, value.scope, checkKeys, index, depth + 1, serializeFunctions, ignoreUndefined, path);
index = endIndex - 1;
const totalSize = endIndex - startIndex;
startIndex += NumberUtils.setInt32LE(buffer, startIndex, totalSize);
buffer[index++] = 0;
}
else {
buffer[index++] = BSON_DATA_CODE;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const functionString = value.code.toString();
const size = ByteUtils.encodeUTF8Into(buffer, functionString, index + 4) + 1;
NumberUtils.setInt32LE(buffer, index, size);
index = index + 4 + size - 1;
buffer[index++] = 0;
}
return index;
}
function serializeBinary(buffer, key, value, index) {
buffer[index++] = BSON_DATA_BINARY;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const data = value.buffer;
let size = value.position;
if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY)
size = size + 4;
index += NumberUtils.setInt32LE(buffer, index, size);
buffer[index++] = value.sub_type;
if (value.sub_type === Binary.SUBTYPE_BYTE_ARRAY) {
size = size - 4;
index += NumberUtils.setInt32LE(buffer, index, size);
}
if (size <= 16) {
for (let i = 0; i < size; i++)
buffer[index + i] = data[i];
}
else {
buffer.set(data, index);
}
index = index + value.position;
return index;
}
function serializeSymbol(buffer, key, value, index) {
buffer[index++] = BSON_DATA_SYMBOL;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
const size = ByteUtils.encodeUTF8Into(buffer, value.value, index + 4) + 1;
NumberUtils.setInt32LE(buffer, index, size);
index = index + 4 + size - 1;
buffer[index++] = 0;
return index;
}
function serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path) {
buffer[index++] = BSON_DATA_OBJECT;
const numberOfWrittenBytes = ByteUtils.encodeUTF8Into(buffer, key, index);
index = index + numberOfWrittenBytes;
buffer[index++] = 0;
let startIndex = index;
let output = {
$ref: value.collection || value.namespace,
$id: value.oid
};
if (value.db != null) {
output.$db = value.db;
}
output = Object.assign(output, value.fields);
const endIndex = serializeInto(buffer, output, false, index, depth + 1, serializeFunctions, true, path);
const size = endIndex - startIndex;
startIndex += NumberUtils.setInt32LE(buffer, index, size);
return endIndex;
}
function serializeInto(buffer, object, checkKeys, startingIndex, depth, serializeFunctions, ignoreUndefined, path) {
if (path == null) {
if (object == null) {
buffer[0] = 0x05;
buffer[1] = 0x00;
buffer[2] = 0x00;
buffer[3] = 0x00;
buffer[4] = 0x00;
return 5;
}
if (Array.isArray(object)) {
throw new BSONError('serialize does not support an array as the root input');
}
if (typeof object !== 'object') {
throw new BSONError('serialize does not support non-object as the root input');
}
else if ('_bsontype' in object && typeof object._bsontype === 'string') {
throw new BSONError(`BSON types cannot be serialized as a document`);
}
else if (isDate(object) ||
isRegExp(object) ||
isUint8Array(object) ||
isAnyArrayBuffer(object)) {
throw new BSONError(`date, regexp, typedarray, and arraybuffer cannot be BSON documents`);
}
path = new Set();
}
path.add(object);
let index = startingIndex + 4;
if (Array.isArray(object)) {
for (let i = 0; i < object.length; i++) {
const key = `${i}`;
let value = object[i];
if (typeof value?.toBSON === 'function') {
value = value.toBSON();
}
if (typeof value === 'string') {
index = serializeString(buffer, key, value, index);
}
else if (typeof value === 'number') {
index = serializeNumber(buffer, key, value, index);
}
else if (typeof value === 'bigint') {
index = serializeBigInt(buffer, key, value, index);
}
else if (typeof value === 'boolean') {
index = serializeBoolean(buffer, key, value, index);
}
else if (value instanceof Date || isDate(value)) {
index = serializeDate(buffer, key, value, index);
}
else if (value === undefined) {
index = serializeNull(buffer, key, value, index);
}
else if (value === null) {
index = serializeNull(buffer, key, value, index);
}
else if (isUint8Array(value)) {
index = serializeBuffer(buffer, key, value, index);
}
else if (value instanceof RegExp || isRegExp(value)) {
index = serializeRegExp(buffer, key, value, index);
}
else if (typeof value === 'object' && value._bsontype == null) {
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (typeof value === 'object' &&
value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
throw new BSONVersionError();
}
else if (value._bsontype === 'ObjectId') {
index = serializeObjectId(buffer, key, value, index);
}
else if (value._bsontype === 'Decimal128') {
index = serializeDecimal128(buffer, key, value, index);
}
else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
index = serializeLong(buffer, key, value, index);
}
else if (value._bsontype === 'Double') {
index = serializeDouble(buffer, key, value, index);
}
else if (typeof value === 'function' && serializeFunctions) {
index = serializeFunction(buffer, key, value, index);
}
else if (value._bsontype === 'Code') {
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (value._bsontype === 'Binary') {
index = serializeBinary(buffer, key, value, index);
}
else if (value._bsontype === 'BSONSymbol') {
index = serializeSymbol(buffer, key, value, index);
}
else if (value._bsontype === 'DBRef') {
index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
}
else if (value._bsontype === 'BSONRegExp') {
index = serializeBSONRegExp(buffer, key, value, index);
}
else if (value._bsontype === 'Int32') {
index = serializeInt32(buffer, key, value, index);
}
else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
index = serializeMinMax(buffer, key, value, index);
}
else if (typeof value._bsontype !== 'undefined') {
throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
}
}
}
else if (object instanceof Map || isMap(object)) {
const iterator = object.entries();
let done = false;
while (!done) {
const entry = iterator.next();
done = !!entry.done;
if (done)
continue;
const key = entry.value[0];
let value = entry.value[1];
if (typeof value?.toBSON === 'function') {
value = value.toBSON();
}
const type = typeof value;
if (typeof key === 'string' && !ignoreKeys.has(key)) {
if (key.match(regexp) != null) {
throw new BSONError('key ' + key + ' must not contain null bytes');
}
if (checkKeys) {
if ('$' === key[0]) {
throw new BSONError('key ' + key + " must not start with '$'");
}
else if (key.includes('.')) {
throw new BSONError('key ' + key + " must not contain '.'");
}
}
}
if (type === 'string') {
index = serializeString(buffer, key, value, index);
}
else if (type === 'number') {
index = serializeNumber(buffer, key, value, index);
}
else if (type === 'bigint') {
index = serializeBigInt(buffer, key, value, index);
}
else if (type === 'boolean') {
index = serializeBoolean(buffer, key, value, index);
}
else if (value instanceof Date || isDate(value)) {
index = serializeDate(buffer, key, value, index);
}
else if (value === null || (value === undefined && ignoreUndefined === false)) {
index = serializeNull(buffer, key, value, index);
}
else if (isUint8Array(value)) {
index = serializeBuffer(buffer, key, value, index);
}
else if (value instanceof RegExp || isRegExp(value)) {
index = serializeRegExp(buffer, key, value, index);
}
else if (type === 'object' && value._bsontype == null) {
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (typeof value === 'object' &&
value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
throw new BSONVersionError();
}
else if (value._bsontype === 'ObjectId') {
index = serializeObjectId(buffer, key, value, index);
}
else if (type === 'object' && value._bsontype === 'Decimal128') {
index = serializeDecimal128(buffer, key, value, index);
}
else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
index = serializeLong(buffer, key, value, index);
}
else if (value._bsontype === 'Double') {
index = serializeDouble(buffer, key, value, index);
}
else if (value._bsontype === 'Code') {
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (typeof value === 'function' && serializeFunctions) {
index = serializeFunction(buffer, key, value, index);
}
else if (value._bsontype === 'Binary') {
index = serializeBinary(buffer, key, value, index);
}
else if (value._bsontype === 'BSONSymbol') {
index = serializeSymbol(buffer, key, value, index);
}
else if (value._bsontype === 'DBRef') {
index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
}
else if (value._bsontype === 'BSONRegExp') {
index = serializeBSONRegExp(buffer, key, value, index);
}
else if (value._bsontype === 'Int32') {
index = serializeInt32(buffer, key, value, index);
}
else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
index = serializeMinMax(buffer, key, value, index);
}
else if (typeof value._bsontype !== 'undefined') {
throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
}
}
}
else {
if (typeof object?.toBSON === 'function') {
object = object.toBSON();
if (object != null && typeof object !== 'object') {
throw new BSONError('toBSON function did not return an object');
}
}
for (const key of Object.keys(object)) {
let value = object[key];
if (typeof value?.toBSON === 'function') {
value = value.toBSON();
}
const type = typeof value;
if (typeof key === 'string' && !ignoreKeys.has(key)) {
if (key.match(regexp) != null) {
throw new BSONError('key ' + key + ' must not contain null bytes');
}
if (checkKeys) {
if ('$' === key[0]) {
throw new BSONError('key ' + key + " must not start with '$'");
}
else if (key.includes('.')) {
throw new BSONError('key ' + key + " must not contain '.'");
}
}
}
if (type === 'string') {
index = serializeString(buffer, key, value, index);
}
else if (type === 'number') {
index = serializeNumber(buffer, key, value, index);
}
else if (type === 'bigint') {
index = serializeBigInt(buffer, key, value, index);
}
else if (type === 'boolean') {
index = serializeBoolean(buffer, key, value, index);
}
else if (value instanceof Date || isDate(value)) {
index = serializeDate(buffer, key, value, index);
}
else if (value === undefined) {
if (ignoreUndefined === false)
index = serializeNull(buffer, key, value, index);
}
else if (value === null) {
index = serializeNull(buffer, key, value, index);
}
else if (isUint8Array(value)) {
index = serializeBuffer(buffer, key, value, index);
}
else if (value instanceof RegExp || isRegExp(value)) {
index = serializeRegExp(buffer, key, value, index);
}
else if (type === 'object' && value._bsontype == null) {
index = serializeObject(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (typeof value === 'object' &&
value[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
throw new BSONVersionError();
}
else if (value._bsontype === 'ObjectId') {
index = serializeObjectId(buffer, key, value, index);
}
else if (type === 'object' && value._bsontype === 'Decimal128') {
index = serializeDecimal128(buffer, key, value, index);
}
else if (value._bsontype === 'Long' || value._bsontype === 'Timestamp') {
index = serializeLong(buffer, key, value, index);
}
else if (value._bsontype === 'Double') {
index = serializeDouble(buffer, key, value, index);
}
else if (value._bsontype === 'Code') {
index = serializeCode(buffer, key, value, index, checkKeys, depth, serializeFunctions, ignoreUndefined, path);
}
else if (typeof value === 'function' && serializeFunctions) {
index = serializeFunction(buffer, key, value, index);
}
else if (value._bsontype === 'Binary') {
index = serializeBinary(buffer, key, value, index);
}
else if (value._bsontype === 'BSONSymbol') {
index = serializeSymbol(buffer, key, value, index);
}
else if (value._bsontype === 'DBRef') {
index = serializeDBRef(buffer, key, value, index, depth, serializeFunctions, path);
}
else if (value._bsontype === 'BSONRegExp') {
index = serializeBSONRegExp(buffer, key, value, index);
}
else if (value._bsontype === 'Int32') {
index = serializeInt32(buffer, key, value, index);
}
else if (value._bsontype === 'MinKey' || value._bsontype === 'MaxKey') {
index = serializeMinMax(buffer, key, value, index);
}
else if (typeof value._bsontype !== 'undefined') {
throw new BSONError(`Unrecognized or invalid _bsontype: ${String(value._bsontype)}`);
}
}
}
path.delete(object);
buffer[index++] = 0x00;
const size = index - startingIndex;
startingIndex += NumberUtils.setInt32LE(buffer, startingIndex, size);
return index;
}
function isBSONType(value) {
return (value != null &&
typeof value === 'object' &&
'_bsontype' in value &&
typeof value._bsontype === 'string');
}
const keysToCodecs = {
$oid: ObjectId,
$binary: Binary,
$uuid: Binary,
$symbol: BSONSymbol,
$numberInt: Int32,
$numberDecimal: Decimal128,
$numberDouble: Double,
$numberLong: Long,
$minKey: MinKey,
$maxKey: MaxKey,
$regex: BSONRegExp,
$regularExpression: BSONRegExp,
$timestamp: Timestamp
};
function deserializeValue(value, options = {}) {
if (typeof value === 'number') {
const in32BitRange = value <= BSON_INT32_MAX && value >= BSON_INT32_MIN;
const in64BitRange = value <= BSON_INT64_MAX && value >= BSON_INT64_MIN;
if (options.relaxed || options.legacy) {
return value;
}
if (Number.isInteger(value) && !Object.is(value, -0)) {
if (in32BitRange) {
return new Int32(value);
}
if (in64BitRange) {
if (options.useBigInt64) {
return BigInt(value);
}
return Long.fromNumber(value);
}
}
return new Double(value);
}
if (value == null || typeof value !== 'object')
return value;
if (value.$undefined)
return null;
const keys = Object.keys(value).filter(k => k.startsWith('$') && value[k] != null);
for (let i = 0; i < keys.length; i++) {
const c = keysToCodecs[keys[i]];
if (c)
return c.fromExtendedJSON(value, options);
}
if (value.$date != null) {
const d = value.$date;
const date = new Date();
if (options.legacy) {
if (typeof d === 'number')
date.setTime(d);
else if (typeof d === 'string')
date.setTime(Date.parse(d));
else if (typeof d === 'bigint')
date.setTime(Number(d));
else
throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
}
else {
if (typeof d === 'string')
date.setTime(Date.parse(d));
else if (Long.isLong(d))
date.setTime(d.toNumber());
else if (typeof d === 'number' && options.relaxed)
date.setTime(d);
else if (typeof d === 'bigint')
date.setTime(Number(d));
else
throw new BSONRuntimeError(`Unrecognized type for EJSON date: ${typeof d}`);
}
return date;
}
if (value.$code != null) {
const copy = Object.assign({}, value);
if (value.$scope) {
copy.$scope = deserializeValue(value.$scope);
}
return Code.fromExtendedJSON(value);
}
if (isDBRefLike(value) || value.$dbPointer) {
const v = value.$ref ? value : value.$dbPointer;
if (v instanceof DBRef)
return v;
const dollarKeys = Object.keys(v).filter(k => k.startsWith('$'));
let valid = true;
dollarKeys.forEach(k => {
if (['$ref', '$id', '$db'].indexOf(k) === -1)
valid = false;
});
if (valid)
return DBRef.fromExtendedJSON(v);
}
return value;
}
function serializeArray(array, options) {
return array.map((v, index) => {
options.seenObjects.push({ propertyName: `index ${index}`, obj: null });
try {
return serializeValue(v, options);
}
finally {
options.seenObjects.pop();
}
});
}
function getISOString(date) {
const isoStr = date.toISOString();
return date.getUTCMilliseconds() !== 0 ? isoStr : isoStr.slice(0, -5) + 'Z';
}
function serializeValue(value, options) {
if (value instanceof Map || isMap(value)) {
const obj = Object.create(null);
for (const [k, v] of value) {
if (typeof k !== 'string') {
throw new BSONError('Can only serialize maps with string keys');
}
obj[k] = v;
}
return serializeValue(obj, options);
}
if ((typeof value === 'object' || typeof value === 'function') && value !== null) {
const index = options.seenObjects.findIndex(entry => entry.obj === value);
if (index !== -1) {
const props = options.seenObjects.map(entry => entry.propertyName);
const leadingPart = props
.slice(0, index)
.map(prop => `${prop} -> `)
.join('');
const alreadySeen = props[index];
const circularPart = ' -> ' +
props
.slice(index + 1, props.length - 1)
.map(prop => `${prop} -> `)
.join('');
const current = props[props.length - 1];
const leadingSpace = ' '.repeat(leadingPart.length + alreadySeen.length / 2);
const dashes = '-'.repeat(circularPart.length + (alreadySeen.length + current.length) / 2 - 1);
throw new BSONError('Converting circular structure to EJSON:\n' +
` ${leadingPart}${alreadySeen}${circularPart}${current}\n` +
` ${leadingSpace}\\${dashes}/`);
}
options.seenObjects[options.seenObjects.length - 1].obj = value;
}
if (Array.isArray(value))
return serializeArray(value, options);
if (value === undefined)
return null;
if (value instanceof Date || isDate(value)) {
const dateNum = value.getTime(), inRange = dateNum > -1 && dateNum < 253402318800000;
if (options.legacy) {
return options.relaxed && inRange
? { $date: value.getTime() }
: { $date: getISOString(value) };
}
return options.relaxed && inRange
? { $date: getISOString(value) }
: { $date: { $numberLong: value.getTime().toString() } };
}
if (typeof value === 'number' && (!options.relaxed || !isFinite(value))) {
if (Number.isInteger(value) && !Object.is(value, -0)) {
if (value >= BSON_INT32_MIN && value <= BSON_INT32_MAX) {
return { $numberInt: value.toString() };
}
if (value >= BSON_INT64_MIN && value <= BSON_INT64_MAX) {
return { $numberLong: value.toString() };
}
}
return { $numberDouble: Object.is(value, -0) ? '-0.0' : value.toString() };
}
if (typeof value === 'bigint') {
if (!options.relaxed) {
return { $numberLong: BigInt.asIntN(64, value).toString() };
}
return Number(BigInt.asIntN(64, value));
}
if (value instanceof RegExp || isRegExp(value)) {
let flags = value.flags;
if (flags === undefined) {
const match = value.toString().match(/[gimuy]*$/);
if (match) {
flags = match[0];
}
}
const rx = new BSONRegExp(value.source, flags);
return rx.toExtendedJSON(options);
}
if (value != null && typeof value === 'object')
return serializeDocument(value, options);
return value;
}
const BSON_TYPE_MAPPINGS = {
Binary: (o) => new Binary(o.value(), o.sub_type),
Code: (o) => new Code(o.code, o.scope),
DBRef: (o) => new DBRef(o.collection || o.namespace, o.oid, o.db, o.fields),
Decimal128: (o) => new Decimal128(o.bytes),
Double: (o) => new Double(o.value),
Int32: (o) => new Int32(o.value),
Long: (o) => Long.fromBits(o.low != null ? o.low : o.low_, o.low != null ? o.high : o.high_, o.low != null ? o.unsigned : o.unsigned_),
MaxKey: () => new MaxKey(),
MinKey: () => new MinKey(),
ObjectId: (o) => new ObjectId(o),
BSONRegExp: (o) => new BSONRegExp(o.pattern, o.options),
BSONSymbol: (o) => new BSONSymbol(o.value),
Timestamp: (o) => Timestamp.fromBits(o.low, o.high)
};
function serializeDocument(doc, options) {
if (doc == null || typeof doc !== 'object')
throw new BSONError('not an object instance');
const bsontype = doc._bsontype;
if (typeof bsontype === 'undefined') {
const _doc = {};
for (const name of Object.keys(doc)) {
options.seenObjects.push({ propertyName: name, obj: null });
try {
const value = serializeValue(doc[name], options);
if (name === '__proto__') {
Object.defineProperty(_doc, name, {
value,
writable: true,
enumerable: true,
configurable: true
});
}
else {
_doc[name] = value;
}
}
finally {
options.seenObjects.pop();
}
}
return _doc;
}
else if (doc != null &&
typeof doc === 'object' &&
typeof doc._bsontype === 'string' &&
doc[Symbol.for('@@mdb.bson.version')] !== BSON_MAJOR_VERSION) {
throw new BSONVersionError();
}
else if (isBSONType(doc)) {
let outDoc = doc;
if (typeof outDoc.toExtendedJSON !== 'function') {
const mapper = BSON_TYPE_MAPPINGS[doc._bsontype];
if (!mapper) {
throw new BSONError('Unrecognized or invalid _bsontype: ' + doc._bsontype);
}
outDoc = mapper(outDoc);
}
if (bsontype === 'Code' && outDoc.scope) {
outDoc = new Code(outDoc.code, serializeValue(outDoc.scope, options));
}
else if (bsontype === 'DBRef' && outDoc.oid) {
outDoc = new DBRef(serializeValue(outDoc.collection, options), serializeValue(outDoc.oid, options), serializeValue(outDoc.db, options), serializeValue(outDoc.fields, options));
}
return outDoc.toExtendedJSON(options);
}
else {
throw new BSONError('_bsontype must be a string, but was: ' + typeof bsontype);
}
}
function parse(text, options) {
const ejsonOptions = {
useBigInt64: options?.useBigInt64 ?? false,
relaxed: options?.relaxed ?? true,
legacy: options?.legacy ?? false
};
return JSON.parse(text, (key, value) => {
if (key.indexOf('\x00') !== -1) {
throw new BSONError(`BSON Document field names cannot contain null bytes, found: ${JSON.stringify(key)}`);
}
return deserializeValue(value, ejsonOptions);
});
}
function stringify(value, replacer, space, options) {
if (space != null && typeof space === 'object') {
options = space;
space = 0;
}
if (replacer != null && typeof replacer === 'object' && !Array.isArray(replacer)) {
options = replacer;
replacer = undefined;
space = 0;
}
const serializeOptions = Object.assign({ relaxed: true, legacy: false }, options, {
seenObjects: [{ propertyName: '(root)', obj: null }]
});
const doc = serializeValue(value, serializeOptions);
return JSON.stringify(doc, replacer, space);
}
function EJSONserialize(value, options) {
options = options || {};
return JSON.parse(stringify(value, options));
}
function EJSONdeserialize(ejson, options) {
options = options || {};
return parse(JSON.stringify(ejson), options);
}
const EJSON = Object.create(null);
EJSON.parse = parse;
EJSON.stringify = stringify;
EJSON.serialize = EJSONserialize;
EJSON.deserialize = EJSONdeserialize;
Object.freeze(EJSON);
const MAXSIZE = 1024 * 1024 * 17;
let buffer = ByteUtils.allocate(MAXSIZE);
function setInternalBufferSize(size) {
if (buffer.length < size) {
buffer = ByteUtils.allocate(size);
}
}
function serialize(object, options = {}) {
const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
const minInternalBufferSize = typeof options.minInternalBufferSize === 'number' ? options.minInternalBufferSize : MAXSIZE;
if (buffer.length < minInternalBufferSize) {
buffer = ByteUtils.allocate(minInternalBufferSize);
}
const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
const finishedBuffer = ByteUtils.allocateUnsafe(serializationIndex);
finishedBuffer.set(buffer.subarray(0, serializationIndex), 0);
return finishedBuffer;
}
function serializeWithBufferAndIndex(object, finalBuffer, options = {}) {
const checkKeys = typeof options.checkKeys === 'boolean' ? options.checkKeys : false;
const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
const startIndex = typeof options.index === 'number' ? options.index : 0;
const serializationIndex = serializeInto(buffer, object, checkKeys, 0, 0, serializeFunctions, ignoreUndefined, null);
finalBuffer.set(buffer.subarray(0, serializationIndex), startIndex);
return startIndex + serializationIndex - 1;
}
function deserialize(buffer, options = {}) {
return internalDeserialize(ByteUtils.toLocalBufferType(buffer), options);
}
function calculateObjectSize(object, options = {}) {
options = options || {};
const serializeFunctions = typeof options.serializeFunctions === 'boolean' ? options.serializeFunctions : false;
const ignoreUndefined = typeof options.ignoreUndefined === 'boolean' ? options.ignoreUndefined : true;
return internalCalculateObjectSize(object, serializeFunctions, ignoreUndefined);
}
function deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options) {
const internalOptions = Object.assign({ allowObjectSmallerThanBufferSize: true, index: 0 }, options);
const bufferData = ByteUtils.toLocalBufferType(data);
let index = startIndex;
for (let i = 0; i < numberOfDocuments; i++) {
const size = NumberUtils.getInt32LE(bufferData, index);
internalOptions.index = index;
documents[docStartIndex + i] = internalDeserialize(bufferData, internalOptions);
index = index + size;
}
return index;
}
var bson = /*#__PURE__*/Object.freeze({
__proto__: null,
BSONError: BSONError,
BSONRegExp: BSONRegExp,
BSONRuntimeError: BSONRuntimeError,
BSONSymbol: BSONSymbol,
BSONType: BSONType,
BSONValue: BSONValue,
BSONVersionError: BSONVersionError,
Binary: Binary,
Code: Code,
DBRef: DBRef,
Decimal128: Decimal128,
Double: Double,
EJSON: EJSON,
Int32: Int32,
Long: Long,
MaxKey: MaxKey,
MinKey: MinKey,
ObjectId: ObjectId,
Timestamp: Timestamp,
UUID: UUID,
calculateObjectSize: calculateObjectSize,
deserialize: deserialize,
deserializeStream: deserializeStream,
serialize: serialize,
serializeWithBufferAndIndex: serializeWithBufferAndIndex,
setInternalBufferSize: setInternalBufferSize
});
exports.BSON = bson;
exports.BSONError = BSONError;
exports.BSONRegExp = BSONRegExp;
exports.BSONRuntimeError = BSONRuntimeError;
exports.BSONSymbol = BSONSymbol;
exports.BSONType = BSONType;
exports.BSONValue = BSONValue;
exports.BSONVersionError = BSONVersionError;
exports.Binary = Binary;
exports.Code = Code;
exports.DBRef = DBRef;
exports.Decimal128 = Decimal128;
exports.Double = Double;
exports.EJSON = EJSON;
exports.Int32 = Int32;
exports.Long = Long;
exports.MaxKey = MaxKey;
exports.MinKey = MinKey;
exports.ObjectId = ObjectId;
exports.Timestamp = Timestamp;
exports.UUID = UUID;
exports.calculateObjectSize = calculateObjectSize;
exports.deserialize = deserialize;
exports.deserializeStream = deserializeStream;
exports.serialize = serialize;
exports.serializeWithBufferAndIndex = serializeWithBufferAndIndex;
exports.setInternalBufferSize = setInternalBufferSize;
//# sourceMappingURL=bson.cjs.map
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __nccwpck_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ var threw = true;
/******/ try {
/******/ __webpack_modules__[moduleId](module, module.exports, __nccwpck_require__);
/******/ threw = false;
/******/ } finally {
/******/ if(threw) delete __webpack_module_cache__[moduleId];
/******/ }
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat */
/******/
/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/";
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
(() => {
const HotPocket = __nccwpck_require__(875);
const bson = __nccwpck_require__(618);
const fs = __nccwpck_require__(147);
const path = __nccwpck_require__(17);
const crypto = __nccwpck_require__(113);
const UPLOADS_ROOT = path.resolve('uploads');
const SESSION_FILE = path.resolve('upload_sessions.json');
const AUTH_STATE_FILE = path.resolve('upload_auth_state.json');
const ENVELOPE_PREFIX = 'evadmin:v1:';
const OTP_CODE_DIGITS = Number(process.env.OTP_CODE_DIGITS || 24);
const OTP_WINDOW_STEPS = Number(process.env.OTP_WINDOW_STEPS || 5);
const ENVELOPE_ITERATIONS = Number(process.env.OTP_ENVELOPE_ITERATIONS || 300000);
const DEFAULT_AUTH_TTL_SECONDS = Number(process.env.AUTH_TTL_SECONDS || 24 * 60 * 60);
const MAX_AUTH_TTL_SECONDS = Number(process.env.MAX_AUTH_TTL_SECONDS || 7 * 24 * 60 * 60);
const BOOTSTRAP_SETUP_CODE_HASH = String(process.env.BOOTSTRAP_SETUP_CODE_HASH || '').trim().toLowerCase();
const FOUNDER_PROTECTION = 1;
const ROLE_HEAD_ADMIN = 'head-admin';
const ROLE_ADMIN = 'admin';
const USER_ROLES = new Set([ROLE_HEAD_ADMIN, ROLE_ADMIN]);
const PROTECTED_TYPES = new Set([
'upload',
'delete-upload',
'list-uploads',
'get-upload-info',
'get-upload-chunk',
'list-users',
'add-user',
'remove-user',
'set-user-role',
'list-unls',
'add-unl',
'remove-unl'
]);
function sendOutput(user, output) {
return user.send(bson.serialize(output));
}
function sha256Hex(value) {
return crypto
.createHash('sha256')
.update(String(value || ''), 'utf8')
.digest('hex');
}
function nowMs(ctx) {
const ts = Number(ctx && ctx.timestamp);
if (Number.isFinite(ts) && ts > 0) {
return ts;
}
// Fallback for local tests only. In a real HotPocket consensus execution, ctx.timestamp
// should exist and should be used instead of system time.
return Date.now();
}
function readJsonFile(file, fallback) {
if (!fs.existsSync(file)) {
return fallback;
}
try {
return JSON.parse(fs.readFileSync(file, 'utf8'));
} catch {
return fallback;
}
}
function writeJsonFile(file, value) {
fs.writeFileSync(file, JSON.stringify(value, null, 2));
}
function loadSessions() {
return readJsonFile(SESSION_FILE, {});
}
function saveSessions(sessions) {
writeJsonFile(SESSION_FILE, sessions);
}
function defaultAuthState() {
return {
bootstrapComplete: false,
headAdminPublicKey: null,
otpSecret: null,
admins: {},
authorizedDevices: {},
usedNonces: {}
};
}
function normalizeRole(role) {
const clean = String(role || '').trim().toLowerCase();
if (clean === ROLE_HEAD_ADMIN || clean === ROLE_ADMIN) {
return clean;
}
throw new Error(`Invalid role: ${role}`);
}
function normalizeAdminRecord(publicKey, record = {}, timestampMs = 0) {
const role = normalizeRole(record.role || ROLE_ADMIN);
let otpSecret = '';
try {
otpSecret = record.otpSecret ? validateOtpSecret(record.otpSecret) : '';
} catch {
otpSecret = '';
}
return {
role,
active: record.active !== false,
otpSecret,
otpUpdatedAt: record.otpUpdatedAt || null,
otpUpdatedBy: record.otpUpdatedBy || null,
createdAt: Number(record.createdAt || timestampMs || 0) || null,
createdBy: record.createdBy ? normalizePublicKey(record.createdBy) : publicKey,
updatedAt: record.updatedAt || null,
updatedBy: record.updatedBy || null,
removedAt: record.removedAt || null,
removedBy: record.removedBy || null
};
}
function loadAuthState() {
const state = readJsonFile(AUTH_STATE_FILE, defaultAuthState());
state.bootstrapComplete = !!state.bootstrapComplete;
state.headAdminPublicKey = state.headAdminPublicKey ? normalizePublicKey(state.headAdminPublicKey) : null;
state.otpSecret = state.otpSecret || null;
state.admins = state.admins && typeof state.admins === 'object' ? state.admins : {};
state.authorizedDevices = state.authorizedDevices && typeof state.authorizedDevices === 'object' ? state.authorizedDevices : {};
state.usedNonces = state.usedNonces && typeof state.usedNonces === 'object' ? state.usedNonces : {};
const normalizedAdmins = {};
for (const [rawPublicKey, record] of Object.entries(state.admins)) {
try {
const publicKey = normalizePublicKey(rawPublicKey);
normalizedAdmins[publicKey] = normalizeAdminRecord(publicKey, record || {});
} catch {
// Skip invalid saved admin records instead of breaking the whole contract.
}
}
// Backward compatibility: old state only had headAdminPublicKey.
if (state.headAdminPublicKey && !normalizedAdmins[state.headAdminPublicKey]) {
normalizedAdmins[state.headAdminPublicKey] = {
role: ROLE_HEAD_ADMIN,
active: true,
otpSecret: state.otpSecret ? validateOtpSecret(state.otpSecret) : '',
otpUpdatedAt: null,
otpUpdatedBy: null,
createdAt: null,
createdBy: state.headAdminPublicKey,
updatedAt: null,
updatedBy: null,
removedAt: null,
removedBy: null
};
}
// Backward compatibility: if an older state has a global otpSecret, attach it
// to the original head admin signer record so the first signer can still log in.
if (
state.headAdminPublicKey &&
state.otpSecret &&
normalizedAdmins[state.headAdminPublicKey] &&
!normalizedAdmins[state.headAdminPublicKey].otpSecret
) {
normalizedAdmins[state.headAdminPublicKey].otpSecret = validateOtpSecret(state.otpSecret);
}
state.admins = normalizedAdmins;
return state;
}
function saveAuthState(state) {
writeJsonFile(AUTH_STATE_FILE, state);
}
function normalizeEdHex(value, kind = 'key') {
let hex = String(value || '').trim().toLowerCase();
if (hex.startsWith('ed')) {
hex = hex.slice(2);
}
if (hex.startsWith('ed')) {
hex = hex.slice(2);
}
if (!/^[0-9a-f]+$/.test(hex)) {
throw new Error(`Invalid ${kind} hex.`);
}
return `ed${hex}`;
}
function normalizePublicKey(value) {
const key = normalizeEdHex(value, 'public key');
if (!/^ed[0-9a-f]{64}$/.test(key)) {
throw new Error('Invalid public key. Expected ed + 64 hex chars.');
}
return key;
}
function normalizePrivateKey(value) {
const key = normalizeEdHex(value, 'private key');
if (!/^ed[0-9a-f]{128}$/.test(key)) {
throw new Error('Invalid private key. Expected ed + 128 hex chars.');
}
return key;
}
function bytesToHex(bytes) {
return Buffer.from(bytes).toString('hex');
}
function getUserPublicKey(user) {
const direct =
user.publicKey ||
user.pubkey ||
user.key ||
user.id ||
'';
if (typeof direct === 'string' && direct.trim()) {
return normalizePublicKey(direct);
}
if (direct instanceof Uint8Array || Buffer.isBuffer(direct) || Array.isArray(direct)) {
return normalizePublicKey(bytesToHex(direct));
}
if (direct && direct.data && Array.isArray(direct.data)) {
return normalizePublicKey(bytesToHex(direct.data));
}
throw new Error('Could not read connected user public key from HotPocket user object.');
}
function validateOtpSecret(secret) {
const clean = String(secret || '')
.replace(/=+$/g, '')
.replace(/\s+/g, '')
.toUpperCase();
if (!/^[A-Z2-7]{16,}$/.test(clean)) {
throw new Error('Invalid OTP secret. Use base32 A-Z and 2-7, minimum 16 chars.');
}
return clean;
}
function base32ToBuffer(base32) {
const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
const clean = validateOtpSecret(base32);
let bits = '';
for (const char of clean) {
const value = alphabet.indexOf(char);
if (value === -1) {
throw new Error('Invalid base32 character.');
}
bits += value.toString(2).padStart(5, '0');
}
const bytes = [];
for (let i = 0; i + 8 <= bits.length; i += 8) {
bytes.push(parseInt(bits.slice(i, i + 8), 2));
}
return Buffer.from(bytes);
}
function otpCodeRegex() {
return new RegExp(`^[0-9]{${OTP_CODE_DIGITS}}$`);
}
function generateTotpCode(secret, timeMs, stepSeconds = 30, digits = OTP_CODE_DIGITS) {
const key = base32ToBuffer(secret);
const counter = Math.floor(Number(timeMs) / 1000 / stepSeconds);
const counterBuffer = Buffer.alloc(8);
counterBuffer.writeBigUInt64BE(BigInt(counter));
const hmac = crypto
.createHmac('sha256', key)
.update(counterBuffer)
.digest();
let value = 0n;
for (const byte of hmac) {
value = (value << 8n) + BigInt(byte);
}
const modulo = 10n ** BigInt(digits);
const otp = value % modulo;
return otp.toString().padStart(digits, '0');
}
function getTotpCandidates(secret, timestampMs) {
const stepMs = 30000;
const codes = [];
for (let i = -OTP_WINDOW_STEPS; i <= OTP_WINDOW_STEPS; i++) {
codes.push(generateTotpCode(secret, Number(timestampMs) + i * stepMs));
}
return [...new Set(codes)];
}
function deriveEnvelopeKey(otpCode, salt, iterations = ENVELOPE_ITERATIONS) {
const code = String(otpCode || '').trim();
if (!otpCodeRegex().test(code)) {
throw new Error(`OTP code must be ${OTP_CODE_DIGITS} digits.`);
}
const cleanIterations = Number(iterations);
if (!Number.isInteger(cleanIterations) || cleanIterations < 100000) {
throw new Error('Invalid envelope KDF iterations.');
}
return crypto.pbkdf2Sync(
`otp-admin-envelope-v1:${code}`,
salt,
cleanIterations,
32,
'sha256'
);
}
function parseEnvelope(input) {
const raw = String(input || '').trim();
if (!raw.startsWith(ENVELOPE_PREFIX)) {
throw new Error(`Invalid envelope prefix. Expected ${ENVELOPE_PREFIX}`);
}
const encoded = raw.slice(ENVELOPE_PREFIX.length).trim();
if (!encoded) {
throw new Error('Envelope payload is empty.');
}
const envelope = JSON.parse(
Buffer.from(encoded, 'base64url').toString('utf8')
);
if (!envelope || envelope.v !== 1) {
throw new Error('Unsupported envelope version. Expected v=1.');
}
if (envelope.type !== 'otp-encrypted-admin-private-key') {
throw new Error('Unsupported envelope type.');
}
if (envelope.alg !== 'aes-256-gcm') {
throw new Error('Unsupported envelope algorithm.');
}
if (envelope.kdf !== 'pbkdf2-sha256') {
throw new Error('Unsupported envelope KDF.');
}
for (const field of ['salt', 'iv', 'authTag', 'ciphertext', 'iterations']) {
if (!envelope[field]) {
throw new Error(`Envelope missing field: ${field}.`);
}
}
return envelope;
}
function tryDecryptEnvelopeWithOtpCode(envelope, otpCode) {
const salt = Buffer.from(envelope.salt, 'base64');
const iv = Buffer.from(envelope.iv, 'base64');
const authTag = Buffer.from(envelope.authTag, 'base64');
const ciphertext = Buffer.from(envelope.ciphertext, 'base64');
const key = deriveEnvelopeKey(otpCode, salt, Number(envelope.iterations));
const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);
decipher.setAuthTag(authTag);
const decrypted = Buffer.concat([
decipher.update(ciphertext),
decipher.final()
]);
return decrypted.toString('utf8').trim();
}
function decryptEnvelopeWithOtpSecret(otpSecret, envelopeInput, timestampMs) {
const envelope = parseEnvelope(envelopeInput);
const candidates = getTotpCandidates(otpSecret, timestampMs);
for (const code of candidates) {
try {
const plaintext = tryDecryptEnvelopeWithOtpCode(envelope, code);
if (!plaintext) {
throw new Error('Decrypted empty payload.');
}
return {
plaintext,
matchedCode: code
};
} catch {
// Try next OTP window candidate.
}
}
throw new Error(
`Could not decrypt envelope with current OTP candidates. Digits=${OTP_CODE_DIGITS}, windowSteps=${OTP_WINDOW_STEPS}.`
);
}
function deriveEd25519PublicKeyFromSeed(seed32) {
if (!Buffer.isBuffer(seed32) || seed32.length !== 32) {
throw new Error('Ed25519 seed must be exactly 32 bytes.');
}
// PKCS#8 DER prefix for an Ed25519 private key containing a 32-byte seed.
const pkcs8Prefix = Buffer.from('302e020100300506032b657004220420', 'hex');
const privateKeyObject = crypto.createPrivateKey({
key: Buffer.concat([pkcs8Prefix, seed32]),
format: 'der',
type: 'pkcs8'
});
const spki = crypto.createPublicKey(privateKeyObject).export({
format: 'der',
type: 'spki'
});
// SPKI DER for Ed25519 ends with the 32-byte raw public key.
return Buffer.from(spki).subarray(-32);
}
function derivePublicKeyFromHotPocketPrivateKey(privateKey) {
const cleanPrivateKey = normalizePrivateKey(privateKey);
const secretBytes = Buffer.from(cleanPrivateKey.slice(2), 'hex');
if (secretBytes.length !== 64) {
throw new Error('HotPocket private key must decode to 64 bytes.');
}
const seed = secretBytes.subarray(0, 32);
const embeddedPublic = secretBytes.subarray(32, 64);
const derivedPublic = deriveEd25519PublicKeyFromSeed(seed);
if (!crypto.timingSafeEqual(embeddedPublic, derivedPublic)) {
throw new Error('Private key seed does not match embedded public key.');
}
return `ed${derivedPublic.toString('hex')}`;
}
function parseAdminEnvelopePayload(plaintext) {
const raw = String(plaintext || '').trim();
if (!raw) {
throw new Error('Admin envelope plaintext is empty.');
}
if (raw.startsWith('{')) {
const payload = JSON.parse(raw);
if (payload.type !== 'everstoring-admin-login-v1') {
throw new Error('Unsupported admin envelope payload type.');
}
return payload;
}
// Backward-compatible fallback for old envelopes that only contain a private key string.
return {
type: 'everstoring-admin-login-v1',
adminPrivateKey: raw
};
}
function normalizeFilename(filename) {
let normalized = String(filename || '').replace(/\\/g, '/');
normalized = normalized.replace(/^\/+/, '');
normalized = path.posix.normalize(normalized);
if (
!normalized ||
normalized === '.' ||
normalized.split('/').includes('..') ||
path.isAbsolute(normalized)
) {
throw new Error('Invalid filename.');
}
return normalized;
}
function safeUploadId(uploadId) {
const safe = String(uploadId || '').replace(/[^a-zA-Z0-9._-]/g, '_');
if (!safe) {
throw new Error('Missing uploadId.');
}
return safe;
}
function getTargetPath(filename) {
const targetPath = path.resolve(UPLOADS_ROOT, filename);
if (!targetPath.startsWith(UPLOADS_ROOT + path.sep)) {
throw new Error('Upload path escapes uploads folder.');
}
return targetPath;
}
function cleanupEmptyDirs(startDir, stopDir) {
let current = path.resolve(startDir);
const root = path.resolve(stopDir);
while (current.startsWith(root) && current !== root) {
if (!fs.existsSync(current)) {
current = path.dirname(current);
continue;
}
const entries = fs.readdirSync(current);
if (entries.length > 0) {
break;
}
fs.rmdirSync(current);
current = path.dirname(current);
}
}
function getAdminRecord(state, publicKey) {
const key = normalizePublicKey(publicKey);
const record = state.admins && state.admins[key];
if (!record || record.active === false) {
return null;
}
try {
const role = normalizeRole(record.role);
return {
...record,
role
};
} catch {
return null;
}
}
function isAdminRole(role) {
return role === ROLE_HEAD_ADMIN || role === ROLE_ADMIN;
}
function countActiveHeadAdmins(state, exceptPublicKey = '') {
const except = exceptPublicKey ? normalizePublicKey(exceptPublicKey) : '';
return Object.entries(state.admins || {})
.filter(([publicKey, record]) => {
return (
publicKey !== except &&
record &&
record.active !== false &&
record.role === ROLE_HEAD_ADMIN
);
})
.length;
}
function getDeviceAuth(state, publicKey, timestampMs) {
const key = normalizePublicKey(publicKey);
const record = state.authorizedDevices[key];
if (!record) {
return null;
}
const expiresAt = Number(record.expiresAt || 0);
if (expiresAt && expiresAt <= Number(timestampMs)) {
return null;
}
if (!isAdminRole(record.role)) {
return null;
}
// If the signer/user that approved this device was removed, expire this device.
if (record.approvedBy) {
const approver = getAdminRecord(state, record.approvedBy);
if (!approver) {
return null;
}
// Keep existing sessions in sync if a signer is promoted/demoted.
record.role = approver.role;
}
return record;
}
function cleanupExpiredAuth(state, timestampMs) {
for (const [key, record] of Object.entries(state.authorizedDevices || {})) {
const expiresAt = Number(record.expiresAt || 0);
if (expiresAt && expiresAt <= Number(timestampMs)) {
delete state.authorizedDevices[key];
}
}
// Keep nonce history bounded. It only needs to survive long enough to block
// replays of recent login envelopes.
const cutoff = Number(timestampMs) - 14 * 24 * 60 * 60 * 1000;
for (const [nonce, record] of Object.entries(state.usedNonces || {})) {
const usedAt = typeof record === 'object' ? Number(record.usedAt || 0) : 0;
if (usedAt && usedAt < cutoff) {
delete state.usedNonces[nonce];
}
}
}
async function authStatus(user, message = {}, ctx) {
const state = loadAuthState();
const timestampMs = nowMs(ctx);
cleanupExpiredAuth(state, timestampMs);
let userPublicKey = null;
let auth = null;
try {
userPublicKey = getUserPublicKey(user);
auth = getDeviceAuth(state, userPublicKey, timestampMs);
} catch {
// Keep status useful even when a public key cannot be read.
}
if (!ctx.readonly) {
saveAuthState(state);
}
await sendOutput(user, {
type: 'auth-status',
actionId: message.actionId || null,
bootstrapComplete: !!state.bootstrapComplete,
headAdminPublicKey: state.headAdminPublicKey || null,
devicePublicKey: userPublicKey,
authorized: !!auth,
role: auth?.role || null,
signerPublicKey: auth?.approvedBy || null,
canManageUsers: auth?.role === ROLE_HEAD_ADMIN,
founderProtectionEnabled: FOUNDER_PROTECTION,
expiresAt: auth?.expiresAt || null,
now: timestampMs
});
}
async function bootstrapHeadAdmin(user, message = {}, ctx) {
const actionId = message.actionId || null;
if (ctx.readonly) {
await sendOutput(user, {
type: 'error',
action: 'bootstrap-head-admin',
actionId,
error: 'Read-only mode does not allow bootstrap.'
});
return;
}
const state = loadAuthState();
if (state.bootstrapComplete) {
await sendOutput(user, {
type: 'error',
action: 'bootstrap-head-admin',
actionId,
error: 'Head admin already exists.'
});
return;
}
if (BOOTSTRAP_SETUP_CODE_HASH) {
const suppliedHash = sha256Hex(message.setupCode || '');
if (suppliedHash !== BOOTSTRAP_SETUP_CODE_HASH) {
await sendOutput(user, {
type: 'error',
action: 'bootstrap-head-admin',
actionId,
error: 'Invalid setup code.'
});
return;
}
}
const timestampMs = nowMs(ctx);
const headAdminPublicKey = normalizePublicKey(message.headAdminPublicKey);
const otpSecret = validateOtpSecret(message.otpSecret);
state.bootstrapComplete = true;
state.headAdminPublicKey = headAdminPublicKey;
state.otpSecret = otpSecret;
state.admins = {
[headAdminPublicKey]: {
role: ROLE_HEAD_ADMIN,
active: true,
otpSecret,
otpUpdatedAt: timestampMs,
otpUpdatedBy: headAdminPublicKey,
createdAt: timestampMs,
createdBy: headAdminPublicKey
}
};
state.authorizedDevices = {};
state.usedNonces = {};
saveAuthState(state);
await sendOutput(user, {
type: 'bootstrap-success',
actionId,
headAdminPublicKey,
message: 'Head admin created. Disconnect and reconnect to authorize a browser/device.'
});
}
function findSignerFromEnvelope(state, envelopeInput, requestedDevicePublicKey, nonce, timestampMs) {
const admins = Object.entries(state.admins || {})
.map(([publicKey, record]) => [normalizePublicKey(publicKey), record || {}])
.filter(([, record]) => record && record.active !== false);
if (!admins.length) {
throw new Error('No active signers are configured.');
}
for (const [adminPublicKey, record] of admins) {
const otpSecret = record.otpSecret || (
adminPublicKey === state.headAdminPublicKey && state.otpSecret
? state.otpSecret
: ''
);
if (!otpSecret) {
continue;
}
try {
const decrypted = decryptEnvelopeWithOtpSecret(
otpSecret,
envelopeInput,
timestampMs
);
const payload = parseAdminEnvelopePayload(decrypted.plaintext);
if (payload.devicePublicKey) {
const payloadDevicePublicKey = normalizePublicKey(payload.devicePublicKey);
if (payloadDevicePublicKey !== requestedDevicePublicKey) {
throw new Error('Envelope is bound to a different device public key.');
}
}
if (payload.nonce && String(payload.nonce).trim() !== nonce) {
throw new Error('Envelope nonce does not match request nonce.');
}
const adminPrivateKey = normalizePrivateKey(payload.adminPrivateKey);
const derivedAdminPublicKey = derivePublicKeyFromHotPocketPrivateKey(adminPrivateKey);
if (derivedAdminPublicKey !== adminPublicKey) {
throw new Error('OTP matched one signer, but private key matched another signer.');
}
const signerRecord = getAdminRecord(state, derivedAdminPublicKey);
if (!signerRecord) {
throw new Error('Signer is not active.');
}
return {
payload,
signerPublicKey: derivedAdminPublicKey,
signerRecord
};
} catch {
// Try the next active signer's OTP secret.
}
}
throw new Error('Envelope did not match any active signer OTP/private-key pair.');
}
async function authorizeDevice(user, message = {}, ctx) {
const actionId = message.actionId || null;
if (ctx.readonly) {
await sendOutput(user, {
type: 'error',
action: 'authorize-device',
actionId,
error: 'Read-only mode does not allow authorization changes.'
});
return;
}
const state = loadAuthState();
if (!state.bootstrapComplete || !state.headAdminPublicKey) {
await sendOutput(user, {
type: 'error',
action: 'authorize-device',
actionId,
error: 'Head admin is not bootstrapped yet.'
});
return;
}
const timestampMs = nowMs(ctx);
cleanupExpiredAuth(state, timestampMs);
const submitterPublicKey = getUserPublicKey(user);
// This is the browser/device key being authorized.
// It may be different from the signer HotPocket key that submitted this action.
const requestedDevicePublicKey = normalizePublicKey(message.devicePublicKey);
if (!requestedDevicePublicKey) {
throw new Error('Missing device public key.');
}
const nonce = String(message.nonce || '').trim();
if (!/^[a-fA-F0-9]{32,128}$/.test(nonce)) {
throw new Error('Invalid nonce.');
}
if (state.usedNonces[nonce]) {
throw new Error('Login nonce has already been used.');
}
const signer = findSignerFromEnvelope(
state,
message.adminEnvelope,
requestedDevicePublicKey,
nonce,
timestampMs
);
const derivedAdminPublicKey = signer.signerPublicKey;
const signerRecord = signer.signerRecord;
const signerRole = signerRecord.role;
const ttlSecondsRaw = Number(message.ttlSeconds || DEFAULT_AUTH_TTL_SECONDS);
const ttlSeconds = Math.max(
60,
Math.min(
Number.isFinite(ttlSecondsRaw) ? Math.floor(ttlSecondsRaw) : DEFAULT_AUTH_TTL_SECONDS,
MAX_AUTH_TTL_SECONDS
)
);
const expiresAt = timestampMs + ttlSeconds * 1000;
state.authorizedDevices[requestedDevicePublicKey] = {
role: signerRole,
approvedBy: derivedAdminPublicKey,
submittedBy: submitterPublicKey,
approvedAt: timestampMs,
expiresAt,
nonce
};
state.usedNonces[nonce] = {
usedAt: timestampMs,
devicePublicKey: requestedDevicePublicKey,
submittedBy: submitterPublicKey,
approvedBy: derivedAdminPublicKey
};
saveAuthState(state);
await sendOutput(user, {
type: 'auth-success',
actionId,
devicePublicKey: requestedDevicePublicKey,
approvedBy: derivedAdminPublicKey,
role: signerRole,
expiresAt,
message: `Browser/device authorized as ${signerRole}.`
});
}
async function requireAuthorizedRole(user, message = {}, ctx, allowedRoles = [ROLE_HEAD_ADMIN, ROLE_ADMIN]) {
const state = loadAuthState();
if (!state.bootstrapComplete) {
await sendOutput(user, {
type: 'error',
action: message.type || null,
actionId: message.actionId || null,
uploadId: message.uploadId || null,
filename: message.filename || null,
chunkNo: message.chunkNo || null,
error: 'Head admin is not bootstrapped yet.'
});
return null;
}
const timestampMs = nowMs(ctx);
cleanupExpiredAuth(state, timestampMs);
const publicKey = getUserPublicKey(user);
const auth = getDeviceAuth(state, publicKey, timestampMs);
if (!auth) {
if (!ctx.readonly) {
saveAuthState(state);
}
await sendOutput(user, {
type: 'error',
action: message.type || null,
actionId: message.actionId || null,
uploadId: message.uploadId || null,
filename: message.filename || null,
chunkNo: message.chunkNo || null,
error: 'Unauthorized or authorization expired. Reconnect and authorize with OTP envelope.'
});
return null;
}
if (!allowedRoles.includes(auth.role)) {
await sendOutput(user, {
type: 'error',
action: message.type || null,
actionId: message.actionId || null,
error: 'Permission denied for this role.'
});
return null;
}
if (!ctx.readonly) {
saveAuthState(state);
}
return {
state,
publicKey,
auth,
timestampMs
};
}
async function requireAuthorized(user, message = {}, ctx) {
const authorized = await requireAuthorizedRole(user, message, ctx, [ROLE_HEAD_ADMIN, ROLE_ADMIN]);
return !!authorized;
}
async function requireHeadAdmin(user, message = {}, ctx) {
return requireAuthorizedRole(user, message, ctx, [ROLE_HEAD_ADMIN]);
}
function normalizePeerString(domain, peerPort) {
const host = String(domain || '').trim();
const port = Number(peerPort || 0);
if (!host && !peerPort) {
return null;
}
if (!host) {
throw new Error('Peer domain/IP is required when peerPort is supplied.');
}
if (!Number.isInteger(port) || port < 1 || port > 65535) {
throw new Error('peerPort must be an integer from 1 to 65535.');
}
if (/\s/.test(host) || host.includes('/')) {
throw new Error('Peer domain/IP contains invalid characters.');
}
return `${host}:${port}`;
}
function uniqueStrings(values) {
return [...new Set((values || []).map(value => String(value || '').trim()).filter(Boolean))];
}
async function listUnls(user, message = {}, ctx) {
const authorized = await requireHeadAdmin(user, message, ctx);
if (!authorized) {
return;
}
const cfg = await ctx.getConfig();
const unl = uniqueStrings(cfg.unl || []);
const knownPeers = uniqueStrings(cfg.mesh?.known_peers || []);
await sendOutput(user, {
type: 'unls',
actionId: message.actionId || null,
count: unl.length,
unls: unl.map((publicKey, index) => ({ index, publicKey })),
knownPeers
});
}
async function addUnl(user, message = {}, ctx) {
const actionId = message.actionId || null;
if (ctx.readonly) {
await sendOutput(user, {
type: 'error',
action: 'add-unl',
actionId,
error: 'Read-only mode does not allow UNL changes.'
});
return;
}
const authorized = await requireHeadAdmin(user, message, ctx);
if (!authorized) {
return;
}
const publicKey = normalizePublicKey(message.publicKey || message.pubkey);
const peerStr = normalizePeerString(message.domain || message.ip || message.peerHost, message.peerPort);
const cfg = await ctx.getConfig();
cfg.unl = uniqueStrings(cfg.unl || []);
const alreadyPresent = cfg.unl.includes(publicKey);
if (!alreadyPresent) {
cfg.unl.push(publicKey);
}
if (peerStr) {
if (!cfg.mesh) cfg.mesh = {};
cfg.mesh.known_peers = uniqueStrings(cfg.mesh.known_peers || []);
if (!cfg.mesh.known_peers.includes(peerStr)) {
cfg.mesh.known_peers.push(peerStr);
}
}
await ctx.updateConfig(cfg);
if (peerStr) {
await ctx.updatePeers([peerStr]);
}
await sendOutput(user, {
type: 'unl-added',
actionId,
publicKey,
peer: peerStr,
count: cfg.unl.length,
message: alreadyPresent
? `UNL already contained ${publicKey}.`
: `UNL added: ${publicKey}.`
});
}
async function removeUnl(user, message = {}, ctx) {
const actionId = message.actionId || null;
if (ctx.readonly) {
await sendOutput(user, {
type: 'error',
action: 'remove-unl',
actionId,
error: 'Read-only mode does not allow UNL changes.'
});
return;
}
const authorized = await requireHeadAdmin(user, message, ctx);
if (!authorized) {
return;
}
const publicKey = normalizePublicKey(message.publicKey || message.pubkey);
const peerStr = normalizePeerString(message.domain || message.ip || message.peerHost, message.peerPort);
const cfg = await ctx.getConfig();
const before = uniqueStrings(cfg.unl || []);
const after = before.filter(key => key !== publicKey);
if (after.length === before.length) {
throw new Error('Public key is not in the UNL.');
}
// No minimum guard here. Head admin decides what the UNL should be.
cfg.unl = after;
if (peerStr && cfg.mesh?.known_peers) {
cfg.mesh.known_peers = uniqueStrings(cfg.mesh.known_peers).filter(peer => peer !== peerStr);
}
await ctx.updateConfig(cfg);
if (peerStr) {
await ctx.updatePeers([], [peerStr]);
}
await sendOutput(user, {
type: 'unl-removed',
actionId,
publicKey,
peer: peerStr,
count: cfg.unl.length,
message: `UNL removed: ${publicKey}.`
});
}
async function listUsers(user, message = {}, ctx) {
const authorized = await requireAuthorizedRole(user, message, ctx, [ROLE_HEAD_ADMIN, ROLE_ADMIN]);
if (!authorized) {
return;
}
const users = Object.entries(authorized.state.admins || {})
.map(([publicKey, record]) => ({
publicKey,
role: record.role,
active: record.active !== false,
founder: isFounderPublicKey(authorized.state, publicKey),
founderProtected: FOUNDER_PROTECTION && isFounderPublicKey(authorized.state, publicKey),
createdAt: record.createdAt || null,
createdBy: record.createdBy || null,
updatedAt: record.updatedAt || null,
updatedBy: record.updatedBy || null,
removedAt: record.removedAt || null,
removedBy: record.removedBy || null,
otpConfigured: !!record.otpSecret
}))
.sort((a, b) => {
if (a.active !== b.active) return a.active ? -1 : 1;
if (a.role !== b.role) return a.role === ROLE_HEAD_ADMIN ? -1 : 1;
return a.publicKey.localeCompare(b.publicKey);
});
await sendOutput(user, {
type: 'users',
actionId: message.actionId || null,
users
});
}
function revokeDevicesApprovedBy(state, adminPublicKey) {
const key = normalizePublicKey(adminPublicKey);
for (const [devicePublicKey, record] of Object.entries(state.authorizedDevices || {})) {
if (record && record.approvedBy === key) {
delete state.authorizedDevices[devicePublicKey];
}
}
}
function syncDevicesApprovedByRole(state, adminPublicKey, role) {
const key = normalizePublicKey(adminPublicKey);
for (const record of Object.values(state.authorizedDevices || {})) {
if (record && record.approvedBy === key) {
record.role = role;
}
}
}
function requireNotSelfUserTarget(actorPublicKey, targetPublicKey, actionName) {
const actor = normalizePublicKey(actorPublicKey);
const target = normalizePublicKey(targetPublicKey);
if (actor === target) {
throw new Error(`You cannot ${actionName} your own signer record.`);
}
}
function isFounderPublicKey(state, publicKey) {
if (!state || !state.headAdminPublicKey || !publicKey) {
return false;
}
return normalizePublicKey(state.headAdminPublicKey) === normalizePublicKey(publicKey);
}
function requireNotFounderUserTarget(state, targetPublicKey, actionName) {
if (!FOUNDER_PROTECTION) {
return;
}
if (isFounderPublicKey(state, targetPublicKey)) {
throw new Error(`You cannot ${actionName} the original head admin signer record while founder protection is enabled.`);
}
}
async function addUser(user, message = {}, ctx) {
const actionId = message.actionId || null;
if (ctx.readonly) {
await sendOutput(user, {
type: 'error',
action: 'add-user',
actionId,
error: 'Read-only mode does not allow user changes.'
});
return;
}
const authorized = await requireHeadAdmin(user, message, ctx);
if (!authorized) {
return;
}
const targetPublicKey = normalizePublicKey(message.publicKey);
const role = normalizeRole(message.role || ROLE_ADMIN);
const otpSecret = validateOtpSecret(message.otpSecret);
const existing = authorized.state.admins[targetPublicKey];
const actorPublicKey = authorized.auth.approvedBy || authorized.publicKey;
requireNotSelfUserTarget(actorPublicKey, targetPublicKey, 'add or update');
requireNotFounderUserTarget(authorized.state, targetPublicKey, 'add or update');
authorized.state.admins[targetPublicKey] = {
...(existing || {}),
role,
active: true,
otpSecret,
otpUpdatedAt: authorized.timestampMs,
otpUpdatedBy: actorPublicKey,
createdAt: existing?.createdAt || authorized.timestampMs,
createdBy: existing?.createdBy || actorPublicKey,
updatedAt: existing ? authorized.timestampMs : null,
updatedBy: existing ? actorPublicKey : null,
removedAt: null,
removedBy: null
};
syncDevicesApprovedByRole(authorized.state, targetPublicKey, role);
saveAuthState(authorized.state);
await sendOutput(user, {
type: 'user-added',
actionId,
publicKey: targetPublicKey,
role,
message: `${role} saved with its own OTP secret.`
});
}
async function removeUser(user, message = {}, ctx) {
const actionId = message.actionId || null;
if (ctx.readonly) {
await sendOutput(user, {
type: 'error',
action: 'remove-user',
actionId,
error: 'Read-only mode does not allow user changes.'
});
return;
}
const authorized = await requireHeadAdmin(user, message, ctx);
if (!authorized) {
return;
}
const targetPublicKey = normalizePublicKey(message.publicKey);
const actorPublicKey = authorized.auth.approvedBy || authorized.publicKey;
requireNotSelfUserTarget(actorPublicKey, targetPublicKey, 'remove');
requireNotFounderUserTarget(authorized.state, targetPublicKey, 'remove');
const target = authorized.state.admins[targetPublicKey];
if (!target || target.active === false) {
throw new Error('User not found or already inactive.');
}
if (target.role === ROLE_HEAD_ADMIN && countActiveHeadAdmins(authorized.state, targetPublicKey) < 1) {
throw new Error('Cannot remove the last active head admin.');
}
target.active = false;
target.removedAt = authorized.timestampMs;
target.removedBy = authorized.auth.approvedBy || authorized.publicKey;
revokeDevicesApprovedBy(authorized.state, targetPublicKey);
saveAuthState(authorized.state);
await sendOutput(user, {
type: 'user-removed',
actionId,
publicKey: targetPublicKey,
message: 'User removed.'
});
}
async function setUserRole(user, message = {}, ctx) {
const actionId = message.actionId || null;
if (ctx.readonly) {
await sendOutput(user, {
type: 'error',
action: 'set-user-role',
actionId,
error: 'Read-only mode does not allow user changes.'
});
return;
}
const authorized = await requireHeadAdmin(user, message, ctx);
if (!authorized) {
return;
}
const targetPublicKey = normalizePublicKey(message.publicKey);
const actorPublicKey = authorized.auth.approvedBy || authorized.publicKey;
requireNotSelfUserTarget(actorPublicKey, targetPublicKey, 'change the role of');
requireNotFounderUserTarget(authorized.state, targetPublicKey, 'change the role of');
const role = normalizeRole(message.role);
const target = authorized.state.admins[targetPublicKey];
if (!target || target.active === false) {
throw new Error('User not found or inactive.');
}
if (target.role === ROLE_HEAD_ADMIN && role !== ROLE_HEAD_ADMIN && countActiveHeadAdmins(authorized.state, targetPublicKey) < 1) {
throw new Error('Cannot demote the last active head admin.');
}
target.role = role;
target.updatedAt = authorized.timestampMs;
target.updatedBy = authorized.auth.approvedBy || authorized.publicKey;
syncDevicesApprovedByRole(authorized.state, targetPublicKey, role);
saveAuthState(authorized.state);
await sendOutput(user, {
type: 'user-role-updated',
actionId,
publicKey: targetPublicKey,
role,
message: `User role updated to ${role}.`
});
}
async function deleteUpload(user, message, ctx) {
const actionId = message.actionId || null;
if (ctx.readonly) {
await sendOutput(user, {
type: 'error',
action: 'delete-upload',
actionId,
filename: message.filename,
error: 'Read-only mode does not allow deletes.'
});
return;
}
const filename = normalizeFilename(message.filename);
const targetPath = getTargetPath(filename);
if (!fs.existsSync(targetPath)) {
await sendOutput(user, {
type: 'error',
action: 'delete-upload',
actionId,
filename,
error: `File does not exist: uploads/${filename}`
});
return;
}
const stat = fs.statSync(targetPath);
if (stat.isDirectory()) {
await sendOutput(user, {
type: 'error',
action: 'delete-upload',
actionId,
filename,
error: 'Deleting directories is not supported. Delete files individually.'
});
return;
}
fs.rmSync(targetPath, { force: true });
cleanupEmptyDirs(path.dirname(targetPath), UPLOADS_ROOT);
await sendOutput(user, {
type: 'delete-success',
actionId,
filename,
message: `Deleted uploads/${filename}`
});
}
async function handleUpload(user, message, ctx) {
if (ctx.readonly) {
await sendOutput(user, {
type: 'error',
uploadId: message.uploadId,
chunkNo: message.chunkNo,
error: 'Read-only mode does not allow uploads.'
});
return;
}
const uploadId = safeUploadId(message.uploadId);
const filename = normalizeFilename(message.filename);
const chunkNo = Number.parseInt(message.chunkNo, 10);
const totalChunks = Number.parseInt(message.totalChunks, 10);
const chunkHex = typeof message.chunk === 'string' ? message.chunk : '';
if (!Number.isInteger(chunkNo) || chunkNo < 1) {
throw new Error('Invalid chunkNo.');
}
if (!Number.isInteger(totalChunks) || totalChunks < 1) {
throw new Error('Invalid totalChunks.');
}
if (chunkNo > totalChunks) {
throw new Error('chunkNo cannot be greater than totalChunks.');
}
if (!/^[0-9a-fA-F]*$/.test(chunkHex)) {
throw new Error('Chunk must be hex encoded.');
}
const targetPath = getTargetPath(filename);
const sessions = loadSessions();
fs.mkdirSync(UPLOADS_ROOT, { recursive: true });
fs.mkdirSync(path.dirname(targetPath), { recursive: true });
if (chunkNo === 1) {
if (fs.existsSync(targetPath)) {
await sendOutput(user, {
type: 'error',
uploadId,
filename,
chunkNo,
totalChunks,
error: `File already exists: uploads/${filename}`
});
return;
}
sessions[uploadId] = {
filename,
totalChunks,
nextChunk: 1
};
}
const session = sessions[uploadId];
if (!session) {
throw new Error(`No active upload session for '${filename}'.`);
}
if (session.filename !== filename) {
throw new Error('Upload session filename mismatch.');
}
if (session.totalChunks !== totalChunks) {
throw new Error('Upload session totalChunks mismatch.');
}
if (session.nextChunk !== chunkNo) {
throw new Error(`Expected chunk ${session.nextChunk}, got chunk ${chunkNo}.`);
}
const chunkData = Buffer.from(chunkHex, 'hex');
fs.appendFileSync(targetPath, chunkData);
if (chunkNo === totalChunks) {
delete sessions[uploadId];
saveSessions(sessions);
await sendOutput(user, {
type: 'success',
uploadId,
filename,
chunkNo,
totalChunks,
path: `uploads/${filename}`,
message: `Uploaded '${filename}' to uploads/.`
});
return;
}
sessions[uploadId].nextChunk = chunkNo + 1;
saveSessions(sessions);
await sendOutput(user, {
type: 'ack',
uploadId,
filename,
chunkNo,
totalChunks,
message: `Chunk ${chunkNo}/${totalChunks} written to uploads/${filename}.`
});
}
async function listUploads(user, message = {}) {
function walk(dir, prefix = '') {
if (!fs.existsSync(dir)) {
return [];
}
const out = [];
const entries = fs.readdirSync(dir).sort((a, b) => a.localeCompare(b));
for (const entry of entries) {
const full = path.join(dir, entry);
const rel = prefix ? `${prefix}/${entry}` : entry;
const stat = fs.statSync(full);
if (stat.isDirectory()) {
out.push(...walk(full, rel));
} else {
out.push({
filename: rel,
size: stat.size
});
}
}
return out;
}
await sendOutput(user, {
type: 'uploads',
actionId: message.actionId || null,
data: walk(UPLOADS_ROOT)
});
}
const READ_DOWNLOAD_CHUNK_SIZE = 128 * 1024;
async function getUploadInfo(user, message = {}) {
const filename = normalizeFilename(message.filename);
const targetPath = getTargetPath(filename);
if (!fs.existsSync(targetPath)) {
await sendOutput(user, {
type: 'error',
action: 'get-upload-info',
filename,
error: `File does not exist: uploads/${filename}`
});
return;
}
const stat = fs.statSync(targetPath);
if (stat.isDirectory()) {
await sendOutput(user, {
type: 'error',
action: 'get-upload-info',
filename,
error: 'Downloading directories is not supported. Download files individually.'
});
return;
}
await sendOutput(user, {
type: 'download-info',
filename,
size: stat.size,
chunkSize: READ_DOWNLOAD_CHUNK_SIZE,
totalChunks: Math.max(1, Math.ceil(stat.size / READ_DOWNLOAD_CHUNK_SIZE))
});
}
async function getUploadChunk(user, message = {}) {
const filename = normalizeFilename(message.filename);
const chunkNo = Number.parseInt(message.chunkNo, 10);
const targetPath = getTargetPath(filename);
if (!Number.isInteger(chunkNo) || chunkNo < 1) {
throw new Error('Invalid download chunkNo.');
}
if (!fs.existsSync(targetPath)) {
await sendOutput(user, {
type: 'error',
action: 'get-upload-chunk',
filename,
chunkNo,
error: `File does not exist: uploads/${filename}`
});
return;
}
const stat = fs.statSync(targetPath);
if (stat.isDirectory()) {
await sendOutput(user, {
type: 'error',
action: 'get-upload-chunk',
filename,
chunkNo,
error: 'Downloading directories is not supported. Download files individually.'
});
return;
}
const totalChunks = Math.max(1, Math.ceil(stat.size / READ_DOWNLOAD_CHUNK_SIZE));
if (chunkNo > totalChunks) {
throw new Error(`Download chunkNo cannot be greater than totalChunks (${totalChunks}).`);
}
const offset = (chunkNo - 1) * READ_DOWNLOAD_CHUNK_SIZE;
const remaining = Math.max(0, stat.size - offset);
const length = Math.min(READ_DOWNLOAD_CHUNK_SIZE, remaining);
const buffer = Buffer.alloc(length);
if (length > 0) {
const fd = fs.openSync(targetPath, 'r');
try {
fs.readSync(fd, buffer, 0, length, offset);
} finally {
fs.closeSync(fd);
}
}
await sendOutput(user, {
type: 'download-chunk',
action: 'get-upload-chunk',
filename,
chunkNo,
totalChunks,
size: stat.size,
chunkHex: buffer.toString('hex')
});
}
async function rejectOldDownloadMessage(user, message = {}) {
await sendOutput(user, {
type: 'error',
action: 'download-upload',
filename: message.filename,
error: 'Your browser is still using the old download frontend. Hard-refresh the page or replace the HTML with the read-request version.'
});
}
async function routeMessage(user, message, ctx) {
if (message.type === 'auth-status') {
await authStatus(user, message, ctx);
return;
}
if (message.type === 'bootstrap-head-admin') {
await bootstrapHeadAdmin(user, message, ctx);
return;
}
if (message.type === 'authorize-device') {
await authorizeDevice(user, message, ctx);
return;
}
if (message.type === 'ping') {
await sendOutput(user, {
type: 'pong',
actionId: message.actionId || null,
message: 'Contract is alive.'
});
return;
}
if (message.type === 'download-upload') {
await rejectOldDownloadMessage(user, message);
return;
}
if (PROTECTED_TYPES.has(message.type)) {
const ok = await requireAuthorized(user, message, ctx);
if (!ok) {
return;
}
}
if (message.type === 'list-users') {
await listUsers(user, message, ctx);
} else if (message.type === 'list-unls') {
await listUnls(user, message, ctx);
} else if (message.type === 'add-unl') {
await addUnl(user, message, ctx);
} else if (message.type === 'remove-unl') {
await removeUnl(user, message, ctx);
} else if (message.type === 'add-user') {
await addUser(user, message, ctx);
} else if (message.type === 'remove-user') {
await removeUser(user, message, ctx);
} else if (message.type === 'set-user-role') {
await setUserRole(user, message, ctx);
} else if (message.type === 'upload') {
await handleUpload(user, message, ctx);
} else if (message.type === 'list-uploads') {
await listUploads(user, message);
} else if (message.type === 'delete-upload') {
await deleteUpload(user, message, ctx);
} else if (message.type === 'get-upload-info') {
await getUploadInfo(user, message);
} else if (message.type === 'get-upload-chunk') {
await getUploadChunk(user, message);
} else {
await sendOutput(user, {
type: 'error',
actionId: message.actionId || null,
error: `Unknown message type: ${message.type}`
});
}
}
async function contract(ctx) {
for (const user of ctx.users.list()) {
for (const input of user.inputs) {
let message;
try {
const buf = await ctx.users.read(input);
message = bson.deserialize(buf);
} catch (err) {
await sendOutput(user, {
type: 'error',
error: `Failed to decode BSON input: ${err.message}`
});
continue;
}
try {
await routeMessage(user, message, ctx);
} catch (err) {
await sendOutput(user, {
type: 'error',
actionId: message?.actionId || null,
uploadId: message?.uploadId,
filename: message?.filename,
chunkNo: message?.chunkNo,
totalChunks: message?.totalChunks,
action: message?.type,
error: err.message
});
}
}
}
}
const hpc = new HotPocket.Contract();
hpc.init(contract);
})();
module.exports = __webpack_exports__;
/******/ })()
;Code: Select all
{
"deployBinPath": "/usr/bin/node",
"deployBinArgs": "index.js",
"roundtime": 4000,
"unl": [],
"knownPeers": []
}Code: Select all
/**
* Minified by jsDelivr using Terser v5.37.0.
* Original file: /npm/bson@6.8.0/lib/bson.bundle.js
*
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
var BSON=function(e){"use strict";function t(e){return["[object ArrayBuffer]","[object SharedArrayBuffer]"].includes(Object.prototype.toString.call(e))}function n(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function r(e){return"[object RegExp]"===Object.prototype.toString.call(e)}function i(e){return"[object Map]"===Object.prototype.toString.call(e)}function o(e){return"[object Date]"===Object.prototype.toString.call(e)}function s(e,t){return JSON.stringify(e,((e,t)=>"bigint"==typeof t?{$numberLong:`${t}`}:i(t)?Object.fromEntries(t):t))}const f=2147483647,u=-2147483648,l=Math.pow(2,63)-1,a=-Math.pow(2,63),h=Math.pow(2,53),c=-Math.pow(2,53),g=Object.freeze({double:1,string:2,object:3,array:4,binData:5,undefined:6,objectId:7,bool:8,date:9,null:10,regex:11,dbPointer:12,javascript:13,symbol:14,javascriptWithScope:15,int:16,timestamp:17,long:18,decimal:19,minKey:-1,maxKey:127});class b extends Error{get bsonError(){return!0}get name(){return"BSONError"}constructor(e,t){super(e,t)}static isBSONError(e){return null!=e&&"object"==typeof e&&"bsonError"in e&&!0===e.bsonError&&"name"in e&&"message"in e&&"stack"in e}}class d extends b{get name(){return"BSONVersionError"}constructor(){super("Unsupported BSON version, bson types must be from bson 6.x.x")}}class p extends b{get name(){return"BSONRuntimeError"}constructor(e){super(e)}}class m extends b{get name(){return"BSONOffsetError"}constructor(e,t,n){super(`${e}. offset: ${t}`,n),this.offset=t}}let y,w;function B(e,t,n,r){if(r){y??=new TextDecoder("utf8",{fatal:!0});try{return y.decode(e.subarray(t,n))}catch(e){throw new b("Invalid UTF-8 string in BSON document",{cause:e})}}return w??=new TextDecoder("utf8",{fatal:!1}),w.decode(e.subarray(t,n))}function S(e,t,n){if(0===e.length)return"";const r=n-t;if(0===r)return"";if(r>20)return null;if(1===r&&e[t]<128)return String.fromCharCode(e[t]);if(2===r&&e[t]<128&&e[t+1]<128)return String.fromCharCode(e[t])+String.fromCharCode(e[t+1]);if(3===r&&e[t]<128&&e[t+1]<128&&e[t+2]<128)return String.fromCharCode(e[t])+String.fromCharCode(e[t+1])+String.fromCharCode(e[t+2]);const i=[];for(let r=t;r<n;r++){const t=e[r];if(t>127)return null;i.push(t)}return String.fromCharCode(...i)}function N(e){return O.fromNumberArray(Array.from({length:e},(()=>Math.floor(256*Math.random()))))}const E=(()=>{try{return require("crypto").randomBytes}catch{return N}})(),O={toLocalBufferType(e){if(Buffer.isBuffer(e))return e;if(ArrayBuffer.isView(e))return Buffer.from(e.buffer,e.byteOffset,e.byteLength);const t=e?.[Symbol.toStringTag]??Object.prototype.toString.call(e);if("ArrayBuffer"===t||"SharedArrayBuffer"===t||"[object ArrayBuffer]"===t||"[object SharedArrayBuffer]"===t)return Buffer.from(e);throw new b(`Cannot create Buffer from ${String(e)}`)},allocate:e=>Buffer.alloc(e),allocateUnsafe:e=>Buffer.allocUnsafe(e),equals:(e,t)=>O.toLocalBufferType(e).equals(t),fromNumberArray:e=>Buffer.from(e),fromBase64:e=>Buffer.from(e,"base64"),toBase64:e=>O.toLocalBufferType(e).toString("base64"),fromISO88591:e=>Buffer.from(e,"binary"),toISO88591:e=>O.toLocalBufferType(e).toString("binary"),fromHex:e=>Buffer.from(e,"hex"),toHex:e=>O.toLocalBufferType(e).toString("hex"),toUTF8(e,t,n,r){const i=n-t<=20?S(e,t,n):null;if(null!=i)return i;const o=O.toLocalBufferType(e).toString("utf8",t,n);if(r)for(let r=0;r<o.length;r++)if(65533===o.charCodeAt(r)){B(e,t,n,!0);break}return o},utf8ByteLength:e=>Buffer.byteLength(e,"utf8"),encodeUTF8Into(e,t,n){const r=function(e,t,n){if(0===t.length)return 0;if(t.length>25)return null;if(e.length-n<t.length)return null;for(let r=0,i=n;r<t.length;r++,i++){const n=t.charCodeAt(r);if(n>127)return null;e[i]=n}return t.length}(e,t,n);return null!=r?r:O.toLocalBufferType(e).write(t,n,void 0,"utf8")},randomBytes:E};function x(e){if(e<0)throw new RangeError(`The argument 'byteLength' is invalid. Received ${e}`);return _.fromNumberArray(Array.from({length:e},(()=>Math.floor(256*Math.random()))))}const I=(()=>{const{crypto:e}=globalThis;if(null!=e&&"function"==typeof e.getRandomValues)return t=>e.getRandomValues(_.allocate(t));if(function(){const{navigator:e}=globalThis;return"object"==typeof e&&"ReactNative"===e.product}()){const{console:e}=globalThis;e?.warn?.("BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.")}return x})(),$=/(\d|[a-f])/i,_={toLocalBufferType(e){const t=e?.[Symbol.toStringTag]??Object.prototype.toString.call(e);if("Uint8Array"===t)return e;if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength));if("ArrayBuffer"===t||"SharedArrayBuffer"===t||"[object ArrayBuffer]"===t||"[object SharedArrayBuffer]"===t)return new Uint8Array(e);throw new b(`Cannot make a Uint8Array from ${String(e)}`)},allocate(e){if("number"!=typeof e)throw new TypeError(`The "size" argument must be of type number. Received ${String(e)}`);return new Uint8Array(e)},allocateUnsafe:e=>_.allocate(e),equals(e,t){if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0},fromNumberArray:e=>Uint8Array.from(e),fromBase64:e=>Uint8Array.from(atob(e),(e=>e.charCodeAt(0))),toBase64:e=>btoa(_.toISO88591(e)),fromISO88591:e=>Uint8Array.from(e,(e=>255&e.charCodeAt(0))),toISO88591:e=>Array.from(Uint16Array.from(e),(e=>String.fromCharCode(e))).join(""),fromHex(e){const t=e.length%2==0?e:e.slice(0,e.length-1),n=[];for(let e=0;e<t.length;e+=2){const r=t[e],i=t[e+1];if(!$.test(r))break;if(!$.test(i))break;const o=Number.parseInt(`${r}${i}`,16);n.push(o)}return Uint8Array.from(n)},toHex:e=>Array.from(e,(e=>e.toString(16).padStart(2,"0"))).join(""),toUTF8(e,t,n,r){const i=n-t<=20?S(e,t,n):null;return null!=i?i:B(e,t,n,r)},utf8ByteLength:e=>(new TextEncoder).encode(e).byteLength,encodeUTF8Into(e,t,n){const r=(new TextEncoder).encode(t);return e.set(r,n),r.byteLength},randomBytes:I},L="function"==typeof Buffer&&!0!==Buffer.prototype?._isBuffer?O:_;class U{get[Symbol.for("@@mdb.bson.version")](){return 6}[Symbol.for("nodejs.util.inspect.custom")](e,t,n){return this.inspect(e,t,n)}}class T extends U{get _bsontype(){return"Binary"}constructor(e,n){if(super(),null!=e&&"string"==typeof e&&!ArrayBuffer.isView(e)&&!t(e)&&!Array.isArray(e))throw new b("Binary can only be constructed from Uint8Array or number[]");this.sub_type=n??T.BSON_BINARY_SUBTYPE_DEFAULT,null==e?(this.buffer=L.allocate(T.BUFFER_SIZE),this.position=0):(this.buffer=Array.isArray(e)?L.fromNumberArray(e):L.toLocalBufferType(e),this.position=this.buffer.byteLength)}put(e){if("string"==typeof e&&1!==e.length)throw new b("only accepts single character String");if("number"!=typeof e&&1!==e.length)throw new b("only accepts single character Uint8Array or Array");let t;if(t="string"==typeof e?e.charCodeAt(0):"number"==typeof e?e:e[0],t<0||t>255)throw new b("only accepts number in a valid unsigned byte range 0-255");if(this.buffer.byteLength>this.position)this.buffer[this.position++]=t;else{const e=L.allocate(T.BUFFER_SIZE+this.buffer.length);e.set(this.buffer,0),this.buffer=e,this.buffer[this.position++]=t}}write(e,t){if(t="number"==typeof t?t:this.position,this.buffer.byteLength<t+e.length){const t=L.allocate(this.buffer.byteLength+e.length);t.set(this.buffer,0),this.buffer=t}if(ArrayBuffer.isView(e))this.buffer.set(L.toLocalBufferType(e),t),this.position=t+e.byteLength>this.position?t+e.length:this.position;else if("string"==typeof e)throw new b("input cannot be string")}read(e,t){return t=t&&t>0?t:this.position,this.buffer.slice(e,e+t)}value(){return this.buffer.length===this.position?this.buffer:this.buffer.subarray(0,this.position)}length(){return this.position}toJSON(){return L.toBase64(this.buffer.subarray(0,this.position))}toString(e){return"hex"===e?L.toHex(this.buffer.subarray(0,this.position)):"base64"===e?L.toBase64(this.buffer.subarray(0,this.position)):L.toUTF8(this.buffer,0,this.position,!1)}toExtendedJSON(e){e=e||{};const t=L.toBase64(this.buffer),n=Number(this.sub_type).toString(16);return e.legacy?{$binary:t,$type:1===n.length?"0"+n:n}:{$binary:{base64:t,subType:1===n.length?"0"+n:n}}}toUUID(){if(this.sub_type===T.SUBTYPE_UUID)return new A(this.buffer.slice(0,this.position));throw new b(`Binary sub_type "${this.sub_type}" is not supported for converting to UUID. Only "${T.SUBTYPE_UUID}" is currently supported.`)}static createFromHexString(e,t){return new T(L.fromHex(e),t)}static createFromBase64(e,t){return new T(L.fromBase64(e),t)}static fromExtendedJSON(e,t){let n,r;if(t=t||{},"$binary"in e?t.legacy&&"string"==typeof e.$binary&&"$type"in e?(r=e.$type?parseInt(e.$type,16):0,n=L.fromBase64(e.$binary)):"string"!=typeof e.$binary&&(r=e.$binary.subType?parseInt(e.$binary.subType,16):0,n=L.fromBase64(e.$binary.base64)):"$uuid"in e&&(r=4,n=A.bytesFromString(e.$uuid)),!n)throw new b(`Unexpected Binary Extended JSON format ${JSON.stringify(e)}`);return 4===r?new A(n):new T(n,r)}inspect(e,t,n){n??=s;return`Binary.createFromBase64(${n(L.toBase64(this.buffer.subarray(0,this.position)),t)}, ${n(this.sub_type,t)})`}}T.BSON_BINARY_SUBTYPE_DEFAULT=0,T.BUFFER_SIZE=256,T.SUBTYPE_DEFAULT=0,T.SUBTYPE_FUNCTION=1,T.SUBTYPE_BYTE_ARRAY=2,T.SUBTYPE_UUID_OLD=3,T.SUBTYPE_UUID=4,T.SUBTYPE_MD5=5,T.SUBTYPE_ENCRYPTED=6,T.SUBTYPE_COLUMN=7,T.SUBTYPE_SENSITIVE=8,T.SUBTYPE_USER_DEFINED=128;const v=/^[0-9A-F]{32}$/i,j=/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;class A extends T{constructor(e){let t;if(null==e)t=A.generate();else if(e instanceof A)t=L.toLocalBufferType(new Uint8Array(e.buffer));else if(ArrayBuffer.isView(e)&&16===e.byteLength)t=L.toLocalBufferType(e);else{if("string"!=typeof e)throw new b("Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).");t=A.bytesFromString(e)}super(t,4)}get id(){return this.buffer}set id(e){this.buffer=e}toHexString(e=!0){return e?[L.toHex(this.buffer.subarray(0,4)),L.toHex(this.buffer.subarray(4,6)),L.toHex(this.buffer.subarray(6,8)),L.toHex(this.buffer.subarray(8,10)),L.toHex(this.buffer.subarray(10,16))].join("-"):L.toHex(this.buffer)}toString(e){return"hex"===e?L.toHex(this.id):"base64"===e?L.toBase64(this.id):this.toHexString()}toJSON(){return this.toHexString()}equals(e){if(!e)return!1;if(e instanceof A)return L.equals(e.id,this.id);try{return L.equals(new A(e).id,this.id)}catch{return!1}}toBinary(){return new T(this.id,T.SUBTYPE_UUID)}static generate(){const e=L.randomBytes(16);return e[6]=15&e[6]|64,e[8]=63&e[8]|128,e}static isValid(e){return!!e&&("string"==typeof e?A.isValidUUIDString(e):n(e)?16===e.byteLength:"Binary"===e._bsontype&&e.sub_type===this.SUBTYPE_UUID&&16===e.buffer.byteLength)}static createFromHexString(e){const t=A.bytesFromString(e);return new A(t)}static createFromBase64(e){return new A(L.fromBase64(e))}static bytesFromString(e){if(!A.isValidUUIDString(e))throw new b("UUID string representation must be 32 hex digits or canonical hyphenated representation");return L.fromHex(e.replace(/-/g,""))}static isValidUUIDString(e){return v.test(e)||j.test(e)}inspect(e,t,n){return n??=s,`new UUID(${n(this.toHexString(),t)})`}}class R extends U{get _bsontype(){return"Code"}constructor(e,t){super(),this.code=e.toString(),this.scope=t??null}toJSON(){return null!=this.scope?{code:this.code,scope:this.scope}:{code:this.code}}toExtendedJSON(){return this.scope?{$code:this.code,$scope:this.scope}:{$code:this.code}}static fromExtendedJSON(e){return new R(e.$code,e.$scope)}inspect(e,t,n){n??=s;let r=n(this.code,t);const i=r.includes("\n");null!=this.scope&&(r+=`,${i?"\n":" "}${n(this.scope,t)}`);return`new Code(${i?"\n":""}${r}${i&&null===this.scope?"\n":""})`}}function D(e){return null!=e&&"object"==typeof e&&"$id"in e&&null!=e.$id&&"$ref"in e&&"string"==typeof e.$ref&&(!("$db"in e)||"$db"in e&&"string"==typeof e.$db)}class F extends U{get _bsontype(){return"DBRef"}constructor(e,t,n,r){super();const i=e.split(".");2===i.length&&(n=i.shift(),e=i.shift()),this.collection=e,this.oid=t,this.db=n,this.fields=r||{}}get namespace(){return this.collection}set namespace(e){this.collection=e}toJSON(){const e=Object.assign({$ref:this.collection,$id:this.oid},this.fields);return null!=this.db&&(e.$db=this.db),e}toExtendedJSON(e){e=e||{};let t={$ref:this.collection,$id:this.oid};return e.legacy||(this.db&&(t.$db=this.db),t=Object.assign(t,this.fields)),t}static fromExtendedJSON(e){const t=Object.assign({},e);return delete t.$ref,delete t.$id,delete t.$db,new F(e.$ref,e.$id,e.$db,t)}inspect(e,t,n){n??=s;const r=[n(this.namespace,t),n(this.oid,t),...this.db?[n(this.db,t)]:[],...Object.keys(this.fields).length>0?[n(this.fields,t)]:[]];return r[1]=n===s?`new ObjectId(${r[1]})`:r[1],`new DBRef(${r.join(", ")})`}}function M(e){if(""===e)return e;let t=0;const n="-"===e[t],r="+"===e[t];(r||n)&&(t+=1);let i=!1;for(;t<e.length&&"0"===e[t];++t)i=!0;return i?`${n?"-":""}${e.length===t?"0":e.slice(t)}`:r?e.slice(1):e}let z;try{z=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}const J=4294967296,V=0x10000000000000000,C=V/2,H={},q={},k=/^(\+?0|(\+|-)?[1-9][0-9]*)$/;class Y extends U{get _bsontype(){return"Long"}get __isLong__(){return!0}constructor(e=0,t,n){super();const r="boolean"==typeof t?t:Boolean(n),i="number"==typeof t?t:0,o="string"==typeof e?Y.fromString(e,r):"bigint"==typeof e?Y.fromBigInt(e,r):{low:0|e,high:0|i,unsigned:r};this.low=o.low,this.high=o.high,this.unsigned=o.unsigned}static fromBits(e,t,n){return new Y(e,t,n)}static fromInt(e,t){let n,r,i;return t?(i=0<=(e>>>=0)&&e<256)&&(r=q[e],r)?r:(n=Y.fromBits(e,(0|e)<0?-1:0,!0),i&&(q[e]=n),n):(i=-128<=(e|=0)&&e<128)&&(r=H[e],r)?r:(n=Y.fromBits(e,e<0?-1:0,!1),i&&(H[e]=n),n)}static fromNumber(e,t){if(isNaN(e))return t?Y.UZERO:Y.ZERO;if(t){if(e<0)return Y.UZERO;if(e>=V)return Y.MAX_UNSIGNED_VALUE}else{if(e<=-C)return Y.MIN_VALUE;if(e+1>=C)return Y.MAX_VALUE}return e<0?Y.fromNumber(-e,t).neg():Y.fromBits(e%J|0,e/J|0,t)}static fromBigInt(e,t){const n=BigInt(4294967295),r=BigInt(32);return new Y(Number(e&n),Number(e>>r&n),t)}static _fromString(e,t,n){if(0===e.length)throw new b("empty string");if(n<2||36<n)throw new b("radix");let r;if((r=e.indexOf("-"))>0)throw new b("interior hyphen");if(0===r)return Y._fromString(e.substring(1),t,n).neg();const i=Y.fromNumber(Math.pow(n,8));let o=Y.ZERO;for(let t=0;t<e.length;t+=8){const r=Math.min(8,e.length-t),s=parseInt(e.substring(t,t+r),n);if(r<8){const e=Y.fromNumber(Math.pow(n,r));o=o.mul(e).add(Y.fromNumber(s))}else o=o.mul(i),o=o.add(Y.fromNumber(s))}return o.unsigned=t,o}static fromStringStrict(e,t,n){let r=!1;if("number"==typeof t?(n=t,t=!1):r=!!t,n??=10,e.trim()!==e)throw new b(`Input: '${e}' contains leading and/or trailing whitespace`);if(!function(e,t){const n="0123456789abcdefghijklmnopqrstuvwxyz".slice(0,t=t??10);return!new RegExp(`[^-+${n}]`,"i").test(e)&&e}(e,n))throw new b(`Input: '${e}' contains invalid characters for radix: ${n}`);const i=M(e),o=Y._fromString(i,r,n);if(o.toString(n).toLowerCase()!==i.toLowerCase())throw new b(`Input: ${e} is not representable as ${o.unsigned?"an unsigned":"a signed"} 64-bit Long ${null!=n?`with radix: ${n}`:""}`);return o}static fromString(e,t,n){let r=!1;return"number"==typeof t?(n=t,t=!1):r=!!t,n??=10,"NaN"===e&&n<24||("Infinity"===e||"+Infinity"===e||"-Infinity"===e)&&n<35?Y.ZERO:Y._fromString(e,r,n)}static fromBytes(e,t,n){return n?Y.fromBytesLE(e,t):Y.fromBytesBE(e,t)}static fromBytesLE(e,t){return new Y(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)}static fromBytesBE(e,t){return new Y(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}static isLong(e){return null!=e&&"object"==typeof e&&"__isLong__"in e&&!0===e.__isLong__}static fromValue(e,t){return"number"==typeof e?Y.fromNumber(e,t):"string"==typeof e?Y.fromString(e,t):Y.fromBits(e.low,e.high,"boolean"==typeof t?t:e.unsigned)}add(e){Y.isLong(e)||(e=Y.fromValue(e));const t=this.high>>>16,n=65535&this.high,r=this.low>>>16,i=65535&this.low,o=e.high>>>16,s=65535&e.high,f=e.low>>>16;let u=0,l=0,a=0,h=0;return h+=i+(65535&e.low),a+=h>>>16,h&=65535,a+=r+f,l+=a>>>16,a&=65535,l+=n+s,u+=l>>>16,l&=65535,u+=t+o,u&=65535,Y.fromBits(a<<16|h,u<<16|l,this.unsigned)}and(e){return Y.isLong(e)||(e=Y.fromValue(e)),Y.fromBits(this.low&e.low,this.high&e.high,this.unsigned)}compare(e){if(Y.isLong(e)||(e=Y.fromValue(e)),this.eq(e))return 0;const t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1}comp(e){return this.compare(e)}divide(e){if(Y.isLong(e)||(e=Y.fromValue(e)),e.isZero())throw new b("division by zero");if(z){if(!this.unsigned&&-2147483648===this.high&&-1===e.low&&-1===e.high)return this;const t=(this.unsigned?z.div_u:z.div_s)(this.low,this.high,e.low,e.high);return Y.fromBits(t,z.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?Y.UZERO:Y.ZERO;let t,n,r;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return Y.UZERO;if(e.gt(this.shru(1)))return Y.UONE;r=Y.UZERO}else{if(this.eq(Y.MIN_VALUE)){if(e.eq(Y.ONE)||e.eq(Y.NEG_ONE))return Y.MIN_VALUE;if(e.eq(Y.MIN_VALUE))return Y.ONE;return t=this.shr(1).div(e).shl(1),t.eq(Y.ZERO)?e.isNegative()?Y.ONE:Y.NEG_ONE:(n=this.sub(e.mul(t)),r=t.add(n.div(e)),r)}if(e.eq(Y.MIN_VALUE))return this.unsigned?Y.UZERO:Y.ZERO;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();r=Y.ZERO}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));const i=Math.ceil(Math.log(t)/Math.LN2),o=i<=48?1:Math.pow(2,i-48);let s=Y.fromNumber(t),f=s.mul(e);for(;f.isNegative()||f.gt(n);)t-=o,s=Y.fromNumber(t,this.unsigned),f=s.mul(e);s.isZero()&&(s=Y.ONE),r=r.add(s),n=n.sub(f)}return r}div(e){return this.divide(e)}equals(e){return Y.isLong(e)||(e=Y.fromValue(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)}eq(e){return this.equals(e)}getHighBits(){return this.high}getHighBitsUnsigned(){return this.high>>>0}getLowBits(){return this.low}getLowBitsUnsigned(){return this.low>>>0}getNumBitsAbs(){if(this.isNegative())return this.eq(Y.MIN_VALUE)?64:this.neg().getNumBitsAbs();const e=0!==this.high?this.high:this.low;let t;for(t=31;t>0&&!(e&1<<t);t--);return 0!==this.high?t+33:t+1}greaterThan(e){return this.comp(e)>0}gt(e){return this.greaterThan(e)}greaterThanOrEqual(e){return this.comp(e)>=0}gte(e){return this.greaterThanOrEqual(e)}ge(e){return this.greaterThanOrEqual(e)}isEven(){return!(1&this.low)}isNegative(){return!this.unsigned&&this.high<0}isOdd(){return!(1&~this.low)}isPositive(){return this.unsigned||this.high>=0}isZero(){return 0===this.high&&0===this.low}lessThan(e){return this.comp(e)<0}lt(e){return this.lessThan(e)}lessThanOrEqual(e){return this.comp(e)<=0}lte(e){return this.lessThanOrEqual(e)}modulo(e){if(Y.isLong(e)||(e=Y.fromValue(e)),z){const t=(this.unsigned?z.rem_u:z.rem_s)(this.low,this.high,e.low,e.high);return Y.fromBits(t,z.get_high(),this.unsigned)}return this.sub(this.div(e).mul(e))}mod(e){return this.modulo(e)}rem(e){return this.modulo(e)}multiply(e){if(this.isZero())return Y.ZERO;if(Y.isLong(e)||(e=Y.fromValue(e)),z){const t=z.mul(this.low,this.high,e.low,e.high);return Y.fromBits(t,z.get_high(),this.unsigned)}if(e.isZero())return Y.ZERO;if(this.eq(Y.MIN_VALUE))return e.isOdd()?Y.MIN_VALUE:Y.ZERO;if(e.eq(Y.MIN_VALUE))return this.isOdd()?Y.MIN_VALUE:Y.ZERO;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(Y.TWO_PWR_24)&&e.lt(Y.TWO_PWR_24))return Y.fromNumber(this.toNumber()*e.toNumber(),this.unsigned);const t=this.high>>>16,n=65535&this.high,r=this.low>>>16,i=65535&this.low,o=e.high>>>16,s=65535&e.high,f=e.low>>>16,u=65535&e.low;let l=0,a=0,h=0,c=0;return c+=i*u,h+=c>>>16,c&=65535,h+=r*u,a+=h>>>16,h&=65535,h+=i*f,a+=h>>>16,h&=65535,a+=n*u,l+=a>>>16,a&=65535,a+=r*f,l+=a>>>16,a&=65535,a+=i*s,l+=a>>>16,a&=65535,l+=t*u+n*f+r*s+i*o,l&=65535,Y.fromBits(h<<16|c,l<<16|a,this.unsigned)}mul(e){return this.multiply(e)}negate(){return!this.unsigned&&this.eq(Y.MIN_VALUE)?Y.MIN_VALUE:this.not().add(Y.ONE)}neg(){return this.negate()}not(){return Y.fromBits(~this.low,~this.high,this.unsigned)}notEquals(e){return!this.equals(e)}neq(e){return this.notEquals(e)}ne(e){return this.notEquals(e)}or(e){return Y.isLong(e)||(e=Y.fromValue(e)),Y.fromBits(this.low|e.low,this.high|e.high,this.unsigned)}shiftLeft(e){return Y.isLong(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?Y.fromBits(this.low<<e,this.high<<e|this.low>>>32-e,this.unsigned):Y.fromBits(0,this.low<<e-32,this.unsigned)}shl(e){return this.shiftLeft(e)}shiftRight(e){return Y.isLong(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?Y.fromBits(this.low>>>e|this.high<<32-e,this.high>>e,this.unsigned):Y.fromBits(this.high>>e-32,this.high>=0?0:-1,this.unsigned)}shr(e){return this.shiftRight(e)}shiftRightUnsigned(e){if(Y.isLong(e)&&(e=e.toInt()),0===(e&=63))return this;{const t=this.high;if(e<32){const n=this.low;return Y.fromBits(n>>>e|t<<32-e,t>>>e,this.unsigned)}return 32===e?Y.fromBits(t,0,this.unsigned):Y.fromBits(t>>>e-32,0,this.unsigned)}}shr_u(e){return this.shiftRightUnsigned(e)}shru(e){return this.shiftRightUnsigned(e)}subtract(e){return Y.isLong(e)||(e=Y.fromValue(e)),this.add(e.neg())}sub(e){return this.subtract(e)}toInt(){return this.unsigned?this.low>>>0:this.low}toNumber(){return this.unsigned?(this.high>>>0)*J+(this.low>>>0):this.high*J+(this.low>>>0)}toBigInt(){return BigInt(this.toString())}toBytes(e){return e?this.toBytesLE():this.toBytesBE()}toBytesLE(){const e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]}toBytesBE(){const e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]}toSigned(){return this.unsigned?Y.fromBits(this.low,this.high,!1):this}toString(e){if((e=e||10)<2||36<e)throw new b("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(Y.MIN_VALUE)){const t=Y.fromNumber(e),n=this.div(t),r=n.mul(t).sub(this);return n.toString(e)+r.toInt().toString(e)}return"-"+this.neg().toString(e)}const t=Y.fromNumber(Math.pow(e,6),this.unsigned);let n=this,r="";for(;;){const i=n.div(t);let o=(n.sub(i.mul(t)).toInt()>>>0).toString(e);if(n=i,n.isZero())return o+r;for(;o.length<6;)o="0"+o;r=""+o+r}}toUnsigned(){return this.unsigned?this:Y.fromBits(this.low,this.high,!0)}xor(e){return Y.isLong(e)||(e=Y.fromValue(e)),Y.fromBits(this.low^e.low,this.high^e.high,this.unsigned)}eqz(){return this.isZero()}le(e){return this.lessThanOrEqual(e)}toExtendedJSON(e){return e&&e.relaxed?this.toNumber():{$numberLong:this.toString()}}static fromExtendedJSON(e,t){const{useBigInt64:n=!1,relaxed:r=!0}={...t};if(e.$numberLong.length>20)throw new b("$numberLong string is too long");if(!k.test(e.$numberLong))throw new b(`$numberLong string "${e.$numberLong}" is in an invalid format`);if(n){const t=BigInt(e.$numberLong);return BigInt.asIntN(64,t)}const i=Y.fromString(e.$numberLong);return r?i.toNumber():i}inspect(e,t,n){n??=s;return`new Long(${n(this.toString(),t)}${this.unsigned?`, ${n(this.unsigned,t)}`:""})`}}Y.TWO_PWR_24=Y.fromInt(1<<24),Y.MAX_UNSIGNED_VALUE=Y.fromBits(-1,-1,!0),Y.ZERO=Y.fromInt(0),Y.UZERO=Y.fromInt(0,!0),Y.ONE=Y.fromInt(1),Y.UONE=Y.fromInt(1,!0),Y.NEG_ONE=Y.fromInt(-1),Y.MAX_VALUE=Y.fromBits(-1,2147483647,!1),Y.MIN_VALUE=Y.fromBits(0,-2147483648,!1);const P=/^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/,Z=/^(\+|-)?(Infinity|inf)$/i,K=/^(\+|-)?NaN$/i,W=6111,G=-6176,X=L.fromNumberArray([124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse()),Q=L.fromNumberArray([248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse()),ee=L.fromNumberArray([120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse()),te=/^([-+])?(\d+)?$/;function ne(e){return!isNaN(parseInt(e,10))}function re(e){const t=Y.fromNumber(1e9);let n=Y.fromNumber(0);if(!(e.parts[0]||e.parts[1]||e.parts[2]||e.parts[3]))return{quotient:e,rem:n};for(let r=0;r<=3;r++)n=n.shiftLeft(32),n=n.add(new Y(e.parts[r],0)),e.parts[r]=n.div(t).low,n=n.modulo(t);return{quotient:e,rem:n}}function ie(e,t){throw new b(`"${e}" is not a valid Decimal128 string - ${t}`)}class oe extends U{get _bsontype(){return"Decimal128"}constructor(e){if(super(),"string"==typeof e)this.bytes=oe.fromString(e).bytes;else{if(!n(e))throw new b("Decimal128 must take a Buffer or string");if(16!==e.byteLength)throw new b("Decimal128 must take a Buffer of 16 bytes");this.bytes=e}}static fromString(e){return oe._fromString(e,{allowRounding:!1})}static fromStringWithRounding(e){return oe._fromString(e,{allowRounding:!0})}static _fromString(e,t){let n=!1,r=!1,i=!1,o=!1,s=0,f=0,u=0,l=0,a=0;const h=[0];let c=0,g=0,d=0,p=0,m=new Y(0,0),y=new Y(0,0),w=0,B=0;if(e.length>=7e3)throw new b(e+" not a valid Decimal128 string");const S=e.match(P),N=e.match(Z),E=e.match(K);if(!S&&!N&&!E||0===e.length)throw new b(e+" not a valid Decimal128 string");if(S){const t=S[2],n=S[4],r=S[5],i=S[6];n&&void 0===i&&ie(e,"missing exponent power"),n&&void 0===t&&ie(e,"missing exponent base"),void 0===n&&(r||i)&&ie(e,"missing e before exponent")}if("+"!==e[B]&&"-"!==e[B]||(r=!0,n="-"===e[B++]),!ne(e[B])&&"."!==e[B]){if("i"===e[B]||"I"===e[B])return new oe(n?Q:ee);if("N"===e[B])return new oe(X)}for(;ne(e[B])||"."===e[B];)"."!==e[B]?(c<34&&("0"!==e[B]||o)&&(o||(a=f),o=!0,h[g++]=parseInt(e[B],10),c+=1),o&&(u+=1),i&&(l+=1),f+=1,B+=1):(i&&ie(e,"contains multiple periods"),i=!0,B+=1);if(i&&!f)throw new b(e+" not a valid Decimal128 string");if("e"===e[B]||"E"===e[B]){const t=e.substr(++B).match(te);if(!t||!t[2])return new oe(X);p=parseInt(t[0],10),B+=t[0].length}if(e[B])return new oe(X);if(c){if(d=c-1,s=u,1!==s)for(;"0"===e[a+s-1+Number(r)+Number(i)];)s-=1}else h[0]=0,u=1,c=1,s=0;for(p<=l&&l>p+16384?p=G:p-=l;p>W;){if(d+=1,d>=34){if(0===s){p=W;break}ie(e,"overflow")}p-=1}if(t.allowRounding){for(;p<G||c<u;){if(0===d&&s<c){p=G,s=0;break}if(c<u?u-=1:d-=1,p<W)p+=1;else{if(h.join("").match(/^0+$/)){p=W;break}ie(e,"overflow")}}if(d+1<s){let t=f;i&&(a+=1,t+=1),r&&(a+=1,t+=1);const o=parseInt(e[a+d+1],10);let s=0;if(o>=5&&(s=1,5===o)){s=h[d]%2==1?1:0;for(let n=a+d+2;n<t;n++)if(parseInt(e[n],10)){s=1;break}}if(s){let e=d;for(;e>=0&&++h[e]>9;e--)if(h[e]=0,0===e){if(!(p<W))return new oe(n?Q:ee);p+=1,h[e]=1}}}}else{for(;p<G||c<u;){if(0===d){if(0===s){p=G;break}ie(e,"exponent underflow")}c<u?("0"!==e[u-1+Number(r)+Number(i)]&&0!==s&&ie(e,"inexact rounding"),u-=1):(0!==h[d]&&ie(e,"inexact rounding"),d-=1),p<W?p+=1:ie(e,"overflow")}if(d+1<s){i&&(a+=1),r&&(a+=1);0!==parseInt(e[a+d+1],10)&&ie(e,"inexact rounding")}}if(m=Y.fromNumber(0),y=Y.fromNumber(0),0===s)m=Y.fromNumber(0),y=Y.fromNumber(0);else if(d<17){let e=0;for(y=Y.fromNumber(h[e++]),m=new Y(0,0);e<=d;e++)y=y.multiply(Y.fromNumber(10)),y=y.add(Y.fromNumber(h[e]))}else{let e=0;for(m=Y.fromNumber(h[e++]);e<=d-17;e++)m=m.multiply(Y.fromNumber(10)),m=m.add(Y.fromNumber(h[e]));for(y=Y.fromNumber(h[e++]);e<=d;e++)y=y.multiply(Y.fromNumber(10)),y=y.add(Y.fromNumber(h[e]))}const O=function(e,t){if(!e&&!t)return{high:Y.fromNumber(0),low:Y.fromNumber(0)};const n=e.shiftRightUnsigned(32),r=new Y(e.getLowBits(),0),i=t.shiftRightUnsigned(32),o=new Y(t.getLowBits(),0);let s=n.multiply(i),f=n.multiply(o);const u=r.multiply(i);let l=r.multiply(o);return s=s.add(f.shiftRightUnsigned(32)),f=new Y(f.getLowBits(),0).add(u).add(l.shiftRightUnsigned(32)),s=s.add(f.shiftRightUnsigned(32)),l=f.shiftLeft(32).add(new Y(l.getLowBits(),0)),{high:s,low:l}}(m,Y.fromString("100000000000000000"));O.low=O.low.add(y),function(e,t){const n=e.high>>>0,r=t.high>>>0;if(n<r)return!0;if(n===r&&e.low>>>0<t.low>>>0)return!0;return!1}(O.low,y)&&(O.high=O.high.add(Y.fromNumber(1))),w=p+6176;const x={low:Y.fromNumber(0),high:Y.fromNumber(0)};O.high.shiftRightUnsigned(49).and(Y.fromNumber(1)).equals(Y.fromNumber(1))?(x.high=x.high.or(Y.fromNumber(3).shiftLeft(61)),x.high=x.high.or(Y.fromNumber(w).and(Y.fromNumber(16383).shiftLeft(47))),x.high=x.high.or(O.high.and(Y.fromNumber(0x7fffffffffff)))):(x.high=x.high.or(Y.fromNumber(16383&w).shiftLeft(49)),x.high=x.high.or(O.high.and(Y.fromNumber(562949953421311)))),x.low=O.low,n&&(x.high=x.high.or(Y.fromString("9223372036854775808")));const I=L.allocateUnsafe(16);return B=0,I[B++]=255&x.low.low,I[B++]=x.low.low>>8&255,I[B++]=x.low.low>>16&255,I[B++]=x.low.low>>24&255,I[B++]=255&x.low.high,I[B++]=x.low.high>>8&255,I[B++]=x.low.high>>16&255,I[B++]=x.low.high>>24&255,I[B++]=255&x.high.low,I[B++]=x.high.low>>8&255,I[B++]=x.high.low>>16&255,I[B++]=x.high.low>>24&255,I[B++]=255&x.high.high,I[B++]=x.high.high>>8&255,I[B++]=x.high.high>>16&255,I[B++]=x.high.high>>24&255,new oe(I)}toString(){let e,t=0;const n=new Array(36);for(let e=0;e<n.length;e++)n[e]=0;let r,i,o,s=0,f=!1,u={parts:[0,0,0,0]};const l=[];s=0;const a=this.bytes,h=a[s++]|a[s++]<<8|a[s++]<<16|a[s++]<<24,c=a[s++]|a[s++]<<8|a[s++]<<16|a[s++]<<24,g=a[s++]|a[s++]<<8|a[s++]<<16|a[s++]<<24,b=a[s++]|a[s++]<<8|a[s++]<<16|a[s++]<<24;s=0;({low:new Y(h,c),high:new Y(g,b)}).high.lessThan(Y.ZERO)&&l.push("-");const d=b>>26&31;if(d>>3==3){if(30===d)return l.join("")+"Infinity";if(31===d)return"NaN";e=b>>15&16383,r=8+(b>>14&1)}else r=b>>14&7,e=b>>17&16383;const p=e-6176;if(u.parts[0]=(16383&b)+((15&r)<<14),u.parts[1]=g,u.parts[2]=c,u.parts[3]=h,0===u.parts[0]&&0===u.parts[1]&&0===u.parts[2]&&0===u.parts[3])f=!0;else for(o=3;o>=0;o--){let e=0;const t=re(u);if(u=t.quotient,e=t.rem.low,e)for(i=8;i>=0;i--)n[9*o+i]=e%10,e=Math.floor(e/10)}if(f)t=1,n[s]=0;else for(t=36;!n[s];)t-=1,s+=1;const m=t-1+p;if(m>=34||m<=-7||p>0){if(t>34)return l.push("0"),p>0?l.push(`E+${p}`):p<0&&l.push(`E${p}`),l.join("");l.push(`${n[s++]}`),t-=1,t&&l.push(".");for(let e=0;e<t;e++)l.push(`${n[s++]}`);l.push("E"),m>0?l.push(`+${m}`):l.push(`${m}`)}else if(p>=0)for(let e=0;e<t;e++)l.push(`${n[s++]}`);else{let e=t+p;if(e>0)for(let t=0;t<e;t++)l.push(`${n[s++]}`);else l.push("0");for(l.push(".");e++<0;)l.push("0");for(let r=0;r<t-Math.max(e-1,0);r++)l.push(`${n[s++]}`)}return l.join("")}toJSON(){return{$numberDecimal:this.toString()}}toExtendedJSON(){return{$numberDecimal:this.toString()}}static fromExtendedJSON(e){return oe.fromString(e.$numberDecimal)}inspect(e,t,n){n??=s;return`new Decimal128(${n(this.toString(),t)})`}}class se extends U{get _bsontype(){return"Double"}constructor(e){super(),e instanceof Number&&(e=e.valueOf()),this.value=+e}static fromString(e){const t=Number(e);if("NaN"===e)return new se(NaN);if("Infinity"===e)return new se(1/0);if("-Infinity"===e)return new se(-1/0);if(!Number.isFinite(t))throw new b(`Input: ${e} is not representable as a Double`);if(e.trim()!==e)throw new b(`Input: '${e}' contains whitespace`);if(""===e)throw new b("Input is an empty string");if(/[^-0-9.+eE]/.test(e))throw new b(`Input: '${e}' is not in decimal or exponential notation`);return new se(t)}valueOf(){return this.value}toJSON(){return this.value}toString(e){return this.value.toString(e)}toExtendedJSON(e){return e&&(e.legacy||e.relaxed&&isFinite(this.value))?this.value:Object.is(Math.sign(this.value),-0)?{$numberDouble:"-0.0"}:{$numberDouble:Number.isInteger(this.value)?this.value.toFixed(1):this.value.toString()}}static fromExtendedJSON(e,t){const n=parseFloat(e.$numberDouble);return t&&t.relaxed?n:new se(n)}inspect(e,t,n){return n??=s,`new Double(${n(this.value,t)})`}}class fe extends U{get _bsontype(){return"Int32"}constructor(e){super(),e instanceof Number&&(e=e.valueOf()),this.value=0|+e}static fromString(e){const t=M(e),n=Number(e);if(f<n)throw new b(`Input: '${e}' is larger than the maximum value for Int32`);if(u>n)throw new b(`Input: '${e}' is smaller than the minimum value for Int32`);if(!Number.isSafeInteger(n))throw new b(`Input: '${e}' is not a safe integer`);if(n.toString()!==t)throw new b(`Input: '${e}' is not a valid Int32 string`);return new fe(n)}valueOf(){return this.value}toString(e){return this.value.toString(e)}toJSON(){return this.value}toExtendedJSON(e){return e&&(e.relaxed||e.legacy)?this.value:{$numberInt:this.value.toString()}}static fromExtendedJSON(e,t){return t&&t.relaxed?parseInt(e.$numberInt,10):new fe(e.$numberInt)}inspect(e,t,n){return n??=s,`new Int32(${n(this.value,t)})`}}class ue extends U{get _bsontype(){return"MaxKey"}toExtendedJSON(){return{$maxKey:1}}static fromExtendedJSON(){return new ue}inspect(){return"new MaxKey()"}}class le extends U{get _bsontype(){return"MinKey"}toExtendedJSON(){return{$minKey:1}}static fromExtendedJSON(){return new le}inspect(){return"new MinKey()"}}const ae=new Float64Array(1),he=new Uint8Array(ae.buffer,0,8);ae[0]=-1;const ce=0===he[7],ge={getNonnegativeInt32LE(e,t){if(e[t+3]>127)throw new RangeError(`Size cannot be negative at offset: ${t}`);return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24},getInt32LE:(e,t)=>e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24,getUint32LE:(e,t)=>e[t]+256*e[t+1]+65536*e[t+2]+16777216*e[t+3],getUint32BE:(e,t)=>e[t+3]+256*e[t+2]+65536*e[t+1]+16777216*e[t],getBigInt64LE(e,t){const n=ge.getUint32LE(e,t),r=ge.getUint32LE(e,t+4);return(BigInt(r)<<BigInt(32))+BigInt(n)},getFloat64LE:ce?(e,t)=>(he[7]=e[t],he[6]=e[t+1],he[5]=e[t+2],he[4]=e[t+3],he[3]=e[t+4],he[2]=e[t+5],he[1]=e[t+6],he[0]=e[t+7],ae[0]):(e,t)=>(he[0]=e[t],he[1]=e[t+1],he[2]=e[t+2],he[3]=e[t+3],he[4]=e[t+4],he[5]=e[t+5],he[6]=e[t+6],he[7]=e[t+7],ae[0]),setInt32BE:(e,t,n)=>(e[t+3]=n,n>>>=8,e[t+2]=n,n>>>=8,e[t+1]=n,n>>>=8,e[t]=n,4),setInt32LE:(e,t,n)=>(e[t]=n,n>>>=8,e[t+1]=n,n>>>=8,e[t+2]=n,n>>>=8,e[t+3]=n,4),setBigInt64LE(e,t,n){const r=BigInt(4294967295);let i=Number(n&r);e[t]=i,i>>=8,e[t+1]=i,i>>=8,e[t+2]=i,i>>=8,e[t+3]=i;let o=Number(n>>BigInt(32)&r);return e[t+4]=o,o>>=8,e[t+5]=o,o>>=8,e[t+6]=o,o>>=8,e[t+7]=o,8},setFloat64LE:ce?(e,t,n)=>(ae[0]=n,e[t]=he[7],e[t+1]=he[6],e[t+2]=he[5],e[t+3]=he[4],e[t+4]=he[3],e[t+5]=he[2],e[t+6]=he[1],e[t+7]=he[0],8):(e,t,n)=>(ae[0]=n,e[t]=he[0],e[t+1]=he[1],e[t+2]=he[2],e[t+3]=he[3],e[t+4]=he[4],e[t+5]=he[5],e[t+6]=he[6],e[t+7]=he[7],8)},be=new RegExp("^[0-9a-fA-F]{24}$");let de=null;class pe extends U{get _bsontype(){return"ObjectId"}constructor(e){let t;if(super(),"object"==typeof e&&e&&"id"in e){if("string"!=typeof e.id&&!ArrayBuffer.isView(e.id))throw new b("Argument passed in must have an id that is of type string or Buffer");t="toHexString"in e&&"function"==typeof e.toHexString?L.fromHex(e.toHexString()):e.id}else t=e;if(null==t||"number"==typeof t)this.buffer=pe.generate("number"==typeof t?t:void 0);else if(ArrayBuffer.isView(t)&&12===t.byteLength)this.buffer=L.toLocalBufferType(t);else{if("string"!=typeof t)throw new b("Argument passed in does not match the accepted types");if(24!==t.length||!be.test(t))throw new b("input must be a 24 character hex string, 12 byte Uint8Array, or an integer");this.buffer=L.fromHex(t)}pe.cacheHexString&&(this.__id=L.toHex(this.id))}get id(){return this.buffer}set id(e){this.buffer=e,pe.cacheHexString&&(this.__id=L.toHex(e))}toHexString(){if(pe.cacheHexString&&this.__id)return this.__id;const e=L.toHex(this.id);return pe.cacheHexString&&!this.__id&&(this.__id=e),e}static getInc(){return pe.index=(pe.index+1)%16777215}static generate(e){"number"!=typeof e&&(e=Math.floor(Date.now()/1e3));const t=pe.getInc(),n=L.allocateUnsafe(12);return ge.setInt32BE(n,0,e),null===de&&(de=L.randomBytes(5)),n[4]=de[0],n[5]=de[1],n[6]=de[2],n[7]=de[3],n[8]=de[4],n[11]=255&t,n[10]=t>>8&255,n[9]=t>>16&255,n}toString(e){return"base64"===e?L.toBase64(this.id):this.toHexString()}toJSON(){return this.toHexString()}static is(e){return null!=e&&"object"==typeof e&&"_bsontype"in e&&"ObjectId"===e._bsontype}equals(e){if(null==e)return!1;if(pe.is(e))return this.buffer[11]===e.buffer[11]&&L.equals(this.buffer,e.buffer);if("string"==typeof e)return e.toLowerCase()===this.toHexString();if("object"==typeof e&&"function"==typeof e.toHexString){const t=e.toHexString(),n=this.toHexString();return"string"==typeof t&&t.toLowerCase()===n}return!1}getTimestamp(){const e=new Date,t=ge.getUint32BE(this.buffer,0);return e.setTime(1e3*Math.floor(t)),e}static createPk(){return new pe}serializeInto(e,t){return e[t]=this.buffer[0],e[t+1]=this.buffer[1],e[t+2]=this.buffer[2],e[t+3]=this.buffer[3],e[t+4]=this.buffer[4],e[t+5]=this.buffer[5],e[t+6]=this.buffer[6],e[t+7]=this.buffer[7],e[t+8]=this.buffer[8],e[t+9]=this.buffer[9],e[t+10]=this.buffer[10],e[t+11]=this.buffer[11],12}static createFromTime(e){const t=L.allocate(12);for(let e=11;e>=4;e--)t[e]=0;return ge.setInt32BE(t,0,e),new pe(t)}static createFromHexString(e){if(24!==e?.length)throw new b("hex string must be 24 characters");return new pe(L.fromHex(e))}static createFromBase64(e){if(16!==e?.length)throw new b("base64 string must be 16 characters");return new pe(L.fromBase64(e))}static isValid(e){if(null==e)return!1;try{return new pe(e),!0}catch{return!1}}toExtendedJSON(){return this.toHexString?{$oid:this.toHexString()}:{$oid:this.toString("hex")}}static fromExtendedJSON(e){return new pe(e.$oid)}inspect(e,t,n){return n??=s,`new ObjectId(${n(this.toHexString(),t)})`}}function me(e,t,n){let r=5;if(Array.isArray(e))for(let i=0;i<e.length;i++)r+=ye(i.toString(),e[i],t,!0,n);else{"function"==typeof e?.toBSON&&(e=e.toBSON());for(const i of Object.keys(e))r+=ye(i,e[i],t,!1,n)}return r}function ye(e,n,i=!1,s=!1,l=!1){switch("function"==typeof n?.toBSON&&(n=n.toBSON()),typeof n){case"string":return 1+L.utf8ByteLength(e)+1+4+L.utf8ByteLength(n)+1;case"number":return Math.floor(n)===n&&n>=c&&n<=h&&n>=u&&n<=f?(null!=e?L.utf8ByteLength(e)+1:0)+5:(null!=e?L.utf8ByteLength(e)+1:0)+9;case"undefined":return s||!l?(null!=e?L.utf8ByteLength(e)+1:0)+1:0;case"boolean":return(null!=e?L.utf8ByteLength(e)+1:0)+2;case"object":if(null!=n&&"string"==typeof n._bsontype&&6!==n[Symbol.for("@@mdb.bson.version")])throw new d;if(null==n||"MinKey"===n._bsontype||"MaxKey"===n._bsontype)return(null!=e?L.utf8ByteLength(e)+1:0)+1;if("ObjectId"===n._bsontype)return(null!=e?L.utf8ByteLength(e)+1:0)+13;if(n instanceof Date||o(n))return(null!=e?L.utf8ByteLength(e)+1:0)+9;if(ArrayBuffer.isView(n)||n instanceof ArrayBuffer||t(n))return(null!=e?L.utf8ByteLength(e)+1:0)+6+n.byteLength;if("Long"===n._bsontype||"Double"===n._bsontype||"Timestamp"===n._bsontype)return(null!=e?L.utf8ByteLength(e)+1:0)+9;if("Decimal128"===n._bsontype)return(null!=e?L.utf8ByteLength(e)+1:0)+17;if("Code"===n._bsontype)return null!=n.scope&&Object.keys(n.scope).length>0?(null!=e?L.utf8ByteLength(e)+1:0)+1+4+4+L.utf8ByteLength(n.code.toString())+1+me(n.scope,i,l):(null!=e?L.utf8ByteLength(e)+1:0)+1+4+L.utf8ByteLength(n.code.toString())+1;if("Binary"===n._bsontype){const t=n;return t.sub_type===T.SUBTYPE_BYTE_ARRAY?(null!=e?L.utf8ByteLength(e)+1:0)+(t.position+1+4+1+4):(null!=e?L.utf8ByteLength(e)+1:0)+(t.position+1+4+1)}if("Symbol"===n._bsontype)return(null!=e?L.utf8ByteLength(e)+1:0)+L.utf8ByteLength(n.value)+4+1+1;if("DBRef"===n._bsontype){const t=Object.assign({$ref:n.collection,$id:n.oid},n.fields);return null!=n.db&&(t.$db=n.db),(null!=e?L.utf8ByteLength(e)+1:0)+1+me(t,i,l)}return n instanceof RegExp||r(n)?(null!=e?L.utf8ByteLength(e)+1:0)+1+L.utf8ByteLength(n.source)+1+(n.global?1:0)+(n.ignoreCase?1:0)+(n.multiline?1:0)+1:"BSONRegExp"===n._bsontype?(null!=e?L.utf8ByteLength(e)+1:0)+1+L.utf8ByteLength(n.pattern)+1+L.utf8ByteLength(n.options)+1:(null!=e?L.utf8ByteLength(e)+1:0)+me(n,i,l)+1;case"function":if(i)return(null!=e?L.utf8ByteLength(e)+1:0)+1+4+L.utf8ByteLength(n.toString())+1}return 0}pe.index=Math.floor(16777215*Math.random());class we extends U{get _bsontype(){return"BSONRegExp"}constructor(e,t){if(super(),this.pattern=e,this.options=(t??"").split("").sort().join(""),-1!==this.pattern.indexOf("\0"))throw new b(`BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}`);if(-1!==this.options.indexOf("\0"))throw new b(`BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}`);for(let e=0;e<this.options.length;e++)if("i"!==this.options[e]&&"m"!==this.options[e]&&"x"!==this.options[e]&&"l"!==this.options[e]&&"s"!==this.options[e]&&"u"!==this.options[e])throw new b(`The regular expression option [${this.options[e]}] is not supported`)}static parseOptions(e){return e?e.split("").sort().join(""):""}toExtendedJSON(e){return(e=e||{}).legacy?{$regex:this.pattern,$options:this.options}:{$regularExpression:{pattern:this.pattern,options:this.options}}}static fromExtendedJSON(e){if("$regex"in e){if("string"==typeof e.$regex)return new we(e.$regex,we.parseOptions(e.$options));if("BSONRegExp"===e.$regex._bsontype)return e}if("$regularExpression"in e)return new we(e.$regularExpression.pattern,we.parseOptions(e.$regularExpression.options));throw new b(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(e)}`)}inspect(e,t,n){const r=function(e){if(null!=e&&"object"==typeof e&&"stylize"in e&&"function"==typeof e.stylize)return e.stylize}(t)??(e=>e);n??=s;return`new BSONRegExp(${r(n(this.pattern),"regexp")}, ${r(n(this.options),"regexp")})`}}class Be extends U{get _bsontype(){return"BSONSymbol"}constructor(e){super(),this.value=e}valueOf(){return this.value}toString(){return this.value}toJSON(){return this.value}toExtendedJSON(){return{$symbol:this.value}}static fromExtendedJSON(e){return new Be(e.$symbol)}inspect(e,t,n){return n??=s,`new BSONSymbol(${n(this.value,t)})`}}const Se=Y;class Ne extends Se{get _bsontype(){return"Timestamp"}constructor(e){if(null==e)super(0,0,!0);else if("bigint"==typeof e)super(e,!0);else if(Y.isLong(e))super(e.low,e.high,!0);else{if("object"!=typeof e||!("t"in e)||!("i"in e))throw new b("A Timestamp can only be constructed with: bigint, Long, or { t: number; i: number }");{if("number"!=typeof e.t&&("object"!=typeof e.t||"Int32"!==e.t._bsontype))throw new b("Timestamp constructed from { t, i } must provide t as a number");if("number"!=typeof e.i&&("object"!=typeof e.i||"Int32"!==e.i._bsontype))throw new b("Timestamp constructed from { t, i } must provide i as a number");const t=Number(e.t),n=Number(e.i);if(t<0||Number.isNaN(t))throw new b("Timestamp constructed from { t, i } must provide a positive t");if(n<0||Number.isNaN(n))throw new b("Timestamp constructed from { t, i } must provide a positive i");if(t>4294967295)throw new b("Timestamp constructed from { t, i } must provide t equal or less than uint32 max");if(n>4294967295)throw new b("Timestamp constructed from { t, i } must provide i equal or less than uint32 max");super(n,t,!0)}}}toJSON(){return{$timestamp:this.toString()}}static fromInt(e){return new Ne(Y.fromInt(e,!0))}static fromNumber(e){return new Ne(Y.fromNumber(e,!0))}static fromBits(e,t){return new Ne({i:e,t:t})}static fromString(e,t){return new Ne(Y.fromString(e,!0,t))}toExtendedJSON(){return{$timestamp:{t:this.high>>>0,i:this.low>>>0}}}static fromExtendedJSON(e){const t=Y.isLong(e.$timestamp.i)?e.$timestamp.i.getLowBitsUnsigned():e.$timestamp.i,n=Y.isLong(e.$timestamp.t)?e.$timestamp.t.getLowBitsUnsigned():e.$timestamp.t;return new Ne({t:n,i:t})}inspect(e,t,n){n??=s;return`new Timestamp({ t: ${n(this.high>>>0,t)}, i: ${n(this.low>>>0,t)} })`}}Ne.MAX_VALUE=Y.MAX_UNSIGNED_VALUE;const Ee=Y.fromNumber(h),Oe=Y.fromNumber(c);function xe(e,t,n){const r=(t=null==t?{}:t)&&t.index?t.index:0,i=ge.getInt32LE(e,r);if(i<5)throw new b(`bson size must be >= 5, is ${i}`);if(t.allowObjectSmallerThanBufferSize&&e.length<i)throw new b(`buffer length ${e.length} must be >= bson size ${i}`);if(!t.allowObjectSmallerThanBufferSize&&e.length!==i)throw new b(`buffer length ${e.length} must === bson size ${i}`);if(i+r>e.byteLength)throw new b(`(bson size ${i} + options.index ${r} must be <= buffer length ${e.byteLength})`);if(0!==e[r+i-1])throw new b("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");return $e(e,r,t,n)}const Ie=/^\$ref$|^\$id$|^\$db$/;function $e(e,t,n,r=!1){const i=null==n.fieldsAsRaw?null:n.fieldsAsRaw,o=null!=n.raw&&n.raw,s="boolean"==typeof n.bsonRegExp&&n.bsonRegExp,f=n.promoteBuffers??!1,u=n.promoteLongs??!0,l=n.promoteValues??!0,a=n.useBigInt64??!1;if(a&&!l)throw new b("Must either request bigint or Long for int64 deserialization");if(a&&!u)throw new b("Must either request bigint or Long for int64 deserialization");let h,c,g=!0;const d=(null==n.validation?{utf8:!0}:n.validation).utf8;if("boolean"==typeof d)h=d;else{g=!1;const e=Object.keys(d).map((function(e){return d[e]}));if(0===e.length)throw new b("UTF-8 validation setting cannot be empty");if("boolean"!=typeof e[0])throw new b("Invalid UTF-8 validation option, must specify boolean values");if(h=e[0],!e.every((e=>e===h)))throw new b("Invalid UTF-8 validation option - keys must be all true or all false")}if(!g){c=new Set;for(const e of Object.keys(d))c.add(e)}const p=t;if(e.length<5)throw new b("corrupt bson message < 5 bytes long");const m=ge.getInt32LE(e,t);if(t+=4,m<5||m>e.length)throw new b("corrupt bson message");const y=r?[]:{};let w=0;let B=!r&&null;for(;;){const d=e[t++];if(0===d)break;let p=t;for(;0!==e[p]&&p<e.length;)p++;if(p>=e.byteLength)throw new b("Bad BSON Document: illegal CString");const m=r?w++:L.toUTF8(e,t,p,!1);let S,N=!0;if(N=g||c?.has(m)?h:!h,!1!==B&&"$"===m[0]&&(B=Ie.test(m)),t=p+1,2===d){const n=ge.getInt32LE(e,t);if(t+=4,n<=0||n>e.length-t||0!==e[t+n-1])throw new b("bad string length in bson");S=L.toUTF8(e,t,t+n-1,N),t+=n}else if(7===d){const n=L.allocateUnsafe(12);for(let r=0;r<12;r++)n[r]=e[t+r];S=new pe(n),t+=12}else if(16===d&&!1===l)S=new fe(ge.getInt32LE(e,t)),t+=4;else if(16===d)S=ge.getInt32LE(e,t),t+=4;else if(1===d)S=ge.getFloat64LE(e,t),t+=8,!1===l&&(S=new se(S));else if(9===d){const n=ge.getInt32LE(e,t),r=ge.getInt32LE(e,t+4);t+=8,S=new Date(new Y(n,r).toNumber())}else if(8===d){if(0!==e[t]&&1!==e[t])throw new b("illegal boolean type value");S=1===e[t++]}else if(3===d){const r=t,i=ge.getInt32LE(e,t);if(i<=0||i>e.length-t)throw new b("bad embedded document length in bson");if(o)S=e.slice(t,t+i);else{let t=n;g||(t={...n,validation:{utf8:N}}),S=$e(e,r,t,!1)}t+=i}else if(4===d){const r=t,o=ge.getInt32LE(e,t);let s=n;const f=t+o;if(i&&i[m]&&(s={...n,raw:!0}),g||(s={...s,validation:{utf8:N}}),S=$e(e,r,s,!0),0!==e[(t+=o)-1])throw new b("invalid array terminator byte");if(t!==f)throw new b("corrupted array bson")}else if(6===d)S=void 0;else if(10===d)S=null;else if(18===d)if(a)S=ge.getBigInt64LE(e,t),t+=8;else{const n=ge.getInt32LE(e,t),r=ge.getInt32LE(e,t+4);t+=8;const i=new Y(n,r);S=u&&!0===l&&i.lessThanOrEqual(Ee)&&i.greaterThanOrEqual(Oe)?i.toNumber():i}else if(19===d){const n=L.allocateUnsafe(16);for(let r=0;r<16;r++)n[r]=e[t+r];t+=16,S=new oe(n)}else if(5===d){let n=ge.getInt32LE(e,t);t+=4;const r=n,i=e[t++];if(n<0)throw new b("Negative binary type element size found");if(n>e.byteLength)throw new b("Binary type size larger than document size");if(null!=e.slice){if(i===T.SUBTYPE_BYTE_ARRAY){if(n=ge.getInt32LE(e,t),t+=4,n<0)throw new b("Negative binary type element size found for subtype 0x02");if(n>r-4)throw new b("Binary type with subtype 0x02 contains too long binary size");if(n<r-4)throw new b("Binary type with subtype 0x02 contains too short binary size")}f&&l?S=L.toLocalBufferType(e.slice(t,t+n)):(S=new T(e.slice(t,t+n),i),4===i&&A.isValid(S)&&(S=S.toUUID()))}else{if(i===T.SUBTYPE_BYTE_ARRAY){if(n=ge.getInt32LE(e,t),t+=4,n<0)throw new b("Negative binary type element size found for subtype 0x02");if(n>r-4)throw new b("Binary type with subtype 0x02 contains too long binary size");if(n<r-4)throw new b("Binary type with subtype 0x02 contains too short binary size")}if(f&&l)for(S=L.allocateUnsafe(n),p=0;p<n;p++)S[p]=e[t+p];else S=new T(e.slice(t,t+n),i),4===i&&A.isValid(S)&&(S=S.toUUID())}t+=n}else if(11===d&&!1===s){for(p=t;0!==e[p]&&p<e.length;)p++;if(p>=e.length)throw new b("Bad BSON Document: illegal CString");const n=L.toUTF8(e,t,p,!1);for(p=t=p+1;0!==e[p]&&p<e.length;)p++;if(p>=e.length)throw new b("Bad BSON Document: illegal CString");const r=L.toUTF8(e,t,p,!1);t=p+1;const i=new Array(r.length);for(p=0;p<r.length;p++)switch(r[p]){case"m":i[p]="m";break;case"s":i[p]="g";break;case"i":i[p]="i"}S=new RegExp(n,i.join(""))}else if(11===d&&!0===s){for(p=t;0!==e[p]&&p<e.length;)p++;if(p>=e.length)throw new b("Bad BSON Document: illegal CString");const n=L.toUTF8(e,t,p,!1);for(p=t=p+1;0!==e[p]&&p<e.length;)p++;if(p>=e.length)throw new b("Bad BSON Document: illegal CString");const r=L.toUTF8(e,t,p,!1);t=p+1,S=new we(n,r)}else if(14===d){const n=ge.getInt32LE(e,t);if(t+=4,n<=0||n>e.length-t||0!==e[t+n-1])throw new b("bad string length in bson");const r=L.toUTF8(e,t,t+n-1,N);S=l?r:new Be(r),t+=n}else if(17===d)S=new Ne({i:ge.getUint32LE(e,t),t:ge.getUint32LE(e,t+4)}),t+=8;else if(255===d)S=new le;else if(127===d)S=new ue;else if(13===d){const n=ge.getInt32LE(e,t);if(t+=4,n<=0||n>e.length-t||0!==e[t+n-1])throw new b("bad string length in bson");const r=L.toUTF8(e,t,t+n-1,N);S=new R(r),t+=n}else if(15===d){const r=ge.getInt32LE(e,t);if(t+=4,r<13)throw new b("code_w_scope total size shorter minimum expected length");const i=ge.getInt32LE(e,t);if(t+=4,i<=0||i>e.length-t||0!==e[t+i-1])throw new b("bad string length in bson");const o=L.toUTF8(e,t,t+i-1,N),s=t+=i,f=ge.getInt32LE(e,t),u=$e(e,s,n,!1);if(t+=f,r<8+f+i)throw new b("code_w_scope total size is too short, truncating scope");if(r>8+f+i)throw new b("code_w_scope total size is too long, clips outer document");S=new R(o,u)}else{if(12!==d)throw new b(`Detected unknown BSON type ${d.toString(16)} for fieldname "${m}"`);{const n=ge.getInt32LE(e,t);if(t+=4,n<=0||n>e.length-t||0!==e[t+n-1])throw new b("bad string length in bson");const r=L.toUTF8(e,t,t+n-1,N);t+=n;const i=L.allocateUnsafe(12);for(let n=0;n<12;n++)i[n]=e[t+n];const o=new pe(i);t+=12,S=new F(r,o)}}"__proto__"===m?Object.defineProperty(y,m,{value:S,writable:!0,enumerable:!0,configurable:!0}):y[m]=S}if(m!==t-p){if(r)throw new b("corrupt array bson");throw new b("corrupt object bson")}if(!B)return y;if(D(y)){const e=Object.assign({},y);return delete e.$ref,delete e.$id,delete e.$db,new F(y.$ref,y.$id,y.$db,e)}return y}const _e=/\x00/,Le=new Set(["$db","$ref","$id","$clusterTime"]);function Ue(e,t,n,r){e[r++]=2;e[(r=r+L.encodeUTF8Into(e,t,r)+1)-1]=0;const i=L.encodeUTF8Into(e,n,r+4);return ge.setInt32LE(e,r,i+1),r=r+4+i,e[r++]=0,r}function Te(e,t,n,r){const i=!Object.is(n,-0)&&Number.isSafeInteger(n)&&n<=f&&n>=u?16:1;e[r++]=i;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r+=16===i?ge.setInt32LE(e,r,n):ge.setFloat64LE(e,r,n)}function ve(e,t,n,r){e[r++]=18;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r+=ge.setBigInt64LE(e,r,n)}function je(e,t,n,r){e[r++]=10;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r}function Ae(e,t,n,r){e[r++]=8;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,e[r++]=n?1:0,r}function Re(e,t,n,r){e[r++]=9;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=Y.fromNumber(n.getTime()),o=i.getLowBits(),s=i.getHighBits();return r+=ge.setInt32LE(e,r,o),r+=ge.setInt32LE(e,r,s)}function De(e,t,n,r){e[r++]=11;if(r+=L.encodeUTF8Into(e,t,r),e[r++]=0,n.source&&null!=n.source.match(_e))throw new b("value "+n.source+" must not contain null bytes");return r+=L.encodeUTF8Into(e,n.source,r),e[r++]=0,n.ignoreCase&&(e[r++]=105),n.global&&(e[r++]=115),n.multiline&&(e[r++]=109),e[r++]=0,r}function Fe(e,t,n,r){e[r++]=11;if(r+=L.encodeUTF8Into(e,t,r),e[r++]=0,null!=n.pattern.match(_e))throw new b("pattern "+n.pattern+" must not contain null bytes");r+=L.encodeUTF8Into(e,n.pattern,r),e[r++]=0;const i=n.options.split("").sort().join("");return r+=L.encodeUTF8Into(e,i,r),e[r++]=0,r}function Me(e,t,n,r){null===n?e[r++]=10:"MinKey"===n._bsontype?e[r++]=255:e[r++]=127;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r}function ze(e,t,n,r){e[r++]=7;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r+=n.serializeInto(e,r)}function Je(e,t,n,r){e[r++]=5;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=n.length;if(r+=ge.setInt32LE(e,r,i),e[r++]=0,i<=16)for(let t=0;t<i;t++)e[r+t]=n[t];else e.set(n,r);return r+=i}function Ve(e,t,n,r,i,o,s,f,u){if(u.has(n))throw new b("Cannot convert circular structure to BSON");u.add(n),e[r++]=Array.isArray(n)?4:3;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const l=Ge(e,n,i,r,o+1,s,f,u);return u.delete(n),l}function Ce(e,t,n,r){e[r++]=19;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;for(let t=0;t<16;t++)e[r+t]=n.bytes[t];return r+16}function He(e,t,n,r){e[r++]="Long"===n._bsontype?18:17;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=n.getLowBits(),o=n.getHighBits();return r+=ge.setInt32LE(e,r,i),r+=ge.setInt32LE(e,r,o)}function qe(e,t,n,r){n=n.valueOf(),e[r++]=16;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r+=ge.setInt32LE(e,r,n)}function ke(e,t,n,r){e[r++]=1;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r+=ge.setFloat64LE(e,r,n.value)}function Ye(e,t,n,r){e[r++]=13;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=n.toString(),o=L.encodeUTF8Into(e,i,r+4)+1;return ge.setInt32LE(e,r,o),r=r+4+o-1,e[r++]=0,r}function Pe(e,t,n,r,i=!1,o=0,s=!1,f=!0,u){if(n.scope&&"object"==typeof n.scope){e[r++]=15;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;let l=r;const a=n.code;r+=4;const h=L.encodeUTF8Into(e,a,r+4)+1;ge.setInt32LE(e,r,h),e[r+4+h-1]=0,r=r+h+4;const c=Ge(e,n.scope,i,r,o+1,s,f,u);r=c-1;const g=c-l;l+=ge.setInt32LE(e,l,g),e[r++]=0}else{e[r++]=13;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=n.code.toString(),o=L.encodeUTF8Into(e,i,r+4)+1;ge.setInt32LE(e,r,o),r=r+4+o-1,e[r++]=0}return r}function Ze(e,t,n,r){e[r++]=5;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=n.buffer;let o=n.position;if(n.sub_type===T.SUBTYPE_BYTE_ARRAY&&(o+=4),r+=ge.setInt32LE(e,r,o),e[r++]=n.sub_type,n.sub_type===T.SUBTYPE_BYTE_ARRAY&&(o-=4,r+=ge.setInt32LE(e,r,o)),o<=16)for(let t=0;t<o;t++)e[r+t]=i[t];else e.set(i,r);return r+=n.position}function Ke(e,t,n,r){e[r++]=14;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=L.encodeUTF8Into(e,n.value,r+4)+1;return ge.setInt32LE(e,r,i),r=r+4+i-1,e[r++]=0,r}function We(e,t,n,r,i,o,s){e[r++]=3;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;let f=r,u={$ref:n.collection||n.namespace,$id:n.oid};null!=n.db&&(u.$db=n.db),u=Object.assign(u,n.fields);const l=Ge(e,u,!1,r,i+1,o,!0,s),a=l-f;return f+=ge.setInt32LE(e,r,a),l}function Ge(e,s,f,u,l,a,h,c){if(null==c){if(null==s)return e[0]=5,e[1]=0,e[2]=0,e[3]=0,e[4]=0,5;if(Array.isArray(s))throw new b("serialize does not support an array as the root input");if("object"!=typeof s)throw new b("serialize does not support non-object as the root input");if("_bsontype"in s&&"string"==typeof s._bsontype)throw new b("BSON types cannot be serialized as a document");if(o(s)||r(s)||n(s)||t(s))throw new b("date, regexp, typedarray, and arraybuffer cannot be BSON documents");c=new Set}c.add(s);let g=u+4;if(Array.isArray(s))for(let t=0;t<s.length;t++){const i=`${t}`;let u=s[t];if("function"==typeof u?.toBSON&&(u=u.toBSON()),"string"==typeof u)g=Ue(e,i,u,g);else if("number"==typeof u)g=Te(e,i,u,g);else if("bigint"==typeof u)g=ve(e,i,u,g);else if("boolean"==typeof u)g=Ae(e,i,u,g);else if(u instanceof Date||o(u))g=Re(e,i,u,g);else if(void 0===u)g=je(e,i,0,g);else if(null===u)g=je(e,i,0,g);else if(n(u))g=Je(e,i,u,g);else if(u instanceof RegExp||r(u))g=De(e,i,u,g);else if("object"==typeof u&&null==u._bsontype)g=Ve(e,i,u,g,f,l,a,h,c);else{if("object"==typeof u&&6!==u[Symbol.for("@@mdb.bson.version")])throw new d;if("ObjectId"===u._bsontype)g=ze(e,i,u,g);else if("Decimal128"===u._bsontype)g=Ce(e,i,u,g);else if("Long"===u._bsontype||"Timestamp"===u._bsontype)g=He(e,i,u,g);else if("Double"===u._bsontype)g=ke(e,i,u,g);else if("function"==typeof u&&a)g=Ye(e,i,u,g);else if("Code"===u._bsontype)g=Pe(e,i,u,g,f,l,a,h,c);else if("Binary"===u._bsontype)g=Ze(e,i,u,g);else if("BSONSymbol"===u._bsontype)g=Ke(e,i,u,g);else if("DBRef"===u._bsontype)g=We(e,i,u,g,l,a,c);else if("BSONRegExp"===u._bsontype)g=Fe(e,i,u,g);else if("Int32"===u._bsontype)g=qe(e,i,u,g);else if("MinKey"===u._bsontype||"MaxKey"===u._bsontype)g=Me(e,i,u,g);else if(void 0!==u._bsontype)throw new b(`Unrecognized or invalid _bsontype: ${String(u._bsontype)}`)}}else if(s instanceof Map||i(s)){const t=s.entries();let i=!1;for(;!i;){const s=t.next();if(i=!!s.done,i)continue;const u=s.value[0];let p=s.value[1];"function"==typeof p?.toBSON&&(p=p.toBSON());const m=typeof p;if("string"==typeof u&&!Le.has(u)){if(null!=u.match(_e))throw new b("key "+u+" must not contain null bytes");if(f){if("$"===u[0])throw new b("key "+u+" must not start with '$'");if(u.includes("."))throw new b("key "+u+" must not contain '.'")}}if("string"===m)g=Ue(e,u,p,g);else if("number"===m)g=Te(e,u,p,g);else if("bigint"===m)g=ve(e,u,p,g);else if("boolean"===m)g=Ae(e,u,p,g);else if(p instanceof Date||o(p))g=Re(e,u,p,g);else if(null===p||void 0===p&&!1===h)g=je(e,u,0,g);else if(n(p))g=Je(e,u,p,g);else if(p instanceof RegExp||r(p))g=De(e,u,p,g);else if("object"===m&&null==p._bsontype)g=Ve(e,u,p,g,f,l,a,h,c);else{if("object"==typeof p&&6!==p[Symbol.for("@@mdb.bson.version")])throw new d;if("ObjectId"===p._bsontype)g=ze(e,u,p,g);else if("object"===m&&"Decimal128"===p._bsontype)g=Ce(e,u,p,g);else if("Long"===p._bsontype||"Timestamp"===p._bsontype)g=He(e,u,p,g);else if("Double"===p._bsontype)g=ke(e,u,p,g);else if("Code"===p._bsontype)g=Pe(e,u,p,g,f,l,a,h,c);else if("function"==typeof p&&a)g=Ye(e,u,p,g);else if("Binary"===p._bsontype)g=Ze(e,u,p,g);else if("BSONSymbol"===p._bsontype)g=Ke(e,u,p,g);else if("DBRef"===p._bsontype)g=We(e,u,p,g,l,a,c);else if("BSONRegExp"===p._bsontype)g=Fe(e,u,p,g);else if("Int32"===p._bsontype)g=qe(e,u,p,g);else if("MinKey"===p._bsontype||"MaxKey"===p._bsontype)g=Me(e,u,p,g);else if(void 0!==p._bsontype)throw new b(`Unrecognized or invalid _bsontype: ${String(p._bsontype)}`)}}}else{if("function"==typeof s?.toBSON&&null!=(s=s.toBSON())&&"object"!=typeof s)throw new b("toBSON function did not return an object");for(const t of Object.keys(s)){let i=s[t];"function"==typeof i?.toBSON&&(i=i.toBSON());const u=typeof i;if("string"==typeof t&&!Le.has(t)){if(null!=t.match(_e))throw new b("key "+t+" must not contain null bytes");if(f){if("$"===t[0])throw new b("key "+t+" must not start with '$'");if(t.includes("."))throw new b("key "+t+" must not contain '.'")}}if("string"===u)g=Ue(e,t,i,g);else if("number"===u)g=Te(e,t,i,g);else if("bigint"===u)g=ve(e,t,i,g);else if("boolean"===u)g=Ae(e,t,i,g);else if(i instanceof Date||o(i))g=Re(e,t,i,g);else if(void 0===i)!1===h&&(g=je(e,t,0,g));else if(null===i)g=je(e,t,0,g);else if(n(i))g=Je(e,t,i,g);else if(i instanceof RegExp||r(i))g=De(e,t,i,g);else if("object"===u&&null==i._bsontype)g=Ve(e,t,i,g,f,l,a,h,c);else{if("object"==typeof i&&6!==i[Symbol.for("@@mdb.bson.version")])throw new d;if("ObjectId"===i._bsontype)g=ze(e,t,i,g);else if("object"===u&&"Decimal128"===i._bsontype)g=Ce(e,t,i,g);else if("Long"===i._bsontype||"Timestamp"===i._bsontype)g=He(e,t,i,g);else if("Double"===i._bsontype)g=ke(e,t,i,g);else if("Code"===i._bsontype)g=Pe(e,t,i,g,f,l,a,h,c);else if("function"==typeof i&&a)g=Ye(e,t,i,g);else if("Binary"===i._bsontype)g=Ze(e,t,i,g);else if("BSONSymbol"===i._bsontype)g=Ke(e,t,i,g);else if("DBRef"===i._bsontype)g=We(e,t,i,g,l,a,c);else if("BSONRegExp"===i._bsontype)g=Fe(e,t,i,g);else if("Int32"===i._bsontype)g=qe(e,t,i,g);else if("MinKey"===i._bsontype||"MaxKey"===i._bsontype)g=Me(e,t,i,g);else if(void 0!==i._bsontype)throw new b(`Unrecognized or invalid _bsontype: ${String(i._bsontype)}`)}}}c.delete(s),e[g++]=0;const p=g-u;return u+=ge.setInt32LE(e,u,p),g}const Xe={$oid:pe,$binary:T,$uuid:T,$symbol:Be,$numberInt:fe,$numberDecimal:oe,$numberDouble:se,$numberLong:Y,$minKey:le,$maxKey:ue,$regex:we,$regularExpression:we,$timestamp:Ne};function Qe(e,t={}){if("number"==typeof e){const n=e<=f&&e>=u,r=e<=l&&e>=a;if(t.relaxed||t.legacy)return e;if(Number.isInteger(e)&&!Object.is(e,-0)){if(n)return new fe(e);if(r)return t.useBigInt64?BigInt(e):Y.fromNumber(e)}return new se(e)}if(null==e||"object"!=typeof e)return e;if(e.$undefined)return null;const n=Object.keys(e).filter((t=>t.startsWith("$")&&null!=e[t]));for(let r=0;r<n.length;r++){const i=Xe[n[r]];if(i)return i.fromExtendedJSON(e,t)}if(null!=e.$date){const n=e.$date,r=new Date;if(t.legacy)if("number"==typeof n)r.setTime(n);else if("string"==typeof n)r.setTime(Date.parse(n));else{if("bigint"!=typeof n)throw new p("Unrecognized type for EJSON date: "+typeof n);r.setTime(Number(n))}else if("string"==typeof n)r.setTime(Date.parse(n));else if(Y.isLong(n))r.setTime(n.toNumber());else if("number"==typeof n&&t.relaxed)r.setTime(n);else{if("bigint"!=typeof n)throw new p("Unrecognized type for EJSON date: "+typeof n);r.setTime(Number(n))}return r}if(null!=e.$code){const t=Object.assign({},e);return e.$scope&&(t.$scope=Qe(e.$scope)),R.fromExtendedJSON(e)}if(D(e)||e.$dbPointer){const t=e.$ref?e:e.$dbPointer;if(t instanceof F)return t;const n=Object.keys(t).filter((e=>e.startsWith("$")));let r=!0;if(n.forEach((e=>{-1===["$ref","$id","$db"].indexOf(e)&&(r=!1)})),r)return F.fromExtendedJSON(t)}return e}function et(e){const t=e.toISOString();return 0!==e.getUTCMilliseconds()?t:t.slice(0,-5)+"Z"}function tt(e,t){if(e instanceof Map||i(e)){const n=Object.create(null);for(const[t,r]of e){if("string"!=typeof t)throw new b("Can only serialize maps with string keys");n[t]=r}return tt(n,t)}if(("object"==typeof e||"function"==typeof e)&&null!==e){const n=t.seenObjects.findIndex((t=>t.obj===e));if(-1!==n){const e=t.seenObjects.map((e=>e.propertyName)),r=e.slice(0,n).map((e=>`${e} -> `)).join(""),i=e[n],o=" -> "+e.slice(n+1,e.length-1).map((e=>`${e} -> `)).join(""),s=e[e.length-1],f=" ".repeat(r.length+i.length/2),u="-".repeat(o.length+(i.length+s.length)/2-1);throw new b(`Converting circular structure to EJSON:\n ${r}${i}${o}${s}\n ${f}\\${u}/`)}t.seenObjects[t.seenObjects.length-1].obj=e}if(Array.isArray(e))return function(e,t){return e.map(((e,n)=>{t.seenObjects.push({propertyName:`index ${n}`,obj:null});try{return tt(e,t)}finally{t.seenObjects.pop()}}))}(e,t);if(void 0===e)return null;if(e instanceof Date||o(e)){const n=e.getTime(),r=n>-1&&n<2534023188e5;return t.legacy?t.relaxed&&r?{$date:e.getTime()}:{$date:et(e)}:t.relaxed&&r?{$date:et(e)}:{$date:{$numberLong:e.getTime().toString()}}}if(!("number"!=typeof e||t.relaxed&&isFinite(e))){if(Number.isInteger(e)&&!Object.is(e,-0)){if(e>=u&&e<=f)return{$numberInt:e.toString()};if(e>=a&&e<=l)return{$numberLong:e.toString()}}return{$numberDouble:Object.is(e,-0)?"-0.0":e.toString()}}if("bigint"==typeof e)return t.relaxed?Number(BigInt.asIntN(64,e)):{$numberLong:BigInt.asIntN(64,e).toString()};if(e instanceof RegExp||r(e)){let n=e.flags;if(void 0===n){const t=e.toString().match(/[gimuy]*$/);t&&(n=t[0])}return new we(e.source,n).toExtendedJSON(t)}return null!=e&&"object"==typeof e?function(e,t){if(null==e||"object"!=typeof e)throw new b("not an object instance");const n=e._bsontype;if(void 0===n){const n={};for(const r of Object.keys(e)){t.seenObjects.push({propertyName:r,obj:null});try{const i=tt(e[r],t);"__proto__"===r?Object.defineProperty(n,r,{value:i,writable:!0,enumerable:!0,configurable:!0}):n[r]=i}finally{t.seenObjects.pop()}}return n}if(null!=e&&"object"==typeof e&&"string"==typeof e._bsontype&&6!==e[Symbol.for("@@mdb.bson.version")])throw new d;if(function(e){return null!=e&&"object"==typeof e&&"_bsontype"in e&&"string"==typeof e._bsontype}(e)){let r=e;if("function"!=typeof r.toExtendedJSON){const t=nt[e._bsontype];if(!t)throw new b("Unrecognized or invalid _bsontype: "+e._bsontype);r=t(r)}return"Code"===n&&r.scope?r=new R(r.code,tt(r.scope,t)):"DBRef"===n&&r.oid&&(r=new F(tt(r.collection,t),tt(r.oid,t),tt(r.db,t),tt(r.fields,t))),r.toExtendedJSON(t)}throw new b("_bsontype must be a string, but was: "+typeof n)}(e,t):e}const nt={Binary:e=>new T(e.value(),e.sub_type),Code:e=>new R(e.code,e.scope),DBRef:e=>new F(e.collection||e.namespace,e.oid,e.db,e.fields),Decimal128:e=>new oe(e.bytes),Double:e=>new se(e.value),Int32:e=>new fe(e.value),Long:e=>Y.fromBits(null!=e.low?e.low:e.low_,null!=e.low?e.high:e.high_,null!=e.low?e.unsigned:e.unsigned_),MaxKey:()=>new ue,MinKey:()=>new le,ObjectId:e=>new pe(e),BSONRegExp:e=>new we(e.pattern,e.options),BSONSymbol:e=>new Be(e.value),Timestamp:e=>Ne.fromBits(e.low,e.high)};function rt(e,t){const n={useBigInt64:t?.useBigInt64??!1,relaxed:t?.relaxed??!0,legacy:t?.legacy??!1};return JSON.parse(e,((e,t)=>{if(-1!==e.indexOf("\0"))throw new b(`BSON Document field names cannot contain null bytes, found: ${JSON.stringify(e)}`);return Qe(t,n)}))}function it(e,t,n,r){null!=n&&"object"==typeof n&&(r=n,n=0),null==t||"object"!=typeof t||Array.isArray(t)||(r=t,t=void 0,n=0);const i=tt(e,Object.assign({relaxed:!0,legacy:!1},r,{seenObjects:[{propertyName:"(root)",obj:null}]}));return JSON.stringify(i,t,n)}const ot=Object.create(null);function st(e,t){try{return ge.getNonnegativeInt32LE(e,t)}catch(e){throw new m("BSON size cannot be negative",t,{cause:e})}}function ft(e,t){let n=t;for(;0!==e[n];n++);if(n===e.length-1)throw new m("Null terminator not found",t);return n}ot.parse=rt,ot.stringify=it,ot.serialize=function(e,t){return t=t||{},JSON.parse(it(e,t))},ot.deserialize=function(e,t){return t=t||{},rt(JSON.stringify(e),t)},Object.freeze(ot);const ut=Object.create(null);ut.parseToElements=function(e,t=0){if(t??=0,e.length<5)throw new m(`Input must be at least 5 bytes, got ${e.length} bytes`,t);const n=st(e,t);if(n>e.length-t)throw new m(`Parsed documentSize (${n} bytes) does not match input length (${e.length} bytes)`,t);if(0!==e[t+n-1])throw new m("BSON documents must end in 0x00",t+n);const r=[];let i=t+4;for(;i<=n+t;){const o=e[i];if(i+=1,0===o){if(i-t!==n)throw new m("Invalid 0x00 type byte",i);break}const s=i,f=ft(e,i)-s;let u;if(i+=f+1,1===o||18===o||9===o||17===o)u=8;else if(16===o)u=4;else if(7===o)u=12;else if(19===o)u=16;else if(8===o)u=1;else if(10===o||6===o||127===o||255===o)u=0;else if(11===o)u=ft(e,ft(e,i)+1)+1-i;else if(3===o||4===o||15===o)u=st(e,i);else{if(2!==o&&5!==o&&12!==o&&13!==o&&14!==o)throw new m(`Invalid 0x${o.toString(16).padStart(2,"0")} type byte`,i);u=st(e,i)+4,5===o&&(u+=1),12===o&&(u+=12)}if(u>n)throw new m("value reports length larger than document",i);r.push([o,s,f,i,u]),i+=u}return r},ut.ByteUtils=L,ut.NumberUtils=ge,Object.freeze(ut);const lt=17825792;let at=L.allocate(lt);function ht(e){at.length<e&&(at=L.allocate(e))}function ct(e,t={}){const n="boolean"==typeof t.checkKeys&&t.checkKeys,r="boolean"==typeof t.serializeFunctions&&t.serializeFunctions,i="boolean"!=typeof t.ignoreUndefined||t.ignoreUndefined,o="number"==typeof t.minInternalBufferSize?t.minInternalBufferSize:lt;at.length<o&&(at=L.allocate(o));const s=Ge(at,e,n,0,0,r,i,null),f=L.allocateUnsafe(s);return f.set(at.subarray(0,s),0),f}function gt(e,t,n={}){const r="boolean"==typeof n.checkKeys&&n.checkKeys,i="boolean"==typeof n.serializeFunctions&&n.serializeFunctions,o="boolean"!=typeof n.ignoreUndefined||n.ignoreUndefined,s="number"==typeof n.index?n.index:0,f=Ge(at,e,r,0,0,i,o,null);return t.set(at.subarray(0,f),s),s+f-1}function bt(e,t={}){return xe(L.toLocalBufferType(e),t)}function dt(e,t={}){return me(e,"boolean"==typeof(t=t||{}).serializeFunctions&&t.serializeFunctions,"boolean"!=typeof t.ignoreUndefined||t.ignoreUndefined)}function pt(e,t,n,r,i,o){const s=Object.assign({allowObjectSmallerThanBufferSize:!0,index:0},o),f=L.toLocalBufferType(e);let u=t;for(let e=0;e<n;e++){const t=ge.getInt32LE(f,u);s.index=u,r[i+e]=xe(f,s),u+=t}return u}var mt=Object.freeze({__proto__:null,BSONError:b,BSONOffsetError:m,BSONRegExp:we,BSONRuntimeError:p,BSONSymbol:Be,BSONType:g,BSONValue:U,BSONVersionError:d,Binary:T,Code:R,DBRef:F,Decimal128:oe,Double:se,EJSON:ot,Int32:fe,Long:Y,MaxKey:ue,MinKey:le,ObjectId:pe,Timestamp:Ne,UUID:A,calculateObjectSize:dt,deserialize:bt,deserializeStream:pt,onDemand:ut,serialize:ct,serializeWithBufferAndIndex:gt,setInternalBufferSize:ht});return e.BSON=mt,e.BSONError=b,e.BSONOffsetError=m,e.BSONRegExp=we,e.BSONRuntimeError=p,e.BSONSymbol=Be,e.BSONType=g,e.BSONValue=U,e.BSONVersionError=d,e.Binary=T,e.Code=R,e.DBRef=F,e.Decimal128=oe,e.Double=se,e.EJSON=ot,e.Int32=fe,e.Long=Y,e.MaxKey=ue,e.MinKey=le,e.ObjectId=pe,e.Timestamp=Ne,e.UUID=A,e.calculateObjectSize=dt,e.deserialize=bt,e.deserializeStream=pt,e.onDemand=ut,e.serialize=ct,e.serializeWithBufferAndIndex=gt,e.setInternalBufferSize=ht,e}({});
Code: Select all
var BSON=function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function n(e,t){return e(t={exports:{}},t.exports),t.exports}for(var i=function(e){var t=p(e),r=t[0],n=t[1];return 3*(r+n)/4-n},o=function(e){var t,r,n=p(e),i=n[0],o=n[1],u=new a(function(e,t,r){return 3*(t+r)/4-r}(0,i,o)),s=0,l=o>0?i-4:i;for(r=0;r<l;r+=4)t=f[e.charCodeAt(r)]<<18|f[e.charCodeAt(r+1)]<<12|f[e.charCodeAt(r+2)]<<6|f[e.charCodeAt(r+3)],u[s++]=t>>16&255,u[s++]=t>>8&255,u[s++]=255&t;2===o&&(t=f[e.charCodeAt(r)]<<2|f[e.charCodeAt(r+1)]>>4,u[s++]=255&t);1===o&&(t=f[e.charCodeAt(r)]<<10|f[e.charCodeAt(r+1)]<<4|f[e.charCodeAt(r+2)]>>2,u[s++]=t>>8&255,u[s++]=255&t);return u},u=function(e){for(var t,r=e.length,n=r%3,i=[],o=16383,u=0,f=r-n;u<f;u+=o)i.push(d(e,u,u+o>f?f:u+o));1===n?(t=e[r-1],i.push(s[t>>2]+s[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],i.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return i.join("")},s=[],f=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,h=l.length;c<h;++c)s[c]=l[c],f[l.charCodeAt(c)]=c;function p(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function d(e,t,r){for(var n,i,o=[],u=t;u<r;u+=3)n=(e[u]<<16&16711680)+(e[u+1]<<8&65280)+(255&e[u+2]),o.push(s[(i=n)>>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return o.join("")}f["-".charCodeAt(0)]=62,f["_".charCodeAt(0)]=63;var y={byteLength:i,toByteArray:o,fromByteArray:u},g=function(e,t,r,n,i){var o,u,s=8*i-n-1,f=(1<<s)-1,a=f>>1,l=-7,c=r?i-1:0,h=r?-1:1,p=e[t+c];for(c+=h,o=p&(1<<-l)-1,p>>=-l,l+=s;l>0;o=256*o+e[t+c],c+=h,l-=8);for(u=o&(1<<-l)-1,o>>=-l,l+=n;l>0;u=256*u+e[t+c],c+=h,l-=8);if(0===o)o=1-a;else{if(o===f)return u?NaN:1/0*(p?-1:1);u+=Math.pow(2,n),o-=a}return(p?-1:1)*u*Math.pow(2,o-n)},_=function(e,t,r,n,i,o){var u,s,f,a=8*o-i-1,l=(1<<a)-1,c=l>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,u=l):(u=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-u))<1&&(u--,f*=2),(t+=u+c>=1?h/f:h*Math.pow(2,1-c))*f>=2&&(u++,f/=2),u+c>=l?(s=0,u=l):u+c>=1?(s=(t*f-1)*Math.pow(2,i),u+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,i),u=0));i>=8;e[r+p]=255&s,p+=d,s/=256,i-=8);for(u=u<<i|s,a+=i;a>0;e[r+p]=255&u,p+=d,u/=256,a-=8);e[r+p-d]|=128*y},b=n((function(e,t){var r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=Buffer,t.SlowBuffer=function(e){+e!=e&&(e=0);return Buffer.alloc(+e)},t.INSPECT_MAX_BYTES=50;var n=2147483647;function i(e){if(e>n)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,Buffer.prototype),t}function Buffer(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return s(e)}return o(e,t,r)}function o(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!Buffer.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|c(e,t),n=i(r),o=n.write(e,t);o!==r&&(n=n.slice(0,o));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(z(e,Uint8Array)){var t=new Uint8Array(e);return a(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+babelHelpers.typeof(e));if(z(e,ArrayBuffer)||e&&z(e.buffer,ArrayBuffer))return a(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(z(e,SharedArrayBuffer)||e&&z(e.buffer,SharedArrayBuffer)))return a(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return Buffer.from(n,t,r);var o=function(e){if(Buffer.isBuffer(e)){var t=0|l(e.length),r=i(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||$(e.length)?i(0):f(e);if("Buffer"===e.type&&Array.isArray(e.data))return f(e.data)}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return Buffer.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+babelHelpers.typeof(e))}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function s(e){return u(e),i(e<0?0:0|l(e))}function f(e){for(var t=e.length<0?0:0|l(e.length),r=i(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function a(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,Buffer.prototype),n}function l(e){if(e>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|e}function c(e,t){if(Buffer.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||z(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+babelHelpers.typeof(e));var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return P(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(e).length;default:if(i)return n?-1:P(e).length;t=(""+t).toLowerCase(),i=!0}}function h(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,r);case"utf8":case"utf-8":return A(this,t,r);case"ascii":return E(this,t,r);case"latin1":case"binary":return T(this,t,r);case"base64":return v(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function p(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function d(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),$(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=Buffer.from(t,n)),Buffer.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){var o,u=1,s=e.length,f=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;u=2,s/=2,f/=2,r/=2}function a(e,t){return 1===u?e[t]:e.readUInt16BE(t*u)}if(i){var l=-1;for(o=r;o<s;o++)if(a(e,o)===a(t,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===f)return l*u}else-1!==l&&(o-=o-l),l=-1}else for(r+f>s&&(r=s-f),o=r;o>=0;o--){for(var c=!0,h=0;h<f;h++)if(a(e,o+h)!==a(t,h)){c=!1;break}if(c)return o}return-1}function B(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n))>i&&(n=i):n=i;var o=t.length;n>o/2&&(n=o/2);for(var u=0;u<n;++u){var s=parseInt(t.substr(2*u,2),16);if($(s))return u;e[r+u]=s}return u}function O(e,t,r,n){return C(P(t,e.length-r),e,r,n)}function m(e,t,r,n){return C(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function S(e,t,r,n){return C(Y(t),e,r,n)}function N(e,t,r,n){return C(function(e,t){for(var r,n,i,o=[],u=0;u<e.length&&!((t-=2)<0);++u)n=(r=e.charCodeAt(u))>>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function v(e,t,r){return 0===t&&r===e.length?y.fromByteArray(e):y.fromByteArray(e.slice(t,r))}function A(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var o,u,s,f,a=e[i],l=null,c=a>239?4:a>223?3:a>191?2:1;if(i+c<=r)switch(c){case 1:a<128&&(l=a);break;case 2:128==(192&(o=e[i+1]))&&(f=(31&a)<<6|63&o)>127&&(l=f);break;case 3:o=e[i+1],u=e[i+2],128==(192&o)&&128==(192&u)&&(f=(15&a)<<12|(63&o)<<6|63&u)>2047&&(f<55296||f>57343)&&(l=f);break;case 4:o=e[i+1],u=e[i+2],s=e[i+3],128==(192&o)&&128==(192&u)&&128==(192&s)&&(f=(15&a)<<18|(63&o)<<12|(63&u)<<6|63&s)>65535&&f<1114112&&(l=f)}null===l?(l=65533,c=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=c}return function(e){var t=e.length;if(t<=w)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=w));return r}(n)}t.kMaxLength=n,Buffer.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),Buffer.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Buffer.prototype,"parent",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.buffer}}),Object.defineProperty(Buffer.prototype,"offset",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.byteOffset}}),Buffer.poolSize=8192,Buffer.from=function(e,t,r){return o(e,t,r)},Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype),Object.setPrototypeOf(Buffer,Uint8Array),Buffer.alloc=function(e,t,r){return function(e,t,r){return u(e),e<=0?i(e):void 0!==t?"string"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}(e,t,r)},Buffer.allocUnsafe=function(e){return s(e)},Buffer.allocUnsafeSlow=function(e){return s(e)},Buffer.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==Buffer.prototype},Buffer.compare=function(e,t){if(z(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),z(t,Uint8Array)&&(t=Buffer.from(t,t.offset,t.byteLength)),!Buffer.isBuffer(e)||!Buffer.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);i<o;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},Buffer.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Buffer.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Buffer.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=Buffer.allocUnsafe(t),i=0;for(r=0;r<e.length;++r){var o=e[r];if(z(o,Uint8Array))i+o.length>n.length?Buffer.from(o).copy(n,i):Uint8Array.prototype.set.call(n,o,i);else{if(!Buffer.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,i)}i+=o.length}return n},Buffer.byteLength=c,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)p(this,t,t+1);return this},Buffer.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)p(this,t,t+3),p(this,t+1,t+2);return this},Buffer.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)p(this,t,t+7),p(this,t+1,t+6),p(this,t+2,t+5),p(this,t+3,t+4);return this},Buffer.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?A(this,0,e):h.apply(this,arguments)},Buffer.prototype.toLocaleString=Buffer.prototype.toString,Buffer.prototype.equals=function(e){if(!Buffer.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Buffer.compare(this,e)},Buffer.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return e=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(e+=" ... "),"<Buffer "+e+">"},r&&(Buffer.prototype[r]=Buffer.prototype.inspect),Buffer.prototype.compare=function(e,t,r,n,i){if(z(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),!Buffer.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+babelHelpers.typeof(e));if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),u=(r>>>=0)-(t>>>=0),s=Math.min(o,u),f=this.slice(n,i),a=e.slice(t,r),l=0;l<s;++l)if(f[l]!==a[l]){o=f[l],u=a[l];break}return o<u?-1:u<o?1:0},Buffer.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},Buffer.prototype.indexOf=function(e,t,r){return d(this,e,t,r,!0)},Buffer.prototype.lastIndexOf=function(e,t,r){return d(this,e,t,r,!1)},Buffer.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return B(this,e,t,r);case"utf8":case"utf-8":return O(this,e,t,r);case"ascii":case"latin1":case"binary":return m(this,e,t,r);case"base64":return S(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},Buffer.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function E(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(127&e[i]);return n}function T(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function D(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var i="",o=t;o<r;++o)i+=k[e[o]];return i}function I(e,t,r){for(var n=e.slice(t,r),i="",o=0;o<n.length-1;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function x(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function U(e,t,r,n,i,o){if(!Buffer.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<o)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function R(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function L(e,t,r,n,i){return t=+t,r>>>=0,i||R(e,0,r,4),_(e,t,r,n,23,4),r+4}function j(e,t,r,n,i){return t=+t,r>>>=0,i||R(e,0,r,8),_(e,t,r,n,52,8),r+8}Buffer.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,Buffer.prototype),n},Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n},Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function(e,t){return e>>>=0,t||x(e,1,this.length),this[e]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function(e,t){return e>>>=0,t||x(e,2,this.length),this[e]|this[e+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function(e,t){return e>>>=0,t||x(e,2,this.length),this[e]<<8|this[e+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function(e,t){return e>>>=0,t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function(e,t){return e>>>=0,t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Buffer.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*t)),n},Buffer.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},Buffer.prototype.readInt8=function(e,t){return e>>>=0,t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Buffer.prototype.readInt16LE=function(e,t){e>>>=0,t||x(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt16BE=function(e,t){e>>>=0,t||x(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt32LE=function(e,t){return e>>>=0,t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Buffer.prototype.readInt32BE=function(e,t){return e>>>=0,t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Buffer.prototype.readFloatLE=function(e,t){return e>>>=0,t||x(e,4,this.length),g(this,e,!0,23,4)},Buffer.prototype.readFloatBE=function(e,t){return e>>>=0,t||x(e,4,this.length),g(this,e,!1,23,4)},Buffer.prototype.readDoubleLE=function(e,t){return e>>>=0,t||x(e,8,this.length),g(this,e,!0,52,8)},Buffer.prototype.readDoubleBE=function(e,t){return e>>>=0,t||x(e,8,this.length),g(this,e,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||U(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o<r&&(i*=256);)this[t+o]=e/i&255;return t+r},Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||U(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,1,255,0),this[t]=255&e,t+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Buffer.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);U(this,e,t,r,i-1,-i)}var o=0,u=1,s=0;for(this[t]=255&e;++o<r&&(u*=256);)e<0&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/u>>0)-s&255;return t+r},Buffer.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);U(this,e,t,r,i-1,-i)}var o=r-1,u=1,s=0;for(this[t+o]=255&e;--o>=0&&(u*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/u>>0)-s&255;return t+r},Buffer.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},Buffer.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},Buffer.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},Buffer.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},Buffer.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Buffer.prototype.writeFloatLE=function(e,t,r){return L(this,e,t,!0,r)},Buffer.prototype.writeFloatBE=function(e,t,r){return L(this,e,t,!1,r)},Buffer.prototype.writeDoubleLE=function(e,t,r){return j(this,e,t,!0,r)},Buffer.prototype.writeDoubleBE=function(e,t,r){return j(this,e,t,!1,r)},Buffer.prototype.copy=function(e,t,r,n){if(!Buffer.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var i=n-r;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,n):Uint8Array.prototype.set.call(e,this.subarray(r,n),t),i},Buffer.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!Buffer.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var i=e.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(e=i)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var o;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o<r;++o)this[o]=e;else{var u=Buffer.isBuffer(e)?e:Buffer.from(e,n),s=u.length;if(0===s)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(o=0;o<r-t;++o)this[o+t]=u[o%s]}return this};var M=/[^+/0-9A-Za-z-_]/g;function P(e,t){var r;t=t||1/0;for(var n=e.length,i=null,o=[],u=0;u<n;++u){if((r=e.charCodeAt(u))>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(u+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(e){return y.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function C(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function z(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function $(e){return e!=e}var k=function(){for(var e="0123456789abcdef",t=new Array(256),r=0;r<16;++r)for(var n=16*r,i=0;i<16;++i)t[n+i]=e[r]+e[i];return t}()}));
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */b.Buffer,b.SlowBuffer,b.INSPECT_MAX_BYTES,b.kMaxLength;var B={},O="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e},m=/%[sdj%]/g;function S(e){if(!j(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(A(arguments[r]));return t.join(" ")}r=1;for(var n=arguments,i=n.length,o=String(e).replace(m,(function(e){if("%%"===e)return"%";if(r>=i)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}})),u=n[r];r<i;u=n[++r])R(u)||!Y(u)?o+=" "+u:o+=" "+A(u);return o}var N,v={};function A(e,t){var r={seen:[],stylize:E};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),U(t)?r.showHidden=t:t&&V(r,t),M(r.showHidden)&&(r.showHidden=!1),M(r.depth)&&(r.depth=2),M(r.colors)&&(r.colors=!1),M(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=w),T(r,e,r.depth)}function w(e,t){var r=A.styles[t];return r?"["+A.colors[r][0]+"m"+e+"["+A.colors[r][1]+"m":e}function E(e,t){return e}function T(e,t,r){if(e.customInspect&&t&&$(t.inspect)&&t.inspect!==A&&(!t.constructor||t.constructor.prototype!==t)){var n=t.inspect(r,e);return j(n)||(n=T(e,n,r)),n}var i=function(e,t){if(M(t))return e.stylize("undefined","undefined");if(j(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(L(t))return e.stylize(""+t,"number");if(U(t))return e.stylize(""+t,"boolean");if(R(t))return e.stylize("null","null")}(e,t);if(i)return i;var o=Object.keys(t),u=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),z(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return D(t);if(0===o.length){if($(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(P(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(C(t))return e.stylize(Date.prototype.toString.call(t),"date");if(z(t))return D(t)}var f,a="",l=!1,c=["{","}"];(x(t)&&(l=!0,c=["[","]"]),$(t))&&(a=" [Function"+(t.name?": "+t.name:"")+"]");return P(t)&&(a=" "+RegExp.prototype.toString.call(t)),C(t)&&(a=" "+Date.prototype.toUTCString.call(t)),z(t)&&(a=" "+D(t)),0!==o.length||l&&0!=t.length?r<0?P(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),f=l?function(e,t,r,n,i){for(var o=[],u=0,s=t.length;u<s;++u)K(t,String(u))?o.push(I(e,t,r,n,String(u),!0)):o.push("");return i.forEach((function(i){i.match(/^\d+$/)||o.push(I(e,t,r,n,i,!0))})),o}(e,t,r,u,o):o.map((function(n){return I(e,t,r,u,n,l)})),e.seen.pop(),function(e,t,r){if(e.reduce((function(e,t){return t.indexOf("\n"),e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(f,a,c)):c[0]+a+c[1]}function D(e){return"["+Error.prototype.toString.call(e)+"]"}function I(e,t,r,n,i,o){var u,s,f;if((f=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=f.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):f.set&&(s=e.stylize("[Setter]","special")),K(n,i)||(u="["+i+"]"),s||(e.seen.indexOf(f.value)<0?(s=R(r)?T(e,f.value,null):T(e,f.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),M(u)){if(o&&i.match(/^\d+$/))return s;(u=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(u=u.substr(1,u.length-2),u=e.stylize(u,"name")):(u=u.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),u=e.stylize(u,"string"))}return u+": "+s}function x(e){return Array.isArray(e)}function U(e){return"boolean"==typeof e}function R(e){return null===e}function L(e){return"number"==typeof e}function j(e){return"string"==typeof e}function M(e){return void 0===e}function P(e){return Y(e)&&"[object RegExp]"===k(e)}function Y(e){return"object"===babelHelpers.typeof(e)&&null!==e}function C(e){return Y(e)&&"[object Date]"===k(e)}function z(e){return Y(e)&&("[object Error]"===k(e)||e instanceof Error)}function $(e){return"function"==typeof e}function k(e){return Object.prototype.toString.call(e)}function J(e){return e<10?"0"+e.toString(10):e.toString(10)}A.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},A.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};var q=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function F(){var e=new Date,t=[J(e.getHours()),J(e.getMinutes()),J(e.getSeconds())].join(":");return[e.getDate(),q[e.getMonth()],t].join(" ")}function V(e,t){if(!t||!Y(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}function K(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var H={inherits:O,_extend:V,log:function(){console.log("%s - %s",F(),S.apply(null,arguments))},isBuffer:function(e){return Buffer.isBuffer(e)},isPrimitive:function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"===babelHelpers.typeof(e)||void 0===e},isFunction:$,isError:z,isDate:C,isObject:Y,isRegExp:P,isUndefined:M,isSymbol:function(e){return"symbol"===babelHelpers.typeof(e)},isString:j,isNumber:L,isNullOrUndefined:function(e){return null==e},isNull:R,isBoolean:U,isArray:x,inspect:A,deprecate:function e(t,r){if(M(global.process))return function(){return e(t,r).apply(this,arguments)};var n=!1;return function(){return n||(console.error(r),n=!0),t.apply(this,arguments)}},format:S,debuglog:function(e){if(M(N)&&(N=""),e=e.toUpperCase(),!v[e])if(new RegExp("\\b"+e+"\\b","i").test(N)){v[e]=function(){var t=S.apply(null,arguments);console.error("%s %d: %s",e,0,t)}}else v[e]=function(){};return v[e]}},X=n((function(e,r){Object.defineProperty(r,"__esModule",{value:!0}),r.deprecate=r.isObjectLike=r.isDate=r.isBuffer=r.haveBuffer=r.isBigUInt64Array=r.isBigInt64Array=r.isUint8Array=r.randomBytes=r.normalizedFunctionString=void 0,r.normalizedFunctionString=function(e){return e.toString().replace("function(","function (")};var n="object"==typeof t.navigator&&"ReactNative"===t.navigator.product?"BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.":"BSON: No cryptographic implementation for random bytes present, falling back to a less secure implementation.",i=function(e){console.warn(n);for(var t=b.Buffer.alloc(e),r=0;r<e;++r)t[r]=Math.floor(256*Math.random());return t};function o(e){return"object"==typeof e&&null!==e}r.randomBytes=function(){if("undefined"!=typeof window){var e=window.crypto||window.msCrypto;if(e&&e.getRandomValues)return function(t){return e.getRandomValues(b.Buffer.alloc(t))}}if(void 0!==t&&t.crypto&&t.crypto.getRandomValues)return function(e){return t.crypto.getRandomValues(b.Buffer.alloc(e))};var r;try{r=B.randomBytes}catch(e){}return r||i}(),r.isUint8Array=function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},r.isBigInt64Array=function(e){return"[object BigInt64Array]"===Object.prototype.toString.call(e)},r.isBigUInt64Array=function(e){return"[object BigUint64Array]"===Object.prototype.toString.call(e)},r.haveBuffer=function(){return void 0!==t&&void 0!==t.Buffer},r.isBuffer=function(e){var t;return"object"==typeof e&&"Buffer"===(null===(t=null==e?void 0:e.constructor)||void 0===t?void 0:t.name)},r.isDate=function(e){return o(e)&&"[object Date]"===Object.prototype.toString.call(e)},r.isObjectLike=o,r.deprecate=function(e,t){if("undefined"==typeof window&&"undefined"==typeof self)return H.deprecate(e,t);var r=!1;return function(){for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];return r||(console.warn(t),r=!0),e.apply(this,n)}}}));r(X),X.deprecate,X.isObjectLike,X.isDate,X.isBuffer,X.haveBuffer,X.isBigUInt64Array,X.isBigInt64Array,X.isUint8Array,X.randomBytes,X.normalizedFunctionString;var W=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ensureBuffer=void 0,t.ensureBuffer=function(e){if(X.isBuffer(e))return e;if(ArrayBuffer.isView(e))return b.Buffer.from(e.buffer);if(e instanceof ArrayBuffer)return b.Buffer.from(e);throw new TypeError("Must use either Buffer or TypedArray")}}));r(W),W.ensureBuffer;var G=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.bufferToUuidHexString=t.uuidHexStringToBuffer=t.uuidValidateString=void 0;var r=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|[0-9a-f]{12}4[0-9a-f]{3}[89ab][0-9a-f]{15})$/i;t.uuidValidateString=function(e){return"string"==typeof e&&r.test(e)};t.uuidHexStringToBuffer=function(e){if(!t.uuidValidateString(e))throw new TypeError('UUID string representations must be a 32 or 36 character hex string (dashes excluded/included). Format: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" or "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".');var r=e.replace(/-/g,"");return b.Buffer.from(r,"hex")};t.bufferToUuidHexString=function(e,t){return void 0===t&&(t=!0),t?e.toString("hex",0,4)+"-"+e.toString("hex",4,6)+"-"+e.toString("hex",6,8)+"-"+e.toString("hex",8,10)+"-"+e.toString("hex",10,16):e.toString("hex")}}));r(G),G.bufferToUuidHexString,G.uuidHexStringToBuffer,G.uuidValidateString;var Z=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.UUID=void 0;var r=Symbol("id"),n=function(){function e(t){if(void 0===t)this.id=e.generate();else if(t instanceof e)this[r]=b.Buffer.from(t.id),this.__id=t.__id;else if((b.Buffer.isBuffer(t)||ArrayBuffer.isView(t))&&16===t.byteLength)this.id=W.ensureBuffer(t);else{if("string"!=typeof t)throw new TypeError("Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).");this.id=G.uuidHexStringToBuffer(t)}}return Object.defineProperty(e.prototype,"id",{get:function(){return this[r]},set:function(t){this[r]=t,e.cacheHexString&&(this.__id=G.bufferToUuidHexString(t))},enumerable:!1,configurable:!0}),e.prototype.toHexString=function(t){if(void 0===t&&(t=!0),e.cacheHexString&&this.__id)return this.__id;var r=G.bufferToUuidHexString(this.id,t);return e.cacheHexString&&(this.__id=r),r},e.prototype.toString=function(e){return e?this.id.toString(e):this.toHexString()},e.prototype.toJSON=function(){return this.toHexString()},e.prototype.equals=function(t){if(!t)return!1;if(t instanceof e)return t.id.equals(this.id);try{return new e(t).id.equals(this.id)}catch(e){return!1}},e.prototype.toBinary=function(){return new Q.Binary(this.id,Q.Binary.SUBTYPE_UUID)},e.generate=function(){var e=X.randomBytes(16);return e[6]=15&e[6]|64,e[8]=63&e[8]|128,b.Buffer.from(e)},e.isValid=function(t){if(!t)return!1;if(t instanceof e)return!0;if("string"==typeof t)return G.uuidValidateString(t);if(b.Buffer.isBuffer(t)){if(16!==t.length)return!1;try{return parseInt(t[6].toString(16)[0],10)===Q.Binary.SUBTYPE_UUID}catch(e){return!1}}return!1},e.createFromHexString=function(t){return new e(G.uuidHexStringToBuffer(t))},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'new UUID("'+this.toHexString()+'")'},e}();t.UUID=n,Object.defineProperty(n.prototype,"_bsontype",{value:"UUID"})}));r(Z),Z.UUID;var Q=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Binary=void 0;var Binary=function(){function Binary(e,t){if(!(this instanceof Binary))return new Binary(e,t);if(!(null==e||"string"==typeof e||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||Array.isArray(e)))throw new TypeError("Binary can only be constructed from string, Buffer, TypedArray, or Array<number>");this.sub_type=null!=t?t:Binary.BSON_BINARY_SUBTYPE_DEFAULT,null==e?(this.buffer=b.Buffer.alloc(Binary.BUFFER_SIZE),this.position=0):("string"==typeof e?this.buffer=b.Buffer.from(e,"binary"):Array.isArray(e)?this.buffer=b.Buffer.from(e):this.buffer=W.ensureBuffer(e),this.position=this.buffer.byteLength)}return Binary.prototype.put=function(e){if("string"==typeof e&&1!==e.length)throw new TypeError("only accepts single character String");if("number"!=typeof e&&1!==e.length)throw new TypeError("only accepts single character Uint8Array or Array");var t;if((t="string"==typeof e?e.charCodeAt(0):"number"==typeof e?e:e[0])<0||t>255)throw new TypeError("only accepts number in a valid unsigned byte range 0-255");if(this.buffer.length>this.position)this.buffer[this.position++]=t;else{var r=b.Buffer.alloc(Binary.BUFFER_SIZE+this.buffer.length);this.buffer.copy(r,0,0,this.buffer.length),this.buffer=r,this.buffer[this.position++]=t}},Binary.prototype.write=function(e,t){if(t="number"==typeof t?t:this.position,this.buffer.length<t+e.length){var r=b.Buffer.alloc(this.buffer.length+e.length);this.buffer.copy(r,0,0,this.buffer.length),this.buffer=r}ArrayBuffer.isView(e)?(this.buffer.set(W.ensureBuffer(e),t),this.position=t+e.byteLength>this.position?t+e.length:this.position):"string"==typeof e&&(this.buffer.write(e,t,e.length,"binary"),this.position=t+e.length>this.position?t+e.length:this.position)},Binary.prototype.read=function(e,t){return t=t&&t>0?t:this.position,this.buffer.slice(e,e+t)},Binary.prototype.value=function(e){return(e=!!e)&&this.buffer.length===this.position?this.buffer:e?this.buffer.slice(0,this.position):this.buffer.toString("binary",0,this.position)},Binary.prototype.length=function(){return this.position},Binary.prototype.toJSON=function(){return this.buffer.toString("base64")},Binary.prototype.toString=function(e){return this.buffer.toString(e)},Binary.prototype.toExtendedJSON=function(e){e=e||{};var t=this.buffer.toString("base64"),r=Number(this.sub_type).toString(16);return e.legacy?{$binary:t,$type:1===r.length?"0"+r:r}:{$binary:{base64:t,subType:1===r.length?"0"+r:r}}},Binary.prototype.toUUID=function(){if(this.sub_type===Binary.SUBTYPE_UUID)return new Z.UUID(this.buffer.slice(0,this.position));throw new Error('Binary sub_type "'+this.sub_type+'" is not supported for converting to UUID. Only "'+Binary.SUBTYPE_UUID+'" is currently supported.')},Binary.fromExtendedJSON=function(e,t){var r,n;if(t=t||{},"$binary"in e?t.legacy&&"string"==typeof e.$binary&&"$type"in e?(n=e.$type?parseInt(e.$type,16):0,r=b.Buffer.from(e.$binary,"base64")):"string"!=typeof e.$binary&&(n=e.$binary.subType?parseInt(e.$binary.subType,16):0,r=b.Buffer.from(e.$binary.base64,"base64")):"$uuid"in e&&(n=4,r=G.uuidHexStringToBuffer(e.$uuid)),!r)throw new TypeError("Unexpected Binary Extended JSON format "+JSON.stringify(e));return new Binary(r,n)},Binary.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},Binary.prototype.inspect=function(){return'new Binary(Buffer.from("'+this.value(!0).toString("hex")+'", "hex"), '+this.sub_type+")"},Binary.BSON_BINARY_SUBTYPE_DEFAULT=0,Binary.BUFFER_SIZE=256,Binary.SUBTYPE_DEFAULT=0,Binary.SUBTYPE_FUNCTION=1,Binary.SUBTYPE_BYTE_ARRAY=2,Binary.SUBTYPE_UUID_OLD=3,Binary.SUBTYPE_UUID=4,Binary.SUBTYPE_MD5=5,Binary.SUBTYPE_USER_DEFINED=128,Binary}();t.Binary=Binary,Object.defineProperty(Binary.prototype,"_bsontype",{value:"Binary"})}));r(Q),Q.Binary;var ee=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Code=void 0;var r=function(){function e(t,r){if(!(this instanceof e))return new e(t,r);this.code=t,this.scope=r}return e.prototype.toJSON=function(){return{code:this.code,scope:this.scope}},e.prototype.toExtendedJSON=function(){return this.scope?{$code:this.code,$scope:this.scope}:{$code:this.code}},e.fromExtendedJSON=function(t){return new e(t.$code,t.$scope)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){var e=this.toJSON();return'new Code("'+e.code+'"'+(e.scope?", "+JSON.stringify(e.scope):"")+")"},e}();t.Code=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Code"})}));r(ee),ee.Code;var te=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.DBRef=t.isDBRefLike=void 0,t.isDBRefLike=function(e){return X.isObjectLike(e)&&null!=e.$id&&null!=e.$ref};var r=function(){function e(t,r,n,i){if(!(this instanceof e))return new e(t,r,n,i);var o=t.split(".");2===o.length&&(n=o.shift(),t=o.shift()),this.collection=t,this.oid=r,this.db=n,this.fields=i||{}}return Object.defineProperty(e.prototype,"namespace",{get:function(){return this.collection},set:function(e){this.collection=e},enumerable:!1,configurable:!0}),e.prototype.toJSON=function(){var e=Object.assign({$ref:this.collection,$id:this.oid},this.fields);return null!=this.db&&(e.$db=this.db),e},e.prototype.toExtendedJSON=function(e){e=e||{};var t={$ref:this.collection,$id:this.oid};return e.legacy?t:(this.db&&(t.$db=this.db),t=Object.assign(t,this.fields))},e.fromExtendedJSON=function(t){var r=Object.assign({},t);return delete r.$ref,delete r.$id,delete r.$db,new e(t.$ref,t.$id,t.$db,r)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){var e=void 0===this.oid||void 0===this.oid.toString?this.oid:this.oid.toString();return'new DBRef("'+this.namespace+'", new ObjectId("'+e+'")'+(this.db?', "'+this.db+'"':"")+")"},e}();t.DBRef=r,Object.defineProperty(r.prototype,"_bsontype",{value:"DBRef"})}));r(te),te.DBRef,te.isDBRefLike;var re=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Long=void 0;var r=void 0;try{r=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}var n=4294967296,i=0x10000000000000000,o=i/2,u={},s={},f=function(){function e(t,r,n){if(void 0===t&&(t=0),void 0===r&&(r=0),!(this instanceof e))return new e(t,r,n);this.low=0|t,this.high=0|r,this.unsigned=!!n,Object.defineProperty(this,"__isLong__",{value:!0,configurable:!1,writable:!1,enumerable:!1})}return e.fromBits=function(t,r,n){return new e(t,r,n)},e.fromInt=function(t,r){var n,i,o;return r?(o=0<=(t>>>=0)&&t<256)&&(i=s[t])?i:(n=e.fromBits(t,(0|t)<0?-1:0,!0),o&&(s[t]=n),n):(o=-128<=(t|=0)&&t<128)&&(i=u[t])?i:(n=e.fromBits(t,t<0?-1:0,!1),o&&(u[t]=n),n)},e.fromNumber=function(t,r){if(isNaN(t))return r?e.UZERO:e.ZERO;if(r){if(t<0)return e.UZERO;if(t>=i)return e.MAX_UNSIGNED_VALUE}else{if(t<=-o)return e.MIN_VALUE;if(t+1>=o)return e.MAX_VALUE}return t<0?e.fromNumber(-t,r).neg():e.fromBits(t%n|0,t/n|0,r)},e.fromBigInt=function(t,r){return e.fromString(t.toString(),r)},e.fromString=function(t,r,n){if(0===t.length)throw Error("empty string");if("NaN"===t||"Infinity"===t||"+Infinity"===t||"-Infinity"===t)return e.ZERO;if("number"==typeof r?(n=r,r=!1):r=!!r,(n=n||10)<2||36<n)throw RangeError("radix");var i;if((i=t.indexOf("-"))>0)throw Error("interior hyphen");if(0===i)return e.fromString(t.substring(1),r,n).neg();for(var o=e.fromNumber(Math.pow(n,8)),u=e.ZERO,s=0;s<t.length;s+=8){var f=Math.min(8,t.length-s),a=parseInt(t.substring(s,s+f),n);if(f<8){var l=e.fromNumber(Math.pow(n,f));u=u.mul(l).add(e.fromNumber(a))}else u=(u=u.mul(o)).add(e.fromNumber(a))}return u.unsigned=r,u},e.fromBytes=function(t,r,n){return n?e.fromBytesLE(t,r):e.fromBytesBE(t,r)},e.fromBytesLE=function(t,r){return new e(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,r)},e.fromBytesBE=function(t,r){return new e(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],r)},e.isLong=function(e){return X.isObjectLike(e)&&!0===e.__isLong__},e.fromValue=function(t,r){return"number"==typeof t?e.fromNumber(t,r):"string"==typeof t?e.fromString(t,r):e.fromBits(t.low,t.high,"boolean"==typeof r?r:t.unsigned)},e.prototype.add=function(t){e.isLong(t)||(t=e.fromValue(t));var r=this.high>>>16,n=65535&this.high,i=this.low>>>16,o=65535&this.low,u=t.high>>>16,s=65535&t.high,f=t.low>>>16,a=0,l=0,c=0,h=0;return c+=(h+=o+(65535&t.low))>>>16,h&=65535,l+=(c+=i+f)>>>16,c&=65535,a+=(l+=n+s)>>>16,l&=65535,a+=r+u,a&=65535,e.fromBits(c<<16|h,a<<16|l,this.unsigned)},e.prototype.and=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low&t.low,this.high&t.high,this.unsigned)},e.prototype.compare=function(t){if(e.isLong(t)||(t=e.fromValue(t)),this.eq(t))return 0;var r=this.isNegative(),n=t.isNegative();return r&&!n?-1:!r&&n?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1},e.prototype.comp=function(e){return this.compare(e)},e.prototype.divide=function(t){if(e.isLong(t)||(t=e.fromValue(t)),t.isZero())throw Error("division by zero");if(r){if(!this.unsigned&&-2147483648===this.high&&-1===t.low&&-1===t.high)return this;var n=(this.unsigned?r.div_u:r.div_s)(this.low,this.high,t.low,t.high);return e.fromBits(n,r.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?e.UZERO:e.ZERO;var i,o,u;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return e.UZERO;if(t.gt(this.shru(1)))return e.UONE;u=e.UZERO}else{if(this.eq(e.MIN_VALUE))return t.eq(e.ONE)||t.eq(e.NEG_ONE)?e.MIN_VALUE:t.eq(e.MIN_VALUE)?e.ONE:(i=this.shr(1).div(t).shl(1)).eq(e.ZERO)?t.isNegative()?e.ONE:e.NEG_ONE:(o=this.sub(t.mul(i)),u=i.add(o.div(t)));if(t.eq(e.MIN_VALUE))return this.unsigned?e.UZERO:e.ZERO;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();u=e.ZERO}for(o=this;o.gte(t);){i=Math.max(1,Math.floor(o.toNumber()/t.toNumber()));for(var s=Math.ceil(Math.log(i)/Math.LN2),f=s<=48?1:Math.pow(2,s-48),a=e.fromNumber(i),l=a.mul(t);l.isNegative()||l.gt(o);)i-=f,l=(a=e.fromNumber(i,this.unsigned)).mul(t);a.isZero()&&(a=e.ONE),u=u.add(a),o=o.sub(l)}return u},e.prototype.div=function(e){return this.divide(e)},e.prototype.equals=function(t){return e.isLong(t)||(t=e.fromValue(t)),(this.unsigned===t.unsigned||this.high>>>31!=1||t.high>>>31!=1)&&(this.high===t.high&&this.low===t.low)},e.prototype.eq=function(e){return this.equals(e)},e.prototype.getHighBits=function(){return this.high},e.prototype.getHighBitsUnsigned=function(){return this.high>>>0},e.prototype.getLowBits=function(){return this.low},e.prototype.getLowBitsUnsigned=function(){return this.low>>>0},e.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.eq(e.MIN_VALUE)?64:this.neg().getNumBitsAbs();var t,r=0!==this.high?this.high:this.low;for(t=31;t>0&&0==(r&1<<t);t--);return 0!==this.high?t+33:t+1},e.prototype.greaterThan=function(e){return this.comp(e)>0},e.prototype.gt=function(e){return this.greaterThan(e)},e.prototype.greaterThanOrEqual=function(e){return this.comp(e)>=0},e.prototype.gte=function(e){return this.greaterThanOrEqual(e)},e.prototype.ge=function(e){return this.greaterThanOrEqual(e)},e.prototype.isEven=function(){return 0==(1&this.low)},e.prototype.isNegative=function(){return!this.unsigned&&this.high<0},e.prototype.isOdd=function(){return 1==(1&this.low)},e.prototype.isPositive=function(){return this.unsigned||this.high>=0},e.prototype.isZero=function(){return 0===this.high&&0===this.low},e.prototype.lessThan=function(e){return this.comp(e)<0},e.prototype.lt=function(e){return this.lessThan(e)},e.prototype.lessThanOrEqual=function(e){return this.comp(e)<=0},e.prototype.lte=function(e){return this.lessThanOrEqual(e)},e.prototype.modulo=function(t){if(e.isLong(t)||(t=e.fromValue(t)),r){var n=(this.unsigned?r.rem_u:r.rem_s)(this.low,this.high,t.low,t.high);return e.fromBits(n,r.get_high(),this.unsigned)}return this.sub(this.div(t).mul(t))},e.prototype.mod=function(e){return this.modulo(e)},e.prototype.rem=function(e){return this.modulo(e)},e.prototype.multiply=function(t){if(this.isZero())return e.ZERO;if(e.isLong(t)||(t=e.fromValue(t)),r){var n=r.mul(this.low,this.high,t.low,t.high);return e.fromBits(n,r.get_high(),this.unsigned)}if(t.isZero())return e.ZERO;if(this.eq(e.MIN_VALUE))return t.isOdd()?e.MIN_VALUE:e.ZERO;if(t.eq(e.MIN_VALUE))return this.isOdd()?e.MIN_VALUE:e.ZERO;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(e.TWO_PWR_24)&&t.lt(e.TWO_PWR_24))return e.fromNumber(this.toNumber()*t.toNumber(),this.unsigned);var i=this.high>>>16,o=65535&this.high,u=this.low>>>16,s=65535&this.low,f=t.high>>>16,a=65535&t.high,l=t.low>>>16,c=65535&t.low,h=0,p=0,d=0,y=0;return d+=(y+=s*c)>>>16,y&=65535,p+=(d+=u*c)>>>16,d&=65535,p+=(d+=s*l)>>>16,d&=65535,h+=(p+=o*c)>>>16,p&=65535,h+=(p+=u*l)>>>16,p&=65535,h+=(p+=s*a)>>>16,p&=65535,h+=i*c+o*l+u*a+s*f,h&=65535,e.fromBits(d<<16|y,h<<16|p,this.unsigned)},e.prototype.mul=function(e){return this.multiply(e)},e.prototype.negate=function(){return!this.unsigned&&this.eq(e.MIN_VALUE)?e.MIN_VALUE:this.not().add(e.ONE)},e.prototype.neg=function(){return this.negate()},e.prototype.not=function(){return e.fromBits(~this.low,~this.high,this.unsigned)},e.prototype.notEquals=function(e){return!this.equals(e)},e.prototype.neq=function(e){return this.notEquals(e)},e.prototype.ne=function(e){return this.notEquals(e)},e.prototype.or=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low|t.low,this.high|t.high,this.unsigned)},e.prototype.shiftLeft=function(t){return e.isLong(t)&&(t=t.toInt()),0==(t&=63)?this:t<32?e.fromBits(this.low<<t,this.high<<t|this.low>>>32-t,this.unsigned):e.fromBits(0,this.low<<t-32,this.unsigned)},e.prototype.shl=function(e){return this.shiftLeft(e)},e.prototype.shiftRight=function(t){return e.isLong(t)&&(t=t.toInt()),0==(t&=63)?this:t<32?e.fromBits(this.low>>>t|this.high<<32-t,this.high>>t,this.unsigned):e.fromBits(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},e.prototype.shr=function(e){return this.shiftRight(e)},e.prototype.shiftRightUnsigned=function(t){if(e.isLong(t)&&(t=t.toInt()),0===(t&=63))return this;var r=this.high;if(t<32){var n=this.low;return e.fromBits(n>>>t|r<<32-t,r>>>t,this.unsigned)}return 32===t?e.fromBits(r,0,this.unsigned):e.fromBits(r>>>t-32,0,this.unsigned)},e.prototype.shr_u=function(e){return this.shiftRightUnsigned(e)},e.prototype.shru=function(e){return this.shiftRightUnsigned(e)},e.prototype.subtract=function(t){return e.isLong(t)||(t=e.fromValue(t)),this.add(t.neg())},e.prototype.sub=function(e){return this.subtract(e)},e.prototype.toInt=function(){return this.unsigned?this.low>>>0:this.low},e.prototype.toNumber=function(){return this.unsigned?(this.high>>>0)*n+(this.low>>>0):this.high*n+(this.low>>>0)},e.prototype.toBigInt=function(){return BigInt(this.toString())},e.prototype.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},e.prototype.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},e.prototype.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},e.prototype.toSigned=function(){return this.unsigned?e.fromBits(this.low,this.high,!1):this},e.prototype.toString=function(t){if((t=t||10)<2||36<t)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(e.MIN_VALUE)){var r=e.fromNumber(t),n=this.div(r),i=n.mul(r).sub(this);return n.toString(t)+i.toInt().toString(t)}return"-"+this.neg().toString(t)}for(var o=e.fromNumber(Math.pow(t,6),this.unsigned),u=this,s="";;){var f=u.div(o),a=(u.sub(f.mul(o)).toInt()>>>0).toString(t);if((u=f).isZero())return a+s;for(;a.length<6;)a="0"+a;s=""+a+s}},e.prototype.toUnsigned=function(){return this.unsigned?this:e.fromBits(this.low,this.high,!0)},e.prototype.xor=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low^t.low,this.high^t.high,this.unsigned)},e.prototype.eqz=function(){return this.isZero()},e.prototype.le=function(e){return this.lessThanOrEqual(e)},e.prototype.toExtendedJSON=function(e){return e&&e.relaxed?this.toNumber():{$numberLong:this.toString()}},e.fromExtendedJSON=function(t,r){var n=e.fromString(t.$numberLong);return r&&r.relaxed?n.toNumber():n},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'new Long("'+this.toString()+'")'},e.TWO_PWR_24=e.fromInt(16777216),e.MAX_UNSIGNED_VALUE=e.fromBits(-1,-1,!0),e.ZERO=e.fromInt(0),e.UZERO=e.fromInt(0,!0),e.ONE=e.fromInt(1),e.UONE=e.fromInt(1,!0),e.NEG_ONE=e.fromInt(-1),e.MAX_VALUE=e.fromBits(-1,2147483647,!1),e.MIN_VALUE=e.fromBits(0,-2147483648,!1),e}();t.Long=f,Object.defineProperty(f.prototype,"__isLong__",{value:!0}),Object.defineProperty(f.prototype,"_bsontype",{value:"Long"})}));r(re),re.Long;var ne=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Decimal128=void 0;var r=/^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/,n=/^(\+|-)?(Infinity|inf)$/i,i=/^(\+|-)?NaN$/i,o=6111,u=-6176,s=[124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),f=[248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),a=[120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),l=/^([-+])?(\d+)?$/;function c(e){return!isNaN(parseInt(e,10))}function h(e){var t=re.Long.fromNumber(1e9),r=re.Long.fromNumber(0);if(!(e.parts[0]||e.parts[1]||e.parts[2]||e.parts[3]))return{quotient:e,rem:r};for(var n=0;n<=3;n++)r=(r=r.shiftLeft(32)).add(new re.Long(e.parts[n],0)),e.parts[n]=r.div(t).low,r=r.modulo(t);return{quotient:e,rem:r}}function p(e,t){throw new TypeError('"'+e+'" is not a valid Decimal128 string - '+t)}var d=function(){function e(t){if(!(this instanceof e))return new e(t);this.bytes=t}return e.fromString=function(t){var h,d=!1,y=!1,g=!1,_=0,B=0,O=0,m=0,S=0,N=[0],v=0,A=0,w=0,E=0,T=0,D=0,I=new re.Long(0,0),x=new re.Long(0,0),U=0;if(t.length>=7e3)throw new TypeError(t+" not a valid Decimal128 string");var R=t.match(r),L=t.match(n),j=t.match(i);if(!R&&!L&&!j||0===t.length)throw new TypeError(t+" not a valid Decimal128 string");if(R){var M=R[2],P=R[4],Y=R[5],C=R[6];P&&void 0===C&&p(t,"missing exponent power"),P&&void 0===M&&p(t,"missing exponent base"),void 0===P&&(Y||C)&&p(t,"missing e before exponent")}if("+"!==t[U]&&"-"!==t[U]||(d="-"===t[U++]),!c(t[U])&&"."!==t[U]){if("i"===t[U]||"I"===t[U])return new e(b.Buffer.from(d?f:a));if("N"===t[U])return new e(b.Buffer.from(s))}for(;c(t[U])||"."===t[U];)"."!==t[U]?(v<34&&("0"!==t[U]||g)&&(g||(S=B),g=!0,N[A++]=parseInt(t[U],10),v+=1),g&&(O+=1),y&&(m+=1),B+=1,U+=1):(y&&p(t,"contains multiple periods"),y=!0,U+=1);if(y&&!B)throw new TypeError(t+" not a valid Decimal128 string");if("e"===t[U]||"E"===t[U]){var z=t.substr(++U).match(l);if(!z||!z[2])return new e(b.Buffer.from(s));T=parseInt(z[0],10),U+=z[0].length}if(t[U])return new e(b.Buffer.from(s));if(w=0,v){if(E=v-1,1!==(_=O))for(;"0"===t[S+_-1];)_-=1}else w=0,E=0,N[0]=0,O=1,v=1,_=0;for(T<=m&&m-T>16384?T=u:T-=m;T>o;){if((E+=1)-w>34){if(N.join("").match(/^0+$/)){T=o;break}p(t,"overflow")}T-=1}for(;T<u||v<O;){if(0===E&&_<v){T=u,_=0;break}if(v<O?O-=1:E-=1,T<o)T+=1;else{if(N.join("").match(/^0+$/)){T=o;break}p(t,"overflow")}}if(E-w+1<_){var $=B;y&&(S+=1,$+=1),d&&(S+=1,$+=1);var k=parseInt(t[S+E+1],10),J=0;if(k>=5&&(J=1,5===k))for(J=N[E]%2==1?1:0,D=S+E+2;D<$;D++)if(parseInt(t[D],10)){J=1;break}if(J)for(var q=E;q>=0;q--)if(++N[q]>9&&(N[q]=0,0===q)){if(!(T<o))return new e(b.Buffer.from(d?f:a));T+=1,N[q]=1}}if(I=re.Long.fromNumber(0),x=re.Long.fromNumber(0),0===_)I=re.Long.fromNumber(0),x=re.Long.fromNumber(0);else if(E-w<17){q=w;for(x=re.Long.fromNumber(N[q++]),I=new re.Long(0,0);q<=E;q++)x=(x=x.multiply(re.Long.fromNumber(10))).add(re.Long.fromNumber(N[q]))}else{q=w;for(I=re.Long.fromNumber(N[q++]);q<=E-17;q++)I=(I=I.multiply(re.Long.fromNumber(10))).add(re.Long.fromNumber(N[q]));for(x=re.Long.fromNumber(N[q++]);q<=E;q++)x=(x=x.multiply(re.Long.fromNumber(10))).add(re.Long.fromNumber(N[q]))}var F,V,K,H,X=function(e,t){if(!e&&!t)return{high:re.Long.fromNumber(0),low:re.Long.fromNumber(0)};var r=e.shiftRightUnsigned(32),n=new re.Long(e.getLowBits(),0),i=t.shiftRightUnsigned(32),o=new re.Long(t.getLowBits(),0),u=r.multiply(i),s=r.multiply(o),f=n.multiply(i),a=n.multiply(o);return u=u.add(s.shiftRightUnsigned(32)),s=new re.Long(s.getLowBits(),0).add(f).add(a.shiftRightUnsigned(32)),{high:u=u.add(s.shiftRightUnsigned(32)),low:a=s.shiftLeft(32).add(new re.Long(a.getLowBits(),0))}}(I,re.Long.fromString("100000000000000000"));X.low=X.low.add(x),F=X.low,V=x,K=F.high>>>0,H=V.high>>>0,(K<H||K===H&&F.low>>>0<V.low>>>0)&&(X.high=X.high.add(re.Long.fromNumber(1))),h=T+6176;var W={low:re.Long.fromNumber(0),high:re.Long.fromNumber(0)};X.high.shiftRightUnsigned(49).and(re.Long.fromNumber(1)).equals(re.Long.fromNumber(1))?(W.high=W.high.or(re.Long.fromNumber(3).shiftLeft(61)),W.high=W.high.or(re.Long.fromNumber(h).and(re.Long.fromNumber(16383).shiftLeft(47))),W.high=W.high.or(X.high.and(re.Long.fromNumber(0x7fffffffffff)))):(W.high=W.high.or(re.Long.fromNumber(16383&h).shiftLeft(49)),W.high=W.high.or(X.high.and(re.Long.fromNumber(562949953421311)))),W.low=X.low,d&&(W.high=W.high.or(re.Long.fromString("9223372036854775808")));var G=b.Buffer.alloc(16);return U=0,G[U++]=255&W.low.low,G[U++]=W.low.low>>8&255,G[U++]=W.low.low>>16&255,G[U++]=W.low.low>>24&255,G[U++]=255&W.low.high,G[U++]=W.low.high>>8&255,G[U++]=W.low.high>>16&255,G[U++]=W.low.high>>24&255,G[U++]=255&W.high.low,G[U++]=W.high.low>>8&255,G[U++]=W.high.low>>16&255,G[U++]=W.high.low>>24&255,G[U++]=255&W.high.high,G[U++]=W.high.high>>8&255,G[U++]=W.high.high>>16&255,G[U++]=W.high.high>>24&255,new e(G)},e.prototype.toString=function(){for(var e,t=0,r=new Array(36),n=0;n<r.length;n++)r[n]=0;var i,o,u,s=0,f=!1,a={parts:[0,0,0,0]},l=[];s=0;var c=this.bytes,p=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24,d=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24,y=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24,g=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24;s=0,{low:new re.Long(p,d),high:new re.Long(y,g)}.high.lessThan(re.Long.ZERO)&&l.push("-");var _=g>>26&31;if(_>>3==3){if(30===_)return l.join("")+"Infinity";if(31===_)return"NaN";e=g>>15&16383,i=8+(g>>14&1)}else i=g>>14&7,e=g>>17&16383;var b=e-6176;if(a.parts[0]=(16383&g)+((15&i)<<14),a.parts[1]=y,a.parts[2]=d,a.parts[3]=p,0===a.parts[0]&&0===a.parts[1]&&0===a.parts[2]&&0===a.parts[3])f=!0;else for(u=3;u>=0;u--){var B=0,O=h(a);if(a=O.quotient,B=O.rem.low)for(o=8;o>=0;o--)r[9*u+o]=B%10,B=Math.floor(B/10)}if(f)t=1,r[s]=0;else for(t=36;!r[s];)t-=1,s+=1;var m=t-1+b;if(m>=34||m<=-7||b>0){if(t>34)return l.push("0"),b>0?l.push("E+"+b):b<0&&l.push("E"+b),l.join("");l.push(""+r[s++]),(t-=1)&&l.push(".");for(n=0;n<t;n++)l.push(""+r[s++]);l.push("E"),m>0?l.push("+"+m):l.push(""+m)}else if(b>=0)for(n=0;n<t;n++)l.push(""+r[s++]);else{var S=t+b;if(S>0)for(n=0;n<S;n++)l.push(""+r[s++]);else l.push("0");for(l.push(".");S++<0;)l.push("0");for(n=0;n<t-Math.max(S-1,0);n++)l.push(""+r[s++])}return l.join("")},e.prototype.toJSON=function(){return{$numberDecimal:this.toString()}},e.prototype.toExtendedJSON=function(){return{$numberDecimal:this.toString()}},e.fromExtendedJSON=function(t){return e.fromString(t.$numberDecimal)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'Decimal128.fromString("'+this.toString()+'")'},e}();t.Decimal128=d,Object.defineProperty(d.prototype,"_bsontype",{value:"Decimal128"})}));r(ne),ne.Decimal128;var ie=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Double=void 0;var r=function(){function e(t){if(!(this instanceof e))return new e(t);t instanceof Number&&(t=t.valueOf()),this.value=+t}return e.prototype.valueOf=function(){return this.value},e.prototype.toJSON=function(){return this.value},e.prototype.toExtendedJSON=function(e){return e&&(e.legacy||e.relaxed&&isFinite(this.value))?this.value:Object.is(Math.sign(this.value),-0)?{$numberDouble:"-"+this.value.toFixed(1)}:(Number.isInteger(this.value)?(t=this.value.toFixed(1)).length>=13&&(t=this.value.toExponential(13).toUpperCase()):t=this.value.toString(),{$numberDouble:t});var t},e.fromExtendedJSON=function(t,r){var n=parseFloat(t.$numberDouble);return r&&r.relaxed?n:new e(n)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new Double("+this.toExtendedJSON().$numberDouble+")"},e}();t.Double=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Double"})}));r(ie),ie.Double;var oe=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Int32=void 0;var r=function(){function e(t){if(!(this instanceof e))return new e(t);t instanceof Number&&(t=t.valueOf()),this.value=+t}return e.prototype.valueOf=function(){return this.value},e.prototype.toJSON=function(){return this.value},e.prototype.toExtendedJSON=function(e){return e&&(e.relaxed||e.legacy)?this.value:{$numberInt:this.value.toString()}},e.fromExtendedJSON=function(t,r){return r&&r.relaxed?parseInt(t.$numberInt,10):new e(t.$numberInt)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new Int32("+this.valueOf()+")"},e}();t.Int32=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Int32"})}));r(oe),oe.Int32;var ue=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MaxKey=void 0;var r=function(){function e(){if(!(this instanceof e))return new e}return e.prototype.toExtendedJSON=function(){return{$maxKey:1}},e.fromExtendedJSON=function(){return new e},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new MaxKey()"},e}();t.MaxKey=r,Object.defineProperty(r.prototype,"_bsontype",{value:"MaxKey"})}));r(ue),ue.MaxKey;var se=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MinKey=void 0;var r=function(){function e(){if(!(this instanceof e))return new e}return e.prototype.toExtendedJSON=function(){return{$minKey:1}},e.fromExtendedJSON=function(){return new e},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new MinKey()"},e}();t.MinKey=r,Object.defineProperty(r.prototype,"_bsontype",{value:"MinKey"})}));r(se),se.MinKey;var fe=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ObjectId=void 0;for(var r=X.randomBytes(5),n=new RegExp("^[0-9a-fA-F]{24}$"),i=[],o=0;o<256;o++)i[o]=(o<=15?"0":"")+o.toString(16);for(var u=[],s=0;s<10;)u[48+s]=s++;for(;s<16;)u[55+s]=u[87+s]=s++;var f=Symbol("id"),a=function(){function e(t){if(!(this instanceof e))return new e(t);if(t instanceof e&&(this[f]=t.id,this.__id=t.__id),"object"==typeof t&&t&&"id"in t&&("toHexString"in t&&"function"==typeof t.toHexString?this[f]=b.Buffer.from(t.toHexString(),"hex"):this[f]="string"==typeof t.id?b.Buffer.from(t.id):t.id),null!=t&&"number"!=typeof t||(this[f]=e.generate("number"==typeof t?t:void 0),e.cacheHexString&&(this.__id=this.id.toString("hex"))),ArrayBuffer.isView(t)&&12===t.byteLength&&(this[f]=W.ensureBuffer(t)),"string"==typeof t)if(12===t.length){var r=b.Buffer.from(t);12===r.byteLength&&(this[f]=r)}else{if(24!==t.length||!n.test(t))throw new TypeError("Argument passed in must be a Buffer or string of 12 bytes or a string of 24 hex characters");this[f]=b.Buffer.from(t,"hex")}e.cacheHexString&&(this.__id=this.id.toString("hex"))}return Object.defineProperty(e.prototype,"id",{get:function(){return this[f]},set:function(t){this[f]=t,e.cacheHexString&&(this.__id=t.toString("hex"))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"generationTime",{get:function(){return this.id.readInt32BE(0)},set:function(e){this.id.writeUInt32BE(e,0)},enumerable:!1,configurable:!0}),e.prototype.toHexString=function(){if(e.cacheHexString&&this.__id)return this.__id;var t=this.id.toString("hex");return e.cacheHexString&&!this.__id&&(this.__id=t),t},e.getInc=function(){return e.index=(e.index+1)%16777215},e.generate=function(t){"number"!=typeof t&&(t=~~(Date.now()/1e3));var n=e.getInc(),i=b.Buffer.alloc(12);return i.writeUInt32BE(t,0),i[4]=r[0],i[5]=r[1],i[6]=r[2],i[7]=r[3],i[8]=r[4],i[11]=255&n,i[10]=n>>8&255,i[9]=n>>16&255,i},e.prototype.toString=function(e){return e?this.id.toString(e):this.toHexString()},e.prototype.toJSON=function(){return this.toHexString()},e.prototype.equals=function(t){return null!=t&&(t instanceof e?this.toString()===t.toString():"string"==typeof t&&e.isValid(t)&&12===t.length&&b.Buffer.isBuffer(this.id)?t===this.id.toString("binary"):"string"==typeof t&&e.isValid(t)&&24===t.length?t.toLowerCase()===this.toHexString():"string"==typeof t&&e.isValid(t)&&12===t.length?b.Buffer.from(t).equals(this.id):"object"==typeof t&&"toHexString"in t&&"function"==typeof t.toHexString&&t.toHexString()===this.toHexString())},e.prototype.getTimestamp=function(){var e=new Date,t=this.id.readUInt32BE(0);return e.setTime(1e3*Math.floor(t)),e},e.createPk=function(){return new e},e.createFromTime=function(t){var r=b.Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0]);return r.writeUInt32BE(t,0),new e(r)},e.createFromHexString=function(t){if(void 0===t||null!=t&&24!==t.length)throw new TypeError("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters");return new e(b.Buffer.from(t,"hex"))},e.isValid=function(t){return null!=t&&("number"==typeof t||("string"==typeof t?12===t.length||24===t.length&&n.test(t):t instanceof e||(!(!b.Buffer.isBuffer(t)||12!==t.length)||"object"==typeof t&&"toHexString"in t&&"function"==typeof t.toHexString&&("string"==typeof t.id?12===t.id.length:24===t.toHexString().length&&n.test(t.id.toString("hex"))))))},e.prototype.toExtendedJSON=function(){return this.toHexString?{$oid:this.toHexString()}:{$oid:this.toString("hex")}},e.fromExtendedJSON=function(t){return new e(t.$oid)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'new ObjectId("'+this.toHexString()+'")'},e.index=~~(16777215*Math.random()),e}();t.ObjectId=a,Object.defineProperty(a.prototype,"generate",{value:X.deprecate((function(e){return a.generate(e)}),"Please use the static `ObjectId.generate(time)` instead")}),Object.defineProperty(a.prototype,"getInc",{value:X.deprecate((function(){return a.getInc()}),"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(a.prototype,"get_inc",{value:X.deprecate((function(){return a.getInc()}),"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(a,"get_inc",{value:X.deprecate((function(){return a.getInc()}),"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(a.prototype,"_bsontype",{value:"ObjectID"})}));r(fe),fe.ObjectId;var ae=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BSONRegExp=void 0;var r=function(){function e(t,r){if(!(this instanceof e))return new e(t,r);this.pattern=t,this.options=null!=r?r:"",this.options.split("").sort().join("");for(var n=0;n<this.options.length;n++)if("i"!==this.options[n]&&"m"!==this.options[n]&&"x"!==this.options[n]&&"l"!==this.options[n]&&"s"!==this.options[n]&&"u"!==this.options[n])throw new Error("The regular expression option ["+this.options[n]+"] is not supported")}return e.parseOptions=function(e){return e?e.split("").sort().join(""):""},e.prototype.toExtendedJSON=function(e){return(e=e||{}).legacy?{$regex:this.pattern,$options:this.options}:{$regularExpression:{pattern:this.pattern,options:this.options}}},e.fromExtendedJSON=function(t){if("$regex"in t){if("string"==typeof t.$regex)return new e(t.$regex,e.parseOptions(t.$options));if("BSONRegExp"===t.$regex._bsontype)return t}if("$regularExpression"in t)return new e(t.$regularExpression.pattern,e.parseOptions(t.$regularExpression.options));throw new TypeError("Unexpected BSONRegExp EJSON object form: "+JSON.stringify(t))},e}();t.BSONRegExp=r,Object.defineProperty(r.prototype,"_bsontype",{value:"BSONRegExp"})}));r(ae),ae.BSONRegExp;var le=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BSONSymbol=void 0;var r=function(){function e(t){if(!(this instanceof e))return new e(t);this.value=t}return e.prototype.valueOf=function(){return this.value},e.prototype.toString=function(){return this.value},e.prototype.inspect=function(){return'new BSONSymbol("'+this.value+'")'},e.prototype.toJSON=function(){return this.value},e.prototype.toExtendedJSON=function(){return{$symbol:this.value}},e.fromExtendedJSON=function(t){return new e(t.$symbol)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e}();t.BSONSymbol=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Symbol"})}));r(le),le.BSONSymbol;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var ce=function(e,t){return ce=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},ce(e,t)};var he=function(){return he=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},he.apply(this,arguments)};function pe(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function de(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),u=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)u.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return u}function ye(e){return this instanceof ye?(this.v=e,this):new ye(e)}var ge=Object.freeze({__proto__:null,__extends:function(e,t){function r(){this.constructor=e}ce(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},get __assign(){return he},__rest:function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r},__decorate:function(e,t,r,n){var i,o=arguments.length,u=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"===("undefined"==typeof Reflect?"undefined":babelHelpers.typeof(Reflect))&&"function"==typeof Reflect.decorate)u=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(u=(o<3?i(u):o>3?i(t,r,u):i(t,r))||u);return o>3&&u&&Object.defineProperty(t,r,u),u},__param:function(e,t){return function(r,n){t(r,n,e)}},__metadata:function(e,t){if("object"===("undefined"==typeof Reflect?"undefined":babelHelpers.typeof(Reflect))&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__awaiter:function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function u(e){try{f(n.next(e))}catch(e){o(e)}}function s(e){try{f(n.throw(e))}catch(e){o(e)}}function f(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(u,s)}f((n=n.apply(e,t||[])).next())}))},__generator:function(e,t){var r,n,i,o,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;u;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return u.label++,{value:o[1],done:!1};case 5:u.label++,n=o[1],o=[0];continue;case 7:o=u.ops.pop(),u.trys.pop();continue;default:if(!(i=u.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){u=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){u.label=o[1];break}if(6===o[0]&&u.label<i[1]){u.label=i[1],i=o;break}if(i&&u.label<i[2]){u.label=i[2],u.ops.push(o);break}i[2]&&u.ops.pop(),u.trys.pop();continue}o=t.call(e,u)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}},__createBinding:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]},__exportStar:function(e,t){for(var r in e)"default"===r||t.hasOwnProperty(r)||(t[r]=e[r])},__values:pe,__read:de,__spread:function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(de(arguments[t]));return e},__spreadArrays:function(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),i=0;for(t=0;t<r;t++)for(var o=arguments[t],u=0,s=o.length;u<s;u++,i++)n[i]=o[u];return n},__await:ye,__asyncGenerator:function(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,i=r.apply(e,t||[]),o=[];return n={},u("next"),u("throw"),u("return"),n[Symbol.asyncIterator]=function(){return this},n;function u(e){i[e]&&(n[e]=function(t){return new Promise((function(r,n){o.push([e,t,r,n])>1||s(e,t)}))})}function s(e,t){try{(r=i[e](t)).value instanceof ye?Promise.resolve(r.value.v).then(f,a):l(o[0][2],r)}catch(e){l(o[0][3],e)}var r}function f(e){s("next",e)}function a(e){s("throw",e)}function l(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}},__asyncDelegator:function(e){var t,r;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,i){t[n]=e[n]?function(t){return(r=!r)?{value:ye(e[n](t)),done:"return"===n}:i?i(t):t}:i}},__asyncValues:function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=pe(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,i){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,i,(t=e[r](t)).done,t.value)}))}}},__makeTemplateObject:function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},__importStar:function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t},__importDefault:function(e){return e&&e.__esModule?e:{default:e}},__classPrivateFieldGet:function(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)},__classPrivateFieldSet:function(e,t,r){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,r),r}}),_e=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Timestamp=t.LongWithoutOverridesClass=void 0,t.LongWithoutOverridesClass=re.Long;var r=function(e){function t(r,n){var i=this;return i instanceof t?(i=re.Long.isLong(r)?e.call(this,r.low,r.high,!0)||this:e.call(this,r,n,!0)||this,Object.defineProperty(i,"_bsontype",{value:"Timestamp",writable:!1,configurable:!1,enumerable:!1}),i):new t(r,n)}return ge.__extends(t,e),t.prototype.toJSON=function(){return{$timestamp:this.toString()}},t.fromInt=function(e){return new t(re.Long.fromInt(e,!0))},t.fromNumber=function(e){return new t(re.Long.fromNumber(e,!0))},t.fromBits=function(e,r){return new t(e,r)},t.fromString=function(e,r){return new t(re.Long.fromString(e,!0,r))},t.prototype.toExtendedJSON=function(){return{$timestamp:{t:this.high>>>0,i:this.low>>>0}}},t.fromExtendedJSON=function(e){return new t(e.$timestamp.i,e.$timestamp.t)},t.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},t.prototype.inspect=function(){return"new Timestamp("+this.getLowBits().toString()+", "+this.getHighBits().toString()+")"},t.MAX_VALUE=re.Long.MAX_UNSIGNED_VALUE,t}(t.LongWithoutOverridesClass);t.Timestamp=r}));r(_e),_e.Timestamp,_e.LongWithoutOverridesClass;var be=n((function(e,t){function r(e){return X.isObjectLike(e)&&Reflect.has(e,"_bsontype")&&"string"==typeof e._bsontype}Object.defineProperty(t,"__esModule",{value:!0}),t.EJSON=t.isBSONType=void 0,t.isBSONType=r;var n=2147483647,i=-2147483648,o=0x8000000000000000,u=-0x8000000000000000,s={$oid:fe.ObjectId,$binary:Q.Binary,$uuid:Q.Binary,$symbol:le.BSONSymbol,$numberInt:oe.Int32,$numberDecimal:ne.Decimal128,$numberDouble:ie.Double,$numberLong:re.Long,$minKey:se.MinKey,$maxKey:ue.MaxKey,$regex:ae.BSONRegExp,$regularExpression:ae.BSONRegExp,$timestamp:_e.Timestamp};function f(e,t){if(void 0===t&&(t={}),"number"==typeof e){if(t.relaxed||t.legacy)return e;if(Math.floor(e)===e){if(e>=i&&e<=n)return new oe.Int32(e);if(e>=u&&e<=o)return re.Long.fromNumber(e)}return new ie.Double(e)}if(null==e||"object"!=typeof e)return e;if(e.$undefined)return null;for(var r=Object.keys(e).filter((function(t){return t.startsWith("$")&&null!=e[t]})),a=0;a<r.length;a++){var l=s[r[a]];if(l)return l.fromExtendedJSON(e,t)}if(null!=e.$date){var c=e.$date,h=new Date;return t.legacy?"number"==typeof c?h.setTime(c):"string"==typeof c&&h.setTime(Date.parse(c)):"string"==typeof c?h.setTime(Date.parse(c)):re.Long.isLong(c)?h.setTime(c.toNumber()):"number"==typeof c&&t.relaxed&&h.setTime(c),h}if(null!=e.$code){var p=Object.assign({},e);return e.$scope&&(p.$scope=f(e.$scope)),ee.Code.fromExtendedJSON(e)}if(null!=e.$ref||null!=e.$dbPointer){var d=e.$ref?e:e.$dbPointer;if(d instanceof te.DBRef)return d;var y=Object.keys(d).filter((function(e){return e.startsWith("$")})),g=!0;if(y.forEach((function(e){-1===["$ref","$id","$db"].indexOf(e)&&(g=!1)})),g)return te.DBRef.fromExtendedJSON(d)}return e}function a(e){var t=e.toISOString();return 0!==e.getUTCMilliseconds()?t:t.slice(0,-5)+"Z"}function l(e,t){if(Array.isArray(e))return function(e,t){return e.map((function(e){return l(e,t)}))}(e,t);if(void 0===e)return null;if(e instanceof Date){var s=e.getTime(),f=s>-1&&s<2534023188e5;return t.legacy?t.relaxed&&f?{$date:e.getTime()}:{$date:a(e)}:t.relaxed&&f?{$date:a(e)}:{$date:{$numberLong:e.getTime().toString()}}}if("number"==typeof e&&!t.relaxed){if(Math.floor(e)===e){var h=e>=u&&e<=o;if(e>=i&&e<=n)return{$numberInt:e.toString()};if(h)return{$numberLong:e.toString()}}return{$numberDouble:e.toString()}}if(e instanceof RegExp){var p=e.flags;if(void 0===p){var d=e.toString().match(/[gimuy]*$/);d&&(p=d[0])}return new ae.BSONRegExp(e.source,p).toExtendedJSON(t)}return null!=e&&"object"==typeof e?function(e,t){if(null==e||"object"!=typeof e)throw new Error("not an object instance");var n=e._bsontype;if(void 0===n){var i={};for(var o in e)i[o]=l(e[o],t);return i}if(r(e)){var u=e;if("function"!=typeof u.toExtendedJSON){var s=c[e._bsontype];if(!s)throw new TypeError("Unrecognized or invalid _bsontype: "+e._bsontype);u=s(u)}return"Code"===n&&u.scope?u=new ee.Code(u.code,l(u.scope,t)):"DBRef"===n&&u.oid&&(u=new te.DBRef(u.collection,l(u.oid,t),u.db,u.fields)),u.toExtendedJSON(t)}throw new Error("_bsontype must be a string, but was: "+typeof n)}(e,t):e}var c={Binary:function(e){return new Q.Binary(e.value(),e.sub_type)},Code:function(e){return new ee.Code(e.code,e.scope)},DBRef:function(e){return new te.DBRef(e.collection||e.namespace,e.oid,e.db,e.fields)},Decimal128:function(e){return new ne.Decimal128(e.bytes)},Double:function(e){return new ie.Double(e.value)},Int32:function(e){return new oe.Int32(e.value)},Long:function(e){return re.Long.fromBits(null!=e.low?e.low:e.low_,null!=e.low?e.high:e.high_,null!=e.low?e.unsigned:e.unsigned_)},MaxKey:function(){return new ue.MaxKey},MinKey:function(){return new se.MinKey},ObjectID:function(e){return new fe.ObjectId(e)},ObjectId:function(e){return new fe.ObjectId(e)},BSONRegExp:function(e){return new ae.BSONRegExp(e.pattern,e.options)},Symbol:function(e){return new le.BSONSymbol(e.value)},Timestamp:function(e){return _e.Timestamp.fromBits(e.low,e.high)}};!function(e){function t(e,t){var r=Object.assign({},{relaxed:!0,legacy:!1},t);return"boolean"==typeof r.relaxed&&(r.strict=!r.relaxed),"boolean"==typeof r.strict&&(r.relaxed=!r.strict),JSON.parse(e,(function(e,t){return f(t,r)}))}function r(e,t,r,n){null!=r&&"object"==typeof r&&(n=r,r=0),null==t||"object"!=typeof t||Array.isArray(t)||(n=t,t=void 0,r=0);var i=l(e,n=Object.assign({},{relaxed:!0,legacy:!1},n));return JSON.stringify(i,t,r)}e.parse=t,e.stringify=r,e.serialize=function(e,t){return t=t||{},JSON.parse(r(e,t))},e.deserialize=function(e,r){return r=r||{},t(JSON.stringify(e),r)}}(t.EJSON||(t.EJSON={}))}));r(be),be.EJSON,be.isBSONType;var Be=n((function(e,r){var n;Object.defineProperty(r,"__esModule",{value:!0}),r.Map=void 0,r.Map=n;var i=function(e){return e&&e.Math==Math&&e};var o=i("object"==typeof globalThis&&globalThis)||i("object"==typeof window&&window)||i("object"==typeof self&&self)||i("object"==typeof t&&t)||Function("return this")();Object.prototype.hasOwnProperty.call(o,"Map")?r.Map=n=o.Map:r.Map=n=function(){function e(e){void 0===e&&(e=[]),this._keys=[],this._values={};for(var t=0;t<e.length;t++)if(null!=e[t]){var r=e[t],n=r[0],i=r[1];this._keys.push(n),this._values[n]={v:i,i:this._keys.length-1}}}return e.prototype.clear=function(){this._keys=[],this._values={}},e.prototype.delete=function(e){var t=this._values[e];return null!=t&&(delete this._values[e],this._keys.splice(t.i,1),!0)},e.prototype.entries=function(){var e=this,t=0;return{next:function(){var r=e._keys[t++];return{value:void 0!==r?[r,e._values[r].v]:void 0,done:void 0===r}}}},e.prototype.forEach=function(e,t){t=t||this;for(var r=0;r<this._keys.length;r++){var n=this._keys[r];e.call(t,this._values[n].v,n,t)}},e.prototype.get=function(e){return this._values[e]?this._values[e].v:void 0},e.prototype.has=function(e){return null!=this._values[e]},e.prototype.keys=function(){var e=this,t=0;return{next:function(){var r=e._keys[t++];return{value:void 0!==r?r:void 0,done:void 0===r}}}},e.prototype.set=function(e,t){return this._values[e]?(this._values[e].v=t,this):(this._keys.push(e),this._values[e]={v:t,i:this._keys.length-1},this)},e.prototype.values=function(){var e=this,t=0;return{next:function(){var r=e._keys[t++];return{value:void 0!==r?e._values[r].v:void 0,done:void 0===r}}}},Object.defineProperty(e.prototype,"size",{get:function(){return this._keys.length},enumerable:!1,configurable:!0}),e}()}));r(Be),Be.Map;var Oe=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BSON_BINARY_SUBTYPE_USER_DEFINED=t.BSON_BINARY_SUBTYPE_MD5=t.BSON_BINARY_SUBTYPE_UUID_NEW=t.BSON_BINARY_SUBTYPE_UUID=t.BSON_BINARY_SUBTYPE_BYTE_ARRAY=t.BSON_BINARY_SUBTYPE_FUNCTION=t.BSON_BINARY_SUBTYPE_DEFAULT=t.BSON_DATA_MAX_KEY=t.BSON_DATA_MIN_KEY=t.BSON_DATA_DECIMAL128=t.BSON_DATA_LONG=t.BSON_DATA_TIMESTAMP=t.BSON_DATA_INT=t.BSON_DATA_CODE_W_SCOPE=t.BSON_DATA_SYMBOL=t.BSON_DATA_CODE=t.BSON_DATA_DBPOINTER=t.BSON_DATA_REGEXP=t.BSON_DATA_NULL=t.BSON_DATA_DATE=t.BSON_DATA_BOOLEAN=t.BSON_DATA_OID=t.BSON_DATA_UNDEFINED=t.BSON_DATA_BINARY=t.BSON_DATA_ARRAY=t.BSON_DATA_OBJECT=t.BSON_DATA_STRING=t.BSON_DATA_NUMBER=t.JS_INT_MIN=t.JS_INT_MAX=t.BSON_INT64_MIN=t.BSON_INT64_MAX=t.BSON_INT32_MIN=t.BSON_INT32_MAX=void 0,t.BSON_INT32_MAX=2147483647,t.BSON_INT32_MIN=-2147483648,t.BSON_INT64_MAX=Math.pow(2,63)-1,t.BSON_INT64_MIN=-Math.pow(2,63),t.JS_INT_MAX=Math.pow(2,53),t.JS_INT_MIN=-Math.pow(2,53),t.BSON_DATA_NUMBER=1,t.BSON_DATA_STRING=2,t.BSON_DATA_OBJECT=3,t.BSON_DATA_ARRAY=4,t.BSON_DATA_BINARY=5,t.BSON_DATA_UNDEFINED=6,t.BSON_DATA_OID=7,t.BSON_DATA_BOOLEAN=8,t.BSON_DATA_DATE=9,t.BSON_DATA_NULL=10,t.BSON_DATA_REGEXP=11,t.BSON_DATA_DBPOINTER=12,t.BSON_DATA_CODE=13,t.BSON_DATA_SYMBOL=14,t.BSON_DATA_CODE_W_SCOPE=15,t.BSON_DATA_INT=16,t.BSON_DATA_TIMESTAMP=17,t.BSON_DATA_LONG=18,t.BSON_DATA_DECIMAL128=19,t.BSON_DATA_MIN_KEY=255,t.BSON_DATA_MAX_KEY=127,t.BSON_BINARY_SUBTYPE_DEFAULT=0,t.BSON_BINARY_SUBTYPE_FUNCTION=1,t.BSON_BINARY_SUBTYPE_BYTE_ARRAY=2,t.BSON_BINARY_SUBTYPE_UUID=3,t.BSON_BINARY_SUBTYPE_UUID_NEW=4,t.BSON_BINARY_SUBTYPE_MD5=5,t.BSON_BINARY_SUBTYPE_USER_DEFINED=128}));r(Oe),Oe.BSON_BINARY_SUBTYPE_USER_DEFINED,Oe.BSON_BINARY_SUBTYPE_MD5,Oe.BSON_BINARY_SUBTYPE_UUID_NEW,Oe.BSON_BINARY_SUBTYPE_UUID,Oe.BSON_BINARY_SUBTYPE_BYTE_ARRAY,Oe.BSON_BINARY_SUBTYPE_FUNCTION,Oe.BSON_BINARY_SUBTYPE_DEFAULT,Oe.BSON_DATA_MAX_KEY,Oe.BSON_DATA_MIN_KEY,Oe.BSON_DATA_DECIMAL128,Oe.BSON_DATA_LONG,Oe.BSON_DATA_TIMESTAMP,Oe.BSON_DATA_INT,Oe.BSON_DATA_CODE_W_SCOPE,Oe.BSON_DATA_SYMBOL,Oe.BSON_DATA_CODE,Oe.BSON_DATA_DBPOINTER,Oe.BSON_DATA_REGEXP,Oe.BSON_DATA_NULL,Oe.BSON_DATA_DATE,Oe.BSON_DATA_BOOLEAN,Oe.BSON_DATA_OID,Oe.BSON_DATA_UNDEFINED,Oe.BSON_DATA_BINARY,Oe.BSON_DATA_ARRAY,Oe.BSON_DATA_OBJECT,Oe.BSON_DATA_STRING,Oe.BSON_DATA_NUMBER,Oe.JS_INT_MIN,Oe.JS_INT_MAX,Oe.BSON_INT64_MIN,Oe.BSON_INT64_MAX,Oe.BSON_INT32_MIN,Oe.BSON_INT32_MAX;var me=n((function(e,t){function r(e,t,r){var i=5;if(Array.isArray(e))for(var o=0;o<e.length;o++)i+=n(o.toString(),e[o],t,!0,r);else for(var u in e.toBSON&&(e=e.toBSON()),e)i+=n(u,e[u],t,!1,r);return i}function n(e,t,n,i,o){switch(void 0===n&&(n=!1),void 0===i&&(i=!1),void 0===o&&(o=!1),t&&t.toBSON&&(t=t.toBSON()),typeof t){case"string":return 1+b.Buffer.byteLength(e,"utf8")+1+4+b.Buffer.byteLength(t,"utf8")+1;case"number":return Math.floor(t)===t&&t>=Oe.JS_INT_MIN&&t<=Oe.JS_INT_MAX&&t>=Oe.BSON_INT32_MIN&&t<=Oe.BSON_INT32_MAX?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+5:(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+9;case"undefined":return i||!o?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1:0;case"boolean":return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+2;case"object":if(null==t||"MinKey"===t._bsontype||"MaxKey"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1;if("ObjectId"===t._bsontype||"ObjectID"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+13;if(t instanceof Date||X.isDate(t))return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+9;if(ArrayBuffer.isView(t)||t instanceof ArrayBuffer)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+6+t.byteLength;if("Long"===t._bsontype||"Double"===t._bsontype||"Timestamp"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+9;if("Decimal128"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+17;if("Code"===t._bsontype)return null!=t.scope&&Object.keys(t.scope).length>0?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+4+b.Buffer.byteLength(t.code.toString(),"utf8")+1+r(t.scope,n,o):(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+b.Buffer.byteLength(t.code.toString(),"utf8")+1;if("Binary"===t._bsontype)return t.sub_type===Q.Binary.SUBTYPE_BYTE_ARRAY?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+(t.position+1+4+1+4):(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+(t.position+1+4+1);if("Symbol"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+b.Buffer.byteLength(t.value,"utf8")+4+1+1;if("DBRef"===t._bsontype){var u=Object.assign({$ref:t.collection,$id:t.oid},t.fields);return null!=t.db&&(u.$db=t.db),(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+r(u,n,o)}return t instanceof RegExp||"[object RegExp]"===Object.prototype.toString.call(t)?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+b.Buffer.byteLength(t.source,"utf8")+1+(t.global?1:0)+(t.ignoreCase?1:0)+(t.multiline?1:0)+1:"BSONRegExp"===t._bsontype?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+b.Buffer.byteLength(t.pattern,"utf8")+1+b.Buffer.byteLength(t.options,"utf8")+1:(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+r(t,n,o)+1;case"function":if(t instanceof RegExp||"[object RegExp]"===Object.prototype.toString.call(t)||"[object RegExp]"===String.call(t))return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+b.Buffer.byteLength(t.source,"utf8")+1+(t.global?1:0)+(t.ignoreCase?1:0)+(t.multiline?1:0)+1;if(n&&null!=t.scope&&Object.keys(t.scope).length>0)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+4+b.Buffer.byteLength(X.normalizedFunctionString(t),"utf8")+1+r(t.scope,n,o);if(n)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+b.Buffer.byteLength(X.normalizedFunctionString(t),"utf8")+1}return 0}Object.defineProperty(t,"__esModule",{value:!0}),t.calculateObjectSize=void 0,t.calculateObjectSize=r}));r(me),me.calculateObjectSize;var Se=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.validateUtf8=void 0;t.validateUtf8=function(e,t,r){for(var n=0,i=t;i<r;i+=1){var o=e[i];if(n){if(128!=(192&o))return!1;n-=1}else if(128&o)if(192==(224&o))n=1;else if(224==(240&o))n=2;else{if(240!=(248&o))return!1;n=3}}return!n}}));r(Se),Se.validateUtf8;var Ne=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.deserialize=void 0;var r=re.Long.fromNumber(Oe.JS_INT_MAX),n=re.Long.fromNumber(Oe.JS_INT_MIN),i={};function o(e,t,s,f){void 0===f&&(f=!1);var a=null!=s.evalFunctions&&s.evalFunctions,l=null!=s.cacheFunctions&&s.cacheFunctions,c=null==s.fieldsAsRaw?null:s.fieldsAsRaw,h=null!=s.raw&&s.raw,p="boolean"==typeof s.bsonRegExp&&s.bsonRegExp,d=null!=s.promoteBuffers&&s.promoteBuffers,y=null==s.promoteLongs||s.promoteLongs,g=null==s.promoteValues||s.promoteValues,_=t;if(e.length<5)throw new Error("corrupt bson message < 5 bytes long");var B=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;if(B<5||B>e.length)throw new Error("corrupt bson message");for(var O=f?[]:{},m=0;;){var S=e[t++];if(0===S)break;for(var N=t;0!==e[N]&&N<e.length;)N++;if(N>=e.byteLength)throw new Error("Bad BSON Document: illegal CString");var v=f?m++:e.toString("utf8",t,N);if(t=N+1,S===Oe.BSON_DATA_STRING){if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");if(!Se.validateUtf8(e,t,t+H-1))throw new Error("Invalid UTF-8 string in BSON document");var A=e.toString("utf8",t,t+H-1);O[v]=A,t+=H}else if(S===Oe.BSON_DATA_OID){var w=b.Buffer.alloc(12);e.copy(w,0,t,t+12),O[v]=new fe.ObjectId(w),t+=12}else if(S===Oe.BSON_DATA_INT&&!1===g)O[v]=new oe.Int32(e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24);else if(S===Oe.BSON_DATA_INT)O[v]=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;else if(S===Oe.BSON_DATA_NUMBER&&!1===g)O[v]=new ie.Double(e.readDoubleLE(t)),t+=8;else if(S===Oe.BSON_DATA_NUMBER)O[v]=e.readDoubleLE(t),t+=8;else if(S===Oe.BSON_DATA_DATE){var E=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,T=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;O[v]=new Date(new re.Long(E,T).toNumber())}else if(S===Oe.BSON_DATA_BOOLEAN){if(0!==e[t]&&1!==e[t])throw new Error("illegal boolean type value");O[v]=1===e[t++]}else if(S===Oe.BSON_DATA_OBJECT){var D=t;if((V=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)<=0||V>e.length-t)throw new Error("bad embedded document length in bson");O[v]=h?e.slice(t,t+V):o(e,D,s,!1),t+=V}else if(S===Oe.BSON_DATA_ARRAY){D=t;var I=s,x=t+(V=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24);if(c&&c[v]){for(var U in I={},s)I[U]=s[U];I.raw=!0}if(O[v]=o(e,D,I,!0),0!==e[(t+=V)-1])throw new Error("invalid array terminator byte");if(t!==x)throw new Error("corrupted array bson")}else if(S===Oe.BSON_DATA_UNDEFINED)O[v]=void 0;else if(S===Oe.BSON_DATA_NULL)O[v]=null;else if(S===Oe.BSON_DATA_LONG){E=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,T=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;var R=new re.Long(E,T);O[v]=y&&!0===g&&R.lessThanOrEqual(r)&&R.greaterThanOrEqual(n)?R.toNumber():R}else if(S===Oe.BSON_DATA_DECIMAL128){var L=b.Buffer.alloc(16);e.copy(L,0,t,t+16),t+=16;var j=new ne.Decimal128(L);"toObject"in j&&"function"==typeof j.toObject?O[v]=j.toObject():O[v]=j}else if(S===Oe.BSON_DATA_BINARY){var M=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,P=M,Y=e[t++];if(M<0)throw new Error("Negative binary type element size found");if(M>e.byteLength)throw new Error("Binary type size larger than document size");if(null!=e.slice){if(Y===Q.Binary.SUBTYPE_BYTE_ARRAY){if((M=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<0)throw new Error("Negative binary type element size found for subtype 0x02");if(M>P-4)throw new Error("Binary type with subtype 0x02 contains too long binary size");if(M<P-4)throw new Error("Binary type with subtype 0x02 contains too short binary size")}O[v]=d&&g?e.slice(t,t+M):new Q.Binary(e.slice(t,t+M),Y)}else{var C=b.Buffer.alloc(M);if(Y===Q.Binary.SUBTYPE_BYTE_ARRAY){if((M=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<0)throw new Error("Negative binary type element size found for subtype 0x02");if(M>P-4)throw new Error("Binary type with subtype 0x02 contains too long binary size");if(M<P-4)throw new Error("Binary type with subtype 0x02 contains too short binary size")}for(N=0;N<M;N++)C[N]=e[t+N];O[v]=d&&g?C:new Q.Binary(C,Y)}t+=M}else if(S===Oe.BSON_DATA_REGEXP&&!1===p){for(N=t;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");var z=e.toString("utf8",t,N);for(N=t=N+1;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");var $=e.toString("utf8",t,N);t=N+1;var k=new Array($.length);for(N=0;N<$.length;N++)switch($[N]){case"m":k[N]="m";break;case"s":k[N]="g";break;case"i":k[N]="i"}O[v]=new RegExp(z,k.join(""))}else if(S===Oe.BSON_DATA_REGEXP&&!0===p){for(N=t;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");z=e.toString("utf8",t,N);for(N=t=N+1;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");$=e.toString("utf8",t,N);t=N+1,O[v]=new ae.BSONRegExp(z,$)}else if(S===Oe.BSON_DATA_SYMBOL){if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");var J=e.toString("utf8",t,t+H-1);O[v]=g?J:new le.BSONSymbol(J),t+=H}else if(S===Oe.BSON_DATA_TIMESTAMP){E=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,T=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;O[v]=new _e.Timestamp(E,T)}else if(S===Oe.BSON_DATA_MIN_KEY)O[v]=new se.MinKey;else if(S===Oe.BSON_DATA_MAX_KEY)O[v]=new ue.MaxKey;else if(S===Oe.BSON_DATA_CODE){if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");var q=e.toString("utf8",t,t+H-1);O[v]=a?l?u(q,i,O):u(q):new ee.Code(q),t+=H}else if(S===Oe.BSON_DATA_CODE_W_SCOPE){var F=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;if(F<13)throw new Error("code_w_scope total size shorter minimum expected length");if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");q=e.toString("utf8",t,t+H-1),D=t+=H;var V=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24,K=o(e,D,s,!1);if(t+=V,F<8+V+H)throw new Error("code_w_scope total size is too short, truncating scope");if(F>8+V+H)throw new Error("code_w_scope total size is too long, clips outer document");a?(O[v]=l?u(q,i,O):u(q),O[v].scope=K):O[v]=new ee.Code(q,K)}else{if(S!==Oe.BSON_DATA_DBPOINTER)throw new Error("Detected unknown BSON type "+S.toString(16)+' for fieldname "'+v+'"');var H;if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");if(!Se.validateUtf8(e,t,t+H-1))throw new Error("Invalid UTF-8 string in BSON document");var X=e.toString("utf8",t,t+H-1);t+=H;var W=b.Buffer.alloc(12);e.copy(W,0,t,t+12);w=new fe.ObjectId(W);t+=12,O[v]=new te.DBRef(X,w)}}if(B!==t-_){if(f)throw new Error("corrupt array bson");throw new Error("corrupt object bson")}var G=Object.keys(O).filter((function(e){return e.startsWith("$")})),Z=!0;if(G.forEach((function(e){-1===["$ref","$id","$db"].indexOf(e)&&(Z=!1)})),!Z)return O;if(te.isDBRefLike(O)){var ce=Object.assign({},O);return delete ce.$ref,delete ce.$id,delete ce.$db,new te.DBRef(O.$ref,O.$id,O.$db,ce)}return O}function u(e,t,r){return t?(null==t[e]&&(t[e]=new Function(e)),t[e].bind(r)):new Function(e)}t.deserialize=function(e,t,r){var n=(t=null==t?{}:t)&&t.index?t.index:0,i=e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24;if(i<5)throw new Error("bson size must be >= 5, is "+i);if(t.allowObjectSmallerThanBufferSize&&e.length<i)throw new Error("buffer length "+e.length+" must be >= bson size "+i);if(!t.allowObjectSmallerThanBufferSize&&e.length!==i)throw new Error("buffer length "+e.length+" must === bson size "+i);if(i+n>e.byteLength)throw new Error("(bson size "+i+" + options.index "+n+" must be <= buffer length "+e.byteLength+")");if(0!==e[n+i-1])throw new Error("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");return o(e,n,t,r)}}));r(Ne),Ne.deserialize;var ve=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.writeIEEE754=t.readIEEE754=void 0,t.readIEEE754=function(e,t,r,n,i){var o,u,s="big"===r,f=8*i-n-1,a=(1<<f)-1,l=a>>1,c=-7,h=s?0:i-1,p=s?1:-1,d=e[t+h];for(h+=p,o=d&(1<<-c)-1,d>>=-c,c+=f;c>0;o=256*o+e[t+h],h+=p,c-=8);for(u=o&(1<<-c)-1,o>>=-c,c+=n;c>0;u=256*u+e[t+h],h+=p,c-=8);if(0===o)o=1-l;else{if(o===a)return u?NaN:1/0*(d?-1:1);u+=Math.pow(2,n),o-=l}return(d?-1:1)*u*Math.pow(2,o-n)},t.writeIEEE754=function(e,t,r,n,i,o){var u,s,f,a="big"===n,l=8*o-i-1,c=(1<<l)-1,h=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=a?o-1:0,y=a?-1:1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,u=c):(u=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-u))<1&&(u--,f*=2),(t+=u+h>=1?p/f:p*Math.pow(2,1-h))*f>=2&&(u++,f/=2),u+h>=c?(s=0,u=c):u+h>=1?(s=(t*f-1)*Math.pow(2,i),u+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),u=0)),isNaN(t)&&(s=0);i>=8;)e[r+d]=255&s,d+=y,s/=256,i-=8;for(u=u<<i|s,isNaN(t)&&(u+=8),l+=i;l>0;)e[r+d]=255&u,d+=y,u/=256,l-=8;e[r+d-y]|=128*g}}));r(ve),ve.writeIEEE754,ve.readIEEE754;var Ae=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.serializeInto=void 0;var r=/\x00/,n=new Set(["$db","$ref","$id","$clusterTime"]);function i(e){return"[object RegExp]"===Object.prototype.toString.call(e)}function o(e,t,r,n,i){e[n++]=Oe.BSON_DATA_STRING;var o=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8");e[(n=n+o+1)-1]=0;var u=e.write(r,n+4,void 0,"utf8");return e[n+3]=u+1>>24&255,e[n+2]=u+1>>16&255,e[n+1]=u+1>>8&255,e[n]=u+1&255,n=n+4+u,e[n++]=0,n}function u(e,t,r,n,i){Number.isInteger(r)&&r>=Oe.BSON_INT32_MIN&&r<=Oe.BSON_INT32_MAX?(e[n++]=Oe.BSON_DATA_INT,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,e[n++]=255&r,e[n++]=r>>8&255,e[n++]=r>>16&255,e[n++]=r>>24&255):(e[n++]=Oe.BSON_DATA_NUMBER,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,ve.writeIEEE754(e,r,n,"little",52,8),n+=8);return n}function s(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_NULL,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,n}function f(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_BOOLEAN,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,e[n++]=r?1:0,n}function a(e,t,r,n,i){e[n++]=Oe.BSON_DATA_DATE,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=re.Long.fromNumber(r.getTime()),u=o.getLowBits(),s=o.getHighBits();return e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255,e[n++]=255&s,e[n++]=s>>8&255,e[n++]=s>>16&255,e[n++]=s>>24&255,n}function l(e,t,n,i,o){if(e[i++]=Oe.BSON_DATA_REGEXP,i+=o?e.write(t,i,void 0,"ascii"):e.write(t,i,void 0,"utf8"),e[i++]=0,n.source&&null!=n.source.match(r))throw Error("value "+n.source+" must not contain null bytes");return i+=e.write(n.source,i,void 0,"utf8"),e[i++]=0,n.ignoreCase&&(e[i++]=105),n.global&&(e[i++]=115),n.multiline&&(e[i++]=109),e[i++]=0,i}function c(e,t,n,i,o){if(e[i++]=Oe.BSON_DATA_REGEXP,i+=o?e.write(t,i,void 0,"ascii"):e.write(t,i,void 0,"utf8"),e[i++]=0,null!=n.pattern.match(r))throw Error("pattern "+n.pattern+" must not contain null bytes");return i+=e.write(n.pattern,i,void 0,"utf8"),e[i++]=0,i+=e.write(n.options.split("").sort().join(""),i,void 0,"utf8"),e[i++]=0,i}function h(e,t,r,n,i){return null===r?e[n++]=Oe.BSON_DATA_NULL:"MinKey"===r._bsontype?e[n++]=Oe.BSON_DATA_MIN_KEY:e[n++]=Oe.BSON_DATA_MAX_KEY,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,n}function p(e,t,r,n,i){if(e[n++]=Oe.BSON_DATA_OID,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,"string"==typeof r.id)e.write(r.id,n,void 0,"binary");else{if(!r.id||!r.id.copy)throw new TypeError("object ["+JSON.stringify(r)+"] is not a valid ObjectId");r.id.copy(e,n,0,12)}return n+12}function d(e,t,r,n,i){e[n++]=Oe.BSON_DATA_BINARY,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=r.length;return e[n++]=255&o,e[n++]=o>>8&255,e[n++]=o>>16&255,e[n++]=o>>24&255,e[n++]=Oe.BSON_BINARY_SUBTYPE_DEFAULT,e.set(W.ensureBuffer(r),n),n+=o}function y(e,t,r,n,i,o,u,s,f,a){void 0===i&&(i=!1),void 0===o&&(o=0),void 0===u&&(u=!1),void 0===s&&(s=!0),void 0===f&&(f=!1),void 0===a&&(a=[]);for(var l=0;l<a.length;l++)if(a[l]===r)throw new Error("cyclic dependency detected");a.push(r),e[n++]=Array.isArray(r)?Oe.BSON_DATA_ARRAY:Oe.BSON_DATA_OBJECT,n+=f?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var c=A(e,r,i,n,o+1,u,s,a);return a.pop(),c}function g(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_DECIMAL128,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,r.bytes.copy(e,n,0,16),n+16}function _(e,t,r,n,i){e[n++]="Long"===r._bsontype?Oe.BSON_DATA_LONG:Oe.BSON_DATA_TIMESTAMP,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=r.getLowBits(),u=r.getHighBits();return e[n++]=255&o,e[n++]=o>>8&255,e[n++]=o>>16&255,e[n++]=o>>24&255,e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255,n}function b(e,t,r,n,i){return r=r.valueOf(),e[n++]=Oe.BSON_DATA_INT,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,e[n++]=255&r,e[n++]=r>>8&255,e[n++]=r>>16&255,e[n++]=r>>24&255,n}function B(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_NUMBER,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,ve.writeIEEE754(e,r.value,n,"little",52,8),n+=8}function O(e,t,r,n,i,o,u){e[n++]=Oe.BSON_DATA_CODE,n+=u?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var s=X.normalizedFunctionString(r),f=e.write(s,n+4,void 0,"utf8")+1;return e[n]=255&f,e[n+1]=f>>8&255,e[n+2]=f>>16&255,e[n+3]=f>>24&255,n=n+4+f-1,e[n++]=0,n}function m(e,t,r,n,i,o,u,s,f){if(void 0===i&&(i=!1),void 0===o&&(o=0),void 0===u&&(u=!1),void 0===s&&(s=!0),void 0===f&&(f=!1),r.scope&&"object"==typeof r.scope){e[n++]=Oe.BSON_DATA_CODE_W_SCOPE,n+=f?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var a=n,l="string"==typeof r.code?r.code:r.code.toString();n+=4;var c=e.write(l,n+4,void 0,"utf8")+1;e[n]=255&c,e[n+1]=c>>8&255,e[n+2]=c>>16&255,e[n+3]=c>>24&255,e[n+4+c-1]=0,n=n+c+4;var h=A(e,r.scope,i,n,o+1,u,s);n=h-1;var p=h-a;e[a++]=255&p,e[a++]=p>>8&255,e[a++]=p>>16&255,e[a++]=p>>24&255,e[n++]=0}else{e[n++]=Oe.BSON_DATA_CODE,n+=f?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;l=r.code.toString();var d=e.write(l,n+4,void 0,"utf8")+1;e[n]=255&d,e[n+1]=d>>8&255,e[n+2]=d>>16&255,e[n+3]=d>>24&255,n=n+4+d-1,e[n++]=0}return n}function S(e,t,r,n,i){e[n++]=Oe.BSON_DATA_BINARY,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=r.value(!0),u=r.position;return r.sub_type===Q.Binary.SUBTYPE_BYTE_ARRAY&&(u+=4),e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255,e[n++]=r.sub_type,r.sub_type===Q.Binary.SUBTYPE_BYTE_ARRAY&&(u-=4,e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255),e.set(o,n),n+=r.position}function N(e,t,r,n,i){e[n++]=Oe.BSON_DATA_SYMBOL,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=e.write(r.value,n+4,void 0,"utf8")+1;return e[n]=255&o,e[n+1]=o>>8&255,e[n+2]=o>>16&255,e[n+3]=o>>24&255,n=n+4+o-1,e[n++]=0,n}function v(e,t,r,n,i,o,u){e[n++]=Oe.BSON_DATA_OBJECT,n+=u?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var s=n,f={$ref:r.collection||r.namespace,$id:r.oid};null!=r.db&&(f.$db=r.db);var a=A(e,f=Object.assign(f,r.fields),!1,n,i+1,o),l=a-s;return e[s++]=255&l,e[s++]=l>>8&255,e[s++]=l>>16&255,e[s++]=l>>24&255,a}function A(e,t,A,w,E,T,D,I){void 0===A&&(A=!1),void 0===w&&(w=0),void 0===E&&(E=0),void 0===T&&(T=!1),void 0===D&&(D=!0),void 0===I&&(I=[]),w=w||0,(I=I||[]).push(t);var x=w+4;if(Array.isArray(t))for(var U=0;U<t.length;U++){var R=""+U;if((Y=t[U])&&Y.toBSON){if("function"!=typeof Y.toBSON)throw new TypeError("toBSON is not a function");Y=Y.toBSON()}if("string"==typeof Y)x=o(e,R,Y,x,!0);else if("number"==typeof Y)x=u(e,R,Y,x,!0);else{if("bigint"==typeof Y)throw new TypeError("Unsupported type BigInt, please use Decimal128");if("boolean"==typeof Y)x=f(e,R,Y,x,!0);else if(Y instanceof Date||X.isDate(Y))x=a(e,R,Y,x,!0);else if(void 0===Y)x=s(e,R,0,x,!0);else if(null===Y)x=s(e,R,0,x,!0);else if("ObjectId"===Y._bsontype||"ObjectID"===Y._bsontype)x=p(e,R,Y,x,!0);else if(X.isBuffer(Y)||X.isUint8Array(Y))x=d(e,R,Y,x,!0);else if(Y instanceof RegExp||i(Y))x=l(e,R,Y,x,!0);else if("object"==typeof Y&&null==Y._bsontype)x=y(e,R,Y,x,A,E,T,D,!0,I);else if("object"==typeof Y&&be.isBSONType(Y)&&"Decimal128"===Y._bsontype)x=g(e,R,Y,x,!0);else if("Long"===Y._bsontype||"Timestamp"===Y._bsontype)x=_(e,R,Y,x,!0);else if("Double"===Y._bsontype)x=B(e,R,Y,x,!0);else if("function"==typeof Y&&T)x=O(e,R,Y,x,0,0,!0);else if("Code"===Y._bsontype)x=m(e,R,Y,x,A,E,T,D,!0);else if("Binary"===Y._bsontype)x=S(e,R,Y,x,!0);else if("Symbol"===Y._bsontype)x=N(e,R,Y,x,!0);else if("DBRef"===Y._bsontype)x=v(e,R,Y,x,E,T,!0);else if("BSONRegExp"===Y._bsontype)x=c(e,R,Y,x,!0);else if("Int32"===Y._bsontype)x=b(e,R,Y,x,!0);else if("MinKey"===Y._bsontype||"MaxKey"===Y._bsontype)x=h(e,R,Y,x,!0);else if(void 0!==Y._bsontype)throw new TypeError("Unrecognized or invalid _bsontype: "+Y._bsontype)}}else if(t instanceof Be.Map)for(var L=t.entries(),j=!1;!j;){var M=L.next();if(!(j=!!M.done)){R=M.value[0];var P=typeof(Y=M.value[1]);if("string"==typeof R&&!n.has(R)){if(null!=R.match(r))throw Error("key "+R+" must not contain null bytes");if(A){if("$"===R[0])throw Error("key "+R+" must not start with '$'");if(~R.indexOf("."))throw Error("key "+R+" must not contain '.'")}}if("string"===P)x=o(e,R,Y,x);else if("number"===P)x=u(e,R,Y,x);else{if("bigint"===P||X.isBigInt64Array(Y)||X.isBigUInt64Array(Y))throw new TypeError("Unsupported type BigInt, please use Decimal128");if("boolean"===P)x=f(e,R,Y,x);else if(Y instanceof Date||X.isDate(Y))x=a(e,R,Y,x);else if(null===Y||void 0===Y&&!1===D)x=s(e,R,0,x);else if("ObjectId"===Y._bsontype||"ObjectID"===Y._bsontype)x=p(e,R,Y,x);else if(X.isBuffer(Y)||X.isUint8Array(Y))x=d(e,R,Y,x);else if(Y instanceof RegExp||i(Y))x=l(e,R,Y,x);else if("object"===P&&null==Y._bsontype)x=y(e,R,Y,x,A,E,T,D,!1,I);else if("object"===P&&"Decimal128"===Y._bsontype)x=g(e,R,Y,x);else if("Long"===Y._bsontype||"Timestamp"===Y._bsontype)x=_(e,R,Y,x);else if("Double"===Y._bsontype)x=B(e,R,Y,x);else if("Code"===Y._bsontype)x=m(e,R,Y,x,A,E,T,D);else if("function"==typeof Y&&T)x=O(e,R,Y,x,0,0,T);else if("Binary"===Y._bsontype)x=S(e,R,Y,x);else if("Symbol"===Y._bsontype)x=N(e,R,Y,x);else if("DBRef"===Y._bsontype)x=v(e,R,Y,x,E,T);else if("BSONRegExp"===Y._bsontype)x=c(e,R,Y,x);else if("Int32"===Y._bsontype)x=b(e,R,Y,x);else if("MinKey"===Y._bsontype||"MaxKey"===Y._bsontype)x=h(e,R,Y,x);else if(void 0!==Y._bsontype)throw new TypeError("Unrecognized or invalid _bsontype: "+Y._bsontype)}}}else{if(t.toBSON){if("function"!=typeof t.toBSON)throw new TypeError("toBSON is not a function");if(null!=(t=t.toBSON())&&"object"!=typeof t)throw new TypeError("toBSON function did not return an object")}for(var R in t){var Y;if((Y=t[R])&&Y.toBSON){if("function"!=typeof Y.toBSON)throw new TypeError("toBSON is not a function");Y=Y.toBSON()}P=typeof Y;if("string"==typeof R&&!n.has(R)){if(null!=R.match(r))throw Error("key "+R+" must not contain null bytes");if(A){if("$"===R[0])throw Error("key "+R+" must not start with '$'");if(~R.indexOf("."))throw Error("key "+R+" must not contain '.'")}}if("string"===P)x=o(e,R,Y,x);else if("number"===P)x=u(e,R,Y,x);else{if("bigint"===P)throw new TypeError("Unsupported type BigInt, please use Decimal128");if("boolean"===P)x=f(e,R,Y,x);else if(Y instanceof Date||X.isDate(Y))x=a(e,R,Y,x);else if(void 0===Y)!1===D&&(x=s(e,R,0,x));else if(null===Y)x=s(e,R,0,x);else if("ObjectId"===Y._bsontype||"ObjectID"===Y._bsontype)x=p(e,R,Y,x);else if(X.isBuffer(Y)||X.isUint8Array(Y))x=d(e,R,Y,x);else if(Y instanceof RegExp||i(Y))x=l(e,R,Y,x);else if("object"===P&&null==Y._bsontype)x=y(e,R,Y,x,A,E,T,D,!1,I);else if("object"===P&&"Decimal128"===Y._bsontype)x=g(e,R,Y,x);else if("Long"===Y._bsontype||"Timestamp"===Y._bsontype)x=_(e,R,Y,x);else if("Double"===Y._bsontype)x=B(e,R,Y,x);else if("Code"===Y._bsontype)x=m(e,R,Y,x,A,E,T,D);else if("function"==typeof Y&&T)x=O(e,R,Y,x,0,0,T);else if("Binary"===Y._bsontype)x=S(e,R,Y,x);else if("Symbol"===Y._bsontype)x=N(e,R,Y,x);else if("DBRef"===Y._bsontype)x=v(e,R,Y,x,E,T);else if("BSONRegExp"===Y._bsontype)x=c(e,R,Y,x);else if("Int32"===Y._bsontype)x=b(e,R,Y,x);else if("MinKey"===Y._bsontype||"MaxKey"===Y._bsontype)x=h(e,R,Y,x);else if(void 0!==Y._bsontype)throw new TypeError("Unrecognized or invalid _bsontype: "+Y._bsontype)}}}I.pop(),e[x++]=0;var C=x-w;return e[w++]=255&C,e[w++]=C>>8&255,e[w++]=C>>16&255,e[w++]=C>>24&255,x}t.serializeInto=A}));r(Ae),Ae.serializeInto;var we=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ObjectID=t.Decimal128=t.BSONRegExp=t.MaxKey=t.MinKey=t.Int32=t.Double=t.Timestamp=t.Long=t.UUID=t.ObjectId=t.Binary=t.DBRef=t.BSONSymbol=t.Map=t.Code=t.LongWithoutOverridesClass=t.EJSON=t.BSON_INT64_MIN=t.BSON_INT64_MAX=t.BSON_INT32_MIN=t.BSON_INT32_MAX=t.BSON_DATA_UNDEFINED=t.BSON_DATA_TIMESTAMP=t.BSON_DATA_SYMBOL=t.BSON_DATA_STRING=t.BSON_DATA_REGEXP=t.BSON_DATA_OID=t.BSON_DATA_OBJECT=t.BSON_DATA_NUMBER=t.BSON_DATA_NULL=t.BSON_DATA_MIN_KEY=t.BSON_DATA_MAX_KEY=t.BSON_DATA_LONG=t.BSON_DATA_INT=t.BSON_DATA_DECIMAL128=t.BSON_DATA_DBPOINTER=t.BSON_DATA_DATE=t.BSON_DATA_CODE_W_SCOPE=t.BSON_DATA_CODE=t.BSON_DATA_BOOLEAN=t.BSON_DATA_BINARY=t.BSON_DATA_ARRAY=t.BSON_BINARY_SUBTYPE_UUID_NEW=t.BSON_BINARY_SUBTYPE_UUID=t.BSON_BINARY_SUBTYPE_USER_DEFINED=t.BSON_BINARY_SUBTYPE_MD5=t.BSON_BINARY_SUBTYPE_FUNCTION=t.BSON_BINARY_SUBTYPE_DEFAULT=t.BSON_BINARY_SUBTYPE_BYTE_ARRAY=void 0,t.deserializeStream=t.calculateObjectSize=t.deserialize=t.serializeWithBufferAndIndex=t.serialize=t.setInternalBufferSize=void 0,Object.defineProperty(t,"Binary",{enumerable:!0,get:function(){return Q.Binary}}),Object.defineProperty(t,"Code",{enumerable:!0,get:function(){return ee.Code}}),Object.defineProperty(t,"DBRef",{enumerable:!0,get:function(){return te.DBRef}}),Object.defineProperty(t,"Decimal128",{enumerable:!0,get:function(){return ne.Decimal128}}),Object.defineProperty(t,"Double",{enumerable:!0,get:function(){return ie.Double}}),Object.defineProperty(t,"Int32",{enumerable:!0,get:function(){return oe.Int32}}),Object.defineProperty(t,"Long",{enumerable:!0,get:function(){return re.Long}}),Object.defineProperty(t,"Map",{enumerable:!0,get:function(){return Be.Map}}),Object.defineProperty(t,"MaxKey",{enumerable:!0,get:function(){return ue.MaxKey}}),Object.defineProperty(t,"MinKey",{enumerable:!0,get:function(){return se.MinKey}}),Object.defineProperty(t,"ObjectId",{enumerable:!0,get:function(){return fe.ObjectId}}),Object.defineProperty(t,"ObjectID",{enumerable:!0,get:function(){return fe.ObjectId}}),Object.defineProperty(t,"BSONRegExp",{enumerable:!0,get:function(){return ae.BSONRegExp}}),Object.defineProperty(t,"BSONSymbol",{enumerable:!0,get:function(){return le.BSONSymbol}}),Object.defineProperty(t,"Timestamp",{enumerable:!0,get:function(){return _e.Timestamp}}),Object.defineProperty(t,"UUID",{enumerable:!0,get:function(){return Z.UUID}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_BYTE_ARRAY",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_BYTE_ARRAY}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_DEFAULT",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_DEFAULT}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_FUNCTION",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_FUNCTION}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_MD5",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_MD5}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_USER_DEFINED",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_USER_DEFINED}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_UUID",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_UUID}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_UUID_NEW",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_UUID_NEW}}),Object.defineProperty(t,"BSON_DATA_ARRAY",{enumerable:!0,get:function(){return Oe.BSON_DATA_ARRAY}}),Object.defineProperty(t,"BSON_DATA_BINARY",{enumerable:!0,get:function(){return Oe.BSON_DATA_BINARY}}),Object.defineProperty(t,"BSON_DATA_BOOLEAN",{enumerable:!0,get:function(){return Oe.BSON_DATA_BOOLEAN}}),Object.defineProperty(t,"BSON_DATA_CODE",{enumerable:!0,get:function(){return Oe.BSON_DATA_CODE}}),Object.defineProperty(t,"BSON_DATA_CODE_W_SCOPE",{enumerable:!0,get:function(){return Oe.BSON_DATA_CODE_W_SCOPE}}),Object.defineProperty(t,"BSON_DATA_DATE",{enumerable:!0,get:function(){return Oe.BSON_DATA_DATE}}),Object.defineProperty(t,"BSON_DATA_DBPOINTER",{enumerable:!0,get:function(){return Oe.BSON_DATA_DBPOINTER}}),Object.defineProperty(t,"BSON_DATA_DECIMAL128",{enumerable:!0,get:function(){return Oe.BSON_DATA_DECIMAL128}}),Object.defineProperty(t,"BSON_DATA_INT",{enumerable:!0,get:function(){return Oe.BSON_DATA_INT}}),Object.defineProperty(t,"BSON_DATA_LONG",{enumerable:!0,get:function(){return Oe.BSON_DATA_LONG}}),Object.defineProperty(t,"BSON_DATA_MAX_KEY",{enumerable:!0,get:function(){return Oe.BSON_DATA_MAX_KEY}}),Object.defineProperty(t,"BSON_DATA_MIN_KEY",{enumerable:!0,get:function(){return Oe.BSON_DATA_MIN_KEY}}),Object.defineProperty(t,"BSON_DATA_NULL",{enumerable:!0,get:function(){return Oe.BSON_DATA_NULL}}),Object.defineProperty(t,"BSON_DATA_NUMBER",{enumerable:!0,get:function(){return Oe.BSON_DATA_NUMBER}}),Object.defineProperty(t,"BSON_DATA_OBJECT",{enumerable:!0,get:function(){return Oe.BSON_DATA_OBJECT}}),Object.defineProperty(t,"BSON_DATA_OID",{enumerable:!0,get:function(){return Oe.BSON_DATA_OID}}),Object.defineProperty(t,"BSON_DATA_REGEXP",{enumerable:!0,get:function(){return Oe.BSON_DATA_REGEXP}}),Object.defineProperty(t,"BSON_DATA_STRING",{enumerable:!0,get:function(){return Oe.BSON_DATA_STRING}}),Object.defineProperty(t,"BSON_DATA_SYMBOL",{enumerable:!0,get:function(){return Oe.BSON_DATA_SYMBOL}}),Object.defineProperty(t,"BSON_DATA_TIMESTAMP",{enumerable:!0,get:function(){return Oe.BSON_DATA_TIMESTAMP}}),Object.defineProperty(t,"BSON_DATA_UNDEFINED",{enumerable:!0,get:function(){return Oe.BSON_DATA_UNDEFINED}}),Object.defineProperty(t,"BSON_INT32_MAX",{enumerable:!0,get:function(){return Oe.BSON_INT32_MAX}}),Object.defineProperty(t,"BSON_INT32_MIN",{enumerable:!0,get:function(){return Oe.BSON_INT32_MIN}}),Object.defineProperty(t,"BSON_INT64_MAX",{enumerable:!0,get:function(){return Oe.BSON_INT64_MAX}}),Object.defineProperty(t,"BSON_INT64_MIN",{enumerable:!0,get:function(){return Oe.BSON_INT64_MIN}});var r=be;Object.defineProperty(t,"EJSON",{enumerable:!0,get:function(){return r.EJSON}});var n=_e;Object.defineProperty(t,"LongWithoutOverridesClass",{enumerable:!0,get:function(){return n.LongWithoutOverridesClass}});var i=17825792,o=b.Buffer.alloc(i);function u(e){o.length<e&&(o=b.Buffer.alloc(e))}function s(e,t){void 0===t&&(t={});var r="boolean"==typeof t.checkKeys&&t.checkKeys,n="boolean"==typeof t.serializeFunctions&&t.serializeFunctions,u="boolean"!=typeof t.ignoreUndefined||t.ignoreUndefined,s="number"==typeof t.minInternalBufferSize?t.minInternalBufferSize:i;o.length<s&&(o=b.Buffer.alloc(s));var f=Ae.serializeInto(o,e,r,0,0,n,u,[]),a=b.Buffer.alloc(f);return o.copy(a,0,0,a.length),a}function f(e,t,r){void 0===r&&(r={});var n="boolean"==typeof r.checkKeys&&r.checkKeys,i="boolean"==typeof r.serializeFunctions&&r.serializeFunctions,u="boolean"!=typeof r.ignoreUndefined||r.ignoreUndefined,s="number"==typeof r.index?r.index:0,f=Ae.serializeInto(o,e,n,0,0,i,u);return o.copy(t,s,0,f),s+f-1}function a(e,t){return void 0===t&&(t={}),Ne.deserialize(W.ensureBuffer(e),t)}function l(e,t){void 0===t&&(t={});var r="boolean"==typeof(t=t||{}).serializeFunctions&&t.serializeFunctions,n="boolean"!=typeof t.ignoreUndefined||t.ignoreUndefined;return me.calculateObjectSize(e,r,n)}function c(e,t,r,n,i,o){for(var u=Object.assign({allowObjectSmallerThanBufferSize:!0,index:0},o),s=W.ensureBuffer(e),f=t,a=0;a<r;a++){var l=s[f]|s[f+1]<<8|s[f+2]<<16|s[f+3]<<24;u.index=f,n[i+a]=Ne.deserialize(s,u),f+=l}return f}t.setInternalBufferSize=u,t.serialize=s,t.serializeWithBufferAndIndex=f,t.deserialize=a,t.calculateObjectSize=l,t.deserializeStream=c;var h={Binary:Q.Binary,Code:ee.Code,DBRef:te.DBRef,Decimal128:ne.Decimal128,Double:ie.Double,Int32:oe.Int32,Long:re.Long,UUID:Z.UUID,Map:Be.Map,MaxKey:ue.MaxKey,MinKey:se.MinKey,ObjectId:fe.ObjectId,ObjectID:fe.ObjectId,BSONRegExp:ae.BSONRegExp,BSONSymbol:le.BSONSymbol,Timestamp:_e.Timestamp,EJSON:be.EJSON,setInternalBufferSize:u,serialize:s,serializeWithBufferAndIndex:f,deserialize:a,calculateObjectSize:l,deserializeStream:c};t.default=h})),Ee=r(we),Te=we.ObjectID,De=we.Decimal128,Ie=we.BSONRegExp,xe=we.MaxKey,Ue=we.MinKey,Re=we.Int32,Le=we.Double,je=we.Timestamp,Me=we.Long,Pe=we.UUID,Ye=we.ObjectId,Ce=we.Binary,ze=we.DBRef,$e=we.BSONSymbol,ke=we.Map,Je=we.Code,qe=we.LongWithoutOverridesClass,Fe=we.EJSON,Ve=we.BSON_INT64_MIN,Ke=we.BSON_INT64_MAX,He=we.BSON_INT32_MIN,Xe=we.BSON_INT32_MAX,We=we.BSON_DATA_UNDEFINED,Ge=we.BSON_DATA_TIMESTAMP,Ze=we.BSON_DATA_SYMBOL,Qe=we.BSON_DATA_STRING,et=we.BSON_DATA_REGEXP,tt=we.BSON_DATA_OID,rt=we.BSON_DATA_OBJECT,nt=we.BSON_DATA_NUMBER,it=we.BSON_DATA_NULL,ot=we.BSON_DATA_MIN_KEY,ut=we.BSON_DATA_MAX_KEY,st=we.BSON_DATA_LONG,ft=we.BSON_DATA_INT,at=we.BSON_DATA_DECIMAL128,lt=we.BSON_DATA_DBPOINTER,ct=we.BSON_DATA_DATE,ht=we.BSON_DATA_CODE_W_SCOPE,pt=we.BSON_DATA_CODE,dt=we.BSON_DATA_BOOLEAN,yt=we.BSON_DATA_BINARY,gt=we.BSON_DATA_ARRAY,_t=we.BSON_BINARY_SUBTYPE_UUID_NEW,bt=we.BSON_BINARY_SUBTYPE_UUID,Bt=we.BSON_BINARY_SUBTYPE_USER_DEFINED,Ot=we.BSON_BINARY_SUBTYPE_MD5,mt=we.BSON_BINARY_SUBTYPE_FUNCTION,St=we.BSON_BINARY_SUBTYPE_DEFAULT,Nt=we.BSON_BINARY_SUBTYPE_BYTE_ARRAY,vt=we.deserializeStream,At=we.calculateObjectSize,wt=we.deserialize,Et=we.serializeWithBufferAndIndex,Tt=we.serialize,Dt=we.setInternalBufferSize;return e.BSONRegExp=Ie,e.BSONSymbol=$e,e.BSON_BINARY_SUBTYPE_BYTE_ARRAY=Nt,e.BSON_BINARY_SUBTYPE_DEFAULT=St,e.BSON_BINARY_SUBTYPE_FUNCTION=mt,e.BSON_BINARY_SUBTYPE_MD5=Ot,e.BSON_BINARY_SUBTYPE_USER_DEFINED=Bt,e.BSON_BINARY_SUBTYPE_UUID=bt,e.BSON_BINARY_SUBTYPE_UUID_NEW=_t,e.BSON_DATA_ARRAY=gt,e.BSON_DATA_BINARY=yt,e.BSON_DATA_BOOLEAN=dt,e.BSON_DATA_CODE=pt,e.BSON_DATA_CODE_W_SCOPE=ht,e.BSON_DATA_DATE=ct,e.BSON_DATA_DBPOINTER=lt,e.BSON_DATA_DECIMAL128=at,e.BSON_DATA_INT=ft,e.BSON_DATA_LONG=st,e.BSON_DATA_MAX_KEY=ut,e.BSON_DATA_MIN_KEY=ot,e.BSON_DATA_NULL=it,e.BSON_DATA_NUMBER=nt,e.BSON_DATA_OBJECT=rt,e.BSON_DATA_OID=tt,e.BSON_DATA_REGEXP=et,e.BSON_DATA_STRING=Qe,e.BSON_DATA_SYMBOL=Ze,e.BSON_DATA_TIMESTAMP=Ge,e.BSON_DATA_UNDEFINED=We,e.BSON_INT32_MAX=Xe,e.BSON_INT32_MIN=He,e.BSON_INT64_MAX=Ke,e.BSON_INT64_MIN=Ve,e.Binary=Ce,e.Code=Je,e.DBRef=ze,e.Decimal128=De,e.Double=Le,e.EJSON=Fe,e.Int32=Re,e.Long=Me,e.LongWithoutOverridesClass=qe,e.Map=ke,e.MaxKey=xe,e.MinKey=Ue,e.ObjectID=Te,e.ObjectId=Ye,e.Timestamp=je,e.UUID=Pe,e.calculateObjectSize=At,e.default=Ee,e.deserialize=wt,e.deserializeStream=vt,e.serialize=Tt,e.serializeWithBufferAndIndex=Et,e.setInternalBufferSize=Dt,e.BufferPolyfill=b.Buffer,Object.defineProperty(e,"__esModule",{value:!0}),e}({});(()=>{const e=!("undefined"==typeof window);if(e&&window.HotPocket)return;if(!e){const e=require("util");TextEncoder=e.TextEncoder,TextDecoder=e.TextDecoder}const t="0.6.",r=237,n=new TextEncoder,i=new TextDecoder;let o=null,u=null,s=null,f=null,a=0;const l={json:"json",bson:"bson"};Object.freeze(l);const c={disconnect:"disconnect",contractOutput:"contract_output",connectionChange:"connection_change",unlChange:"unl_change",ledgerEvent:"ledger_event",healthEvent:"health_event"};Object.freeze(c);const h={unlChange:"unl_change",ledgerEvent:"ledger_event",healthEvent:"health_event"};Object.freeze(h);const p=async(e=null)=>{if(await S(),e){const t=b(e);if(t[0]!=r)throw"Invaid key type. 'ed' expected.";const n=new Uint8Array(33);return n[0]=r,n.set(t.slice(33),1),{privateKey:t,publicKey:n}}{const e=u.crypto_sign_keypair(),t=new Uint8Array(65);t[0]=r,t.set(e.privateKey,1);const n=new Uint8Array(33);return n[0]=r,n.set(e.publicKey,1),{privateKey:t,publicKey:n}}},d=async(t,r,n)=>{const i={contractId:null,contractVersion:null,trustedServerKeys:null,protocol:l.json,requiredConnectionCount:1,connectionTimeoutMs:5e3},u=n?{...i,...n}:i;if(!r)throw"clientKeys not specified.";if(""==u.contractId)throw"contractId not specified. Specify null to bypass contract id validation.";if(""==u.contractVersion)throw"contractVersion not specified. Specify null to bypass contract version validation.";if(!u.protocol||u.protocol!=l.json&&u.protocol!=l.bson)throw"Valid protocol not specified.";if(!u.requiredConnectionCount||0==u.requiredConnectionCount)throw"requiredConnectionCount must be greater than 0.";if(!u.connectionTimeoutMs||0==u.connectionTimeoutMs)throw"Connection timeout must be greater than 0.";await S(),await async function(){if(f)return;if(e&&window.blake3)f=window.blake3;else{if(e&&!window.blake3)return v||(v=new Promise((e=>{"undefined"==typeof BigUint64Array&&(BigUint64Array=function(e){}),"undefined"==typeof BigInt&&(BigInt=function(e){});import("https://cdn.jsdelivr.net/npm/blake3@2.1.4/browser-async.js").then((t=>{t.default().then((t=>{f=t,e()})).catch((t=>{console.error(t),e()}))})).catch((t=>{console.error(t),e()}))}))),void await v;e||(f=require("blake3"))}if(!f)throw"Blake3 reference not found."}(),function(){if(o)return;e&&window.WebSocket?o=window.WebSocket:e||(o=require("ws"));if(!o)throw"WebSocket reference not found."}(),u.protocol==l.bson&&await async function(){if(s)return;e?(N||(N=new Promise((e=>{setTimeout((()=>{s=window.BSON,window.Buffer=window.BSON.BufferPolyfill,e()}),0)}))),await N):e||(s=require("bson"));if(!s)throw"BSON reference not found."}();const a={};if(t&&t.forEach((e=>{const t=e.trim();t.length>0&&(a[t]=!0)})),0==Object.keys(a).length)throw"servers not specified.";if(u.requiredConnectionCount>Object.keys(a).length)throw"requiredConnectionCount is higher than no. of servers.";let c={};return u.trustedServerKeys&&u.trustedServerKeys.sort().forEach((e=>{const t=e.trim();t.length>0&&(c[t]=!0)})),0==Object.keys(c).length&&(c=null),new y(u.contractId,u.contractVersion,r,a,c,u.protocol,u.requiredConnectionCount,u.connectionTimeoutMs)};function y(e,t,r,n,i,o,u,s){let f=new m;const a=()=>i,l=e=>i=e,p=Object.keys(n).map((e=>({server:e,connection:null,lastActivity:0}))),d={};d[h.unlChange]=!!i,d[h.ledgerEvent]=!1,d[h.healthEvent]=!1;let y=0,_=null,b=0,B=null;const O=()=>{if(2==y)return;if(B=setTimeout((()=>{O()}),1e3),p.filter((e=>e.connection&&e.connection.isConnected())).length==u)return b=0,_&&_(!0),_=null,void(y=1);if(0==b)b=(new Date).getTime();else if((new Date).getTime()-b>s)return w(1,"Missing-connections timeout reached."),void this.close().then((()=>{_?(_(!1),_=null):f&&f.emit(c.disconnect)}));let n=p.filter((e=>e.connection)).length;if(n==u)return;const i=p.filter((e=>!e.connection&&(new Date).getTime()-e.lastActivity>3e3));for(i.sort(((e,t)=>e.lastActivity-t.lastActivity));n<u&&i.length>0;){const u=i.shift();u.connection=new g(e,t,r,u.server,a,l,o,s,f),u.lastActivity=(new Date).getTime(),u.connection.connect().then((e=>{if(e){f&&f.emit(c.connectionChange,u.server,"add");for(const[e,t]of Object.entries(d))t&&u.connection.subscribe(e)}else u.connection=null})),u.connection.onClose=()=>{u.connection=null,f&&f.emit(c.connectionChange,u.server,"remove")},n++}},S=async(e,t)=>{if(2==y)return await Promise.resolve();null==t&&(t=u);const r=p.filter((e=>e.connection&&e.connection.isConnected())).map((e=>e.connection)).slice(0,t),n=await Promise.all(r.map((t=>e(t))));return 1==t&&n.length<=1?0==n.length?null:n[0]:n},N=(e,t)=>{if(2==y)return Promise.resolve();null==t&&(t=u);const r=p.filter((e=>e.connection&&e.connection.isConnected())).map((e=>e.connection)).slice(0,t);return Promise.all(r.map((t=>e(t))))};this.connect=()=>{if(!(y>0))return b=(new Date).getTime(),O(),new Promise((e=>{_=e}))},this.close=async()=>{2!=y&&(y=2,B&&(clearTimeout(B),B=null),f.clear(c.connectionChange),f.clear(c.contractOutput),await Promise.all(p.filter((e=>e.connection)).map((e=>e.connection.close()))),p.forEach((e=>e.connection=null)))},this.on=(e,t)=>{f.on(e,t)},this.clear=e=>{f.clear(e)},this.submitContractInput=(e,t=null,r=null,n=!0)=>S((i=>i.submitContractInput(e,t,r,n)),1),this.submitContractReadRequest=(e,t=null,r=15e3)=>(t=t?t.toString():(new Date).getTime().toString(),S((n=>n.submitContractReadRequest(e,t,r)))),this.getStatus=()=>S((e=>e.getStatus())),this.getLcl=()=>S((e=>e.getLcl())),this.subscribe=e=>(d[e]=!0,N((t=>t.subscribe(e)))),this.unsubscribe=e=>(d[e]=!1,N((t=>t.unsubscribe(e)))),this.getLedgerBySeqNo=(e,t,r)=>S((n=>n.getLedgerBySeqNo(e,t,r)))}function g(r,s,a,h,p,d,y,g,m){const S=new _(a,l.json);let N=0,v=null,A=null,E=null,T=!1,D=null,I=null,x=null,U=null,R=[],L=[],j={},M={},P={};const Y=e=>{const t=f.createHash();return e.forEach((e=>t.update(e))),new Uint8Array(t.digest())},C=(e,t)=>{const r=[];let n=!1;for(let i of e)if(Array.isArray(i)){const e=C(i,n?null:t);1==e[0]&&(n=!0),r.push(e[1])}else{if(!t&&!i)return w(1,"Self hash encountered more than once in output hash tree."),[!1,null];i||(n=!0);const e=i?S.binaryDecode(i):t;r.push(e)}return[n,Y(r)]},z=(e,t)=>{const r=Y([a.publicKey,...S.spreadArrayField(e.outputs)]);if(!function(e,t){if(e.length!=t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}(r,S.binaryDecode(e.output_hash)))return w(1,"Contract output hash mismatch."),!1;const n=C(e.hash_tree,r);if(1==n[0]){return((e,t,r)=>{const n=Object.keys(r).length;if(0==n)return w(1,"Cannot validate outputs with empty unl."),!1;const i={};for(const n of t){const t=S.stringifyValue(n[0]),o=S.binaryDecode(n[0]),s=S.binaryDecode(n[1]);!i[t]&&r[t]&&u.crypto_sign_verify_detached(s,e,o.slice(1))&&(i[t]=!0)}return Object.keys(i).length/n>=.8})(n[1],e.unl_sig,t)}return!1},$=(e,t)=>{e=e.map((e=>S.deserializeValue(e))).sort();let r=p();if(r&&r[T]){r={};e.map((e=>S.stringifyValue(e))).forEach((e=>r[e]=!0)),d(r),w(0,"Updated trusted keys.")}t||m&&m.emit(c.unlChange,e)},k=async n=>{const o=e&&(N<2||y==l.json)?i.decode(n.data):n.data;let f;try{f=S.deserializeMessage(o)}catch(e){return w(1,e),w(0,"Exception deserializing: "),w(0,o||n),void(N<2&&this.close())}let a=!1;N<2?a=(e=>{if(0==N&&"user_challenge"==e.type&&e.hp_version&&e.contract_id){if(!e.hp_version.startsWith(t))return w(1,`Incompatible HotPocket server version. Expected:0.6.* Got:${e.hp_version}`),!1;if(!e.contract_id)return w(1,"Server did not specify contract id."),!1;if(r&&e.contract_id!=r)return w(1,`Contract id mismatch. Expected:${r} Got:${e.contract_id}`),!1;if(!e.contract_version)return w(1,"Server did not specify contract version."),!1;if(s&&e.contract_version!=s)return w(1,`Contract version mismatch. Expected:${s} Got:${e.contract_version}`),!1;A=e.contract_id,E=e.contract_version,v=B(u.randombytes_buf(16));const n=S.createUserChallengeResponse(e.challenge,v,y);return V(S.serializeObject(n)),N=1,!0}if(1==N&&v&&"server_challenge_response"==e.type&&e.sig&&e.pubkey){const t=p();if(t&&!t[e.pubkey])return w(1,`${h} is not among the trusted servers.`),!1;const r=v+A+E,n=e.pubkey.substring(2);return u.crypto_sign_verify_detached(b(e.sig),r,b(n))?(clearTimeout(I),I=null,v=null,T=e.pubkey,N=2,$(e.unl,!0),S.useProtocol(y),x&&x(!0),w(0,`Connected to ${h}`),!0):(w(1,`${h} challenge response verification failed.`),!1)}return w(1,`${h} invalid message during handshake. Connection status:${N}`),w(0,e),!1})(f):2==N&&(a=(e=>{if("contract_read_response"==e.type){const t=e.reply_for,r=M[t];r&&(clearTimeout(r.timer),r.resolver(S.deserializeValue(e.content)),delete M[t])}else if("contract_input_status"==e.type){const t=S.stringifyValue(e.input_hash),r=j[t];if(r){const n={status:e.status};"accepted"==e.status?(n.ledgerSeqNo=e.ledger_seq_no,n.ledgerHash=S.deserializeValue(e.ledger_hash)):n.reason=e.reason,r(n),delete j[t]}}else if("contract_output"==e.type){if(m){const t=p();!t||z(e,t)?m.emit(c.contractOutput,{ledgerSeqNo:e.ledger_seq_no,ledgerHash:S.deserializeValue(e.ledger_hash),outputHash:S.deserializeValue(e.output_hash),outputs:e.outputs.map((e=>S.deserializeValue(e)))}):w(1,"Output validation failed.")}}else if("stat_response"==e.type)R.forEach((t=>{t({hpVersion:e.hp_version,ledgerSeqNo:e.ledger_seq_no,ledgerHash:S.deserializeValue(e.ledger_hash),voteStatus:e.vote_status,roundTime:e.round_time,contractExecutionEnabled:e.contract_execution_enabled,readRequestsEnabled:e.read_requests_enabled,isFullHistoryNode:e.is_full_history_node,weaklyConnected:e.weakly_connected,currentUnl:e.current_unl.map((e=>S.deserializeValue(e))),peers:e.peers})})),R=[];else if("lcl_response"==e.type)L.forEach((t=>{t({ledgerSeqNo:e.ledger_seq_no,ledgerHash:S.deserializeValue(e.ledger_hash)})})),L=[];else if("unl_change"==e.type)$(e.unl,!1);else if("ledger_event"==e.type){const t={event:e.event};"ledger_created"==t.event?t.ledger=S.deserializeLedger(e.ledger):"vote_status"==t.event&&(t.voteStatus=e.vote_status),m.emit(c.ledgerEvent,t)}else if("health_event"==e.type){const t=S.deserializeHealthEvent(e);m.emit(c.healthEvent,t)}else{if("ledger_query_result"!=e.type)return w(1,"Received unrecognized contract message: type:"+e.type),!1;{const t=P[e.reply_for];if(t){const r=e.results.map((e=>{const t=S.deserializeLedger(e);return e.inputs&&(t.inputs=e.inputs.map((e=>({pubkey:S.deserializeValue(e.pubkey),hash:S.deserializeValue(e.hash),nonce:e.nonce,blob:S.deserializeValue(e.blob)})))),e.outputs&&(t.outputs=e.outputs.map((e=>({pubkey:S.deserializeValue(e.pubkey),hash:S.deserializeValue(e.hash),blobs:e.blobs.map((e=>S.deserializeValue(e)))})))),t}));"seq_no"==t.type&&t.resolver(r.length>0?r[0]:null),delete P[e.reply_for]}}}return!0})(f)),a||N<2&&this.close()},J=()=>{D.addEventListener("message",k),D.addEventListener("close",q),I=setTimeout((()=>{this.close(),I=null}),g)},q=()=>{w(0,U?"Closing connection to "+h:"Disconnected from "+h),m=null,I&&(clearTimeout(I),I=null),x&&x(!1),x=null,R.forEach((e=>e(null))),R=[],Object.values(j).forEach((e=>e({status:"failed",reason:"connection_error"}))),j={},Object.values(M).forEach((e=>{clearTimeout(e.timer),e.resolver(null)})),M={},this.onClose&&this.onClose(),U&&U()},F=e=>{x&&x(!1)},V=e=>{O(e)?D.send(n.encode(e)):D.send(e)};this.isConnected=()=>2==N,this.connect=()=>(w(0,"Connecting to "+h),new Promise((t=>{D=e?new o(h):new o(h,{rejectUnauthorized:!1}),e&&(D.binaryType="arraybuffer"),x=t,D.addEventListener("error",F),D.addEventListener("open",J)}))),this.close=()=>D.readyState==o.OPEN?new Promise((e=>{U=e,D.close()})):(D.close(),Promise.resolve()),this.getStatus=()=>{if(2!=N)return Promise.resolve(null);const e=new Promise((e=>{R.push(e)}));if(1==R.length){const e=S.createStatusRequest();V(S.serializeObject(e))}return e},this.getLcl=()=>{if(2!=N)return Promise.resolve(null);const e=new Promise((e=>{L.push(e)}));if(1==L.length){const e=S.createLclRequest();V(S.serializeObject(e))}return e},this.submitContractInput=async(e,t,r,n)=>{if(2!=N)throw"Connection error.";if(0==r)throw"Max ledger seq no. or offset cannot be 0.";if(!n&&!r)throw"Max ledger seq. no not specified.";if(t&&(!Number.isInteger(t)||t<=0))throw"Input nonce must be a positive integer.";if(t||(t=(new Date).getTime()),n){r||(r=10);const e=await this.getLcl();if(!e)throw"Error retrieving last closed ledger.";r+=e.ledgerSeqNo}const i=S.createContractInputComponents(e,t,r),o=S.stringifyValue(i.hash),u=new Promise((e=>{j[o]=e})),s=S.createContractInputMessage(i.container,i.sig);return V(S.serializeObject(s)),{hash:S.binaryEncode(i.hash),submissionStatus:u}},this.submitContractReadRequest=(e,t,r)=>2!=N?Promise.resolve():new Promise((n=>{const i=setTimeout((()=>{n(null),delete M[t]}),r);M[t]={resolver:n,timer:i};const o=S.createReadRequest(e,t);V(S.serializeObject(o))})),this.subscribe=e=>{if(2!=N)return Promise.resolve();const t=S.createSubscriptionRequest(e,!0);return V(S.serializeObject(t)),Promise.resolve()},this.unsubscribe=e=>{if(2!=N)return Promise.resolve();const t=S.createSubscriptionRequest(e,!1);return V(S.serializeObject(t)),Promise.resolve()},this.getLedgerBySeqNo=(e,t,r)=>{if(2!=N)return Promise.resolve(null);const n={seq_no:S.serializeNumber(e)},i=S.createLedgerQuery("seq_no",n,t,r),o=new Promise((e=>{P[i.id]={type:"seq_no",resolver:e}}));return V(S.serializeObject(i)),o}}function _(e,t){this.useProtocol=e=>{t=e},this.binaryEncode=e=>t==l.json?B(e):Buffer.isBuffer(e)?e:Buffer.from(e),this.binaryDecode=e=>t==l.json?b(e):new Uint8Array(e.buffer),this.serializeObject=e=>t==l.json?JSON.stringify(e):s.serialize(e),this.deserializeMessage=e=>t==l.json?JSON.parse(e):s.deserialize(e),this.serializeInput=e=>t==l.json?O(e)?e:e.toString():Buffer.isBuffer(e)?e:Buffer.from(e),this.deserializeValue=e=>t==l.json?e:e.buffer,this.serializeNumber=e=>t==l.json?e:s.Long.fromNumber(e),this.stringifyValue=e=>{if(O(e))return e;if(e instanceof Uint8Array)return B(e);if(e.buffer)return B(new Uint8Array(e.buffer));throw"Cannot stringify signature."},this.spreadArrayField=e=>t==l.json?e:e.map((e=>e.buffer)),this.createUserChallengeResponse=(t,r,n)=>{const i=u.crypto_sign_detached(t,e.privateKey.slice(1));return{type:"user_challenge_response",sig:this.binaryEncode(i),pubkey:this.binaryEncode(e.publicKey),server_challenge:r,protocol:n}},this.createContractInputComponents=(t,r,n)=>{if(0==t.length)return null;const i={input:this.serializeInput(t),nonce:this.serializeNumber(r),max_ledger_seq_no:this.serializeNumber(n)},o=this.serializeObject(i),s=u.crypto_sign_detached(o,e.privateKey.slice(1));return{hash:new Uint8Array(f.hash(s)),container:o,sig:s}},this.createContractInputMessage=(e,t)=>({type:"contract_input",input_container:e,sig:this.binaryEncode(t)}),this.createReadRequest=(e,t)=>0==e.length?null:{type:"contract_read_request",id:t,content:this.serializeInput(e)},this.createStatusRequest=()=>({type:"stat"}),this.createLclRequest=()=>({type:"lcl"}),this.createSubscriptionRequest=(e,t)=>({type:"subscription",channel:e,enabled:t}),this.createLedgerQuery=(e,t,r,n)=>{const i=[];return r&&i.push("inputs"),n&&i.push("outputs"),{type:"ledger_query",id:"query_"+e+"_"+(new Date).getTime().toString(),filter_by:e,params:t,include:i}},this.deserializeLedger=e=>({seqNo:e.seq_no,timestamp:e.timestamp,hash:this.deserializeValue(e.hash),prevHash:this.deserializeValue(e.prev_hash),stateHash:this.deserializeValue(e.state_hash),configHash:this.deserializeValue(e.config_hash),userHash:this.deserializeValue(e.user_hash),inputHash:this.deserializeValue(e.input_hash),outputHash:this.deserializeValue(e.output_hash)}),this.deserializeHealthEvent=e=>"proposal"===e.event?{event:e.event,commLatency:e.comm_latency,readLatency:e.read_latency,batchSize:e.batch_size}:"connectivity"===e.event?{event:e.event,peerCount:e.peer_count,weaklyConnected:e.weakly_connected}:void 0}function b(e){return new Uint8Array(e.match(/.{1,2}/g).map((e=>parseInt(e,16))))}function B(e){return e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"")}function O(e){return"string"==typeof e||e instanceof String}function m(){const e={};this.on=(t,r)=>{e[t]||(e[t]=[]),e[t].push(r)},this.emit=(t,...r)=>{e[t]&&e[t].forEach((e=>e(...r)))},this.clear=t=>{t?delete e[t]:Object.keys(e).forEach((t=>delete e[t]))}}async function S(){if(e?u||(u=window.sodium||await new Promise((e=>{window.sodium={onload:async t=>e(t)}}))):(u||(u=require("libsodium-wrappers")),await u.ready),!u)throw"Sodium reference not found. Please include sodium js lib in browser scripts."}let N=null;let v=null;function A(e){a=e}function w(e,t){e>=a&&console.log(t)}e?window.HotPocket={generateKeys:p,createClient:d,events:c,notificationChannels:h,protocols:l,setLogLevel:A}:module.exports={generateKeys:p,createClient:d,events:c,notificationChannels:h,protocols:l,setLogLevel:A}})();
Code: Select all
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>HotPocket OTP-Gated Upload</title>
<style>
body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background: #f8fafc;
color: #111827;
margin: 0;
padding: 2rem;
}
.wrap {
max-width: 980px;
margin: 0 auto;
}
.card {
background: white;
border-radius: 14px;
padding: 1.5rem;
box-shadow: 0 8px 24px rgba(0,0,0,0.06);
margin-bottom: 1rem;
border: 1px solid #e5e7eb;
}
.hidden {
display: none !important;
}
h1, h2, h3 {
margin-top: 0;
}
label {
display: block;
font-weight: 700;
margin-top: 1rem;
margin-bottom: 0.35rem;
}
input,
textarea,
button,
select {
width: 100%;
box-sizing: border-box;
padding: 0.75rem;
border-radius: 8px;
border: 1px solid #d1d5db;
font-size: 1rem;
}
textarea {
min-height: 80px;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
resize: vertical;
}
button {
border: 0;
background: #4f46e5;
color: white;
cursor: pointer;
font-weight: 800;
margin-top: 1rem;
}
button:hover {
background: #6366f1;
}
button:disabled {
background: #9ca3af;
cursor: not-allowed;
}
.danger {
background: #dc2626;
}
.danger:hover {
background: #ef4444;
}
.success {
background: #059669;
}
.success:hover {
background: #10b981;
}
.secondary {
background: #374151;
}
.secondary:hover {
background: #4b5563;
}
.row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
}
.row-3 {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 1rem;
}
.small {
color: #6b7280;
font-size: 0.92rem;
line-height: 1.45;
}
.warning {
background: #fffbeb;
border: 1px solid #fcd34d;
color: #92400e;
border-radius: 10px;
padding: 0.85rem;
margin-top: 1rem;
font-size: 0.95rem;
line-height: 1.45;
}
.ok {
background: #ecfdf5;
border: 1px solid #6ee7b7;
color: #065f46;
border-radius: 10px;
padding: 0.85rem;
margin-top: 1rem;
font-size: 0.95rem;
line-height: 1.45;
}
.qr-box {
background: white;
border: 1px solid #e5e7eb;
border-radius: 14px;
padding: 12px;
margin-top: 1rem;
min-height: 280px;
display: flex;
align-items: center;
justify-content: center;
overflow: auto;
}
.qr-box img {
width: 260px;
height: 260px;
image-rendering: pixelated;
}
.qr-fallback {
width: 100%;
white-space: pre-wrap;
word-break: break-word;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
background: #111827;
color: #e5e7eb;
border-radius: 10px;
padding: 1rem;
}
code {
background: #eef2ff;
padding: 0.1rem 0.3rem;
border-radius: 4px;
}
pre {
background: #111827;
color: #e5e7eb;
padding: 1rem;
border-radius: 10px;
min-height: 260px;
max-height: 480px;
overflow: auto;
white-space: pre-wrap;
}
.uploads-box {
margin-top: 1rem;
border: 1px solid #e5e7eb;
border-radius: 10px;
overflow: hidden;
}
.upload-row {
display: grid;
grid-template-columns: 1fr 110px 120px 130px;
gap: 0.75rem;
align-items: center;
padding: 0.75rem;
border-bottom: 1px solid #e5e7eb;
background: #fff;
}
.upload-row:last-child {
border-bottom: 0;
}
.upload-name {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
word-break: break-all;
}
.upload-size {
color: #6b7280;
font-size: 0.9rem;
text-align: right;
}
.upload-download {
background: #059669;
margin: 0;
padding: 0.5rem;
}
.upload-delete {
background: #dc2626;
margin: 0;
padding: 0.5rem;
}
.upload-delete.confirming {
background: #b45309;
}
.empty-list {
padding: 1rem;
color: #6b7280;
background: #fff;
}
.user-row,
.unl-row {
display: grid;
grid-template-columns: 1fr 120px 90px;
gap: 0.75rem;
align-items: center;
padding: 0.75rem;
border-bottom: 1px solid #e5e7eb;
background: #fff;
}
.user-row:last-child {
border-bottom: 0;
}
.user-key {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
word-break: break-all;
}
.user-role {
font-weight: 800;
}
.user-inactive {
color: #9ca3af;
text-decoration: line-through;
}
@media (max-width: 760px) {
body {
padding: 1rem;
}
.row,
.row-3,
.upload-row,
.user-row {
grid-template-columns: 1fr;
}
.upload-size {
text-align: left;
}
}
</style>
<script src="./qrcode.js"></script>
<script src="./sodium.js"></script>
<script src="./hotpocket-js-client.min.js"></script>
</head>
<body>
<div class="wrap">
<div class="card">
<h1>HotPocket OTP-Gated Upload</h1>
<p class="small">
First connect bootstraps the head admin. Next connects use an OTP-encrypted admin envelope to authorize this browser's HotPocket key.
</p>
<label>HotPocket websocket endpoint</label>
<input id="endpoint" value="" />
<div class="row">
<div>
<label>This browser/device public key</label>
<textarea id="publicKey" readonly></textarea>
</div>
<div>
<label>Authorization status</label>
<textarea id="authStatusBox" readonly>No connection yet.</textarea>
</div>
</div>
<div class="row">
<button id="connectBtn">Connect</button>
<button id="regenKeyBtn" class="danger">Generate New Browser Key</button>
</div>
<p class="small">
This browser/device key is not the head admin key. It is the temporary key the contract whitelists after OTP-envelope login.
</p>
</div>
<div id="bootstrapCard" class="card hidden">
<h2>First setup: create head admin</h2>
<div class="warning">
No head admin exists yet. Enter/generate the head admin public key and OTP secret.
The contract stores the public key and OTP secret. It does not receive the admin private key during bootstrap.
</div>
<div class="row">
<button id="generateAdminKeyBtn">Generate Head Admin Keypair</button>
<button id="generateOtpBtn">Generate OTP Secret</button>
</div>
<label>Head admin public key</label>
<textarea id="bootstrapAdminPublicKey" placeholder="ed..."></textarea>
<label>Head admin private key, local only; copy/save it before leaving</label>
<textarea id="bootstrapAdminPrivateKey" placeholder="ed..." readonly></textarea>
<label>OTP secret</label>
<textarea id="bootstrapOtpSecret" placeholder="Base32 OTP secret"></textarea>
<label>Optional setup code</label>
<input id="bootstrapSetupCode" placeholder="Only needed if BOOTSTRAP_SETUP_CODE_HASH is configured" />
<button id="submitBootstrapBtn" class="success">Create Head Admin</button>
</div>
<div id="loginCard" class="card hidden">
<h2>Authorize this browser/device</h2>
<p class="small">
Scan/copy this request into EV Signer. EV Signer should create a fresh <code>evadmin:v1:</code> envelope using the current OTP code and the head admin private key.
</p>
<div class="row-3">
<button id="newLoginRequestBtn">New Login Request</button>
<button id="copyLoginRequestBtn" class="secondary">Copy Request JSON</button>
<button id="submitEnvelopeBtn" class="success">Submit Envelope</button>
<button id="checkAuthBtn" class="secondary">Check Authorization</button>
</div>
<div id="loginQr" class="qr-box">
<div class="small">Connect first.</div>
</div>
<label>Login request JSON</label>
<textarea id="loginRequestJson" readonly></textarea>
<label>Paste EV Signer envelope here</label>
<textarea id="adminEnvelopeInput" placeholder="evadmin:v1:..."></textarea>
<div class="warning">
Dev shortcut below: this lets this page act as the signer while testing. In production, EV Signer should generate the envelope outside this upload page.
</div>
<label>Dev signer: head admin private key</label>
<textarea id="devAdminPrivateKey" placeholder="ed..."></textarea>
<label>Dev signer: OTP secret</label>
<textarea id="devOtpSecret" placeholder="Base32 OTP secret"></textarea>
<div class="row">
<button id="devMakeEnvelopeBtn" class="secondary">Create Envelope Locally</button>
<button id="devMakeAndSubmitBtn" class="success">Create Envelope + Authorize</button>
</div>
</div>
<div id="usersCard" class="card hidden">
<h2>Users / Signers</h2>
<p id="usersRoleHint" class="small">
Head admins can add/remove users and change roles. Admins can use uploads but cannot manage users.
</p>
<div class="warning">
Safety rules: you cannot add/update, remove, or change the role of your own signer public key.
The original bootstrap head admin is immutable and cannot be updated, removed, or demoted.
</div>
<div class="row">
<button id="listUsersBtn" class="secondary">List Users</button>
<button id="refreshUsersBtn" class="secondary">Refresh Users</button>
</div>
<label>Signer public key</label>
<textarea id="manageUserPublicKey" placeholder="ed..."></textarea>
<label>Role</label>
<select id="manageUserRole">
<option value="admin">admin</option>
<option value="head-admin">head-admin</option>
</select>
<label>Signer OTP secret</label>
<textarea id="manageUserOtpSecret" placeholder="Base32 OTP secret for this signer"></textarea>
<p class="small">
Each signer has a separate OTP secret. The signer must save this OTP secret in EV Signer with their own private key.
</p>
<div class="row">
<button id="generateUserOtpBtn" class="secondary">Generate Signer OTP Secret</button>
<button id="clearUserOtpBtn" class="secondary">Clear OTP Field</button>
</div>
<div class="row-3">
<button id="addUserBtn" class="success">Add / Update User</button>
<button id="setUserRoleBtn" class="secondary">Set Role</button>
<button id="removeUserBtn" class="danger">Remove User</button>
</div>
<div id="usersGui" class="uploads-box">
<div class="empty-list">No users loaded yet.</div>
</div>
</div>
<div id="unlCard" class="card hidden">
<h2>UNL Manager</h2>
<p class="small">
Head admins can directly add, remove, and list UNL public keys. There is no minimum-UNL guard in this UI.
</p>
<div class="row">
<button id="listUnlsBtn" class="secondary">List UNLs</button>
</div>
<label>UNL public key</label>
<textarea id="manageUnlPublicKey" placeholder="ed..."></textarea>
<div class="row">
<div>
<label>Optional peer domain/IP</label>
<input id="manageUnlDomain" placeholder="example.com or 1.2.3.4" />
</div>
<div>
<label>Optional peer port</label>
<input id="manageUnlPeerPort" placeholder="22861" />
</div>
</div>
<p class="small">
Domain/IP and peer port are optional for pure UNL edits. Supply them when you also want known_peers updated and live peer retries flushed.
</p>
<div class="row">
<button id="addUnlBtn" class="success">Add UNL</button>
<button id="removeUnlBtn" class="danger">Remove UNL</button>
</div>
<div id="unlsGui" class="uploads-box">
<div class="empty-list">No UNLs loaded yet.</div>
</div>
</div>
<div class="card">
<h2>Select Files</h2>
<label>Target directory inside uploads/</label>
<input id="targetDir" placeholder="Example: images or docs/reports" />
<p class="small">
Empty means upload directly into <code>uploads/</code>.
Typing <code>images</code> uploads selected files into <code>uploads/images/</code>.
</p>
<label>Files</label>
<input id="fileInput" type="file" multiple />
<button id="uploadBtn" disabled>Upload</button>
<button id="listBtn" disabled>List Uploads</button>
<div id="uploadsGui" class="uploads-box">
<div class="empty-list">No uploads loaded yet.</div>
</div>
</div>
<div class="card">
<h2>Log</h2>
<pre id="log"></pre>
</div>
</div>
<script type="module">
const BSON =
window.BSON ||
window.bson?.BSON ||
window.bson;
if (!BSON || !BSON.serialize || !BSON.deserialize) {
throw new Error('bson.bundle.min.js is not loaded correctly.');
}
const CHUNK_SIZE = 2000 * 1024;
const STORAGE_KEY = 'everstoringUploadDevicePrivateKeyHex';
const ENVELOPE_PREFIX = 'evadmin:v1:';
const OTP_CODE_DIGITS = 24;
const ENVELOPE_ITERATIONS = 300000;
const DEFAULT_AUTH_TTL_SECONDS = 24 * 60 * 60;
const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
let client = null;
let connected = false;
let authorized = false;
let currentRole = null;
let currentSignerPublicKey = null;
let founderPublicKey = null;
let founderProtectionEnabled = true;
let userKeyPair = null;
let currentLoginRequest = null;
let authPollTimer = null;
let authPollBusy = false;
let authPollStartedAt = 0;
const AUTH_POLL_INTERVAL_MS = 4000;
const AUTH_POLL_MAX_MS = 3 * 60 * 1000;
const pending = new Map();
const pendingActions = new Map();
const UPLOAD_DELETE_REFRESH_DELAY_MS = 800;
const UPLOAD_LIST_MIN_INTERVAL_MS = 8000;
let activeDeleteCount = 0;
let uploadsRefreshNeeded = false;
let uploadsRefreshTimer = null;
let uploadsRefreshInFlight = false;
let lastUploadsRefreshAt = 0;
const endpointEl = document.getElementById('endpoint');
const publicKeyEl = document.getElementById('publicKey');
const authStatusBox = document.getElementById('authStatusBox');
const connectBtn = document.getElementById('connectBtn');
const regenKeyBtn = document.getElementById('regenKeyBtn');
const bootstrapCard = document.getElementById('bootstrapCard');
const generateAdminKeyBtn = document.getElementById('generateAdminKeyBtn');
const generateOtpBtn = document.getElementById('generateOtpBtn');
const bootstrapAdminPublicKeyEl = document.getElementById('bootstrapAdminPublicKey');
const bootstrapAdminPrivateKeyEl = document.getElementById('bootstrapAdminPrivateKey');
const bootstrapOtpSecretEl = document.getElementById('bootstrapOtpSecret');
const bootstrapSetupCodeEl = document.getElementById('bootstrapSetupCode');
const submitBootstrapBtn = document.getElementById('submitBootstrapBtn');
const loginCard = document.getElementById('loginCard');
const loginQr = document.getElementById('loginQr');
const loginRequestJsonEl = document.getElementById('loginRequestJson');
const adminEnvelopeInput = document.getElementById('adminEnvelopeInput');
const newLoginRequestBtn = document.getElementById('newLoginRequestBtn');
const copyLoginRequestBtn = document.getElementById('copyLoginRequestBtn');
const submitEnvelopeBtn = document.getElementById('submitEnvelopeBtn');
const checkAuthBtn = document.getElementById('checkAuthBtn');
const devAdminPrivateKeyEl = document.getElementById('devAdminPrivateKey');
const devOtpSecretEl = document.getElementById('devOtpSecret');
const devMakeEnvelopeBtn = document.getElementById('devMakeEnvelopeBtn');
const devMakeAndSubmitBtn = document.getElementById('devMakeAndSubmitBtn');
const usersCard = document.getElementById('usersCard');
const usersRoleHint = document.getElementById('usersRoleHint');
const usersGui = document.getElementById('usersGui');
const manageUserPublicKeyEl = document.getElementById('manageUserPublicKey');
const manageUserRoleEl = document.getElementById('manageUserRole');
const manageUserOtpSecretEl = document.getElementById('manageUserOtpSecret');
const generateUserOtpBtn = document.getElementById('generateUserOtpBtn');
const clearUserOtpBtn = document.getElementById('clearUserOtpBtn');
const listUsersBtn = document.getElementById('listUsersBtn');
const refreshUsersBtn = document.getElementById('refreshUsersBtn');
const addUserBtn = document.getElementById('addUserBtn');
const setUserRoleBtn = document.getElementById('setUserRoleBtn');
const removeUserBtn = document.getElementById('removeUserBtn');
const unlCard = document.getElementById('unlCard');
const unlsGui = document.getElementById('unlsGui');
const manageUnlPublicKeyEl = document.getElementById('manageUnlPublicKey');
const manageUnlDomainEl = document.getElementById('manageUnlDomain');
const manageUnlPeerPortEl = document.getElementById('manageUnlPeerPort');
const listUnlsBtn = document.getElementById('listUnlsBtn');
const addUnlBtn = document.getElementById('addUnlBtn');
const removeUnlBtn = document.getElementById('removeUnlBtn');
const targetDirEl = document.getElementById('targetDir');
const fileInputEl = document.getElementById('fileInput');
const uploadBtn = document.getElementById('uploadBtn');
const listBtn = document.getElementById('listBtn');
const logEl = document.getElementById('log');
connectBtn.addEventListener('click', connect);
regenKeyBtn.addEventListener('click', regenerateBrowserKey);
generateAdminKeyBtn.addEventListener('click', generateAdminKeypair);
generateOtpBtn.addEventListener('click', generateBootstrapOtpSecret);
submitBootstrapBtn.addEventListener('click', submitBootstrap);
newLoginRequestBtn.addEventListener('click', createAndShowLoginRequest);
copyLoginRequestBtn.addEventListener('click', copyLoginRequest);
submitEnvelopeBtn.addEventListener('click', submitEnvelopeFromText);
checkAuthBtn.addEventListener('click', function () {
refreshAuthStatusFromContract(false);
});
devMakeEnvelopeBtn.addEventListener('click', devCreateEnvelopeOnly);
devMakeAndSubmitBtn.addEventListener('click', devCreateEnvelopeAndSubmit);
uploadBtn.addEventListener('click', uploadSelectedFiles);
listBtn.addEventListener('click', () => listUploads(false));
listUsersBtn.addEventListener('click', () => listUsers(false));
refreshUsersBtn.addEventListener('click', () => listUsers(false));
addUserBtn.addEventListener('click', addUserFromForm);
setUserRoleBtn.addEventListener('click', setUserRoleFromForm);
removeUserBtn.addEventListener('click', removeUserFromForm);
listUnlsBtn.addEventListener('click', () => listUnls(false));
addUnlBtn.addEventListener('click', addUnlFromForm);
removeUnlBtn.addEventListener('click', removeUnlFromForm);
generateUserOtpBtn.addEventListener('click', generateManagedUserOtpSecret);
clearUserOtpBtn.addEventListener('click', function () {
manageUserOtpSecretEl.value = '';
});
init();
async function init() {
try {
await populateEndpoint();
await ensureSodiumReady();
await loadOrCreateBrowserKeypair();
log('Ready.');
} catch (err) {
log('Init failed: ' + stringifyError(err));
}
}
async function populateEndpoint() {
if (endpointEl.value.trim()) {
return;
}
try {
const response = await fetch('/contract/runtime-config', {
cache: 'no-store'
});
if (!response.ok) {
throw new Error(`runtime-config HTTP ${response.status}`);
}
const cfg = await response.json();
if (!cfg.localUserPort) {
throw new Error('runtime-config did not include localUserPort');
}
const protocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
const hostname = location.hostname;
endpointEl.value = `${protocol}//${hostname}:${cfg.localUserPort}`;
log(`Endpoint populated: ${endpointEl.value}`);
} catch (err) {
log(`Could not auto-populate endpoint: ${stringifyError(err)}`);
}
}
function log(message) {
const line = `[${new Date().toLocaleTimeString()}] ${message}`;
logEl.textContent += line + '\n';
logEl.scrollTop = logEl.scrollHeight;
}
function show(el) {
el.classList.remove('hidden');
}
function hide(el) {
el.classList.add('hidden');
}
function setAuthorized(value, statusText = '') {
authorized = !!value;
uploadBtn.disabled = !authorized;
listBtn.disabled = !authorized;
if (!authorized) {
currentRole = null;
hide(usersCard);
hide(unlCard);
}
authStatusBox.value = statusText || (authorized ? 'Authorized.' : 'Not authorized.');
}
function disconnectClient() {
stopAuthPoll();
if (client) {
try {
client.close();
} catch {}
}
client = null;
connected = false;
setAuthorized(false, 'Disconnected.');
connectBtn.textContent = 'Connect';
hide(loginCard);
hide(bootstrapCard);
}
function stringifyError(err) {
if (!err) return 'Unknown error';
if (typeof err === 'string') return err;
if (err.message) return err.message;
return JSON.stringify(err);
}
async function ensureSodiumReady() {
if (!window.sodium) {
throw new Error('libsodium was not loaded.');
}
if (window.sodium.ready) {
await window.sodium.ready;
}
if (typeof window.HotPocket === 'undefined' || !window.HotPocket.generateKeys) {
throw new Error('hotpocket-js-client.min.js was not loaded.');
}
}
function bytesToHex(value) {
if (typeof value === 'string') {
return normalizePossibleEdHex(value, 'any');
}
let bytes;
if (value instanceof Uint8Array) {
bytes = value;
} else if (value instanceof ArrayBuffer) {
bytes = new Uint8Array(value);
} else if (Array.isArray(value)) {
bytes = new Uint8Array(value);
} else if (value && value.data && Array.isArray(value.data)) {
bytes = new Uint8Array(value.data);
} else {
throw new Error('Unsupported bytes format.');
}
return Array.from(bytes)
.map(byte => byte.toString(16).padStart(2, '0'))
.join('');
}
function normalizePossibleEdHex(value, kind = 'any') {
let hex = String(value || '').trim().toLowerCase();
if (hex.startsWith('ed')) {
hex = hex.slice(2);
}
if (hex.startsWith('ed')) {
hex = hex.slice(2);
}
if (!/^[0-9a-f]+$/.test(hex)) {
throw new Error(`Invalid ${kind} key hex.`);
}
if (kind === 'public' && hex.length !== 64) {
throw new Error(`Invalid public key length: got ${hex.length}, expected 64 hex chars.`);
}
if (kind === 'private' && hex.length !== 128) {
throw new Error(`Invalid private key length: got ${hex.length}, expected 128 hex chars.`);
}
return `ed${hex}`;
}
function normalizeHotPocketPublicKey(value) {
return normalizePossibleEdHex(value, 'public');
}
function normalizeHotPocketPrivateKey(value) {
return normalizePossibleEdHex(value, 'private');
}
async function loadOrCreateBrowserKeypair() {
const savedPrivateKeyHex = localStorage.getItem(STORAGE_KEY);
if (savedPrivateKeyHex) {
userKeyPair = await window.HotPocket.generateKeys(savedPrivateKeyHex);
log('Loaded saved browser/device keypair.');
} else {
userKeyPair = await window.HotPocket.generateKeys();
const privateKeyHex = bytesToHex(userKeyPair.privateKey);
localStorage.setItem(STORAGE_KEY, privateKeyHex);
log('Generated new browser/device keypair.');
}
publicKeyEl.value = normalizeHotPocketPublicKey(bytesToHex(userKeyPair.publicKey));
}
async function regenerateBrowserKey() {
try {
if (connected) {
disconnectClient();
}
userKeyPair = await window.HotPocket.generateKeys();
const privateKeyHex = bytesToHex(userKeyPair.privateKey);
localStorage.setItem(STORAGE_KEY, privateKeyHex);
publicKeyEl.value = normalizeHotPocketPublicKey(bytesToHex(userKeyPair.publicKey));
setAuthorized(false, 'New browser/device key generated. Connect and authorize it.');
log('Generated and saved new browser/device keypair.');
} catch (err) {
log('Browser key generation failed: ' + stringifyError(err));
}
}
async function connect() {
try {
if (connected && client) {
disconnectClient();
return;
}
await ensureSodiumReady();
if (!userKeyPair) {
await loadOrCreateBrowserKeypair();
}
const endpoint = endpointEl.value.trim();
if (!endpoint) {
throw new Error('Endpoint is required.');
}
client = await window.HotPocket.createClient(
[endpoint],
userKeyPair,
{
protocol: window.HotPocket.protocols.bson,
requiredConnectionCount: 1,
connectionTimeoutMs: 10000
}
);
client.on(window.HotPocket.events.contractOutput, handleContractOutput);
client.on(window.HotPocket.events.disconnect, () => {
connected = false;
setAuthorized(false, 'Disconnected by server.');
connectBtn.textContent = 'Connect';
log('Disconnected by server.');
});
const ok = await client.connect();
if (!ok) {
throw new Error('Failed to connect.');
}
connected = true;
connectBtn.textContent = 'Disconnect';
setAuthorized(false, 'Connected. Checking auth status...');
log('Connected. Checking auth status.');
const status = await submitActionMessage({
type: 'auth-status'
});
handleAuthStatus(status);
} catch (err) {
log('Connect failed: ' + stringifyError(err));
disconnectClient();
}
}
function stopAuthPoll() {
if (authPollTimer) {
clearInterval(authPollTimer);
authPollTimer = null;
}
authPollBusy = false;
authPollStartedAt = 0;
}
function startAuthPoll() {
if (authPollTimer) {
return;
}
authPollStartedAt = Date.now();
authPollTimer = setInterval(function () {
if (Date.now() - authPollStartedAt > AUTH_POLL_MAX_MS) {
stopAuthPoll();
log('Authorization check timed out. Press Check Authorization or New Login Request.');
return;
}
refreshAuthStatusFromContract(true);
}, AUTH_POLL_INTERVAL_MS);
}
async function refreshAuthStatusFromContract(silent) {
silent = silent === true;
if (!connected || !client || authPollBusy) {
return;
}
authPollBusy = true;
try {
if (!silent) {
log('Checking authorization status...');
}
const status = await submitActionMessage({
type: 'auth-status'
});
handleAuthStatus(status);
} catch (err) {
if (!silent) {
log('Auth check failed: ' + stringifyError(err));
}
} finally {
authPollBusy = false;
}
}
function handleAuthStatus(status) {
if (!status.bootstrapComplete) {
stopAuthPoll();
currentLoginRequest = null;
hide(loginCard);
show(bootstrapCard);
setAuthorized(false, 'No head admin exists. Bootstrap required.');
log('No head admin exists. Fill in bootstrap form.');
return;
}
hide(bootstrapCard);
if (status.authorized) {
stopAuthPoll();
currentLoginRequest = null;
hide(loginCard);
currentRole = status.role || null;
currentSignerPublicKey = status.signerPublicKey || null;
founderPublicKey = status.headAdminPublicKey || founderPublicKey;
founderProtectionEnabled = status.founderProtectionEnabled !== false;
const expiry = status.expiresAt
? new Date(status.expiresAt).toLocaleString()
: 'no expiry';
setAuthorized(true, `Authorized as ${status.role || 'device'} until ${expiry}.`);
updateUsersUi();
log(`Authorized. Expires: ${expiry}`);
listUploads(true);
listUsers(true);
if (currentRole === 'head-admin') {
listUnls(true);
}
return;
}
currentRole = null;
currentSignerPublicKey = null;
founderPublicKey = status.headAdminPublicKey || founderPublicKey;
founderProtectionEnabled = status.founderProtectionEnabled !== false;
hide(usersCard);
hide(unlCard);
show(loginCard);
setAuthorized(false, 'Head admin exists. Authorize this browser/device.');
if (!currentLoginRequest) {
log('Head admin exists. Create a login envelope to authorize this browser/device.');
createAndShowLoginRequest(status);
}
startAuthPoll();
}
async function generateAdminKeypair() {
try {
await ensureSodiumReady();
const keypair = await window.HotPocket.generateKeys();
const privateKey = normalizeHotPocketPrivateKey(bytesToHex(keypair.privateKey));
const publicKey = normalizeHotPocketPublicKey(bytesToHex(keypair.publicKey));
bootstrapAdminPrivateKeyEl.value = privateKey;
bootstrapAdminPublicKeyEl.value = publicKey;
devAdminPrivateKeyEl.value = privateKey;
log(`Generated head admin keypair. Public key: ${publicKey}`);
} catch (err) {
log('Admin key generation failed: ' + stringifyError(err));
}
}
function randomBytes(length) {
const bytes = new Uint8Array(length);
crypto.getRandomValues(bytes);
return bytes;
}
function bytesToBase32(bytes) {
let bits = '';
let output = '';
for (const byte of bytes) {
bits += byte.toString(2).padStart(8, '0');
}
for (let i = 0; i < bits.length; i += 5) {
const chunk = bits.slice(i, i + 5).padEnd(5, '0');
output += BASE32_ALPHABET[parseInt(chunk, 2)];
}
return output;
}
function generateBootstrapOtpSecret() {
const secret = bytesToBase32(randomBytes(32));
bootstrapOtpSecretEl.value = secret;
devOtpSecretEl.value = secret;
log('Generated OTP secret.');
}
function validateOtpSecret(secret) {
const clean = String(secret || '')
.replace(/=+$/g, '')
.replace(/\s+/g, '')
.toUpperCase();
if (!/^[A-Z2-7]{16,}$/.test(clean)) {
throw new Error('Invalid OTP secret. Use base32 A-Z and 2-7, minimum 16 chars.');
}
return clean;
}
async function submitBootstrap() {
if (!connected || !client) {
log('Connect first.');
return;
}
try {
const headAdminPublicKey = normalizeHotPocketPublicKey(bootstrapAdminPublicKeyEl.value);
const otpSecret = validateOtpSecret(bootstrapOtpSecretEl.value);
const result = await submitActionMessage({
type: 'bootstrap-head-admin',
headAdminPublicKey,
otpSecret,
setupCode: bootstrapSetupCodeEl.value.trim()
});
log(result.message || 'Head admin created.');
log('Disconnecting. Press Connect again to start QR/envelope login.');
disconnectClient();
} catch (err) {
log('Bootstrap failed: ' + stringifyError(err));
}
}
function makeNonce() {
return Array.from(randomBytes(32))
.map(byte => byte.toString(16).padStart(2, '0'))
.join('');
}
function createAndShowLoginRequest(status = {}) {
if (!connected) {
log('Connect first.');
return;
}
currentLoginRequest = {
type: 'everstoring-upload-login-request',
v: 1,
endpoint: endpointEl.value.trim(),
devicePublicKey: normalizeHotPocketPublicKey(publicKeyEl.value),
headAdminPublicKey: status.headAdminPublicKey || null,
nonce: makeNonce(),
createdAtMs: Date.now(),
ttlSeconds: DEFAULT_AUTH_TTL_SECONDS
};
const wssLoginLink =
`${currentLoginRequest.endpoint}` +
`?devicePublicKey=${encodeURIComponent(currentLoginRequest.devicePublicKey)}` +
`&nonce=${encodeURIComponent(currentLoginRequest.nonce)}` +
`&ttlSeconds=${encodeURIComponent(currentLoginRequest.ttlSeconds || 86400)}` +
(
currentLoginRequest.headAdminPublicKey
? `&headAdminPublicKey=${encodeURIComponent(currentLoginRequest.headAdminPublicKey)}`
: ""
);
loginRequestJsonEl.value = JSON.stringify({
wssLoginLink,
loginRequest: currentLoginRequest
}, null, 2);
makeQr("loginQr", wssLoginLink);
adminEnvelopeInput.value = '';
log('New WSS login request created.');
startAuthPoll();
}
async function copyLoginRequest() {
try {
const text = loginRequestJsonEl.value.trim();
if (!text) {
throw new Error('No login request to copy.');
}
await navigator.clipboard.writeText(text);
log('Login request copied.');
} catch (err) {
loginRequestJsonEl.focus();
loginRequestJsonEl.select();
document.execCommand('copy');
log('Login request selected/copied if browser allowed it.');
}
}
function makeQr(elementId, text) {
const el = document.getElementById(elementId);
el.innerHTML = '';
try {
if (typeof window.qrcode !== 'function' && typeof qrcode !== 'function') {
throw new Error('qrcode.js not loaded');
}
const qrFactory = typeof window.qrcode === 'function' ? window.qrcode : qrcode;
const qr = qrFactory(0, 'M');
qr.addData(text);
qr.make();
el.innerHTML = qr.createImgTag(6, 8);
const img = el.querySelector('img');
if (img) {
img.alt = 'Login QR code';
img.style.width = '260px';
img.style.height = '260px';
img.style.imageRendering = 'pixelated';
}
} catch {
const fallback = document.createElement('div');
fallback.className = 'qr-fallback';
fallback.textContent = text;
el.appendChild(fallback);
}
}
function base32ToBytes(base32) {
const clean = validateOtpSecret(base32);
let bits = '';
for (const char of clean) {
const value = BASE32_ALPHABET.indexOf(char);
if (value === -1) {
throw new Error('Invalid base32 character.');
}
bits += value.toString(2).padStart(5, '0');
}
const bytes = [];
for (let i = 0; i + 8 <= bits.length; i += 8) {
bytes.push(parseInt(bits.slice(i, i + 8), 2));
}
return new Uint8Array(bytes);
}
async function hmacSha256(keyBytes, dataBytes) {
const key = await crypto.subtle.importKey(
'raw',
keyBytes,
{
name: 'HMAC',
hash: 'SHA-256'
},
false,
['sign']
);
return new Uint8Array(await crypto.subtle.sign('HMAC', key, dataBytes));
}
function counterToBytes(counter) {
const out = new Uint8Array(8);
const view = new DataView(out.buffer);
view.setBigUint64(0, BigInt(counter), false);
return out;
}
async function generateTotpCode(otpSecret, timeMs = Date.now(), stepSeconds = 30, digits = OTP_CODE_DIGITS) {
const key = base32ToBytes(otpSecret);
const counter = Math.floor(timeMs / 1000 / stepSeconds);
const hmac = await hmacSha256(key, counterToBytes(counter));
let value = 0n;
for (const byte of hmac) {
value = (value << 8n) + BigInt(byte);
}
const modulo = 10n ** BigInt(digits);
const otp = value % modulo;
return otp.toString().padStart(digits, '0');
}
function base64FromBytes(bytes) {
let binary = '';
const chunkSize = 0x8000;
for (let i = 0; i < bytes.length; i += chunkSize) {
binary += String.fromCharCode.apply(null, bytes.subarray(i, i + chunkSize));
}
return btoa(binary);
}
function base64UrlEncodeString(text) {
return btoa(text)
.replaceAll('+', '-')
.replaceAll('/', '_')
.replaceAll('=', '');
}
async function deriveEnvelopeAesKey(otpCode, salt) {
const material = new TextEncoder().encode(`otp-admin-envelope-v1:${otpCode}`);
const baseKey = await crypto.subtle.importKey(
'raw',
material,
'PBKDF2',
false,
['deriveKey']
);
return crypto.subtle.deriveKey(
{
name: 'PBKDF2',
hash: 'SHA-256',
salt,
iterations: ENVELOPE_ITERATIONS
},
baseKey,
{
name: 'AES-GCM',
length: 256
},
false,
['encrypt']
);
}
async function createAdminEnvelope({ adminPrivateKey, otpSecret, loginRequest }) {
const cleanAdminPrivateKey = normalizeHotPocketPrivateKey(adminPrivateKey);
const cleanOtpSecret = validateOtpSecret(otpSecret);
if (!loginRequest || loginRequest.type !== 'everstoring-upload-login-request') {
throw new Error('Missing login request.');
}
const otpCode = await generateTotpCode(cleanOtpSecret);
const salt = randomBytes(16);
const iv = randomBytes(12);
const key = await deriveEnvelopeAesKey(otpCode, salt);
const payload = {
type: 'everstoring-admin-login-v1',
adminPrivateKey: cleanAdminPrivateKey,
devicePublicKey: normalizeHotPocketPublicKey(loginRequest.devicePublicKey),
nonce: loginRequest.nonce,
requestCreatedAtMs: Number(loginRequest.createdAtMs || Date.now()),
createdAtMs: Date.now()
};
const plaintext = new TextEncoder().encode(JSON.stringify(payload));
const encrypted = new Uint8Array(
await crypto.subtle.encrypt(
{
name: 'AES-GCM',
iv,
tagLength: 128
},
key,
plaintext
)
);
const authTag = encrypted.slice(encrypted.length - 16);
const ciphertext = encrypted.slice(0, encrypted.length - 16);
const envelope = {
v: 1,
type: 'otp-encrypted-admin-private-key',
alg: 'aes-256-gcm',
kdf: 'pbkdf2-sha256',
iterations: ENVELOPE_ITERATIONS,
salt: base64FromBytes(salt),
iv: base64FromBytes(iv),
authTag: base64FromBytes(authTag),
ciphertext: base64FromBytes(ciphertext)
};
return `${ENVELOPE_PREFIX}${base64UrlEncodeString(JSON.stringify(envelope))}`;
}
async function devCreateEnvelopeOnly() {
try {
if (!currentLoginRequest) {
createAndShowLoginRequest();
}
const envelope = await createAdminEnvelope({
adminPrivateKey: devAdminPrivateKeyEl.value.trim(),
otpSecret: devOtpSecretEl.value.trim(),
loginRequest: currentLoginRequest
});
adminEnvelopeInput.value = envelope;
log('Created fresh OTP-encrypted admin envelope locally.');
} catch (err) {
log('Envelope creation failed: ' + stringifyError(err));
}
}
async function devCreateEnvelopeAndSubmit() {
try {
await devCreateEnvelopeOnly();
await submitEnvelopeFromText();
} catch (err) {
log('Create + authorize failed: ' + stringifyError(err));
}
}
async function submitEnvelopeFromText() {
if (!connected || !client) {
log('Connect first.');
return;
}
try {
if (!currentLoginRequest) {
throw new Error('Create a login request first.');
}
const adminEnvelope = adminEnvelopeInput.value.trim();
if (!adminEnvelope.startsWith(ENVELOPE_PREFIX)) {
throw new Error(`Envelope must start with ${ENVELOPE_PREFIX}`);
}
const result = await submitActionMessage({
type: 'authorize-device',
devicePublicKey: normalizeHotPocketPublicKey(currentLoginRequest.devicePublicKey),
nonce: currentLoginRequest.nonce,
adminEnvelope,
ttlSeconds: Number(currentLoginRequest.ttlSeconds || DEFAULT_AUTH_TTL_SECONDS)
});
stopAuthPoll();
currentLoginRequest = null;
setAuthorized(true, result.expiresAt ? `Authorized until ${new Date(result.expiresAt).toLocaleString()}.` : 'Authorized.');
hide(loginCard);
log(result.message || 'Device authorized.');
await listUploads(true);
} catch (err) {
log('Authorization failed: ' + stringifyError(err));
}
}
function makeActionId() {
return crypto.randomUUID
? crypto.randomUUID()
: `action-${Date.now()}-${Math.random().toString(16).slice(2)}`;
}
function waitForAction(actionId) {
return new Promise((resolve, reject) => {
const timeout = setTimeout(() => {
pendingActions.delete(actionId);
reject(new Error('Timed out waiting for contract response.'));
}, 45000);
pendingActions.set(actionId, {
resolve,
reject,
timeout
});
});
}
async function submitActionMessage(message) {
const actionId = makeActionId();
const waitPromise = waitForAction(actionId);
const payload = BSON.serialize({
...message,
actionId
});
const submission = await client.submitContractInput(payload);
const status = await submission.submissionStatus;
if (status.status !== 'accepted') {
const waiter = pendingActions.get(actionId);
if (waiter) {
clearTimeout(waiter.timeout);
pendingActions.delete(actionId);
}
throw new Error('Contract input rejected: ' + JSON.stringify(status));
}
return waitPromise;
}
async function submitReadMessage(message, timeoutMs = 30000) {
const response = await client.submitContractReadRequest(
BSON.serialize(message),
null,
timeoutMs
);
return BSON.deserialize(normalizeOutputRaw(response));
}
function normalizeOutputRaw(raw) {
if (raw instanceof Uint8Array) return raw;
if (raw instanceof ArrayBuffer) return new Uint8Array(raw);
if (raw && raw.data) return new Uint8Array(raw.data);
return raw;
}
function handleContractOutput(result) {
for (const raw of result.outputs || []) {
let output;
try {
output = BSON.deserialize(normalizeOutputRaw(raw));
} catch (err) {
log('Could not decode contract output: ' + stringifyError(err));
continue;
}
if (output.type === 'uploads') {
renderUploads(output.data);
log(`Loaded ${Array.isArray(output.data) ? output.data.length : 0} uploaded file(s).`);
}
if (output.actionId && pendingActions.has(output.actionId)) {
const waiter = pendingActions.get(output.actionId);
pendingActions.delete(output.actionId);
clearTimeout(waiter.timeout);
if (output.type === 'error') {
waiter.reject(new Error(output.error || 'Contract returned an error.'));
} else {
waiter.resolve(output);
}
continue;
}
if (output.type === 'uploads') {
continue;
}
const key = output.uploadId && output.chunkNo
? `${output.uploadId}:${output.chunkNo}`
: null;
if (key && pending.has(key)) {
const waiter = pending.get(key);
pending.delete(key);
clearTimeout(waiter.timeout);
if (output.type === 'error') {
waiter.reject(new Error(output.error || 'Contract returned an error.'));
} else {
waiter.resolve(output);
}
continue;
}
if (output.type === 'delete-success') {
log(output.message || `Deleted uploads/${output.filename}`);
continue;
}
log(JSON.stringify(output, null, 2));
}
}
function formatBytes(bytes) {
const size = Number(bytes || 0);
if (size < 1024) return `${size} B`;
if (size < 1024 * 1024) return `${(size / 1024).toFixed(1)} KB`;
if (size < 1024 * 1024 * 1024) return `${(size / 1024 / 1024).toFixed(1)} MB`;
return `${(size / 1024 / 1024 / 1024).toFixed(1)} GB`;
}
function hexToUint8Array(hex) {
const clean = String(hex || '');
if (clean.length % 2 !== 0) {
throw new Error('Invalid hex chunk length.');
}
const bytes = new Uint8Array(clean.length / 2);
for (let i = 0; i < clean.length; i += 2) {
bytes[i / 2] = Number.parseInt(clean.slice(i, i + 2), 16);
}
return bytes;
}
function bsonBinaryToUint8Array(value) {
if (!value) {
return new Uint8Array();
}
if (value instanceof Uint8Array) {
return value;
}
if (value instanceof ArrayBuffer) {
return new Uint8Array(value);
}
if (Array.isArray(value)) {
return new Uint8Array(value);
}
if (typeof value.value === 'function') {
return bsonBinaryToUint8Array(value.value());
}
if (value.buffer instanceof ArrayBuffer) {
const offset = Number(value.byteOffset || 0);
const length = Number(value.byteLength || value.buffer.byteLength);
return new Uint8Array(value.buffer, offset, length);
}
if (value.buffer instanceof Uint8Array) {
return value.buffer;
}
if (Array.isArray(value.buffer)) {
return new Uint8Array(value.buffer);
}
if (value.data && Array.isArray(value.data)) {
return new Uint8Array(value.data);
}
throw new Error('Unsupported BSON binary chunk format.');
}
function getBaseFileName(filename) {
return String(filename || 'download')
.replace(/\\/g, '/')
.split('/')
.pop() || 'download';
}
function resetDownloadButton(button) {
if (!button) return;
button.disabled = false;
button.textContent = 'Download';
}
async function downloadUpload(filename, button) {
if (!connected || !client || !authorized) {
log('Connect and authorize first.');
return;
}
button.disabled = true;
button.textContent = 'Preparing...';
try {
const info = await submitReadMessage({
type: 'get-upload-info',
filename
});
if (info.type === 'error') {
throw new Error(info.error || 'Contract returned an error.');
}
if (info.type !== 'download-info') {
throw new Error(`Unexpected download info response: ${JSON.stringify(info)}`);
}
const safeFilename = info.filename || filename;
const totalChunks = Number(info.totalChunks || 0);
const size = Number(info.size || 0);
if (!Number.isInteger(totalChunks) || totalChunks < 1) {
throw new Error('Invalid totalChunks in download response.');
}
log(`Downloading uploads/${safeFilename} (${formatBytes(size)}, ${totalChunks} chunk(s))`);
const chunks = [];
for (let chunkNo = 1; chunkNo <= totalChunks; chunkNo++) {
button.textContent = `Downloading ${chunkNo}/${totalChunks}`;
const part = await submitReadMessage({
type: 'get-upload-chunk',
filename: safeFilename,
chunkNo
});
if (part.type === 'error') {
throw new Error(part.error || 'Contract returned an error.');
}
if (part.type !== 'download-chunk') {
throw new Error(`Unexpected download chunk response: ${JSON.stringify(part)}`);
}
if (part.chunk) {
chunks.push(bsonBinaryToUint8Array(part.chunk));
} else if (part.chunkHex) {
chunks.push(hexToUint8Array(part.chunkHex));
} else {
throw new Error('Download chunk response did not include chunk data.');
}
log(`✓ downloaded ${chunkNo}/${totalChunks}`);
}
const blob = new Blob(chunks, { type: 'application/octet-stream' });
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = getBaseFileName(safeFilename);
document.body.appendChild(link);
link.click();
link.remove();
setTimeout(() => URL.revokeObjectURL(url), 1000);
log(`Downloaded uploads/${safeFilename}`);
} catch (err) {
log('Download failed: ' + stringifyError(err));
} finally {
resetDownloadButton(button);
}
}
function renderUploads(files) {
const box = document.getElementById('uploadsGui');
box.innerHTML = '';
if (!Array.isArray(files) || files.length === 0) {
const empty = document.createElement('div');
empty.className = 'empty-list';
empty.textContent = 'No uploaded files found.';
box.appendChild(empty);
return;
}
files
.slice()
.sort((a, b) => String(a.filename).localeCompare(String(b.filename)))
.forEach(file => {
const row = document.createElement('div');
row.className = 'upload-row';
const name = document.createElement('div');
name.className = 'upload-name';
name.textContent = `uploads/${file.filename}`;
const size = document.createElement('div');
size.className = 'upload-size';
size.textContent = formatBytes(file.size);
const download = document.createElement('button');
download.className = 'upload-download';
download.textContent = 'Download';
download.addEventListener('click', () => {
downloadUpload(file.filename, download);
});
const del = document.createElement('button');
del.className = 'upload-delete';
del.textContent = 'Delete';
del.dataset.state = 'idle';
del.addEventListener('click', () => {
if (del.dataset.state !== 'confirm') {
del.dataset.state = 'confirm';
del.classList.add('confirming');
del.textContent = 'Confirm delete';
setTimeout(() => {
if (del.dataset.state === 'confirm' && !del.disabled) {
del.dataset.state = 'idle';
del.classList.remove('confirming');
del.textContent = 'Delete';
}
}, 5000);
return;
}
deleteUpload(file.filename, del);
});
row.appendChild(name);
row.appendChild(size);
row.appendChild(download);
row.appendChild(del);
box.appendChild(row);
});
}
function scheduleUploadsRefreshAfterDelete() {
uploadsRefreshNeeded = true;
if (uploadsRefreshTimer) {
clearTimeout(uploadsRefreshTimer);
}
const now = Date.now();
const msSinceLastRefresh = now - lastUploadsRefreshAt;
const throttleDelay = Math.max(0, UPLOAD_LIST_MIN_INTERVAL_MS - msSinceLastRefresh);
const delay = Math.max(
UPLOAD_DELETE_REFRESH_DELAY_MS,
throttleDelay
);
uploadsRefreshTimer = setTimeout(runScheduledUploadsRefresh, delay);
}
async function runScheduledUploadsRefresh() {
uploadsRefreshTimer = null;
if (activeDeleteCount > 0) {
scheduleUploadsRefreshAfterDelete();
return;
}
if (!uploadsRefreshNeeded || uploadsRefreshInFlight) {
return;
}
uploadsRefreshNeeded = false;
uploadsRefreshInFlight = true;
try {
await listUploads(true);
lastUploadsRefreshAt = Date.now();
} catch (err) {
log('Uploads refresh after delete failed: ' + stringifyError(err));
} finally {
uploadsRefreshInFlight = false;
if (uploadsRefreshNeeded) {
scheduleUploadsRefreshAfterDelete();
}
}
}
async function deleteUpload(filename, button) {
if (!connected || !client || !authorized) {
log('Connect and authorize first.');
return;
}
button.disabled = true;
button.textContent = 'Deleting...';
activeDeleteCount++;
try {
await submitActionMessage({
type: 'delete-upload',
filename
});
log(`Deleted uploads/${filename}`);
uploadsRefreshNeeded = true;
} catch (err) {
log('Delete failed: ' + stringifyError(err));
button.disabled = false;
button.dataset.state = 'idle';
button.classList.remove('confirming');
button.textContent = 'Delete';
} finally {
activeDeleteCount--;
if (uploadsRefreshNeeded) {
scheduleUploadsRefreshAfterDelete();
}
}
}
function normalizeTypedDirectory(value) {
let dir = String(value || '').trim();
dir = dir.replace(/\\/g, '/');
dir = dir.replace(/^\/+/, '');
dir = dir.replace(/\/+$/, '');
dir = dir.replace(/\/+/g, '/');
if (!dir) {
return '';
}
const parts = dir.split('/');
if (parts.includes('..') || parts.includes('.')) {
throw new Error('Target directory cannot contain . or ...');
}
return parts
.map(part => part.replace(/[^a-zA-Z0-9._-]/g, '_'))
.filter(Boolean)
.join('/');
}
function normalizeFileName(name) {
return String(name || '')
.replace(/\\/g, '/')
.split('/')
.pop()
.replace(/[^a-zA-Z0-9._ #()\-]/g, '_')
.trim();
}
function makeUploadFilename(file) {
const dir = normalizeTypedDirectory(targetDirEl.value);
const cleanName = normalizeFileName(file.name);
if (!cleanName) {
throw new Error('Invalid file name.');
}
return dir ? `${dir}/${cleanName}` : cleanName;
}
function arrayBufferToHex(buffer) {
const bytes = new Uint8Array(buffer);
let hex = '';
for (const byte of bytes) {
hex += byte.toString(16).padStart(2, '0');
}
return hex;
}
function makeUploadId() {
return crypto.randomUUID
? crypto.randomUUID()
: `${Date.now()}-${Math.random().toString(16).slice(2)}`;
}
function waitForChunk(uploadId, chunkNo) {
const key = `${uploadId}:${chunkNo}`;
return new Promise((resolve, reject) => {
const timeout = setTimeout(() => {
pending.delete(key);
reject(new Error(`Timed out waiting for chunk ${chunkNo}.`));
}, 45000);
pending.set(key, { resolve, reject, timeout });
});
}
async function submitUploadMessage(message) {
const waitPromise = waitForChunk(message.uploadId, message.chunkNo);
const payload = BSON.serialize(message);
const submission = await client.submitContractInput(payload);
const status = await submission.submissionStatus;
if (status.status !== 'accepted') {
const key = `${message.uploadId}:${message.chunkNo}`;
const waiter = pending.get(key);
if (waiter) {
clearTimeout(waiter.timeout);
pending.delete(key);
}
throw new Error('Contract input rejected: ' + JSON.stringify(status));
}
return waitPromise;
}
function getSelectedFiles() {
const files = Array.from(fileInputEl.files || []);
const seen = new Set();
return files.filter(file => {
const key = `${file.name}:${file.size}:${file.lastModified}`;
if (seen.has(key)) return false;
seen.add(key);
return true;
});
}
async function uploadSelectedFiles() {
if (!connected || !client || !authorized) {
log('Connect and authorize first.');
return;
}
const files = getSelectedFiles();
if (files.length === 0) {
log('Select at least one file.');
return;
}
uploadBtn.disabled = true;
try {
const dir = normalizeTypedDirectory(targetDirEl.value);
log(dir ? `Target: uploads/${dir}/` : 'Target: uploads/');
log(`Starting upload of ${files.length} file(s).`);
for (const file of files) {
await uploadFile(file);
}
log('All uploads completed.');
await listUploads(true);
} catch (err) {
log('Upload stopped: ' + stringifyError(err));
} finally {
uploadBtn.disabled = false;
uploadBtn.textContent = 'Upload';
}
}
async function uploadFile(file) {
const filename = makeUploadFilename(file);
const totalChunks = Math.max(1, Math.ceil(file.size / CHUNK_SIZE));
const uploadId = makeUploadId();
log(`Uploading ${filename} (${file.size} bytes, ${totalChunks} chunk(s))`);
for (let chunkNo = 1; chunkNo <= totalChunks; chunkNo++) {
let chunkHex = '';
if (file.size > 0) {
const start = (chunkNo - 1) * CHUNK_SIZE;
const end = Math.min(start + CHUNK_SIZE, file.size);
const buffer = await file.slice(start, end).arrayBuffer();
chunkHex = arrayBufferToHex(buffer);
}
const message = {
type: 'upload',
uploadId,
filename,
chunkNo,
totalChunks,
chunk: chunkHex
};
const response = await submitUploadMessage(message);
if (response.type === 'ack') {
log(`✓ ${filename} chunk ${chunkNo}/${totalChunks}`);
}
if (response.type === 'success') {
log(`✓ ${response.message}`);
}
}
}
async function listUploads(silent = false) {
// When called from a click handler, browsers pass a MouseEvent as the first
// argument. Treat only the literal boolean true as silent.
silent = silent === true;
if (!connected || !client || !authorized) {
log('Connect and authorize first.');
return;
}
listBtn.disabled = true;
listBtn.textContent = 'Loading...';
if (!silent) {
log('Requesting uploads list...');
}
try {
// Use a read request for listing. It returns the contract response directly,
// instead of relying on the async contractOutput event/actionId path.
const response = await submitReadMessage({
type: 'list-uploads'
}, 30000);
if (!response || response.type !== 'uploads') {
throw new Error(`Unexpected list response: ${JSON.stringify(response)}`);
}
renderUploads(response.data);
log(`Loaded ${Array.isArray(response.data) ? response.data.length : 0} uploaded file(s).`);
if (!silent) {
log('Uploads list refreshed.');
}
} catch (err) {
log('List failed: ' + stringifyError(err));
} finally {
listBtn.disabled = false;
listBtn.textContent = 'List Uploads';
}
}
function generateManagedUserOtpSecret() {
const secret = bytesToBase32(randomBytes(32));
manageUserOtpSecretEl.value = secret;
log('Generated separate OTP secret for signer. Save it in that signer profile.');
}
function updateUsersUi() {
if (!authorized || !currentRole) {
hide(usersCard);
hide(unlCard);
return;
}
show(usersCard);
const canManageUsers = currentRole === 'head-admin';
usersRoleHint.textContent = canManageUsers
? 'You are signed in as head-admin. You can add/remove users and change roles. Founder protection: ' + (founderProtectionEnabled ? 'ON' : 'OFF') + '.'
: 'You are signed in as admin. You can use uploads, but only head-admins can add/remove/change users.';
addUserBtn.disabled = !canManageUsers;
setUserRoleBtn.disabled = !canManageUsers;
removeUserBtn.disabled = !canManageUsers;
manageUserPublicKeyEl.disabled = !canManageUsers;
manageUserRoleEl.disabled = !canManageUsers;
manageUserOtpSecretEl.disabled = !canManageUsers;
generateUserOtpBtn.disabled = !canManageUsers;
clearUserOtpBtn.disabled = !canManageUsers;
if (canManageUsers) {
show(unlCard);
} else {
hide(unlCard);
}
listUnlsBtn.disabled = !canManageUsers;
addUnlBtn.disabled = !canManageUsers;
removeUnlBtn.disabled = !canManageUsers;
manageUnlPublicKeyEl.disabled = !canManageUsers;
manageUnlDomainEl.disabled = !canManageUsers;
manageUnlPeerPortEl.disabled = !canManageUsers;
}
function renderUsers(users) {
usersGui.innerHTML = '';
if (!Array.isArray(users) || users.length === 0) {
const empty = document.createElement('div');
empty.className = 'empty-list';
empty.textContent = 'No users found.';
usersGui.appendChild(empty);
return;
}
for (const user of users) {
const row = document.createElement('div');
row.className = 'user-row';
if (!user.active) {
row.classList.add('user-inactive');
}
const key = document.createElement('div');
key.className = 'user-key';
key.textContent = user.publicKey || '';
const role = document.createElement('div');
role.className = 'user-role';
role.textContent = (user.role || '') + (user.founder ? (user.founderProtected ? ' / founder protected' : ' / founder') : '');
const active = document.createElement('div');
active.textContent = (user.active ? 'active' : 'removed') + (user.otpConfigured ? ' / OTP' : ' / no OTP');
row.appendChild(key);
row.appendChild(role);
row.appendChild(active);
row.addEventListener('click', () => {
manageUserPublicKeyEl.value = user.publicKey || '';
manageUserRoleEl.value = user.role || 'admin';
manageUserOtpSecretEl.value = '';
});
usersGui.appendChild(row);
}
}
async function listUsers(silent = false) {
silent = silent === true;
if (!connected || !client || !authorized) {
if (!silent) {
log('Connect and authorize first.');
}
return;
}
if (!silent) {
log('Requesting users list...');
}
try {
const response = await submitActionMessage({
type: 'list-users'
});
if (!response || response.type !== 'users') {
throw new Error(`Unexpected users response: ${JSON.stringify(response)}`);
}
if (response.founderProtectionEnabled !== undefined) {
founderProtectionEnabled = response.founderProtectionEnabled !== false;
}
renderUsers(response.users);
if (!silent) {
log(`Loaded ${Array.isArray(response.users) ? response.users.length : 0} user(s).`);
}
} catch (err) {
if (!silent) {
log('List users failed: ' + stringifyError(err));
}
}
}
function isOwnSignerPublicKey(publicKey) {
if (!currentSignerPublicKey) {
return false;
}
try {
return normalizeHotPocketPublicKey(publicKey) === normalizeHotPocketPublicKey(currentSignerPublicKey);
} catch {
return false;
}
}
function isFounderSignerPublicKey(publicKey) {
if (!founderPublicKey) {
return false;
}
try {
return normalizeHotPocketPublicKey(publicKey) === normalizeHotPocketPublicKey(founderPublicKey);
} catch {
return false;
}
}
async function addUserFromForm() {
if (currentRole !== 'head-admin') {
log('Only head-admin can add users.');
return;
}
try {
const publicKey = normalizeHotPocketPublicKey(manageUserPublicKeyEl.value);
if (isOwnSignerPublicKey(publicKey)) {
throw new Error('You cannot add or update your own signer record.');
}
if (founderProtectionEnabled && isFounderSignerPublicKey(publicKey)) {
throw new Error('You cannot add or update the original head admin signer record while founder protection is enabled.');
}
const role = manageUserRoleEl.value === 'head-admin' ? 'head-admin' : 'admin';
const otpSecret = validateOtpSecret(manageUserOtpSecretEl.value);
const result = await submitActionMessage({
type: 'add-user',
publicKey,
role,
otpSecret
});
log(result.message || `User saved as ${role} with its own OTP secret.`);
manageUserOtpSecretEl.value = '';
await listUsers(true);
} catch (err) {
log('Add user failed: ' + stringifyError(err));
}
}
async function setUserRoleFromForm() {
if (currentRole !== 'head-admin') {
log('Only head-admin can change roles.');
return;
}
try {
const publicKey = normalizeHotPocketPublicKey(manageUserPublicKeyEl.value);
if (isOwnSignerPublicKey(publicKey)) {
throw new Error('You cannot change the role of your own signer record.');
}
if (founderProtectionEnabled && isFounderSignerPublicKey(publicKey)) {
throw new Error('You cannot change the role of the original head admin signer record while founder protection is enabled.');
}
const role = manageUserRoleEl.value === 'head-admin' ? 'head-admin' : 'admin';
const result = await submitActionMessage({
type: 'set-user-role',
publicKey,
role
});
log(result.message || `User role updated to ${role}.`);
await listUsers(true);
} catch (err) {
log('Set role failed: ' + stringifyError(err));
}
}
async function removeUserFromForm() {
if (currentRole !== 'head-admin') {
log('Only head-admin can remove users.');
return;
}
try {
const publicKey = normalizeHotPocketPublicKey(manageUserPublicKeyEl.value);
if (isOwnSignerPublicKey(publicKey)) {
throw new Error('You cannot remove your own signer record.');
}
if (founderProtectionEnabled && isFounderSignerPublicKey(publicKey)) {
throw new Error('You cannot remove the original head admin signer record while founder protection is enabled.');
}
if (!confirm(`Remove user ${publicKey}?`)) {
return;
}
const result = await submitActionMessage({
type: 'remove-user',
publicKey
});
log(result.message || 'User removed.');
await listUsers(true);
} catch (err) {
log('Remove user failed: ' + stringifyError(err));
}
}
function renderUnls(unls, knownPeers = []) {
unlsGui.innerHTML = '';
if (!Array.isArray(unls) || unls.length === 0) {
const empty = document.createElement('div');
empty.className = 'empty-list';
empty.textContent = 'No UNL public keys found.';
unlsGui.appendChild(empty);
return;
}
for (const entry of unls) {
const row = document.createElement('div');
row.className = 'unl-row';
const key = document.createElement('div');
key.className = 'user-key';
key.textContent = entry.publicKey || '';
const index = document.createElement('div');
index.className = 'user-role';
index.textContent = `#${Number(entry.index || 0) + 1}`;
const status = document.createElement('div');
status.textContent = 'active';
row.appendChild(key);
row.appendChild(index);
row.appendChild(status);
row.addEventListener('click', () => {
manageUnlPublicKeyEl.value = entry.publicKey || '';
});
unlsGui.appendChild(row);
}
if (Array.isArray(knownPeers) && knownPeers.length > 0) {
const peers = document.createElement('div');
peers.className = 'empty-list';
peers.textContent = `Known peers: ${knownPeers.join(', ')}`;
unlsGui.appendChild(peers);
}
}
async function listUnls(silent = false) {
silent = silent === true;
if (!connected || !client || !authorized || currentRole !== 'head-admin') {
if (!silent) {
log('Connect and authorize as head-admin first.');
}
return;
}
if (!silent) {
log('Requesting UNL list...');
}
try {
const response = await submitActionMessage({
type: 'list-unls'
});
if (!response || response.type !== 'unls') {
throw new Error(`Unexpected UNL response: ${JSON.stringify(response)}`);
}
renderUnls(response.unls, response.knownPeers);
if (!silent) {
log(`Loaded ${Array.isArray(response.unls) ? response.unls.length : 0} UNL public key(s).`);
}
} catch (err) {
if (!silent) {
log('List UNLs failed: ' + stringifyError(err));
}
}
}
function getOptionalUnlPeerFields() {
const domain = manageUnlDomainEl.value.trim();
const peerPortRaw = manageUnlPeerPortEl.value.trim();
if (!domain && !peerPortRaw) {
return {};
}
if (!domain || !peerPortRaw) {
throw new Error('Supply both peer domain/IP and peer port, or leave both blank.');
}
const peerPort = Number(peerPortRaw);
if (!Number.isInteger(peerPort) || peerPort < 1 || peerPort > 65535) {
throw new Error('Peer port must be an integer from 1 to 65535.');
}
return { domain, peerPort };
}
async function addUnlFromForm() {
if (currentRole !== 'head-admin') {
log('Only head-admin can add UNLs.');
return;
}
try {
const publicKey = normalizeHotPocketPublicKey(manageUnlPublicKeyEl.value);
const peerFields = getOptionalUnlPeerFields();
const result = await submitActionMessage({
type: 'add-unl',
publicKey,
...peerFields
});
log(result.message || `UNL added: ${publicKey}.`);
await listUnls(true);
} catch (err) {
log('Add UNL failed: ' + stringifyError(err));
}
}
async function removeUnlFromForm() {
if (currentRole !== 'head-admin') {
log('Only head-admin can remove UNLs.');
return;
}
try {
const publicKey = normalizeHotPocketPublicKey(manageUnlPublicKeyEl.value);
const peerFields = getOptionalUnlPeerFields();
if (!confirm(`Remove UNL ${publicKey}?`)) {
return;
}
const result = await submitActionMessage({
type: 'remove-unl',
publicKey,
...peerFields
});
log(result.message || `UNL removed: ${publicKey}.`);
await listUnls(true);
} catch (err) {
log('Remove UNL failed: ' + stringifyError(err));
}
}
window.checkUploadAuth = function () {
return refreshAuthStatusFromContract(false);
};
window.startUploadAuthPoll = function () {
startAuthPoll();
log('Manual auth polling started.');
};
window.stopUploadAuthPoll = function () {
stopAuthPoll();
log('Manual auth polling stopped.');
};
</script>
</body>
</html>
Code: Select all
//---------------------------------------------------------------------
//
// QR Code Generator for JavaScript
//
// Copyright (c) 2009 Kazuhiko Arase
//
// URL: http://www.d-project.com/
//
// Licensed under the MIT license:
// http://www.opensource.org/licenses/mit-license.php
//
// The word 'QR Code' is registered trademark of
// DENSO WAVE INCORPORATED
// http://www.denso-wave.com/qrcode/faqpatent-e.html
//
//---------------------------------------------------------------------
var qrcode = function() {
//---------------------------------------------------------------------
// qrcode
//---------------------------------------------------------------------
/**
* qrcode
* @param typeNumber 1 to 40
* @param errorCorrectionLevel 'L','M','Q','H'
*/
var qrcode = function(typeNumber, errorCorrectionLevel) {
var PAD0 = 0xEC;
var PAD1 = 0x11;
var _typeNumber = typeNumber;
var _errorCorrectionLevel = QRErrorCorrectionLevel[errorCorrectionLevel];
var _modules = null;
var _moduleCount = 0;
var _dataCache = null;
var _dataList = [];
var _this = {};
var makeImpl = function(test, maskPattern) {
_moduleCount = _typeNumber * 4 + 17;
_modules = function(moduleCount) {
var modules = new Array(moduleCount);
for (var row = 0; row < moduleCount; row += 1) {
modules[row] = new Array(moduleCount);
for (var col = 0; col < moduleCount; col += 1) {
modules[row][col] = null;
}
}
return modules;
}(_moduleCount);
setupPositionProbePattern(0, 0);
setupPositionProbePattern(_moduleCount - 7, 0);
setupPositionProbePattern(0, _moduleCount - 7);
setupPositionAdjustPattern();
setupTimingPattern();
setupTypeInfo(test, maskPattern);
if (_typeNumber >= 7) {
setupTypeNumber(test);
}
if (_dataCache == null) {
_dataCache = createData(_typeNumber, _errorCorrectionLevel, _dataList);
}
mapData(_dataCache, maskPattern);
};
var setupPositionProbePattern = function(row, col) {
for (var r = -1; r <= 7; r += 1) {
if (row + r <= -1 || _moduleCount <= row + r) continue;
for (var c = -1; c <= 7; c += 1) {
if (col + c <= -1 || _moduleCount <= col + c) continue;
if ( (0 <= r && r <= 6 && (c == 0 || c == 6) )
|| (0 <= c && c <= 6 && (r == 0 || r == 6) )
|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {
_modules[row + r][col + c] = true;
} else {
_modules[row + r][col + c] = false;
}
}
}
};
var getBestMaskPattern = function() {
var minLostPoint = 0;
var pattern = 0;
for (var i = 0; i < 8; i += 1) {
makeImpl(true, i);
var lostPoint = QRUtil.getLostPoint(_this);
if (i == 0 || minLostPoint > lostPoint) {
minLostPoint = lostPoint;
pattern = i;
}
}
return pattern;
};
var setupTimingPattern = function() {
for (var r = 8; r < _moduleCount - 8; r += 1) {
if (_modules[r][6] != null) {
continue;
}
_modules[r][6] = (r % 2 == 0);
}
for (var c = 8; c < _moduleCount - 8; c += 1) {
if (_modules[6][c] != null) {
continue;
}
_modules[6][c] = (c % 2 == 0);
}
};
var setupPositionAdjustPattern = function() {
var pos = QRUtil.getPatternPosition(_typeNumber);
for (var i = 0; i < pos.length; i += 1) {
for (var j = 0; j < pos.length; j += 1) {
var row = pos[i];
var col = pos[j];
if (_modules[row][col] != null) {
continue;
}
for (var r = -2; r <= 2; r += 1) {
for (var c = -2; c <= 2; c += 1) {
if (r == -2 || r == 2 || c == -2 || c == 2
|| (r == 0 && c == 0) ) {
_modules[row + r][col + c] = true;
} else {
_modules[row + r][col + c] = false;
}
}
}
}
}
};
var setupTypeNumber = function(test) {
var bits = QRUtil.getBCHTypeNumber(_typeNumber);
for (var i = 0; i < 18; i += 1) {
var mod = (!test && ( (bits >> i) & 1) == 1);
_modules[Math.floor(i / 3)][i % 3 + _moduleCount - 8 - 3] = mod;
}
for (var i = 0; i < 18; i += 1) {
var mod = (!test && ( (bits >> i) & 1) == 1);
_modules[i % 3 + _moduleCount - 8 - 3][Math.floor(i / 3)] = mod;
}
};
var setupTypeInfo = function(test, maskPattern) {
var data = (_errorCorrectionLevel << 3) | maskPattern;
var bits = QRUtil.getBCHTypeInfo(data);
// vertical
for (var i = 0; i < 15; i += 1) {
var mod = (!test && ( (bits >> i) & 1) == 1);
if (i < 6) {
_modules[i][8] = mod;
} else if (i < 8) {
_modules[i + 1][8] = mod;
} else {
_modules[_moduleCount - 15 + i][8] = mod;
}
}
// horizontal
for (var i = 0; i < 15; i += 1) {
var mod = (!test && ( (bits >> i) & 1) == 1);
if (i < 8) {
_modules[8][_moduleCount - i - 1] = mod;
} else if (i < 9) {
_modules[8][15 - i - 1 + 1] = mod;
} else {
_modules[8][15 - i - 1] = mod;
}
}
// fixed module
_modules[_moduleCount - 8][8] = (!test);
};
var mapData = function(data, maskPattern) {
var inc = -1;
var row = _moduleCount - 1;
var bitIndex = 7;
var byteIndex = 0;
var maskFunc = QRUtil.getMaskFunction(maskPattern);
for (var col = _moduleCount - 1; col > 0; col -= 2) {
if (col == 6) col -= 1;
while (true) {
for (var c = 0; c < 2; c += 1) {
if (_modules[row][col - c] == null) {
var dark = false;
if (byteIndex < data.length) {
dark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);
}
var mask = maskFunc(row, col - c);
if (mask) {
dark = !dark;
}
_modules[row][col - c] = dark;
bitIndex -= 1;
if (bitIndex == -1) {
byteIndex += 1;
bitIndex = 7;
}
}
}
row += inc;
if (row < 0 || _moduleCount <= row) {
row -= inc;
inc = -inc;
break;
}
}
}
};
var createBytes = function(buffer, rsBlocks) {
var offset = 0;
var maxDcCount = 0;
var maxEcCount = 0;
var dcdata = new Array(rsBlocks.length);
var ecdata = new Array(rsBlocks.length);
for (var r = 0; r < rsBlocks.length; r += 1) {
var dcCount = rsBlocks[r].dataCount;
var ecCount = rsBlocks[r].totalCount - dcCount;
maxDcCount = Math.max(maxDcCount, dcCount);
maxEcCount = Math.max(maxEcCount, ecCount);
dcdata[r] = new Array(dcCount);
for (var i = 0; i < dcdata[r].length; i += 1) {
dcdata[r][i] = 0xff & buffer.getBuffer()[i + offset];
}
offset += dcCount;
var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
var rawPoly = qrPolynomial(dcdata[r], rsPoly.getLength() - 1);
var modPoly = rawPoly.mod(rsPoly);
ecdata[r] = new Array(rsPoly.getLength() - 1);
for (var i = 0; i < ecdata[r].length; i += 1) {
var modIndex = i + modPoly.getLength() - ecdata[r].length;
ecdata[r][i] = (modIndex >= 0)? modPoly.getAt(modIndex) : 0;
}
}
var totalCodeCount = 0;
for (var i = 0; i < rsBlocks.length; i += 1) {
totalCodeCount += rsBlocks[i].totalCount;
}
var data = new Array(totalCodeCount);
var index = 0;
for (var i = 0; i < maxDcCount; i += 1) {
for (var r = 0; r < rsBlocks.length; r += 1) {
if (i < dcdata[r].length) {
data[index] = dcdata[r][i];
index += 1;
}
}
}
for (var i = 0; i < maxEcCount; i += 1) {
for (var r = 0; r < rsBlocks.length; r += 1) {
if (i < ecdata[r].length) {
data[index] = ecdata[r][i];
index += 1;
}
}
}
return data;
};
var createData = function(typeNumber, errorCorrectionLevel, dataList) {
var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectionLevel);
var buffer = qrBitBuffer();
for (var i = 0; i < dataList.length; i += 1) {
var data = dataList[i];
buffer.put(data.getMode(), 4);
buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );
data.write(buffer);
}
// calc num max data.
var totalDataCount = 0;
for (var i = 0; i < rsBlocks.length; i += 1) {
totalDataCount += rsBlocks[i].dataCount;
}
if (buffer.getLengthInBits() > totalDataCount * 8) {
throw 'code length overflow. ('
+ buffer.getLengthInBits()
+ '>'
+ totalDataCount * 8
+ ')';
}
// end code
if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {
buffer.put(0, 4);
}
// padding
while (buffer.getLengthInBits() % 8 != 0) {
buffer.putBit(false);
}
// padding
while (true) {
if (buffer.getLengthInBits() >= totalDataCount * 8) {
break;
}
buffer.put(PAD0, 8);
if (buffer.getLengthInBits() >= totalDataCount * 8) {
break;
}
buffer.put(PAD1, 8);
}
return createBytes(buffer, rsBlocks);
};
_this.addData = function(data, mode) {
mode = mode || 'Byte';
var newData = null;
switch(mode) {
case 'Numeric' :
newData = qrNumber(data);
break;
case 'Alphanumeric' :
newData = qrAlphaNum(data);
break;
case 'Byte' :
newData = qr8BitByte(data);
break;
case 'Kanji' :
newData = qrKanji(data);
break;
default :
throw 'mode:' + mode;
}
_dataList.push(newData);
_dataCache = null;
};
_this.isDark = function(row, col) {
if (row < 0 || _moduleCount <= row || col < 0 || _moduleCount <= col) {
throw row + ',' + col;
}
return _modules[row][col];
};
_this.getModuleCount = function() {
return _moduleCount;
};
_this.make = function() {
if (_typeNumber < 1) {
var typeNumber = 1;
for (; typeNumber < 40; typeNumber++) {
var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, _errorCorrectionLevel);
var buffer = qrBitBuffer();
for (var i = 0; i < _dataList.length; i++) {
var data = _dataList[i];
buffer.put(data.getMode(), 4);
buffer.put(data.getLength(), QRUtil.getLengthInBits(data.getMode(), typeNumber) );
data.write(buffer);
}
var totalDataCount = 0;
for (var i = 0; i < rsBlocks.length; i++) {
totalDataCount += rsBlocks[i].dataCount;
}
if (buffer.getLengthInBits() <= totalDataCount * 8) {
break;
}
}
_typeNumber = typeNumber;
}
makeImpl(false, getBestMaskPattern() );
};
_this.createTableTag = function(cellSize, margin) {
cellSize = cellSize || 2;
margin = (typeof margin == 'undefined')? cellSize * 4 : margin;
var qrHtml = '';
qrHtml += '<table style="';
qrHtml += ' border-width: 0px; border-style: none;';
qrHtml += ' border-collapse: collapse;';
qrHtml += ' padding: 0px; margin: ' + margin + 'px;';
qrHtml += '">';
qrHtml += '<tbody>';
for (var r = 0; r < _this.getModuleCount(); r += 1) {
qrHtml += '<tr>';
for (var c = 0; c < _this.getModuleCount(); c += 1) {
qrHtml += '<td style="';
qrHtml += ' border-width: 0px; border-style: none;';
qrHtml += ' border-collapse: collapse;';
qrHtml += ' padding: 0px; margin: 0px;';
qrHtml += ' width: ' + cellSize + 'px;';
qrHtml += ' height: ' + cellSize + 'px;';
qrHtml += ' background-color: ';
qrHtml += _this.isDark(r, c)? '#000000' : '#ffffff';
qrHtml += ';';
qrHtml += '"/>';
}
qrHtml += '</tr>';
}
qrHtml += '</tbody>';
qrHtml += '</table>';
return qrHtml;
};
_this.createSvgTag = function(cellSize, margin, alt, title) {
var opts = {};
if (typeof arguments[0] == 'object') {
// Called by options.
opts = arguments[0];
// overwrite cellSize and margin.
cellSize = opts.cellSize;
margin = opts.margin;
alt = opts.alt;
title = opts.title;
}
cellSize = cellSize || 2;
margin = (typeof margin == 'undefined')? cellSize * 4 : margin;
// Compose alt property surrogate
alt = (typeof alt === 'string') ? {text: alt} : alt || {};
alt.text = alt.text || null;
alt.id = (alt.text) ? alt.id || 'qrcode-description' : null;
// Compose title property surrogate
title = (typeof title === 'string') ? {text: title} : title || {};
title.text = title.text || null;
title.id = (title.text) ? title.id || 'qrcode-title' : null;
var size = _this.getModuleCount() * cellSize + margin * 2;
var c, mc, r, mr, qrSvg='', rect;
rect = 'l' + cellSize + ',0 0,' + cellSize +
' -' + cellSize + ',0 0,-' + cellSize + 'z ';
qrSvg += '<svg version="1.1" xmlns="http://www.w3.org/2000/svg"';
qrSvg += !opts.scalable ? ' width="' + size + 'px" height="' + size + 'px"' : '';
qrSvg += ' viewBox="0 0 ' + size + ' ' + size + '" ';
qrSvg += ' preserveAspectRatio="xMinYMin meet"';
qrSvg += (title.text || alt.text) ? ' role="img" aria-labelledby="' +
escapeXml([title.id, alt.id].join(' ').trim() ) + '"' : '';
qrSvg += '>';
qrSvg += (title.text) ? '<title id="' + escapeXml(title.id) + '">' +
escapeXml(title.text) + '</title>' : '';
qrSvg += (alt.text) ? '<description id="' + escapeXml(alt.id) + '">' +
escapeXml(alt.text) + '</description>' : '';
qrSvg += '<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>';
qrSvg += '<path d="';
for (r = 0; r < _this.getModuleCount(); r += 1) {
mr = r * cellSize + margin;
for (c = 0; c < _this.getModuleCount(); c += 1) {
if (_this.isDark(r, c) ) {
mc = c*cellSize+margin;
qrSvg += 'M' + mc + ',' + mr + rect;
}
}
}
qrSvg += '" stroke="transparent" fill="black"/>';
qrSvg += '</svg>';
return qrSvg;
};
_this.createDataURL = function(cellSize, margin) {
cellSize = cellSize || 2;
margin = (typeof margin == 'undefined')? cellSize * 4 : margin;
var size = _this.getModuleCount() * cellSize + margin * 2;
var min = margin;
var max = size - margin;
return createDataURL(size, size, function(x, y) {
if (min <= x && x < max && min <= y && y < max) {
var c = Math.floor( (x - min) / cellSize);
var r = Math.floor( (y - min) / cellSize);
return _this.isDark(r, c)? 0 : 1;
} else {
return 1;
}
} );
};
_this.createImgTag = function(cellSize, margin, alt) {
cellSize = cellSize || 2;
margin = (typeof margin == 'undefined')? cellSize * 4 : margin;
var size = _this.getModuleCount() * cellSize + margin * 2;
var img = '';
img += '<img';
img += '\u0020src="';
img += _this.createDataURL(cellSize, margin);
img += '"';
img += '\u0020width="';
img += size;
img += '"';
img += '\u0020height="';
img += size;
img += '"';
if (alt) {
img += '\u0020alt="';
img += escapeXml(alt);
img += '"';
}
img += '/>';
return img;
};
var escapeXml = function(s) {
var escaped = '';
for (var i = 0; i < s.length; i += 1) {
var c = s.charAt(i);
switch(c) {
case '<': escaped += '<'; break;
case '>': escaped += '>'; break;
case '&': escaped += '&'; break;
case '"': escaped += '"'; break;
default : escaped += c; break;
}
}
return escaped;
};
var _createHalfASCII = function(margin) {
var cellSize = 1;
margin = (typeof margin == 'undefined')? cellSize * 2 : margin;
var size = _this.getModuleCount() * cellSize + margin * 2;
var min = margin;
var max = size - margin;
var y, x, r1, r2, p;
var blocks = {
'██': '█',
'█ ': '▀',
' █': '▄',
' ': ' '
};
var blocksLastLineNoMargin = {
'██': '▀',
'█ ': '▀',
' █': ' ',
' ': ' '
};
var ascii = '';
for (y = 0; y < size; y += 2) {
r1 = Math.floor((y - min) / cellSize);
r2 = Math.floor((y + 1 - min) / cellSize);
for (x = 0; x < size; x += 1) {
p = '█';
if (min <= x && x < max && min <= y && y < max && _this.isDark(r1, Math.floor((x - min) / cellSize))) {
p = ' ';
}
if (min <= x && x < max && min <= y+1 && y+1 < max && _this.isDark(r2, Math.floor((x - min) / cellSize))) {
p += ' ';
}
else {
p += '█';
}
// Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.
ascii += (margin < 1 && y+1 >= max) ? blocksLastLineNoMargin[p] : blocks[p];
}
ascii += '\n';
}
if (size % 2 && margin > 0) {
return ascii.substring(0, ascii.length - size - 1) + Array(size+1).join('▀');
}
return ascii.substring(0, ascii.length-1);
};
_this.createASCII = function(cellSize, margin) {
cellSize = cellSize || 1;
if (cellSize < 2) {
return _createHalfASCII(margin);
}
cellSize -= 1;
margin = (typeof margin == 'undefined')? cellSize * 2 : margin;
var size = _this.getModuleCount() * cellSize + margin * 2;
var min = margin;
var max = size - margin;
var y, x, r, p;
var white = Array(cellSize+1).join('██');
var black = Array(cellSize+1).join(' ');
var ascii = '';
var line = '';
for (y = 0; y < size; y += 1) {
r = Math.floor( (y - min) / cellSize);
line = '';
for (x = 0; x < size; x += 1) {
p = 1;
if (min <= x && x < max && min <= y && y < max && _this.isDark(r, Math.floor((x - min) / cellSize))) {
p = 0;
}
// Output 2 characters per pixel, to create full square. 1 character per pixels gives only half width of square.
line += p ? white : black;
}
for (r = 0; r < cellSize; r += 1) {
ascii += line + '\n';
}
}
return ascii.substring(0, ascii.length-1);
};
_this.renderTo2dContext = function(context, cellSize) {
cellSize = cellSize || 2;
var length = _this.getModuleCount();
for (var row = 0; row < length; row++) {
for (var col = 0; col < length; col++) {
context.fillStyle = _this.isDark(row, col) ? 'black' : 'white';
context.fillRect(col * cellSize, row * cellSize, cellSize, cellSize);
}
}
}
return _this;
};
//---------------------------------------------------------------------
// qrcode.stringToBytes
//---------------------------------------------------------------------
qrcode.stringToBytesFuncs = {
'default' : function(s) {
var bytes = [];
for (var i = 0; i < s.length; i += 1) {
var c = s.charCodeAt(i);
bytes.push(c & 0xff);
}
return bytes;
}
};
qrcode.stringToBytes = qrcode.stringToBytesFuncs['default'];
//---------------------------------------------------------------------
// qrcode.createStringToBytes
//---------------------------------------------------------------------
/**
* @param unicodeData base64 string of byte array.
* [16bit Unicode],[16bit Bytes], ...
* @param numChars
*/
qrcode.createStringToBytes = function(unicodeData, numChars) {
// create conversion map.
var unicodeMap = function() {
var bin = base64DecodeInputStream(unicodeData);
var read = function() {
var b = bin.read();
if (b == -1) throw 'eof';
return b;
};
var count = 0;
var unicodeMap = {};
while (true) {
var b0 = bin.read();
if (b0 == -1) break;
var b1 = read();
var b2 = read();
var b3 = read();
var k = String.fromCharCode( (b0 << 8) | b1);
var v = (b2 << 8) | b3;
unicodeMap[k] = v;
count += 1;
}
if (count != numChars) {
throw count + ' != ' + numChars;
}
return unicodeMap;
}();
var unknownChar = '?'.charCodeAt(0);
return function(s) {
var bytes = [];
for (var i = 0; i < s.length; i += 1) {
var c = s.charCodeAt(i);
if (c < 128) {
bytes.push(c);
} else {
var b = unicodeMap[s.charAt(i)];
if (typeof b == 'number') {
if ( (b & 0xff) == b) {
// 1byte
bytes.push(b);
} else {
// 2bytes
bytes.push(b >>> 8);
bytes.push(b & 0xff);
}
} else {
bytes.push(unknownChar);
}
}
}
return bytes;
};
};
//---------------------------------------------------------------------
// QRMode
//---------------------------------------------------------------------
var QRMode = {
MODE_NUMBER : 1 << 0,
MODE_ALPHA_NUM : 1 << 1,
MODE_8BIT_BYTE : 1 << 2,
MODE_KANJI : 1 << 3
};
//---------------------------------------------------------------------
// QRErrorCorrectionLevel
//---------------------------------------------------------------------
var QRErrorCorrectionLevel = {
L : 1,
M : 0,
Q : 3,
H : 2
};
//---------------------------------------------------------------------
// QRMaskPattern
//---------------------------------------------------------------------
var QRMaskPattern = {
PATTERN000 : 0,
PATTERN001 : 1,
PATTERN010 : 2,
PATTERN011 : 3,
PATTERN100 : 4,
PATTERN101 : 5,
PATTERN110 : 6,
PATTERN111 : 7
};
//---------------------------------------------------------------------
// QRUtil
//---------------------------------------------------------------------
var QRUtil = function() {
var PATTERN_POSITION_TABLE = [
[],
[6, 18],
[6, 22],
[6, 26],
[6, 30],
[6, 34],
[6, 22, 38],
[6, 24, 42],
[6, 26, 46],
[6, 28, 50],
[6, 30, 54],
[6, 32, 58],
[6, 34, 62],
[6, 26, 46, 66],
[6, 26, 48, 70],
[6, 26, 50, 74],
[6, 30, 54, 78],
[6, 30, 56, 82],
[6, 30, 58, 86],
[6, 34, 62, 90],
[6, 28, 50, 72, 94],
[6, 26, 50, 74, 98],
[6, 30, 54, 78, 102],
[6, 28, 54, 80, 106],
[6, 32, 58, 84, 110],
[6, 30, 58, 86, 114],
[6, 34, 62, 90, 118],
[6, 26, 50, 74, 98, 122],
[6, 30, 54, 78, 102, 126],
[6, 26, 52, 78, 104, 130],
[6, 30, 56, 82, 108, 134],
[6, 34, 60, 86, 112, 138],
[6, 30, 58, 86, 114, 142],
[6, 34, 62, 90, 118, 146],
[6, 30, 54, 78, 102, 126, 150],
[6, 24, 50, 76, 102, 128, 154],
[6, 28, 54, 80, 106, 132, 158],
[6, 32, 58, 84, 110, 136, 162],
[6, 26, 54, 82, 110, 138, 166],
[6, 30, 58, 86, 114, 142, 170]
];
var G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);
var G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);
var G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);
var _this = {};
var getBCHDigit = function(data) {
var digit = 0;
while (data != 0) {
digit += 1;
data >>>= 1;
}
return digit;
};
_this.getBCHTypeInfo = function(data) {
var d = data << 10;
while (getBCHDigit(d) - getBCHDigit(G15) >= 0) {
d ^= (G15 << (getBCHDigit(d) - getBCHDigit(G15) ) );
}
return ( (data << 10) | d) ^ G15_MASK;
};
_this.getBCHTypeNumber = function(data) {
var d = data << 12;
while (getBCHDigit(d) - getBCHDigit(G18) >= 0) {
d ^= (G18 << (getBCHDigit(d) - getBCHDigit(G18) ) );
}
return (data << 12) | d;
};
_this.getPatternPosition = function(typeNumber) {
return PATTERN_POSITION_TABLE[typeNumber - 1];
};
_this.getMaskFunction = function(maskPattern) {
switch (maskPattern) {
case QRMaskPattern.PATTERN000 :
return function(i, j) { return (i + j) % 2 == 0; };
case QRMaskPattern.PATTERN001 :
return function(i, j) { return i % 2 == 0; };
case QRMaskPattern.PATTERN010 :
return function(i, j) { return j % 3 == 0; };
case QRMaskPattern.PATTERN011 :
return function(i, j) { return (i + j) % 3 == 0; };
case QRMaskPattern.PATTERN100 :
return function(i, j) { return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0; };
case QRMaskPattern.PATTERN101 :
return function(i, j) { return (i * j) % 2 + (i * j) % 3 == 0; };
case QRMaskPattern.PATTERN110 :
return function(i, j) { return ( (i * j) % 2 + (i * j) % 3) % 2 == 0; };
case QRMaskPattern.PATTERN111 :
return function(i, j) { return ( (i * j) % 3 + (i + j) % 2) % 2 == 0; };
default :
throw 'bad maskPattern:' + maskPattern;
}
};
_this.getErrorCorrectPolynomial = function(errorCorrectLength) {
var a = qrPolynomial([1], 0);
for (var i = 0; i < errorCorrectLength; i += 1) {
a = a.multiply(qrPolynomial([1, QRMath.gexp(i)], 0) );
}
return a;
};
_this.getLengthInBits = function(mode, type) {
if (1 <= type && type < 10) {
// 1 - 9
switch(mode) {
case QRMode.MODE_NUMBER : return 10;
case QRMode.MODE_ALPHA_NUM : return 9;
case QRMode.MODE_8BIT_BYTE : return 8;
case QRMode.MODE_KANJI : return 8;
default :
throw 'mode:' + mode;
}
} else if (type < 27) {
// 10 - 26
switch(mode) {
case QRMode.MODE_NUMBER : return 12;
case QRMode.MODE_ALPHA_NUM : return 11;
case QRMode.MODE_8BIT_BYTE : return 16;
case QRMode.MODE_KANJI : return 10;
default :
throw 'mode:' + mode;
}
} else if (type < 41) {
// 27 - 40
switch(mode) {
case QRMode.MODE_NUMBER : return 14;
case QRMode.MODE_ALPHA_NUM : return 13;
case QRMode.MODE_8BIT_BYTE : return 16;
case QRMode.MODE_KANJI : return 12;
default :
throw 'mode:' + mode;
}
} else {
throw 'type:' + type;
}
};
_this.getLostPoint = function(qrcode) {
var moduleCount = qrcode.getModuleCount();
var lostPoint = 0;
// LEVEL1
for (var row = 0; row < moduleCount; row += 1) {
for (var col = 0; col < moduleCount; col += 1) {
var sameCount = 0;
var dark = qrcode.isDark(row, col);
for (var r = -1; r <= 1; r += 1) {
if (row + r < 0 || moduleCount <= row + r) {
continue;
}
for (var c = -1; c <= 1; c += 1) {
if (col + c < 0 || moduleCount <= col + c) {
continue;
}
if (r == 0 && c == 0) {
continue;
}
if (dark == qrcode.isDark(row + r, col + c) ) {
sameCount += 1;
}
}
}
if (sameCount > 5) {
lostPoint += (3 + sameCount - 5);
}
}
};
// LEVEL2
for (var row = 0; row < moduleCount - 1; row += 1) {
for (var col = 0; col < moduleCount - 1; col += 1) {
var count = 0;
if (qrcode.isDark(row, col) ) count += 1;
if (qrcode.isDark(row + 1, col) ) count += 1;
if (qrcode.isDark(row, col + 1) ) count += 1;
if (qrcode.isDark(row + 1, col + 1) ) count += 1;
if (count == 0 || count == 4) {
lostPoint += 3;
}
}
}
// LEVEL3
for (var row = 0; row < moduleCount; row += 1) {
for (var col = 0; col < moduleCount - 6; col += 1) {
if (qrcode.isDark(row, col)
&& !qrcode.isDark(row, col + 1)
&& qrcode.isDark(row, col + 2)
&& qrcode.isDark(row, col + 3)
&& qrcode.isDark(row, col + 4)
&& !qrcode.isDark(row, col + 5)
&& qrcode.isDark(row, col + 6) ) {
lostPoint += 40;
}
}
}
for (var col = 0; col < moduleCount; col += 1) {
for (var row = 0; row < moduleCount - 6; row += 1) {
if (qrcode.isDark(row, col)
&& !qrcode.isDark(row + 1, col)
&& qrcode.isDark(row + 2, col)
&& qrcode.isDark(row + 3, col)
&& qrcode.isDark(row + 4, col)
&& !qrcode.isDark(row + 5, col)
&& qrcode.isDark(row + 6, col) ) {
lostPoint += 40;
}
}
}
// LEVEL4
var darkCount = 0;
for (var col = 0; col < moduleCount; col += 1) {
for (var row = 0; row < moduleCount; row += 1) {
if (qrcode.isDark(row, col) ) {
darkCount += 1;
}
}
}
var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;
lostPoint += ratio * 10;
return lostPoint;
};
return _this;
}();
//---------------------------------------------------------------------
// QRMath
//---------------------------------------------------------------------
var QRMath = function() {
var EXP_TABLE = new Array(256);
var LOG_TABLE = new Array(256);
// initialize tables
for (var i = 0; i < 8; i += 1) {
EXP_TABLE[i] = 1 << i;
}
for (var i = 8; i < 256; i += 1) {
EXP_TABLE[i] = EXP_TABLE[i - 4]
^ EXP_TABLE[i - 5]
^ EXP_TABLE[i - 6]
^ EXP_TABLE[i - 8];
}
for (var i = 0; i < 255; i += 1) {
LOG_TABLE[EXP_TABLE[i] ] = i;
}
var _this = {};
_this.glog = function(n) {
if (n < 1) {
throw 'glog(' + n + ')';
}
return LOG_TABLE[n];
};
_this.gexp = function(n) {
while (n < 0) {
n += 255;
}
while (n >= 256) {
n -= 255;
}
return EXP_TABLE[n];
};
return _this;
}();
//---------------------------------------------------------------------
// qrPolynomial
//---------------------------------------------------------------------
function qrPolynomial(num, shift) {
if (typeof num.length == 'undefined') {
throw num.length + '/' + shift;
}
var _num = function() {
var offset = 0;
while (offset < num.length && num[offset] == 0) {
offset += 1;
}
var _num = new Array(num.length - offset + shift);
for (var i = 0; i < num.length - offset; i += 1) {
_num[i] = num[i + offset];
}
return _num;
}();
var _this = {};
_this.getAt = function(index) {
return _num[index];
};
_this.getLength = function() {
return _num.length;
};
_this.multiply = function(e) {
var num = new Array(_this.getLength() + e.getLength() - 1);
for (var i = 0; i < _this.getLength(); i += 1) {
for (var j = 0; j < e.getLength(); j += 1) {
num[i + j] ^= QRMath.gexp(QRMath.glog(_this.getAt(i) ) + QRMath.glog(e.getAt(j) ) );
}
}
return qrPolynomial(num, 0);
};
_this.mod = function(e) {
if (_this.getLength() - e.getLength() < 0) {
return _this;
}
var ratio = QRMath.glog(_this.getAt(0) ) - QRMath.glog(e.getAt(0) );
var num = new Array(_this.getLength() );
for (var i = 0; i < _this.getLength(); i += 1) {
num[i] = _this.getAt(i);
}
for (var i = 0; i < e.getLength(); i += 1) {
num[i] ^= QRMath.gexp(QRMath.glog(e.getAt(i) ) + ratio);
}
// recursive call
return qrPolynomial(num, 0).mod(e);
};
return _this;
};
//---------------------------------------------------------------------
// QRRSBlock
//---------------------------------------------------------------------
var QRRSBlock = function() {
var RS_BLOCK_TABLE = [
// L
// M
// Q
// H
// 1
[1, 26, 19],
[1, 26, 16],
[1, 26, 13],
[1, 26, 9],
// 2
[1, 44, 34],
[1, 44, 28],
[1, 44, 22],
[1, 44, 16],
// 3
[1, 70, 55],
[1, 70, 44],
[2, 35, 17],
[2, 35, 13],
// 4
[1, 100, 80],
[2, 50, 32],
[2, 50, 24],
[4, 25, 9],
// 5
[1, 134, 108],
[2, 67, 43],
[2, 33, 15, 2, 34, 16],
[2, 33, 11, 2, 34, 12],
// 6
[2, 86, 68],
[4, 43, 27],
[4, 43, 19],
[4, 43, 15],
// 7
[2, 98, 78],
[4, 49, 31],
[2, 32, 14, 4, 33, 15],
[4, 39, 13, 1, 40, 14],
// 8
[2, 121, 97],
[2, 60, 38, 2, 61, 39],
[4, 40, 18, 2, 41, 19],
[4, 40, 14, 2, 41, 15],
// 9
[2, 146, 116],
[3, 58, 36, 2, 59, 37],
[4, 36, 16, 4, 37, 17],
[4, 36, 12, 4, 37, 13],
// 10
[2, 86, 68, 2, 87, 69],
[4, 69, 43, 1, 70, 44],
[6, 43, 19, 2, 44, 20],
[6, 43, 15, 2, 44, 16],
// 11
[4, 101, 81],
[1, 80, 50, 4, 81, 51],
[4, 50, 22, 4, 51, 23],
[3, 36, 12, 8, 37, 13],
// 12
[2, 116, 92, 2, 117, 93],
[6, 58, 36, 2, 59, 37],
[4, 46, 20, 6, 47, 21],
[7, 42, 14, 4, 43, 15],
// 13
[4, 133, 107],
[8, 59, 37, 1, 60, 38],
[8, 44, 20, 4, 45, 21],
[12, 33, 11, 4, 34, 12],
// 14
[3, 145, 115, 1, 146, 116],
[4, 64, 40, 5, 65, 41],
[11, 36, 16, 5, 37, 17],
[11, 36, 12, 5, 37, 13],
// 15
[5, 109, 87, 1, 110, 88],
[5, 65, 41, 5, 66, 42],
[5, 54, 24, 7, 55, 25],
[11, 36, 12, 7, 37, 13],
// 16
[5, 122, 98, 1, 123, 99],
[7, 73, 45, 3, 74, 46],
[15, 43, 19, 2, 44, 20],
[3, 45, 15, 13, 46, 16],
// 17
[1, 135, 107, 5, 136, 108],
[10, 74, 46, 1, 75, 47],
[1, 50, 22, 15, 51, 23],
[2, 42, 14, 17, 43, 15],
// 18
[5, 150, 120, 1, 151, 121],
[9, 69, 43, 4, 70, 44],
[17, 50, 22, 1, 51, 23],
[2, 42, 14, 19, 43, 15],
// 19
[3, 141, 113, 4, 142, 114],
[3, 70, 44, 11, 71, 45],
[17, 47, 21, 4, 48, 22],
[9, 39, 13, 16, 40, 14],
// 20
[3, 135, 107, 5, 136, 108],
[3, 67, 41, 13, 68, 42],
[15, 54, 24, 5, 55, 25],
[15, 43, 15, 10, 44, 16],
// 21
[4, 144, 116, 4, 145, 117],
[17, 68, 42],
[17, 50, 22, 6, 51, 23],
[19, 46, 16, 6, 47, 17],
// 22
[2, 139, 111, 7, 140, 112],
[17, 74, 46],
[7, 54, 24, 16, 55, 25],
[34, 37, 13],
// 23
[4, 151, 121, 5, 152, 122],
[4, 75, 47, 14, 76, 48],
[11, 54, 24, 14, 55, 25],
[16, 45, 15, 14, 46, 16],
// 24
[6, 147, 117, 4, 148, 118],
[6, 73, 45, 14, 74, 46],
[11, 54, 24, 16, 55, 25],
[30, 46, 16, 2, 47, 17],
// 25
[8, 132, 106, 4, 133, 107],
[8, 75, 47, 13, 76, 48],
[7, 54, 24, 22, 55, 25],
[22, 45, 15, 13, 46, 16],
// 26
[10, 142, 114, 2, 143, 115],
[19, 74, 46, 4, 75, 47],
[28, 50, 22, 6, 51, 23],
[33, 46, 16, 4, 47, 17],
// 27
[8, 152, 122, 4, 153, 123],
[22, 73, 45, 3, 74, 46],
[8, 53, 23, 26, 54, 24],
[12, 45, 15, 28, 46, 16],
// 28
[3, 147, 117, 10, 148, 118],
[3, 73, 45, 23, 74, 46],
[4, 54, 24, 31, 55, 25],
[11, 45, 15, 31, 46, 16],
// 29
[7, 146, 116, 7, 147, 117],
[21, 73, 45, 7, 74, 46],
[1, 53, 23, 37, 54, 24],
[19, 45, 15, 26, 46, 16],
// 30
[5, 145, 115, 10, 146, 116],
[19, 75, 47, 10, 76, 48],
[15, 54, 24, 25, 55, 25],
[23, 45, 15, 25, 46, 16],
// 31
[13, 145, 115, 3, 146, 116],
[2, 74, 46, 29, 75, 47],
[42, 54, 24, 1, 55, 25],
[23, 45, 15, 28, 46, 16],
// 32
[17, 145, 115],
[10, 74, 46, 23, 75, 47],
[10, 54, 24, 35, 55, 25],
[19, 45, 15, 35, 46, 16],
// 33
[17, 145, 115, 1, 146, 116],
[14, 74, 46, 21, 75, 47],
[29, 54, 24, 19, 55, 25],
[11, 45, 15, 46, 46, 16],
// 34
[13, 145, 115, 6, 146, 116],
[14, 74, 46, 23, 75, 47],
[44, 54, 24, 7, 55, 25],
[59, 46, 16, 1, 47, 17],
// 35
[12, 151, 121, 7, 152, 122],
[12, 75, 47, 26, 76, 48],
[39, 54, 24, 14, 55, 25],
[22, 45, 15, 41, 46, 16],
// 36
[6, 151, 121, 14, 152, 122],
[6, 75, 47, 34, 76, 48],
[46, 54, 24, 10, 55, 25],
[2, 45, 15, 64, 46, 16],
// 37
[17, 152, 122, 4, 153, 123],
[29, 74, 46, 14, 75, 47],
[49, 54, 24, 10, 55, 25],
[24, 45, 15, 46, 46, 16],
// 38
[4, 152, 122, 18, 153, 123],
[13, 74, 46, 32, 75, 47],
[48, 54, 24, 14, 55, 25],
[42, 45, 15, 32, 46, 16],
// 39
[20, 147, 117, 4, 148, 118],
[40, 75, 47, 7, 76, 48],
[43, 54, 24, 22, 55, 25],
[10, 45, 15, 67, 46, 16],
// 40
[19, 148, 118, 6, 149, 119],
[18, 75, 47, 31, 76, 48],
[34, 54, 24, 34, 55, 25],
[20, 45, 15, 61, 46, 16]
];
var qrRSBlock = function(totalCount, dataCount) {
var _this = {};
_this.totalCount = totalCount;
_this.dataCount = dataCount;
return _this;
};
var _this = {};
var getRsBlockTable = function(typeNumber, errorCorrectionLevel) {
switch(errorCorrectionLevel) {
case QRErrorCorrectionLevel.L :
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];
case QRErrorCorrectionLevel.M :
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];
case QRErrorCorrectionLevel.Q :
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];
case QRErrorCorrectionLevel.H :
return RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];
default :
return undefined;
}
};
_this.getRSBlocks = function(typeNumber, errorCorrectionLevel) {
var rsBlock = getRsBlockTable(typeNumber, errorCorrectionLevel);
if (typeof rsBlock == 'undefined') {
throw 'bad rs block @ typeNumber:' + typeNumber +
'/errorCorrectionLevel:' + errorCorrectionLevel;
}
var length = rsBlock.length / 3;
var list = [];
for (var i = 0; i < length; i += 1) {
var count = rsBlock[i * 3 + 0];
var totalCount = rsBlock[i * 3 + 1];
var dataCount = rsBlock[i * 3 + 2];
for (var j = 0; j < count; j += 1) {
list.push(qrRSBlock(totalCount, dataCount) );
}
}
return list;
};
return _this;
}();
//---------------------------------------------------------------------
// qrBitBuffer
//---------------------------------------------------------------------
var qrBitBuffer = function() {
var _buffer = [];
var _length = 0;
var _this = {};
_this.getBuffer = function() {
return _buffer;
};
_this.getAt = function(index) {
var bufIndex = Math.floor(index / 8);
return ( (_buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;
};
_this.put = function(num, length) {
for (var i = 0; i < length; i += 1) {
_this.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);
}
};
_this.getLengthInBits = function() {
return _length;
};
_this.putBit = function(bit) {
var bufIndex = Math.floor(_length / 8);
if (_buffer.length <= bufIndex) {
_buffer.push(0);
}
if (bit) {
_buffer[bufIndex] |= (0x80 >>> (_length % 8) );
}
_length += 1;
};
return _this;
};
//---------------------------------------------------------------------
// qrNumber
//---------------------------------------------------------------------
var qrNumber = function(data) {
var _mode = QRMode.MODE_NUMBER;
var _data = data;
var _this = {};
_this.getMode = function() {
return _mode;
};
_this.getLength = function(buffer) {
return _data.length;
};
_this.write = function(buffer) {
var data = _data;
var i = 0;
while (i + 2 < data.length) {
buffer.put(strToNum(data.substring(i, i + 3) ), 10);
i += 3;
}
if (i < data.length) {
if (data.length - i == 1) {
buffer.put(strToNum(data.substring(i, i + 1) ), 4);
} else if (data.length - i == 2) {
buffer.put(strToNum(data.substring(i, i + 2) ), 7);
}
}
};
var strToNum = function(s) {
var num = 0;
for (var i = 0; i < s.length; i += 1) {
num = num * 10 + chatToNum(s.charAt(i) );
}
return num;
};
var chatToNum = function(c) {
if ('0' <= c && c <= '9') {
return c.charCodeAt(0) - '0'.charCodeAt(0);
}
throw 'illegal char :' + c;
};
return _this;
};
//---------------------------------------------------------------------
// qrAlphaNum
//---------------------------------------------------------------------
var qrAlphaNum = function(data) {
var _mode = QRMode.MODE_ALPHA_NUM;
var _data = data;
var _this = {};
_this.getMode = function() {
return _mode;
};
_this.getLength = function(buffer) {
return _data.length;
};
_this.write = function(buffer) {
var s = _data;
var i = 0;
while (i + 1 < s.length) {
buffer.put(
getCode(s.charAt(i) ) * 45 +
getCode(s.charAt(i + 1) ), 11);
i += 2;
}
if (i < s.length) {
buffer.put(getCode(s.charAt(i) ), 6);
}
};
var getCode = function(c) {
if ('0' <= c && c <= '9') {
return c.charCodeAt(0) - '0'.charCodeAt(0);
} else if ('A' <= c && c <= 'Z') {
return c.charCodeAt(0) - 'A'.charCodeAt(0) + 10;
} else {
switch (c) {
case ' ' : return 36;
case '$' : return 37;
case '%' : return 38;
case '*' : return 39;
case '+' : return 40;
case '-' : return 41;
case '.' : return 42;
case '/' : return 43;
case ':' : return 44;
default :
throw 'illegal char :' + c;
}
}
};
return _this;
};
//---------------------------------------------------------------------
// qr8BitByte
//---------------------------------------------------------------------
var qr8BitByte = function(data) {
var _mode = QRMode.MODE_8BIT_BYTE;
var _data = data;
var _bytes = qrcode.stringToBytes(data);
var _this = {};
_this.getMode = function() {
return _mode;
};
_this.getLength = function(buffer) {
return _bytes.length;
};
_this.write = function(buffer) {
for (var i = 0; i < _bytes.length; i += 1) {
buffer.put(_bytes[i], 8);
}
};
return _this;
};
//---------------------------------------------------------------------
// qrKanji
//---------------------------------------------------------------------
var qrKanji = function(data) {
var _mode = QRMode.MODE_KANJI;
var _data = data;
var stringToBytes = qrcode.stringToBytesFuncs['SJIS'];
if (!stringToBytes) {
throw 'sjis not supported.';
}
!function(c, code) {
// self test for sjis support.
var test = stringToBytes(c);
if (test.length != 2 || ( (test[0] << 8) | test[1]) != code) {
throw 'sjis not supported.';
}
}('\u53cb', 0x9746);
var _bytes = stringToBytes(data);
var _this = {};
_this.getMode = function() {
return _mode;
};
_this.getLength = function(buffer) {
return ~~(_bytes.length / 2);
};
_this.write = function(buffer) {
var data = _bytes;
var i = 0;
while (i + 1 < data.length) {
var c = ( (0xff & data[i]) << 8) | (0xff & data[i + 1]);
if (0x8140 <= c && c <= 0x9FFC) {
c -= 0x8140;
} else if (0xE040 <= c && c <= 0xEBBF) {
c -= 0xC140;
} else {
throw 'illegal char at ' + (i + 1) + '/' + c;
}
c = ( (c >>> 8) & 0xff) * 0xC0 + (c & 0xff);
buffer.put(c, 13);
i += 2;
}
if (i < data.length) {
throw 'illegal char at ' + (i + 1);
}
};
return _this;
};
//=====================================================================
// GIF Support etc.
//
//---------------------------------------------------------------------
// byteArrayOutputStream
//---------------------------------------------------------------------
var byteArrayOutputStream = function() {
var _bytes = [];
var _this = {};
_this.writeByte = function(b) {
_bytes.push(b & 0xff);
};
_this.writeShort = function(i) {
_this.writeByte(i);
_this.writeByte(i >>> 8);
};
_this.writeBytes = function(b, off, len) {
off = off || 0;
len = len || b.length;
for (var i = 0; i < len; i += 1) {
_this.writeByte(b[i + off]);
}
};
_this.writeString = function(s) {
for (var i = 0; i < s.length; i += 1) {
_this.writeByte(s.charCodeAt(i) );
}
};
_this.toByteArray = function() {
return _bytes;
};
_this.toString = function() {
var s = '';
s += '[';
for (var i = 0; i < _bytes.length; i += 1) {
if (i > 0) {
s += ',';
}
s += _bytes[i];
}
s += ']';
return s;
};
return _this;
};
//---------------------------------------------------------------------
// base64EncodeOutputStream
//---------------------------------------------------------------------
var base64EncodeOutputStream = function() {
var _buffer = 0;
var _buflen = 0;
var _length = 0;
var _base64 = '';
var _this = {};
var writeEncoded = function(b) {
_base64 += String.fromCharCode(encode(b & 0x3f) );
};
var encode = function(n) {
if (n < 0) {
// error.
} else if (n < 26) {
return 0x41 + n;
} else if (n < 52) {
return 0x61 + (n - 26);
} else if (n < 62) {
return 0x30 + (n - 52);
} else if (n == 62) {
return 0x2b;
} else if (n == 63) {
return 0x2f;
}
throw 'n:' + n;
};
_this.writeByte = function(n) {
_buffer = (_buffer << 8) | (n & 0xff);
_buflen += 8;
_length += 1;
while (_buflen >= 6) {
writeEncoded(_buffer >>> (_buflen - 6) );
_buflen -= 6;
}
};
_this.flush = function() {
if (_buflen > 0) {
writeEncoded(_buffer << (6 - _buflen) );
_buffer = 0;
_buflen = 0;
}
if (_length % 3 != 0) {
// padding
var padlen = 3 - _length % 3;
for (var i = 0; i < padlen; i += 1) {
_base64 += '=';
}
}
};
_this.toString = function() {
return _base64;
};
return _this;
};
//---------------------------------------------------------------------
// base64DecodeInputStream
//---------------------------------------------------------------------
var base64DecodeInputStream = function(str) {
var _str = str;
var _pos = 0;
var _buffer = 0;
var _buflen = 0;
var _this = {};
_this.read = function() {
while (_buflen < 8) {
if (_pos >= _str.length) {
if (_buflen == 0) {
return -1;
}
throw 'unexpected end of file./' + _buflen;
}
var c = _str.charAt(_pos);
_pos += 1;
if (c == '=') {
_buflen = 0;
return -1;
} else if (c.match(/^\s$/) ) {
// ignore if whitespace.
continue;
}
_buffer = (_buffer << 6) | decode(c.charCodeAt(0) );
_buflen += 6;
}
var n = (_buffer >>> (_buflen - 8) ) & 0xff;
_buflen -= 8;
return n;
};
var decode = function(c) {
if (0x41 <= c && c <= 0x5a) {
return c - 0x41;
} else if (0x61 <= c && c <= 0x7a) {
return c - 0x61 + 26;
} else if (0x30 <= c && c <= 0x39) {
return c - 0x30 + 52;
} else if (c == 0x2b) {
return 62;
} else if (c == 0x2f) {
return 63;
} else {
throw 'c:' + c;
}
};
return _this;
};
//---------------------------------------------------------------------
// gifImage (B/W)
//---------------------------------------------------------------------
var gifImage = function(width, height) {
var _width = width;
var _height = height;
var _data = new Array(width * height);
var _this = {};
_this.setPixel = function(x, y, pixel) {
_data[y * _width + x] = pixel;
};
_this.write = function(out) {
//---------------------------------
// GIF Signature
out.writeString('GIF87a');
//---------------------------------
// Screen Descriptor
out.writeShort(_width);
out.writeShort(_height);
out.writeByte(0x80); // 2bit
out.writeByte(0);
out.writeByte(0);
//---------------------------------
// Global Color Map
// black
out.writeByte(0x00);
out.writeByte(0x00);
out.writeByte(0x00);
// white
out.writeByte(0xff);
out.writeByte(0xff);
out.writeByte(0xff);
//---------------------------------
// Image Descriptor
out.writeString(',');
out.writeShort(0);
out.writeShort(0);
out.writeShort(_width);
out.writeShort(_height);
out.writeByte(0);
//---------------------------------
// Local Color Map
//---------------------------------
// Raster Data
var lzwMinCodeSize = 2;
var raster = getLZWRaster(lzwMinCodeSize);
out.writeByte(lzwMinCodeSize);
var offset = 0;
while (raster.length - offset > 255) {
out.writeByte(255);
out.writeBytes(raster, offset, 255);
offset += 255;
}
out.writeByte(raster.length - offset);
out.writeBytes(raster, offset, raster.length - offset);
out.writeByte(0x00);
//---------------------------------
// GIF Terminator
out.writeString(';');
};
var bitOutputStream = function(out) {
var _out = out;
var _bitLength = 0;
var _bitBuffer = 0;
var _this = {};
_this.write = function(data, length) {
if ( (data >>> length) != 0) {
throw 'length over';
}
while (_bitLength + length >= 8) {
_out.writeByte(0xff & ( (data << _bitLength) | _bitBuffer) );
length -= (8 - _bitLength);
data >>>= (8 - _bitLength);
_bitBuffer = 0;
_bitLength = 0;
}
_bitBuffer = (data << _bitLength) | _bitBuffer;
_bitLength = _bitLength + length;
};
_this.flush = function() {
if (_bitLength > 0) {
_out.writeByte(_bitBuffer);
}
};
return _this;
};
var getLZWRaster = function(lzwMinCodeSize) {
var clearCode = 1 << lzwMinCodeSize;
var endCode = (1 << lzwMinCodeSize) + 1;
var bitLength = lzwMinCodeSize + 1;
// Setup LZWTable
var table = lzwTable();
for (var i = 0; i < clearCode; i += 1) {
table.add(String.fromCharCode(i) );
}
table.add(String.fromCharCode(clearCode) );
table.add(String.fromCharCode(endCode) );
var byteOut = byteArrayOutputStream();
var bitOut = bitOutputStream(byteOut);
// clear code
bitOut.write(clearCode, bitLength);
var dataIndex = 0;
var s = String.fromCharCode(_data[dataIndex]);
dataIndex += 1;
while (dataIndex < _data.length) {
var c = String.fromCharCode(_data[dataIndex]);
dataIndex += 1;
if (table.contains(s + c) ) {
s = s + c;
} else {
bitOut.write(table.indexOf(s), bitLength);
if (table.size() < 0xfff) {
if (table.size() == (1 << bitLength) ) {
bitLength += 1;
}
table.add(s + c);
}
s = c;
}
}
bitOut.write(table.indexOf(s), bitLength);
// end code
bitOut.write(endCode, bitLength);
bitOut.flush();
return byteOut.toByteArray();
};
var lzwTable = function() {
var _map = {};
var _size = 0;
var _this = {};
_this.add = function(key) {
if (_this.contains(key) ) {
throw 'dup key:' + key;
}
_map[key] = _size;
_size += 1;
};
_this.size = function() {
return _size;
};
_this.indexOf = function(key) {
return _map[key];
};
_this.contains = function(key) {
return typeof _map[key] != 'undefined';
};
return _this;
};
return _this;
};
var createDataURL = function(width, height, getPixel) {
var gif = gifImage(width, height);
for (var y = 0; y < height; y += 1) {
for (var x = 0; x < width; x += 1) {
gif.setPixel(x, y, getPixel(x, y) );
}
}
var b = byteArrayOutputStream();
gif.write(b);
var base64 = base64EncodeOutputStream();
var bytes = b.toByteArray();
for (var i = 0; i < bytes.length; i += 1) {
base64.writeByte(bytes[i]);
}
base64.flush();
return 'data:image/gif;base64,' + base64;
};
//---------------------------------------------------------------------
// returns qrcode function.
return qrcode;
}();
// multibyte support
!function() {
qrcode.stringToBytesFuncs['UTF-8'] = function(s) {
// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array
function toUTF8Array(str) {
var utf8 = [];
for (var i=0; i < str.length; i++) {
var charcode = str.charCodeAt(i);
if (charcode < 0x80) utf8.push(charcode);
else if (charcode < 0x800) {
utf8.push(0xc0 | (charcode >> 6),
0x80 | (charcode & 0x3f));
}
else if (charcode < 0xd800 || charcode >= 0xe000) {
utf8.push(0xe0 | (charcode >> 12),
0x80 | ((charcode>>6) & 0x3f),
0x80 | (charcode & 0x3f));
}
// surrogate pair
else {
i++;
// UTF-16 encodes 0x10000-0x10FFFF by
// subtracting 0x10000 and splitting the
// 20 bits of 0x0-0xFFFFF into two halves
charcode = 0x10000 + (((charcode & 0x3ff)<<10)
| (str.charCodeAt(i) & 0x3ff));
utf8.push(0xf0 | (charcode >>18),
0x80 | ((charcode>>12) & 0x3f),
0x80 | ((charcode>>6) & 0x3f),
0x80 | (charcode & 0x3f));
}
}
return utf8;
}
return toUTF8Array(s);
};
}();
(function (factory) {
if (typeof define === 'function' && define.amd) {
define([], factory);
} else if (typeof exports === 'object') {
module.exports = factory();
}
}(function () {
return qrcode;
}));
Code: Select all
!function(A){function g(A){"use strict";var g;void 0===(g=A)&&(g={});var I=g;"object"!=typeof I.sodium&&("object"==typeof global?I=global:"object"==typeof window&&(I=window));var C=g;return g.ready=new Promise((function(A,g){(e=C).onAbort=g,e.print=function(A){},e.printErr=function(A){},e.onRuntimeInitialized=function(){try{e._crypto_secretbox_keybytes(),A()}catch(A){g(A)}},e.useBackupModule=function(){return new Promise((function(A,g){(e={}).onAbort=g,e.onRuntimeInitialized=function(){Object.keys(C).forEach((function(A){"getRandomValue"!==A&&delete C[A]})),Object.keys(e).forEach((function(A){C[A]=e[A]})),A()};var I,e=void 0!==e?e:{},B="object"==typeof window,a="function"==typeof importScripts,i="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,r=Object.assign({},e),t="";if(i){var Q=require("fs"),o=require("path");t=__dirname+"/",I=A=>(A=K(A)?new URL(A):o.normalize(A),Q.readFileSync(A)),!e.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),"undefined"!=typeof module&&(module.exports=e)}else(B||a)&&(a?t=self.location.href:"undefined"!=typeof document&&document.currentScript&&(t=document.currentScript.src),t=t.startsWith("blob:")?"":t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1),a&&(I=A=>{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}));e.print;var c,E=e.printErr||void 0;Object.assign(e,r),r=null,e.arguments&&e.arguments,e.thisProgram&&e.thisProgram,e.quit&&e.quit,e.wasmBinary&&(c=e.wasmBinary);var y,_={Memory:function(A){this.buffer=new ArrayBuffer(65536*A.initial)},Module:function(A){},Instance:function(A,g){this.exports=function(A){for(var g,I=new Uint8Array(123),C=25;C>=0;--C)I[48+C]=52+C,I[65+C]=C,I[97+C]=26+C;function e(A,g,C){for(var e,B,a=0,i=g,r=C.length,t=g+(3*r>>2)-("="==C[r-2])-("="==C[r-1]);a<r;a+=4)e=I[C.charCodeAt(a+1)],B=I[C.charCodeAt(a+2)],A[i++]=I[C.charCodeAt(a)]<<2|e>>4,i<t&&(A[i++]=e<<4|B>>2),i<t&&(A[i++]=B<<6|I[C.charCodeAt(a+3)])}function B(){throw new Error("abort")}return I[43]=62,I[47]=63,function(A){var I=new ArrayBuffer(16777216),C=new Int8Array(I),a=(new Int16Array(I),new Int32Array(I)),i=new Uint8Array(I),r=(new Uint16Array(I),new Uint32Array(I)),t=(new Float32Array(I),new Float64Array(I),Math.imul),Q=(Math.fround,Math.abs,Math.clz32),o=(Math.min,Math.max,Math.floor,Math.ceil,Math.trunc,Math.sqrt,A.a),c=o.a,E=o.b,y=o.c,_=o.d,n=103200,h=0;function s(A,g){var I,e,B,a,r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,iA=0,rA=0,tA=0,QA=0,oA=0,cA=0,EA=0,yA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,kA=0,dA=0,lA=0,uA=0,SA=0,bA=0,MA=0;EA=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,_A=t=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,IA=i[g+104|0]|i[g+105|0]<<8|i[g+106|0]<<16|i[g+107|0]<<24,nA=t=i[g+108|0]|i[g+109|0]<<8|i[g+110|0]<<16|i[g+111|0]<<24,t=i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24,z=i[g+64|0]|i[g+65|0]<<8|i[g+66|0]<<16|i[g+67|0]<<24,eA=t,uA=t=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,u=t,rA=i[g+120|0]|i[g+121|0]<<8|i[g+122|0]<<16|i[g+123|0]<<24,fA=t=i[g+124|0]|i[g+125|0]<<8|i[g+126|0]<<16|i[g+127|0]<<24,B=t=i[g+92|0]|i[g+93|0]<<8|i[g+94|0]<<16|i[g+95|0]<<24,I=i[g+88|0]|i[g+89|0]<<8|i[g+90|0]<<16|i[g+91|0]<<24,q=t,iA=i[g+80|0]|i[g+81|0]<<8|i[g+82|0]<<16|i[g+83|0]<<24,sA=t=i[g+84|0]|i[g+85|0]<<8|i[g+86|0]<<16|i[g+87|0]<<24,j=t,BA=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,t=(QA=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24)+u|0,L=(tA=i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24)+(oA=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24)|0,t=(i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24)+(tA>>>0>L>>>0?t+1|0:t)|0,t=(BA=(Q=L)>>>0>(L=L+BA|0)>>>0?t+1|0:t)+_A|0,aA=yA=L+EA|0,yA=t=yA>>>0<L>>>0?t+1|0:t,L=vA(L^(i[A+80|0]|i[A+81|0]<<8|i[A+82|0]<<16|i[A+83|0]<<24)^-79577749,BA^(i[A+84|0]|i[A+85|0]<<8|i[A+86|0]<<16|i[A+87|0]<<24)^528734635,32),kA=t=h,t=t+1013904242|0,BA=L,V=t=(L=L-23791573|0)>>>0<4271175723?t+1|0:t,QA=vA(L^tA,t^QA,40),t=(t=yA)+(yA=h)|0,tA=vA(BA^(s=tA=QA+aA|0),kA^(p=s>>>0<QA>>>0?t+1|0:t),48),t=V+(P=h)|0,k=t=(tA=L+(f=tA)|0)>>>0<L>>>0?t+1|0:t,tA=t=vA(QA^(w=tA),yA^t,1),V=L=h,yA=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,kA=t=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,cA=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,L=(QA=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24)+(BA=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24)|0,t=(SA=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24)+(MA=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24)|0,t=(i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24)+(L>>>0<BA>>>0?t+1|0:t)|0,t=kA+(aA=(Q=L)>>>0>(L=L+cA|0)>>>0?t+1|0:t)|0,t=(cA=L+yA|0)>>>0<L>>>0?t+1|0:t,Q=vA(L^(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)^725511199,aA^(i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24)^-1694144372,32),y=vA(BA^(o=Q-2067093701|0),MA^(x=(Y=L=h)-((Q>>>0<2067093701)+1150833018|0)|0),40),t=(R=h)+t|0,t=(K=(d=L=y+cA|0)>>>0<y>>>0?t+1|0:t)+V|0,t=(d>>>0>(L=d+tA|0)>>>0?t+1|0:t)+j|0,t=(BA=(c=L)>>>0>(L=L+iA|0)>>>0?t+1|0:t)+q|0,J=q=L+I|0,n=t=q>>>0<L>>>0?t+1|0:t,D=tA,DA=V,V=L,aA=BA,tA=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,L=t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,MA=t=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a=BA=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,j=t,t=(dA=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)+(E=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24)|0,t=a+((q=i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24)>>>0>(c=q+(BA=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)|0)>>>0?t+1|0:t)|0,t=(cA=(j=c+j|0)>>>0<c>>>0?t+1|0:t)+L|0,pA=c=j+tA|0,c=t=c>>>0<j>>>0?t+1|0:t,_=q,q=vA(j^(i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)^-1377402159,cA^(i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24)^1359893119,32),cA=t=h,t=t+1779033703|0,j=q,M=t=(q=q-205731576|0)>>>0<4089235720?t+1|0:t,E=vA(_^(l=q),t^E,40),t=(G=h)+c|0,_=vA(j^(c=q=E+pA|0),cA^(v=E>>>0>c>>>0?t+1|0:t),48),t=vA(_^V,(W=h)^aA,32),O=q=h,U=t,e=t=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,cA=pA=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,b=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,q=(aA=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24)+(j=i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24)|0,t=(lA=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24)+(H=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24)|0,t=(i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24)+(q>>>0<j>>>0?t+1|0:t)|0,t=e+(V=(S=q)>>>0>(q=b+q|0)>>>0?t+1|0:t)|0,t=(b=q+cA|0)>>>0<q>>>0?t+1|0:t,V=vA(q^(i[A+88|0]|i[A+89|0]<<8|i[A+90|0]<<16|i[A+91|0]<<24)^327033209,V^(i[A+92|0]|i[A+93|0]<<8|i[A+94|0]<<16|i[A+95|0]<<24)^1541459225,32),j=vA(j^(cA=V+1595750129|0),(S=H)^(H=(F=q=h)-((V>>>0<2699217167)+1521486533|0)|0),40),t=(gA=h)+t|0,q=vA((b=q=j+b|0)^V,F^(S=b>>>0<j>>>0?t+1|0:t),48),t=H+($=h)|0,N=t=(q=cA+(H=q)|0)>>>0<cA>>>0?t+1|0:t,t=O+t|0,X=D^(V=U+(F=q)|0),D=t=V>>>0<F>>>0?t+1|0:t,cA=vA(X,t^DA,40),t=(DA=h)+n|0,q=vA(J=U^(n=q=cA+J|0),O^(U=n>>>0<cA>>>0?t+1|0:t),48),t=D+(CA=h)|0,O=t=(D=V+(J=q)|0)>>>0<V>>>0?t+1|0:t,q=(m=vA(D^cA,DA^t,1))+(V=i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)|0,t=(hA=h)+(DA=i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)|0,wA=q,T=q>>>0<V>>>0?t+1|0:t,Z=nA,q=i[g+96|0]|i[g+97|0]<<8|i[g+98|0]<<16|i[g+99|0]<<24,cA=t=i[g+100|0]|i[g+101|0]<<8|i[g+102|0]<<16|i[g+103|0]<<24,j=(t=s)+(s=vA(F^j,N^gA,1))|0,t=(F=h)+p|0,t=(s>>>0>j>>>0?t+1|0:t)+cA|0,t=(p=(p=j)>>>0>(j=q+j|0)>>>0?t+1|0:t)+Z|0,X=N=j+IA|0,N=t=N>>>0<j>>>0?t+1|0:t,d=vA(Q^d,K^Y,48),K=t=vA(d^j,(Y=h)^p,32),t=M+W|0,t=(gA=j=h)+(l=(j=_+l|0)>>>0<_>>>0?t+1|0:t)|0,M=t=(p=j)>>>0>(_=p+K|0)>>>0?t+1|0:t,s=vA(_^s,F^t,40),t=(W=h)+N|0,t=(F=s>>>0>(N=j=s+X|0)>>>0?t+1|0:t)+T|0,t=(Q=N>>>0>(j=N+wA|0)>>>0?t+1|0:t)+fA|0,wA=T=j+rA|0,T=t=T>>>0<j>>>0?t+1|0:t,X=j,Z=Q,j=i[g+116|0]|i[g+117|0]<<8|i[g+118|0]<<16|i[g+119|0]<<24,g=i[g+112|0]|i[g+113|0]<<8|i[g+114|0]<<16|i[g+115|0]<<24,E=vA(E^p,l^G,1),t=(G=h)+S|0,t=((Q=E+b|0)>>>0<E>>>0?t+1|0:t)+j|0,t=(p=(l=Q)>>>0>(Q=g+Q|0)>>>0?t+1|0:t)+fA|0,bA=l=Q+rA|0,l=t=l>>>0<Q>>>0?t+1|0:t,t=vA(Q^f,p^P,32),AA=Q=h,f=t,p=Q,t=Y+x|0,d=Q=o+d|0,b=t=Q>>>0<o>>>0?t+1|0:t,t=t+p|0,S=Q=Q+f|0,P=t=d>>>0>Q>>>0?t+1|0:t,p=vA(Q^E,G^t,40),t=(G=h)+l|0,f=vA((Q=p+bA|0)^f,AA^(o=Q>>>0<p>>>0?t+1|0:t),48),t=vA(f^X,(bA=h)^Z,32),AA=E=h,l=t,X=E,y=vA(y^d,b^R,1),t=v+(d=h)|0,t=((E=c)>>>0>(c=c+y|0)>>>0?t+1|0:t)+eA|0,t=(c=(E=c+z|0)>>>0<c>>>0?t+1|0:t)+DA|0,Z=v=E+V|0,v=t=v>>>0<E>>>0?t+1|0:t,b=y,E=vA(E^H,c^$,32),t=(H=h)+k|0,w=vA(b^(c=y=E+w|0),(k=E>>>0>c>>>0?t+1|0:t)^d,40),t=($=h)+v|0,d=y=w+Z|0,y=vA(E^y,H^(v=y>>>0<w>>>0?t+1|0:t),48),t=k+(r=h)|0,k=y,H=t=(y=c+y|0)>>>0<c>>>0?t+1|0:t,t=t+X|0,t=(b=y)>>>0>(y=y+l|0)>>>0?t+1|0:t,X=y,y^=m,m=t,E=vA(y,hA^t,40),t=(hA=h)+T|0,T=y=E+wA|0,t=B+(Z=E>>>0>y>>>0?t+1|0:t)|0,wA=y=y+I|0,Y=t=y>>>0<I>>>0?t+1|0:t,y=Q,x=IA,R=nA,Q=vA(K^N,F^gA,48),t=M+(gA=h)|0,K=Q,M=t=(c=_+Q|0)>>>0<_>>>0?t+1|0:t,Q=vA(c^s,W^t,1),t=(_=h)+R|0,t=((s=Q+x|0)>>>0<Q>>>0?t+1|0:t)+o|0,t=lA+(y=(o=y+s|0)>>>0<s>>>0?t+1|0:t)|0,N=s=o+aA|0,s=t=s>>>0<aA>>>0?t+1|0:t,o=vA(o^k,y^r,32),t=O+(F=h)|0,k=o,D=t=(o=D+o|0)>>>0<D>>>0?t+1|0:t,y=vA(Q^o,t^_,40),t=(t=s)+(s=h)|0,_=Q=y+N|0,Q=vA(Q^k,F^(N=Q>>>0<y>>>0?t+1|0:t),48),t=D+(W=h)|0,F=Q,O=t=(D=o+Q|0)>>>0<o>>>0?t+1|0:t,Q=vA(y^D,s^t,1),t=(s=h)+Y|0,t=e+(y=(o=Q+wA|0)>>>0<Q>>>0?t+1|0:t)|0,wA=k=o+pA|0,k=t=k>>>0<pA>>>0?t+1|0:t,Y=Q,x=s,t=P+bA|0,t=(Q=f+S|0)>>>0<f>>>0?t+1|0:t,f=Q,S=t,t=vA(Q^p,G^t,1),p=s=h,Q=t,t=v+j|0,t=((d=g+d|0)>>>0<g>>>0?t+1|0:t)+s|0,t=sA+(d=(s=Q+d|0)>>>0<d>>>0?t+1|0:t)|0,P=v=s+iA|0,v=t=v>>>0<iA>>>0?t+1|0:t,s=vA(s^J,d^CA,32),t=M+(J=h)|0,d=s,M=t=(M=c)>>>0>(c=c+s|0)>>>0?t+1|0:t,s=vA(Q^c,t^p,40),t=(G=h)+v|0,p=Q=s+P|0,Q=vA(v=Q^d,J^(d=Q>>>0<s>>>0?t+1|0:t),48),t=M+(CA=h)|0,M=Q,v=Q=c+Q|0,J=t=Q>>>0<c>>>0?t+1|0:t,P=o,R=y,Q=vA(w^b,H^$,1),t=(c=h)+u|0,t=U+((o=Q+oA|0)>>>0<Q>>>0?t+1|0:t)|0,t=eA+(y=(o=o+n|0)>>>0<n>>>0?t+1|0:t)|0,U=n=o+z|0,n=t=n>>>0<o>>>0?t+1|0:t,w=Q,Q=(o=vA(o^K,y^gA,32))+f|0,t=(f=h)+S|0,y=Q,c=vA(Q^w,(K=Q>>>0<o>>>0?t+1|0:t)^c,40),t=(gA=h)+n|0,n=Q=c+U|0,b=vA(Q^o,f^(U=Q>>>0<c>>>0?t+1|0:t),48),o=vA(b^P,(t=R)^(R=h),32),t=(P=h)+J|0,f=Q=o+v|0,w=vA(Q^Y,(S=Q>>>0<o>>>0?t+1|0:t)^x,40),t=(Y=h)+k|0,k=Q=w+wA|0,Q=vA(Q^o,P^(H=Q>>>0<w>>>0?t+1|0:t),48),t=S+($=h)|0,S=Q,P=t=(o=f)>>>0>(f=f+Q|0)>>>0?t+1|0:t,Q=vA(f^w,Y^t,1),t=fA+(wA=h)|0,Y=Q,bA=Q=rA+Q|0,w=t=Q>>>0<rA>>>0?t+1|0:t,o=EA,Q=vA(s^v,G^J,1),t=N+(s=h)|0,t=((v=_)>>>0>(_=Q+_|0)>>>0?t+1|0:t)+_A|0,t=(v=(o=o+_|0)>>>0<_>>>0?t+1|0:t)+kA|0,x=_=o+yA|0,N=t=_>>>0<o>>>0?t+1|0:t,J=Q,_=vA(l^T,Z^AA,48),t=vA(_^o,(G=h)^v,32),AA=Q=h,l=t,o=Q,t=K+R|0,t=(Q=y+b|0)>>>0<y>>>0?t+1|0:t,y=Q,K=t,t=t+o|0,v=Q=Q+l|0,b=t=y>>>0>Q>>>0?t+1|0:t,o=vA(Q^J,t^s,40),t=(t=N)+(N=h)|0,J=Q=o+x|0,T=t=Q>>>0<o>>>0?t+1|0:t,t=t+w|0,Z=t=(s=Q+bA|0)>>>0<Q>>>0?t+1|0:t,w=t,Q=vA(c^y,K^gA,1),t=L+(c=h)|0,t=d+((y=Q+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=cA+(p=(y=y+p|0)>>>0<p>>>0?t+1|0:t)|0,x=d=y+q|0,d=t=d>>>0<q>>>0?t+1|0:t,K=Q,t=vA(y^F,p^W,32),R=Q=h,y=t,p=Q,t=G+m|0,F=Q=_+X|0,m=t=Q>>>0<_>>>0?t+1|0:t,t=t+p|0,t=(_=Q+y|0)>>>0<Q>>>0?t+1|0:t,Q=_^K,K=t,p=vA(Q,t^c,40),t=(W=h)+d|0,c=Q=p+x|0,X=vA(Q^y,R^(d=Q>>>0<p>>>0?t+1|0:t),48),t=vA(X^s,(gA=h)^w,32),bA=Q=h,x=t,w=Q,Q=vA(E^F,m^hA,1),t=U+(E=h)|0,t=dA+((y=Q+n|0)>>>0<n>>>0?t+1|0:t)|0,t=(n=(y=y+BA|0)>>>0<BA>>>0?t+1|0:t)+SA|0,F=U=y+QA|0,U=t=U>>>0<y>>>0?t+1|0:t,y=vA(y^M,n^CA,32),t=O+(m=h)|0,M=y,n=E,E=t=(y=D+y|0)>>>0<D>>>0?t+1|0:t,n=vA(Q^y,n^t,40),t=(CA=h)+U|0,D=Q=n+F|0,Q=vA(F=Q^M,m^(M=Q>>>0<n>>>0?t+1|0:t),48),t=E+(G=h)|0,E=Q,U=Q=y+Q|0,F=t=Q>>>0<y>>>0?t+1|0:t,t=t+w|0,O=t=(w=Q+x|0)>>>0<Q>>>0?t+1|0:t,y=vA(w^Y,wA^t,40),t=Z+(m=h)|0,t=((Q=y+s|0)>>>0<s>>>0?t+1|0:t)+nA|0,s=Q,Z=Q=Q+IA|0,Y=t=s>>>0>Q>>>0?t+1|0:t,R=eA,s=vA(l^J,T^AA,48),t=(hA=h)+b|0,l=Q=s+v|0,t=vA(Q^o,(v=Q>>>0<s>>>0?t+1|0:t)^N,1),N=o=h,Q=t,t=d+B|0,t=((c=c+I|0)>>>0<I>>>0?t+1|0:t)+o|0,t=(c=(o=Q+c|0)>>>0<c>>>0?t+1|0:t)+R|0,b=d=o+z|0,d=t=d>>>0<o>>>0?t+1|0:t,o=vA(o^E,c^G,32),t=P+(J=h)|0,f=t=(E=o+f|0)>>>0<f>>>0?t+1|0:t,c=vA(Q^E,t^N,40),t=(T=h)+d|0,d=Q=c+b|0,o=vA(Q^o,J^(N=Q>>>0<c>>>0?t+1|0:t),48),t=f+(b=h)|0,J=t=(f=o+E|0)>>>0<E>>>0?t+1|0:t,Q=vA(c^f,T^t,1),t=(T=h)+Y|0,t=DA+((E=Q+Z|0)>>>0<Q>>>0?t+1|0:t)|0,t=(c=(E=E+V|0)>>>0<V>>>0?t+1|0:t)+u|0,wA=u=E+oA|0,u=t=u>>>0<E>>>0?t+1|0:t,P=Q,R=E,G=c,E=EA,Q=vA(n^U,F^CA,1),t=H+(n=h)|0,t=((c=k)>>>0>(k=Q+k|0)>>>0?t+1|0:t)+_A|0,t=SA+(c=(E=E+k|0)>>>0<k>>>0?t+1|0:t)|0,H=k=E+QA|0,U=t=k>>>0<QA>>>0?t+1|0:t,k=Q,c=t=vA(E^s,c^hA,32),t=K+gA|0,t=(F=Q=h)+(_=(Q=_+X|0)>>>0<_>>>0?t+1|0:t)|0,K=t=(s=Q+c|0)>>>0<Q>>>0?t+1|0:t,k=vA(s^k,t^n,40),t=(gA=h)+U|0,U=vA(H=(E=k+H|0)^c,F^(c=E>>>0<k>>>0?t+1|0:t),48),t=vA(U^R,(CA=h)^G,32),hA=n=h,H=t,F=n,Q=vA(Q^p,_^W,1),t=cA+(n=h)|0,t=M+((_=Q+q|0)>>>0<q>>>0?t+1|0:t)|0,t=dA+(D=(_=_+D|0)>>>0<D>>>0?t+1|0:t)|0,R=p=_+BA|0,p=t=p>>>0<BA>>>0?t+1|0:t,M=Q,X=n,_=vA(_^S,D^$,32),t=(S=h)+v|0,n=Q=_+l|0,D=vA(Q^M,(l=Q>>>0<_>>>0?t+1|0:t)^X,40),t=(W=h)+p|0,M=Q=D+R|0,Q=vA(Q^_,S^(v=Q>>>0<D>>>0?t+1|0:t),48),t=l+(R=h)|0,p=Q,l=Q=n+Q|0,S=t=Q>>>0<n>>>0?t+1|0:t,t=t+F|0,F=Q=Q+H|0,_=T,T=t=l>>>0>Q>>>0?t+1|0:t,_=vA(Q^P,_^t,40),t=(t=u)+(u=h)|0,X=Q=_+wA|0,P=t=Q>>>0<_>>>0?t+1|0:t,n=c,Q=vA(x^Z,Y^bA,48),t=O+($=h)|0,O=Q,c=(Q=w+Q|0)^y,y=t=Q>>>0<w>>>0?t+1|0:t,c=vA(c,t^m,1),t=(m=h)+n|0,t=e+((E=c+E|0)>>>0<c>>>0?t+1|0:t)|0,t=(n=(E=E+pA|0)>>>0<pA>>>0?t+1|0:t)+L|0,Z=w=E+tA|0,w=t=w>>>0<E>>>0?t+1|0:t,E=vA(E^p,n^R,32),t=J+(Y=h)|0,J=E,f=t=(n=f+E|0)>>>0<f>>>0?t+1|0:t,c=vA(c^n,m^t,40),t=(t=w)+(w=h)|0,p=E=c+Z|0,E=vA(x=E^J,Y^(J=E>>>0<c>>>0?t+1|0:t),48),t=f+(wA=h)|0,m=E,Z=t=(f=n+E|0)>>>0<n>>>0?t+1|0:t,E=vA(c^f,w^t,1),t=(w=h)+P|0,t=B+((c=E+X|0)>>>0<E>>>0?t+1|0:t)|0,t=j+(n=(c=c+I|0)>>>0<I>>>0?t+1|0:t)|0,bA=Y=g+c|0,Y=t=Y>>>0<g>>>0?t+1|0:t,x=E,R=w,w=c,G=n,E=vA(D^l,S^W,1),t=(n=h)+N|0,t=sA+((c=E+d|0)>>>0<E>>>0?t+1|0:t)|0,t=(D=(c=c+iA|0)>>>0<iA>>>0?t+1|0:t)+j|0,N=d=g+c|0,d=t=d>>>0<c>>>0?t+1|0:t,l=E,c=t=vA(c^O,D^$,32),D=E=h,t=K+CA|0,K=t=(E=s+U|0)>>>0<s>>>0?t+1|0:t,t=t+D|0,t=(s=E)>>>0>(E=E+c|0)>>>0?t+1|0:t,U=E,E^=l,l=t,n=vA(E,t^n,40),t=(W=h)+d|0,D=vA(d=(E=n+N|0)^c,D^(c=E>>>0<n>>>0?t+1|0:t),48),t=vA(D^w,(t=G)^(G=h),32),$=w=h,d=t,N=y,y=o,t=vA(s^k,K^gA,1),S=o=h,s=t,t=v+kA|0,t=((k=M+yA|0)>>>0<yA>>>0?t+1|0:t)+o|0,k=t=(o=s+k|0)>>>0<k>>>0?t+1|0:t,y=vA(o^y,t^b,32),t=(t=N)+(N=h)|0,s=vA((Q=y+Q|0)^s,S^(K=Q>>>0<y>>>0?t+1|0:t),40),t=k+(gA=h)|0,M=s,t=lA+((v=o)>>>0>(o=o+s|0)>>>0?t+1|0:t)|0,v=t=(s=o+aA|0)>>>0<aA>>>0?t+1|0:t,o=vA(y^s,N^t,48),t=K+(CA=h)|0,b=Q,y=o,K=Q=Q+o|0,N=t=b>>>0>Q>>>0?t+1|0:t,t=t+w|0,b=t=(w=Q+d|0)>>>0<Q>>>0?t+1|0:t,Q=(k=vA(w^x,t^R,40))+bA|0,t=(bA=h)+Y|0,S=Q,O=Q>>>0<k>>>0?t+1|0:t,Q=vA(H^X,P^hA,48),t=(H=h)+T|0,F=o=Q+F|0,x=u,u=t=o>>>0<Q>>>0?t+1|0:t,t=vA(o^_,x^t,1),X=o=h,_=t,t=c+e|0,t=((E=E+pA|0)>>>0<pA>>>0?t+1|0:t)+o|0,t=DA+(E=(o=E+_|0)>>>0<E>>>0?t+1|0:t)|0,P=c=o+V|0,c=t=c>>>0<V>>>0?t+1|0:t,o=vA(o^y,E^CA,32),t=Z+(Y=h)|0,T=o,o=(y=f+o|0)^_,_=t=y>>>0<f>>>0?t+1|0:t,E=vA(o,X^t,40),t=(t=c)+(c=h)|0,X=o=E+P|0,o=vA(f=o^T,Y^(T=o>>>0<E>>>0?t+1|0:t),48),t=_+(CA=h)|0,Z=o,y=t=(o=y+o|0)>>>0<y>>>0?t+1|0:t,E=vA(o^E,c^t,1),t=(f=h)+O|0,t=fA+((c=E+S|0)>>>0<E>>>0?t+1|0:t)|0,t=(_=(c=c+rA|0)>>>0<rA>>>0?t+1|0:t)+eA|0,AA=P=c+z|0,P=t=P>>>0<c>>>0?t+1|0:t,Y=E,x=c,R=_,E=vA(M^K,N^gA,1),t=(N=h)+nA|0,t=J+(E>>>0>(c=E+IA|0)>>>0?t+1|0:t)|0,_=t=(c=c+p|0)>>>0<p>>>0?t+1|0:t,t=vA(Q^c,t^H,32),H=Q=h,p=t,t=l+G|0,t=(Q=D+U|0)>>>0<D>>>0?t+1|0:t,D=Q,K=t,t=H+t|0,l=Q=Q+p|0,M=t=D>>>0>Q>>>0?t+1|0:t,Q=vA(Q^E,N^t,40),t=_+(G=h)|0,U=Q,t=cA+((Q=c+Q|0)>>>0<c>>>0?t+1|0:t)|0,t=(Q=Q+q|0)>>>0<q>>>0?t+1|0:t,N=Q,Q^=p,p=t,_=vA(Q,H^t,48),t=vA(_^x,(t=R)^(R=h),32),gA=Q=h,H=t,J=Q,Q=vA(n^D,K^W,1),t=kA+(c=h)|0,t=v+((E=Q+yA|0)>>>0<yA>>>0?t+1|0:t)|0,t=(n=(E=E+s|0)>>>0<s>>>0?t+1|0:t)+L|0,v=D=E+tA|0,D=t=D>>>0<E>>>0?t+1|0:t,s=Q,K=c,Q=(E=vA(E^m,n^wA,32))+F|0,t=(F=h)+u|0,c=Q,n=vA(n=Q^s,(s=Q>>>0<E>>>0?t+1|0:t)^K,40),t=(W=h)+D|0,D=Q=n+v|0,E=vA(Q^E,F^(u=Q>>>0<n>>>0?t+1|0:t),48),t=s+(K=h)|0,v=Q=E+c|0,F=t=Q>>>0<c>>>0?t+1|0:t,t=t+J|0,J=t=(s=Q+H|0)>>>0<Q>>>0?t+1|0:t,c=vA(s^Y,t^f,40),t=(m=h)+P|0,P=Q=c+AA|0,Y=t=Q>>>0<c>>>0?t+1|0:t,Q=o,f=y,y=E,o=vA(d^S,O^$,48),t=b+(AA=h)|0,d=o,w=t=(E=w+o|0)>>>0<w>>>0?t+1|0:t,t=vA(E^k,bA^t,1),b=o=h,k=t,t=p+uA|0,t=((p=N+oA|0)>>>0<oA>>>0?t+1|0:t)+o|0,p=t=(o=p+k|0)>>>0<p>>>0?t+1|0:t,y=vA(o^y,t^K,32),t=(N=h)+f|0,k=vA((Q=y+Q|0)^k,b^(f=Q>>>0<y>>>0?t+1|0:t),40),t=p+(S=h)|0,t=dA+((p=o)>>>0>(o=o+k|0)>>>0?t+1|0:t)|0,K=t=(p=o+BA|0)>>>0<BA>>>0?t+1|0:t,o=vA(y^p,N^t,48),t=f+($=h)|0,N=o,b=t=(f=Q+o|0)>>>0<Q>>>0?t+1|0:t,Q=vA(f^k,S^t,1),t=(k=h)+Y|0,t=sA+((o=Q+P|0)>>>0<Q>>>0?t+1|0:t)|0,t=fA+(y=(o=o+iA|0)>>>0<iA>>>0?t+1|0:t)|0,hA=S=o+rA|0,S=t=S>>>0<rA>>>0?t+1|0:t,O=Q,x=o,Q=vA(n^v,F^W,1),t=(n=h)+T|0,t=SA+((o=Q+X|0)>>>0<Q>>>0?t+1|0:t)|0,t=lA+(v=(o=o+QA|0)>>>0<QA>>>0?t+1|0:t)|0,X=F=o+aA|0,F=t=F>>>0<aA>>>0?t+1|0:t,T=Q,t=vA(o^d,v^AA,32),AA=Q=h,o=t,t=M+R|0,l=Q=_+l|0,d=t=Q>>>0<_>>>0?t+1|0:t,t=AA+t|0,M=t=(_=Q+o|0)>>>0<Q>>>0?t+1|0:t,n=vA(_^T,t^n,40),t=(R=h)+F|0,v=Q=n+X|0,T=vA(Q^o,AA^(F=Q>>>0<n>>>0?t+1|0:t),48),t=vA(T^x,(AA=h)^y,32),W=Q=h,X=t,y=Q,o=EA,Q=vA(l^U,d^G,1),t=u+(d=h)|0,t=((l=D)>>>0>(D=Q+D|0)>>>0?t+1|0:t)+_A|0,t=sA+(D=(o=o+D|0)>>>0<D>>>0?t+1|0:t)|0,l=u=o+iA|0,u=t=u>>>0<iA>>>0?t+1|0:t,o=vA(o^Z,D^CA,32),t=w+(U=h)|0,w=o,t=(o=E+o|0)>>>0<E>>>0?t+1|0:t,E=d,d=t,E=vA(Q^o,E^t,40),t=(G=h)+u|0,D=Q=E+l|0,Q=vA(Q^w,U^(u=Q>>>0<E>>>0?t+1|0:t),48),t=d+(x=h)|0,d=Q,l=Q=o+Q|0,U=t=Q>>>0<o>>>0?t+1|0:t,t=t+y|0,t=(w=Q+X|0)>>>0<Q>>>0?t+1|0:t,Q=w^O,O=t,k=vA(Q,t^k,40),t=(CA=h)+S|0,S=Q=k+hA|0,Z=Q>>>0<k>>>0?t+1|0:t,Q=vA(H^P,Y^gA,48),t=J+(gA=h)|0,H=Q,t=(Q=s+Q|0)>>>0<s>>>0?t+1|0:t,s=Q,J=t,t=vA(Q^c,t^m,1),m=Q=h,y=t,t=F+DA|0,t=((o=v+V|0)>>>0<V>>>0?t+1|0:t)+Q|0,t=dA+(o=(Q=o+y|0)>>>0<o>>>0?t+1|0:t)|0,v=c=Q+BA|0,c=t=c>>>0<BA>>>0?t+1|0:t,Q=vA(Q^d,o^x,32),t=b+(F=h)|0,d=Q,f=t=(o=f+Q|0)>>>0<f>>>0?t+1|0:t,y=vA(o^y,m^t,40),t=(m=h)+c|0,v=Q=y+v|0,Q=vA(c=Q^d,F^(d=Q>>>0<y>>>0?t+1|0:t),48),t=f+(hA=h)|0,f=Q,b=t=(c=o+Q|0)>>>0<o>>>0?t+1|0:t,Q=vA(c^y,m^t,1),t=(F=h)+Z|0,t=kA+((o=Q+S|0)>>>0<Q>>>0?t+1|0:t)|0,t=(y=(o=o+yA|0)>>>0<yA>>>0?t+1|0:t)+nA|0,wA=m=o+IA|0,m=t=m>>>0<o>>>0?t+1|0:t,P=Q,Y=o,x=y,Q=vA(E^l,G^U,1),t=SA+(y=h)|0,t=K+((o=Q+QA|0)>>>0<QA>>>0?t+1|0:t)|0,t=uA+(E=(o=o+p|0)>>>0<p>>>0?t+1|0:t)|0,U=p=o+oA|0,p=t=p>>>0<oA>>>0?t+1|0:t,K=Q,l=y,t=vA(o^H,E^gA,32),H=Q=h,E=t,o=Q,t=M+AA|0,t=(Q=_+T|0)>>>0<_>>>0?t+1|0:t,_=Q,M=t,t=t+o|0,t=(y=Q+E|0)>>>0<Q>>>0?t+1|0:t,Q=y^K,K=t,Q=vA(Q,t^l,40),t=(t=p)+(p=h)|0,l=o=Q+U|0,U=t=o>>>0<Q>>>0?t+1|0:t,H=vA(o^E,H^t,48),t=vA(H^Y,(t=x)^(x=h),32),G=o=h,T=t,o=vA(_^n,M^R,1),t=(_=h)+_A|0,t=u+((E=o+EA|0)>>>0<o>>>0?t+1|0:t)|0,t=e+(n=(E=E+D|0)>>>0<D>>>0?t+1|0:t)|0,R=D=E+pA|0,D=t=D>>>0<pA>>>0?t+1|0:t,u=o,M=_,E=vA(E^N,n^$,32),t=(N=h)+J|0,_=o=E+s|0,o=(n=vA(o^u,(s=o>>>0<E>>>0?t+1|0:t)^M,40))+R|0,t=(R=h)+D|0,u=o,o=vA(o^E,N^(M=o>>>0<n>>>0?t+1|0:t),48),t=s+(AA=h)|0,N=o,J=o=_+o|0,Y=t=o>>>0<_>>>0?t+1|0:t,t=G+t|0,t=(E=o+T|0)>>>0<o>>>0?t+1|0:t,o=F,F=t,_=vA(E^P,o^t,40),t=(gA=h)+m|0,D=o=_+wA|0,t=vA(o^T,G^(m=o>>>0<_>>>0?t+1|0:t),48),G=o=h,T=t,o=Q,t=K+x|0,K=Q=y+H|0,H=t=Q>>>0<y>>>0?t+1|0:t,t=vA(Q^o,t^p,1),y=o=h,Q=t,t=M+B|0,t=((s=u+I|0)>>>0<I>>>0?t+1|0:t)+o|0,t=cA+(s=(o=Q+s|0)>>>0<s>>>0?t+1|0:t)|0,x=p=o+q|0,p=t=p>>>0<q>>>0?t+1|0:t,u=Q,M=y,Q=vA(S^X,Z^W,48),t=O+(W=h)|0,S=Q,t=(Q=w+Q|0)>>>0<w>>>0?t+1|0:t,w=Q,o=vA(o^f,s^hA,32),O=t,t=t+(X=h)|0,y=Q=o+Q|0,s=vA(Q^u,(f=Q>>>0<o>>>0?t+1|0:t)^M,40),t=(Z=h)+p|0,p=Q=s+x|0,Q=vA(Q^o,X^(u=Q>>>0<s>>>0?t+1|0:t),48),t=f+($=h)|0,M=Q,X=t=(f=y+Q|0)>>>0<y>>>0?t+1|0:t,Q=vA(s^f,Z^t,1),t=dA+(x=h)|0,Z=Q,hA=Q=BA+Q|0,y=t=Q>>>0<BA>>>0?t+1|0:t,Q=vA(k^w,O^CA,1),t=(s=h)+U|0,t=lA+((o=Q+l|0)>>>0<Q>>>0?t+1|0:t)|0,t=eA+(w=(o=o+aA|0)>>>0<aA>>>0?t+1|0:t)|0,O=k=o+z|0,k=t=k>>>0<z>>>0?t+1|0:t,l=s,o=vA(o^N,w^AA,32),t=b+(AA=h)|0,U=o,t=(s=c+o|0)>>>0<c>>>0?t+1|0:t,c=l,l=t,w=vA(Q^s,c^t,40),t=(CA=h)+k|0,N=Q=w+O|0,t=(b=Q>>>0<w>>>0?t+1|0:t)+y|0,k=t=(y=Q+hA|0)>>>0<Q>>>0?t+1|0:t,O=t=vA(y^T,t^G,32),P=Q=h,Q=vA(n^J,Y^R,1),t=(c=h)+d|0,t=j+((o=Q+v|0)>>>0<Q>>>0?t+1|0:t)|0,t=(n=(o=g+o|0)>>>0<g>>>0?t+1|0:t)+L|0,Y=d=o+tA|0,d=t=d>>>0<o>>>0?t+1|0:t,v=Q,J=c,o=vA(o^S,n^W,32),t=(S=h)+H|0,c=Q=o+K|0,Q=(n=vA(Q^v,(K=Q>>>0<o>>>0?t+1|0:t)^J,40))+Y|0,t=(Y=h)+d|0,d=Q,Q=vA(Q^o,S^(v=Q>>>0<n>>>0?t+1|0:t),48),t=K+(W=h)|0,K=Q,S=t=(Q=c+Q|0)>>>0<c>>>0?t+1|0:t,t=t+P|0,H=t=(c=Q)>>>0>(Q=Q+O|0)>>>0?t+1|0:t,o=vA(Q^Z,x^t,40),t=k+(x=h)|0,J=o,t=B+((o=y+o|0)>>>0<y>>>0?t+1|0:t)|0,Z=o=o+I|0,y=o^O,O=t=o>>>0<I>>>0?t+1|0:t,o=vA(y,P^t,48),t=H+(P=h)|0,H=t=(k=Q+o|0)>>>0<Q>>>0?t+1|0:t,Q=t=vA(k^J,x^t,1),J=y=h,y=vA(c^n,S^Y,1),t=u+(n=h)|0,t=lA+((c=y+p|0)>>>0<p>>>0?t+1|0:t)|0,t=sA+(p=(c=c+aA|0)>>>0<aA>>>0?t+1|0:t)|0,x=u=c+iA|0,u=t=u>>>0<iA>>>0?t+1|0:t,S=y,Y=n,t=F+G|0,t=(y=E+T|0)>>>0<E>>>0?t+1|0:t,F=y,U=vA(N^U,b^AA,48),n=vA(c^U,p^(AA=h),32),N=t,t=t+(hA=h)|0,p=y=n+y|0,y=vA(y^S,(b=y>>>0<n>>>0?t+1|0:t)^Y,40),t=(S=h)+u|0,Y=t=(E=y+x|0)>>>0<y>>>0?t+1|0:t,t=t+J|0,t=e+((T=E)>>>0>(E=Q+E|0)>>>0?t+1|0:t)|0,t=(c=(E=E+pA|0)>>>0<pA>>>0?t+1|0:t)+_A|0,wA=u=E+EA|0,x=t=u>>>0<E>>>0?t+1|0:t,R=Q,G=E,t=vA(_^F,N^gA,1),_=E=h,Q=t,t=v+SA|0,t=((u=d+QA|0)>>>0<QA>>>0?t+1|0:t)+E|0,t=cA+(u=(E=Q+u|0)>>>0<u>>>0?t+1|0:t)|0,N=d=E+q|0,d=t=d>>>0<q>>>0?t+1|0:t,v=Q,t=vA(E^M,u^$,32),F=Q=h,E=t,u=Q,t=l+AA|0,l=Q=s+U|0,M=t=Q>>>0<s>>>0?t+1|0:t,t=t+u|0,t=(s=Q+E|0)>>>0<Q>>>0?t+1|0:t,Q=s^v;v=t,u=vA(Q,t^_,40),t=(AA=h)+d|0,U=vA(d=(Q=u+N|0)^E,F^(E=Q>>>0<u>>>0?t+1|0:t),48),t=vA(t=U^G,(G=h)^c,32),gA=c=h,N=t,d=c,c=vA(w^l,M^CA,1),t=eA+(w=h)|0,t=m+((_=c+z|0)>>>0<z>>>0?t+1|0:t)|0,t=kA+(D=(_=_+D|0)>>>0<D>>>0?t+1|0:t)|0,M=l=_+yA|0,l=t=l>>>0<yA>>>0?t+1|0:t,_=vA(_^K,D^W,32),t=X+(F=h)|0,K=_,f=t=(_=f+_|0)>>>0<f>>>0?t+1|0:t,D=vA(c^_,t^w,40),t=(W=h)+l|0,w=c=D+M|0,c=vA(l=c^K,F^(K=c>>>0<D>>>0?t+1|0:t),48),t=f+($=h)|0,l=c,M=c=_+c|0,F=t=c>>>0<_>>>0?t+1|0:t,t=t+d|0,t=(_=c+N|0)>>>0<c>>>0?t+1|0:t,c=J,J=t,f=vA(_^R,c^t,40),t=(m=h)+x|0,d=c=f+wA|0,c=vA(x=c^N,gA^(N=c>>>0<f>>>0?t+1|0:t),48),t=J+(gA=h)|0,J=c,_=t=(c=_+c|0)>>>0<_>>>0?t+1|0:t,m=t=vA(c^f,m^t,1),CA=t,X=f=h,f=E,E=y,y=vA(n^T,Y^hA,48),t=b+(hA=h)|0,b=y,t=(y=p+y|0)>>>0<p>>>0?t+1|0:t,p=Q,Q=E^y,E=t,Q=vA(Q,t^S,1),t=(S=h)+f|0,t=uA+(Q>>>0>(n=p+Q|0)>>>0?t+1|0:t)|0,t=nA+(p=(n=n+oA|0)>>>0<oA>>>0?t+1|0:t)|0,T=f=n+IA|0,f=t=f>>>0<IA>>>0?t+1|0:t,n=vA(n^l,p^$,32),t=H+(Y=h)|0,l=t=(p=n+k|0)>>>0<k>>>0?t+1|0:t,k=vA(Q^p,S^t,40),t=($=h)+f|0,S=Q=k+T|0,n=vA(Q^n,Y^(H=Q>>>0<k>>>0?t+1|0:t),48),t=l+(T=h)|0,Y=Q=n+p|0,l=Q,x=t=Q>>>0<p>>>0?t+1|0:t,p=y,f=E,t=v+G|0,t=(Q=s+U|0)>>>0<s>>>0?t+1|0:t,s=Q,Q^=u,u=t,t=vA(Q,AA^t,1),R=Q=h,v=t,E=t,t=K+L|0,t=((y=w+tA|0)>>>0<tA>>>0?t+1|0:t)+Q|0,w=t=(Q=y)>>>0>(y=E+y|0)>>>0?t+1|0:t,E=vA(o^y,t^P,32),t=(t=f)+(f=h)|0,U=Q=E+p|0,o=vA(o=Q^v,R^(v=Q>>>0<E>>>0?t+1|0:t),40),t=w+(P=h)|0,t=DA+((Q=o+y|0)>>>0<y>>>0?t+1|0:t)|0,R=t=(p=Q+V|0)>>>0<V>>>0?t+1|0:t,f=vA(E^p,f^t,48),wA=t=h,Q=vA(D^M,F^W,1),t=(E=h)+O|0,t=fA+((y=Q+Z|0)>>>0<Q>>>0?t+1|0:t)|0,t=j+(D=(y=y+rA|0)>>>0<rA>>>0?t+1|0:t)|0,O=w=g+y|0,M=t=w>>>0<g>>>0?t+1|0:t,F=Q,w=vA(y^b,D^hA,32),t=(W=h)+u|0,u=Q=w+s|0,y=vA(Q^F,(b=Q>>>0<w>>>0?t+1|0:t)^E,40),t=(t=M)+(M=h)|0,F=Q=y+O|0,O=t=Q>>>0<y>>>0?t+1|0:t,E=t,t=j+X|0,t=((D=g+m|0)>>>0<g>>>0?t+1|0:t)+E|0,K=t=(E=Q+D|0)>>>0<D>>>0?t+1|0:t,Q=vA(E^f,wA^t,32),t=(m=h)+x|0,s=vA((D=Q+l|0)^CA,(t=D>>>0<Q>>>0?t+1|0:t)^X,40),X=t,t=nA+(l=h)|0,t=K+((Z=s+IA|0)>>>0<IA>>>0?t+1|0:t)|0,t=(K=E+Z|0)>>>0<E>>>0?t+1|0:t,E=m,m=t,E=vA(Q^K,E^t,48),t=(t=X)+(X=h)|0,Q=s^(D=E+D|0),s=t=D>>>0<E>>>0?t+1|0:t,Z=t=vA(Q,t^l,1),CA=t,G=Q=h,l=c,AA=_,c=y,y=vA(w^F,O^W,48),t=b+(F=h)|0,w=Q=y+u|0,u=t=Q>>>0<u>>>0?t+1|0:t,c=vA(Q^c,t^M,1),t=(O=h)+uA|0,t=R+((Q=c+oA|0)>>>0<c>>>0?t+1|0:t)|0,p=t=(_=Q+p|0)>>>0<p>>>0?t+1|0:t,Q=vA(_^n,t^T,32),t=(M=h)+AA|0,l=n=Q+l|0,b=t=n>>>0<Q>>>0?t+1|0:t,c=vA(c^n,t^O,40),t=sA+(hA=h)|0,O=c,t=p+((c=iA+c|0)>>>0<iA>>>0?t+1|0:t)|0,_=t=(c=c+_|0)>>>0<_>>>0?t+1|0:t,n=vA(Q^c,t^M,48),t=(t=b)+(b=h)|0,T=Q=n+l|0,M=Q,R=t=Q>>>0<n>>>0?t+1|0:t,t=v+wA|0,l=(Q=f+U|0)^o,o=t=Q>>>0<f>>>0?t+1|0:t,t=vA(l,t^P,1),P=p=h,l=t,t=H+cA|0,t=((f=S+q|0)>>>0<q>>>0?t+1|0:t)+p|0,v=t=(v=f)>>>0>(f=f+l|0)>>>0?t+1|0:t,U=p=vA(f^J,gA^t,32),S=t=h,t=t+u|0,H=p=p+w|0,J=t=U>>>0>p>>>0?t+1|0:t,p=vA(p^l,P^t,40),t=_A+(P=h)|0,t=v+((w=p+EA|0)>>>0<EA>>>0?t+1|0:t)|0,w=t=(l=f)>>>0>(f=f+w|0)>>>0?t+1|0:t,l=vA(f^U,t^S,48),gA=t=h,u=t,k=vA(k^Y,x^$,1),v=t=h,U=y,t=t+L|0,t=N+((y=k+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=(y=y+d|0)>>>0<d>>>0?t+1|0:t,d=y^U,U=t,d=vA(d,t^F,32),t=($=h)+o|0,N=Q=d+Q|0,o=vA(Q^k,(o=v)^(v=Q>>>0<d>>>0?t+1|0:t),40),t=fA+(S=h)|0,t=U+((Q=o+rA|0)>>>0<rA>>>0?t+1|0:t)|0,U=Q=Q+y|0,F=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+lA|0,t=((k=Z+aA|0)>>>0<aA>>>0?t+1|0:t)+y|0,Z=t=(y=Q+k|0)>>>0<k>>>0?t+1|0:t,Q=vA(y^l,t^u,32),t=(Y=h)+R|0,u=vA((k=Q+M|0)^CA,(t=k>>>0<Q>>>0?t+1|0:t)^G,40),x=M=h,G=t,t=M+kA|0,t=Z+((M=u+yA|0)>>>0<yA>>>0?t+1|0:t)|0,Z=t=(M=y+M|0)>>>0<y>>>0?t+1|0:t,y=vA(Q^M,t^Y,48),t=(Y=h)+G|0,Q=(k=y+k|0)^u,u=t=k>>>0<y>>>0?t+1|0:t,x=t=vA(Q,t^x,1),G=Q=h,AA=D,W=n,n=o,o=vA(d^U,F^$,48),t=(d=h)+v|0,v=Q=o+N|0,U=t=Q>>>0<o>>>0?t+1|0:t,n=vA(Q^n,t^S,1),t=(S=h)+dA|0,t=((Q=n+BA|0)>>>0<n>>>0?t+1|0:t)+w|0,f=t=(D=Q+f|0)>>>0<Q>>>0?t+1|0:t,Q=vA(D^W,t^b,32),t=(w=h)+s|0,N=s=Q+AA|0,b=t=s>>>0<Q>>>0?t+1|0:t,n=vA(n^s,t^S,40),t=e+(W=h)|0,S=n,t=f+((n=pA+n|0)>>>0<pA>>>0?t+1|0:t)|0,F=t=(s=n+D|0)>>>0<D>>>0?t+1|0:t,n=vA(Q^s,t^w,48),t=(t=b)+(b=h)|0,N=Q=n+N|0,AA=t=Q>>>0<n>>>0?t+1|0:t,f=E,D=c,t=J+gA|0,E=t=(Q=l+H|0)>>>0<l>>>0?t+1|0:t,c=vA(Q^p,t^P,1),t=(p=h)+eA|0,t=((w=c+z|0)>>>0<c>>>0?t+1|0:t)+_|0,_=vA(f^(D=D+w|0),(t=D>>>0<w>>>0?t+1|0:t)^X,32),w=t,l=c,t=(f=h)+U|0,t=(c=_+v|0)>>>0<_>>>0?t+1|0:t,v=c,c^=l,l=t,c=vA(c,t^p,40),t=B+(U=h)|0,t=((p=c+I|0)>>>0<I>>>0?t+1|0:t)+w|0,H=t=(w=p)>>>0>(p=p+D|0)>>>0?t+1|0:t,f=vA(_^p,t^f,48),gA=t=h,D=t,_=vA(T^O,R^hA,1),J=t=h,O=E,t=t+DA|0,t=m+((E=_+V|0)>>>0<V>>>0?t+1|0:t)|0,w=d,d=t=(E=E+K|0)>>>0<K>>>0?t+1|0:t,w=vA(o^E,w^t,32),t=($=h)+O|0,K=Q=w+Q|0,o=vA(Q^_,(o=J)^(J=Q>>>0<w>>>0?t+1|0:t),40),t=SA+(O=h)|0,t=d+((Q=o+QA|0)>>>0<QA>>>0?t+1|0:t)|0,m=Q=Q+E|0,T=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+cA|0,t=((_=q+x|0)>>>0<q>>>0?t+1|0:t)+E|0,d=t=(E=Q+_|0)>>>0<_>>>0?t+1|0:t,Q=vA(E^f,t^D,32),t=(X=h)+AA|0,D=vA((_=Q+N|0)^x,(t=_>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=L+(P=h)|0,t=d+((R=D+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=(d=E+R|0)>>>0<E>>>0?t+1|0:t,E=X,X=t,E=vA(Q^d,E^t,48),t=(t=x)+(x=h)|0,Q=(_=E+_|0)^D,D=t=_>>>0<E>>>0?t+1|0:t,P=t=vA(Q,t^P,1),R=Q=h,G=n,n=o,o=vA(w^m,T^$,48),t=(t=J)+(J=h)|0,K=Q=o+K|0,w=O,O=t=Q>>>0<o>>>0?t+1|0:t,n=vA(Q^n,w^t,1),t=(m=h)+kA|0,t=H+((Q=n+yA|0)>>>0<n>>>0?t+1|0:t)|0,w=p,p=Q+p|0,Q=b,b=t=w>>>0>p>>>0?t+1|0:t,Q=vA(p^G,Q^t,32),t=(t=u)+(u=h)|0,H=t=(w=Q+k|0)>>>0<Q>>>0?t+1|0:t,k=w,n=vA(n^w,t^m,40),t=DA+($=h)|0,m=n,t=b+((n=V+n|0)>>>0<V>>>0?t+1|0:t)|0,b=t=(w=n+p|0)>>>0<p>>>0?t+1|0:t,n=vA(Q^w,t^u,48),t=(t=H)+(H=h)|0,T=Q=n+k|0,G=t=Q>>>0<n>>>0?t+1|0:t,k=y,t=l+gA|0,y=t=(Q=f+v|0)>>>0<f>>>0?t+1|0:t,c=vA(Q^c,t^U,1),t=nA+(f=h)|0,t=F+((p=c+IA|0)>>>0<IA>>>0?t+1|0:t)|0,l=(p=s+p|0)^k,k=t=p>>>0<s>>>0?t+1|0:t,s=vA(l,t^Y,32),u=t=h,l=c,t=t+O|0,t=(c=s+K|0)>>>0<s>>>0?t+1|0:t,v=c,c^=l,l=t,c=vA(c,t^f,40),t=B+(U=h)|0,t=k+((f=c+I|0)>>>0<I>>>0?t+1|0:t)|0,F=t=(f=p+f|0)>>>0<p>>>0?t+1|0:t,k=vA(s^f,t^u,48),gA=t=h,p=t,s=vA(S^N,W^AA,1),K=t=h,N=y,t=t+e|0,t=Z+((y=s+pA|0)>>>0<pA>>>0?t+1|0:t)|0,M=t=(y=y+M|0)>>>0<M>>>0?t+1|0:t,u=vA(o^y,t^J,32),t=(CA=h)+N|0,N=Q=u+Q|0,o=vA(Q^s,(S=Q>>>0<u>>>0?t+1|0:t)^K,40),t=j+(J=h)|0,t=M+((Q=g+o|0)>>>0<g>>>0?t+1|0:t)|0,M=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=R+fA|0,t=((s=P+rA|0)>>>0<rA>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+G|0,p=vA((s=Q+T|0)^P,(t=s>>>0<Q>>>0?t+1|0:t)^R,40),Y=t,t=uA+(P=h)|0,t=K+((R=p+oA|0)>>>0<oA>>>0?t+1|0:t)|0,t=(K=y+R|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=Y)+(Y=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,P=t=vA(Q,t^P,1),hA=t,R=Q=h,AA=_,W=n,_=o,o=vA(u^M,O^CA,48),t=(u=h)+S|0,M=Q=o+N|0,N=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^J,1),t=(J=h)+_A|0,t=F+((Q=_+EA|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(S=h)+D|0,H=t=(D=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^J,40),t=dA+(CA=h)|0,F=_,t=f+((_=BA+_|0)>>>0<BA>>>0?t+1|0:t)|0,f=_+n|0,_=S,S=t=f>>>0<n>>>0?t+1|0:t,_=vA(Q^f,_^t,48),t=(t=H)+(H=h)|0,J=Q=_+D|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=l+gA|0,E=t=(Q=k+v|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^U,1),t=(k=h)+SA|0,t=b+((D=c+QA|0)>>>0<c>>>0?t+1|0:t)|0,n=vA(n^(D=D+w|0),(t=D>>>0<w>>>0?t+1|0:t)^x,32),l=w=h,w=t,v=c,t=l+N|0,t=(c=n+M|0)>>>0<n>>>0?t+1|0:t,M=c,c^=v,v=t,c=vA(c,t^k,40),t=sA+(U=h)|0,t=((k=c+iA|0)>>>0<iA>>>0?t+1|0:t)+w|0,b=l,l=t=(w=D+k|0)>>>0<k>>>0?t+1|0:t,k=vA(n^w,b^t,48),gA=t=h,D=t,n=vA(T^m,G^$,1),N=t=h,b=E,t=t+eA|0,t=X+((E=n+z|0)>>>0<z>>>0?t+1|0:t)|0,d=t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,u=vA(o^E,t^u,32),t=($=h)+b|0,b=Q=u+Q|0,o=vA(Q^n,(o=N)^(N=Q>>>0<u>>>0?t+1|0:t),40),t=lA+(m=h)|0,t=d+((Q=o+aA|0)>>>0<aA>>>0?t+1|0:t)|0,T=Q=Q+E|0,X=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=R+B|0,t=((n=P+I|0)>>>0<I>>>0?t+1|0:t)+E|0,d=t=(E=Q+n|0)>>>0<n>>>0?t+1|0:t,Q=vA(E^k,t^D,32),t=(P=h)+O|0,D=vA((n=Q+J|0)^hA,(t=n>>>0<Q>>>0?t+1|0:t)^R,40),R=t,t=kA+(x=h)|0,t=d+((G=D+yA|0)>>>0<yA>>>0?t+1|0:t)|0,t=(d=E+G|0)>>>0<E>>>0?t+1|0:t,E=P,P=t,E=vA(Q^d,E^t,48),t=(t=R)+(R=h)|0,Q=(n=E+n|0)^D,D=t=n>>>0<E>>>0?t+1|0:t,x=t=vA(Q,t^x,1),G=Q=h,AA=s,W=_,_=o,o=vA(u^T,X^$,48),t=(u=h)+N|0,N=Q=o+b|0,b=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^m,1),t=(m=h)+dA|0,t=l+((Q=_+BA|0)>>>0<_>>>0?t+1|0:t)|0,w=t=(s=Q+w|0)>>>0<w>>>0?t+1|0:t,Q=vA(s^W,t^H,32),t=(l=h)+p|0,H=t=(p=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^p,t^m,40),t=eA+($=h)|0,m=_,t=w+((_=z+_|0)>>>0<z>>>0?t+1|0:t)|0,w=_+s|0,_=l,l=t=w>>>0<s>>>0?t+1|0:t,_=vA(Q^w,_^t,48),t=(t=H)+(H=h)|0,T=Q=_+p|0,X=t=Q>>>0<_>>>0?t+1|0:t,s=y,t=v+gA|0,y=t=(Q=k+M|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^U,1),t=lA+(k=h)|0,t=S+((p=c+aA|0)>>>0<aA>>>0?t+1|0:t)|0,f=t=(p=p+f|0)>>>0<f>>>0?t+1|0:t,s=vA(s^p,t^Y,32),M=t=h,v=c,t=t+b|0,t=(c=s+N|0)>>>0<s>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=fA+(N=h)|0,t=f+((k=c+rA|0)>>>0<rA>>>0?t+1|0:t)|0,t=(f=p+k|0)>>>0<p>>>0?t+1|0:t,p=M,M=t,k=vA(s^f,p^t,48),gA=t=h,p=t,s=vA(F^J,O^CA,1),b=t=h,S=y,t=t+j|0,t=Z+((y=g+s|0)>>>0<g>>>0?t+1|0:t)|0,K=t=(y=y+K|0)>>>0<K>>>0?t+1|0:t,u=vA(o^y,t^u,32),t=(CA=h)+S|0,S=Q=u+Q|0,o=vA(Q^s,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=DA+(F=h)|0,t=K+((Q=o+V|0)>>>0<V>>>0?t+1|0:t)|0,J=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+nA|0,t=((s=x+IA|0)>>>0<IA>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+X|0,p=vA((s=Q+T|0)^x,(t=s>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=e+(Y=h)|0,t=K+((G=p+pA|0)>>>0<pA>>>0?t+1|0:t)|0,t=(K=y+G|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=x)+(x=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=n,W=_,_=o,o=vA(u^J,O^CA,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^F,1),t=(F=h)+cA|0,t=M+((Q=_+q|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(M=h)+D|0,H=t=(D=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^F,40),t=SA+(CA=h)|0,F=_,t=f+((_=QA+_|0)>>>0<QA>>>0?t+1|0:t)|0,f=_+n|0,_=M,M=t=f>>>0<n>>>0?t+1|0:t,_=vA(Q^f,_^t,48),t=(t=H)+(H=h)|0,J=Q=_+D|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=v+gA|0,E=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=(k=h)+sA|0,t=l+((D=c+iA|0)>>>0<c>>>0?t+1|0:t)|0,w=t=(D=D+w|0)>>>0<w>>>0?t+1|0:t,n=vA(n^D,t^R,32),l=t=h,v=c,t=t+S|0,t=(c=n+b|0)>>>0<n>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=_A+(N=h)|0,t=w+((k=c+EA|0)>>>0<EA>>>0?t+1|0:t)|0,b=l,l=t=(w=D+k|0)>>>0<D>>>0?t+1|0:t,k=vA(n^w,b^t,48),gA=t=h,D=t,n=vA(T^m,X^$,1),b=t=h,S=E,t=t+L|0,t=P+((E=n+tA|0)>>>0<tA>>>0?t+1|0:t)|0,d=t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,u=vA(o^E,t^u,32),t=($=h)+S|0,S=Q=u+Q|0,o=vA(Q^n,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=uA+(m=h)|0,t=d+((Q=o+oA|0)>>>0<oA>>>0?t+1|0:t)|0,T=Q=Q+E|0,X=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+e|0,t=((n=Y+pA|0)>>>0<pA>>>0?t+1|0:t)+E|0,d=t=(E=Q+n|0)>>>0<n>>>0?t+1|0:t,Q=vA(E^k,t^D,32),t=(P=h)+O|0,D=vA((n=Q+J|0)^Y,(t=n>>>0<Q>>>0?t+1|0:t)^G,40),R=t,t=lA+(Y=h)|0,t=d+((G=D+aA|0)>>>0<aA>>>0?t+1|0:t)|0,t=(d=E+G|0)>>>0<E>>>0?t+1|0:t,E=P,P=t,E=vA(Q^d,E^t,48),t=(t=R)+(R=h)|0,Q=(n=E+n|0)^D,D=t=n>>>0<E>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=s,W=_,_=o,o=vA(u^T,X^$,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^m,1),t=(m=h)+L|0,t=l+((Q=_+tA|0)>>>0<_>>>0?t+1|0:t)|0,w=t=(s=Q+w|0)>>>0<w>>>0?t+1|0:t,Q=vA(s^W,t^H,32),t=(l=h)+p|0,H=t=(p=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^p,t^m,40),t=_A+($=h)|0,m=_,t=w+((_=EA+_|0)>>>0<EA>>>0?t+1|0:t)|0,w=_+s|0,_=l,l=t=w>>>0<s>>>0?t+1|0:t,_=vA(Q^w,_^t,48),t=(t=H)+(H=h)|0,T=Q=_+p|0,X=t=Q>>>0<_>>>0?t+1|0:t,s=y,t=v+gA|0,y=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=sA+(k=h)|0,t=M+((p=c+iA|0)>>>0<iA>>>0?t+1|0:t)|0,f=t=(p=p+f|0)>>>0<f>>>0?t+1|0:t,s=vA(s^p,t^x,32),M=t=h,v=c,t=t+S|0,t=(c=s+b|0)>>>0<s>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=SA+(N=h)|0,t=f+((k=c+QA|0)>>>0<QA>>>0?t+1|0:t)|0,t=(f=p+k|0)>>>0<p>>>0?t+1|0:t,p=M,M=t,k=vA(s^f,p^t,48),gA=t=h,p=t,s=vA(F^J,O^CA,1),b=t=h,S=y,t=t+eA|0,t=Z+((y=s+z|0)>>>0<z>>>0?t+1|0:t)|0,K=t=(y=y+K|0)>>>0<K>>>0?t+1|0:t,u=vA(o^y,t^u,32),t=(CA=h)+S|0,S=Q=u+Q|0,o=vA(Q^s,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=uA+(F=h)|0,t=K+((Q=o+oA|0)>>>0<oA>>>0?t+1|0:t)|0,J=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+DA|0,t=((s=Y+V|0)>>>0<V>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+X|0,p=vA((s=Q+T|0)^Y,(t=s>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=j+(Y=h)|0,t=K+((G=g+p|0)>>>0<g>>>0?t+1|0:t)|0,t=(K=y+G|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=x)+(x=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=n,W=_,_=o,o=vA(u^J,O^CA,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^F,1),t=(F=h)+fA|0,t=M+((Q=_+rA|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(M=h)+D|0,H=t=(D=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^F,40),t=B+(CA=h)|0,F=_,t=f+((_=I+_|0)>>>0<I>>>0?t+1|0:t)|0,f=_+n|0,_=M,M=t=f>>>0<n>>>0?t+1|0:t,_=vA(Q^f,_^t,48),t=(t=H)+(H=h)|0,J=Q=_+D|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=v+gA|0,E=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=(k=h)+nA|0,t=l+((D=c+IA|0)>>>0<c>>>0?t+1|0:t)|0,w=t=(D=D+w|0)>>>0<w>>>0?t+1|0:t,n=vA(n^D,t^R,32),l=t=h,v=c,t=t+S|0,t=(c=n+b|0)>>>0<n>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=dA+(N=h)|0,t=w+((k=c+BA|0)>>>0<BA>>>0?t+1|0:t)|0,b=l,l=t=(w=D+k|0)>>>0<D>>>0?t+1|0:t,k=vA(n^w,b^t,48),gA=t=h,D=t,n=vA(T^m,X^$,1),b=t=h,S=E,t=t+kA|0,t=P+((E=n+yA|0)>>>0<yA>>>0?t+1|0:t)|0,d=t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,u=vA(o^E,t^u,32),t=($=h)+S|0,S=Q=u+Q|0,o=vA(Q^n,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=cA+(m=h)|0,t=d+((Q=o+q|0)>>>0<q>>>0?t+1|0:t)|0,T=Q=Q+E|0,X=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+uA|0,t=((n=Y+oA|0)>>>0<oA>>>0?t+1|0:t)+E|0,d=t=(E=Q+n|0)>>>0<n>>>0?t+1|0:t,Q=vA(E^k,t^D,32),t=(P=h)+O|0,D=vA((n=Q+J|0)^Y,(t=n>>>0<Q>>>0?t+1|0:t)^G,40),R=t,t=_A+(Y=h)|0,t=d+((G=D+EA|0)>>>0<EA>>>0?t+1|0:t)|0,t=(d=E+G|0)>>>0<E>>>0?t+1|0:t,E=P,P=t,E=vA(Q^d,E^t,48),t=(t=R)+(R=h)|0,Q=(n=E+n|0)^D,D=t=n>>>0<E>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=s,W=_,_=o,o=vA(u^T,X^$,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^m,1),t=(m=h)+lA|0,t=l+((Q=_+aA|0)>>>0<_>>>0?t+1|0:t)|0,w=t=(s=Q+w|0)>>>0<w>>>0?t+1|0:t,Q=vA(s^W,t^H,32),t=(l=h)+p|0,H=t=(p=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^p,t^m,40),t=e+($=h)|0,m=_,t=w+((_=pA+_|0)>>>0<pA>>>0?t+1|0:t)|0,w=_+s|0,_=l,l=t=w>>>0<s>>>0?t+1|0:t,_=vA(Q^w,_^t,48),t=(t=H)+(H=h)|0,T=Q=_+p|0,X=t=Q>>>0<_>>>0?t+1|0:t,s=y,t=v+gA|0,y=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=dA+(k=h)|0,t=M+((p=c+BA|0)>>>0<BA>>>0?t+1|0:t)|0,f=t=(p=p+f|0)>>>0<f>>>0?t+1|0:t,s=vA(s^p,t^x,32),M=t=h,v=c,t=t+S|0,t=(c=s+b|0)>>>0<s>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=L+(N=h)|0,t=f+((k=c+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=(f=p+k|0)>>>0<p>>>0?t+1|0:t,p=M,M=t,k=vA(s^f,p^t,48),gA=t=h,p=t,s=vA(F^J,O^CA,1),b=t=h,S=y,t=t+SA|0,t=Z+((y=s+QA|0)>>>0<QA>>>0?t+1|0:t)|0,K=t=(y=y+K|0)>>>0<K>>>0?t+1|0:t,u=vA(o^y,t^u,32),t=(CA=h)+S|0,S=Q=u+Q|0,o=vA(Q^s,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=kA+(F=h)|0,t=K+((Q=o+yA|0)>>>0<yA>>>0?t+1|0:t)|0,J=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+sA|0,t=((s=Y+iA|0)>>>0<iA>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+X|0,p=vA((s=Q+T|0)^Y,(t=s>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=B+(Y=h)|0,t=K+((G=p+I|0)>>>0<I>>>0?t+1|0:t)|0,t=(K=y+G|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=x)+(x=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=n,W=_,_=o,o=vA(u^J,O^CA,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^F,1),t=(J=h)+eA|0,t=M+((Q=_+z|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(M=h)+D|0,H=D=Q+AA|0,F=t=D>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^J,40),t=DA+(AA=h)|0,J=_,t=f+((_=V+_|0)>>>0<V>>>0?t+1|0:t)|0,D=_+n|0,_=M,M=t=D>>>0<n>>>0?t+1|0:t,_=vA(Q^D,_^t,48),t=(t=F)+(F=h)|0,H=Q=_+H|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=v+gA|0,E=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=(k=h)+j|0,t=l+((f=g+c|0)>>>0<c>>>0?t+1|0:t)|0,w=t=(f=f+w|0)>>>0<w>>>0?t+1|0:t,l=n=vA(n^f,t^R,32),v=t=h,U=c,t=t+S|0,t=(c=n+b|0)>>>0<n>>>0?t+1|0:t,N=c,c^=U,U=t,c=vA(c,t^k,40),t=fA+(b=h)|0,t=w+((n=c+rA|0)>>>0<rA>>>0?t+1|0:t)|0,S=(n=n+f|0)^l,l=t=n>>>0<f>>>0?t+1|0:t,f=vA(S,t^v,48),R=t=h,k=t,v=w=vA(T^m,X^$,1),S=t=h,m=E,t=t+cA|0,t=P+((E=w+q|0)>>>0<q>>>0?t+1|0:t)|0,t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,d=u,u=t,w=vA(o^E,d^t,32),t=(W=h)+m|0,d=Q=w+Q|0,o=vA(o=Q^v,(v=Q>>>0<w>>>0?t+1|0:t)^S,40),t=nA+(S=h)|0,t=u+((Q=o+IA|0)>>>0<IA>>>0?t+1|0:t)|0,u=Q=Q+E|0,m=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+DA|0,t=((P=V)>>>0>(V=Y+V|0)>>>0?t+1|0:t)+E|0,DA=t=(Q=Q+V|0)>>>0<V>>>0?t+1|0:t,V=vA(Q^f,t^k,32),t=(T=h)+O|0,k=vA((E=H+V|0)^Y,(t=E>>>0<V>>>0?t+1|0:t)^G,40),P=t,t=fA+(X=h)|0,t=DA+((Y=rA)>>>0>(rA=k+rA|0)>>>0?t+1|0:t)|0,t=(rA=Q+rA|0)>>>0<Q>>>0?t+1|0:t,Q=V^rA,V=t,fA=vA(Q,t^T,48);t=(DA=h)+P|0,E=t=(Q=E+fA|0)>>>0<fA>>>0?t+1|0:t,t=vA(Q^k,t^X,1),k=h,T=t,X=s,s=IA,P=nA,nA=vA(w^u,m^W,48),t=(w=h)+v|0,v=s,d=t=(IA=d+nA|0)>>>0<nA>>>0?t+1|0:t,s=vA(o^(u=IA),t^S,1),t=(S=h)+P|0,t=l+(s>>>0>(IA=v+s|0)>>>0?t+1|0:t)|0,o=t=(IA=n+IA|0)>>>0<n>>>0?t+1|0:t,_=vA(_^IA,t^F,32),t=(t=p)+(p=h)|0,l=n=_+X|0,v=t=n>>>0<_>>>0?t+1|0:t,n=vA(n^s,t^S,40),t=(S=h)+lA|0,t=(n>>>0>(aA=n+aA|0)>>>0?t+1|0:t)+o|0,o=t=(o=aA)>>>0>(aA=IA+aA|0)>>>0?t+1|0:t,_=vA(_^aA,t^p,48),t=(s=h)+v|0,p=IA=_+l|0,lA=t=IA>>>0<_>>>0?t+1|0:t,l=g,v=j,t=U+R|0,IA=t=(g=f+N|0)>>>0<f>>>0?t+1|0:t,j=vA(g^c,t^b,1),t=(f=h)+v|0,t=M+((c=l+j|0)>>>0<j>>>0?t+1|0:t)|0,y=vA((c=c+D|0)^y,(t=c>>>0<D>>>0?t+1|0:t)^x,32),l=t,M=iA,iA=j,t=(D=h)+d|0,d=f,f=t=(j=y+u|0)>>>0<y>>>0?t+1|0:t,iA=vA(j^iA,d^t,40),t=(u=h)+sA|0,t=((sA=M+iA|0)>>>0<iA>>>0?t+1|0:t)+l|0,l=sA,c=y^(sA=c+sA|0),y=t=l>>>0>sA>>>0?t+1|0:t,t=vA(c,t^D,48),U=c=h,D=t,d=z,l=eA,z=vA(H^J,O^AA,1),v=t=h,t=t+uA|0,t=Z+((z=(M=z)+oA|0)>>>0<oA>>>0?t+1|0:t)|0,oA=t=(z=K+z|0)>>>0<K>>>0?t+1|0:t,eA=vA(z^nA,t^w,32),t=(K=h)+IA|0,IA=g=eA+g|0,nA=vA(g^M,(w=g>>>0<eA>>>0?t+1|0:t)^v,40),t=(t=l)+(l=h)|0,t=oA+((g=nA+d|0)>>>0<nA>>>0?t+1|0:t)|0,oA=g=g+z|0,uA=t=g>>>0<z>>>0?t+1|0:t,z=t,t=k+dA|0,t=((M=BA)>>>0>(BA=T+BA|0)>>>0?t+1|0:t)+z|0,dA=t=(z=g+BA|0)>>>0<BA>>>0?t+1|0:t,BA=vA(D^z,t^c,32),t=(M=h)+lA|0,c=g=BA+p|0,g=vA(g^T,(d=k)^(k=g>>>0<BA>>>0?t+1|0:t),40),t=SA+(v=h)|0,SA=g,t=dA+((g=QA+g|0)>>>0<QA>>>0?t+1|0:t)|0,t=(g=g+z|0)>>>0<z>>>0?t+1|0:t,dA=g,N=(i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24)^g,d=t,b=t^(i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24),z=vA(eA^oA,K^uA,48),t=(oA=h)+w|0,w=g=z+IA|0,uA=t=g>>>0<z>>>0?t+1|0:t,eA=EA,t=f+U|0,EA=t=(g=D+j|0)>>>0<j>>>0?t+1|0:t,iA=vA(g^iA,t^u,1),t=(D=h)+_A|0,t=((eA=iA+eA|0)>>>0<iA>>>0?t+1|0:t)+o|0,eA=t=(_A=eA+aA|0)>>>0<eA>>>0?t+1|0:t,IA=vA(_A^fA,t^DA,32),t=(j=h)+uA|0,aA=t=(QA=IA+w|0)>>>0<IA>>>0?t+1|0:t,fA=IA,IA=vA(iA^QA,t^D,40),t=(o=h)+kA|0,t=(IA>>>0>(iA=IA+yA|0)>>>0?t+1|0:t)+eA|0,f=j,j=t=(_A=iA+_A|0)>>>0<iA>>>0?t+1|0:t,iA=vA(fA^(yA=_A),f^t,48),t=(D=h)+aA|0,t=(eA=iA+QA|0)>>>0<iA>>>0?t+1|0:t,QA=eA,eA^=N,C[A+8|0]=eA,C[A+9|0]=eA>>>8,C[A+10|0]=eA>>>16,C[A+11|0]=eA>>>24,aA=t,t^=b,C[A+12|0]=t,C[A+13|0]=t>>>8,C[A+14|0]=t>>>16,C[A+15|0]=t>>>24,_A=g,eA=EA,g=z,z=vA(n^p,S^lA,1),t=(kA=h)+B|0,t=(z>>>0>(EA=z+I|0)>>>0?t+1|0:t)+V|0,rA=t=(p=EA)>>>0>(EA=rA+EA|0)>>>0?t+1|0:t,g=vA(g^EA,t^oA,32),t=(t=eA)+(eA=h)|0,oA=t=(_A=g+_A|0)>>>0<g>>>0?t+1|0:t,fA=g,_A=vA(z^(V=_A),t^kA,40),t=(n=h)+e|0,t=rA+((g=_A+pA|0)>>>0<_A>>>0?t+1|0:t)|0,t=(g=g+EA|0)>>>0<EA>>>0?t+1|0:t,rA=g,g^=fA,fA=t,EA=vA(g,t^eA,48),t=(p=h)+oA|0,V=g=EA+V|0,oA=g>>>0<EA>>>0?t+1|0:t,nA=g=vA(w^nA,l^uA,1),kA=t=h,t=t+L|0,t=y+((g=g+tA|0)>>>0<tA>>>0?t+1|0:t)|0,L=t=(z=g+sA|0)>>>0<sA>>>0?t+1|0:t,g=(eA=vA(_^z,t^s,32))+Q|0,t=(Q=h)+E|0,sA=g,g=(tA=vA(y=g^nA,(nA=g>>>0<eA>>>0?t+1|0:t)^kA,40))+q|0,t=(q=h)+cA|0,t=L+(g>>>0<tA>>>0?t+1|0:t)|0,t=(L=g+z|0)>>>0<z>>>0?t+1|0:t,z=L^MA^V,C[0|(g=A)]=z,C[g+1|0]=z>>>8,C[g+2|0]=z>>>16,C[g+3|0]=z>>>24,z=t^a^oA,C[g+4|0]=z,C[g+5|0]=z>>>8,C[g+6|0]=z>>>16,C[g+7|0]=z>>>24,z=(eA=vA(L^eA,t^Q,48))+sA|0,t=(sA=h)+nA|0,t=(nA=z>>>0<eA>>>0?t+1|0:t)^(i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24)^fA,L=(i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24)^rA^z,C[g+16|0]=L,C[g+17|0]=L>>>8,C[g+18|0]=L>>>16,C[g+19|0]=L>>>24,C[g+20|0]=t,C[g+21|0]=t>>>8,C[g+22|0]=t>>>16,C[g+23|0]=t>>>24,g=vA(BA^dA,d^M,48),L=h,rA=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,t=(i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24)^vA(IA^QA,o^aA,1)^g,C[A+32|0]=t,C[A+33|0]=t>>>8,C[A+34|0]=t>>>16,C[A+35|0]=t>>>24,t=h^rA^L,C[A+36|0]=t,C[A+37|0]=t>>>8,C[A+38|0]=t>>>16,C[A+39|0]=t>>>24,t=k+L|0,t=(rA=g+c|0)>>>0<g>>>0?t+1|0:t,IA=(i[(g=A)+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)^j^t,L=(i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24)^yA^rA,C[g+24|0]=L,C[g+25|0]=L>>>8,C[g+26|0]=L>>>16,C[g+27|0]=L>>>24,C[g+28|0]=IA,C[g+29|0]=IA>>>8,C[g+30|0]=IA>>>16,C[g+31|0]=IA>>>24,IA=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,g=EA^(i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24)^vA(z^tA,q^nA,1),C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,g=p^h^IA,C[A+44|0]=g,C[A+45|0]=g>>>8,C[A+46|0]=g>>>16,C[A+47|0]=g>>>24,z=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24,g=eA^(i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24)^vA(V^_A,n^oA,1),C[A+56|0]=g,C[A+57|0]=g>>>8,C[A+58|0]=g>>>16,C[A+59|0]=g>>>24,g=sA^h^z,C[A+60|0]=g,C[A+61|0]=g>>>8,C[A+62|0]=g>>>16,C[A+63|0]=g>>>24,z=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24,g=iA^(i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24)^vA(rA^SA,t^v,1),C[A+48|0]=g,C[A+49|0]=g>>>8,C[A+50|0]=g>>>16,C[A+51|0]=g>>>24,g=D^h^z,C[A+52|0]=g,C[A+53|0]=g>>>8,C[A+54|0]=g>>>16,C[A+55|0]=g>>>24}function p(A,g,I,e,B,r,t){var Q,o,c,E,y,_,s,p,f,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,U,x,m,P,R,L,T,q,z,j,X,O,V,$,AA,gA,IA,CA,eA,BA,aA,iA,rA,tA,QA=0,oA=0,cA=0,EA=0,yA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,kA=0,lA=0,uA=0,vA=0,SA=0,bA=0,MA=0,FA=0,NA=0,KA=0,YA=0,HA=0,JA=0,UA=0,xA=0,mA=0,PA=0,LA=0,TA=0,qA=0,zA=0,jA=0,XA=0,OA=0,VA=0,ZA=0,WA=0,$A=0,Ag=0,gg=0,Ig=0,Cg=0,eg=0,Bg=0;return n=c=n-560|0,dA(cA=c+352|0),t&&W(cA,35120,34,0),wA(c+288|0,r,32,0),W(_A=c+352|0,c+320|0,32,0),W(_A,I,e,B),J(_A,hA=c+224|0),pA=i[(oA=r)+32|0]|i[oA+33|0]<<8|i[oA+34|0]<<16|i[oA+35|0]<<24,fA=i[oA+36|0]|i[oA+37|0]<<8|i[oA+38|0]<<16|i[oA+39|0]<<24,EA=i[oA+40|0]|i[oA+41|0]<<8|i[oA+42|0]<<16|i[oA+43|0]<<24,QA=i[oA+44|0]|i[oA+45|0]<<8|i[oA+46|0]<<16|i[oA+47|0]<<24,cA=i[oA+48|0]|i[oA+49|0]<<8|i[oA+50|0]<<16|i[oA+51|0]<<24,r=i[oA+52|0]|i[oA+53|0]<<8|i[oA+54|0]<<16|i[oA+55|0]<<24,yA=i[oA+60|0]|i[oA+61|0]<<8|i[oA+62|0]<<16|i[oA+63|0]<<24,oA=i[oA+56|0]|i[oA+57|0]<<8|i[oA+58|0]<<16|i[oA+59|0]<<24,C[A+56|0]=oA,C[A+57|0]=oA>>>8,C[A+58|0]=oA>>>16,C[A+59|0]=oA>>>24,C[A+60|0]=yA,C[A+61|0]=yA>>>8,C[A+62|0]=yA>>>16,C[A+63|0]=yA>>>24,C[A+48|0]=cA,C[A+49|0]=cA>>>8,C[A+50|0]=cA>>>16,C[A+51|0]=cA>>>24,C[A+52|0]=r,C[A+53|0]=r>>>8,C[A+54|0]=r>>>16,C[A+55|0]=r>>>24,C[A+40|0]=EA,C[A+41|0]=EA>>>8,C[A+42|0]=EA>>>16,C[A+43|0]=EA>>>24,C[A+44|0]=QA,C[A+45|0]=QA>>>8,C[A+46|0]=QA>>>16,C[A+47|0]=QA>>>24,C[0|(r=A+32|0)]=pA,C[r+1|0]=pA>>>8,C[r+2|0]=pA>>>16,C[r+3|0]=pA>>>24,C[r+4|0]=fA,C[r+5|0]=fA>>>8,C[r+6|0]=fA>>>16,C[r+7|0]=fA>>>24,D(hA),Z(c,hA),RA(A,c),dA(_A),t&&W(_A,35120,34,0),W(t=c+352|0,A,64,0),W(t,I,e,B),J(t,nA=c+160|0),D(nA),C[c+288|0]=248&i[c+288|0],C[c+319|0]=63&i[c+319|0]|64,I=i[23+(A=o=c+288|0)|0],EA=GA(E=i[A+21|0]|i[A+22|0]<<8|I<<16&2031616,0,y=(i[nA+28|0]|i[nA+29|0]<<8|i[nA+30|0]<<16|i[nA+31|0]<<24)>>>7|0,0),cA=h,I=(A=i[nA+27|0])>>>24|0,B=A<<8|(QA=i[nA+23|0]|i[nA+24|0]<<8|i[nA+25|0]<<16|i[nA+26|0]<<24)>>>24,A=GA(_=2097151&((3&(fA=(A=(e=i[nA+28|0])>>>16|0)|I))<<30|(I=(e<<=16)|B)>>>2),0,s=(t=i[o+23|0]|i[o+24|0]<<8|i[o+25|0]<<16|i[o+26|0]<<24)>>>5&2097151,0),I=h+cA|0,e=A>>>0>(B=A+EA|0)>>>0?I+1|0:I,A=GA(p=(I=i[nA+23|0])<<16&2031616|i[nA+21|0]|i[nA+22|0]<<8,0,f=(i[o+28|0]|i[o+29|0]<<8|i[o+30|0]<<16|i[o+31|0]<<24)>>>7|0,0),e=h+e|0,cA=I=A+B|0,B=A>>>0>I>>>0?e+1|0:e,e=(A=i[o+27|0])>>>24|0,t=A<<8|t>>>24,A=GA(w=2097151&((3&(e|=I=(A=i[o+28|0])>>>16|0))<<30|(I=(A<<=16)|t)>>>2),0,k=QA>>>5&2097151,0),I=h+B|0,oA=e=A+cA|0,B=A>>>0>e>>>0?I+1|0:I,QA=GA(s,0,k,0),cA=h,I=(A=i[o+19|0])>>>24|0,t=A<<8|(bA=i[o+15|0]|i[o+16|0]<<8|i[o+17|0]<<16|i[o+18|0]<<24)>>>24,e=I,I=GA(d=(7&(e|=I=(A=i[o+20|0])>>>16|0))<<29|(I=(A<<=16)|t)>>>3,fA=e>>>3|0,y,0),A=h+cA|0,A=I>>>0>(e=I+QA|0)>>>0?A+1|0:A,t=(I=GA(E,0,_,0))+e|0,e=h+A|0,I=I>>>0>(QA=t)>>>0?e+1|0:e,e=(A=i[nA+19|0])>>>24|0,cA=A<<8|(uA=i[nA+15|0]|i[nA+16|0]<<8|i[nA+17|0]<<16|i[nA+18|0]<<24)>>>24,A=GA(l=(7&(EA=(A=(t=i[nA+20|0])>>>16|0)|e))<<29|(e=(t<<=16)|cA)>>>3,u=EA>>>3|0,f,0),I=h+I|0,I=A>>>0>(e=A+QA|0)>>>0?I+1|0:I,A=GA(p,0,w,0),I=h+I|0,pA=I=A>>>0>(hA=A+e|0)>>>0?I+1|0:I,DA=A=I-((hA>>>0<4293918720)-1|0)|0,e=(I=A>>>21|0)+B|0,QA=e=(A=(2097151&A)<<11|(EA=hA- -1048576|0)>>>21)>>>0>(oA=A+oA|0)>>>0?e+1|0:e,lA=A=e-((oA>>>0<4293918720)-1|0)|0,yA=(2097151&A)<<11|(cA=oA- -1048576|0)>>>21,t=A>>>21|0,A=GA(f,0,k,0),I=h,e=A,A=GA(y,0,s,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,kA=(A=e)+(e=GA(_,0,w,0))|0,A=h+I|0,A=e>>>0>kA>>>0?A+1|0:A,_A=kA-(I=-2097152&(e=kA- -1048576|0))|0,I=(A-((131071&(B=A-((kA>>>0<4293918720)-1|0)|0))+(I>>>0>kA>>>0)|0)|0)+t|0,R=I=(A=yA+_A|0)>>>0<_A>>>0?I+1|0:I,L=A,_A=GA(A,I,470296,0),yA=h,I=GA(y,0,w,0),A=h,t=I,I=GA(_,0,f,0),A=h+A|0,I=I>>>0>(t=t+I|0)>>>0?A+1|0:A,A=B>>>21|0,B=(2097151&B)<<11|e>>>21,e=A+I|0,KA=B=(e=B>>>0>(t=B+t|0)>>>0?e+1|0:e)-((t>>>0<4293918720)-1|0)|0,A=t-(I=-2097152&(NA=t- -1048576|0))|0,T=t=e-((131071&B)+(I>>>0>t>>>0)|0)|0,q=I=oA-(e=-2097152&cA)|0,z=B=QA-((e>>>0>oA>>>0)+lA|0)|0,j=A,e=GA(A,t,666643,0),A=h+yA|0,A=e>>>0>(t=e+_A|0)>>>0?A+1|0:A,e=GA(I,B,654183,0),I=h+A|0,sA=B=e+t|0,cA=e>>>0>B>>>0?I+1|0:I,kA=hA-(A=-2097152&EA)|0,DA=pA-((A>>>0>hA>>>0)+DA|0)|0,I=GA(_,0,d,fA),e=h,B=(A=I)+(I=GA(v=bA>>>6&2097151,0,y,0))|0,A=h+e|0,A=I>>>0>B>>>0?A+1|0:A,I=GA(s,0,p,0),e=h+A|0,e=I>>>0>(B=I+B|0)>>>0?e+1|0:e,A=GA(E,0,k,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(f,0,S=uA>>>6&2097151,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,e=GA(w,0,l,u),I=h+A|0,hA=B=e+B|0,t=e>>>0>B>>>0?I+1|0:I,I=(A=i[o+14|0])>>>24|0,B=A<<8|(pA=i[o+10|0]|i[o+11|0]<<8|i[o+12|0]<<16|i[o+13|0]<<24)>>>24,I=GA(b=2097151&((1&(I|=A=(e=i[o+15|0])>>>16|0))<<31|(A=(e<<=16)|B)>>>1),0,y,0),A=h,e=I,I=GA(_,0,v,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=GA(k,0,d,fA))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,A=GA(s,0,l,u),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,A=GA(E,0,p,0),I=h+I|0,EA=e=A+B|0,B=A>>>0>e>>>0?I+1|0:I,I=(A=i[nA+14|0])>>>24|0,QA=A<<8|(oA=i[nA+10|0]|i[nA+11|0]<<8|i[nA+12|0]<<16|i[nA+13|0]<<24)>>>24,e=I,I=(A=i[nA+15|0])>>>16|0,I=GA(M=2097151&((1&(I|=e))<<31|(A=A<<16|QA)>>>1),0,f,0),A=h+B|0,A=I>>>0>(e=I+EA|0)>>>0?A+1|0:A,I=GA(w,0,S,0),A=h+A|0,QA=A=I>>>0>(EA=I+e|0)>>>0?A+1|0:A,YA=I=A-((EA>>>0<4293918720)-1|0)|0,e=(A=I>>>21|0)+t|0,yA=e=(I=(2097151&I)<<11|(_A=EA- -1048576|0)>>>21)>>>0>(lA=I+hA|0)>>>0?e+1|0:e,MA=I=e-((lA>>>0<4293918720)-1|0)|0,A=(A=I>>>21|0)+DA|0,X=A=(I=(e=(2097151&I)<<11|(hA=lA- -1048576|0)>>>21)+kA|0)>>>0<e>>>0?A+1|0:A,O=I,A=GA(I,A,-997805,-1),I=h+cA|0,sA=e=A+sA|0,cA=A>>>0>e>>>0?I+1|0:I,kA=(UA=i[23+(Q=c+224|0)|0]|i[Q+24|0]<<8|i[Q+25|0]<<16|i[Q+26|0]<<24)>>>5&2097151,e=GA(F=(A=i[o+2|0])<<16&2031616|i[0|o]|i[o+1|0]<<8,0,k,0),I=h,B=(A=GA(p,0,N=(t=i[o+2|0]|i[o+3|0]<<8|i[o+4|0]<<16|i[o+5|0]<<24)>>>5&2097151,0))+e|0,e=h+I|0,e=A>>>0>B>>>0?e+1|0:e,A=GA(K=(i[o+7|0]|i[o+8|0]<<8|i[o+9|0]<<16|i[o+10|0]<<24)>>>7&2097151,0,S,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(M,0,Y=pA>>>4&2097151,0),A=h+I|0,pA=B=e+B|0,B=e>>>0>B>>>0?A+1|0:A,t=(I=i[o+6|0])<<8|t>>>24,e=A=I>>>24|0,I=(A=i[o+7|0])>>>16|0,I=GA(H=2097151&((3&(I|=e))<<30|(A=A<<16|t)>>>2),0,l,u),A=h+B|0,A=I>>>0>(e=I+pA|0)>>>0?A+1|0:A,B=(I=GA(v,0,G=(i[nA+7|0]|i[nA+8|0]<<8|i[nA+9|0]<<16|i[nA+10|0]<<24)>>>7&2097151,0))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,I=GA(b,0,FA=oA>>>4&2097151,0),A=h+e|0,t=I>>>0>(B=I+B|0)>>>0?A+1|0:A,A=(I=i[nA+6|0])>>>24|0,pA=I<<8|(oA=i[nA+2|0]|i[nA+3|0]<<8|i[nA+4|0]<<16|i[nA+5|0]<<24)>>>24,I=A,A=GA(d,fA,U=2097151&((3&(I|=e=(A=i[nA+7|0])>>>16|0))<<30|(A=A<<16|pA)>>>2),0),I=h+t|0,I=A>>>0>(e=A+B|0)>>>0?I+1|0:I,B=e,e=GA(x=(A=i[nA+2|0])<<16&2031616|i[0|nA]|i[nA+1|0]<<8,0,s,0),A=h+I|0,A=e>>>0>(B=B+e|0)>>>0?A+1|0:A,I=GA(E,0,m=oA>>>5&2097151,0),A=h+A|0,A=I>>>0>(e=I+B|0)>>>0?A+1|0:A,I=e,pA=e=e+kA|0,t=I=I>>>0>e>>>0?A+1|0:A,B=i[Q+21|0]|i[Q+22|0]<<8,A=GA(p,0,F,0),I=h,oA=(e=A)+(A=GA(l,u,N,0))|0,e=h+I|0,e=A>>>0>oA>>>0?e+1|0:e,A=GA(M,0,K,0),I=h+e|0,I=A>>>0>(oA=A+oA|0)>>>0?I+1|0:I,A=GA(Y,0,FA,0),I=h+I|0,I=A>>>0>(e=A+oA|0)>>>0?I+1|0:I,oA=(A=e)+(e=GA(S,0,H,0))|0,A=h+I|0,A=e>>>0>oA>>>0?A+1|0:A,I=GA(v,0,U,0),A=h+A|0,A=I>>>0>(e=I+oA|0)>>>0?A+1|0:A,oA=(I=GA(b,0,G,0))+e|0,e=h+A|0,e=I>>>0>oA>>>0?e+1|0:e,A=GA(d,fA,m,0),I=h+e|0,I=A>>>0>(oA=A+oA|0)>>>0?I+1|0:I,A=GA(E,0,x,0),I=h+I|0,A=A>>>0>(e=A+oA|0)>>>0?I+1|0:I,I=(I=e)>>>0>(e=e+B|0)>>>0?A+1|0:A,B=e,e=(A=i[Q+23|0])<<16&2031616,A=I,e=A=e>>>0>(B=B+e|0)>>>0?A+1|0:A,nA=A=A-((B>>>0<4293918720)-1|0)|0,I=(I=A>>>21|0)+t|0,A=(I=(t=pA=(A=(2097151&A)<<11|(oA=B- -1048576|0)>>>21)+pA|0)>>>0<A>>>0?I+1|0:I)+cA|0,A=(cA=t+sA|0)>>>0<t>>>0?A+1|0:A,uA=t- -1048576|0,vA=t=I-((t>>>0<4293918720)-1|0)|0,SA=cA-(I=-2097152&uA)|0,HA=A-((I>>>0>cA>>>0)+t|0)|0,pA=B,cA=e,A=GA(q,z,470296,0),I=h,e=A,A=GA(L,R,666643,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(O,X,654183,0))|0,A=h+I|0,bA=B,t=e>>>0>B>>>0?A+1|0:A,I=GA(l,u,F,0),A=h,e=I,I=GA(S,0,N,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(K,0,FA,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,A=GA(Y,0,G,0),e=h+I|0,e=A>>>0>(B=A+B|0)>>>0?e+1|0:e,A=GA(M,0,H,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(v,0,m,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,I=GA(b,0,U,0),A=h+A|0,A=I>>>0>(e=I+B|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(d,fA,x,0))|0,I=h+A|0,kA=B,e=e>>>0>B>>>0?I+1|0:I,I=(A=i[Q+19|0])>>>24|0,DA=A<<8|(sA=i[Q+15|0]|i[Q+16|0]<<8|i[Q+17|0]<<16|i[Q+18|0]<<24)>>>24,e=((JA=(A=(B=i[Q+20|0])>>>16|0)|I)>>>3|0)+e|0,kA=B=(I=(7&JA)<<29|(I=(B<<=16)|DA)>>>3)+kA|0,B=I>>>0>B>>>0?e+1|0:e,DA=sA>>>6&2097151,A=GA(S,0,F,0),I=h,e=A,A=GA(M,0,N,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,sA=(A=e)+(e=GA(K,0,G,0))|0,A=h+I|0,A=e>>>0>sA>>>0?A+1|0:A,e=GA(Y,0,U,0),I=h+A|0,I=e>>>0>(sA=e+sA|0)>>>0?I+1|0:I,e=GA(H,0,FA,0),A=h+I|0,A=e>>>0>(sA=e+sA|0)>>>0?A+1|0:A,I=GA(v,0,x,0),e=h+A|0,e=I>>>0>(sA=I+sA|0)>>>0?e+1|0:e,A=GA(b,0,m,0),I=h+e|0,A=A>>>0>(sA=A+sA|0)>>>0?I+1|0:I,XA=A=(mA=sA+DA|0)>>>0<sA>>>0?A+1|0:A,gg=A=A-((mA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(zA=mA- -1048576|0)>>>21,A=(A>>>21|0)+B|0,VA=A=e>>>0>(OA=e+kA|0)>>>0?A+1|0:A,Ig=A=A-((OA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(LA=OA- -1048576|0)>>>21,A=(A>>>21|0)+t|0,I=(e>>>0>(B=e+bA|0)>>>0?A+1|0:A)+cA|0,cA=(e=B+pA|0)-(A=-2097152&oA)|0,nA=A=(I=e>>>0<B>>>0?I+1|0:I)-((A>>>0>e>>>0)+nA|0)|0,Cg=A=A-((cA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(TA=cA- -1048576|0)>>>21,A=(A>>21)+HA|0,B=A=e>>>0>(t=e+SA|0)>>>0?A+1|0:A,Ag=A=A-((t>>>0<4293918720)-1|0)|0,qA=(2097151&A)<<11|(bA=t- -1048576|0)>>>21,pA=A>>21,JA=lA-(A=-2097152&hA)|0,MA=yA-((A>>>0>lA>>>0)+MA|0)|0,A=GA(y,0,f,0),jA=I=h,SA=A,sA=A- -1048576|0,PA=I=I-((A>>>0<4293918720)-1|0)|0,V=A=I>>>21|0,A=GA(P=(2097151&I)<<11|sA>>>21,A,-683901,-1),I=h+QA|0,I=A>>>0>(e=A+EA|0)>>>0?I+1|0:I,hA=e-(A=-2097152&_A)|0,oA=I-((A>>>0>e>>>0)+YA|0)|0,I=GA(k,0,v,0),A=h,e=I,I=GA(y,0,Y,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,I=GA(_,0,b,0),A=h+A|0,A=I>>>0>(e=I+e|0)>>>0?A+1|0:A,QA=(I=e)+(e=GA(p,0,d,fA))|0,I=h+A|0,I=e>>>0>QA>>>0?I+1|0:I,A=GA(s,0,S,0),e=h+I|0,e=A>>>0>(QA=A+QA|0)>>>0?e+1|0:e,A=GA(E,0,l,u),I=h+e|0,I=A>>>0>(QA=A+QA|0)>>>0?I+1|0:I,e=GA(f,0,FA,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,I=GA(w,0,M,0),A=h+A|0,EA=e=I+QA|0,QA=I>>>0>e>>>0?A+1|0:A,A=GA(_,0,Y,0),I=h,e=A,A=GA(y,0,K,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,yA=(A=GA(p,0,v,0))+e|0,e=h+I|0,e=A>>>0>yA>>>0?e+1|0:e,A=GA(k,0,b,0),I=h+e|0,I=A>>>0>(yA=A+yA|0)>>>0?I+1|0:I,e=GA(d,fA,l,u),A=h+I|0,A=e>>>0>(yA=e+yA|0)>>>0?A+1|0:A,I=GA(s,0,M,0),A=h+A|0,A=I>>>0>(e=I+yA|0)>>>0?A+1|0:A,yA=(I=e)+(e=GA(E,0,S,0))|0,I=h+A|0,I=e>>>0>yA>>>0?I+1|0:I,A=GA(f,0,G,0),e=h+I|0,e=A>>>0>(yA=A+yA|0)>>>0?e+1|0:e,A=GA(w,0,FA,0),I=h+e|0,DA=I=A>>>0>(kA=A+yA|0)>>>0?I+1|0:I,WA=A=I-((kA>>>0<4293918720)-1|0)|0,I=(2097151&A)<<11|(lA=kA- -1048576|0)>>>21,A=(A>>>21|0)+QA|0,_A=A=I>>>0>(YA=I+EA|0)>>>0?A+1|0:A,xA=A=A-((YA>>>0<4293918720)-1|0)|0,I=(e=A>>>21|0)+oA|0,hA=I=(A=(2097151&A)<<11|(yA=YA- -1048576|0)>>>21)>>>0>(HA=A+hA|0)>>>0?I+1|0:I,ZA=A=I-((HA>>>0<4293918720)-1|0)|0,QA=(2097151&A)<<11|(oA=HA- -1048576|0)>>>21,A=(A>>21)+MA|0,$=A=(I=QA+JA|0)>>>0<QA>>>0?A+1|0:A,AA=I,A=GA(I,A,-683901,-1),I=h+pA|0,qA=e=A+qA|0,pA=A>>>0>e>>>0?I+1|0:I,A=GA(_,0,F,0),I=h,e=A,A=GA(k,0,N,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,QA=(A=e)+(e=GA(l,u,K,0))|0,A=h+I|0,A=e>>>0>QA>>>0?A+1|0:A,I=GA(S,0,Y,0),e=h+A|0,e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,I=GA(p,0,H,0),A=h+e|0,A=I>>>0>(QA=I+QA|0)>>>0?A+1|0:A,e=GA(v,0,FA,0),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,A=GA(b,0,M,0),I=h+I|0,I=A>>>0>(e=A+QA|0)>>>0?I+1|0:I,QA=(A=e)+(e=GA(d,fA,G,0))|0,A=h+I|0,A=e>>>0>QA>>>0?A+1|0:A,I=GA(s,0,m,0),e=h+A|0,e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,I=GA(E,0,U,0),A=h+e|0,A=I>>>0>(QA=I+QA|0)>>>0?A+1|0:A,e=GA(w,0,x,0),I=h+A|0,MA=QA=e+QA|0,e=e>>>0>QA>>>0?I+1|0:I,I=(A=i[Q+27|0])>>>24|0,EA=A<<8|UA>>>24,QA=2097151&((3&(I|=A=(QA=i[Q+28|0])>>>16|0))<<30|(A=(QA<<=16)|EA)>>>2),I=e,EA=A=QA+MA|0,QA=A>>>0<QA>>>0?I+1|0:I,JA=GA(j,T,470296,0),MA=h,A=(e=(2097151&KA)<<11|NA>>>21)+(SA-(I=-2097152&sA)|0)|0,I=jA-((524287&PA)+(I>>>0>SA>>>0)|0)+(KA>>>21)|0,gA=I=A>>>0<e>>>0?I+1|0:I,IA=A,I=GA(A,I,666643,0),A=h+MA|0,A=I>>>0>(e=I+JA|0)>>>0?A+1|0:A,sA=(I=GA(L,R,654183,0))+e|0,e=h+A|0,e=I>>>0>sA>>>0?e+1|0:e,I=GA(q,z,-997805,-1),A=h+e|0,A=I>>>0>(sA=I+sA|0)>>>0?A+1|0:A,e=GA(O,X,136657,0),I=h+A|0,uA=(A=(2097151&vA)<<11|uA>>>21)+(sA=e+sA|0)|0,I=(vA>>>21|0)+(e>>>0>sA>>>0?I+1|0:I)|0,PA=sA=QA-((EA>>>0<4293918720)-1|0)|0,A=(A>>>0>uA>>>0?I+1|0:I)+QA|0,I=(QA=EA+uA|0)-(e=-2097152&(jA=EA- -1048576|0))|0,e=(A=(A=QA>>>0<uA>>>0?A+1|0:A)-((e>>>0>QA>>>0)+sA|0)|0)+pA|0,JA=QA=A-((I>>>0<4293918720)-1|0)|0,SA=(e=(EA=I+qA|0)>>>0<I>>>0?e+1|0:e)-(((I=-2097152&(MA=I- -1048576|0))>>>0>EA>>>0)+QA|0)|0,UA=A=EA-I|0,QA=t,t=B,$A=HA-(A=-2097152&oA)|0,sA=hA-((A>>>0>HA>>>0)+ZA|0)|0,A=GA(IA,gA,-683901,-1),I=h,B=(e=A)+(A=GA(P,V,136657,0))|0,e=h+I|0,I=_A+(A>>>0>B>>>0?e+1|0:e)|0,yA=(e=B+YA|0)-(A=-2097152&yA)|0,hA=(I=e>>>0<YA>>>0?I+1|0:I)-((A>>>0>e>>>0)+xA|0)|0,I=GA(P,V,-997805,-1),A=h+DA|0,A=I>>>0>(e=I+kA|0)>>>0?A+1|0:A,B=(I=GA(IA,gA,136657,0))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,A=GA(j,T,-683901,-1),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,oA=B-(A=-2097152&lA)|0,pA=I-((A>>>0>B>>>0)+WA|0)|0,I=GA(k,0,Y,0),A=h,e=I,I=GA(_,0,K,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=GA(y,0,H,0))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,A=GA(l,u,v,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(p,0,b,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,e=GA(d,fA,S,0),I=h+A|0,I=e>>>0>(B=e+B|0)>>>0?I+1|0:I,e=GA(s,0,FA,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,I=GA(E,0,M,0),e=h+A|0,e=I>>>0>(B=I+B|0)>>>0?e+1|0:e,A=GA(f,0,U,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(w,0,G,0),A=h+I|0,EA=B=e+B|0,B=e>>>0>B>>>0?A+1|0:A,A=GA(k,0,K,0),I=h,e=A,A=GA(y,0,N,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,_A=(A=e)+(e=GA(p,0,Y,0))|0,A=h+I|0,A=e>>>0>_A>>>0?A+1|0:A,I=GA(_,0,H,0),e=h+A|0,e=I>>>0>(_A=I+_A|0)>>>0?e+1|0:e,A=GA(v,0,S,0),I=h+e|0,I=A>>>0>(_A=A+_A|0)>>>0?I+1|0:I,e=GA(l,u,b,0),A=h+I|0,A=e>>>0>(_A=e+_A|0)>>>0?A+1|0:A,e=GA(d,fA,M,0),I=h+A|0,I=e>>>0>(_A=e+_A|0)>>>0?I+1|0:I,e=GA(s,0,G,0),A=h+I|0,A=e>>>0>(_A=e+_A|0)>>>0?A+1|0:A,I=GA(E,0,FA,0),e=h+A|0,e=I>>>0>(_A=I+_A|0)>>>0?e+1|0:e,_A=(A=GA(f,0,m,0))+_A|0,I=h+e|0,e=GA(w,0,U,0),A=h+(A>>>0>_A>>>0?I+1|0:I)|0,HA=A=e>>>0>(ZA=e+_A|0)>>>0?A+1|0:A,eA=A=A-((ZA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(KA=ZA- -1048576|0)>>>21,A=(A>>>21|0)+B|0,NA=A=e>>>0>(qA=e+EA|0)>>>0?A+1|0:A,BA=A=A-((qA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(vA=qA- -1048576|0)>>>21,A=(A>>>21|0)+pA|0,uA=A=e>>>0>(YA=e+oA|0)>>>0?A+1|0:A,aA=A=A-((YA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(DA=YA- -1048576|0)>>>21,A=(A>>21)+hA|0,B=A=e>>>0>(oA=e+yA|0)>>>0?A+1|0:A,hA=A=A-((oA>>>0<4293918720)-1|0)|0,pA=(2097151&A)<<11|(e=oA- -1048576|0)>>>21,A=(A>>21)+sA|0,WA=A=(EA=pA+$A|0)>>>0<pA>>>0?A+1|0:A,xA=EA,A=GA(EA,A,-683901,-1),I=h,EA=A,A=GA(AA,$,136657,0),I=h+I|0,A=(A>>>0>(EA=EA+A|0)>>>0?I+1|0:I)+t|0,eg=(t=QA+EA|0)-(I=-2097152&bA)|0,Bg=(A=t>>>0<EA>>>0?A+1|0:A)-((I>>>0>t>>>0)+Ag|0)|0,pA=cA,EA=nA,cA=GA(xA,WA,136657,0),t=h,$A=A=oA-(I=-2097152&e)|0,CA=B=B-((I>>>0>oA>>>0)+hA|0)|0,e=GA(AA,$,-997805,-1),I=h+t|0,I=e>>>0>(cA=e+cA|0)>>>0?I+1|0:I,e=GA(A,B,-683901,-1),A=h+I|0,Ag=B=e+cA|0,QA=e>>>0>B>>>0?A+1|0:A,A=GA(O,X,470296,0),I=h,B=(e=A)+(A=GA(q,z,666643,0))|0,e=h+I|0,I=VA+(A>>>0>B>>>0?e+1|0:e)|0,bA=A=B+OA|0,t=I=A>>>0<OA>>>0?I+1|0:I,I=GA(O,X,666643,0),A=h+XA|0,A=I>>>0>(e=I+mA|0)>>>0?A+1|0:A,yA=e-(I=-2097152&zA)|0,kA=A-((I>>>0>e>>>0)+gg|0)|0,I=GA(M,0,F,0),A=h,e=I,I=GA(N,0,FA,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(K,0,U,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,e=GA(Y,0,m,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,I=GA(H,0,G,0),e=h+A|0,e=I>>>0>(B=I+B|0)>>>0?e+1|0:e,A=GA(b,0,x,0),I=h+e|0,oA=B=A+B|0,B=A>>>0>B>>>0?I+1|0:I,I=(A=i[Q+14|0])>>>24|0,cA=A<<8|(hA=i[Q+10|0]|i[Q+11|0]<<8|i[Q+12|0]<<16|i[Q+13|0]<<24)>>>24,I=2097151&((1&(I|=e=(A=i[Q+15|0])>>>16|0))<<31|(A=cA|A<<16)>>>1),A=B,oA=e=I+oA|0,B=I>>>0>e>>>0?A+1|0:A,cA=hA>>>4&2097151,A=GA(F,0,FA,0),I=h,e=A,A=GA(N,0,G,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,A=GA(K,0,m,0),I=h+I|0,I=A>>>0>(e=A+e|0)>>>0?I+1|0:I,hA=(A=e)+(e=GA(Y,0,x,0))|0,A=h+I|0,A=e>>>0>hA>>>0?A+1|0:A,I=GA(H,0,U,0),e=h+A|0,A=I>>>0>(hA=I+hA|0)>>>0?e+1|0:e,nA=A=(zA=cA+hA|0)>>>0<hA>>>0?A+1|0:A,iA=A=A-((zA>>>0<4293918720)-1|0)|0,I=(e=A>>>21|0)+B|0,lA=I=(A=(2097151&A)<<11|(sA=zA- -1048576|0)>>>21)>>>0>(VA=A+oA|0)>>>0?I+1|0:I,rA=A=I-((VA>>>0<4293918720)-1|0)|0,I=(2097151&A)<<11|(_A=VA- -1048576|0)>>>21,A=(A>>>21|0)+kA|0,hA=A=I>>>0>(yA=I+yA|0)>>>0?A+1|0:A,tA=A=A-((yA>>>0<4293918720)-1|0)|0,I=(e=A>>21)+t|0,gg=I=(I=(A=(2097151&A)<<11|(oA=yA- -1048576|0)>>>21)>>>0>(B=A+bA|0)>>>0?I+1|0:I)-(((e=-2097152&LA)>>>0>B>>>0)+Ig|0)|0,LA=A=B-e|0,cA=A- -1048576|0,Ig=A=I-((A>>>0<4293918720)-1|0)|0,e=(I=A>>21)+QA|0,I=((A=(2097151&A)<<11|cA>>>21)>>>0>(B=A+Ag|0)>>>0?e+1|0:e)+EA|0,mA=I=(I=(A=B)>>>0>(B=B+pA|0)>>>0?I+1|0:I)-(((e=-2097152&TA)>>>0>B>>>0)+Cg|0)|0,EA=A=B-e|0,t=A- -1048576|0,XA=A=I-((A>>>0<4293918720)-1|0)|0,e=(I=A>>21)+Bg|0,TA=A=(e=(A=(2097151&A)<<11|t>>>21)>>>0>(QA=A+eg|0)>>>0?e+1|0:e)-((QA>>>0<4293918720)-1|0)|0,bA=UA- -1048576|0,kA=SA-((UA>>>0<4293918720)-1|0)|0,pA=(2097151&A)<<11|(B=QA- -1048576|0)>>>21,A=(A>>21)+SA|0,Cg=(UA=pA+UA|0)-(I=-2097152&bA)|0,eg=(pA>>>0>UA>>>0?A+1|0:A)-((I>>>0>UA>>>0)+kA|0)|0,Bg=QA-(A=-2097152&B)|0,Ag=e-((A>>>0>QA>>>0)+TA|0)|0,OA=EA-(A=-2097152&t)|0,UA=mA-((A>>>0>EA>>>0)+XA|0)|0,A=GA(xA,WA,-997805,-1),I=h,e=A,A=GA(AA,$,654183,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA($A,CA,136657,0))|0,A=h+I|0,I=gg+(e>>>0>B>>>0?A+1|0:A)|0,mA=(e=B+LA|0)-(A=-2097152&cA)|0,XA=(I=e>>>0<LA>>>0?I+1|0:I)-((A>>>0>e>>>0)+Ig|0)|0,LA=YA-(A=-2097152&DA)|0,SA=uA-((A>>>0>YA>>>0)+aA|0)|0,I=GA(IA,gA,-997805,-1),A=h,e=I,I=GA(P,V,654183,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(j,T,136657,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,A=GA(L,R,-683901,-1),e=h+I|0,I=NA+(A>>>0>(B=A+B|0)>>>0?e+1|0:e)|0,DA=(e=B+qA|0)-(A=-2097152&vA)|0,uA=(I=e>>>0<qA>>>0?I+1|0:I)-((A>>>0>e>>>0)+BA|0)|0,I=GA(IA,gA,654183,0),A=h,e=I,I=GA(P,V,470296,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=GA(j,T,-997805,-1))+e|0,e=h+A|0,I=HA+(I>>>0>B>>>0?e+1|0:e)|0,I=(A=B+ZA|0)>>>0<ZA>>>0?I+1|0:I,e=A,A=GA(L,R,136657,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(q,z,-683901,-1))|0,A=h+I|0,cA=B-(I=-2097152&KA)|0,t=(e>>>0>B>>>0?A+1|0:A)-((I>>>0>B>>>0)+eA|0)|0,B=(i[Q+28|0]|i[Q+29|0]<<8|i[Q+30|0]<<16|i[Q+31|0]<<24)>>>7|0,A=GA(y,0,F,0),I=h,QA=(e=A)+(A=GA(_,0,N,0))|0,e=h+I|0,e=A>>>0>QA>>>0?e+1|0:e,A=GA(p,0,K,0),I=h+e|0,I=A>>>0>(QA=A+QA|0)>>>0?I+1|0:I,e=GA(l,u,Y,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,e=GA(k,0,H,0),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,e=GA(v,0,M,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,I=GA(S,0,b,0),e=h+A|0,e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,A=GA(d,fA,FA,0),I=h+e|0,I=A>>>0>(QA=A+QA|0)>>>0?I+1|0:I,e=GA(s,0,U,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,e=GA(E,0,G,0),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,e=GA(f,0,x,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,I=GA(w,0,m,0),e=h+A|0,I=e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,NA=(e=(2097151&PA)<<11|jA>>>21)+(A=B+QA|0)|0,A=(PA>>>21|0)+(I=A>>>0<QA>>>0?I+1|0:I)|0,pA=A=e>>>0>NA>>>0?A+1|0:A,TA=I=A-((NA>>>0<4293918720)-1|0)|0,e=(A=I>>>21|0)+t|0,EA=e=(I=(2097151&I)<<11|(fA=NA- -1048576|0)>>>21)>>>0>(vA=I+cA|0)>>>0?e+1|0:e,jA=I=e-((vA>>>0<4293918720)-1|0)|0,A=(A=I>>21)+uA|0,cA=A=(I=(2097151&I)<<11|(QA=vA- -1048576|0)>>>21)>>>0>(DA=I+DA|0)>>>0?A+1|0:A,KA=I=A-((DA>>>0<4293918720)-1|0)|0,e=(A=I>>21)+SA|0,PA=e=(I=(B=(2097151&I)<<11|(t=DA- -1048576|0)>>>21)+LA|0)>>>0<B>>>0?e+1|0:e,SA=I,A=GA(I,e,-683901,-1),I=h+XA|0,uA=e=A+mA|0,B=A>>>0>e>>>0?I+1|0:I,I=GA(AA,$,470296,0),A=h+hA|0,A=I>>>0>(yA=I+yA|0)>>>0?A+1|0:A,I=GA(xA,WA,654183,0),A=h+(A-(((e=-2097152&oA)>>>0>yA>>>0)+tA|0)|0)|0,A=I>>>0>(oA=I+(yA-e|0)|0)>>>0?A+1|0:A,e=GA($A,CA,-997805,-1),I=h+A|0,I=e>>>0>(oA=e+oA|0)>>>0?I+1|0:I,HA=e=DA-(A=-2097152&t)|0,FA=cA=cA-((A>>>0>DA>>>0)+KA|0)|0,oA=(t=GA(SA,PA,136657,0))+oA|0,A=h+I|0,e=GA(e,cA,-683901,-1),I=h+(t>>>0>oA>>>0?A+1|0:A)|0,cA=I=e>>>0>(hA=e+oA|0)>>>0?I+1|0:I,KA=A=I-((hA>>>0<4293918720)-1|0)|0,I=(2097151&A)<<11|(t=hA- -1048576|0)>>>21,A=(A>>21)+B|0,DA=I=(A=I>>>0>(oA=I+uA|0)>>>0?A+1|0:A)-((oA>>>0<4293918720)-1|0)|0,yA=(2097151&I)<<11|(B=oA- -1048576|0)>>>21,I=(I>>21)+UA|0,OA=uA=yA+OA|0,uA=yA>>>0>uA>>>0?I+1|0:I,UA=oA-(I=-2097152&B)|0,ZA=A-((I>>>0>oA>>>0)+DA|0)|0,mA=hA-(A=-2097152&t)|0,XA=cA-((A>>>0>hA>>>0)+KA|0)|0,A=GA(AA,$,666643,0),e=lA+h|0,e=(t=A+VA|0)>>>0<VA>>>0?e+1|0:e,B=(A=GA(xA,WA,470296,0))+(t-(I=-2097152&_A)|0)|0,I=h+(e-((I>>>0>t>>>0)+rA|0)|0)|0,I=A>>>0>B>>>0?I+1|0:I,e=GA($A,CA,654183,0),A=h+I|0,oA=B=e+B|0,B=e>>>0>B>>>0?A+1|0:A,t=vA-(A=-2097152&QA)|0,cA=EA-((A>>>0>vA>>>0)+jA|0)|0,A=GA(IA,gA,470296,0),I=h,e=A,A=GA(P,V,666643,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,A=GA(j,T,654183,0),I=h+I|0,I=A>>>0>(e=A+e|0)>>>0?I+1|0:I,QA=(A=e)+(e=GA(L,R,-997805,-1))|0,A=h+I|0,A=e>>>0>QA>>>0?A+1|0:A,I=GA(q,z,136657,0),A=h+A|0,A=I>>>0>(e=I+QA|0)>>>0?A+1|0:A,QA=(I=GA(O,X,-683901,-1))+e|0,e=h+A|0,I=pA+(I>>>0>QA>>>0?e+1|0:e)|0,vA=(e=(2097151&JA)<<11|MA>>>21)+((QA=QA+NA|0)-(A=-2097152&fA)|0)|0,A=((I=QA>>>0<NA>>>0?I+1|0:I)-((A>>>0>QA>>>0)+TA|0)|0)+(JA>>21)|0,DA=A=e>>>0>vA>>>0?A+1|0:A,LA=A=A-((vA>>>0<4293918720)-1|0)|0,I=t,t=(2097151&A)<<11|(_A=vA- -1048576|0)>>>21,A=(A>>21)+cA|0,KA=A=(e=I+t|0)>>>0<t>>>0?A+1|0:A,NA=e,A=GA(e,A,-683901,-1),I=h+B|0,I=A>>>0>(e=A+oA|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(SA,PA,-997805,-1))|0,A=h+I|0,A=e>>>0>B>>>0?A+1|0:A,I=GA(HA,FA,136657,0),e=h+A|0,MA=B=I+B|0,EA=I>>>0>B>>>0?e+1|0:e,oA=zA-(A=-2097152&sA)|0,pA=nA-((A>>>0>zA>>>0)+iA|0)|0,I=GA(F,0,G,0),A=h,e=I,I=GA(N,0,U,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,I=GA(K,0,x,0),A=h+A|0,A=I>>>0>(e=I+e|0)>>>0?A+1|0:A,B=(I=GA(H,0,m,0))+e|0,e=h+A|0,I=I>>>0>B>>>0?e+1|0:e,fA=e=(A=(i[Q+7|0]|i[Q+8|0]<<8|i[Q+9|0]<<16|i[Q+10|0]<<24)>>>7&2097151)+B|0,QA=A>>>0>e>>>0?I+1|0:I,A=GA(F,0,U,0),I=h,e=A,A=GA(N,0,m,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(H,0,x,0))|0,A=h+I|0,cA=B,B=e>>>0>B>>>0?A+1|0:A,A=(I=i[Q+6|0])>>>24|0,t=I<<8|(TA=i[Q+2|0]|i[Q+3|0]<<8|i[Q+4|0]<<16|i[Q+5|0]<<24)>>>24,e=A,I=(A=i[Q+7|0])>>>16|0,I|=e,e=B,t=e=(A=2097151&((3&I)<<30|(A=A<<16|t)>>>2))>>>0>(cA=A+cA|0)>>>0?e+1|0:e,qA=A=e-((cA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(lA=cA- -1048576|0)>>>21,A=(A>>>21|0)+QA|0,yA=A=e>>>0>(nA=e+fA|0)>>>0?A+1|0:A,jA=A=A-((nA>>>0<4293918720)-1|0)|0,e=(I=A>>>21|0)+pA|0,e=(A=(2097151&A)<<11|(hA=nA- -1048576|0)>>>21)>>>0>(B=A+oA|0)>>>0?e+1|0:e,I=GA(xA,WA,666643,0),A=h+e|0,A=I>>>0>(B=I+B|0)>>>0?A+1|0:A,I=GA($A,CA,470296,0),A=h+A|0,A=I>>>0>(e=I+B|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(NA,KA,136657,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,A=GA(SA,PA,654183,0),I=h+I|0,I=A>>>0>(e=A+B|0)>>>0?I+1|0:I,oA=(A=GA(HA,FA,-997805,-1))+e|0,e=h+I|0,pA=e=A>>>0>oA>>>0?e+1|0:e,JA=A=e-((oA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(fA=oA- -1048576|0)>>>21,A=(A>>21)+EA|0,MA=e=(A=e>>>0>(B=e+MA|0)>>>0?A+1|0:A)-((B>>>0<4293918720)-1|0)|0,QA=(2097151&e)<<11|(EA=B- -1048576|0)>>>21,e=(e>>21)+XA|0,YA=sA=QA+mA|0,sA=QA>>>0>sA>>>0?e+1|0:e,QA=B,I=A,B=(vA-(A=-2097152&_A)|0)+(_A=(2097151&kA)<<11|bA>>>21)|0,A=(DA-((A>>>0>vA>>>0)+LA|0)|0)+(kA>>21)|0,kA=A=B>>>0<_A>>>0?A+1|0:A,mA=A=A-((B>>>0<4293918720)-1|0)|0,vA=e=A>>21,A=GA(xA=(2097151&A)<<11|(DA=B- -1048576|0)>>>21,e,-683901,-1),I=h+I|0,I=A>>>0>(e=A+QA|0)>>>0?I+1|0:I,XA=e-(A=-2097152&EA)|0,zA=I-((A>>>0>e>>>0)+MA|0)|0,I=GA(xA,vA,136657,0),A=h+pA|0,A=I>>>0>(e=I+oA|0)>>>0?A+1|0:A,VA=e-(I=-2097152&fA)|0,JA=A-((I>>>0>e>>>0)+JA|0)|0,I=GA($A,CA,666643,0),A=h+(yA-(((e=-2097152&hA)>>>0>nA>>>0)+jA|0)|0)|0,A=I>>>0>(QA=I+(nA-e|0)|0)>>>0?A+1|0:A,e=GA(NA,KA,-997805,-1),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,A=GA(SA,PA,470296,0),e=h+I|0,e=A>>>0>(QA=A+QA|0)>>>0?e+1|0:e,I=GA(HA,FA,654183,0),A=h+e|0,MA=QA=I+QA|0,pA=I>>>0>QA>>>0?A+1|0:A,e=TA>>>5&2097151,A=GA(F,0,m,0),I=h,EA=A,A=GA(N,0,x,0),I=h+I|0,A=A>>>0>(QA=EA+A|0)>>>0?I+1|0:I,EA=I=e+QA|0,e=A=I>>>0<QA>>>0?A+1|0:A,nA=(I=GA(F,0,x,0))+(A=(A=i[Q+2|0])<<16&2031616|i[0|Q]|i[Q+1|0]<<8)|0,I=h,_A=I=A>>>0>nA>>>0?I+1|0:I,LA=I=I-((nA>>>0<4293918720)-1|0)|0,A=(A=I>>>21|0)+e|0,hA=A=(I=(2097151&I)<<11|(yA=nA- -1048576|0)>>>21)>>>0>(bA=I+EA|0)>>>0?A+1|0:A,TA=I=A-((bA>>>0<4293918720)-1|0)|0,e=(2097151&I)<<11|(oA=bA- -1048576|0)>>>21,I=(I>>>21|0)+t|0,I=e>>>0>(QA=e+cA|0)>>>0?I+1|0:I,e=GA(NA,KA,654183,0),A=h+(I-(((t=-2097152&lA)>>>0>QA>>>0)+qA|0)|0)|0,A=e>>>0>(cA=e+(QA-t|0)|0)>>>0?A+1|0:A,I=GA(SA,PA,666643,0),A=h+A|0,A=I>>>0>(e=I+cA|0)>>>0?A+1|0:A,fA=(I=e)+(e=GA(HA,FA,470296,0))|0,I=h+A|0,EA=I=e>>>0>fA>>>0?I+1|0:I,jA=I=I-((fA>>>0<4293918720)-1|0)|0,e=(A=I>>21)+pA|0,lA=I=(e=(I=(2097151&I)<<11|(QA=fA- -1048576|0)>>>21)>>>0>(cA=I+MA|0)>>>0?e+1|0:e)-((cA>>>0<4293918720)-1|0)|0,pA=(2097151&I)<<11|(t=cA- -1048576|0)>>>21,I=(I>>21)+JA|0,PA=SA=pA+VA|0,pA=pA>>>0>SA>>>0?I+1|0:I,A=GA(xA,vA,-997805,-1),I=h+e|0,I=A>>>0>(cA=A+cA|0)>>>0?I+1|0:I,JA=cA-(A=-2097152&t)|0,MA=I-((A>>>0>cA>>>0)+lA|0)|0,I=GA(xA,vA,654183,0),A=h+EA|0,A=I>>>0>(e=I+fA|0)>>>0?A+1|0:A,SA=e-(I=-2097152&QA)|0,lA=A-((I>>>0>e>>>0)+jA|0)|0,A=GA(NA,KA,470296,0),e=h+(hA-(((I=-2097152&oA)>>>0>bA>>>0)+TA|0)|0)|0,e=A>>>0>(t=A+(bA-I|0)|0)>>>0?e+1|0:e,I=GA(HA,FA,666643,0),A=h+e|0,cA=t=I+t|0,e=I>>>0>t>>>0?A+1|0:A,I=GA(NA,KA,666643,0),A=h+(_A-((4095&LA)+((t=-2097152&yA)>>>0>nA>>>0)|0)|0)|0,fA=A=I>>>0>(oA=I+(nA-t|0)|0)>>>0?A+1|0:A,_A=A=A-((oA>>>0<4293918720)-1|0)|0,t=(2097151&A)<<11|(EA=oA- -1048576|0)>>>21,A=(A>>21)+e|0,e=A=t>>>0>(QA=t+cA|0)>>>0?A+1|0:A,yA=A=A-((QA>>>0<4293918720)-1|0)|0,t=(2097151&A)<<11|(cA=QA- -1048576|0)>>>21,A=(A>>21)+lA|0,t=t>>>0>(hA=t+SA|0)>>>0?A+1|0:A,A=GA(xA,vA,470296,0),e=h+e|0,e=A>>>0>(I=A+QA|0)>>>0?e+1|0:e,QA=I-(A=-2097152&cA)|0,cA=e-((A>>>0>I>>>0)+yA|0)|0,I=GA(xA,vA,666643,0),A=h+(fA-(((e=-2097152&EA)>>>0>oA>>>0)+_A|0)|0)|0,I=(e=(A=I>>>0>(lA=I+(oA-e|0)|0)>>>0?A+1|0:A)>>21)+cA|0,A=(A=(I=(A=(2097151&A)<<11|lA>>>21)>>>0>(_A=A+QA|0)>>>0?I+1|0:I)>>21)+t|0,I=(I=(A=(I=(2097151&I)<<11|_A>>>21)>>>0>(yA=I+hA|0)>>>0?A+1|0:A)>>21)+MA|0,e=(A=(I=(A=(2097151&A)<<11|yA>>>21)>>>0>(t=A+JA|0)>>>0?I+1|0:I)>>21)+pA|0,A=(I=(e=(I=(2097151&I)<<11|t>>>21)>>>0>(hA=I+PA|0)>>>0?e+1|0:e)>>21)+zA|0,I=(e=(A=(e=(2097151&e)<<11|hA>>>21)>>>0>(oA=e+XA|0)>>>0?A+1|0:A)>>21)+sA|0,A=(A=(I=(A=(2097151&A)<<11|oA>>>21)>>>0>(pA=A+YA|0)>>>0?I+1|0:I)>>21)+ZA|0,I=(I=(A=(I=(2097151&I)<<11|pA>>>21)>>>0>(fA=I+UA|0)>>>0?A+1|0:A)>>21)+uA|0,e=(A=(I=(A=(2097151&A)<<11|fA>>>21)>>>0>(EA=A+OA|0)>>>0?I+1|0:I)>>21)+Ag|0,A=(I=(e=(I=(2097151&I)<<11|EA>>>21)>>>0>(QA=I+Bg|0)>>>0?e+1|0:e)>>21)+eg|0,DA=(sA=B-(I=-2097152&DA)|0)+((2097151&(A=(e=(2097151&e)<<11|QA>>>21)>>>0>(cA=e+Cg|0)>>>0?A+1|0:A))<<11|cA>>>21)|0,A=(kA-((I>>>0>B>>>0)+mA|0)|0)+(A>>21)|0,kA=I=(A=sA>>>0>DA>>>0?A+1|0:A)>>21,lA=(A=GA(uA=(2097151&A)<<11|DA>>>21,I,666643,0))+(I=2097151&lA)|0,A=h,B=A=I>>>0>lA>>>0?A+1|0:A,C[0|r]=lA,C[r+1|0]=(255&A)<<24|lA>>>8,A=2097151&_A,I=GA(uA,kA,470296,0)+A|0,e=h,A=(B>>21)+(A>>>0>I>>>0?e+1|0:e)|0,A=(_A=(sA=(2097151&B)<<11|lA>>>21)+I|0)>>>0<sA>>>0?A+1|0:A,C[r+4|0]=(2047&A)<<21|_A>>>11,I=A,e=_A,C[r+3|0]=(7&A)<<29|e>>>3,C[r+2|0]=31&((65535&B)<<16|lA>>>16)|e<<5,B=2097151&yA,yA=GA(uA,kA,654183,0)+B|0,A=h,_A=(2097151&I)<<11|e>>>21,I=(I>>21)+(B=B>>>0>yA>>>0?A+1|0:A)|0,A=I=(yA=_A+yA|0)>>>0<_A>>>0?I+1|0:I,C[r+6|0]=(63&A)<<26|yA>>>6,B=yA,yA=0,C[r+5|0]=yA<<13|(1572864&e)>>>19|B<<2,e=2097151&t,t=GA(uA,kA,-997805,-1)+e|0,I=h,I=e>>>0>t>>>0?I+1|0:I,yA=(2097151&(e=A))<<11|B>>>21,e=(A>>=21)+I|0,e=(t=yA+t|0)>>>0<yA>>>0?e+1|0:e,C[r+9|0]=(511&e)<<23|t>>>9,C[r+8|0]=(1&e)<<31|t>>>1,I=0,C[r+7|0]=I<<18|(2080768&B)>>>14|t<<7,I=2097151&hA,B=GA(uA,kA,136657,0)+I|0,A=h,A=I>>>0>B>>>0?A+1|0:A,hA=(2097151&(I=e))<<11|t>>>21,I=A+(e=I>>21)|0,I=(B=hA+B|0)>>>0<hA>>>0?I+1|0:I,C[r+12|0]=(4095&I)<<20|B>>>12,e=B,C[r+11|0]=(15&I)<<28|e>>>4,B=0,C[r+10|0]=B<<15|(1966080&t)>>>17|e<<4,B=2097151&oA,t=GA(uA,kA,-683901,-1)+B|0,A=h,A=B>>>0>t>>>0?A+1|0:A,B=I,I=A+(I>>=21)|0,I=(B=(oA=t)+(t=(2097151&B)<<11|e>>>21)|0)>>>0<t>>>0?I+1|0:I,C[r+14|0]=(127&I)<<25|B>>>7,t=0,C[r+13|0]=t<<12|(1048576&e)>>>20|B<<1,A=I>>21,e=(I=(2097151&I)<<11|B>>>21)>>>0>(t=I+(2097151&pA)|0)>>>0?A+1|0:A,C[r+17|0]=(1023&e)<<22|t>>>10,C[r+16|0]=(3&e)<<30|t>>>2,I=0,C[r+15|0]=I<<17|(2064384&B)>>>15|t<<6,A=e>>21,A=(I=(2097151&e)<<11|t>>>21)>>>0>(e=I+(2097151&fA)|0)>>>0?A+1|0:A,C[r+20|0]=(8191&A)<<19|e>>>13,C[r+19|0]=(31&A)<<27|e>>>5,B=(I=2097151&EA)+(EA=(2097151&A)<<11|e>>>21)|0,I=A>>21,I=B>>>0<EA>>>0?I+1|0:I,EA=B,C[r+21|0]=B,fA=0,C[r+18|0]=fA<<14|(1835008&t)>>>18|e<<3,C[r+22|0]=(255&I)<<24|B>>>8,e=I>>21,e=(B=(t=(2097151&I)<<11|B>>>21)+(2097151&QA)|0)>>>0<t>>>0?e+1|0:e,C[r+25|0]=(2047&e)<<21|B>>>11,C[r+24|0]=(7&e)<<29|B>>>3,C[r+23|0]=31&((65535&I)<<16|EA>>>16)|B<<5,A=e>>21,A=(I=(2097151&e)<<11|B>>>21)>>>0>(e=I+(2097151&cA)|0)>>>0?A+1|0:A,C[r+27|0]=(63&A)<<26|e>>>6,t=0,C[r+26|0]=t<<13|(1572864&B)>>>19|e<<2,I=A,A>>=21,I=(B=(cA=(2097151&I)<<11|e>>>21)+(t=2097151&DA)|0)>>>0<t>>>0?A+1|0:A,C[r+31|0]=(131071&I)<<15|B>>>17,A=B,C[r+30|0]=(511&I)<<23|A>>>9,B=0,C[r+28|0]=B<<18|(2080768&e)>>>14|A<<7,C[r+29|0]=cA+DA>>>1,dg(o,64),dg(Q,64),g&&(a[g>>2]=64,a[g+4>>2]=0),n=c+560|0,0}function f(A,g,I,C){for(var e=0,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0;r=(e=Q<<3)+I|0,B=i[0|(e=g+e|0)]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,v=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,o=B<<24|(65280&B)<<8,c=(t=16711680&B)<<24,t=t>>>8|0,e=(y=-16777216&B)>>>24|0,a[r>>2]=c|y<<8|-16777216&((255&v)<<24|B>>>8)|16711680&((16777215&v)<<8|B>>>24)|v>>>8&65280|v>>>24,B=e|t|o,e=0,a[r+4>>2]=B|e,16!=(0|(Q=Q+1|0)););for(g=a[A+4>>2],a[C>>2]=a[A>>2],a[C+4>>2]=g,g=a[A+60>>2],a[C+56>>2]=a[A+56>>2],a[C+60>>2]=g,g=a[A+52>>2],a[C+48>>2]=a[A+48>>2],a[C+52>>2]=g,g=a[A+44>>2],a[C+40>>2]=a[A+40>>2],a[C+44>>2]=g,g=a[A+36>>2],a[C+32>>2]=a[A+32>>2],a[C+36>>2]=g,g=a[A+28>>2],a[C+24>>2]=a[A+24>>2],a[C+28>>2]=g,g=a[A+20>>2],a[C+16>>2]=a[A+16>>2],a[C+20>>2]=g,g=a[A+12>>2],a[C+8>>2]=a[A+8>>2],a[C+12>>2]=g;r=a[C+56>>2],t=a[C+60>>2],e=a[(g=v=(S=L<<3)+I|0)>>2],g=a[g+4>>2],k=B=a[C+36>>2],B=vA(f=a[C+32>>2],B,50),Q=h,B=vA(f,k,46)^B,Q^=h,B=vA(f,k,23)^B,g=(h^Q)+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,e=(Q=a[(B=S+33968|0)>>2])+e|0,g=a[B+4>>2]+g|0,g=e>>>0<Q>>>0?g+1|0:g,B=(Q=((c=a[C+48>>2])^(_=a[C+40>>2]))&f^c)+e|0,e=(((D=a[C+52>>2])^(d=a[C+44>>2]))&k^D)+g|0,g=(B>>>0<Q>>>0?e+1|0:e)+t|0,g=(r=B+r|0)>>>0<B>>>0?g+1|0:g,Q=(B=a[C+24>>2])+r|0,e=a[C+28>>2]+g|0,n=e=B>>>0>Q>>>0?e+1|0:e,a[C+24>>2]=Q,a[C+28>>2]=e,w=e=a[C+4>>2],e=vA(B=a[C>>2],e,36),t=h,e=vA(B,w,30)^e,t^=h,y=r+(vA(B,w,25)^e)|0,e=g+(h^t)|0,e=r>>>0>y>>>0?e+1|0:e,o=(g=y)+(y=B&((t=a[C+16>>2])|(r=a[C+8>>2]))|r&t)|0,g=(g=e)+(w&((e=a[C+20>>2])|(s=a[C+12>>2]))|e&s)|0,y=g=o>>>0<y>>>0?g+1|0:g,a[C+56>>2]=o,a[C+60>>2]=g,E=t,p=e,u=a[(g=J=(l=8|S)+I|0)>>2],M=a[g+4>>2],e=((k^d)&n^d)+D|0,e=(g=(t=(_^f)&Q^_)+c|0)>>>0<t>>>0?e+1|0:e,t=vA(Q,n,50),c=h,t=vA(Q,n,46)^t,c^=h,t=(D=vA(Q,n,23)^t)+g|0,g=(h^c)+e|0,g=(t>>>0<D>>>0?g+1|0:g)+M|0,g=(e=t+u|0)>>>0<t>>>0?g+1|0:g,t=(t=e)+(c=a[(e=l+33968|0)>>2])|0,e=a[e+4>>2]+g|0,e=(g=t>>>0<c>>>0?e+1|0:e)+p|0,D=e=(c=t+E|0)>>>0<t>>>0?e+1|0:e,a[C+16>>2]=c,a[C+20>>2]=e,g=g+((s|w)&y|s&w)|0,g=(e=t+((B|r)&o|B&r)|0)>>>0<t>>>0?g+1|0:g,t=vA(o,y,36),E=h,t=vA(o,y,30)^t,E^=h,p=e,e=vA(o,y,25)^t,g=(h^E)+g|0,E=g=e>>>0>(t=p+e|0)>>>0?g+1|0:g,a[C+48>>2]=t,a[C+52>>2]=g,p=r,l=s,g=(s=a[(e=K=(r=16|S)+I|0)>>2])+_|0,e=a[e+4>>2]+d|0,e=g>>>0<s>>>0?e+1|0:e,r=(_=g)+(s=a[(g=r+33968|0)>>2])|0,g=a[g+4>>2]+e|0,g=((n^k)&D^k)+(g=r>>>0<s>>>0?g+1|0:g)|0,g=(e=(e=r)+(r=(Q^f)&c^f)|0)>>>0<r>>>0?g+1|0:g,r=vA(c,D,50),s=h,r=vA(c,D,46)^r,s^=h,r=(_=vA(c,D,23)^r)+e|0,e=(h^s)+g|0,e=(_=r>>>0<_>>>0?e+1|0:e)+l|0,l=e=(s=r)>>>0>(r=r+p|0)>>>0?e+1|0:e,a[C+8>>2]=r,a[C+12>>2]=e,g=vA(t,E,36),e=h,g=vA(t,E,30)^g,e^=h,d=vA(t,E,25)^g,g=((y|w)&E|y&w)+(h^e)|0,e=_+((p=d+((B|o)&t|B&o)|0)>>>0<d>>>0?g+1|0:g)|0,s=e=(_=s+p|0)>>>0<s>>>0?e+1|0:e,a[C+40>>2]=_,a[C+44>>2]=e,p=B,e=(e=f)+(f=a[(g=U=(B=24|S)+I|0)>>2])|0,g=a[g+4>>2]+k|0,g=e>>>0<f>>>0?g+1|0:g,B=(d=e)+(f=a[(e=B+33968|0)>>2])|0,e=a[e+4>>2]+g|0,e=(n^(n^D)&l)+(e=B>>>0<f>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=Q^(Q^c)&r)|0)>>>0<B>>>0?e+1|0:e,B=vA(r,l,50),f=h,B=vA(r,l,46)^B,f^=h,B=(k=vA(r,l,23)^B)+g|0,g=(h^f)+e|0,e=(g=B>>>0<k>>>0?g+1|0:g)+w|0,k=e=(w=B+p|0)>>>0<B>>>0?e+1|0:e,a[C>>2]=w,a[C+4>>2]=e,e=vA(_,s,36),f=h,e=vA(_,s,30)^e,p=h^f,d=vA(_,s,25)^e,e=((y|E)&s|y&E)+(h^p)|0,g=g+((f=d+((t|o)&_|t&o)|0)>>>0<d>>>0?e+1|0:e)|0,f=g=(p=B+f|0)>>>0<B>>>0?g+1|0:g,a[C+32>>2]=p,a[C+36>>2]=g,B=a[(e=G=(g=32|S)+I|0)>>2],e=n+a[e+4>>2]|0,e=(B=B+Q|0)>>>0<Q>>>0?e+1|0:e,B=(Q=a[(g=g+33968|0)>>2])+B|0,g=a[g+4>>2]+e|0,g=(D^(D^l)&k)+(g=B>>>0<Q>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=c^(r^c)&w)|0)>>>0<B>>>0?g+1|0:g,B=vA(w,k,50),Q=h,B=vA(w,k,46)^B,Q^=h,B=(n=vA(w,k,23)^B)+e|0,e=(h^Q)+g|0,d=e=B>>>0<n>>>0?e+1|0:e,g=e,e=vA(p,f,36),Q=h,e=vA(p,f,30)^e,n=h^Q,u=vA(p,f,25)^e,e=((E|s)&f|E&s)+(h^n)|0,g=((Q=u+((t|_)&p|t&_)|0)>>>0<u>>>0?e+1|0:e)+g|0,Q=g=(n=B+Q|0)>>>0<Q>>>0?g+1|0:g,a[C+24>>2]=n,a[C+28>>2]=g,e=y+d|0,d=e=(y=B+o|0)>>>0<B>>>0?e+1|0:e,a[C+56>>2]=y,a[C+60>>2]=e,B=a[(g=Y=(e=40|S)+I|0)>>2],g=D+a[g+4>>2]|0,g=(B=B+c|0)>>>0<c>>>0?g+1|0:g,B=(o=a[(e=e+33968|0)>>2])+B|0,e=a[e+4>>2]+g|0,e=(l^(k^l)&d)+(e=B>>>0<o>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=r^(r^w)&y)|0)>>>0<B>>>0?e+1|0:e,B=vA(y,d,50),o=h,B=vA(y,d,46)^B,o^=h,B=(c=vA(y,d,23)^B)+g|0,g=(h^o)+e|0,g=B>>>0<c>>>0?g+1|0:g,e=vA(n,Q,36),o=h,e=vA(n,Q,30)^e,c=h^o,D=vA(n,Q,25)^e,e=((s|f)&Q|s&f)+(h^c)|0,e=((o=D+((_|p)&n|_&p)|0)>>>0<D>>>0?e+1|0:e)+g|0,o=e=(c=B+o|0)>>>0<o>>>0?e+1|0:e,a[C+16>>2]=c,a[C+20>>2]=e,g=g+E|0,u=g=(E=B+t|0)>>>0<t>>>0?g+1|0:g,a[C+48>>2]=E,a[C+52>>2]=g,B=a[(e=N=(g=48|S)+I|0)>>2],e=l+a[e+4>>2]|0,e=(B=B+r|0)>>>0<r>>>0?e+1|0:e,B=(r=a[(g=g+33968|0)>>2])+B|0,g=a[g+4>>2]+e|0,g=(k^(k^d)&u)+(g=B>>>0<r>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=w^(y^w)&E)|0)>>>0<B>>>0?g+1|0:g,B=vA(E,u,50),r=h,B=vA(E,u,46)^B,r^=h,B=(t=vA(E,u,23)^B)+e|0,e=(h^r)+g|0,t=e=B>>>0<t>>>0?e+1|0:e,g=e,e=vA(c,o,36),r=h,e=vA(c,o,30)^e,D=h^r,l=vA(c,o,25)^e,e=((Q|f)&o|Q&f)+(h^D)|0,g=((r=l+((n|p)&c|n&p)|0)>>>0<l>>>0?e+1|0:e)+g|0,D=g=(e=r)>>>0>(r=B+r|0)>>>0?g+1|0:g,a[C+8>>2]=r,a[C+12>>2]=g,e=t+s|0,l=e=(M=B+_|0)>>>0<B>>>0?e+1|0:e,a[C+40>>2]=M,a[C+44>>2]=e,B=a[(g=H=(e=56|S)+I|0)>>2],g=k+a[g+4>>2]|0,g=(B=B+w|0)>>>0<w>>>0?g+1|0:g,B=(t=a[(e=e+33968|0)>>2])+B|0,e=a[e+4>>2]+g|0,e=(d^(d^u)&l)+(e=B>>>0<t>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=y^(y^E)&M)|0)>>>0<B>>>0?e+1|0:e,B=vA(M,l,50),t=h,B=vA(M,l,46)^B,t^=h,B=(s=vA(M,l,23)^B)+g|0,g=(h^t)+e|0,g=B>>>0<s>>>0?g+1|0:g,e=vA(r,D,36),t=h,e=vA(r,D,30)^e,s=h^t,_=vA(r,D,25)^e,e=((Q|o)&D|Q&o)+(h^s)|0,e=((t=_+((c|n)&r|c&n)|0)>>>0<_>>>0?e+1|0:e)+g|0,s=e=(s=t)>>>0>(t=B+t|0)>>>0?e+1|0:e,a[C>>2]=t,a[C+4>>2]=e,g=g+f|0,k=g=(_=B+p|0)>>>0<B>>>0?g+1|0:g,a[C+32>>2]=_,a[C+36>>2]=g,B=a[(e=x=(g=64|S)+I|0)>>2],e=d+a[e+4>>2]|0,e=(B=B+y|0)>>>0<y>>>0?e+1|0:e,B=(y=a[(g=g+33968|0)>>2])+B|0,g=a[g+4>>2]+e|0,g=(u^(l^u)&k)+(g=B>>>0<y>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=E^(E^M)&_)|0)>>>0<B>>>0?g+1|0:g,B=vA(_,k,50),y=h,B=vA(_,k,46)^B,y^=h,B=(w=vA(_,k,23)^B)+e|0,e=(h^y)+g|0,f=e=B>>>0<w>>>0?e+1|0:e,g=e,e=vA(t,s,36),y=h,e=vA(t,s,30)^e,w=h^y,p=vA(t,s,25)^e,e=((o|D)&s|o&D)+(h^w)|0,g=((y=p+((r|c)&t|r&c)|0)>>>0<p>>>0?e+1|0:e)+g|0,y=g=(w=B+y|0)>>>0<y>>>0?g+1|0:g,a[C+56>>2]=w,a[C+60>>2]=g,e=Q+f|0,d=e=(Q=B+n|0)>>>0<B>>>0?e+1|0:e,a[C+24>>2]=Q,a[C+28>>2]=e,B=a[(g=F=(e=72|S)+I|0)>>2],g=u+a[g+4>>2]|0,g=(B=B+E|0)>>>0<E>>>0?g+1|0:g,B=(E=a[(e=e+33968|0)>>2])+B|0,e=a[e+4>>2]+g|0,e=(l^(k^l)&d)+(e=B>>>0<E>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=M^(_^M)&Q)|0)>>>0<B>>>0?e+1|0:e,B=vA(Q,d,50),E=h,B=vA(Q,d,46)^B,E^=h,B=(f=vA(Q,d,23)^B)+g|0,g=(h^E)+e|0,g=B>>>0<f>>>0?g+1|0:g,e=vA(w,y,36),E=h,e=vA(w,y,30)^e,f=h^E,p=vA(w,y,25)^e,e=((s|D)&y|s&D)+(h^f)|0,e=((E=p+((r|t)&w|r&t)|0)>>>0<p>>>0?e+1|0:e)+g|0,E=e=(f=B+E|0)>>>0<E>>>0?e+1|0:e,a[C+48>>2]=f,a[C+52>>2]=e,g=g+o|0,u=g=(o=B+c|0)>>>0<B>>>0?g+1|0:g,a[C+16>>2]=o,a[C+20>>2]=g,g=(g=M)+(c=a[(e=M=(B=80|S)+I|0)>>2])|0,e=a[e+4>>2]+l|0,e=g>>>0<c>>>0?e+1|0:e,B=(n=g)+(c=a[(g=B+33968|0)>>2])|0,g=a[g+4>>2]+e|0,g=(k^(k^d)&u)+(g=B>>>0<c>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=_^(Q^_)&o)|0)>>>0<B>>>0?g+1|0:g,B=vA(o,u,50),c=h,B=vA(o,u,46)^B,c^=h,B=(p=vA(o,u,23)^B)+e|0,e=(h^c)+g|0,n=e=B>>>0<p>>>0?e+1|0:e,g=e,e=vA(f,E,36),c=h,e=vA(f,E,30)^e,p=h^c,l=vA(f,E,25)^e,e=((y|s)&E|y&s)+(h^p)|0,g=((c=l+((t|w)&f|t&w)|0)>>>0<l>>>0?e+1|0:e)+g|0,c=g=(p=B+c|0)>>>0<c>>>0?g+1|0:g,a[C+40>>2]=p,a[C+44>>2]=g,e=n+D|0,D=e=(n=B+r|0)>>>0<r>>>0?e+1|0:e,a[C+8>>2]=n,a[C+12>>2]=e,e=33968+(g=88|S)|0,r=a[(g=b=g+I|0)>>2],B=a[e>>2]+r|0,g=a[e+4>>2]+a[g+4>>2]|0,e=k+(B>>>0<r>>>0?g+1|0:g)|0,e=(d^(d^u)&D)+(e=(g=B+_|0)>>>0<_>>>0?e+1|0:e)|0,e=(g=(B=Q^(Q^o)&n)+g|0)>>>0<B>>>0?e+1|0:e,B=vA(n,D,50),r=h,B=vA(n,D,46)^B,r^=h,B=(_=vA(n,D,23)^B)+g|0,g=(h^r)+e|0,g=B>>>0<_>>>0?g+1|0:g,e=vA(p,c,36),r=h,e=vA(p,c,30)^e,_=h^r,l=vA(p,c,25)^e,e=((y|E)&c|y&E)+(h^_)|0,e=((r=l+((f|w)&p|f&w)|0)>>>0<l>>>0?e+1|0:e)+g|0,_=e=(_=r)>>>0>(r=B+r|0)>>>0?e+1|0:e,a[C+32>>2]=r,a[C+36>>2]=e,g=g+s|0,s=g=(e=t)>>>0>(t=B+t|0)>>>0?g+1|0:g,a[C>>2]=t,a[C+4>>2]=g,e=33968+(g=96|S)|0,l=a[(g=m=g+I|0)>>2],B=a[e>>2]+l|0,e=a[e+4>>2]+a[g+4>>2]|0,g=d+(B>>>0<l>>>0?e+1|0:e)|0,g=(e=B+Q|0)>>>0<Q>>>0?g+1|0:g,B=(Q=o^(o^n)&t)+e|0,e=(u^(D^u)&s)+g|0,e=B>>>0<Q>>>0?e+1|0:e,g=vA(t,s,50),Q=h,g=vA(t,s,46)^g,Q^=h,d=B,B=vA(t,s,23)^g,e=(h^Q)+e|0,k=e=(g=d+B|0)>>>0<B>>>0?e+1|0:e,B=g,g=vA(r,_,36),Q=h,g=vA(r,_,30)^g,l=h^Q,d=vA(r,_,25)^g,g=((c|E)&_|c&E)+(h^l)|0,e=((Q=d+((f|p)&r|f&p)|0)>>>0<d>>>0?g+1|0:g)+e|0,Q=e=(l=B+Q|0)>>>0<Q>>>0?e+1|0:e,a[C+24>>2]=l,a[C+28>>2]=e,e=y+k|0,y=e=(w=B+w|0)>>>0<B>>>0?e+1|0:e,a[C+56>>2]=w,a[C+60>>2]=e,e=33968+(g=104|S)|0,k=a[(g=R=g+I|0)>>2],B=a[e>>2]+k|0,g=a[e+4>>2]+a[g+4>>2]|0,e=u+(B>>>0<k>>>0?g+1|0:g)|0,e=(g=B+o|0)>>>0<o>>>0?e+1|0:e,B=(o=n^(t^n)&w)+g|0,g=(D^(s^D)&y)+e|0,g=B>>>0<o>>>0?g+1|0:g,e=vA(w,y,50),o=h,e=vA(w,y,46)^e,o^=h,k=vA(w,y,23)^e,e=(h^o)+g|0,d=e=(B=k+B|0)>>>0<k>>>0?e+1|0:e,g=e,e=vA(l,Q,36),o=h,e=vA(l,Q,30)^e,k=h^o,u=vA(l,Q,25)^e,e=((c|_)&Q|c&_)+(h^k)|0,g=((o=u+((r|p)&l|r&p)|0)>>>0<u>>>0?e+1|0:e)+g|0,o=g=(k=B+o|0)>>>0<o>>>0?g+1|0:g,a[C+16>>2]=k,a[C+20>>2]=g,g=E+d|0,E=g=(f=B+f|0)>>>0<B>>>0?g+1|0:g,a[C+48>>2]=f,a[C+52>>2]=g,e=33968+(g=112|S)|0,d=a[(B=u=g+I|0)>>2],g=a[e>>2]+d|0,e=a[e+4>>2]+a[B+4>>2]|0,e=D+(g>>>0<d>>>0?e+1|0:e)|0,e=(s^(y^s)&E)+(e=(g=g+n|0)>>>0<n>>>0?e+1|0:e)|0,e=(g=(B=t^(t^w)&f)+g|0)>>>0<B>>>0?e+1|0:e,B=vA(f,E,50),n=h,B=vA(f,E,46)^B,n^=h,B=(D=vA(f,E,23)^B)+g|0,g=(h^n)+e|0,d=g=B>>>0<D>>>0?g+1|0:g,e=g,g=vA(k,o,36),n=h,g=vA(k,o,30)^g,D=h^n,P=vA(k,o,25)^g,g=((Q|_)&o|Q&_)+(h^D)|0,e=((n=P+((r|l)&k|r&l)|0)>>>0<P>>>0?g+1|0:g)+e|0,n=e=(D=B+n|0)>>>0<n>>>0?e+1|0:e,a[C+8>>2]=D,a[C+12>>2]=e,e=c+d|0,B=e=(c=B+p|0)>>>0<B>>>0?e+1|0:e,a[C+40>>2]=c,a[C+44>>2]=e,e=33968+(g=120|S)|0,S=a[(g=p=g+I|0)>>2],d=a[e>>2]+S|0,e=a[e+4>>2]+a[g+4>>2]|0,g=s+(d>>>0<S>>>0?e+1|0:e)|0,g=(y^(y^E)&B)+(g=(e=t+d|0)>>>0<t>>>0?g+1|0:g)|0,g=(e=(t=w^(f^w)&c)+e|0)>>>0<t>>>0?g+1|0:g,t=vA(c,B,50),y=h,t=vA(c,B,46)^t,y^=h,B=(t=vA(c,B,23)^t)+e|0,e=(h^y)+g|0,e=B>>>0<t>>>0?e+1|0:e,t=B,y=e,g=e,e=vA(D,n,36),c=h,e=vA(D,n,30)^e,E=h^c,s=vA(D,n,25)^e,e=((Q|o)&n|Q&o)+(h^E)|0,g=((c=s+((k|l)&D|k&l)|0)>>>0<s>>>0?e+1|0:e)+g|0,g=(B=B+c|0)>>>0<c>>>0?g+1|0:g,a[C>>2]=B,a[C+4>>2]=g,e=y+_|0,e=(E=r)>>>0>(r=r+t|0)>>>0?e+1|0:e,a[C+32>>2]=r,a[C+36>>2]=e,64!=(0|L);)o=((L=L+16|0)<<3)+I|0,t=a[v>>2],Q=a[v+4>>2],P=a[F>>2],y=g=a[F+4>>2],e=g,B=g=a[u+4>>2],g=vA(l=a[u>>2],g,45),r=h,E=((63&B)<<26|l>>>6)^(g=vA(l,B,3)^g),g=(B>>>6^(c=h^r))+e|0,e=((r=E+P|0)>>>0<E>>>0?g+1|0:g)+Q|0,e=(g=r+t|0)>>>0<r>>>0?e+1|0:e,t=r=a[J+4>>2],r=vA(Q=a[J>>2],r,63),c=h,r=((127&t)<<25|Q>>>7)^vA(Q,t,56)^r,e=(h^c^t>>>7)+e|0,r=e=r>>>0>(k=r+g|0)>>>0?e+1|0:e,a[o>>2]=k,a[o+4>>2]=e,Q=(u=a[M>>2])+Q|0,g=(o=a[M+4>>2])+t|0,e=Q>>>0<u>>>0?g+1|0:g,t=g=a[p+4>>2],g=vA(d=a[p>>2],g,45),c=h,E=Q,Q=((63&t)<<26|d>>>6)^vA(d,t,3)^g,e=(h^c^t>>>6)+e|0,Q=Q>>>0>(E=E+Q|0)>>>0?e+1|0:e,e=vA(c=a[K>>2],g=a[K+4>>2],63),s=h,n=E,E=((127&g)<<25|c>>>7)^vA(c,g,56)^e,e=(h^s^g>>>7)+Q|0,Q=e=E>>>0>(D=n+E|0)>>>0?e+1|0:e,a[v+136>>2]=D,a[v+140>>2]=e,e=(M=a[b>>2])+c|0,g=(c=a[b+4>>2])+g|0,E=vA(k,r,45),s=h,E=(_=((63&r)<<26|k>>>6)^vA(k,r,3)^E)+e|0,e=(h^s^r>>>6)+(e>>>0<M>>>0?g+1|0:g)|0,e=E>>>0<_>>>0?e+1|0:e,s=g=a[U+4>>2],g=vA(_=a[U>>2],g,63),w=h,n=E,E=((127&s)<<25|_>>>7)^vA(_,s,56)^g,e=(h^w^s>>>7)+e|0,E=e=E>>>0>(S=n+E|0)>>>0?e+1|0:e,a[v+144>>2]=S,a[v+148>>2]=e,_=(J=a[m>>2])+_|0,g=(g=s)+(s=a[m+4>>2])|0,e=_>>>0<J>>>0?g+1|0:g,g=vA(D,Q,45),w=h,f=((63&Q)<<26|D>>>6)^vA(D,Q,3)^g,e=(h^w^Q>>>6)+e|0,e=(_=f+_|0)>>>0<f>>>0?e+1|0:e,w=g=a[G+4>>2],g=vA(f=a[G>>2],g,63),p=h,n=_,_=((127&w)<<25|f>>>7)^vA(f,w,56)^g,e=(h^p^w>>>7)+e|0,_=e=_>>>0>(K=n+_|0)>>>0?e+1|0:e,a[v+152>>2]=K,a[v+156>>2]=e,g=(U=a[R>>2])+f|0,e=(e=w)+(w=a[R+4>>2])|0,f=vA(S,E,45),p=h,f=((63&E)<<26|S>>>6)^vA(S,E,3)^f,e=(h^p^E>>>6)+(g>>>0<U>>>0?e+1|0:e)|0,f=(n=f+g|0)>>>0<f>>>0?e+1|0:e,e=vA(p=a[Y>>2],g=a[Y+4>>2],63),G=h,b=n,n=((127&g)<<25|p>>>7)^(e=vA(p,g,56)^e),e=(g>>>7^(Y=h^G))+f|0,f=e=n>>>0>(G=b+n|0)>>>0?e+1|0:e,a[v+160>>2]=G,a[v+164>>2]=e,g=g+B|0,g=(e=p+l|0)>>>0<p>>>0?g+1|0:g,p=vA(K,_,45),n=h,p=(Y=((63&_)<<26|K>>>6)^vA(K,_,3)^p)+e|0,e=(h^n^_>>>6)+g|0,e=p>>>0<Y>>>0?e+1|0:e,n=a[N>>2],N=g=a[N+4>>2],g=vA(n,g,63),Y=h,g=vA(n,N,56)^g,b=p,e=(N>>>7^(F=h^Y))+e|0,p=e=(p=((127&N)<<25|n>>>7)^g)>>>0>(Y=b+p|0)>>>0?e+1|0:e,a[v+168>>2]=Y,a[v+172>>2]=e,g=t+N|0,g=(e=n+d|0)>>>0<n>>>0?g+1|0:g,b=n=a[H+4>>2],n=vA(F=a[H>>2],n,63),N=h,n=(H=((127&b)<<25|F>>>7)^vA(F,b,56)^n)+e|0,e=(h^N^b>>>7)+g|0,g=n>>>0<H>>>0?e+1|0:e,e=vA(G,f,45),N=h,e=vA(G,f,3)^e,H=h^N,N=n,g=(f>>>6^H)+g|0,n=g=(n=((63&f)<<26|G>>>6)^e)>>>0>(N=N+n|0)>>>0?g+1|0:g,a[v+176>>2]=N,a[v+180>>2]=g,m=a[x>>2],x=g=a[x+4>>2],H=g,g=vA(P,y,63),e=h,R=((127&y)<<25|P>>>7)^vA(P,y,56)^g,g=(h^e^y>>>7)+Q|0,e=((D=R+D|0)>>>0<R>>>0?g+1|0:g)+H|0,e=(g=D+m|0)>>>0<D>>>0?e+1|0:e,Q=vA(N,n,45),D=h,H=(Q=((63&n)<<26|N>>>6)^vA(N,n,3)^Q)+g|0,g=(h^D^n>>>6)+e|0,Q=g=Q>>>0>H>>>0?g+1|0:g,a[v+192>>2]=H,a[v+196>>2]=g,e=r+b|0,e=(g=k+F|0)>>>0<F>>>0?e+1|0:e,D=vA(m,x,63),F=h,b=((127&x)<<25|m>>>7)^vA(m,x,56)^D,e=(h^F^x>>>7)+e|0,g=(D=b+g|0)>>>0<b>>>0?e+1|0:e,e=vA(Y,p,45),F=h,e=vA(Y,p,3)^e,x=D,g=(p>>>6^(b=h^F))+g|0,D=g=(D=((63&p)<<26|Y>>>6)^e)>>>0>(F=x+D|0)>>>0?g+1|0:g,a[v+184>>2]=F,a[v+188>>2]=g,g=vA(M,c,63),e=h,g=((127&c)<<25|M>>>7)^vA(M,c,56)^g,e=(h^e^c>>>7)+o|0,g=_+(g>>>0>(b=g+u|0)>>>0?e+1|0:e)|0,g=(e=K+b|0)>>>0<K>>>0?g+1|0:g,_=vA(H,Q,45),K=h,_=vA(H,Q,3)^_,b=h^K,K=(_^=(63&Q)<<26|H>>>6)+e|0,e=(Q>>>6^b)+g|0,_=e=_>>>0>K>>>0?e+1|0:e,a[v+208>>2]=K,a[v+212>>2]=e,g=vA(u,o,63),e=h,b=vA(u,o,56)^g,e=((g=o>>>7|0)^h^e)+y|0,g=E+((o=(u=b^((127&o)<<25|u>>>7))+P|0)>>>0<u>>>0?e+1|0:e)|0,g=(e=o+S|0)>>>0<S>>>0?g+1|0:g,y=vA(F,D,45),o=h,E=(y=((63&D)<<26|F>>>6)^vA(F,D,3)^y)+e|0,e=(h^o^D>>>6)+g|0,y=e=y>>>0>E>>>0?e+1|0:e,a[v+200>>2]=E,a[v+204>>2]=e,g=vA(U,w,63),e=h,u=((127&w)<<25|U>>>7)^vA(U,w,56)^g,g=(h^e^w>>>7)+s|0,e=p+((o=u+J|0)>>>0<u>>>0?g+1|0:g)|0,e=(g=o+Y|0)>>>0<Y>>>0?e+1|0:e,o=vA(K,_,45),p=h,u=g,g=_>>>6|0,o=((63&_)<<26|K>>>6)^vA(K,_,3)^o,e=(g^h^p)+e|0,o=e=o>>>0>(_=u+o|0)>>>0?e+1|0:e,a[v+224>>2]=_,a[v+228>>2]=e,g=vA(J,s,63),e=h,g=vA(J,s,56)^g,p=h^e,u=((127&s)<<25|J>>>7)^g,g=((e=s>>>7|0)^p)+c|0,e=f+((s=u+M|0)>>>0<u>>>0?g+1|0:g)|0,e=(g=s+G|0)>>>0<G>>>0?e+1|0:e,c=vA(E,y,45),s=h,p=g,g=y>>>6|0,y=((63&y)<<26|E>>>6)^vA(E,y,3)^c,g=(g^h^s)+e|0,y=g=(c=p+y|0)>>>0<y>>>0?g+1|0:g,a[v+216>>2]=c,a[v+220>>2]=g,g=vA(d,t,63),e=h,s=((127&t)<<25|d>>>7)^vA(d,t,56)^g,e=(h^e^t>>>7)+B|0,e=D+((g=s+l|0)>>>0<s>>>0?e+1|0:e)|0,g=(E=g+F|0)>>>0<F>>>0?e+1|0:e,e=vA(_,o,45),s=h,p=E,E=vA(_,o,3)^e,e=o>>>6|0,o=p+(E^=(63&o)<<26|_>>>6)|0,g=(e^h^s)+g|0,a[v+240>>2]=o,a[v+244>>2]=o>>>0<E>>>0?g+1|0:g,g=vA(l,B,63),e=h,g=vA(l,B,56)^g,o=h^e,e=((e=B>>>7|0)^o)+w|0,g=n+((g^=(127&B)<<25|l>>>7)>>>0>(B=g+U|0)>>>0?e+1|0:e)|0,g=(e=B+N|0)>>>0<N>>>0?g+1|0:g,B=vA(c,y,45),o=h,E=e,e=y>>>6|0,B=((63&y)<<26|c>>>6)^vA(c,y,3)^B,e=(e^h^o)+g|0,B=e=B>>>0>(y=E+B|0)>>>0?e+1|0:e,a[v+232>>2]=y,a[v+236>>2]=e,g=vA(k,r,63),e=h,E=vA(k,r,56)^g,e=((g=r>>>7|0)^h^e)+t|0,g=Q+((r=(o=E^((127&r)<<25|k>>>7))+d|0)>>>0<o>>>0?e+1|0:e)|0,g=(e=r+H|0)>>>0<H>>>0?g+1|0:g,r=vA(y,B,45),t=h,E=e,e=B>>>6|0,B=E+(r=((63&B)<<26|y>>>6)^vA(y,B,3)^r)|0,e=(e^h^t)+g|0,a[v+248>>2]=B,a[v+252>>2]=B>>>0<r>>>0?e+1|0:e;g=g+a[A+4>>2]|0,g=(I=B+a[A>>2]|0)>>>0<B>>>0?g+1|0:g,a[A>>2]=I,a[A+4>>2]=g,e=a[A+12>>2]+a[C+12>>2]|0,g=(I=a[C+8>>2])+a[A+8>>2]|0,a[A+8>>2]=g,a[A+12>>2]=g>>>0<I>>>0?e+1|0:e,e=a[A+20>>2]+a[C+20>>2]|0,g=(I=a[C+16>>2])+a[A+16>>2]|0,a[A+16>>2]=g,a[A+20>>2]=g>>>0<I>>>0?e+1|0:e,g=a[A+28>>2]+a[C+28>>2]|0,I=(e=a[C+24>>2])+a[A+24>>2]|0,a[A+24>>2]=I,a[A+28>>2]=I>>>0<e>>>0?g+1|0:g,e=a[A+36>>2]+a[C+36>>2]|0,g=(I=a[C+32>>2])+a[A+32>>2]|0,a[A+32>>2]=g,a[A+36>>2]=g>>>0<I>>>0?e+1|0:e,g=a[A+44>>2]+a[C+44>>2]|0,I=(e=a[C+40>>2])+a[A+40>>2]|0,a[A+40>>2]=I,a[A+44>>2]=I>>>0<e>>>0?g+1|0:g,e=a[A+52>>2]+a[C+52>>2]|0,g=(I=a[C+48>>2])+a[A+48>>2]|0,a[A+48>>2]=g,a[A+52>>2]=g>>>0<I>>>0?e+1|0:e,e=a[A+60>>2]+a[C+60>>2]|0,g=(I=a[C+56>>2])+a[A+56>>2]|0,a[A+56>>2]=g,a[A+60>>2]=g>>>0<I>>>0?e+1|0:e}function D(A){var g,I,e,B,a,r,t,Q,o,c,E,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0;s=(M=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24)>>>5&2097151,n=GA(g=(i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24)>>>3|0,0,-683901,-1),_=(y=i[A+44|0])<<16&2031616|i[A+42|0]|i[A+43|0]<<8,y=h,w=y=_>>>0>(d=n+_|0)>>>0?y+1|0:y,S=y=y-((d>>>0<4293918720)-1|0)|0,n=y>>21,y=(_=s)+(s=(2097151&y)<<11|(f=d- -1048576|0)>>>21)|0,_=n,G=_=y>>>0<s>>>0?_+1|0:_,q=y,v=GA(y,_,-683901,-1),k=h,D=GA(I=(i[A+49|0]|i[A+50|0]<<8|i[A+51|0]<<16|i[A+52|0]<<24)>>>7&2097151,0,-997805,-1),n=(y=i[A+27|0])>>>24|0,s=y<<8|(b=i[A+23|0]|i[A+24|0]<<8|i[A+25|0]<<16|i[A+26|0]<<24)>>>24,_=(y=i[A+28|0])>>>16|0,_=2097151&((3&(_|=n))<<30|(y=s|y<<16)>>>2),y=h,y=_>>>0>(n=_+D|0)>>>0?y+1|0:y,_=GA(L=(l=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24)>>>4&2097151,0,654183,0),y=h+y|0,D=n=_+n|0,n=_>>>0>n>>>0?y+1|0:y,p=(_=i[A+48|0])<<8|M>>>24,_=y=_>>>24|0,y=GA(e=2097151&((3&(M=(y=(s=i[A+49|0])>>>16|0)|_))<<30|(_=(s<<=16)|p)>>>2),0,136657,0),n=h+n|0,n=y>>>0>(_=y+D|0)>>>0?n+1|0:n,s=(y=GA(B=(i[A+57|0]|i[A+58|0]<<8|i[A+59|0]<<16|i[A+60|0]<<24)>>>6&2097151,0,666643,0))+_|0,_=h+n|0,D=s,n=y>>>0>s>>>0?_+1|0:_,_=(y=i[A+56|0])>>>24|0,p=y<<8|l>>>24,_=GA(a=2097151&((1&(l=(y=(s=i[A+57|0])>>>16|0)|_))<<31|(_=(s<<=16)|p)>>>1),0,470296,0),y=h+n|0,_=(y=(n=s=_+D|0)>>>0<_>>>0?y+1|0:y)+k|0,_=n>>>0>(s=n+v|0)>>>0?_+1|0:_,F=n- -1048576|0,J=n=y-((n>>>0<4293918720)-1|0)|0,k=s-(y=-2097152&F)|0,v=_-((y>>>0>s>>>0)+n|0)|0,_=GA(I,0,654183,0),y=h,y=_>>>0>(n=_+(b>>>5&2097151)|0)>>>0?y+1|0:y,s=(_=n)+(n=GA(L,0,470296,0))|0,_=h+y|0,_=n>>>0>s>>>0?_+1|0:_,y=GA(e,z,-997805,-1),_=h+_|0,_=y>>>0>(n=y+s|0)>>>0?_+1|0:_,s=(y=n)+(n=GA(a,j,666643,0))|0,y=h+_|0,p=s,s=n>>>0>s>>>0?y+1|0:y,D=(n=GA(I,0,470296,0))+(y=(y=i[A+23|0])<<16&2031616|i[A+21|0]|i[A+22|0]<<8)|0,n=h,n=y>>>0>D>>>0?n+1|0:n,D=(_=GA(L,0,666643,0))+D|0,y=h+n|0,n=GA(e,z,654183,0),_=h+(_>>>0>D>>>0?y+1|0:y)|0,l=_=n>>>0>(b=n+D|0)>>>0?_+1|0:_,R=_=_-((b>>>0<4293918720)-1|0)|0,y=(y=_>>>21|0)+s|0,n=y=(_=(2097151&_)<<11|(D=b- -1048576|0)>>>21)>>>0>(p=_+p|0)>>>0?y+1|0:y,u=_=y-((p>>>0<4293918720)-1|0)|0,y=k,k=(2097151&_)<<11|(s=p- -1048576|0)>>>21,_=(_>>21)+v|0,M=k=(_=k>>>0>(N=y+k|0)>>>0?_+1|0:_)-((N>>>0<4293918720)-1|0)|0,T=N-(y=-2097152&(v=N- -1048576|0))|0,X=_-((y>>>0>N>>>0)+k|0)|0,y=GA(q,G,136657,0),n=h+n|0,n=y>>>0>(_=y+p|0)>>>0?n+1|0:n,H=_-(y=-2097152&s)|0,K=n-((y>>>0>_>>>0)+u|0)|0,N=d-(y=-2097152&f)|0,S=w-((y>>>0>d>>>0)+S|0)|0,w=GA(g,0,136657,0),_=(y=i[A+40|0])>>>24|0,s=y<<8|(f=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24)>>>24,n=(y=i[A+41|0])>>>16|0,_=(n|=_)>>>3|0,n=(7&n)<<29|(y=s|y<<16)>>>3,y=_+h|0,y=n>>>0>(s=n+w|0)>>>0?y+1|0:y,_=GA(B,0,-683901,-1),y=h+y|0,y=_>>>0>(n=_+s|0)>>>0?y+1|0:y,p=n,_=GA(g,0,-997805,-1),n=h,n=_>>>0>(s=_+(f>>>6&2097151)|0)>>>0?n+1|0:n,f=(_=s)+(s=GA(B,0,136657,0))|0,_=h+n|0,n=GA(a,j,-683901,-1),_=h+(s>>>0>f>>>0?_+1|0:_)|0,k=_=n>>>0>(U=n+f|0)>>>0?_+1|0:_,O=n=_-((U>>>0<4293918720)-1|0)|0,y=y+(_=n>>21)|0,f=y=(n=(2097151&n)<<11|(d=U- -1048576|0)>>>21)>>>0>(u=n+p|0)>>>0?y+1|0:y,x=y=y-((u>>>0<4293918720)-1|0)|0,_=(_=y>>21)+S|0,P=_=(y=(n=(2097151&y)<<11|(p=u- -1048576|0)>>>21)+N|0)>>>0<n>>>0?_+1|0:_,m=y,_=GA(y,_,-683901,-1),y=h+K|0,Y=n=_+H|0,s=_>>>0>n>>>0?y+1|0:y,N=b-(y=-2097152&D)|0,S=l-((4095&R)+(y>>>0>b>>>0)|0)|0,b=GA(I,0,666643,0),y=(_=i[A+19|0])>>>24|0,D=_<<8|(l=i[A+15|0]|i[A+16|0]<<8|i[A+17|0]<<16|i[A+18|0]<<24)>>>24,n=y,_=(7&(n|=_=(y=i[A+20|0])>>>16|0))<<29|(_=(y<<=16)|D)>>>3,n=h+(n>>>3|0)|0,n=_>>>0>(D=_+b|0)>>>0?n+1|0:n,y=GA(e,z,470296,0),_=h+n|0,y=y>>>0>(D=y+D|0)>>>0?_+1|0:_,n=GA(e,z,666643,0),_=h,b=_=n>>>0>(H=n+(l>>>6&2097151)|0)>>>0?_+1|0:_,V=n=_-((H>>>0<4293918720)-1|0)|0,y=y+(_=n>>>21|0)|0,l=y=(n=(2097151&n)<<11|(w=H- -1048576|0)>>>21)>>>0>(K=n+D|0)>>>0?y+1|0:y,Z=y=y-((K>>>0<4293918720)-1|0)|0,_=(_=y>>>21|0)+S|0,_=(y=(2097151&y)<<11|(D=K- -1048576|0)>>>21)>>>0>(n=y+N|0)>>>0?_+1|0:_,S=(y=n)+(n=GA(q,G,-997805,-1))|0,y=h+_|0,y=n>>>0>S>>>0?y+1|0:y,R=_=u-(n=-2097152&p)|0,r=p=f-((n>>>0>u>>>0)+x|0)|0,n=GA(m,P,136657,0),y=h+y|0,y=n>>>0>(f=n+S|0)>>>0?y+1|0:y,n=GA(_,p,-683901,-1),_=h+y|0,f=_=n>>>0>(S=n+f|0)>>>0?_+1|0:_,x=y=_-((S>>>0<4293918720)-1|0)|0,_=(2097151&y)<<11|(p=S- -1048576|0)>>>21,y=(y>>21)+s|0,Y=_=(y=_>>>0>(u=_+Y|0)>>>0?y+1|0:y)-((u>>>0<4293918720)-1|0)|0,N=(2097151&_)<<11|(s=u- -1048576|0)>>>21,_=(_>>21)+X|0,Q=T=N+T|0,N=N>>>0>T>>>0?_+1|0:_,o=u-(_=-2097152&s)|0,c=y-((_>>>0>u>>>0)+Y|0)|0,T=S-(y=-2097152&p)|0,X=f-((y>>>0>S>>>0)+x|0)|0,n=(y=GA(q,G,654183,0))+(K-(_=-2097152&D)|0)|0,_=h+(l-((2147483647&Z)+(_>>>0>K>>>0)|0)|0)|0,_=y>>>0>n>>>0?_+1|0:_,y=GA(m,P,-997805,-1),_=h+_|0,_=y>>>0>(n=y+n|0)>>>0?_+1|0:_,s=(y=n)+(n=GA(R,r,136657,0))|0,y=h+_|0,Y=s,f=n>>>0>s>>>0?y+1|0:y,K=U-(y=-2097152&d)|0,u=k-((y>>>0>U>>>0)+O|0)|0,l=GA(L,0,-683901,-1),y=(_=i[A+35|0])>>>24|0,s=_<<8|(D=i[A+31|0]|i[A+32|0]<<8|i[A+33|0]<<16|i[A+34|0]<<24)>>>24,n=y,_=(y=i[A+36|0])>>>16|0,_|=n,n=h,n=(y=2097151&((1&_)<<31|(y=y<<16|s)>>>1))>>>0>(_=y+l|0)>>>0?n+1|0:n,s=(y=GA(g,0,654183,0))+_|0,_=h+n|0,_=y>>>0>s>>>0?_+1|0:_,n=GA(B,0,-997805,-1),y=h+_|0,y=n>>>0>(s=n+s|0)>>>0?y+1|0:y,_=GA(a,j,136657,0),y=h+y|0,p=n=_+s|0,s=_>>>0>n>>>0?y+1|0:y,y=GA(I,0,-683901,-1),_=h,_=y>>>0>(n=y+(D>>>4&2097151)|0)>>>0?_+1|0:_,D=(y=GA(L,0,136657,0))+n|0,n=h+_|0,n=y>>>0>D>>>0?n+1|0:n,y=GA(g,0,470296,0),_=h+n|0,_=y>>>0>(D=y+D|0)>>>0?_+1|0:_,D=(n=GA(B,0,654183,0))+D|0,y=h+_|0,_=GA(a,j,-997805,-1),y=h+(n>>>0>D>>>0?y+1|0:y)|0,l=y=_>>>0>(k=_+D|0)>>>0?y+1|0:y,E=_=y-((k>>>0<4293918720)-1|0)|0,n=(y=_>>21)+s|0,S=_=(n=(_=(2097151&_)<<11|(D=k- -1048576|0)>>>21)>>>0>(d=_+p|0)>>>0?n+1|0:n)-((d>>>0<4293918720)-1|0)|0,y=(y=_>>21)+u|0,x=y=(_=(s=(2097151&_)<<11|(p=d- -1048576|0)>>>21)+K|0)>>>0<s>>>0?y+1|0:y,s=Y,Y=_,y=GA(_,y,-683901,-1),_=h+f|0,u=s=s+y|0,s=y>>>0>s>>>0?_+1|0:_,f=(y=GA(q,G,470296,0))+(H-(_=-2097152&w)|0)|0,_=h+(b-((2047&V)+(_>>>0>H>>>0)|0)|0)|0,_=y>>>0>f>>>0?_+1|0:_,w=(y=f)+(f=GA(m,P,654183,0))|0,y=h+_|0,y=f>>>0>w>>>0?y+1|0:y,f=GA(R,r,-997805,-1),_=h+y|0,_=f>>>0>(w=f+w|0)>>>0?_+1|0:_,U=p=d-(y=-2097152&p)|0,t=f=n-((y>>>0>d>>>0)+S|0)|0,n=GA(Y,x,136657,0),y=h+_|0,y=n>>>0>(w=n+w|0)>>>0?y+1|0:y,n=GA(p,f,-683901,-1),_=h+y|0,f=_=n>>>0>(b=n+w|0)>>>0?_+1|0:_,K=y=_-((b>>>0<4293918720)-1|0)|0,_=(2097151&y)<<11|(p=b- -1048576|0)>>>21,y=(y>>21)+s|0,u=_=(y=_>>>0>(w=_+u|0)>>>0?y+1|0:y)-((w>>>0<4293918720)-1|0)|0,d=(2097151&_)<<11|(s=w- -1048576|0)>>>21,_=(_>>21)+X|0,O=S=d+T|0,S=d>>>0>S>>>0?_+1|0:_,V=w-(_=-2097152&s)|0,Z=y-((_>>>0>w>>>0)+u|0)|0,T=b-(y=-2097152&p)|0,X=f-((y>>>0>b>>>0)+K|0)|0,f=GA(q,G,666643,0),y=(_=i[A+14|0])>>>24|0,s=_<<8|(u=i[A+10|0]|i[A+11|0]<<8|i[A+12|0]<<16|i[A+13|0]<<24)>>>24,n=y,_=(y=i[A+15|0])>>>16|0,_|=n,n=h,n=(y=2097151&((1&_)<<31|(y=y<<16|s)>>>1))>>>0>(_=y+f|0)>>>0?n+1|0:n,s=(y=_)+(_=GA(m,P,470296,0))|0,y=h+n|0,y=_>>>0>s>>>0?y+1|0:y,_=GA(R,r,654183,0),y=h+y|0,y=_>>>0>(n=_+s|0)>>>0?y+1|0:y,s=(_=n)+(n=GA(Y,x,-997805,-1))|0,_=h+y|0,_=n>>>0>s>>>0?_+1|0:_,y=GA(U,t,136657,0),_=h+_|0,b=n=y+s|0,s=y>>>0>n>>>0?_+1|0:_,D=k-(y=-2097152&D)|0,f=l-((y>>>0>k>>>0)+E|0)|0,n=GA(I,0,136657,0),y=h,y=(_=(i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24)>>>7&2097151)>>>0>(n=_+n|0)>>>0?y+1|0:y,p=(_=n)+(n=GA(L,0,-997805,-1))|0,_=h+y|0,_=n>>>0>p>>>0?_+1|0:_,y=GA(e,z,-683901,-1),_=h+_|0,_=y>>>0>(n=y+p|0)>>>0?_+1|0:_,p=(y=GA(g,0,666643,0))+n|0,n=h+_|0,n=y>>>0>p>>>0?n+1|0:n,_=GA(B,0,470296,0),y=h+n|0,y=_>>>0>(p=_+p|0)>>>0?y+1|0:y,_=GA(a,j,654183,0),y=h+y|0,_=(J>>21)+(_>>>0>(n=_+p|0)>>>0?y+1|0:y)|0,d=_=(p=(2097151&J)<<11|F>>>21)>>>0>(F=p+n|0)>>>0?_+1|0:_,J=y=_-((F>>>0<4293918720)-1|0)|0,p=(2097151&y)<<11|(w=F- -1048576|0)>>>21,y=(y>>21)+f|0,H=y=(_=p+D|0)>>>0<p>>>0?y+1|0:y,K=_,_=GA(_,y,-683901,-1),y=h+s|0,p=n=_+b|0,s=_>>>0>n>>>0?y+1|0:y,y=GA(m,P,666643,0),_=h,_=y>>>0>(n=y+(u>>>4&2097151)|0)>>>0?_+1|0:_,y=GA(R,r,470296,0),_=h+_|0,_=y>>>0>(n=y+n|0)>>>0?_+1|0:_,f=(y=GA(Y,x,654183,0))+n|0,n=h+_|0,n=y>>>0>f>>>0?n+1|0:n,_=GA(U,t,-997805,-1),y=h+n|0,y=_>>>0>(f=_+f|0)>>>0?y+1|0:y,_=GA(K,H,136657,0),y=h+y|0,l=y=_>>>0>(k=_+f|0)>>>0?y+1|0:y,P=_=y-((k>>>0<4293918720)-1|0)|0,y=p,p=(2097151&_)<<11|(D=k- -1048576|0)>>>21,_=(_>>21)+s|0,m=s=(_=(n=y+p|0)>>>0<p>>>0?_+1|0:_)-((n>>>0<4293918720)-1|0)|0,y=(y=s>>21)+X|0,q=p=(s=(2097151&s)<<11|(f=n- -1048576|0)>>>21)+T|0,b=s>>>0>p>>>0?y+1|0:y,p=n,n=_,s=(F-(_=-2097152&w)|0)+(w=(2097151&M)<<11|v>>>21)|0,_=(d-((_>>>0>F>>>0)+J|0)|0)+(M>>21)|0,u=_=s>>>0<w>>>0?_+1|0:_,L=_=_-((s>>>0<4293918720)-1|0)|0,v=y=_>>21,y=GA(G=(2097151&_)<<11|(J=s- -1048576|0)>>>21,y,-683901,-1),n=h+n|0,n=y>>>0>(_=y+p|0)>>>0?n+1|0:n,z=_-(y=-2097152&f)|0,j=n-((y>>>0>_>>>0)+m|0)|0,y=GA(G,v,136657,0),_=l+h|0,m=(n=y+k|0)-(y=-2097152&D)|0,F=(_=n>>>0<k>>>0?_+1|0:_)-((y>>>0>n>>>0)+P|0)|0,_=GA(R,r,666643,0),n=h,n=(y=(i[A+7|0]|i[A+8|0]<<8|i[A+9|0]<<16|i[A+10|0]<<24)>>>7&2097151)>>>0>(_=y+_|0)>>>0?n+1|0:n,p=(y=GA(Y,x,470296,0))+_|0,_=h+n|0,_=y>>>0>p>>>0?_+1|0:_,y=GA(U,t,654183,0),_=h+_|0,_=y>>>0>(n=y+p|0)>>>0?_+1|0:_,p=(y=n)+(n=GA(K,H,-997805,-1))|0,y=h+_|0,w=p,p=n>>>0>p>>>0?y+1|0:y,l=GA(Y,x,666643,0),y=(_=i[A+6|0])>>>24|0,f=_<<8|(P=i[A+2|0]|i[A+3|0]<<8|i[A+4|0]<<16|i[A+5|0]<<24)>>>24,n=y,_=(y=i[A+7|0])>>>16|0,_=2097151&((3&(_|=n))<<30|(y=y<<16|f)>>>2),y=h,y=_>>>0>(n=_+l|0)>>>0?y+1|0:y,f=(_=GA(U,t,470296,0))+n|0,n=h+y|0,n=_>>>0>f>>>0?n+1|0:n,_=GA(K,H,654183,0),y=h+n|0,l=y=_>>>0>(d=_+f|0)>>>0?y+1|0:y,M=y=y-((d>>>0<4293918720)-1|0)|0,_=(n=y>>21)+p|0,k=y=(_=(y=(2097151&y)<<11|(D=d- -1048576|0)>>>21)>>>0>(f=y+w|0)>>>0?_+1|0:_)-((f>>>0<4293918720)-1|0)|0,w=(2097151&y)<<11|(p=f- -1048576|0)>>>21,y=(y>>21)+F|0,m=Y=w+m|0,w=w>>>0>Y>>>0?y+1|0:y,y=GA(G,v,-997805,-1),_=h+_|0,_=y>>>0>(n=y+f|0)>>>0?_+1|0:_,R=n-(y=-2097152&p)|0,x=_-((y>>>0>n>>>0)+k|0)|0,_=GA(G,v,654183,0),y=l+h|0,Y=(n=_+d|0)-(_=-2097152&D)|0,F=(y=n>>>0<d>>>0?y+1|0:y)-((_>>>0>n>>>0)+M|0)|0,y=GA(U,t,666643,0),_=h,_=y>>>0>(n=y+(P>>>5&2097151)|0)>>>0?_+1|0:_,y=GA(K,H,470296,0),_=h+_|0,f=n=y+n|0,n=y>>>0>n>>>0?_+1|0:_,p=GA(K,H,666643,0),_=(y=i[A+2|0])<<16&2031616|i[0|A]|i[A+1|0]<<8,y=h,l=y=_>>>0>(k=p+_|0)>>>0?y+1|0:y,H=y=y-((k>>>0<4293918720)-1|0)|0,p=(2097151&y)<<11|(D=k- -1048576|0)>>>21,y=(y>>21)+n|0,n=y=p>>>0>(d=p+f|0)>>>0?y+1|0:y,M=y=y-((d>>>0<4293918720)-1|0)|0,p=(2097151&y)<<11|(f=d- -1048576|0)>>>21,y=(y>>21)+F|0,p=p>>>0>(K=p+Y|0)>>>0?y+1|0:y,y=GA(G,v,470296,0),n=n+h|0,n=(_=y+d|0)>>>0<d>>>0?n+1|0:n,d=_-(y=-2097152&f)|0,f=n-((y>>>0>_>>>0)+M|0)|0,_=GA(G,v,666643,0),y=h+(l-(((n=-2097152&D)>>>0>k>>>0)+H|0)|0)|0,_=(n=(y=_>>>0>(F=_+(k-n|0)|0)>>>0?y+1|0:y)>>21)+f|0,y=(y=(_=(y=(2097151&y)<<11|F>>>21)>>>0>(M=y+d|0)>>>0?_+1|0:_)>>21)+p|0,_=(_=(y=(_=(2097151&_)<<11|M>>>21)>>>0>(v=_+K|0)>>>0?y+1|0:y)>>21)+x|0,n=(y=(_=(y=(2097151&y)<<11|v>>>21)>>>0>(p=y+R|0)>>>0?_+1|0:_)>>21)+w|0,y=(_=(n=(_=(2097151&_)<<11|p>>>21)>>>0>(k=_+m|0)>>>0?n+1|0:n)>>21)+j|0,_=(n=(y=(n=(2097151&n)<<11|k>>>21)>>>0>(d=n+z|0)>>>0?y+1|0:y)>>21)+b|0,b=f=(y=(2097151&y)<<11|d>>>21)+q|0,y=(y=(_=y>>>0>f>>>0?_+1|0:_)>>21)+Z|0,_=(_=(y=(_=(2097151&_)<<11|f>>>21)>>>0>(w=_+V|0)>>>0?y+1|0:y)>>21)+S|0,n=(y=(_=(y=(2097151&y)<<11|w>>>21)>>>0>(l=y+O|0)>>>0?_+1|0:_)>>21)+c|0,y=(_=(n=(_=(2097151&_)<<11|l>>>21)>>>0>(D=_+o|0)>>>0?n+1|0:n)>>21)+N|0,J=(S=s-(_=-2097152&J)|0)+((2097151&(y=(n=(2097151&n)<<11|D>>>21)>>>0>(f=n+Q|0)>>>0?y+1|0:y))<<11|f>>>21)|0,y=(u-((_>>>0>s>>>0)+L|0)|0)+(y>>21)|0,u=_=(y=S>>>0>J>>>0?y+1|0:y)>>21,F=(y=GA(N=(2097151&y)<<11|J>>>21,_,666643,0))+(_=2097151&F)|0,y=h,s=y=_>>>0>F>>>0?y+1|0:y,C[0|A]=F,C[A+1|0]=(255&y)<<24|F>>>8,y=2097151&M,_=GA(N,u,470296,0)+y|0,n=h,y=(s>>21)+(y>>>0>_>>>0?n+1|0:n)|0,y=(S=(2097151&s)<<11|F>>>21)>>>0>(M=S+_|0)>>>0?y+1|0:y,C[A+4|0]=(2047&y)<<21|M>>>11,_=y,n=M,C[A+3|0]=(7&y)<<29|n>>>3,C[A+2|0]=31&((65535&s)<<16|F>>>16)|n<<5,s=2097151&v,v=GA(N,u,654183,0)+s|0,y=h,M=(2097151&_)<<11|n>>>21,_=(_>>21)+(s=s>>>0>v>>>0?y+1|0:y)|0,y=_=(v=M+v|0)>>>0<M>>>0?_+1|0:_,C[A+6|0]=(63&y)<<26|v>>>6,s=v,v=0,C[A+5|0]=v<<13|(1572864&n)>>>19|s<<2,n=2097151&p,p=GA(N,u,-997805,-1)+n|0,_=h,_=n>>>0>p>>>0?_+1|0:_,v=(2097151&(n=y))<<11|s>>>21,n=(y>>=21)+_|0,n=(p=v+p|0)>>>0<v>>>0?n+1|0:n,C[A+9|0]=(511&n)<<23|p>>>9,C[A+8|0]=(1&n)<<31|p>>>1,_=0,C[A+7|0]=_<<18|(2080768&s)>>>14|p<<7,_=2097151&k,s=GA(N,u,136657,0)+_|0,y=h,y=_>>>0>s>>>0?y+1|0:y,k=(2097151&(_=n))<<11|p>>>21,_=y+(n=_>>21)|0,_=(s=k+s|0)>>>0<k>>>0?_+1|0:_,C[A+12|0]=(4095&_)<<20|s>>>12,n=s,C[A+11|0]=(15&_)<<28|n>>>4,s=0,C[A+10|0]=s<<15|(1966080&p)>>>17|n<<4,s=2097151&d,p=GA(N,u,-683901,-1)+s|0,y=h,y=s>>>0>p>>>0?y+1|0:y,s=_,_=y+(_>>=21)|0,_=(s=(Y=p)+(p=(2097151&s)<<11|n>>>21)|0)>>>0<p>>>0?_+1|0:_,C[A+14|0]=(127&_)<<25|s>>>7,p=0,C[A+13|0]=p<<12|(1048576&n)>>>20|s<<1,y=_>>21,n=(_=(2097151&_)<<11|s>>>21)>>>0>(p=_+(2097151&b)|0)>>>0?y+1|0:y,C[A+17|0]=(1023&n)<<22|p>>>10,C[A+16|0]=(3&n)<<30|p>>>2,_=0,C[A+15|0]=_<<17|(2064384&s)>>>15|p<<6,y=n>>21,y=(_=(2097151&n)<<11|p>>>21)>>>0>(n=_+(2097151&w)|0)>>>0?y+1|0:y,C[A+20|0]=(8191&y)<<19|n>>>13,C[A+19|0]=(31&y)<<27|n>>>5,s=(_=2097151&l)+(l=(2097151&y)<<11|n>>>21)|0,_=y>>21,_=s>>>0<l>>>0?_+1|0:_,l=s,C[A+21|0]=s,w=0,C[A+18|0]=w<<14|(1835008&p)>>>18|n<<3,C[A+22|0]=(255&_)<<24|s>>>8,n=_>>21,n=(s=(p=(2097151&_)<<11|s>>>21)+(2097151&D)|0)>>>0<p>>>0?n+1|0:n,C[A+25|0]=(2047&n)<<21|s>>>11,C[A+24|0]=(7&n)<<29|s>>>3,C[A+23|0]=31&((65535&_)<<16|l>>>16)|s<<5,y=n>>21,y=(_=(2097151&n)<<11|s>>>21)>>>0>(n=_+(2097151&f)|0)>>>0?y+1|0:y,C[A+27|0]=(63&y)<<26|n>>>6,p=0,C[A+26|0]=p<<13|(1572864&s)>>>19|n<<2,_=y,y>>=21,_=(s=(f=(2097151&_)<<11|n>>>21)+(p=2097151&J)|0)>>>0<p>>>0?y+1|0:y,C[A+31|0]=(131071&_)<<15|s>>>17,y=s,C[A+30|0]=(511&_)<<23|y>>>9,s=0,C[A+28|0]=s<<18|(2080768&n)>>>14|y<<7,C[A+29|0]=f+J>>>1}function w(A,g,I,e,B,r){var Q,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,w=0,k=0,l=0,u=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,U=0,x=0,m=0,P=0,R=0,T=0,q=0,z=0,V=0,Z=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0;for(n=Q=n-592|0,S=-1,k=A+32|0,w=32,l=1;b=i[2656+(_=w-1|0)|0],E|=(_=((c=i[_+k|0])^b)-1>>8&l)&(h=i[k+(w=w-2|0)|0])-(y=i[w+2656|0])>>8|c-b>>8&l,l=_&(y^h)-1>>8,w;);if(255&E&&!(uA(A)|!(~((127&~i[B+31|0]|i[B+1|0]&i[B+2|0]&i[B+3|0]&i[B+4|0]&i[B+5|0]&i[B+6|0]&i[B+7|0]&i[B+8|0]&i[B+9|0]&i[B+10|0]&i[B+11|0]&i[B+12|0]&i[B+13|0]&i[B+14|0]&i[B+15|0]&i[B+16|0]&i[B+17|0]&i[B+18|0]&i[B+19|0]&i[B+20|0]&i[B+21|0]&i[B+22|0]&i[B+23|0]&i[B+24|0]&i[B+25|0]&i[B+26|0]&i[B+27|0]&i[B+28|0]&i[B+30|0]&i[B+29|0]^255)-1&236-i[0|B])>>>8&1)||uA(B)||L(_=Q+128|0,B))){for(dA(c=Q+384|0),r&&W(c,35120,34,0),W(c,A,32,0),W(c,B,32,0),W(c,g,I,e),J(c,I=Q+320|0),D(I),e=Q+8|0,B=0,g=0,n=o=n-2272|0;r=o+2016|0,c=i[I+(B>>>3|0)|0],C[r+B|0]=c>>>(6&B)&1,C[(E=r)+(r=1|B)|0]=c>>>(7&r)&1,256!=(0|(B=B+2|0)););for(;;){g=(I=g)+1|0;A:if(!(I>>>0>254)&&i[0|(E=(B=o+2016|0)+I|0)]){g:if(B=C[0|(y=g+B|0)])if((0|(B=(c=B<<1)+(r=C[0|E])|0))<=15)C[0|E]=B,C[0|y]=0;else{if((0|(B=r-c|0))<-15)break A;for(C[0|E]=B,B=g;;){if(!i[0|(r=(o+2016|0)+B|0)]){C[0|r]=1;break g}if(C[0|r]=0,r=B>>>0<255,B=B+1|0,!r)break}}if(!(I>>>0>253)){g:if(r=C[0|(h=(B=I+2|0)+(o+2016|0)|0)])if((0|(r=(y=r<<2)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(253!=(0|I)){g:if(r=C[0|(h=(B=I+3|0)+(o+2016|0)|0)])if((0|(r=(y=r<<3)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>251)){g:if(r=C[0|(h=(B=I+4|0)+(o+2016|0)|0)])if((0|(r=(y=r<<4)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(251!=(0|I)){g:if(r=C[0|(h=(B=I+5|0)+(o+2016|0)|0)])if((0|(r=(y=r<<5)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>249)&&(I=C[0|(y=(B=I+6|0)+(o+2016|0)|0)]))if((0|(I=(c=I<<6)+(r=C[0|E])|0))>=16){if((0|(I=r-c|0))<-15)break A;for(C[0|E]=I;;){if(i[0|(I=(o+2016|0)+B|0)]){if(C[0|I]=0,I=B>>>0<255,B=B+1|0,I)continue;break A}break}C[0|I]=1}else C[0|E]=I,C[0|y]=0}}}}}if(256==(0|g))break}for(B=0;g=o+1760|0,I=i[k+(B>>>3|0)|0],C[g+B|0]=I>>>(6&B)&1,C[(r=g)+(g=1|B)|0]=I>>>(7&g)&1,256!=(0|(B=B+2|0)););for(g=0;;){g=(I=g)+1|0;A:if(!(I>>>0>254)&&i[0|(E=(B=o+1760|0)+I|0)]){g:if(B=C[0|(y=g+B|0)])if((0|(B=(c=B<<1)+(r=C[0|E])|0))<=15)C[0|E]=B,C[0|y]=0;else{if((0|(B=r-c|0))<-15)break A;for(C[0|E]=B,B=g;;){if(!i[0|(r=(o+1760|0)+B|0)]){C[0|r]=1;break g}if(C[0|r]=0,r=B>>>0<255,B=B+1|0,!r)break}}if(!(I>>>0>253)){g:if(r=C[0|(h=(B=I+2|0)+(o+1760|0)|0)])if((0|(r=(y=r<<2)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(253!=(0|I)){g:if(r=C[0|(h=(B=I+3|0)+(o+1760|0)|0)])if((0|(r=(y=r<<3)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>251)){g:if(r=C[0|(h=(B=I+4|0)+(o+1760|0)|0)])if((0|(r=(y=r<<4)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(251!=(0|I)){g:if(r=C[0|(h=(B=I+5|0)+(o+1760|0)|0)])if((0|(r=(y=r<<5)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>249)&&(I=C[0|(y=(B=I+6|0)+(o+1760|0)|0)]))if((0|(I=(c=I<<6)+(r=C[0|E])|0))>=16){if((0|(I=r-c|0))<-15)break A;for(C[0|E]=I;;){if(i[0|(I=(o+1760|0)+B|0)]){if(C[0|I]=0,I=B>>>0<255,B=B+1|0,I)continue;break A}break}C[0|I]=1}else C[0|E]=I,C[0|y]=0}}}}}if(256==(0|g))break}for(QA(B=o+480|0,_),g=a[_+36>>2],a[o+192>>2]=a[_+32>>2],a[o+196>>2]=g,g=a[_+28>>2],a[o+184>>2]=a[_+24>>2],a[o+188>>2]=g,g=a[_+20>>2],a[o+176>>2]=a[_+16>>2],a[o+180>>2]=g,g=a[_+12>>2],a[o+168>>2]=a[_+8>>2],a[o+172>>2]=g,g=a[_+4>>2],a[o+160>>2]=a[_>>2],a[o+164>>2]=g,g=a[_+52>>2],a[o+208>>2]=a[_+48>>2],a[o+212>>2]=g,g=a[_+60>>2],a[o+216>>2]=a[_+56>>2],a[o+220>>2]=g,g=a[4+(I=_- -64|0)>>2],a[o+224>>2]=a[I>>2],a[o+228>>2]=g,g=a[_+76>>2],a[o+232>>2]=a[_+72>>2],a[o+236>>2]=g,g=a[_+44>>2],a[o+200>>2]=a[_+40>>2],a[o+204>>2]=g,g=a[_+92>>2],a[o+248>>2]=a[_+88>>2],a[o+252>>2]=g,g=a[_+100>>2],a[o+256>>2]=a[_+96>>2],a[o+260>>2]=g,g=a[_+108>>2],a[o+264>>2]=a[_+104>>2],a[o+268>>2]=g,g=a[_+116>>2],a[o+272>>2]=a[_+112>>2],a[o+276>>2]=g,g=a[_+84>>2],a[o+240>>2]=a[_+80>>2],a[o+244>>2]=g,v(r=o+320|0,I=o+160|0),d(o,r,s=o+440|0),d(o+40|0,p=o+360|0,f=o+400|0),d(o+80|0,f,s),d(o+120|0,r,p),j(r,o,B),d(I,r,s),d(M=o+200|0,p,f),d(F=o+240|0,f,s),d(u=o+280|0,r,p),QA(g=o+640|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+800|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+960|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+1120|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+1280|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+1440|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(o+1600|0,I),a[e+32>>2]=0,a[e+36>>2]=0,a[e+24>>2]=0,a[e+28>>2]=0,a[e+16>>2]=0,a[e+20>>2]=0,a[e+8>>2]=0,a[e+12>>2]=0,a[e>>2]=0,a[e+4>>2]=0,a[e+44>>2]=0,a[e+48>>2]=0,a[e+40>>2]=1,a[e+52>>2]=0,a[e+56>>2]=0,a[e+60>>2]=0,a[e+64>>2]=0,a[e+68>>2]=0,a[e+72>>2]=0,a[e+84>>2]=0,a[e+88>>2]=0,a[e+76>>2]=0,a[e+80>>2]=1,a[e+92>>2]=0,a[e+96>>2]=0,a[e+100>>2]=0,a[e+104>>2]=0,a[e+108>>2]=0,a[e+112>>2]=0,a[e+116>>2]=0,$=e+80|0,AA=e+40|0,g=255;;){A:{g:{if(!i[(I=o+2016|0)+g|0]&&!i[(B=o+1760|0)+g|0]){if(!(i[(r=I)+(I=g-1|0)|0]|i[I+B|0]))break g;g=I}if((0|g)<0)break A;for(;v(B=o+320|0,e),(0|(r=C[(I=g)+(o+2016|0)|0]))>0?(d(g=o+160|0,B,s),d(M,p,f),d(F,f,s),d(u,B,p),j(B,g,(o+480|0)+t((254&r)>>>1|0,160)|0)):(0|r)>=0||(d(g=o+160|0,B=o+320|0,s),d(M,p,f),d(F,f,s),d(u,B,p),X(B,g,(o+480|0)+t((0-r&254)>>>1|0,160)|0)),(0|(m=C[I+(o+1760|0)|0]))>0?(d(g=o+160|0,B=o+320|0,s),d(M,p,f),d(F,f,s),d(u,B,p),O(B,g,t((254&m)>>>1|0,120)+1472|0)):(0|m)>=0||(d(o+160|0,P=o+320|0,s),d(M,p,f),d(F,f,s),d(u,P,p),N=a[o+160>>2],K=a[o+200>>2],Y=a[o+164>>2],H=a[o+204>>2],G=a[o+168>>2],U=a[o+208>>2],x=a[o+172>>2],w=a[o+212>>2],k=a[o+176>>2],l=a[o+216>>2],S=a[o+180>>2],b=a[o+220>>2],E=a[o+184>>2],h=a[o+224>>2],y=a[o+188>>2],c=a[o+228>>2],_=a[o+192>>2],r=a[o+232>>2],B=a[o+236>>2],g=a[o+196>>2],a[o+396>>2]=B-g,a[o+392>>2]=r-_,a[o+388>>2]=c-y,a[o+384>>2]=h-E,a[o+380>>2]=b-S,a[o+376>>2]=l-k,a[o+372>>2]=w-x,a[o+368>>2]=U-G,a[o+364>>2]=H-Y,a[o+360>>2]=K-N,a[o+356>>2]=g+B,a[o+352>>2]=r+_,a[o+348>>2]=c+y,a[o+344>>2]=E+h,a[o+340>>2]=S+b,a[o+336>>2]=k+l,a[o+332>>2]=w+x,a[o+328>>2]=G+U,a[o+324>>2]=Y+H,a[o+320>>2]=N+K,d(f,P,40+(g=t((0-m&254)>>>1|0,120)+1472|0)|0),d(p,p,g),d(s,g+80|0,u),gA=a[o+276>>2],IA=a[o+272>>2],m=a[o+268>>2],P=a[o+264>>2],E=a[o+260>>2],h=a[o+256>>2],y=a[o+252>>2],c=a[o+248>>2],_=a[o+244>>2],r=a[o+240>>2],R=a[o+360>>2],T=a[o+400>>2],q=a[o+364>>2],z=a[o+404>>2],V=a[o+368>>2],Z=a[o+408>>2],N=a[o+372>>2],K=a[o+412>>2],Y=a[o+376>>2],H=a[o+416>>2],G=a[o+380>>2],U=a[o+420>>2],x=a[o+384>>2],w=a[o+424>>2],k=a[o+388>>2],l=a[o+428>>2],S=a[o+392>>2],b=a[o+432>>2],B=a[o+396>>2],g=a[o+436>>2],a[o+396>>2]=B+g,a[o+392>>2]=S+b,a[o+388>>2]=k+l,a[o+384>>2]=w+x,a[o+380>>2]=G+U,a[o+376>>2]=Y+H,a[o+372>>2]=N+K,a[o+368>>2]=V+Z,a[o+364>>2]=q+z,a[o+360>>2]=R+T,a[o+356>>2]=g-B,a[o+352>>2]=b-S,a[o+348>>2]=l-k,a[o+344>>2]=w-x,a[o+340>>2]=U-G,a[o+336>>2]=H-Y,a[o+332>>2]=K-N,a[o+328>>2]=Z-V,a[o+324>>2]=z-q,a[o+320>>2]=T-R,N=r<<1,K=a[o+440>>2],a[o+400>>2]=N-K,Y=_<<1,H=a[o+444>>2],a[o+404>>2]=Y-H,G=c<<1,U=a[o+448>>2],a[o+408>>2]=G-U,x=y<<1,w=a[o+452>>2],a[o+412>>2]=x-w,k=h<<1,l=a[o+456>>2],a[o+416>>2]=k-l,S=E<<1,b=a[o+460>>2],a[o+420>>2]=S-b,E=P<<1,h=a[o+464>>2],a[o+424>>2]=E-h,y=m<<1,c=a[o+468>>2],a[o+428>>2]=y-c,_=IA<<1,r=a[o+472>>2],a[o+432>>2]=_-r,B=gA<<1,g=a[o+476>>2],a[o+436>>2]=B-g,a[o+440>>2]=N+K,a[o+444>>2]=Y+H,a[o+448>>2]=G+U,a[o+452>>2]=w+x,a[o+456>>2]=k+l,a[o+460>>2]=S+b,a[o+464>>2]=E+h,a[o+468>>2]=c+y,a[o+472>>2]=r+_,a[o+476>>2]=g+B),d(e,o+320|0,s),d(AA,p,f),d($,f,s),g=I-1|0,(0|I)>0;);break A}if(g=g-2|0,I)continue}break}n=o+2272|0,RA(g=Q+288|0,e),CA=-1,eA=KA(g,A),S=((0|A)==(0|g)?CA:eA)|lA(A,g,32)}return n=Q+592|0,S}function k(A,g,I){var C,e,B,r,t,Q,o,c,E,y,_,h,s,p,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0;for(n=C=n-800|0,k=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,l=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,v=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,S=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,D=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,b=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,M=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,B=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,r=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,t=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,Q=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,o=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,c=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,E=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,w=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=I- -64|0,y=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[g>>2]=33620224^y,a[I+56>>2]=1496785429,a[I+60>>2]=1652156816,a[(A=I+48|0)>>2]=33620224,a[A+4>>2]=218629379,a[I+40>>2]=1110511904,a[I+44>>2]=-584534669,a[(e=I+32|0)>>2]=1427652059,a[e+4>>2]=-248528275,_=w^y,a[I>>2]=_,a[I+92>>2]=-584534669^E,a[I+88>>2]=1110511904^c,a[I+84>>2]=-248528275^o,a[(w=I+80|0)>>2]=1427652059^Q,a[I+76>>2]=1652156816^t,a[I+72>>2]=1496785429^r,a[I+68>>2]=218629379^B,M^=E,a[I+28>>2]=M,b^=c,a[I+24>>2]=b,h=D^o,a[I+20>>2]=h,S^=Q,a[(D=I+16|0)>>2]=S,v^=t,a[I+12>>2]=v,s=l^r,a[I+8>>2]=s,p=k^B,a[I+4>>2]=p,l=0;k=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=k,k=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=k,k=a[g+12>>2],a[C+760>>2]=a[g+8>>2],a[C+764>>2]=k,k=a[g+4>>2],a[C+752>>2]=a[g>>2],a[C+756>>2]=k,k=a[w+12>>2],a[C+744>>2]=a[w+8>>2],a[C+748>>2]=k,k=a[w+4>>2],a[C+736>>2]=a[w>>2],a[C+740>>2]=k,oA(k=C+768|0,C+752|0,C+736|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+728>>2]=a[A+8>>2],a[C+732>>2]=f,f=a[A+4>>2],a[C+720>>2]=a[A>>2],a[C+724>>2]=f,f=a[g+12>>2],a[C+712>>2]=a[g+8>>2],a[C+716>>2]=f,f=a[g+4>>2],a[C+704>>2]=a[g>>2],a[C+708>>2]=f,oA(k,C+720|0,C+704|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+696>>2]=a[e+8>>2],a[C+700>>2]=f,f=a[e+4>>2],a[C+688>>2]=a[e>>2],a[C+692>>2]=f,f=a[A+12>>2],a[C+680>>2]=a[A+8>>2],a[C+684>>2]=f,f=a[A+4>>2],a[C+672>>2]=a[A>>2],a[C+676>>2]=f,oA(k,C+688|0,C+672|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+664>>2]=a[D+8>>2],a[C+668>>2]=f,f=a[D+4>>2],a[C+656>>2]=a[D>>2],a[C+660>>2]=f,f=a[e+12>>2],a[C+648>>2]=a[e+8>>2],a[C+652>>2]=f,f=a[e+4>>2],a[C+640>>2]=a[e>>2],a[C+644>>2]=f,oA(k,C+656|0,C+640|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+632>>2]=a[I+8>>2],a[C+636>>2]=f,f=a[I+4>>2],a[C+624>>2]=a[I>>2],a[C+628>>2]=f,f=a[D+12>>2],a[C+616>>2]=a[D+8>>2],a[C+620>>2]=f,f=a[D+4>>2],a[C+608>>2]=a[D>>2],a[C+612>>2]=f,oA(k,C+624|0,C+608|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+600>>2]=a[C+792>>2],a[C+604>>2]=f,f=a[C+788>>2],a[C+592>>2]=a[C+784>>2],a[C+596>>2]=f,f=a[I+12>>2],a[C+584>>2]=a[I+8>>2],a[C+588>>2]=f,f=a[I+4>>2],a[C+576>>2]=a[I>>2],a[C+580>>2]=f,oA(k,C+592|0,C+576|0),f=a[C+768>>2],d=a[C+772>>2],u=a[C+776>>2],a[I+12>>2]=a[C+780>>2]^t,a[I+8>>2]=u^r,a[I+4>>2]=d^B,a[I>>2]=f^y,f=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=f,f=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=f,f=a[g+12>>2],a[C+568>>2]=a[g+8>>2],a[C+572>>2]=f,f=a[g+4>>2],a[C+560>>2]=a[g>>2],a[C+564>>2]=f,f=a[w+12>>2],a[C+552>>2]=a[w+8>>2],a[C+556>>2]=f,f=a[w+4>>2],a[C+544>>2]=a[w>>2],a[C+548>>2]=f,oA(k,C+560|0,C+544|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+536>>2]=a[A+8>>2],a[C+540>>2]=f,f=a[A+4>>2],a[C+528>>2]=a[A>>2],a[C+532>>2]=f,f=a[g+12>>2],a[C+520>>2]=a[g+8>>2],a[C+524>>2]=f,f=a[g+4>>2],a[C+512>>2]=a[g>>2],a[C+516>>2]=f,oA(k,C+528|0,C+512|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+504>>2]=a[e+8>>2],a[C+508>>2]=f,f=a[e+4>>2],a[C+496>>2]=a[e>>2],a[C+500>>2]=f,f=a[A+12>>2],a[C+488>>2]=a[A+8>>2],a[C+492>>2]=f,f=a[A+4>>2],a[C+480>>2]=a[A>>2],a[C+484>>2]=f,oA(k,C+496|0,C+480|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+472>>2]=a[D+8>>2],a[C+476>>2]=f,f=a[D+4>>2],a[C+464>>2]=a[D>>2],a[C+468>>2]=f,f=a[e+12>>2],a[C+456>>2]=a[e+8>>2],a[C+460>>2]=f,f=a[e+4>>2],a[C+448>>2]=a[e>>2],a[C+452>>2]=f,oA(k,C+464|0,C+448|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+440>>2]=a[I+8>>2],a[C+444>>2]=f,f=a[I+4>>2],a[C+432>>2]=a[I>>2],a[C+436>>2]=f,f=a[D+12>>2],a[C+424>>2]=a[D+8>>2],a[C+428>>2]=f,f=a[D+4>>2],a[C+416>>2]=a[D>>2],a[C+420>>2]=f,oA(k,C+432|0,C+416|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+408>>2]=a[C+792>>2],a[C+412>>2]=f,f=a[C+788>>2],a[C+400>>2]=a[C+784>>2],a[C+404>>2]=f,f=a[I+12>>2],a[C+392>>2]=a[I+8>>2],a[C+396>>2]=f,f=a[I+4>>2],a[C+384>>2]=a[I>>2],a[C+388>>2]=f,oA(k,C+400|0,C+384|0),f=a[C+768>>2],d=a[C+772>>2],u=a[C+776>>2],a[I+12>>2]=a[C+780>>2]^E,a[I+8>>2]=u^c,a[I+4>>2]=d^o,a[I>>2]=f^Q,f=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=f,f=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=f,f=a[g+12>>2],a[C+376>>2]=a[g+8>>2],a[C+380>>2]=f,f=a[g+4>>2],a[C+368>>2]=a[g>>2],a[C+372>>2]=f,f=a[w+12>>2],a[C+360>>2]=a[w+8>>2],a[C+364>>2]=f,f=a[w+4>>2],a[C+352>>2]=a[w>>2],a[C+356>>2]=f,oA(k,C+368|0,C+352|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+344>>2]=a[A+8>>2],a[C+348>>2]=f,f=a[A+4>>2],a[C+336>>2]=a[A>>2],a[C+340>>2]=f,f=a[g+12>>2],a[C+328>>2]=a[g+8>>2],a[C+332>>2]=f,f=a[g+4>>2],a[C+320>>2]=a[g>>2],a[C+324>>2]=f,oA(k,C+336|0,C+320|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+312>>2]=a[e+8>>2],a[C+316>>2]=f,f=a[e+4>>2],a[C+304>>2]=a[e>>2],a[C+308>>2]=f,f=a[A+12>>2],a[C+296>>2]=a[A+8>>2],a[C+300>>2]=f,f=a[A+4>>2],a[C+288>>2]=a[A>>2],a[C+292>>2]=f,oA(k,C+304|0,C+288|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+280>>2]=a[D+8>>2],a[C+284>>2]=f,f=a[D+4>>2],a[C+272>>2]=a[D>>2],a[C+276>>2]=f,f=a[e+12>>2],a[C+264>>2]=a[e+8>>2],a[C+268>>2]=f,f=a[e+4>>2],a[C+256>>2]=a[e>>2],a[C+260>>2]=f,oA(k,C+272|0,C+256|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+248>>2]=a[I+8>>2],a[C+252>>2]=f,f=a[I+4>>2],a[C+240>>2]=a[I>>2],a[C+244>>2]=f,f=a[D+12>>2],a[C+232>>2]=a[D+8>>2],a[C+236>>2]=f,f=a[D+4>>2],a[C+224>>2]=a[D>>2],a[C+228>>2]=f,oA(k,C+240|0,C+224|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+216>>2]=a[C+792>>2],a[C+220>>2]=f,f=a[C+788>>2],a[C+208>>2]=a[C+784>>2],a[C+212>>2]=f,f=a[I+12>>2],a[C+200>>2]=a[I+8>>2],a[C+204>>2]=f,f=a[I+4>>2],a[C+192>>2]=a[I>>2],a[C+196>>2]=f,oA(k,C+208|0,C+192|0),f=a[C+768>>2],d=a[C+772>>2],u=a[C+776>>2],a[I+12>>2]=v^a[C+780>>2],a[I+8>>2]=u^s,a[I+4>>2]=d^p,a[I>>2]=f^_,f=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=f,f=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=f,f=a[g+12>>2],a[C+184>>2]=a[g+8>>2],a[C+188>>2]=f,f=a[g+4>>2],a[C+176>>2]=a[g>>2],a[C+180>>2]=f,f=a[w+12>>2],a[C+168>>2]=a[w+8>>2],a[C+172>>2]=f,f=a[w+4>>2],a[C+160>>2]=a[w>>2],a[C+164>>2]=f,oA(k,C+176|0,C+160|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+152>>2]=a[A+8>>2],a[C+156>>2]=f,f=a[A+4>>2],a[C+144>>2]=a[A>>2],a[C+148>>2]=f,f=a[g+12>>2],a[C+136>>2]=a[g+8>>2],a[C+140>>2]=f,f=a[g+4>>2],a[C+128>>2]=a[g>>2],a[C+132>>2]=f,oA(k,C+144|0,C+128|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+120>>2]=a[e+8>>2],a[C+124>>2]=f,f=a[e+4>>2],a[C+112>>2]=a[e>>2],a[C+116>>2]=f,f=a[A+12>>2],a[C+104>>2]=a[A+8>>2],a[C+108>>2]=f,f=a[A+4>>2],a[C+96>>2]=a[A>>2],a[C+100>>2]=f,oA(k,C+112|0,C+96|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+88>>2]=a[D+8>>2],a[C+92>>2]=f,f=a[D+4>>2],a[C+80>>2]=a[D>>2],a[C+84>>2]=f,f=a[e+12>>2],a[C+72>>2]=a[e+8>>2],a[C+76>>2]=f,f=a[e+4>>2],a[C+64>>2]=a[e>>2],a[C+68>>2]=f,oA(k,C+80|0,C- -64|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+56>>2]=a[I+8>>2],a[C+60>>2]=f,f=a[I+4>>2],a[C+48>>2]=a[I>>2],a[C+52>>2]=f,f=a[D+12>>2],a[C+40>>2]=a[D+8>>2],a[C+44>>2]=f,f=a[D+4>>2],a[C+32>>2]=a[D>>2],a[C+36>>2]=f,oA(k,C+48|0,C+32|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+24>>2]=a[C+792>>2],a[C+28>>2]=f,f=a[C+788>>2],a[C+16>>2]=a[C+784>>2],a[C+20>>2]=f,f=a[I+12>>2],a[C+8>>2]=a[I+8>>2],a[C+12>>2]=f,f=a[I+4>>2],a[C>>2]=a[I>>2],a[C+4>>2]=f,oA(k,C+16|0,C),k=a[C+768>>2],f=a[C+772>>2],d=a[C+776>>2],a[I+12>>2]=M^a[C+780>>2],a[I+8>>2]=d^b,a[I+4>>2]=f^h,a[I>>2]=k^S,4!=(0|(l=l+1|0)););n=C+800|0}function d(A,g,I){var C,e,B,i,r,Q,o,c,E,y,_,n,s,p,f,D,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J,U,x,m,P,R,L,T,q,z,j,X,O,V,Z,W,$,AA,gA,IA,CA,eA,BA=0,aA=0,iA=0,rA=0,tA=0,QA=0,oA=0,cA=0,EA=0,yA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,kA=0,dA=0,lA=0,uA=0,vA=0,SA=0,bA=0;BA=GA(C=a[I+4>>2],y=C>>31,DA=(D=a[g+20>>2])<<1,G=DA>>31),iA=h,aA=(hA=GA(pA=a[I>>2],B=pA>>31,e=a[g+24>>2],i=e>>31))+BA|0,BA=h+iA|0,BA=aA>>>0<hA>>>0?BA+1|0:BA,EA=GA(r=a[I+8>>2],s=r>>31,hA=a[g+16>>2],Q=hA>>31),iA=h+BA|0,iA=(aA=EA+aA|0)>>>0<EA>>>0?iA+1|0:iA,BA=(EA=GA(_=a[I+12>>2],w=_>>31,b=(k=a[g+12>>2])<<1,J=b>>31))+aA|0,aA=h+iA|0,aA=BA>>>0<EA>>>0?aA+1|0:aA,iA=(sA=GA(p=a[I+16>>2],M=p>>31,EA=a[g+8>>2],o=EA>>31))+BA|0,BA=h+aA|0,BA=iA>>>0<sA>>>0?BA+1|0:BA,aA=iA,iA=GA(d=a[I+20>>2],U=d>>31,F=(l=a[g+4>>2])<<1,x=F>>31),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,Z=oA=a[I+24>>2],iA=(yA=GA(oA,O=oA>>31,sA=a[g>>2],c=sA>>31))+aA|0,aA=h+BA|0,aA=iA>>>0<yA>>>0?aA+1|0:aA,m=a[I+28>>2],BA=(yA=GA(nA=t(m,19),u=nA>>31,N=(v=a[g+36>>2])<<1,P=N>>31))+iA|0,iA=h+aA|0,iA=BA>>>0<yA>>>0?iA+1|0:iA,lA=a[I+32>>2],aA=(cA=GA(rA=t(lA,19),f=rA>>31,yA=a[g+32>>2],E=yA>>31))+BA|0,BA=h+iA|0,BA=aA>>>0<cA>>>0?BA+1|0:BA,W=a[I+36>>2],I=GA(cA=t(W,19),n=cA>>31,K=(S=a[g+28>>2])<<1,R=K>>31),BA=h+BA|0,tA=g=I+aA|0,I=g>>>0<I>>>0?BA+1|0:BA,g=GA(hA,Q,C,y),BA=h,aA=GA(pA,B,D,L=D>>31),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(r,s,k,T=k>>31),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(EA,o,_,w),BA=h+aA|0,BA=(g=iA+g|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(p,M,l,q=l>>31),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(sA,c,d,U),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(oA=t(oA,19),Y=oA>>31,v,z=v>>31),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(yA,E,nA,u),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(rA,f,S,j=S>>31),BA=h+aA|0,BA=(g=iA+g|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(cA,n,e,i),BA=h+BA|0,vA=g=aA+g|0,wA=g>>>0<aA>>>0?BA+1|0:BA,g=GA(C,y,b,J),BA=h,aA=GA(pA,B,hA,Q),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(EA,o,r,s),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(_,w,F,x),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(sA,c,p,M),BA=h+aA|0,BA=(g=iA+g|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(H=t(d,19),X=H>>31,N,P),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(yA,E,oA,Y),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(nA,u,K,R),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(rA,f,e,i),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(cA,n,DA,G),BA=h+aA|0,$=g=iA+g|0,AA=BA=g>>>0<iA>>>0?BA+1|0:BA,gA=g=g+33554432|0,IA=BA=g>>>0<33554432?BA+1|0:BA,iA=(67108863&BA)<<6|g>>>26,BA=(BA>>26)+wA|0,vA=g=iA+vA|0,BA=g>>>0<iA>>>0?BA+1|0:BA,CA=g=g+16777216|0,BA=I+(aA=(iA=g>>>0<16777216?BA+1|0:BA)>>25)|0,BA=(g=(iA=(33554431&iA)<<7|g>>>25)+tA|0)>>>0<iA>>>0?BA+1|0:BA,kA=I=(aA=g)+33554432|0,g=BA=I>>>0<33554432?BA+1|0:BA,a[A+24>>2]=aA-(-67108864&I),I=GA(C,y,F,x),BA=h,aA=GA(pA,B,EA,o),iA=h+BA|0,iA=(I=aA+I|0)>>>0<aA>>>0?iA+1|0:iA,aA=(BA=I)+(I=GA(sA,c,r,s))|0,BA=h+iA|0,BA=I>>>0>aA>>>0?BA+1|0:BA,iA=GA(I=t(_,19),dA=I>>31,N,P),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=(tA=GA(yA,E,wA=t(p,19),V=wA>>31))+aA|0,aA=h+BA|0,aA=iA>>>0<tA>>>0?aA+1|0:aA,tA=GA(K,R,H,X),BA=h+aA|0,BA=(iA=tA+iA|0)>>>0<tA>>>0?BA+1|0:BA,aA=(tA=GA(e,i,oA,Y))+iA|0,iA=h+BA|0,iA=aA>>>0<tA>>>0?iA+1|0:iA,tA=GA(nA,u,DA,G),BA=h+iA|0,BA=(aA=tA+aA|0)>>>0<tA>>>0?BA+1|0:BA,iA=GA(rA,f,hA,Q),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=(tA=GA(cA,n,b,J))+aA|0,aA=h+BA|0,_A=iA,SA=iA>>>0<tA>>>0?aA+1|0:aA,BA=GA(sA,c,C,y),aA=h,iA=(tA=GA(pA,B,l,q))+BA|0,BA=h+aA|0,BA=iA>>>0<tA>>>0?BA+1|0:BA,tA=aA=t(r,19),aA=(QA=GA(aA,uA=aA>>31,v,z))+iA|0,iA=h+BA|0,iA=aA>>>0<QA>>>0?iA+1|0:iA,QA=GA(yA,E,I,dA),BA=h+iA|0,BA=(aA=QA+aA|0)>>>0<QA>>>0?BA+1|0:BA,iA=GA(wA,V,S,j),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=(QA=GA(e,i,H,X))+aA|0,aA=h+BA|0,aA=iA>>>0<QA>>>0?aA+1|0:aA,QA=GA(oA,Y,D,L),BA=h+aA|0,BA=(iA=QA+iA|0)>>>0<QA>>>0?BA+1|0:BA,aA=(QA=GA(hA,Q,nA,u))+iA|0,iA=h+BA|0,iA=aA>>>0<QA>>>0?iA+1|0:iA,QA=GA(rA,f,k,T),BA=h+iA|0,BA=(aA=QA+aA|0)>>>0<QA>>>0?BA+1|0:BA,iA=GA(cA,n,EA,o),BA=h+BA|0,bA=aA=iA+aA|0,QA=aA>>>0<iA>>>0?BA+1|0:BA,BA=GA(BA=t(C,19),BA>>31,N,P),aA=h,iA=GA(pA,B,sA,c),aA=h+aA|0,aA=(BA=iA+BA|0)>>>0<iA>>>0?aA+1|0:aA,iA=(tA=GA(yA,E,tA,uA))+BA|0,BA=h+aA|0,I=(aA=GA(I,dA,K,R))+iA|0,iA=h+(iA>>>0<tA>>>0?BA+1|0:BA)|0,iA=I>>>0<aA>>>0?iA+1|0:iA,aA=GA(e,i,wA,V),BA=h+iA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(DA,G,H,X),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,iA=GA(hA,Q,oA,Y),aA=h+BA|0,aA=(I=iA+I|0)>>>0<iA>>>0?aA+1|0:aA,iA=GA(nA,u,b,J),BA=h+aA|0,BA=(I=iA+I|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(rA,f,EA,o),iA=h+BA|0,iA=(I=aA+I|0)>>>0<aA>>>0?iA+1|0:iA,aA=GA(cA,n,F,x),BA=h+iA|0,tA=I=aA+I|0,dA=BA=I>>>0<aA>>>0?BA+1|0:BA,uA=I=I+33554432|0,eA=BA=I>>>0<33554432?BA+1|0:BA,aA=(iA=BA>>26)+QA|0,QA=I=(BA=(67108863&BA)<<6|I>>>26)+bA|0,BA=I>>>0<BA>>>0?aA+1|0:aA,bA=I=I+16777216|0,aA=(33554431&(BA=I>>>0<16777216?BA+1|0:BA))<<7|I>>>25,BA=(BA>>25)+SA|0,BA=(I=aA+_A|0)>>>0<aA>>>0?BA+1|0:BA,SA=aA=(iA=I)+33554432|0,I=BA=aA>>>0<33554432?BA+1|0:BA,a[A+8>>2]=iA-(-67108864&aA),BA=GA(e,i,C,y),iA=h,aA=(_A=GA(pA,B,S,j))+BA|0,BA=h+iA|0,BA=aA>>>0<_A>>>0?BA+1|0:BA,iA=GA(r,s,D,L),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(hA,Q,_,w),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,_A=GA(p,M,k,T),iA=h+BA|0,iA=(aA=_A+aA|0)>>>0<_A>>>0?iA+1|0:iA,BA=(_A=GA(EA,o,d,U))+aA|0,aA=h+iA|0,aA=BA>>>0<_A>>>0?aA+1|0:aA,iA=(_A=GA(l,q,Z,O))+BA|0,BA=h+aA|0,BA=iA>>>0<_A>>>0?BA+1|0:BA,aA=iA,iA=GA(sA,c,m,_A=m>>31),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(rA,f,v,z),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,fA=GA(cA,n,yA,E),iA=h+BA|0,BA=g>>26,g=(kA=(67108863&g)<<6|kA>>>26)+(aA=fA+aA|0)|0,aA=BA+(aA>>>0<fA>>>0?iA+1|0:iA)|0,BA=(iA=g)>>>0<kA>>>0?aA+1|0:aA,kA=aA=iA+16777216|0,g=BA=aA>>>0<16777216?BA+1|0:BA,a[A+28>>2]=iA-(-33554432&aA),BA=GA(EA,o,C,y),aA=h,fA=GA(pA,B,k,T),iA=h+aA|0,iA=(BA=fA+BA|0)>>>0<fA>>>0?iA+1|0:iA,fA=GA(r,s,l,q),aA=h+iA|0,aA=(BA=fA+BA|0)>>>0<fA>>>0?aA+1|0:aA,iA=(fA=GA(sA,c,_,w))+BA|0,BA=h+aA|0,BA=iA>>>0<fA>>>0?BA+1|0:BA,aA=iA,iA=GA(wA,V,v,z),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(yA,E,H,X),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,aA=(oA=GA(oA,Y,S,j))+aA|0,iA=h+BA|0,BA=(nA=GA(e,i,nA,u))+aA|0,aA=h+(aA>>>0<oA>>>0?iA+1|0:iA)|0,iA=(rA=GA(rA,f,D,L))+BA|0,BA=h+(BA>>>0<nA>>>0?aA+1|0:aA)|0,BA=iA>>>0<rA>>>0?BA+1|0:BA,aA=iA,iA=GA(cA,n,hA,Q),BA=h+BA|0,rA=aA=aA+iA|0,BA=(BA=aA>>>0<iA>>>0?BA+1|0:BA)+(aA=I>>26)|0,rA=I=rA+(iA=(67108863&I)<<6|SA>>>26)|0,BA=I>>>0<iA>>>0?BA+1|0:BA,nA=aA=I+16777216|0,I=iA=aA>>>0<16777216?BA+1|0:BA,a[A+12>>2]=rA-(-33554432&aA),BA=GA(C,y,K,R),iA=h,aA=(rA=GA(pA,B,yA,E))+BA|0,BA=h+iA|0,BA=aA>>>0<rA>>>0?BA+1|0:BA,iA=GA(e,i,r,s),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,rA=GA(_,w,DA,G),iA=h+BA|0,iA=(aA=rA+aA|0)>>>0<rA>>>0?iA+1|0:iA,BA=(rA=GA(hA,Q,p,M))+aA|0,aA=h+iA|0,aA=BA>>>0<rA>>>0?aA+1|0:aA,iA=(rA=GA(b,J,d,U))+BA|0,BA=h+aA|0,BA=iA>>>0<rA>>>0?BA+1|0:BA,aA=iA,iA=GA(EA,o,Z,O),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(m,_A,F,x),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,aA=(DA=GA(sA,c,rA=lA,oA=rA>>31))+aA|0,iA=h+BA|0,BA=(cA=GA(cA,n,N,P))+aA|0,aA=h+(aA>>>0<DA>>>0?iA+1|0:iA)|0,aA=BA>>>0<cA>>>0?aA+1|0:aA,lA=BA,BA=(BA=g>>25)+aA|0,BA=(g=lA+(iA=(33554431&g)<<7|kA>>>25)|0)>>>0<iA>>>0?BA+1|0:BA,cA=aA=(iA=g)+33554432|0,g=BA=aA>>>0<33554432?BA+1|0:BA,a[A+32>>2]=iA-(-67108864&aA),aA=I>>25,I=(nA=(33554431&I)<<7|nA>>>25)+($-(BA=-67108864&gA)|0)|0,BA=aA+(AA-((BA>>>0>$>>>0)+IA|0)|0)|0,BA=I>>>0<nA>>>0?BA+1|0:BA,BA=((67108863&(BA=(I=(aA=I)+33554432|0)>>>0<33554432?BA+1|0:BA))<<6|I>>>26)+(iA=vA-(-33554432&CA)|0)|0,a[A+20>>2]=BA,a[A+16>>2]=aA-(-67108864&I),I=GA(yA,E,C,y),BA=h,aA=GA(pA,B,v,z),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,iA=GA(r,s,S,j),aA=h+BA|0,aA=(I=iA+I|0)>>>0<iA>>>0?aA+1|0:aA,BA=GA(e,i,_,w),iA=h+aA|0,iA=(I=BA+I|0)>>>0<BA>>>0?iA+1|0:iA,aA=GA(p,M,D,L),BA=h+iA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(hA,Q,d,U),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(k,T,Z,O),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,iA=GA(EA,o,m,_A),aA=h+BA|0,aA=(I=iA+I|0)>>>0<iA>>>0?aA+1|0:aA,BA=GA(rA,oA,l,q),iA=h+aA|0,iA=(I=BA+I|0)>>>0<BA>>>0?iA+1|0:iA,aA=GA(sA,c,W,W>>31),BA=h+iA|0,BA=(BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA)+(aA=g>>26)|0,BA=(g=(iA=I)+(I=(67108863&g)<<6|cA>>>26)|0)>>>0<I>>>0?BA+1|0:BA,BA=(g=(I=g)+16777216|0)>>>0<16777216?BA+1|0:BA,a[A+36>>2]=I-(-33554432&g),iA=QA-(-33554432&bA)|0,aA=tA-(I=-67108864&uA)|0,pA=dA-((I>>>0>tA>>>0)+eA|0)|0,g=(I=GA((33554431&(I=BA))<<7|g>>>25,BA>>=25,19,0))+aA|0,aA=h+pA|0,BA=g>>>0<I>>>0?aA+1|0:aA,BA=((67108863&(BA=(g=(I=g)+33554432|0)>>>0<33554432?BA+1|0:BA))<<6|g>>>26)+iA|0,a[A+4>>2]=BA,a[A>>2]=I-(-67108864&g)}function l(A,g){var I,C,e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D=0,w=0,k=0;n=I=n-544|0,C=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24,e=i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24,B=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24,r=i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24,t=i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24,Q=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,o=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,c=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24,D=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,E=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,y=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,_=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,h=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,s=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,p=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,f=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,A=a[g+124>>2],a[I+536>>2]=a[g+120>>2],a[I+540>>2]=A,A=a[g+116>>2],a[I+528>>2]=a[g+112>>2],a[I+532>>2]=A,A=a[g+108>>2],a[I+504>>2]=a[g+104>>2],a[I+508>>2]=A,A=a[g+100>>2],a[I+496>>2]=a[g+96>>2],a[I+500>>2]=A,A=a[g+124>>2],a[I+488>>2]=a[g+120>>2],a[I+492>>2]=A,A=a[g+116>>2],a[I+480>>2]=a[g+112>>2],a[I+484>>2]=A,oA(k=I+512|0,I+496|0,I+480|0),A=a[I+524>>2],a[g+120>>2]=a[I+520>>2],a[g+124>>2]=A,A=a[I+516>>2],a[g+112>>2]=a[I+512>>2],a[g+116>>2]=A,A=a[g+92>>2],a[I+472>>2]=a[g+88>>2],a[I+476>>2]=A,A=a[g+84>>2],a[I+464>>2]=a[g+80>>2],a[I+468>>2]=A,A=a[g+108>>2],a[I+456>>2]=a[g+104>>2],a[I+460>>2]=A,A=a[g+100>>2],a[I+448>>2]=a[g+96>>2],a[I+452>>2]=A,oA(k,I+464|0,I+448|0),A=a[I+524>>2],a[g+104>>2]=a[I+520>>2],a[g+108>>2]=A,A=a[I+516>>2],a[g+96>>2]=a[I+512>>2],a[g+100>>2]=A,A=a[g+76>>2],a[I+440>>2]=a[g+72>>2],a[I+444>>2]=A,w=a[4+(A=g- -64|0)>>2],a[I+432>>2]=a[A>>2],a[I+436>>2]=w,w=a[g+92>>2],a[I+424>>2]=a[g+88>>2],a[I+428>>2]=w,w=a[g+84>>2],a[I+416>>2]=a[g+80>>2],a[I+420>>2]=w,oA(k,I+432|0,I+416|0),w=a[I+524>>2],a[g+88>>2]=a[I+520>>2],a[g+92>>2]=w,w=a[I+516>>2],a[g+80>>2]=a[I+512>>2],a[g+84>>2]=w,w=a[g+60>>2],a[I+408>>2]=a[g+56>>2],a[I+412>>2]=w,w=a[g+52>>2],a[I+400>>2]=a[g+48>>2],a[I+404>>2]=w,w=a[g+76>>2],a[I+392>>2]=a[g+72>>2],a[I+396>>2]=w,w=a[A+4>>2],a[I+384>>2]=a[A>>2],a[I+388>>2]=w,oA(k,I+400|0,I+384|0),w=a[I+524>>2],a[g+72>>2]=a[I+520>>2],a[g+76>>2]=w,w=a[I+516>>2],a[A>>2]=a[I+512>>2],a[A+4>>2]=w,w=a[g+44>>2],a[I+376>>2]=a[g+40>>2],a[I+380>>2]=w,w=a[g+36>>2],a[I+368>>2]=a[g+32>>2],a[I+372>>2]=w,w=a[g+60>>2],a[I+360>>2]=a[g+56>>2],a[I+364>>2]=w,w=a[g+52>>2],a[I+352>>2]=a[g+48>>2],a[I+356>>2]=w,oA(k,I+368|0,I+352|0),w=a[I+524>>2],a[g+56>>2]=a[I+520>>2],a[g+60>>2]=w,w=a[I+516>>2],a[g+48>>2]=a[I+512>>2],a[g+52>>2]=w,w=a[g+28>>2],a[I+344>>2]=a[g+24>>2],a[I+348>>2]=w,w=a[g+20>>2],a[I+336>>2]=a[g+16>>2],a[I+340>>2]=w,w=a[g+44>>2],a[I+328>>2]=a[g+40>>2],a[I+332>>2]=w,w=a[g+36>>2],a[I+320>>2]=a[g+32>>2],a[I+324>>2]=w,oA(k,I+336|0,I+320|0),w=a[I+524>>2],a[g+40>>2]=a[I+520>>2],a[g+44>>2]=w,w=a[I+516>>2],a[g+32>>2]=a[I+512>>2],a[g+36>>2]=w,w=a[g+12>>2],a[I+312>>2]=a[g+8>>2],a[I+316>>2]=w,w=a[g+4>>2],a[I+304>>2]=a[g>>2],a[I+308>>2]=w,w=a[g+28>>2],a[I+296>>2]=a[g+24>>2],a[I+300>>2]=w,w=a[g+20>>2],a[I+288>>2]=a[g+16>>2],a[I+292>>2]=w,oA(k,I+304|0,I+288|0),w=a[I+524>>2],a[g+24>>2]=a[I+520>>2],a[g+28>>2]=w,w=a[I+516>>2],a[g+16>>2]=a[I+512>>2],a[g+20>>2]=w,w=a[I+540>>2],a[I+280>>2]=a[I+536>>2],a[I+284>>2]=w,w=a[I+532>>2],a[I+272>>2]=a[I+528>>2],a[I+276>>2]=w,w=a[g+12>>2],a[I+264>>2]=a[g+8>>2],a[I+268>>2]=w,w=a[g+4>>2],a[I+256>>2]=a[g>>2],a[I+260>>2]=w,oA(k,I+272|0,I+256|0),w=a[I+524>>2],a[g+8>>2]=a[I+520>>2],a[g+12>>2]=w,w=a[I+516>>2],a[g>>2]=a[I+512>>2],a[g+4>>2]=w,a[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^p,a[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^s,a[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^h,a[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^f,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^_,a[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^y,a[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^E,a[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^D,D=a[g+124>>2],a[I+536>>2]=a[g+120>>2],a[I+540>>2]=D,D=a[g+116>>2],a[I+528>>2]=a[g+112>>2],a[I+532>>2]=D,D=a[g+108>>2],a[I+248>>2]=a[g+104>>2],a[I+252>>2]=D,D=a[g+100>>2],a[I+240>>2]=a[g+96>>2],a[I+244>>2]=D,D=a[g+124>>2],a[I+232>>2]=a[g+120>>2],a[I+236>>2]=D,D=a[g+116>>2],a[I+224>>2]=a[g+112>>2],a[I+228>>2]=D,oA(k,I+240|0,I+224|0),D=a[I+524>>2],a[g+120>>2]=a[I+520>>2],a[g+124>>2]=D,D=a[I+516>>2],a[g+112>>2]=a[I+512>>2],a[g+116>>2]=D,D=a[g+92>>2],a[I+216>>2]=a[g+88>>2],a[I+220>>2]=D,D=a[g+84>>2],a[I+208>>2]=a[g+80>>2],a[I+212>>2]=D,D=a[g+108>>2],a[I+200>>2]=a[g+104>>2],a[I+204>>2]=D,D=a[g+100>>2],a[I+192>>2]=a[g+96>>2],a[I+196>>2]=D,oA(k,I+208|0,I+192|0),D=a[I+524>>2],a[g+104>>2]=a[I+520>>2],a[g+108>>2]=D,D=a[I+516>>2],a[g+96>>2]=a[I+512>>2],a[g+100>>2]=D,D=a[g+76>>2],a[I+184>>2]=a[g+72>>2],a[I+188>>2]=D,D=a[A+4>>2],a[I+176>>2]=a[A>>2],a[I+180>>2]=D,D=a[g+92>>2],a[I+168>>2]=a[g+88>>2],a[I+172>>2]=D,D=a[g+84>>2],a[I+160>>2]=a[g+80>>2],a[I+164>>2]=D,oA(k,I+176|0,I+160|0),D=a[I+524>>2],a[g+88>>2]=a[I+520>>2],a[g+92>>2]=D,D=a[I+516>>2],a[g+80>>2]=a[I+512>>2],a[g+84>>2]=D,D=a[g+60>>2],a[I+152>>2]=a[g+56>>2],a[I+156>>2]=D,D=a[g+52>>2],a[I+144>>2]=a[g+48>>2],a[I+148>>2]=D,D=a[g+76>>2],a[I+136>>2]=a[g+72>>2],a[I+140>>2]=D,D=a[A+4>>2],a[I+128>>2]=a[A>>2],a[I+132>>2]=D,oA(k,I+144|0,I+128|0),D=a[I+524>>2],a[g+72>>2]=a[I+520>>2],a[g+76>>2]=D,D=a[I+516>>2],a[A>>2]=a[I+512>>2],a[A+4>>2]=D,D=a[g+44>>2],a[I+120>>2]=a[g+40>>2],a[I+124>>2]=D,D=a[g+36>>2],a[I+112>>2]=a[g+32>>2],a[I+116>>2]=D,D=a[g+60>>2],a[I+104>>2]=a[g+56>>2],a[I+108>>2]=D,D=a[g+52>>2],a[I+96>>2]=a[g+48>>2],a[I+100>>2]=D,oA(k,I+112|0,I+96|0),D=a[I+524>>2],a[g+56>>2]=a[I+520>>2],a[g+60>>2]=D,D=a[I+516>>2],a[g+48>>2]=a[I+512>>2],a[g+52>>2]=D,D=a[g+28>>2],a[I+88>>2]=a[g+24>>2],a[I+92>>2]=D,D=a[g+20>>2],a[I+80>>2]=a[g+16>>2],a[I+84>>2]=D,D=a[g+44>>2],a[I+72>>2]=a[g+40>>2],a[I+76>>2]=D,D=a[g+36>>2],a[I+64>>2]=a[g+32>>2],a[I+68>>2]=D,oA(k,I+80|0,I- -64|0),D=a[I+524>>2],a[g+40>>2]=a[I+520>>2],a[g+44>>2]=D,D=a[I+516>>2],a[g+32>>2]=a[I+512>>2],a[g+36>>2]=D,D=a[g+12>>2],a[I+56>>2]=a[g+8>>2],a[I+60>>2]=D,D=a[g+4>>2],a[I+48>>2]=a[g>>2],a[I+52>>2]=D,D=a[g+28>>2],a[I+40>>2]=a[g+24>>2],a[I+44>>2]=D,D=a[g+20>>2],a[I+32>>2]=a[g+16>>2],a[I+36>>2]=D,oA(k,I+48|0,I+32|0),D=a[I+524>>2],a[g+24>>2]=a[I+520>>2],a[g+28>>2]=D,D=a[I+516>>2],a[g+16>>2]=a[I+512>>2],a[g+20>>2]=D,D=a[I+540>>2],a[I+24>>2]=a[I+536>>2],a[I+28>>2]=D,D=a[I+532>>2],a[I+16>>2]=a[I+528>>2],a[I+20>>2]=D,D=a[g+12>>2],a[I+8>>2]=a[g+8>>2],a[I+12>>2]=D,D=a[g+4>>2],a[I>>2]=a[g>>2],a[I+4>>2]=D,oA(k,I+16|0,I),k=a[I+524>>2],a[g+8>>2]=a[I+520>>2],a[g+12>>2]=k,k=a[I+516>>2],a[g>>2]=a[I+512>>2],a[g+4>>2]=k,a[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^c,a[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^o,a[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^Q,a[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^t,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^r,a[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^B,a[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^e,a[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^C,n=I+544|0}function u(A,g,I,e,B){var r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0;for(n=r=n-288|0,s=(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^e>>>29,p=(i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24)^e<<3,f=(i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24)^I>>>29,e=(i[0|(o=B+32|0)]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24)^I<<3,_=B+16|0,E=B+48|0,Q=B- -64|0,y=B+80|0,t=B+96|0,c=B+112|0;I=a[c+12>>2],a[r+280>>2]=a[c+8>>2],a[r+284>>2]=I,I=a[c+4>>2],a[r+272>>2]=a[c>>2],a[r+276>>2]=I,I=a[t+12>>2],a[r+248>>2]=a[t+8>>2],a[r+252>>2]=I,I=a[t+4>>2],a[r+240>>2]=a[t>>2],a[r+244>>2]=I,I=a[c+12>>2],a[r+232>>2]=a[c+8>>2],a[r+236>>2]=I,I=a[c+4>>2],a[r+224>>2]=a[c>>2],a[r+228>>2]=I,oA(h=r+256|0,r+240|0,r+224|0),I=a[r+268>>2],a[c+8>>2]=a[r+264>>2],a[c+12>>2]=I,I=a[r+260>>2],a[c>>2]=a[r+256>>2],a[c+4>>2]=I,I=a[y+12>>2],a[r+216>>2]=a[y+8>>2],a[r+220>>2]=I,I=a[y+4>>2],a[r+208>>2]=a[y>>2],a[r+212>>2]=I,I=a[t+12>>2],a[r+200>>2]=a[t+8>>2],a[r+204>>2]=I,I=a[t+4>>2],a[r+192>>2]=a[t>>2],a[r+196>>2]=I,oA(h,r+208|0,r+192|0),I=a[r+268>>2],a[t+8>>2]=a[r+264>>2],a[t+12>>2]=I,I=a[r+260>>2],a[t>>2]=a[r+256>>2],a[t+4>>2]=I,I=a[Q+12>>2],a[r+184>>2]=a[Q+8>>2],a[r+188>>2]=I,I=a[Q+4>>2],a[r+176>>2]=a[Q>>2],a[r+180>>2]=I,I=a[y+12>>2],a[r+168>>2]=a[y+8>>2],a[r+172>>2]=I,I=a[y+4>>2],a[r+160>>2]=a[y>>2],a[r+164>>2]=I,oA(h,r+176|0,r+160|0),I=a[r+268>>2],a[y+8>>2]=a[r+264>>2],a[y+12>>2]=I,I=a[r+260>>2],a[y>>2]=a[r+256>>2],a[y+4>>2]=I,I=a[E+12>>2],a[r+152>>2]=a[E+8>>2],a[r+156>>2]=I,I=a[E+4>>2],a[r+144>>2]=a[E>>2],a[r+148>>2]=I,I=a[Q+12>>2],a[r+136>>2]=a[Q+8>>2],a[r+140>>2]=I,I=a[Q+4>>2],a[r+128>>2]=a[Q>>2],a[r+132>>2]=I,oA(h,r+144|0,r+128|0),I=a[r+268>>2],a[Q+8>>2]=a[r+264>>2],a[Q+12>>2]=I,I=a[r+260>>2],a[Q>>2]=a[r+256>>2],a[Q+4>>2]=I,I=a[o+12>>2],a[r+120>>2]=a[o+8>>2],a[r+124>>2]=I,I=a[o+4>>2],a[r+112>>2]=a[o>>2],a[r+116>>2]=I,I=a[E+12>>2],a[r+104>>2]=a[E+8>>2],a[r+108>>2]=I,I=a[E+4>>2],a[r+96>>2]=a[E>>2],a[r+100>>2]=I,oA(h,r+112|0,r+96|0),I=a[r+268>>2],a[E+8>>2]=a[r+264>>2],a[E+12>>2]=I,I=a[r+260>>2],a[E>>2]=a[r+256>>2],a[E+4>>2]=I,I=a[_+12>>2],a[r+88>>2]=a[_+8>>2],a[r+92>>2]=I,I=a[_+4>>2],a[r+80>>2]=a[_>>2],a[r+84>>2]=I,I=a[o+12>>2],a[r+72>>2]=a[o+8>>2],a[r+76>>2]=I,I=a[o+4>>2],a[r+64>>2]=a[o>>2],a[r+68>>2]=I,oA(h,r+80|0,r- -64|0),I=a[r+268>>2],a[o+8>>2]=a[r+264>>2],a[o+12>>2]=I,I=a[r+260>>2],a[o>>2]=a[r+256>>2],a[o+4>>2]=I,I=a[B+12>>2],a[r+56>>2]=a[B+8>>2],a[r+60>>2]=I,I=a[B+4>>2],a[r+48>>2]=a[B>>2],a[r+52>>2]=I,I=a[_+12>>2],a[r+40>>2]=a[_+8>>2],a[r+44>>2]=I,I=a[_+4>>2],a[r+32>>2]=a[_>>2],a[r+36>>2]=I,oA(h,r+48|0,r+32|0),I=a[r+268>>2],a[_+8>>2]=a[r+264>>2],a[_+12>>2]=I,I=a[r+260>>2],a[_>>2]=a[r+256>>2],a[_+4>>2]=I,I=a[r+284>>2],a[r+24>>2]=a[r+280>>2],a[r+28>>2]=I,I=a[r+276>>2],a[r+16>>2]=a[r+272>>2],a[r+20>>2]=I,I=a[B+12>>2],a[r+8>>2]=a[B+8>>2],a[r+12>>2]=I,I=a[B+4>>2],a[r>>2]=a[B>>2],a[r+4>>2]=I,oA(h,r+16|0,r),I=a[r+268>>2],a[B+8>>2]=a[r+264>>2],a[B+12>>2]=I,I=a[r+260>>2],a[B>>2]=a[r+256>>2],a[B+4>>2]=I,w=s^(i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24),a[B+12>>2]=w,k=p^(i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24),a[B+8>>2]=k,d=f^(i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24),a[B+4>>2]=d,l=e^(i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),a[B>>2]=l,u=e^(i[0|Q]|i[Q+1|0]<<8|i[Q+2|0]<<16|i[Q+3|0]<<24),a[Q>>2]=u,v=f^(i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24),a[B+68>>2]=v,S=p^(i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24),a[B+72>>2]=S,b=s^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24),a[B+76>>2]=b,7!=(0|(D=D+1|0)););A:{g:{I:{if(I=g-16|0){if(16==(0|I))break I;break g}Q=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,o=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,_=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,E=i[B+96|0]|i[B+97|0]<<8|i[B+98|0]<<16|i[B+99|0]<<24,y=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,t=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,c=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,h=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,s=i[B+100|0]|i[B+101|0]<<8|i[B+102|0]<<16|i[B+103|0]<<24,p=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,f=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,D=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,e=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,I=i[B+104|0]|i[B+105|0]<<8|i[B+106|0]<<16|i[B+107|0]<<24,g=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,B=w^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24)^(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+108|0]|i[B+109|0]<<8|i[B+110|0]<<16|i[B+111|0]<<24)^b,C[A+12|0]=B,C[A+13|0]=B>>>8,C[A+14|0]=B>>>16,C[A+15|0]=B>>>24,g=f^D^e^g^I^S^k,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=t^c^h^s^p^v^d,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=Q^o^_^E^y^u^l,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24;break A}c=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,h=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,s=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,p=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,f=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,D=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,e=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,I=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,g=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,t=w^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24)^(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24),C[A+12|0]=t,C[A+13|0]=t>>>8,C[A+14|0]=t>>>16,C[A+15|0]=t>>>24,g=e^g^I^k,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=p^f^D^d,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=c^h^s^l,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,E=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,y=i[0|(g=B- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,t=i[B+112|0]|i[B+113|0]<<8|i[B+114|0]<<16|i[B+115|0]<<24,c=i[B+96|0]|i[B+97|0]<<8|i[B+98|0]<<16|i[B+99|0]<<24,h=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,s=i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24,p=i[B+116|0]|i[B+117|0]<<8|i[B+118|0]<<16|i[B+119|0]<<24,f=i[B+100|0]|i[B+101|0]<<8|i[B+102|0]<<16|i[B+103|0]<<24,D=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,e=i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24,I=i[B+120|0]|i[B+121|0]<<8|i[B+122|0]<<16|i[B+123|0]<<24,g=i[B+104|0]|i[B+105|0]<<8|i[B+106|0]<<16|i[B+107|0]<<24,B=(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24)^(i[B+124|0]|i[B+125|0]<<8|i[B+126|0]<<16|i[B+127|0]<<24)^(i[B+108|0]|i[B+109|0]<<8|i[B+110|0]<<16|i[B+111|0]<<24),C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,g=D^e^g^I,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=h^s^p^f,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=E^y^t^c,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24;break A}VA(A,0,g)}n=r+288|0}function v(A,g){var I,C,e,B,i,r,Q,o,c,E,y,_,s,p,f,D,w,k,d,l,u,v,S,b=0,M=0,F=0,N=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,iA=0,rA=0,tA=0,QA=0,oA=0;n=I=n-48|0,K(A,g),K(A+80|0,g+40|0),b=GA(R=(gA=a[g+92>>2])<<1,i=R>>31,J=(N=a[g+84>>2])<<1,C=J>>31),F=h,AA=q=a[g+88>>2],M=(m=GA(q,X=q>>31,q,X))+b|0,b=h+F|0,b=M>>>0<m>>>0?b+1|0:b,F=GA(Y=a[g+96>>2],r=Y>>31,m=(U=a[g+80>>2])<<1,e=m>>31),b=h+b|0,b=(M=F+M|0)>>>0<F>>>0?b+1|0:b,CA=a[g+108>>2],F=GA(P=t(CA,38),y=P>>31,CA,p=CA>>31),b=h+b|0,b=(M=F+M|0)>>>0<F>>>0?b+1|0:b,F=M,W=a[g+112>>2],x=GA(H=t(W,19),Q=H>>31,M=(O=a[g+104>>2])<<1,M>>31),M=h+b|0,M=(F=F+x|0)>>>0<x>>>0?M+1|0:M,aA=a[g+116>>2],b=GA(x=t(aA,38),B=x>>31,j=(Z=a[g+100>>2])<<1,c=j>>31),M=h+M|0,iA=b=(b>>>0>(F=b+F|0)>>>0?M+1:M)<<1|F>>>31,rA=F=33554432+(f=F<<1)|0,tA=b=F>>>0<33554432?b+1|0:b,G=(67108863&b)<<6|F>>>26,V=b>>26,b=GA(J,C,Y,r),F=h,M=($=GA(q<<=1,E=q>>31,gA,D=gA>>31))+b|0,b=h+F|0,b=M>>>0<$>>>0?b+1|0:b,F=($=GA(Z,_=Z>>31,m,e))+M|0,M=h+b|0,M=F>>>0<$>>>0?M+1|0:M,eA=GA(H,Q,$=CA<<1,w=$>>31),b=h+M|0,b=(F=eA+F|0)>>>0<eA>>>0?b+1|0:b,M=GA(x,B,O,o=O>>31),b=h+b|0,M=(M=(M>>>0>(F=M+F|0)>>>0?b+1:b)<<1|F>>>31)+V|0,eA=F=(b=F<<1)+G|0,b=M=b>>>0>F>>>0?M+1|0:M,QA=F=F+16777216|0,G=(33554431&(b=F>>>0<16777216?b+1|0:b))<<7|F>>>25,V=b>>25,b=GA(R,i,gA,D),F=h,M=(z=GA(Y,r,q,E))+b|0,b=h+F|0,b=M>>>0<z>>>0?b+1|0:b,F=GA(J,C,j,c),b=h+b|0,b=(M=F+M|0)>>>0<F>>>0?b+1|0:b,F=(z=GA(m,e,O,o))+M|0,M=h+b|0,M=F>>>0<z>>>0?M+1|0:M,z=GA(H,Q,W,s=W>>31),b=h+M|0,b=(F=z+F|0)>>>0<z>>>0?b+1|0:b,z=GA(x,B,$,w),M=h+b|0,M=((F=z+F|0)>>>0<z>>>0?M+1:M)<<1|F>>>31,F=(b=G)+(G=F<<1)|0,b=M+V|0,b=F>>>0<G>>>0?b+1|0:b,V=F,z=M=F+33554432|0,F=b=M>>>0<33554432?b+1|0:b,a[A+144>>2]=V-(-67108864&M),V=GA(b=t(Z,38),b>>31,Z,_),G=h,U=GA(b=U,M=b>>31,b,M),M=h+G|0,M=(b=U+V|0)>>>0<U>>>0?M+1|0:M,G=(IA=GA(U=t(O,19),k=U>>31,V=Y<<1,d=V>>31))+b|0,b=h+M|0,b=G>>>0<IA>>>0?b+1|0:b,M=G,G=GA(R,i,P,y),b=h+b|0,b=(M=M+G|0)>>>0<G>>>0?b+1|0:b,G=(IA=GA(H,Q,q,E))+M|0,M=h+b|0,M=G>>>0<IA>>>0?M+1|0:M,IA=GA(J,C,x,B),b=h+M|0,IA=b=((G=IA+G|0)>>>0<IA>>>0?b+1:b)<<1|G>>>31,v=M=(G=33554432+(l=G<<1)|0)>>>0<33554432?b+1|0:b,BA=(67108863&M)<<6|G>>>26,oA=M>>26,b=GA(U,k,j,c),L=h,T=N,M=(N=GA(m,e,N,u=N>>31))+b|0,b=h+L|0,b=M>>>0<N>>>0?b+1|0:b,N=(L=GA(Y,r,P,y))+M|0,M=h+b|0,M=N>>>0<L>>>0?M+1|0:M,L=GA(H,Q,R,i),b=h+M|0,b=(N=L+N|0)>>>0<L>>>0?b+1|0:b,L=GA(x,B,AA,X),M=h+b|0,M=((N=L+N|0)>>>0<L>>>0?M+1:M)<<1|N>>>31,N=(b=BA)+(BA=N<<1)|0,b=M+oA|0,b=N>>>0<BA>>>0?b+1|0:b,oA=N,BA=N=N+16777216|0,S=(33554431&(b=N>>>0<16777216?b+1|0:b))<<7|N>>>25,L=b>>25,b=GA(m,e,AA,X),N=h,M=(T=GA(J,C,T,u))+b|0,b=h+N|0,N=(U=GA(U,k,O,o))+M|0,M=h+(M>>>0<T>>>0?b+1|0:b)|0,M=N>>>0<U>>>0?M+1|0:M,U=GA(j,c,P,y),b=h+M|0,b=(N=U+N|0)>>>0<U>>>0?b+1|0:b,M=N,N=GA(H,Q,V,d),b=h+b|0,b=(M=M+N|0)>>>0<N>>>0?b+1|0:b,N=(U=GA(x,B,R,i))+M|0,M=h+b|0,b=(b=(N>>>0<U>>>0?M+1:M)<<1|N>>>31)+L|0,T=N=(M=N<<1)+S|0,b=M>>>0>N>>>0?b+1|0:b,N=(U=N+33554432|0)>>>0<33554432?b+1|0:b,a[A+128>>2]=T-(-67108864&U),b=GA(q,E,Z,_),M=h,T=GA(Y,r,R,i),M=h+M|0,M=(b=T+b|0)>>>0<T>>>0?M+1|0:M,T=(L=GA(J,C,O,o))+b|0,b=h+M|0,b=T>>>0<L>>>0?b+1|0:b,L=GA(m,e,CA,p),M=h+b|0,M=(T=L+T|0)>>>0<L>>>0?M+1|0:M,L=GA(x,B,W,s),b=h+M|0,b=(M=F>>26)+(((T=L+T|0)>>>0<L>>>0?b+1:b)<<1|T>>>31)|0,b=(F=(z=(67108863&F)<<6|z>>>26)+(T<<1)|0)>>>0<z>>>0?b+1|0:b,z=F,M=b,T=b=F+16777216|0,F=M=b>>>0<16777216?M+1|0:M,a[A+148>>2]=z-(-33554432&b),b=GA(m,e,gA,D),gA=h,M=(X=GA(J,C,AA,X))+b|0,b=h+gA|0,b=M>>>0<X>>>0?b+1|0:b,P=GA(O,o,P,y),b=h+b|0,b=(M=P+M|0)>>>0<P>>>0?b+1|0:b,H=(P=GA(H,Q,j,c))+M|0,M=h+b|0,M=H>>>0<P>>>0?M+1|0:M,b=H,H=GA(x,B,Y,r),M=h+M|0,M=((b=b+H|0)>>>0<H>>>0?M+1:M)<<1,H=b,b=(b=M|b>>>31)+(M=N>>26)|0,b=(N=(z=H<<1)+(H=(67108863&N)<<6|U>>>26)|0)>>>0<H>>>0?b+1|0:b,H=N,P=M=N+16777216|0,N=b=M>>>0<16777216?b+1|0:b,a[A+132>>2]=H-(-33554432&M),b=GA(O,o,q,E),H=h,M=(Y=GA(Y,r,Y,r))+b|0,b=h+H|0,b=M>>>0<Y>>>0?b+1|0:b,Y=GA(R,i,j,c),b=h+b|0,b=(M=Y+M|0)>>>0<Y>>>0?b+1|0:b,Y=GA(J,C,$,w),b=h+b|0,b=(M=Y+M|0)>>>0<Y>>>0?b+1|0:b,Y=(H=GA(m,e,W,s))+M|0,M=h+b|0,M=Y>>>0<H>>>0?M+1|0:M,b=Y,Y=GA(Y=x,B,x=aA,j=x>>31),M=h+M|0,M=((b=b+Y|0)>>>0<Y>>>0?M+1:M)<<1,Y=b,b=(b=M|b>>>31)+(M=F>>25)|0,b=(F=(H=Y<<1)+(Y=(33554431&F)<<7|T>>>25)|0)>>>0<Y>>>0?b+1|0:b,Y=F,H=M=F+33554432|0,F=b=M>>>0<33554432?b+1|0:b,a[A+152>>2]=Y-(-67108864&M),M=f-(b=-67108864&rA)|0,Y=iA-((b>>>0>f>>>0)+tA|0)|0,b=N>>25,N=(P=(33554431&N)<<7|P>>>25)+M|0,M=b+Y|0,Y=N,b=M=N>>>0<P>>>0?M+1|0:M,b=((67108863&(b=(N=N+33554432|0)>>>0<33554432?b+1|0:b))<<6|N>>>26)+(X=eA-(-33554432&QA)|0)|0,a[A+140>>2]=b,a[A+136>>2]=Y-(-67108864&N),b=GA(R,i,O,o),M=h,N=GA(Z,_,V,d),M=h+M|0,M=(b=N+b|0)>>>0<N>>>0?M+1|0:M,N=(R=GA(q,E,CA,p))+b|0,b=h+M|0,b=N>>>0<R>>>0?b+1|0:b,J=GA(J,C,W,s),M=h+b|0,M=(N=J+N|0)>>>0<J>>>0?M+1|0:M,J=GA(m,e,x,j),b=h+M|0,b=(b=((N=J+N|0)>>>0<J>>>0?b+1:b)<<1|N>>>31)+(M=F>>26)|0,M=(F=(Y=N<<1)+(N=(67108863&F)<<6|H>>>26)|0)>>>0<N>>>0?b+1|0:b,M=(b=F+16777216|0)>>>0<16777216?M+1|0:M,a[A+156>>2]=F-(-33554432&b),N=oA-(-33554432&BA)|0,J=l-(F=-67108864&G)|0,m=IA-((F>>>0>l>>>0)+v|0)|0,F=GA((33554431&M)<<7|b>>>25,M>>25,19,0),M=h+m|0,M=(b=F+J|0)>>>0<F>>>0?M+1|0:M,F=b,M=((67108863&(M=(b=b+33554432|0)>>>0<33554432?M+1|0:M))<<6|b>>>26)+N|0,a[A+124>>2]=M,a[A+120>>2]=F-(-67108864&b),b=a[g+44>>2],M=a[g+4>>2],F=a[g+48>>2],N=a[g+8>>2],J=a[g+52>>2],m=a[g+12>>2],x=a[g+56>>2],R=a[g+16>>2],Y=a[g+60>>2],H=a[g+20>>2],O=a[g- -64>>2],j=a[g+24>>2],q=a[g+68>>2],P=a[g+28>>2],X=a[g+72>>2],Z=a[g+32>>2],W=a[g+40>>2],AA=a[g>>2],a[A+76>>2]=a[g+76>>2]+a[g+36>>2],a[A+72>>2]=X+Z,a[A+68>>2]=P+q,a[(CA=A- -64|0)>>2]=O+j,a[A+60>>2]=Y+H,a[A+56>>2]=x+R,a[A+52>>2]=J+m,a[A+48>>2]=F+N,a[A+44>>2]=b+M,a[A+40>>2]=W+AA,K(I,A+40|0),g=a[A+4>>2],b=a[A+84>>2],M=a[A+8>>2],F=a[A+88>>2],N=a[A+12>>2],J=a[A+92>>2],m=a[A+16>>2],x=a[A+96>>2],R=a[A+20>>2],Y=a[A+100>>2],H=a[A+24>>2],O=a[A+104>>2],j=a[A+28>>2],q=a[A+108>>2],P=a[A+32>>2],X=a[A+112>>2],Z=a[A>>2],W=a[A+80>>2],$=(AA=a[A+116>>2])-(gA=a[A+36>>2])|0,a[A+116>>2]=$,U=X-P|0,a[A+112>>2]=U,V=q-j|0,a[A+108>>2]=V,G=O-H|0,a[A+104>>2]=G,aA=Y-R|0,a[A+100>>2]=aA,iA=x-m|0,a[A+96>>2]=iA,rA=J-N|0,a[A+92>>2]=rA,tA=F-M|0,a[A+88>>2]=tA,eA=b-g|0,a[A+84>>2]=eA,QA=W-Z|0,a[A+80>>2]=QA,AA=AA+gA|0,a[A+76>>2]=AA,P=P+X|0,a[A+72>>2]=P,j=q+j|0,a[A+68>>2]=j,H=H+O|0,a[CA>>2]=H,R=Y+R|0,a[A+60>>2]=R,m=x+m|0,a[A+56>>2]=m,N=N+J|0,a[A+52>>2]=N,M=M+F|0,a[A+48>>2]=M,g=g+b|0,a[A+44>>2]=g,b=Z+W|0,a[A+40>>2]=b,F=a[I>>2],J=a[I+4>>2],x=a[I+8>>2],Y=a[I+12>>2],O=a[I+16>>2],q=a[I+20>>2],X=a[I+24>>2],Z=a[I+28>>2],W=a[I+32>>2],a[A+36>>2]=a[I+36>>2]-AA,a[A+32>>2]=W-P,a[A+28>>2]=Z-j,a[A+24>>2]=X-H,a[A+20>>2]=q-R,a[A+16>>2]=O-m,a[A+12>>2]=Y-N,a[A+8>>2]=x-M,a[A+4>>2]=J-g,a[A>>2]=F-b,g=a[A+124>>2],b=a[A+128>>2],M=a[A+132>>2],F=a[A+136>>2],N=a[A+140>>2],J=a[A+144>>2],m=a[A+148>>2],x=a[A+152>>2],R=a[A+120>>2],a[A+156>>2]=a[A+156>>2]-$,a[A+152>>2]=x-U,a[A+148>>2]=m-V,a[A+144>>2]=J-G,a[A+140>>2]=N-aA,a[A+136>>2]=F-iA,a[A+132>>2]=M-rA,a[A+128>>2]=b-tA,a[A+124>>2]=g-eA,a[A+120>>2]=R-QA,n=I+48|0}function S(A,g,I,C){var e=0,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0;for(e=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,a[I>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,a[I+4>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,a[I+8>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,a[I+12>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,a[I+16>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,a[I+20>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,a[I+24>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,a[I+28>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,a[I+32>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,a[I+36>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,a[I+40>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,a[I+44>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,a[I+48>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,a[I+52>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,a[I+56>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,g=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,a[I+60>>2]=g<<24|(65280&g)<<8|g>>>8&65280|g>>>24,g=a[A+28>>2],a[C+24>>2]=a[A+24>>2],a[C+28>>2]=g,g=a[A+20>>2],a[C+16>>2]=a[A+16>>2],a[C+20>>2]=g,g=a[A+12>>2],a[C+8>>2]=a[A+8>>2],a[C+12>>2]=g,g=a[A+4>>2],a[C>>2]=a[A>>2],a[C+4>>2]=g;Q=a[C+28>>2],e=(g=w<<2)+I|0,r=a[C+16>>2],o=a[e>>2]+(Ig(r,26)^Ig(r,21)^Ig(r,7))|0,E=(Q=((B=a[g+34784>>2]+o|0)+(r&((o=a[C+24>>2])^(y=a[C+20>>2]))^o)|0)+Q|0)+a[C+12>>2]|0,a[C+12>>2]=E,Q=(n=Q+(Ig(c=a[C>>2],30)^Ig(c,19)^Ig(c,10))|0)+(c&((B=a[C+8>>2])|(t=a[C+4>>2]))|B&t)|0,a[C+28>>2]=Q,B=(n=B)+(o=(a[(s=(B=4|g)+I|0)>>2]+((o+(y^E&(r^y))|0)+(Ig(E,26)^Ig(E,21)^Ig(E,7))|0)|0)+a[B+34784>>2]|0)|0,a[C+8>>2]=B,o=(o+(Q&(t|c)|t&c)|0)+(Ig(Q,30)^Ig(Q,19)^Ig(Q,10))|0,a[C+24>>2]=o,y=(n=t)+(t=(((y+a[(D=(t=8|g)+I|0)>>2]|0)+a[t+34784>>2]|0)+(r^B&(r^E))|0)+(Ig(B,26)^Ig(B,21)^Ig(B,7))|0)|0,a[C+4>>2]=y,t=t+((o&(Q|c)|Q&c)+(Ig(o,30)^Ig(o,19)^Ig(o,10))|0)|0,a[C+20>>2]=t,r=(n=c)+(c=(((r+a[(k=(c=12|g)+I|0)>>2]|0)+a[c+34784>>2]|0)+(E^y&(B^E))|0)+(Ig(y,26)^Ig(y,21)^Ig(y,7))|0)|0,a[C>>2]=r,c=c+((t&(Q|o)|Q&o)+(Ig(t,30)^Ig(t,19)^Ig(t,10))|0)|0,a[C+16>>2]=c,E=(_=((((n=E)+a[(d=(E=16|g)+I|0)>>2]|0)+a[E+34784>>2]|0)+(B^r&(B^y))|0)+(Ig(r,26)^Ig(r,21)^Ig(r,7))|0)+((c&(t|o)|t&o)+(Ig(c,30)^Ig(c,19)^Ig(c,10))|0)|0,a[C+12>>2]=E,_=Q+_|0,a[C+28>>2]=_,Q=(B=(((B+a[(l=(Q=20|g)+I|0)>>2]|0)+a[Q+34784>>2]|0)+(y^_&(r^y))|0)+(Ig(_,26)^Ig(_,21)^Ig(_,7))|0)+((E&(t|c)|t&c)+(Ig(E,30)^Ig(E,19)^Ig(E,10))|0)|0,a[C+8>>2]=Q,B=B+o|0,a[C+24>>2]=B,o=(y=(((y+a[(u=(o=24|g)+I|0)>>2]|0)+a[o+34784>>2]|0)+(r^B&(r^_))|0)+(Ig(B,26)^Ig(B,21)^Ig(B,7))|0)+((Q&(c|E)|c&E)+(Ig(Q,30)^Ig(Q,19)^Ig(Q,10))|0)|0,a[C+4>>2]=o,y=t+y|0,a[C+20>>2]=y,t=(r=(((r+a[(v=(t=28|g)+I|0)>>2]|0)+a[t+34784>>2]|0)+(_^y&(B^_))|0)+(Ig(y,26)^Ig(y,21)^Ig(y,7))|0)+((o&(Q|E)|Q&E)+(Ig(o,30)^Ig(o,19)^Ig(o,10))|0)|0,a[C>>2]=t,r=r+c|0,a[C+16>>2]=r,c=(_=(((_+a[(S=(c=32|g)+I|0)>>2]|0)+a[c+34784>>2]|0)+(B^r&(B^y))|0)+(Ig(r,26)^Ig(r,21)^Ig(r,7))|0)+((t&(Q|o)|Q&o)+(Ig(t,30)^Ig(t,19)^Ig(t,10))|0)|0,a[C+28>>2]=c,_=E+_|0,a[C+12>>2]=_,E=(B=(((B+a[(b=(E=36|g)+I|0)>>2]|0)+a[E+34784>>2]|0)+(y^_&(r^y))|0)+(Ig(_,26)^Ig(_,21)^Ig(_,7))|0)+((c&(t|o)|t&o)+(Ig(c,30)^Ig(c,19)^Ig(c,10))|0)|0,a[C+24>>2]=E,B=B+Q|0,a[C+8>>2]=B,Q=(y=(((y+a[(M=(Q=40|g)+I|0)>>2]|0)+a[Q+34784>>2]|0)+(r^B&(r^_))|0)+(Ig(B,26)^Ig(B,21)^Ig(B,7))|0)+((E&(t|c)|t&c)+(Ig(E,30)^Ig(E,19)^Ig(E,10))|0)|0,a[C+20>>2]=Q,y=o+y|0,a[C+4>>2]=y,n=(o=44|g)+I|0,o=(r=((r+(a[o+34784>>2]+a[n>>2]|0)|0)+(_^y&(B^_))|0)+(Ig(y,26)^Ig(y,21)^Ig(y,7))|0)+((Q&(c|E)|c&E)+(Ig(Q,30)^Ig(Q,19)^Ig(Q,10))|0)|0,a[C+16>>2]=o,t=t+r|0,a[C>>2]=t,f=(r=48|g)+I|0,r=(_=((_+(a[r+34784>>2]+a[f>>2]|0)|0)+(B^t&(B^y))|0)+(Ig(t,26)^Ig(t,21)^Ig(t,7))|0)+((o&(Q|E)|Q&E)+(Ig(o,30)^Ig(o,19)^Ig(o,10))|0)|0,a[C+12>>2]=r,c=c+_|0,a[C+28>>2]=c,p=(_=52|g)+I|0,B=(_=(((a[_+34784>>2]+a[p>>2]|0)+B|0)+(y^c&(t^y))|0)+(Ig(c,26)^Ig(c,21)^Ig(c,7))|0)+((r&(Q|o)|Q&o)+(Ig(r,30)^Ig(r,19)^Ig(r,10))|0)|0,a[C+8>>2]=B,E=E+_|0,a[C+24>>2]=E,_=(h=56|g)+I|0,y=(h=(((a[h+34784>>2]+a[_>>2]|0)+y|0)+(t^E&(t^c))|0)+(Ig(E,26)^Ig(E,21)^Ig(E,7))|0)+((B&(o|r)|o&r)+(Ig(B,30)^Ig(B,19)^Ig(B,10))|0)|0,a[C+4>>2]=y,Q=Q+h|0,a[C+20>>2]=Q,h=(g|=60)+I|0,Q=(g=((t+(a[g+34784>>2]+a[h>>2]|0)|0)+(c^Q&(c^E))|0)+(Ig(Q,26)^Ig(Q,21)^Ig(Q,7))|0)+((y&(B|r)|B&r)+(Ig(y,30)^Ig(y,19)^Ig(y,10))|0)|0,a[C>>2]=Q,a[C+16>>2]=g+o,48!=(0|w);)t=a[b>>2],w=w+16|0,g=a[_>>2],Q=(B=a[e>>2]+(t+(Ig(g,15)^Ig(g,13)^g>>>10)|0)|0)+(Ig(o=a[s>>2],25)^Ig(o,14)^o>>>3)|0,a[(w<<2)+I>>2]=Q,E=(r=(B=(c=a[M>>2])+o|0)+(Ig(o=a[h>>2],15)^Ig(o,13)^o>>>10)|0)+(Ig(B=a[D>>2],25)^Ig(B,14)^B>>>3)|0,a[e+68>>2]=E,y=(n=((r=B)+(B=a[n>>2])|0)+(Ig(Q,15)^Ig(Q,13)^Q>>>10)|0)+(Ig(r=a[k>>2],25)^Ig(r,14)^r>>>3)|0,a[e+72>>2]=y,_=(h=((n=r)+(r=a[f>>2])|0)+(Ig(E,15)^Ig(E,13)^E>>>10)|0)+(Ig(n=a[d>>2],25)^Ig(n,14)^n>>>3)|0,a[e+76>>2]=_,f=(h=((h=n)+(n=a[p>>2])|0)+(Ig(y,15)^Ig(y,13)^y>>>10)|0)+(Ig(p=a[l>>2],25)^Ig(p,14)^p>>>3)|0,a[e+80>>2]=f,p=(s=(g+p|0)+(Ig(_,15)^Ig(_,13)^_>>>10)|0)+(Ig(h=a[u>>2],25)^Ig(h,14)^h>>>3)|0,a[e+84>>2]=p,h=((o+h|0)+(Ig(D=a[v>>2],25)^Ig(D,14)^D>>>3)|0)+(Ig(f,15)^Ig(f,13)^f>>>10)|0,a[e+88>>2]=h,E=((s=a[S>>2])+(E+(Ig(t,25)^Ig(t,14)^t>>>3)|0)|0)+(Ig(h,15)^Ig(h,13)^h>>>10)|0,a[e+96>>2]=E,s=((Q+D|0)+(Ig(s,25)^Ig(s,14)^s>>>3)|0)+(Ig(p,15)^Ig(p,13)^p>>>10)|0,a[e+92>>2]=s,_=(_+(c+(Ig(B,25)^Ig(B,14)^B>>>3)|0)|0)+(Ig(E,15)^Ig(E,13)^E>>>10)|0,a[e+104>>2]=_,t=(y+(t+(Ig(c,25)^Ig(c,14)^c>>>3)|0)|0)+(Ig(s,15)^Ig(s,13)^s>>>10)|0,a[e+100>>2]=t,c=(p+(r+(Ig(n,25)^Ig(n,14)^n>>>3)|0)|0)+(Ig(_,15)^Ig(_,13)^_>>>10)|0,a[e+112>>2]=c,t=(f+(B+(Ig(r,25)^Ig(r,14)^r>>>3)|0)|0)+(Ig(t,15)^Ig(t,13)^t>>>10)|0,a[e+108>>2]=t,F=e,N=(s+(g+(Ig(o,25)^Ig(o,14)^o>>>3)|0)|0)+(Ig(c,15)^Ig(c,13)^c>>>10)|0,a[F+120>>2]=N,g=(h+(n+(Ig(g,25)^Ig(g,14)^g>>>3)|0)|0)+(Ig(t,15)^Ig(t,13)^t>>>10)|0,a[e+116>>2]=g,F=e,N=(E+(o+(Ig(Q,25)^Ig(Q,14)^Q>>>3)|0)|0)+(Ig(g,15)^Ig(g,13)^g>>>10)|0,a[F+124>>2]=N;a[A>>2]=Q+a[A>>2],a[A+4>>2]=a[A+4>>2]+a[C+4>>2],a[A+8>>2]=a[A+8>>2]+a[C+8>>2],a[A+12>>2]=a[A+12>>2]+a[C+12>>2],a[A+16>>2]=a[A+16>>2]+a[C+16>>2],a[A+20>>2]=a[A+20>>2]+a[C+20>>2],a[A+24>>2]=a[A+24>>2]+a[C+24>>2],a[A+28>>2]=a[A+28>>2]+a[C+28>>2]}function b(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v,S,b,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0;n=e=n-288|0,c=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,E=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,y=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,_=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,s=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,p=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,f=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,Y=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,D=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,w=i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24,F=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,H=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,k=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,d=i[I+112|0]|i[I+113|0]<<8|i[I+114|0]<<16|i[I+115|0]<<24,M=i[I+96|0]|i[I+97|0]<<8|i[I+98|0]<<16|i[I+99|0]<<24,N=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,G=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,l=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,u=i[I+116|0]|i[I+117|0]<<8|i[I+118|0]<<16|i[I+119|0]<<24,r=i[I+100|0]|i[I+101|0]<<8|i[I+102|0]<<16|i[I+103|0]<<24,K=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,J=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,v=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,S=i[I+120|0]|i[I+121|0]<<8|i[I+122|0]<<16|i[I+123|0]<<24,t=i[I+104|0]|i[I+105|0]<<8|i[I+106|0]<<16|i[I+107|0]<<24,b=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,B=(Q=i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)^(o=i[I+108|0]|i[I+109|0]<<8|i[I+110|0]<<16|i[I+111|0]<<24)&(i[I+124|0]|i[I+125|0]<<8|i[I+126|0]<<16|i[I+127|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24)^(i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24),C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,J=K^t&S^J^v,C[A+24|0]=J,C[A+25|0]=J>>>8,C[A+26|0]=J>>>16,C[A+27|0]=J>>>24,G=N^r&u^G^l,C[A+20|0]=G,C[A+21|0]=G>>>8,C[A+22|0]=G>>>16,C[A+23|0]=G>>>24,H=F^M&d^H^k,C[A+16|0]=H,C[A+17|0]=H>>>8,C[A+18|0]=H>>>16,C[A+19|0]=H>>>24,Y=w&Q^Y^D^o,C[A+12|0]=Y,C[A+13|0]=Y>>>8,C[A+14|0]=Y>>>16,C[A+15|0]=Y>>>24,K=K&f^s^p^t,C[A+8|0]=K,C[A+9|0]=K>>>8,C[A+10|0]=K>>>16,C[A+11|0]=K>>>24,N=N&h^y^_^r,C[A+4|0]=N,C[A+5|0]=N>>>8,C[A+6|0]=N>>>16,C[A+7|0]=N>>>24,F=M^F&E^c^b,C[0|A]=F,C[A+1|0]=F>>>8,C[A+2|0]=F>>>16,C[A+3|0]=F>>>24,A=a[I+124>>2],a[e+280>>2]=a[I+120>>2],a[e+284>>2]=A,A=a[I+116>>2],a[e+272>>2]=a[I+112>>2],a[e+276>>2]=A,A=a[I+108>>2],a[e+248>>2]=a[I+104>>2],a[e+252>>2]=A,A=a[I+100>>2],a[e+240>>2]=a[I+96>>2],a[e+244>>2]=A,A=a[I+124>>2],a[e+232>>2]=a[I+120>>2],a[e+236>>2]=A,A=a[I+116>>2],a[e+224>>2]=a[I+112>>2],a[e+228>>2]=A,oA(g=e+256|0,e+240|0,e+224|0),A=a[e+268>>2],a[I+120>>2]=a[e+264>>2],a[I+124>>2]=A,A=a[e+260>>2],a[I+112>>2]=a[e+256>>2],a[I+116>>2]=A,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+108>>2],a[e+200>>2]=a[I+104>>2],a[e+204>>2]=A,A=a[I+100>>2],a[e+192>>2]=a[I+96>>2],a[e+196>>2]=A,oA(g,e+208|0,e+192|0),A=a[e+268>>2],a[I+104>>2]=a[e+264>>2],a[I+108>>2]=A,A=a[e+260>>2],a[I+96>>2]=a[e+256>>2],a[I+100>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,M=a[4+(A=I- -64|0)>>2],a[e+176>>2]=a[A>>2],a[e+180>>2]=M,M=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=M,M=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=M,oA(g,e+176|0,e+160|0),M=a[e+268>>2],a[I+88>>2]=a[e+264>>2],a[I+92>>2]=M,M=a[e+260>>2],a[I+80>>2]=a[e+256>>2],a[I+84>>2]=M,M=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=M,M=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=M,M=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=M,M=a[A+4>>2],a[e+128>>2]=a[A>>2],a[e+132>>2]=M,oA(g,e+144|0,e+128|0),M=a[e+268>>2],a[I+72>>2]=a[e+264>>2],a[I+76>>2]=M,M=a[e+260>>2],a[A>>2]=a[e+256>>2],a[A+4>>2]=M,M=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=M,M=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=M,M=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=M,M=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=M,oA(g,e+112|0,e+96|0),M=a[e+268>>2],a[I+56>>2]=a[e+264>>2],a[I+60>>2]=M,M=a[e+260>>2],a[I+48>>2]=a[e+256>>2],a[I+52>>2]=M,M=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=M,M=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=M,M=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=M,M=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=M,oA(g,e+80|0,e- -64|0),M=a[e+268>>2],a[I+40>>2]=a[e+264>>2],a[I+44>>2]=M,M=a[e+260>>2],a[I+32>>2]=a[e+256>>2],a[I+36>>2]=M,M=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=M,M=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=M,M=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=M,M=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=M,oA(g,e+48|0,e+32|0),M=a[e+268>>2],a[I+24>>2]=a[e+264>>2],a[I+28>>2]=M,M=a[e+260>>2],a[I+16>>2]=a[e+256>>2],a[I+20>>2]=M,M=a[e+284>>2],a[e+24>>2]=a[e+280>>2],a[e+28>>2]=M,M=a[e+276>>2],a[e+16>>2]=a[e+272>>2],a[e+20>>2]=M,M=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=M,M=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=M,oA(g,e+16|0,e),g=a[e+268>>2],a[I+8>>2]=a[e+264>>2],a[I+12>>2]=g,g=a[e+260>>2],a[I>>2]=a[e+256>>2],a[I+4>>2]=g,a[I+12>>2]=Y^(i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24),a[I+8>>2]=K^(i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24),a[I+4>>2]=N^(i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24),a[I>>2]=F^(i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24),a[A>>2]=H^(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24),a[I+68>>2]=G^(i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24),a[I+72>>2]=J^(i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24),a[I+76>>2]=B^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24),n=e+288|0}function M(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J=0;n=e=n-288|0,k=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,d=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,B=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,l=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,u=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,r=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,v=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,S=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,b=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,M=i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24,J=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,Q=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,F=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,N=i[I+112|0]|i[I+113|0]<<8|i[I+114|0]<<16|i[I+115|0]<<24,o=i[I+96|0]|i[I+97|0]<<8|i[I+98|0]<<16|i[I+99|0]<<24,c=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,E=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,K=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,Y=i[I+116|0]|i[I+117|0]<<8|i[I+118|0]<<16|i[I+119|0]<<24,y=i[I+100|0]|i[I+101|0]<<8|i[I+102|0]<<16|i[I+103|0]<<24,_=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,h=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,H=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,G=i[I+120|0]|i[I+121|0]<<8|i[I+122|0]<<16|i[I+123|0]<<24,s=i[I+104|0]|i[I+105|0]<<8|i[I+106|0]<<16|i[I+107|0]<<24,p=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(f=i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)^(D=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)^(w=i[I+108|0]|i[I+109|0]<<8|i[I+110|0]<<16|i[I+111|0]<<24)&(i[I+124|0]|i[I+125|0]<<8|i[I+126|0]<<16|i[I+127|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24),C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=s&G^H^h^_,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=y&Y^K^E^c,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=J^o&N^F^Q,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,g=M&f^b^t^w,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=_&S^v^r^s,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=c&u^l^B^y,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=J&d^k^p^o,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,A=a[I+124>>2],a[e+280>>2]=a[I+120>>2],a[e+284>>2]=A,A=a[I+116>>2],a[e+272>>2]=a[I+112>>2],a[e+276>>2]=A,A=a[I+108>>2],a[e+248>>2]=a[I+104>>2],a[e+252>>2]=A,A=a[I+100>>2],a[e+240>>2]=a[I+96>>2],a[e+244>>2]=A,A=a[I+124>>2],a[e+232>>2]=a[I+120>>2],a[e+236>>2]=A,A=a[I+116>>2],a[e+224>>2]=a[I+112>>2],a[e+228>>2]=A,oA(g=e+256|0,e+240|0,e+224|0),A=a[e+268>>2],a[I+120>>2]=a[e+264>>2],a[I+124>>2]=A,A=a[e+260>>2],a[I+112>>2]=a[e+256>>2],a[I+116>>2]=A,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+108>>2],a[e+200>>2]=a[I+104>>2],a[e+204>>2]=A,A=a[I+100>>2],a[e+192>>2]=a[I+96>>2],a[e+196>>2]=A,oA(g,e+208|0,e+192|0),A=a[e+268>>2],a[I+104>>2]=a[e+264>>2],a[I+108>>2]=A,A=a[e+260>>2],a[I+96>>2]=a[e+256>>2],a[I+100>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,J=a[4+(A=I- -64|0)>>2],a[e+176>>2]=a[A>>2],a[e+180>>2]=J,J=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=J,J=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=J,oA(g,e+176|0,e+160|0),J=a[e+268>>2],a[I+88>>2]=a[e+264>>2],a[I+92>>2]=J,J=a[e+260>>2],a[I+80>>2]=a[e+256>>2],a[I+84>>2]=J,J=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=J,J=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=J,J=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=J,J=a[A+4>>2],a[e+128>>2]=a[A>>2],a[e+132>>2]=J,oA(g,e+144|0,e+128|0),J=a[e+268>>2],a[I+72>>2]=a[e+264>>2],a[I+76>>2]=J,J=a[e+260>>2],a[A>>2]=a[e+256>>2],a[A+4>>2]=J,J=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=J,J=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=J,J=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=J,J=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=J,oA(g,e+112|0,e+96|0),J=a[e+268>>2],a[I+56>>2]=a[e+264>>2],a[I+60>>2]=J,J=a[e+260>>2],a[I+48>>2]=a[e+256>>2],a[I+52>>2]=J,J=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=J,J=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=J,J=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=J,J=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=J,oA(g,e+80|0,e- -64|0),J=a[e+268>>2],a[I+40>>2]=a[e+264>>2],a[I+44>>2]=J,J=a[e+260>>2],a[I+32>>2]=a[e+256>>2],a[I+36>>2]=J,J=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=J,J=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=J,J=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=J,J=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=J,oA(g,e+48|0,e+32|0),J=a[e+268>>2],a[I+24>>2]=a[e+264>>2],a[I+28>>2]=J,J=a[e+260>>2],a[I+16>>2]=a[e+256>>2],a[I+20>>2]=J,J=a[e+284>>2],a[e+24>>2]=a[e+280>>2],a[e+28>>2]=J,J=a[e+276>>2],a[e+16>>2]=a[e+272>>2],a[e+20>>2]=J,J=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=J,J=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=J,oA(g,e+16|0,e),g=a[e+268>>2],a[I+8>>2]=a[e+264>>2],a[I+12>>2]=g,g=a[e+260>>2],a[I>>2]=a[e+256>>2],a[I+4>>2]=g,a[I+12>>2]=(i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24)^t,a[I+8>>2]=(i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24)^r,a[I+4>>2]=(i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24)^B,a[I>>2]=(i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24)^p,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^Q,a[I+68>>2]=(i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24)^E,a[I+72>>2]=(i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24)^h,a[I+76>>2]=D^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24),n=e+288|0}function F(A,g,I,e,B){var r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0;for(n=r=n-224|0,p=(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^e>>>29,f=(i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24)^e<<3,y=(i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24)^I>>>29,h=(i[0|(t=B+48|0)]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24)^I<<3,Q=B+16|0,o=B+32|0,c=B- -64|0,E=B+80|0;I=a[E+12>>2],a[r+216>>2]=a[E+8>>2],a[r+220>>2]=I,I=a[E+4>>2],a[r+208>>2]=a[E>>2],a[r+212>>2]=I,I=a[c+12>>2],a[r+184>>2]=a[c+8>>2],a[r+188>>2]=I,I=a[c+4>>2],a[r+176>>2]=a[c>>2],a[r+180>>2]=I,I=a[E+12>>2],a[r+168>>2]=a[E+8>>2],a[r+172>>2]=I,I=a[E+4>>2],a[r+160>>2]=a[E>>2],a[r+164>>2]=I,oA(e=r+192|0,r+176|0,r+160|0),I=a[r+204>>2],a[E+8>>2]=a[r+200>>2],a[E+12>>2]=I,I=a[r+196>>2],a[E>>2]=a[r+192>>2],a[E+4>>2]=I,I=a[t+12>>2],a[r+152>>2]=a[t+8>>2],a[r+156>>2]=I,I=a[t+4>>2],a[r+144>>2]=a[t>>2],a[r+148>>2]=I,I=a[c+12>>2],a[r+136>>2]=a[c+8>>2],a[r+140>>2]=I,I=a[c+4>>2],a[r+128>>2]=a[c>>2],a[r+132>>2]=I,oA(e,r+144|0,r+128|0),I=a[r+204>>2],a[c+8>>2]=a[r+200>>2],a[c+12>>2]=I,I=a[r+196>>2],a[c>>2]=a[r+192>>2],a[c+4>>2]=I,I=a[o+12>>2],a[r+120>>2]=a[o+8>>2],a[r+124>>2]=I,I=a[o+4>>2],a[r+112>>2]=a[o>>2],a[r+116>>2]=I,I=a[t+12>>2],a[r+104>>2]=a[t+8>>2],a[r+108>>2]=I,I=a[t+4>>2],a[r+96>>2]=a[t>>2],a[r+100>>2]=I,oA(e,r+112|0,r+96|0),I=a[r+204>>2],a[t+8>>2]=a[r+200>>2],a[t+12>>2]=I,I=a[r+196>>2],a[t>>2]=a[r+192>>2],a[t+4>>2]=I,I=a[Q+12>>2],a[r+88>>2]=a[Q+8>>2],a[r+92>>2]=I,I=a[Q+4>>2],a[r+80>>2]=a[Q>>2],a[r+84>>2]=I,I=a[o+12>>2],a[r+72>>2]=a[o+8>>2],a[r+76>>2]=I,I=a[o+4>>2],a[r+64>>2]=a[o>>2],a[r+68>>2]=I,oA(e,r+80|0,r- -64|0),I=a[r+204>>2],a[o+8>>2]=a[r+200>>2],a[o+12>>2]=I,I=a[r+196>>2],a[o>>2]=a[r+192>>2],a[o+4>>2]=I,I=a[B+12>>2],a[r+56>>2]=a[B+8>>2],a[r+60>>2]=I,I=a[B+4>>2],a[r+48>>2]=a[B>>2],a[r+52>>2]=I,I=a[Q+12>>2],a[r+40>>2]=a[Q+8>>2],a[r+44>>2]=I,I=a[Q+4>>2],a[r+32>>2]=a[Q>>2],a[r+36>>2]=I,oA(e,r+48|0,r+32|0),I=a[r+204>>2],a[Q+8>>2]=a[r+200>>2],a[Q+12>>2]=I,I=a[r+196>>2],a[Q>>2]=a[r+192>>2],a[Q+4>>2]=I,I=a[r+220>>2],a[r+24>>2]=a[r+216>>2],a[r+28>>2]=I,I=a[r+212>>2],a[r+16>>2]=a[r+208>>2],a[r+20>>2]=I,I=a[B+12>>2],a[r+8>>2]=a[B+8>>2],a[r+12>>2]=I,I=a[B+4>>2],a[r>>2]=a[B>>2],a[r+4>>2]=I,oA(e,r+16|0,r),s=a[r+192>>2],e=a[r+196>>2],I=a[r+200>>2],D=p^a[r+204>>2],a[B+12>>2]=D,w=I^f,a[B+8>>2]=w,k=e^y,a[B+4>>2]=k,d=h^s,a[B>>2]=d,7!=(0|(_=_+1|0)););A:{g:{I:{if(I=g-16|0){if(16==(0|I))break I;break g}l=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,t=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,Q=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,o=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,c=i[0|(g=B- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,E=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,p=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,f=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,y=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,h=i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24,s=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,_=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,e=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,I=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,g=i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24,B=D^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24)^(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24),C[A+12|0]=B,C[A+13|0]=B>>>8,C[A+14|0]=B>>>16,C[A+15|0]=B>>>24,g=w^s^g^I^e^_,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=k^E^p^f^y^h,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=d^l^t^Q^o^c,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24;break A}h=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,s=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,_=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,e=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,I=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,g=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,y=D^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24),C[A+12|0]=y,C[A+13|0]=y>>>8,C[A+14|0]=y>>>16,C[A+15|0]=y>>>24,g=w^g^I,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=k^e^_,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=d^h^s,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,p=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,f=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,y=i[0|(g=B- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,h=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,s=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,_=i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24,e=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,I=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,g=i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24,B=(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24),C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,g=e^g^I,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=h^s^_,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=p^y^f,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24;break A}VA(A,0,g)}n=r+224|0}function N(A,g,I,C){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v,S,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0;n=e=n-320|0,a[e+280>>2]=0,a[e+284>>2]=0,a[e+272>>2]=0,a[e+276>>2]=0,a[e+264>>2]=0,a[e+268>>2]=0,a[e+256>>2]=0,a[e+260>>2]=0,OA(M=e+256|0,g,I),G=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,b=i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24,t=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,Q=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,o=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,c=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24,E=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,y=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24,g=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,_=i[C+84|0]|i[C+85|0]<<8|i[C+86|0]<<16|i[C+87|0]<<24,h=i[C+116|0]|i[C+117|0]<<8|i[C+118|0]<<16|i[C+119|0]<<24,F=i[C+100|0]|i[C+101|0]<<8|i[C+102|0]<<16|i[C+103|0]<<24,N=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24,s=i[C+92|0]|i[C+93|0]<<8|i[C+94|0]<<16|i[C+95|0]<<24,p=i[C+124|0]|i[C+125|0]<<8|i[C+126|0]<<16|i[C+127|0]<<24,K=i[C+108|0]|i[C+109|0]<<8|i[C+110|0]<<16|i[C+111|0]<<24,Y=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24,f=i[C+80|0]|i[C+81|0]<<8|i[C+82|0]<<16|i[C+83|0]<<24,D=i[C+112|0]|i[C+113|0]<<8|i[C+114|0]<<16|i[C+115|0]<<24,H=i[C+96|0]|i[C+97|0]<<8|i[C+98|0]<<16|i[C+99|0]<<24,w=a[e+272>>2],k=a[e+256>>2],d=a[e+260>>2],l=a[e+264>>2],u=a[e+268>>2],v=a[e+276>>2],S=a[e+284>>2],B=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,r=i[C+104|0]|i[C+105|0]<<8|i[C+106|0]<<16|i[C+107|0]<<24,a[e+280>>2]=B^r&(i[C+120|0]|i[C+121|0]<<8|i[C+122|0]<<16|i[C+123|0]<<24)^a[e+280>>2]^(i[C+88|0]|i[C+89|0]<<8|i[C+90|0]<<16|i[C+91|0]<<24),a[e+272>>2]=Y^H&D^f^w,a[e+284>>2]=N^K&p^s^S,a[e+276>>2]=g^F&h^_^v,a[e+268>>2]=K^N&y^E^u,a[e+264>>2]=c&B^o^l^r,a[e+260>>2]=F^g&Q^t^d,a[e+256>>2]=H^b&Y^G^k,VA(I+M|0,0,32-I|0),OA(A,M,I),I=a[e+280>>2],M=a[e+272>>2],F=a[e+284>>2],N=a[e+276>>2],K=a[e+256>>2],Y=a[e+260>>2],H=a[e+264>>2],G=a[e+268>>2],A=a[C+124>>2],a[e+312>>2]=a[C+120>>2],a[e+316>>2]=A,A=a[C+116>>2],a[e+304>>2]=a[C+112>>2],a[e+308>>2]=A,A=a[C+108>>2],a[e+248>>2]=a[C+104>>2],a[e+252>>2]=A,A=a[C+100>>2],a[e+240>>2]=a[C+96>>2],a[e+244>>2]=A,A=a[C+124>>2],a[e+232>>2]=a[C+120>>2],a[e+236>>2]=A,A=a[C+116>>2],a[e+224>>2]=a[C+112>>2],a[e+228>>2]=A,oA(g=e+288|0,e+240|0,e+224|0),A=a[e+300>>2],a[C+120>>2]=a[e+296>>2],a[C+124>>2]=A,A=a[e+292>>2],a[C+112>>2]=a[e+288>>2],a[C+116>>2]=A,A=a[C+92>>2],a[e+216>>2]=a[C+88>>2],a[e+220>>2]=A,A=a[C+84>>2],a[e+208>>2]=a[C+80>>2],a[e+212>>2]=A,A=a[C+108>>2],a[e+200>>2]=a[C+104>>2],a[e+204>>2]=A,A=a[C+100>>2],a[e+192>>2]=a[C+96>>2],a[e+196>>2]=A,oA(g,e+208|0,e+192|0),A=a[e+300>>2],a[C+104>>2]=a[e+296>>2],a[C+108>>2]=A,A=a[e+292>>2],a[C+96>>2]=a[e+288>>2],a[C+100>>2]=A,A=a[C+76>>2],a[e+184>>2]=a[C+72>>2],a[e+188>>2]=A,b=a[4+(A=C- -64|0)>>2],a[e+176>>2]=a[A>>2],a[e+180>>2]=b,b=a[C+92>>2],a[e+168>>2]=a[C+88>>2],a[e+172>>2]=b,b=a[C+84>>2],a[e+160>>2]=a[C+80>>2],a[e+164>>2]=b,oA(g,e+176|0,e+160|0),b=a[e+300>>2],a[C+88>>2]=a[e+296>>2],a[C+92>>2]=b,b=a[e+292>>2],a[C+80>>2]=a[e+288>>2],a[C+84>>2]=b,b=a[C+60>>2],a[e+152>>2]=a[C+56>>2],a[e+156>>2]=b,b=a[C+52>>2],a[e+144>>2]=a[C+48>>2],a[e+148>>2]=b,b=a[C+76>>2],a[e+136>>2]=a[C+72>>2],a[e+140>>2]=b,b=a[A+4>>2],a[e+128>>2]=a[A>>2],a[e+132>>2]=b,oA(g,e+144|0,e+128|0),b=a[e+300>>2],a[C+72>>2]=a[e+296>>2],a[C+76>>2]=b,b=a[e+292>>2],a[A>>2]=a[e+288>>2],a[A+4>>2]=b,b=a[C+44>>2],a[e+120>>2]=a[C+40>>2],a[e+124>>2]=b,b=a[C+36>>2],a[e+112>>2]=a[C+32>>2],a[e+116>>2]=b,b=a[C+60>>2],a[e+104>>2]=a[C+56>>2],a[e+108>>2]=b,b=a[C+52>>2],a[e+96>>2]=a[C+48>>2],a[e+100>>2]=b,oA(g,e+112|0,e+96|0),b=a[e+300>>2],a[C+56>>2]=a[e+296>>2],a[C+60>>2]=b,b=a[e+292>>2],a[C+48>>2]=a[e+288>>2],a[C+52>>2]=b,b=a[C+28>>2],a[e+88>>2]=a[C+24>>2],a[e+92>>2]=b,b=a[C+20>>2],a[e+80>>2]=a[C+16>>2],a[e+84>>2]=b,b=a[C+44>>2],a[e+72>>2]=a[C+40>>2],a[e+76>>2]=b,b=a[C+36>>2],a[e+64>>2]=a[C+32>>2],a[e+68>>2]=b,oA(g,e+80|0,e- -64|0),b=a[e+300>>2],a[C+40>>2]=a[e+296>>2],a[C+44>>2]=b,b=a[e+292>>2],a[C+32>>2]=a[e+288>>2],a[C+36>>2]=b,b=a[C+12>>2],a[e+56>>2]=a[C+8>>2],a[e+60>>2]=b,b=a[C+4>>2],a[e+48>>2]=a[C>>2],a[e+52>>2]=b,b=a[C+28>>2],a[e+40>>2]=a[C+24>>2],a[e+44>>2]=b,b=a[C+20>>2],a[e+32>>2]=a[C+16>>2],a[e+36>>2]=b,oA(g,e+48|0,e+32|0),b=a[e+300>>2],a[C+24>>2]=a[e+296>>2],a[C+28>>2]=b,b=a[e+292>>2],a[C+16>>2]=a[e+288>>2],a[C+20>>2]=b,b=a[e+316>>2],a[e+24>>2]=a[e+312>>2],a[e+28>>2]=b,b=a[e+308>>2],a[e+16>>2]=a[e+304>>2],a[e+20>>2]=b,b=a[C+12>>2],a[e+8>>2]=a[C+8>>2],a[e+12>>2]=b,b=a[C+4>>2],a[e>>2]=a[C>>2],a[e+4>>2]=b,oA(g,e+16|0,e),g=a[e+300>>2],a[C+8>>2]=a[e+296>>2],a[C+12>>2]=g,g=a[e+292>>2],a[C>>2]=a[e+288>>2],a[C+4>>2]=g,a[C+12>>2]=G^(i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24),a[C+8>>2]=H^(i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24),a[C+4>>2]=Y^(i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24),a[C>>2]=K^(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),a[A>>2]=M^(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24),a[C+68>>2]=N^(i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24),a[C+72>>2]=I^(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24),a[C+76>>2]=F^(i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24),n=e+320|0}function K(A,g){var I,C,e,B,i,r,Q,o,c,E,y,_,n,s,p,f,D,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0;J=GA(C=(f=a[g+12>>2])<<1,r=C>>31,f,l=f>>31),x=h,U=(q=GA(P=a[g+16>>2],Q=P>>31,o=(m=a[g+8>>2])<<1,_=o>>31))+J|0,J=h+x|0,J=U>>>0<q>>>0?J+1|0:J,x=(z=GA(O=(c=a[g+20>>2])<<1,n=O>>31,q=(R=a[g+4>>2])<<1,e=q>>31))+U|0,U=h+J|0,U=x>>>0<z>>>0?U+1|0:U,L=GA(I=a[g+24>>2],E=I>>31,z=(W=a[g>>2])<<1,B=z>>31),J=h+U|0,J=(x=L+x|0)>>>0<L>>>0?J+1|0:J,U=x,s=a[g+32>>2],x=GA(j=t(s,19),y=j>>31,s,w=s>>31),J=h+J|0,J=(U=U+x|0)>>>0<x>>>0?J+1|0:J,M=a[g+36>>2],x=GA(L=t(M,38),i=L>>31,k=(p=a[g+28>>2])<<1,u=k>>31),g=h+J|0,Z=U=x+U|0,x=U>>>0<x>>>0?g+1|0:g,g=GA(q,e,P,Q),J=h,U=GA(o,_,f,l),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,T=GA(c,d=c>>31,z,B),U=h+J|0,U=(g=T+g|0)>>>0<T>>>0?U+1|0:U,T=GA(j,y,k,u),J=h+U|0,J=(g=T+g|0)>>>0<T>>>0?J+1|0:J,U=GA(L,i,I,E),J=h+J|0,CA=g=U+g|0,X=g>>>0<U>>>0?J+1|0:J,J=GA(q,e,C,r),U=h,v=g=m,m=GA(g,V=g>>31,g,V),g=h+U|0,g=(J=m+J|0)>>>0<m>>>0?g+1|0:g,U=(m=GA(z,B,P,Q))+J|0,J=h+g|0,J=U>>>0<m>>>0?J+1|0:J,g=(m=GA(T=t(p,38),D=T>>31,p,S=p>>31))+U|0,U=h+J|0,U=g>>>0<m>>>0?U+1|0:U,g=(J=g)+(m=GA(j,y,g=I<<1,g>>31))|0,J=h+U|0,J=g>>>0<m>>>0?J+1|0:J,U=g,g=GA(L,i,O,n),J=h+J|0,F=U=U+g|0,N=J=g>>>0>U>>>0?J+1|0:J,g=J,K=U=U+33554432|0,Y=g=U>>>0<33554432?g+1|0:g,J=(J=g>>26)+X|0,CA=g=(U=(67108863&g)<<6|U>>>26)+CA|0,J=g>>>0<U>>>0?J+1|0:J,H=g=g+16777216|0,J=(J=(U=g>>>0<16777216?J+1|0:J)>>25)+x|0,g=(g=(33554431&U)<<7|g>>>25)>>>0>(U=g+Z|0)>>>0?J+1|0:J,Z=J=U+33554432|0,m=g=J>>>0<33554432?g+1|0:g,a[A+24>>2]=U-(-67108864&J),g=GA(z,B,v,V),J=h,x=GA(q,e,R,$=R>>31),U=h+J|0,U=(g=x+g|0)>>>0<x>>>0?U+1|0:U,X=GA(x=t(I,19),IA=x>>31,I,E),J=h+U|0,J=(g=X+g|0)>>>0<X>>>0?J+1|0:J,U=(X=GA(O,n,T,D))+g|0,g=h+J|0,g=U>>>0<X>>>0?g+1|0:g,AA=GA(j,y,X=P<<1,b=X>>31),J=h+g|0,J=(U=AA+U|0)>>>0<AA>>>0?J+1|0:J,g=U,U=GA(L,i,C,r),J=h+J|0,gA=g=g+U|0,AA=g>>>0<U>>>0?J+1|0:J,g=GA(O,n,x,IA),J=h,R=GA(z,B,R,$),U=h+J|0,U=(g=R+g|0)>>>0<R>>>0?U+1|0:U,R=GA(P,Q,T,D),J=h+U|0,J=(g=R+g|0)>>>0<R>>>0?J+1|0:J,U=(R=GA(j,y,C,r))+g|0,g=h+J|0,g=U>>>0<R>>>0?g+1|0:g,R=GA(L,i,v,V),J=h+g|0,eA=U=R+U|0,$=U>>>0<R>>>0?J+1|0:J,U=GA(g=t(c,38),g>>31,c,d),R=h,g=W,W=U,U=GA(g,J=g>>31,g,J),J=h+R|0,J=(g=W+U|0)>>>0<U>>>0?J+1|0:J,x=GA(x,IA,X,b),U=h+J|0,U=(g=x+g|0)>>>0<x>>>0?U+1|0:U,x=GA(C,r,T,D),J=h+U|0,J=(g=x+g|0)>>>0<x>>>0?J+1|0:J,U=(x=GA(j,y,o,_))+g|0,g=h+J|0,g=U>>>0<x>>>0?g+1|0:g,x=GA(q,e,L,i),J=h+g|0,R=U=x+U|0,W=J=U>>>0<x>>>0?J+1|0:J,IA=U=U+33554432|0,G=J=U>>>0<33554432?J+1|0:J,g=J>>26,J=(67108863&J)<<6|U>>>26,U=g+$|0,$=x=J+eA|0,J=J>>>0>x>>>0?U+1|0:U,eA=U=x+16777216|0,x=(33554431&(J=U>>>0<16777216?J+1|0:J))<<7|U>>>25,J=(J>>25)+AA|0,J=(U=x+gA|0)>>>0<x>>>0?J+1|0:J,AA=g=U+33554432|0,x=J=g>>>0<33554432?J+1|0:J,a[A+8>>2]=U-(-67108864&g),g=GA(o,_,c,d),J=h,U=GA(P,Q,C,r),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=GA(q,e,I,E),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=GA(z,B,p,S),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,gA=(U=GA(L,i,s,w))+g|0,g=h+J|0,U=(J=m>>26)+(U=U>>>0>gA>>>0?g+1|0:g)|0,Z=g=(m=(67108863&m)<<6|Z>>>26)+gA|0,J=g>>>0<m>>>0?U+1|0:U,gA=g=g+16777216|0,m=J=g>>>0<16777216?J+1|0:J,a[A+28>>2]=Z-(-33554432&g),g=GA(z,B,f,l),U=h,J=(V=GA(q,e,v,V))+g|0,g=h+U|0,g=J>>>0<V>>>0?g+1|0:g,J=(T=GA(I,E,T,D))+J|0,U=h+g|0,g=(j=GA(j,y,O,n))+J|0,J=h+(J>>>0<T>>>0?U+1|0:U)|0,J=g>>>0<j>>>0?J+1|0:J,U=GA(L,i,P,Q),J=h+J|0,J=(J=(g=U+g|0)>>>0<U>>>0?J+1|0:J)+(U=x>>26)|0,g=(U=x=(Z=g)+(g=(67108863&x)<<6|AA>>>26)|0)>>>0<g>>>0?J+1|0:J,j=J=U+16777216|0,x=g=J>>>0<16777216?g+1|0:g,a[A+12>>2]=U-(-33554432&J),g=GA(I,E,o,_),J=h,U=GA(P,Q,P,Q),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=GA(C,r,O,n),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=(P=GA(q,e,k,u))+g|0,g=h+J|0,g=U>>>0<P>>>0?g+1|0:g,J=(P=GA(z,B,s,w))+U|0,U=h+g|0,U=J>>>0<P>>>0?U+1|0:U,g=(P=GA(g=L,i,L=M,O=L>>31))+J|0,J=h+U|0,J=g>>>0<P>>>0?J+1|0:J,U=g,J=(g=m>>25)+J|0,J=(U=U+(m=(33554431&m)<<7|gA>>>25)|0)>>>0<m>>>0?J+1|0:J,P=g=U+33554432|0,m=J=g>>>0<33554432?J+1|0:J,a[A+32>>2]=U-(-67108864&g),J=x>>25,U=(x=(33554431&x)<<7|j>>>25)+(F-(g=-67108864&K)|0)|0,g=J+(N-((g>>>0>F>>>0)+Y|0)|0)|0,g=U>>>0<x>>>0?g+1|0:g,x=U,g=((67108863&(J=(U=U+33554432|0)>>>0<33554432?g+1|0:g))<<6|U>>>26)+(T=CA-(-33554432&H)|0)|0,a[A+20>>2]=g,a[A+16>>2]=x-(-67108864&U),g=GA(C,r,I,E),U=h,J=(x=GA(c,d,X,b))+g|0,g=h+U|0,g=J>>>0<x>>>0?g+1|0:g,U=(x=GA(o,_,p,S))+J|0,J=h+g|0,J=U>>>0<x>>>0?J+1|0:J,g=(x=GA(q,e,s,w))+U|0,U=h+J|0,U=g>>>0<x>>>0?U+1|0:U,x=(J=g)+(g=GA(z,B,L,O))|0,J=h+U|0,J=(g=g>>>0>x>>>0?J+1|0:J)+(J=m>>26)|0,g=(U=(m=(67108863&m)<<6|P>>>26)+x|0)>>>0<m>>>0?J+1|0:J,g=(J=U+16777216|0)>>>0<16777216?g+1|0:g,a[A+36>>2]=U-(-33554432&J),m=$-(-33554432&eA)|0,x=R-(U=-67108864&IA)|0,q=W-((U>>>0>R>>>0)+G|0)|0,g=GA((33554431&g)<<7|J>>>25,g>>25,19,0),J=h+q|0,g=g>>>0>(U=g+x|0)>>>0?J+1|0:J,g=((67108863&(g=(J=U+33554432|0)>>>0<33554432?g+1|0:g))<<6|J>>>26)+m|0,a[A+4>>2]=g,a[A>>2]=U-(-67108864&J)}function Y(A,g){var I,C,e,B,r,t,Q,o,c,E,y=0,_=0,h=0;n=I=n-416|0,C=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,e=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,B=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,r=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,h=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,t=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,Q=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,o=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,A=a[g+92>>2],a[I+408>>2]=a[g+88>>2],a[I+412>>2]=A,A=a[g+84>>2],a[I+400>>2]=a[g+80>>2],a[I+404>>2]=A,A=a[g+76>>2],a[I+376>>2]=a[g+72>>2],a[I+380>>2]=A,y=a[4+(A=_=g- -64|0)>>2],a[I+368>>2]=a[A>>2],a[I+372>>2]=y,A=a[g+92>>2],a[I+360>>2]=a[g+88>>2],a[I+364>>2]=A,A=a[g+84>>2],a[I+352>>2]=a[g+80>>2],a[I+356>>2]=A,oA(A=I+384|0,I+368|0,I+352|0),y=a[I+396>>2],a[g+88>>2]=a[I+392>>2],a[g+92>>2]=y,y=a[I+388>>2],a[g+80>>2]=a[I+384>>2],a[g+84>>2]=y,y=a[g+60>>2],a[I+344>>2]=a[g+56>>2],a[I+348>>2]=y,y=a[g+52>>2],a[I+336>>2]=a[g+48>>2],a[I+340>>2]=y,y=a[g+76>>2],a[I+328>>2]=a[g+72>>2],a[I+332>>2]=y,y=a[_+4>>2],a[I+320>>2]=a[_>>2],a[I+324>>2]=y,oA(A,I+336|0,I+320|0),y=a[I+396>>2],a[g+72>>2]=a[I+392>>2],a[g+76>>2]=y,y=a[I+388>>2],a[_>>2]=a[I+384>>2],a[_+4>>2]=y,y=a[g+44>>2],a[I+312>>2]=a[g+40>>2],a[I+316>>2]=y,y=a[g+36>>2],a[I+304>>2]=a[g+32>>2],a[I+308>>2]=y,y=a[g+60>>2],a[I+296>>2]=a[g+56>>2],a[I+300>>2]=y,y=a[g+52>>2],a[I+288>>2]=a[g+48>>2],a[I+292>>2]=y,oA(A,I+304|0,I+288|0),y=a[I+396>>2],a[g+56>>2]=a[I+392>>2],a[g+60>>2]=y,y=a[I+388>>2],a[g+48>>2]=a[I+384>>2],a[g+52>>2]=y,y=a[g+28>>2],a[I+280>>2]=a[g+24>>2],a[I+284>>2]=y,y=a[g+20>>2],a[I+272>>2]=a[g+16>>2],a[I+276>>2]=y,y=a[g+44>>2],a[I+264>>2]=a[g+40>>2],a[I+268>>2]=y,y=a[g+36>>2],a[I+256>>2]=a[g+32>>2],a[I+260>>2]=y,oA(A,I+272|0,I+256|0),y=a[I+396>>2],a[g+40>>2]=a[I+392>>2],a[g+44>>2]=y,y=a[I+388>>2],a[g+32>>2]=a[I+384>>2],a[g+36>>2]=y,y=a[g+12>>2],a[I+248>>2]=a[g+8>>2],a[I+252>>2]=y,y=a[g+4>>2],a[I+240>>2]=a[g>>2],a[I+244>>2]=y,y=a[g+28>>2],a[I+232>>2]=a[g+24>>2],a[I+236>>2]=y,y=a[g+20>>2],a[I+224>>2]=a[g+16>>2],a[I+228>>2]=y,oA(A,I+240|0,I+224|0),y=a[I+396>>2],a[g+24>>2]=a[I+392>>2],a[g+28>>2]=y,y=a[I+388>>2],a[g+16>>2]=a[I+384>>2],a[g+20>>2]=y,y=a[I+412>>2],a[I+216>>2]=a[I+408>>2],a[I+220>>2]=y,y=a[I+404>>2],a[I+208>>2]=a[I+400>>2],a[I+212>>2]=y,y=a[g+12>>2],a[I+200>>2]=a[g+8>>2],a[I+204>>2]=y,y=a[g+4>>2],a[I+192>>2]=a[g>>2],a[I+196>>2]=y,oA(A,I+208|0,I+192|0),y=a[I+384>>2],c=a[I+388>>2],E=a[I+392>>2],a[g+12>>2]=a[I+396>>2]^Q,a[g+8>>2]=t^E,a[g+4>>2]=h^c,a[g>>2]=y^o,h=a[g+92>>2],a[I+408>>2]=a[g+88>>2],a[I+412>>2]=h,h=a[g+84>>2],a[I+400>>2]=a[g+80>>2],a[I+404>>2]=h,h=a[g+76>>2],a[I+184>>2]=a[g+72>>2],a[I+188>>2]=h,h=a[_+4>>2],a[I+176>>2]=a[_>>2],a[I+180>>2]=h,h=a[g+92>>2],a[I+168>>2]=a[g+88>>2],a[I+172>>2]=h,h=a[g+84>>2],a[I+160>>2]=a[g+80>>2],a[I+164>>2]=h,oA(A,I+176|0,I+160|0),h=a[I+396>>2],a[g+88>>2]=a[I+392>>2],a[g+92>>2]=h,h=a[I+388>>2],a[g+80>>2]=a[I+384>>2],a[g+84>>2]=h,h=a[g+60>>2],a[I+152>>2]=a[g+56>>2],a[I+156>>2]=h,h=a[g+52>>2],a[I+144>>2]=a[g+48>>2],a[I+148>>2]=h,h=a[g+76>>2],a[I+136>>2]=a[g+72>>2],a[I+140>>2]=h,h=a[_+4>>2],a[I+128>>2]=a[_>>2],a[I+132>>2]=h,oA(A,I+144|0,I+128|0),h=a[I+396>>2],a[g+72>>2]=a[I+392>>2],a[g+76>>2]=h,h=a[I+388>>2],a[_>>2]=a[I+384>>2],a[_+4>>2]=h,_=a[g+44>>2],a[I+120>>2]=a[g+40>>2],a[I+124>>2]=_,_=a[g+36>>2],a[I+112>>2]=a[g+32>>2],a[I+116>>2]=_,_=a[g+60>>2],a[I+104>>2]=a[g+56>>2],a[I+108>>2]=_,_=a[g+52>>2],a[I+96>>2]=a[g+48>>2],a[I+100>>2]=_,oA(A,I+112|0,I+96|0),_=a[I+396>>2],a[g+56>>2]=a[I+392>>2],a[g+60>>2]=_,_=a[I+388>>2],a[g+48>>2]=a[I+384>>2],a[g+52>>2]=_,_=a[g+28>>2],a[I+88>>2]=a[g+24>>2],a[I+92>>2]=_,_=a[g+20>>2],a[I+80>>2]=a[g+16>>2],a[I+84>>2]=_,_=a[g+44>>2],a[I+72>>2]=a[g+40>>2],a[I+76>>2]=_,_=a[g+36>>2],a[I+64>>2]=a[g+32>>2],a[I+68>>2]=_,oA(A,I+80|0,I- -64|0),_=a[I+396>>2],a[g+40>>2]=a[I+392>>2],a[g+44>>2]=_,_=a[I+388>>2],a[g+32>>2]=a[I+384>>2],a[g+36>>2]=_,_=a[g+12>>2],a[I+56>>2]=a[g+8>>2],a[I+60>>2]=_,_=a[g+4>>2],a[I+48>>2]=a[g>>2],a[I+52>>2]=_,_=a[g+28>>2],a[I+40>>2]=a[g+24>>2],a[I+44>>2]=_,_=a[g+20>>2],a[I+32>>2]=a[g+16>>2],a[I+36>>2]=_,oA(A,I+48|0,I+32|0),_=a[I+396>>2],a[g+24>>2]=a[I+392>>2],a[g+28>>2]=_,_=a[I+388>>2],a[g+16>>2]=a[I+384>>2],a[g+20>>2]=_,_=a[I+412>>2],a[I+24>>2]=a[I+408>>2],a[I+28>>2]=_,_=a[I+404>>2],a[I+16>>2]=a[I+400>>2],a[I+20>>2]=_,_=a[g+12>>2],a[I+8>>2]=a[g+8>>2],a[I+12>>2]=_,_=a[g+4>>2],a[I>>2]=a[g>>2],a[I+4>>2]=_,oA(A,I+16|0,I),A=a[I+384>>2],_=a[I+388>>2],h=a[I+392>>2],a[g+12>>2]=a[I+396>>2]^r,a[g+8>>2]=h^B,a[g+4>>2]=_^e,a[g>>2]=A^C,n=I+416|0}function H(A,g,I){var C,e,B,r,t,Q,o,c,E,y,_,h,s,p,f=0,D=0,w=0;for(n=C=n-288|0,_=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,s=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,o=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,c=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,E=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,p=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=I+112|0,A=33620224^(y=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24),a[g>>2]=A,a[(t=I+96|0)>>2]=1427652059^y,a[(Q=I+80|0)>>2]=A,D=y^p,a[(A=I- -64|0)>>2]=D,a[I+56>>2]=1110511904,a[I+60>>2]=-584534669,a[(e=I+48|0)>>2]=1427652059,a[e+4>>2]=-248528275,a[I+40>>2]=1496785429,a[I+44>>2]=1652156816,a[(B=I+32|0)>>2]=33620224,a[B+4>>2]=218629379,a[I+24>>2]=1110511904,a[I+28>>2]=-584534669,a[(r=I+16|0)>>2]=1427652059,a[r+4>>2]=-248528275,a[I>>2]=D,D=1652156816^E,a[I+124>>2]=D,w=1496785429^c,a[I+120>>2]=w,f=218629379^o,a[I+116>>2]=f,a[I+108>>2]=-584534669^E,a[I+104>>2]=1110511904^c,a[I+100>>2]=-248528275^o,a[I+92>>2]=D,a[I+88>>2]=w,a[I+84>>2]=f,D=E^s,a[I+76>>2]=D,w=c^h,a[I+72>>2]=w,f=o^_,a[I+68>>2]=f,a[I+12>>2]=D,a[I+8>>2]=w,a[I+4>>2]=f,w=0;D=a[g+12>>2],a[C+280>>2]=a[g+8>>2],a[C+284>>2]=D,D=a[g+4>>2],a[C+272>>2]=a[g>>2],a[C+276>>2]=D,D=a[t+12>>2],a[C+248>>2]=a[t+8>>2],a[C+252>>2]=D,D=a[t+4>>2],a[C+240>>2]=a[t>>2],a[C+244>>2]=D,D=a[g+12>>2],a[C+232>>2]=a[g+8>>2],a[C+236>>2]=D,D=a[g+4>>2],a[C+224>>2]=a[g>>2],a[C+228>>2]=D,oA(D=C+256|0,C+240|0,C+224|0),f=a[C+268>>2],a[g+8>>2]=a[C+264>>2],a[g+12>>2]=f,f=a[C+260>>2],a[g>>2]=a[C+256>>2],a[g+4>>2]=f,f=a[Q+12>>2],a[C+216>>2]=a[Q+8>>2],a[C+220>>2]=f,f=a[Q+4>>2],a[C+208>>2]=a[Q>>2],a[C+212>>2]=f,f=a[t+12>>2],a[C+200>>2]=a[t+8>>2],a[C+204>>2]=f,f=a[t+4>>2],a[C+192>>2]=a[t>>2],a[C+196>>2]=f,oA(D,C+208|0,C+192|0),f=a[C+268>>2],a[t+8>>2]=a[C+264>>2],a[t+12>>2]=f,f=a[C+260>>2],a[t>>2]=a[C+256>>2],a[t+4>>2]=f,f=a[A+12>>2],a[C+184>>2]=a[A+8>>2],a[C+188>>2]=f,f=a[A+4>>2],a[C+176>>2]=a[A>>2],a[C+180>>2]=f,f=a[Q+12>>2],a[C+168>>2]=a[Q+8>>2],a[C+172>>2]=f,f=a[Q+4>>2],a[C+160>>2]=a[Q>>2],a[C+164>>2]=f,oA(D,C+176|0,C+160|0),f=a[C+268>>2],a[Q+8>>2]=a[C+264>>2],a[Q+12>>2]=f,f=a[C+260>>2],a[Q>>2]=a[C+256>>2],a[Q+4>>2]=f,f=a[e+12>>2],a[C+152>>2]=a[e+8>>2],a[C+156>>2]=f,f=a[e+4>>2],a[C+144>>2]=a[e>>2],a[C+148>>2]=f,f=a[A+12>>2],a[C+136>>2]=a[A+8>>2],a[C+140>>2]=f,f=a[A+4>>2],a[C+128>>2]=a[A>>2],a[C+132>>2]=f,oA(D,C+144|0,C+128|0),f=a[C+268>>2],a[A+8>>2]=a[C+264>>2],a[A+12>>2]=f,f=a[C+260>>2],a[A>>2]=a[C+256>>2],a[A+4>>2]=f,f=a[B+12>>2],a[C+120>>2]=a[B+8>>2],a[C+124>>2]=f,f=a[B+4>>2],a[C+112>>2]=a[B>>2],a[C+116>>2]=f,f=a[e+12>>2],a[C+104>>2]=a[e+8>>2],a[C+108>>2]=f,f=a[e+4>>2],a[C+96>>2]=a[e>>2],a[C+100>>2]=f,oA(D,C+112|0,C+96|0),f=a[C+268>>2],a[e+8>>2]=a[C+264>>2],a[e+12>>2]=f,f=a[C+260>>2],a[e>>2]=a[C+256>>2],a[e+4>>2]=f,f=a[r+12>>2],a[C+88>>2]=a[r+8>>2],a[C+92>>2]=f,f=a[r+4>>2],a[C+80>>2]=a[r>>2],a[C+84>>2]=f,f=a[B+12>>2],a[C+72>>2]=a[B+8>>2],a[C+76>>2]=f,f=a[B+4>>2],a[C+64>>2]=a[B>>2],a[C+68>>2]=f,oA(D,C+80|0,C- -64|0),f=a[C+268>>2],a[B+8>>2]=a[C+264>>2],a[B+12>>2]=f,f=a[C+260>>2],a[B>>2]=a[C+256>>2],a[B+4>>2]=f,f=a[I+12>>2],a[C+56>>2]=a[I+8>>2],a[C+60>>2]=f,f=a[I+4>>2],a[C+48>>2]=a[I>>2],a[C+52>>2]=f,f=a[r+12>>2],a[C+40>>2]=a[r+8>>2],a[C+44>>2]=f,f=a[r+4>>2],a[C+32>>2]=a[r>>2],a[C+36>>2]=f,oA(D,C+48|0,C+32|0),f=a[C+268>>2],a[r+8>>2]=a[C+264>>2],a[r+12>>2]=f,f=a[C+260>>2],a[r>>2]=a[C+256>>2],a[r+4>>2]=f,f=a[C+284>>2],a[C+24>>2]=a[C+280>>2],a[C+28>>2]=f,f=a[C+276>>2],a[C+16>>2]=a[C+272>>2],a[C+20>>2]=f,f=a[I+12>>2],a[C+8>>2]=a[I+8>>2],a[C+12>>2]=f,f=a[I+4>>2],a[C>>2]=a[I>>2],a[C+4>>2]=f,oA(D,C+16|0,C),D=a[C+268>>2],a[I+8>>2]=a[C+264>>2],a[I+12>>2]=D,D=a[C+260>>2],a[I>>2]=a[C+256>>2],a[I+4>>2]=D,a[I+12>>2]=(i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24)^s,a[I+8>>2]=(i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24)^h,a[I+4>>2]=(i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24)^_,a[I>>2]=(i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24)^p,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^y,a[I+68>>2]=(i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24)^o,a[I+72>>2]=(i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24)^c,a[I+76>>2]=(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24)^E,10!=(0|(w=w+1|0)););n=C+288|0}function G(A,g,I,e,B){var r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0;for(r=n+-64|0,t=a[A+60>>2],Q=a[A+56>>2],L=a[A+52>>2],R=a[A+48>>2],o=a[A+44>>2],c=a[A+40>>2],E=a[A+36>>2],y=a[A+32>>2],_=a[A+28>>2],h=a[A+24>>2],s=a[A+20>>2],p=a[A+16>>2],f=a[A+12>>2],D=a[A+8>>2],w=a[A+4>>2],k=a[A>>2];;){if(!B&e>>>0>63|B)d=I;else{if(a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,a[r+24>>2]=0,a[r+28>>2]=0,a[r+16>>2]=0,a[r+20>>2]=0,a[r+8>>2]=0,a[r+12>>2]=0,a[r>>2]=0,a[r+4>>2]=0,u=0,e|B)for(;C[u+r|0]=i[g+u|0],!B&(u=u+1|0)>>>0<e>>>0|B;);g=d=r,X=I}for(T=20,l=k,K=w,Y=D,J=f,u=p,I=s,S=h,b=_,M=y,x=E,H=c,v=t,m=Q,U=L,G=R,F=o;N=u,l=Ig((u=l+u|0)^G,16),N=G=Ig(N^(M=l+M|0),12),G=Ig((P=u+G|0)^l,8),u=Ig(N^(M=G+M|0),7),v=Ig((l=b+J|0)^v,16),b=Ig((F=v+F|0)^b,12),J=Ig((Y=S+Y|0)^m,16),S=Ig((H=J+H|0)^S,12),m=(q=l+b|0)+u|0,z=Ig((Y=S+Y|0)^J,8),l=Ig(m^z,16),J=Ig((K=I+K|0)^U,16),I=Ig((x=J+x|0)^I,12),N=u,U=Ig((K=I+K|0)^J,8),N=Ig(N^(u=(j=U+x|0)+l|0),12),m=Ig(l^(J=N+m|0),8),u=Ig((x=m+u|0)^N,7),N=M,M=Y,l=Ig(v^q,8),Y=Ig((v=l+F|0)^b,7),U=Ig((M=M+Y|0)^U,16),F=Ig((b=N+U|0)^Y,12),U=Ig(U^(Y=F+M|0),8),b=Ig((M=b+U|0)^F,7),F=v,v=K,K=Ig((H=H+z|0)^S,7),S=F+(G=Ig((v=v+K|0)^G,16))|0,F=v,v=Ig(S^K,12),G=Ig(G^(K=F+v|0),8),S=Ig((F=S+G|0)^v,7),N=H,v=l,l=Ig(I^j,7),v=Ig(v^(H=l+P|0),16),P=Ig((I=N+v|0)^l,12),v=Ig(v^(l=P+H|0),8),I=Ig((H=I+v|0)^P,7),T=T-2|0;);if(T=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,P=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,q=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,z=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,j=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,N=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,O=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,V=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,Z=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,W=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,$=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,AA=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,gA=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,IA=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,CA=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,l=l+k^(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),C[0|d]=l,C[d+1|0]=l>>>8,C[d+2|0]=l>>>16,C[d+3|0]=l>>>24,l=v+t^CA,C[d+60|0]=l,C[d+61|0]=l>>>8,C[d+62|0]=l>>>16,C[d+63|0]=l>>>24,l=m+Q^IA,C[d+56|0]=l,C[d+57|0]=l>>>8,C[d+58|0]=l>>>16,C[d+59|0]=l>>>24,l=U+L^gA,C[d+52|0]=l,C[d+53|0]=l>>>8,C[d+54|0]=l>>>16,C[d+55|0]=l>>>24,l=G+R^AA,C[d+48|0]=l,C[d+49|0]=l>>>8,C[d+50|0]=l>>>16,C[d+51|0]=l>>>24,l=F+o^$,C[d+44|0]=l,C[d+45|0]=l>>>8,C[d+46|0]=l>>>16,C[d+47|0]=l>>>24,l=H+c^W,C[d+40|0]=l,C[d+41|0]=l>>>8,C[d+42|0]=l>>>16,C[d+43|0]=l>>>24,l=x+E^Z,C[d+36|0]=l,C[d+37|0]=l>>>8,C[d+38|0]=l>>>16,C[d+39|0]=l>>>24,l=M+y^V,C[d+32|0]=l,C[d+33|0]=l>>>8,C[d+34|0]=l>>>16,C[d+35|0]=l>>>24,b=b+_^O,C[d+28|0]=b,C[d+29|0]=b>>>8,C[d+30|0]=b>>>16,C[d+31|0]=b>>>24,S=N^S+h,C[d+24|0]=S,C[d+25|0]=S>>>8,C[d+26|0]=S>>>16,C[d+27|0]=S>>>24,I=j^I+s,C[d+20|0]=I,C[d+21|0]=I>>>8,C[d+22|0]=I>>>16,C[d+23|0]=I>>>24,I=z^u+p,C[d+16|0]=I,C[d+17|0]=I>>>8,C[d+18|0]=I>>>16,C[d+19|0]=I>>>24,I=q^J+f,C[d+12|0]=I,C[d+13|0]=I>>>8,C[d+14|0]=I>>>16,C[d+15|0]=I>>>24,I=P^Y+D,C[d+8|0]=I,C[d+9|0]=I>>>8,C[d+10|0]=I>>>16,C[d+11|0]=I>>>24,I=T^K+w,C[d+4|0]=I,C[d+5|0]=I>>>8,C[d+6|0]=I>>>16,C[d+7|0]=I>>>24,L=!(R=R+1|0)+L|0,!B&e>>>0<=64){if(!(!(e|B)|!B&e>>>0>63|!!(0|B)))for(u=0;C[u+X|0]=i[d+u|0],e>>>0>(u=u+1|0)>>>0;);a[A+52>>2]=L,a[A+48>>2]=R;break}g=g- -64|0,I=d- -64|0,B=B-1|0,B=(e=e+-64|0)>>>0<4294967232?B+1|0:B}}function J(A,g){var I,e=0,B=0,i=0,r=0,t=0,Q=0,o=0;n=I=n-704|0,e=80+((B=a[A+72>>2]>>>3&127)+A|0)|0,B>>>0>=112?(OA(e,34608,128-B|0),f(A,B=A+80|0,I,I+640|0),VA(B,0,112)):OA(e,34608,112-B|0),Q=(i=a[A+64>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+68>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[A+192|0]=e,C[A+193|0]=e>>>8,C[A+194|0]=e>>>16,C[A+195|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[A+196|0]=B,C[A+197|0]=B>>>8,C[A+198|0]=B>>>16,C[A+199|0]=B>>>24,Q=(i=a[A+72>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+76>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[A+200|0]=e,C[A+201|0]=e>>>8,C[A+202|0]=e>>>16,C[A+203|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[A+204|0]=B,C[A+205|0]=B>>>8,C[A+206|0]=B>>>16,C[A+207|0]=B>>>24,f(A,A+80|0,I,I+640|0),Q=(i=a[A>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+4>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[0|g]=e,C[g+1|0]=e>>>8,C[g+2|0]=e>>>16,C[g+3|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+4|0]=B,C[g+5|0]=B>>>8,C[g+6|0]=B>>>16,C[g+7|0]=B>>>24,Q=(i=a[A+8>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+12>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+8|0]=e,C[g+9|0]=e>>>8,C[g+10|0]=e>>>16,C[g+11|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+12|0]=B,C[g+13|0]=B>>>8,C[g+14|0]=B>>>16,C[g+15|0]=B>>>24,Q=(i=a[A+16>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+20>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+16|0]=e,C[g+17|0]=e>>>8,C[g+18|0]=e>>>16,C[g+19|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+20|0]=B,C[g+21|0]=B>>>8,C[g+22|0]=B>>>16,C[g+23|0]=B>>>24,Q=(i=a[A+24>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+28>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+24|0]=e,C[g+25|0]=e>>>8,C[g+26|0]=e>>>16,C[g+27|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+28|0]=B,C[g+29|0]=B>>>8,C[g+30|0]=B>>>16,C[g+31|0]=B>>>24,Q=(i=a[A+32>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+36>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+32|0]=e,C[g+33|0]=e>>>8,C[g+34|0]=e>>>16,C[g+35|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+36|0]=B,C[g+37|0]=B>>>8,C[g+38|0]=B>>>16,C[g+39|0]=B>>>24,Q=(i=a[A+40>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+44>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+40|0]=e,C[g+41|0]=e>>>8,C[g+42|0]=e>>>16,C[g+43|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+44|0]=B,C[g+45|0]=B>>>8,C[g+46|0]=B>>>16,C[g+47|0]=B>>>24,Q=(i=a[A+48>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+52>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+48|0]=e,C[g+49|0]=e>>>8,C[g+50|0]=e>>>16,C[g+51|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+52|0]=B,C[g+53|0]=B>>>8,C[g+54|0]=B>>>16,C[g+55|0]=B>>>24,Q=(i=a[A+56>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,e=g,o=r<<24,r=(t=-16777216&i)>>>24|0,g=o|t<<8|-16777216&((255&(g=a[A+60>>2]))<<24|i>>>8)|16711680&((16777215&g)<<8|i>>>24)|g>>>8&65280|g>>>24,C[e+56|0]=g,C[e+57|0]=g>>>8,C[e+58|0]=g>>>16,C[e+59|0]=g>>>24,g=B|r|Q,g|=B=0,C[e+60|0]=g,C[e+61|0]=g>>>8,C[e+62|0]=g>>>16,C[e+63|0]=g>>>24,dg(I,704),dg(A,208),n=I+704|0}function U(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v=0;n=e=n-224|0,o=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,c=i[0|(v=I- -64|0)]|i[v+1|0]<<8|i[v+2|0]<<16|i[v+3|0]<<24,E=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,y=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,_=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,B=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,s=i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24,p=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,f=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,D=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,r=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,w=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,k=i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24,d=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,l=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,u=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,t=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(Q=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^(i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)&(i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24)^(i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24)^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24),C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=l&u^k^d^w^r,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=f&D^s^p^h^B,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=y&_^o^c^E^t,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,A=a[v+4>>2],a[e+176>>2]=a[v>>2],a[e+180>>2]=A,A=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=A,A=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=A,oA(A=e+192|0,e+176|0,e+160|0),g=a[e+204>>2],a[I+88>>2]=a[e+200>>2],a[I+92>>2]=g,g=a[e+196>>2],a[I+80>>2]=a[e+192>>2],a[I+84>>2]=g,g=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=g,g=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=g,g=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=g,g=a[v+4>>2],a[e+128>>2]=a[v>>2],a[e+132>>2]=g,oA(A,e+144|0,e+128|0),g=a[e+204>>2],a[I+72>>2]=a[e+200>>2],a[I+76>>2]=g,g=a[e+196>>2],a[v>>2]=a[e+192>>2],a[v+4>>2]=g,g=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=g,g=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=g,g=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=g,g=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=g,oA(A,e+112|0,e+96|0),g=a[e+204>>2],a[I+56>>2]=a[e+200>>2],a[I+60>>2]=g,g=a[e+196>>2],a[I+48>>2]=a[e+192>>2],a[I+52>>2]=g,g=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=g,g=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=g,g=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=g,g=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=g,oA(A,e+80|0,e- -64|0),g=a[e+204>>2],a[I+40>>2]=a[e+200>>2],a[I+44>>2]=g,g=a[e+196>>2],a[I+32>>2]=a[e+192>>2],a[I+36>>2]=g,g=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=g,g=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=g,g=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=g,g=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=g,oA(A,e+48|0,e+32|0),g=a[e+204>>2],a[I+24>>2]=a[e+200>>2],a[I+28>>2]=g,g=a[e+196>>2],a[I+16>>2]=a[e+192>>2],a[I+20>>2]=g,g=a[e+220>>2],a[e+24>>2]=a[e+216>>2],a[e+28>>2]=g,g=a[e+212>>2],a[e+16>>2]=a[e+208>>2],a[e+20>>2]=g,g=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=g,g=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=g,oA(A,e+16|0,e),A=a[e+192>>2],g=a[e+196>>2],v=a[e+200>>2],a[I+12>>2]=Q^a[e+204>>2],a[I+8>>2]=v^r,a[I+4>>2]=g^B,a[I>>2]=A^t,n=e+224|0}function x(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w=0,k=0,d=0,l=0,u=0;n=e=n-224|0,d=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,k=i[0|(w=I- -64|0)]|i[w+1|0]<<8|i[w+2|0]<<16|i[w+3|0]<<24,B=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,r=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,t=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,l=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,Q=i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24,o=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,c=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,E=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,y=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,u=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,_=i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24,h=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,s=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,p=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,f=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,D=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)&(i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24)^(i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24)^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24)^(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24),C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,u=p&f^u^h^s^_,C[A+8|0]=u,C[A+9|0]=u>>>8,C[A+10|0]=u>>>16,C[A+11|0]=u>>>24,l=E&y^l^o^c^Q,C[A+4|0]=l,C[A+5|0]=l>>>8,C[A+6|0]=l>>>16,C[A+7|0]=l>>>24,d=r&t^d^k^B^D,C[0|A]=d,C[A+1|0]=d>>>8,C[A+2|0]=d>>>16,C[A+3|0]=d>>>24,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,A=a[w+4>>2],a[e+176>>2]=a[w>>2],a[e+180>>2]=A,A=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=A,A=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=A,oA(A=e+192|0,e+176|0,e+160|0),k=a[e+204>>2],a[I+88>>2]=a[e+200>>2],a[I+92>>2]=k,k=a[e+196>>2],a[I+80>>2]=a[e+192>>2],a[I+84>>2]=k,k=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=k,k=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=k,k=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=k,k=a[w+4>>2],a[e+128>>2]=a[w>>2],a[e+132>>2]=k,oA(A,e+144|0,e+128|0),k=a[e+204>>2],a[I+72>>2]=a[e+200>>2],a[I+76>>2]=k,k=a[e+196>>2],a[w>>2]=a[e+192>>2],a[w+4>>2]=k,w=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=w,w=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=w,w=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=w,w=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=w,oA(A,e+112|0,e+96|0),w=a[e+204>>2],a[I+56>>2]=a[e+200>>2],a[I+60>>2]=w,w=a[e+196>>2],a[I+48>>2]=a[e+192>>2],a[I+52>>2]=w,w=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=w,w=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=w,w=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=w,w=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=w,oA(A,e+80|0,e- -64|0),w=a[e+204>>2],a[I+40>>2]=a[e+200>>2],a[I+44>>2]=w,w=a[e+196>>2],a[I+32>>2]=a[e+192>>2],a[I+36>>2]=w,w=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=w,w=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=w,w=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=w,w=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=w,oA(A,e+48|0,e+32|0),w=a[e+204>>2],a[I+24>>2]=a[e+200>>2],a[I+28>>2]=w,w=a[e+196>>2],a[I+16>>2]=a[e+192>>2],a[I+20>>2]=w,w=a[e+220>>2],a[e+24>>2]=a[e+216>>2],a[e+28>>2]=w,w=a[e+212>>2],a[e+16>>2]=a[e+208>>2],a[e+20>>2]=w,w=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=w,w=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=w,oA(A,e+16|0,e),A=a[e+192>>2],w=a[e+196>>2],k=a[e+200>>2],a[I+12>>2]=g^a[e+204>>2],a[I+8>>2]=k^u,a[I+4>>2]=w^l,a[I>>2]=A^d,n=e+224|0}function m(A,g){var I,C,e,B,r,t,Q,o,c,E=0,y=0;n=I=n-288|0,C=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,e=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,B=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,r=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,t=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,Q=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,o=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,c=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,A=a[g+124>>2],a[I+280>>2]=a[g+120>>2],a[I+284>>2]=A,A=a[g+116>>2],a[I+272>>2]=a[g+112>>2],a[I+276>>2]=A,A=a[g+108>>2],a[I+248>>2]=a[g+104>>2],a[I+252>>2]=A,A=a[g+100>>2],a[I+240>>2]=a[g+96>>2],a[I+244>>2]=A,A=a[g+124>>2],a[I+232>>2]=a[g+120>>2],a[I+236>>2]=A,A=a[g+116>>2],a[I+224>>2]=a[g+112>>2],a[I+228>>2]=A,oA(y=I+256|0,I+240|0,I+224|0),A=a[I+268>>2],a[g+120>>2]=a[I+264>>2],a[g+124>>2]=A,A=a[I+260>>2],a[g+112>>2]=a[I+256>>2],a[g+116>>2]=A,A=a[g+92>>2],a[I+216>>2]=a[g+88>>2],a[I+220>>2]=A,A=a[g+84>>2],a[I+208>>2]=a[g+80>>2],a[I+212>>2]=A,A=a[g+108>>2],a[I+200>>2]=a[g+104>>2],a[I+204>>2]=A,A=a[g+100>>2],a[I+192>>2]=a[g+96>>2],a[I+196>>2]=A,oA(y,I+208|0,I+192|0),A=a[I+268>>2],a[g+104>>2]=a[I+264>>2],a[g+108>>2]=A,A=a[I+260>>2],a[g+96>>2]=a[I+256>>2],a[g+100>>2]=A,A=a[g+76>>2],a[I+184>>2]=a[g+72>>2],a[I+188>>2]=A,E=a[4+(A=g- -64|0)>>2],a[I+176>>2]=a[A>>2],a[I+180>>2]=E,E=a[g+92>>2],a[I+168>>2]=a[g+88>>2],a[I+172>>2]=E,E=a[g+84>>2],a[I+160>>2]=a[g+80>>2],a[I+164>>2]=E,oA(y,I+176|0,I+160|0),E=a[I+268>>2],a[g+88>>2]=a[I+264>>2],a[g+92>>2]=E,E=a[I+260>>2],a[g+80>>2]=a[I+256>>2],a[g+84>>2]=E,E=a[g+60>>2],a[I+152>>2]=a[g+56>>2],a[I+156>>2]=E,E=a[g+52>>2],a[I+144>>2]=a[g+48>>2],a[I+148>>2]=E,E=a[g+76>>2],a[I+136>>2]=a[g+72>>2],a[I+140>>2]=E,E=a[A+4>>2],a[I+128>>2]=a[A>>2],a[I+132>>2]=E,oA(y,I+144|0,I+128|0),E=a[I+268>>2],a[g+72>>2]=a[I+264>>2],a[g+76>>2]=E,E=a[I+260>>2],a[A>>2]=a[I+256>>2],a[A+4>>2]=E,E=a[g+44>>2],a[I+120>>2]=a[g+40>>2],a[I+124>>2]=E,E=a[g+36>>2],a[I+112>>2]=a[g+32>>2],a[I+116>>2]=E,E=a[g+60>>2],a[I+104>>2]=a[g+56>>2],a[I+108>>2]=E,E=a[g+52>>2],a[I+96>>2]=a[g+48>>2],a[I+100>>2]=E,oA(y,I+112|0,I+96|0),E=a[I+268>>2],a[g+56>>2]=a[I+264>>2],a[g+60>>2]=E,E=a[I+260>>2],a[g+48>>2]=a[I+256>>2],a[g+52>>2]=E,E=a[g+28>>2],a[I+88>>2]=a[g+24>>2],a[I+92>>2]=E,E=a[g+20>>2],a[I+80>>2]=a[g+16>>2],a[I+84>>2]=E,E=a[g+44>>2],a[I+72>>2]=a[g+40>>2],a[I+76>>2]=E,E=a[g+36>>2],a[I+64>>2]=a[g+32>>2],a[I+68>>2]=E,oA(y,I+80|0,I- -64|0),E=a[I+268>>2],a[g+40>>2]=a[I+264>>2],a[g+44>>2]=E,E=a[I+260>>2],a[g+32>>2]=a[I+256>>2],a[g+36>>2]=E,E=a[g+12>>2],a[I+56>>2]=a[g+8>>2],a[I+60>>2]=E,E=a[g+4>>2],a[I+48>>2]=a[g>>2],a[I+52>>2]=E,E=a[g+28>>2],a[I+40>>2]=a[g+24>>2],a[I+44>>2]=E,E=a[g+20>>2],a[I+32>>2]=a[g+16>>2],a[I+36>>2]=E,oA(y,I+48|0,I+32|0),E=a[I+268>>2],a[g+24>>2]=a[I+264>>2],a[g+28>>2]=E,E=a[I+260>>2],a[g+16>>2]=a[I+256>>2],a[g+20>>2]=E,E=a[I+284>>2],a[I+24>>2]=a[I+280>>2],a[I+28>>2]=E,E=a[I+276>>2],a[I+16>>2]=a[I+272>>2],a[I+20>>2]=E,E=a[g+12>>2],a[I+8>>2]=a[g+8>>2],a[I+12>>2]=E,E=a[g+4>>2],a[I>>2]=a[g>>2],a[I+4>>2]=E,oA(y,I+16|0,I),y=a[I+268>>2],a[g+8>>2]=a[I+264>>2],a[g+12>>2]=y,y=a[I+260>>2],a[g>>2]=a[I+256>>2],a[g+4>>2]=y,a[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^o,a[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^Q,a[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^t,a[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^c,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^r,a[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^B,a[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^e,a[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^C,n=I+288|0}function P(A,g,I,C){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k=0,d=0,l=0,u=0;n=e=n-240|0,a[e+200>>2]=0,a[e+204>>2]=0,a[e+192>>2]=0,a[e+196>>2]=0,OA(d=e+192|0,g,I),l=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,u=i[0|(g=C- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,k=i[C+80|0]|i[C+81|0]<<8|i[C+82|0]<<16|i[C+83|0]<<24,B=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24,r=i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24,t=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,Q=i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24,o=i[C+84|0]|i[C+85|0]<<8|i[C+86|0]<<16|i[C+87|0]<<24,c=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,E=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,y=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,_=i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24,h=i[C+88|0]|i[C+89|0]<<8|i[C+90|0]<<16|i[C+91|0]<<24,s=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,p=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24,f=a[e+192>>2],D=a[e+196>>2],w=a[e+200>>2],a[e+204>>2]=(i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24)&(i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24)^(i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24)^(i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24)^a[e+204>>2]^(i[C+92|0]|i[C+93|0]<<8|i[C+94|0]<<16|i[C+95|0]<<24),a[e+200>>2]=s&p^h^w^_^y,a[e+196>>2]=c&E^o^D^Q^t,a[e+192>>2]=B&r^l^u^k^f,VA(I+d|0,0,16-I|0),OA(A,d,I),I=a[e+192>>2],d=a[e+196>>2],l=a[e+200>>2],u=a[e+204>>2],A=a[C+92>>2],a[e+232>>2]=a[C+88>>2],a[e+236>>2]=A,A=a[C+84>>2],a[e+224>>2]=a[C+80>>2],a[e+228>>2]=A,A=a[C+76>>2],a[e+184>>2]=a[C+72>>2],a[e+188>>2]=A,A=a[g+4>>2],a[e+176>>2]=a[g>>2],a[e+180>>2]=A,A=a[C+92>>2],a[e+168>>2]=a[C+88>>2],a[e+172>>2]=A,A=a[C+84>>2],a[e+160>>2]=a[C+80>>2],a[e+164>>2]=A,oA(A=e+208|0,e+176|0,e+160|0),k=a[e+220>>2],a[C+88>>2]=a[e+216>>2],a[C+92>>2]=k,k=a[e+212>>2],a[C+80>>2]=a[e+208>>2],a[C+84>>2]=k,k=a[C+60>>2],a[e+152>>2]=a[C+56>>2],a[e+156>>2]=k,k=a[C+52>>2],a[e+144>>2]=a[C+48>>2],a[e+148>>2]=k,k=a[C+76>>2],a[e+136>>2]=a[C+72>>2],a[e+140>>2]=k,k=a[g+4>>2],a[e+128>>2]=a[g>>2],a[e+132>>2]=k,oA(A,e+144|0,e+128|0),k=a[e+220>>2],a[C+72>>2]=a[e+216>>2],a[C+76>>2]=k,k=a[e+212>>2],a[g>>2]=a[e+208>>2],a[g+4>>2]=k,g=a[C+44>>2],a[e+120>>2]=a[C+40>>2],a[e+124>>2]=g,g=a[C+36>>2],a[e+112>>2]=a[C+32>>2],a[e+116>>2]=g,g=a[C+60>>2],a[e+104>>2]=a[C+56>>2],a[e+108>>2]=g,g=a[C+52>>2],a[e+96>>2]=a[C+48>>2],a[e+100>>2]=g,oA(A,e+112|0,e+96|0),g=a[e+220>>2],a[C+56>>2]=a[e+216>>2],a[C+60>>2]=g,g=a[e+212>>2],a[C+48>>2]=a[e+208>>2],a[C+52>>2]=g,g=a[C+28>>2],a[e+88>>2]=a[C+24>>2],a[e+92>>2]=g,g=a[C+20>>2],a[e+80>>2]=a[C+16>>2],a[e+84>>2]=g,g=a[C+44>>2],a[e+72>>2]=a[C+40>>2],a[e+76>>2]=g,g=a[C+36>>2],a[e+64>>2]=a[C+32>>2],a[e+68>>2]=g,oA(A,e+80|0,e- -64|0),g=a[e+220>>2],a[C+40>>2]=a[e+216>>2],a[C+44>>2]=g,g=a[e+212>>2],a[C+32>>2]=a[e+208>>2],a[C+36>>2]=g,g=a[C+12>>2],a[e+56>>2]=a[C+8>>2],a[e+60>>2]=g,g=a[C+4>>2],a[e+48>>2]=a[C>>2],a[e+52>>2]=g,g=a[C+28>>2],a[e+40>>2]=a[C+24>>2],a[e+44>>2]=g,g=a[C+20>>2],a[e+32>>2]=a[C+16>>2],a[e+36>>2]=g,oA(A,e+48|0,e+32|0),g=a[e+220>>2],a[C+24>>2]=a[e+216>>2],a[C+28>>2]=g,g=a[e+212>>2],a[C+16>>2]=a[e+208>>2],a[C+20>>2]=g,g=a[e+236>>2],a[e+24>>2]=a[e+232>>2],a[e+28>>2]=g,g=a[e+228>>2],a[e+16>>2]=a[e+224>>2],a[e+20>>2]=g,g=a[C+12>>2],a[e+8>>2]=a[C+8>>2],a[e+12>>2]=g,g=a[C+4>>2],a[e>>2]=a[C>>2],a[e+4>>2]=g,oA(A,e+16|0,e),A=a[e+208>>2],g=a[e+212>>2],k=a[e+216>>2],a[C+12>>2]=u^a[e+220>>2],a[C+8>>2]=k^l,a[C+4>>2]=g^d,a[C>>2]=A^I,n=e+240|0}function R(A,g,I){var e,r=0,t=0,Q=0,o=0,c=0;n=e=n+-64|0;A:{if((I-65&255)>>>0>191){if(t=-1,!(i[A+80|0]|i[A+81|0]<<8|i[A+82|0]<<16|i[A+83|0]<<24|i[A+84|0]|i[A+85|0]<<8|i[A+86|0]<<16|i[A+87|0]<<24)){if((Q=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)>>>0>=129){if(o=r=i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24,r=(Q=128+(t=i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)|0)>>>0<128?r+1|0:r,C[A+64|0]=Q,C[A+65|0]=Q>>>8,C[A+66|0]=Q>>>16,C[A+67|0]=Q>>>24,C[A+68|0]=r,C[A+69|0]=r>>>8,C[A+70|0]=r>>>16,C[A+71|0]=r>>>24,r=i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24,r=(c=t=-1==(0|o)&t>>>0>4294967167)>>>0>(t=t+(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)|0)>>>0?r+1|0:r,C[A+72|0]=t,C[A+73|0]=t>>>8,C[A+74|0]=t>>>16,C[A+75|0]=t>>>24,C[A+76|0]=r,C[A+77|0]=r>>>8,C[A+78|0]=r>>>16,C[A+79|0]=r>>>24,s(A,r=A+96|0),t=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)-128|0,C[A+352|0]=t,C[A+353|0]=t>>>8,C[A+354|0]=t>>>16,C[A+355|0]=t>>>24,t>>>0>=129)break A;OA(r,A+224|0,t),Q=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24}t=c=i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24,t=(o=Q+(r=i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)|0)>>>0<Q>>>0?t+1|0:t,C[A+64|0]=o,C[A+65|0]=o>>>8,C[A+66|0]=o>>>16,C[A+67|0]=o>>>24,C[A+68|0]=t,C[A+69|0]=t>>>8,C[A+70|0]=t>>>16,C[A+71|0]=t>>>24,t=(0|t)==(0|c)&r>>>0>o>>>0|t>>>0<c>>>0,r=i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24,r=(c=t)>>>0>(t=t+(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)|0)>>>0?r+1|0:r,C[A+72|0]=t,C[A+73|0]=t>>>8,C[A+74|0]=t>>>16,C[A+75|0]=t>>>24,C[A+76|0]=r,C[A+77|0]=r>>>8,C[A+78|0]=r>>>16,C[A+79|0]=r>>>24,i[A+356|0]&&(C[A+88|0]=255,C[A+89|0]=255,C[A+90|0]=255,C[A+91|0]=255,C[A+92|0]=255,C[A+93|0]=255,C[A+94|0]=255,C[A+95|0]=255),C[A+80|0]=255,C[A+81|0]=255,C[A+82|0]=255,C[A+83|0]=255,C[A+84|0]=255,C[A+85|0]=255,C[A+86|0]=255,C[A+87|0]=255,VA((t=A+96|0)+Q|0,0,256-Q|0),s(A,t),r=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[e>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[e+4>>2]=r,r=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[e+8>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[e+12>>2]=r,r=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[e+16>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[e+20>>2]=r,r=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[e+24>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[e+28>>2]=r,r=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[e+32>>2]=i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24,a[e+36>>2]=r,r=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24,a[e+40>>2]=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[e+44>>2]=r,r=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24,a[e+48>>2]=i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24,a[e+52>>2]=r,r=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24,a[e+56>>2]=i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24,a[e+60>>2]=r,OA(g,e,I),dg(A,64),dg(t,256),t=0}return n=e- -64|0,t}ig(),B()}E(1268,1130,306,1074),B()}function L(A,g){var I,e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w=0,k=0,l=0,u=0,v=0,S=0,b=0;for(n=I=n-320|0,V(e=A+40|0,g),a[A+84>>2]=0,a[A+88>>2]=0,a[A+80>>2]=1,a[A+92>>2]=0,a[A+96>>2]=0,a[A+100>>2]=0,a[A+104>>2]=0,a[A+108>>2]=0,a[A+112>>2]=0,a[A+116>>2]=0,K(S=I+240|0,e),d(u=I+192|0,S,1328),b=-1,B=a[I+240>>2]-1|0,a[I+240>>2]=B,a[I+192>>2]=a[I+192>>2]+1,r=a[I+244>>2],t=a[I+248>>2],Q=a[I+252>>2],o=a[I+256>>2],c=a[I+260>>2],E=a[I+264>>2],y=a[I+268>>2],_=a[I+272>>2],h=a[I+276>>2],K(v=I+144|0,u),d(v,v,u),K(A,v),d(A,A,u),d(A,A,S),n=k=n-144|0,K(l=k+96|0,A),K(w=k+48|0,l),K(w,w),d(w,A,w),d(l,l,w),K(l,l),d(l,w,l),K(w,l),K(w,w),K(w,w),K(w,w),K(w,w),d(l,w,l),K(w,l),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(w,w,l),K(k,w),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),d(w,k,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(l,w,l),K(w,l),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(w,w,l),K(k,w),w=1;K(k,k),100!=(0|(w=w+1|0)););d(w=k+48|0,k,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(l=k+96|0,w,l),K(l,l),K(l,l),d(A,l,A),n=k+144|0,d(A,A,v),d(A,A,S),K(w=I+96|0,A),d(w,w,u),w=a[I+132>>2],a[I+84>>2]=w-h,k=a[I+128>>2],a[I+80>>2]=k-_,l=a[I+124>>2],a[I+76>>2]=l-y,u=a[I+120>>2],a[I+72>>2]=u-E,v=a[I+116>>2],a[I+68>>2]=v-c,S=a[I+112>>2],a[I+64>>2]=S-o,s=a[I+108>>2],a[I+60>>2]=s-Q,p=a[I+104>>2],a[I+56>>2]=p-t,f=a[I+100>>2],a[I+52>>2]=f-r,D=a[I+96>>2],a[I+48>>2]=D-B,yA(I,I+48|0);A:{if(!kA(I,32)){if(a[I+36>>2]=w+h,a[I+32>>2]=k+_,a[I+28>>2]=l+y,a[I+24>>2]=u+E,a[I+20>>2]=v+c,a[I+16>>2]=S+o,a[I+12>>2]=Q+s,a[I+8>>2]=t+p,a[I+4>>2]=r+f,a[I>>2]=B+D,yA(w=I+288|0,I),!kA(w,32))break A;d(A,A,1376)}yA(I+288|0,A),(1&C[I+288|0])==(i[g+31|0]>>>7|0)&&(a[A>>2]=0-a[A>>2],a[A+36>>2]=0-a[A+36>>2],a[A+32>>2]=0-a[A+32>>2],a[A+28>>2]=0-a[A+28>>2],a[A+24>>2]=0-a[A+24>>2],a[A+20>>2]=0-a[A+20>>2],a[A+16>>2]=0-a[A+16>>2],a[A+12>>2]=0-a[A+12>>2],a[A+8>>2]=0-a[A+8>>2],a[A+4>>2]=0-a[A+4>>2]),d(A+120|0,A,e),b=0}return n=I+320|0,b}function T(A,g,I){var e,B,a,r,t,Q,o,c,E,y,_,n,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0;for(D=1634760805,s=e=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24,w=B=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,k=a=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,d=r=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,S=857760878,l=t=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,p=Q=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,v=o=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,M=c=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,g=2036477234,f=E=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,h=1797285236,F=y=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,b=_=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,I=n=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24;u=Ig(s+S|0,7)^M,N=Ig(u+S|0,9)^b,d=Ig(I+D|0,7)^d,K=Ig(d+D|0,9)^v,H=Ig(K+d|0,13)^I,k=Ig(h+f|0,7)^k,Y=Ig(k+h|0,9)^p,v=Ig(k+Y|0,13)^f,f=Ig(Y+v|0,18)^h,p=Ig(g+l|0,7)^F,I=H^Ig(f+p|0,7),b=N^Ig(I+f|0,9),F=Ig(I+b|0,13)^p,h=Ig(b+F|0,18)^f,w=Ig(g+p|0,9)^w,l=Ig(w+p|0,13)^l,g=Ig(l+w|0,18)^g,f=Ig(g+u|0,7)^v,v=Ig(f+g|0,9)^K,M=Ig(f+v|0,13)^u,g=Ig(v+M|0,18)^g,u=Ig(u+N|0,13)^s,s=Ig(u+N|0,18)^S,l=Ig(s+d|0,7)^l,p=Ig(l+s|0,9)^Y,d=Ig(p+l|0,13)^d,S=Ig(p+d|0,18)^s,D=Ig(K+H|0,18)^D,s=Ig(D+k|0,7)^u,w=Ig(s+D|0,9)^w,k=Ig(s+w|0,13)^k,D=Ig(w+k|0,18)^D,u=G>>>0<18,G=G+2|0,u;);h=h+1797285236|0,C[A+60|0]=h,C[A+61|0]=h>>>8,C[A+62|0]=h>>>16,C[A+63|0]=h>>>24,h=F+y|0,C[A+56|0]=h,C[A+57|0]=h>>>8,C[A+58|0]=h>>>16,C[A+59|0]=h>>>24,h=b+_|0,C[A+52|0]=h,C[A+53|0]=h>>>8,C[A+54|0]=h>>>16,C[A+55|0]=h>>>24,I=I+n|0,C[A+48|0]=I,C[A+49|0]=I>>>8,C[A+50|0]=I>>>16,C[A+51|0]=I>>>24,I=f+E|0,C[A+44|0]=I,C[A+45|0]=I>>>8,C[A+46|0]=I>>>16,C[A+47|0]=I>>>24,g=g+2036477234|0,C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,g=M+c|0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,g=v+o|0,C[A+32|0]=g,C[A+33|0]=g>>>8,C[A+34|0]=g>>>16,C[A+35|0]=g>>>24,g=p+Q|0,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=l+t|0,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=S+857760878|0,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=d+r|0,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,g=k+a|0,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=w+B|0,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=s+e|0,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=D+1634760805|0,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24}function q(A,g,I,C){var e=0,B=0,r=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0;if(s=a[A+36>>2],_=a[A+32>>2],n=a[A+28>>2],E=a[A+24>>2],y=a[A+20>>2],!C&I>>>0>=16|C)for(S=!i[A+80|0]<<24,f=a[A+4>>2],b=t(f,5),w=a[A+8>>2],u=t(w,5),d=a[A+12>>2],l=t(d,5),v=a[A+16>>2],k=t(v,5),D=a[A>>2];e=GA(r=((i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108863)+E|0,0,d,0),o=h,y=(Q=GA(E=(67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))+y|0,0,v,0))+e|0,e=h+o|0,e=Q>>>0>y>>>0?e+1|0:e,o=GA(n=((i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67108863)+n|0,0,w,0),e=h+e|0,e=o>>>0>(y=o+y|0)>>>0?e+1|0:e,o=GA(_=((i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6|0)+_|0,0,f,0),e=h+e|0,e=o>>>0>(y=o+y|0)>>>0?e+1|0:e,o=GA(s=s+S+((i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)>>>8)|0,0,D,0),e=h+e|0,M=y=o+y|0,y=o>>>0>y>>>0?e+1|0:e,e=GA(r,0,w,0),o=h,Q=GA(E,0,d,0),B=h+o|0,B=(e=Q+e|0)>>>0<Q>>>0?B+1|0:B,o=(Q=GA(n,0,f,0))+e|0,e=h+B|0,e=Q>>>0>o>>>0?e+1|0:e,Q=GA(_,0,D,0),e=h+e|0,e=Q>>>0>(o=Q+o|0)>>>0?e+1|0:e,Q=GA(s,0,k,0),e=h+e|0,F=o=Q+o|0,o=Q>>>0>o>>>0?e+1|0:e,e=GA(r,0,f,0),c=h,Q=(B=GA(E,0,w,0))+e|0,e=h+c|0,e=B>>>0>Q>>>0?e+1|0:e,c=GA(n,0,D,0),B=h+e|0,B=(Q=c+Q|0)>>>0<c>>>0?B+1|0:B,c=GA(_,0,k,0),e=h+B|0,e=(Q=c+Q|0)>>>0<c>>>0?e+1|0:e,c=GA(s,0,l,0),e=h+e|0,N=Q=c+Q|0,Q=Q>>>0<c>>>0?e+1|0:e,e=GA(r,0,D,0),B=h,c=(p=GA(E,0,f,0))+e|0,e=h+B|0,e=c>>>0<p>>>0?e+1|0:e,B=GA(n,0,k,0),e=h+e|0,e=B>>>0>(c=B+c|0)>>>0?e+1|0:e,p=GA(_,0,l,0),B=h+e|0,B=(c=p+c|0)>>>0<p>>>0?B+1|0:B,p=GA(s,0,u,0),e=h+B|0,e=(c=p+c|0)>>>0<p>>>0?e+1|0:e,p=c,c=e,e=GA(r,0,k,0),B=h,r=(E=GA(E,0,D,0))+e|0,e=h+B|0,e=r>>>0<E>>>0?e+1|0:e,E=GA(n,0,l,0),e=h+e|0,e=(r=E+r|0)>>>0<E>>>0?e+1|0:e,E=GA(_,0,u,0),e=h+e|0,e=(r=E+r|0)>>>0<E>>>0?e+1|0:e,E=GA(s,0,b,0),B=h+e|0,B=(r=E+r|0)>>>0<E>>>0?B+1|0:B,E=r,e=c,e=(r=(n=(67108863&B)<<6|r>>>26)+p|0)>>>0<n>>>0?e+1|0:e,n=r,_=(67108863&e)<<6|r>>>26,e=Q,e=(r=_+N|0)>>>0<_>>>0?e+1|0:e,_=r,B=o,s=e=(r=(67108863&e)<<6|r>>>26)+F|0,o=(67108863&(B=e>>>0<r>>>0?B+1|0:B))<<6|e>>>26,e=y,E=(67108863&n)+((e=t((67108863&((r=o+M|0)>>>0<o>>>0?e+1:e))<<6|r>>>26,5)+(67108863&E)|0)>>>26|0)|0,n=67108863&_,_=67108863&s,s=67108863&r,y=67108863&e,g=g+16|0,!(C=C-(I>>>0<16)|0)&(I=I-16|0)>>>0>15|C;);a[A+20>>2]=y,a[A+36>>2]=s,a[A+32>>2]=_,a[A+28>>2]=n,a[A+24>>2]=E}function z(A,g,I,e){A|=0,g|=0;var a=0;return a=-1,(e|=0)-65>>>0<4294967232|(I|=0)>>>0>64||(I&&g?(n=a=n-128|0,!g|((e&=255)-65&255)>>>0<=191|((I&=255)-65&255)>>>0<=191?(ig(),B()):(VA(A- -64|0,0,293),C[A+56|0]=121,C[A+57|0]=33,C[A+58|0]=126,C[A+59|0]=19,C[A+60|0]=25,C[A+61|0]=205,C[A+62|0]=224,C[A+63|0]=91,C[A+48|0]=107,C[A+49|0]=189,C[A+50|0]=65,C[A+51|0]=251,C[A+52|0]=171,C[A+53|0]=217,C[A+54|0]=131,C[A+55|0]=31,C[A+40|0]=31,C[A+41|0]=108,C[A+42|0]=62,C[A+43|0]=43,C[A+44|0]=140,C[A+45|0]=104,C[A+46|0]=5,C[A+47|0]=155,C[A+32|0]=209,C[A+33|0]=130,C[A+34|0]=230,C[A+35|0]=173,C[A+36|0]=127,C[A+37|0]=82,C[A+38|0]=14,C[A+39|0]=81,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,e=-222443256^(I<<8|e),C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,e=I>>>24^1779033703,C[A+4|0]=e,C[A+5|0]=e>>>8,C[A+6|0]=e>>>16,C[A+7|0]=e>>>24,I=OA(VA(a,0,128),g,I),OA(A+96|0,I,128),g=128+(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)|0,C[A+352|0]=g,C[A+353|0]=g>>>8,C[A+354|0]=g>>>16,C[A+355|0]=g>>>24,dg(I,128),n=I+128|0)):(((g=255&e)-65&255)>>>0<=191&&(ig(),B()),VA(A- -64|0,0,293),C[A+56|0]=121,C[A+57|0]=33,C[A+58|0]=126,C[A+59|0]=19,C[A+60|0]=25,C[A+61|0]=205,C[A+62|0]=224,C[A+63|0]=91,C[A+48|0]=107,C[A+49|0]=189,C[A+50|0]=65,C[A+51|0]=251,C[A+52|0]=171,C[A+53|0]=217,C[A+54|0]=131,C[A+55|0]=31,C[A+40|0]=31,C[A+41|0]=108,C[A+42|0]=62,C[A+43|0]=43,C[A+44|0]=140,C[A+45|0]=104,C[A+46|0]=5,C[A+47|0]=155,C[A+32|0]=209,C[A+33|0]=130,C[A+34|0]=230,C[A+35|0]=173,C[A+36|0]=127,C[A+37|0]=82,C[A+38|0]=14,C[A+39|0]=81,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,g^=-222443256,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=103,C[A+5|0]=230,C[A+6|0]=9,C[A+7|0]=106),a=0),0|a}function j(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0;_=a[g+4>>2],y=a[g+44>>2],h=a[g+8>>2],s=a[g+48>>2],p=a[g+12>>2],f=a[g+52>>2],D=a[g+16>>2],w=a[g+56>>2],k=a[g+20>>2],l=a[g+60>>2],u=a[g+24>>2],v=a[(n=g- -64|0)>>2],S=a[g+28>>2],b=a[g+68>>2],M=a[g+32>>2],F=a[g+72>>2],N=a[g+36>>2],K=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=N+K,a[A+32>>2]=M+F,a[A+28>>2]=S+b,a[A+24>>2]=u+v,a[A+20>>2]=k+l,a[A+16>>2]=D+w,a[A+12>>2]=p+f,a[A+8>>2]=h+s,a[A+4>>2]=y+_,y=a[g+4>>2],h=a[g+44>>2],s=a[g+8>>2],p=a[g+48>>2],f=a[g+12>>2],D=a[g+52>>2],w=a[g+16>>2],k=a[g+56>>2],l=a[g+20>>2],u=a[g+60>>2],v=a[g+24>>2],n=a[n>>2],_=a[g+28>>2],S=a[g+68>>2],b=a[g+32>>2],M=a[g+72>>2],F=a[g>>2],N=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=M-b,a[A+68>>2]=S-_,a[(_=A- -64|0)>>2]=n-v,a[A+60>>2]=u-l,a[A+56>>2]=k-w,a[A+52>>2]=D-f,a[A+48>>2]=p-s,a[A+44>>2]=h-y,a[A+40>>2]=N-F,d(A+80|0,A,I),d(y=A+40|0,y,I+40|0),d(A+120|0,I+120|0,g+120|0),d(A,g+80|0,I+80|0),N=a[A+4>>2],K=a[A+8>>2],B=a[A+12>>2],i=a[A+16>>2],r=a[A+20>>2],t=a[A+24>>2],Q=a[A+28>>2],o=a[A+32>>2],c=a[A+36>>2],g=a[A+44>>2],I=a[A+84>>2],y=a[A+48>>2],h=a[A+88>>2],s=a[A+52>>2],p=a[A+92>>2],f=a[A+56>>2],D=a[A+96>>2],w=a[A+60>>2],k=a[A+100>>2],l=a[_>>2],u=a[A+104>>2],n=a[A+68>>2],v=a[A+108>>2],S=a[A+72>>2],b=a[A+112>>2],E=a[A>>2],M=a[A+40>>2],F=a[A+80>>2],C=a[A+76>>2],e=a[A+116>>2],a[A+76>>2]=C+e,a[A+72>>2]=S+b,a[A+68>>2]=n+v,a[_>>2]=l+u,a[A+60>>2]=w+k,a[A+56>>2]=f+D,a[A+52>>2]=s+p,a[A+48>>2]=y+h,a[A+44>>2]=g+I,a[A+40>>2]=M+F,a[A+36>>2]=e-C,a[A+32>>2]=b-S,a[A+28>>2]=v-n,a[A+24>>2]=u-l,a[A+20>>2]=k-w,a[A+16>>2]=D-f,a[A+12>>2]=p-s,a[A+8>>2]=h-y,a[A+4>>2]=I-g,a[A>>2]=F-M,g=c<<1,I=a[A+156>>2],a[A+156>>2]=g-I,_=o<<1,y=a[A+152>>2],a[A+152>>2]=_-y,h=Q<<1,s=a[A+148>>2],a[A+148>>2]=h-s,p=t<<1,f=a[A+144>>2],a[A+144>>2]=p-f,D=r<<1,w=a[A+140>>2],a[A+140>>2]=D-w,k=i<<1,l=a[A+136>>2],a[A+136>>2]=k-l,u=B<<1,n=a[A+132>>2],a[A+132>>2]=u-n,v=K<<1,S=a[A+128>>2],a[A+128>>2]=v-S,b=N<<1,M=a[A+124>>2],a[A+124>>2]=b-M,F=E<<1,N=a[A+120>>2],a[A+120>>2]=F-N,a[A+112>>2]=y+_,a[A+108>>2]=h+s,a[A+104>>2]=p+f,a[A+100>>2]=D+w,a[A+96>>2]=k+l,a[A+92>>2]=u+n,a[A+88>>2]=v+S,a[A+84>>2]=b+M,a[A+80>>2]=F+N,a[A+116>>2]=g+I}function X(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0;_=a[g+4>>2],y=a[g+44>>2],h=a[g+8>>2],s=a[g+48>>2],p=a[g+12>>2],f=a[g+52>>2],D=a[g+16>>2],w=a[g+56>>2],k=a[g+20>>2],l=a[g+60>>2],u=a[g+24>>2],v=a[(n=g- -64|0)>>2],S=a[g+28>>2],b=a[g+68>>2],M=a[g+32>>2],F=a[g+72>>2],N=a[g+36>>2],K=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=N+K,a[A+32>>2]=M+F,a[A+28>>2]=S+b,a[A+24>>2]=u+v,a[A+20>>2]=k+l,a[A+16>>2]=D+w,a[A+12>>2]=p+f,a[A+8>>2]=h+s,a[A+4>>2]=y+_,y=a[g+4>>2],h=a[g+44>>2],s=a[g+8>>2],p=a[g+48>>2],f=a[g+12>>2],D=a[g+52>>2],w=a[g+16>>2],k=a[g+56>>2],l=a[g+20>>2],u=a[g+60>>2],v=a[g+24>>2],n=a[n>>2],_=a[g+28>>2],S=a[g+68>>2],b=a[g+32>>2],M=a[g+72>>2],F=a[g>>2],N=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=M-b,a[A+68>>2]=S-_,a[(_=A- -64|0)>>2]=n-v,a[A+60>>2]=u-l,a[A+56>>2]=k-w,a[A+52>>2]=D-f,a[A+48>>2]=p-s,a[A+44>>2]=h-y,a[A+40>>2]=N-F,d(A+80|0,A,I+40|0),d(y=A+40|0,y,I),d(A+120|0,I+120|0,g+120|0),d(A,g+80|0,I+80|0),N=a[A+4>>2],K=a[A+8>>2],B=a[A+12>>2],i=a[A+16>>2],r=a[A+20>>2],t=a[A+24>>2],Q=a[A+28>>2],o=a[A+32>>2],c=a[A+36>>2],g=a[A+44>>2],I=a[A+84>>2],y=a[A+48>>2],h=a[A+88>>2],s=a[A+52>>2],p=a[A+92>>2],f=a[A+56>>2],D=a[A+96>>2],w=a[A+60>>2],k=a[A+100>>2],l=a[_>>2],u=a[A+104>>2],n=a[A+68>>2],v=a[A+108>>2],S=a[A+72>>2],b=a[A+112>>2],E=a[A>>2],M=a[A+40>>2],F=a[A+80>>2],C=a[A+76>>2],e=a[A+116>>2],a[A+76>>2]=C+e,a[A+72>>2]=S+b,a[A+68>>2]=n+v,a[_>>2]=l+u,a[A+60>>2]=w+k,a[A+56>>2]=f+D,a[A+52>>2]=s+p,a[A+48>>2]=y+h,a[A+44>>2]=g+I,a[A+40>>2]=M+F,a[A+36>>2]=e-C,a[A+32>>2]=b-S,a[A+28>>2]=v-n,a[A+24>>2]=u-l,a[A+20>>2]=k-w,a[A+16>>2]=D-f,a[A+12>>2]=p-s,a[A+8>>2]=h-y,a[A+4>>2]=I-g,a[A>>2]=F-M,g=a[A+156>>2],I=c<<1,a[A+156>>2]=g+I,_=a[A+152>>2],y=o<<1,a[A+152>>2]=_+y,h=a[A+148>>2],s=Q<<1,a[A+148>>2]=h+s,p=a[A+144>>2],f=t<<1,a[A+144>>2]=p+f,D=a[A+140>>2],w=r<<1,a[A+140>>2]=D+w,k=a[A+136>>2],l=i<<1,a[A+136>>2]=k+l,u=a[A+132>>2],n=B<<1,a[A+132>>2]=u+n,v=a[A+128>>2],S=K<<1,a[A+128>>2]=v+S,b=a[A+124>>2],M=N<<1,a[A+124>>2]=b+M,F=a[A+120>>2],N=E<<1,a[A+120>>2]=F+N,a[A+112>>2]=y-_,a[A+108>>2]=s-h,a[A+104>>2]=f-p,a[A+100>>2]=w-D,a[A+96>>2]=l-k,a[A+92>>2]=n-u,a[A+88>>2]=S-v,a[A+84>>2]=M-b,a[A+80>>2]=N-F,a[A+116>>2]=I-g}function O(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0;_=a[g+4>>2],y=a[g+44>>2],h=a[g+8>>2],s=a[g+48>>2],p=a[g+12>>2],f=a[g+52>>2],D=a[g+16>>2],w=a[g+56>>2],k=a[g+20>>2],l=a[g+60>>2],u=a[g+24>>2],v=a[(n=g- -64|0)>>2],S=a[g+28>>2],b=a[g+68>>2],M=a[g+32>>2],F=a[g+72>>2],N=a[g+36>>2],K=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=N+K,a[A+32>>2]=M+F,a[A+28>>2]=S+b,a[A+24>>2]=u+v,a[A+20>>2]=k+l,a[A+16>>2]=D+w,a[A+12>>2]=p+f,a[A+8>>2]=h+s,a[A+4>>2]=y+_,y=a[g+4>>2],h=a[g+44>>2],s=a[g+8>>2],p=a[g+48>>2],f=a[g+12>>2],D=a[g+52>>2],w=a[g+16>>2],k=a[g+56>>2],l=a[g+20>>2],u=a[g+60>>2],v=a[g+24>>2],n=a[n>>2],_=a[g+28>>2],S=a[g+68>>2],b=a[g+32>>2],M=a[g+72>>2],F=a[g>>2],N=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=M-b,a[A+68>>2]=S-_,a[(_=A- -64|0)>>2]=n-v,a[A+60>>2]=u-l,a[A+56>>2]=k-w,a[A+52>>2]=D-f,a[A+48>>2]=p-s,a[A+44>>2]=h-y,a[A+40>>2]=N-F,d(A+80|0,A,I),d(y=A+40|0,y,I+40|0),d(A+120|0,I+80|0,g+120|0),N=a[g+84>>2],K=a[g+88>>2],B=a[g+92>>2],i=a[g+96>>2],r=a[g+100>>2],t=a[g+104>>2],Q=a[g+108>>2],o=a[g+112>>2],c=a[g+116>>2],I=a[A+44>>2],y=a[A+84>>2],h=a[A+48>>2],s=a[A+88>>2],p=a[A+52>>2],f=a[A+92>>2],D=a[A+56>>2],w=a[A+96>>2],k=a[A+60>>2],l=a[A+100>>2],u=a[_>>2],n=a[A+104>>2],v=a[A+68>>2],S=a[A+108>>2],b=a[A+72>>2],M=a[A+112>>2],E=a[g+80>>2],g=a[A+40>>2],F=a[A+80>>2],C=a[A+76>>2],e=a[A+116>>2],a[A+76>>2]=C+e,a[A+72>>2]=b+M,a[A+68>>2]=v+S,a[_>>2]=u+n,a[A+60>>2]=k+l,a[A+56>>2]=D+w,a[A+52>>2]=p+f,a[A+48>>2]=h+s,a[A+44>>2]=I+y,a[A+40>>2]=g+F,a[A+36>>2]=e-C,a[A+32>>2]=M-b,a[A+28>>2]=S-v,a[A+24>>2]=n-u,a[A+20>>2]=l-k,a[A+16>>2]=w-D,a[A+12>>2]=f-p,a[A+8>>2]=s-h,a[A+4>>2]=y-I,a[A>>2]=F-g,g=c<<1,I=a[A+156>>2],a[A+156>>2]=g-I,_=o<<1,y=a[A+152>>2],a[A+152>>2]=_-y,h=Q<<1,s=a[A+148>>2],a[A+148>>2]=h-s,p=t<<1,f=a[A+144>>2],a[A+144>>2]=p-f,D=r<<1,w=a[A+140>>2],a[A+140>>2]=D-w,k=i<<1,l=a[A+136>>2],a[A+136>>2]=k-l,u=B<<1,n=a[A+132>>2],a[A+132>>2]=u-n,v=K<<1,S=a[A+128>>2],a[A+128>>2]=v-S,b=N<<1,M=a[A+124>>2],a[A+124>>2]=b-M,F=E<<1,N=a[A+120>>2],a[A+120>>2]=F-N,a[A+112>>2]=y+_,a[A+108>>2]=h+s,a[A+104>>2]=p+f,a[A+100>>2]=D+w,a[A+96>>2]=k+l,a[A+92>>2]=u+n,a[A+88>>2]=v+S,a[A+84>>2]=b+M,a[A+80>>2]=F+N,a[A+116>>2]=g+I}function V(A,g){var I,C,e,B,r,t,Q,o,c,E,y,_,n,s,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0;n=i[g+31|0],I=i[g+30|0],C=i[g+29|0],e=i[g+6|0],B=i[g+5|0],r=i[g+4|0],t=i[g+9|0],Q=i[g+8|0],o=i[g+7|0],c=i[g+12|0],b=i[g+11|0],M=i[g+10|0],E=i[g+15|0],F=i[g+14|0],y=i[g+13|0],l=i[g+28|0],S=i[g+27|0],u=i[g+26|0],d=i[g+25|0],w=i[g+24|0],D=i[g+23|0],s=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,k=(f=i[g+21|0])<<15,f=p=f>>>17|0,v=k,v|=(k=i[g+20|0])<<7,k=(p=k>>>25|0)|f,f=(p=i[g+22|0])>>>9|0,p=p<<23|v,f|=k,_=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=0,k=p,p=(33554431&(g=(v=_+16777216|0)>>>0<16777216?1:g))<<7|v>>>25,g=(g>>>25|0)+f|0,p=(f=k=k+p|0)>>>0<p>>>0?g+1|0:g,g=(k=f+33554432|0)>>>0<33554432?p+1|0:p,a[A+24>>2]=f-(-67108864&k),p=(f=D>>>27|0)|w>>>19|d>>>11,f=D=(w=d<<21|(D=w<<13|D<<5))+(f=(67108863&(f=g))<<6|k>>>26)|0,g=p,p=(D=w+16777216|0)>>>0<16777216?g+1|0:g,a[A+28>>2]=f-(1040187392&D),f=(p=(g=p)>>>25|0)+(f=S>>>20|u>>>28|l>>>12)|0,g=f=(p=D=(g=(33554431&g)<<7|D>>>25)+(S<<12|u<<4|l<<20)|0)>>>0<g>>>0?f+1|0:f,D=(l=p+33554432|0)>>>0<33554432?g+1|0:g,a[A+32>>2]=p-(-67108864&l),f=c>>>13|(p=b>>>21|M>>>29),g=(f=(S=16777216+(b=b<<11|M<<3|c<<19)|0)>>>0<16777216?f+1|0:f)>>>25|0,f=(p=w=F<<10|y<<2|E<<18)+(w=(33554431&f)<<7|S>>>25)|0,p=g+(d=F>>>22|y>>>30|E>>>14)|0,g=p=f>>>0<w>>>0?p+1|0:p,w=((67108863&(g=(w=f+33554432|0)>>>0<33554432?g+1|0:g))<<6|(p=w)>>>26)+(u=_-(-33554432&v)|0)|0,a[A+20>>2]=w,a[A+16>>2]=f-(-67108864&p),p=B>>>18|r>>>26|e>>>10,f=(p=(u=16777216+(M=B<<14|r<<6|e<<22)|0)>>>0<16777216?p+1|0:p)>>>25|0,p=(g=w=Q<<13|o<<5|t<<21)+(w=(33554431&p)<<7|u>>>25)|0,g=f+(d=Q>>>19|o>>>27|t>>>11)|0,g=p>>>0<w>>>0?g+1|0:g,f=(d=p+33554432|0)>>>0<33554432?g+1|0:g,a[A+8>>2]=p-(-67108864&d),l=(D=(67108863&D)<<6|l>>>26)+(F=n<<18&33292288|I<<10|C<<2)|0,g=p=I>>>22|C>>>30,p=(D=F+16777216|0)>>>0<16777216?g+1|0:g,a[A+36>>2]=l-(33554432&D),f=b+((67108863&f)<<6|d>>>26)|0,a[A+12>>2]=f-(234881024&S),w=M-(2113929216&u)|0,f=GA((33554431&(g=p))<<7|D>>>25,p=g>>>25|0,19,0),g=h,f=(p=f+s|0)>>>0<f>>>0?g+1|0:g,D=((67108863&(f=(g=p+33554432|0)>>>0<33554432?f+1|0:f))<<6|g>>>26)+w|0,a[A+4>>2]=D,a[A>>2]=p-(-67108864&g)}function Z(A,g){var I,e,B,r,t=0,Q=0,o=0,c=0,E=0,y=0;for(n=I=n-480|0;o=(Q=I+288|0)+(t<<1)|0,c=i[g+t|0],C[o+1|0]=c>>>4,C[0|o]=15&c,Q=Q+((o=1|t)<<1)|0,o=i[g+o|0],C[Q+1|0]=o>>>4,C[0|Q]=15&o,32!=(0|(t=t+2|0)););for(g=0;t=8+(Q=(t=g)+i[0|(g=(I+288|0)+E|0)]|0)|0,C[0|g]=Q-(240&t),t=8+(Q=i[g+1|0]+(t<<24>>24>>4)|0)|0,C[g+1|0]=Q-(240&t),t=8+(Q=i[g+2|0]+(t<<24>>24>>4)|0)|0,C[g+2|0]=Q-(240&t),g=t<<24>>24>>4,63!=(0|(E=E+3|0)););for(C[I+351|0]=i[I+351|0]+g,a[A+32>>2]=0,a[A+36>>2]=0,a[A+24>>2]=0,a[A+28>>2]=0,a[A+16>>2]=0,a[A+20>>2]=0,a[A+8>>2]=0,a[A+12>>2]=0,a[A>>2]=0,a[A+4>>2]=0,a[A+44>>2]=0,a[A+48>>2]=0,a[A+40>>2]=1,a[A+52>>2]=0,a[A+56>>2]=0,a[A+60>>2]=0,a[A+64>>2]=0,a[A+68>>2]=0,a[A+72>>2]=0,a[A+76>>2]=0,a[A+80>>2]=1,VA(A+84|0,0,76),B=A+120|0,E=A+80|0,g=A+40|0,Q=I+208|0,e=I+168|0,o=I+248|0,t=1;rA(y=I+8|0,t>>>1|0,C[(I+288|0)+t|0]),O(c=I+128|0,A,y),d(A,c,o),d(g,e,Q),d(E,Q,o),d(B,c,e),y=t>>>0<62,t=t+2|0,y;);for(t=a[A+36>>2],a[I+392>>2]=a[A+32>>2],a[I+396>>2]=t,t=a[A+28>>2],a[I+384>>2]=a[A+24>>2],a[I+388>>2]=t,t=a[A+20>>2],a[I+376>>2]=a[A+16>>2],a[I+380>>2]=t,t=a[A+12>>2],a[I+368>>2]=a[A+8>>2],a[I+372>>2]=t,t=a[A+4>>2],a[I+360>>2]=a[A>>2],a[I+364>>2]=t,t=a[g+12>>2],a[I+408>>2]=a[g+8>>2],a[I+412>>2]=t,t=a[g+20>>2],a[I+416>>2]=a[g+16>>2],a[I+420>>2]=t,t=a[g+28>>2],a[I+424>>2]=a[g+24>>2],a[I+428>>2]=t,t=a[g+36>>2],a[I+432>>2]=a[g+32>>2],a[I+436>>2]=t,t=a[g+4>>2],a[I+400>>2]=a[g>>2],a[I+404>>2]=t,t=a[E+12>>2],a[I+448>>2]=a[E+8>>2],a[I+452>>2]=t,t=a[E+20>>2],a[I+456>>2]=a[E+16>>2],a[I+460>>2]=t,t=a[E+28>>2],a[I+464>>2]=a[E+24>>2],a[I+468>>2]=t,t=a[E+36>>2],a[I+472>>2]=a[E+32>>2],a[I+476>>2]=t,t=a[E+4>>2],a[I+440>>2]=a[E>>2],a[I+444>>2]=t,v(c,t=I+360|0),d(t,c,o),d(y=I+400|0,e,Q),d(r=I+440|0,Q,o),v(c,t),d(t,c,o),d(y,e,Q),d(r,Q,o),v(c,t),d(t,c,o),d(y,e,Q),d(r,Q,o),v(c,t),d(A,c,o),d(g,e,Q),d(E,Q,o),d(B,c,e),t=0;rA(y=I+8|0,t>>>1|0,C[(I+288|0)+t|0]),O(c=I+128|0,A,y),d(A,c,o),d(g,e,Q),d(E,Q,o),d(B,c,e),c=t>>>0<62,t=t+2|0,c;);n=I+480|0}function W(A,g,I,e){var B,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,D=0;if(n=B=n-704|0,I|e)if(r=(e<<3|I>>>29)+(t=o=a[A+76>>2])|0,Q=(E=a[A+72>>2])+(c=I<<3)|0,a[A+72>>2]=Q,r=Q>>>0<c>>>0?r+1|0:r,a[A+76>>2]=r,o=a[A+68>>2],r=(r=Q=(0|r)==(0|t)&Q>>>0<E>>>0|r>>>0<t>>>0)>>>0>(Q=Q+a[A+64>>2]|0)>>>0?o+1|0:o,Q=(c=e>>>29|0)+Q|0,a[A+64>>2]=Q,a[A+68>>2]=Q>>>0<c>>>0?r+1|0:r,Q=A+80|0,(0|e)==(0|(o=p=0-((r=0)+((c=127&((7&t)<<29|E>>>3))>>>0>128)|0)|0))&I>>>0>=(E=128-c|0)>>>0|e>>>0>o>>>0){if(t=0,o=0,!r&(127^c)>>>0>=3|r)for(D=252&E;C[(r=t+c|0)+Q|0]=i[g+t|0],C[Q+(c+(r=1|t)|0)|0]=i[g+r|0],C[Q+(c+(r=2|t)|0)|0]=i[g+r|0],C[Q+(c+(r=3|t)|0)|0]=i[g+r|0],r=o,o=(t=t+4|0)>>>0<4?r+1|0:r,r=h,h=r=(y=y+4|0)>>>0<4?r+1|0:r,(0|y)!=(0|D)|(0|s)!=(0|r););if(h=r=0,r|(y=3&E))for(;C[(r=t+c|0)+Q|0]=i[g+t|0],r=o,o=(t=t+1|0)?r:r+1|0,r=s,s=r=(_=_+1|0)?r:r+1|0,(0|y)!=(0|_)|(0|h)!=(0|r););if(f(A,Q,B,t=B+640|0),g=g+E|0,!(e=e-((I>>>0<E>>>0)+p|0)|0)&(I=I-E|0)>>>0>127|e)for(;f(A,g,B,t),g=g+128|0,!(e=e-(I>>>0<128)|0)&(I=I-128|0)>>>0>127|e;);if(I|e){if(A=3&I,_=0,s=0,t=0,o=0,!e&I>>>0>=4|e)for(y=124&I,E=0,I=0,e=0;C[t+Q|0]=i[g+t|0],C[(r=1|t)+Q|0]=i[g+r|0],C[(r=2|t)+Q|0]=i[g+r|0],C[(r=3|t)+Q|0]=i[g+r|0],r=o,o=(t=t+4|0)>>>0<4?r+1|0:r,r=e,e=r=(I=I+4|0)>>>0<4?r+1|0:r,(0|I)!=(0|y)|(0|E)!=(0|r););if(A|h)for(;C[t+Q|0]=i[g+t|0],o=(t=t+1|0)?o:o+1|0,r=s,s=r=(_=_+1|0)?r:r+1|0,(0|A)!=(0|_)|(0|h)!=(0|r););}dg(B,704)}else{if(t=0,o=0,!e&I>>>0>=4|e)for(A=-4&I;C[(r=t+c|0)+Q|0]=i[g+t|0],C[Q+(E=c+(r=1|t)|0)|0]=i[g+r|0],C[Q+(E=c+(r=2|t)|0)|0]=i[g+r|0],C[Q+(E=c+(r=3|t)|0)|0]=i[g+r|0],r=o,o=(t=t+4|0)>>>0<4?r+1|0:r,r=h,h=r=(y=y+4|0)>>>0<4?r+1|0:r,(0|A)!=(0|y)|(0|e)!=(0|r););if((I&=3)|(A=0))for(;C[(e=t+c|0)+Q|0]=i[g+t|0],o=(t=t+1|0)?o:o+1|0,r=s,s=r=(_=_+1|0)?r:r+1|0,(0|I)!=(0|_)|(0|A)!=(0|r););}return n=B+704|0,0}function $(A,g,I){var e=0,B=0,a=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0;for(B=2036477234,r=857760878,e=1634760805,Q=1797285236,a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,E=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,t=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,y=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,o=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,D=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,_=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,n=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,h=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,s=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,g=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,I=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24;c=I,I=Ig((p=g)^(g=I+e|0),16),c=_=Ig(c^(e=I+_|0),12),w=Ig((p=g+_|0)^I,8),g=Ig(c^(_=w+e|0),7),e=n,n=Ig((I=Q+n|0)^a,16),e=Ig(e^(y=n+y|0),12),a=h,Q=Ig((B=B+h|0)^E,16),a=Ig(a^(h=Q+o|0),12),o=Ig((B=a+B|0)^Q,8),I=Ig(o^(Q=g+(f=I+e|0)|0),16),E=Ig((r=r+s|0)^t,16),s=Ig((t=E+D|0)^s,12),c=g,g=Ig((r=r+s|0)^E,8),c=Ig(c^(t=I+(k=g+t|0)|0),12),E=Ig(I^(Q=c+Q|0),8),I=Ig((D=E+t|0)^c,7),c=B,B=e,f=Ig(n^f,8),B=Ig(B^(e=f+y|0),7),n=Ig((t=c+B|0)^g,16),y=Ig((g=n+_|0)^B,12),t=Ig(n^(B=y+t|0),8),n=Ig((_=g+t|0)^y,7),g=Ig((g=a)^(a=o+h|0),7),h=Ig((r=g+r|0)^w,16),o=Ig(g^(e=h+e|0),12),g=Ig(h^(r=o+r|0),8),h=Ig((y=e+g|0)^o,7),c=a,e=Ig(s^k,7),o=Ig((a=e+p|0)^f,16),p=Ig(e^(s=c+o|0),12),a=Ig(o^(e=p+a|0),8),s=Ig((o=s+a|0)^p,7),10!=(0|(d=d+1|0)););C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+24|0]=E,C[A+25|0]=E>>>8,C[A+26|0]=E>>>16,C[A+27|0]=E>>>24,C[A+20|0]=t,C[A+21|0]=t>>>8,C[A+22|0]=t>>>16,C[A+23|0]=t>>>24,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+12|0]=Q,C[A+13|0]=Q>>>8,C[A+14|0]=Q>>>16,C[A+15|0]=Q>>>24,C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+4|0]=r,C[A+5|0]=r>>>8,C[A+6|0]=r>>>16,C[A+7|0]=r>>>24}function AA(A,g,I){var e=0,B=0,a=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0;for(e=1797285236,o=2036477234,c=857760878,B=1634760805,a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,t=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,r=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,p=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,s=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,f=20,n=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,h=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,E=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,y=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,_=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,g=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,I=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24;Q=Ig(I+c|0,7)^a,D=Ig(Q+c|0,9)^s,E=Ig(B+n|0,7)^E,w=Ig(E+B|0,9)^t,k=Ig(w+E|0,13)^n,y=Ig(e+h|0,7)^y,r=Ig(y+e|0,9)^r,t=Ig(r+y|0,13)^h,e=Ig(r+t|0,18)^e,a=Ig(g+o|0,7)^p,n=k^Ig(e+a|0,7),s=D^Ig(n+e|0,9),p=Ig(n+s|0,13)^a,e=Ig(s+p|0,18)^e,_=Ig(a+o|0,9)^_,d=Ig(_+a|0,13)^g,g=Ig(d+_|0,18)^o,h=Ig(g+Q|0,7)^t,t=Ig(h+g|0,9)^w,a=Ig(t+h|0,13)^Q,o=Ig(a+t|0,18)^g,Q=Ig(Q+D|0,13)^I,I=Ig(Q+D|0,18)^c,g=Ig(I+E|0,7)^d,r=Ig(g+I|0,9)^r,E=Ig(g+r|0,13)^E,c=Ig(r+E|0,18)^I,B=Ig(w+k|0,18)^B,I=Ig(B+y|0,7)^Q,_=Ig(I+B|0,9)^_,y=Ig(I+_|0,13)^y,B=Ig(_+y|0,18)^B,Q=f>>>0>2,f=f-2|0,Q;);return C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+24|0]=t,C[A+25|0]=t>>>8,C[A+26|0]=t>>>16,C[A+27|0]=t>>>24,C[A+20|0]=r,C[A+21|0]=r>>>8,C[A+22|0]=r>>>16,C[A+23|0]=r>>>24,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+12|0]=e,C[A+13|0]=e>>>8,C[A+14|0]=e>>>16,C[A+15|0]=e>>>24,C[A+8|0]=o,C[A+9|0]=o>>>8,C[A+10|0]=o>>>16,C[A+11|0]=o>>>24,C[A+4|0]=c,C[A+5|0]=c>>>8,C[A+6|0]=c>>>16,C[A+7|0]=c>>>24,0}function gA(A,g){var I,e,B=0,i=0,r=0,t=0;n=I=n-288|0,i=40+((B=a[A+32>>2]>>>3&63)+A|0)|0,B>>>0>=56?(OA(i,35040,64-B|0),S(A,A+40|0,I,I+256|0),a[A+88>>2]=0,a[A+92>>2]=0,a[A+80>>2]=0,a[A+84>>2]=0,a[A+72>>2]=0,a[A+76>>2]=0,a[(B=A- -64|0)>>2]=0,a[B+4>>2]=0,a[A+56>>2]=0,a[A+60>>2]=0,a[A+48>>2]=0,a[A+52>>2]=0,a[A+40>>2]=0,a[A+44>>2]=0):OA(i,35040,56-B|0),r=(B=16711680&(i=a[A+32>>2]))>>>8|0,t=B<<24,e=(B=-16777216&i)>>>24|0,B=(t|=B<<8)|-16777216&((255&(B=a[A+36>>2]))<<24|i>>>8)|16711680&((16777215&B)<<8|i>>>24)|B>>>8&65280|B>>>24,C[A+96|0]=B,C[A+97|0]=B>>>8,C[A+98|0]=B>>>16,C[A+99|0]=B>>>24,B=r|e|i<<24|(65280&i)<<8,B|=r=0,C[A+100|0]=B,C[A+101|0]=B>>>8,C[A+102|0]=B>>>16,C[A+103|0]=B>>>24,S(A,A+40|0,I,I+256|0),B=(B=a[A>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[0|g]=B,C[g+1|0]=B>>>8,C[g+2|0]=B>>>16,C[g+3|0]=B>>>24,B=(B=a[A+4>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+4|0]=B,C[g+5|0]=B>>>8,C[g+6|0]=B>>>16,C[g+7|0]=B>>>24,B=(B=a[A+8>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+8|0]=B,C[g+9|0]=B>>>8,C[g+10|0]=B>>>16,C[g+11|0]=B>>>24,B=(B=a[A+12>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+12|0]=B,C[g+13|0]=B>>>8,C[g+14|0]=B>>>16,C[g+15|0]=B>>>24,B=(B=a[A+16>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+16|0]=B,C[g+17|0]=B>>>8,C[g+18|0]=B>>>16,C[g+19|0]=B>>>24,B=(B=a[A+20>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+20|0]=B,C[g+21|0]=B>>>8,C[g+22|0]=B>>>16,C[g+23|0]=B>>>24,B=(B=a[A+24>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+24|0]=B,C[g+25|0]=B>>>8,C[g+26|0]=B>>>16,C[g+27|0]=B>>>24,B=(B=a[A+28>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+28|0]=B,C[g+29|0]=B>>>8,C[g+30|0]=B>>>16,C[g+31|0]=B>>>24,dg(I,288),dg(A,104),n=I+288|0}function IA(A,g,I){var e,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0;if(n=e=n-96|0,I>>>0>=65&&(UA(A),eA(A,g,I),gA(A,e),I=32,g=e),UA(A),a[e+88>>2]=909522486,a[e+92>>2]=909522486,a[e+80>>2]=909522486,a[e+84>>2]=909522486,a[e+72>>2]=909522486,a[e+76>>2]=909522486,a[(t=E=e- -64|0)>>2]=909522486,a[t+4>>2]=909522486,a[e+56>>2]=909522486,a[e+60>>2]=909522486,a[e+48>>2]=909522486,a[e+52>>2]=909522486,a[e+40>>2]=909522486,a[e+44>>2]=909522486,a[e+32>>2]=909522486,a[e+36>>2]=909522486,I){if(I>>>0>=4)for(Q=124&I;C[0|(r=(t=e+32|0)+B|0)]=i[0|r]^i[g+B|0],C[0|(y=(r=1|B)+t|0)]=i[0|y]^i[g+r|0],C[0|(y=(r=2|B)+t|0)]=i[0|y]^i[g+r|0],C[0|(r=(r=t)+(t=3|B)|0)]=i[0|r]^i[g+t|0],B=B+4|0,(0|Q)!=(0|(o=o+4|0)););if(o=3&I)for(;C[0|(t=(e+32|0)+B|0)]=i[0|t]^i[g+B|0],B=B+1|0,(0|o)!=(0|(c=c+1|0)););}if(eA(A,e+32|0,64),UA(t=A+104|0),a[e+88>>2]=1549556828,a[e+92>>2]=1549556828,a[e+80>>2]=1549556828,a[e+84>>2]=1549556828,a[e+72>>2]=1549556828,a[e+76>>2]=1549556828,a[E>>2]=1549556828,a[E+4>>2]=1549556828,a[e+56>>2]=1549556828,a[e+60>>2]=1549556828,a[e+48>>2]=1549556828,a[e+52>>2]=1549556828,a[e+40>>2]=1549556828,a[e+44>>2]=1549556828,a[e+32>>2]=1549556828,a[e+36>>2]=1549556828,I){if(c=0,B=0,I>>>0>=4)for(E=124&I,o=0;C[0|(Q=(A=e+32|0)+B|0)]=i[0|Q]^i[g+B|0],C[0|(r=(Q=1|B)+A|0)]=i[0|r]^i[g+Q|0],C[0|(r=(Q=2|B)+A|0)]=i[0|r]^i[g+Q|0],C[0|(Q=(r=A)+(A=3|B)|0)]=i[0|Q]^i[A+g|0],B=B+4|0,(0|E)!=(0|(o=o+4|0)););if(A=3&I)for(;C[0|(I=(e+32|0)+B|0)]=i[0|I]^i[g+B|0],B=B+1|0,(0|A)!=(0|(c=c+1|0)););}return eA(t,A=e+32|0,64),dg(A,64),dg(e,32),n=e+96|0,0}function CA(A,g,I,C,e,i,r){var t=0,Q=0,o=0,c=0,E=0,y=0,_=0;if(g-65>>>0<4294967232|r>>>0>64)A=-1;else{y=t=n,n=t=t-512&-64;A:{g:if(!(!(!(C|e)|I)|!A|((Q=255&g)-65&255)>>>0<=191|!(!(g=255&r)||i)|g>>>0>=65)){if(g){if(!i)break g;VA(t- -64|0,0,293),a[t+56>>2]=327033209,a[t+60>>2]=1541459225,a[t+48>>2]=-79577749,a[t+52>>2]=528734635,a[t+40>>2]=725511199,a[t+44>>2]=-1694144372,a[t+32>>2]=-1377402159,a[t+36>>2]=1359893119,a[t+24>>2]=1595750129,a[t+28>>2]=-1521486534,a[t+16>>2]=-23791573,a[t+20>>2]=1013904242,a[t+8>>2]=-2067093701,a[t+12>>2]=-1150833019,a[t>>2]=-222443256^(g<<8|Q),a[t+4>>2]=g>>>24^1779033703,VA((r=t+384|0)+g|0,0,128-g|0),OA(r,i,g),OA(t+96|0,r,128),a[t+352>>2]=128,dg(r,128),g=128}else VA(t- -64|0,0,293),a[t+56>>2]=327033209,a[t+60>>2]=1541459225,a[t+48>>2]=-79577749,a[t+52>>2]=528734635,a[t+40>>2]=725511199,a[t+44>>2]=-1694144372,a[t+32>>2]=-1377402159,a[t+36>>2]=1359893119,a[t+24>>2]=1595750129,a[t+28>>2]=-1521486534,a[t+16>>2]=-23791573,a[t+20>>2]=1013904242,a[t+8>>2]=-2067093701,a[t+12>>2]=-1150833019,a[t>>2]=-222443256^Q,a[t+4>>2]=1779033703,g=0;I:if(C|e)for(_=t+224|0,o=t+96|0;;){if(r=g+o|0,!e&C>>>0<=(i=256-g|0)>>>0){OA(r,I,C),a[t+352>>2]=C+a[t+352>>2];break I}if(OA(r,I,i),a[t+352>>2]=i+a[t+352>>2],c=g=a[t+68>>2],g=(E=(r=a[t+64>>2])+128|0)>>>0<128?g+1|0:g,a[t+64>>2]=E,a[t+68>>2]=g,g=a[t+76>>2],g=(c=r=-1==(0|c)&r>>>0>4294967167)>>>0>(r=r+a[t+72>>2]|0)>>>0?g+1|0:g,a[t+72>>2]=r,a[t+76>>2]=g,s(t,o),OA(o,_,128),g=a[t+352>>2]-128|0,a[t+352>>2]=g,I=I+i|0,!((e=e-(C>>>0<i>>>0)|0)|(C=C-i|0)))break}R(t,A,Q),n=y;break A}ig(),B()}A=0}return A}function eA(A,g,I){var e,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0;if(n=e=n-288|0,I)if(B=a[A+36>>2],c=(Q=a[A+32>>2])+(o=I<<3)|0,a[A+32>>2]=c,t=(I>>>29|0)+B|0,a[A+36>>2]=o>>>0>c>>>0?t+1|0:t,o=A+40|0,!0&(t=64-(c=63&((7&B)<<29|Q>>>3))|0)>>>0<=I>>>0){if(B=0,Q=0,(63^c)>>>0>=3)for(s=124&t;C[(B+c|0)+o|0]=i[g+B|0],C[(c+(_=1|B)|0)+o|0]=i[g+_|0],C[(c+(_=2|B)|0)+o|0]=i[g+_|0],C[(c+(_=3|B)|0)+o|0]=i[g+_|0],Q=(B=B+4|0)>>>0<4?Q+1|0:Q,(r=(h=h+4|0)>>>0<4?r+1|0:r)|(0|h)!=(0|s););if(r=3&t)for(;C[(B+c|0)+o|0]=i[g+B|0],Q=(B=B+1|0)?Q:Q+1|0,(E=(y=y+1|0)?E:E+1|0)|(0|r)!=(0|y););if(S(A,o,e,E=e+256|0),g=g+t|0,!(r=0-((I>>>0<t>>>0)+0|0)|0)&(I=I-t|0)>>>0>63|r)for(;S(A,g,e,E),g=g- -64|0,r=r-1|0,!(r=(I=I+-64|0)>>>0<4294967232?r+1|0:r)&I>>>0>63|r;);if(I|r){if(A=3&I,y=0,E=0,B=0,Q=0,!r&I>>>0>=4|r)for(c=60&I,I=0,r=0;C[B+o|0]=i[g+B|0],C[(t=1|B)+o|0]=i[g+t|0],C[(t=2|B)+o|0]=i[g+t|0],C[(t=3|B)+o|0]=i[g+t|0],Q=(B=B+4|0)>>>0<4?Q+1|0:Q,(r=(I=I+4|0)>>>0<4?r+1|0:r)|(0|I)!=(0|c););if(A)for(;C[B+o|0]=i[g+B|0],Q=(B=B+1|0)?Q:Q+1|0,(E=(y=y+1|0)?E:E+1|0)|(0|A)!=(0|y););}dg(e,288)}else{if(B=0,Q=0,I>>>0>=4)for(A=-4&I;C[(B+c|0)+o|0]=i[g+B|0],C[(c+(t=1|B)|0)+o|0]=i[g+t|0],C[(c+(t=2|B)|0)+o|0]=i[g+t|0],C[(c+(t=3|B)|0)+o|0]=i[g+t|0],Q=(B=B+4|0)>>>0<4?Q+1|0:Q,(r=(h=h+4|0)>>>0<4?r+1|0:r)|(0|A)!=(0|h););if(A=3&I)for(;C[(B+c|0)+o|0]=i[g+B|0],Q=(B=B+1|0)?Q:Q+1|0,(E=(y=y+1|0)?E:E+1|0)|(0|A)!=(0|y););}n=e+288|0}function BA(A,g,I,e){var B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0;A:{if((r=a[A+56>>2])|(B=a[A+60>>2])){if(y=Q=16-r|0,c=(Q=(0|(t=0-((r>>>0>16)+B|0)|0))==(0|e)&I>>>0>Q>>>0|e>>>0>t>>>0)?y:I,y=Q=Q?t:e,Q|c){if(Q=A- -64|0,t=0,r=0,!y&c>>>0>=4|y)for(E=-4&c;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],B=(_=1|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+_|0],B=(_=2|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+_|0],B=(_=3|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+_|0],B=r,r=(t=t+4|0)>>>0<4?B+1|0:B,B=h,h=B=(o=o+4|0)>>>0<4?B+1|0:B,(0|o)!=(0|E)|(0|y)!=(0|B););if(h=B=0,B|(o=3&c))for(;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],r=(t=t+1|0)?r:r+1|0,B=s,s=B=(n=n+1|0)?B:B+1|0,(0|o)!=(0|n)|(0|h)!=(0|B););r=a[A+56>>2],B=a[A+60>>2]}if(B=B+y|0,B=(r=r+c|0)>>>0<c>>>0?B+1|0:B,a[A+56>>2]=r,a[A+60>>2]=B,!B&r>>>0<16)break A;q(A,A- -64|0,16,0),a[A+56>>2]=0,a[A+60>>2]=0,I=(r=I)-c|0,e=e-((r>>>0<c>>>0)+y|0)|0,g=g+c|0}if(!e&I>>>0>=16|e&&(q(A,g,r=-16&I,e),I&=15,e=0,g=g+r|0),I|e){if(Q=A- -64|0,n=0,s=0,t=0,r=0,!e&I>>>0>=4|e)for(c=12&I,y=0,o=0;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],B=(E=1|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+E|0],B=(E=2|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+E|0],B=(E=3|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+E|0],r=(t=t+4|0)>>>0<4?r+1|0:r,B=h,h=B=(o=o+4|0)>>>0<4?B+1|0:B,(0|c)!=(0|o)|(0|y)!=(0|B););if(h=B=0,B|(o=3&I))for(;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],r=(t=t+1|0)?r:r+1|0,B=s,s=B=(n=n+1|0)?B:B+1|0,(0|o)!=(0|n)|(0|h)!=(0|B););r=e+a[A+60>>2]|0,r=(g=I+a[A+56>>2]|0)>>>0<I>>>0?r+1|0:r,a[A+56>>2]=g,a[A+60>>2]=r}}}function aA(A,g,I){var C,e=0,B=0,i=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0;n=a[g+4>>2],e=a[A+4>>2],h=a[g+8>>2],B=a[A+8>>2],s=a[g+12>>2],i=a[A+12>>2],p=a[g+16>>2],r=a[A+16>>2],f=a[g+20>>2],t=a[A+20>>2],y=a[g+24>>2],Q=a[A+24>>2],D=a[g+28>>2],o=a[A+28>>2],w=a[g+32>>2],c=a[A+32>>2],k=a[g+36>>2],E=a[A+36>>2],I=0-I|0,_=a[A>>2],a[A>>2]=I&(_^a[g>>2])^_,a[A+36>>2]=E^I&(E^k),a[A+32>>2]=c^I&(c^w),a[A+28>>2]=o^I&(o^D),a[A+24>>2]=Q^I&(Q^y),a[A+20>>2]=t^I&(t^f),a[A+16>>2]=r^I&(r^p),a[A+12>>2]=i^I&(i^s),a[A+8>>2]=B^I&(B^h),a[A+4>>2]=e^I&(e^n),e=a[A+44>>2],n=a[g+44>>2],B=a[A+48>>2],h=a[g+48>>2],i=a[A+52>>2],s=a[g+52>>2],r=a[A+56>>2],p=a[g+56>>2],t=a[A+60>>2],f=a[g+60>>2],Q=a[(y=A- -64|0)>>2],D=a[g- -64>>2],o=a[A+68>>2],w=a[g+68>>2],c=a[A+72>>2],k=a[g+72>>2],E=a[A+40>>2],_=a[g+40>>2],C=a[A+76>>2],a[A+76>>2]=C^I&(a[g+76>>2]^C),a[A+72>>2]=c^I&(c^k),a[A+68>>2]=o^I&(o^w),a[y>>2]=Q^I&(Q^D),a[A+60>>2]=t^I&(t^f),a[A+56>>2]=r^I&(r^p),a[A+52>>2]=i^I&(i^s),a[A+48>>2]=B^I&(B^h),a[A+44>>2]=e^I&(e^n),a[A+40>>2]=E^I&(E^_),e=a[A+84>>2],n=a[g+84>>2],B=a[A+88>>2],h=a[g+88>>2],i=a[A+92>>2],s=a[g+92>>2],r=a[A+96>>2],p=a[g+96>>2],t=a[A+100>>2],f=a[g+100>>2],Q=a[A+104>>2],y=a[g+104>>2],o=a[A+108>>2],D=a[g+108>>2],c=a[A+112>>2],w=a[g+112>>2],E=a[A+80>>2],k=a[g+80>>2],_=a[g+116>>2],g=a[A+116>>2],a[A+116>>2]=I&(_^g)^g,a[A+112>>2]=c^I&(c^w),a[A+108>>2]=o^I&(o^D),a[A+104>>2]=Q^I&(Q^y),a[A+100>>2]=t^I&(t^f),a[A+96>>2]=r^I&(r^p),a[A+92>>2]=i^I&(i^s),a[A+88>>2]=B^I&(B^h),a[A+84>>2]=e^I&(e^n),a[A+80>>2]=E^I&(E^k)}function iA(A,g){var I,C,e=0;for(n=I=n-192|0,K(C=I+144|0,g),K(e=I+96|0,C),K(e,e),d(e,g,e),d(C,C,e),K(g=I+48|0,C),d(e,e,g),K(g,e),K(g,g),K(g,g),K(g,g),K(g,g),d(e,g,e),K(g,e),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(g,g,e),K(I,g),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),d(g,I,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(e,g,e),K(g,e),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(g,g,e),K(I,g),g=1;K(I,I),100!=(0|(g=g+1|0)););d(g=I+48|0,I,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(e=I+96|0,g,e),K(e,e),K(e,e),K(e,e),K(e,e),K(e,e),d(A,e,I+144|0),n=I+192|0}function rA(A,g,I){var C,e,B,i,r,Q,o,c,E=0;n=C=n-128|0,a[A>>2]=1,a[A+4>>2]=0,a[A+8>>2]=0,a[A+12>>2]=0,a[A+16>>2]=0,a[A+20>>2]=0,a[A+24>>2]=0,a[A+28>>2]=0,a[A+32>>2]=0,a[A+36>>2]=0,a[A+40>>2]=1,VA(A+44|0,0,76),aA(A,g=t(g,960)+2688|0,(255&(1^(E=I-((I>>31&I)<<1)|0)))-1>>>31|0),aA(A,g+120|0,(255&(2^E))-1>>>31|0),aA(A,g+240|0,(255&(3^E))-1>>>31|0),aA(A,g+360|0,(255&(4^E))-1>>>31|0),aA(A,g+480|0,(255&(5^E))-1>>>31|0),aA(A,g+600|0,(255&(6^E))-1>>>31|0),aA(A,g+720|0,(255&(7^E))-1>>>31|0),aA(A,g+840|0,(255&(8^E))-1>>>31|0),g=a[A+76>>2],a[C+40>>2]=a[A+72>>2],a[C+44>>2]=g,E=a[4+(g=A- -64|0)>>2],a[C+32>>2]=a[g>>2],a[C+36>>2]=E,g=a[A+60>>2],a[C+24>>2]=a[A+56>>2],a[C+28>>2]=g,g=a[A+52>>2],a[C+16>>2]=a[A+48>>2],a[C+20>>2]=g,g=a[A+44>>2],a[C+8>>2]=a[A+40>>2],a[C+12>>2]=g,g=a[A+12>>2],a[C+56>>2]=a[A+8>>2],a[C+60>>2]=g,E=a[A+20>>2],a[(g=C- -64|0)>>2]=a[A+16>>2],a[g+4>>2]=E,g=a[A+28>>2],a[C+72>>2]=a[A+24>>2],a[C+76>>2]=g,g=a[A+36>>2],a[C+80>>2]=a[A+32>>2],a[C+84>>2]=g,g=a[A+4>>2],a[C+48>>2]=a[A>>2],a[C+52>>2]=g,g=a[A+84>>2],E=a[A+88>>2],e=a[A+92>>2],B=a[A+96>>2],i=a[A+100>>2],r=a[A+104>>2],Q=a[A+108>>2],o=a[A+112>>2],c=a[A+80>>2],a[C+124>>2]=0-a[A+116>>2],a[C+120>>2]=0-o,a[C+116>>2]=0-Q,a[C+112>>2]=0-r,a[C+108>>2]=0-i,a[C+104>>2]=0-B,a[C+100>>2]=0-e,a[C+96>>2]=0-E,a[C+92>>2]=0-g,a[C+88>>2]=0-c,aA(A,C+8|0,(128&I)>>>7|0),n=C+128|0}function tA(A,g,I,e){var B=0,a=0,r=0,t=0,Q=0,o=0,c=0;if(I|e)A:for(c=A+224|0,Q=A+96|0,a=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24;;){if(B=a+Q|0,!e&I>>>0<=(r=256-a|0)>>>0){OA(B,g,I),g=I+(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)|0,C[A+352|0]=g,C[A+353|0]=g>>>8,C[A+354|0]=g>>>16,C[A+355|0]=g>>>24;break A}if(OA(B,g,r),B=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)+r|0,C[A+352|0]=B,C[A+353|0]=B>>>8,C[A+354|0]=B>>>16,C[A+355|0]=B>>>24,o=a=i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24,a=(t=128+(B=i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)|0)>>>0<128?a+1|0:a,C[A+64|0]=t,C[A+65|0]=t>>>8,C[A+66|0]=t>>>16,C[A+67|0]=t>>>24,C[A+68|0]=a,C[A+69|0]=a>>>8,C[A+70|0]=a>>>16,C[A+71|0]=a>>>24,a=i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24,a=(o=B=-1==(0|o)&B>>>0>4294967167)>>>0>(B=B+(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)|0)>>>0?a+1|0:a,C[A+72|0]=B,C[A+73|0]=B>>>8,C[A+74|0]=B>>>16,C[A+75|0]=B>>>24,C[A+76|0]=a,C[A+77|0]=a>>>8,C[A+78|0]=a>>>16,C[A+79|0]=a>>>24,s(A,Q),OA(Q,c,128),B=a=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)-128|0,C[A+352|0]=B,C[A+353|0]=B>>>8,C[A+354|0]=B>>>16,C[A+355|0]=B>>>24,g=g+r|0,!((e=e-(I>>>0<r>>>0)|0)|(I=I-r|0)))break}return 0}function QA(A,g){var I,C=0,e=0,B=0,i=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0;C=a[g+4>>2],B=a[g+44>>2],i=a[g+8>>2],r=a[g+48>>2],t=a[g+12>>2],Q=a[g+52>>2],o=a[g+16>>2],c=a[g+56>>2],E=a[g+20>>2],y=a[g+60>>2],_=a[g+24>>2],n=a[(e=g- -64|0)>>2],h=a[g+28>>2],s=a[g+68>>2],p=a[g+32>>2],f=a[g+72>>2],D=a[g+36>>2],I=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=D+I,a[A+32>>2]=p+f,a[A+28>>2]=h+s,a[A+24>>2]=_+n,a[A+20>>2]=E+y,a[A+16>>2]=o+c,a[A+12>>2]=t+Q,a[A+8>>2]=i+r,a[A+4>>2]=C+B,C=a[g+4>>2],B=a[g+44>>2],i=a[g+8>>2],r=a[g+48>>2],t=a[g+12>>2],Q=a[g+52>>2],o=a[g+16>>2],c=a[g+56>>2],E=a[g+20>>2],y=a[g+60>>2],_=a[g+24>>2],e=a[e>>2],n=a[g+28>>2],h=a[g+68>>2],s=a[g+32>>2],p=a[g+72>>2],f=a[g>>2],D=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=p-s,a[A+68>>2]=h-n,a[A- -64>>2]=e-_,a[A+60>>2]=y-E,a[A+56>>2]=c-o,a[A+52>>2]=Q-t,a[A+48>>2]=r-i,a[A+44>>2]=B-C,a[A+40>>2]=D-f,C=a[g+84>>2],a[A+80>>2]=a[g+80>>2],a[A+84>>2]=C,C=a[g+92>>2],a[A+88>>2]=a[g+88>>2],a[A+92>>2]=C,C=a[g+100>>2],a[A+96>>2]=a[g+96>>2],a[A+100>>2]=C,C=a[g+108>>2],a[A+104>>2]=a[g+104>>2],a[A+108>>2]=C,C=a[g+116>>2],a[A+112>>2]=a[g+112>>2],a[A+116>>2]=C,d(A+120|0,g+120|0,1424)}function oA(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y,_,h=0,s=0,p=0,f=0,D=0;h=a[g+12>>2],s=a[g+8>>2],p=a[g+4>>2],C=n+-64&-64,g=a[g>>2],a[C>>2]=a[35248+((255&g)<<2)>>2],a[C+4>>2]=a[35248+(p>>>6&1020)>>2],a[C+8>>2]=a[35248+(s>>>14&1020)>>2],a[C+12>>2]=a[35248+(h>>>22&1020)>>2],a[C+16>>2]=a[35248+((255&p)<<2)>>2],a[C+20>>2]=a[35248+(s>>>6&1020)>>2],a[C+24>>2]=a[35248+(h>>>14&1020)>>2],a[C+28>>2]=a[35248+(g>>>22&1020)>>2],a[C+32>>2]=a[35248+((255&s)<<2)>>2],a[C+36>>2]=a[35248+(h>>>6&1020)>>2],a[C+40>>2]=a[35248+(g>>>14&1020)>>2],a[C+44>>2]=a[35248+(p>>>22&1020)>>2],a[C+48>>2]=a[35248+((255&h)<<2)>>2],a[C+52>>2]=a[35248+(g>>>6&1020)>>2],a[C+56>>2]=a[35248+(p>>>14&1020)>>2],a[C+60>>2]=a[35248+(s>>>22&1020)>>2],g=a[C+12>>2],h=a[C>>2],s=a[C+4>>2],p=a[C+8>>2],e=a[C+28>>2],B=a[C+16>>2],i=a[C+20>>2],r=a[C+24>>2],t=a[C+44>>2],Q=a[C+32>>2],o=a[C+36>>2],c=a[C+40>>2],E=a[I>>2],y=a[I+4>>2],_=a[I+8>>2],f=A,D=a[I+12>>2]^a[C+48>>2]^Ig(a[C+52>>2],8)^Ig(a[C+56>>2],16)^Ig(a[C+60>>2],24),a[f+12>>2]=D,f=A,D=Ig(o,8)^Q^Ig(c,16)^Ig(t,24)^_,a[f+8>>2]=D,f=A,D=Ig(i,8)^B^Ig(r,16)^Ig(e,24)^y,a[f+4>>2]=D,f=A,D=Ig(s,8)^h^Ig(p,16)^Ig(g,24)^E,a[f>>2]=D}function cA(A,g){var I,e,B,i,r,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0;(Q=a[A+56>>2])|(o=a[A+60>>2])&&(C[(E=A- -64|0)+Q|0]=1,!((p=Q+1|0)?o:o+1|0)&p>>>0<=15&&VA(65+(A+Q|0)|0,0,15-Q|0),C[A+80|0]=1,q(A,E,16,0)),p=a[A+52>>2],h=a[A+48>>2],E=a[A+44>>2],Q=a[A+24>>2],y=a[A+28>>2]+(Q>>>26|0)|0,c=a[A+32>>2]+(y>>>26|0)|0,I=a[A+36>>2]+(c>>>26|0)|0,o=(n=(Q=(Q=(67108863&Q)+((_=a[A+20>>2]+t(I>>>26|0,5)|0)>>>26|0)|0)&(y=(c=(r=(67108863&I)+((i=(e=67108863&c)+((B=(s=67108863&y)+((_=Q+((o=5+(n=67108863&_)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)-67108864|0)>>31)|_&(c=67108863&(_=(c>>>31|0)-1|0)))<<26|o&c|y&n)+a[A+40>>2]|0,C[0|g]=o,C[g+1|0]=o>>>8,C[g+2|0]=o>>>16,C[g+3|0]=o>>>24,n=o>>>0<n>>>0,o=0,o=(Q=(s=y&s|c&B)<<20|Q>>>6)>>>0>(Q=Q+E|0)>>>0?1:o,o=(E=Q)>>>0>(Q=Q+n|0)>>>0?o+1|0:o,C[g+4|0]=Q,C[g+5|0]=Q>>>8,C[g+6|0]=Q>>>16,C[g+7|0]=Q>>>24,Q=0,E=(E=(c=y&e|c&i)<<14|s>>>12)>>>0>(h=E+h|0)>>>0?1:Q,Q=h,h=o,Q=Q+o|0,o=E,o=Q>>>0<h>>>0?o+1|0:o,C[g+8|0]=Q,C[g+9|0]=Q>>>8,C[g+10|0]=Q>>>16,C[g+11|0]=Q>>>24,o=(Q=(Q=(_&r|y&I)<<8|c>>>18)+p|0)+o|0,C[g+12|0]=o,C[g+13|0]=o>>>8,C[g+14|0]=o>>>16,C[g+15|0]=o>>>24,dg(A,88)}function EA(A,g,I){var e,B=0;return n=e=n-16|0,C[e+15|0]=0,B=-1,0|Jg[a[8806]](A,g,I)||(C[e+15|0]=i[0|A]|i[e+15|0],C[e+15|0]=i[A+1|0]|i[e+15|0],C[e+15|0]=i[A+2|0]|i[e+15|0],C[e+15|0]=i[A+3|0]|i[e+15|0],C[e+15|0]=i[A+4|0]|i[e+15|0],C[e+15|0]=i[A+5|0]|i[e+15|0],C[e+15|0]=i[A+6|0]|i[e+15|0],C[e+15|0]=i[A+7|0]|i[e+15|0],C[e+15|0]=i[A+8|0]|i[e+15|0],C[e+15|0]=i[A+9|0]|i[e+15|0],C[e+15|0]=i[A+10|0]|i[e+15|0],C[e+15|0]=i[A+11|0]|i[e+15|0],C[e+15|0]=i[A+12|0]|i[e+15|0],C[e+15|0]=i[A+13|0]|i[e+15|0],C[e+15|0]=i[A+14|0]|i[e+15|0],C[e+15|0]=i[A+15|0]|i[e+15|0],C[e+15|0]=i[A+16|0]|i[e+15|0],C[e+15|0]=i[A+17|0]|i[e+15|0],C[e+15|0]=i[A+18|0]|i[e+15|0],C[e+15|0]=i[A+19|0]|i[e+15|0],C[e+15|0]=i[A+20|0]|i[e+15|0],C[e+15|0]=i[A+21|0]|i[e+15|0],C[e+15|0]=i[A+22|0]|i[e+15|0],C[e+15|0]=i[A+23|0]|i[e+15|0],C[e+15|0]=i[A+24|0]|i[e+15|0],C[e+15|0]=i[A+25|0]|i[e+15|0],C[e+15|0]=i[A+26|0]|i[e+15|0],C[e+15|0]=i[A+27|0]|i[e+15|0],C[e+15|0]=i[A+28|0]|i[e+15|0],C[e+15|0]=i[A+29|0]|i[e+15|0],C[e+15|0]=i[A+30|0]|i[e+15|0],C[e+15|0]=i[A+31|0]|i[e+15|0],B=(i[e+15|0]<<23)-8388608>>31),n=e+16|0,B}function yA(A,g){var I,e,B,i,r,Q,o,c=0,E=0;e=a[g+32>>2],B=a[g+28>>2],i=a[g+24>>2],r=a[g+20>>2],Q=a[g+16>>2],o=a[g+12>>2],c=a[g+4>>2],E=a[g>>2],I=a[g+36>>2],g=a[g+8>>2],E=t((e+(B+(i+(r+(Q+(o+((c+(E+(t(I,19)+16777216>>>25|0)>>26)>>25)+g>>26)>>25)>>26)>>25)>>26)>>25)>>26)+I>>25,19)+E|0,C[0|A]=E,C[A+2|0]=E>>>16,C[A+1|0]=E>>>8,c=c+(E>>26)|0,C[A+5|0]=c>>>14,C[A+4|0]=c>>>6,C[A+3|0]=E>>>24&3|c<<2,g=g+(c>>25)|0,C[A+8|0]=g>>>13,C[A+7|0]=g>>>5,C[A+6|0]=g<<3|(29360128&c)>>>22,E=(g>>26)+o|0,C[A+11|0]=E>>>11,C[A+10|0]=E>>>3,C[A+9|0]=E<<5|(65011712&g)>>>21,c=(E>>25)+Q|0,C[A+15|0]=c>>>18,C[A+14|0]=c>>>10,C[A+13|0]=c>>>2,g=(c>>26)+r|0,C[A+16|0]=g,C[A+12|0]=c<<6|(33030144&E)>>>19,C[A+18|0]=g>>>16,C[A+17|0]=g>>>8,c=(g>>25)+i|0,C[A+21|0]=c>>>15,C[A+20|0]=c>>>7,C[A+19|0]=g>>>24&1|c<<1,g=(c>>26)+B|0,C[A+24|0]=g>>>13,C[A+23|0]=g>>>5,C[A+22|0]=g<<3|(58720256&c)>>>23,c=(g>>25)+e|0,C[A+27|0]=c>>>12,C[A+26|0]=c>>>4,C[A+25|0]=c<<4|(31457280&g)>>>21,g=I+(c>>26)|0,C[A+30|0]=g>>>10,C[A+29|0]=g>>>2,C[A+31|0]=(33292288&g)>>>18,C[A+28|0]=g<<6|(66060288&c)>>>20}function _A(A,g,I){var e,B=0,a=0,r=0,t=0,Q=0,o=0,c=0;if(n=e=n-192|0,I>>>0>=129&&(dA(A),W(A,g,I,0),J(A,e),I=64,g=e),dA(A),VA(e- -64|0,54,128),I){if(I>>>0>=4)for(c=252&I;C[0|(B=(r=e- -64|0)+a|0)]=i[0|B]^i[g+a|0],C[0|(t=(B=1|a)+r|0)]=i[0|t]^i[g+B|0],C[0|(t=(B=2|a)+r|0)]=i[0|t]^i[g+B|0],C[0|(B=(B=r)+(r=3|a)|0)]=i[0|B]^i[g+r|0],a=a+4|0,(0|c)!=(0|(Q=Q+4|0)););if(Q=3&I)for(;C[0|(r=(e- -64|0)+a|0)]=i[0|r]^i[g+a|0],a=a+1|0,(0|Q)!=(0|(o=o+1|0)););}if(W(A,a=e- -64|0,128,0),dA(r=A+208|0),VA(a,92,128),I){if(o=0,a=0,I>>>0>=4)for(c=252&I,Q=0;C[0|(B=(A=e- -64|0)+a|0)]=i[0|B]^i[g+a|0],C[0|(t=(B=1|a)+A|0)]=i[0|t]^i[g+B|0],C[0|(t=(B=2|a)+A|0)]=i[0|t]^i[g+B|0],C[0|(B=(B=A)+(A=3|a)|0)]=i[0|B]^i[A+g|0],a=a+4|0,(0|c)!=(0|(Q=Q+4|0)););if(A=3&I)for(;C[0|(I=(e- -64|0)+a|0)]=i[0|I]^i[g+a|0],a=a+1|0,(0|A)!=(0|(o=o+1|0)););}return W(r,A=e- -64|0,128,0),dg(A,128),dg(e,64),n=e+192|0,0}function nA(A,g){var I;return a[12+(I=n-16|0)>>2]=A,a[I+8>>2]=g,a[I+4>>2]=0,a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]]^i[a[I+8>>2]],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+1|0]^i[a[I+8>>2]+1|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+2|0]^i[a[I+8>>2]+2|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+3|0]^i[a[I+8>>2]+3|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+4|0]^i[a[I+8>>2]+4|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+5|0]^i[a[I+8>>2]+5|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+6|0]^i[a[I+8>>2]+6|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+7|0]^i[a[I+8>>2]+7|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+8|0]^i[a[I+8>>2]+8|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+9|0]^i[a[I+8>>2]+9|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+10|0]^i[a[I+8>>2]+10|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+11|0]^i[a[I+8>>2]+11|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+12|0]^i[a[I+8>>2]+12|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+13|0]^i[a[I+8>>2]+13|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+14|0]^i[a[I+8>>2]+14|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+15|0]^i[a[I+8>>2]+15|0],(a[I+4>>2]-1>>>8&1)-1|0}function hA(A,g,I,C,e,B,i){var r,t,Q,o=0,c=0,E=0,y=0;n=r=n-352|0,AA(r,B,i);A:{if(!(((o=!!(0|e))|!e&C>>>0>A-I>>>0)&A>>>0>I>>>0)&(!e&I-A>>>0>=C>>>0|A>>>0>=I>>>0)){if(a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,c=(i=(o=!!(0|e))|!e&C>>>0>=32)?32:C,E=i?0:e,i=o|!e&C>>>0>32,!(C|e)){y=1;break A}}else I=TA(A,I,C),a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,c=(i=o|!e&C>>>0>=32)?32:C,E=i?0:e,i=o|!e&C>>>0>32;OA(r- -64|0,I,c),y=0}return o=E,rg(t=r+32|0,t,Q=c+32|0,o=Q>>>0<32?o+1|0:o,o=B+16|0,r),fg(r+96|0,t),y||OA(A,r- -64|0,c),dg(r+32|0,64),i&&Qg(A+c|0,I+c|0,C-c|0,e-((C>>>0<c>>>0)+E|0)|0,o,r),dg(r,32),ng(I=r+96|0,A,C,e),Dg(I,g),dg(I,256),n=r+352|0,0}function sA(A,g){var I,C=0,e=0;I=g;A:{g:{I:{if(g&=255){if(3&A)for(;;){if(!(C=i[0|A])|(0|g)==(0|C))break A;if(!(3&(A=A+1|0)))break}if(-2139062144!=(-2139062144&((C=a[A>>2])|16843008-C)))break I;for(e=t(g,16843009);;){if(-2139062144!=(-2139062144&(16843008-(g=C^e)|g)))break I;if(C=a[A+4>>2],A=g=A+4|0,-2139062144!=(-2139062144&(16843008-C|C)))break}break g}C=A;C:{e:{B:if(3&A){if(g=0,!i[0|A])break C;for(;;){if(!(3&(A=A+1|0)))break B;if(!i[0|A])break}break e}for(;g=A,A=A+4|0,-2139062144==(-2139062144&(16843008-(e=a[g>>2])|e)););for(;g=(A=g)+1|0,i[0|A];);}g=A-C|0}A=g+C|0;break A}g=A}for(;;){if(!(C=i[0|(A=g)]))break A;if(g=A+1|0,(0|C)==(255&I))break}}return i[0|A]==(255&I)?A:0}function pA(A,g,I,C,e,B,i){var r,t,Q=0,o=0,c=0;n=r=n-96|0,AA(r,B,i),i=r+32|0,t=B+16|0,Jg[a[8808]](i,32,0,t,r),B=-1;A:{g:if(!(0|Jg[a[8802]](I,g,C,e,i))){if(B=0,!A)break A;I:{if(!(((I=!!(0|e))|!e&C>>>0>g-A>>>0)&A>>>0<g>>>0)&(!e&C>>>0<=A-g>>>0|A>>>0<=g>>>0)){if(!(C|e))break I;I=(B=!e&C>>>0>=32|!!(0|e))?32:C,Q=B?0:e}else g=TA(A,g,C),I=(B=I|!e&C>>>0>=32)?32:C,Q=B?0:e;if(B=Q,c=OA(r- -64|0,g,I),rg(i=r+32|0,i,o=I+32|0,B=o>>>0<32?B+1|0:B,t,r),A=OA(A,c,I),dg(i,64),B=0,!e&C>>>0<33)break g;Qg(A+I|0,g+I|0,C-I|0,e-(Q+(I>>>0>C>>>0)|0)|0,t,r);break g}rg(A=r+32|0,A,32,0,t,r),dg(A,64)}dg(r,32)}return n=r+96|0,B}function fA(A,g,I,C,e,B,r,t,Q,o){var c,E;return n=c=n-400|0,a[c+4>>2]=0,$(E=c+16|0,Q,o),o=i[Q+20|0]|i[Q+21|0]<<8|i[Q+22|0]<<16|i[Q+23|0]<<24,a[c+8>>2]=i[Q+16|0]|i[Q+17|0]<<8|i[Q+18|0]<<16|i[Q+19|0]<<24,a[c+12>>2]=o,yg(o=c+80|0,64,c+4|0,E),fg(Q=c+144|0,o),dg(o,64),ng(Q,B,r,t),ng(Q,35104,0-r&15,0),ng(Q,g,I,C),ng(Q,35104,0-I&15,0),a[c+72>>2]=r,a[c+76>>2]=t,ng(Q,B=c+72|0,8,0),a[c+72>>2]=I,a[c+76>>2]=C,ng(Q,B,8,0),Dg(Q,B=c+48|0),dg(Q,256),Q=nA(B,e),dg(B,16),A&&(Q?(VA(A,0,I),Q=-1):(eg(A,g,I,C,c+4|0,c+16|0),Q=0)),dg(c+16|0,32),n=c+400|0,Q}function DA(A,g,I,C,e,B,r,t,Q,o,c){var E,y,_;return n=E=n-384|0,a[E+4>>2]=0,$(y=E+16|0,o,c),c=i[o+20|0]|i[o+21|0]<<8|i[o+22|0]<<16|i[o+23|0]<<24,a[E+8>>2]=i[o+16|0]|i[o+17|0]<<8|i[o+18|0]<<16|i[o+19|0]<<24,a[E+12>>2]=c,yg(c=E- -64|0,64,_=E+4|0,y),fg(o=E+128|0,c),dg(c,64),ng(o,r,t,Q),ng(o,35104,0-t&15,0),eg(A,C,e,B,_,y),ng(o,A,e,B),ng(o,35104,0-e&15,0),a[E+56>>2]=t,a[E+60>>2]=Q,ng(o,A=E+56|0,8,0),a[E+56>>2]=e,a[E+60>>2]=B,ng(o,A,8,0),Dg(o,g),dg(o,256),I&&(a[I>>2]=16,a[I+4>>2]=0),dg(E+16|0,32),n=E+384|0,0}function wA(A,g,I,C){var e,B=0;return n=e=n-208|0,a[e+72>>2]=0,a[e+76>>2]=0,B=a[8479],a[e+8>>2]=a[8478],a[e+12>>2]=B,B=a[8481],a[e+16>>2]=a[8480],a[e+20>>2]=B,B=a[8483],a[e+24>>2]=a[8482],a[e+28>>2]=B,B=a[8485],a[e+32>>2]=a[8484],a[e+36>>2]=B,B=a[8487],a[e+40>>2]=a[8486],a[e+44>>2]=B,B=a[8489],a[e+48>>2]=a[8488],a[e+52>>2]=B,B=a[8491],a[e+56>>2]=a[8490],a[e+60>>2]=B,a[e+64>>2]=0,a[e+68>>2]=0,B=a[8477],a[e>>2]=a[8476],a[e+4>>2]=B,W(e,g,I,C),J(e,A),n=e+208|0,0}function kA(A,g){var I,e=0,B=0,a=0,r=0;if(C[15+(I=n-16|0)|0]=0,g){if(g>>>0>=4)for(r=-4&g;e=A+B|0,C[I+15|0]=i[0|e]|i[I+15|0],C[I+15|0]=i[e+1|0]|i[I+15|0],C[I+15|0]=i[e+2|0]|i[I+15|0],C[I+15|0]=i[e+3|0]|i[I+15|0],B=B+4|0,(0|r)!=(0|(a=a+4|0)););if(e=3&g)for(g=0;C[I+15|0]=i[A+B|0]|i[I+15|0],B=B+1|0,(0|e)!=(0|(g=g+1|0)););}return i[I+15|0]-1>>>8&1}function dA(A){var g=0;a[A+64>>2]=0,a[A+68>>2]=0,a[A+72>>2]=0,a[A+76>>2]=0,g=a[8477],a[A>>2]=a[8476],a[A+4>>2]=g,g=a[8479],a[A+8>>2]=a[8478],a[A+12>>2]=g,g=a[8481],a[A+16>>2]=a[8480],a[A+20>>2]=g,g=a[8483],a[A+24>>2]=a[8482],a[A+28>>2]=g,g=a[8485],a[A+32>>2]=a[8484],a[A+36>>2]=g,g=a[8487],a[A+40>>2]=a[8486],a[A+44>>2]=g,g=a[8489],a[A+48>>2]=a[8488],a[A+52>>2]=g,g=a[8491],a[A+56>>2]=a[8490],a[A+60>>2]=g}function lA(A,g,I){var e,B=0,r=0;if(a[12+(e=n-16|0)>>2]=A,a[e+8>>2]=g,A=0,C[e+7|0]=0,I){if(g=1&I,1!=(0|I))for(r=-2&I,I=0;C[e+7|0]=i[e+7|0]|i[a[e+12>>2]+A|0]^i[a[e+8>>2]+A|0],B=1|A,C[e+7|0]=i[e+7|0]|i[B+a[e+12>>2]|0]^i[a[e+8>>2]+B|0],A=A+2|0,(0|r)!=(0|(I=I+2|0)););g&&(C[e+7|0]=i[e+7|0]|i[a[e+12>>2]+A|0]^i[a[e+8>>2]+A|0])}return(i[e+7|0]-1>>>8&1)-1|0}function uA(A){for(var g=0,I=0,C=0,e=0,B=0,a=0,r=0,t=0,Q=0,o=0;e=(I=i[A+C|0])^i[0|(g=C+2432|0)]|e,B=I^i[g+192|0]|B,a=I^i[g+160|0]|a,r=I^i[g+128|0]|r,t=I^i[g+96|0]|t,Q=I^i[g- -64|0]|Q,o=I^i[g+32|0]|o,31!=(0|(C=C+1|0)););return((255&((g=127^(A=127&i[A+31|0]))|B))-1|(255&(g|a))-1|(255&(g|r))-1|(255&(122^A|t))-1|(255&(5^A|Q))-1|(255&(A|o))-1|(255&(A|e))-1)>>>8&1}function vA(A,g,I){var C=0,e=0,B=0,a=0;return e=31&(B=a=63&I),B=B>>>0>=32?-1>>>e|0:(C=-1>>>e|0)|(1<<e)-1<<32-e,B&=A,C&=g,e=31&a,a>>>0>=32?(C=B<<e,a=0):(C=(1<<e)-1&B>>>32-e|C<<e,a=B<<e),B=C,C=31&(e=0-I&63),e>>>0>=32?(C=-1<<C,I=0):C=(I=-1<<C)|(1<<C)-1&-1>>>32-C,A&=I,g&=C,C=31&e,e>>>0>=32?(I=0,A=g>>>C|0):(I=g>>>C|0,A=((1<<C)-1&g)<<32-C|A>>>C),h=I|B,A|a}function SA(A,g,I,C,e,B,i,r,t,Q){var o,c,E;return n=o=n-352|0,yg(E=o+32|0,64,t,Q),fg(c=o+96|0,E),dg(E,64),ng(c,B,i,r),ng(c,35168,0-i&15,0),ng(c,g,I,C),ng(c,35168,0-I&15,0),a[o+24>>2]=i,a[o+28>>2]=r,ng(c,B=o+24|0,8,0),a[o+24>>2]=I,a[o+28>>2]=C,ng(c,B,8,0),Dg(c,o),dg(c,256),B=nA(o,e),dg(o,16),A&&(B?(VA(A,0,I),B=-1):(JA(A,g,I,C,t,1,Q),B=0)),n=o+352|0,B}function bA(A,g,I,C,e,B,i,r,t,Q,o){var c,E,y;return n=c=n-336|0,yg(y=c+16|0,64,Q,o),fg(E=c+80|0,y),dg(y,64),ng(E,i,r,t),ng(E,35168,0-r&15,0),JA(A,C,e,B,Q,1,o),ng(E,A,e,B),ng(E,35168,0-e&15,0),a[c+8>>2]=r,a[c+12>>2]=t,ng(E,A=c+8|0,8,0),a[c+8>>2]=e,a[c+12>>2]=B,ng(E,A,8,0),Dg(E,g),dg(E,256),I&&(a[I>>2]=16,a[I+4>>2]=0),n=c+336|0,0}function MA(A,g,I,C,e,B,i,r,t,Q){var o,c,E;return n=o=n-352|0,_g(E=o+32|0,t,Q),fg(c=o+96|0,E),dg(E,64),ng(c,B,i,r),a[o+24>>2]=i,a[o+28>>2]=r,ng(c,B=o+24|0,8,0),ng(c,g,I,C),a[o+24>>2]=I,a[o+28>>2]=C,ng(c,B,8,0),Dg(c,o),dg(c,256),B=nA(o,e),dg(o,16),A&&(B?(VA(A,0,I),B=-1):(Cg(A,g,I,C,t,Q),B=0)),n=o+352|0,B}function FA(A,g,I,C,e,B,i,r,t,Q,o){var c,E,y;return n=c=n-336|0,_g(y=c+16|0,Q,o),fg(E=c+80|0,y),dg(y,64),ng(E,i,r,t),a[c+8>>2]=r,a[c+12>>2]=t,ng(E,i=c+8|0,8,0),Cg(A,C,e,B,Q,o),ng(E,A,e,B),a[c+8>>2]=e,a[c+12>>2]=B,ng(E,i,8,0),Dg(E,g),dg(E,256),I&&(a[I>>2]=16,a[I+4>>2]=0),n=c+336|0,0}function NA(A,g,I,C,e,B,i,r,t,Q,o){var c=0,E=0,y=0;return E=-1,(c=C>>>0<32)&!e||!(c=e-c|0)&(y=C-32|0)>>>0>4294967263|c|!r&i>>>0>4294967263|r||(E=0|Jg[a[o>>2]](A,I,y,(I+C|0)-32|0,32,B,i,t,Q)),g&&(a[g>>2]=E?0:C-32|0,a[g+4>>2]=E?0:e-(C>>>0<32)|0),E}function KA(A,g){var I;for(a[12+(I=n-16|0)>>2]=A,a[I+8>>2]=g,A=0,a[I+4>>2]=0;a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+A|0]^i[a[I+8>>2]+A|0],g=1|A,a[I+4>>2]=a[I+4>>2]|i[g+a[I+12>>2]|0]^i[g+a[I+8>>2]|0],32!=(0|(A=A+2|0)););return(a[I+4>>2]-1>>>8&1)-1|0}function YA(A){var g=0,I=0,e=0,B=0,a=0;for(g=1;I=(e=g)+i[0|(g=A+B|0)]|0,C[0|g]=I,I=i[g+1|0]+(I>>>8|0)|0,C[g+1|0]=I,I=i[g+2|0]+(I>>>8|0)|0,C[g+2|0]=I,e=g,g=i[g+3|0]+(I>>>8|0)|0,C[e+3|0]=g,g=g>>>8|0,B=B+4|0,4!=(0|(a=a+4|0)););}function HA(A,g,I,C,e,i,r,t,Q,o,c){return!e&C>>>0>4294967263|!!(0|e)|!t&r>>>0>=4294967264|!!(0|t)?(ig(),B()):(A=0|Jg[a[c>>2]](A,A+C|0,32,I,C,i,r,Q,o),g&&(C=(I=C+32|0)>>>0<32?e+1|0:e,a[g>>2]=A?0:I,a[g+4>>2]=A?0:C)),A}function GA(A,g,I,C){var e,B,a,i,r=0,Q=0;return i=t(r=I>>>16|0,Q=A>>>16|0),r=(65535&(Q=((a=t(e=65535&I,B=65535&A))>>>16|0)+t(Q,e)|0))+t(r,B)|0,h=(t(g,I)+i|0)+t(A,C)+(Q>>>16)+(r>>>16)|0,65535&a|r<<16}function JA(A,g,I,C,e,i,r){var t=0,Q=0;t=C,1==(((t=(Q=I+63|0)>>>0<63?t+1|0:t)>>>6|0)+!!(0|(t=(63&t)<<26|Q>>>6))|0)&i>>>0>(Q=0-t|0)>>>0|1==(0|C)|C>>>0>1?(ig(),B()):Jg[a[9075]](A,g,I,C,e,i,r)}function UA(A){var g=0;a[A+32>>2]=0,a[A+36>>2]=0,g=a[8689],a[A>>2]=a[8688],a[A+4>>2]=g,g=a[8691],a[A+8>>2]=a[8690],a[A+12>>2]=g,g=a[8693],a[A+16>>2]=a[8692],a[A+20>>2]=g,g=a[8695],a[A+24>>2]=a[8694],a[A+28>>2]=g}function xA(A,g){A|=0;var I,e=0,B=0,a=0;if(n=I=n-16|0,g|=0)for(;C[I+15|0]=0,B=A+e|0,a=0|c(36304,I+15|0,0),C[0|B]=a,(0|(e=e+1|0))!=(0|g););n=I+16|0}function mA(A,g,I,C,e,B,a){var i,r,t=0;return n=i=n-32|0,t=-1,(r=I>>>0<16)&!C||XA(i,B,a)||(t=pA(A,g+16|0,g,I-16|0,C-r|0,e,i),dg(i,32)),n=i+32|0,t}function PA(A){var g,I;A:{if(!((A=(g=a[8800])+(I=A+7&-8)|0)>>>0<=g>>>0&&I)){if(A>>>0<=Ug()<<16>>>0)break A;if(0|_(0|A))break A}return a[9280]=48,-1}return a[8800]=A,g}function RA(A,g){var I,e,B;n=I=n-176|0,iA(e=I+96|0,g+80|0),d(B=I+48|0,g,e),d(I,g+40|0,e),yA(A,I),yA(I+144|0,B),C[A+31|0]=i[A+31|0]^i[I+144|0]<<7,n=I+176|0}function LA(A,g,I,C,e,i,r,t,Q,o,c,E){return I&&(a[I>>2]=32,a[I+4>>2]=0),!Q&t>>>0<4294967264&!i&e>>>0<=4294967263||(ig(),B()),0|Jg[a[E>>2]](A,g,32,C,e,r,t,o,c)}function TA(A,g,I){var e=0;if(A>>>0<g>>>0)return OA(A,g,I);if(I)for(e=A+I|0,g=g+I|0;g=g-1|0,C[0|(e=e-1|0)]=i[0|g],I=I-1|0;);return A}function qA(A,g,I,C,e,a,i){var r,t=0;if(n=r=n-32|0,!C&I>>>0<4294967280)return t=-1,XA(r,a,i)||(t=hA(A+16|0,A,g,I,C,e,r),dg(r,32)),n=r+32|0,t;ig(),B()}function zA(A,g,I,C,e,B){return g|=0,0|(!(C|=0)&(I|=0)>>>0>=16|C?pA(A|=0,g+16|0,g,I-16|0,C-(I>>>0<16)|0,e|=0,B|=0):-1)}function jA(A,g,I,C,e,B,i,r,t,Q,o){return!C&I>>>0>4294967263|C|!r&i>>>0>4294967263|r?-1:0|Jg[a[o>>2]](A,g,I,e,32,B,i,t,Q)}function XA(A,g,I){A|=0;var C,e=0;return n=C=n-32|0,e=-1,EA(C,I|=0,g|=0)||(e=AA(A,35184,C)),n=C+32|0,0|e}function OA(A,g,I){var e=0;if(I)for(e=A;C[0|e]=i[0|g],e=e+1|0,g=g+1|0,I=I-1|0;);return A}function VA(A,g,I){var e=0;if(I)for(e=A;C[0|e]=g,e=e+1|0,I=I-1|0;);return A}function ZA(A,g,I){return A|=0,g|=0,(I|=0)>>>0>=256&&(E(1248,1175,107,1055),B()),0|R(A,g,255&I)}function WA(A,g){var I;n=I=n+-64|0,J(A,I),W(A=A+208|0,I,64,0),J(A,g),dg(I,64),n=I- -64|0}function $A(A,g,I,C,e,B,a){return 0|hA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)}function Ag(A,g,I,C,e,B,a){return 0|pA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)}function gg(A,g){var I;n=I=n-32|0,gA(A,I),eA(A=A+104|0,I,32),gA(A,g),dg(I,32),n=I+32|0}function Ig(A,g){var I=0;return(-1>>>(I=31&g)&A)<<I|((I=A)&-1<<(A=0-g&31))>>>A}function Cg(A,g,I,C,e,i){1==(0|C)|C>>>0>1&&(ig(),B()),Jg[a[9074]](A,g,I,C,e,1,0,i)}function eg(A,g,I,C,e,i){1==(0|C)|C>>>0>1&&(ig(),B()),Jg[a[9075]](A,g,I,C,e,1,i)}function Bg(){var A;n=A=n-16|0,C[A+15|0]=0,c(36340,A+15|0,0),n=A+16|0}function ag(A,g,I){return 0|EA(A|=0,g|=0,I|=0)}function ig(){var A;(A=a[9413])&&Jg[0|A](),y(),B()}function rg(A,g,I,C,e,B){Jg[a[8809]](A,g,I,C,e,0,0,B)}function tg(A,g){return A|=0,xA(g|=0,32),0|sg(A,g)}function Qg(A,g,I,C,e,B){Jg[a[8809]](A,g,I,C,e,1,0,B)}function og(A){return A?31-Q(A-1^A)|0:32}function cg(A,g,I,C){Jg[a[9075]](A,g,40,0,I,0,C)}function Eg(A,g){return 0|sg(A|=0,g|=0)}function yg(A,g,I,C){Jg[a[9073]](A,g,0,I,C)}function _g(A,g,I){Jg[a[9072]](A,64,0,g,I)}function ng(A,g,I,C){Jg[a[8804]](A,g,I,C)}function hg(A,g,I,C){return W(A,g,I,C),0}function sg(A,g){return 0|Jg[a[8807]](A,g)}function pg(A,g,I){return eA(A,g,I),0}function fg(A,g){Jg[a[8803]](A,g)}function Dg(A,g){Jg[a[8805]](A,g)}function wg(A){xA(A|=0,32)}function kg(A){xA(A|=0,16)}function dg(A,g){VA(A,0,g)}function lg(){return 208}function ug(){return 16}function vg(){return 32}function Sg(){return 24}function bg(){return-17}function Mg(){return-33}function Fg(){return 64}function Ng(){return 0}function Kg(){return 8}function Yg(){return 1}function Hg(){return 2}e(g=i,1024,"cmFuZG9tYnl0ZXMAYjY0X3BvcyA8PSBiNjRfbGVuAGNyeXB0b19nZW5lcmljaGFzaF9ibGFrZTJiX2ZpbmFsAHJhbmRvbWJ5dGVzL3JhbmRvbWJ5dGVzLmMAc29kaXVtL2NvZGVjcy5jAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9ibGFrZTJiLXJlZi5jAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9nZW5lcmljaGFzaF9ibGFrZTJiLmMAYnVmX2xlbiA8PSBTSVpFX01BWABvdXRsZW4gPD0gVUlOVDhfTUFYAFMtPmJ1ZmxlbiA8PSBCTEFLRTJCX0JMT0NLQllURVMAc29kaXVtX2JpbjJiYXNlNjQAMS4wLjIwAAAAALZ4Wf+FctMAvW4V/w8KagApwAEAmOh5/7w8oP+Zcc7/ALfi/rQNSP8AAAAAAAAAALCgDv7TyYb/nhiPAH9pNQBgDL0Ap9f7/59MgP5qZeH/HvwEAJIMrg=="),e(g,1424,"WfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQ"),e(g,1472,"hTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/"),e(g,2464,"AQ=="),e(g,2496,"JuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQ="),e(g,2687,"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"),e(g,33660,"AQ=="),e(g,33696,"AQ=="),e(g,33728,"4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4KZykpFPwv0kaFCrcnJskmXDghGy7tKsRa/G0sTd+zlZ0TDThT3mOvi1RzCmWosnc8uwpqduau7UcuycKBOzWCFIUscpJkA/FMoei/ogEwQrxLZhqokZf40HCLS8IwvlQGo1FsxxhS79YZ6JLREKllVSQGmdYqIHFXhTUO9LjRuzJwoGoQyNDSuBbBpBlTq0FRCGw3Hpnrjt9Md0gnqEib4bW8sDRjWsnFswwcOcuKQeNKqthOc+Njd0/KnFujuLLW828uaPyy713ugo90YC8XQ29jpXhyq/ChFHjIhOw5ZBoIAseMKB5jI/r/vpDpvYLe62xQpBV5xrL3o/m+K1Ny4/J4ccacYSbqzj4nygfCwCHHuIbRHuvgzdZ92up40W7uf0999bpvF3KqZ/AGppjIosV9YwquDfm+BJg/ERtHHBM1C3EbhH0EI/V32yiTJMdAe6vKMry+yRUKvp48TA0QnMRnHUO2Qj7LvtTFTCp+ZfycKX9Z7PrWOqtvy18XWEdKjBlEbIA="),e(g,34752,"Z+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FuYL4pCkUQ3cc/7wLWl27XpW8JWOfER8Vmkgj+S1V4cq5iqB9gBW4MSvoUxJMN9DFV0Xb5y/rHegKcG3Jt08ZvBwWmb5IZHvu/GncEPzKEMJG8s6S2qhHRK3KmwXNqI+XZSUT6YbcYxqMgnA7DHf1m/8wvgxkeRp9VRY8oGZykpFIUKtyc4IRsu/G0sTRMNOFNUcwpluwpqdi7JwoGFLHKSoei/oktmGqhwi0vCo1FsxxnoktEkBpnWhTUO9HCgahAWwaQZCGw3Hkx3SCe1vLA0swwcOUqq2E5Pypxb828uaO6Cj3RvY6V4FHjIhAgCx4z6/76Q62xQpPej+b7yeHHGgA=="),e(g,35120,"U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMB"),e(g,35200,"IJMBAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQ=="),e(g,35248,"xmNjpfh8fITud3eZ9nt7jf/y8g3Wa2u93m9vsZHFxVRgMDBQAgEBA85nZ6lWKyt95/7+GbXX12JNq6vm7HZ2mo/KykUfgoKdicnJQPp9fYfv+voVsllZ645HR8n78PALQa2t7LPU1GdfoqL9Ra+v6iOcnL9TpKT35HJylpvAwFt1t7fC4f39HD2Tk65MJiZqbDY2Wn4/P0H19/cCg8zMT2g0NFxRpaX00eXlNPnx8QjicXGTq9jYc2IxMVMqFRU/CAQEDJXHx1JGIyNlncPDXjAYGCg3lpahCgUFDy+amrUOBwcJJBISNhuAgJvf4uI9zevrJk4nJ2l/srLN6nV1nxIJCRsdg4OeWCwsdDQaGi42Gxst3G5usrRaWu5boKD7pFJS9nY7O0231tZhfbOzzlIpKXvd4+M+Xi8vcROEhJemU1P1udHRaAAAAADB7e0sQCAgYOP8/B95sbHItltb7dRqar6Ny8tGZ76+2XI5OUuUSkremExM1LBYWOiFz89Ku9DQa8Xv7ypPqqrl7fv7FoZDQ8WaTU3XZjMzVRGFhZSKRUXP6fn5EAQCAgb+f3+BoFBQ8Hg8PEQln5+6S6io46JRUfNdo6P+gEBAwAWPj4o/kpKtIZ2dvHA4OEjx9fUEY7y833e2tsGv2tp1QiEhYyAQEDDl//8a/fPzDr/S0m2Bzc1MGAwMFCYTEzXD7Owvvl9f4TWXl6KIRETMLhcXOZPExFdVp6fy/H5+gno9PUfIZGSsul1d5zIZGSvmc3OVwGBgoBmBgZieT0/Ro9zcf0QiImZUKip+O5CQqwuIiIOMRkbKx+7uKWu4uNMoFBQ8p97eebxeXuIWCwsdrdvbdtvg4DtkMjJWdDo6ThQKCh6SSUnbDAYGCkgkJGy4XFzkn8LCXb3T025DrKzvxGJipjmRkagxlZWk0+TkN/J5eYvV5+cyi8jIQ243N1nabW23AY2NjLHV1WScTk7SSamp4NhsbLSsVlb68/T0B8/q6iXKZWWv9Hp6jkeurukQCAgYb7q61fB4eIhKJSVvXC4ucjgcHCRXpqbxc7S0x5fGxlHL6Ogjod3dfOh0dJw+Hx8hlktL3WG9vdwNi4uGD4qKheBwcJB8Pj5CcbW1xMxmZqqQSEjYBgMDBff29gEcDg4SwmFho2o1NV+uV1f5abm50BeGhpGZwcFYOh0dJyeenrnZ4eE46/j4EyuYmLMiEREz0mlpu6nZ2XAHjo6JM5SUpy2bm7Y8Hh4iFYeHksnp6SCHzs5JqlVV/1AoKHil3996A4yMj1mhofgJiYmAGg0NF2W/v9rX5uYxhEJCxtBoaLiCQUHDKZmZsFotLXceDw8Re7Cwy6hUVPxtu7vWLBYWOgoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAAR");var Gg,Jg=(Gg=[null,function(A,g,I,e,B){var r,t,Q;return A|=0,g|=0,I|=0,e|=0,B|=0,n=r=(t=n)-128&-64,a[r>>2]=67108863&(i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),a[r+4>>2]=(i[B+3|0]|i[B+4|0]<<8|i[B+5|0]<<16|i[B+6|0]<<24)>>>2&67108611,a[r+8>>2]=(i[B+6|0]|i[B+7|0]<<8|i[B+8|0]<<16|i[B+9|0]<<24)>>>4&67092735,a[r+12>>2]=(i[B+9|0]|i[B+10|0]<<8|i[B+11|0]<<16|i[B+12|0]<<24)>>>6&66076671,Q=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[r+20>>2]=0,a[r+24>>2]=0,a[r+28>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,a[r+16>>2]=Q>>>8&1048575,a[r+40>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[r+44>>2]=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[r+48>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,B=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,C[r+80|0]=0,a[r+56>>2]=0,a[r+60>>2]=0,a[r+52>>2]=B,BA(r,g,I,e),cA(r,A),n=t,0},function(A,g,I,e,B){var r,t,Q;return A|=0,g|=0,I|=0,e|=0,B|=0,n=r=(t=n)-192&-64,a[r+64>>2]=67108863&(i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),a[r+68>>2]=(i[B+3|0]|i[B+4|0]<<8|i[B+5|0]<<16|i[B+6|0]<<24)>>>2&67108611,a[r+72>>2]=(i[B+6|0]|i[B+7|0]<<8|i[B+8|0]<<16|i[B+9|0]<<24)>>>4&67092735,a[r+76>>2]=(i[B+9|0]|i[B+10|0]<<8|i[B+11|0]<<16|i[B+12|0]<<24)>>>6&66076671,Q=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[r+84>>2]=0,a[r+88>>2]=0,a[r+92>>2]=0,a[r+96>>2]=0,a[r+100>>2]=0,a[r+80>>2]=Q>>>8&1048575,a[r+104>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[r+108>>2]=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[r+112>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,B=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,C[r+144|0]=0,a[r+120>>2]=0,a[r+124>>2]=0,a[r+116>>2]=B,BA(B=r- -64|0,g,I,e),cA(B,g=r+48|0),A=nA(A,g),n=t,0|A},function(A,g){var I;return g|=0,a[(A|=0)>>2]=67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),a[A+4>>2]=(i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108611,a[A+8>>2]=(i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67092735,a[A+12>>2]=(i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6&66076671,I=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,a[A+20>>2]=0,a[A+24>>2]=0,a[A+28>>2]=0,a[A+32>>2]=0,a[A+36>>2]=0,a[A+16>>2]=I>>>8&1048575,a[A+40>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,a[A+44>>2]=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,a[A+48>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,C[A+80|0]=0,a[A+56>>2]=0,a[A+60>>2]=0,a[A+52>>2]=g,0},function(A,g,I,C){return BA(A|=0,g|=0,I|=0,C|=0),0},function(A,g){return cA(A|=0,g|=0),0},function(A,g,I){A|=0,g|=0,I|=0;var e,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,rA=0,tA=0,QA=0,oA=0,cA=0,EA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,kA=0,dA=0,lA=0;for(n=e=n-368|0;p=(t=i[I+B|0])^i[0|(o=B+33664|0)]|p,s=t^i[o+192|0]|s,_=t^i[o+160|0]|_,y=t^i[o+128|0]|y,Q=t^i[o+96|0]|Q,c=t^i[o- -64|0]|c,r=t^i[o+32|0]|r,31!=(0|(B=B+1|0)););if(B=-1,!(256&((255&((t=127^(o=127&i[I+31|0]))|s))-1|(255&(t|_))-1|(255&(t|y))-1|(255&(87^o|Q))-1|(255&(c|o))-1|(255&(r|o))-1|(255&(o|p))-1))){for(B=g,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,a[e+360>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,a[e+364>>2]=g,g=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[e+352>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[e+356>>2]=g,r=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,g=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,a[e+336>>2]=g,a[e+340>>2]=r,r=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[e+344>>2]=i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,a[e+348>>2]=r,C[e+336|0]=248&g,C[e+367|0]=63&i[e+367|0]|64,V(e+288|0,I),a[e+260>>2]=0,a[e+264>>2]=0,a[e+268>>2]=0,a[e+272>>2]=0,a[e+276>>2]=0,a[e+208>>2]=0,a[e+212>>2]=0,a[e+216>>2]=0,a[e+220>>2]=0,a[e+224>>2]=0,a[e+228>>2]=0,g=a[e+308>>2],a[e+160>>2]=a[e+304>>2],a[e+164>>2]=g,g=a[e+316>>2],a[e+168>>2]=a[e+312>>2],a[e+172>>2]=g,g=a[e+324>>2],a[e+176>>2]=a[e+320>>2],a[e+180>>2]=g,a[e+244>>2]=0,a[e+248>>2]=0,a[e+240>>2]=1,a[e+252>>2]=0,a[e+256>>2]=0,a[e+192>>2]=0,a[e+196>>2]=0,a[e+200>>2]=0,a[e+204>>2]=0,g=a[e+292>>2],a[e+144>>2]=a[e+288>>2],a[e+148>>2]=g,g=a[e+300>>2],a[e+152>>2]=a[e+296>>2],a[e+156>>2]=g,a[e+116>>2]=0,a[e+120>>2]=0,a[e+124>>2]=0,a[e+128>>2]=0,a[e+132>>2]=0,a[e+100>>2]=0,a[e+104>>2]=0,a[e+96>>2]=1,a[e+108>>2]=0,a[e+112>>2]=0,I=254;W=a[e+276>>2],t=a[e+180>>2],$=a[e+96>>2],AA=a[e+192>>2],gA=a[e+144>>2],IA=a[e+240>>2],CA=a[e+100>>2],eA=a[e+196>>2],BA=a[e+148>>2],aA=a[e+244>>2],F=a[e+104>>2],rA=a[e+200>>2],N=a[e+152>>2],tA=a[e+248>>2],G=a[e+108>>2],QA=a[e+204>>2],J=a[e+156>>2],oA=a[e+252>>2],Y=a[e+112>>2],cA=a[e+208>>2],b=a[e+160>>2],EA=a[e+256>>2],p=a[e+116>>2],_A=a[e+212>>2],E=a[e+164>>2],nA=a[e+260>>2],s=a[e+120>>2],hA=a[e+216>>2],_=a[e+168>>2],sA=a[e+264>>2],y=a[e+124>>2],pA=a[e+220>>2],Q=a[e+172>>2],fA=a[e+268>>2],c=a[e+128>>2],DA=a[e+224>>2],r=a[e+176>>2],S=a[e+272>>2],wA=I,M=(l=(g=0-((g=Z)^(Z=i[(kA=e+336|0)+(I>>>3|0)|0]>>>(7&I)&1))|0)&((B=a[e+132>>2])^(z=a[e+228>>2])))^B,a[e+132>>2]=M,j=t^(u=g&(t^W)),a[e+84>>2]=j-M,H=c^(D=g&(c^DA)),a[e+128>>2]=H,X=(v=g&(r^S))^r,a[e+80>>2]=X-H,x=y^(w=g&(y^pA)),a[e+124>>2]=x,dA=Q^(k=g&(Q^fA)),a[e+76>>2]=dA-x,m=s^(f=g&(s^hA)),a[e+120>>2]=m,lA=_^(o=g&(_^sA)),a[e+72>>2]=lA-m,P=p^(t=g&(p^_A)),a[e+116>>2]=P,R=E^(p=g&(E^nA)),a[e+68>>2]=R-P,L=Y^(s=g&(Y^cA)),a[e+112>>2]=L,U=b^(_=g&(b^EA)),a[e+64>>2]=U-L,T=G^(y=g&(G^QA)),a[e+108>>2]=T,O=J^(Q=g&(J^oA)),a[e+60>>2]=O-T,q=F^(c=g&(F^rA)),a[e+104>>2]=q,G=N^(r=g&(N^tA)),a[e+56>>2]=G-q,F=CA^(B=g&(CA^eA)),a[e+100>>2]=F,J=BA^(I=g&(BA^aA)),a[e+52>>2]=J-F,N=$^(Y=g&($^AA)),a[e+96>>2]=N,b=(g&=gA^IA)^gA,a[e+48>>2]=b-N,E=u^W,l^=z,a[e+36>>2]=E-l,u=v^S,D^=DA,a[e+32>>2]=u-D,v=k^fA,w^=pA,a[e+28>>2]=v-w,k=o^sA,f^=hA,a[e+24>>2]=k-f,o=p^nA,t^=_A,a[e+20>>2]=o-t,p=_^EA,s^=cA,a[e+16>>2]=p-s,_=Q^oA,y^=QA,a[e+12>>2]=_-y,Q=r^tA,c^=rA,a[e+8>>2]=Q-c,r=I^aA,B^=eA,a[e+4>>2]=r-B,I=g^IA,g=Y^AA,a[e>>2]=I-g,a[e+276>>2]=E+l,a[e+272>>2]=u+D,a[e+268>>2]=w+v,a[e+264>>2]=f+k,a[e+260>>2]=t+o,a[e+256>>2]=s+p,a[e+248>>2]=Q+c,a[e+244>>2]=B+r,a[e+240>>2]=g+I,a[e+252>>2]=y+_,a[e+228>>2]=M+j,a[e+224>>2]=H+X,a[e+220>>2]=x+dA,a[e+216>>2]=m+lA,a[e+212>>2]=P+R,a[e+208>>2]=U+L,a[e+204>>2]=T+O,a[e+200>>2]=G+q,a[e+196>>2]=F+J,a[e+192>>2]=b+N,d(j=e+96|0,H=e+48|0,M=e+240|0),d(S=e+192|0,S,e),K(H,e),K(e,M),E=a[e+192>>2],l=a[e+96>>2],u=a[e+196>>2],D=a[e+100>>2],v=a[e+200>>2],w=a[e+104>>2],k=a[e+204>>2],f=a[e+108>>2],o=a[e+208>>2],t=a[e+112>>2],p=a[e+212>>2],s=a[e+116>>2],_=a[e+216>>2],y=a[e+120>>2],Q=a[e+220>>2],c=a[e+124>>2],r=a[e+224>>2],B=a[e+128>>2],I=a[e+228>>2],g=a[e+132>>2],a[e+180>>2]=I+g,a[e+176>>2]=B+r,a[e+172>>2]=Q+c,a[e+168>>2]=y+_,a[e+164>>2]=s+p,a[e+160>>2]=t+o,a[e+156>>2]=f+k,a[e+152>>2]=w+v,a[e+148>>2]=u+D,a[e+144>>2]=E+l,a[e+228>>2]=g-I,a[e+224>>2]=B-r,a[e+220>>2]=c-Q,a[e+216>>2]=y-_,a[e+212>>2]=s-p,a[e+208>>2]=t-o,a[e+204>>2]=f-k,a[e+200>>2]=w-v,a[e+196>>2]=D-u,a[e+192>>2]=l-E,d(M,e,H),x=a[e+52>>2],f=a[e+4>>2],m=a[e+56>>2],o=a[e+8>>2],P=a[e+64>>2],_=a[e+16>>2],L=a[e+60>>2],y=a[e+12>>2],T=a[e+72>>2],Q=a[e+24>>2],q=a[e+68>>2],c=a[e+20>>2],F=a[e+80>>2],r=a[e+32>>2],N=a[e+76>>2],B=a[e+28>>2],z=a[e+84>>2],g=a[e+36>>2],X=a[e+48>>2],I=a[e>>2]-X|0,a[e>>2]=I,g=g-z|0,a[e+36>>2]=g,Y=B-N|0,a[e+28>>2]=Y,b=r-F|0,a[e+32>>2]=b,t=c-q|0,a[e+20>>2]=t,p=Q-T|0,a[e+24>>2]=p,s=y-L|0,a[e+12>>2]=s,_=_-P|0,a[e+16>>2]=_,y=o-m|0,a[e+8>>2]=y,r=f-x|0,a[e+4>>2]=r,K(S,S),g=GA(g,g>>31,121666,0),B=h,O=g,g=GA((33554431&(B=(E=g+16777216|0)>>>0<16777216?B+1|0:B))<<7|E>>>25,B>>25,19,0),c=h,B=g,g=GA(I,I>>31,121666,0),U=h+c|0,g=g>>>0>(B=B+g|0)>>>0?U+1|0:U,I=(Q=B+33554432|0)>>>0<33554432?g+1|0:g,l=B-(-67108864&Q)|0,a[e+96>>2]=l,c=GA(r,r>>31,121666,0),B=h,B=(r=c+16777216|0)>>>0<16777216?B+1|0:B,u=(c-(-33554432&r)|0)+((67108863&I)<<6|Q>>>26)|0,a[e+100>>2]=u,U=(g=B)>>25,B=(33554431&g)<<7|r>>>25,I=GA(y,y>>31,121666,0)+B|0,g=U+h|0,g=I>>>0<B>>>0?g+1|0:g,c=(D=I+33554432|0)>>>0<33554432?g+1|0:g,v=I-(-67108864&D)|0,a[e+104>>2]=v,B=GA(_,_>>31,121666,0),r=h,I=GA(s,s>>31,121666,0),g=h,R=B,G=I,B=(33554431&(g=(w=I+16777216|0)>>>0<16777216?g+1|0:g))<<7|w>>>25,g=(g>>25)+r|0,g=(I=R+B|0)>>>0<B>>>0?g+1|0:g,r=(k=I+33554432|0)>>>0<33554432?g+1|0:g,f=I-(-67108864&k)|0,a[e+112>>2]=f,B=GA(p,p>>31,121666,0),Q=h,I=GA(t,t>>31,121666,0),g=h,R=B,J=I,B=(33554431&(g=(o=I+16777216|0)>>>0<16777216?g+1|0:g))<<7|o>>>25,g=(g>>25)+Q|0,g=(I=R+B|0)>>>0<B>>>0?g+1|0:g,B=(t=I+33554432|0)>>>0<33554432?g+1|0:g,p=I-(-67108864&t)|0,a[e+120>>2]=p,Q=GA(b,b>>31,121666,0),y=h,I=GA(Y,Y>>31,121666,0),g=h,b=I,I=(33554431&(g=(s=I+16777216|0)>>>0<16777216?g+1|0:g))<<7|s>>>25,g=(g>>25)+y|0,g=I>>>0>(Q=I+Q|0)>>>0?g+1|0:g,I=(_=Q+33554432|0)>>>0<33554432?g+1|0:g,y=Q-(-67108864&_)|0,a[e+128>>2]=y,Q=(c=G+((67108863&c)<<6|D>>>26)|0)-(-33554432&w)|0,a[e+108>>2]=Q,c=(r=J+((67108863&r)<<6|k>>>26)|0)-(-33554432&o)|0,a[e+116>>2]=c,r=(g=b+((67108863&B)<<6|t>>>26)|0)-(-33554432&s)|0,a[e+124>>2]=r,I=(I=O+((67108863&I)<<6|_>>>26)|0)-(-33554432&E)|0,a[e+132>>2]=I,K(g=e+144|0,g),a[e+84>>2]=I+z,a[e+80>>2]=y+F,a[e+76>>2]=r+N,a[e+72>>2]=p+T,a[e+68>>2]=c+q,a[e+64>>2]=f+P,a[e+60>>2]=Q+L,a[e+56>>2]=v+m,a[e+52>>2]=u+x,a[e+48>>2]=l+X,I=wA-1|0,d(j,e+288|0,S),d(S,e,H),wA;);p=a[e+144>>2],l=a[e+240>>2],s=a[e+148>>2],u=a[e+244>>2],_=a[e+152>>2],D=a[e+248>>2],y=a[e+156>>2],v=a[e+252>>2],Q=a[e+160>>2],w=a[e+256>>2],c=a[e+164>>2],k=a[e+260>>2],r=a[e+168>>2],f=a[e+264>>2],B=a[e+172>>2],o=a[e+268>>2],I=a[e+176>>2],t=a[e+272>>2],E=0-Z|0,g=a[e+276>>2],a[e+276>>2]=E&(g^a[e+180>>2])^g,a[e+272>>2]=t^E&(I^t),a[e+268>>2]=o^E&(B^o),a[e+264>>2]=f^E&(r^f),a[e+260>>2]=k^E&(c^k),a[e+256>>2]=w^E&(Q^w),a[e+252>>2]=v^E&(y^v),a[e+248>>2]=D^E&(_^D),a[e+244>>2]=u^E&(s^u),a[e+240>>2]=l^E&(p^l),l=a[e+192>>2],p=a[e+96>>2],u=a[e+196>>2],s=a[e+100>>2],D=a[e+200>>2],_=a[e+104>>2],v=a[e+204>>2],y=a[e+108>>2],w=a[e+208>>2],Q=a[e+112>>2],k=a[e+212>>2],c=a[e+116>>2],f=a[e+216>>2],r=a[e+120>>2],o=a[e+220>>2],B=a[e+124>>2],t=a[e+224>>2],I=a[e+128>>2],g=a[e+228>>2],a[e+228>>2]=E&(g^a[e+132>>2])^g,a[e+224>>2]=t^E&(I^t),a[e+220>>2]=o^E&(B^o),a[e+216>>2]=f^E&(r^f),a[e+212>>2]=k^E&(c^k),a[e+208>>2]=w^E&(Q^w),a[e+204>>2]=v^E&(y^v),a[e+200>>2]=D^E&(_^D),a[e+196>>2]=u^E&(s^u),a[e+192>>2]=l^E&(p^l),iA(S,S),d(M,M,S),yA(A,M),dg(kA,32),B=0}return n=e+368|0,0|B},function(A,g){var I,e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,l,u;return g|=0,n=I=n-304|0,C[0|(A|=0)]=i[0|g],C[A+1|0]=i[g+1|0],C[A+2|0]=i[g+2|0],C[A+3|0]=i[g+3|0],C[A+4|0]=i[g+4|0],C[A+5|0]=i[g+5|0],C[A+6|0]=i[g+6|0],C[A+7|0]=i[g+7|0],C[A+8|0]=i[g+8|0],C[A+9|0]=i[g+9|0],C[A+10|0]=i[g+10|0],C[A+11|0]=i[g+11|0],C[A+12|0]=i[g+12|0],C[A+13|0]=i[g+13|0],C[A+14|0]=i[g+14|0],C[A+15|0]=i[g+15|0],C[A+16|0]=i[g+16|0],C[A+17|0]=i[g+17|0],C[A+18|0]=i[g+18|0],C[A+19|0]=i[g+19|0],C[A+20|0]=i[g+20|0],C[A+21|0]=i[g+21|0],C[A+22|0]=i[g+22|0],C[A+23|0]=i[g+23|0],C[A+24|0]=i[g+24|0],C[A+25|0]=i[g+25|0],C[A+26|0]=i[g+26|0],C[A+27|0]=i[g+27|0],C[A+28|0]=i[g+28|0],C[A+29|0]=i[g+29|0],C[A+30|0]=i[g+30|0],g=i[g+31|0],C[0|A]=248&i[0|A],C[A+31|0]=63&g|64,Z(I+48|0,A),g=a[I+128>>2],e=a[I+88>>2],B=a[I+132>>2],r=a[I+92>>2],t=a[I+136>>2],Q=a[I+96>>2],o=a[I+140>>2],c=a[I+100>>2],E=a[I+144>>2],y=a[I+104>>2],_=a[I+148>>2],h=a[I+108>>2],s=a[I+152>>2],p=a[I+112>>2],f=a[I+156>>2],D=a[I+116>>2],w=a[I+160>>2],k=a[I+120>>2],l=a[I+124>>2],u=a[I+164>>2],a[I+292>>2]=l+u,a[I+288>>2]=w+k,a[I+284>>2]=f+D,a[I+280>>2]=s+p,a[I+276>>2]=_+h,a[I+272>>2]=E+y,a[I+268>>2]=o+c,a[I+264>>2]=t+Q,a[I+260>>2]=B+r,a[I+256>>2]=g+e,a[I+244>>2]=u-l,a[I+240>>2]=w-k,a[I+236>>2]=f-D,a[I+232>>2]=s-p,a[I+228>>2]=_-h,a[I+224>>2]=E-y,a[I+220>>2]=o-c,a[I+216>>2]=t-Q,a[I+212>>2]=B-r,a[I+208>>2]=g-e,iA(g=I+208|0,g),d(I,I+256|0,g),yA(A,I),n=I+304|0,0},function(A,g,I,e,B){A|=0,e|=0,B|=0;var r,t=0,Q=0,o=0,c=0;if(n=r=n-112|0,(g|=0)|(I|=0)){t=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,a[r+24>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,a[r+28>>2]=t,t=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[r+16>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[r+20>>2]=t,t=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,a[r>>2]=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,a[r+4>>2]=t,t=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[r+8>>2]=i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,a[r+12>>2]=t,B=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,e=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[r+104>>2]=0,a[r+108>>2]=0,a[r+96>>2]=B,a[r+100>>2]=e;A:{if(!I&g>>>0>=64|I){for(;T(A,r+96|0,r),e=i[r+104|0]+1|0,C[r+104|0]=e,e=i[r+105|0]+(e>>>8|0)|0,C[r+105|0]=e,e=i[r+106|0]+(e>>>8|0)|0,C[r+106|0]=e,e=i[r+107|0]+(e>>>8|0)|0,C[r+107|0]=e,e=i[r+108|0]+(e>>>8|0)|0,C[r+108|0]=e,e=i[r+109|0]+(e>>>8|0)|0,C[r+109|0]=e,e=i[r+110|0]+(e>>>8|0)|0,C[r+110|0]=e,C[r+111|0]=i[r+111|0]+(e>>>8|0),A=A- -64|0,I=I-1|0,!(I=(g=g+-64|0)>>>0<4294967232?I+1|0:I)&g>>>0>63|I;);if(!(g|I))break A}if(e=0,T(r+32|0,r+96|0,r),t=3&g,B=0,!I&g>>>0>=4|I)for(I=60&g,g=0;Q=o=r+32|0,C[A+B|0]=i[Q+B|0],C[(c=1|B)+A|0]=i[Q+c|0],C[(Q=2|B)+A|0]=i[Q+o|0],C[(Q=3|B)+A|0]=i[Q+(r+32|0)|0],B=B+4|0,(0|I)!=(0|(g=g+4|0)););if(t)for(;C[A+B|0]=i[(r+32|0)+B|0],B=B+1|0,(0|t)!=(0|(e=e+1|0)););}dg(r+32|0,64),dg(r,32)}return n=r+112|0,0},function(A,g,I,e,B,r,t,Q){A|=0,g|=0,B|=0,r|=0,t|=0,Q|=0;var o,c=0;if(n=o=n-112|0,(I|=0)|(e|=0)){c=i[Q+28|0]|i[Q+29|0]<<8|i[Q+30|0]<<16|i[Q+31|0]<<24,a[o+24>>2]=i[Q+24|0]|i[Q+25|0]<<8|i[Q+26|0]<<16|i[Q+27|0]<<24,a[o+28>>2]=c,c=i[Q+20|0]|i[Q+21|0]<<8|i[Q+22|0]<<16|i[Q+23|0]<<24,a[o+16>>2]=i[Q+16|0]|i[Q+17|0]<<8|i[Q+18|0]<<16|i[Q+19|0]<<24,a[o+20>>2]=c,c=i[Q+4|0]|i[Q+5|0]<<8|i[Q+6|0]<<16|i[Q+7|0]<<24,a[o>>2]=i[0|Q]|i[Q+1|0]<<8|i[Q+2|0]<<16|i[Q+3|0]<<24,a[o+4>>2]=c,c=i[Q+12|0]|i[Q+13|0]<<8|i[Q+14|0]<<16|i[Q+15|0]<<24,a[o+8>>2]=i[Q+8|0]|i[Q+9|0]<<8|i[Q+10|0]<<16|i[Q+11|0]<<24,a[o+12>>2]=c,Q=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,a[o+96>>2]=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,a[o+100>>2]=Q,C[o+104|0]=r,C[o+111|0]=t>>>24,C[o+110|0]=t>>>16,C[o+109|0]=t>>>8,C[o+108|0]=t,C[o+107|0]=(16777215&t)<<8|r>>>24,C[o+106|0]=(65535&t)<<16|r>>>16,C[o+105|0]=(255&t)<<24|r>>>8;A:{if(!e&I>>>0>=64|e){for(;;){for(Q=0,T(o+32|0,o+96|0,o);r=o+32|0,C[A+Q|0]=i[r+Q|0]^i[g+Q|0],C[(B=1|Q)+A|0]=i[B+r|0]^i[g+B|0],64!=(0|(Q=Q+2|0)););if(B=i[o+104|0]+1|0,C[o+104|0]=B,B=i[o+105|0]+(B>>>8|0)|0,C[o+105|0]=B,B=i[o+106|0]+(B>>>8|0)|0,C[o+106|0]=B,B=i[o+107|0]+(B>>>8|0)|0,C[o+107|0]=B,B=i[o+108|0]+(B>>>8|0)|0,C[o+108|0]=B,B=i[o+109|0]+(B>>>8|0)|0,C[o+109|0]=B,B=i[o+110|0]+(B>>>8|0)|0,C[o+110|0]=B,C[o+111|0]=i[o+111|0]+(B>>>8|0),g=g- -64|0,A=A- -64|0,e=e-1|0,!(!(e=(I=I+-64|0)>>>0<4294967232?e+1|0:e)&I>>>0>63|e))break}if(!(I|e))break A}if(Q=0,T(o+32|0,o+96|0,o),r=1&I,1!=(0|I)|e)for(e=62&I,B=0;t=o+32|0,C[A+Q|0]=i[t+Q|0]^i[g+Q|0],C[(I=1|Q)+A|0]=i[I+t|0]^i[g+I|0],Q=Q+2|0,(0|e)!=(0|(B=B+2|0)););r&&(C[A+Q|0]=i[(o+32|0)+Q|0]^i[g+Q|0])}dg(o+32|0,64),dg(o,32)}return n=o+112|0,0},function(A,g,I,C,e,B,a,i,r){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0;var t,Q,o=0;if(Q=o=n,n=t=o-192&-32,H(r|=0,i|=0,t- -64|0),r=0,a>>>0<=63)i=0;else for(o=64;l(B+r|0,t- -64|0),r=i=o,(o=i- -64|0)>>>0<=a>>>0;);if((o=32|i)>>>0>a>>>0)r=i;else for(;m(B+i|0,t- -64|0),r=o,(o=(i=o)+32|0)>>>0<=a>>>0;);if((i=31&a)&&(VA((o=t+32|0)|i,0,32-i|0),OA(o,B+r|0,i),m(o,t- -64|0)),r=32,i=0,e>>>0<32)B=0;else for(;M(A+i|0,C+i|0,t- -64|0),B=r,(r=(i=r)+32|0)>>>0<=e>>>0;);return(i=31&e)&&(VA((r=t+32|0)|i,0,32-i|0),OA(r,C+B|0,i),M(t,r,t- -64|0),OA(A+B|0,t,i)),u(g,I,a,e,t- -64|0),n=Q,0},function(A,g,I,C,e,B,a,i,r){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0;var t,Q,o=0;if(Q=o=n,n=t=o-224&-32,H(r|=0,i|=0,t+96|0),r=0,a>>>0<=63)i=0;else for(o=64;l(B+r|0,t+96|0),r=i=o,(o=i- -64|0)>>>0<=a>>>0;);if((o=32|i)>>>0>a>>>0)r=i;else for(;m(B+i|0,t+96|0),r=o,(o=(i=o)+32|0)>>>0<=a>>>0;);(i=31&a)&&(VA((o=t- -64|0)|i,0,32-i|0),OA(o,B+r|0,i),m(o,t+96|0));A:{g:{I:{C:{e:{if(A){if(r=32,I>>>0<32)break e;for(B=0;b(A+B|0,g+B|0,t+96|0),B=i=r,(r=i+32|0)>>>0<=I>>>0;);}else{if(B=32,I>>>0<32)break I;for(r=0;b(t+32|0,g+r|0,t+96|0),r=i=B,(B=i+32|0)>>>0<=I>>>0;);}if(!(B=31&I))break A;if(A)break C;break g}if(i=0,B=I,!I)break A}N(A+i|0,g+i|0,B,t+96|0);break A}if(i=0,B=I,!I)break A}N(t+32|0,g+i|0,B,t+96|0)}u(t,e,a,I,t+96|0),i=-1;A:{g:{if(g=e-16|0){if(16==(0|g))break g;break A}i=nA(t,C);break A}i=KA(t,C)}return!A|!i||VA(A,0,I),n=Q,0|i},function(A,g,I,C,e,B,r,t,Q){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,r|=0;var o,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0;if(n=o=n-528|0,k(Q|=0,t|=0,o+400|0),Q=0,r>>>0<=31)t=0;else for(E=32;Y(B+Q|0,o+400|0),Q=t=E,(E=t+32|0)>>>0<=r>>>0;);if((Q=16|t)>>>0<=r>>>0)for(E=o+416|0,_=o+432|0,h=o+448|0,y=o+464|0,s=o+480|0;p=i[0|(t=B+t|0)]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,f=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,D=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,w=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,t=a[s+12>>2],a[o+520>>2]=a[s+8>>2],a[o+524>>2]=t,t=a[s+4>>2],a[o+512>>2]=a[s>>2],a[o+516>>2]=t,t=a[y+12>>2],a[o+376>>2]=a[y+8>>2],a[o+380>>2]=t,t=a[y+4>>2],a[o+368>>2]=a[y>>2],a[o+372>>2]=t,t=a[s+12>>2],a[o+360>>2]=a[s+8>>2],a[o+364>>2]=t,t=a[s+4>>2],a[o+352>>2]=a[s>>2],a[o+356>>2]=t,oA(t=o+496|0,o+368|0,o+352|0),c=a[o+508>>2],a[s+8>>2]=a[o+504>>2],a[s+12>>2]=c,c=a[o+500>>2],a[s>>2]=a[o+496>>2],a[s+4>>2]=c,c=a[h+12>>2],a[o+344>>2]=a[h+8>>2],a[o+348>>2]=c,c=a[h+4>>2],a[o+336>>2]=a[h>>2],a[o+340>>2]=c,c=a[y+12>>2],a[o+328>>2]=a[y+8>>2],a[o+332>>2]=c,c=a[y+4>>2],a[o+320>>2]=a[y>>2],a[o+324>>2]=c,oA(t,o+336|0,o+320|0),c=a[o+508>>2],a[y+8>>2]=a[o+504>>2],a[y+12>>2]=c,c=a[o+500>>2],a[y>>2]=a[o+496>>2],a[y+4>>2]=c,c=a[_+12>>2],a[o+312>>2]=a[_+8>>2],a[o+316>>2]=c,c=a[_+4>>2],a[o+304>>2]=a[_>>2],a[o+308>>2]=c,c=a[h+12>>2],a[o+296>>2]=a[h+8>>2],a[o+300>>2]=c,c=a[h+4>>2],a[o+288>>2]=a[h>>2],a[o+292>>2]=c,oA(t,o+304|0,o+288|0),c=a[o+508>>2],a[h+8>>2]=a[o+504>>2],a[h+12>>2]=c,c=a[o+500>>2],a[h>>2]=a[o+496>>2],a[h+4>>2]=c,c=a[E+12>>2],a[o+280>>2]=a[E+8>>2],a[o+284>>2]=c,c=a[E+4>>2],a[o+272>>2]=a[E>>2],a[o+276>>2]=c,c=a[_+12>>2],a[o+264>>2]=a[_+8>>2],a[o+268>>2]=c,c=a[_+4>>2],a[o+256>>2]=a[_>>2],a[o+260>>2]=c,oA(t,o+272|0,o+256|0),c=a[o+508>>2],a[_+8>>2]=a[o+504>>2],a[_+12>>2]=c,c=a[o+500>>2],a[_>>2]=a[o+496>>2],a[_+4>>2]=c,c=a[o+412>>2],a[o+248>>2]=a[o+408>>2],a[o+252>>2]=c,c=a[o+404>>2],a[o+240>>2]=a[o+400>>2],a[o+244>>2]=c,c=a[E+12>>2],a[o+232>>2]=a[E+8>>2],a[o+236>>2]=c,c=a[E+4>>2],a[o+224>>2]=a[E>>2],a[o+228>>2]=c,oA(t,o+240|0,o+224|0),c=a[o+508>>2],a[E+8>>2]=a[o+504>>2],a[E+12>>2]=c,c=a[o+500>>2],a[E>>2]=a[o+496>>2],a[E+4>>2]=c,c=a[o+524>>2],a[o+216>>2]=a[o+520>>2],a[o+220>>2]=c,c=a[o+412>>2],a[o+200>>2]=a[o+408>>2],a[o+204>>2]=c,c=a[o+516>>2],a[o+208>>2]=a[o+512>>2],a[o+212>>2]=c,c=a[o+404>>2],a[o+192>>2]=a[o+400>>2],a[o+196>>2]=c,oA(t,o+208|0,o+192|0),a[o+412>>2]=w^a[o+508>>2],a[o+408>>2]=a[o+504>>2]^D,a[o+404>>2]=a[o+500>>2]^f,a[o+400>>2]=a[o+496>>2]^p,(Q=(t=Q)+16|0)>>>0<=r>>>0;);if((Q=15&r)&&(VA((E=o+384|0)|Q,0,16-Q|0),OA(E,B+t|0,Q),Q=a[o+384>>2],E=a[o+388>>2],_=a[o+392>>2],h=a[o+396>>2],t=a[o+492>>2],B=a[o+488>>2],a[o+520>>2]=B,a[o+524>>2]=t,y=a[o+476>>2],a[o+184>>2]=a[o+472>>2],a[o+188>>2]=y,a[o+168>>2]=B,a[o+172>>2]=t,t=a[o+484>>2],B=a[o+480>>2],a[o+512>>2]=B,a[o+516>>2]=t,y=a[o+468>>2],a[o+176>>2]=a[o+464>>2],a[o+180>>2]=y,a[o+160>>2]=B,a[o+164>>2]=t,oA(B=o+496|0,o+176|0,o+160|0),t=a[o+508>>2],a[o+488>>2]=a[o+504>>2],a[o+492>>2]=t,t=a[o+460>>2],a[o+152>>2]=a[o+456>>2],a[o+156>>2]=t,t=a[o+476>>2],a[o+136>>2]=a[o+472>>2],a[o+140>>2]=t,t=a[o+500>>2],a[o+480>>2]=a[o+496>>2],a[o+484>>2]=t,t=a[o+452>>2],a[o+144>>2]=a[o+448>>2],a[o+148>>2]=t,t=a[o+468>>2],a[o+128>>2]=a[o+464>>2],a[o+132>>2]=t,oA(B,o+144|0,o+128|0),t=a[o+508>>2],a[o+472>>2]=a[o+504>>2],a[o+476>>2]=t,t=a[o+444>>2],a[o+120>>2]=a[o+440>>2],a[o+124>>2]=t,t=a[o+460>>2],a[o+104>>2]=a[o+456>>2],a[o+108>>2]=t,t=a[o+500>>2],a[o+464>>2]=a[o+496>>2],a[o+468>>2]=t,t=a[o+436>>2],a[o+112>>2]=a[o+432>>2],a[o+116>>2]=t,t=a[o+452>>2],a[o+96>>2]=a[o+448>>2],a[o+100>>2]=t,oA(B,o+112|0,o+96|0),t=a[o+508>>2],a[o+456>>2]=a[o+504>>2],a[o+460>>2]=t,t=a[o+428>>2],a[o+88>>2]=a[o+424>>2],a[o+92>>2]=t,t=a[o+444>>2],a[o+72>>2]=a[o+440>>2],a[o+76>>2]=t,t=a[o+500>>2],a[o+448>>2]=a[o+496>>2],a[o+452>>2]=t,t=a[o+420>>2],a[o+80>>2]=a[o+416>>2],a[o+84>>2]=t,t=a[o+436>>2],a[o+64>>2]=a[o+432>>2],a[o+68>>2]=t,oA(B,o+80|0,o- -64|0),t=a[o+508>>2],a[o+440>>2]=a[o+504>>2],a[o+444>>2]=t,t=a[o+412>>2],a[o+56>>2]=a[o+408>>2],a[o+60>>2]=t,t=a[o+428>>2],a[o+40>>2]=a[o+424>>2],a[o+44>>2]=t,t=a[o+500>>2],a[o+432>>2]=a[o+496>>2],a[o+436>>2]=t,t=a[o+404>>2],a[o+48>>2]=a[o+400>>2],a[o+52>>2]=t,t=a[o+420>>2],a[o+32>>2]=a[o+416>>2],a[o+36>>2]=t,oA(B,o+48|0,o+32|0),t=a[o+508>>2],a[o+424>>2]=a[o+504>>2],a[o+428>>2]=t,t=a[o+524>>2],a[o+24>>2]=a[o+520>>2],a[o+28>>2]=t,t=a[o+412>>2],a[o+8>>2]=a[o+408>>2],a[o+12>>2]=t,t=a[o+500>>2],a[o+416>>2]=a[o+496>>2],a[o+420>>2]=t,t=a[o+516>>2],a[o+16>>2]=a[o+512>>2],a[o+20>>2]=t,t=a[o+404>>2],a[o>>2]=a[o+400>>2],a[o+4>>2]=t,oA(B,o+16|0,o),a[o+412>>2]=h^a[o+508>>2],a[o+408>>2]=_^a[o+504>>2],a[o+404>>2]=E^a[o+500>>2],a[o+400>>2]=Q^a[o+496>>2]),E=16,t=0,e>>>0<16)Q=0;else for(;U(A+t|0,C+t|0,o+400|0),Q=E,(E=(t=E)+16|0)>>>0<=e>>>0;);return(B=15&e)&&(VA((t=o+384|0)|B,0,16-B|0),OA(t,C+Q|0,B),U(C=o+512|0,t,o+400|0),OA(A+Q|0,C,B)),F(g,I,r,e,o+400|0),n=o+528|0,0},function(A,g,I,C,e,B,r,t,Q){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,r|=0;var o,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0;if(n=o=n-544|0,k(Q|=0,t|=0,o+432|0),Q=0,r>>>0<=31)t=0;else for(E=32;Y(B+Q|0,o+432|0),Q=t=E,(E=t+32|0)>>>0<=r>>>0;);if((Q=16|t)>>>0<=r>>>0)for(E=o+448|0,_=o+464|0,h=o+480|0,y=o+496|0,s=o+512|0;p=i[0|(t=B+t|0)]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,f=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,D=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,w=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,t=a[s+12>>2],a[o+392>>2]=a[s+8>>2],a[o+396>>2]=t,t=a[s+4>>2],a[o+384>>2]=a[s>>2],a[o+388>>2]=t,t=a[y+12>>2],a[o+376>>2]=a[y+8>>2],a[o+380>>2]=t,t=a[y+4>>2],a[o+368>>2]=a[y>>2],a[o+372>>2]=t,t=a[s+12>>2],a[o+360>>2]=a[s+8>>2],a[o+364>>2]=t,t=a[s+4>>2],a[o+352>>2]=a[s>>2],a[o+356>>2]=t,oA(t=o+528|0,o+368|0,o+352|0),c=a[o+540>>2],a[s+8>>2]=a[o+536>>2],a[s+12>>2]=c,c=a[o+532>>2],a[s>>2]=a[o+528>>2],a[s+4>>2]=c,c=a[h+12>>2],a[o+344>>2]=a[h+8>>2],a[o+348>>2]=c,c=a[h+4>>2],a[o+336>>2]=a[h>>2],a[o+340>>2]=c,c=a[y+12>>2],a[o+328>>2]=a[y+8>>2],a[o+332>>2]=c,c=a[y+4>>2],a[o+320>>2]=a[y>>2],a[o+324>>2]=c,oA(t,o+336|0,o+320|0),c=a[o+540>>2],a[y+8>>2]=a[o+536>>2],a[y+12>>2]=c,c=a[o+532>>2],a[y>>2]=a[o+528>>2],a[y+4>>2]=c,c=a[_+12>>2],a[o+312>>2]=a[_+8>>2],a[o+316>>2]=c,c=a[_+4>>2],a[o+304>>2]=a[_>>2],a[o+308>>2]=c,c=a[h+12>>2],a[o+296>>2]=a[h+8>>2],a[o+300>>2]=c,c=a[h+4>>2],a[o+288>>2]=a[h>>2],a[o+292>>2]=c,oA(t,o+304|0,o+288|0),c=a[o+540>>2],a[h+8>>2]=a[o+536>>2],a[h+12>>2]=c,c=a[o+532>>2],a[h>>2]=a[o+528>>2],a[h+4>>2]=c,c=a[E+12>>2],a[o+280>>2]=a[E+8>>2],a[o+284>>2]=c,c=a[E+4>>2],a[o+272>>2]=a[E>>2],a[o+276>>2]=c,c=a[_+12>>2],a[o+264>>2]=a[_+8>>2],a[o+268>>2]=c,c=a[_+4>>2],a[o+256>>2]=a[_>>2],a[o+260>>2]=c,oA(t,o+272|0,o+256|0),c=a[o+540>>2],a[_+8>>2]=a[o+536>>2],a[_+12>>2]=c,c=a[o+532>>2],a[_>>2]=a[o+528>>2],a[_+4>>2]=c,c=a[o+444>>2],a[o+248>>2]=a[o+440>>2],a[o+252>>2]=c,c=a[o+436>>2],a[o+240>>2]=a[o+432>>2],a[o+244>>2]=c,c=a[E+12>>2],a[o+232>>2]=a[E+8>>2],a[o+236>>2]=c,c=a[E+4>>2],a[o+224>>2]=a[E>>2],a[o+228>>2]=c,oA(t,o+240|0,o+224|0),c=a[o+540>>2],a[E+8>>2]=a[o+536>>2],a[E+12>>2]=c,c=a[o+532>>2],a[E>>2]=a[o+528>>2],a[E+4>>2]=c,c=a[o+396>>2],a[o+216>>2]=a[o+392>>2],a[o+220>>2]=c,c=a[o+444>>2],a[o+200>>2]=a[o+440>>2],a[o+204>>2]=c,c=a[o+388>>2],a[o+208>>2]=a[o+384>>2],a[o+212>>2]=c,c=a[o+436>>2],a[o+192>>2]=a[o+432>>2],a[o+196>>2]=c,oA(t,o+208|0,o+192|0),a[o+444>>2]=w^a[o+540>>2],a[o+440>>2]=a[o+536>>2]^D,a[o+436>>2]=a[o+532>>2]^f,a[o+432>>2]=a[o+528>>2]^p,(Q=(t=Q)+16|0)>>>0<=r>>>0;);(Q=15&r)&&(VA((E=o+416|0)|Q,0,16-Q|0),OA(E,B+t|0,Q),Q=a[o+416>>2],E=a[o+420>>2],_=a[o+424>>2],h=a[o+428>>2],t=a[o+524>>2],B=a[o+520>>2],a[o+392>>2]=B,a[o+396>>2]=t,y=a[o+508>>2],a[o+184>>2]=a[o+504>>2],a[o+188>>2]=y,a[o+168>>2]=B,a[o+172>>2]=t,t=a[o+516>>2],B=a[o+512>>2],a[o+384>>2]=B,a[o+388>>2]=t,y=a[o+500>>2],a[o+176>>2]=a[o+496>>2],a[o+180>>2]=y,a[o+160>>2]=B,a[o+164>>2]=t,oA(B=o+528|0,o+176|0,o+160|0),t=a[o+540>>2],a[o+520>>2]=a[o+536>>2],a[o+524>>2]=t,t=a[o+492>>2],a[o+152>>2]=a[o+488>>2],a[o+156>>2]=t,t=a[o+508>>2],a[o+136>>2]=a[o+504>>2],a[o+140>>2]=t,t=a[o+532>>2],a[o+512>>2]=a[o+528>>2],a[o+516>>2]=t,t=a[o+484>>2],a[o+144>>2]=a[o+480>>2],a[o+148>>2]=t,t=a[o+500>>2],a[o+128>>2]=a[o+496>>2],a[o+132>>2]=t,oA(B,o+144|0,o+128|0),t=a[o+540>>2],a[o+504>>2]=a[o+536>>2],a[o+508>>2]=t,t=a[o+476>>2],a[o+120>>2]=a[o+472>>2],a[o+124>>2]=t,t=a[o+492>>2],a[o+104>>2]=a[o+488>>2],a[o+108>>2]=t,t=a[o+532>>2],a[o+496>>2]=a[o+528>>2],a[o+500>>2]=t,t=a[o+468>>2],a[o+112>>2]=a[o+464>>2],a[o+116>>2]=t,t=a[o+484>>2],a[o+96>>2]=a[o+480>>2],a[o+100>>2]=t,oA(B,o+112|0,o+96|0),t=a[o+540>>2],a[o+488>>2]=a[o+536>>2],a[o+492>>2]=t,t=a[o+460>>2],a[o+88>>2]=a[o+456>>2],a[o+92>>2]=t,t=a[o+476>>2],a[o+72>>2]=a[o+472>>2],a[o+76>>2]=t,t=a[o+532>>2],a[o+480>>2]=a[o+528>>2],a[o+484>>2]=t,t=a[o+452>>2],a[o+80>>2]=a[o+448>>2],a[o+84>>2]=t,t=a[o+468>>2],a[o+64>>2]=a[o+464>>2],a[o+68>>2]=t,oA(B,o+80|0,o- -64|0),t=a[o+540>>2],a[o+472>>2]=a[o+536>>2],a[o+476>>2]=t,t=a[o+444>>2],a[o+56>>2]=a[o+440>>2],a[o+60>>2]=t,t=a[o+460>>2],a[o+40>>2]=a[o+456>>2],a[o+44>>2]=t,t=a[o+532>>2],a[o+464>>2]=a[o+528>>2],a[o+468>>2]=t,t=a[o+436>>2],a[o+48>>2]=a[o+432>>2],a[o+52>>2]=t,t=a[o+452>>2],a[o+32>>2]=a[o+448>>2],a[o+36>>2]=t,oA(B,o+48|0,o+32|0),t=a[o+540>>2],a[o+456>>2]=a[o+536>>2],a[o+460>>2]=t,t=a[o+396>>2],a[o+24>>2]=a[o+392>>2],a[o+28>>2]=t,t=a[o+444>>2],a[o+8>>2]=a[o+440>>2],a[o+12>>2]=t,t=a[o+532>>2],a[o+448>>2]=a[o+528>>2],a[o+452>>2]=t,t=a[o+388>>2],a[o+16>>2]=a[o+384>>2],a[o+20>>2]=t,t=a[o+436>>2],a[o>>2]=a[o+432>>2],a[o+4>>2]=t,oA(B,o+16|0,o),a[o+444>>2]=h^a[o+540>>2],a[o+440>>2]=_^a[o+536>>2],a[o+436>>2]=E^a[o+532>>2],a[o+432>>2]=Q^a[o+528>>2]);A:{g:{I:{C:{e:{if(A){if(E=16,I>>>0<16)break e;for(Q=0;x(A+Q|0,g+Q|0,o+432|0),Q=t=E,(E=t+16|0)>>>0<=I>>>0;);}else{if(Q=16,I>>>0<16)break I;for(E=0;x(o+528|0,g+E|0,o+432|0),E=t=Q,(Q=t+16|0)>>>0<=I>>>0;);}if(!(Q=15&I))break A;if(A)break C;break g}if(t=0,!(Q=I))break A}P(A+t|0,g+t|0,Q,o+432|0);break A}if(t=0,!(Q=I))break A}P(o+528|0,g+t|0,Q,o+432|0)}F(o+384|0,e,r,I,o+432|0),t=-1;A:{g:{if(g=e-16|0){if(16==(0|g))break g;break A}t=nA(o+384|0,C);break A}t=KA(o+384|0,C)}return!A|!t||VA(A,0,I),n=o+544|0,0|t},function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n+-64|0,(g|=0)|(I|=0)&&(a[B+8>>2]=2036477234,a[B+12>>2]=1797285236,a[B>>2]=1634760805,a[B+4>>2]=857760878,a[B+16>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[B+20>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[B+24>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,a[B+28>>2]=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,a[B+32>>2]=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,a[B+36>>2]=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,a[B+40>>2]=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,e=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,a[B+48>>2]=0,a[B+52>>2]=0,a[B+44>>2]=e,a[B+56>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,a[B+60>>2]=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,G(B,A=VA(A,0,g),A,g,I),dg(B,64)),n=B- -64|0,0},function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n+-64|0,(g|=0)|(I|=0)&&(a[B+8>>2]=2036477234,a[B+12>>2]=1797285236,a[B>>2]=1634760805,a[B+4>>2]=857760878,a[B+16>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[B+20>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[B+24>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,a[B+28>>2]=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,a[B+32>>2]=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,a[B+36>>2]=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,a[B+40>>2]=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,e=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,a[B+48>>2]=0,a[B+44>>2]=e,a[B+52>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,a[B+56>>2]=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,a[B+60>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,G(B,A=VA(A,0,g),A,g,I),dg(B,64)),n=B- -64|0,0},function(A,g,I,C,e,B,r,t){var Q;return A|=0,g|=0,e|=0,B|=0,r|=0,t|=0,n=Q=n+-64|0,(I|=0)|(C|=0)&&(a[Q+8>>2]=2036477234,a[Q+12>>2]=1797285236,a[Q>>2]=1634760805,a[Q+4>>2]=857760878,a[Q+16>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,a[Q+20>>2]=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,a[Q+24>>2]=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,a[Q+28>>2]=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,a[Q+32>>2]=i[t+16|0]|i[t+17|0]<<8|i[t+18|0]<<16|i[t+19|0]<<24,a[Q+36>>2]=i[t+20|0]|i[t+21|0]<<8|i[t+22|0]<<16|i[t+23|0]<<24,a[Q+40>>2]=i[t+24|0]|i[t+25|0]<<8|i[t+26|0]<<16|i[t+27|0]<<24,a[Q+44>>2]=i[t+28|0]|i[t+29|0]<<8|i[t+30|0]<<16|i[t+31|0]<<24,a[Q+48>>2]=B,a[Q+52>>2]=r,a[Q+56>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[Q+60>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,G(Q,g,A,I,C),dg(Q,64)),n=Q- -64|0,0},function(A,g,I,C,e,B,r){var t;return A|=0,g|=0,e|=0,B|=0,r|=0,n=t=n+-64|0,(I|=0)|(C|=0)&&(a[t+8>>2]=2036477234,a[t+12>>2]=1797285236,a[t>>2]=1634760805,a[t+4>>2]=857760878,a[t+16>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,a[t+20>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,a[t+24>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,a[t+28>>2]=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,a[t+32>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,a[t+36>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,a[t+40>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,a[t+48>>2]=B,a[t+44>>2]=r,a[t+52>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[t+56>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[t+60>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,G(t,g,A,I,C),dg(t,64)),n=t- -64|0,0}],Gg.grow=function(A){var g=this.length;return this.length=this.length+A,g},Gg.set=function(A,g){this[A]=g},Gg.get=function(A){return this[A]},Gg);function Ug(){return I.byteLength/65536|0}return{e:Object.create(Object.prototype,{grow:{value:function(A){A|=0;var e=0|Ug(),B=e+A|0;if(e<B&&B<65536){var Q=new ArrayBuffer(t(B,65536));new Int8Array(Q).set(C),C=new Int8Array(Q),new Int16Array(Q),a=new Int32Array(Q),i=new Uint8Array(Q),new Uint16Array(Q),r=new Uint32Array(Q),new Float32Array(Q),new Float64Array(Q),I=Q,g=i}return e}},buffer:{get:function(){return I}}}),f:function(){},g:ug,h:Ng,i:ug,j:vg,k:Mg,l:kg,m:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|HA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,t|=0,Q|=0,36272)},n:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|LA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,Q|=0,o|=0,36272)},o:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|NA(A|=0,g|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36276)},p:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|jA(A|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36276)},q:vg,r:Ng,s:vg,t:vg,u:Mg,v:wg,w:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|HA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,t|=0,Q|=0,36280)},x:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|LA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,Q|=0,o|=0,36280)},y:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|NA(A|=0,g|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36284)},z:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|jA(A|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36284)},A:Ng,B:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|FA(A|=0,g|=0,I|=0,C|=0,(A=0)|(e|=0),B|=0,a|=0,A|(i|=0),r|=0,Q|=0,o|=0)},C:function(A,g,I,C,e,i,r,t,Q,o,c){return A|=0,g|=0,C|=0,r|=0,Q|=0,r|=Q=0,!(e|=0)&(C|=Q)>>>0<4294967280?(FA(A,A+C|0,0,I|=0,C,e,i|=0,r,t|=0,o|=0,c|=0),g&&(e=(A=C+16|0)>>>0<16?e+1|0:e,a[g>>2]=A,a[g+4>>2]=e)):(ig(),B()),0},D:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|bA(A|=0,g|=0,I|=0,C|=0,(A=0)|(e|=0),B|=0,a|=0,A|(i|=0),r|=0,Q|=0,o|=0)},E:function(A,g,I,C,e,i,r,t,Q,o,c){return A|=0,g|=0,C|=0,r|=0,Q|=0,r|=Q=0,!(e|=0)&(C|=Q)>>>0<4294967280?(bA(A,A+C|0,0,I|=0,C,e,i|=0,r,t|=0,o|=0,c|=0),g&&(e=(A=C+16|0)>>>0<16?e+1|0:e,a[g>>2]=A,a[g+4>>2]=e)):(ig(),B()),0},F:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|MA(A|=0,I|=0,(A=0)|(C|=0),e|=0,B|=0,a|=0,A|(i|=0),r|=0,t|=0,Q|=0)},G:function(A,g,I,C,e,B,i,r,t,Q,o){return g|=0,I|=0,C|=0,e|=0,r|=0,r|=0,I=-1,!(B|=0)&(e|=0)>>>0>=16|B&&(I=MA(A|=0,C,e-16|0,B-(e>>>0<16)|0,(C+e|0)-16|0,i|=0,r,t|=0,Q|=0,o|=0)),g&&(a[g>>2]=I?0:e-16|0,a[g+4>>2]=I?0:B-(e>>>0<16)|0),0|I},H:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|SA(A|=0,I|=0,(A=0)|(C|=0),e|=0,B|=0,a|=0,A|(i|=0),r|=0,t|=0,Q|=0)},I:function(A,g,I,C,e,B,i,r,t,Q,o){return g|=0,I|=0,C|=0,e|=0,r|=0,r|=0,I=-1,!(B|=0)&(e|=0)>>>0>=16|B&&(I=SA(A|=0,C,e-16|0,B-(e>>>0<16)|0,(C+e|0)-16|0,i|=0,r,t|=0,Q|=0,o|=0)),g&&(a[g>>2]=I?0:e-16|0,a[g+4>>2]=I?0:B-(e>>>0<16)|0),0|I},J:vg,K:function(){return 12},L:Ng,M:ug,N:bg,O:wg,P:vg,Q:Kg,R:Ng,S:ug,T:bg,U:wg,V:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|DA(A|=0,g|=0,I|=0,C|=0,(A=0)|(e|=0),B|=0,a|=0,A|(i|=0),r|=0,Q|=0,o|=0)},W:function(A,g,I,C,e,i,r,t,Q,o,c){return A|=0,g|=0,C|=0,r|=0,Q|=0,r|=Q=0,!(e|=0)&(C|=Q)>>>0<4294967280?(DA(A,A+C|0,0,I|=0,C,e,i|=0,r,t|=0,o|=0,c|=0),g&&(e=(A=C+16|0)>>>0<16?e+1|0:e,a[g>>2]=A,a[g+4>>2]=e)):(ig(),B()),0},X:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|fA(A|=0,I|=0,(A=0)|(C|=0),e|=0,B|=0,a|=0,A|(i|=0),r|=0,t|=0,Q|=0)},Y:function(A,g,I,C,e,B,i,r,t,Q,o){return g|=0,I|=0,C|=0,e|=0,r|=0,r|=0,I=-1,!(B|=0)&(e|=0)>>>0>=16|B&&(I=fA(A|=0,C,e-16|0,B-(e>>>0<16)|0,(C+e|0)-16|0,i|=0,r,t|=0,Q|=0,o|=0)),g&&(a[g>>2]=I?0:e-16|0,a[g+4>>2]=I?0:B-(e>>>0<16)|0),0|I},Z:vg,_:Sg,$:Ng,aa:ug,ba:bg,ca:wg,da:vg,ea:vg,fa:function(A,g,I,e,B){var i;return A|=0,g|=0,I|=0,e|=0,n=i=n-480|0,_A(i,B|=0,32),hg(i,g,I,e),WA(i,i+416|0),g=a[i+444>>2],I=a[i+440>>2],C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[i+436>>2],I=a[i+432>>2],C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[i+428>>2],I=a[i+424>>2],C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[i+420>>2],I=a[i+416>>2],C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,n=i+480|0,0},ga:function(A,g,I,C,e){var B,i;return A|=0,g|=0,I|=0,C|=0,n=B=n-512|0,_A(i=B+32|0,e|=0,32),hg(i,g,I,C),WA(i,B+448|0),g=a[B+476>>2],a[B+24>>2]=a[B+472>>2],a[B+28>>2]=g,g=a[B+468>>2],a[B+16>>2]=a[B+464>>2],a[B+20>>2]=g,g=a[B+460>>2],a[B+8>>2]=a[B+456>>2],a[B+12>>2]=g,g=a[B+452>>2],a[B>>2]=a[B+448>>2],a[B+4>>2]=g,g=KA(A,B),I=lA(B,A,32),n=B+512|0,((0|A)==(0|B)?-1:g)|I},ha:wg,ia:vg,ja:vg,ka:vg,la:vg,ma:Sg,na:ug,oa:bg,pa:function(A,g,I){A|=0,g|=0;var e,B=0;return n=e=n+-64|0,wA(e,I|=0,32,0),I=a[e+28>>2],B=a[e+24>>2],C[g+24|0]=B,C[g+25|0]=B>>>8,C[g+26|0]=B>>>16,C[g+27|0]=B>>>24,C[g+28|0]=I,C[g+29|0]=I>>>8,C[g+30|0]=I>>>16,C[g+31|0]=I>>>24,I=a[e+20>>2],B=a[e+16>>2],C[g+16|0]=B,C[g+17|0]=B>>>8,C[g+18|0]=B>>>16,C[g+19|0]=B>>>24,C[g+20|0]=I,C[g+21|0]=I>>>8,C[g+22|0]=I>>>16,C[g+23|0]=I>>>24,I=a[e+12>>2],B=a[e+8>>2],C[g+8|0]=B,C[g+9|0]=B>>>8,C[g+10|0]=B>>>16,C[g+11|0]=B>>>24,C[g+12|0]=I,C[g+13|0]=I>>>8,C[g+14|0]=I>>>16,C[g+15|0]=I>>>24,I=a[e+4>>2],B=a[e>>2],C[0|g]=B,C[g+1|0]=B>>>8,C[g+2|0]=B>>>16,C[g+3|0]=B>>>24,C[g+4|0]=I,C[g+5|0]=I>>>8,C[g+6|0]=I>>>16,C[g+7|0]=I>>>24,dg(e,64),A=sg(A,g),n=e- -64|0,0|A},qa:tg,ra:XA,sa:$A,ta:function(A,g,I,C,e,B,a,i){A|=0,g|=0,I|=0,B|=0;var r,t=0;return t=C|=0,C=e|=0,r=0|t,n=t=n-32|0,e=-1,XA(t,a|=0,i|=0)||(e=hA(A,g,I,r,C,B,t),dg(t,32)),n=t+32|0,0|e},ua:function(A,g,I,C,e,a){return A|=0,g|=0,e|=0,a|=0,!(C|=0)&(I|=0)>>>0>=4294967280|C&&(ig(),B()),0|hA(A+16|0,A,g,I,C,e,a)},va:function(A,g,I,C,e,B,a){return 0|qA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)},wa:Ag,xa:function(A,g,I,C,e,B,a,i){A|=0,g|=0,I|=0,B|=0;var r,t=0;return t=C|=0,C=e|=0,r=0|t,n=t=n-32|0,e=-1,XA(t,a|=0,i|=0)||(e=pA(A,g,I,r,C,B,t),dg(t,32)),n=t+32|0,0|e},ya:zA,za:function(A,g,I,C,e,B,a){return 0|mA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)},Aa:function(A,g,I,e,B){A|=0,g|=0,B|=0;var i,r,t,Q,o=0,c=0;return o=I|=0,I=e|=0,Q=0|o,o=e=n,n=i=e-512&-64,e=-1,tg(r=i- -64|0,t=i+32|0)||(z(e=i+128|0,0,0,24),tA(e,r,32,0),tA(e,B,32,0),ZA(e,c=i+96|0,24),e=qA(A+32|0,g,Q,I,c,B,t),g=a[i+92>>2],I=a[i+88>>2],C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[i+84>>2],I=a[i+80>>2],C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[i+76>>2],I=a[i+72>>2],C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[i+68>>2],I=a[i+64>>2],C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,dg(t,32),dg(r,32),dg(c,24)),n=o,0|e},Ba:function(A,g,I,C,e,B){A|=0,g|=0,e|=0,B|=0;var a,i,r=0;return i=r=n,n=a=r-448&-64,r=-1,!(C|=0)&(I|=0)>>>0>=48|C&&(z(r=a- -64|0,0,0,24),tA(r,g,32,0),tA(r,e,32,0),ZA(r,e=a+32|0,24),r=mA(A,g+32|0,I-32|0,C-(I>>>0<32)|0,e,g,B)),n=i,0|r},Ca:function(){return 48},Da:ug,Ea:Fg,Fa:vg,Ga:ug,Ha:Fg,Ia:vg,Ja:function(){return 384},Ka:function(A,g,I,C,e,B,a){return 0|CA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)},La:z,Ma:function(A,g,I,C){return 0|tA(A|=0,g|=0,I|=0,C|=0)},Na:ZA,Oa:wg,Pa:Fg,Qa:function(A,g,I,C){return 0|wA(A|=0,g|=0,I|=0,C|=0)},Ra:ug,Sa:Fg,Ta:Kg,Ua:vg,Va:function(A,g,I,C,e,r){A|=0,g|=0,I|=0,C|=0,r|=0;var t,Q=0,o=0,c=0,E=0,y=0,_=0,h=0;return n=t=n-32|0,Q=i[0|(e|=0)]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,e=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[t+24>>2]=0,a[t+28>>2]=0,a[t+16>>2]=Q,a[t+20>>2]=e,a[t+8>>2]=0,a[t+12>>2]=0,a[(e=t)>>2]=I,a[e+4>>2]=C,g-65>>>0<=4294967246?(a[9280]=28,A=-1):g-65>>>0<4294967232?A=-1:(n=e=(c=n)-512&-64,!r|!A|((o=255&g)-65&255)>>>0<=191?(ig(),B()):(C=t+16|0,t?(E=725511199^(i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24),y=-1694144372^(i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24),I=-1377402159^(i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24),g=1359893119^(i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24)):(E=725511199,y=-1694144372,I=-1377402159,g=1359893119),C?(_=327033209^(i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24),h=1541459225^(i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24),Q=-79577749^(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),C=528734635^(i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24)):(_=327033209,h=1541459225,Q=-79577749,C=528734635),VA(e- -64|0,0,293),a[e+56>>2]=_,a[e+60>>2]=h,a[e+48>>2]=Q,a[e+52>>2]=C,a[e+40>>2]=E,a[e+44>>2]=y,a[e+32>>2]=I,a[e+36>>2]=g,a[e+24>>2]=1595750129,a[e+28>>2]=-1521486534,a[e+16>>2]=-23791573,a[e+20>>2]=1013904242,a[e+8>>2]=-2067093701,a[e+12>>2]=-1150833019,a[e>>2]=-222443256^(8192|o),a[e+4>>2]=1779033703,VA(32+(g=e+384|0)|0,0,96),OA(g,r,32),OA(e+96|0,g,128),a[e+352>>2]=128,dg(g,128),R(e,A,o),n=c),A=0),n=t+32|0,0|A},Wa:wg,Xa:function(A,g,I){return 0|IA(A|=0,g|=0,I|=0)},Ya:function(A,g,I){return 0|pg(A|=0,g|=0,I|=0)},Za:function(A,g){return gg(A|=0,g|=0),dg(A,4),0},_a:function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n-208|0,IA(B,g|=0,I|=0),pg(B,C,e),gg(B,A),dg(B,4),n=B+208|0,0},$a:wg,ab:function(A,g,I,e,B){A|=0,g|=0,I|=0,e|=0,B|=0;var r,t=0,Q=0,o=0,c=0;if(n=r=n-256|0,C[r+15|0]=1,g>>>0<=8160){if(g>>>0>=32)for(c=A-32|0,t=32;o=t,IA(t=r+48|0,B,32),Q&&pg(t,Q+c|0,32),pg(t=r+48|0,I,e),pg(t,r+15|0,1),gg(t,A+Q|0),C[r+15|0]=i[r+15|0]+1,(t=(Q=o)+32|0)>>>0<=g>>>0;);(Q=31&g)&&(IA(g=r+48|0,B,32),o&&pg(g,(A+o|0)-32|0,32),pg(g=r+48|0,I,e),pg(g,r+15|0,1),gg(I=g,g=r+16|0),OA(A+o|0,g,Q),dg(g,32)),dg(r+48|0,208),A=0}else a[9280]=28,A=-1;return n=r+256|0,0|A},bb:vg,cb:Ng,db:function(){return 8160},eb:lg,fb:function(A,g,I){return 0|_A(A|=0,g|=0,I|=0)},gb:function(A,g,I){return 0|hg(A|=0,g|=0,I|=0,0)},hb:function(A,g){return WA(A|=0,g|=0),dg(A,4),0},ib:function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n-416|0,_A(B,g|=0,I|=0),hg(B,C,e,0),WA(B,A),dg(B,4),n=B+416|0,0},jb:function(A){xA(A|=0,64)},kb:function(A,g,I,e,B){A|=0,g|=0,I|=0,e|=0,B|=0;var r,t=0,Q=0,o=0,c=0;if(n=r=n-496|0,C[r+15|0]=1,g>>>0<=16320){if(g>>>0>=64)for(c=A+-64|0,t=64;o=t,_A(t=r+80|0,B,64),Q&&hg(t,Q+c|0,64,0),hg(t=r+80|0,I,e,0),hg(t,r+15|0,1,0),WA(t,A+Q|0),C[r+15|0]=i[r+15|0]+1,(t=(Q=o)- -64|0)>>>0<=g>>>0;);(Q=63&g)&&(_A(g=r+80|0,B,64),o&&hg(g,(A+o|0)-64|0,64,0),hg(g=r+80|0,I,e,0),hg(g,r+15|0,1,0),WA(I=g,g=r+16|0),OA(A+o|0,g,Q),dg(g,64)),dg(r+80|0,416),A=0}else a[9280]=28,A=-1;return n=r+496|0,0|A},lb:Fg,mb:Ng,nb:function(){return 16320},ob:function(){return 416},pb:function(A,g,I){return A|=0,CA(g|=0,32,I|=0,32,0,0,0),0|Eg(A,g)},qb:function(A,g){return A|=0,xA(g|=0,32),0|Eg(A,g)},rb:function(A,g,I,e,a){g|=0,I|=0,e|=0,a|=0;var r,t,Q=0,o=0,c=0;if(t=Q=n,n=Q=Q-512&-64,r=(A|=0)||g){if(c=-1,!ag(o=Q+96|0,e,a)){for(e=g||A,A=0,z(g=Q+128|0,0,0,64),tA(g,o,32,0),dg(o,32),tA(g,I,32,0),tA(g,a,32,0),ZA(g,Q+32|0,64),dg(g,384);I=(g=Q+32|0)+A|0,C[A+r|0]=i[0|I],C[A+e|0]=i[I+32|0],C[(I=1|A)+r|0]=i[g+I|0],C[I+e|0]=i[g+(33|A)|0],32!=(0|(A=A+2|0)););dg(g,64),c=0}return n=t,0|c}ig(),B()},sb:function(A,g,I,e,a){g|=0,I|=0,e|=0,a|=0;var r,t,Q=0,o=0,c=0;if(t=Q=n,n=Q=Q-512&-64,r=(A|=0)||g){if(c=-1,!ag(o=Q+96|0,e,a)){for(e=g||A,A=0,z(g=Q+128|0,0,0,64),tA(g,o,32,0),dg(o,32),tA(g,a,32,0),tA(g,I,32,0),ZA(g,Q+32|0,64),dg(g,384);I=(g=Q+32|0)+A|0,C[A+e|0]=i[0|I],C[A+r|0]=i[I+32|0],C[(I=1|A)+e|0]=i[g+I|0],C[I+r|0]=i[g+(33|A)|0],32!=(0|(A=A+2|0)););dg(g,64),c=0}return n=t,0|c}ig(),B()},tb:vg,ub:vg,vb:vg,wb:vg,xb:Eg,yb:ag,zb:vg,Ab:vg,Bb:vg,Cb:Sg,Db:ug,Eb:bg,Fb:wg,Gb:$A,Hb:function(A,g,I,C,e,a){return A|=0,g|=0,e|=0,a|=0,!(C|=0)&(I|=0)>>>0>=4294967280|C&&(ig(),B()),hA(A+16|0,A,g,I,C,e,a),0},Ib:Ag,Jb:zA,Kb:wg,Lb:function(A,g,I){return A|=0,I|=0,xA(g|=0,24),$(A,g,I),C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,I=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,C[A+44|0]=0,C[A+45|0]=0,C[A+46|0]=0,C[A+47|0]=0,C[A+48|0]=0,C[A+49|0]=0,C[A+50|0]=0,C[A+51|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,0},Mb:function(A,g,I){return $(A|=0,g|=0,I|=0),C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,I=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,C[A+44|0]=0,C[A+45|0]=0,C[A+46|0]=0,C[A+47|0]=0,C[A+48|0]=0,C[A+49|0]=0,C[A+50|0]=0,C[A+51|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,0},Nb:function(A){var g,I=0,e=0;n=g=n-48|0,I=i[28+(A|=0)|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[g+24>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[g+28>>2]=I,I=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[g+16>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[g+20>>2]=I,I=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[g>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[g+4>>2]=I,I=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[g+8>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[g+12>>2]=I,I=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[g+32>>2]=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[g+36>>2]=I,cg(g,g,A+32|0,A),I=a[g+28>>2],e=a[g+24>>2],C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=a[g+20>>2],e=a[g+16>>2],C[A+16|0]=e,C[A+17|0]=e>>>8,C[A+18|0]=e>>>16,C[A+19|0]=e>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=a[g+12>>2],e=a[g+8>>2],C[A+8|0]=e,C[A+9|0]=e>>>8,C[A+10|0]=e>>>16,C[A+11|0]=e>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=a[g+4>>2],e=a[g>>2],C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,e=a[g+36>>2],I=a[g+32>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=e,C[A+41|0]=e>>>8,C[A+42|0]=e>>>16,C[A+43|0]=e>>>24,n=g+48|0},Ob:function(A,g,I,e,r,t,Q,o,c,E){A|=0,g|=0,e|=0,t|=0,Q|=0,c|=0,E|=0;var y,_=0,h=0,s=0;return _=r|=0,_|=r=0,y=r|(o|=0),n=r=n-384|0,(I|=0)&&(a[I>>2]=0,a[I+4>>2]=0),!t&_>>>0<4294967279?(yg(h=r+16|0,64,s=A+32|0,A),fg(o=r+80|0,h),dg(h,64),ng(o,Q,y,c),ng(o,34736,0-y&15,0),a[r+72>>2]=0,a[r+76>>2]=0,a[(Q=r- -64|0)>>2]=0,a[Q+4>>2]=0,a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,a[r+16>>2]=0,a[r+20>>2]=0,a[r+24>>2]=0,a[r+28>>2]=0,C[r+16|0]=E,JA(h,h,64,0,s,1,A),ng(o,h,64,0),C[0|g]=i[r+16|0],JA(g=g+1|0,e,_,t,s,2,A),ng(o,g,_,t),ng(o,34736,15&_,0),a[r+8>>2]=y,a[r+12>>2]=c,ng(o,e=r+8|0,8,0),a[r+8>>2]=_- -64,a[r+12>>2]=t-((_>>>0<4294967232)-1|0),ng(o,e,8,0),Dg(o,g=g+_|0),dg(o,256),C[A+36|0]=i[A+36|0]^i[0|g],C[A+37|0]=i[A+37|0]^i[g+1|0],C[A+38|0]=i[A+38|0]^i[g+2|0],C[A+39|0]=i[A+39|0]^i[g+3|0],C[A+40|0]=i[A+40|0]^i[g+4|0],C[A+41|0]=i[A+41|0]^i[g+5|0],C[A+42|0]=i[A+42|0]^i[g+6|0],C[A+43|0]=i[A+43|0]^i[g+7|0],YA(s),(2&E||kA(s,4))&&(g=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[r+360>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[r+364>>2]=g,g=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[r+352>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[r+356>>2]=g,g=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[r+336>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[r+340>>2]=g,g=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[r+344>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[r+348>>2]=g,g=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[r+368>>2]=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[r+372>>2]=g,cg(g=r+336|0,g,s,A),g=a[r+364>>2],e=a[r+360>>2],C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[r+356>>2],e=a[r+352>>2],C[A+16|0]=e,C[A+17|0]=e>>>8,C[A+18|0]=e>>>16,C[A+19|0]=e>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[r+348>>2],e=a[r+344>>2],C[A+8|0]=e,C[A+9|0]=e>>>8,C[A+10|0]=e>>>16,C[A+11|0]=e>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[r+340>>2],e=a[r+336>>2],C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=a[r+368>>2],e=a[r+372>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=e,C[A+41|0]=e>>>8,C[A+42|0]=e>>>16,C[A+43|0]=e>>>24),I&&(t=(A=_+17|0)>>>0<17?t+1|0:t,a[I>>2]=A,a[I+4>>2]=t),n=r+384|0):(ig(),B()),0},Pb:function(A,g,I,e,r,t,Q,o,c,E){A|=0,g|=0,e|=0,r|=0,o|=0,E|=0;var y,_=0,h=0,s=0,p=0,f=0,D=0;_=t|=0,t=Q|=0,h=0|_,y=c|=0,n=Q=n-400|0,(I|=0)&&(a[I>>2]=0,a[I+4>>2]=0),e&&(C[0|e]=255),D=-1;A:{g:{if(!((c=h>>>0<17)&!t)){if(f=_=t-c|0,!_&(c=h-17|0)>>>0>=4294967279|_)break g;yg(s=Q+32|0,64,p=A+32|0,A),fg(_=Q+96|0,s),dg(s,64),ng(_,o,y,E),ng(_,34736,0-y&15,0),a[Q+88>>2]=0,a[Q+92>>2]=0,a[Q+80>>2]=0,a[Q+84>>2]=0,a[Q+72>>2]=0,a[Q+76>>2]=0,a[(o=Q- -64|0)>>2]=0,a[o+4>>2]=0,a[Q+56>>2]=0,a[Q+60>>2]=0,a[Q+48>>2]=0,a[Q+52>>2]=0,a[Q+40>>2]=0,a[Q+44>>2]=0,a[Q+32>>2]=0,a[Q+36>>2]=0,C[Q+32|0]=i[0|r],JA(s,s,64,0,p,1,A),o=i[Q+32|0],C[Q+32|0]=i[0|r],ng(_,s,64,0),ng(_,r=r+1|0,c,f),ng(_,34736,h-1&15,0),a[Q+24>>2]=y,a[Q+28>>2]=E,ng(_,E=Q+24|0,8,0),t=(h=h+47|0)>>>0<47?t+1|0:t,a[Q+24>>2]=h,a[Q+28>>2]=t,ng(_,E,8,0),Dg(_,Q),dg(_,256),lA(Q,r+c|0,16)?dg(Q,16):(JA(g,r,c,f,p,2,A),C[A+36|0]=i[A+36|0]^i[0|Q],C[A+37|0]=i[A+37|0]^i[Q+1|0],C[A+38|0]=i[A+38|0]^i[Q+2|0],C[A+39|0]=i[A+39|0]^i[Q+3|0],C[A+40|0]=i[A+40|0]^i[Q+4|0],C[A+41|0]=i[A+41|0]^i[Q+5|0],C[A+42|0]=i[A+42|0]^i[Q+6|0],C[A+43|0]=i[A+43|0]^i[Q+7|0],YA(p),(2&o||kA(p,4))&&(g=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[Q+376>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[Q+380>>2]=g,g=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[Q+368>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[Q+372>>2]=g,g=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[Q+352>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[Q+356>>2]=g,g=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[Q+360>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[Q+364>>2]=g,g=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[Q+384>>2]=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[Q+388>>2]=g,cg(g=Q+352|0,g,p,A),g=a[Q+380>>2],r=a[Q+376>>2],C[A+24|0]=r,C[A+25|0]=r>>>8,C[A+26|0]=r>>>16,C[A+27|0]=r>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[Q+372>>2],r=a[Q+368>>2],C[A+16|0]=r,C[A+17|0]=r>>>8,C[A+18|0]=r>>>16,C[A+19|0]=r>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[Q+364>>2],r=a[Q+360>>2],C[A+8|0]=r,C[A+9|0]=r>>>8,C[A+10|0]=r>>>16,C[A+11|0]=r>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[Q+356>>2],r=a[Q+352>>2],C[0|A]=r,C[A+1|0]=r>>>8,C[A+2|0]=r>>>16,C[A+3|0]=r>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=a[Q+384>>2],r=a[Q+388>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=r,C[A+41|0]=r>>>8,C[A+42|0]=r>>>16,C[A+43|0]=r>>>24),I&&(a[I>>2]=c,a[I+4>>2]=f),D=0,e&&(C[0|e]=o))}n=Q+400|0;break A}ig(),B()}return 0|D},Qb:function(){return 52},Rb:function(){return 17},Sb:Sg,Tb:vg,Ub:function(){return-18},Vb:Ng,Wb:Yg,Xb:Hg,Yb:function(){return 3},Zb:Kg,_b:ug,$b:function(A,g,I,e,B){A|=0,g|=0,I|=0,e|=0;var a,r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0;if(w=1886610805^(t=i[0|(B|=0)]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),_=1936682341^(Q=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24),t^=1852142177,o=1819895653^Q,k=1852075885^(Q=i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24),f=1685025377^(B=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24),E=2037671283^Q,Q=1952801890^B,p=I,(0|(r=(I+g|0)-(a=7&I)|0))!=(0|g))for(;I=(c=Q^(D=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24))+o|0,E=e=t+(B=E^(n=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))|0,s=I=e>>>0<B>>>0?I+1|0:I,t=e,e=I,I=_+f|0,I=(Q=w+k|0)>>>0<w>>>0?I+1|0:I,y=(o=vA(k,f,13)^Q)+t|0,e=(t=h^I)+e|0,t=vA(o,t,17)^y,f=vA(t,e=(o=o>>>0>y>>>0?e+1|0:e)^h,13),_=h,c=vA(B,c,16),B=s^h,c^=E,s=vA(Q,I,32),I=h+B|0,I=(E=e)+(e=(Q=c+s|0)>>>0<s>>>0?I+1|0:I)|0,s=I=(E=t+Q|0)>>>0<Q>>>0?I+1|0:I,f=vA(t=E^f,I^=_,17),_=h,c=vA(c,B,21),B=e^h,c^=Q,Q=vA(y,o,32),e=h+B|0,I=(Q=Q>>>0>(o=c+Q|0)>>>0?e+1|0:e)+I|0,k=(t=t+o|0)^f,e=I=t>>>0<o>>>0?I+1|0:I,f=I^_,I=vA(c,B,16),c=Q^=h,y=vA(I^=o,Q,21),o=h,s=(Q=vA(E,s,32))+I|0,I=h+c|0,E=y^s,Q=(I=Q>>>0>s>>>0?I+1|0:I)^o,t=vA(t,e,32),o=h,w=s^n,_=I^D,(0|r)!=(0|(g=g+8|0)););switch(D=0,y=p<<24,a-1|0){case 6:y|=i[g+6|0]<<16;case 5:y|=i[g+5|0]<<8;case 4:y|=i[g+4|0];case 3:D|=(I=i[g+3|0])<<24,y|=e=I>>>8|0;case 2:D|=(e=i[g+2|0])<<16,y|=I=e>>>16|0;case 1:D|=(I=i[g+1|0])<<8,y|=e=I>>>24|0;case 0:D=i[0|g]|D}return g=A,e=vA(B=E^D,A=Q^y,16),A=A+o|0,Q=A=(s=B+t|0)>>>0<t>>>0?A+1|0:A,n=vA(B=e^s,A^=I=h,21),o=h,I=_+f|0,e=I=(t=w+k|0)>>>0<w>>>0?I+1|0:I,c=B,B=vA(t,I,32),I=h+A|0,A=o,o=I=B>>>0>(E=c+B|0)>>>0?I+1|0:I,_=vA(B=E^n,A^=I,16),c=h,I=(t=p=vA(k,f,13)^t)+s|0,e=(n=h^e)+Q|0,s=B,B=vA(I,e=I>>>0<t>>>0?e+1|0:e,32),A=h+A|0,_=vA(t=_^(s=s+B|0),B=(Q=B>>>0>s>>>0?A+1|0:A)^c,21),c=h,p=vA(p,n,17)^I,I=(n=h^e)+o|0,A=I=(e=E=(A=p)+E|0)>>>0<A>>>0?I+1|0:I,o=t,t=vA(e,I,32),I=h+B|0,c=I=(t=t>>>0>(o=o+t|0)>>>0?I+1|0:I)^c,_=vA(f=o^_,I,16),E=h,p=vA(p,n,13)^e,A=(n=A^h)+Q|0,e=A=(I=p)>>>0>(B=I+s|0)>>>0?A+1|0:A,A=vA(B,A,32),I=c+h|0,c=I=(Q=(A=f+(255^A)|0)>>>0<f>>>0?I+1|0:I)^E,s=A,_=vA(f=_^A,I,21),E=h,p=vA(p,n,17)^B,I=(n=e^h)+(t^y)|0,e=I=(A=o^D)>>>0>(B=p+A|0)>>>0?I+1|0:I,A=vA(B,I,32),I=c+h|0,c=I=(t=(A=A+f|0)>>>0<f>>>0?I+1|0:I)^E,o=A,y=vA(_^=A,I,16),E=h,p=vA(p,n,13)^B,A=Q+(n=h^e)|0,A=vA(B=s+p|0,I=A=B>>>0<s>>>0?A+1|0:A,32),e=c+h|0,c=e=(Q=(A=A+_|0)>>>0<_>>>0?e+1|0:e)^E,s=A,y=vA(_=y^A,e,21),E=h,A=vA(p,n,17),I=t+(p=I^h)|0,e=I=(B=o+(n=A^B)|0)>>>0<o>>>0?I+1|0:I,A=vA(B,I,32),I=c+h|0,o=A=A+_|0,t=I=A>>>0<_>>>0?I+1|0:I,y=vA(c=y^A,I^=E,16),E=h,A=vA(n,p,13),e=Q+(p=e^h)|0,A=vA(B=s+(n=A^B)|0,e=B>>>0<s>>>0?e+1|0:e,32),I=I+h|0,c=I=(Q=(A=A+c|0)>>>0<c>>>0?I+1|0:I)^E,s=A,y=vA(_=y^A,I,21),E=h,A=vA(n,p,17),I=t+(p=e^h)|0,e=I=(B=o+(n=A^B)|0)>>>0<o>>>0?I+1|0:I,I=vA(B,I,32),A=c+h|0,c=A=(t=(I=I+_|0)>>>0<_>>>0?A+1|0:A)^E,o=I,y=vA(_=y^I,A,16),E=h,A=vA(n,p,13),I=Q+(p=e^h)|0,e=I=(B=s+(n=A^B)|0)>>>0<s>>>0?I+1|0:I,A=vA(B,I,32),I=c+h|0,Q=A=A+_|0,y=vA(y^A,(I=A>>>0<_>>>0?I+1|0:I)^E,21),E=h,B=vA(n,p,17)^B,s=vA(B,A=e^h,13),A=A+t|0,e=A=h^((B=B+o|0)>>>0<o>>>0?A+1:A),B=vA(t=B^s,A,17)^y,A=h^E,e=I+e|0,I=vA(I=t+Q|0,e=I>>>0<Q>>>0?e+1|0:e,32)^B^I,C[0|g]=I,C[g+1|0]=I>>>8,C[g+2|0]=I>>>16,C[g+3|0]=I>>>24,A^=e^h,C[g+4|0]=A,C[g+5|0]=A>>>8,C[g+6|0]=A>>>16,C[g+7|0]=A>>>24,0},ac:kg,bc:lg,cc:Fg,dc:vg,ec:vg,fc:Fg,gc:function(){return-65},hc:function(A,g,I){A|=0;var e,B,a,r,t=0,Q=0,o=0,c=0,E=0;return n=a=n-160|0,wA(g|=0,I|=0,32,0),C[0|g]=248&i[0|g],C[g+31|0]=63&i[g+31|0]|64,Z(a,g),RA(A,a),Q=i[(B=I)+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,t=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,o=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,c=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,E=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,I=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,r=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,e=g,g=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,C[e+24|0]=g,C[e+25|0]=g>>>8,C[e+26|0]=g>>>16,C[e+27|0]=g>>>24,C[e+28|0]=r,C[e+29|0]=r>>>8,C[e+30|0]=r>>>16,C[e+31|0]=r>>>24,C[e+16|0]=o,C[e+17|0]=o>>>8,C[e+18|0]=o>>>16,C[e+19|0]=o>>>24,C[e+20|0]=c,C[e+21|0]=c>>>8,C[e+22|0]=c>>>16,C[e+23|0]=c>>>24,C[e+8|0]=Q,C[e+9|0]=Q>>>8,C[e+10|0]=Q>>>16,C[e+11|0]=Q>>>24,C[e+12|0]=t,C[e+13|0]=t>>>8,C[e+14|0]=t>>>16,C[e+15|0]=t>>>24,C[0|e]=E,C[e+1|0]=E>>>8,C[e+2|0]=E>>>16,C[e+3|0]=E>>>24,C[e+4|0]=I,C[e+5|0]=I>>>8,C[e+6|0]=I>>>16,C[e+7|0]=I>>>24,o=i[(t=A)+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,c=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,E=i[t+16|0]|i[t+17|0]<<8|i[t+18|0]<<16|i[t+19|0]<<24,I=i[t+20|0]|i[t+21|0]<<8|i[t+22|0]<<16|i[t+23|0]<<24,g=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,A=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,Q=i[t+28|0]|i[t+29|0]<<8|i[t+30|0]<<16|i[t+31|0]<<24,t=i[t+24|0]|i[t+25|0]<<8|i[t+26|0]<<16|i[t+27|0]<<24,C[e+56|0]=t,C[e+57|0]=t>>>8,C[e+58|0]=t>>>16,C[e+59|0]=t>>>24,C[e+60|0]=Q,C[e+61|0]=Q>>>8,C[e+62|0]=Q>>>16,C[e+63|0]=Q>>>24,C[e+48|0]=E,C[e+49|0]=E>>>8,C[e+50|0]=E>>>16,C[e+51|0]=E>>>24,C[e+52|0]=I,C[e+53|0]=I>>>8,C[e+54|0]=I>>>16,C[e+55|0]=I>>>24,C[e+40|0]=o,C[e+41|0]=o>>>8,C[e+42|0]=o>>>16,C[e+43|0]=o>>>24,C[e+44|0]=c,C[e+45|0]=c>>>8,C[e+46|0]=c>>>16,C[e+47|0]=c>>>24,C[e+32|0]=g,C[e+33|0]=g>>>8,C[e+34|0]=g>>>16,C[e+35|0]=g>>>24,C[e+36|0]=A,C[e+37|0]=A>>>8,C[e+38|0]=A>>>16,C[e+39|0]=A>>>24,n=a+160|0,0},ic:function(A,g){A|=0,g|=0;var I,e,B,r,t,Q=0,o=0,c=0;return n=o=n-192|0,xA(o,32),wA(g,o,32,0),C[0|g]=248&i[0|g],C[g+31|0]=63&i[g+31|0]|64,Z(c=o+32|0,g),RA(A,c),I=o,c=a[o+28>>2],o=a[o+24>>2],C[g+24|0]=o,C[g+25|0]=o>>>8,C[g+26|0]=o>>>16,C[g+27|0]=o>>>24,C[g+28|0]=c,C[g+29|0]=c>>>8,C[g+30|0]=c>>>16,C[g+31|0]=c>>>24,c=a[I+20>>2],o=a[I+16>>2],C[g+16|0]=o,C[g+17|0]=o>>>8,C[g+18|0]=o>>>16,C[g+19|0]=o>>>24,C[g+20|0]=c,C[g+21|0]=c>>>8,C[g+22|0]=c>>>16,C[g+23|0]=c>>>24,c=a[I+12>>2],o=a[I+8>>2],C[g+8|0]=o,C[g+9|0]=o>>>8,C[g+10|0]=o>>>16,C[g+11|0]=o>>>24,C[g+12|0]=c,C[g+13|0]=c>>>8,C[g+14|0]=c>>>16,C[g+15|0]=c>>>24,c=a[I+4>>2],o=a[I>>2],C[0|g]=o,C[g+1|0]=o>>>8,C[g+2|0]=o>>>16,C[g+3|0]=o>>>24,C[g+4|0]=c,C[g+5|0]=c>>>8,C[g+6|0]=c>>>16,C[g+7|0]=c>>>24,e=i[(Q=A)+8|0]|i[Q+9|0]<<8|i[Q+10|0]<<16|i[Q+11|0]<<24,B=i[Q+12|0]|i[Q+13|0]<<8|i[Q+14|0]<<16|i[Q+15|0]<<24,r=i[Q+16|0]|i[Q+17|0]<<8|i[Q+18|0]<<16|i[Q+19|0]<<24,c=i[Q+20|0]|i[Q+21|0]<<8|i[Q+22|0]<<16|i[Q+23|0]<<24,o=i[0|Q]|i[Q+1|0]<<8|i[Q+2|0]<<16|i[Q+3|0]<<24,A=i[Q+4|0]|i[Q+5|0]<<8|i[Q+6|0]<<16|i[Q+7|0]<<24,t=i[Q+28|0]|i[Q+29|0]<<8|i[Q+30|0]<<16|i[Q+31|0]<<24,Q=i[Q+24|0]|i[Q+25|0]<<8|i[Q+26|0]<<16|i[Q+27|0]<<24,C[g+56|0]=Q,C[g+57|0]=Q>>>8,C[g+58|0]=Q>>>16,C[g+59|0]=Q>>>24,C[g+60|0]=t,C[g+61|0]=t>>>8,C[g+62|0]=t>>>16,C[g+63|0]=t>>>24,C[g+48|0]=r,C[g+49|0]=r>>>8,C[g+50|0]=r>>>16,C[g+51|0]=r>>>24,C[g+52|0]=c,C[g+53|0]=c>>>8,C[g+54|0]=c>>>16,C[g+55|0]=c>>>24,C[g+40|0]=e,C[g+41|0]=e>>>8,C[g+42|0]=e>>>16,C[g+43|0]=e>>>24,C[g+44|0]=B,C[g+45|0]=B>>>8,C[g+46|0]=B>>>16,C[g+47|0]=B>>>24,C[g+32|0]=o,C[g+33|0]=o>>>8,C[g+34|0]=o>>>16,C[g+35|0]=o>>>24,C[g+36|0]=A,C[g+37|0]=A>>>8,C[g+38|0]=A>>>16,C[g+39|0]=A>>>24,dg(I,32),n=I+192|0,0},jc:function(A,g,I,C,e,B){g|=0,e|=0,B|=0;var i,r=0;return n=i=n-16|0,p(A|=0,i+8|0,TA(A- -64|0,I|=0,C|=0),C,e,B,0),64!=a[i+8>>2]|a[i+12>>2]?(g&&(a[g>>2]=0,a[g+4>>2]=0),VA(A,0,C- -64|0),r=-1):g&&(a[g>>2]=C- -64,a[g+4>>2]=e-((C>>>0<4294967232)-1|0)),n=i+16|0,0|r},kc:function(A,g,I,C,e,B){A|=0,g|=0,I|=0;var i=0;A:{g:{if(i=C|=0,!(!(e|=0)&C>>>0<64||(C=e-1|0,!(C=(e=i+-64|0)>>>0<4294967232?C+1|0:C)&e>>>0>4294967231|C))){if(!w(I,i=I- -64|0,e,C,B|=0,0))break g;A&&VA(A,0,e)}if(I=-1,!g)break A;a[g>>2]=0,a[g+4>>2]=0;break A}g&&(a[g>>2]=e,a[g+4>>2]=C),I=0,A&&TA(A,i,e)}return 0|I},lc:function(A,g,I,C,e,B){return p(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,0),0},mc:function(A,g,I,C,e){return 0|w(A|=0,g|=0,I|=0,C|=0,e|=0,0)},nc:function(A){return dA(A|=0),0},oc:function(A,g,I,C){return 0|W(A|=0,g|=0,I|=0,C|=0)},pc:function(A,g,I,C){var e;return g|=0,I|=0,C|=0,n=e=n+-64|0,J(A|=0,e),A=p(g,I,e,64,0,C,1),n=e- -64|0,0|A},qc:function(A,g,I){var C;return g|=0,I|=0,n=C=n+-64|0,J(A|=0,C),A=w(g,C,64,0,I,1),n=C- -64|0,0|A},rc:function(A,g){A|=0;var I,e=0,B=0,i=0,r=0,Q=0,o=0,c=0,E=0,y=0,_=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,T=0,q=0,z=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,rA=0,tA=0,oA=0,cA=0,EA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,dA=0,lA=0,vA=0,SA=0,bA=0,MA=0,FA=0,NA=0,KA=0,YA=0,HA=0,JA=0,UA=0,xA=0,mA=0,PA=0,RA=0,LA=0,TA=0;if(n=I=n-256|0,HA=-1,!uA(g|=0)&&!L(e=I+96|0,g)){for(n=i=n-2048|0,QA(r=i+640|0,e),e=a[(g=e)+36>>2],a[i+352>>2]=a[g+32>>2],a[i+356>>2]=e,e=a[g+28>>2],a[i+344>>2]=a[g+24>>2],a[i+348>>2]=e,e=a[g+20>>2],a[i+336>>2]=a[g+16>>2],a[i+340>>2]=e,e=a[g+12>>2],a[i+328>>2]=a[g+8>>2],a[i+332>>2]=e,e=a[g+4>>2],a[i+320>>2]=a[g>>2],a[i+324>>2]=e,e=a[g+52>>2],a[i+368>>2]=a[g+48>>2],a[i+372>>2]=e,e=a[g+60>>2],a[i+376>>2]=a[g+56>>2],a[i+380>>2]=e,B=a[4+(e=g- -64|0)>>2],a[i+384>>2]=a[e>>2],a[i+388>>2]=B,e=a[g+76>>2],a[i+392>>2]=a[g+72>>2],a[i+396>>2]=e,e=a[g+44>>2],a[i+360>>2]=a[g+40>>2],a[i+364>>2]=e,e=a[g+92>>2],a[i+408>>2]=a[g+88>>2],a[i+412>>2]=e,e=a[g+100>>2],a[i+416>>2]=a[g+96>>2],a[i+420>>2]=e,e=a[g+108>>2],a[i+424>>2]=a[g+104>>2],a[i+428>>2]=e,e=a[g+116>>2],a[i+432>>2]=a[g+112>>2],a[i+436>>2]=e,e=a[g+84>>2],a[i+400>>2]=a[g+80>>2],a[i+404>>2]=e,v(g=i+480|0,e=i+320|0),d(B=i+160|0,g,o=i+600|0),d(i+200|0,E=i+520|0,y=i+560|0),d(i+240|0,y,o),d(i+280|0,g,E),j(g,B,r),d(e,g,o),d(w=i+360|0,E,y),d(k=i+400|0,y,o),d(p=i+440|0,g,E),QA(r=i+800|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+960|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1120|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1280|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1440|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1600|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(i+1760|0,e),a[i+32>>2]=0,a[i+36>>2]=0,a[i+24>>2]=0,a[i+28>>2]=0,a[i+16>>2]=0,a[i+20>>2]=0,a[i+8>>2]=0,a[i+12>>2]=0,a[i+52>>2]=0,a[i+56>>2]=0,a[i+60>>2]=0,a[i+64>>2]=0,a[i+68>>2]=0,a[i+72>>2]=0,a[i+76>>2]=0,a[i+80>>2]=1,a[i>>2]=0,a[i+4>>2]=0,a[i+44>>2]=0,a[i+48>>2]=0,a[i+40>>2]=1,VA(i+84|0,0,76),_=i+120|0,D=i+2008|0,f=i+1968|0,e=i+80|0,B=i+40|0,r=252;Q=a[i+36>>2],a[(g=i+1960|0)>>2]=a[i+32>>2],a[g+4>>2]=Q,Q=a[i+28>>2],a[(g=i+1952|0)>>2]=a[i+24>>2],a[g+4>>2]=Q,Q=a[i+20>>2],a[(g=i+1944|0)>>2]=a[i+16>>2],a[g+4>>2]=Q,Q=a[i+12>>2],a[(g=i+1936|0)>>2]=a[i+8>>2],a[g+4>>2]=Q,g=a[i+4>>2],a[i+1928>>2]=a[i>>2],a[i+1932>>2]=g,Q=a[(g=B)+36>>2],a[f+32>>2]=a[g+32>>2],a[f+36>>2]=Q,Q=a[g+28>>2],a[f+24>>2]=a[g+24>>2],a[f+28>>2]=Q,Q=a[g+20>>2],a[f+16>>2]=a[g+16>>2],a[f+20>>2]=Q,Q=a[g+12>>2],a[f+8>>2]=a[g+8>>2],a[f+12>>2]=Q,Q=a[g+4>>2],a[f>>2]=a[g>>2],a[f+4>>2]=Q,Q=a[(g=e)+36>>2],a[D+32>>2]=a[g+32>>2],a[D+36>>2]=Q,Q=a[g+28>>2],a[D+24>>2]=a[g+24>>2],a[D+28>>2]=Q,Q=a[g+20>>2],a[D+16>>2]=a[g+16>>2],a[D+20>>2]=Q,Q=a[g+12>>2],a[D+8>>2]=a[g+8>>2],a[D+12>>2]=Q,Q=a[g+4>>2],a[D>>2]=a[g>>2],a[D+4>>2]=Q,r=C[(g=r)+33408|0],v(Q=i+480|0,i+1928|0),(0|r)>0?(d(u=i+320|0,Q,o),d(w,E,y),d(k,y,o),d(p,Q,E),j(Q,u,(i+640|0)+t((254&r)>>>1|0,160)|0)):(0|r)>=0||(d(u=i+320|0,Q=i+480|0,o),d(w,E,y),d(k,y,o),d(p,Q,E),X(Q,u,(i+640|0)+t((0-r&254)>>>1|0,160)|0)),d(i,r=i+480|0,o),d(B,E,y),d(e,y,o),d(_,r,E),r=g-1|0,g;);yA(g=i+640|0,i),g=kA(g,32),n=i+2048|0,g&&(HA=0,P=a[I+172>>2],a[I+36>>2]=0-P,w=a[I+168>>2],a[I+32>>2]=0-w,R=a[I+164>>2],a[I+28>>2]=0-R,E=a[I+160>>2],a[I+24>>2]=0-E,T=a[I+156>>2],a[I+20>>2]=0-T,y=a[I+152>>2],a[I+16>>2]=0-y,q=a[I+148>>2],a[I+12>>2]=0-q,D=a[I+144>>2],a[I+8>>2]=0-D,z=a[I+140>>2],a[I+4>>2]=0-z,i=a[I+136>>2],a[I>>2]=1-i,iA(I,I),g=GA(k=a[I+4>>2],U=k>>31,F=T<<1,rA=F>>31),e=h,B=GA(o=a[I>>2],N=o>>31,E,K=E>>31),e=h+e|0,e=(g=B+g|0)>>>0<B>>>0?e+1|0:e,B=(r=GA(Q=a[I+8>>2],O=Q>>31,y,Y=y>>31))+g|0,g=h+e|0,g=B>>>0<r>>>0?g+1|0:g,e=B,B=GA(x=a[I+12>>2],W=x>>31,gA=q<<1,tA=gA>>31),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(V=a[I+16>>2],IA=V>>31,D,H=D>>31),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,bA=r=a[I+20>>2],f=GA(r,oA=r>>31,CA=z<<1,cA=CA>>31),B=h+g|0,B=(e=f+e|0)>>>0<f>>>0?B+1|0:B,MA=S=a[I+24>>2],g=(i=GA(S,lA=S>>31,f=i+1|0,G=f>>31))+e|0,e=h+B|0,e=g>>>0<i>>>0?e+1|0:e,EA=a[I+28>>2],B=(i=GA(u=t(EA,19),$=u>>31,eA=P<<1,_A=eA>>31))+g|0,g=h+e|0,g=B>>>0<i>>>0?g+1|0:g,e=B,JA=a[I+32>>2],B=GA(_=t(JA,19),Z=_>>31,w,J=w>>31),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,UA=a[I+36>>2],B=GA(p=t(UA,19),m=p>>31,BA=R<<1,nA=BA>>31),g=h+g|0,s=e=B+e|0,i=e>>>0<B>>>0?g+1|0:g,g=GA(y,Y,k,U),e=h,c=GA(o,N,T,hA=T>>31),B=h+e|0,B=(g=c+g|0)>>>0<c>>>0?B+1|0:B,c=GA(Q,O,q,sA=q>>31),e=h+B|0,e=(g=c+g|0)>>>0<c>>>0?e+1|0:e,B=(c=GA(D,H,x,W))+g|0,g=h+e|0,g=B>>>0<c>>>0?g+1|0:g,e=B,B=GA(V,IA,z,pA=z>>31),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(f,G,r,oA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,c=GA(S=t(S,19),aA=S>>31,P,fA=P>>31),B=h+g|0,B=(e=c+e|0)>>>0<c>>>0?B+1|0:B,g=(c=GA(w,J,u,$))+e|0,e=h+B|0,e=g>>>0<c>>>0?e+1|0:e,B=(c=GA(_,Z,R,DA=R>>31))+g|0,g=h+e|0,g=B>>>0<c>>>0?g+1|0:g,e=B,B=GA(E,K,p,m),g=h+g|0,FA=e=e+B|0,AA=e>>>0<B>>>0?g+1|0:g,g=GA(k,U,gA,tA),B=h,e=(c=GA(o,N,y,Y))+g|0,g=h+B|0,g=e>>>0<c>>>0?g+1|0:g,c=GA(D,H,Q,O),B=h+g|0,B=(e=c+e|0)>>>0<c>>>0?B+1|0:B,g=(c=GA(x,W,CA,cA))+e|0,e=h+B|0,e=g>>>0<c>>>0?e+1|0:e,B=(c=GA(f,G,V,IA))+g|0,g=h+e|0,g=B>>>0<c>>>0?g+1|0:g,e=B,B=GA(c=t(r,19),wA=c>>31,eA,_A),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(w,J,S,aA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,r=GA(u,$,BA,nA),B=h+g|0,B=(e=r+e|0)>>>0<r>>>0?B+1|0:B,g=(r=GA(E,K,_,Z))+e|0,e=h+B|0,e=g>>>0<r>>>0?e+1|0:e,B=(r=GA(p,m,F,rA))+g|0,g=h+e|0,xA=B,mA=g=B>>>0<r>>>0?g+1|0:g,PA=B=B+33554432|0,RA=g=B>>>0<33554432?g+1|0:g,B=(67108863&g)<<6|B>>>26,g=(g>>26)+AA|0,FA=r=B+FA|0,g=B>>>0>r>>>0?g+1|0:g,LA=r=r+16777216|0,g=(e=(B=r>>>0<16777216?g+1|0:g)>>25)+i|0,g=(B=(r=(33554431&B)<<7|r>>>25)+s|0)>>>0<r>>>0?g+1|0:g,M=e=B+33554432|0,r=g=e>>>0<33554432?g+1|0:g,a[I+72>>2]=B-(-67108864&e),g=GA(k,U,CA,cA),e=h,i=GA(o,N,D,H),B=h+e|0,B=(g=i+g|0)>>>0<i>>>0?B+1|0:B,e=(i=GA(f,G,Q,O))+g|0,g=h+B|0,g=e>>>0<i>>>0?g+1|0:g,B=GA(i=t(x,19),dA=i>>31,eA,_A),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(s=GA(AA=t(V,19),vA=AA>>31,w,J))+e|0,e=h+g|0,e=B>>>0<s>>>0?e+1|0:e,s=GA(BA,nA,c,wA),g=h+e|0,g=(B=s+B|0)>>>0<s>>>0?g+1|0:g,e=(s=GA(E,K,S,aA))+B|0,B=h+g|0,B=e>>>0<s>>>0?B+1|0:B,s=GA(u,$,F,rA),g=h+B|0,g=(e=s+e|0)>>>0<s>>>0?g+1|0:g,B=GA(y,Y,_,Z),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(s=GA(p,m,gA,tA))+e|0,e=h+g|0,b=B,NA=B>>>0<s>>>0?e+1|0:e,g=GA(f,G,k,U),e=h,B=(s=GA(o,N,z,pA))+g|0,g=h+e|0,g=B>>>0<s>>>0?g+1|0:g,s=e=t(Q,19),e=(l=GA(e,SA=e>>31,P,fA))+B|0,B=h+g|0,B=e>>>0<l>>>0?B+1|0:B,l=GA(i,dA,w,J),g=h+B|0,g=(e=l+e|0)>>>0<l>>>0?g+1|0:g,B=GA(AA,vA,R,DA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(l=GA(E,K,c,wA))+e|0,e=h+g|0,e=B>>>0<l>>>0?e+1|0:e,l=GA(S,aA,T,hA),g=h+e|0,g=(B=l+B|0)>>>0<l>>>0?g+1|0:g,e=(l=GA(y,Y,u,$))+B|0,B=h+g|0,B=e>>>0<l>>>0?B+1|0:B,l=GA(_,Z,q,sA),g=h+B|0,g=(e=l+e|0)>>>0<l>>>0?g+1|0:g,B=GA(D,H,p,m),g=h+g|0,KA=e=B+e|0,l=e>>>0<B>>>0?g+1|0:g,g=GA(g=t(k,19),g>>31,eA,_A),e=h,B=GA(o,N,f,G),e=h+e|0,e=(g=B+g|0)>>>0<B>>>0?e+1|0:e,B=(s=GA(s,SA,w,J))+g|0,g=h+e|0,e=(i=GA(i,dA,BA,nA))+B|0,B=h+(B>>>0<s>>>0?g+1|0:g)|0,B=e>>>0<i>>>0?B+1|0:B,i=GA(E,K,AA,vA),g=h+B|0,g=(e=i+e|0)>>>0<i>>>0?g+1|0:g,B=GA(F,rA,c,wA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(i=GA(y,Y,S,aA))+e|0,e=h+g|0,e=B>>>0<i>>>0?e+1|0:e,i=GA(u,$,gA,tA),g=h+e|0,g=(B=i+B|0)>>>0<i>>>0?g+1|0:g,e=(i=GA(D,H,_,Z))+B|0,B=h+g|0,B=e>>>0<i>>>0?B+1|0:B,i=GA(p,m,CA,cA),g=h+B|0,s=e=i+e|0,dA=g=e>>>0<i>>>0?g+1|0:g,SA=e=e+33554432|0,TA=g=e>>>0<33554432?g+1|0:g,B=g>>26,g=(67108863&g)<<6|e>>>26,e=B+l|0,l=i=g+KA|0,g=e=g>>>0>i>>>0?e+1|0:e,KA=i=i+16777216|0,i=(33554431&(g=i>>>0<16777216?g+1|0:g))<<7|i>>>25,g=(g>>25)+NA|0,g=(e=i+b|0)>>>0<i>>>0?g+1|0:g,B=e,NA=e=e+33554432|0,i=g=e>>>0<33554432?g+1|0:g,a[I+56>>2]=B-(-67108864&e),g=GA(E,K,k,U),B=h,e=(b=GA(o,N,R,DA))+g|0,g=h+B|0,g=e>>>0<b>>>0?g+1|0:g,B=GA(Q,O,T,hA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=GA(y,Y,x,W),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,b=GA(V,IA,q,sA),B=h+g|0,B=(e=b+e|0)>>>0<b>>>0?B+1|0:B,g=(b=GA(D,H,bA,oA))+e|0,e=h+B|0,e=g>>>0<b>>>0?e+1|0:e,B=(b=GA(z,pA,MA,lA))+g|0,g=h+e|0,g=B>>>0<b>>>0?g+1|0:g,e=B,B=GA(EA,YA=EA>>31,f,G),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(_,Z,P,fA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,b=(B=e)+(e=GA(w,J,p,m))|0,B=h+g|0,e=(g=r>>26)+(e=e>>>0>b>>>0?B+1|0:B)|0,M=B=(r=(67108863&r)<<6|M>>>26)+b|0,g=e=B>>>0<r>>>0?e+1|0:e,b=B=B+16777216|0,r=g=B>>>0<16777216?g+1|0:g,a[I+76>>2]=M-(-33554432&B),g=GA(D,H,k,U),e=h,M=GA(o,N,q,sA),B=h+e|0,B=(g=M+g|0)>>>0<M>>>0?B+1|0:B,M=GA(Q,O,z,pA),e=h+B|0,e=(g=M+g|0)>>>0<M>>>0?e+1|0:e,B=(M=GA(f,G,x,W))+g|0,g=h+e|0,g=B>>>0<M>>>0?g+1|0:g,e=B,B=GA(AA,vA,P,fA),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(w,J,c,wA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,e=(S=GA(S,aA,R,DA))+e|0,B=h+g|0,g=(u=GA(E,K,u,$))+e|0,e=h+(e>>>0<S>>>0?B+1|0:B)|0,B=(_=GA(_,Z,T,hA))+g|0,g=h+(g>>>0<u>>>0?e+1|0:e)|0,g=B>>>0<_>>>0?g+1|0:g,e=B,B=GA(y,Y,p,m),g=h+g|0,M=e=e+B|0,g=(g=e>>>0<B>>>0?g+1|0:g)+(e=i>>26)|0,_=i=M+(B=(67108863&i)<<6|NA>>>26)|0,g=B>>>0>i>>>0?g+1|0:g,u=e=i+16777216|0,i=B=e>>>0<16777216?g+1|0:g,a[I+60>>2]=_-(-33554432&e),g=GA(k,U,BA,nA),B=h,e=(_=GA(o,N,w,J))+g|0,g=h+B|0,g=e>>>0<_>>>0?g+1|0:g,B=GA(E,K,Q,O),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,_=GA(x,W,F,rA),B=h+g|0,B=(e=_+e|0)>>>0<_>>>0?B+1|0:B,g=(_=GA(y,Y,V,IA))+e|0,e=h+B|0,e=g>>>0<_>>>0?e+1|0:e,B=(_=GA(gA,tA,bA,oA))+g|0,g=h+e|0,g=B>>>0<_>>>0?g+1|0:g,e=B,B=GA(D,H,MA,lA),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=e,e=GA(CA,cA,EA,YA),g=h+g|0,g=e>>>0>(B=B+e|0)>>>0?g+1|0:g,_=e=JA,e=(F=GA(e,S=e>>31,f,G))+B|0,B=h+g|0,g=(p=GA(p,m,eA,_A))+e|0,e=h+(e>>>0<F>>>0?B+1|0:B)|0,B=g>>>0<p>>>0?e+1|0:e,e=g,g=(g=r>>25)+B|0,g=(e=e+(r=(33554431&r)<<7|b>>>25)|0)>>>0<r>>>0?g+1|0:g,B=e,p=e=e+33554432|0,r=g=e>>>0<33554432?g+1|0:g,a[I+80>>2]=B-(-67108864&e),e=i>>25,B=(i=(33554431&i)<<7|u>>>25)+(xA-(g=-67108864&PA)|0)|0,g=e+(mA-((g>>>0>xA>>>0)+RA|0)|0)|0,g=B>>>0<i>>>0?g+1|0:g,g=((67108863&(g=(e=B+33554432|0)>>>0<33554432?g+1|0:g))<<6|e>>>26)+(F=FA-(-33554432&LA)|0)|0,a[I+68>>2]=g,a[I+64>>2]=B-(-67108864&e),g=GA(w,J,k,U),B=h,e=(i=GA(o,N,P,fA))+g|0,g=h+B|0,g=e>>>0<i>>>0?g+1|0:g,B=(i=GA(Q,O,R,DA))+e|0,e=h+g|0,e=B>>>0<i>>>0?e+1|0:e,g=(i=GA(E,K,x,W))+B|0,B=h+e|0,B=g>>>0<i>>>0?B+1|0:B,e=(i=GA(V,IA,T,hA))+g|0,g=h+B|0,g=e>>>0<i>>>0?g+1|0:g,B=GA(y,Y,bA,oA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=GA(q,sA,MA,lA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(i=GA(D,H,EA,YA))+e|0,e=h+g|0,e=B>>>0<i>>>0?e+1|0:e,i=(g=GA(_,S,z,pA))+B|0,B=h+e|0,B=g>>>0>i>>>0?B+1|0:B,e=i,i=GA(g=UA,g>>31,f,G),g=h+B|0,B=e=e+i|0,g=(g=e>>>0<i>>>0?g+1|0:g)+(e=r>>26)|0,g=(B=B+(r=(67108863&r)<<6|p>>>26)|0)>>>0<r>>>0?g+1|0:g,g=(e=B+16777216|0)>>>0<16777216?g+1|0:g,a[I+84>>2]=B-(-33554432&e),r=l-(-33554432&KA)|0,i=s-(B=-67108864&SA)|0,o=dA-((B>>>0>s>>>0)+TA|0)|0,g=GA((33554431&(B=g))<<7|e>>>25,g>>=25,19,0),e=h+o|0,g=g>>>0>(B=g+i|0)>>>0?e+1|0:e,g=((67108863&(g=(e=B+33554432|0)>>>0<33554432?g+1|0:g))<<6|e>>>26)+r|0,a[I+52>>2]=g,a[I+48>>2]=B-(-67108864&e),yA(A,I+48|0))}return n=I+256|0,0|HA},sc:function(A,g){A|=0;var I,e=0;return n=I=n+-64|0,wA(I,g|=0,32,0),C[0|I]=248&i[0|I],C[I+31|0]=63&i[I+31|0]|64,g=a[I+20>>2],e=a[I+16>>2],C[A+16|0]=e,C[A+17|0]=e>>>8,C[A+18|0]=e>>>16,C[A+19|0]=e>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[I+12>>2],e=a[I+8>>2],C[A+8|0]=e,C[A+9|0]=e>>>8,C[A+10|0]=e>>>16,C[A+11|0]=e>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[I+4>>2],e=a[I>>2],C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=a[I+28>>2],e=a[I+24>>2],C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,dg(I,64),n=I- -64|0,0},tc:function(){var A,g;return n=A=n-16|0,C[A+15|0]=0,g=0|c(36304,A+15|0,0),n=A+16|0,0|g},uc:Bg,vc:function(A){var g,I=0,e=0;if(n=g=n-16|0,(A|=0)>>>0>=2){for(I=(0-A>>>0)%(A>>>0)|0;C[g+15|0]=0,I>>>0>(e=0|c(36304,g+15|0,0))>>>0;);I=(e>>>0)%(A>>>0)|0}return n=g+16|0,0|I},wc:xA,xc:function(A,g,I){yg(A|=0,g|=0,33888,I|=0)},yc:vg,zc:function(){var A=0,g=0;return(A=a[9414])&&(A=a[A+20>>2])&&(g=0|Jg[0|A]()),0|g},Ac:function(A,g,I){A|=0,g|=0;var e,a=0,i=0,r=0;if(n=e=n-16|0,I|=0)E(1228,1088,198,1024),B();else{if(g|I)for(;C[e+15|0]=0,i=A+a|0,r=0|c(36304,e+15|0,0),C[0|i]=r,(0|g)!=(0|(a=a+1|0)););n=e+16|0}},Bc:function(A,g,I,e){A|=0,I|=0;var a=0,r=0,t=0;if(!((e|=0)>>>0>2147483646|e<<1>>>0>=(g|=0)>>>0)){if(g=0,e){for(;a=(g<<1)+A|0,r=15&(t=i[g+I|0]),C[a+1|0]=22272+((r<<8)+(r+65526&55552)|0)>>>8,r=a,a=t>>>4|0,C[0|r]=87+((a+65526>>>8&217)+a|0),(0|e)!=(0|(g=g+1|0)););g=e<<1}else g=0;return C[g+A|0]=0,0|A}ig(),B()},Cc:function(A,g,I,e,B,r,t){A|=0,g|=0,I|=0,B|=0,r|=0,t|=0;var Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0;A:{g:{I:{C:{e:{B:{a:{i:{r:{if(e|=0){if(B)break r;for(o=1,B=0;;){if(!(255&((n=(65526+(c=(223&(y=i[I+Q|0]))-55&255)^c+65520)>>>8|0)|(h=65526+(y^=48)>>>8|0))))break a;if(g>>>0<=_>>>0)break i;if(c=c&n|y&h,255&E?(C[A+_|0]=B|c,_=_+1|0):B=c<<4,E=~E,(0|(Q=Q+1|0))==(0|e))break}Q=e;break a}if(A=0,!t)break A;break I}for(;;){r:{t:{Q:{o:{c:{if(!(255&((y=(65526+(o=(223&(c=i[I+Q|0]))-55&255)^o+65520)>>>8|0)|(h=65526+(n=48^c)>>>8|0)))){if(255&E)break B;if(o=0,!sA(B,c))break C;if((Q=E=Q+1|0)>>>0<e>>>0)break c;break C}if(g>>>0<=_>>>0)break i;if(o=o&y|n&h,!(255&E))break o;C[A+_|0]=o|s,_=_+1|0;break r}for(;;){if(!(255&((n=(65526+(y=(223&(c=i[I+Q|0]))-55&255)^y+65520)>>>8|0)|(s=65526+(h=48^c)>>>8|0)))){if(!sA(B,c))break C;if((Q=Q+1|0)>>>0<e>>>0)continue;break Q}break}if(g>>>0<=_>>>0)break t;o=y&n|h&s}s=o<<4,E=0;break r}Q=e>>>0>E>>>0?e:E;break C}E=0;break i}if(E=~E,o=1,!((Q=Q+1|0)>>>0<e>>>0))break}break a}a[9280]=68,o=0}if(!(255&E))break e}a[9280]=28,o=-1,Q=Q-1|0,_=0;break C}_=o?_:0,o=o-1|0}if(!t){if((0|e)!=(0|Q))break g;A=o;break A}}a[t>>2]=I+Q,A=o;break A}a[9280]=28,A=-1}return r&&(a[r>>2]=_),0|A},Dc:function(A,g){A|=0;var I=0;return 1!=(-7&(g|=0))&&(ig(),B()),1+((3&(I=(I=A)+t(A=(A>>>0)/3|0,-3)|0)?2&g?I+1|0:4:0)+(A<<2)|0)|0},Ec:function(A,g,I,e,a){A|=0,g|=0,I|=0,e|=0;var r=0,Q=0,o=0,c=0,y=0,_=0,n=0;A:{g:{I:{C:{e:{B:{a:{if(1==(-7&(a|=0))&&(o=(r=(e>>>0)/3|0)<<2,(r=t(r,-3)+e|0)&&(o=2&a?2+((r>>>1|0)+o|0)|0:o+4|0),!(g>>>0<=o>>>0))){if(!(a>>>0>=4)){if(!e){a=0;break C}r=0,a=0;break a}if(!e){a=0;break C}for(r=0,a=0;;){for(y=i[I+c|0]|y<<8,r|=8;_=65510+(Q=y>>>(r=r-6|0)&63)>>>8|0,n=Q+65484>>>8|0,C[A+a|0]=~(1+(16321^Q))>>>8&45|Q+252&Q+65474>>>8&~n|~(Q+32705)>>>8&95|_&Q+65|n&Q+71&~_,a=a+1|0,r>>>0>5;);if((0|(c=c+1|0))==(0|e))break}if(!r)break e;c=45,Q=32705,e=95;break B}ig(),B()}for(;;){for(y=i[I+c|0]|y<<8,r|=8;_=65510+(Q=y>>>(r=r-6|0)&63)>>>8|0,n=Q+65484>>>8|0,C[A+a|0]=~(1+(16321^Q))>>>8&43|Q+252&Q+65474>>>8&~n|~(Q+16321)>>>8&47|_&Q+65|n&Q+71&~_,a=a+1|0,r>>>0>5;);if((0|(c=c+1|0))==(0|e))break}if(!r)break e;c=43,Q=16321,e=47}Q=~((I=y<<6-r&63)+Q)>>>8&e|(r=I+65510>>>8|0)&I+65,e=I+65484>>>8|0,C[A+a|0]=~(1+(16321^I))>>>8&c|Q|I+252&I+65474>>>8&~e|e&I+71&~r,a=a+1|0}if(a>>>0>o>>>0)break I}if(a>>>0<o>>>0)break g;o=a;break A}E(1036,1114,231,1300),B()}VA(A+a|0,61,o-a|0)}return VA(A+o|0,0,(g>>>0>(I=o+1|0)>>>0?g:I)-o|0),0|A},Fc:function(A,g,I,e,r,t,Q,o){A|=0,g|=0,I|=0,e|=0,r|=0,t|=0,Q|=0;var c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0;if(1==(-7&(o|=0))){A:{g:{I:{C:{e:{B:{a:{if(e){i:{r:{if(o>>>0<=3){for(;;){_=E;t:{Q:{o:{c:{for(;;){if(c=(c=(y=C[I+_|0])-65|0)&(~(90-y)&~c)>>>8&255|y+4&(~(y+65488)&~(57-y))>>>8&255|y+185&(~(y+65439)&~(122-y))>>>8&255|~(1+(16336^y))>>>8&63|~(1+(16340^y))>>>8&62,255!=(0|(c|=(c-1&1+(65470^y))>>>8&255)))break c;if(c=0,!r)break i;if(!sA(r,y))break;if((_=_+1|0)>>>0>=e>>>0)break o}E=_;break i}if(s=c+(s<<6)|0,n>>>0>1)break Q;n=n+6|0;break t}E=(A=E+1|0)>>>0<e>>>0?e:A;break i}if(n=n-2|0,g>>>0<=h>>>0)break r;C[A+h|0]=s>>>n,h=h+1|0}if(c=0,!((E=_+1|0)>>>0<e>>>0))break}break i}for(;;){t:{if(c=(c=(y=C[I+_|0])-65|0)&(~(90-y)&~c)>>>8&255|y+4&(~(y+65488)&~(57-y))>>>8&255|y+185&(~(y+65439)&~(122-y))>>>8&255|~(1+(16288^y))>>>8&63|~(1+(16338^y))>>>8&62,255==(0|(c|=(c-1&1+(65470^y))>>>8&255))){if(c=0,!r)break i;if(sA(r,y)){if((_=_+1|0)>>>0>=e>>>0)break t;continue}E=_;break i}if(s=c+(s<<6)|0,n>>>0<2)n=n+6|0;else{if(n=n-2|0,g>>>0<=h>>>0)break r;C[A+h|0]=s>>>n,h=h+1|0}if(c=0,(E=_+1|0)>>>0>=e>>>0)break i;_=E;continue}break}E=(A=E+1|0)>>>0<e>>>0?e:A;break i}E=_,a[9280]=68,c=1}if(n>>>0>4)break a;A=E}else A=0;if(g=-1,c){E=A;break A}if(~(-1<<n)&s){E=A;break A}if(2&o){o=A;break e}if(n>>>0<2){o=A;break e}if(E=A>>>0>e>>>0?A:e,_=n>>>1|0,!r)break B;for(o=A;;){if((0|o)==(0|E)){c=68;break C}if(61!=(0|(A=C[I+o|0]))){if(!sA(r,A)){c=28,E=o;break C}}else _=_-1|0;if(o=o+1|0,!_)break}break e}g=-1;break A}if(c=68,A>>>0>=e>>>0)break C;if(61!=i[A+I|0]){E=A,c=28;break C}if(o=A+_|0,1!=(0|_)){if((0|(n=A+1|0))==(0|E))break C;if(61!=i[I+n|0]){E=n,c=28;break C}if(2!=(0|_)){if((0|(A=A+2|0))==(0|E))break C;if(c=28,E=A,61!=i[A+I|0])break C}}}if(g=0,r)break I;break g}a[9280]=c;break A}if(!(e>>>0<=o>>>0)){for(;;){if(!sA(r,C[I+o|0]))break g;if((0|(o=o+1|0))==(0|e))break}o=e}}E=o,p=h}return Q?a[Q>>2]=I+E:(0|e)!=(0|E)&&(a[9280]=28,g=-1),t&&(a[t>>2]=p),0|g}ig(),B()},Gc:function(){var A=0;return a[9412]?A=1:(Bg(),xA(37632,16),a[9412]=1,A=0),0|A},Hc:function(A,g,I,e,r){A|=0,g|=0,I|=0,r|=0;var t,Q=0,o=0,c=0;n=t=n-16|0;A:{if(e|=0){if((Q=e-1|0)&e?(o=~I,Q=Q-((I>>>0)%(e>>>0)|0)|0):Q&=o=~I,Q>>>0>=o>>>0)break A;if((I=I+Q|0)>>>0>=r>>>0)g=-1;else for(A&&(a[A>>2]=I+1),A=g+I|0,g=0,C[t+15|0]=0,I=0;o=r=A-I|0,c=i[0|r]&i[t+15|0],r=(I^Q)-1>>>24|0,C[0|o]=c|128&r,C[t+15|0]=r|i[t+15|0],(0|e)!=(0|(I=I+1|0)););}else g=-1;return n=t+16|0,0|g}ig(),B()},Ic:function(A,g,I,C){A|=0,g|=0,I|=0,C|=0;var e,B=0,r=0,t=0,Q=0,o=0;if(a[12+(e=n-16|0)>>2]=0,C-1>>>0<I>>>0){for(o=(B=I-1|0)+g|0,I=0,g=0;Q=((128^(r=i[o-I|0]))-1&a[e+12>>2]-1&t-1)>>>8&1,a[e+12>>2]=a[e+12>>2]|0-Q&I,g|=Q,t|=r,(0|C)!=(0|(I=I+1|0)););a[A>>2]=B-a[e+12>>2],A=(255&g)-1|0}else A=-1;return 0|A},Jc:function(){return 1318},Kc:function(){return 26},Lc:Hg,Mc:Yg,Nc:function(A){var g,I=0,C=0,e=0,B=0,t=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0;n=g=n-16|0;A:{g:{I:{C:{e:{B:{a:{i:{r:{t:{if((A|=0)>>>0<=244){if(3&(I=(B=a[9281])>>>(A=(c=A>>>0<11?16:A+11&504)>>>3|0)|0)){A=37164+(I=(C=A+(1&~I)|0)<<3)|0,I=a[I+37172>>2],(0|A)!=(0|(e=a[I+8>>2]))?(a[e+12>>2]=A,a[A+8>>2]=e):(h=37124,s=Ig(-2,C)&B,a[h>>2]=s),A=I+8|0,C<<=3,a[I+4>>2]=3|C,a[4+(I=I+C|0)>>2]=1|a[I+4>>2];break A}if((E=a[9283])>>>0>=c>>>0)break t;if(I){I=37164+(C=(A=og((0-(C=2<<A)|C)&I<<A))<<3)|0,C=a[C+37172>>2],(0|I)!=(0|(e=a[C+8>>2]))?(a[e+12>>2]=I,a[I+8>>2]=e):(B=Ig(-2,A)&B,a[9281]=B),a[C+4>>2]=3|c,t=(A<<=3)-c|0,a[4+(o=C+c|0)>>2]=1|t,a[A+C>>2]=t,E&&(A=37164+(-8&E)|0,e=a[9286],(I=1<<(E>>>3))&B?I=a[A+8>>2]:(a[9281]=I|B,I=A),a[A+8>>2]=e,a[I+12>>2]=e,a[e+12>>2]=A,a[e+8>>2]=I),A=C+8|0,a[9286]=o,a[9283]=t;break A}if(!(_=a[9282]))break t;for(C=a[37428+(og(_)<<2)>>2],t=(-8&a[C+4>>2])-c|0,I=C;(A=a[I+16>>2])||(A=a[I+20>>2]);)t=(I=(e=(-8&a[A+4>>2])-c|0)>>>0<t>>>0)?e:t,C=I?A:C,I=A;if(y=a[C+24>>2],(0|C)!=(0|(A=a[C+12>>2]))){I=a[C+8>>2],a[I+12>>2]=A,a[A+8>>2]=I;break g}if(I=a[C+20>>2])e=C+20|0;else{if(!(I=a[C+16>>2]))break r;e=C+16|0}for(;o=e,e=(A=I)+20|0,(I=a[A+20>>2])||(e=A+16|0,I=a[A+16>>2]););a[o>>2]=0;break g}if(c=-1,!(A>>>0>4294967231)&&(c=-8&(I=A+11|0),o=a[9282])){E=31,t=0-c|0,A>>>0<=16777204&&(E=62+((c>>>38-(A=Q(I>>>8|0))&1)-(A<<1)|0)|0);Q:{o:{if(I=a[37428+(E<<2)>>2])for(A=0,C=c<<(31!=(0|E)?25-(E>>>1|0):0);;){if(!((B=(-8&a[I+4>>2])-c|0)>>>0>=t>>>0||(e=I,t=B))){t=0,A=I;break o}if(B=a[I+20>>2],I=a[16+((C>>>29&4)+I|0)>>2],A=B?(0|B)==(0|I)?A:B:A,C<<=1,!I)break}else A=0;if(!(A|e)){if(e=0,!(A=(0-(A=2<<E)|A)&o))break t;A=a[37428+(og(A)<<2)>>2]}if(!A)break Q}for(;t=(I=(C=(-8&a[A+4>>2])-c|0)>>>0<t>>>0)?C:t,e=I?A:e,A=(I=a[A+16>>2])||a[A+20>>2];);}if(!(!e|a[9283]-c>>>0<=t>>>0)){if(E=a[e+24>>2],(0|e)!=(0|(A=a[e+12>>2]))){I=a[e+8>>2],a[I+12>>2]=A,a[A+8>>2]=I;break I}if(I=a[e+20>>2])C=e+20|0;else{if(!(I=a[e+16>>2]))break i;C=e+16|0}for(;B=C,C=(A=I)+20|0,(I=a[A+20>>2])||(C=A+16|0,I=a[A+16>>2]););a[B>>2]=0;break I}}}if((e=a[9283])>>>0>=c>>>0){A=a[9286],(I=e-c|0)>>>0>=16?(a[4+(C=A+c|0)>>2]=1|I,a[A+e>>2]=I,a[A+4>>2]=3|c):(a[A+4>>2]=3|e,a[4+(I=A+e|0)>>2]=1|a[I+4>>2],C=0,I=0),a[9283]=I,a[9286]=C,A=A+8|0;break A}if((C=a[9284])>>>0>c>>>0){I=C-c|0,a[9284]=I,C=(A=a[9287])+c|0,a[9287]=C,a[C+4>>2]=1|I,a[A+4>>2]=3|c,A=A+8|0;break A}if(A=0,t=c+47|0,a[9399]?I=a[9401]:(a[9402]=-1,a[9403]=-1,a[9400]=4096,a[9401]=4096,a[9399]=g+12&-16^1431655768,a[9404]=0,a[9392]=0,I=4096),(I=(B=t+I|0)&(o=0-I|0))>>>0<=c>>>0)break A;if((E=a[9391])&&(e=(y=a[9389])+I|0)>>>0<=y>>>0|e>>>0>E>>>0)break A;t:{if(!(4&i[37568])){Q:{o:{c:{E:{if(e=a[9287])for(A=37572;;){if((E=a[A>>2])>>>0<=e>>>0&e>>>0<E+a[A+4>>2]>>>0)break E;if(!(A=a[A+8>>2]))break}if(-1==(0|(C=PA(0))))break Q;if(B=I,(e=(A=a[9400])-1|0)&C&&(B=(I-C|0)+(C+e&0-A)|0),B>>>0<=c>>>0)break Q;if((e=a[9391])&&(A=(o=a[9389])+B|0)>>>0<=o>>>0|A>>>0>e>>>0)break Q;if((0|C)!=(0|(A=PA(B))))break c;break t}if((0|(C=PA(B=o&B-C)))==(a[A>>2]+a[A+4>>2]|0))break o;A=C}if(-1==(0|A))break Q;if(c+48>>>0<=B>>>0){C=A;break t}if(-1==(0|PA(C=(C=a[9401])+(t-B|0)&0-C)))break Q;B=C+B|0,C=A;break t}if(-1!=(0|C))break t}a[9392]=4|a[9392]}if(-1==(0|(C=PA(I)))|-1==(0|(A=PA(0)))|A>>>0<=C>>>0)break e;if((B=A-C|0)>>>0<=c+40>>>0)break e}A=a[9389]+B|0,a[9389]=A,A>>>0>r[9390]&&(a[9390]=A);t:{if(t=a[9287]){for(A=37572;;){if(((I=a[A>>2])+(e=a[A+4>>2])|0)==(0|C))break t;if(!(A=a[A+8>>2]))break}break a}for((A=a[9285])>>>0<=C>>>0&&A||(a[9285]=C),A=0,a[9394]=B,a[9393]=C,a[9289]=-1,a[9290]=a[9399],a[9396]=0;e=37164+(I=A<<3)|0,a[I+37172>>2]=e,a[I+37176>>2]=e,32!=(0|(A=A+1|0)););e=(A=B-40|0)-(I=-8-C&7)|0,a[9284]=e,I=I+C|0,a[9287]=I,a[I+4>>2]=1|e,a[4+(A+C|0)>>2]=40,a[9288]=a[9403];break B}if(8&a[A+12>>2]|C>>>0<=t>>>0|I>>>0>t>>>0)break a;a[A+4>>2]=e+B,I=(A=-8-t&7)+t|0,a[9287]=I,A=(C=a[9284]+B|0)-A|0,a[9284]=A,a[I+4>>2]=1|A,a[4+(C+t|0)>>2]=40,a[9288]=a[9403];break B}A=0;break g}A=0;break I}r[9285]>C>>>0&&(a[9285]=C),e=C+B|0,A=37572;a:{for(;;){if((0|(I=a[A>>2]))!=(0|e)){if(A=a[A+8>>2])continue;break a}break}if(!(8&i[A+12|0]))break C}for(A=37572;!((I=a[A>>2])>>>0<=t>>>0&&(e=I+a[A+4>>2]|0)>>>0>t>>>0);)A=a[A+8>>2];for(o=(A=B-40|0)-(I=-8-C&7)|0,a[9284]=o,I=I+C|0,a[9287]=I,a[I+4>>2]=1|o,a[4+(A+C|0)>>2]=40,a[9288]=a[9403],a[(I=(A=(e+(39-e&7)|0)-47|0)>>>0<t+16>>>0?t:A)+4>>2]=27,A=a[9396],a[I+16>>2]=a[9395],a[I+20>>2]=A,A=a[9394],a[I+8>>2]=a[9393],a[I+12>>2]=A,a[9395]=I+8,a[9394]=B,a[9393]=C,a[9396]=0,A=I+24|0;a[A+4>>2]=7,C=A+8|0,A=A+4|0,C>>>0<e>>>0;);if((0|I)!=(0|t)){a[I+4>>2]=-2&a[I+4>>2],C=I-t|0,a[t+4>>2]=1|C,a[I>>2]=C;a:if(C>>>0<=255)A=37164+(-8&C)|0,(I=a[9281])&(C=1<<(C>>>3))?I=a[A+8>>2]:(a[9281]=I|C,I=A),a[A+8>>2]=t,a[I+12>>2]=t,e=8,C=12;else{A=31,C>>>0<=16777215&&(A=62+((C>>>38-(A=Q(C>>>8|0))&1)-(A<<1)|0)|0),a[t+28>>2]=A,a[t+16>>2]=0,a[t+20>>2]=0,I=37428+(A<<2)|0;i:{if((e=a[9282])&(B=1<<A)){for(A=C<<(31!=(0|A)?25-(A>>>1|0):0),e=a[I>>2];;){if((0|C)==(-8&a[(I=e)+4>>2]))break i;if(e=A>>>29|0,A<<=1,!(e=a[16+(B=(4&e)+I|0)>>2]))break}a[B+16>>2]=t}else a[9282]=e|B,a[I>>2]=t;a[t+24>>2]=I,A=I=t,e=12,C=8;break a}A=a[I+8>>2],a[A+12>>2]=t,a[I+8>>2]=t,a[t+8>>2]=A,A=0,e=12,C=24}a[e+t>>2]=I,a[C+t>>2]=A}}if(!((A=a[9284])>>>0<=c>>>0)){I=A-c|0,a[9284]=I,C=(A=a[9287])+c|0,a[9287]=C,a[C+4>>2]=1|I,a[A+4>>2]=3|c,A=A+8|0;break A}}a[9280]=48,A=0;break A}a[A>>2]=C,a[A+4>>2]=a[A+4>>2]+B,a[4+(E=(-8-C&7)+C|0)>>2]=3|c,o=(B=I+(-8-I&7)|0)-(t=c+E|0)|0;C:if(a[9287]!=(0|B))if(a[9286]!=(0|B)){if(1==(3&(A=a[B+4>>2]))){y=-8&A,C=a[B+12>>2];e:if(A>>>0<=255){if((0|(I=a[B+8>>2]))==(0|C)){h=37124,s=a[9281]&Ig(-2,A>>>3|0),a[h>>2]=s;break e}a[I+12>>2]=C,a[C+8>>2]=I}else{c=a[B+24>>2];B:if((0|C)==(0|B)){a:{if(A=a[B+20>>2])I=B+20|0;else{if(!(A=a[B+16>>2]))break a;I=B+16|0}for(;e=I,C=A,I=A+20|0,(A=a[A+20>>2])||(I=C+16|0,A=a[C+16>>2]););a[e>>2]=0;break B}C=0}else A=a[B+8>>2],a[A+12>>2]=C,a[C+8>>2]=A;if(c){A=a[B+28>>2];B:{if(a[(I=37428+(A<<2)|0)>>2]==(0|B)){if(a[I>>2]=C,C)break B;h=37128,s=a[9282]&Ig(-2,A),a[h>>2]=s;break e}if(a[c+(a[c+16>>2]==(0|B)?16:20)>>2]=C,!C)break e}a[C+24>>2]=c,(A=a[B+16>>2])&&(a[C+16>>2]=A,a[A+24>>2]=C),(A=a[B+20>>2])&&(a[C+20>>2]=A,a[A+24>>2]=C)}}o=o+y|0,A=a[4+(B=B+y|0)>>2]}if(a[B+4>>2]=-2&A,a[t+4>>2]=1|o,a[t+o>>2]=o,o>>>0<=255)A=37164+(-8&o)|0,(I=a[9281])&(C=1<<(o>>>3))?I=a[A+8>>2]:(a[9281]=I|C,I=A),a[A+8>>2]=t,a[I+12>>2]=t,a[t+12>>2]=A,a[t+8>>2]=I;else{C=31,o>>>0<=16777215&&(C=62+((o>>>38-(A=Q(o>>>8|0))&1)-(A<<1)|0)|0),a[t+28>>2]=C,a[t+16>>2]=0,a[t+20>>2]=0,A=37428+(C<<2)|0;e:{if((I=a[9282])&(e=1<<C)){for(C=o<<(31!=(0|C)?25-(C>>>1|0):0),I=a[A>>2];;){if((-8&a[(A=I)+4>>2])==(0|o))break e;if(I=C>>>29|0,C<<=1,!(I=a[16+(e=(4&I)+A|0)>>2]))break}a[e+16>>2]=t}else a[9282]=I|e,a[A>>2]=t;a[t+24>>2]=A,a[t+12>>2]=t,a[t+8>>2]=t;break C}I=a[A+8>>2],a[I+12>>2]=t,a[A+8>>2]=t,a[t+24>>2]=0,a[t+12>>2]=A,a[t+8>>2]=I}}else a[9286]=t,A=a[9283]+o|0,a[9283]=A,a[t+4>>2]=1|A,a[A+t>>2]=A;else a[9287]=t,A=a[9284]+o|0,a[9284]=A,a[t+4>>2]=1|A;A=E+8|0;break A}I:if(E){I=a[e+28>>2];C:{if(a[(C=37428+(I<<2)|0)>>2]==(0|e)){if(a[C>>2]=A,A)break C;o=Ig(-2,I)&o,a[9282]=o;break I}if(a[E+(a[E+16>>2]==(0|e)?16:20)>>2]=A,!A)break I}a[A+24>>2]=E,(I=a[e+16>>2])&&(a[A+16>>2]=I,a[I+24>>2]=A),(I=a[e+20>>2])&&(a[A+20>>2]=I,a[I+24>>2]=A)}I:if(t>>>0<=15)A=t+c|0,a[e+4>>2]=3|A,a[4+(A=A+e|0)>>2]=1|a[A+4>>2];else if(a[e+4>>2]=3|c,a[4+(B=e+c|0)>>2]=1|t,a[t+B>>2]=t,t>>>0<=255)A=37164+(-8&t)|0,(I=a[9281])&(C=1<<(t>>>3))?I=a[A+8>>2]:(a[9281]=I|C,I=A),a[A+8>>2]=B,a[I+12>>2]=B,a[B+12>>2]=A,a[B+8>>2]=I;else{A=31,t>>>0<=16777215&&(A=62+((t>>>38-(A=Q(t>>>8|0))&1)-(A<<1)|0)|0),a[B+28>>2]=A,a[B+16>>2]=0,a[B+20>>2]=0,I=37428+(A<<2)|0;C:{if((C=1<<A)&o){for(A=t<<(31!=(0|A)?25-(A>>>1|0):0),I=a[I>>2];;){if(C=I,(-8&a[I+4>>2])==(0|t))break C;if(o=A>>>29|0,A<<=1,!(I=a[16+(o=I+(4&o)|0)>>2]))break}a[o+16>>2]=B,a[B+24>>2]=C}else a[9282]=C|o,a[I>>2]=B,a[B+24>>2]=I;a[B+12>>2]=B,a[B+8>>2]=B;break I}A=a[C+8>>2],a[A+12>>2]=B,a[C+8>>2]=B,a[B+24>>2]=0,a[B+12>>2]=C,a[B+8>>2]=A}A=e+8|0;break A}g:if(y){I=a[C+28>>2];I:{if(a[(e=37428+(I<<2)|0)>>2]==(0|C)){if(a[e>>2]=A,A)break I;h=37128,s=Ig(-2,I)&_,a[h>>2]=s;break g}if(a[y+(a[y+16>>2]==(0|C)?16:20)>>2]=A,!A)break g}a[A+24>>2]=y,(I=a[C+16>>2])&&(a[A+16>>2]=I,a[I+24>>2]=A),(I=a[C+20>>2])&&(a[A+20>>2]=I,a[I+24>>2]=A)}t>>>0<=15?(A=t+c|0,a[C+4>>2]=3|A,a[4+(A=A+C|0)>>2]=1|a[A+4>>2]):(a[C+4>>2]=3|c,a[4+(o=C+c|0)>>2]=1|t,a[t+o>>2]=t,E&&(A=37164+(-8&E)|0,e=a[9286],(I=1<<(E>>>3))&B?I=a[A+8>>2]:(a[9281]=I|B,I=A),a[A+8>>2]=e,a[I+12>>2]=e,a[e+12>>2]=A,a[e+8>>2]=I),a[9286]=o,a[9283]=t),A=C+8|0}return n=g+16|0,0|A},Oc:function(A){var g=0,I=0,C=0,e=0,B=0,i=0,t=0,o=0,c=0;A:if(A|=0){B=(C=A-8|0)+(A=-8&(g=a[A-4>>2]))|0;g:if(!(1&g)){if(!(2&g))break A;if((C=C-(g=a[C>>2])|0)>>>0<r[9285])break A;A=A+g|0;I:{C:{e:{if(a[9286]!=(0|C)){if(I=a[C+12>>2],g>>>0<=255){if((0|(e=a[C+8>>2]))!=(0|I))break e;o=37124,c=a[9281]&Ig(-2,g>>>3|0),a[o>>2]=c;break g}if(t=a[C+24>>2],(0|I)!=(0|C)){g=a[C+8>>2],a[g+12>>2]=I,a[I+8>>2]=g;break I}if(e=a[C+20>>2])g=C+20|0;else{if(!(e=a[C+16>>2]))break C;g=C+16|0}for(;i=g,g=(I=e)+20|0,(e=a[I+20>>2])||(g=I+16|0,e=a[I+16>>2]););a[i>>2]=0;break I}if(3&~(g=a[B+4>>2]))break g;return a[9283]=A,a[B+4>>2]=-2&g,a[C+4>>2]=1|A,void(a[B>>2]=A)}a[e+12>>2]=I,a[I+8>>2]=e;break g}I=0}if(t){g=a[C+28>>2];I:{if(a[(e=37428+(g<<2)|0)>>2]==(0|C)){if(a[e>>2]=I,I)break I;o=37128,c=a[9282]&Ig(-2,g),a[o>>2]=c;break g}if(a[t+(a[t+16>>2]==(0|C)?16:20)>>2]=I,!I)break g}a[I+24>>2]=t,(g=a[C+16>>2])&&(a[I+16>>2]=g,a[g+24>>2]=I),(g=a[C+20>>2])&&(a[I+20>>2]=g,a[g+24>>2]=I)}}if(!(C>>>0>=B>>>0)&&1&(g=a[B+4>>2])){g:{I:{C:{e:{if(!(2&g)){if((0|B)==a[9287]){if(a[9287]=C,A=a[9284]+A|0,a[9284]=A,a[C+4>>2]=1|A,a[9286]!=(0|C))break A;return a[9283]=0,void(a[9286]=0)}if((0|B)==a[9286])return a[9286]=C,A=a[9283]+A|0,a[9283]=A,a[C+4>>2]=1|A,void(a[A+C>>2]=A);if(A=(-8&g)+A|0,I=a[B+12>>2],g>>>0<=255){if((0|(e=a[B+8>>2]))==(0|I)){o=37124,c=a[9281]&Ig(-2,g>>>3|0),a[o>>2]=c;break I}a[e+12>>2]=I,a[I+8>>2]=e;break I}if(t=a[B+24>>2],(0|I)!=(0|B)){g=a[B+8>>2],a[g+12>>2]=I,a[I+8>>2]=g;break C}if(e=a[B+20>>2])g=B+20|0;else{if(!(e=a[B+16>>2]))break e;g=B+16|0}for(;i=g,g=(I=e)+20|0,(e=a[I+20>>2])||(g=I+16|0,e=a[I+16>>2]););a[i>>2]=0;break C}a[B+4>>2]=-2&g,a[C+4>>2]=1|A,a[A+C>>2]=A;break g}I=0}if(t){g=a[B+28>>2];C:{if((0|B)==a[(e=37428+(g<<2)|0)>>2]){if(a[e>>2]=I,I)break C;o=37128,c=a[9282]&Ig(-2,g),a[o>>2]=c;break I}if(a[t+((0|B)==a[t+16>>2]?16:20)>>2]=I,!I)break I}a[I+24>>2]=t,(g=a[B+16>>2])&&(a[I+16>>2]=g,a[g+24>>2]=I),(g=a[B+20>>2])&&(a[I+20>>2]=g,a[g+24>>2]=I)}}if(a[C+4>>2]=1|A,a[A+C>>2]=A,a[9286]==(0|C))return void(a[9283]=A)}if(A>>>0<=255)return g=37164+(-8&A)|0,(e=a[9281])&(A=1<<(A>>>3))?A=a[g+8>>2]:(a[9281]=A|e,A=g),a[g+8>>2]=C,a[A+12>>2]=C,a[C+12>>2]=g,void(a[C+8>>2]=A);I=31,A>>>0<=16777215&&(I=62+((A>>>38-(g=Q(A>>>8|0))&1)-(g<<1)|0)|0),a[C+28>>2]=I,a[C+16>>2]=0,a[C+20>>2]=0,i=37428+(I<<2)|0;g:{I:{if((g=a[9282])&(e=1<<I)){for(I=A<<(31!=(0|I)?25-(I>>>1|0):0),g=a[i>>2];;){if(e=g,(-8&a[g+4>>2])==(0|A))break I;if(g=I>>>29|0,I<<=1,!(g=a[(i=16+((4&g)+e|0)|0)>>2]))break}I=24,g=e}else a[9282]=g|e,I=24,g=i;e=C,B=C,A=8;break g}g=a[e+8>>2],a[g+12>>2]=C,I=8,i=e+8|0,B=0,A=24}a[i>>2]=C,a[I+C>>2]=g,a[C+12>>2]=e,a[A+C>>2]=B,A=a[9289]-1|0,a[9289]=A||-1}}},Pc:Jg}}(A)}(g)},instantiate:function(A,g){return{then:function(I){var C=new _.Module(A);I({instance:new _.Instance(C,g)})}}},RuntimeError:Error};c=[];var n,h,s,p,f,D,w,k=!1;function d(){var A=y.buffer;e.HEAP8=n=new Int8Array(A),e.HEAP16=s=new Int16Array(A),e.HEAPU8=h=new Uint8Array(A),e.HEAPU16=new Uint16Array(A),e.HEAP32=p=new Int32Array(A),e.HEAPU32=f=new Uint32Array(A),e.HEAPF32=D=new Float32Array(A),e.HEAPF64=w=new Float64Array(A)}var l=[],u=[],v=[],S=0,b=null,M=null;function F(A){throw e.onAbort?.(A),E(A="Aborted("+A+")"),k=!0,A+=". Build with -sASSERTIONS for more info.",new _.RuntimeError(A)}var N,K=A=>A.startsWith("file://");var Y={36304:()=>e.getRandomValue(),36340:()=>{if(void 0===e.getRandomValue)try{var A="object"==typeof window?window:self,g=void 0!==A.crypto?A.crypto:A.msCrypto;g=void 0===g?C:g;var I=function(){var A=new Uint32Array(1);return g.getRandomValues(A),A[0]>>>0};I(),e.getRandomValue=I}catch(A){try{var C=require("crypto"),B=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};B(),e.getRandomValue=B}catch(A){throw"No secure random number generator found"}}}},H=A=>{for(;A.length>0;)A.shift()(e)};e.noExitRuntime;var G,J="undefined"!=typeof TextDecoder?new TextDecoder:void 0,U=(A,g)=>A?((A,g,I)=>{for(var C=g+I,e=g;A[e]&&!(e>=C);)++e;if(e-g>16&&A.buffer&&J)return J.decode(A.subarray(g,e));for(var B="";g<e;){var a=A[g++];if(128&a){var i=63&A[g++];if(192!=(224&a)){var r=63&A[g++];if((a=224==(240&a)?(15&a)<<12|i<<6|r:(7&a)<<18|i<<12|r<<6|63&A[g++])<65536)B+=String.fromCharCode(a);else{var t=a-65536;B+=String.fromCharCode(55296|t>>10,56320|1023&t)}}else B+=String.fromCharCode((31&a)<<6|i)}else B+=String.fromCharCode(a)}return B})(h,A,g):"",x=[],m=A=>{var g=(A-y.buffer.byteLength+65535)/65536;try{return y.grow(g),d(),1}catch(A){}},P={b:(A,g,I,C)=>{F(`Assertion failed: ${U(A)}, at: `+[g?U(g):"unknown filename",I,C?U(C):"unknown function"])},c:()=>{F("")},a:(A,g,I)=>((A,g,I)=>{var C=((A,g)=>{var I;for(x.length=0;I=h[A++];){var C=105!=I;g+=(C&=112!=I)&&g%8?4:0,x.push(112==I?f[g>>2]:105==I?p[g>>2]:w[g>>3]),g+=C?8:4}return x})(g,I);return Y[A](...C)})(A,g,I),d:A=>{var g=h.length,I=2147483648;if((A>>>=0)>I)return!1;for(var C,e=1;e<=4;e*=2){var B=g*(1+.2/e);B=Math.min(B,A+100663296);var a=Math.min(I,(C=Math.max(A,B))+(65536-C%65536)%65536);if(m(a))return!0}return!1}},R=function(){var A={a:P};function g(A,g){var I;return R=A.exports,y=R.e,d(),I=R.f,u.unshift(I),function(A){if(S--,e.monitorRunDependencies?.(S),0==S&&(null!==b&&(clearInterval(b),b=null),M)){var g=M;M=null,g()}}(),R}if(S++,e.monitorRunDependencies?.(S),e.instantiateWasm)try{return e.instantiateWasm(A,g)}catch(A){return E(`Module.instantiateWasm callback failed with error: ${A}`),!1}return N||(N="<<< WASM_BINARY_FILE >>>"),function(A,g,C){(function(A){return Promise.resolve().then((()=>function(A){if(A==N&&c)return new Uint8Array(c);if(I)return I(A);throw"both async and sync fetching of the wasm failed"}(A)))})(A).then((A=>_.instantiate(A,g))).then(C,(A=>{E(`failed to asynchronously prepare wasm: ${A}`),F(A)}))}(N,A,(function(A){g(A.instance)})),{}}();function L(){function A(){G||(G=!0,e.calledRun=!0,k||(H(u),e.onRuntimeInitialized?.(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)A=e.postRun.shift(),v.unshift(A);var A;H(v)}()))}S>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)A=e.preRun.shift(),l.unshift(A);var A;H(l)}(),S>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),A()}),1)):A()))}if(e._crypto_aead_aegis128l_keybytes=()=>(e._crypto_aead_aegis128l_keybytes=R.g)(),e._crypto_aead_aegis128l_nsecbytes=()=>(e._crypto_aead_aegis128l_nsecbytes=R.h)(),e._crypto_aead_aegis128l_npubbytes=()=>(e._crypto_aead_aegis128l_npubbytes=R.i)(),e._crypto_aead_aegis128l_abytes=()=>(e._crypto_aead_aegis128l_abytes=R.j)(),e._crypto_aead_aegis128l_messagebytes_max=()=>(e._crypto_aead_aegis128l_messagebytes_max=R.k)(),e._crypto_aead_aegis128l_keygen=A=>(e._crypto_aead_aegis128l_keygen=R.l)(A),e._crypto_aead_aegis128l_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_encrypt=R.m)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis128l_encrypt_detached=R.n)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis128l_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt=R.o)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt_detached=R.p)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_keybytes=()=>(e._crypto_aead_aegis256_keybytes=R.q)(),e._crypto_aead_aegis256_nsecbytes=()=>(e._crypto_aead_aegis256_nsecbytes=R.r)(),e._crypto_aead_aegis256_npubbytes=()=>(e._crypto_aead_aegis256_npubbytes=R.s)(),e._crypto_aead_aegis256_abytes=()=>(e._crypto_aead_aegis256_abytes=R.t)(),e._crypto_aead_aegis256_messagebytes_max=()=>(e._crypto_aead_aegis256_messagebytes_max=R.u)(),e._crypto_aead_aegis256_keygen=A=>(e._crypto_aead_aegis256_keygen=R.v)(A),e._crypto_aead_aegis256_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_encrypt=R.w)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis256_encrypt_detached=R.x)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis256_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt=R.y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt_detached=R.z)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aes256gcm_is_available=()=>(e._crypto_aead_aes256gcm_is_available=R.A)(),e._crypto_aead_chacha20poly1305_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_encrypt_detached=R.B)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_encrypt=R.C)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=R.D)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt=R.E)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt_detached=R.F)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt=R.G)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=R.H)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt=R.I)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_chacha20poly1305_ietf_keybytes=R.J)(),e._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_npubbytes=R.K)(),e._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_nsecbytes=R.L)(),e._crypto_aead_chacha20poly1305_ietf_abytes=()=>(e._crypto_aead_chacha20poly1305_ietf_abytes=R.M)(),e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=R.N)(),e._crypto_aead_chacha20poly1305_ietf_keygen=A=>(e._crypto_aead_chacha20poly1305_ietf_keygen=R.O)(A),e._crypto_aead_chacha20poly1305_keybytes=()=>(e._crypto_aead_chacha20poly1305_keybytes=R.P)(),e._crypto_aead_chacha20poly1305_npubbytes=()=>(e._crypto_aead_chacha20poly1305_npubbytes=R.Q)(),e._crypto_aead_chacha20poly1305_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_nsecbytes=R.R)(),e._crypto_aead_chacha20poly1305_abytes=()=>(e._crypto_aead_chacha20poly1305_abytes=R.S)(),e._crypto_aead_chacha20poly1305_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_messagebytes_max=R.T)(),e._crypto_aead_chacha20poly1305_keygen=A=>(e._crypto_aead_chacha20poly1305_keygen=R.U)(A),e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=R.V)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_xchacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt=R.W)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=R.X)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt=R.Y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_keybytes=R.Z)(),e._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_npubbytes=R._)(),e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=R.$)(),e._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_abytes=R.aa)(),e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=R.ba)(),e._crypto_aead_xchacha20poly1305_ietf_keygen=A=>(e._crypto_aead_xchacha20poly1305_ietf_keygen=R.ca)(A),e._crypto_auth_bytes=()=>(e._crypto_auth_bytes=R.da)(),e._crypto_auth_keybytes=()=>(e._crypto_auth_keybytes=R.ea)(),e._crypto_auth=(A,g,I,C,B)=>(e._crypto_auth=R.fa)(A,g,I,C,B),e._crypto_auth_verify=(A,g,I,C,B)=>(e._crypto_auth_verify=R.ga)(A,g,I,C,B),e._crypto_auth_keygen=A=>(e._crypto_auth_keygen=R.ha)(A),e._crypto_box_seedbytes=()=>(e._crypto_box_seedbytes=R.ia)(),e._crypto_box_publickeybytes=()=>(e._crypto_box_publickeybytes=R.ja)(),e._crypto_box_secretkeybytes=()=>(e._crypto_box_secretkeybytes=R.ka)(),e._crypto_box_beforenmbytes=()=>(e._crypto_box_beforenmbytes=R.la)(),e._crypto_box_noncebytes=()=>(e._crypto_box_noncebytes=R.ma)(),e._crypto_box_macbytes=()=>(e._crypto_box_macbytes=R.na)(),e._crypto_box_messagebytes_max=()=>(e._crypto_box_messagebytes_max=R.oa)(),e._crypto_box_seed_keypair=(A,g,I)=>(e._crypto_box_seed_keypair=R.pa)(A,g,I),e._crypto_box_keypair=(A,g)=>(e._crypto_box_keypair=R.qa)(A,g),e._crypto_box_beforenm=(A,g,I)=>(e._crypto_box_beforenm=R.ra)(A,g,I),e._crypto_box_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_detached_afternm=R.sa)(A,g,I,C,B,a,i),e._crypto_box_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_detached=R.ta)(A,g,I,C,B,a,i,r),e._crypto_box_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_easy_afternm=R.ua)(A,g,I,C,B,a),e._crypto_box_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_easy=R.va)(A,g,I,C,B,a,i),e._crypto_box_open_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_open_detached_afternm=R.wa)(A,g,I,C,B,a,i),e._crypto_box_open_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_open_detached=R.xa)(A,g,I,C,B,a,i,r),e._crypto_box_open_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_open_easy_afternm=R.ya)(A,g,I,C,B,a),e._crypto_box_open_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_open_easy=R.za)(A,g,I,C,B,a,i),e._crypto_box_seal=(A,g,I,C,B)=>(e._crypto_box_seal=R.Aa)(A,g,I,C,B),e._crypto_box_seal_open=(A,g,I,C,B,a)=>(e._crypto_box_seal_open=R.Ba)(A,g,I,C,B,a),e._crypto_box_sealbytes=()=>(e._crypto_box_sealbytes=R.Ca)(),e._crypto_generichash_bytes_min=()=>(e._crypto_generichash_bytes_min=R.Da)(),e._crypto_generichash_bytes_max=()=>(e._crypto_generichash_bytes_max=R.Ea)(),e._crypto_generichash_bytes=()=>(e._crypto_generichash_bytes=R.Fa)(),e._crypto_generichash_keybytes_min=()=>(e._crypto_generichash_keybytes_min=R.Ga)(),e._crypto_generichash_keybytes_max=()=>(e._crypto_generichash_keybytes_max=R.Ha)(),e._crypto_generichash_keybytes=()=>(e._crypto_generichash_keybytes=R.Ia)(),e._crypto_generichash_statebytes=()=>(e._crypto_generichash_statebytes=R.Ja)(),e._crypto_generichash=(A,g,I,C,B,a,i)=>(e._crypto_generichash=R.Ka)(A,g,I,C,B,a,i),e._crypto_generichash_init=(A,g,I,C)=>(e._crypto_generichash_init=R.La)(A,g,I,C),e._crypto_generichash_update=(A,g,I,C)=>(e._crypto_generichash_update=R.Ma)(A,g,I,C),e._crypto_generichash_final=(A,g,I)=>(e._crypto_generichash_final=R.Na)(A,g,I),e._crypto_generichash_keygen=A=>(e._crypto_generichash_keygen=R.Oa)(A),e._crypto_hash_bytes=()=>(e._crypto_hash_bytes=R.Pa)(),e._crypto_hash=(A,g,I,C)=>(e._crypto_hash=R.Qa)(A,g,I,C),e._crypto_kdf_bytes_min=()=>(e._crypto_kdf_bytes_min=R.Ra)(),e._crypto_kdf_bytes_max=()=>(e._crypto_kdf_bytes_max=R.Sa)(),e._crypto_kdf_contextbytes=()=>(e._crypto_kdf_contextbytes=R.Ta)(),e._crypto_kdf_keybytes=()=>(e._crypto_kdf_keybytes=R.Ua)(),e._crypto_kdf_derive_from_key=(A,g,I,C,B,a)=>(e._crypto_kdf_derive_from_key=R.Va)(A,g,I,C,B,a),e._crypto_kdf_keygen=A=>(e._crypto_kdf_keygen=R.Wa)(A),e._crypto_kdf_hkdf_sha256_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_init=R.Xa)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_update=R.Ya)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha256_extract_final=R.Za)(A,g),e._crypto_kdf_hkdf_sha256_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_extract=R._a)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keygen=A=>(e._crypto_kdf_hkdf_sha256_keygen=R.$a)(A),e._crypto_kdf_hkdf_sha256_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_expand=R.ab)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keybytes=()=>(e._crypto_kdf_hkdf_sha256_keybytes=R.bb)(),e._crypto_kdf_hkdf_sha256_bytes_min=()=>(e._crypto_kdf_hkdf_sha256_bytes_min=R.cb)(),e._crypto_kdf_hkdf_sha256_bytes_max=()=>(e._crypto_kdf_hkdf_sha256_bytes_max=R.db)(),e._crypto_kdf_hkdf_sha256_statebytes=()=>(e._crypto_kdf_hkdf_sha256_statebytes=R.eb)(),e._crypto_kdf_hkdf_sha512_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_init=R.fb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_update=R.gb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha512_extract_final=R.hb)(A,g),e._crypto_kdf_hkdf_sha512_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_extract=R.ib)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keygen=A=>(e._crypto_kdf_hkdf_sha512_keygen=R.jb)(A),e._crypto_kdf_hkdf_sha512_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_expand=R.kb)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keybytes=()=>(e._crypto_kdf_hkdf_sha512_keybytes=R.lb)(),e._crypto_kdf_hkdf_sha512_bytes_min=()=>(e._crypto_kdf_hkdf_sha512_bytes_min=R.mb)(),e._crypto_kdf_hkdf_sha512_bytes_max=()=>(e._crypto_kdf_hkdf_sha512_bytes_max=R.nb)(),e._crypto_kdf_hkdf_sha512_statebytes=()=>(e._crypto_kdf_hkdf_sha512_statebytes=R.ob)(),e._crypto_kx_seed_keypair=(A,g,I)=>(e._crypto_kx_seed_keypair=R.pb)(A,g,I),e._crypto_kx_keypair=(A,g)=>(e._crypto_kx_keypair=R.qb)(A,g),e._crypto_kx_client_session_keys=(A,g,I,C,B)=>(e._crypto_kx_client_session_keys=R.rb)(A,g,I,C,B),e._crypto_kx_server_session_keys=(A,g,I,C,B)=>(e._crypto_kx_server_session_keys=R.sb)(A,g,I,C,B),e._crypto_kx_publickeybytes=()=>(e._crypto_kx_publickeybytes=R.tb)(),e._crypto_kx_secretkeybytes=()=>(e._crypto_kx_secretkeybytes=R.ub)(),e._crypto_kx_seedbytes=()=>(e._crypto_kx_seedbytes=R.vb)(),e._crypto_kx_sessionkeybytes=()=>(e._crypto_kx_sessionkeybytes=R.wb)(),e._crypto_scalarmult_base=(A,g)=>(e._crypto_scalarmult_base=R.xb)(A,g),e._crypto_scalarmult=(A,g,I)=>(e._crypto_scalarmult=R.yb)(A,g,I),e._crypto_scalarmult_bytes=()=>(e._crypto_scalarmult_bytes=R.zb)(),e._crypto_scalarmult_scalarbytes=()=>(e._crypto_scalarmult_scalarbytes=R.Ab)(),e._crypto_secretbox_keybytes=()=>(e._crypto_secretbox_keybytes=R.Bb)(),e._crypto_secretbox_noncebytes=()=>(e._crypto_secretbox_noncebytes=R.Cb)(),e._crypto_secretbox_macbytes=()=>(e._crypto_secretbox_macbytes=R.Db)(),e._crypto_secretbox_messagebytes_max=()=>(e._crypto_secretbox_messagebytes_max=R.Eb)(),e._crypto_secretbox_keygen=A=>(e._crypto_secretbox_keygen=R.Fb)(A),e._crypto_secretbox_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_detached=R.Gb)(A,g,I,C,B,a,i),e._crypto_secretbox_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_easy=R.Hb)(A,g,I,C,B,a),e._crypto_secretbox_open_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_open_detached=R.Ib)(A,g,I,C,B,a,i),e._crypto_secretbox_open_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_open_easy=R.Jb)(A,g,I,C,B,a),e._crypto_secretstream_xchacha20poly1305_keygen=A=>(e._crypto_secretstream_xchacha20poly1305_keygen=R.Kb)(A),e._crypto_secretstream_xchacha20poly1305_init_push=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_push=R.Lb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_init_pull=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_pull=R.Mb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_rekey=A=>(e._crypto_secretstream_xchacha20poly1305_rekey=R.Nb)(A),e._crypto_secretstream_xchacha20poly1305_push=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_push=R.Ob)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_pull=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_pull=R.Pb)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_statebytes=()=>(e._crypto_secretstream_xchacha20poly1305_statebytes=R.Qb)(),e._crypto_secretstream_xchacha20poly1305_abytes=()=>(e._crypto_secretstream_xchacha20poly1305_abytes=R.Rb)(),e._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(e._crypto_secretstream_xchacha20poly1305_headerbytes=R.Sb)(),e._crypto_secretstream_xchacha20poly1305_keybytes=()=>(e._crypto_secretstream_xchacha20poly1305_keybytes=R.Tb)(),e._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(e._crypto_secretstream_xchacha20poly1305_messagebytes_max=R.Ub)(),e._crypto_secretstream_xchacha20poly1305_tag_message=()=>(e._crypto_secretstream_xchacha20poly1305_tag_message=R.Vb)(),e._crypto_secretstream_xchacha20poly1305_tag_push=()=>(e._crypto_secretstream_xchacha20poly1305_tag_push=R.Wb)(),e._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(e._crypto_secretstream_xchacha20poly1305_tag_rekey=R.Xb)(),e._crypto_secretstream_xchacha20poly1305_tag_final=()=>(e._crypto_secretstream_xchacha20poly1305_tag_final=R.Yb)(),e._crypto_shorthash_bytes=()=>(e._crypto_shorthash_bytes=R.Zb)(),e._crypto_shorthash_keybytes=()=>(e._crypto_shorthash_keybytes=R._b)(),e._crypto_shorthash=(A,g,I,C,B)=>(e._crypto_shorthash=R.$b)(A,g,I,C,B),e._crypto_shorthash_keygen=A=>(e._crypto_shorthash_keygen=R.ac)(A),e._crypto_sign_statebytes=()=>(e._crypto_sign_statebytes=R.bc)(),e._crypto_sign_bytes=()=>(e._crypto_sign_bytes=R.cc)(),e._crypto_sign_seedbytes=()=>(e._crypto_sign_seedbytes=R.dc)(),e._crypto_sign_publickeybytes=()=>(e._crypto_sign_publickeybytes=R.ec)(),e._crypto_sign_secretkeybytes=()=>(e._crypto_sign_secretkeybytes=R.fc)(),e._crypto_sign_messagebytes_max=()=>(e._crypto_sign_messagebytes_max=R.gc)(),e._crypto_sign_seed_keypair=(A,g,I)=>(e._crypto_sign_seed_keypair=R.hc)(A,g,I),e._crypto_sign_keypair=(A,g)=>(e._crypto_sign_keypair=R.ic)(A,g),e._crypto_sign=(A,g,I,C,B,a)=>(e._crypto_sign=R.jc)(A,g,I,C,B,a),e._crypto_sign_open=(A,g,I,C,B,a)=>(e._crypto_sign_open=R.kc)(A,g,I,C,B,a),e._crypto_sign_detached=(A,g,I,C,B,a)=>(e._crypto_sign_detached=R.lc)(A,g,I,C,B,a),e._crypto_sign_verify_detached=(A,g,I,C,B)=>(e._crypto_sign_verify_detached=R.mc)(A,g,I,C,B),e._crypto_sign_init=A=>(e._crypto_sign_init=R.nc)(A),e._crypto_sign_update=(A,g,I,C)=>(e._crypto_sign_update=R.oc)(A,g,I,C),e._crypto_sign_final_create=(A,g,I,C)=>(e._crypto_sign_final_create=R.pc)(A,g,I,C),e._crypto_sign_final_verify=(A,g,I)=>(e._crypto_sign_final_verify=R.qc)(A,g,I),e._crypto_sign_ed25519_pk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_pk_to_curve25519=R.rc)(A,g),e._crypto_sign_ed25519_sk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_sk_to_curve25519=R.sc)(A,g),e._randombytes_random=()=>(e._randombytes_random=R.tc)(),e._randombytes_stir=()=>(e._randombytes_stir=R.uc)(),e._randombytes_uniform=A=>(e._randombytes_uniform=R.vc)(A),e._randombytes_buf=(A,g)=>(e._randombytes_buf=R.wc)(A,g),e._randombytes_buf_deterministic=(A,g,I)=>(e._randombytes_buf_deterministic=R.xc)(A,g,I),e._randombytes_seedbytes=()=>(e._randombytes_seedbytes=R.yc)(),e._randombytes_close=()=>(e._randombytes_close=R.zc)(),e._randombytes=(A,g,I)=>(e._randombytes=R.Ac)(A,g,I),e._sodium_bin2hex=(A,g,I,C)=>(e._sodium_bin2hex=R.Bc)(A,g,I,C),e._sodium_hex2bin=(A,g,I,C,B,a,i)=>(e._sodium_hex2bin=R.Cc)(A,g,I,C,B,a,i),e._sodium_base64_encoded_len=(A,g)=>(e._sodium_base64_encoded_len=R.Dc)(A,g),e._sodium_bin2base64=(A,g,I,C,B)=>(e._sodium_bin2base64=R.Ec)(A,g,I,C,B),e._sodium_base642bin=(A,g,I,C,B,a,i,r)=>(e._sodium_base642bin=R.Fc)(A,g,I,C,B,a,i,r),e._sodium_init=()=>(e._sodium_init=R.Gc)(),e._sodium_pad=(A,g,I,C,B)=>(e._sodium_pad=R.Hc)(A,g,I,C,B),e._sodium_unpad=(A,g,I,C)=>(e._sodium_unpad=R.Ic)(A,g,I,C),e._sodium_version_string=()=>(e._sodium_version_string=R.Jc)(),e._sodium_library_version_major=()=>(e._sodium_library_version_major=R.Kc)(),e._sodium_library_version_minor=()=>(e._sodium_library_version_minor=R.Lc)(),e._sodium_library_minimal=()=>(e._sodium_library_minimal=R.Mc)(),e._malloc=A=>(e._malloc=R.Nc)(A),e._free=A=>(e._free=R.Oc)(A),e.setValue=function(A,g,I="i8"){switch(I.endsWith("*")&&(I="*"),I){case"i1":case"i8":n[A]=g;break;case"i16":s[A>>1]=g;break;case"i32":p[A>>2]=g;break;case"i64":F("to do setValue(i64) use WASM_BIGINT");case"float":D[A>>2]=g;break;case"double":w[A>>3]=g;break;case"*":f[A>>2]=g;break;default:F(`invalid type for setValue: ${I}`)}},e.getValue=function(A,g="i8"){switch(g.endsWith("*")&&(g="*"),g){case"i1":case"i8":return n[A];case"i16":return s[A>>1];case"i32":return p[A>>2];case"i64":F("to do getValue(i64) use WASM_BIGINT");case"float":return D[A>>2];case"double":return w[A>>3];case"*":return f[A>>2];default:F(`invalid type for getValue: ${g}`)}},e.UTF8ToString=U,M=function A(){G||L(),G||(M=A)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();L()}))};var I,e=void 0!==e?e:{},B="object"==typeof window,a="function"==typeof importScripts,i="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,r=Object.assign({},e),t="";if(i){var Q=require("fs"),o=require("path");t=__dirname+"/",I=A=>(A=K(A)?new URL(A):o.normalize(A),Q.readFileSync(A)),!e.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),"undefined"!=typeof module&&(module.exports=e)}else(B||a)&&(a?t=self.location.href:"undefined"!=typeof document&&document.currentScript&&(t=document.currentScript.src),t=t.startsWith("blob:")?"":t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1),a&&(I=A=>{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}));e.print;var c,E,y=e.printErr||void 0;Object.assign(e,r),r=null,e.arguments&&e.arguments,e.thisProgram&&e.thisProgram,e.quit&&e.quit,e.wasmBinary&&(c=e.wasmBinary);var _,n,h,s,p,f,D,w=!1;function k(){var A=E.buffer;e.HEAP8=_=new Int8Array(A),e.HEAP16=h=new Int16Array(A),e.HEAPU8=n=new Uint8Array(A),e.HEAPU16=new Uint16Array(A),e.HEAP32=s=new Int32Array(A),e.HEAPU32=p=new Uint32Array(A),e.HEAPF32=f=new Float32Array(A),e.HEAPF64=D=new Float64Array(A)}var d=[],l=[],u=[],v=0,S=null,b=null;function M(A){throw e.onAbort?.(A),y(A="Aborted("+A+")"),w=!0,A+=". Build with -sASSERTIONS for more info.",new WebAssembly.RuntimeError(A)}var F,N="data:application/octet-stream;base64,",K=A=>A.startsWith("file://");function Y(A){return Promise.resolve().then((()=>function(A){if(A==F&&c)return new Uint8Array(c);var g=function(A){if((A=>A.startsWith(N))(A))return function(A){if(void 0!==i&&i){var g=Buffer.from(A,"base64");return new Uint8Array(g.buffer,g.byteOffset,g.length)}for(var I=atob(A),C=new Uint8Array(I.length),e=0;e<I.length;++e)C[e]=I.charCodeAt(e);return C}(A.slice(37))}(A);if(g)return g;if(I)return I(A);throw"both async and sync fetching of the wasm failed"}(A)))}var H={36304:()=>e.getRandomValue(),36340:()=>{if(void 0===e.getRandomValue)try{var A="object"==typeof window?window:self,g=void 0!==A.crypto?A.crypto:A.msCrypto;g=void 0===g?C:g;var I=function(){var A=new Uint32Array(1);return g.getRandomValues(A),A[0]>>>0};I(),e.getRandomValue=I}catch(A){try{var C=require("crypto"),B=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};B(),e.getRandomValue=B}catch(A){throw"No secure random number generator found"}}}},G=A=>{for(;A.length>0;)A.shift()(e)};e.noExitRuntime;var J,U="undefined"!=typeof TextDecoder?new TextDecoder:void 0,x=(A,g)=>A?((A,g,I)=>{for(var C=g+I,e=g;A[e]&&!(e>=C);)++e;if(e-g>16&&A.buffer&&U)return U.decode(A.subarray(g,e));for(var B="";g<e;){var a=A[g++];if(128&a){var i=63&A[g++];if(192!=(224&a)){var r=63&A[g++];if((a=224==(240&a)?(15&a)<<12|i<<6|r:(7&a)<<18|i<<12|r<<6|63&A[g++])<65536)B+=String.fromCharCode(a);else{var t=a-65536;B+=String.fromCharCode(55296|t>>10,56320|1023&t)}}else B+=String.fromCharCode((31&a)<<6|i)}else B+=String.fromCharCode(a)}return B})(n,A,g):"",m=[],P=A=>{var g=(A-E.buffer.byteLength+65535)/65536;try{return E.grow(g),k(),1}catch(A){}},R={b:(A,g,I,C)=>{M(`Assertion failed: ${x(A)}, at: `+[g?x(g):"unknown filename",I,C?x(C):"unknown function"])},c:()=>{M("")},d:(A,g,I)=>n.copyWithin(A,g,g+I),a:(A,g,I)=>((A,g,I)=>{var C=((A,g)=>{var I;for(m.length=0;I=n[A++];){var C=105!=I;g+=(C&=112!=I)&&g%8?4:0,m.push(112==I?p[g>>2]:105==I?s[g>>2]:D[g>>3]),g+=C?8:4}return m})(g,I);return H[A](...C)})(A,g,I),e:A=>{var g=n.length,I=2147483648;if((A>>>=0)>I)return!1;for(var C,e=1;e<=4;e*=2){var B=g*(1+.2/e);B=Math.min(B,A+100663296);var a=Math.min(I,(C=Math.max(A,B))+(65536-C%65536)%65536);if(P(a))return!0}return!1}},L=function(){var A,g={a:R};function I(A,g){return L=A.exports,E=L.f,k(),function(A){if(v--,e.monitorRunDependencies?.(v),0==v&&(null!==S&&(clearInterval(S),S=null),b)){var g=b;b=null,g()}}(),L}if(v++,e.monitorRunDependencies?.(v),e.instantiateWasm)try{return e.instantiateWasm(g,I)}catch(A){return y(`Module.instantiateWasm callback failed with error: ${A}`),!1}return F||(F="data:application/octet-stream;base64,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IAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRrIAE2AgAgAkEYayABNgIAIAJBHGsgATYCACAEIANBBHFBGHIiBGsiAkEgSQ0AIAGtQoGAgIAQfiEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkEgayICQR9LDQALCyAAC4IEAQN/IAJBgARPBEAgACABIAIQAyAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLIANBfHEhBAJAIANBwABJDQAgAiAEQUBqIgVLDQADQCACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyAAIANBBGsiBEsEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAACxgBAX9BlKYCKAIAIgAEQCAAERMACxACAAsEAEEgC4kGAgd+A38jAEHABWsiCyQAAkAgAlANACAAIAApA0giAyACQgOGfCIENwNIIAAgACkDQCADIARWrXwgAkI9iHw3A0AgAEHQAGohCkKAASADQgOIQv8AgyIEfSIIIAJYBEBCACEDIARC/wCFQgNaBEAgCEL8AYMhBwNAIAogAyAEfKdqIAEgA6dqLQAAOgAAIAogA0IBhCIJIAR8p2ogASAJp2otAAA6AAAgCiADQgKEIgkgBHynaiABIAmnai0AADoAACAKIANCA4QiCSAEfKdqIAEgCadqLQAAOgAAIANCBHwhAyAFQgR8IgUgB1INAAsLIAhCA4MiBUIAUgRAA0AgCiADIAR8p2ogASADp2otAAA6AAAgA0IBfCEDIAZCAXwiBiAFUg0ACwsgACAKIAsgC0GABWoiDBAsIAEgCKdqIQEgAiAIfSICQv8AVgRAA0AgACABIAsgDBAsIAFBgAFqIQEgAkKAAX0iAkL/AFYNAAsLAkAgAlANACACQgODIQRCACEGQgAhAyACQgRaBEAgAkL8AIMhBUIAIQIDQCAKIAOnIgBqIAAgAWotAAA6AAAgCiAAQQFyIgxqIAEgDGotAAA6AAAgCiAAQQJyIgxqIAEgDGotAAA6AAAgCiAAQQNyIgBqIAAgAWotAAA6AAAgA0IEfCEDIAJCBHwiAiAFUg0ACwsgBFANAANAIAogA6ciAGogACABai0AADoAACADQgF8IQMgBkIBfCIGIARSDQALCyALQcAFEAgMAQtCACEDIAJCBFoEQCACQnyDIQgDQCAKIAMgBHynaiABIAOnai0AADoAACAKIANCAYQiByAEfKdqIAEgB6dqLQAAOgAAIAogA0IChCIHIAR8p2ogASAHp2otAAA6AAAgCiADQgOEIgcgBHynaiABIAenai0AADoAACADQgR8IQMgBUIEfCIFIAhSDQALCyACQgODIgJQDQADQCAKIAMgBHynaiABIAOnai0AADoAACADQgF8IQMgBkIBfCIGIAJSDQALCyALQcAFaiQAQQALnwQBE38gASgCBCECIAEoAiwhAyABKAIIIQQgASgCMCEFIAEoAgwhBiABKAI0IQcgASgCECEIIAEoAjghCSABKAIUIQogASgCPCELIAEoAhghDCABQUBrIg0oAgAhDiABKAIcIQ8gASgCRCEQIAEoAiAhESABKAJIIRIgASgCJCETIAEoAkwhFCAAIAEoAgAgASgCKGo2AgAgACATIBRqNgIkIAAgESASajYCICAAIA8gEGo2AhwgACAMIA5qNgIYIAAgCiALajYCFCAAIAggCWo2AhAgACAGIAdqNgIMIAAgBCAFajYCCCAAIAIgA2o2AgQgASgCBCECIAEoAiwhAyABKAIIIQQgASgCMCEFIAEoAgwhBiABKAI0IQcgASgCECEIIAEoAjghCSABKAIUIQogASgCPCELIAEoAhghDCANKAIAIQ0gASgCHCEOIAEoAkQhDyABKAIgIRAgASgCSCERIAEoAgAhEiABKAIoIRMgACABKAJMIAEoAiRrNgJMIAAgESAQazYCSCAAIA8gDms2AkQgAEFAayANIAxrNgIAIAAgCyAKazYCPCAAIAkgCGs2AjggACAHIAZrNgI0IAAgBSAEazYCMCAAIAMgAms2AiwgACATIBJrNgIoIAAgASkCUDcCUCAAIAEpAlg3AlggACABKQJgNwJgIAAgASkCaDcCaCAAIAEpAnA3AnAgAEH4AGogAUH4AGpBkAsQBgvwCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAIQBiAAQShqIgMgAyACQShqEAYgAEH4AGogAkH4AGogAUH4AGoQBiAAIAFB0ABqIAJB0ABqEAYgACgCBCEUIAAoAgghFSAAKAIMIRYgACgCECEXIAAoAhQhGCAAKAIYIRkgACgCHCEaIAAoAiAhGyAAKAIkIRwgACgCLCEBIAAoAlQhAiAAKAIwIQMg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KAI0ISMgASgCDCEkIAEoAjghJSABKAIQISYgASgCPCEnIAEoAhQhKCABQUBrKAIAISkgASgCGCEqIAEoAkQhKyABKAIcISwgASgCSCEtIAEoAiAhLiABKAIoIS8gASgCACEwIAAgASgCTCABKAIkajYCTCAAIC0gLmo2AkggACArICxqNgJEIABBQGsiMSApICpqNgIAIAAgJyAoajYCPCAAICUgJmo2AjggACAjICRqNgI0IAAgISAiajYCMCAAIB8gIGo2AiwgACAvIDBqNgIoIB4gAEEoahAFIAAoAgQhASAAKAJUIR8gACgCCCEgIAAoAlghISAAKAIMISIgACgCXCEjIAAoAhAhJCAAKAJgISUgACgCFCEmIAAoAmQhJyAAKAIYISggACgCaCEpIAAoAhwhKiAAKAJsISsgACgCICEsIAAoAnAhLSAAKAIAIS4gACgCUCEvIAAgACgCdCIwIAAoAiQiMmsiMzYCdCAAIC0gLGsiNDYCcCAAICsgKmsiNTYCbCAAICkgKGsiNjYCaCAAICcgJmsiNzYCZCAAICUgJGsiODYCYCAAICMgImsiOTYCXCAAICEgIGsiOjYCWCAAIB8gAWsiOzYCVCAAIC8gLmsiPDYCUCAAIDAgMmoiMDYCTCAAICwgLWoiLDYCSCAAICogK2oiKjYCRCAxICggKWoiKDYCACAAICYgJ2oiJjYCPCAAICQgJWoiJDYCOCAAICIgI2oiIjYCNCAAICAgIWoiIDYCMCAAIAEgH2oiATYCLCAAIC4gL2oiHzYCKCAeKAIAISEgHigCBCEjIB4oAgghJSAeKAIMIScgHigCECEpIB4oAhQhKyAeKAIYIS0gHigCHCEuIB4oAiAhLyAAIB4oAiQgMGs2AiQgACAvICxrNgIgIAAgLiAqazYCHCAAIC0gKGs2AhggACArICZrNgIUIAAgKSAkazYCECAAICcgIms2AgwgACAlICBrNgIIIAAgIyABazYCBCAAICEgH2s2AgAgACgCfCEBIAAoAoABIR8gACgChAEhICAAKAKIASEhIAAoAowBISIgACgCkAEhIyAAKAKUASEkIAAoApgBISUgACgCeCEmIAAgACgCnAEgM2s2ApwBIAAgJSA0azYCmAEgACAkIDVrNgKUASAAICMgNms2ApABIAAgIiA3azYCjAEgACAhIDhrNgKIASAAICAgOWs2AoQBIAAgHyA6azYCgAEgACABIDtrNgJ8IAAgJiA8azYCeCAeQTBqJAALDAAgACABIAIQKkEAC3AAIABCADcDQCAAQgA3A0ggAEHwiAIpAwA3AwAgAEH4iAIpAwA3AwggAEGAiQIpAwA3AxAgAEGIiQIpAwA3AxggAEGQiQIpAwA3AyAgAEGYiQIpAwA3AyggAEGgiQIpAwA3AzAgAEGoiQIpAwA3AzgLJAAgAUKAgICAEFoEQBALAAsgACABIAIgA0HEmwIoAgARDgAaCwUAQcAACzcBAX8jAEFAaiICJAAgACACEBQgAEHQAWoiACACQsAAEA0aIAAgARAUIAJBwAAQCCACQUBrJAAL1gQBCH8jAEHAAWsiBSQAIAJBgQFPBEAgABAbIAAgASACrRANGiAAIAUQFEHAACECIAUhAQsgABAbIAVBQGtBNkGAARAJGgJAIAJFDQAgAkEETwRAIAJB/AFxIQoDQCAFQUBrIgggA2oiBCAELQAAIAEgA2otAABzOgAAIAggA0EBciIEaiIGIAYtAAAgASAEai0AAHM6AAAgCCADQQJyIgRqIgYgBi0AACABIARqLQAAczoAACAIIANBA3IiBGoiBiAGLQAAIAEgBGotAABzOgAAIANBBGohAyAHQQRqIgcgCkcNAAsLIAJBA3EiB0UNAANAIAVBQGsgA2oiCiAKLQAAIAEgA2otAABzOgAAIANBAWohAyAJQQFqIgkgB0cNAAsLIAAgBUFAayIDQoABEA0aIABB0AFqIgAQGyADQdwAQYABEAkaAkAgAkUNAEEAIQlBACEDIAJBBE8EQCACQfwBcSEKQQAhBwNAIAVBQGsiCCADaiIEIAQtAAAgASADai0AAHM6AAAgCCADQQFyIgRqIgYgBi0AACABIARqLQAAczoAACAIIANBAnIiBGoiBiAGLQAAIAEgBGotAABzOgAAIAggA0EDciIEaiIGIAYtAAAgASAEai0AAHM6AAAgA0EEaiEDIAdBBGoiByAKRw0ACwsgAkEDcSICRQ0AA0AgBUFAayADaiIHIActAAAgASADai0AAHM6AAAgA0EBaiEDIAlBAWoiCSACRw0ACwsgACAFQUBrIgBCgAEQDRogAEGAARAIIAVBwAAQCCAFQcABaiQAQQALlQEBAX8jAEHQAWsiAyQAIANCADcDSCADQfiIAikDADcDCCADQYCJAikDADcDECADQYiJAikDADcDGCADQZCJAikDADcDICADQZiJAikDADcDKCADQaCJAikDADcDMCADQaiJAikDADcDOCADQgA3A0AgA0HwiAIpAwA3AwAgAyABIAIQDRogAyAAEBQgA0HQAWokAEEAC0AAAkAgBK1CgICAgBAgAkI/fEIGiH1WDQAgAkKAgICAEFoNACAAIAEgAiADIAQgBUHMmwIoAgARCgAaDwsQCwAL7wMBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADYCBCACIAIoAgQgAigCDC0AACACKAIILQAAc3I2AgQgAiACKAIEIAIoAgwtAAEgAigCCC0AAXNyNgIEIAIgAigCBCACKAIMLQACIAIoAggtAAJzcjYCBCACIAIoAgQgAigCDC0AAyACKAIILQADc3I2AgQgAiACKAIEIAIoAgwtAAQgAigCCC0ABHNyNgIEIAIgAigCBCACKAIMLQAFIAIoAggtAAVzcjYCBCACIAIoAgQgAigCDC0ABiACKAIILQAGc3I2AgQgAiACKAIEIAIoAgwtAAcgAigCCC0AB3NyNgIEIAIgAigCBCACKAIMLQAIIAIoAggtAAhzcjYCBCACIAIoAgQgAigCDC0ACSACKAIILQAJc3I2AgQgAiACKAIEIAIoAgwtAAogAigCCC0ACnNyNgIEIAIgAigCBCACKAIMLQALIAIoAggtAAtzcjYCBCACIAIoAgQgAigCDC0ADCACKAIILQAMc3I2AgQgAiACKAIEIAIoAgwtAA0gAigCCC0ADXNyNgIEIAIgAigCBCACKAIMLQAOIAIoAggtAA5zcjYCBCACIAIoAgQgAigCDC0ADyACKAIILQAPc3I2AgQgAigCBEEBa0EIdkEBcUEBawv3AgEDfwJ/AkACQAJAIAEiBEH/AXEiAQRAIABBA3EEQANAIAAtAAAiAkUNBSABIAJGDQUgAEEBaiIAQQNxDQALC0GAgoQIIAAoAgAiAmsgAnJBgIGChHhxQYCBgoR4Rw0BIAFBgYKECGwhAwNAQYCChAggAiADcyIBayABckGAgYKEeHFBgIGChHhHDQIgACgCBCECIABBBGoiASEAIAJBgIKECCACa3JBgIGChHhxQYCBgoR4Rg0ACwwCCwJ/AkACQCAAIgJBA3FFDQBBACAALQAARQ0CGgNAIABBAWoiAEEDcUUNASAALQAADQALDAELA0AgACIBQQRqIQBBgIKECCABKAIAIgNrIANyQYCBgoR4cUGAgYKEeEYNAAsDQCABIgBBAWohASAALQAADQALCyAAIAJrCyACagwDCyAAIQELA0AgASIALQAAIgJFDQEgAEEBaiEBIAIgBEH/AXFHDQALCyAACyIAQQAgAC0AACAEQf8BcUYbC1IBAn9BgJMCKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bRQRAIAA/AEEQdE0NASAAEAQNAQtBgKICQTA2AgBBfw8LQYCTAiAANgIAIAELxwEBBX8jAEEQayICQQA6AA8CQCABRQ0AIAFBBE8EQCABQXxxIQYDQCACIAAgA2oiBC0AACACLQAPcjoADyACIAQtAAEgAi0AD3I6AA8gAiAELQACIAItAA9yOgAPIAIgBC0AAyACLQAPcjoADyADQQRqIQMgBUEEaiIFIAZHDQALCyABQQNxIgRFDQBBACEBA0AgAiAAIANqLQAAIAItAA9yOgAPIANBAWohAyABQQFqIgEgBEcNAAsLIAItAA9BAWtBCHZBAXELMgECfyMAQSBrIgMkAEF/IQQgAyACIAEQMEUEQCAAQfCSAiADEEghBAsgA0EgaiQAIAQL+wMBAn9BfyEEAkAgAkHAAEsNACADQcEAa0FASQ0AAkAgAUEAIAIbRQRAIANB/wFxIgFBwQBrQf8BcUG/AU0EQBALAAsgAEFAa0EAQaUCEAkaIABC+cL4m5Gjs/DbADcAOCAAQuv6htq/tfbBHzcAMCAAQp/Y+dnCkdqCm383ACggAELRhZrv+s+Uh9EANwAgIABC8e30+KWn/aelfzcAGCAAQqvw0/Sv7ry3PDcAECAAQrvOqqbY0Ouzu383AAggACABrUKIkveV/8z5hOoAhTcAAAwBCwJ/IAJB/wFxIQIjAEGAAWsiBSQAAkAgA0H/AXEiA0HBAGtB/wFxQb8BTQ0AIAFFDQAgAkHBAGtB/wFxQb8BTQ0AIABBQGtBAEGlAhAJGiAAQvnC+JuRo7Pw2wA3ADggAELr+obav7X2wR83ADAgAEKf2PnZwpHagpt/NwAoIABC0YWa7/rPlIfRADcAICAAQvHt9Pilp/2npX83ABggAEKr8NP0r+68tzw3ABAgAEK7zqqm2NDrs7t/NwAIIAAgA60gAq1CCIaEQoiS95X/zPmE6gCFNwAAIABB4ABqIAVBAEGAARAJIAEgAhAKIgFBgAEQChogACAAKADgAkGAAWo2AOACIAFBgAEQCCABQYABaiQAQQAMAQsQCwALDQELQQAhBAsgBAsEAEFvC4MDAgN/AX4jAEHgAmsiBiQAIAYgBCAFEEgaAn8CQAJAIAAgAksgACACa60gA1RxRQRAIAAgAk8NASACIABrrSADWg0BCyAAIAIgA6cQNiECIAZCADcDOCAGQgA3AzAgBkIANwMoIAZCADcDIEIgIAMgA0IgWhshCSADQiBWIQUMAQsgBkIANwM4IAZCADcDMCAGQgA3AyggBkIANwMgQiAgAyADQiBaGyEJIANCIFYhBSADQgBSDQBBAQwBCyAGQUBrIAIgCacQChpBAAsgBkEgaiIHIAcgCUIgfCAEQRBqIgRCACAGQaSTAigCABEMABogBkHgAGogB0GMkwIoAgARAQAaRQRAIAAgBkFAayAJpxAKGgsgBkEgakHAABAIIAUEQCAAIAmnIgVqIAIgBWogAyAJfSAEQgEgBkGkkwIoAgARDAAaCyAGQSAQCCAGQeAAaiICIAAgA0GQkwIoAgARAAAaIAIgAUGUkwIoAgARAQAaIAJBgAIQCCAGQeACaiQAQQAL5gUCB34DfyMAQaACayILJAACQCACUA0AIAAgACkDICIDIAJCA4Z8NwMgIABBKGohCkLAACADQgOIQj+DIgR9IgUgAlgEQEIAIQMgBEI/hUIDWgRAIAVC/ACDIQYDQCAKIAMgBHynaiABIAOnai0AADoAACAKIANCAYQiCCAEfKdqIAEgCKdqLQAAOgAAIAogA0IChCIIIAR8p2ogASAIp2otAAA6AAAgCiADQgOEIgggBHynaiABIAinai0AADoAACADQgR8IQMgCUIEfCIJIAZSDQALCyAFQgODIglCAFIEQANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIANCAXwhAyAHQgF8IgcgCVINAAsLIAAgCiALIAtBgAJqIgwQOSABIAWnaiEBIAIgBX0iAkI/VgRAA0AgACABIAsgDBA5IAFBQGshASACQkB8IgJCP1YNAAsLAkAgAlANACACQgODIQRCACEHQgAhAyACQgRaBEAgAkI8gyEFQgAhAgNAIAogA6ciAGogACABai0AADoAACAKIABBAXIiDGogASAMai0AADoAACAKIABBAnIiDGogASAMai0AADoAACAKIABBA3IiAGogACABai0AADoAACADQgR8IQMgAkIEfCICIAVSDQALCyAEUA0AA0AgCiADpyIAaiAAIAFqLQAAOgAAIANCAXwhAyAHQgF8IgcgBFINAAsLIAtBoAIQCAwBC0IAIQMgAkIEWgRAIAJCfIMhBQNAIAogAyAEfKdqIAEgA6dqLQAAOgAAIAogA0IBhCIGIAR8p2ogASAGp2otAAA6AAAgCiADQgKEIgYgBHynaiABIAanai0AADoAACAKIANCA4QiBiAEfKdqIAEgBqdqLQAAOgAAIANCBHwhAyAJQgR8IgkgBVINAAsLIAJCA4MiAlANAANAIAogAyAEfKdqIAEgA6dqLQAAOgAAIANCAXwhAyAHQgF8IgcgAlINAAsLIAtBoAJqJAALJgAgAkGAAk8EQEHgCUGXCUHrAEGfCBABAAsgACABIAJB/wFxEEoL+xcCEH4QfwNAIAIgFUEDdCIWaiABIBZqKQAAIgRCOIYgBEKA/gODQiiGhCAEQoCA/AeDQhiGIARCgICA+A+DQgiGhIQgBEIIiEKAgID4D4MgBEIYiEKAgPwHg4QgBEIoiEKA/gODIARCOIiEhIQ3AwAgFUEBaiIVQRBHDQALIAMgACkDADcDACADIAApAzg3AzggAyAAKQMwNwMwIAMgACkDKDcDKCADIAApAyA3AyAgAyAAKQMYNwMYIAMgACkDEDcDECADIAApAwg3AwhBACEWA0AgAyADKQM4IAIgFkEDdCIBaiIVKQMAIAMpAyAiB0IyiSAHQi6JhSAHQheJhXwgAUGwiQJqKQMAfCAHIAMpAzAiCyADKQMoIgmFgyALhXx8IgQgAykDGHwiCjcDGCADIAMpAwAiBkIkiSAGQh6JhSAGQhmJhSAEfCADKQMQIgUgAykDCCIIhCAGgyAFIAiDhHwiBDcDOCADIAUgAiABQQhyIhRqIhopAwAgCyAJIAogByAJhYOFfCAKQjKJIApCLomFIApCF4mFfHwgFEGwiQJqKQMAfCILfCIFNwMQIAMgBCAGIAiEgyAGIAiDhCALfCAEQiSJIARCHomFIARCGYmFfCILNwMwIAMgCCAJIAIgAUEQciIUaiIbKQMAfCAUQbCJAmopAwB8IAcgBSAHIAqFg4V8IAVCMokgBUIuiYUgBUIXiYV8Igx8Igk3AwggAyALIAQgBoSDIAQgBoOEIAtCJIkgC0IeiYUgC0IZiYV8IAx8Igg3AyggAyAGIAcgAiABQRhyIhRqIhwpAwB8IBRBsIkCaikDAHwgCSAFIAqFgyAKhXwgCUIyiSAJQi6JhSAJQheJhXwiDHwiBzcDACADIAggBCALhIMgBCALg4QgCEIkiSAIQh6JhSAIQhmJhXwgDHwiBjcDICADIAIgAUEgciIUaiIdKQMAIAp8IBRBsIkCaikDAHwgByAFIAmFgyAFhXwgB0IyiSAHQi6JhSAHQheJhXwiDCAGIAggC4SDIAggC4OEIAZCJIkgBkIeiYUgBkIZiYV8fCIKNwMYIAMgBCAMfCIMNwM4IAMgAiABQShyIhRqIh4pAwAgBXwgFEGwiQJqKQMAfCAMIAcgCYWDIAmFfCAMQjKJIAxCLomFIAxCF4mFfCIFIAogBiAIhIMgBiAIg4QgCkIkiSAKQh6JhSAKQhmJhXx8IgQ3AxAgAyAFIAt8IgU3AzAgAyACIAFBMHIiFGoiHykDACAJfCAUQbCJAmopAwB8IAUgByAMhYMgB4V8IAVCMokgBUIuiYUgBUIXiYV8IgkgBCAGIAqEgyAGIAqDhCAEQiSJIARCHomFIARCGYmFfHwiCzcDCCADIAggCXwiCTcDKCADIAIgAUE4ciIUaiIgKQMAIAd8IBRBsIkCaikDAHwgCSAFIAyFgyAMhXwgCUIyiSAJQi6JhSAJQheJhXwiByALIAQgCoSDIAQgCoOEIAtCJIkgC0IeiYUgC0IZiYV8fCIINwMAIAMgBiAHfCIHNwMgIAMgAiABQcAAciIUaiIhKQMAIAx8IBRBsIkCaikDAHwgByAFIAmFgyAFhXwgB0IyiSAHQi6JhSAHQheJhXwiDCAIIAQgC4SDIAQgC4OEIAhCJIkgCEIeiYUgCEIZiYV8fCIGNwM4IAMgCiAMfCIMNwMYIAMgAiABQcgAciIUaiIiKQMAIAV8IBRBsIkCaikDAHwgDCAHIAmFgyAJhXwgDEIyiSAMQi6JhSAMQheJhXwiBSAGIAggC4SDIAggC4OEIAZCJIkgBkIeiYUgBkIZiYV8fCIKNwMwIAMgBCAFfCIFNwMQIAMgCSACIAFB0AByIhRqIiMpAwB8IBRBsIkCaikDAHwgBSAHIAyFgyAHhXwgBUIyiSAFQi6JhSAFQheJhXwiCSAKIAYgCISDIAYgCIOEIApCJIkgCkIeiYUgCkIZiYV8fCIENwMoIAMgCSALfCIJNwMIIAMgAUHYAHIiFEGwiQJqKQMAIAIgFGoiFCkDAHwgB3wgCSAFIAyFgyAMhXwgCUIyiSAJQi6JhSAJQheJhXwiByAEIAYgCoSDIAYgCoOEIARCJIkgBEIeiYUgBEIZiYV8fCILNwMgIAMgByAIfCIINwMAIAMgAUHgAHIiF0GwiQJqKQMAIAIgF2oiFykDAHwgDHwgCCAFIAmFgyAFhXwgCEIyiSAIQi6JhSAIQheJhXwiDCALIAQgCoSDIAQgCoOEIAtCJIkgC0IeiYUgC0IZiYV8fCIHNwMYIAMgBiAMfCIGNwM4IAMgAUHoAHIiGEGwiQJqKQMAIAIgGGoiGCkDAHwgBXwgBiAIIAmFgyAJhXwgBkIyiSAGQi6JhSAGQheJhXwiDCAHIAQgC4SDIAQgC4OEIAdCJIkgB0IeiYUgB0IZiYV8fCIFNwMQIAMgCiAMfCIKNwMwIAMgAUHwAHIiGUGwiQJqKQMAIAIgGWoiGSkDAHwgCXwgCiAGIAiFgyAIhXwgCkIyiSAKQi6JhSAKQheJhXwiDCAFIAcgC4SDIAcgC4OEIAVCJIkgBUIeiYUgBUIZiYV8fCIJNwMIIAMgBCAMfCIENwMoIAMgAUH4AHIiAUGwiQJqKQMAIAEgAmoiASkDAHwgCHwgBCAGIAqFgyAGhXwgBEIyiSAEQi6JhSAEQheJhXwiBCAJIAUgB4SDIAUgB4OEIAlCJIkgCUIeiYUgCUIZiYV8fCIINwMAIAMgBCALfDcDICAWQcAARkUEQCACIBZBEGoiFkEDdGogFSkDACAiKQMAIgYgGSkDACIEQi2JIARCA4mFIARCBoiFfHwgGikDACIIQj+JIAhCOImFIAhCB4iFfCILNwMAIBUgCCAjKQMAIgp8IAEpAwAiCEItiSAIQgOJhSAIQgaIhXwgGykDACIHQj+JIAdCOImFIAdCB4iFfCIFNwOIASAVIAcgFCkDACIJfCALQi2JIAtCA4mFIAtCBoiFfCAcKQMAIg1CP4kgDUI4iYUgDUIHiIV8Igc3A5ABIBUgDSAXKQMAIgx8IAVCLYkgBUIDiYUgBUIGiIV8IB0pAwAiDkI/iSAOQjiJhSAOQgeIhXwiDTcDmAEgFSAOIBgpAwAiEnwgB0ItiSAHQgOJhSAHQgaIhXwgHikDACIPQj+JIA9COImFIA9CB4iFfCIONwOgASAVIAQgD3wgDUItiSANQgOJhSANQgaIhXwgHykDACIQQj+JIBBCOImFIBBCB4iFfCIPNwOoASAVIAggEHwgICkDACIRQj+JIBFCOImFIBFCB4iFfCAOQi2JIA5CA4mFIA5CBoiFfCIQNwOwASAVICEpAwAiEyAFIAZCP4kgBkI4iYUgBkIHiIV8fCAQQi2JIBBCA4mFIBBCBoiFfCIFNwPAASAVIAsgEXwgE0I/iSATQjiJhSATQgeIhXwgD0ItiSAPQgOJhSAPQgaIhXwiETcDuAEgFSAKIAlCP4kgCUI4iYUgCUIHiIV8IA18IAVCLYkgBUIDiYUgBUIGiIV8Ig03A9ABIBUgBiAKQj+JIApCOImFIApCB4iFfCAHfCARQi2JIBFCA4mFIBFCBoiFfCIGNwPIASAVIAwgEkI/iSASQjiJhSASQgeIhXwgD3wgDUItiSANQgOJhSANQgaIhXwiCjcD4AEgFSAJIAxCP4kgDEI4iYUgDEIHiIV8IA58IAZCLYkgBkIDiYUgBkIGiIV8IgY3A9gBIBUgBCAIQj+JIAhCOImFIAhCB4iFfCARfCAKQi2JIApCA4mFIApCBoiFfDcD8AEgFSASIARCP4kgBEI4iYUgBEIHiIV8IBB8IAZCLYkgBkIDiYUgBkIGiIV8IgQ3A+gBIBUgCCALQj+JIAtCOImFIAtCB4iFfCAFfCAEQi2JIARCA4mFIARCBoiFfDcD+AEMAQsLIAAgACkDACAIfDcDACAAIAApAwggAykDCHw3AwggACAAKQMQIAMpAxB8NwMQIAAgACkDGCADKQMYfDcDGCAAIAApAyAgAykDIHw3AyAgACAAKQMoIAMpAyh8NwMoIAAgACkDMCADKQMwfDcDMCAAIAApAzggAykDOHw3AzgLpAkBMX8jAEFAaiEJIAAoAjwhHSAAKAI4IR4gACgCNCESIAAoAjAhEyAAKAIsIR8gACgCKCEgIAAoAiQhISAAKAIgISIgACgCHCEjIAAoAhghJCAAKAIUISUgACgCECEmIAAoAgwhJyAAKAIIISggACgCBCEpIAAoAgAhKgNAAkAgA0I/VgRAIAIhBQwBCyAJQgA3AzggCUIANwMwIAlCADcDKCAJQgA3AyAgCUIANwMYIAlCADcDECAJQgA3AwggCUIANwMAQQAhBCADQgBSBEADQCAEIAlqIAEgBGotAAA6AAAgAyAEQQFqIgStVg0ACwsgCSIFIQEgAiErC0EUIRYgKiEIICkhCiAoIQ4gJyEUICYhBCAlIQIgJCEGICMhByAiIQsgISEPICAhDCAdIRAgHiEXIBIhGCATIQ0gHyERA0AgBCAEIAhqIgQgDXNBEHciCCALaiILc0EMdyINIARqIhUgCHNBCHciCCALaiILIA1zQQd3IgQgByAHIBRqIgcgEHNBEHciECARaiINc0EMdyIRIAdqIgdqIhQgBiAGIA5qIgYgF3NBEHciDiAMaiIMc0EMdyIZIAZqIgYgDnNBCHciGnNBEHciDiACIAIgCmoiAiAYc0EQdyIKIA9qIg9zQQx3IhsgAmoiAiAKc0EIdyIKIA9qIhxqIg8gBHNBDHciBCAUaiIUIA5zQQh3IhcgD2oiDyAEc0EHdyEEIAsgCiAGIAcgEHNBCHciECANaiIGIBFzQQd3IgdqIgpzQRB3IgtqIg0gB3NBDHciByAKaiIOIAtzQQh3IhggDWoiCyAHc0EHdyEHIAYgCCACIAwgGmoiAiAZc0EHdyIGaiIIc0EQdyIMaiIRIAZzQQx3IgYgCGoiCiAMc0EIdyINIBFqIhEgBnNBB3chBiACIBsgHHNBB3ciAiAVaiIIIBBzQRB3IgxqIhUgAnNBDHciAiAIaiIIIAxzQQh3IhAgFWoiDCACc0EHdyECIBZBAmsiFg0ACyABKAAEIRYgASgACCEVIAEoAAwhGSABKAAQIRogASgAFCEbIAEoABghHCABKAAcISwgASgAICEtIAEoACQhLiABKAAoIS8gASgALCEwIAEoADAhMSABKAA0ITIgASgAOCEzIAEoADwhNCAFIAEoAAAgCCAqanM2AAAgBSA0IBAgHWpzNgA8IAUgMyAXIB5qczYAOCAFIDIgEiAYanM2ADQgBSAxIA0gE2pzNgAwIAUgMCARIB9qczYALCAFIC8gDCAganM2ACggBSAuIA8gIWpzNgAkIAUgLSALICJqczYAICAFICwgByAjanM2ABwgBSAcIAYgJGpzNgAYIAUgGyACICVqczYAFCAFIBogBCAmanM2ABAgBSAZIBQgJ2pzNgAMIAUgFSAOIChqczYACCAFIBYgCiApanM2AAQgEiATQQFqIhNFaiESIANCwABYBEACQCADQj9WDQAgA1ANACADpyEBQQAhBANAIAQgK2ogBCAFai0AADoAACAEQQFqIgQgAUkNAAsLIAAgEjYCNCAAIBM2AjAFIAFBQGshASAFQUBrIQIgA0JAfCEDDAELCwvRBgEKfyMAQaACayICJAAgACgAHCEEIAAoABghBSAAKAAUIQYgACgAECEHIAAoAAQhCCAAKAAIIQkgACgADCEKIAAoAAAhCyACIAEpAng3A5gCIAIgASkCcDcDkAIgAiABKQJoNwP4ASACIAEpAmA3A/ABIAIgASkCeDcD6AEgAiABKQJwNwPgASACQYACaiIDIAJB8AFqIAJB4AFqEAcgASACKQKIAjcCeCABIAIpAoACNwJwIAIgASkCWDcD2AEgAiABKQJQNwPQASACIAEpAmg3A8gBIAIgASkCYDcDwAEgAyACQdABaiACQcABahAHIAEgAikCiAI3AmggASACKQKAAjcCYCACIAEpAkg3A7gBIAIgAUFAayIAKQIANwOwASACIAEpAlg3A6gBIAIgASkCUDcDoAEgAyACQbABaiACQaABahAHIAEgAikCiAI3AlggASACKQKAAjcCUCACIAEpAjg3A5gBIAIgASkCMDcDkAEgAiABKQJINwOIASACIAApAgA3A4ABIAMgAkGQAWogAkGAAWoQByABIAIpAogCNwJIIAAgAikCgAI3AgAgAiABKQIoNwN4IAIgASkCIDcDcCACIAEpAjg3A2ggAiABKQIwNwNgIAMgAkHwAGogAkHgAGoQByABIAIpAogCNwI4IAEgAikCgAI3AjAgAiABKQIYNwNYIAIgASkCEDcDUCACIAEpAig3A0ggAiABKQIgNwNAIAMgAkHQAGogAkFAaxAHIAEgAikCiAI3AiggASACKQKAAjcCICACIAEpAgg3AzggAiABKQIANwMwIAIgASkCGDcDKCACIAEpAhA3AyAgAyACQTBqIAJBIGoQByABIAIpAogCNwIYIAEgAikCgAI3AhAgAiACKQOYAjcDGCACIAIpA5ACNwMQIAIgASkCCDcDCCACIAEpAgA3AwAgAyACQRBqIAIQByABIAIpAogCNwIIIAEgAikCgAI3AgAgASAKIAEoAAxzNgIMIAEg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EAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgAyABIAMQBiABIAMQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEgAxAGIAIgARAFQQEhAQNAIAIgAhAFIAFBAWoiAUHkAEcNAAsgAkEwaiIBIAIgARAGIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAJB4ABqIgMgASADEAYgAyADEAUgAyADEAUgAyADEAUgAyADEAUgAyADEAUgACADIAJBkAFqEAYgAkHAAWokAAuLAQEBfyMAQRBrIgIgADYCDCACIAE2AghBACEAIAJBADYCBANAIAIgAigCBCACKAIMIABqLQAAIAIoAgggAGotAABzcjYCBCACIAIoAgQgAEEBciIBIAIoAgxqLQAAIAIoAgggAWotAABzcjYCBCAAQQJqIgBBIEcNAAsgAigCBEEBa0EIdkEBcUEBawvPAgICfwF+IwBB4ABrIgYkACAGIAQgBRBIGiAGQSBqIgdCICAEQRBqIgUgBkGgkwIoAgARDgAaQX8hBAJAAkAgAiABIAMgB0GIkwIoAgARFgANAEEAIQQgAEUNAQJAAn4CQCAAIAFJIAEgAGutIANUcUUEQCAAIAFNDQEgACABa60gA1oNAQsgACABIAOnEDYhAUIgIAMgA0IgWhsMAQsgA1ANAUIgIAMgA0IgWhsLIQggBkFAayABIAinIgIQCiEHIAZBIGoiBCAEIAhCIHwgBUIAIAZBpJMCKAIAEQwAGiAAIAcgAhAKIARBwAAQCEEAIQQgA0IhVA0BIAJqIAEgAmogAyAIfSAFQgEgBkGkkwIoAgARDAAaDAELIAZBIGoiACAAQiAgBUIAIAZBpJMCKAIAEQwAGiAAQcAAEAgLIAZBIBAICyAGQeAAaiQAIAQL6AIBAn8CQCAAIAFGDQAgASAAIAJqIgRrQQAgAkEBdGtNBEAgACABIAIQCg8LIAAgAXNBA3EhAwJAAkAgACABSQRAIAMEQCAAIQMMAwsgAEEDcUUEQCAAIQMMAgsgACEDA0AgAkUNBCADIAEtAAA6AAAgAUEBaiEBIAJBAWshAiADQQFqIgNBA3ENAAsMAQsCQCADDQAgBEEDcQRAA0AgAkUNBSAAIAJBAWsiAmoiAyABIAJqLQAAOgAAIANBA3ENAAsLIAJBA00NAANAIAAgAkEEayICaiABIAJqKAIANgIAIAJBA0sNAAsLIAJFDQIDQCAAIAJBAWsiAmogASACai0AADoAACACDQALDAILIAJBA00NAANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIAJBBGsiAkEDSw0ACwsgAkUNAANAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBIAJBAWsiAg0ACwsgAAs0AQF/IwBBIGsiAiQAIAAgAhBJIABB6ABqIgAgAkIgECogACABEEkgAkEgEAggAkEgaiQAC88HAQl/IwBB4ABrIgMkACACQcEATwRAIABCADcDICAAQcCPAikDADcDACAAQciPAikDADcDCCAAQdCPAikDADcDECAAQdiPAikDADcDGCAAIAEgAq0QKiAAIAMQSUEgIQIgAyEBCyAAQgA3AyAgAEHAjwIpAwA3AwAgAEHIjwIpAwA3AwggAEHQjwIpAwA3AxAgAEHYjwIpAwA3AxggA0K27Nix48aNmzY3A1ggA0K27Nix48aNmzY3A1AgA0K27Nix48aNmzY3A0ggA0FAayIKQrbs2LHjxo2bNjcDACADQrbs2LHjxo2bNjcDOCADQrbs2LHjxo2bNjcDMCADQrbs2LHjxo2bNjcDKCADQrbs2LHjxo2bNjcDIAJAIAJFDQAgAkEETwRAIAJB/ABxIQYDQCADQSBqIgcgBGoiBSAFLQAAIAEgBGotAABzOgAAIAcgBEEBciIFaiILIAstAAAgASAFai0AAHM6AAAgByAEQQJyIgVqIgsgCy0AACABIAVqLQAAczoAACAHIARBA3IiBWoiByAHLQAAIAEgBWotAABzOgAAIARBBGohBCAIQQRqIgggBkcNAAsLIAJBA3EiCEUNAANAIANBIGogBGoiByAHLQAAIAEgBGotAABzOgAAIARBAWohBCAJQQFqIgkgCEcNAAsLIAAgA0EgakLAABAqIABB6ABqIgciAEIANwMgIABBwI8CKQMANwMAIABByI8CKQMANwMIIABB0I8CKQMANwMQIABB2I8CKQMANwMYIANC3Ljx4sWLl67cADcDWCADQty48eLFi5eu3AA3A1AgA0LcuPHixYuXrtwANwNIIApC3Ljx4sWLl67cADcDACADQty48eLFi5eu3AA3AzggA0LcuPHixYuXrtwANwMwIANC3Ljx4sWLl67cADcDKCADQty48eLFi5eu3AA3AyACQCACRQ0AQQAhCUEAIQQgAkEETwRAIAJB/ABxIQpBACEIA0AgA0EgaiIAIARqIgYgBi0AACABIARqLQAAczoAACAAIARBAXIiBmoiBSAFLQAAIAEgBmotAABzOgAAIAAgBEECciIGaiIFIAUtAAAgASAGai0AAHM6AAAgACAEQQNyIgZqIgAgAC0AACABIAZqLQAAczoAACAEQQRqIQQgCEEEaiIIIApHDQALCyACQQNxIgBFDQADQCADQSBqIARqIgIgAi0AACABIARqLQAAczoAACAEQQFqIQQgCUEBaiIJIABHDQALCyAHIANBIGoiAELAABAqIABBwAAQCCADQSAQCCADQeAAaiQAQQAL7hsBGX8gAiABKAAAIgRBGHQgBEGA/gNxQQh0ciAEQQh2QYD+A3EgBEEYdnJyNgIA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QhOIhDwAGiAAIAFCFYciAyAEQv///wCDfCICQhGIPAAfIAAgAkIJiDwAHiAAIAJCB4YgAUKAgP8Ag0IOiIQ8ABwgACADpyAEp2pBAXatPAAdC/gBAQp/A0AgBCAAIANqLQAAIgEgA0GAE2oiAi0AAHNyIQQgCiABIAItAMABc3IhCiAJIAEgAi0AoAFzciEJIAggASACLQCAAXNyIQggByABIAItAGBzciEHIAYgASACQUBrLQAAc3IhBiAFIAEgAi0AIHNyIQUgA0EBaiIDQR9HDQALIAogAC0AH0H/AHEiAEH/AHMiAXJB/wFxQQFrIAEgCXJB/wFxQQFrIAEgCHJB/wFxQQFrIAcgAEH6AHNyQf8BcUEBayAGIABBBXNyQf8BcUEBayAAIAVyQf8BcUEBayAAIARyQf8BcUEBa3JycnJyckEIdkEBcQvgCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAIQBiAAQShqIgMgAyACQShqEAYgAEH4AGogAkHQAGogAUH4AGoQBiABKAJUIRQgASgCWCEVIAEoAlwhFiABKAJgIRcgASgCZCEYIAEoAmgh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wAEgBEHAAWoiCSABIAIQChogAygAECEGIANBQGsiASgAACEHIAMoAFAhBSADKAAgIQggAygAMCEKIAMoABQhCyADKABEIQwgAygAVCENIAMoACQhDiADKAA0IQ8gAygAGCEQIAMoAEghESADKABYIRIgAygAKCETIAMoADghFCAEKALAASEVIAQoAsQBIRYgBCgCyAEhFyAEIAMoACwgAygAPHEgAygAHCADKABMIAMoAFwgBCgCzAFzc3NzNgLMASAEIBMgFHEgECARIBIgF3Nzc3M2AsgBIAQgDiAPcSALIAwgDSAWc3NzczYCxAEgBCAIIApxIAYgByAFIBVzc3NzNgLAASACIAlqQQBBECACaxAJGiAAIAkgAhAKGiAEKALAASEAIAQoAsQBIQIgBCgCyAEhBiAEKALMASEHIAQgAykCWDcD6AEgBCADKQJQNwPgASAEIAMpAkg3A7gBIAQgASkCADcDsAEgBCADKQJYNwOoASAEIAMpAlA3A6ABIARB0AFqIgUgBEGwAWogBEGgAWoQByADIAQpAtgBNwJYIAMgBCkC0AE3AlAgBCADKQI4NwOYASAEIAMpAjA3A5ABIAQgAykCSDcDiAEgBCABKQIANwOAASAFIARBkAFqIARBgAFqEAcgAyAEKQLYATcCSCABIAQpAtABNwIAIAQgAykCKDcDeCAEIAMpAiA3A3AgBCADKQI4NwNoIAQgAykCMDcDYCAFIARB8ABqIARB4ABqEAcgAyAEKQLYATcCOCADIAQpAtABNwIwIAQgAykCGDcDWCAEIAMpAhA3A1AgBCADKQIoNwNIIAQgAykCIDcDQCAFIARB0ABqIARBQGsQByADIAQpAtgBNwIoIAMgBCkC0AE3AiAgBCADKQIINwM4IAQgAykCADcDMCAEIAMpAhg3AyggBCADKQIQNwMgIAUgBEEwaiAEQSBqEAcgAyAEKQLYATcCGCADIAQpAtABNwIQIAQgBCkD6AE3AxggBCAEKQPgATcDECAEIAMpAgg3AwggBCADKQIANwMAIAUgBEEQaiAEEAcgBCgC0AEhASAEKALUASEFIAQoAtgBIQggAyAHIAQoAtwBczYCDCADIAYgCHM2AgggAyACIAVzNgIEIAMgACABczYCACAEQfABaiQAC6sGARR/IwBB4AFrIgMkACACKAAQIQQgAkFAayIFKAAAIQYgAigAUCEJIAIoACAhCiACKAAwIQsgAigAFCEHIAIoAEQhDCACKABUIQ0gASgABCEOIAIoACQhDyACKAA0IRAgAigAGCEIIAIoAEghESACKABYIRIgASgACCETIAIoACghFCACKAA4IRUgASgAACEWIAAgAigALCACKAA8cSACKAAcIAIoAEwgAigAXCABKAAMc3NzcyIBNgAMIAAgFCAVcSAIIBEgEiATc3NzcyIINgAIIAAgDyAQcSAHIAwgDSAOc3NzcyIHNgAEIAAgCiALcSAEIAYgCSAWc3NzcyIANgAAIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAkg3A7gBIAMgBSkCADcDsAEgAyACKQJYNwOoASADIAIpAlA3A6ABIANBwAFqIgQgA0GwAWogA0GgAWoQByACIAMpAsgBNwJYIAIgAykCwAE3AlAgAyACKQI4NwOYASADIAIpAjA3A5ABIAMgAikCSDcDiAEgAyAFKQIANwOAASAEIANBkAFqIANBgAFqEAcgAiADKQLIATcCSCAFIAMpAsABNwIAIAMgAikCKDcDeCADIAIpAiA3A3AgAyACKQI4NwNoIAMgAikCMDcDYCAEIANB8ABqIANB4ABqEAcgAiADKQLIATcCOCACIAMpAsABNwIwIAMgAikCGDcDWCADIAIpAhA3A1AgAyACKQIoNwNIIAMgAikCIDcDQCAEIANB0ABqIANBQGsQByACIAMpAsgBNwIoIAIgAykCwAE3AiAgAyACKQIINwM4IAMgAikCADcDMCADIAIpAhg3AyggAyACKQIQNwMgIAQgA0EwaiADQSBqEAcgAiADKQLIATcCGCACIAMpAsABNwIQIAMgAykD2AE3AxggAyADKQPQATcDECADIAIpAgg3AwggAyACKQIANwMAIAQgA0EQaiADEAcgAygCwAEhBSADKALEASEEIAMoAsgBIQYgAiADKALMASABczYCDCACIAYgCHM2AgggAiAEIAdzNgIEIAIgACAFczYCACADQeABaiQAC4sJARF/IwBB4AFrIgUkACAEKAA8IANBHXZzIQ4gBCgAOCADQQN0cyEPIAQoADQgAkEddnMhECAEQTBqIgMoAAAgAkEDdHMhESAEQRBqIQIgBEEgaiEGIARBQGshByAEQdAAaiEIA0AgBSAIKQIINwPYASAFIAgpAgA3A9ABIAUgBykCCDcDuAEgBSAHKQIANwOwASAFIAgpAgg3A6gBIAUgCCkCADcDoAEgBUHAAWoiCSAFQbABaiAFQaABahAHIAggBSkCyAE3AgggCCAFKQLAATcCACAFIAMpAgg3A5gBIAUgAykCADcDkAEgBSAHKQIINwOIASAFIAcpAgA3A4ABIAkgBUGQAWogBUGAAWoQByAHIAUpAsgBNwIIIAcgBSkCwAE3AgAgBSAGKQIINwN4IAUgBikCADcDcCAFIAMpAgg3A2ggBSADKQIANwNgIAkgBUHwAGogBUHgAGoQByADIAUpAsgBNwIIIAMgBSkCwAE3AgAgBSACKQIINwNYIAUgAikCADcDUCAFIAYpAgg3A0ggBSAGKQIANwNAIAkgBUHQAGogBUFAaxAHIAYgBSkCyAE3AgggBiAFKQLAATcCACAFIAQpAgg3AzggBSAEKQIANwMwIAUgAikCCDcDKCAFIAIpAgA3AyAgCSAFQTBqIAVBIGoQByACIAUpAsgBNwIIIAIgBSkCwAE3AgAgBSAFKQPYATcDGCAFIAUpA9ABNwMQIAUgBCkCCDcDCCAFIAQpAgA3AwAgCSAFQRBqIAUQByAFKALAASELIAUoAsQBIQwgBSgCyAEhCSAEIA4gBSgCzAFzIg02AgwgBCAJIA9zIgk2AgggBCAMIBBzIgw2AgQgBCALIBFzIgs2AgAgCkEBaiIKQQdHDQALAkACQAJAAkAgAUEQaw4RAAICAgICAgICAgICAgICAgECCyAEKAAQIQEgBCgAMCECIAQoACAhAyAEKABQIQYgBEFAaygAACEHIAQoABQhCCAEKAA0IQogBCgAJCEOIAQoAFQhDyAEKABEIRAgBCgAGCERIAQoADghEiAEKAAoIRMgBCgAWCEUIAQoAEghFSAAIAQoABwgBCgAPCAEKAAsIAQoAFwgBCgATHNzc3MgDXM2AAwgACARIBIgEyAUIBVzc3NzIAlzNgAIIAAgCCAKIA4gDyAQc3NzcyAMczYABCAAIAEgAiADIAYgB3Nzc3MgC3M2AAAMAgsgBCgAICEBIAQoABAhAiAEKAAkIQMgBCgAFCEGIAQoACghByAEKAAYIQggACAEKAAsIAQoABxzIA1zNgAMIAAgByAIcyAJczYACCAAIAMgBnMgDHM2AAQgACABIAJzIAtzNgAAIAQoADAhASAEKABQIQIgBEFAaygAACEDIAQoADQhBiAEKABUIQcgBCgARCEIIAQoADghCiAEKABYIQ0gBCgASCEJIAAgBCgAPCAEKABcIAQoAExzczYAHCAAIAogCSANc3M2ABggACAGIAcgCHNzNgAUIAAgASACIANzczYAEAwBCyAAQQAgARAJGgsgBUHgAWokAAulBgEUfyMAQeABayIDJAAgAigAECEFIAJBQGsiBCgAACEJIAIoAFAhCiACKAAgIQsgAigAMCEMIAEoAAQhBiACKAAUIQ0gAigARCEOIAIoAFQhDyACKAAkIRAgAigANCERIAEoAAghByACKAAYIRIgAigASCETIAIoAFghFCACKAAoIRUgAigAOCEWIAEoAAAhCCAAIAEoAAwiASACKAAsIAIoADxxIAIoABwgAigAXCACKABMc3NzczYADCAAIAcgFSAWcSASIBMgFHNzc3M2AAggACAGIBAgEXEgDSAOIA9zc3NzNgAEIAAgCCALIAxxIAUgCSAKc3NzczYAACADIAIpAlg3A9gBIAMgAikCUDcD0AEgAyACKQJINwO4ASADIAQpAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASADQcABaiIAIANBsAFqIANBoAFqEAcgAiADKQLIATcCWCACIAMpAsABNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgBCkCADcDgAEgACADQZABaiADQYABahAHIAIgAykCyAE3AkggBCADKQLAATcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgACADQfAAaiADQeAAahAHIAIgAykCyAE3AjggAiADKQLAATcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgACADQdAAaiADQUBrEAcgAiADKQLIATcCKCACIAMpAsABNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAAIANBMGogA0EgahAHIAIgAykCyAE3AhggAiADKQLAATcCECADIAMpA9gBNwMYIAMgAykD0AE3AxAgAyACKQIINwMIIAMgAikCADcDACAAIANBEGogAxAHIAMoAsABIQAgAygCxAEhBCADKALIASEFIAIgASADKALMAXM2AgwgAiAFIAdzNgIIIAIgBCAGczYCBCACIAAgCHM2AgAgA0HgAWokAAulCQENfyMAQaADayICJAAgACgAECEGIAAoABQhByAAKAAYIQggACgAHCEJIAAoAAQhBCAAKAAIIQUgACgADCEKIAAoAAAhCyACIAEpAlg3A5gDIAIgASkCUDcDkAMgAiABKQJINwP4AiACIAFBQGsiACkCADcD8AIgAiABKQJYNwPoAiACIAEpAlA3A+ACIAJBgANqIgMgAkHwAmogAkHgAmoQByABIAIpAogDNwJYIAEgAikCgAM3AlAgAiABKQI4NwPYAiACIAEpAjA3A9ACIAIgASkCSDcDyAIgAiAAKQIANwPAAiADIAJB0AJqIAJBwAJqEAcgASACKQKIAzcCSCAAIAIpAoADNwIAIAIgASkCKDcDuAIgAiABKQIgNwOwAiACIAEpAjg3A6gCIAIgASkCMDcDoAIgAyACQbACaiACQaACahAHIAEgAikCiAM3AjggASACKQKAAzcCMCACIAEpAhg3A5gCIAIgASkCEDcDkAIgAiABKQIoNwOIAiACIAEpAiA3A4ACIAMgAkGQAmogAkGAAmoQByABIAIpAogDNwIoIAEgAikCgAM3AiAgAiABKQIINwP4ASACIAEpAgA3A/ABIAIgASkCGDcD6AEgAiABKQIQNwPgASADIAJB8AFqIAJB4AFqEAcgASACKQKIAzcCGCABIAIpAoADNwIQIAIgAikDmAM3A9gBIAIgAikDkAM3A9ABIAIgASkCCDcDyAEgAiABKQIANwPAASADIAJB0AFqIAJBwAFqEAcgAigCgAMhDCACKAKEAyENIAIoAogDIQ4gASAKIAIoAowDczYCDCABIAUgDnM2AgggASAEIA1zNgIEIAEgCyAMczYCACACIAEpAlg3A5gDIAIgASkCUDcDkAMgAiABKQJINwO4ASACIAApAgA3A7ABIAIgASkCWDcDqAEgAiABKQJQNwOgASADIAJBsAFqIAJBoAFqEAcgASACKQKIAzcCWCABIAIpAoADNwJQIAIgASkCODcDmAEgAiABKQIwNwOQASACIAEpAkg3A4gBIAIgACkCADcDgAEgAyACQZABaiACQYABahAHIAEgAikCiAM3AkggACACKQKAAzcCACACIAEpAig3A3ggAiABKQIgNwNwIAIgASkCODcDaCACIAEpAjA3A2AgAyACQfAAaiACQeAAahAHIAEgAikCiAM3AjggASACKQKAAzcCMCACIAEpAhg3A1ggAiABKQIQNwNQIAIgASkCKDcDSCACIAEpAiA3A0AgAyACQdAAaiACQUBrEAcgASACKQKIAzcCKCABIAIpAoADNwIgIAIgASkCCDcDOCACIAEpAgA3AzAgAiABKQIYNwMoIAIgASkCEDcDICADIAJBMGogAkEgahAHIAEgAikCiAM3AhggASACKQKAAzcCECACIAIpA5gDNwMYIAIgAikDkAM3AxAgAiABKQIINwMIIAIgASkCADcDACADIAJBEGogAhAHIAIoAoADIQAgAigChAMhBCACKAKIAyEFIAEgCSACKAKMA3M2AgwgASAFIAhzNgIIIAEgBCAHczYCBCABIAAgBnM2AgAgAkGgA2okAAvzFAEZfyMAQaAGayIDJAAgASgABCELIAEoAAghDCABKAAMIQ0gASgAECEOIAEoABQhBCABKAAYIQ8gASgAHCEQIAAoAAQhESAAKAAIIRIgACgADCETIAAoABAhFCAAKAAUIRUgACgAGCEWIAAoABwhFyABKAAAIQUgAkFAayIBIAAoAAAiGEGAgoQQczYCACACQpXE3MmFsvq84gA3AjggAkEwaiIAQoCChJCwoIGEDTcCACACQqCixJG0rq2UXTcCKCACQSBqIgZC2/vgqNXN8JdxNwIAIAIgBSAYcyIZNgIAIAIgF0Hz6qLpfXM2AlwgAiAWQaCixJEEczYCWCACIBVB7YS/iX9zNgJUIAJB0ABqIgUgFEHb++CoBXM2AgAgAiATQZDT55MGczYCTCACIBJBlcTcyQVzNgJIIAIgEUGDiqDoAHM2AkQgAiAQIBdzIhA2AhwgAiAPIBZzIg82AhggAiAEIBVzIho2AhQgAkEQaiIEIA4gFHMiDjYCACACIA0gE3MiDTYCDCACIAwgEnMiDDYCCCACIAsgEXMiGzYCBEEAIQsDQCADIAUpAgg3A5gGIAMgBSkCADcDkAYgAyABKQIINwP4BSADIAEpAgA3A/AFIAMgBSkCCDcD6AUgAyAFKQIANwPgBSADQYAGaiIHIANB8AVqIANB4AVqEAcgBSADKQKIBjcCCCAFIAMpAoAGNwIAIAMgACkCCDcD2AUgAyAAKQIANwPQBSADIAEpAgg3A8gFIAMgASkCADcDwAUgByADQdAFaiADQcAFahAHIAEgAykCiAY3AgggASADKQKABjcCACADIAYpAgg3A7gFIAMgBikCADcDsAUgAyAAKQIINwOoBSADIAApAgA3A6AFIAcgA0GwBWogA0GgBWoQByAAIAMpAogGNwIIIAAgAykCgAY3AgAgAyAEKQIINwOYBSADIAQpAgA3A5AFIAMgBikCCDcDiAUgAyAGKQIANwOABSAHIANBkAVqIANBgAVqEAcgBiADKQKIBjcCCCAGIAMpAoAGNwIAIAMgAikCCDcD+AQgAyACKQIANwPwBCADIAQpAgg3A+gEIAMgBCkCADcD4AQgByADQfAEaiADQeAEahAHIAQgAykCiAY3AgggBCADKQKABjcCACADIAMpA5gGNwPYBCADIAMpA5AGNwPQBCADIAIpAgg3A8gEIAMgAikCADcDwAQgByADQdAEaiADQcAEahAHIAMoAoAGIQggAygChAYhCSADKAKIBiEKIAIgAygCjAYgE3M2AgwgAiAKIBJzNgIIIAIgCSARczYCBCACIAggGHM2AgAgAyAFKQIINwOYBiADIAUpAgA3A5AGIAMgASkCCDcDuAQgAyABKQIANwOwBCADIAUpAgg3A6gEIAMgBSkCADcDoAQgByADQbAEaiADQaAEahAHIAUgAykCiAY3AgggBSADKQKABjcCACADIAApAgg3A5gEIAMgACkCADcDkAQgAyABKQIINwOIBCADIAEpAgA3A4AEIAcgA0GQBGogA0GABGoQByABIAMpAogGNwIIIAEgAykCgAY3AgAgAyAGKQIINwP4AyADIAYpAgA3A/ADIAMgACkCCDcD6AMgAyAAKQIANwPgAyAHIANB8ANqIANB4ANqEAcgACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcD2AMgAyAEKQIANwPQAyADIAYpAgg3A8gDIAMgBikCADcDwAMgByADQdADaiADQcADahAHIAYgAykCiAY3AgggBiADKQKABjcCACADIAIpAgg3A7gDIAMgAikCADcDsAMgAyAEKQIINwOoAyADIAQpAgA3A6ADIAcgA0GwA2ogA0GgA2oQByAEIAMpAogGNwIIIAQgAykCgAY3AgAgAyADKQOYBjcDmAMgAyADKQOQBjcDkAMgAyACKQIINwOIAyADIAIpAgA3A4ADIAcgA0GQA2ogA0GAA2oQByADKAKABiEIIAMoAoQGIQkgAygCiAYhCiACIAMoAowGIBdzNgIMIAIgCiAWczYCCCACIAkgFXM2AgQgAiAIIBRzNgIAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A/gCIAMgASkCADcD8AIgAyAFKQIINwPoAiADIAUpAgA3A+ACIAcgA0HwAmogA0HgAmoQByAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwPYAiADIAApAgA3A9ACIAMgASkCCDcDyAIgAyABKQIANwPAAiAHIANB0AJqIANBwAJqEAcgASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDuAIgAyAGKQIANwOwAiADIAApAgg3A6gCIAMgACkCADcDoAIgByADQbACaiADQaACahAHIAAgAykCiAY3AgggACADKQKABjcCACADIAQpAgg3A5gCIAMgBCkCADcDkAIgAyAGKQIINwOIAiADIAYpAgA3A4ACIAcgA0GQAmogA0GAAmoQByAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwP4ASADIAIpAgA3A/ABIAMgBCkCCDcD6AEgAyAEKQIANwPgASAHIANB8AFqIANB4AFqEAcgBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3A9gBIAMgAykDkAY3A9ABIAMgAikCCDcDyAEgAyACKQIANwPAASAHIANB0AFqIANBwAFqEAcgAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiANczYCDCACIAogDHM2AgggAiAJIBtzNgIEIAIgCCAZczYCACADIAUpAgg3A5gGIAMgBSkCADcDkAYgAyABKQIINwO4ASADIAEpAgA3A7ABIAMgBSkCCDcDqAEgAyAFKQIANwOgASAHIANBsAFqIANBoAFqEAcgBSADKQKIBjcCCCAFIAMpAoAGNwIAIAMgACkCCDcDmAEgAyAAKQIANwOQASADIAEpAgg3A4gBIAMgASkCADcDgAEgByADQZABaiADQYABahAHIAEgAykCiAY3AgggASADKQKABjcCACADIAYpAgg3A3ggAyAGKQIANwNwIAMgACkCCDcDaCADIAApAgA3A2AgByADQfAAaiADQeAAahAHIAAgAykCiAY3AgggACADKQKABjcCACADIAQpAgg3A1ggAyAEKQIANwNQIAMgBikCCDcDSCADIAYpAgA3A0AgByADQdAAaiADQUBrEAcgBiADKQKIBjcCCCAGIAMpAoAGNwIAIAMgAikCCDcDOCADIAIpAgA3AzAgAyAEKQIINwMoIAMgBCkCADcDICAHIANBMGogA0EgahAHIAQgAykCiAY3AgggBCADKQKABjcCACADIAMpA5gGNwMYIAMgAykDkAY3AxAgAyACKQIINwMIIAMgAikCADcDACAHIANBEGogAxAHIAMoAoAGIQggAygChAYhCSADKAKIBiEKIAIgAygCjAYgEHM2AgwgAiAKIA9zNgIIIAIgCSAaczYCBCACIAggDnM2AgAgC0EBaiILQQRHDQALIANBoAZqJAALCAAgAEEQEBgLBABBXwuYCgEefyMAQcACayIEJAAgBEIANwOYAiAEQgA3A5ACIARCADcDiAIgBEIANwOAAiAEQYACaiIFIAEgAhAKGiADKAAQIQsgAygAMCEMIAMoABQhDSADKAA0IQ4gAygAGCEPIAMoADghECADKAAcIREgAygAPCESIAMoACQhASADKABUIRMgAygAdCEUIAMoAGQhBiADKAAsIQcgAygAXCEVIAMoAHwhFiADKABsIQggAygAICEJIAMoAFAhFyADKABwIRggAygAYCEKIAQoApACIRkgBCgCgAIhGiAEKAKEAiEbIAQoAogCIRwgBCgCjAIhHSAEKAKUAiEeIAQoApwCIR8gBCADKAAoIiAgAygAaCIhIAMoAHhxIAMoAFggBCgCmAJzc3M2ApgCIAQgCSAKIBhxIBcgGXNzczYCkAIgBCAHIAggFnEgFSAfc3NzNgKcAiAEIAEgBiAUcSATIB5zc3M2ApQCIAQgCCAHIBJxIBEgHXNzczYCjAIgBCAhIBAgIHEgDyAcc3NzNgKIAiAEIAYgASAOcSANIBtzc3M2AoQCIAQgCiAJIAxxIAsgGnNzczYCgAIgAiAFakEAQSAgAmsQCRogACAFIAIQChogBCgCmAIhASAEKAKQAiECIAQoApwCIQYgBCgClAIhByAEKAKAAiEIIAQoAoQCIQkgBCgCiAIhCiAEKAKMAiELIAQgAykCeDcDuAIgBCADKQJwNwOwAiAEIAMpAmg3A/gBIAQgAykCYDcD8AEgBCADKQJ4NwPoASAEIAMpAnA3A+ABIARBoAJqIgUgBEHwAWogBEHgAWoQByADIAQpAqgCNwJ4IAMgBCkCoAI3AnAgBCADKQJYNwPYASAEIAMpAlA3A9ABIAQgAykCaDcDyAEgBCADKQJgNwPAASAFIARB0AFqIARBwAFqEAcgAyAEKQKoAjcCaCADIAQpAqACNwJgIAQgAykCSDcDuAEgBCADQUBrIgApAgA3A7ABIAQgAykCWDcDqAEgBCADKQJQNwOgASAFIARBsAFqIARBoAFqEAcgAyAEKQKoAjcCWCADIAQpAqACNwJQIAQgAykCODcDmAEgBCADKQIwNwOQASAEIAMpAkg3A4gBIAQgACkCADcDgAEgBSAEQZABaiAEQYABahAHIAMgBCkCqAI3AkggACAEKQKgAjcCACAEIAMpAig3A3ggBCADKQIgNwNwIAQgAykCODcDaCAEIAMpAjA3A2AgBSAEQfAAaiAEQeAAahAHIAMgBCkCqAI3AjggAyAEKQKgAjcCMCAEIAMpAhg3A1ggBCADKQIQNwNQIAQgAykCKDcDSCAEIAMpAiA3A0AgBSAEQdAAaiAEQUBrEAcgAyAEKQKoAjcCKCADIAQpAqACNwIgIAQgAykCCDcDOCAEIAMpAgA3AzAgBCADKQIYNwMoIAQgAykCEDcDICAFIARBMGogBEEgahAHIAMgBCkCqAI3AhggAyAEKQKgAjcCECAEIAQpA7gCNwMYIAQgBCkDsAI3AxAgBCADKQIINwMIIAQgAykCADcDACAFIARBEGogBBAHIAMgBCkCqAI3AgggAyAEKQKgAjcCACADIAsgAygADHM2AgwgAyAKIAMoAAhzNgIIIAMgCSADKAAEczYCBCADIAggAygAAHM2AgAgACACIAAoAABzNgIAIAMgByADKABEczYCRCADIAEgAygASHM2AkggAyAGIAMoAExzNgJMIARBwAJqJAALkQkBHn8jAEGgAmsiAyQAIAIoABAhDiACKAAwIQ8gAigAFCEQIAEoAAQhESACKAA0IRIgAigAGCETIAEoAAghFCACKAA4IRUgAigAHCEIIAEoAAwhFiACKAA8IRcgAigAICEFIAIoAFAhCSABKAAQIRggAigAcCEZIAIoAGAhBCACKAAkIQYgAigAVCEKIAEoABQhGiACKAB0IRsgAigAZCEMIAIoACghByACKABYIQsgASgAGCEcIAIoAHghHSACKABoIQ0gASgAACEeIAAgAigALCIfIAIoAGwiICACKAB8cSACKABcIAEoABxzc3MiATYAHCAAIAcgDSAdcSALIBxzc3MiCzYAGCAAIAYgDCAbcSAKIBpzc3MiCjYAFCAAIAUgBCAZcSAJIBhzc3MiCTYAECAAICAgFyAfcSAIIBZzc3MiCDYADCAAIA0gByAVcSATIBRzc3MiBzYACCAAIAwgBiAScSAQIBFzc3MiBjYABCAAIAQgBSAPcSAOIB5zc3MiBTYAACADIAIpAng3A5gCIAMgAikCcDcDkAIgAyACKQJoNwP4ASADIAIpAmA3A/ABIAMgAikCeDcD6AEgAyACKQJwNwPgASADQYACaiIEIANB8AFqIANB4AFqEAcgAiADKQKIAjcCeCACIAMpAoACNwJwIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAmg3A8gBIAMgAikCYDcDwAEgBCADQdABaiADQcABahAHIAIgAykCiAI3AmggAiADKQKAAjcCYCADIAIpAkg3A7gBIAMgAkFAayIAKQIANwOwASADIAIpAlg3A6gBIAMgAikCUDcDoAEgBCADQbABaiADQaABahAHIAIgAykCiAI3AlggAiADKQKAAjcCUCADIAIpAjg3A5gBIAMgAikCMDcDkAEgAyACKQJINwOIASADIAApAgA3A4ABIAQgA0GQAWogA0GAAWoQByACIAMpAogCNwJIIAAgAykCgAI3AgAgAyACKQIoNwN4IAMgAikCIDcDcCADIAIpAjg3A2ggAyACKQIwNwNgIAQgA0HwAGogA0HgAGoQByACIAMpAogCNwI4IAIgAykCgAI3AjAgAyACKQIYNwNYIAMgAikCEDcDUCADIAIpAig3A0ggAyACKQIgNwNAIAQgA0HQAGogA0FAaxAHIAIgAykCiAI3AiggAiADKQKAAjcCICADIAIpAgg3AzggAyACKQIANwMwIAMgAikCGDcDKCADIAIpAhA3AyAgBCADQTBqIANBIGoQByACIAMpAogCNwIYIAIgAykCgAI3AhAgAyADKQOYAjcDGCADIAMpA5ACNwMQIAMgAikCCDcDCCADIAIpAgA3AwAgBCADQRBqIAMQByACIAMpAogCNwIIIAIgAykCgAI3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AGghDyABKAAAIRAgACACKAAsIh8gASgAHCIBIAIoAFwgAigAbCIgIAIoAHxxc3NzNgAcIAAgDSAOIB0gDyAecXNzczYAGCAAIAogCyAbIAwgHHFzc3M2ABQgACAEIAggGSAJIBpxc3NzNgAQIAAgICAHIBcgGCAfcXNzczYADCAAIA8gBiAVIA0gFnFzc3M2AAggACAMIAUgEyAKIBRxc3NzNgAEIAAgCSAQIBEgBCAScXNzczYAACADIAIpAng3A5gCIAMgAikCcDcDkAIgAyACKQJoNwP4ASADIAIpAmA3A/ABIAMgAikCeDcD6AEgAyACKQJwNwPgASADQYACaiIEIANB8AFqIANB4AFqEAcgAiADKQKIAjcCeCACIAMpAoACNwJwIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAmg3A8gBIAMgAikCYDcDwAEgBCADQdABaiADQcABahAHIAIgAykCiAI3AmggAiADKQKAAjcCYCADIAIpAkg3A7gBIAMgAkFAayIAKQIANwOwASADIAIpAlg3A6gBIAMgAikCUDcDoAEgBCADQbABaiADQaABahAHIAIgAykCiAI3AlggAiADKQKAAjcCUCADIAIpAjg3A5gBIAMgAikCMDcDkAEgAyACKQJINwOIASADIAApAgA3A4ABIAQgA0GQAWogA0GAAWoQByACIAMpAogCNwJIIAAgAykCgAI3AgAgAyACKQIoNwN4IAMgAikCIDcDcCADIAIpAjg3A2ggAyACKQIwNwNgIAQgA0HwAGogA0HgAGoQByACIAMpAogCNwI4IAIgAykCgAI3AjAgAyACKQIYNwNYIAMgAikCEDcDUCADIAIpAig3A0ggAyACKQIgNwNAIAQgA0HQAGogA0FAaxAHIAIgAykCiAI3AiggAiADKQKAAjcCICADIAIpAgg3AzggAyACKQIANwMwIAMgAikCGDcDKCADIAIpAhA3AyAgBCADQTBqIANBIGoQByACIAMpAogCNwIYIAIgAykCgAI3AhAgAyADKQOYAjcDGCADIAMpA5ACNwMQIAMgAikCCDcDCCADIAIpAgA3AwAgBCADQRBqIAMQByACIAMpAogCNwIIIAIgAykCgAI3AgAgAiAHIAIoAAxzNgIMIAIgBiACKAAIczYCCCACIAUgAigABHM2AgQgAiAQIAIoAABzNgIAIAAgCCAAKAAAczYCACACIAsgAigARHM2AkQgAiAOIAIoAEhzNgJIIAIgASACKABMczYCTCADQaACaiQAC5kNARJ/IwBBoARrIgIkACAAKAA8IQQgACgAOCEFIAAoADQhBiAAKAAwIQcgACgAICEIIAAoACQhCSAAKAAoIQogACgALCELIAAoABwhDCAAKAAYIQ0gACgAFCEOIAAoABAhDyAAKAAEIRAgACgACCERIAAoAAwhEiAAKAAAIRMgAiABKQJ4NwOYBCACIAEpAnA3A5AEIAIgASkCaDcD+AMgAiABKQJgNwPwAyACIAEpAng3A+gDIAIgASkCcDcD4AMgAkGABGoiAyACQfADaiACQeADahAHIAEgAikCiAQ3AnggASACKQKABDcCcCACIAEpAlg3A9gDIAIgASkCUDcD0AMgAiABKQJoNwPIAyACIAEpAmA3A8ADIAMgAkHQA2ogAkHAA2oQByABIAIpAogENwJoIAEgAikCgAQ3AmAgAiABKQJINwO4AyACIAFBQGsiACkCADcDsAMgAiABKQJYNwOoAyACIAEpAlA3A6ADIAMgAkGwA2ogAkGgA2oQByABIAIpAogENwJYIAEgAikCgAQ3AlAgAiABKQI4NwOYAyACIAEpAjA3A5ADIAIgASkCSDcDiAMgAiAAKQIANwOAAyADIAJBkANqIAJBgANqEAcgASACKQKIBDcCSCAAIAIpAoAENwIAIAIgASkCKDcD+AIgAiABKQIgNwPwAiACIAEpAjg3A+gCIAIgASkCMDcD4AIgAyACQfACaiACQeACahAHIAEgAikCiAQ3AjggASACKQKABDcCMCACIAEpAhg3A9gCIAIgASkCEDcD0AIgAiABKQIoNwPIAiACIAEpAiA3A8ACIAMgAkHQAmogAkHAAmoQByABIAIpAogENwIoIAEgAikCgAQ3AiAgAiABKQIINwO4AiACIAEpAgA3A7ACIAIgASkCGDcDqAIgAiABKQIQNwOgAiADIAJBsAJqIAJBoAJqEAcgASACKQKIBDcCGCABIAIpAoAENwIQIAIgAikDmAQ3A5gCIAIgAikDkAQ3A5ACIAIgASkCCDcDiAIgAiABKQIANwOAAiADIAJBkAJqIAJBgAJqEAcgASACKQKIBDcCCCABIAIpAoAENwIAIAEgEiABKAAMczYCDCABIBEgASgACHM2AgggASAQIAEoAARzNgIEIAEgEyABKAAAczYCACAAIA8gACgAAHM2AgAgASAOIAEoAERzNgJEIAEgDSABKABIczYCSCABIAwgASgATHM2AkwgAiABKQJ4NwOYBCACIAEpAnA3A5AEIAIgASkCaDcD+AEgAiABKQJgNwPwASACIAEpAng3A+gBIAIgASkCcDcD4AEgAyACQfABaiACQeABahAHIAEgAikCiAQ3AnggASACKQKABDcCcCACIAEpAlg3A9gBIAIgASkCUDcD0AEgAiABKQJoNwPIASACIAEpAmA3A8ABIAMgAkHQAWogAkHAAWoQByABIAIpAogENwJoIAEgAikCgAQ3AmAgAiABKQJINwO4ASACIAApAgA3A7ABIAIgASkCWDcDqAEgAiABKQJQNwOgASADIAJBsAFqIAJBoAFqEAcgASACKQKIBDcCWCABIAIpAoAENwJQIAIgASkCODcDmAEgAiABKQIwNwOQASACIAEpAkg3A4gBIAIgACkCADcDgAEgAyACQZABaiACQYABahAHIAEgAikCiAQ3AkggACACKQKABDcCACACIAEpAig3A3ggAiABKQIgNwNwIAIgASkCODcDaCACIAEpAjA3A2AgAyACQfAAaiACQeAAahAHIAEgAikCiAQ3AjggASACKQKABDcCMCACIAEpAhg3A1ggAiABKQIQNwNQIAIgASkCKDcDSCACIAEpAiA3A0AgAyACQdAAaiACQUBrEAcgASACKQKIBDcCKCABIAIpAoAENwIgIAIgASkCCDcDOCACIAEpAgA3AzAgAiABKQIYNwMoIAIgASkCEDcDICADIAJBMGogAkEgahAHIAEgAikCiAQ3AhggASACKQKABDcCECACIAIpA5gENwMYIAIgAikDkAQ3AxAgAiABKQIINwMIIAIgASkCADcDACADIAJBEGogAhAHIAEgAikCiAQ3AgggASACKQKABDcCACABIAsgASgADHM2AgwgASAKIAEoAAhzNgIIIAEgCSABKAAEczYCBCABIAggASgAAHM2AgAgACAHIAAoAABzNgIAIAEgBiABKABEczYCRCABIAUgASgASHM2AkggASAEIAEoAExzNgJMIAJBoARqJAALvQkBEX8jAEGgAmsiAyQAIAEoAAQhECABKAAIIREgASgADCESIAAoAAQhCyAAKAAIIQwgACgADCENIAEoAAAhEyACQfAAaiIBIAAoAAAiDkGAgoQQcyIANgIAIAJB4ABqIgYgDkHb++CoBXM2AgAgAkHQAGoiByAANgIAIAJBQGsiACAOIBNzIgU2AgAgAkKgosSRtK6tlF03AjggAkEwaiIIQtv74KjVzfCXcTcCACACQpXE3MmFsvq84gA3AiggAkEgaiIJQoCChJCwoIGEDTcCACACQqCixJG0rq2UXTcCGCACQRBqIgpC2/vgqNXN8JdxNwIAIAIgBTYCACACIA1BkNPnkwZzIgU2AnwgAiAMQZXE3MkFcyIENgJ4IAIgC0GDiqDoAHMiDzYCdCACIA1B8+qi6X1zNgJsIAIgDEGgosSRBHM2AmggAiALQe2Ev4l/czYCZCACIAU2AlwgAiAENgJYIAIgDzYCVCACIA0gEnMiBTYCTCACIAwgEXMiBDYCSCACIAsgEHMiDzYCRCACIAU2AgwgAiAENgIIIAIgDzYCBEEAIQUDQCADIAEpAgg3A5gCIAMgASkCADcDkAIgAyAGKQIINwP4ASADIAYpAgA3A/ABIAMgASkCCDcD6AEgAyABKQIANwPgASADQYACaiIEIANB8AFqIANB4AFqEAcgASADKQKIAjcCCCABIAMpAoACNwIAIAMgBykCCDcD2AEgAyAHKQIANwPQASADIAYpAgg3A8gBIAMgBikCADcDwAEgBCADQdABaiADQcABahAHIAYgAykCiAI3AgggBiADKQKAAjcCACADIAApAgg3A7gBIAMgACkCADcDsAEgAyAHKQIINwOoASADIAcpAgA3A6ABIAQgA0GwAWogA0GgAWoQByAHIAMpAogCNwIIIAcgAykCgAI3AgAgAyAIKQIINwOYASADIAgpAgA3A5ABIAMgACkCCDcDiAEgAyAAKQIANwOAASAEIANBkAFqIANBgAFqEAcgACADKQKIAjcCCCAAIAMpAoACNwIAIAMgCSkCCDcDeCADIAkpAgA3A3AgAyAIKQIINwNoIAMgCCkCADcDYCAEIANB8ABqIANB4ABqEAcgCCADKQKIAjcCCCAIIAMpAoACNwIAIAMgCikCCDcDWCADIAopAgA3A1AgAyAJKQIINwNIIAMgCSkCADcDQCAEIANB0ABqIANBQGsQByAJIAMpAogCNwIIIAkgAykCgAI3AgAgAyACKQIINwM4IAMgAikCADcDMCADIAopAgg3AyggAyAKKQIANwMgIAQgA0EwaiADQSBqEAcgCiADKQKIAjcCCCAKIAMpAoACNwIAIAMgAykDmAI3AxggAyADKQOQAjcDECADIAIpAgg3AwggAyACKQIANwMAIAQgA0EQaiADEAcgAiADKQKIAjcCCCACIAMpAoACNwIAIAIgAigADCASczYCDCACIAIoAAggEXM2AgggAiACKAAEIBBzNgIEIAIgAigAACATczYCACAAIAAoAAAgDnM2AgAgAiACKABEIAtzNgJEIAIgAigASCAMczYCSCACIAIoAEwgDXM2AkwgBUEBaiIFQQpHDQALIANBoAJqJAALzwQBCX8jAEGAAWsiAyQAIABBATYCACAAQgA3AgQgAEIANwIMIABCADcCFCAAQgA3AhwgAEKAgICAEDcCJCAAQSxqQQBBzAAQCRogACABQcAHbEGAFWoiASACIAJBH3UgAnFBAXRrIgRBAXNB/wFxQQFrQR92EBUgACABQfgAaiAEQQJzQf8BcUEBa0EfdhAVIAAgAUHwAWogBEEDc0H/AXFBAWtBH3YQFSAAIAFB6AJqIARBBHNB/wFxQQFrQR92EBUgACABQeADaiAEQQVzQf8BcUEBa0EfdhAVIAAgAUHYBGogBEEGc0H/AXFBAWtBH3YQFSAAIAFB0AVqIARBB3NB/wFxQQFrQR92EBUgACABQcgGaiAEQQhzQf8BcUEBa0EfdhAVIAMgACkCSDcDKCADIABBQGspAgA3AyAgAyAAKQI4NwMYIAMgACkCMDcDECADIAApAig3AwggAyAAKQIINwM4IANBQGsgACkCEDcDACADIAApAhg3A0ggAyAAKQIgNwNQIAMgACkCADcDMCAAKAJUIQEgACgCWCEEIAAoAlwhBSAAKAJgIQYgACgCZCEHIAAoAmghCCAAKAJsIQkgACgCcCEKIAAoAlAhCyADQQAgACgCdGs2AnwgA0EAIAprNgJ4IANBACAJazYCdCADQQAgCGs2AnAgA0EAIAdrNgJsIANBACAGazYCaCADQQAgBWs2AmQgA0EAIARrNgJgIANBACABazYCXCADQQAgC2s2AlggACADQQhqIAJBgAFxQQd2EBUgA0GAAWokAAvwCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgC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BSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSAFIAIgBRAGIAIgBRAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAiAFEAYgBCACEAVBASECA0AgBCAEEAUgAkEBaiICQeQARw0ACyAEQTBqIgIgBCACEAYgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgBEHgAGoiBSACIAUQBiAFIAUQBSAFIAUQBSAAIAUgABAGIARBkAFqJAAgACAAIAcQBiAAIAAgCBAGIANB4ABqIgIgABAFIAIgAiAGEAYgAyADKAKEASICIBRrNgJUIAMgAygCgAEiBCATazYCUCADIAMoAnwiBSASazYCTCADIAMoAngiBiARazYCSCADIAMoAnQiByAQazYCRCADIAMoAnAiCCAPazYCQCADIAMoAmwiFSAOazYCPCADIAMoAmgiFiANazYCOCAD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QUBrIQAgAUJAfCIBQj9WDQALIAFQDQELQQAhAiAEQSBqIARB4ABqIAQQLyABpyIGQQNxIQdBACEDIAFCBFoEQCAGQTxxIQhBACEGA0AgACADaiAEQSBqIgkgA2otAAA6AAAgACADQQFyIgVqIAUgCWotAAA6AAAgACADQQJyIgVqIARBIGogBWotAAA6AAAgACADQQNyIgVqIARBIGogBWotAAA6AAAgA0EEaiEDIAZBBGoiBiAIRw0ACwsgB0UNAANAIAAgA2ogBEEgaiADai0AADoAACADQQFqIQMgAkEBaiICIAdHDQALCyAEQSBqQcAAEAggBEEgEAgLIARB8ABqJABBAAuGBgEUfyMAQbACayICJAAgACABLQAAOgAAIAAgAS0AAToAASAAIAEtAAI6AAIgACABLQADOgADIAAgAS0ABDoABCAAIAEtAAU6AAUgACABLQAGOgAGIAAgAS0ABzoAByAAIAEtAAg6AAggACABLQAJOgAJIAAgAS0ACjoACiAAIAEtAAs6AAsgACABLQAMOgAMIAAgAS0ADToADSAAIAEtAA46AA4gACABLQAPOgAPIAAgAS0AEDoAECAAIAEtABE6ABEgACABLQASOgASIAAgAS0AEzoAEyAAIAEtABQ6ABQgACABLQAVOgAVIAAgAS0AFjoAFiAAIAEtABc6ABcgACABLQAYOgAYIAAgAS0AGToAGSAAIAEtABo6ABogACABLQAbOgAbIAAgAS0AHDoAHCAAIAEtAB06AB0gACABLQAeOgAeIAEtAB8hASAAIAAtAABB+AFxOgAAIAAgAUE/cUHAAHI6AB8gAkEwaiAAEDEgAigCgAEhASACKAJYIQMgAigChAEhBCACKAJcIQUgAigCiAEhBiACKAJgIQcgAigCjAEhCCACKAJkIQkgAigCkAEhCiACKAJoIQsgAigClAEhDCACKAJsIQ0gAigCmAEhDiACKAJwIQ8gAigCnAEhECACKAJ0IREgAigCoAEhEiACKAJ4IRMgAiACKAJ8IhQgAigCpAEiFWo2AqQCIAIgEiATajYCoAIgAiAQIBFqNgKcAiACIA4gD2o2ApgCIAIgDCANajYClAIgAiAKIAtqNgKQAiACIAggCWo2AowCIAIgBiAHajYCiAIgAiAEIAVqNgKEAiACIAEgA2o2AoACIAIgFSAUazYC9AEgAiASIBNrNgLwASACIBAgEWs2AuwBIAIgDiAPazYC6AEgAiAMIA1rNgLkASACIAogC2s2AuABIAIgCCAJazYC3AEgAiAGIAdrNgLYASACIAQgBWs2AtQBIAIgASADazYC0AEgAkHQAWoiASABEDMgAiACQYACaiABEAYgACACEBYgAkGwAmokAEEAC+scAj5/DH4jAEHwAmsiAyQAA0AgAiAGai0AACIEIAZBgIcCaiIJLQAAcyAHciEHIAQgCS0AwAFzIAVyIQUgBCAJLQCgAXMgDHIhDCAEIAktAIABcyAIciEIIAQgCS0AYHMgDXIhDSAEIAlBQGstAABzIAtyIQsgBCAJLQAgcyAKciEKIAZBAWoiBkEfRw0AC0F/IQkgAi0AH0H/AHEiBCAKckH/AXFBAWsgBCAHckH/AXFBAWtyIAQgC3JB/wFxQQFrciAEQdcAcyANckH/AXFBAWtyIARB/wBzIgQgCHJB/wFxQQFrciAEIAxyQf8BcUEBa3IgBCAFckH/AXFBAWtyQYACcUUEQCADIAEpABg3A+gCIAMgASkAEDcD4AIgAyABKQAAIkM3A9ACIAMgASkACDcD2AIgAyBDp0H4AXE6ANACIAMgAy0A7wJBP3FBwAByOgDvAiADQaACaiACEGAgA0IANwKEAiADQgA3AowCIANBADYClAIgA0IANwPQASADQgA3A9gBIANCADcD4AEgAyADKQOwAjcDoAEgAyADKQO4AjcDqAEgAyADKQPAAjcDsAEgA0IANwL0ASADQQE2AvABIANCADcC/AEgA0IANwPAASADQgA3A8gBIAMgAykDoAI3A5ABIAMgAykDqAI3A5gBIANCADcCdCADQgA3AnwgA0EANgKEASADQgA3AmQgA0EBNgJgIANCADcCbEH+ASECQQAhBANAIAMoApQCIQkgAygCtAEhBiADKAJgIQcgAygCwAEhCiADKAKQASELIAMoAvABIQ0gAygCZCEIIAMoAsQBIQwgAygClAEhBSADKAL0ASEQIAMoAmghDiADKALIASERIAMoApgBIRIgAygC+AEhEyADKAJsIQ8gAygCzAEhFCADKAKcASEVIAMoAvwBIRcgAygCcCEYIAMoAtABIRwgAygCoAEhHSADKAKAAiEeIAMoAnQhGSADKALUASEfIAMoAqQBISAgAygChAIhISADKAJ4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/w9WDQAgC0Lf////D1YNACAAIAIgDKcgBUEgIAYgC6cgCSAKQbybAigCABEIACEBCyABC4ABAQN+IAetIAitQiCGhCEMQX8hAgJAIAStIAWtQiCGhCILQiBUDQAgC0IgfSINQt////8PVg0AIAxC3////w9WDQAgACADIA2nIAMgC6dqQSBrQSAgBiAMpyAJIApBvJsCKAIAEQgAIQILIAEEQCABQgAgC0IgfSACGzcDAAsgAgtgAQJ+IAStIAWtQiCGhCEMIAetIAitQiCGhCENIAIEQCACQiA3AwALIA1C4P///w9UIAxC3////w9YcUUEQBALAAsgACABQSAgAyAMpyAGIA2nIAogC0G4mwIoAgARCAALdgECfgJ/IAatIAetQiCGhCELAkAgA60gBK1CIIaEIgxC3////w9WDQAgC0Lg////D1oNACAAIAAgDKciA2pBICACIAMgBSALpyAJIApBuJsCKAIAEQgAIQAgAQRAIAFCACAMQiB8IAAbNwMACyAADAELEAsACwtZAQJ+IAetIAitQiCGhCELQX8hAQJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC3////w9WDQAgACACIAynIAVBICAGIAunIAkgCkG0mwIoAgARCAAhAQsgAQuAAQEDfiAHrSAIrUIghoQhDEF/IQICQCAErSAFrUIghoQiC0IgVA0AIAtCIH0iDULf////D1YNACAMQt////8PVg0AIAAgAyANpyADIAunakEga0EgIAYgDKcgCSAKQbSbAigCABEIACECCyABBEAgAUIAIAtCIH0gAhs3AwALIAILYAECfiAErSAFrUIghoQhDCAHrSAIrUIghoQhDSACBEAgAkIgNwMACyANQuD///8PVCAMQt////8PWHFFBEAQCwALIAAgAUEgIAMgDKcgBiANpyAKIAtBsJsCKAIAEQgAC3YBAn4CfyAGrSAHrUIghoQhCwJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC4P///w9aDQAgACAAIAynIgNqQSAgAiADIAUgC6cgCSAKQbCbAigCABEIACEAIAEEQCABQgAgDEIgfCAAGzcDAAsgAAwBCxALAAsLBABBMAv9AQEFfyMAIgUhCSAFQYAEa0FAcSIFJAAgACABIAAbIgcEQEF/IQYgBUHgAGoiCCADIAQQMEUEQCABIAAg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ASABLQAAQfgBcToAACABIAEtAB9BP3FBwAByOgAfIAJBIGoiAyABEDEgACADEDIgASACKQMYNwAYIAEgAikDEDcAECABIAIpAwg3AAggASACKQMANwAAIAApAAghBCAAKQAQIQUgACkAACEGIAEgACkAGDcAOCABIAU3ADAgASAENwAoIAEgBjcAICACQSAQCCACQcABaiQAQQALtgECAX8DfiMAQaABayIDJAAgASACQiAQIBogASABLQAAQfgBcToAACABIAEtAB9BP3FBwAByOgAfIAMgARAxIAAgAxAyIAIpAAghBCACKQAQIQUgAikAACEGIAEgAikAGDcAGCABIAU3ABAgASAENwAIIAEgBjcAACAAKQAIIQQgACkAECEFIAApAAAhBiABIAApABg3ADggASAFNwAwIAEgBDcAKCABIAY3ACAgA0GgAWokAEEACwUAQb9/C20BAX8jAEFAaiICJAAgAiABQiAQIBogAiACLQAAQfgBcToAACACIAItAB9BP3FBwAByOgAfIAAgAikDEDcAECAAIAIpAwg3AAggACACKQMANwAAIAAgAikDGDcAGCACQcAAEAggAkFAayQAQQALrRQCEX8ofiMAQYACayIDJABBfyESAkAgARA/DQAgA0HgAGoiBCABEF8NACMAQYAQayICJAAgAkGABWoiASAEEA4gAiAEKQIgNwPgAiACIAQpAhg3A9gCIAIgBCkCEDcD0AIgAiAEKQIINwPIAiACIAQpAgA3A8ACIAIgBCkCMDcD8AIgAiAEKQI4NwP4AiACIARBQGspAgA3A4ADIAIgBCkCSDcDiAMgAiAEKQIoNwPoAiACIAQpAlg3A5gDIAIgBCkCYDcDoAMgAiAEKQJoNwOoAyACIAQpAnA3A7ADIAIgBCkCUDcDkAMgAkHgA2oiBSACQcACaiIJEBkgAkGgAWoiBCAFIAJB2ARqIgYQBiACQcgBaiACQYgEaiIHIAJBsARqIggQBiACQfABaiAIIAYQBiACQZgCaiAFIAcQBiAFIAQgARAPIAkgBSAGEAYgAkHoAmoiCiAHIAgQBiACQZADaiILIAggBhAGIAJBuANqIgwgBSAHEAYgAkGgBmoiASAJEA4gBSAEIAEQDyAJIAUgBhAGIAogByAIEAYgCyAIIAYQBiAMIAUgBxAGIAJBwAdqIgEgCRAOIAUg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5cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/AEGgEwsBAQBBwBMLsAEm6JWPwrInsEXD9Iny75jw1d+sBdPGMzmxOAKIbVP8BccXanA9TdhPujwLdg0QZw8qIFP6LDnMxk7H/XeSrAN67P///////////////////////////////////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/7dP1XBpjEljWnPei3vneFABB/xQL/PABEIU7jAG98ST/+CXDAWDcNwC3TD7/w0I9ADJMpAHhpEz/TD2j/3U+HwBRkUD/dkEOAKJz1v8Gii4AfOb0/wqKjwA0GsIAuPRMAIGPKQG+9BP/e6p6/2KBRAB51ZMAVmUe/6FnmwCMWUP/7+W+AUMLtQDG8In+7kW8/+pxPP8l/zn/RbK2/oDQswB2Gn3+AwfW//EyTf9Vy8X/04f6/xkwZP+71bT+EVhpAFPRngEFc2IABK48/qs3bv/ZtRH/FLyqAJKcZv5X1q7/cnqbAeksqgB/CO8B1uzqAK8F2wAxaj3/BkLQ/wJqbv9R6hP/12vA/0OX7gATKmz/5VVxATJEh/8RagkAMmcB/1ABqAEjmB7/EKi5AThZ6P9l0vwAKfpHAMyqT/8OLu//UE3vAL3WS/8RjfkAJlBM/75VdQBW5KoAnNjQAcPPpP+WQkz/r+EQ/41QYgFM2/IAxqJyAC7a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////////////////f+3///////////////////////////////////////9/7v///////////////////////////////////////39MaWJzb2RpdW1EUkcAAAAACMm882fmCWo7p8qEha5nuyv4lP5y82488TYdXzr1T6XRguatf1IOUR9sPiuMaAWba71B+6vZgx95IX4TGc3gWyKuKNeYL4pCzWXvI5FEN3EvO03sz/vAtbzbiYGl27XpOLVI81vCVjkZ0AW28RHxWZtPGa+kgj+SGIFt2tVeHKtCAgOjmKoH2L5vcEUBW4MSjLLkTr6FMSTitP/Vw30MVW+Je/J0Xb5ysZYWO/6x3oA1Esclpwbcm5Qmac908ZvB0krxnsFpm+TjJU84hke+77XVjIvGncEPZZysd8yhDCR1AitZbyzpLYPkpm6qhHRK1PtBvdypsFy1UxGD2oj5dqvfZu5SUT6YEDK0LW3GMag/IfuYyCcDsOQO777Hf1m/wo+oPfML4MYlpwqTR5Gn1W+CA+BRY8oGcG4OCmcpKRT8L9JGhQq3JybJJlw4IRsu7SrEWvxtLE3fs5WdEw04U95jr4tUcwplqLJ3PLsKanbmru1HLsnCgTs1ghSFLHKSZAPxTKHov6IBMEK8S2YaqJGX+NBwi0vCML5UBqNRbMcYUu/WGeiS0RCpZVUkBpnWKiBxV4U1DvS40bsycKBqEMjQ0rgWwaQZU6tBUQhsNx6Z647fTHdIJ6hIm+G1vLA0Y1rJxbMMHDnLikHjSqrYTnPjY3dPypxbo7iy1vNvLmj8su9d7oKPdGAvF0NvY6V4cqvwoRR4yITsOWQaCALHjCgeYyP6/76Q6b2C3utsUKQVecay96P5vitTcuPyeHHGnGEm6s4+J8oHwsAhx7iG0R7r4M3WfdrqeNFu7n9PffW6bxdyqmfwBqaYyKLFfWMKrg35vgSYPxEbRxwTNQtxG4R9BCP1d9sokyTHQHuryjK8vskVCr6ePEwNEJzEZx1DtkI+y77UxUwqfmX8nCl/Wez61jqrb8tfF1hHSowZRGyAAEHAjwILoQJn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gW5gvikKRRDdxz/vAtaXbtelbwlY58RHxWaSCP5LVXhyrmKoH2AFbgxK+hTEkw30MVXRdvnL+sd6Apwbcm3Txm8HBaZvkhke+78adwQ/MoQwkbyzpLaqEdErcqbBc2oj5dlJRPphtxjGoyCcDsMd/Wb/zC+DGR5Gn1VFjygZnKSkUhQq3JzghGy78bSxNEw04U1RzCmW7Cmp2LsnCgYUscpKh6L+iS2YaqHCLS8KjUWzHGeiS0SQGmdaFNQ70cKBqEBbBpBkIbDceTHdIJ7W8sDSzDBw5SqrYTk/KnFvzby5o7oKPdG9jpXgUeMiECALHjPr/vpDrbFCk96P5vvJ4ccaAAEGwkgILIVNpZ0VkMjU1MTkgbm8gRWQyNTUxOSBjb2xsaXNpb25zAQBBgJMCCyUgkwEAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAEGwkwILnQjGY2Ol+Hx8hO53d5n2e3uN//LyDdZra73eb2+xkcXFVGAwMFACAQEDzmdnqVYrK33n/v4ZtdfXYk2rq+bsdnaaj8rKRR+Cgp2JyclA+n19h+/6+hWyWVnrjkdHyfvw8AtBra3ss9TUZ1+iov1Fr6/qI5ycv1OkpPfkcnKWm8DAW3W3t8Lh/f0cPZOTrkwmJmpsNjZafj8/QfX39wKDzMxPaDQ0XFGlpfTR5eU0+fHxCOJxcZOr2NhzYjExUyoVFT8IBAQMlcfHUkYjI2Wdw8NeMBgYKDeWlqEKBQUPL5qatQ4HBwkkEhI2G4CAm9/i4j3N6+smTicnaX+yss3qdXWfEgkJGx2Dg55YLCx0NBoaLjYbGy3cbm6ytFpa7lugoPukUlL2djs7TbfW1mF9s7POUikpe93j4z5eLy9xE4SEl6ZTU/W50dFoAAAAAMHt7SxAICBg4/z8H3mxsci2W1vt1Gpqvo3Ly0Znvr7Zcjk5S5RKSt6YTEzUsFhY6IXPz0q70NBrxe/vKk+qquXt+/sWhkNDxZpNTddmMzNVEYWFlIpFRc/p+fkQBAICBv5/f4GgUFDweDw8RCWfn7pLqKjjolFR812jo/6AQEDABY+Pij+Skq0hnZ28cDg4SPH19QRjvLzfd7a2wa/a2nVCISFjIBAQMOX//xr98/MOv9LSbYHNzUwYDAwUJhMTNcPs7C++X1/hNZeXoohERMwuFxc5k8TEV1Wnp/L8fn6Cej09R8hkZKy6XV3nMhkZK+Zzc5XAYGCgGYGBmJ5PT9Gj3Nx/RCIiZlQqKn47kJCrC4iIg4xGRsrH7u4pa7i40ygUFDyn3t55vF5e4hYLCx2t29t22+DgO2QyMlZ0OjpOFAoKHpJJSdsMBgYKSCQkbLhcXOSfwsJdvdPTbkOsrO/EYmKmOZGRqDGVlaTT5OQ38nl5i9Xn5zKLyMhDbjc3WdptbbcBjY2MsdXVZJxOTtJJqang2GxstKxWVvrz9PQHz+rqJcplZa/0enqOR66u6RAICBhvurrV8Hh4iEolJW9cLi5yOBwcJFempvFztLTHl8bGUcvo6COh3d186HR0nD4fHyGWS0vdYb293A2Li4YPioqF4HBwkHw+PkJxtbXEzGZmqpBISNgGAwMF9/b2ARwODhLCYWGjajU1X65XV/lpubnQF4aGkZnBwVg6HR0nJ56eudnh4Tjr+PgTK5iYsyIRETPSaWm7qdnZcAeOjokzlJSnLZubtjweHiIVh4eSyenpIIfOzkmqVVX/UCgoeKXf33oDjIyPWaGh+AmJiYAaDQ0XZb+/2tfm5jGEQkLG0GhouIJBQcMpmZmwWi0tdx4PDxF7sLDLqFRU/G27u9YsFhY6CgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABE="),A=g,Y(F).then((g=>WebAssembly.instantiate(g,A))).then((function(A){I(A.instance)}),(A=>{y(`failed to asynchronously prepare wasm: ${A}`),M(A)})),{}}();function T(){function A(){J||(J=!0,e.calledRun=!0,w||(G(l),e.onRuntimeInitialized?.(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)A=e.postRun.shift(),u.unshift(A);var A;G(u)}()))}v>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)A=e.preRun.shift(),d.unshift(A);var A;G(d)}(),v>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),A()}),1)):A()))}if(e._crypto_aead_aegis128l_keybytes=()=>(e._crypto_aead_aegis128l_keybytes=L.g)(),e._crypto_aead_aegis128l_nsecbytes=()=>(e._crypto_aead_aegis128l_nsecbytes=L.h)(),e._crypto_aead_aegis128l_npubbytes=()=>(e._crypto_aead_aegis128l_npubbytes=L.i)(),e._crypto_aead_aegis128l_abytes=()=>(e._crypto_aead_aegis128l_abytes=L.j)(),e._crypto_aead_aegis128l_messagebytes_max=()=>(e._crypto_aead_aegis128l_messagebytes_max=L.k)(),e._crypto_aead_aegis128l_keygen=A=>(e._crypto_aead_aegis128l_keygen=L.l)(A),e._crypto_aead_aegis128l_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_encrypt=L.m)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis128l_encrypt_detached=L.n)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis128l_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt=L.o)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt_detached=L.p)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_keybytes=()=>(e._crypto_aead_aegis256_keybytes=L.q)(),e._crypto_aead_aegis256_nsecbytes=()=>(e._crypto_aead_aegis256_nsecbytes=L.r)(),e._crypto_aead_aegis256_npubbytes=()=>(e._crypto_aead_aegis256_npubbytes=L.s)(),e._crypto_aead_aegis256_abytes=()=>(e._crypto_aead_aegis256_abytes=L.t)(),e._crypto_aead_aegis256_messagebytes_max=()=>(e._crypto_aead_aegis256_messagebytes_max=L.u)(),e._crypto_aead_aegis256_keygen=A=>(e._crypto_aead_aegis256_keygen=L.v)(A),e._crypto_aead_aegis256_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_encrypt=L.w)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis256_encrypt_detached=L.x)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis256_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt=L.y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt_detached=L.z)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aes256gcm_is_available=()=>(e._crypto_aead_aes256gcm_is_available=L.A)(),e._crypto_aead_chacha20poly1305_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_encrypt_detached=L.B)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_encrypt=L.C)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=L.D)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt=L.E)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt_detached=L.F)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt=L.G)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=L.H)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt=L.I)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_chacha20poly1305_ietf_keybytes=L.J)(),e._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_npubbytes=L.K)(),e._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_nsecbytes=L.L)(),e._crypto_aead_chacha20poly1305_ietf_abytes=()=>(e._crypto_aead_chacha20poly1305_ietf_abytes=L.M)(),e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=L.N)(),e._crypto_aead_chacha20poly1305_ietf_keygen=A=>(e._crypto_aead_chacha20poly1305_ietf_keygen=L.O)(A),e._crypto_aead_chacha20poly1305_keybytes=()=>(e._crypto_aead_chacha20poly1305_keybytes=L.P)(),e._crypto_aead_chacha20poly1305_npubbytes=()=>(e._crypto_aead_chacha20poly1305_npubbytes=L.Q)(),e._crypto_aead_chacha20poly1305_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_nsecbytes=L.R)(),e._crypto_aead_chacha20poly1305_abytes=()=>(e._crypto_aead_chacha20poly1305_abytes=L.S)(),e._crypto_aead_chacha20poly1305_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_messagebytes_max=L.T)(),e._crypto_aead_chacha20poly1305_keygen=A=>(e._crypto_aead_chacha20poly1305_keygen=L.U)(A),e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=L.V)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_xchacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt=L.W)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=L.X)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt=L.Y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_keybytes=L.Z)(),e._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_npubbytes=L._)(),e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=L.$)(),e._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_abytes=L.aa)(),e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=L.ba)(),e._crypto_aead_xchacha20poly1305_ietf_keygen=A=>(e._crypto_aead_xchacha20poly1305_ietf_keygen=L.ca)(A),e._crypto_auth_bytes=()=>(e._crypto_auth_bytes=L.da)(),e._crypto_auth_keybytes=()=>(e._crypto_auth_keybytes=L.ea)(),e._crypto_auth=(A,g,I,C,B)=>(e._crypto_auth=L.fa)(A,g,I,C,B),e._crypto_auth_verify=(A,g,I,C,B)=>(e._crypto_auth_verify=L.ga)(A,g,I,C,B),e._crypto_auth_keygen=A=>(e._crypto_auth_keygen=L.ha)(A),e._crypto_box_seedbytes=()=>(e._crypto_box_seedbytes=L.ia)(),e._crypto_box_publickeybytes=()=>(e._crypto_box_publickeybytes=L.ja)(),e._crypto_box_secretkeybytes=()=>(e._crypto_box_secretkeybytes=L.ka)(),e._crypto_box_beforenmbytes=()=>(e._crypto_box_beforenmbytes=L.la)(),e._crypto_box_noncebytes=()=>(e._crypto_box_noncebytes=L.ma)(),e._crypto_box_macbytes=()=>(e._crypto_box_macbytes=L.na)(),e._crypto_box_messagebytes_max=()=>(e._crypto_box_messagebytes_max=L.oa)(),e._crypto_box_seed_keypair=(A,g,I)=>(e._crypto_box_seed_keypair=L.pa)(A,g,I),e._crypto_box_keypair=(A,g)=>(e._crypto_box_keypair=L.qa)(A,g),e._crypto_box_beforenm=(A,g,I)=>(e._crypto_box_beforenm=L.ra)(A,g,I),e._crypto_box_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_detached_afternm=L.sa)(A,g,I,C,B,a,i),e._crypto_box_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_detached=L.ta)(A,g,I,C,B,a,i,r),e._crypto_box_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_easy_afternm=L.ua)(A,g,I,C,B,a),e._crypto_box_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_easy=L.va)(A,g,I,C,B,a,i),e._crypto_box_open_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_open_detached_afternm=L.wa)(A,g,I,C,B,a,i),e._crypto_box_open_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_open_detached=L.xa)(A,g,I,C,B,a,i,r),e._crypto_box_open_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_open_easy_afternm=L.ya)(A,g,I,C,B,a),e._crypto_box_open_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_open_easy=L.za)(A,g,I,C,B,a,i),e._crypto_box_seal=(A,g,I,C,B)=>(e._crypto_box_seal=L.Aa)(A,g,I,C,B),e._crypto_box_seal_open=(A,g,I,C,B,a)=>(e._crypto_box_seal_open=L.Ba)(A,g,I,C,B,a),e._crypto_box_sealbytes=()=>(e._crypto_box_sealbytes=L.Ca)(),e._crypto_generichash_bytes_min=()=>(e._crypto_generichash_bytes_min=L.Da)(),e._crypto_generichash_bytes_max=()=>(e._crypto_generichash_bytes_max=L.Ea)(),e._crypto_generichash_bytes=()=>(e._crypto_generichash_bytes=L.Fa)(),e._crypto_generichash_keybytes_min=()=>(e._crypto_generichash_keybytes_min=L.Ga)(),e._crypto_generichash_keybytes_max=()=>(e._crypto_generichash_keybytes_max=L.Ha)(),e._crypto_generichash_keybytes=()=>(e._crypto_generichash_keybytes=L.Ia)(),e._crypto_generichash_statebytes=()=>(e._crypto_generichash_statebytes=L.Ja)(),e._crypto_generichash=(A,g,I,C,B,a,i)=>(e._crypto_generichash=L.Ka)(A,g,I,C,B,a,i),e._crypto_generichash_init=(A,g,I,C)=>(e._crypto_generichash_init=L.La)(A,g,I,C),e._crypto_generichash_update=(A,g,I,C)=>(e._crypto_generichash_update=L.Ma)(A,g,I,C),e._crypto_generichash_final=(A,g,I)=>(e._crypto_generichash_final=L.Na)(A,g,I),e._crypto_generichash_keygen=A=>(e._crypto_generichash_keygen=L.Oa)(A),e._crypto_hash_bytes=()=>(e._crypto_hash_bytes=L.Pa)(),e._crypto_hash=(A,g,I,C)=>(e._crypto_hash=L.Qa)(A,g,I,C),e._crypto_kdf_bytes_min=()=>(e._crypto_kdf_bytes_min=L.Ra)(),e._crypto_kdf_bytes_max=()=>(e._crypto_kdf_bytes_max=L.Sa)(),e._crypto_kdf_contextbytes=()=>(e._crypto_kdf_contextbytes=L.Ta)(),e._crypto_kdf_keybytes=()=>(e._crypto_kdf_keybytes=L.Ua)(),e._crypto_kdf_derive_from_key=(A,g,I,C,B,a)=>(e._crypto_kdf_derive_from_key=L.Va)(A,g,I,C,B,a),e._crypto_kdf_keygen=A=>(e._crypto_kdf_keygen=L.Wa)(A),e._crypto_kdf_hkdf_sha256_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_init=L.Xa)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_update=L.Ya)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha256_extract_final=L.Za)(A,g),e._crypto_kdf_hkdf_sha256_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_extract=L._a)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keygen=A=>(e._crypto_kdf_hkdf_sha256_keygen=L.$a)(A),e._crypto_kdf_hkdf_sha256_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_expand=L.ab)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keybytes=()=>(e._crypto_kdf_hkdf_sha256_keybytes=L.bb)(),e._crypto_kdf_hkdf_sha256_bytes_min=()=>(e._crypto_kdf_hkdf_sha256_bytes_min=L.cb)(),e._crypto_kdf_hkdf_sha256_bytes_max=()=>(e._crypto_kdf_hkdf_sha256_bytes_max=L.db)(),e._crypto_kdf_hkdf_sha256_statebytes=()=>(e._crypto_kdf_hkdf_sha256_statebytes=L.eb)(),e._crypto_kdf_hkdf_sha512_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_init=L.fb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_update=L.gb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha512_extract_final=L.hb)(A,g),e._crypto_kdf_hkdf_sha512_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_extract=L.ib)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keygen=A=>(e._crypto_kdf_hkdf_sha512_keygen=L.jb)(A),e._crypto_kdf_hkdf_sha512_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_expand=L.kb)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keybytes=()=>(e._crypto_kdf_hkdf_sha512_keybytes=L.lb)(),e._crypto_kdf_hkdf_sha512_bytes_min=()=>(e._crypto_kdf_hkdf_sha512_bytes_min=L.mb)(),e._crypto_kdf_hkdf_sha512_bytes_max=()=>(e._crypto_kdf_hkdf_sha512_bytes_max=L.nb)(),e._crypto_kdf_hkdf_sha512_statebytes=()=>(e._crypto_kdf_hkdf_sha512_statebytes=L.ob)(),e._crypto_kx_seed_keypair=(A,g,I)=>(e._crypto_kx_seed_keypair=L.pb)(A,g,I),e._crypto_kx_keypair=(A,g)=>(e._crypto_kx_keypair=L.qb)(A,g),e._crypto_kx_client_session_keys=(A,g,I,C,B)=>(e._crypto_kx_client_session_keys=L.rb)(A,g,I,C,B),e._crypto_kx_server_session_keys=(A,g,I,C,B)=>(e._crypto_kx_server_session_keys=L.sb)(A,g,I,C,B),e._crypto_kx_publickeybytes=()=>(e._crypto_kx_publickeybytes=L.tb)(),e._crypto_kx_secretkeybytes=()=>(e._crypto_kx_secretkeybytes=L.ub)(),e._crypto_kx_seedbytes=()=>(e._crypto_kx_seedbytes=L.vb)(),e._crypto_kx_sessionkeybytes=()=>(e._crypto_kx_sessionkeybytes=L.wb)(),e._crypto_scalarmult_base=(A,g)=>(e._crypto_scalarmult_base=L.xb)(A,g),e._crypto_scalarmult=(A,g,I)=>(e._crypto_scalarmult=L.yb)(A,g,I),e._crypto_scalarmult_bytes=()=>(e._crypto_scalarmult_bytes=L.zb)(),e._crypto_scalarmult_scalarbytes=()=>(e._crypto_scalarmult_scalarbytes=L.Ab)(),e._crypto_secretbox_keybytes=()=>(e._crypto_secretbox_keybytes=L.Bb)(),e._crypto_secretbox_noncebytes=()=>(e._crypto_secretbox_noncebytes=L.Cb)(),e._crypto_secretbox_macbytes=()=>(e._crypto_secretbox_macbytes=L.Db)(),e._crypto_secretbox_messagebytes_max=()=>(e._crypto_secretbox_messagebytes_max=L.Eb)(),e._crypto_secretbox_keygen=A=>(e._crypto_secretbox_keygen=L.Fb)(A),e._crypto_secretbox_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_detached=L.Gb)(A,g,I,C,B,a,i),e._crypto_secretbox_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_easy=L.Hb)(A,g,I,C,B,a),e._crypto_secretbox_open_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_open_detached=L.Ib)(A,g,I,C,B,a,i),e._crypto_secretbox_open_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_open_easy=L.Jb)(A,g,I,C,B,a),e._crypto_secretstream_xchacha20poly1305_keygen=A=>(e._crypto_secretstream_xchacha20poly1305_keygen=L.Kb)(A),e._crypto_secretstream_xchacha20poly1305_init_push=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_push=L.Lb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_init_pull=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_pull=L.Mb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_rekey=A=>(e._crypto_secretstream_xchacha20poly1305_rekey=L.Nb)(A),e._crypto_secretstream_xchacha20poly1305_push=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_push=L.Ob)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_pull=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_pull=L.Pb)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_statebytes=()=>(e._crypto_secretstream_xchacha20poly1305_statebytes=L.Qb)(),e._crypto_secretstream_xchacha20poly1305_abytes=()=>(e._crypto_secretstream_xchacha20poly1305_abytes=L.Rb)(),e._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(e._crypto_secretstream_xchacha20poly1305_headerbytes=L.Sb)(),e._crypto_secretstream_xchacha20poly1305_keybytes=()=>(e._crypto_secretstream_xchacha20poly1305_keybytes=L.Tb)(),e._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(e._crypto_secretstream_xchacha20poly1305_messagebytes_max=L.Ub)(),e._crypto_secretstream_xchacha20poly1305_tag_message=()=>(e._crypto_secretstream_xchacha20poly1305_tag_message=L.Vb)(),e._crypto_secretstream_xchacha20poly1305_tag_push=()=>(e._crypto_secretstream_xchacha20poly1305_tag_push=L.Wb)(),e._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(e._crypto_secretstream_xchacha20poly1305_tag_rekey=L.Xb)(),e._crypto_secretstream_xchacha20poly1305_tag_final=()=>(e._crypto_secretstream_xchacha20poly1305_tag_final=L.Yb)(),e._crypto_shorthash_bytes=()=>(e._crypto_shorthash_bytes=L.Zb)(),e._crypto_shorthash_keybytes=()=>(e._crypto_shorthash_keybytes=L._b)(),e._crypto_shorthash=(A,g,I,C,B)=>(e._crypto_shorthash=L.$b)(A,g,I,C,B),e._crypto_shorthash_keygen=A=>(e._crypto_shorthash_keygen=L.ac)(A),e._crypto_sign_statebytes=()=>(e._crypto_sign_statebytes=L.bc)(),e._crypto_sign_bytes=()=>(e._crypto_sign_bytes=L.cc)(),e._crypto_sign_seedbytes=()=>(e._crypto_sign_seedbytes=L.dc)(),e._crypto_sign_publickeybytes=()=>(e._crypto_sign_publickeybytes=L.ec)(),e._crypto_sign_secretkeybytes=()=>(e._crypto_sign_secretkeybytes=L.fc)(),e._crypto_sign_messagebytes_max=()=>(e._crypto_sign_messagebytes_max=L.gc)(),e._crypto_sign_seed_keypair=(A,g,I)=>(e._crypto_sign_seed_keypair=L.hc)(A,g,I),e._crypto_sign_keypair=(A,g)=>(e._crypto_sign_keypair=L.ic)(A,g),e._crypto_sign=(A,g,I,C,B,a)=>(e._crypto_sign=L.jc)(A,g,I,C,B,a),e._crypto_sign_open=(A,g,I,C,B,a)=>(e._crypto_sign_open=L.kc)(A,g,I,C,B,a),e._crypto_sign_detached=(A,g,I,C,B,a)=>(e._crypto_sign_detached=L.lc)(A,g,I,C,B,a),e._crypto_sign_verify_detached=(A,g,I,C,B)=>(e._crypto_sign_verify_detached=L.mc)(A,g,I,C,B),e._crypto_sign_init=A=>(e._crypto_sign_init=L.nc)(A),e._crypto_sign_update=(A,g,I,C)=>(e._crypto_sign_update=L.oc)(A,g,I,C),e._crypto_sign_final_create=(A,g,I,C)=>(e._crypto_sign_final_create=L.pc)(A,g,I,C),e._crypto_sign_final_verify=(A,g,I)=>(e._crypto_sign_final_verify=L.qc)(A,g,I),e._crypto_sign_ed25519_pk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_pk_to_curve25519=L.rc)(A,g),e._crypto_sign_ed25519_sk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_sk_to_curve25519=L.sc)(A,g),e._randombytes_random=()=>(e._randombytes_random=L.tc)(),e._randombytes_stir=()=>(e._randombytes_stir=L.uc)(),e._randombytes_uniform=A=>(e._randombytes_uniform=L.vc)(A),e._randombytes_buf=(A,g)=>(e._randombytes_buf=L.wc)(A,g),e._randombytes_buf_deterministic=(A,g,I)=>(e._randombytes_buf_deterministic=L.xc)(A,g,I),e._randombytes_seedbytes=()=>(e._randombytes_seedbytes=L.yc)(),e._randombytes_close=()=>(e._randombytes_close=L.zc)(),e._randombytes=(A,g,I)=>(e._randombytes=L.Ac)(A,g,I),e._sodium_bin2hex=(A,g,I,C)=>(e._sodium_bin2hex=L.Bc)(A,g,I,C),e._sodium_hex2bin=(A,g,I,C,B,a,i)=>(e._sodium_hex2bin=L.Cc)(A,g,I,C,B,a,i),e._sodium_base64_encoded_len=(A,g)=>(e._sodium_base64_encoded_len=L.Dc)(A,g),e._sodium_bin2base64=(A,g,I,C,B)=>(e._sodium_bin2base64=L.Ec)(A,g,I,C,B),e._sodium_base642bin=(A,g,I,C,B,a,i,r)=>(e._sodium_base642bin=L.Fc)(A,g,I,C,B,a,i,r),e._sodium_init=()=>(e._sodium_init=L.Gc)(),e._sodium_pad=(A,g,I,C,B)=>(e._sodium_pad=L.Hc)(A,g,I,C,B),e._sodium_unpad=(A,g,I,C)=>(e._sodium_unpad=L.Ic)(A,g,I,C),e._sodium_version_string=()=>(e._sodium_version_string=L.Jc)(),e._sodium_library_version_major=()=>(e._sodium_library_version_major=L.Kc)(),e._sodium_library_version_minor=()=>(e._sodium_library_version_minor=L.Lc)(),e._sodium_library_minimal=()=>(e._sodium_library_minimal=L.Mc)(),e._malloc=A=>(e._malloc=L.Nc)(A),e._free=A=>(e._free=L.Oc)(A),e.setValue=function(A,g,I="i8"){switch(I.endsWith("*")&&(I="*"),I){case"i1":case"i8":_[A]=g;break;case"i16":h[A>>1]=g;break;case"i32":s[A>>2]=g;break;case"i64":M("to do setValue(i64) use WASM_BIGINT");case"float":f[A>>2]=g;break;case"double":D[A>>3]=g;break;case"*":p[A>>2]=g;break;default:M(`invalid type for setValue: ${I}`)}},e.getValue=function(A,g="i8"){switch(g.endsWith("*")&&(g="*"),g){case"i1":case"i8":return _[A];case"i16":return h[A>>1];case"i32":return s[A>>2];case"i64":M("to do getValue(i64) use WASM_BIGINT");case"float":return f[A>>2];case"double":return D[A>>3];case"*":return p[A>>2];default:M(`invalid type for getValue: ${g}`)}},e.UTF8ToString=x,b=function A(){J||T(),J||(b=A)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();T()})).catch((function(){return C.useBackupModule()})),g}"function"==typeof define&&define.amd?define(["exports"],g):"object"==typeof exports&&"string"!=typeof exports.nodeName?g(exports):A.libsodium=g(A.libsodium_mod||(A.commonJsStrict={}))}(this),function(A){function g(A,g){"use strict";var I,C="uint8array",e=g.ready.then((function(){function C(){if(0!==I._sodium_init())throw new Error("libsodium was not correctly initialized.");for(var g=["crypto_aead_aegis128l_decrypt","crypto_aead_aegis128l_decrypt_detached","crypto_aead_aegis128l_encrypt","crypto_aead_aegis128l_encrypt_detached","crypto_aead_aegis128l_keygen","crypto_aead_aegis256_decrypt","crypto_aead_aegis256_decrypt_detached","crypto_aead_aegis256_encrypt","crypto_aead_aegis256_encrypt_detached","crypto_aead_aegis256_keygen","crypto_aead_chacha20poly1305_decrypt","crypto_aead_chacha20poly1305_decrypt_detached","crypto_aead_chacha20poly1305_encrypt","crypto_aead_chacha20poly1305_encrypt_detached","crypto_aead_chacha20poly1305_ietf_decrypt","crypto_aead_chacha20poly1305_ietf_decrypt_detached","crypto_aead_chacha20poly1305_ietf_encrypt","crypto_aead_chacha20poly1305_ietf_encrypt_detached","crypto_aead_chacha20poly1305_ietf_keygen","crypto_aead_chacha20poly1305_keygen","crypto_aead_xchacha20poly1305_ietf_decrypt","crypto_aead_xchacha20poly1305_ietf_decrypt_detached","crypto_aead_xchacha20poly1305_ietf_encrypt","crypto_aead_xchacha20poly1305_ietf_encrypt_detached","crypto_aead_xchacha20poly1305_ietf_keygen","crypto_auth","crypto_auth_hmacsha256","crypto_auth_hmacsha256_final","crypto_auth_hmacsha256_init","crypto_auth_hmacsha256_keygen","crypto_auth_hmacsha256_update","crypto_auth_hmacsha256_verify","crypto_auth_hmacsha512","crypto_auth_hmacsha512256","crypto_auth_hmacsha512256_final","crypto_auth_hmacsha512256_init","crypto_auth_hmacsha512256_keygen","crypto_auth_hmacsha512256_update","crypto_auth_hmacsha512256_verify","crypto_auth_hmacsha512_final","crypto_auth_hmacsha512_init","crypto_auth_hmacsha512_keygen","crypto_auth_hmacsha512_update","crypto_auth_hmacsha512_verify","crypto_auth_keygen","crypto_auth_verify","crypto_box_beforenm","crypto_box_curve25519xchacha20poly1305_beforenm","crypto_box_curve25519xchacha20poly1305_detached","crypto_box_curve25519xchacha20poly1305_detached_afternm","crypto_box_curve25519xchacha20poly1305_easy","crypto_box_curve25519xchacha20poly1305_easy_afternm","crypto_box_curve25519xchacha20poly1305_keypair","crypto_box_curve25519xchacha20poly1305_open_detached","crypto_box_curve25519xchacha20poly1305_open_detached_afternm","crypto_box_curve25519xchacha20poly1305_open_easy","crypto_box_curve25519xchacha20poly1305_open_easy_afternm","crypto_box_curve25519xchacha20poly1305_seal","crypto_box_curve25519xchacha20poly1305_seal_open","crypto_box_curve25519xchacha20poly1305_seed_keypair","crypto_box_detached","crypto_box_easy","crypto_box_easy_afternm","crypto_box_keypair","crypto_box_open_detached","crypto_box_open_easy","crypto_box_open_easy_afternm","crypto_box_seal","crypto_box_seal_open","crypto_box_seed_keypair","crypto_core_ed25519_add","crypto_core_ed25519_from_hash","crypto_core_ed25519_from_uniform","crypto_core_ed25519_is_valid_point","crypto_core_ed25519_random","crypto_core_ed25519_scalar_add","crypto_core_ed25519_scalar_complement","crypto_core_ed25519_scalar_invert","crypto_core_ed25519_scalar_mul","crypto_core_ed25519_scalar_negate","crypto_core_ed25519_scalar_random","crypto_core_ed25519_scalar_reduce","crypto_core_ed25519_scalar_sub","crypto_core_ed25519_sub","crypto_core_hchacha20","crypto_core_hsalsa20","crypto_core_ristretto255_add","crypto_core_ristretto255_from_hash","crypto_core_ristretto255_is_valid_point","crypto_core_ristretto255_random","crypto_core_ristretto255_scalar_add","crypto_core_ristretto255_scalar_complement","crypto_core_ristretto255_scalar_invert","crypto_core_ristretto255_scalar_mul","crypto_core_ristretto255_scalar_negate","crypto_core_ristretto255_scalar_random","crypto_core_ristretto255_scalar_reduce","crypto_core_ristretto255_scalar_sub","crypto_core_ristretto255_sub","crypto_generichash","crypto_generichash_blake2b_salt_personal","crypto_generichash_final","crypto_generichash_init","crypto_generichash_keygen","crypto_generichash_update","crypto_hash","crypto_hash_sha256","crypto_hash_sha256_final","crypto_hash_sha256_init","crypto_hash_sha256_update","crypto_hash_sha512","crypto_hash_sha512_final","crypto_hash_sha512_init","crypto_hash_sha512_update","crypto_kdf_derive_from_key","crypto_kdf_keygen","crypto_kx_client_session_keys","crypto_kx_keypair","crypto_kx_seed_keypair","crypto_kx_server_session_keys","crypto_onetimeauth","crypto_onetimeauth_final","crypto_onetimeauth_init","crypto_onetimeauth_keygen","crypto_onetimeauth_update","crypto_onetimeauth_verify","crypto_pwhash","crypto_pwhash_scryptsalsa208sha256","crypto_pwhash_scryptsalsa208sha256_ll","crypto_pwhash_scryptsalsa208sha256_str","crypto_pwhash_scryptsalsa208sha256_str_verify","crypto_pwhash_str","crypto_pwhash_str_needs_rehash","crypto_pwhash_str_verify","crypto_scalarmult","crypto_scalarmult_base","crypto_scalarmult_ed25519","crypto_scalarmult_ed25519_base","crypto_scalarmult_ed25519_base_noclamp","crypto_scalarmult_ed25519_noclamp","crypto_scalarmult_ristretto255","crypto_scalarmult_ristretto255_base","crypto_secretbox_detached","crypto_secretbox_easy","crypto_secretbox_keygen","crypto_secretbox_open_detached","crypto_secretbox_open_easy","crypto_secretstream_xchacha20poly1305_init_pull","crypto_secretstream_xchacha20poly1305_init_push","crypto_secretstream_xchacha20poly1305_keygen","crypto_secretstream_xchacha20poly1305_pull","crypto_secretstream_xchacha20poly1305_push","crypto_secretstream_xchacha20poly1305_rekey","crypto_shorthash","crypto_shorthash_keygen","crypto_shorthash_siphashx24","crypto_sign","crypto_sign_detached","crypto_sign_ed25519_pk_to_curve25519","crypto_sign_ed25519_sk_to_curve25519","crypto_sign_ed25519_sk_to_pk","crypto_sign_ed25519_sk_to_seed","crypto_sign_final_create","crypto_sign_final_verify","crypto_sign_init","crypto_sign_keypair","crypto_sign_open","crypto_sign_seed_keypair","crypto_sign_update","crypto_sign_verify_detached","crypto_stream_chacha20","crypto_stream_chacha20_ietf_xor","crypto_stream_chacha20_ietf_xor_ic","crypto_stream_chacha20_keygen","crypto_stream_chacha20_xor","crypto_stream_chacha20_xor_ic","crypto_stream_keygen","crypto_stream_xchacha20_keygen","crypto_stream_xchacha20_xor","crypto_stream_xchacha20_xor_ic","randombytes_buf","randombytes_buf_deterministic","randombytes_close","randombytes_random","randombytes_set_implementation","randombytes_stir","randombytes_uniform","sodium_version_string"],C=[w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J,U,x,m,P,R,L,T,q,z,j,X,O,V,Z,W,$,AA,gA,IA,CA,eA,BA,aA,iA,rA,tA,QA,oA,cA,EA,yA,_A,nA,hA,sA,pA,fA,DA,wA,kA,dA,lA,uA,vA,SA,bA,MA,FA,NA,KA,YA,HA,GA,JA,UA,xA,mA,PA,RA,LA,TA,qA,zA,jA,XA,OA,VA,ZA,WA,$A,Ag,gg,Ig,Cg,eg,Bg,ag,ig,rg,tg,Qg,og,cg,Eg,yg,_g,ng,hg,sg,pg,fg,Dg,wg,kg,dg,lg,ug,vg,Sg,bg,Mg,Fg,Ng,Kg,Yg,Hg,Gg,Jg,Ug,xg,mg,Pg,Rg,Lg,Tg,qg,zg,jg,Xg,Og,Vg,Zg,Wg,$g,AI,gI,II,CI,eI,BI,aI,iI,rI,tI,QI,oI,cI,EI,yI,_I,nI,hI,sI,pI,fI,DI,wI,kI,dI,lI,uI,vI,SI,bI,MI,FI,NI,KI,YI,HI,GI,JI,UI,xI,mI,PI,RI,LI,TI,qI,zI,jI],e=0;e<C.length;e++)"function"==typeof I["_"+g[e]]&&(A[g[e]]=C[e]);var B=["SODIUM_LIBRARY_VERSION_MAJOR","SODIUM_LIBRARY_VERSION_MINOR","crypto_aead_aegis128l_ABYTES","crypto_aead_aegis128l_KEYBYTES","crypto_aead_aegis128l_MESSAGEBYTES_MAX","crypto_aead_aegis128l_NPUBBYTES","crypto_aead_aegis128l_NSECBYTES","crypto_aead_aegis256_ABYTES","crypto_aead_aegis256_KEYBYTES","crypto_aead_aegis256_MESSAGEBYTES_MAX","crypto_aead_aegis256_NPUBBYTES","crypto_aead_aegis256_NSECBYTES","crypto_aead_aes256gcm_ABYTES","crypto_aead_aes256gcm_KEYBYTES","crypto_aead_aes256gcm_MESSAGEBYTES_MAX","crypto_aead_aes256gcm_NPUBBYTES","crypto_aead_aes256gcm_NSECBYTES","crypto_aead_chacha20poly1305_ABYTES","crypto_aead_chacha20poly1305_IETF_ABYTES","crypto_aead_chacha20poly1305_IETF_KEYBYTES","crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_IETF_NPUBBYTES","crypto_aead_chacha20poly1305_IETF_NSECBYTES","crypto_aead_chacha20poly1305_KEYBYTES","crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_NPUBBYTES","crypto_aead_chacha20poly1305_NSECBYTES","crypto_aead_chacha20poly1305_ietf_ABYTES","crypto_aead_chacha20poly1305_ietf_KEYBYTES","crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_ietf_NPUBBYTES","crypto_aead_chacha20poly1305_ietf_NSECBYTES","crypto_aead_xchacha20poly1305_IETF_ABYTES","crypto_aead_xchacha20poly1305_IETF_KEYBYTES","crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX","crypto_aead_xchacha20poly1305_IETF_NPUBBYTES","crypto_aead_xchacha20poly1305_IETF_NSECBYTES","crypto_aead_xchacha20poly1305_ietf_ABYTES","crypto_aead_xchacha20poly1305_ietf_KEYBYTES","crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX","crypto_aead_xchacha20poly1305_ietf_NPUBBYTES","crypto_aead_xchacha20poly1305_ietf_NSECBYTES","crypto_auth_BYTES","crypto_auth_KEYBYTES","crypto_auth_hmacsha256_BYTES","crypto_auth_hmacsha256_KEYBYTES","crypto_auth_hmacsha512256_BYTES","crypto_auth_hmacsha512256_KEYBYTES","crypto_auth_hmacsha512_BYTES","crypto_auth_hmacsha512_KEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_MACBYTES","crypto_box_MESSAGEBYTES_MAX","crypto_box_NONCEBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SEALBYTES","crypto_box_SECRETKEYBYTES","crypto_box_SEEDBYTES","crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES","crypto_box_curve25519xchacha20poly1305_MACBYTES","crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX","crypto_box_curve25519xchacha20poly1305_NONCEBYTES","crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES","crypto_box_curve25519xchacha20poly1305_SEALBYTES","crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES","crypto_box_curve25519xchacha20poly1305_SEEDBYTES","crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES","crypto_box_curve25519xsalsa20poly1305_MACBYTES","crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX","crypto_box_curve25519xsalsa20poly1305_NONCEBYTES","crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES","crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES","crypto_box_curve25519xsalsa20poly1305_SEEDBYTES","crypto_core_ed25519_BYTES","crypto_core_ed25519_HASHBYTES","crypto_core_ed25519_NONREDUCEDSCALARBYTES","crypto_core_ed25519_SCALARBYTES","crypto_core_ed25519_UNIFORMBYTES","crypto_core_hchacha20_CONSTBYTES","crypto_core_hchacha20_INPUTBYTES","crypto_core_hchacha20_KEYBYTES","crypto_core_hchacha20_OUTPUTBYTES","crypto_core_hsalsa20_CONSTBYTES","crypto_core_hsalsa20_INPUTBYTES","crypto_core_hsalsa20_KEYBYTES","crypto_core_hsalsa20_OUTPUTBYTES","crypto_core_ristretto255_BYTES","crypto_core_ristretto255_HASHBYTES","crypto_core_ristretto255_NONREDUCEDSCALARBYTES","crypto_core_ristretto255_SCALARBYTES","crypto_core_salsa2012_CONSTBYTES","crypto_core_salsa2012_INPUTBYTES","crypto_core_salsa2012_KEYBYTES","crypto_core_salsa2012_OUTPUTBYTES","crypto_core_salsa208_CONSTBYTES","crypto_core_salsa208_INPUTBYTES","crypto_core_salsa208_KEYBYTES","crypto_core_salsa208_OUTPUTBYTES","crypto_core_salsa20_CONSTBYTES","crypto_core_salsa20_INPUTBYTES","crypto_core_salsa20_KEYBYTES","crypto_core_salsa20_OUTPUTBYTES","crypto_generichash_BYTES","crypto_generichash_BYTES_MAX","crypto_generichash_BYTES_MIN","crypto_generichash_KEYBYTES","crypto_generichash_KEYBYTES_MAX","crypto_generichash_KEYBYTES_MIN","crypto_generichash_blake2b_BYTES","crypto_generichash_blake2b_BYTES_MAX","crypto_generichash_blake2b_BYTES_MIN","crypto_generichash_blake2b_KEYBYTES","crypto_generichash_blake2b_KEYBYTES_MAX","crypto_generichash_blake2b_KEYBYTES_MIN","crypto_generichash_blake2b_PERSONALBYTES","crypto_generichash_blake2b_SALTBYTES","crypto_hash_BYTES","crypto_hash_sha256_BYTES","crypto_hash_sha512_BYTES","crypto_kdf_BYTES_MAX","crypto_kdf_BYTES_MIN","crypto_kdf_CONTEXTBYTES","crypto_kdf_KEYBYTES","crypto_kdf_blake2b_BYTES_MAX","crypto_kdf_blake2b_BYTES_MIN","crypto_kdf_blake2b_CONTEXTBYTES","crypto_kdf_blake2b_KEYBYTES","crypto_kdf_hkdf_sha256_BYTES_MAX","crypto_kdf_hkdf_sha256_BYTES_MIN","crypto_kdf_hkdf_sha256_KEYBYTES","crypto_kdf_hkdf_sha512_BYTES_MAX","crypto_kdf_hkdf_sha512_BYTES_MIN","crypto_kdf_hkdf_sha512_KEYBYTES","crypto_kx_PUBLICKEYBYTES","crypto_kx_SECRETKEYBYTES","crypto_kx_SEEDBYTES","crypto_kx_SESSIONKEYBYTES","crypto_onetimeauth_BYTES","crypto_onetimeauth_KEYBYTES","crypto_onetimeauth_poly1305_BYTES","crypto_onetimeauth_poly1305_KEYBYTES","crypto_pwhash_ALG_ARGON2I13","crypto_pwhash_ALG_ARGON2ID13","crypto_pwhash_ALG_DEFAULT","crypto_pwhash_BYTES_MAX","crypto_pwhash_BYTES_MIN","crypto_pwhash_MEMLIMIT_INTERACTIVE","crypto_pwhash_MEMLIMIT_MAX","crypto_pwhash_MEMLIMIT_MIN","crypto_pwhash_MEMLIMIT_MODERATE","crypto_pwhash_MEMLIMIT_SENSITIVE","crypto_pwhash_OPSLIMIT_INTERACTIVE","crypto_pwhash_OPSLIMIT_MAX","crypto_pwhash_OPSLIMIT_MIN","crypto_pwhash_OPSLIMIT_MODERATE","crypto_pwhash_OPSLIMIT_SENSITIVE","crypto_pwhash_PASSWD_MAX","crypto_pwhash_PASSWD_MIN","crypto_pwhash_SALTBYTES","crypto_pwhash_STRBYTES","crypto_pwhash_argon2i_BYTES_MAX","crypto_pwhash_argon2i_BYTES_MIN","crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE","crypto_pwhash_argon2i_MEMLIMIT_MAX","crypto_pwhash_argon2i_MEMLIMIT_MIN","crypto_pwhash_argon2i_MEMLIMIT_MODERATE","crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE","crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE","crypto_pwhash_argon2i_OPSLIMIT_MAX","crypto_pwhash_argon2i_OPSLIMIT_MIN","crypto_pwhash_argon2i_OPSLIMIT_MODERATE","crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE","crypto_pwhash_argon2i_PASSWD_MAX","crypto_pwhash_argon2i_PASSWD_MIN","crypto_pwhash_argon2i_SALTBYTES","crypto_pwhash_argon2i_STRBYTES","crypto_pwhash_argon2id_BYTES_MAX","crypto_pwhash_argon2id_BYTES_MIN","crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE","crypto_pwhash_argon2id_MEMLIMIT_MAX","crypto_pwhash_argon2id_MEMLIMIT_MIN","crypto_pwhash_argon2id_MEMLIMIT_MODERATE","crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE","crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE","crypto_pwhash_argon2id_OPSLIMIT_MAX","crypto_pwhash_argon2id_OPSLIMIT_MIN","crypto_pwhash_argon2id_OPSLIMIT_MODERATE","crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE","crypto_pwhash_argon2id_PASSWD_MAX","crypto_pwhash_argon2id_PASSWD_MIN","crypto_pwhash_argon2id_SALTBYTES","crypto_pwhash_argon2id_STRBYTES","crypto_pwhash_scryptsalsa208sha256_BYTES_MAX","crypto_pwhash_scryptsalsa208sha256_BYTES_MIN","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE","crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX","crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN","crypto_pwhash_scryptsalsa208sha256_SALTBYTES","crypto_pwhash_scryptsalsa208sha256_STRBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_scalarmult_curve25519_BYTES","crypto_scalarmult_curve25519_SCALARBYTES","crypto_scalarmult_ed25519_BYTES","crypto_scalarmult_ed25519_SCALARBYTES","crypto_scalarmult_ristretto255_BYTES","crypto_scalarmult_ristretto255_SCALARBYTES","crypto_secretbox_KEYBYTES","crypto_secretbox_MACBYTES","crypto_secretbox_MESSAGEBYTES_MAX","crypto_secretbox_NONCEBYTES","crypto_secretbox_xchacha20poly1305_KEYBYTES","crypto_secretbox_xchacha20poly1305_MACBYTES","crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX","crypto_secretbox_xchacha20poly1305_NONCEBYTES","crypto_secretbox_xsalsa20poly1305_KEYBYTES","crypto_secretbox_xsalsa20poly1305_MACBYTES","crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX","crypto_secretbox_xsalsa20poly1305_NONCEBYTES","crypto_secretstream_xchacha20poly1305_ABYTES","crypto_secretstream_xchacha20poly1305_HEADERBYTES","crypto_secretstream_xchacha20poly1305_KEYBYTES","crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX","crypto_secretstream_xchacha20poly1305_TAG_FINAL","crypto_secretstream_xchacha20poly1305_TAG_MESSAGE","crypto_secretstream_xchacha20poly1305_TAG_PUSH","crypto_secretstream_xchacha20poly1305_TAG_REKEY","crypto_shorthash_BYTES","crypto_shorthash_KEYBYTES","crypto_shorthash_siphash24_BYTES","crypto_shorthash_siphash24_KEYBYTES","crypto_shorthash_siphashx24_BYTES","crypto_shorthash_siphashx24_KEYBYTES","crypto_sign_BYTES","crypto_sign_MESSAGEBYTES_MAX","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","crypto_sign_SEEDBYTES","crypto_sign_ed25519_BYTES","crypto_sign_ed25519_MESSAGEBYTES_MAX","crypto_sign_ed25519_PUBLICKEYBYTES","crypto_sign_ed25519_SECRETKEYBYTES","crypto_sign_ed25519_SEEDBYTES","crypto_stream_KEYBYTES","crypto_stream_MESSAGEBYTES_MAX","crypto_stream_NONCEBYTES","crypto_stream_chacha20_IETF_KEYBYTES","crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX","crypto_stream_chacha20_IETF_NONCEBYTES","crypto_stream_chacha20_KEYBYTES","crypto_stream_chacha20_MESSAGEBYTES_MAX","crypto_stream_chacha20_NONCEBYTES","crypto_stream_chacha20_ietf_KEYBYTES","crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX","crypto_stream_chacha20_ietf_NONCEBYTES","crypto_stream_salsa2012_KEYBYTES","crypto_stream_salsa2012_MESSAGEBYTES_MAX","crypto_stream_salsa2012_NONCEBYTES","crypto_stream_salsa208_KEYBYTES","crypto_stream_salsa208_MESSAGEBYTES_MAX","crypto_stream_salsa208_NONCEBYTES","crypto_stream_salsa20_KEYBYTES","crypto_stream_salsa20_MESSAGEBYTES_MAX","crypto_stream_salsa20_NONCEBYTES","crypto_stream_xchacha20_KEYBYTES","crypto_stream_xchacha20_MESSAGEBYTES_MAX","crypto_stream_xchacha20_NONCEBYTES","crypto_stream_xsalsa20_KEYBYTES","crypto_stream_xsalsa20_MESSAGEBYTES_MAX","crypto_stream_xsalsa20_NONCEBYTES","crypto_verify_16_BYTES","crypto_verify_32_BYTES","crypto_verify_64_BYTES"];for(e=0;e<B.length;e++)"function"==typeof(i=I["_"+B[e].toLowerCase()])&&(A[B[e]]=i());var a=["SODIUM_VERSION_STRING","crypto_pwhash_STRPREFIX","crypto_pwhash_argon2i_STRPREFIX","crypto_pwhash_argon2id_STRPREFIX","crypto_pwhash_scryptsalsa208sha256_STRPREFIX"];for(e=0;e<a.length;e++){var i;"function"==typeof(i=I["_"+a[e].toLowerCase()])&&(A[a[e]]=I.UTF8ToString(i()))}}I=g;try{C();var e=new Uint8Array([98,97,108,108,115]),B=A.randombytes_buf(A.crypto_secretbox_NONCEBYTES),a=A.randombytes_buf(A.crypto_secretbox_KEYBYTES),i=A.crypto_secretbox_easy(e,B,a),r=A.crypto_secretbox_open_easy(i,B,a);if(A.memcmp(e,r))return}catch(A){if(null==I.useBackupModule)throw new Error("Both wasm and asm failed to load"+A)}I.useBackupModule(),C()}));function B(A){if("function"==typeof TextEncoder)return(new TextEncoder).encode(A);A=unescape(encodeURIComponent(A));for(var g=new Uint8Array(A.length),I=0,C=A.length;I<C;I++)g[I]=A.charCodeAt(I);return g}function a(A){if("function"==typeof TextDecoder)return new TextDecoder("utf-8",{fatal:!0}).decode(A);var g=8192,I=Math.ceil(A.length/g);if(I<=1)try{return decodeURIComponent(escape(String.fromCharCode.apply(null,A)))}catch(A){throw new TypeError("The encoded data was not valid.")}for(var C="",e=0,B=0;B<I;B++){var i=Array.prototype.slice.call(A,B*g+e,(B+1)*g+e);if(0!=i.length){var r,t=i.length,Q=0;do{var o=i[--t];o>=240?(Q=4,r=!0):o>=224?(Q=3,r=!0):o>=192?(Q=2,r=!0):o<128&&(Q=1,r=!0)}while(!r);for(var c=Q-(i.length-t),E=0;E<c;E++)e--,i.pop();C+=a(i)}}return C}function i(A){A=D(null,A,"input");for(var g,I,C,e="",B=0;B<A.length;B++)C=87+(I=15&A[B])+(I-10>>8&-39)<<8|87+(g=A[B]>>>4)+(g-10>>8&-39),e+=String.fromCharCode(255&C)+String.fromCharCode(C>>>8);return e}var r={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function t(A){if(null==A)return r.URLSAFE_NO_PADDING;if(A!==r.ORIGINAL&&A!==r.ORIGINAL_NO_PADDING&&A!==r.URLSAFE&&A!=r.URLSAFE_NO_PADDING)throw new Error("unsupported base64 variant");return A}function Q(A,g){g=t(g),A=D(e,A,"input");var C,e=[],B=0|Math.floor(A.length/3),i=A.length-3*B,r=4*B+(0!==i?2&g?2+(i>>>1):4:0),Q=new y(r+1),o=_(A);return e.push(o),e.push(Q.address),0===I._sodium_bin2base64(Q.address,Q.length,o,A.length,g)&&s(e,"conversion failed"),Q.length=r,C=a(Q.to_Uint8Array()),h(e),C}function o(A,g){var I=g||C;if(!c(I))throw new Error(I+" output format is not available");if(A instanceof y){if("uint8array"===I)return A.to_Uint8Array();if("text"===I)return a(A.to_Uint8Array());if("hex"===I)return i(A.to_Uint8Array());if("base64"===I)return Q(A.to_Uint8Array(),r.URLSAFE_NO_PADDING);throw new Error('What is output format "'+I+'"?')}if("object"==typeof A){for(var e=Object.keys(A),B={},t=0;t<e.length;t++)B[e[t]]=o(A[e[t]],I);return B}if("string"==typeof A)return A;throw new TypeError("Cannot format output")}function c(A){for(var g=["uint8array","text","hex","base64"],I=0;I<g.length;I++)if(g[I]===A)return!0;return!1}function E(A){if(A){if("string"!=typeof A)throw new TypeError("When defined, the output format must be a string");if(!c(A))throw new Error(A+" is not a supported output format")}}function y(A){this.length=A,this.address=n(A)}function _(A){var g=n(A.length);return I.HEAPU8.set(A,g),g}function n(A){var g=I._malloc(A);if(0===g)throw{message:"_malloc() failed",length:A};return g}function h(A){if(A)for(var g=0;g<A.length;g++)C=A[g],I._free(C);var C}function s(A,g){throw h(A),new Error(g)}function p(A,g){throw h(A),new TypeError(g)}function f(A,g,I){null==g&&p(A,I+" cannot be null or undefined")}function D(A,g,I){return f(A,g,I),g instanceof Uint8Array?g:"string"==typeof g?B(g):void p(A,"unsupported input type for "+I)}function w(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_aegis128l_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_aegis128l_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_aegis128l_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_aegis128l_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_aegis128l_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function k(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_aegis128l_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_aegis128l_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_aegis128l_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function d(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis128l_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis128l_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_aegis128l_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_aegis128l_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function l(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis128l_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis128l_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_aegis128l_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_aegis128l_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function u(A){var g=[];E(A);var C=new y(0|I._crypto_aead_aegis128l_keybytes()),e=C.address;g.push(e),I._crypto_aead_aegis128l_keygen(e);var B=o(C,A);return h(g),B}function v(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_aegis256_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_aegis256_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_aegis256_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_aegis256_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_aegis256_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function S(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_aegis256_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_aegis256_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_aegis256_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function b(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis256_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis256_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_aegis256_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_aegis256_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function M(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis256_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis256_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_aegis256_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_aegis256_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function F(A){var g=[];E(A);var C=new y(0|I._crypto_aead_aegis256_keybytes()),e=C.address;g.push(e),I._crypto_aead_aegis256_keygen(e);var B=o(C,A);return h(g),B}function N(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_chacha20poly1305_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_chacha20poly1305_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_chacha20poly1305_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_chacha20poly1305_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_chacha20poly1305_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function K(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_chacha20poly1305_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_chacha20poly1305_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_chacha20poly1305_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function Y(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_chacha20poly1305_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_chacha20poly1305_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function H(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_chacha20poly1305_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_chacha20poly1305_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function G(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_chacha20poly1305_ietf_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_chacha20poly1305_ietf_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_chacha20poly1305_ietf_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function J(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_chacha20poly1305_ietf_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function U(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_chacha20poly1305_ietf_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_chacha20poly1305_ietf_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function x(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_chacha20poly1305_ietf_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_chacha20poly1305_ietf_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function m(A){var g=[];E(A);var C=new y(0|I._crypto_aead_chacha20poly1305_ietf_keybytes()),e=C.address;g.push(e),I._crypto_aead_chacha20poly1305_ietf_keygen(e);var B=o(C,A);return h(g),B}function P(A){var g=[];E(A);var C=new y(0|I._crypto_aead_chacha20poly1305_keybytes()),e=C.address;g.push(e),I._crypto_aead_chacha20poly1305_keygen(e);var B=o(C,A);return h(g),B}function R(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_xchacha20poly1305_ietf_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_xchacha20poly1305_ietf_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_xchacha20poly1305_ietf_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function L(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_xchacha20poly1305_ietf_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function T(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_xchacha20poly1305_ietf_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_xchacha20poly1305_ietf_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function q(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_xchacha20poly1305_ietf_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_xchacha20poly1305_ietf_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function z(A){var g=[];E(A);var C=new y(0|I._crypto_aead_xchacha20poly1305_ietf_keybytes()),e=C.address;g.push(e),I._crypto_aead_xchacha20poly1305_ietf_keygen(e);var B=o(C,A);return h(g),B}function j(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function X(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_hmacsha256_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_hmacsha256_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth_hmacsha256(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function O(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_auth_hmacsha256_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_auth_hmacsha256_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function V(A,g){var C=[];E(g);var e=null,B=0;null!=A&&(e=_(A=D(C,A,"key")),B=A.length,C.push(e));var a=new y(208).address;if(!(0|I._crypto_auth_hmacsha256_init(a,e,B))){var i=a;return h(C),i}s(C,"invalid usage")}function Z(A){var g=[];E(A);var C=new y(0|I._crypto_auth_hmacsha256_keybytes()),e=C.address;g.push(e),I._crypto_auth_hmacsha256_keygen(e);var B=o(C,A);return h(g),B}function W(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_auth_hmacsha256_update(A,B,a)&&s(e,"invalid usage"),h(e)}function $(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_hmacsha256_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_hmacsha256_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_hmacsha256_verify(B,i,r,0,t));return h(e),o}function AA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_hmacsha512_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_hmacsha512_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth_hmacsha512(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function gA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_hmacsha512256_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_hmacsha512256_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth_hmacsha512256(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function IA(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_auth_hmacsha512256_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_auth_hmacsha512256_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function CA(A,g){var C=[];E(g);var e=null,B=0;null!=A&&(e=_(A=D(C,A,"key")),B=A.length,C.push(e));var a=new y(416).address;if(!(0|I._crypto_auth_hmacsha512256_init(a,e,B))){var i=a;return h(C),i}s(C,"invalid usage")}function eA(A){var g=[];E(A);var C=new y(0|I._crypto_auth_hmacsha512256_keybytes()),e=C.address;g.push(e),I._crypto_auth_hmacsha512256_keygen(e);var B=o(C,A);return h(g),B}function BA(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_auth_hmacsha512256_update(A,B,a)&&s(e,"invalid usage"),h(e)}function aA(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_hmacsha512256_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_hmacsha512256_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_hmacsha512256_verify(B,i,r,0,t));return h(e),o}function iA(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_auth_hmacsha512_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_auth_hmacsha512_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function rA(A,g){var C=[];E(g);var e=null,B=0;null!=A&&(e=_(A=D(C,A,"key")),B=A.length,C.push(e));var a=new y(416).address;if(!(0|I._crypto_auth_hmacsha512_init(a,e,B))){var i=a;return h(C),i}s(C,"invalid usage")}function tA(A){var g=[];E(A);var C=new y(0|I._crypto_auth_hmacsha512_keybytes()),e=C.address;g.push(e),I._crypto_auth_hmacsha512_keygen(e);var B=o(C,A);return h(g),B}function QA(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_auth_hmacsha512_update(A,B,a)&&s(e,"invalid usage"),h(e)}function oA(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_hmacsha512_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_hmacsha512_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_hmacsha512_verify(B,i,r,0,t));return h(e),o}function cA(A){var g=[];E(A);var C=new y(0|I._crypto_auth_keybytes()),e=C.address;g.push(e),I._crypto_auth_keygen(e);var B=o(C,A);return h(g),B}function EA(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_verify(B,i,r,0,t));return h(e),o}function yA(A,g,C){var e=[];E(C),A=D(e,A,"publicKey");var B,a=0|I._crypto_box_publickeybytes();A.length!==a&&p(e,"invalid publicKey length"),B=_(A),e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_box_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_box_beforenmbytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_box_beforenm(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function _A(A,g,C){var e=[];E(C),A=D(e,A,"publicKey");var B,a=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();A.length!==a&&p(e,"invalid publicKey length"),B=_(A),e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_box_curve25519xchacha20poly1305_beforenm(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function nA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;a.push(d);var l=new y(0|I._crypto_box_curve25519xchacha20poly1305_macbytes()),u=l.address;if(a.push(u),!(0|I._crypto_box_curve25519xchacha20poly1305_detached(d,u,i,r,0,t,c,f))){var v=o({ciphertext:k,mac:l},B);return h(a),v}s(a,"invalid usage")}function hA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;B.push(f);var w=new y(0|I._crypto_box_curve25519xchacha20poly1305_macbytes()),k=w.address;if(B.push(k),!(0|I._crypto_box_curve25519xchacha20poly1305_detached_afternm(f,k,a,i,0,r,Q))){var d=o({ciphertext:n,mac:w},e);return h(B),d}s(B,"invalid usage")}function sA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(r+I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),d=k.address;if(a.push(d),!(0|I._crypto_box_curve25519xchacha20poly1305_easy(d,i,r,0,t,c,f))){var l=o(k,B);return h(a),l}s(a,"invalid usage")}function pA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i+I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_curve25519xchacha20poly1305_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function fA(A){var g=[];E(A);var C=new y(0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),a=B.address;g.push(a),I._crypto_box_curve25519xchacha20poly1305_keypair(e,a);var i=o({publicKey:C,privateKey:B,keyType:"curve25519"},A);return h(g),i}function DA(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"ciphertext")),t=A.length;i.push(r),g=D(i,g,"mac");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_macbytes();g.length!==c&&p(i,"invalid mac length"),Q=_(g),i.push(Q),C=D(i,C,"nonce");var n,f=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();C.length!==f&&p(i,"invalid nonce length"),n=_(C),i.push(n),e=D(i,e,"publicKey");var w,k=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();e.length!==k&&p(i,"invalid publicKey length"),w=_(e),i.push(w),B=D(i,B,"privateKey");var d,l=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();B.length!==l&&p(i,"invalid privateKey length"),d=_(B),i.push(d);var u=new y(0|t),v=u.address;if(i.push(v),!(0|I._crypto_box_curve25519xchacha20poly1305_open_detached(v,r,Q,t,0,n,w,d))){var S=o(u,a);return h(i),S}s(i,"incorrect key pair for the given ciphertext")}function wA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"ciphertext")),r=A.length;a.push(i),g=D(a,g,"mac");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_macbytes();g.length!==Q&&p(a,"invalid mac length"),t=_(g),a.push(t),C=D(a,C,"nonce");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();C.length!==n&&p(a,"invalid nonce length"),c=_(C),a.push(c),e=D(a,e,"sharedKey");var f,w=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();e.length!==w&&p(a,"invalid sharedKey length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;if(a.push(d),!(0|I._crypto_box_curve25519xchacha20poly1305_open_detached_afternm(d,i,t,r,0,c,f))){var l=o(k,B);return h(a),l}s(a,"incorrect secret key for the given ciphertext")}function kA(A,g,C,e,B){var a=[];E(B),A=D(a,A,"ciphertext");var i,r=I._crypto_box_curve25519xchacha20poly1305_macbytes(),t=A.length;t<r&&p(a,"ciphertext is too short"),i=_(A),a.push(i),g=D(a,g,"nonce");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==c&&p(a,"invalid nonce length"),Q=_(g),a.push(Q),C=D(a,C,"publicKey");var n,f=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();C.length!==f&&p(a,"invalid publicKey length"),n=_(C),a.push(n),e=D(a,e,"privateKey");var w,k=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();e.length!==k&&p(a,"invalid privateKey length"),w=_(e),a.push(w);var d=new y(t-I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),l=d.address;if(a.push(l),!(0|I._crypto_box_curve25519xchacha20poly1305_open_easy(l,i,t,0,Q,n,w))){var u=o(d,B);return h(a),u}s(a,"incorrect key pair for the given ciphertext")}function dA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"ciphertext")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i-I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_curve25519xchacha20poly1305_open_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"incorrect secret key for the given ciphertext")}function lA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"publicKey");var i,r=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();g.length!==r&&p(e,"invalid publicKey length"),i=_(g),e.push(i);var t=new y(a+I._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),Q=t.address;e.push(Q),I._crypto_box_curve25519xchacha20poly1305_seal(Q,B,a,0,i);var c=o(t,C);return h(e),c}function uA(A,g,C,e){var B=[];E(e),A=D(B,A,"ciphertext");var a,i=I._crypto_box_curve25519xchacha20poly1305_sealbytes(),r=A.length;r<i&&p(B,"ciphertext is too short"),a=_(A),B.push(a),g=D(B,g,"publicKey");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();g.length!==Q&&p(B,"invalid publicKey length"),t=_(g),B.push(t),C=D(B,C,"secretKey");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();C.length!==n&&p(B,"invalid secretKey length"),c=_(C),B.push(c);var s=new y(r-I._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),f=s.address;B.push(f),I._crypto_box_curve25519xchacha20poly1305_seal_open(f,a,r,0,t,c);var w=o(s,e);return h(B),w}function vA(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_box_curve25519xchacha20poly1305_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_box_curve25519xchacha20poly1305_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"x25519"};return h(C),Q}s(C,"invalid usage")}function SA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;a.push(d);var l=new y(0|I._crypto_box_macbytes()),u=l.address;if(a.push(u),!(0|I._crypto_box_detached(d,u,i,r,0,t,c,f))){var v=o({ciphertext:k,mac:l},B);return h(a),v}s(a,"invalid usage")}function bA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(r+I._crypto_box_macbytes()|0),d=k.address;if(a.push(d),!(0|I._crypto_box_easy(d,i,r,0,t,c,f))){var l=o(k,B);return h(a),l}s(a,"invalid usage")}function MA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i+I._crypto_box_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function FA(A){var g=[];E(A);var C=new y(0|I._crypto_box_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_box_secretkeybytes()),a=B.address;if(g.push(a),!(0|I._crypto_box_keypair(e,a))){var i={publicKey:o(C,A),privateKey:o(B,A),keyType:"x25519"};return h(g),i}s(g,"internal error")}function NA(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"ciphertext")),t=A.length;i.push(r),g=D(i,g,"mac");var Q,c=0|I._crypto_box_macbytes();g.length!==c&&p(i,"invalid mac length"),Q=_(g),i.push(Q),C=D(i,C,"nonce");var n,f=0|I._crypto_box_noncebytes();C.length!==f&&p(i,"invalid nonce length"),n=_(C),i.push(n),e=D(i,e,"publicKey");var w,k=0|I._crypto_box_publickeybytes();e.length!==k&&p(i,"invalid publicKey length"),w=_(e),i.push(w),B=D(i,B,"privateKey");var d,l=0|I._crypto_box_secretkeybytes();B.length!==l&&p(i,"invalid privateKey length"),d=_(B),i.push(d);var u=new y(0|t),v=u.address;if(i.push(v),!(0|I._crypto_box_open_detached(v,r,Q,t,0,n,w,d))){var S=o(u,a);return h(i),S}s(i,"incorrect key pair for the given ciphertext")}function KA(A,g,C,e,B){var a=[];E(B),A=D(a,A,"ciphertext");var i,r=I._crypto_box_macbytes(),t=A.length;t<r&&p(a,"ciphertext is too short"),i=_(A),a.push(i),g=D(a,g,"nonce");var Q,c=0|I._crypto_box_noncebytes();g.length!==c&&p(a,"invalid nonce length"),Q=_(g),a.push(Q),C=D(a,C,"publicKey");var n,f=0|I._crypto_box_publickeybytes();C.length!==f&&p(a,"invalid publicKey length"),n=_(C),a.push(n),e=D(a,e,"privateKey");var w,k=0|I._crypto_box_secretkeybytes();e.length!==k&&p(a,"invalid privateKey length"),w=_(e),a.push(w);var d=new y(t-I._crypto_box_macbytes()|0),l=d.address;if(a.push(l),!(0|I._crypto_box_open_easy(l,i,t,0,Q,n,w))){var u=o(d,B);return h(a),u}s(a,"incorrect key pair for the given ciphertext")}function YA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"ciphertext")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i-I._crypto_box_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_open_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"incorrect secret key for the given ciphertext")}function HA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"publicKey");var i,r=0|I._crypto_box_publickeybytes();g.length!==r&&p(e,"invalid publicKey length"),i=_(g),e.push(i);var t=new y(a+I._crypto_box_sealbytes()|0),Q=t.address;if(e.push(Q),!(0|I._crypto_box_seal(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function GA(A,g,C,e){var B=[];E(e),A=D(B,A,"ciphertext");var a,i=I._crypto_box_sealbytes(),r=A.length;r<i&&p(B,"ciphertext is too short"),a=_(A),B.push(a),g=D(B,g,"publicKey");var t,Q=0|I._crypto_box_publickeybytes();g.length!==Q&&p(B,"invalid publicKey length"),t=_(g),B.push(t),C=D(B,C,"privateKey");var c,n=0|I._crypto_box_secretkeybytes();C.length!==n&&p(B,"invalid privateKey length"),c=_(C),B.push(c);var f=new y(r-I._crypto_box_sealbytes()|0),w=f.address;if(B.push(w),!(0|I._crypto_box_seal_open(w,a,r,0,t,c))){var k=o(f,e);return h(B),k}s(B,"incorrect key pair for the given ciphertext")}function JA(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_box_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_box_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_box_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_box_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"x25519"};return h(C),Q}s(C,"invalid usage")}function UA(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ed25519_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ed25519_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ed25519_add(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function xA(A,g){var C=[];E(g);var e=_(A=D(C,A,"r"));A.length,C.push(e);var B=new y(0|I._crypto_core_ed25519_bytes()),a=B.address;if(C.push(a),!(0|I._crypto_core_ed25519_from_hash(a,e))){var i=o(B,g);return h(C),i}s(C,"invalid usage")}function mA(A,g){var C=[];E(g);var e=_(A=D(C,A,"r"));A.length,C.push(e);var B=new y(0|I._crypto_core_ed25519_bytes()),a=B.address;if(C.push(a),!(0|I._crypto_core_ed25519_from_uniform(a,e))){var i=o(B,g);return h(C),i}s(C,"invalid usage")}function PA(A,g){var C=[];E(g),A=D(C,A,"repr");var e,B=0|I._crypto_core_ed25519_bytes();A.length!==B&&p(C,"invalid repr length"),e=_(A),C.push(e);var a=1==(0|I._crypto_core_ed25519_is_valid_point(e));return h(C),a}function RA(A){var g=[];E(A);var C=new y(0|I._crypto_core_ed25519_bytes()),e=C.address;g.push(e),I._crypto_core_ed25519_random(e);var B=o(C,A);return h(g),B}function LA(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ed25519_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ed25519_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ed25519_scalar_add(Q,B,i);var c=o(t,C);return h(e),c}function TA(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ed25519_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ed25519_scalar_complement(i,e);var r=o(a,g);return h(C),r}function qA(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ed25519_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_core_ed25519_scalar_invert(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid reciprocate")}function zA(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ed25519_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ed25519_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ed25519_scalar_mul(Q,B,i);var c=o(t,C);return h(e),c}function jA(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ed25519_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ed25519_scalar_negate(i,e);var r=o(a,g);return h(C),r}function XA(A){var g=[];E(A);var C=new y(0|I._crypto_core_ed25519_scalarbytes()),e=C.address;g.push(e),I._crypto_core_ed25519_scalar_random(e);var B=o(C,A);return h(g),B}function OA(A,g){var C=[];E(g),A=D(C,A,"sample");var e,B=0|I._crypto_core_ed25519_nonreducedscalarbytes();A.length!==B&&p(C,"invalid sample length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ed25519_scalar_reduce(i,e);var r=o(a,g);return h(C),r}function VA(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ed25519_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ed25519_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ed25519_scalar_sub(Q,B,i);var c=o(t,C);return h(e),c}function ZA(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ed25519_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ed25519_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ed25519_sub(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function WA(A,g,C,e){var B=[];E(e),A=D(B,A,"input");var a,i=0|I._crypto_core_hchacha20_inputbytes();A.length!==i&&p(B,"invalid input length"),a=_(A),B.push(a),g=D(B,g,"privateKey");var r,t=0|I._crypto_core_hchacha20_keybytes();g.length!==t&&p(B,"invalid privateKey length"),r=_(g),B.push(r);var Q=null;null!=C&&(Q=_(C=D(B,C,"constant")),C.length,B.push(Q));var c=new y(0|I._crypto_core_hchacha20_outputbytes()),n=c.address;if(B.push(n),!(0|I._crypto_core_hchacha20(n,a,r,Q))){var f=o(c,e);return h(B),f}s(B,"invalid usage")}function $A(A,g,C,e){var B=[];E(e),A=D(B,A,"input");var a,i=0|I._crypto_core_hsalsa20_inputbytes();A.length!==i&&p(B,"invalid input length"),a=_(A),B.push(a),g=D(B,g,"privateKey");var r,t=0|I._crypto_core_hsalsa20_keybytes();g.length!==t&&p(B,"invalid privateKey length"),r=_(g),B.push(r);var Q=null;null!=C&&(Q=_(C=D(B,C,"constant")),C.length,B.push(Q));var c=new y(0|I._crypto_core_hsalsa20_outputbytes()),n=c.address;if(B.push(n),!(0|I._crypto_core_hsalsa20(n,a,r,Q))){var f=o(c,e);return h(B),f}s(B,"invalid usage")}function Ag(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ristretto255_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ristretto255_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ristretto255_add(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function gg(A,g){var C=[];E(g);var e=_(A=D(C,A,"r"));A.length,C.push(e);var B=new y(0|I._crypto_core_ristretto255_bytes()),a=B.address;if(C.push(a),!(0|I._crypto_core_ristretto255_from_hash(a,e))){var i=o(B,g);return h(C),i}s(C,"invalid usage")}function Ig(A,g){var C=[];E(g),A=D(C,A,"repr");var e,B=0|I._crypto_core_ristretto255_bytes();A.length!==B&&p(C,"invalid repr length"),e=_(A),C.push(e);var a=1==(0|I._crypto_core_ristretto255_is_valid_point(e));return h(C),a}function Cg(A){var g=[];E(A);var C=new y(0|I._crypto_core_ristretto255_bytes()),e=C.address;g.push(e),I._crypto_core_ristretto255_random(e);var B=o(C,A);return h(g),B}function eg(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ristretto255_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ristretto255_scalar_add(Q,B,i);var c=o(t,C);return h(e),c}function Bg(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ristretto255_scalar_complement(i,e);var r=o(a,g);return h(C),r}function ag(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_core_ristretto255_scalar_invert(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid reciprocate")}function ig(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ristretto255_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ristretto255_scalar_mul(Q,B,i);var c=o(t,C);return h(e),c}function rg(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ristretto255_scalar_negate(i,e);var r=o(a,g);return h(C),r}function tg(A){var g=[];E(A);var C=new y(0|I._crypto_core_ristretto255_scalarbytes()),e=C.address;g.push(e),I._crypto_core_ristretto255_scalar_random(e);var B=o(C,A);return h(g),B}function Qg(A,g){var C=[];E(g),A=D(C,A,"sample");var e,B=0|I._crypto_core_ristretto255_nonreducedscalarbytes();A.length!==B&&p(C,"invalid sample length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ristretto255_scalar_reduce(i,e);var r=o(a,g);return h(C),r}function og(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ristretto255_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ristretto255_scalar_sub(Q,B,i);var c=o(t,C);return h(e),c}function cg(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ristretto255_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ristretto255_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ristretto255_sub(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function Eg(A,g,C,e){var B=[];E(e),f(B,A,"hash_length"),("number"!=typeof A||(0|A)!==A||A<0)&&p(B,"hash_length must be an unsigned integer");var a=_(g=D(B,g,"message")),i=g.length;B.push(a);var r=null,t=0;null!=C&&(r=_(C=D(B,C,"key")),t=C.length,B.push(r));var Q=new y(A|=0),c=Q.address;if(B.push(c),!(0|I._crypto_generichash(c,A,a,i,0,r,t))){var n=o(Q,e);return h(B),n}s(B,"invalid usage")}function yg(A,g,C,e,B){var a=[];E(B),f(a,A,"subkey_len"),("number"!=typeof A||(0|A)!==A||A<0)&&p(a,"subkey_len must be an unsigned integer");var i=null,r=0;null!=g&&(i=_(g=D(a,g,"key")),r=g.length,a.push(i));var t=null,Q=0;null!=C&&(C=D(a,C,"id"),Q=0|I._crypto_generichash_blake2b_saltbytes(),C.length!==Q&&p(a,"invalid id length"),t=_(C),a.push(t));var c=null,n=0;null!=e&&(e=D(a,e,"ctx"),n=0|I._crypto_generichash_blake2b_personalbytes(),e.length!==n&&p(a,"invalid ctx length"),c=_(e),a.push(c));var w=new y(0|A),k=w.address;if(a.push(k),!(0|I._crypto_generichash_blake2b_salt_personal(k,A,null,0,0,i,r,t,c))){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function _g(A,g,C){var e=[];E(C),f(e,A,"state_address"),f(e,g,"hash_length"),("number"!=typeof g||(0|g)!==g||g<0)&&p(e,"hash_length must be an unsigned integer");var B=new y(g|=0),a=B.address;if(e.push(a),!(0|I._crypto_generichash_final(A,a,g))){var i=(I._free(A),o(B,C));return h(e),i}s(e,"invalid usage")}function ng(A,g,C){var e=[];E(C);var B=null,a=0;null!=A&&(B=_(A=D(e,A,"key")),a=A.length,e.push(B)),f(e,g,"hash_length"),("number"!=typeof g||(0|g)!==g||g<0)&&p(e,"hash_length must be an unsigned integer");var i=new y(357).address;if(!(0|I._crypto_generichash_init(i,B,a,g))){var r=i;return h(e),r}s(e,"invalid usage")}function hg(A){var g=[];E(A);var C=new y(0|I._crypto_generichash_keybytes()),e=C.address;g.push(e),I._crypto_generichash_keygen(e);var B=o(C,A);return h(g),B}function sg(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_generichash_update(A,B,a)&&s(e,"invalid usage"),h(e)}function pg(A,g){var C=[];E(g);var e=_(A=D(C,A,"message")),B=A.length;C.push(e);var a=new y(0|I._crypto_hash_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_hash(i,e,B,0))){var r=o(a,g);return h(C),r}s(C,"invalid usage")}function fg(A,g){var C=[];E(g);var e=_(A=D(C,A,"message")),B=A.length;C.push(e);var a=new y(0|I._crypto_hash_sha256_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_hash_sha256(i,e,B,0))){var r=o(a,g);return h(C),r}s(C,"invalid usage")}function Dg(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_hash_sha256_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_hash_sha256_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function wg(A){var g=[];E(A);var C=new y(104).address;if(!(0|I._crypto_hash_sha256_init(C))){var e=C;return h(g),e}s(g,"invalid usage")}function kg(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_hash_sha256_update(A,B,a)&&s(e,"invalid usage"),h(e)}function dg(A,g){var C=[];E(g);var e=_(A=D(C,A,"message")),B=A.length;C.push(e);var a=new y(0|I._crypto_hash_sha512_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_hash_sha512(i,e,B,0))){var r=o(a,g);return h(C),r}s(C,"invalid usage")}function lg(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_hash_sha512_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_hash_sha512_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function ug(A){var g=[];E(A);var C=new y(208).address;if(!(0|I._crypto_hash_sha512_init(C))){var e=C;return h(g),e}s(g,"invalid usage")}function vg(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_hash_sha512_update(A,B,a)&&s(e,"invalid usage"),h(e)}function Sg(A,g,C,e,a){var i=[];E(a),f(i,A,"subkey_len"),("number"!=typeof A||(0|A)!==A||A<0)&&p(i,"subkey_len must be an unsigned integer"),f(i,g,"subkey_id");var r,t=0;if("bigint"==typeof g&&g>=BigInt(0)){const A=g>>BigInt(32);A>BigInt(4294967295)&&p(i,"subkey_id cannot be more than 64 bits"),t=Number(A),r=Number(g&BigInt(4294967295))}else"number"==typeof g&&(0|g)===g&&g>=0?r=g:p(i,"subkey_id must be an unsigned integer or bigint");"string"!=typeof C&&p(i,"ctx must be a string"),C=B(C+"\0"),null!=c&&C.length-1!==c&&p(i,"invalid ctx length");var Q=_(C),c=C.length-1;i.push(Q),e=D(i,e,"key");var n,s=0|I._crypto_kdf_keybytes();e.length!==s&&p(i,"invalid key length"),n=_(e),i.push(n);var w=new y(0|A),k=w.address;i.push(k),I._crypto_kdf_derive_from_key(k,A,r,t,Q,n);var d=o(w,a);return h(i),d}function bg(A){var g=[];E(A);var C=new y(0|I._crypto_kdf_keybytes()),e=C.address;g.push(e),I._crypto_kdf_keygen(e);var B=o(C,A);return h(g),B}function Mg(A,g,C,e){var B=[];E(e),A=D(B,A,"clientPublicKey");var a,i=0|I._crypto_kx_publickeybytes();A.length!==i&&p(B,"invalid clientPublicKey length"),a=_(A),B.push(a),g=D(B,g,"clientSecretKey");var r,t=0|I._crypto_kx_secretkeybytes();g.length!==t&&p(B,"invalid clientSecretKey length"),r=_(g),B.push(r),C=D(B,C,"serverPublicKey");var Q,c=0|I._crypto_kx_publickeybytes();C.length!==c&&p(B,"invalid serverPublicKey length"),Q=_(C),B.push(Q);var n=new y(0|I._crypto_kx_sessionkeybytes()),f=n.address;B.push(f);var w=new y(0|I._crypto_kx_sessionkeybytes()),k=w.address;if(B.push(k),!(0|I._crypto_kx_client_session_keys(f,k,a,r,Q))){var d=o({sharedRx:n,sharedTx:w},e);return h(B),d}s(B,"invalid usage")}function Fg(A){var g=[];E(A);var C=new y(0|I._crypto_kx_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_kx_secretkeybytes()),a=B.address;if(g.push(a),!(0|I._crypto_kx_keypair(e,a))){var i={publicKey:o(C,A),privateKey:o(B,A),keyType:"x25519"};return h(g),i}s(g,"internal error")}function Ng(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_kx_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_kx_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_kx_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_kx_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"x25519"};return h(C),Q}s(C,"internal error")}function Kg(A,g,C,e){var B=[];E(e),A=D(B,A,"serverPublicKey");var a,i=0|I._crypto_kx_publickeybytes();A.length!==i&&p(B,"invalid serverPublicKey length"),a=_(A),B.push(a),g=D(B,g,"serverSecretKey");var r,t=0|I._crypto_kx_secretkeybytes();g.length!==t&&p(B,"invalid serverSecretKey length"),r=_(g),B.push(r),C=D(B,C,"clientPublicKey");var Q,c=0|I._crypto_kx_publickeybytes();C.length!==c&&p(B,"invalid clientPublicKey length"),Q=_(C),B.push(Q);var n=new y(0|I._crypto_kx_sessionkeybytes()),f=n.address;B.push(f);var w=new y(0|I._crypto_kx_sessionkeybytes()),k=w.address;if(B.push(k),!(0|I._crypto_kx_server_session_keys(f,k,a,r,Q))){var d=o({sharedRx:n,sharedTx:w},e);return h(B),d}s(B,"invalid usage")}function Yg(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_onetimeauth_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_onetimeauth_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_onetimeauth(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function Hg(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_onetimeauth_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_onetimeauth_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function Gg(A,g){var C=[];E(g);var e=null;null!=A&&(e=_(A=D(C,A,"key")),A.length,C.push(e));var B=new y(144).address;if(!(0|I._crypto_onetimeauth_init(B,e))){var a=B;return h(C),a}s(C,"invalid usage")}function Jg(A){var g=[];E(A);var C=new y(0|I._crypto_onetimeauth_keybytes()),e=C.address;g.push(e),I._crypto_onetimeauth_keygen(e);var B=o(C,A);return h(g),B}function Ug(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_onetimeauth_update(A,B,a)&&s(e,"invalid usage"),h(e)}function xg(A,g,C){var e=[];A=D(e,A,"hash");var B,a=0|I._crypto_onetimeauth_bytes();A.length!==a&&p(e,"invalid hash length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_onetimeauth_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_onetimeauth_verify(B,i,r,0,t));return h(e),o}function mg(A,g,C,e,B,a,i){var r=[];E(i),f(r,A,"keyLength"),("number"!=typeof A||(0|A)!==A||A<0)&&p(r,"keyLength must be an unsigned integer");var t=_(g=D(r,g,"password")),Q=g.length;r.push(t),C=D(r,C,"salt");var c,n=0|I._crypto_pwhash_saltbytes();C.length!==n&&p(r,"invalid salt length"),c=_(C),r.push(c),f(r,e,"opsLimit"),("number"!=typeof e||(0|e)!==e||e<0)&&p(r,"opsLimit must be an unsigned integer"),f(r,B,"memLimit"),("number"!=typeof B||(0|B)!==B||B<0)&&p(r,"memLimit must be an unsigned integer"),f(r,a,"algorithm"),("number"!=typeof a||(0|a)!==a||a<0)&&p(r,"algorithm must be an unsigned integer");var w=new y(0|A),k=w.address;if(r.push(k),!(0|I._crypto_pwhash(k,A,0,t,Q,0,c,e,0,B,a))){var d=o(w,i);return h(r),d}s(r,"invalid usage")}function Pg(A,g,C,e,B,a){var i=[];E(a),f(i,A,"keyLength"),("number"!=typeof A||(0|A)!==A||A<0)&&p(i,"keyLength must be an unsigned integer");var r=_(g=D(i,g,"password")),t=g.length;i.push(r),C=D(i,C,"salt");var Q,c=0|I._crypto_pwhash_scryptsalsa208sha256_saltbytes();C.length!==c&&p(i,"invalid salt length"),Q=_(C),i.push(Q),f(i,e,"opsLimit"),("number"!=typeof e||(0|e)!==e||e<0)&&p(i,"opsLimit must be an unsigned integer"),f(i,B,"memLimit"),("number"!=typeof B||(0|B)!==B||B<0)&&p(i,"memLimit must be an unsigned integer");var n=new y(0|A),w=n.address;if(i.push(w),!(0|I._crypto_pwhash_scryptsalsa208sha256(w,A,0,r,t,0,Q,e,0,B))){var k=o(n,a);return h(i),k}s(i,"invalid usage")}function Rg(A,g,C,e,B,a,i){var r=[];E(i);var t=_(A=D(r,A,"password")),Q=A.length;r.push(t);var c=_(g=D(r,g,"salt")),n=g.length;r.push(c),f(r,C,"opsLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(r,"opsLimit must be an unsigned integer"),f(r,e,"r"),("number"!=typeof e||(0|e)!==e||e<0)&&p(r,"r must be an unsigned integer"),f(r,B,"p"),("number"!=typeof B||(0|B)!==B||B<0)&&p(r,"p must be an unsigned integer"),f(r,a,"keyLength"),("number"!=typeof a||(0|a)!==a||a<0)&&p(r,"keyLength must be an unsigned integer");var w=new y(0|a),k=w.address;if(r.push(k),!(0|I._crypto_pwhash_scryptsalsa208sha256_ll(t,Q,c,n,C,0,e,B,k,a))){var d=o(w,i);return h(r),d}s(r,"invalid usage")}function Lg(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"password")),i=A.length;B.push(a),f(B,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&p(B,"opsLimit must be an unsigned integer"),f(B,C,"memLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(B,"memLimit must be an unsigned integer");var r=new y(0|I._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(B.push(r),!(0|I._crypto_pwhash_scryptsalsa208sha256_str(r,a,i,0,g,0,C))){var t=I.UTF8ToString(r);return h(B),t}s(B,"invalid usage")}function Tg(A,g,C){var e=[];E(C),"string"!=typeof A&&p(e,"hashed_password must be a string"),A=B(A+"\0"),null!=i&&A.length-1!==i&&p(e,"invalid hashed_password length");var a=_(A),i=A.length-1;e.push(a);var r=_(g=D(e,g,"password")),t=g.length;e.push(r);var Q=!(0|I._crypto_pwhash_scryptsalsa208sha256_str_verify(a,r,t,0));return h(e),Q}function qg(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"password")),i=A.length;B.push(a),f(B,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&p(B,"opsLimit must be an unsigned integer"),f(B,C,"memLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(B,"memLimit must be an unsigned integer");var r=new y(0|I._crypto_pwhash_strbytes()).address;if(B.push(r),!(0|I._crypto_pwhash_str(r,a,i,0,g,0,C))){var t=I.UTF8ToString(r);return h(B),t}s(B,"invalid usage")}function zg(A,g,C,e){var a=[];E(e),"string"!=typeof A&&p(a,"hashed_password must be a string"),A=B(A+"\0"),null!=r&&A.length-1!==r&&p(a,"invalid hashed_password length");var i=_(A),r=A.length-1;a.push(i),f(a,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&p(a,"opsLimit must be an unsigned integer"),f(a,C,"memLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"memLimit must be an unsigned integer");var t=!!(0|I._crypto_pwhash_str_needs_rehash(i,g,0,C));return h(a),t}function jg(A,g,C){var e=[];E(C),"string"!=typeof A&&p(e,"hashed_password must be a string"),A=B(A+"\0"),null!=i&&A.length-1!==i&&p(e,"invalid hashed_password length");var a=_(A),i=A.length-1;e.push(a);var r=_(g=D(e,g,"password")),t=g.length;e.push(r);var Q=!(0|I._crypto_pwhash_str_verify(a,r,t,0));return h(e),Q}function Xg(A,g,C){var e=[];E(C),A=D(e,A,"privateKey");var B,a=0|I._crypto_scalarmult_scalarbytes();A.length!==a&&p(e,"invalid privateKey length"),B=_(A),e.push(B),g=D(e,g,"publicKey");var i,r=0|I._crypto_scalarmult_bytes();g.length!==r&&p(e,"invalid publicKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"weak public key")}function Og(A,g){var C=[];E(g),A=D(C,A,"privateKey");var e,B=0|I._crypto_scalarmult_scalarbytes();A.length!==B&&p(C,"invalid privateKey length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_base(i,e))){var r=o(a,g);return h(C),r}s(C,"unknown error")}function Vg(A,g,C){var e=[];E(C),A=D(e,A,"n");var B,a=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==a&&p(e,"invalid n length"),B=_(A),e.push(B),g=D(e,g,"p");var i,r=0|I._crypto_scalarmult_ed25519_bytes();g.length!==r&&p(e,"invalid p length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult_ed25519(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid point or scalar is 0")}function Zg(A,g){var C=[];E(g),A=D(C,A,"scalar");var e,B=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==B&&p(C,"invalid scalar length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_ed25519_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_ed25519_base(i,e))){var r=o(a,g);return h(C),r}s(C,"scalar is 0")}function Wg(A,g){var C=[];E(g),A=D(C,A,"scalar");var e,B=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==B&&p(C,"invalid scalar length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_ed25519_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_ed25519_base_noclamp(i,e))){var r=o(a,g);return h(C),r}s(C,"scalar is 0")}function $g(A,g,C){var e=[];E(C),A=D(e,A,"n");var B,a=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==a&&p(e,"invalid n length"),B=_(A),e.push(B),g=D(e,g,"p");var i,r=0|I._crypto_scalarmult_ed25519_bytes();g.length!==r&&p(e,"invalid p length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult_ed25519_noclamp(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid point or scalar is 0")}function AI(A,g,C){var e=[];E(C),A=D(e,A,"scalar");var B,a=0|I._crypto_scalarmult_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid scalar length"),B=_(A),e.push(B),g=D(e,g,"element");var i,r=0|I._crypto_scalarmult_ristretto255_bytes();g.length!==r&&p(e,"invalid element length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_ristretto255_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult_ristretto255(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"result is identity element")}function gI(A,g){var C=[];E(g),A=D(C,A,"scalar");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid scalar length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_ristretto255_base(i,e))){var r=o(a,g);return h(C),r}s(C,"scalar is 0")}function II(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_secretbox_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_secretbox_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;B.push(f);var w=new y(0|I._crypto_secretbox_macbytes()),k=w.address;if(B.push(k),!(0|I._crypto_secretbox_detached(f,k,a,i,0,r,Q))){var d=o({mac:w,cipher:n},e);return h(B),d}s(B,"invalid usage")}function CI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_secretbox_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_secretbox_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(i+I._crypto_secretbox_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_secretbox_easy(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function eI(A){var g=[];E(A);var C=new y(0|I._crypto_secretbox_keybytes()),e=C.address;g.push(e),I._crypto_secretbox_keygen(e);var B=o(C,A);return h(g),B}function BI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"ciphertext")),r=A.length;a.push(i),g=D(a,g,"mac");var t,Q=0|I._crypto_secretbox_macbytes();g.length!==Q&&p(a,"invalid mac length"),t=_(g),a.push(t),C=D(a,C,"nonce");var c,n=0|I._crypto_secretbox_noncebytes();C.length!==n&&p(a,"invalid nonce length"),c=_(C),a.push(c),e=D(a,e,"key");var f,w=0|I._crypto_secretbox_keybytes();e.length!==w&&p(a,"invalid key length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;if(a.push(d),!(0|I._crypto_secretbox_open_detached(d,i,t,r,0,c,f))){var l=o(k,B);return h(a),l}s(a,"wrong secret key for the given ciphertext")}function aI(A,g,C,e){var B=[];E(e),A=D(B,A,"ciphertext");var a,i=I._crypto_secretbox_macbytes(),r=A.length;r<i&&p(B,"ciphertext is too short"),a=_(A),B.push(a),g=D(B,g,"nonce");var t,Q=0|I._crypto_secretbox_noncebytes();g.length!==Q&&p(B,"invalid nonce length"),t=_(g),B.push(t),C=D(B,C,"key");var c,n=0|I._crypto_secretbox_keybytes();C.length!==n&&p(B,"invalid key length"),c=_(C),B.push(c);var f=new y(r-I._crypto_secretbox_macbytes()|0),w=f.address;if(B.push(w),!(0|I._crypto_secretbox_open_easy(w,a,r,0,t,c))){var k=o(f,e);return h(B),k}s(B,"wrong secret key for the given ciphertext")}function iI(A,g,C){var e=[];E(C),A=D(e,A,"header");var B,a=0|I._crypto_secretstream_xchacha20poly1305_headerbytes();A.length!==a&&p(e,"invalid header length"),B=_(A),e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_secretstream_xchacha20poly1305_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(52).address;if(!(0|I._crypto_secretstream_xchacha20poly1305_init_pull(t,B,i))){var Q=t;return h(e),Q}s(e,"invalid usage")}function rI(A,g){var C=[];E(g),A=D(C,A,"key");var e,B=0|I._crypto_secretstream_xchacha20poly1305_keybytes();A.length!==B&&p(C,"invalid key length"),e=_(A),C.push(e);var a=new y(52).address,i=new y(0|I._crypto_secretstream_xchacha20poly1305_headerbytes()),r=i.address;if(C.push(r),!(0|I._crypto_secretstream_xchacha20poly1305_init_push(a,r,e))){var t={state:a,header:o(i,g)};return h(C),t}s(C,"invalid usage")}function tI(A){var g=[];E(A);var C=new y(0|I._crypto_secretstream_xchacha20poly1305_keybytes()),e=C.address;g.push(e),I._crypto_secretstream_xchacha20poly1305_keygen(e);var B=o(C,A);return h(g),B}function QI(A,g,C,e){var B=[];E(e),f(B,A,"state_address"),g=D(B,g,"cipher");var a,i=I._crypto_secretstream_xchacha20poly1305_abytes(),r=g.length;r<i&&p(B,"cipher is too short"),a=_(g),B.push(a);var t=null,Q=0;null!=C&&(t=_(C=D(B,C,"ad")),Q=C.length,B.push(t));var c=new y(r-I._crypto_secretstream_xchacha20poly1305_abytes()|0),s=c.address;B.push(s);var w,k=(w=n(1),B.push(w),(k=0===I._crypto_secretstream_xchacha20poly1305_pull(A,s,0,w,a,r,0,t,Q)&&{tag:I.HEAPU8[w],message:c})&&{message:o(k.message,e),tag:k.tag});return h(B),k}function oI(A,g,C,e,B){var a=[];E(B),f(a,A,"state_address");var i=_(g=D(a,g,"message_chunk")),r=g.length;a.push(i);var t=null,Q=0;null!=C&&(t=_(C=D(a,C,"ad")),Q=C.length,a.push(t)),f(a,e,"tag"),("number"!=typeof e||(0|e)!==e||e<0)&&p(a,"tag must be an unsigned integer");var c=new y(r+I._crypto_secretstream_xchacha20poly1305_abytes()|0),n=c.address;if(a.push(n),!(0|I._crypto_secretstream_xchacha20poly1305_push(A,n,0,i,r,0,t,Q,0,e))){var w=o(c,B);return h(a),w}s(a,"invalid usage")}function cI(A,g){var C=[];return E(g),f(C,A,"state_address"),I._crypto_secretstream_xchacha20poly1305_rekey(A),h(C),!0}function EI(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_shorthash_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_shorthash_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_shorthash(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function yI(A){var g=[];E(A);var C=new y(0|I._crypto_shorthash_keybytes()),e=C.address;g.push(e),I._crypto_shorthash_keygen(e);var B=o(C,A);return h(g),B}function _I(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_shorthash_siphashx24_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_shorthash_siphashx24_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_shorthash_siphashx24(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function nI(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_sign_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(A.length+I._crypto_sign_bytes()|0),Q=t.address;if(e.push(Q),!(0|I._crypto_sign(Q,null,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function hI(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_sign_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_sign_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_sign_detached(Q,null,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function sI(A,g){var C=[];E(g),A=D(C,A,"edPk");var e,B=0|I._crypto_sign_publickeybytes();A.length!==B&&p(C,"invalid edPk length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_pk_to_curve25519(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function pI(A,g){var C=[];E(g),A=D(C,A,"edSk");var e,B=0|I._crypto_sign_secretkeybytes();A.length!==B&&p(C,"invalid edSk length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_sk_to_curve25519(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function fI(A,g){var C=[];E(g),A=D(C,A,"privateKey");var e,B=0|I._crypto_sign_secretkeybytes();A.length!==B&&p(C,"invalid privateKey length"),e=_(A),C.push(e);var a=new y(0|I._crypto_sign_publickeybytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_sk_to_pk(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function DI(A,g){var C=[];E(g),A=D(C,A,"privateKey");var e,B=0|I._crypto_sign_secretkeybytes();A.length!==B&&p(C,"invalid privateKey length"),e=_(A),C.push(e);var a=new y(0|I._crypto_sign_seedbytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_sk_to_seed(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function wI(A,g,C){var e=[];E(C),f(e,A,"state_address"),g=D(e,g,"privateKey");var B,a=0|I._crypto_sign_secretkeybytes();g.length!==a&&p(e,"invalid privateKey length"),B=_(g),e.push(B);var i=new y(0|I._crypto_sign_bytes()),r=i.address;if(e.push(r),!(0|I._crypto_sign_final_create(A,r,null,B))){var t=(I._free(A),o(i,C));return h(e),t}s(e,"invalid usage")}function kI(A,g,C,e){var B=[];E(e),f(B,A,"state_address"),g=D(B,g,"signature");var a,i=0|I._crypto_sign_bytes();g.length!==i&&p(B,"invalid signature length"),a=_(g),B.push(a),C=D(B,C,"publicKey");var r,t=0|I._crypto_sign_publickeybytes();C.length!==t&&p(B,"invalid publicKey length"),r=_(C),B.push(r);var Q=!(0|I._crypto_sign_final_verify(A,a,r));return h(B),Q}function dI(A){var g=[];E(A);var C=new y(208).address;if(!(0|I._crypto_sign_init(C))){var e=C;return h(g),e}s(g,"internal error")}function lI(A){var g=[];E(A);var C=new y(0|I._crypto_sign_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_sign_secretkeybytes()),a=B.address;if(g.push(a),!(0|I._crypto_sign_keypair(e,a))){var i={publicKey:o(C,A),privateKey:o(B,A),keyType:"ed25519"};return h(g),i}s(g,"internal error")}function uI(A,g,C){var e=[];E(C),A=D(e,A,"signedMessage");var B,a=I._crypto_sign_bytes(),i=A.length;i<a&&p(e,"signedMessage is too short"),B=_(A),e.push(B),g=D(e,g,"publicKey");var r,t=0|I._crypto_sign_publickeybytes();g.length!==t&&p(e,"invalid publicKey length"),r=_(g),e.push(r);var Q=new y(i-I._crypto_sign_bytes()|0),c=Q.address;if(e.push(c),!(0|I._crypto_sign_open(c,null,B,i,0,r))){var n=o(Q,C);return h(e),n}s(e,"incorrect signature for the given public key")}function vI(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_sign_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_sign_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_sign_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_sign_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"ed25519"};return h(C),Q}s(C,"invalid usage")}function SI(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_sign_update(A,B,a,0)&&s(e,"invalid usage"),h(e)}function bI(A,g,C){var e=[];A=D(e,A,"signature");var B,a=0|I._crypto_sign_bytes();A.length!==a&&p(e,"invalid signature length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"publicKey");var t,Q=0|I._crypto_sign_publickeybytes();C.length!==Q&&p(e,"invalid publicKey length"),t=_(C),e.push(t);var o=!(0|I._crypto_sign_verify_detached(B,i,r,0,t));return h(e),o}function MI(A,g,C,e){var B=[];E(e),f(B,A,"outLength"),("number"!=typeof A||(0|A)!==A||A<0)&&p(B,"outLength must be an unsigned integer"),g=D(B,g,"key");var a,i=0|I._crypto_stream_chacha20_keybytes();g.length!==i&&p(B,"invalid key length"),a=_(g),B.push(a),C=D(B,C,"nonce");var r,t=0|I._crypto_stream_chacha20_noncebytes();C.length!==t&&p(B,"invalid nonce length"),r=_(C),B.push(r);var Q=new y(0|A),c=Q.address;B.push(c),I._crypto_stream_chacha20(c,A,0,r,a);var n=o(Q,e);return h(B),n}function FI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"input_message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_stream_chacha20_ietf_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_stream_chacha20_ietf_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;if(B.push(f),0===I._crypto_stream_chacha20_ietf_xor(f,a,i,0,r,Q)){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function NI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"input_message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_stream_chacha20_ietf_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),f(a,C,"nonce_increment"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"nonce_increment must be an unsigned integer"),e=D(a,e,"key");var c,n=0|I._crypto_stream_chacha20_ietf_keybytes();e.length!==n&&p(a,"invalid key length"),c=_(e),a.push(c);var w=new y(0|r),k=w.address;if(a.push(k),0===I._crypto_stream_chacha20_ietf_xor_ic(k,i,r,0,t,C,c)){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function KI(A){var g=[];E(A);var C=new y(0|I._crypto_stream_chacha20_keybytes()),e=C.address;g.push(e),I._crypto_stream_chacha20_keygen(e);var B=o(C,A);return h(g),B}function YI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"input_message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_stream_chacha20_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_stream_chacha20_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;if(B.push(f),0===I._crypto_stream_chacha20_xor(f,a,i,0,r,Q)){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function HI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"input_message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_stream_chacha20_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),f(a,C,"nonce_increment"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"nonce_increment must be an unsigned integer"),e=D(a,e,"key");var c,n=0|I._crypto_stream_chacha20_keybytes();e.length!==n&&p(a,"invalid key length"),c=_(e),a.push(c);var w=new y(0|r),k=w.address;if(a.push(k),0===I._crypto_stream_chacha20_xor_ic(k,i,r,0,t,C,0,c)){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function GI(A){var g=[];E(A);var C=new y(0|I._crypto_stream_keybytes()),e=C.address;g.push(e),I._crypto_stream_keygen(e);var B=o(C,A);return h(g),B}function JI(A){var g=[];E(A);var C=new y(0|I._crypto_stream_xchacha20_keybytes()),e=C.address;g.push(e),I._crypto_stream_xchacha20_keygen(e);var B=o(C,A);return h(g),B}function UI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"input_message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_stream_xchacha20_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_stream_xchacha20_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;if(B.push(f),0===I._crypto_stream_xchacha20_xor(f,a,i,0,r,Q)){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function xI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"input_message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_stream_xchacha20_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),f(a,C,"nonce_increment"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"nonce_increment must be an unsigned integer"),e=D(a,e,"key");var c,n=0|I._crypto_stream_xchacha20_keybytes();e.length!==n&&p(a,"invalid key length"),c=_(e),a.push(c);var w=new y(0|r),k=w.address;if(a.push(k),0===I._crypto_stream_xchacha20_xor_ic(k,i,r,0,t,C,0,c)){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function mI(A,g){var C=[];E(g),f(C,A,"length"),("number"!=typeof A||(0|A)!==A||A<0)&&p(C,"length must be an unsigned integer");var e=new y(0|A),B=e.address;C.push(B),I._randombytes_buf(B,A);var a=o(e,g);return h(C),a}function PI(A,g,C){var e=[];E(C),f(e,A,"length"),("number"!=typeof A||(0|A)!==A||A<0)&&p(e,"length must be an unsigned integer"),g=D(e,g,"seed");var B,a=0|I._randombytes_seedbytes();g.length!==a&&p(e,"invalid seed length"),B=_(g),e.push(B);var i=new y(0|A),r=i.address;e.push(r),I._randombytes_buf_deterministic(r,A,B);var t=o(i,C);return h(e),t}function RI(A){E(A),I._randombytes_close()}function LI(A){E(A);var g=I._randombytes_random()>>>0;return h([]),g}function TI(A,g){var C=[];E(g);for(var e=I._malloc(24),B=0;B<6;B++)I.setValue(e+4*B,I.Runtime.addFunction(A[["implementation_name","random","stir","uniform","buf","close"][B]]),"i32");0|I._randombytes_set_implementation(e)&&s(C,"unsupported implementation"),h(C)}function qI(A){E(A),I._randombytes_stir()}function zI(A,g){var C=[];E(g),f(C,A,"upper_bound"),("number"!=typeof A||(0|A)!==A||A<0)&&p(C,"upper_bound must be an unsigned integer");var e=I._randombytes_uniform(A)>>>0;return h(C),e}function jI(){var A=I._sodium_version_string(),g=I.UTF8ToString(A);return h([]),g}return y.prototype.to_Uint8Array=function(){var A=new Uint8Array(this.length);return A.set(I.HEAPU8.subarray(this.address,this.address+this.length)),A},A.add=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can added");var I=A.length,C=0,e=0;if(g.length!=A.length)throw new TypeError("Arguments must have the same length");for(e=0;e<I;e++)C>>=8,C+=A[e]+g[e],A[e]=255&C},A.base64_variants=r,A.compare=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(A.length!==g.length)throw new TypeError("Only instances of identical length can be compared");for(var I=0,C=1,e=A.length;e-- >0;)I|=g[e]-A[e]>>8&C,C&=(g[e]^A[e])-1>>8;return I+I+C-1},A.from_base64=function(A,g){g=t(g);var C,e=[],B=new y(3*(A=D(e,A,"input")).length/4),a=_(A),i=n(4),r=n(4);return e.push(a),e.push(B.address),e.push(B.result_bin_len_p),e.push(B.b64_end_p),0!==I._sodium_base642bin(B.address,B.length,a,A.length,0,i,r,g)&&s(e,"invalid input"),I.getValue(r,"i32")-a!==A.length&&s(e,"incomplete input"),B.length=I.getValue(i,"i32"),C=B.to_Uint8Array(),h(e),C},A.from_hex=function(A){var g,C=[],e=new y((A=D(C,A,"input")).length/2),B=_(A),a=n(4);return C.push(B),C.push(e.address),C.push(e.hex_end_p),0!==I._sodium_hex2bin(e.address,e.length,B,A.length,0,0,a)&&s(C,"invalid input"),I.getValue(a,"i32")-B!==A.length&&s(C,"incomplete input"),g=e.to_Uint8Array(),h(C),g},A.from_string=B,A.increment=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be incremented");for(var g=256,I=0,C=A.length;I<C;I++)g>>=8,g+=A[I],A[I]=255&g},A.is_zero=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be checked");for(var g=0,I=0,C=A.length;I<C;I++)g|=A[I];return 0===g},A.libsodium=g,A.memcmp=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(A.length!==g.length)throw new TypeError("Only instances of identical length can be compared");for(var I=0,C=0,e=A.length;C<e;C++)I|=A[C]^g[C];return 0===I},A.memzero=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be wiped");for(var g=0,I=A.length;g<I;g++)A[g]=0},A.output_formats=function(){return["uint8array","text","hex","base64"]},A.pad=function(A,g){if(!(A instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((g|=0)<=0)throw new Error("block size must be > 0");var C,e=[],B=n(4),a=1,i=0,r=0|A.length,t=new y(r+g);e.push(B),e.push(t.address);for(var Q=t.address,o=t.address+r+g;Q<o;Q++)I.HEAPU8[Q]=A[i],i+=a=1&~((65535&((r-=a)>>>48|r>>>32|r>>>16|r))-1>>16);return 0!==I._sodium_pad(B,t.address,A.length,g,t.length)&&s(e,"internal error"),t.length=I.getValue(B,"i32"),C=t.to_Uint8Array(),h(e),C},A.unpad=function(A,g){if(!(A instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((g|=0)<=0)throw new Error("block size must be > 0");var C=[],e=_(A),B=n(4);return C.push(e),C.push(B),0!==I._sodium_unpad(B,e,A.length,g)&&s(C,"unsupported/invalid padding"),A=(A=new Uint8Array(A)).subarray(0,I.getValue(B,"i32")),h(C),A},A.ready=e,A.symbols=function(){return Object.keys(A).sort()},A.to_base64=Q,A.to_hex=i,A.to_string=a,A}var I="object"==typeof A.sodium&&"function"==typeof A.sodium.onload?A.sodium.onload:null;"function"==typeof define&&define.amd?define(["exports","libsodium"],g):"object"==typeof exports&&"string"!=typeof exports.nodeName?g(exports,require("libsodium")):A.sodium=g(A.commonJsStrict={},A.libsodium),I&&A.sodium.ready.then((function(){I(A.sodium)}))}(this);
/public/bootstrap.bundle.min.js
Code: Select all
/*!
* Bootstrap v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function j(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function M(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${M(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${M(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=j(t.dataset[n])}return e},getDataAttribute:(t,e)=>j(t.getAttribute(`data-bs-${M(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e?e.split(",").map((t=>n(t))).join(","):null},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",jt="collapsing",Mt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(jt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(jt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(jt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(jt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(Mt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function je(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const Me={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:je(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:je(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C<v.length;C++){var O=v[C],x=be(O),k=Fe(O)===Xt,L=[zt,Rt].indexOf(x)>=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},j=p?3:1;j>0&&"break"!==P(j);j--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],j=f?-T[$]/2:0,M=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-j-q-z-O.mainAxis:M-q-z-O.mainAxis,K=v?-E[$]/2+j+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&"function"==typeof t.getBoundingClientRect)}))}function mi(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?fi:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},fi,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:pe(t)?Je(t):t.contextElement?Je(t.contextElement):[],popper:Je(e)};var r,c,u=function(t){var e=ui(t);return de.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(c).map((function(t){return c[t]}))));return a.orderedModifiers=u.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if("function"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(pi(e,i)){a.rects={reference:di(e,$e(i),"fixed"===a.options.strategy),popper:Ce(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!pi(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var gi=mi(),_i=mi({defaultModifiers:[Re,ci,Be,_e]}),bi=mi({defaultModifiers:[Re,ci,Be,_e,li,si,hi,Me,ai]});const vi=Object.freeze(Object.defineProperty({__proto__:null,afterMain:ae,afterRead:se,afterWrite:he,applyStyles:_e,arrow:Me,auto:Kt,basePlacements:Qt,beforeMain:oe,beforeRead:ie,beforeWrite:le,bottom:Rt,clippingParents:Ut,computeStyles:Be,createPopper:bi,createPopperBase:gi,createPopperLite:_i,detectOverflow:ii,end:Yt,eventListeners:Re,flip:si,hide:ai,left:Vt,main:re,modifierPhases:de,offset:li,placements:ee,popper:Jt,popperGenerator:mi,popperOffsets:ci,preventOverflow:hi,read:ne,reference:Zt,right:qt,start:Xt,top:zt,variationPlacements:te,viewport:Gt,write:ce},Symbol.toStringTag,{value:"Module"})),yi="dropdown",wi=".bs.dropdown",Ai=".data-api",Ei="ArrowUp",Ti="ArrowDown",Ci=`hide${wi}`,Oi=`hidden${wi}`,xi=`show${wi}`,ki=`shown${wi}`,Li=`click${wi}${Ai}`,Si=`keydown${wi}${Ai}`,Di=`keyup${wi}${Ai}`,$i="show",Ii='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ni=`${Ii}.${$i}`,Pi=".dropdown-menu",ji=p()?"top-end":"top-start",Mi=p()?"top-start":"top-end",Fi=p()?"bottom-end":"bottom-start",Hi=p()?"bottom-start":"bottom-end",Wi=p()?"left-start":"right-start",Bi=p()?"right-start":"left-start",zi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Ri={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class qi extends W{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=z.next(this._element,Pi)[0]||z.prev(this._element,Pi)[0]||z.findOne(Pi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return zi}static get DefaultType(){return Ri}static get NAME(){return yi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(l(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!N.trigger(this._element,xi,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add($i),this._element.classList.add($i),N.trigger(this._element,ki,t)}}hide(){if(l(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!N.trigger(this._element,Ci,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._popper&&this._popper.destroy(),this._menu.classList.remove($i),this._element.classList.remove($i),this._element.setAttribute("aria-expanded","false"),F.removeDataAttribute(this._menu,"popper"),N.trigger(this._element,Oi,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!o(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${yi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===vi)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:o(this._config.reference)?t=r(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=bi(t,this._menu,e)}_isShown(){return this._menu.classList.contains($i)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Wi;if(t.classList.contains("dropstart"))return Bi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?Mi:ji:e?Hi:Fi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,jn=`hide${xn}`,Mn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,jn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,Mn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,Mn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",js="Home",Ms="End",Fs="active",Hs="fade",Ws="show",Bs=".dropdown-toggle",zs=`:not(${Bs})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ks extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,js,Ms].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([js,Ms].includes(t.key))i=e[t.key===js?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ks.getOrCreateInstance(i).show())}_getChildren(){return z.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(Bs,Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:z.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ks.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Ks.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(Vs))Ks.getOrCreateInstance(t)})),m(Ks);const Qs=".bs.toast",Xs=`mouseover${Qs}`,Ys=`mouseout${Qs}`,Us=`focusin${Qs}`,Gs=`focusout${Qs}`,Js=`hide${Qs}`,Zs=`hidden${Qs}`,to=`show${Qs}`,eo=`shown${Qs}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){N.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),d(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),N.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),N.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Xs,(t=>this._onInteraction(t,!0))),N.on(this._element,Ys,(t=>this._onInteraction(t,!1))),N.on(this._element,Us,(t=>this._onInteraction(t,!0))),N.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ao),m(ao),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Ks,Toast:ao,Tooltip:cs}}));
Code: Select all
@charset "UTF-8";/*!
* Bootstrap v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-emphasis-color);--bs-table-striped-bg:rgba(var(--bs-emphasis-color-rgb), 0.05);--bs-table-active-color:var(--bs-emphasis-color);--bs-table-active-bg:rgba(var(--bs-emphasis-color-rgb), 0.1);--bs-table-hover-color:var(--bs-emphasis-color);--bs-table-hover-bg:rgba(var(--bs-emphasis-color-rgb), 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-table-striped-color);--bs-table-bg-type:var(--bs-table-striped-bg)}.table-active{--bs-table-color-state:var(--bs-table-active-color);--bs-table-bg-state:var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-table-hover-color);--bs-table-bg-state:var(--bs-table-hover-bg)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#a6b5cc;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#b5b6b7;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#a7b9b1;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#a6c3ca;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#ccc2a4;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#c6acae;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#c6c7c8;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0!important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg:var(--bs-body-bg);flex-shrink:0;width:1em;height:1em;margin-top:.25em;vertical-align:top;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;-webkit-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;-moz-appearance:none;appearance:none;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:var(--bs-secondary-bg);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:not(:-moz-placeholder-shown)~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control-plaintext~label::after,.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem 0.375rem;z-index:-1;height:1.5em;content:"";background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb),.65);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label,.form-floating>:disabled~label{color:#6c757d}.form-floating>.form-control:disabled~label::after,.form-floating>:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-form-valid-border-color)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-form-valid-border-color)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-form-valid-color)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-success-rgb),.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-form-invalid-border-color)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-form-invalid-border-color)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-form-invalid-color)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(var(--bs-danger-rgb),.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked:focus-visible+.btn{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:0 0 0 #000;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-border-radius)}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg:var(--bs-body-bg);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:var(--bs-border-radius);--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap:1rem;--bs-nav-underline-border-width:0.125rem;--bs-nav-underline-link-active-color:var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}.nav-underline .nav-link:focus,.nav-underline .nav-link:hover{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e");--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text-emphasis);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-top:0}.accordion-flush>.accordion-item:last-child{border-bottom:0}.accordion-flush>.accordion-item>.accordion-header .accordion-button,.accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}.accordion-flush>.accordion-item>.accordion-collapse{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text-emphasis);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text-emphasis);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color:var(--bs-success-text-emphasis);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color:var(--bs-info-text-emphasis);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color:var(--bs-warning-text-emphasis);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color:var(--bs-danger-text-emphasis);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color:var(--bs-light-text-emphasis);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color:var(--bs-dark-text-emphasis);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text-emphasis);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-primary-border-subtle);--bs-list-group-active-color:var(--bs-primary-bg-subtle);--bs-list-group-active-bg:var(--bs-primary-text-emphasis);--bs-list-group-active-border-color:var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text-emphasis);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-secondary-border-subtle);--bs-list-group-active-color:var(--bs-secondary-bg-subtle);--bs-list-group-active-bg:var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color:var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text-emphasis);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-success-border-subtle);--bs-list-group-active-color:var(--bs-success-bg-subtle);--bs-list-group-active-bg:var(--bs-success-text-emphasis);--bs-list-group-active-border-color:var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text-emphasis);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-info-border-subtle);--bs-list-group-active-color:var(--bs-info-bg-subtle);--bs-list-group-active-bg:var(--bs-info-text-emphasis);--bs-list-group-active-border-color:var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text-emphasis);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-warning-border-subtle);--bs-list-group-active-color:var(--bs-warning-bg-subtle);--bs-list-group-active-bg:var(--bs-warning-text-emphasis);--bs-list-group-active-border-color:var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text-emphasis);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-danger-border-subtle);--bs-list-group-active-color:var(--bs-danger-bg-subtle);--bs-list-group-active-bg:var(--bs-danger-text-emphasis);--bs-list-group-active-border-color:var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text-emphasis);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-light-border-subtle);--bs-list-group-active-color:var(--bs-light-bg-subtle);--bs-list-group-active-bg:var(--bs-light-text-emphasis);--bs-list-group-active-border-color:var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text-emphasis);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle);--bs-list-group-action-active-color:var(--bs-emphasis-color);--bs-list-group-action-active-bg:var(--bs-dark-border-subtle);--bs-list-group-active-color:var(--bs-dark-bg-subtle);--bs-list-group-active-bg:var(--bs-dark-text-emphasis);--bs-list-group-active-border-color:var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:var(--bs-border-width);--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:var(--bs-box-shadow-sm);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - (var(--bs-border-width)));--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:var(--bs-border-width);--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:var(--bs-border-width);position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(-.5 * var(--bs-modal-header-padding-y)) calc(-.5 * var(--bs-modal-header-padding-x)) calc(-.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:var(--bs-box-shadow)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:var(--bs-box-shadow-sm);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin:calc(-.5 * var(--bs-offcanvas-padding-y)) calc(-.5 * var(--bs-offcanvas-padding-x)) calc(-.5 * var(--bs-offcanvas-padding-y)) auto}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(var(--bs-primary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(var(--bs-success-rgb),var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(var(--bs-info-rgb),var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(var(--bs-warning-rgb),var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(var(--bs-danger-rgb),var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(var(--bs-light-rgb),var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(var(--bs-dark-rgb),var(--bs-bg-opacity,1))!important}.link-primary{color:RGBA(var(--bs-primary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-primary-rgb),var(--bs-link-underline-opacity,1))!important}.link-primary:focus,.link-primary:hover{color:RGBA(10,88,202,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(10,88,202,var(--bs-link-underline-opacity,1))!important}.link-secondary{color:RGBA(var(--bs-secondary-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-secondary-rgb),var(--bs-link-underline-opacity,1))!important}.link-secondary:focus,.link-secondary:hover{color:RGBA(86,94,100,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(86,94,100,var(--bs-link-underline-opacity,1))!important}.link-success{color:RGBA(var(--bs-success-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-success-rgb),var(--bs-link-underline-opacity,1))!important}.link-success:focus,.link-success:hover{color:RGBA(20,108,67,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(20,108,67,var(--bs-link-underline-opacity,1))!important}.link-info{color:RGBA(var(--bs-info-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-info-rgb),var(--bs-link-underline-opacity,1))!important}.link-info:focus,.link-info:hover{color:RGBA(61,213,243,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(61,213,243,var(--bs-link-underline-opacity,1))!important}.link-warning{color:RGBA(var(--bs-warning-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-warning-rgb),var(--bs-link-underline-opacity,1))!important}.link-warning:focus,.link-warning:hover{color:RGBA(255,205,57,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(255,205,57,var(--bs-link-underline-opacity,1))!important}.link-danger{color:RGBA(var(--bs-danger-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-danger-rgb),var(--bs-link-underline-opacity,1))!important}.link-danger:focus,.link-danger:hover{color:RGBA(176,42,55,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(176,42,55,var(--bs-link-underline-opacity,1))!important}.link-light{color:RGBA(var(--bs-light-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-light-rgb),var(--bs-link-underline-opacity,1))!important}.link-light:focus,.link-light:hover{color:RGBA(249,250,251,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(249,250,251,var(--bs-link-underline-opacity,1))!important}.link-dark{color:RGBA(var(--bs-dark-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-dark-rgb),var(--bs-link-underline-opacity,1))!important}.link-dark:focus,.link-dark:hover{color:RGBA(26,30,33,var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(26,30,33,var(--bs-link-underline-opacity,1))!important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,1))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-body-emphasis:focus,.link-body-emphasis:hover{color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-opacity,.75))!important;-webkit-text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb),var(--bs-link-underline-opacity,0.75))!important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x,0) var(--bs-focus-ring-y,0) var(--bs-focus-ring-blur,0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:focus-visible>.bi,.icon-link-hover:hover>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption),.visually-hidden:not(caption){position:absolute!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-inline-grid{display:inline-grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)!important}.shadow-none{box-shadow:none!important}.focus-ring-primary{--bs-focus-ring-color:rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color:rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color:rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color:rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color:rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color:rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color:rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color:rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-black{--bs-border-opacity:1;border-color:rgba(var(--bs-black-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:.25rem!important}.row-gap-2{row-gap:.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.column-gap-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:lighter!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis)!important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis)!important}.text-success-emphasis{color:var(--bs-success-text-emphasis)!important}.text-info-emphasis{color:var(--bs-info-text-emphasis)!important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis)!important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis)!important}.text-light-emphasis{color:var(--bs-light-text-emphasis)!important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis)!important}.link-opacity-10{--bs-link-opacity:0.1}.link-opacity-10-hover:hover{--bs-link-opacity:0.1}.link-opacity-25{--bs-link-opacity:0.25}.link-opacity-25-hover:hover{--bs-link-opacity:0.25}.link-opacity-50{--bs-link-opacity:0.5}.link-opacity-50-hover:hover{--bs-link-opacity:0.5}.link-opacity-75{--bs-link-opacity:0.75}.link-opacity-75-hover:hover{--bs-link-opacity:0.75}.link-opacity-100{--bs-link-opacity:1}.link-opacity-100-hover:hover{--bs-link-opacity:1}.link-offset-1{text-underline-offset:0.125em!important}.link-offset-1-hover:hover{text-underline-offset:0.125em!important}.link-offset-2{text-underline-offset:0.25em!important}.link-offset-2-hover:hover{text-underline-offset:0.25em!important}.link-offset-3{text-underline-offset:0.375em!important}.link-offset-3-hover:hover{text-underline-offset:0.375em!important}.link-underline-primary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-primary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-secondary{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-secondary-rgb),var(--bs-link-underline-opacity))!important}.link-underline-success{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-success-rgb),var(--bs-link-underline-opacity))!important}.link-underline-info{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-info-rgb),var(--bs-link-underline-opacity))!important}.link-underline-warning{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-warning-rgb),var(--bs-link-underline-opacity))!important}.link-underline-danger{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-danger-rgb),var(--bs-link-underline-opacity))!important}.link-underline-light{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-light-rgb),var(--bs-link-underline-opacity))!important}.link-underline-dark{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important;text-decoration-color:rgba(var(--bs-dark-rgb),var(--bs-link-underline-opacity))!important}.link-underline{--bs-link-underline-opacity:1;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important;text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-underline-opacity,1))!important}.link-underline-opacity-0{--bs-link-underline-opacity:0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity:0}.link-underline-opacity-10{--bs-link-underline-opacity:0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity:0.1}.link-underline-opacity-25{--bs-link-underline-opacity:0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity:0.25}.link-underline-opacity-50{--bs-link-underline-opacity:0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity:0.5}.link-underline-opacity-75{--bs-link-underline-opacity:0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity:0.75}.link-underline-opacity-100{--bs-link-underline-opacity:1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-xxl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl)!important;border-top-right-radius:var(--bs-border-radius-xxl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-right-radius:var(--bs-border-radius-xxl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl)!important;border-bottom-left-radius:var(--bs-border-radius-xxl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl)!important;border-top-left-radius:var(--bs-border-radius-xxl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-inline-grid{display:inline-grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:.25rem!important}.row-gap-sm-2{row-gap:.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.column-gap-sm-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-sm-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-sm-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-inline-grid{display:inline-grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:.25rem!important}.row-gap-md-2{row-gap:.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.column-gap-md-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-md-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-md-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-inline-grid{display:inline-grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:.25rem!important}.row-gap-lg-2{row-gap:.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.column-gap-lg-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-lg-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-lg-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-inline-grid{display:inline-grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:.25rem!important}.row-gap-xl-2{row-gap:.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.column-gap-xl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-inline-grid{display:inline-grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:.25rem!important}.row-gap-xxl-2{row-gap:.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.column-gap-xxl-0{-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-moz-column-gap:0.25rem!important;column-gap:.25rem!important}.column-gap-xxl-2{-moz-column-gap:0.5rem!important;column-gap:.5rem!important}.column-gap-xxl-3{-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-moz-column-gap:3rem!important;column-gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-inline-grid{display:inline-grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
Code: Select all
/**
* Minified by jsDelivr using Terser v5.37.0.
* Original file: /npm/bson@6.8.0/lib/bson.bundle.js
*
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
*/
var BSON=function(e){"use strict";function t(e){return["[object ArrayBuffer]","[object SharedArrayBuffer]"].includes(Object.prototype.toString.call(e))}function n(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)}function r(e){return"[object RegExp]"===Object.prototype.toString.call(e)}function i(e){return"[object Map]"===Object.prototype.toString.call(e)}function o(e){return"[object Date]"===Object.prototype.toString.call(e)}function s(e,t){return JSON.stringify(e,((e,t)=>"bigint"==typeof t?{$numberLong:`${t}`}:i(t)?Object.fromEntries(t):t))}const f=2147483647,u=-2147483648,l=Math.pow(2,63)-1,a=-Math.pow(2,63),h=Math.pow(2,53),c=-Math.pow(2,53),g=Object.freeze({double:1,string:2,object:3,array:4,binData:5,undefined:6,objectId:7,bool:8,date:9,null:10,regex:11,dbPointer:12,javascript:13,symbol:14,javascriptWithScope:15,int:16,timestamp:17,long:18,decimal:19,minKey:-1,maxKey:127});class b extends Error{get bsonError(){return!0}get name(){return"BSONError"}constructor(e,t){super(e,t)}static isBSONError(e){return null!=e&&"object"==typeof e&&"bsonError"in e&&!0===e.bsonError&&"name"in e&&"message"in e&&"stack"in e}}class d extends b{get name(){return"BSONVersionError"}constructor(){super("Unsupported BSON version, bson types must be from bson 6.x.x")}}class p extends b{get name(){return"BSONRuntimeError"}constructor(e){super(e)}}class m extends b{get name(){return"BSONOffsetError"}constructor(e,t,n){super(`${e}. offset: ${t}`,n),this.offset=t}}let y,w;function B(e,t,n,r){if(r){y??=new TextDecoder("utf8",{fatal:!0});try{return y.decode(e.subarray(t,n))}catch(e){throw new b("Invalid UTF-8 string in BSON document",{cause:e})}}return w??=new TextDecoder("utf8",{fatal:!1}),w.decode(e.subarray(t,n))}function S(e,t,n){if(0===e.length)return"";const r=n-t;if(0===r)return"";if(r>20)return null;if(1===r&&e[t]<128)return String.fromCharCode(e[t]);if(2===r&&e[t]<128&&e[t+1]<128)return String.fromCharCode(e[t])+String.fromCharCode(e[t+1]);if(3===r&&e[t]<128&&e[t+1]<128&&e[t+2]<128)return String.fromCharCode(e[t])+String.fromCharCode(e[t+1])+String.fromCharCode(e[t+2]);const i=[];for(let r=t;r<n;r++){const t=e[r];if(t>127)return null;i.push(t)}return String.fromCharCode(...i)}function N(e){return O.fromNumberArray(Array.from({length:e},(()=>Math.floor(256*Math.random()))))}const E=(()=>{try{return require("crypto").randomBytes}catch{return N}})(),O={toLocalBufferType(e){if(Buffer.isBuffer(e))return e;if(ArrayBuffer.isView(e))return Buffer.from(e.buffer,e.byteOffset,e.byteLength);const t=e?.[Symbol.toStringTag]??Object.prototype.toString.call(e);if("ArrayBuffer"===t||"SharedArrayBuffer"===t||"[object ArrayBuffer]"===t||"[object SharedArrayBuffer]"===t)return Buffer.from(e);throw new b(`Cannot create Buffer from ${String(e)}`)},allocate:e=>Buffer.alloc(e),allocateUnsafe:e=>Buffer.allocUnsafe(e),equals:(e,t)=>O.toLocalBufferType(e).equals(t),fromNumberArray:e=>Buffer.from(e),fromBase64:e=>Buffer.from(e,"base64"),toBase64:e=>O.toLocalBufferType(e).toString("base64"),fromISO88591:e=>Buffer.from(e,"binary"),toISO88591:e=>O.toLocalBufferType(e).toString("binary"),fromHex:e=>Buffer.from(e,"hex"),toHex:e=>O.toLocalBufferType(e).toString("hex"),toUTF8(e,t,n,r){const i=n-t<=20?S(e,t,n):null;if(null!=i)return i;const o=O.toLocalBufferType(e).toString("utf8",t,n);if(r)for(let r=0;r<o.length;r++)if(65533===o.charCodeAt(r)){B(e,t,n,!0);break}return o},utf8ByteLength:e=>Buffer.byteLength(e,"utf8"),encodeUTF8Into(e,t,n){const r=function(e,t,n){if(0===t.length)return 0;if(t.length>25)return null;if(e.length-n<t.length)return null;for(let r=0,i=n;r<t.length;r++,i++){const n=t.charCodeAt(r);if(n>127)return null;e[i]=n}return t.length}(e,t,n);return null!=r?r:O.toLocalBufferType(e).write(t,n,void 0,"utf8")},randomBytes:E};function x(e){if(e<0)throw new RangeError(`The argument 'byteLength' is invalid. Received ${e}`);return _.fromNumberArray(Array.from({length:e},(()=>Math.floor(256*Math.random()))))}const I=(()=>{const{crypto:e}=globalThis;if(null!=e&&"function"==typeof e.getRandomValues)return t=>e.getRandomValues(_.allocate(t));if(function(){const{navigator:e}=globalThis;return"object"==typeof e&&"ReactNative"===e.product}()){const{console:e}=globalThis;e?.warn?.("BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.")}return x})(),$=/(\d|[a-f])/i,_={toLocalBufferType(e){const t=e?.[Symbol.toStringTag]??Object.prototype.toString.call(e);if("Uint8Array"===t)return e;if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength));if("ArrayBuffer"===t||"SharedArrayBuffer"===t||"[object ArrayBuffer]"===t||"[object SharedArrayBuffer]"===t)return new Uint8Array(e);throw new b(`Cannot make a Uint8Array from ${String(e)}`)},allocate(e){if("number"!=typeof e)throw new TypeError(`The "size" argument must be of type number. Received ${String(e)}`);return new Uint8Array(e)},allocateUnsafe:e=>_.allocate(e),equals(e,t){if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0},fromNumberArray:e=>Uint8Array.from(e),fromBase64:e=>Uint8Array.from(atob(e),(e=>e.charCodeAt(0))),toBase64:e=>btoa(_.toISO88591(e)),fromISO88591:e=>Uint8Array.from(e,(e=>255&e.charCodeAt(0))),toISO88591:e=>Array.from(Uint16Array.from(e),(e=>String.fromCharCode(e))).join(""),fromHex(e){const t=e.length%2==0?e:e.slice(0,e.length-1),n=[];for(let e=0;e<t.length;e+=2){const r=t[e],i=t[e+1];if(!$.test(r))break;if(!$.test(i))break;const o=Number.parseInt(`${r}${i}`,16);n.push(o)}return Uint8Array.from(n)},toHex:e=>Array.from(e,(e=>e.toString(16).padStart(2,"0"))).join(""),toUTF8(e,t,n,r){const i=n-t<=20?S(e,t,n):null;return null!=i?i:B(e,t,n,r)},utf8ByteLength:e=>(new TextEncoder).encode(e).byteLength,encodeUTF8Into(e,t,n){const r=(new TextEncoder).encode(t);return e.set(r,n),r.byteLength},randomBytes:I},L="function"==typeof Buffer&&!0!==Buffer.prototype?._isBuffer?O:_;class U{get[Symbol.for("@@mdb.bson.version")](){return 6}[Symbol.for("nodejs.util.inspect.custom")](e,t,n){return this.inspect(e,t,n)}}class T extends U{get _bsontype(){return"Binary"}constructor(e,n){if(super(),null!=e&&"string"==typeof e&&!ArrayBuffer.isView(e)&&!t(e)&&!Array.isArray(e))throw new b("Binary can only be constructed from Uint8Array or number[]");this.sub_type=n??T.BSON_BINARY_SUBTYPE_DEFAULT,null==e?(this.buffer=L.allocate(T.BUFFER_SIZE),this.position=0):(this.buffer=Array.isArray(e)?L.fromNumberArray(e):L.toLocalBufferType(e),this.position=this.buffer.byteLength)}put(e){if("string"==typeof e&&1!==e.length)throw new b("only accepts single character String");if("number"!=typeof e&&1!==e.length)throw new b("only accepts single character Uint8Array or Array");let t;if(t="string"==typeof e?e.charCodeAt(0):"number"==typeof e?e:e[0],t<0||t>255)throw new b("only accepts number in a valid unsigned byte range 0-255");if(this.buffer.byteLength>this.position)this.buffer[this.position++]=t;else{const e=L.allocate(T.BUFFER_SIZE+this.buffer.length);e.set(this.buffer,0),this.buffer=e,this.buffer[this.position++]=t}}write(e,t){if(t="number"==typeof t?t:this.position,this.buffer.byteLength<t+e.length){const t=L.allocate(this.buffer.byteLength+e.length);t.set(this.buffer,0),this.buffer=t}if(ArrayBuffer.isView(e))this.buffer.set(L.toLocalBufferType(e),t),this.position=t+e.byteLength>this.position?t+e.length:this.position;else if("string"==typeof e)throw new b("input cannot be string")}read(e,t){return t=t&&t>0?t:this.position,this.buffer.slice(e,e+t)}value(){return this.buffer.length===this.position?this.buffer:this.buffer.subarray(0,this.position)}length(){return this.position}toJSON(){return L.toBase64(this.buffer.subarray(0,this.position))}toString(e){return"hex"===e?L.toHex(this.buffer.subarray(0,this.position)):"base64"===e?L.toBase64(this.buffer.subarray(0,this.position)):L.toUTF8(this.buffer,0,this.position,!1)}toExtendedJSON(e){e=e||{};const t=L.toBase64(this.buffer),n=Number(this.sub_type).toString(16);return e.legacy?{$binary:t,$type:1===n.length?"0"+n:n}:{$binary:{base64:t,subType:1===n.length?"0"+n:n}}}toUUID(){if(this.sub_type===T.SUBTYPE_UUID)return new A(this.buffer.slice(0,this.position));throw new b(`Binary sub_type "${this.sub_type}" is not supported for converting to UUID. Only "${T.SUBTYPE_UUID}" is currently supported.`)}static createFromHexString(e,t){return new T(L.fromHex(e),t)}static createFromBase64(e,t){return new T(L.fromBase64(e),t)}static fromExtendedJSON(e,t){let n,r;if(t=t||{},"$binary"in e?t.legacy&&"string"==typeof e.$binary&&"$type"in e?(r=e.$type?parseInt(e.$type,16):0,n=L.fromBase64(e.$binary)):"string"!=typeof e.$binary&&(r=e.$binary.subType?parseInt(e.$binary.subType,16):0,n=L.fromBase64(e.$binary.base64)):"$uuid"in e&&(r=4,n=A.bytesFromString(e.$uuid)),!n)throw new b(`Unexpected Binary Extended JSON format ${JSON.stringify(e)}`);return 4===r?new A(n):new T(n,r)}inspect(e,t,n){n??=s;return`Binary.createFromBase64(${n(L.toBase64(this.buffer.subarray(0,this.position)),t)}, ${n(this.sub_type,t)})`}}T.BSON_BINARY_SUBTYPE_DEFAULT=0,T.BUFFER_SIZE=256,T.SUBTYPE_DEFAULT=0,T.SUBTYPE_FUNCTION=1,T.SUBTYPE_BYTE_ARRAY=2,T.SUBTYPE_UUID_OLD=3,T.SUBTYPE_UUID=4,T.SUBTYPE_MD5=5,T.SUBTYPE_ENCRYPTED=6,T.SUBTYPE_COLUMN=7,T.SUBTYPE_SENSITIVE=8,T.SUBTYPE_USER_DEFINED=128;const v=/^[0-9A-F]{32}$/i,j=/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;class A extends T{constructor(e){let t;if(null==e)t=A.generate();else if(e instanceof A)t=L.toLocalBufferType(new Uint8Array(e.buffer));else if(ArrayBuffer.isView(e)&&16===e.byteLength)t=L.toLocalBufferType(e);else{if("string"!=typeof e)throw new b("Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).");t=A.bytesFromString(e)}super(t,4)}get id(){return this.buffer}set id(e){this.buffer=e}toHexString(e=!0){return e?[L.toHex(this.buffer.subarray(0,4)),L.toHex(this.buffer.subarray(4,6)),L.toHex(this.buffer.subarray(6,8)),L.toHex(this.buffer.subarray(8,10)),L.toHex(this.buffer.subarray(10,16))].join("-"):L.toHex(this.buffer)}toString(e){return"hex"===e?L.toHex(this.id):"base64"===e?L.toBase64(this.id):this.toHexString()}toJSON(){return this.toHexString()}equals(e){if(!e)return!1;if(e instanceof A)return L.equals(e.id,this.id);try{return L.equals(new A(e).id,this.id)}catch{return!1}}toBinary(){return new T(this.id,T.SUBTYPE_UUID)}static generate(){const e=L.randomBytes(16);return e[6]=15&e[6]|64,e[8]=63&e[8]|128,e}static isValid(e){return!!e&&("string"==typeof e?A.isValidUUIDString(e):n(e)?16===e.byteLength:"Binary"===e._bsontype&&e.sub_type===this.SUBTYPE_UUID&&16===e.buffer.byteLength)}static createFromHexString(e){const t=A.bytesFromString(e);return new A(t)}static createFromBase64(e){return new A(L.fromBase64(e))}static bytesFromString(e){if(!A.isValidUUIDString(e))throw new b("UUID string representation must be 32 hex digits or canonical hyphenated representation");return L.fromHex(e.replace(/-/g,""))}static isValidUUIDString(e){return v.test(e)||j.test(e)}inspect(e,t,n){return n??=s,`new UUID(${n(this.toHexString(),t)})`}}class R extends U{get _bsontype(){return"Code"}constructor(e,t){super(),this.code=e.toString(),this.scope=t??null}toJSON(){return null!=this.scope?{code:this.code,scope:this.scope}:{code:this.code}}toExtendedJSON(){return this.scope?{$code:this.code,$scope:this.scope}:{$code:this.code}}static fromExtendedJSON(e){return new R(e.$code,e.$scope)}inspect(e,t,n){n??=s;let r=n(this.code,t);const i=r.includes("\n");null!=this.scope&&(r+=`,${i?"\n":" "}${n(this.scope,t)}`);return`new Code(${i?"\n":""}${r}${i&&null===this.scope?"\n":""})`}}function D(e){return null!=e&&"object"==typeof e&&"$id"in e&&null!=e.$id&&"$ref"in e&&"string"==typeof e.$ref&&(!("$db"in e)||"$db"in e&&"string"==typeof e.$db)}class F extends U{get _bsontype(){return"DBRef"}constructor(e,t,n,r){super();const i=e.split(".");2===i.length&&(n=i.shift(),e=i.shift()),this.collection=e,this.oid=t,this.db=n,this.fields=r||{}}get namespace(){return this.collection}set namespace(e){this.collection=e}toJSON(){const e=Object.assign({$ref:this.collection,$id:this.oid},this.fields);return null!=this.db&&(e.$db=this.db),e}toExtendedJSON(e){e=e||{};let t={$ref:this.collection,$id:this.oid};return e.legacy||(this.db&&(t.$db=this.db),t=Object.assign(t,this.fields)),t}static fromExtendedJSON(e){const t=Object.assign({},e);return delete t.$ref,delete t.$id,delete t.$db,new F(e.$ref,e.$id,e.$db,t)}inspect(e,t,n){n??=s;const r=[n(this.namespace,t),n(this.oid,t),...this.db?[n(this.db,t)]:[],...Object.keys(this.fields).length>0?[n(this.fields,t)]:[]];return r[1]=n===s?`new ObjectId(${r[1]})`:r[1],`new DBRef(${r.join(", ")})`}}function M(e){if(""===e)return e;let t=0;const n="-"===e[t],r="+"===e[t];(r||n)&&(t+=1);let i=!1;for(;t<e.length&&"0"===e[t];++t)i=!0;return i?`${n?"-":""}${e.length===t?"0":e.slice(t)}`:r?e.slice(1):e}let z;try{z=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}const J=4294967296,V=0x10000000000000000,C=V/2,H={},q={},k=/^(\+?0|(\+|-)?[1-9][0-9]*)$/;class Y extends U{get _bsontype(){return"Long"}get __isLong__(){return!0}constructor(e=0,t,n){super();const r="boolean"==typeof t?t:Boolean(n),i="number"==typeof t?t:0,o="string"==typeof e?Y.fromString(e,r):"bigint"==typeof e?Y.fromBigInt(e,r):{low:0|e,high:0|i,unsigned:r};this.low=o.low,this.high=o.high,this.unsigned=o.unsigned}static fromBits(e,t,n){return new Y(e,t,n)}static fromInt(e,t){let n,r,i;return t?(i=0<=(e>>>=0)&&e<256)&&(r=q[e],r)?r:(n=Y.fromBits(e,(0|e)<0?-1:0,!0),i&&(q[e]=n),n):(i=-128<=(e|=0)&&e<128)&&(r=H[e],r)?r:(n=Y.fromBits(e,e<0?-1:0,!1),i&&(H[e]=n),n)}static fromNumber(e,t){if(isNaN(e))return t?Y.UZERO:Y.ZERO;if(t){if(e<0)return Y.UZERO;if(e>=V)return Y.MAX_UNSIGNED_VALUE}else{if(e<=-C)return Y.MIN_VALUE;if(e+1>=C)return Y.MAX_VALUE}return e<0?Y.fromNumber(-e,t).neg():Y.fromBits(e%J|0,e/J|0,t)}static fromBigInt(e,t){const n=BigInt(4294967295),r=BigInt(32);return new Y(Number(e&n),Number(e>>r&n),t)}static _fromString(e,t,n){if(0===e.length)throw new b("empty string");if(n<2||36<n)throw new b("radix");let r;if((r=e.indexOf("-"))>0)throw new b("interior hyphen");if(0===r)return Y._fromString(e.substring(1),t,n).neg();const i=Y.fromNumber(Math.pow(n,8));let o=Y.ZERO;for(let t=0;t<e.length;t+=8){const r=Math.min(8,e.length-t),s=parseInt(e.substring(t,t+r),n);if(r<8){const e=Y.fromNumber(Math.pow(n,r));o=o.mul(e).add(Y.fromNumber(s))}else o=o.mul(i),o=o.add(Y.fromNumber(s))}return o.unsigned=t,o}static fromStringStrict(e,t,n){let r=!1;if("number"==typeof t?(n=t,t=!1):r=!!t,n??=10,e.trim()!==e)throw new b(`Input: '${e}' contains leading and/or trailing whitespace`);if(!function(e,t){const n="0123456789abcdefghijklmnopqrstuvwxyz".slice(0,t=t??10);return!new RegExp(`[^-+${n}]`,"i").test(e)&&e}(e,n))throw new b(`Input: '${e}' contains invalid characters for radix: ${n}`);const i=M(e),o=Y._fromString(i,r,n);if(o.toString(n).toLowerCase()!==i.toLowerCase())throw new b(`Input: ${e} is not representable as ${o.unsigned?"an unsigned":"a signed"} 64-bit Long ${null!=n?`with radix: ${n}`:""}`);return o}static fromString(e,t,n){let r=!1;return"number"==typeof t?(n=t,t=!1):r=!!t,n??=10,"NaN"===e&&n<24||("Infinity"===e||"+Infinity"===e||"-Infinity"===e)&&n<35?Y.ZERO:Y._fromString(e,r,n)}static fromBytes(e,t,n){return n?Y.fromBytesLE(e,t):Y.fromBytesBE(e,t)}static fromBytesLE(e,t){return new Y(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)}static fromBytesBE(e,t){return new Y(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}static isLong(e){return null!=e&&"object"==typeof e&&"__isLong__"in e&&!0===e.__isLong__}static fromValue(e,t){return"number"==typeof e?Y.fromNumber(e,t):"string"==typeof e?Y.fromString(e,t):Y.fromBits(e.low,e.high,"boolean"==typeof t?t:e.unsigned)}add(e){Y.isLong(e)||(e=Y.fromValue(e));const t=this.high>>>16,n=65535&this.high,r=this.low>>>16,i=65535&this.low,o=e.high>>>16,s=65535&e.high,f=e.low>>>16;let u=0,l=0,a=0,h=0;return h+=i+(65535&e.low),a+=h>>>16,h&=65535,a+=r+f,l+=a>>>16,a&=65535,l+=n+s,u+=l>>>16,l&=65535,u+=t+o,u&=65535,Y.fromBits(a<<16|h,u<<16|l,this.unsigned)}and(e){return Y.isLong(e)||(e=Y.fromValue(e)),Y.fromBits(this.low&e.low,this.high&e.high,this.unsigned)}compare(e){if(Y.isLong(e)||(e=Y.fromValue(e)),this.eq(e))return 0;const t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1}comp(e){return this.compare(e)}divide(e){if(Y.isLong(e)||(e=Y.fromValue(e)),e.isZero())throw new b("division by zero");if(z){if(!this.unsigned&&-2147483648===this.high&&-1===e.low&&-1===e.high)return this;const t=(this.unsigned?z.div_u:z.div_s)(this.low,this.high,e.low,e.high);return Y.fromBits(t,z.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?Y.UZERO:Y.ZERO;let t,n,r;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return Y.UZERO;if(e.gt(this.shru(1)))return Y.UONE;r=Y.UZERO}else{if(this.eq(Y.MIN_VALUE)){if(e.eq(Y.ONE)||e.eq(Y.NEG_ONE))return Y.MIN_VALUE;if(e.eq(Y.MIN_VALUE))return Y.ONE;return t=this.shr(1).div(e).shl(1),t.eq(Y.ZERO)?e.isNegative()?Y.ONE:Y.NEG_ONE:(n=this.sub(e.mul(t)),r=t.add(n.div(e)),r)}if(e.eq(Y.MIN_VALUE))return this.unsigned?Y.UZERO:Y.ZERO;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();r=Y.ZERO}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));const i=Math.ceil(Math.log(t)/Math.LN2),o=i<=48?1:Math.pow(2,i-48);let s=Y.fromNumber(t),f=s.mul(e);for(;f.isNegative()||f.gt(n);)t-=o,s=Y.fromNumber(t,this.unsigned),f=s.mul(e);s.isZero()&&(s=Y.ONE),r=r.add(s),n=n.sub(f)}return r}div(e){return this.divide(e)}equals(e){return Y.isLong(e)||(e=Y.fromValue(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&(this.high===e.high&&this.low===e.low)}eq(e){return this.equals(e)}getHighBits(){return this.high}getHighBitsUnsigned(){return this.high>>>0}getLowBits(){return this.low}getLowBitsUnsigned(){return this.low>>>0}getNumBitsAbs(){if(this.isNegative())return this.eq(Y.MIN_VALUE)?64:this.neg().getNumBitsAbs();const e=0!==this.high?this.high:this.low;let t;for(t=31;t>0&&!(e&1<<t);t--);return 0!==this.high?t+33:t+1}greaterThan(e){return this.comp(e)>0}gt(e){return this.greaterThan(e)}greaterThanOrEqual(e){return this.comp(e)>=0}gte(e){return this.greaterThanOrEqual(e)}ge(e){return this.greaterThanOrEqual(e)}isEven(){return!(1&this.low)}isNegative(){return!this.unsigned&&this.high<0}isOdd(){return!(1&~this.low)}isPositive(){return this.unsigned||this.high>=0}isZero(){return 0===this.high&&0===this.low}lessThan(e){return this.comp(e)<0}lt(e){return this.lessThan(e)}lessThanOrEqual(e){return this.comp(e)<=0}lte(e){return this.lessThanOrEqual(e)}modulo(e){if(Y.isLong(e)||(e=Y.fromValue(e)),z){const t=(this.unsigned?z.rem_u:z.rem_s)(this.low,this.high,e.low,e.high);return Y.fromBits(t,z.get_high(),this.unsigned)}return this.sub(this.div(e).mul(e))}mod(e){return this.modulo(e)}rem(e){return this.modulo(e)}multiply(e){if(this.isZero())return Y.ZERO;if(Y.isLong(e)||(e=Y.fromValue(e)),z){const t=z.mul(this.low,this.high,e.low,e.high);return Y.fromBits(t,z.get_high(),this.unsigned)}if(e.isZero())return Y.ZERO;if(this.eq(Y.MIN_VALUE))return e.isOdd()?Y.MIN_VALUE:Y.ZERO;if(e.eq(Y.MIN_VALUE))return this.isOdd()?Y.MIN_VALUE:Y.ZERO;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(Y.TWO_PWR_24)&&e.lt(Y.TWO_PWR_24))return Y.fromNumber(this.toNumber()*e.toNumber(),this.unsigned);const t=this.high>>>16,n=65535&this.high,r=this.low>>>16,i=65535&this.low,o=e.high>>>16,s=65535&e.high,f=e.low>>>16,u=65535&e.low;let l=0,a=0,h=0,c=0;return c+=i*u,h+=c>>>16,c&=65535,h+=r*u,a+=h>>>16,h&=65535,h+=i*f,a+=h>>>16,h&=65535,a+=n*u,l+=a>>>16,a&=65535,a+=r*f,l+=a>>>16,a&=65535,a+=i*s,l+=a>>>16,a&=65535,l+=t*u+n*f+r*s+i*o,l&=65535,Y.fromBits(h<<16|c,l<<16|a,this.unsigned)}mul(e){return this.multiply(e)}negate(){return!this.unsigned&&this.eq(Y.MIN_VALUE)?Y.MIN_VALUE:this.not().add(Y.ONE)}neg(){return this.negate()}not(){return Y.fromBits(~this.low,~this.high,this.unsigned)}notEquals(e){return!this.equals(e)}neq(e){return this.notEquals(e)}ne(e){return this.notEquals(e)}or(e){return Y.isLong(e)||(e=Y.fromValue(e)),Y.fromBits(this.low|e.low,this.high|e.high,this.unsigned)}shiftLeft(e){return Y.isLong(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?Y.fromBits(this.low<<e,this.high<<e|this.low>>>32-e,this.unsigned):Y.fromBits(0,this.low<<e-32,this.unsigned)}shl(e){return this.shiftLeft(e)}shiftRight(e){return Y.isLong(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?Y.fromBits(this.low>>>e|this.high<<32-e,this.high>>e,this.unsigned):Y.fromBits(this.high>>e-32,this.high>=0?0:-1,this.unsigned)}shr(e){return this.shiftRight(e)}shiftRightUnsigned(e){if(Y.isLong(e)&&(e=e.toInt()),0===(e&=63))return this;{const t=this.high;if(e<32){const n=this.low;return Y.fromBits(n>>>e|t<<32-e,t>>>e,this.unsigned)}return 32===e?Y.fromBits(t,0,this.unsigned):Y.fromBits(t>>>e-32,0,this.unsigned)}}shr_u(e){return this.shiftRightUnsigned(e)}shru(e){return this.shiftRightUnsigned(e)}subtract(e){return Y.isLong(e)||(e=Y.fromValue(e)),this.add(e.neg())}sub(e){return this.subtract(e)}toInt(){return this.unsigned?this.low>>>0:this.low}toNumber(){return this.unsigned?(this.high>>>0)*J+(this.low>>>0):this.high*J+(this.low>>>0)}toBigInt(){return BigInt(this.toString())}toBytes(e){return e?this.toBytesLE():this.toBytesBE()}toBytesLE(){const e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]}toBytesBE(){const e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]}toSigned(){return this.unsigned?Y.fromBits(this.low,this.high,!1):this}toString(e){if((e=e||10)<2||36<e)throw new b("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(Y.MIN_VALUE)){const t=Y.fromNumber(e),n=this.div(t),r=n.mul(t).sub(this);return n.toString(e)+r.toInt().toString(e)}return"-"+this.neg().toString(e)}const t=Y.fromNumber(Math.pow(e,6),this.unsigned);let n=this,r="";for(;;){const i=n.div(t);let o=(n.sub(i.mul(t)).toInt()>>>0).toString(e);if(n=i,n.isZero())return o+r;for(;o.length<6;)o="0"+o;r=""+o+r}}toUnsigned(){return this.unsigned?this:Y.fromBits(this.low,this.high,!0)}xor(e){return Y.isLong(e)||(e=Y.fromValue(e)),Y.fromBits(this.low^e.low,this.high^e.high,this.unsigned)}eqz(){return this.isZero()}le(e){return this.lessThanOrEqual(e)}toExtendedJSON(e){return e&&e.relaxed?this.toNumber():{$numberLong:this.toString()}}static fromExtendedJSON(e,t){const{useBigInt64:n=!1,relaxed:r=!0}={...t};if(e.$numberLong.length>20)throw new b("$numberLong string is too long");if(!k.test(e.$numberLong))throw new b(`$numberLong string "${e.$numberLong}" is in an invalid format`);if(n){const t=BigInt(e.$numberLong);return BigInt.asIntN(64,t)}const i=Y.fromString(e.$numberLong);return r?i.toNumber():i}inspect(e,t,n){n??=s;return`new Long(${n(this.toString(),t)}${this.unsigned?`, ${n(this.unsigned,t)}`:""})`}}Y.TWO_PWR_24=Y.fromInt(1<<24),Y.MAX_UNSIGNED_VALUE=Y.fromBits(-1,-1,!0),Y.ZERO=Y.fromInt(0),Y.UZERO=Y.fromInt(0,!0),Y.ONE=Y.fromInt(1),Y.UONE=Y.fromInt(1,!0),Y.NEG_ONE=Y.fromInt(-1),Y.MAX_VALUE=Y.fromBits(-1,2147483647,!1),Y.MIN_VALUE=Y.fromBits(0,-2147483648,!1);const P=/^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/,Z=/^(\+|-)?(Infinity|inf)$/i,K=/^(\+|-)?NaN$/i,W=6111,G=-6176,X=L.fromNumberArray([124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse()),Q=L.fromNumberArray([248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse()),ee=L.fromNumberArray([120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse()),te=/^([-+])?(\d+)?$/;function ne(e){return!isNaN(parseInt(e,10))}function re(e){const t=Y.fromNumber(1e9);let n=Y.fromNumber(0);if(!(e.parts[0]||e.parts[1]||e.parts[2]||e.parts[3]))return{quotient:e,rem:n};for(let r=0;r<=3;r++)n=n.shiftLeft(32),n=n.add(new Y(e.parts[r],0)),e.parts[r]=n.div(t).low,n=n.modulo(t);return{quotient:e,rem:n}}function ie(e,t){throw new b(`"${e}" is not a valid Decimal128 string - ${t}`)}class oe extends U{get _bsontype(){return"Decimal128"}constructor(e){if(super(),"string"==typeof e)this.bytes=oe.fromString(e).bytes;else{if(!n(e))throw new b("Decimal128 must take a Buffer or string");if(16!==e.byteLength)throw new b("Decimal128 must take a Buffer of 16 bytes");this.bytes=e}}static fromString(e){return oe._fromString(e,{allowRounding:!1})}static fromStringWithRounding(e){return oe._fromString(e,{allowRounding:!0})}static _fromString(e,t){let n=!1,r=!1,i=!1,o=!1,s=0,f=0,u=0,l=0,a=0;const h=[0];let c=0,g=0,d=0,p=0,m=new Y(0,0),y=new Y(0,0),w=0,B=0;if(e.length>=7e3)throw new b(e+" not a valid Decimal128 string");const S=e.match(P),N=e.match(Z),E=e.match(K);if(!S&&!N&&!E||0===e.length)throw new b(e+" not a valid Decimal128 string");if(S){const t=S[2],n=S[4],r=S[5],i=S[6];n&&void 0===i&&ie(e,"missing exponent power"),n&&void 0===t&&ie(e,"missing exponent base"),void 0===n&&(r||i)&&ie(e,"missing e before exponent")}if("+"!==e[B]&&"-"!==e[B]||(r=!0,n="-"===e[B++]),!ne(e[B])&&"."!==e[B]){if("i"===e[B]||"I"===e[B])return new oe(n?Q:ee);if("N"===e[B])return new oe(X)}for(;ne(e[B])||"."===e[B];)"."!==e[B]?(c<34&&("0"!==e[B]||o)&&(o||(a=f),o=!0,h[g++]=parseInt(e[B],10),c+=1),o&&(u+=1),i&&(l+=1),f+=1,B+=1):(i&&ie(e,"contains multiple periods"),i=!0,B+=1);if(i&&!f)throw new b(e+" not a valid Decimal128 string");if("e"===e[B]||"E"===e[B]){const t=e.substr(++B).match(te);if(!t||!t[2])return new oe(X);p=parseInt(t[0],10),B+=t[0].length}if(e[B])return new oe(X);if(c){if(d=c-1,s=u,1!==s)for(;"0"===e[a+s-1+Number(r)+Number(i)];)s-=1}else h[0]=0,u=1,c=1,s=0;for(p<=l&&l>p+16384?p=G:p-=l;p>W;){if(d+=1,d>=34){if(0===s){p=W;break}ie(e,"overflow")}p-=1}if(t.allowRounding){for(;p<G||c<u;){if(0===d&&s<c){p=G,s=0;break}if(c<u?u-=1:d-=1,p<W)p+=1;else{if(h.join("").match(/^0+$/)){p=W;break}ie(e,"overflow")}}if(d+1<s){let t=f;i&&(a+=1,t+=1),r&&(a+=1,t+=1);const o=parseInt(e[a+d+1],10);let s=0;if(o>=5&&(s=1,5===o)){s=h[d]%2==1?1:0;for(let n=a+d+2;n<t;n++)if(parseInt(e[n],10)){s=1;break}}if(s){let e=d;for(;e>=0&&++h[e]>9;e--)if(h[e]=0,0===e){if(!(p<W))return new oe(n?Q:ee);p+=1,h[e]=1}}}}else{for(;p<G||c<u;){if(0===d){if(0===s){p=G;break}ie(e,"exponent underflow")}c<u?("0"!==e[u-1+Number(r)+Number(i)]&&0!==s&&ie(e,"inexact rounding"),u-=1):(0!==h[d]&&ie(e,"inexact rounding"),d-=1),p<W?p+=1:ie(e,"overflow")}if(d+1<s){i&&(a+=1),r&&(a+=1);0!==parseInt(e[a+d+1],10)&&ie(e,"inexact rounding")}}if(m=Y.fromNumber(0),y=Y.fromNumber(0),0===s)m=Y.fromNumber(0),y=Y.fromNumber(0);else if(d<17){let e=0;for(y=Y.fromNumber(h[e++]),m=new Y(0,0);e<=d;e++)y=y.multiply(Y.fromNumber(10)),y=y.add(Y.fromNumber(h[e]))}else{let e=0;for(m=Y.fromNumber(h[e++]);e<=d-17;e++)m=m.multiply(Y.fromNumber(10)),m=m.add(Y.fromNumber(h[e]));for(y=Y.fromNumber(h[e++]);e<=d;e++)y=y.multiply(Y.fromNumber(10)),y=y.add(Y.fromNumber(h[e]))}const O=function(e,t){if(!e&&!t)return{high:Y.fromNumber(0),low:Y.fromNumber(0)};const n=e.shiftRightUnsigned(32),r=new Y(e.getLowBits(),0),i=t.shiftRightUnsigned(32),o=new Y(t.getLowBits(),0);let s=n.multiply(i),f=n.multiply(o);const u=r.multiply(i);let l=r.multiply(o);return s=s.add(f.shiftRightUnsigned(32)),f=new Y(f.getLowBits(),0).add(u).add(l.shiftRightUnsigned(32)),s=s.add(f.shiftRightUnsigned(32)),l=f.shiftLeft(32).add(new Y(l.getLowBits(),0)),{high:s,low:l}}(m,Y.fromString("100000000000000000"));O.low=O.low.add(y),function(e,t){const n=e.high>>>0,r=t.high>>>0;if(n<r)return!0;if(n===r&&e.low>>>0<t.low>>>0)return!0;return!1}(O.low,y)&&(O.high=O.high.add(Y.fromNumber(1))),w=p+6176;const x={low:Y.fromNumber(0),high:Y.fromNumber(0)};O.high.shiftRightUnsigned(49).and(Y.fromNumber(1)).equals(Y.fromNumber(1))?(x.high=x.high.or(Y.fromNumber(3).shiftLeft(61)),x.high=x.high.or(Y.fromNumber(w).and(Y.fromNumber(16383).shiftLeft(47))),x.high=x.high.or(O.high.and(Y.fromNumber(0x7fffffffffff)))):(x.high=x.high.or(Y.fromNumber(16383&w).shiftLeft(49)),x.high=x.high.or(O.high.and(Y.fromNumber(562949953421311)))),x.low=O.low,n&&(x.high=x.high.or(Y.fromString("9223372036854775808")));const I=L.allocateUnsafe(16);return B=0,I[B++]=255&x.low.low,I[B++]=x.low.low>>8&255,I[B++]=x.low.low>>16&255,I[B++]=x.low.low>>24&255,I[B++]=255&x.low.high,I[B++]=x.low.high>>8&255,I[B++]=x.low.high>>16&255,I[B++]=x.low.high>>24&255,I[B++]=255&x.high.low,I[B++]=x.high.low>>8&255,I[B++]=x.high.low>>16&255,I[B++]=x.high.low>>24&255,I[B++]=255&x.high.high,I[B++]=x.high.high>>8&255,I[B++]=x.high.high>>16&255,I[B++]=x.high.high>>24&255,new oe(I)}toString(){let e,t=0;const n=new Array(36);for(let e=0;e<n.length;e++)n[e]=0;let r,i,o,s=0,f=!1,u={parts:[0,0,0,0]};const l=[];s=0;const a=this.bytes,h=a[s++]|a[s++]<<8|a[s++]<<16|a[s++]<<24,c=a[s++]|a[s++]<<8|a[s++]<<16|a[s++]<<24,g=a[s++]|a[s++]<<8|a[s++]<<16|a[s++]<<24,b=a[s++]|a[s++]<<8|a[s++]<<16|a[s++]<<24;s=0;({low:new Y(h,c),high:new Y(g,b)}).high.lessThan(Y.ZERO)&&l.push("-");const d=b>>26&31;if(d>>3==3){if(30===d)return l.join("")+"Infinity";if(31===d)return"NaN";e=b>>15&16383,r=8+(b>>14&1)}else r=b>>14&7,e=b>>17&16383;const p=e-6176;if(u.parts[0]=(16383&b)+((15&r)<<14),u.parts[1]=g,u.parts[2]=c,u.parts[3]=h,0===u.parts[0]&&0===u.parts[1]&&0===u.parts[2]&&0===u.parts[3])f=!0;else for(o=3;o>=0;o--){let e=0;const t=re(u);if(u=t.quotient,e=t.rem.low,e)for(i=8;i>=0;i--)n[9*o+i]=e%10,e=Math.floor(e/10)}if(f)t=1,n[s]=0;else for(t=36;!n[s];)t-=1,s+=1;const m=t-1+p;if(m>=34||m<=-7||p>0){if(t>34)return l.push("0"),p>0?l.push(`E+${p}`):p<0&&l.push(`E${p}`),l.join("");l.push(`${n[s++]}`),t-=1,t&&l.push(".");for(let e=0;e<t;e++)l.push(`${n[s++]}`);l.push("E"),m>0?l.push(`+${m}`):l.push(`${m}`)}else if(p>=0)for(let e=0;e<t;e++)l.push(`${n[s++]}`);else{let e=t+p;if(e>0)for(let t=0;t<e;t++)l.push(`${n[s++]}`);else l.push("0");for(l.push(".");e++<0;)l.push("0");for(let r=0;r<t-Math.max(e-1,0);r++)l.push(`${n[s++]}`)}return l.join("")}toJSON(){return{$numberDecimal:this.toString()}}toExtendedJSON(){return{$numberDecimal:this.toString()}}static fromExtendedJSON(e){return oe.fromString(e.$numberDecimal)}inspect(e,t,n){n??=s;return`new Decimal128(${n(this.toString(),t)})`}}class se extends U{get _bsontype(){return"Double"}constructor(e){super(),e instanceof Number&&(e=e.valueOf()),this.value=+e}static fromString(e){const t=Number(e);if("NaN"===e)return new se(NaN);if("Infinity"===e)return new se(1/0);if("-Infinity"===e)return new se(-1/0);if(!Number.isFinite(t))throw new b(`Input: ${e} is not representable as a Double`);if(e.trim()!==e)throw new b(`Input: '${e}' contains whitespace`);if(""===e)throw new b("Input is an empty string");if(/[^-0-9.+eE]/.test(e))throw new b(`Input: '${e}' is not in decimal or exponential notation`);return new se(t)}valueOf(){return this.value}toJSON(){return this.value}toString(e){return this.value.toString(e)}toExtendedJSON(e){return e&&(e.legacy||e.relaxed&&isFinite(this.value))?this.value:Object.is(Math.sign(this.value),-0)?{$numberDouble:"-0.0"}:{$numberDouble:Number.isInteger(this.value)?this.value.toFixed(1):this.value.toString()}}static fromExtendedJSON(e,t){const n=parseFloat(e.$numberDouble);return t&&t.relaxed?n:new se(n)}inspect(e,t,n){return n??=s,`new Double(${n(this.value,t)})`}}class fe extends U{get _bsontype(){return"Int32"}constructor(e){super(),e instanceof Number&&(e=e.valueOf()),this.value=0|+e}static fromString(e){const t=M(e),n=Number(e);if(f<n)throw new b(`Input: '${e}' is larger than the maximum value for Int32`);if(u>n)throw new b(`Input: '${e}' is smaller than the minimum value for Int32`);if(!Number.isSafeInteger(n))throw new b(`Input: '${e}' is not a safe integer`);if(n.toString()!==t)throw new b(`Input: '${e}' is not a valid Int32 string`);return new fe(n)}valueOf(){return this.value}toString(e){return this.value.toString(e)}toJSON(){return this.value}toExtendedJSON(e){return e&&(e.relaxed||e.legacy)?this.value:{$numberInt:this.value.toString()}}static fromExtendedJSON(e,t){return t&&t.relaxed?parseInt(e.$numberInt,10):new fe(e.$numberInt)}inspect(e,t,n){return n??=s,`new Int32(${n(this.value,t)})`}}class ue extends U{get _bsontype(){return"MaxKey"}toExtendedJSON(){return{$maxKey:1}}static fromExtendedJSON(){return new ue}inspect(){return"new MaxKey()"}}class le extends U{get _bsontype(){return"MinKey"}toExtendedJSON(){return{$minKey:1}}static fromExtendedJSON(){return new le}inspect(){return"new MinKey()"}}const ae=new Float64Array(1),he=new Uint8Array(ae.buffer,0,8);ae[0]=-1;const ce=0===he[7],ge={getNonnegativeInt32LE(e,t){if(e[t+3]>127)throw new RangeError(`Size cannot be negative at offset: ${t}`);return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24},getInt32LE:(e,t)=>e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24,getUint32LE:(e,t)=>e[t]+256*e[t+1]+65536*e[t+2]+16777216*e[t+3],getUint32BE:(e,t)=>e[t+3]+256*e[t+2]+65536*e[t+1]+16777216*e[t],getBigInt64LE(e,t){const n=ge.getUint32LE(e,t),r=ge.getUint32LE(e,t+4);return(BigInt(r)<<BigInt(32))+BigInt(n)},getFloat64LE:ce?(e,t)=>(he[7]=e[t],he[6]=e[t+1],he[5]=e[t+2],he[4]=e[t+3],he[3]=e[t+4],he[2]=e[t+5],he[1]=e[t+6],he[0]=e[t+7],ae[0]):(e,t)=>(he[0]=e[t],he[1]=e[t+1],he[2]=e[t+2],he[3]=e[t+3],he[4]=e[t+4],he[5]=e[t+5],he[6]=e[t+6],he[7]=e[t+7],ae[0]),setInt32BE:(e,t,n)=>(e[t+3]=n,n>>>=8,e[t+2]=n,n>>>=8,e[t+1]=n,n>>>=8,e[t]=n,4),setInt32LE:(e,t,n)=>(e[t]=n,n>>>=8,e[t+1]=n,n>>>=8,e[t+2]=n,n>>>=8,e[t+3]=n,4),setBigInt64LE(e,t,n){const r=BigInt(4294967295);let i=Number(n&r);e[t]=i,i>>=8,e[t+1]=i,i>>=8,e[t+2]=i,i>>=8,e[t+3]=i;let o=Number(n>>BigInt(32)&r);return e[t+4]=o,o>>=8,e[t+5]=o,o>>=8,e[t+6]=o,o>>=8,e[t+7]=o,8},setFloat64LE:ce?(e,t,n)=>(ae[0]=n,e[t]=he[7],e[t+1]=he[6],e[t+2]=he[5],e[t+3]=he[4],e[t+4]=he[3],e[t+5]=he[2],e[t+6]=he[1],e[t+7]=he[0],8):(e,t,n)=>(ae[0]=n,e[t]=he[0],e[t+1]=he[1],e[t+2]=he[2],e[t+3]=he[3],e[t+4]=he[4],e[t+5]=he[5],e[t+6]=he[6],e[t+7]=he[7],8)},be=new RegExp("^[0-9a-fA-F]{24}$");let de=null;class pe extends U{get _bsontype(){return"ObjectId"}constructor(e){let t;if(super(),"object"==typeof e&&e&&"id"in e){if("string"!=typeof e.id&&!ArrayBuffer.isView(e.id))throw new b("Argument passed in must have an id that is of type string or Buffer");t="toHexString"in e&&"function"==typeof e.toHexString?L.fromHex(e.toHexString()):e.id}else t=e;if(null==t||"number"==typeof t)this.buffer=pe.generate("number"==typeof t?t:void 0);else if(ArrayBuffer.isView(t)&&12===t.byteLength)this.buffer=L.toLocalBufferType(t);else{if("string"!=typeof t)throw new b("Argument passed in does not match the accepted types");if(24!==t.length||!be.test(t))throw new b("input must be a 24 character hex string, 12 byte Uint8Array, or an integer");this.buffer=L.fromHex(t)}pe.cacheHexString&&(this.__id=L.toHex(this.id))}get id(){return this.buffer}set id(e){this.buffer=e,pe.cacheHexString&&(this.__id=L.toHex(e))}toHexString(){if(pe.cacheHexString&&this.__id)return this.__id;const e=L.toHex(this.id);return pe.cacheHexString&&!this.__id&&(this.__id=e),e}static getInc(){return pe.index=(pe.index+1)%16777215}static generate(e){"number"!=typeof e&&(e=Math.floor(Date.now()/1e3));const t=pe.getInc(),n=L.allocateUnsafe(12);return ge.setInt32BE(n,0,e),null===de&&(de=L.randomBytes(5)),n[4]=de[0],n[5]=de[1],n[6]=de[2],n[7]=de[3],n[8]=de[4],n[11]=255&t,n[10]=t>>8&255,n[9]=t>>16&255,n}toString(e){return"base64"===e?L.toBase64(this.id):this.toHexString()}toJSON(){return this.toHexString()}static is(e){return null!=e&&"object"==typeof e&&"_bsontype"in e&&"ObjectId"===e._bsontype}equals(e){if(null==e)return!1;if(pe.is(e))return this.buffer[11]===e.buffer[11]&&L.equals(this.buffer,e.buffer);if("string"==typeof e)return e.toLowerCase()===this.toHexString();if("object"==typeof e&&"function"==typeof e.toHexString){const t=e.toHexString(),n=this.toHexString();return"string"==typeof t&&t.toLowerCase()===n}return!1}getTimestamp(){const e=new Date,t=ge.getUint32BE(this.buffer,0);return e.setTime(1e3*Math.floor(t)),e}static createPk(){return new pe}serializeInto(e,t){return e[t]=this.buffer[0],e[t+1]=this.buffer[1],e[t+2]=this.buffer[2],e[t+3]=this.buffer[3],e[t+4]=this.buffer[4],e[t+5]=this.buffer[5],e[t+6]=this.buffer[6],e[t+7]=this.buffer[7],e[t+8]=this.buffer[8],e[t+9]=this.buffer[9],e[t+10]=this.buffer[10],e[t+11]=this.buffer[11],12}static createFromTime(e){const t=L.allocate(12);for(let e=11;e>=4;e--)t[e]=0;return ge.setInt32BE(t,0,e),new pe(t)}static createFromHexString(e){if(24!==e?.length)throw new b("hex string must be 24 characters");return new pe(L.fromHex(e))}static createFromBase64(e){if(16!==e?.length)throw new b("base64 string must be 16 characters");return new pe(L.fromBase64(e))}static isValid(e){if(null==e)return!1;try{return new pe(e),!0}catch{return!1}}toExtendedJSON(){return this.toHexString?{$oid:this.toHexString()}:{$oid:this.toString("hex")}}static fromExtendedJSON(e){return new pe(e.$oid)}inspect(e,t,n){return n??=s,`new ObjectId(${n(this.toHexString(),t)})`}}function me(e,t,n){let r=5;if(Array.isArray(e))for(let i=0;i<e.length;i++)r+=ye(i.toString(),e[i],t,!0,n);else{"function"==typeof e?.toBSON&&(e=e.toBSON());for(const i of Object.keys(e))r+=ye(i,e[i],t,!1,n)}return r}function ye(e,n,i=!1,s=!1,l=!1){switch("function"==typeof n?.toBSON&&(n=n.toBSON()),typeof n){case"string":return 1+L.utf8ByteLength(e)+1+4+L.utf8ByteLength(n)+1;case"number":return Math.floor(n)===n&&n>=c&&n<=h&&n>=u&&n<=f?(null!=e?L.utf8ByteLength(e)+1:0)+5:(null!=e?L.utf8ByteLength(e)+1:0)+9;case"undefined":return s||!l?(null!=e?L.utf8ByteLength(e)+1:0)+1:0;case"boolean":return(null!=e?L.utf8ByteLength(e)+1:0)+2;case"object":if(null!=n&&"string"==typeof n._bsontype&&6!==n[Symbol.for("@@mdb.bson.version")])throw new d;if(null==n||"MinKey"===n._bsontype||"MaxKey"===n._bsontype)return(null!=e?L.utf8ByteLength(e)+1:0)+1;if("ObjectId"===n._bsontype)return(null!=e?L.utf8ByteLength(e)+1:0)+13;if(n instanceof Date||o(n))return(null!=e?L.utf8ByteLength(e)+1:0)+9;if(ArrayBuffer.isView(n)||n instanceof ArrayBuffer||t(n))return(null!=e?L.utf8ByteLength(e)+1:0)+6+n.byteLength;if("Long"===n._bsontype||"Double"===n._bsontype||"Timestamp"===n._bsontype)return(null!=e?L.utf8ByteLength(e)+1:0)+9;if("Decimal128"===n._bsontype)return(null!=e?L.utf8ByteLength(e)+1:0)+17;if("Code"===n._bsontype)return null!=n.scope&&Object.keys(n.scope).length>0?(null!=e?L.utf8ByteLength(e)+1:0)+1+4+4+L.utf8ByteLength(n.code.toString())+1+me(n.scope,i,l):(null!=e?L.utf8ByteLength(e)+1:0)+1+4+L.utf8ByteLength(n.code.toString())+1;if("Binary"===n._bsontype){const t=n;return t.sub_type===T.SUBTYPE_BYTE_ARRAY?(null!=e?L.utf8ByteLength(e)+1:0)+(t.position+1+4+1+4):(null!=e?L.utf8ByteLength(e)+1:0)+(t.position+1+4+1)}if("Symbol"===n._bsontype)return(null!=e?L.utf8ByteLength(e)+1:0)+L.utf8ByteLength(n.value)+4+1+1;if("DBRef"===n._bsontype){const t=Object.assign({$ref:n.collection,$id:n.oid},n.fields);return null!=n.db&&(t.$db=n.db),(null!=e?L.utf8ByteLength(e)+1:0)+1+me(t,i,l)}return n instanceof RegExp||r(n)?(null!=e?L.utf8ByteLength(e)+1:0)+1+L.utf8ByteLength(n.source)+1+(n.global?1:0)+(n.ignoreCase?1:0)+(n.multiline?1:0)+1:"BSONRegExp"===n._bsontype?(null!=e?L.utf8ByteLength(e)+1:0)+1+L.utf8ByteLength(n.pattern)+1+L.utf8ByteLength(n.options)+1:(null!=e?L.utf8ByteLength(e)+1:0)+me(n,i,l)+1;case"function":if(i)return(null!=e?L.utf8ByteLength(e)+1:0)+1+4+L.utf8ByteLength(n.toString())+1}return 0}pe.index=Math.floor(16777215*Math.random());class we extends U{get _bsontype(){return"BSONRegExp"}constructor(e,t){if(super(),this.pattern=e,this.options=(t??"").split("").sort().join(""),-1!==this.pattern.indexOf("\0"))throw new b(`BSON Regex patterns cannot contain null bytes, found: ${JSON.stringify(this.pattern)}`);if(-1!==this.options.indexOf("\0"))throw new b(`BSON Regex options cannot contain null bytes, found: ${JSON.stringify(this.options)}`);for(let e=0;e<this.options.length;e++)if("i"!==this.options[e]&&"m"!==this.options[e]&&"x"!==this.options[e]&&"l"!==this.options[e]&&"s"!==this.options[e]&&"u"!==this.options[e])throw new b(`The regular expression option [${this.options[e]}] is not supported`)}static parseOptions(e){return e?e.split("").sort().join(""):""}toExtendedJSON(e){return(e=e||{}).legacy?{$regex:this.pattern,$options:this.options}:{$regularExpression:{pattern:this.pattern,options:this.options}}}static fromExtendedJSON(e){if("$regex"in e){if("string"==typeof e.$regex)return new we(e.$regex,we.parseOptions(e.$options));if("BSONRegExp"===e.$regex._bsontype)return e}if("$regularExpression"in e)return new we(e.$regularExpression.pattern,we.parseOptions(e.$regularExpression.options));throw new b(`Unexpected BSONRegExp EJSON object form: ${JSON.stringify(e)}`)}inspect(e,t,n){const r=function(e){if(null!=e&&"object"==typeof e&&"stylize"in e&&"function"==typeof e.stylize)return e.stylize}(t)??(e=>e);n??=s;return`new BSONRegExp(${r(n(this.pattern),"regexp")}, ${r(n(this.options),"regexp")})`}}class Be extends U{get _bsontype(){return"BSONSymbol"}constructor(e){super(),this.value=e}valueOf(){return this.value}toString(){return this.value}toJSON(){return this.value}toExtendedJSON(){return{$symbol:this.value}}static fromExtendedJSON(e){return new Be(e.$symbol)}inspect(e,t,n){return n??=s,`new BSONSymbol(${n(this.value,t)})`}}const Se=Y;class Ne extends Se{get _bsontype(){return"Timestamp"}constructor(e){if(null==e)super(0,0,!0);else if("bigint"==typeof e)super(e,!0);else if(Y.isLong(e))super(e.low,e.high,!0);else{if("object"!=typeof e||!("t"in e)||!("i"in e))throw new b("A Timestamp can only be constructed with: bigint, Long, or { t: number; i: number }");{if("number"!=typeof e.t&&("object"!=typeof e.t||"Int32"!==e.t._bsontype))throw new b("Timestamp constructed from { t, i } must provide t as a number");if("number"!=typeof e.i&&("object"!=typeof e.i||"Int32"!==e.i._bsontype))throw new b("Timestamp constructed from { t, i } must provide i as a number");const t=Number(e.t),n=Number(e.i);if(t<0||Number.isNaN(t))throw new b("Timestamp constructed from { t, i } must provide a positive t");if(n<0||Number.isNaN(n))throw new b("Timestamp constructed from { t, i } must provide a positive i");if(t>4294967295)throw new b("Timestamp constructed from { t, i } must provide t equal or less than uint32 max");if(n>4294967295)throw new b("Timestamp constructed from { t, i } must provide i equal or less than uint32 max");super(n,t,!0)}}}toJSON(){return{$timestamp:this.toString()}}static fromInt(e){return new Ne(Y.fromInt(e,!0))}static fromNumber(e){return new Ne(Y.fromNumber(e,!0))}static fromBits(e,t){return new Ne({i:e,t:t})}static fromString(e,t){return new Ne(Y.fromString(e,!0,t))}toExtendedJSON(){return{$timestamp:{t:this.high>>>0,i:this.low>>>0}}}static fromExtendedJSON(e){const t=Y.isLong(e.$timestamp.i)?e.$timestamp.i.getLowBitsUnsigned():e.$timestamp.i,n=Y.isLong(e.$timestamp.t)?e.$timestamp.t.getLowBitsUnsigned():e.$timestamp.t;return new Ne({t:n,i:t})}inspect(e,t,n){n??=s;return`new Timestamp({ t: ${n(this.high>>>0,t)}, i: ${n(this.low>>>0,t)} })`}}Ne.MAX_VALUE=Y.MAX_UNSIGNED_VALUE;const Ee=Y.fromNumber(h),Oe=Y.fromNumber(c);function xe(e,t,n){const r=(t=null==t?{}:t)&&t.index?t.index:0,i=ge.getInt32LE(e,r);if(i<5)throw new b(`bson size must be >= 5, is ${i}`);if(t.allowObjectSmallerThanBufferSize&&e.length<i)throw new b(`buffer length ${e.length} must be >= bson size ${i}`);if(!t.allowObjectSmallerThanBufferSize&&e.length!==i)throw new b(`buffer length ${e.length} must === bson size ${i}`);if(i+r>e.byteLength)throw new b(`(bson size ${i} + options.index ${r} must be <= buffer length ${e.byteLength})`);if(0!==e[r+i-1])throw new b("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");return $e(e,r,t,n)}const Ie=/^\$ref$|^\$id$|^\$db$/;function $e(e,t,n,r=!1){const i=null==n.fieldsAsRaw?null:n.fieldsAsRaw,o=null!=n.raw&&n.raw,s="boolean"==typeof n.bsonRegExp&&n.bsonRegExp,f=n.promoteBuffers??!1,u=n.promoteLongs??!0,l=n.promoteValues??!0,a=n.useBigInt64??!1;if(a&&!l)throw new b("Must either request bigint or Long for int64 deserialization");if(a&&!u)throw new b("Must either request bigint or Long for int64 deserialization");let h,c,g=!0;const d=(null==n.validation?{utf8:!0}:n.validation).utf8;if("boolean"==typeof d)h=d;else{g=!1;const e=Object.keys(d).map((function(e){return d[e]}));if(0===e.length)throw new b("UTF-8 validation setting cannot be empty");if("boolean"!=typeof e[0])throw new b("Invalid UTF-8 validation option, must specify boolean values");if(h=e[0],!e.every((e=>e===h)))throw new b("Invalid UTF-8 validation option - keys must be all true or all false")}if(!g){c=new Set;for(const e of Object.keys(d))c.add(e)}const p=t;if(e.length<5)throw new b("corrupt bson message < 5 bytes long");const m=ge.getInt32LE(e,t);if(t+=4,m<5||m>e.length)throw new b("corrupt bson message");const y=r?[]:{};let w=0;let B=!r&&null;for(;;){const d=e[t++];if(0===d)break;let p=t;for(;0!==e[p]&&p<e.length;)p++;if(p>=e.byteLength)throw new b("Bad BSON Document: illegal CString");const m=r?w++:L.toUTF8(e,t,p,!1);let S,N=!0;if(N=g||c?.has(m)?h:!h,!1!==B&&"$"===m[0]&&(B=Ie.test(m)),t=p+1,2===d){const n=ge.getInt32LE(e,t);if(t+=4,n<=0||n>e.length-t||0!==e[t+n-1])throw new b("bad string length in bson");S=L.toUTF8(e,t,t+n-1,N),t+=n}else if(7===d){const n=L.allocateUnsafe(12);for(let r=0;r<12;r++)n[r]=e[t+r];S=new pe(n),t+=12}else if(16===d&&!1===l)S=new fe(ge.getInt32LE(e,t)),t+=4;else if(16===d)S=ge.getInt32LE(e,t),t+=4;else if(1===d)S=ge.getFloat64LE(e,t),t+=8,!1===l&&(S=new se(S));else if(9===d){const n=ge.getInt32LE(e,t),r=ge.getInt32LE(e,t+4);t+=8,S=new Date(new Y(n,r).toNumber())}else if(8===d){if(0!==e[t]&&1!==e[t])throw new b("illegal boolean type value");S=1===e[t++]}else if(3===d){const r=t,i=ge.getInt32LE(e,t);if(i<=0||i>e.length-t)throw new b("bad embedded document length in bson");if(o)S=e.slice(t,t+i);else{let t=n;g||(t={...n,validation:{utf8:N}}),S=$e(e,r,t,!1)}t+=i}else if(4===d){const r=t,o=ge.getInt32LE(e,t);let s=n;const f=t+o;if(i&&i[m]&&(s={...n,raw:!0}),g||(s={...s,validation:{utf8:N}}),S=$e(e,r,s,!0),0!==e[(t+=o)-1])throw new b("invalid array terminator byte");if(t!==f)throw new b("corrupted array bson")}else if(6===d)S=void 0;else if(10===d)S=null;else if(18===d)if(a)S=ge.getBigInt64LE(e,t),t+=8;else{const n=ge.getInt32LE(e,t),r=ge.getInt32LE(e,t+4);t+=8;const i=new Y(n,r);S=u&&!0===l&&i.lessThanOrEqual(Ee)&&i.greaterThanOrEqual(Oe)?i.toNumber():i}else if(19===d){const n=L.allocateUnsafe(16);for(let r=0;r<16;r++)n[r]=e[t+r];t+=16,S=new oe(n)}else if(5===d){let n=ge.getInt32LE(e,t);t+=4;const r=n,i=e[t++];if(n<0)throw new b("Negative binary type element size found");if(n>e.byteLength)throw new b("Binary type size larger than document size");if(null!=e.slice){if(i===T.SUBTYPE_BYTE_ARRAY){if(n=ge.getInt32LE(e,t),t+=4,n<0)throw new b("Negative binary type element size found for subtype 0x02");if(n>r-4)throw new b("Binary type with subtype 0x02 contains too long binary size");if(n<r-4)throw new b("Binary type with subtype 0x02 contains too short binary size")}f&&l?S=L.toLocalBufferType(e.slice(t,t+n)):(S=new T(e.slice(t,t+n),i),4===i&&A.isValid(S)&&(S=S.toUUID()))}else{if(i===T.SUBTYPE_BYTE_ARRAY){if(n=ge.getInt32LE(e,t),t+=4,n<0)throw new b("Negative binary type element size found for subtype 0x02");if(n>r-4)throw new b("Binary type with subtype 0x02 contains too long binary size");if(n<r-4)throw new b("Binary type with subtype 0x02 contains too short binary size")}if(f&&l)for(S=L.allocateUnsafe(n),p=0;p<n;p++)S[p]=e[t+p];else S=new T(e.slice(t,t+n),i),4===i&&A.isValid(S)&&(S=S.toUUID())}t+=n}else if(11===d&&!1===s){for(p=t;0!==e[p]&&p<e.length;)p++;if(p>=e.length)throw new b("Bad BSON Document: illegal CString");const n=L.toUTF8(e,t,p,!1);for(p=t=p+1;0!==e[p]&&p<e.length;)p++;if(p>=e.length)throw new b("Bad BSON Document: illegal CString");const r=L.toUTF8(e,t,p,!1);t=p+1;const i=new Array(r.length);for(p=0;p<r.length;p++)switch(r[p]){case"m":i[p]="m";break;case"s":i[p]="g";break;case"i":i[p]="i"}S=new RegExp(n,i.join(""))}else if(11===d&&!0===s){for(p=t;0!==e[p]&&p<e.length;)p++;if(p>=e.length)throw new b("Bad BSON Document: illegal CString");const n=L.toUTF8(e,t,p,!1);for(p=t=p+1;0!==e[p]&&p<e.length;)p++;if(p>=e.length)throw new b("Bad BSON Document: illegal CString");const r=L.toUTF8(e,t,p,!1);t=p+1,S=new we(n,r)}else if(14===d){const n=ge.getInt32LE(e,t);if(t+=4,n<=0||n>e.length-t||0!==e[t+n-1])throw new b("bad string length in bson");const r=L.toUTF8(e,t,t+n-1,N);S=l?r:new Be(r),t+=n}else if(17===d)S=new Ne({i:ge.getUint32LE(e,t),t:ge.getUint32LE(e,t+4)}),t+=8;else if(255===d)S=new le;else if(127===d)S=new ue;else if(13===d){const n=ge.getInt32LE(e,t);if(t+=4,n<=0||n>e.length-t||0!==e[t+n-1])throw new b("bad string length in bson");const r=L.toUTF8(e,t,t+n-1,N);S=new R(r),t+=n}else if(15===d){const r=ge.getInt32LE(e,t);if(t+=4,r<13)throw new b("code_w_scope total size shorter minimum expected length");const i=ge.getInt32LE(e,t);if(t+=4,i<=0||i>e.length-t||0!==e[t+i-1])throw new b("bad string length in bson");const o=L.toUTF8(e,t,t+i-1,N),s=t+=i,f=ge.getInt32LE(e,t),u=$e(e,s,n,!1);if(t+=f,r<8+f+i)throw new b("code_w_scope total size is too short, truncating scope");if(r>8+f+i)throw new b("code_w_scope total size is too long, clips outer document");S=new R(o,u)}else{if(12!==d)throw new b(`Detected unknown BSON type ${d.toString(16)} for fieldname "${m}"`);{const n=ge.getInt32LE(e,t);if(t+=4,n<=0||n>e.length-t||0!==e[t+n-1])throw new b("bad string length in bson");const r=L.toUTF8(e,t,t+n-1,N);t+=n;const i=L.allocateUnsafe(12);for(let n=0;n<12;n++)i[n]=e[t+n];const o=new pe(i);t+=12,S=new F(r,o)}}"__proto__"===m?Object.defineProperty(y,m,{value:S,writable:!0,enumerable:!0,configurable:!0}):y[m]=S}if(m!==t-p){if(r)throw new b("corrupt array bson");throw new b("corrupt object bson")}if(!B)return y;if(D(y)){const e=Object.assign({},y);return delete e.$ref,delete e.$id,delete e.$db,new F(y.$ref,y.$id,y.$db,e)}return y}const _e=/\x00/,Le=new Set(["$db","$ref","$id","$clusterTime"]);function Ue(e,t,n,r){e[r++]=2;e[(r=r+L.encodeUTF8Into(e,t,r)+1)-1]=0;const i=L.encodeUTF8Into(e,n,r+4);return ge.setInt32LE(e,r,i+1),r=r+4+i,e[r++]=0,r}function Te(e,t,n,r){const i=!Object.is(n,-0)&&Number.isSafeInteger(n)&&n<=f&&n>=u?16:1;e[r++]=i;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r+=16===i?ge.setInt32LE(e,r,n):ge.setFloat64LE(e,r,n)}function ve(e,t,n,r){e[r++]=18;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r+=ge.setBigInt64LE(e,r,n)}function je(e,t,n,r){e[r++]=10;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r}function Ae(e,t,n,r){e[r++]=8;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,e[r++]=n?1:0,r}function Re(e,t,n,r){e[r++]=9;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=Y.fromNumber(n.getTime()),o=i.getLowBits(),s=i.getHighBits();return r+=ge.setInt32LE(e,r,o),r+=ge.setInt32LE(e,r,s)}function De(e,t,n,r){e[r++]=11;if(r+=L.encodeUTF8Into(e,t,r),e[r++]=0,n.source&&null!=n.source.match(_e))throw new b("value "+n.source+" must not contain null bytes");return r+=L.encodeUTF8Into(e,n.source,r),e[r++]=0,n.ignoreCase&&(e[r++]=105),n.global&&(e[r++]=115),n.multiline&&(e[r++]=109),e[r++]=0,r}function Fe(e,t,n,r){e[r++]=11;if(r+=L.encodeUTF8Into(e,t,r),e[r++]=0,null!=n.pattern.match(_e))throw new b("pattern "+n.pattern+" must not contain null bytes");r+=L.encodeUTF8Into(e,n.pattern,r),e[r++]=0;const i=n.options.split("").sort().join("");return r+=L.encodeUTF8Into(e,i,r),e[r++]=0,r}function Me(e,t,n,r){null===n?e[r++]=10:"MinKey"===n._bsontype?e[r++]=255:e[r++]=127;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r}function ze(e,t,n,r){e[r++]=7;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r+=n.serializeInto(e,r)}function Je(e,t,n,r){e[r++]=5;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=n.length;if(r+=ge.setInt32LE(e,r,i),e[r++]=0,i<=16)for(let t=0;t<i;t++)e[r+t]=n[t];else e.set(n,r);return r+=i}function Ve(e,t,n,r,i,o,s,f,u){if(u.has(n))throw new b("Cannot convert circular structure to BSON");u.add(n),e[r++]=Array.isArray(n)?4:3;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const l=Ge(e,n,i,r,o+1,s,f,u);return u.delete(n),l}function Ce(e,t,n,r){e[r++]=19;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;for(let t=0;t<16;t++)e[r+t]=n.bytes[t];return r+16}function He(e,t,n,r){e[r++]="Long"===n._bsontype?18:17;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=n.getLowBits(),o=n.getHighBits();return r+=ge.setInt32LE(e,r,i),r+=ge.setInt32LE(e,r,o)}function qe(e,t,n,r){n=n.valueOf(),e[r++]=16;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r+=ge.setInt32LE(e,r,n)}function ke(e,t,n,r){e[r++]=1;return r+=L.encodeUTF8Into(e,t,r),e[r++]=0,r+=ge.setFloat64LE(e,r,n.value)}function Ye(e,t,n,r){e[r++]=13;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=n.toString(),o=L.encodeUTF8Into(e,i,r+4)+1;return ge.setInt32LE(e,r,o),r=r+4+o-1,e[r++]=0,r}function Pe(e,t,n,r,i=!1,o=0,s=!1,f=!0,u){if(n.scope&&"object"==typeof n.scope){e[r++]=15;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;let l=r;const a=n.code;r+=4;const h=L.encodeUTF8Into(e,a,r+4)+1;ge.setInt32LE(e,r,h),e[r+4+h-1]=0,r=r+h+4;const c=Ge(e,n.scope,i,r,o+1,s,f,u);r=c-1;const g=c-l;l+=ge.setInt32LE(e,l,g),e[r++]=0}else{e[r++]=13;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=n.code.toString(),o=L.encodeUTF8Into(e,i,r+4)+1;ge.setInt32LE(e,r,o),r=r+4+o-1,e[r++]=0}return r}function Ze(e,t,n,r){e[r++]=5;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=n.buffer;let o=n.position;if(n.sub_type===T.SUBTYPE_BYTE_ARRAY&&(o+=4),r+=ge.setInt32LE(e,r,o),e[r++]=n.sub_type,n.sub_type===T.SUBTYPE_BYTE_ARRAY&&(o-=4,r+=ge.setInt32LE(e,r,o)),o<=16)for(let t=0;t<o;t++)e[r+t]=i[t];else e.set(i,r);return r+=n.position}function Ke(e,t,n,r){e[r++]=14;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;const i=L.encodeUTF8Into(e,n.value,r+4)+1;return ge.setInt32LE(e,r,i),r=r+4+i-1,e[r++]=0,r}function We(e,t,n,r,i,o,s){e[r++]=3;r+=L.encodeUTF8Into(e,t,r),e[r++]=0;let f=r,u={$ref:n.collection||n.namespace,$id:n.oid};null!=n.db&&(u.$db=n.db),u=Object.assign(u,n.fields);const l=Ge(e,u,!1,r,i+1,o,!0,s),a=l-f;return f+=ge.setInt32LE(e,r,a),l}function Ge(e,s,f,u,l,a,h,c){if(null==c){if(null==s)return e[0]=5,e[1]=0,e[2]=0,e[3]=0,e[4]=0,5;if(Array.isArray(s))throw new b("serialize does not support an array as the root input");if("object"!=typeof s)throw new b("serialize does not support non-object as the root input");if("_bsontype"in s&&"string"==typeof s._bsontype)throw new b("BSON types cannot be serialized as a document");if(o(s)||r(s)||n(s)||t(s))throw new b("date, regexp, typedarray, and arraybuffer cannot be BSON documents");c=new Set}c.add(s);let g=u+4;if(Array.isArray(s))for(let t=0;t<s.length;t++){const i=`${t}`;let u=s[t];if("function"==typeof u?.toBSON&&(u=u.toBSON()),"string"==typeof u)g=Ue(e,i,u,g);else if("number"==typeof u)g=Te(e,i,u,g);else if("bigint"==typeof u)g=ve(e,i,u,g);else if("boolean"==typeof u)g=Ae(e,i,u,g);else if(u instanceof Date||o(u))g=Re(e,i,u,g);else if(void 0===u)g=je(e,i,0,g);else if(null===u)g=je(e,i,0,g);else if(n(u))g=Je(e,i,u,g);else if(u instanceof RegExp||r(u))g=De(e,i,u,g);else if("object"==typeof u&&null==u._bsontype)g=Ve(e,i,u,g,f,l,a,h,c);else{if("object"==typeof u&&6!==u[Symbol.for("@@mdb.bson.version")])throw new d;if("ObjectId"===u._bsontype)g=ze(e,i,u,g);else if("Decimal128"===u._bsontype)g=Ce(e,i,u,g);else if("Long"===u._bsontype||"Timestamp"===u._bsontype)g=He(e,i,u,g);else if("Double"===u._bsontype)g=ke(e,i,u,g);else if("function"==typeof u&&a)g=Ye(e,i,u,g);else if("Code"===u._bsontype)g=Pe(e,i,u,g,f,l,a,h,c);else if("Binary"===u._bsontype)g=Ze(e,i,u,g);else if("BSONSymbol"===u._bsontype)g=Ke(e,i,u,g);else if("DBRef"===u._bsontype)g=We(e,i,u,g,l,a,c);else if("BSONRegExp"===u._bsontype)g=Fe(e,i,u,g);else if("Int32"===u._bsontype)g=qe(e,i,u,g);else if("MinKey"===u._bsontype||"MaxKey"===u._bsontype)g=Me(e,i,u,g);else if(void 0!==u._bsontype)throw new b(`Unrecognized or invalid _bsontype: ${String(u._bsontype)}`)}}else if(s instanceof Map||i(s)){const t=s.entries();let i=!1;for(;!i;){const s=t.next();if(i=!!s.done,i)continue;const u=s.value[0];let p=s.value[1];"function"==typeof p?.toBSON&&(p=p.toBSON());const m=typeof p;if("string"==typeof u&&!Le.has(u)){if(null!=u.match(_e))throw new b("key "+u+" must not contain null bytes");if(f){if("$"===u[0])throw new b("key "+u+" must not start with '$'");if(u.includes("."))throw new b("key "+u+" must not contain '.'")}}if("string"===m)g=Ue(e,u,p,g);else if("number"===m)g=Te(e,u,p,g);else if("bigint"===m)g=ve(e,u,p,g);else if("boolean"===m)g=Ae(e,u,p,g);else if(p instanceof Date||o(p))g=Re(e,u,p,g);else if(null===p||void 0===p&&!1===h)g=je(e,u,0,g);else if(n(p))g=Je(e,u,p,g);else if(p instanceof RegExp||r(p))g=De(e,u,p,g);else if("object"===m&&null==p._bsontype)g=Ve(e,u,p,g,f,l,a,h,c);else{if("object"==typeof p&&6!==p[Symbol.for("@@mdb.bson.version")])throw new d;if("ObjectId"===p._bsontype)g=ze(e,u,p,g);else if("object"===m&&"Decimal128"===p._bsontype)g=Ce(e,u,p,g);else if("Long"===p._bsontype||"Timestamp"===p._bsontype)g=He(e,u,p,g);else if("Double"===p._bsontype)g=ke(e,u,p,g);else if("Code"===p._bsontype)g=Pe(e,u,p,g,f,l,a,h,c);else if("function"==typeof p&&a)g=Ye(e,u,p,g);else if("Binary"===p._bsontype)g=Ze(e,u,p,g);else if("BSONSymbol"===p._bsontype)g=Ke(e,u,p,g);else if("DBRef"===p._bsontype)g=We(e,u,p,g,l,a,c);else if("BSONRegExp"===p._bsontype)g=Fe(e,u,p,g);else if("Int32"===p._bsontype)g=qe(e,u,p,g);else if("MinKey"===p._bsontype||"MaxKey"===p._bsontype)g=Me(e,u,p,g);else if(void 0!==p._bsontype)throw new b(`Unrecognized or invalid _bsontype: ${String(p._bsontype)}`)}}}else{if("function"==typeof s?.toBSON&&null!=(s=s.toBSON())&&"object"!=typeof s)throw new b("toBSON function did not return an object");for(const t of Object.keys(s)){let i=s[t];"function"==typeof i?.toBSON&&(i=i.toBSON());const u=typeof i;if("string"==typeof t&&!Le.has(t)){if(null!=t.match(_e))throw new b("key "+t+" must not contain null bytes");if(f){if("$"===t[0])throw new b("key "+t+" must not start with '$'");if(t.includes("."))throw new b("key "+t+" must not contain '.'")}}if("string"===u)g=Ue(e,t,i,g);else if("number"===u)g=Te(e,t,i,g);else if("bigint"===u)g=ve(e,t,i,g);else if("boolean"===u)g=Ae(e,t,i,g);else if(i instanceof Date||o(i))g=Re(e,t,i,g);else if(void 0===i)!1===h&&(g=je(e,t,0,g));else if(null===i)g=je(e,t,0,g);else if(n(i))g=Je(e,t,i,g);else if(i instanceof RegExp||r(i))g=De(e,t,i,g);else if("object"===u&&null==i._bsontype)g=Ve(e,t,i,g,f,l,a,h,c);else{if("object"==typeof i&&6!==i[Symbol.for("@@mdb.bson.version")])throw new d;if("ObjectId"===i._bsontype)g=ze(e,t,i,g);else if("object"===u&&"Decimal128"===i._bsontype)g=Ce(e,t,i,g);else if("Long"===i._bsontype||"Timestamp"===i._bsontype)g=He(e,t,i,g);else if("Double"===i._bsontype)g=ke(e,t,i,g);else if("Code"===i._bsontype)g=Pe(e,t,i,g,f,l,a,h,c);else if("function"==typeof i&&a)g=Ye(e,t,i,g);else if("Binary"===i._bsontype)g=Ze(e,t,i,g);else if("BSONSymbol"===i._bsontype)g=Ke(e,t,i,g);else if("DBRef"===i._bsontype)g=We(e,t,i,g,l,a,c);else if("BSONRegExp"===i._bsontype)g=Fe(e,t,i,g);else if("Int32"===i._bsontype)g=qe(e,t,i,g);else if("MinKey"===i._bsontype||"MaxKey"===i._bsontype)g=Me(e,t,i,g);else if(void 0!==i._bsontype)throw new b(`Unrecognized or invalid _bsontype: ${String(i._bsontype)}`)}}}c.delete(s),e[g++]=0;const p=g-u;return u+=ge.setInt32LE(e,u,p),g}const Xe={$oid:pe,$binary:T,$uuid:T,$symbol:Be,$numberInt:fe,$numberDecimal:oe,$numberDouble:se,$numberLong:Y,$minKey:le,$maxKey:ue,$regex:we,$regularExpression:we,$timestamp:Ne};function Qe(e,t={}){if("number"==typeof e){const n=e<=f&&e>=u,r=e<=l&&e>=a;if(t.relaxed||t.legacy)return e;if(Number.isInteger(e)&&!Object.is(e,-0)){if(n)return new fe(e);if(r)return t.useBigInt64?BigInt(e):Y.fromNumber(e)}return new se(e)}if(null==e||"object"!=typeof e)return e;if(e.$undefined)return null;const n=Object.keys(e).filter((t=>t.startsWith("$")&&null!=e[t]));for(let r=0;r<n.length;r++){const i=Xe[n[r]];if(i)return i.fromExtendedJSON(e,t)}if(null!=e.$date){const n=e.$date,r=new Date;if(t.legacy)if("number"==typeof n)r.setTime(n);else if("string"==typeof n)r.setTime(Date.parse(n));else{if("bigint"!=typeof n)throw new p("Unrecognized type for EJSON date: "+typeof n);r.setTime(Number(n))}else if("string"==typeof n)r.setTime(Date.parse(n));else if(Y.isLong(n))r.setTime(n.toNumber());else if("number"==typeof n&&t.relaxed)r.setTime(n);else{if("bigint"!=typeof n)throw new p("Unrecognized type for EJSON date: "+typeof n);r.setTime(Number(n))}return r}if(null!=e.$code){const t=Object.assign({},e);return e.$scope&&(t.$scope=Qe(e.$scope)),R.fromExtendedJSON(e)}if(D(e)||e.$dbPointer){const t=e.$ref?e:e.$dbPointer;if(t instanceof F)return t;const n=Object.keys(t).filter((e=>e.startsWith("$")));let r=!0;if(n.forEach((e=>{-1===["$ref","$id","$db"].indexOf(e)&&(r=!1)})),r)return F.fromExtendedJSON(t)}return e}function et(e){const t=e.toISOString();return 0!==e.getUTCMilliseconds()?t:t.slice(0,-5)+"Z"}function tt(e,t){if(e instanceof Map||i(e)){const n=Object.create(null);for(const[t,r]of e){if("string"!=typeof t)throw new b("Can only serialize maps with string keys");n[t]=r}return tt(n,t)}if(("object"==typeof e||"function"==typeof e)&&null!==e){const n=t.seenObjects.findIndex((t=>t.obj===e));if(-1!==n){const e=t.seenObjects.map((e=>e.propertyName)),r=e.slice(0,n).map((e=>`${e} -> `)).join(""),i=e[n],o=" -> "+e.slice(n+1,e.length-1).map((e=>`${e} -> `)).join(""),s=e[e.length-1],f=" ".repeat(r.length+i.length/2),u="-".repeat(o.length+(i.length+s.length)/2-1);throw new b(`Converting circular structure to EJSON:\n ${r}${i}${o}${s}\n ${f}\\${u}/`)}t.seenObjects[t.seenObjects.length-1].obj=e}if(Array.isArray(e))return function(e,t){return e.map(((e,n)=>{t.seenObjects.push({propertyName:`index ${n}`,obj:null});try{return tt(e,t)}finally{t.seenObjects.pop()}}))}(e,t);if(void 0===e)return null;if(e instanceof Date||o(e)){const n=e.getTime(),r=n>-1&&n<2534023188e5;return t.legacy?t.relaxed&&r?{$date:e.getTime()}:{$date:et(e)}:t.relaxed&&r?{$date:et(e)}:{$date:{$numberLong:e.getTime().toString()}}}if(!("number"!=typeof e||t.relaxed&&isFinite(e))){if(Number.isInteger(e)&&!Object.is(e,-0)){if(e>=u&&e<=f)return{$numberInt:e.toString()};if(e>=a&&e<=l)return{$numberLong:e.toString()}}return{$numberDouble:Object.is(e,-0)?"-0.0":e.toString()}}if("bigint"==typeof e)return t.relaxed?Number(BigInt.asIntN(64,e)):{$numberLong:BigInt.asIntN(64,e).toString()};if(e instanceof RegExp||r(e)){let n=e.flags;if(void 0===n){const t=e.toString().match(/[gimuy]*$/);t&&(n=t[0])}return new we(e.source,n).toExtendedJSON(t)}return null!=e&&"object"==typeof e?function(e,t){if(null==e||"object"!=typeof e)throw new b("not an object instance");const n=e._bsontype;if(void 0===n){const n={};for(const r of Object.keys(e)){t.seenObjects.push({propertyName:r,obj:null});try{const i=tt(e[r],t);"__proto__"===r?Object.defineProperty(n,r,{value:i,writable:!0,enumerable:!0,configurable:!0}):n[r]=i}finally{t.seenObjects.pop()}}return n}if(null!=e&&"object"==typeof e&&"string"==typeof e._bsontype&&6!==e[Symbol.for("@@mdb.bson.version")])throw new d;if(function(e){return null!=e&&"object"==typeof e&&"_bsontype"in e&&"string"==typeof e._bsontype}(e)){let r=e;if("function"!=typeof r.toExtendedJSON){const t=nt[e._bsontype];if(!t)throw new b("Unrecognized or invalid _bsontype: "+e._bsontype);r=t(r)}return"Code"===n&&r.scope?r=new R(r.code,tt(r.scope,t)):"DBRef"===n&&r.oid&&(r=new F(tt(r.collection,t),tt(r.oid,t),tt(r.db,t),tt(r.fields,t))),r.toExtendedJSON(t)}throw new b("_bsontype must be a string, but was: "+typeof n)}(e,t):e}const nt={Binary:e=>new T(e.value(),e.sub_type),Code:e=>new R(e.code,e.scope),DBRef:e=>new F(e.collection||e.namespace,e.oid,e.db,e.fields),Decimal128:e=>new oe(e.bytes),Double:e=>new se(e.value),Int32:e=>new fe(e.value),Long:e=>Y.fromBits(null!=e.low?e.low:e.low_,null!=e.low?e.high:e.high_,null!=e.low?e.unsigned:e.unsigned_),MaxKey:()=>new ue,MinKey:()=>new le,ObjectId:e=>new pe(e),BSONRegExp:e=>new we(e.pattern,e.options),BSONSymbol:e=>new Be(e.value),Timestamp:e=>Ne.fromBits(e.low,e.high)};function rt(e,t){const n={useBigInt64:t?.useBigInt64??!1,relaxed:t?.relaxed??!0,legacy:t?.legacy??!1};return JSON.parse(e,((e,t)=>{if(-1!==e.indexOf("\0"))throw new b(`BSON Document field names cannot contain null bytes, found: ${JSON.stringify(e)}`);return Qe(t,n)}))}function it(e,t,n,r){null!=n&&"object"==typeof n&&(r=n,n=0),null==t||"object"!=typeof t||Array.isArray(t)||(r=t,t=void 0,n=0);const i=tt(e,Object.assign({relaxed:!0,legacy:!1},r,{seenObjects:[{propertyName:"(root)",obj:null}]}));return JSON.stringify(i,t,n)}const ot=Object.create(null);function st(e,t){try{return ge.getNonnegativeInt32LE(e,t)}catch(e){throw new m("BSON size cannot be negative",t,{cause:e})}}function ft(e,t){let n=t;for(;0!==e[n];n++);if(n===e.length-1)throw new m("Null terminator not found",t);return n}ot.parse=rt,ot.stringify=it,ot.serialize=function(e,t){return t=t||{},JSON.parse(it(e,t))},ot.deserialize=function(e,t){return t=t||{},rt(JSON.stringify(e),t)},Object.freeze(ot);const ut=Object.create(null);ut.parseToElements=function(e,t=0){if(t??=0,e.length<5)throw new m(`Input must be at least 5 bytes, got ${e.length} bytes`,t);const n=st(e,t);if(n>e.length-t)throw new m(`Parsed documentSize (${n} bytes) does not match input length (${e.length} bytes)`,t);if(0!==e[t+n-1])throw new m("BSON documents must end in 0x00",t+n);const r=[];let i=t+4;for(;i<=n+t;){const o=e[i];if(i+=1,0===o){if(i-t!==n)throw new m("Invalid 0x00 type byte",i);break}const s=i,f=ft(e,i)-s;let u;if(i+=f+1,1===o||18===o||9===o||17===o)u=8;else if(16===o)u=4;else if(7===o)u=12;else if(19===o)u=16;else if(8===o)u=1;else if(10===o||6===o||127===o||255===o)u=0;else if(11===o)u=ft(e,ft(e,i)+1)+1-i;else if(3===o||4===o||15===o)u=st(e,i);else{if(2!==o&&5!==o&&12!==o&&13!==o&&14!==o)throw new m(`Invalid 0x${o.toString(16).padStart(2,"0")} type byte`,i);u=st(e,i)+4,5===o&&(u+=1),12===o&&(u+=12)}if(u>n)throw new m("value reports length larger than document",i);r.push([o,s,f,i,u]),i+=u}return r},ut.ByteUtils=L,ut.NumberUtils=ge,Object.freeze(ut);const lt=17825792;let at=L.allocate(lt);function ht(e){at.length<e&&(at=L.allocate(e))}function ct(e,t={}){const n="boolean"==typeof t.checkKeys&&t.checkKeys,r="boolean"==typeof t.serializeFunctions&&t.serializeFunctions,i="boolean"!=typeof t.ignoreUndefined||t.ignoreUndefined,o="number"==typeof t.minInternalBufferSize?t.minInternalBufferSize:lt;at.length<o&&(at=L.allocate(o));const s=Ge(at,e,n,0,0,r,i,null),f=L.allocateUnsafe(s);return f.set(at.subarray(0,s),0),f}function gt(e,t,n={}){const r="boolean"==typeof n.checkKeys&&n.checkKeys,i="boolean"==typeof n.serializeFunctions&&n.serializeFunctions,o="boolean"!=typeof n.ignoreUndefined||n.ignoreUndefined,s="number"==typeof n.index?n.index:0,f=Ge(at,e,r,0,0,i,o,null);return t.set(at.subarray(0,f),s),s+f-1}function bt(e,t={}){return xe(L.toLocalBufferType(e),t)}function dt(e,t={}){return me(e,"boolean"==typeof(t=t||{}).serializeFunctions&&t.serializeFunctions,"boolean"!=typeof t.ignoreUndefined||t.ignoreUndefined)}function pt(e,t,n,r,i,o){const s=Object.assign({allowObjectSmallerThanBufferSize:!0,index:0},o),f=L.toLocalBufferType(e);let u=t;for(let e=0;e<n;e++){const t=ge.getInt32LE(f,u);s.index=u,r[i+e]=xe(f,s),u+=t}return u}var mt=Object.freeze({__proto__:null,BSONError:b,BSONOffsetError:m,BSONRegExp:we,BSONRuntimeError:p,BSONSymbol:Be,BSONType:g,BSONValue:U,BSONVersionError:d,Binary:T,Code:R,DBRef:F,Decimal128:oe,Double:se,EJSON:ot,Int32:fe,Long:Y,MaxKey:ue,MinKey:le,ObjectId:pe,Timestamp:Ne,UUID:A,calculateObjectSize:dt,deserialize:bt,deserializeStream:pt,onDemand:ut,serialize:ct,serializeWithBufferAndIndex:gt,setInternalBufferSize:ht});return e.BSON=mt,e.BSONError=b,e.BSONOffsetError=m,e.BSONRegExp=we,e.BSONRuntimeError=p,e.BSONSymbol=Be,e.BSONType=g,e.BSONValue=U,e.BSONVersionError=d,e.Binary=T,e.Code=R,e.DBRef=F,e.Decimal128=oe,e.Double=se,e.EJSON=ot,e.Int32=fe,e.Long=Y,e.MaxKey=ue,e.MinKey=le,e.ObjectId=pe,e.Timestamp=Ne,e.UUID=A,e.calculateObjectSize=dt,e.deserialize=bt,e.deserializeStream=pt,e.onDemand=ut,e.serialize=ct,e.serializeWithBufferAndIndex=gt,e.setInternalBufferSize=ht,e}({});
Code: Select all
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Buffer=f()}})(function(){var define,module,exports;return function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r}()({1:[function(require,module,exports){"use strict";exports.byteLength=byteLength;exports.toByteArray=toByteArray;exports.fromByteArray=fromByteArray;var lookup=[];var revLookup=[];var Arr=typeof Uint8Array!=="undefined"?Uint8Array:Array;var code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(var i=0,len=code.length;i<len;++i){lookup[i]=code[i];revLookup[code.charCodeAt(i)]=i}revLookup["-".charCodeAt(0)]=62;revLookup["_".charCodeAt(0)]=63;function getLens(b64){var len=b64.length;if(len%4>0){throw new Error("Invalid string. Length must be a multiple of 4")}var validLen=b64.indexOf("=");if(validLen===-1)validLen=len;var placeHoldersLen=validLen===len?0:4-validLen%4;return[validLen,placeHoldersLen]}function byteLength(b64){var lens=getLens(b64);var validLen=lens[0];var placeHoldersLen=lens[1];return(validLen+placeHoldersLen)*3/4-placeHoldersLen}function _byteLength(b64,validLen,placeHoldersLen){return(validLen+placeHoldersLen)*3/4-placeHoldersLen}function toByteArray(b64){var tmp;var lens=getLens(b64);var validLen=lens[0];var placeHoldersLen=lens[1];var arr=new Arr(_byteLength(b64,validLen,placeHoldersLen));var curByte=0;var len=placeHoldersLen>0?validLen-4:validLen;var i;for(i=0;i<len;i+=4){tmp=revLookup[b64.charCodeAt(i)]<<18|revLookup[b64.charCodeAt(i+1)]<<12|revLookup[b64.charCodeAt(i+2)]<<6|revLookup[b64.charCodeAt(i+3)];arr[curByte++]=tmp>>16&255;arr[curByte++]=tmp>>8&255;arr[curByte++]=tmp&255}if(placeHoldersLen===2){tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4;arr[curByte++]=tmp&255}if(placeHoldersLen===1){tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2;arr[curByte++]=tmp>>8&255;arr[curByte++]=tmp&255}return arr}function tripletToBase64(num){return lookup[num>>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[num&63]}function encodeChunk(uint8,start,end){var tmp;var output=[];for(var i=start;i<end;i+=3){tmp=(uint8[i]<<16&16711680)+(uint8[i+1]<<8&65280)+(uint8[i+2]&255);output.push(tripletToBase64(tmp))}return output.join("")}function fromByteArray(uint8){var tmp;var len=uint8.length;var extraBytes=len%3;var parts=[];var maxChunkLength=16383;for(var i=0,len2=len-extraBytes;i<len2;i+=maxChunkLength){parts.push(encodeChunk(uint8,i,i+maxChunkLength>len2?len2:i+maxChunkLength))}if(extraBytes===1){tmp=uint8[len-1];parts.push(lookup[tmp>>2]+lookup[tmp<<4&63]+"==")}else if(extraBytes===2){tmp=(uint8[len-2]<<8)+uint8[len-1];parts.push(lookup[tmp>>10]+lookup[tmp>>4&63]+lookup[tmp<<2&63]+"=")}return parts.join("")}},{}],2:[function(require,module,exports){(function(Buffer){(function(){"use strict";var base64=require("base64-js");var ieee754=require("ieee754");exports.Buffer=Buffer;exports.SlowBuffer=SlowBuffer;exports.INSPECT_MAX_BYTES=50;var K_MAX_LENGTH=2147483647;exports.kMaxLength=K_MAX_LENGTH;Buffer.TYPED_ARRAY_SUPPORT=typedArraySupport();if(!Buffer.TYPED_ARRAY_SUPPORT&&typeof console!=="undefined"&&typeof console.error==="function"){console.error("This browser lacks typed array (Uint8Array) support which is required by "+"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.")}function typedArraySupport(){try{var arr=new Uint8Array(1);arr.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}};return arr.foo()===42}catch(e){return false}}Object.defineProperty(Buffer.prototype,"parent",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.buffer}});Object.defineProperty(Buffer.prototype,"offset",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.byteOffset}});function createBuffer(length){if(length>K_MAX_LENGTH){throw new RangeError('The value "'+length+'" is invalid for option "size"')}var buf=new Uint8Array(length);buf.__proto__=Buffer.prototype;return buf}function Buffer(arg,encodingOrOffset,length){if(typeof arg==="number"){if(typeof encodingOrOffset==="string"){throw new TypeError('The "string" argument must be of type string. Received type number')}return allocUnsafe(arg)}return from(arg,encodingOrOffset,length)}if(typeof Symbol!=="undefined"&&Symbol.species!=null&&Buffer[Symbol.species]===Buffer){Object.defineProperty(Buffer,Symbol.species,{value:null,configurable:true,enumerable:false,writable:false})}Buffer.poolSize=8192;function from(value,encodingOrOffset,length){if(typeof value==="string"){return fromString(value,encodingOrOffset)}if(ArrayBuffer.isView(value)){return fromArrayLike(value)}if(value==null){throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, "+"or Array-like Object. Received type "+typeof value)}if(isInstance(value,ArrayBuffer)||value&&isInstance(value.buffer,ArrayBuffer)){return fromArrayBuffer(value,encodingOrOffset,length)}if(typeof value==="number"){throw new TypeError('The "value" argument must not be of type number. Received type number')}var valueOf=value.valueOf&&value.valueOf();if(valueOf!=null&&valueOf!==value){return Buffer.from(valueOf,encodingOrOffset,length)}var b=fromObject(value);if(b)return b;if(typeof Symbol!=="undefined"&&Symbol.toPrimitive!=null&&typeof value[Symbol.toPrimitive]==="function"){return Buffer.from(value[Symbol.toPrimitive]("string"),encodingOrOffset,length)}throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, "+"or Array-like Object. Received type "+typeof value)}Buffer.from=function(value,encodingOrOffset,length){return from(value,encodingOrOffset,length)};Buffer.prototype.__proto__=Uint8Array.prototype;Buffer.__proto__=Uint8Array;function assertSize(size){if(typeof size!=="number"){throw new TypeError('"size" argument must be of type number')}else if(size<0){throw new RangeError('The value "'+size+'" is invalid for option "size"')}}function alloc(size,fill,encoding){assertSize(size);if(size<=0){return createBuffer(size)}if(fill!==undefined){return typeof encoding==="string"?createBuffer(size).fill(fill,encoding):createBuffer(size).fill(fill)}return createBuffer(size)}Buffer.alloc=function(size,fill,encoding){return alloc(size,fill,encoding)};function allocUnsafe(size){assertSize(size);return createBuffer(size<0?0:checked(size)|0)}Buffer.allocUnsafe=function(size){return allocUnsafe(size)};Buffer.allocUnsafeSlow=function(size){return allocUnsafe(size)};function fromString(string,encoding){if(typeof encoding!=="string"||encoding===""){encoding="utf8"}if(!Buffer.isEncoding(encoding)){throw new TypeError("Unknown encoding: "+encoding)}var length=byteLength(string,encoding)|0;var buf=createBuffer(length);var actual=buf.write(string,encoding);if(actual!==length){buf=buf.slice(0,actual)}return buf}function fromArrayLike(array){var length=array.length<0?0:checked(array.length)|0;var buf=createBuffer(length);for(var i=0;i<length;i+=1){buf[i]=array[i]&255}return buf}function fromArrayBuffer(array,byteOffset,length){if(byteOffset<0||array.byteLength<byteOffset){throw new RangeError('"offset" is outside of buffer bounds')}if(array.byteLength<byteOffset+(length||0)){throw new RangeError('"length" is outside of buffer bounds')}var buf;if(byteOffset===undefined&&length===undefined){buf=new Uint8Array(array)}else if(length===undefined){buf=new Uint8Array(array,byteOffset)}else{buf=new Uint8Array(array,byteOffset,length)}buf.__proto__=Buffer.prototype;return buf}function fromObject(obj){if(Buffer.isBuffer(obj)){var len=checked(obj.length)|0;var buf=createBuffer(len);if(buf.length===0){return buf}obj.copy(buf,0,0,len);return buf}if(obj.length!==undefined){if(typeof obj.length!=="number"||numberIsNaN(obj.length)){return createBuffer(0)}return fromArrayLike(obj)}if(obj.type==="Buffer"&&Array.isArray(obj.data)){return fromArrayLike(obj.data)}}function checked(length){if(length>=K_MAX_LENGTH){throw new RangeError("Attempt to allocate Buffer larger than maximum "+"size: 0x"+K_MAX_LENGTH.toString(16)+" bytes")}return length|0}function SlowBuffer(length){if(+length!=length){length=0}return Buffer.alloc(+length)}Buffer.isBuffer=function isBuffer(b){return b!=null&&b._isBuffer===true&&b!==Buffer.prototype};Buffer.compare=function compare(a,b){if(isInstance(a,Uint8Array))a=Buffer.from(a,a.offset,a.byteLength);if(isInstance(b,Uint8Array))b=Buffer.from(b,b.offset,b.byteLength);if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array')}if(a===b)return 0;var x=a.length;var y=b.length;for(var i=0,len=Math.min(x,y);i<len;++i){if(a[i]!==b[i]){x=a[i];y=b[i];break}}if(x<y)return-1;if(y<x)return 1;return 0};Buffer.isEncoding=function isEncoding(encoding){switch(String(encoding).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return true;default:return false}};Buffer.concat=function concat(list,length){if(!Array.isArray(list)){throw new TypeError('"list" argument must be an Array of Buffers')}if(list.length===0){return Buffer.alloc(0)}var i;if(length===undefined){length=0;for(i=0;i<list.length;++i){length+=list[i].length}}var buffer=Buffer.allocUnsafe(length);var pos=0;for(i=0;i<list.length;++i){var buf=list[i];if(isInstance(buf,Uint8Array)){buf=Buffer.from(buf)}if(!Buffer.isBuffer(buf)){throw new TypeError('"list" argument must be an Array of Buffers')}buf.copy(buffer,pos);pos+=buf.length}return buffer};function byteLength(string,encoding){if(Buffer.isBuffer(string)){return string.length}if(ArrayBuffer.isView(string)||isInstance(string,ArrayBuffer)){return string.byteLength}if(typeof string!=="string"){throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. '+"Received type "+typeof string)}var len=string.length;var mustMatch=arguments.length>2&&arguments[2]===true;if(!mustMatch&&len===0)return 0;var loweredCase=false;for(;;){switch(encoding){case"ascii":case"latin1":case"binary":return len;case"utf8":case"utf-8":return utf8ToBytes(string).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return len*2;case"hex":return len>>>1;case"base64":return base64ToBytes(string).length;default:if(loweredCase){return mustMatch?-1:utf8ToBytes(string).length}encoding=(""+encoding).toLowerCase();loweredCase=true}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){var loweredCase=false;if(start===undefined||start<0){start=0}if(start>this.length){return""}if(end===undefined||end>this.length){end=this.length}if(end<=0){return""}end>>>=0;start>>>=0;if(end<=start){return""}if(!encoding)encoding="utf8";while(true){switch(encoding){case"hex":return hexSlice(this,start,end);case"utf8":case"utf-8":return utf8Slice(this,start,end);case"ascii":return asciiSlice(this,start,end);case"latin1":case"binary":return latin1Slice(this,start,end);case"base64":return base64Slice(this,start,end);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(encoding+"").toLowerCase();loweredCase=true}}}Buffer.prototype._isBuffer=true;function swap(b,n,m){var i=b[n];b[n]=b[m];b[m]=i}Buffer.prototype.swap16=function swap16(){var len=this.length;if(len%2!==0){throw new RangeError("Buffer size must be a multiple of 16-bits")}for(var i=0;i<len;i+=2){swap(this,i,i+1)}return this};Buffer.prototype.swap32=function swap32(){var len=this.length;if(len%4!==0){throw new RangeError("Buffer size must be a multiple of 32-bits")}for(var i=0;i<len;i+=4){swap(this,i,i+3);swap(this,i+1,i+2)}return this};Buffer.prototype.swap64=function swap64(){var len=this.length;if(len%8!==0){throw new RangeError("Buffer size must be a multiple of 64-bits")}for(var i=0;i<len;i+=8){swap(this,i,i+7);swap(this,i+1,i+6);swap(this,i+2,i+5);swap(this,i+3,i+4)}return this};Buffer.prototype.toString=function toString(){var length=this.length;if(length===0)return"";if(arguments.length===0)return utf8Slice(this,0,length);return slowToString.apply(this,arguments)};Buffer.prototype.toLocaleString=Buffer.prototype.toString;Buffer.prototype.equals=function equals(b){if(!Buffer.isBuffer(b))throw new TypeError("Argument must be a Buffer");if(this===b)return true;return Buffer.compare(this,b)===0};Buffer.prototype.inspect=function inspect(){var str="";var max=exports.INSPECT_MAX_BYTES;str=this.toString("hex",0,max).replace(/(.{2})/g,"$1 ").trim();if(this.length>max)str+=" ... ";return"<Buffer "+str+">"};Buffer.prototype.compare=function compare(target,start,end,thisStart,thisEnd){if(isInstance(target,Uint8Array)){target=Buffer.from(target,target.offset,target.byteLength)}if(!Buffer.isBuffer(target)){throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. '+"Received type "+typeof target)}if(start===undefined){start=0}if(end===undefined){end=target?target.length:0}if(thisStart===undefined){thisStart=0}if(thisEnd===undefined){thisEnd=this.length}if(start<0||end>target.length||thisStart<0||thisEnd>this.length){throw new RangeError("out of range index")}if(thisStart>=thisEnd&&start>=end){return 0}if(thisStart>=thisEnd){return-1}if(start>=end){return 1}start>>>=0;end>>>=0;thisStart>>>=0;thisEnd>>>=0;if(this===target)return 0;var x=thisEnd-thisStart;var y=end-start;var len=Math.min(x,y);var thisCopy=this.slice(thisStart,thisEnd);var targetCopy=target.slice(start,end);for(var i=0;i<len;++i){if(thisCopy[i]!==targetCopy[i]){x=thisCopy[i];y=targetCopy[i];break}}if(x<y)return-1;if(y<x)return 1;return 0};function bidirectionalIndexOf(buffer,val,byteOffset,encoding,dir){if(buffer.length===0)return-1;if(typeof byteOffset==="string"){encoding=byteOffset;byteOffset=0}else if(byteOffset>2147483647){byteOffset=2147483647}else if(byteOffset<-2147483648){byteOffset=-2147483648}byteOffset=+byteOffset;if(numberIsNaN(byteOffset)){byteOffset=dir?0:buffer.length-1}if(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length){if(dir)return-1;else byteOffset=buffer.length-1}else if(byteOffset<0){if(dir)byteOffset=0;else return-1}if(typeof val==="string"){val=Buffer.from(val,encoding)}if(Buffer.isBuffer(val)){if(val.length===0){return-1}return arrayIndexOf(buffer,val,byteOffset,encoding,dir)}else if(typeof val==="number"){val=val&255;if(typeof Uint8Array.prototype.indexOf==="function"){if(dir){return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset)}else{return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset)}}return arrayIndexOf(buffer,[val],byteOffset,encoding,dir)}throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(arr,val,byteOffset,encoding,dir){var indexSize=1;var arrLength=arr.length;var valLength=val.length;if(encoding!==undefined){encoding=String(encoding).toLowerCase();if(encoding==="ucs2"||encoding==="ucs-2"||encoding==="utf16le"||encoding==="utf-16le"){if(arr.length<2||val.length<2){return-1}indexSize=2;arrLength/=2;valLength/=2;byteOffset/=2}}function read(buf,i){if(indexSize===1){return buf[i]}else{return buf.readUInt16BE(i*indexSize)}}var i;if(dir){var foundIndex=-1;for(i=byteOffset;i<arrLength;i++){if(read(arr,i)===read(val,foundIndex===-1?0:i-foundIndex)){if(foundIndex===-1)foundIndex=i;if(i-foundIndex+1===valLength)return foundIndex*indexSize}else{if(foundIndex!==-1)i-=i-foundIndex;foundIndex=-1}}}else{if(byteOffset+valLength>arrLength)byteOffset=arrLength-valLength;for(i=byteOffset;i>=0;i--){var found=true;for(var j=0;j<valLength;j++){if(read(arr,i+j)!==read(val,j)){found=false;break}}if(found)return i}}return-1}Buffer.prototype.includes=function includes(val,byteOffset,encoding){return this.indexOf(val,byteOffset,encoding)!==-1};Buffer.prototype.indexOf=function indexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,true)};Buffer.prototype.lastIndexOf=function lastIndexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,false)};function hexWrite(buf,string,offset,length){offset=Number(offset)||0;var remaining=buf.length-offset;if(!length){length=remaining}else{length=Number(length);if(length>remaining){length=remaining}}var strLen=string.length;if(length>strLen/2){length=strLen/2}for(var i=0;i<length;++i){var parsed=parseInt(string.substr(i*2,2),16);if(numberIsNaN(parsed))return i;buf[offset+i]=parsed}return i}function utf8Write(buf,string,offset,length){return blitBuffer(utf8ToBytes(string,buf.length-offset),buf,offset,length)}function asciiWrite(buf,string,offset,length){return blitBuffer(asciiToBytes(string),buf,offset,length)}function latin1Write(buf,string,offset,length){return asciiWrite(buf,string,offset,length)}function base64Write(buf,string,offset,length){return blitBuffer(base64ToBytes(string),buf,offset,length)}function ucs2Write(buf,string,offset,length){return blitBuffer(utf16leToBytes(string,buf.length-offset),buf,offset,length)}Buffer.prototype.write=function write(string,offset,length,encoding){if(offset===undefined){encoding="utf8";length=this.length;offset=0}else if(length===undefined&&typeof offset==="string"){encoding=offset;length=this.length;offset=0}else if(isFinite(offset)){offset=offset>>>0;if(isFinite(length)){length=length>>>0;if(encoding===undefined)encoding="utf8"}else{encoding=length;length=undefined}}else{throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported")}var remaining=this.length-offset;if(length===undefined||length>remaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError("Attempt to write outside buffer bounds")}if(!encoding)encoding="utf8";var loweredCase=false;for(;;){switch(encoding){case"hex":return hexWrite(this,string,offset,length);case"utf8":case"utf-8":return utf8Write(this,string,offset,length);case"ascii":return asciiWrite(this,string,offset,length);case"latin1":case"binary":return latin1Write(this,string,offset,length);case"base64":return base64Write(this,string,offset,length);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(""+encoding).toLowerCase();loweredCase=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);var res=[];var i=start;while(i<end){var firstByte=buf[i];var codePoint=null;var bytesPerSequence=firstByte>239?4:firstByte>223?3:firstByte>191?2:1;if(i+bytesPerSequence<=end){var secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<128){codePoint=firstByte}break;case 2:secondByte=buf[i+1];if((secondByte&192)===128){tempCodePoint=(firstByte&31)<<6|secondByte&63;if(tempCodePoint>127){codePoint=tempCodePoint}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&192)===128&&(thirdByte&192)===128){tempCodePoint=(firstByte&15)<<12|(secondByte&63)<<6|thirdByte&63;if(tempCodePoint>2047&&(tempCodePoint<55296||tempCodePoint>57343)){codePoint=tempCodePoint}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&192)===128&&(thirdByte&192)===128&&(fourthByte&192)===128){tempCodePoint=(firstByte&15)<<18|(secondByte&63)<<12|(thirdByte&63)<<6|fourthByte&63;if(tempCodePoint>65535&&tempCodePoint<1114112){codePoint=tempCodePoint}}}}if(codePoint===null){codePoint=65533;bytesPerSequence=1}else if(codePoint>65535){codePoint-=65536;res.push(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}res.push(codePoint);i+=bytesPerSequence}return decodeCodePointsArray(res)}var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(codePoints){var len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints)}var res="";var i=0;while(i<len){res+=String.fromCharCode.apply(String,codePoints.slice(i,i+=MAX_ARGUMENTS_LENGTH))}return res}function asciiSlice(buf,start,end){var ret="";end=Math.min(buf.length,end);for(var i=start;i<end;++i){ret+=String.fromCharCode(buf[i]&127)}return ret}function latin1Slice(buf,start,end){var ret="";end=Math.min(buf.length,end);for(var i=start;i<end;++i){ret+=String.fromCharCode(buf[i])}return ret}function hexSlice(buf,start,end){var len=buf.length;if(!start||start<0)start=0;if(!end||end<0||end>len)end=len;var out="";for(var i=start;i<end;++i){out+=toHex(buf[i])}return out}function utf16leSlice(buf,start,end){var bytes=buf.slice(start,end);var res="";for(var i=0;i<bytes.length;i+=2){res+=String.fromCharCode(bytes[i]+bytes[i+1]*256)}return res}Buffer.prototype.slice=function slice(start,end){var len=this.length;start=~~start;end=end===undefined?len:~~end;if(start<0){start+=len;if(start<0)start=0}else if(start>len){start=len}if(end<0){end+=len;if(end<0)end=0}else if(end>len){end=len}if(end<start)end=start;var newBuf=this.subarray(start,end);newBuf.__proto__=Buffer.prototype;return newBuf};function checkOffset(offset,ext,length){if(offset%1!==0||offset<0)throw new RangeError("offset is not uint");if(offset+ext>length)throw new RangeError("Trying to access beyond buffer length")}Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i<byteLength&&(mul*=256)){val+=this[offset+i]*mul}return val};Buffer.prototype.readUIntBE=function readUIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){checkOffset(offset,byteLength,this.length)}var val=this[offset+--byteLength];var mul=1;while(byteLength>0&&(mul*=256)){val+=this[offset+--byteLength]*mul}return val};Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);return this[offset]};Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8};Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1]};Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*16777216};Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*16777216+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3])};Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var val=this[offset];var mul=1;var i=0;while(++i<byteLength&&(mul*=256)){val+=this[offset+i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);var i=byteLength;var mul=1;var val=this[offset+--i];while(i>0&&(mul*=256)){val+=this[offset+--i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readInt8=function readInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&128))return this[offset];return(255-this[offset]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset]|this[offset+1]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);var val=this[offset+1]|this[offset]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3]};Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8)};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError('"buffer" argument must be a Buffer instance');if(value>max||value<min)throw new RangeError('"value" argument is out of bounds');if(offset+ext>buf.length)throw new RangeError("Index out of range")}Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}var mul=1;var i=0;this[offset]=value&255;while(++i<byteLength&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUIntBE=function writeUIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){var maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}var i=byteLength-1;var mul=1;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,255,0);this[offset]=value&255;return offset+1};Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,65535,0);this[offset]=value&255;this[offset+1]=value>>>8;return offset+2};Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,65535,0);this[offset]=value>>>8;this[offset+1]=value&255;return offset+2};Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&255;return offset+4};Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255;return offset+4};Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=0;var mul=1;var sub=0;this[offset]=value&255;while(++i<byteLength&&(mul*=256)){if(value<0&&sub===0&&this[offset+i-1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){var limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}var i=byteLength-1;var mul=1;var sub=0;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){if(value<0&&sub===0&&this[offset+i+1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,127,-128);if(value<0)value=255+value+1;this[offset]=value&255;return offset+1};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);this[offset]=value&255;this[offset+1]=value>>>8;return offset+2};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);this[offset]=value>>>8;this[offset+1]=value&255;return offset+2};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);this[offset]=value&255;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24;return offset+4};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(value<0)value=4294967295+value+1;this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255;return offset+4};function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError("Index out of range");if(offset<0)throw new RangeError("Index out of range")}function writeFloat(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,4,34028234663852886e22,-34028234663852886e22)}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,8,17976931348623157e292,-17976931348623157e292)}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.copy=function copy(target,targetStart,start,end){if(!Buffer.isBuffer(target))throw new TypeError("argument should be a Buffer");if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end<start)end=start;if(end===start)return 0;if(target.length===0||this.length===0)return 0;if(targetStart<0){throw new RangeError("targetStart out of bounds")}if(start<0||start>=this.length)throw new RangeError("Index out of range");if(end<0)throw new RangeError("sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-targetStart<end-start){end=target.length-targetStart+start}var len=end-start;if(this===target&&typeof Uint8Array.prototype.copyWithin==="function"){this.copyWithin(targetStart,start,end)}else if(this===target&&start<targetStart&&targetStart<end){for(var i=len-1;i>=0;--i){target[i+targetStart]=this[i+start]}}else{Uint8Array.prototype.set.call(target,this.subarray(start,end),targetStart)}return len};Buffer.prototype.fill=function fill(val,start,end,encoding){if(typeof val==="string"){if(typeof start==="string"){encoding=start;start=0;end=this.length}else if(typeof end==="string"){encoding=end;end=this.length}if(encoding!==undefined&&typeof encoding!=="string"){throw new TypeError("encoding must be a string")}if(typeof encoding==="string"&&!Buffer.isEncoding(encoding)){throw new TypeError("Unknown encoding: "+encoding)}if(val.length===1){var code=val.charCodeAt(0);if(encoding==="utf8"&&code<128||encoding==="latin1"){val=code}}}else if(typeof val==="number"){val=val&255}if(start<0||this.length<start||this.length<end){throw new RangeError("Out of range index")}if(end<=start){return this}start=start>>>0;end=end===undefined?this.length:end>>>0;if(!val)val=0;var i;if(typeof val==="number"){for(i=start;i<end;++i){this[i]=val}}else{var bytes=Buffer.isBuffer(val)?val:Buffer.from(val,encoding);var len=bytes.length;if(len===0){throw new TypeError('The value "'+val+'" is invalid for argument "value"')}for(i=0;i<end-start;++i){this[i+start]=bytes[i%len]}}return this};var INVALID_BASE64_RE=/[^+/0-9A-Za-z-_]/g;function base64clean(str){str=str.split("=")[0];str=str.trim().replace(INVALID_BASE64_RE,"");if(str.length<2)return"";while(str.length%4!==0){str=str+"="}return str}function toHex(n){if(n<16)return"0"+n.toString(16);return n.toString(16)}function utf8ToBytes(string,units){units=units||Infinity;var codePoint;var length=string.length;var leadSurrogate=null;var bytes=[];for(var i=0;i<length;++i){codePoint=string.charCodeAt(i);if(codePoint>55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){if((units-=3)>-1)bytes.push(239,191,189);continue}else if(i+1===length){if((units-=3)>-1)bytes.push(239,191,189);continue}leadSurrogate=codePoint;continue}if(codePoint<56320){if((units-=3)>-1)bytes.push(239,191,189);leadSurrogate=codePoint;continue}codePoint=(leadSurrogate-55296<<10|codePoint-56320)+65536}else if(leadSurrogate){if((units-=3)>-1)bytes.push(239,191,189)}leadSurrogate=null;if(codePoint<128){if((units-=1)<0)break;bytes.push(codePoint)}else if(codePoint<2048){if((units-=2)<0)break;bytes.push(codePoint>>6|192,codePoint&63|128)}else if(codePoint<65536){if((units-=3)<0)break;bytes.push(codePoint>>12|224,codePoint>>6&63|128,codePoint&63|128)}else if(codePoint<1114112){if((units-=4)<0)break;bytes.push(codePoint>>18|240,codePoint>>12&63|128,codePoint>>6&63|128,codePoint&63|128)}else{throw new Error("Invalid code point")}}return bytes}function asciiToBytes(str){var byteArray=[];for(var i=0;i<str.length;++i){byteArray.push(str.charCodeAt(i)&255)}return byteArray}function utf16leToBytes(str,units){var c,hi,lo;var byteArray=[];for(var i=0;i<str.length;++i){if((units-=2)<0)break;c=str.charCodeAt(i);hi=c>>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(base64clean(str))}function blitBuffer(src,dst,offset,length){for(var i=0;i<length;++i){if(i+offset>=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}function isInstance(obj,type){return obj instanceof type||obj!=null&&obj.constructor!=null&&obj.constructor.name!=null&&obj.constructor.name===type.name}function numberIsNaN(obj){return obj!==obj}}).call(this)}).call(this,require("buffer").Buffer)},{"base64-js":1,buffer:2,ieee754:3}],3:[function(require,module,exports){exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var nBits=-7;var i=isLE?nBytes-1:0;var d=isLE?-1:1;var s=buffer[offset+i];i+=d;e=s&(1<<-nBits)-1;s>>=-nBits;nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i],i+=d,nBits-=8){}m=e&(1<<-nBits)-1;e>>=-nBits;nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i],i+=d,nBits-=8){}if(e===0){e=1-eBias}else if(e===eMax){return m?NaN:(s?-1:1)*Infinity}else{m=m+Math.pow(2,mLen);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)};exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c;var eLen=nBytes*8-mLen-1;var eMax=(1<<eLen)-1;var eBias=eMax>>1;var rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0;var i=isLE?0:nBytes-1;var d=isLE?1:-1;var s=value<0||value===0&&1/value<0?1:0;value=Math.abs(value);if(isNaN(value)||value===Infinity){m=isNaN(value)?1:0;e=eMax}else{e=Math.floor(Math.log(value)/Math.LN2);if(value*(c=Math.pow(2,-e))<1){e--;c*=2}if(e+eBias>=1){value+=rt/c}else{value+=rt*Math.pow(2,1-eBias)}if(value*c>=2){e++;c/=2}if(e+eBias>=eMax){m=0;e=eMax}else if(e+eBias>=1){m=(value*c-1)*Math.pow(2,mLen);e=e+eBias}else{m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen);e=0}}for(;mLen>=8;buffer[offset+i]=m&255,i+=d,m/=256,mLen-=8){}e=e<<mLen|m;eLen+=mLen;for(;eLen>0;buffer[offset+i]=e&255,i+=d,e/=256,eLen-=8){}buffer[offset+i-d]|=s*128}},{}],4:[function(require,module,exports){arguments[4][1][0].apply(exports,arguments)},{dup:1}],5:[function(require,module,exports){arguments[4][3][0].apply(exports,arguments)},{dup:3}],6:[function(require,module,exports){(function(Buffer){(function(){"use strict";const base64=require("base64-js");const ieee754=require("ieee754");const customInspectSymbol=typeof Symbol==="function"&&typeof Symbol["for"]==="function"?Symbol["for"]("nodejs.util.inspect.custom"):null;exports.Buffer=Buffer;exports.SlowBuffer=SlowBuffer;exports.INSPECT_MAX_BYTES=50;const K_MAX_LENGTH=2147483647;exports.kMaxLength=K_MAX_LENGTH;const K_STRING_MAX_LENGTH=(1<<28)-16;exports.kStringMaxLength=K_STRING_MAX_LENGTH;exports.constants={MAX_LENGTH:K_MAX_LENGTH,MAX_STRING_LENGTH:K_STRING_MAX_LENGTH};Buffer.TYPED_ARRAY_SUPPORT=typedArraySupport();if(!Buffer.TYPED_ARRAY_SUPPORT&&typeof console!=="undefined"&&typeof console.error==="function"){console.error("This browser lacks typed array (Uint8Array) support which is required by "+"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.")}function typedArraySupport(){try{const arr=new Uint8Array(1);const proto={foo:function(){return 42}};Object.setPrototypeOf(proto,Uint8Array.prototype);Object.setPrototypeOf(arr,proto);return arr.foo()===42}catch(e){return false}}Object.defineProperty(Buffer.prototype,"parent",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.buffer}});Object.defineProperty(Buffer.prototype,"offset",{enumerable:true,get:function(){if(!Buffer.isBuffer(this))return undefined;return this.byteOffset}});function createBuffer(length){if(length>K_MAX_LENGTH){throw new RangeError('The value "'+length+'" is invalid for option "size"')}const buf=new Uint8Array(length);Object.setPrototypeOf(buf,Buffer.prototype);return buf}function Buffer(arg,encodingOrOffset,length){if(typeof arg==="number"){if(typeof encodingOrOffset==="string"){throw new TypeError('The "string" argument must be of type string. Received type number')}return allocUnsafe(arg)}return from(arg,encodingOrOffset,length)}Buffer.poolSize=8192;function from(value,encodingOrOffset,length){if(typeof value==="string"){return fromString(value,encodingOrOffset)}if(ArrayBuffer.isView(value)){return fromArrayView(value)}if(value==null){throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, "+"or Array-like Object. Received type "+typeof value)}if(isInstance(value,ArrayBuffer)||value&&isInstance(value.buffer,ArrayBuffer)){return fromArrayBuffer(value,encodingOrOffset,length)}if(typeof SharedArrayBuffer!=="undefined"&&(isInstance(value,SharedArrayBuffer)||value&&isInstance(value.buffer,SharedArrayBuffer))){return fromArrayBuffer(value,encodingOrOffset,length)}if(typeof value==="number"){throw new TypeError('The "value" argument must not be of type number. Received type number')}const valueOf=value.valueOf&&value.valueOf();if(valueOf!=null&&valueOf!==value){return Buffer.from(valueOf,encodingOrOffset,length)}const b=fromObject(value);if(b)return b;if(typeof Symbol!=="undefined"&&Symbol.toPrimitive!=null&&typeof value[Symbol.toPrimitive]==="function"){return Buffer.from(value[Symbol.toPrimitive]("string"),encodingOrOffset,length)}throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, "+"or Array-like Object. Received type "+typeof value)}Buffer.from=function(value,encodingOrOffset,length){return from(value,encodingOrOffset,length)};Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype);Object.setPrototypeOf(Buffer,Uint8Array);function assertSize(size){if(typeof size!=="number"){throw new TypeError('"size" argument must be of type number')}else if(size<0){throw new RangeError('The value "'+size+'" is invalid for option "size"')}}function alloc(size,fill,encoding){assertSize(size);if(size<=0){return createBuffer(size)}if(fill!==undefined){return typeof encoding==="string"?createBuffer(size).fill(fill,encoding):createBuffer(size).fill(fill)}return createBuffer(size)}Buffer.alloc=function(size,fill,encoding){return alloc(size,fill,encoding)};function allocUnsafe(size){assertSize(size);return createBuffer(size<0?0:checked(size)|0)}Buffer.allocUnsafe=function(size){return allocUnsafe(size)};Buffer.allocUnsafeSlow=function(size){return allocUnsafe(size)};function fromString(string,encoding){if(typeof encoding!=="string"||encoding===""){encoding="utf8"}if(!Buffer.isEncoding(encoding)){throw new TypeError("Unknown encoding: "+encoding)}const length=byteLength(string,encoding)|0;let buf=createBuffer(length);const actual=buf.write(string,encoding);if(actual!==length){buf=buf.slice(0,actual)}return buf}function fromArrayLike(array){const length=array.length<0?0:checked(array.length)|0;const buf=createBuffer(length);for(let i=0;i<length;i+=1){buf[i]=array[i]&255}return buf}function fromArrayView(arrayView){if(isInstance(arrayView,Uint8Array)){const copy=new Uint8Array(arrayView);return fromArrayBuffer(copy.buffer,copy.byteOffset,copy.byteLength)}return fromArrayLike(arrayView)}function fromArrayBuffer(array,byteOffset,length){if(byteOffset<0||array.byteLength<byteOffset){throw new RangeError('"offset" is outside of buffer bounds')}if(array.byteLength<byteOffset+(length||0)){throw new RangeError('"length" is outside of buffer bounds')}let buf;if(byteOffset===undefined&&length===undefined){buf=new Uint8Array(array)}else if(length===undefined){buf=new Uint8Array(array,byteOffset)}else{buf=new Uint8Array(array,byteOffset,length)}Object.setPrototypeOf(buf,Buffer.prototype);return buf}function fromObject(obj){if(Buffer.isBuffer(obj)){const len=checked(obj.length)|0;const buf=createBuffer(len);if(buf.length===0){return buf}obj.copy(buf,0,0,len);return buf}if(obj.length!==undefined){if(typeof obj.length!=="number"||numberIsNaN(obj.length)){return createBuffer(0)}return fromArrayLike(obj)}if(obj.type==="Buffer"&&Array.isArray(obj.data)){return fromArrayLike(obj.data)}}function checked(length){if(length>=K_MAX_LENGTH){throw new RangeError("Attempt to allocate Buffer larger than maximum "+"size: 0x"+K_MAX_LENGTH.toString(16)+" bytes")}return length|0}function SlowBuffer(length){if(+length!=length){length=0}return Buffer.alloc(+length)}Buffer.isBuffer=function isBuffer(b){return b!=null&&b._isBuffer===true&&b!==Buffer.prototype};Buffer.compare=function compare(a,b){if(isInstance(a,Uint8Array))a=Buffer.from(a,a.offset,a.byteLength);if(isInstance(b,Uint8Array))b=Buffer.from(b,b.offset,b.byteLength);if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b)){throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array')}if(a===b)return 0;let x=a.length;let y=b.length;for(let i=0,len=Math.min(x,y);i<len;++i){if(a[i]!==b[i]){x=a[i];y=b[i];break}}if(x<y)return-1;if(y<x)return 1;return 0};Buffer.isEncoding=function isEncoding(encoding){switch(String(encoding).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return true;default:return false}};Buffer.concat=function concat(list,length){if(!Array.isArray(list)){throw new TypeError('"list" argument must be an Array of Buffers')}if(list.length===0){return Buffer.alloc(0)}let i;if(length===undefined){length=0;for(i=0;i<list.length;++i){length+=list[i].length}}const buffer=Buffer.allocUnsafe(length);let pos=0;for(i=0;i<list.length;++i){let buf=list[i];if(isInstance(buf,Uint8Array)){if(pos+buf.length>buffer.length){if(!Buffer.isBuffer(buf)){buf=Buffer.from(buf.buffer,buf.byteOffset,buf.byteLength)}buf.copy(buffer,pos)}else{Uint8Array.prototype.set.call(buffer,buf,pos)}}else if(!Buffer.isBuffer(buf)){throw new TypeError('"list" argument must be an Array of Buffers')}else{buf.copy(buffer,pos)}pos+=buf.length}return buffer};function byteLength(string,encoding){if(Buffer.isBuffer(string)){return string.length}if(ArrayBuffer.isView(string)||isInstance(string,ArrayBuffer)){return string.byteLength}if(typeof string!=="string"){throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. '+"Received type "+typeof string)}const len=string.length;const mustMatch=arguments.length>2&&arguments[2]===true;if(!mustMatch&&len===0)return 0;let loweredCase=false;for(;;){switch(encoding){case"ascii":case"latin1":case"binary":return len;case"utf8":case"utf-8":return utf8ToBytes(string).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return len*2;case"hex":return len>>>1;case"base64":return base64ToBytes(string).length;default:if(loweredCase){return mustMatch?-1:utf8ToBytes(string).length}encoding=(""+encoding).toLowerCase();loweredCase=true}}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){let loweredCase=false;if(start===undefined||start<0){start=0}if(start>this.length){return""}if(end===undefined||end>this.length){end=this.length}if(end<=0){return""}end>>>=0;start>>>=0;if(end<=start){return""}if(!encoding)encoding="utf8";while(true){switch(encoding){case"hex":return hexSlice(this,start,end);case"utf8":case"utf-8":return utf8Slice(this,start,end);case"ascii":return asciiSlice(this,start,end);case"latin1":case"binary":return latin1Slice(this,start,end);case"base64":return base64Slice(this,start,end);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,start,end);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(encoding+"").toLowerCase();loweredCase=true}}}Buffer.prototype._isBuffer=true;function swap(b,n,m){const i=b[n];b[n]=b[m];b[m]=i}Buffer.prototype.swap16=function swap16(){const len=this.length;if(len%2!==0){throw new RangeError("Buffer size must be a multiple of 16-bits")}for(let i=0;i<len;i+=2){swap(this,i,i+1)}return this};Buffer.prototype.swap32=function swap32(){const len=this.length;if(len%4!==0){throw new RangeError("Buffer size must be a multiple of 32-bits")}for(let i=0;i<len;i+=4){swap(this,i,i+3);swap(this,i+1,i+2)}return this};Buffer.prototype.swap64=function swap64(){const len=this.length;if(len%8!==0){throw new RangeError("Buffer size must be a multiple of 64-bits")}for(let i=0;i<len;i+=8){swap(this,i,i+7);swap(this,i+1,i+6);swap(this,i+2,i+5);swap(this,i+3,i+4)}return this};Buffer.prototype.toString=function toString(){const length=this.length;if(length===0)return"";if(arguments.length===0)return utf8Slice(this,0,length);return slowToString.apply(this,arguments)};Buffer.prototype.toLocaleString=Buffer.prototype.toString;Buffer.prototype.equals=function equals(b){if(!Buffer.isBuffer(b))throw new TypeError("Argument must be a Buffer");if(this===b)return true;return Buffer.compare(this,b)===0};Buffer.prototype.inspect=function inspect(){let str="";const max=exports.INSPECT_MAX_BYTES;str=this.toString("hex",0,max).replace(/(.{2})/g,"$1 ").trim();if(this.length>max)str+=" ... ";return"<Buffer "+str+">"};if(customInspectSymbol){Buffer.prototype[customInspectSymbol]=Buffer.prototype.inspect}Buffer.prototype.compare=function compare(target,start,end,thisStart,thisEnd){if(isInstance(target,Uint8Array)){target=Buffer.from(target,target.offset,target.byteLength)}if(!Buffer.isBuffer(target)){throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. '+"Received type "+typeof target)}if(start===undefined){start=0}if(end===undefined){end=target?target.length:0}if(thisStart===undefined){thisStart=0}if(thisEnd===undefined){thisEnd=this.length}if(start<0||end>target.length||thisStart<0||thisEnd>this.length){throw new RangeError("out of range index")}if(thisStart>=thisEnd&&start>=end){return 0}if(thisStart>=thisEnd){return-1}if(start>=end){return 1}start>>>=0;end>>>=0;thisStart>>>=0;thisEnd>>>=0;if(this===target)return 0;let x=thisEnd-thisStart;let y=end-start;const len=Math.min(x,y);const thisCopy=this.slice(thisStart,thisEnd);const targetCopy=target.slice(start,end);for(let i=0;i<len;++i){if(thisCopy[i]!==targetCopy[i]){x=thisCopy[i];y=targetCopy[i];break}}if(x<y)return-1;if(y<x)return 1;return 0};function bidirectionalIndexOf(buffer,val,byteOffset,encoding,dir){if(buffer.length===0)return-1;if(typeof byteOffset==="string"){encoding=byteOffset;byteOffset=0}else if(byteOffset>2147483647){byteOffset=2147483647}else if(byteOffset<-2147483648){byteOffset=-2147483648}byteOffset=+byteOffset;if(numberIsNaN(byteOffset)){byteOffset=dir?0:buffer.length-1}if(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length){if(dir)return-1;else byteOffset=buffer.length-1}else if(byteOffset<0){if(dir)byteOffset=0;else return-1}if(typeof val==="string"){val=Buffer.from(val,encoding)}if(Buffer.isBuffer(val)){if(val.length===0){return-1}return arrayIndexOf(buffer,val,byteOffset,encoding,dir)}else if(typeof val==="number"){val=val&255;if(typeof Uint8Array.prototype.indexOf==="function"){if(dir){return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset)}else{return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset)}}return arrayIndexOf(buffer,[val],byteOffset,encoding,dir)}throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(arr,val,byteOffset,encoding,dir){let indexSize=1;let arrLength=arr.length;let valLength=val.length;if(encoding!==undefined){encoding=String(encoding).toLowerCase();if(encoding==="ucs2"||encoding==="ucs-2"||encoding==="utf16le"||encoding==="utf-16le"){if(arr.length<2||val.length<2){return-1}indexSize=2;arrLength/=2;valLength/=2;byteOffset/=2}}function read(buf,i){if(indexSize===1){return buf[i]}else{return buf.readUInt16BE(i*indexSize)}}let i;if(dir){let foundIndex=-1;for(i=byteOffset;i<arrLength;i++){if(read(arr,i)===read(val,foundIndex===-1?0:i-foundIndex)){if(foundIndex===-1)foundIndex=i;if(i-foundIndex+1===valLength)return foundIndex*indexSize}else{if(foundIndex!==-1)i-=i-foundIndex;foundIndex=-1}}}else{if(byteOffset+valLength>arrLength)byteOffset=arrLength-valLength;for(i=byteOffset;i>=0;i--){let found=true;for(let j=0;j<valLength;j++){if(read(arr,i+j)!==read(val,j)){found=false;break}}if(found)return i}}return-1}Buffer.prototype.includes=function includes(val,byteOffset,encoding){return this.indexOf(val,byteOffset,encoding)!==-1};Buffer.prototype.indexOf=function indexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,true)};Buffer.prototype.lastIndexOf=function lastIndexOf(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,false)};function hexWrite(buf,string,offset,length){offset=Number(offset)||0;const remaining=buf.length-offset;if(!length){length=remaining}else{length=Number(length);if(length>remaining){length=remaining}}const strLen=string.length;if(length>strLen>>>1){length=strLen>>>1}for(let i=0;i<length;++i){const a=string.charCodeAt(i*2+0);const b=string.charCodeAt(i*2+1);const hi=hexCharValueTable[a&127];const lo=hexCharValueTable[b&127];if((a|b|hi|lo)&~127){return i}buf[offset+i]=hi<<4|lo}return length}function utf8Write(buf,string,offset,length){return blitBuffer(utf8ToBytes(string,buf.length-offset),buf,offset,length)}function asciiWrite(buf,string,offset,length){return blitBuffer(asciiToBytes(string),buf,offset,length)}function base64Write(buf,string,offset,length){return blitBuffer(base64ToBytes(string),buf,offset,length)}function ucs2Write(buf,string,offset,length){return blitBuffer(utf16leToBytes(string,buf.length-offset),buf,offset,length)}Buffer.prototype.write=function write(string,offset,length,encoding){if(offset===undefined){encoding="utf8";length=this.length;offset=0}else if(length===undefined&&typeof offset==="string"){encoding=offset;length=this.length;offset=0}else if(isFinite(offset)){offset=offset>>>0;if(isFinite(length)){length=length>>>0;if(encoding===undefined)encoding="utf8"}else{encoding=length;length=undefined}}else{throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported")}const remaining=this.length-offset;if(length===undefined||length>remaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length){throw new RangeError("Attempt to write outside buffer bounds")}if(!encoding)encoding="utf8";let loweredCase=false;for(;;){switch(encoding){case"hex":return hexWrite(this,string,offset,length);case"utf8":case"utf-8":return utf8Write(this,string,offset,length);case"ascii":case"latin1":case"binary":return asciiWrite(this,string,offset,length);case"base64":return base64Write(this,string,offset,length);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,string,offset,length);default:if(loweredCase)throw new TypeError("Unknown encoding: "+encoding);encoding=(""+encoding).toLowerCase();loweredCase=true}}};Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length){return base64.fromByteArray(buf)}else{return base64.fromByteArray(buf.slice(start,end))}}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);const res=[];let i=start;while(i<end){const firstByte=buf[i];let codePoint=null;let bytesPerSequence=firstByte>239?4:firstByte>223?3:firstByte>191?2:1;if(i+bytesPerSequence<=end){let secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<128){codePoint=firstByte}break;case 2:secondByte=buf[i+1];if((secondByte&192)===128){tempCodePoint=(firstByte&31)<<6|secondByte&63;if(tempCodePoint>127){codePoint=tempCodePoint}}break;case 3:secondByte=buf[i+1];thirdByte=buf[i+2];if((secondByte&192)===128&&(thirdByte&192)===128){tempCodePoint=(firstByte&15)<<12|(secondByte&63)<<6|thirdByte&63;if(tempCodePoint>2047&&(tempCodePoint<55296||tempCodePoint>57343)){codePoint=tempCodePoint}}break;case 4:secondByte=buf[i+1];thirdByte=buf[i+2];fourthByte=buf[i+3];if((secondByte&192)===128&&(thirdByte&192)===128&&(fourthByte&192)===128){tempCodePoint=(firstByte&15)<<18|(secondByte&63)<<12|(thirdByte&63)<<6|fourthByte&63;if(tempCodePoint>65535&&tempCodePoint<1114112){codePoint=tempCodePoint}}}}if(codePoint===null){codePoint=65533;bytesPerSequence=1}else if(codePoint>65535){codePoint-=65536;res.push(codePoint>>>10&1023|55296);codePoint=56320|codePoint&1023}res.push(codePoint);i+=bytesPerSequence}return decodeCodePointsArray(res)}const MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(codePoints){const len=codePoints.length;if(len<=MAX_ARGUMENTS_LENGTH){return String.fromCharCode.apply(String,codePoints)}let res="";let i=0;while(i<len){res+=String.fromCharCode.apply(String,codePoints.slice(i,i+=MAX_ARGUMENTS_LENGTH))}return res}function asciiSlice(buf,start,end){let ret="";end=Math.min(buf.length,end);for(let i=start;i<end;++i){ret+=String.fromCharCode(buf[i]&127)}return ret}function latin1Slice(buf,start,end){let ret="";end=Math.min(buf.length,end);for(let i=start;i<end;++i){ret+=String.fromCharCode(buf[i])}return ret}function hexSlice(buf,start,end){const len=buf.length;if(!start||start<0)start=0;if(!end||end<0||end>len)end=len;let out="";for(let i=start;i<end;++i){out+=hexSliceLookupTable[buf[i]]}return out}function utf16leSlice(buf,start,end){const bytes=buf.slice(start,end);let res="";for(let i=0;i<bytes.length-1;i+=2){res+=String.fromCharCode(bytes[i]+bytes[i+1]*256)}return res}Buffer.prototype.slice=function slice(start,end){const len=this.length;start=~~start;end=end===undefined?len:~~end;if(start<0){start+=len;if(start<0)start=0}else if(start>len){start=len}if(end<0){end+=len;if(end<0)end=0}else if(end>len){end=len}if(end<start)end=start;const newBuf=this.subarray(start,end);Object.setPrototypeOf(newBuf,Buffer.prototype);return newBuf};function checkOffset(offset,ext,length){if(offset%1!==0||offset<0)throw new RangeError("offset is not uint");if(offset+ext>length)throw new RangeError("Trying to access beyond buffer length")}Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function readUIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);let val=this[offset];let mul=1;let i=0;while(++i<byteLength&&(mul*=256)){val+=this[offset+i]*mul}return val};Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function readUIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){checkOffset(offset,byteLength,this.length)}let val=this[offset+--byteLength];let mul=1;while(byteLength>0&&(mul*=256)){val+=this[offset+--byteLength]*mul}return val};Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);return this[offset]};Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8};Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1]};Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*16777216};Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]*16777216+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3])};Buffer.prototype.readBigUInt64LE=defineBigIntMethod(function readBigUInt64LE(offset){offset=offset>>>0;validateNumber(offset,"offset");const first=this[offset];const last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8)}const lo=first+this[++offset]*2**8+this[++offset]*2**16+this[++offset]*2**24;const hi=this[++offset]+this[++offset]*2**8+this[++offset]*2**16+last*2**24;return BigInt(lo)+(BigInt(hi)<<BigInt(32))});Buffer.prototype.readBigUInt64BE=defineBigIntMethod(function readBigUInt64BE(offset){offset=offset>>>0;validateNumber(offset,"offset");const first=this[offset];const last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8)}const hi=first*2**24+this[++offset]*2**16+this[++offset]*2**8+this[++offset];const lo=this[++offset]*2**24+this[++offset]*2**16+this[++offset]*2**8+last;return(BigInt(hi)<<BigInt(32))+BigInt(lo)});Buffer.prototype.readIntLE=function readIntLE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);let val=this[offset];let mul=1;let i=0;while(++i<byteLength&&(mul*=256)){val+=this[offset+i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readIntBE=function readIntBE(offset,byteLength,noAssert){offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert)checkOffset(offset,byteLength,this.length);let i=byteLength;let mul=1;let val=this[offset+--i];while(i>0&&(mul*=256)){val+=this[offset+--i]*mul}mul*=128;if(val>=mul)val-=Math.pow(2,8*byteLength);return val};Buffer.prototype.readInt8=function readInt8(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&128))return this[offset];return(255-this[offset]+1)*-1};Buffer.prototype.readInt16LE=function readInt16LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);const val=this[offset]|this[offset+1]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt16BE=function readInt16BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,2,this.length);const val=this[offset+1]|this[offset]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt32LE=function readInt32LE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24};Buffer.prototype.readInt32BE=function readInt32BE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3]};Buffer.prototype.readBigInt64LE=defineBigIntMethod(function readBigInt64LE(offset){offset=offset>>>0;validateNumber(offset,"offset");const first=this[offset];const last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8)}const val=this[offset+4]+this[offset+5]*2**8+this[offset+6]*2**16+(last<<24);return(BigInt(val)<<BigInt(32))+BigInt(first+this[++offset]*2**8+this[++offset]*2**16+this[++offset]*2**24)});Buffer.prototype.readBigInt64BE=defineBigIntMethod(function readBigInt64BE(offset){offset=offset>>>0;validateNumber(offset,"offset");const first=this[offset];const last=this[offset+7];if(first===undefined||last===undefined){boundsError(offset,this.length-8)}const val=(first<<24)+this[++offset]*2**16+this[++offset]*2**8+this[++offset];return(BigInt(val)<<BigInt(32))+BigInt(this[++offset]*2**24+this[++offset]*2**16+this[++offset]*2**8+last)});Buffer.prototype.readFloatLE=function readFloatLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,true,23,4)};Buffer.prototype.readFloatBE=function readFloatBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,4,this.length);return ieee754.read(this,offset,false,23,4)};Buffer.prototype.readDoubleLE=function readDoubleLE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,true,52,8)};Buffer.prototype.readDoubleBE=function readDoubleBE(offset,noAssert){offset=offset>>>0;if(!noAssert)checkOffset(offset,8,this.length);return ieee754.read(this,offset,false,52,8)};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw new TypeError('"buffer" argument must be a Buffer instance');if(value>max||value<min)throw new RangeError('"value" argument is out of bounds');if(offset+ext>buf.length)throw new RangeError("Index out of range")}Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){const maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}let mul=1;let i=0;this[offset]=value&255;while(++i<byteLength&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function writeUIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;byteLength=byteLength>>>0;if(!noAssert){const maxBytes=Math.pow(2,8*byteLength)-1;checkInt(this,value,offset,byteLength,maxBytes,0)}let i=byteLength-1;let mul=1;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){this[offset+i]=value/mul&255}return offset+byteLength};Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,255,0);this[offset]=value&255;return offset+1};Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,65535,0);this[offset]=value&255;this[offset+1]=value>>>8;return offset+2};Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,65535,0);this[offset]=value>>>8;this[offset+1]=value&255;return offset+2};Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);this[offset+3]=value>>>24;this[offset+2]=value>>>16;this[offset+1]=value>>>8;this[offset]=value&255;return offset+4};Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,4294967295,0);this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255;return offset+4};function wrtBigUInt64LE(buf,value,offset,min,max){checkIntBI(value,min,max,buf,offset,7);let lo=Number(value&BigInt(4294967295));buf[offset++]=lo;lo=lo>>8;buf[offset++]=lo;lo=lo>>8;buf[offset++]=lo;lo=lo>>8;buf[offset++]=lo;let hi=Number(value>>BigInt(32)&BigInt(4294967295));buf[offset++]=hi;hi=hi>>8;buf[offset++]=hi;hi=hi>>8;buf[offset++]=hi;hi=hi>>8;buf[offset++]=hi;return offset}function wrtBigUInt64BE(buf,value,offset,min,max){checkIntBI(value,min,max,buf,offset,7);let lo=Number(value&BigInt(4294967295));buf[offset+7]=lo;lo=lo>>8;buf[offset+6]=lo;lo=lo>>8;buf[offset+5]=lo;lo=lo>>8;buf[offset+4]=lo;let hi=Number(value>>BigInt(32)&BigInt(4294967295));buf[offset+3]=hi;hi=hi>>8;buf[offset+2]=hi;hi=hi>>8;buf[offset+1]=hi;hi=hi>>8;buf[offset]=hi;return offset+8}Buffer.prototype.writeBigUInt64LE=defineBigIntMethod(function writeBigUInt64LE(value,offset=0){return wrtBigUInt64LE(this,value,offset,BigInt(0),BigInt("0xffffffffffffffff"))});Buffer.prototype.writeBigUInt64BE=defineBigIntMethod(function writeBigUInt64BE(value,offset=0){return wrtBigUInt64BE(this,value,offset,BigInt(0),BigInt("0xffffffffffffffff"))});Buffer.prototype.writeIntLE=function writeIntLE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){const limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}let i=0;let mul=1;let sub=0;this[offset]=value&255;while(++i<byteLength&&(mul*=256)){if(value<0&&sub===0&&this[offset+i-1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeIntBE=function writeIntBE(value,offset,byteLength,noAssert){value=+value;offset=offset>>>0;if(!noAssert){const limit=Math.pow(2,8*byteLength-1);checkInt(this,value,offset,byteLength,limit-1,-limit)}let i=byteLength-1;let mul=1;let sub=0;this[offset+i]=value&255;while(--i>=0&&(mul*=256)){if(value<0&&sub===0&&this[offset+i+1]!==0){sub=1}this[offset+i]=(value/mul>>0)-sub&255}return offset+byteLength};Buffer.prototype.writeInt8=function writeInt8(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,1,127,-128);if(value<0)value=255+value+1;this[offset]=value&255;return offset+1};Buffer.prototype.writeInt16LE=function writeInt16LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);this[offset]=value&255;this[offset+1]=value>>>8;return offset+2};Buffer.prototype.writeInt16BE=function writeInt16BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,2,32767,-32768);this[offset]=value>>>8;this[offset+1]=value&255;return offset+2};Buffer.prototype.writeInt32LE=function writeInt32LE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);this[offset]=value&255;this[offset+1]=value>>>8;this[offset+2]=value>>>16;this[offset+3]=value>>>24;return offset+4};Buffer.prototype.writeInt32BE=function writeInt32BE(value,offset,noAssert){value=+value;offset=offset>>>0;if(!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(value<0)value=4294967295+value+1;this[offset]=value>>>24;this[offset+1]=value>>>16;this[offset+2]=value>>>8;this[offset+3]=value&255;return offset+4};Buffer.prototype.writeBigInt64LE=defineBigIntMethod(function writeBigInt64LE(value,offset=0){return wrtBigUInt64LE(this,value,offset,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});Buffer.prototype.writeBigInt64BE=defineBigIntMethod(function writeBigInt64BE(value,offset=0){return wrtBigUInt64BE(this,value,offset,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw new RangeError("Index out of range");if(offset<0)throw new RangeError("Index out of range")}function writeFloat(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,4,34028234663852886e22,-34028234663852886e22)}ieee754.write(buf,value,offset,littleEndian,23,4);return offset+4}Buffer.prototype.writeFloatLE=function writeFloatLE(value,offset,noAssert){return writeFloat(this,value,offset,true,noAssert)};Buffer.prototype.writeFloatBE=function writeFloatBE(value,offset,noAssert){return writeFloat(this,value,offset,false,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){value=+value;offset=offset>>>0;if(!noAssert){checkIEEE754(buf,value,offset,8,17976931348623157e292,-17976931348623157e292)}ieee754.write(buf,value,offset,littleEndian,52,8);return offset+8}Buffer.prototype.writeDoubleLE=function writeDoubleLE(value,offset,noAssert){return writeDouble(this,value,offset,true,noAssert)};Buffer.prototype.writeDoubleBE=function writeDoubleBE(value,offset,noAssert){return writeDouble(this,value,offset,false,noAssert)};Buffer.prototype.copy=function copy(target,targetStart,start,end){if(!Buffer.isBuffer(target))throw new TypeError("argument should be a Buffer");if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end<start)end=start;if(end===start)return 0;if(target.length===0||this.length===0)return 0;if(targetStart<0){throw new RangeError("targetStart out of bounds")}if(start<0||start>=this.length)throw new RangeError("Index out of range");if(end<0)throw new RangeError("sourceEnd out of bounds");if(end>this.length)end=this.length;if(target.length-targetStart<end-start){end=target.length-targetStart+start}const len=end-start;if(this===target&&typeof Uint8Array.prototype.copyWithin==="function"){this.copyWithin(targetStart,start,end)}else{Uint8Array.prototype.set.call(target,this.subarray(start,end),targetStart)}return len};Buffer.prototype.fill=function fill(val,start,end,encoding){if(typeof val==="string"){if(typeof start==="string"){encoding=start;start=0;end=this.length}else if(typeof end==="string"){encoding=end;end=this.length}if(encoding!==undefined&&typeof encoding!=="string"){throw new TypeError("encoding must be a string")}if(typeof encoding==="string"&&!Buffer.isEncoding(encoding)){throw new TypeError("Unknown encoding: "+encoding)}if(val.length===1){const code=val.charCodeAt(0);if(encoding==="utf8"&&code<128||encoding==="latin1"){val=code}}}else if(typeof val==="number"){val=val&255}else if(typeof val==="boolean"){val=Number(val)}if(start<0||this.length<start||this.length<end){throw new RangeError("Out of range index")}if(end<=start){return this}start=start>>>0;end=end===undefined?this.length:end>>>0;if(!val)val=0;let i;if(typeof val==="number"){for(i=start;i<end;++i){this[i]=val}}else{const bytes=Buffer.isBuffer(val)?val:Buffer.from(val,encoding);const len=bytes.length;if(len===0){throw new TypeError('The value "'+val+'" is invalid for argument "value"')}for(i=0;i<end-start;++i){this[i+start]=bytes[i%len]}}return this};const errors={};function E(sym,getMessage,Base){errors[sym]=class NodeError extends Base{constructor(){super();Object.defineProperty(this,"message",{value:getMessage.apply(this,arguments),writable:true,configurable:true});this.name=`${this.name} [${sym}]`;this.stack;delete this.name}get code(){return sym}set code(value){Object.defineProperty(this,"code",{configurable:true,enumerable:true,value:value,writable:true})}toString(){return`${this.name} [${sym}]: ${this.message}`}}}E("ERR_BUFFER_OUT_OF_BOUNDS",function(name){if(name){return`${name} is outside of buffer bounds`}return"Attempt to access memory outside buffer bounds"},RangeError);E("ERR_INVALID_ARG_TYPE",function(name,actual){return`The "${name}" argument must be of type number. Received type ${typeof actual}`},TypeError);E("ERR_OUT_OF_RANGE",function(str,range,input){let msg=`The value of "${str}" is out of range.`;let received=input;if(Number.isInteger(input)&&Math.abs(input)>2**32){received=addNumericalSeparator(String(input))}else if(typeof input==="bigint"){received=String(input);if(input>BigInt(2)**BigInt(32)||input<-(BigInt(2)**BigInt(32))){received=addNumericalSeparator(received)}received+="n"}msg+=` It must be ${range}. Received ${received}`;return msg},RangeError);function addNumericalSeparator(val){let res="";let i=val.length;const start=val[0]==="-"?1:0;for(;i>=start+4;i-=3){res=`_${val.slice(i-3,i)}${res}`}return`${val.slice(0,i)}${res}`}function checkBounds(buf,offset,byteLength){validateNumber(offset,"offset");if(buf[offset]===undefined||buf[offset+byteLength]===undefined){boundsError(offset,buf.length-(byteLength+1))}}function checkIntBI(value,min,max,buf,offset,byteLength){if(value>max||value<min){const n=typeof min==="bigint"?"n":"";let range;if(byteLength>3){if(min===0||min===BigInt(0)){range=`>= 0${n} and < 2${n} ** ${(byteLength+1)*8}${n}`}else{range=`>= -(2${n} ** ${(byteLength+1)*8-1}${n}) and < 2 ** `+`${(byteLength+1)*8-1}${n}`}}else{range=`>= ${min}${n} and <= ${max}${n}`}throw new errors.ERR_OUT_OF_RANGE("value",range,value)}checkBounds(buf,offset,byteLength)}function validateNumber(value,name){if(typeof value!=="number"){throw new errors.ERR_INVALID_ARG_TYPE(name,"number",value)}}function boundsError(value,length,type){if(Math.floor(value)!==value){validateNumber(value,type);throw new errors.ERR_OUT_OF_RANGE(type||"offset","an integer",value)}if(length<0){throw new errors.ERR_BUFFER_OUT_OF_BOUNDS}throw new errors.ERR_OUT_OF_RANGE(type||"offset",`>= ${type?1:0} and <= ${length}`,value)}const INVALID_BASE64_RE=/[^+/0-9A-Za-z-_]/g;function base64clean(str){str=str.split("=")[0];str=str.trim().replace(INVALID_BASE64_RE,"");if(str.length<2)return"";while(str.length%4!==0){str=str+"="}return str}function utf8ToBytes(string,units){units=units||Infinity;let codePoint;const length=string.length;let leadSurrogate=null;const bytes=[];for(let i=0;i<length;++i){codePoint=string.charCodeAt(i);if(codePoint>55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){if((units-=3)>-1)bytes.push(239,191,189);continue}else if(i+1===length){if((units-=3)>-1)bytes.push(239,191,189);continue}leadSurrogate=codePoint;continue}if(codePoint<56320){if((units-=3)>-1)bytes.push(239,191,189);leadSurrogate=codePoint;continue}codePoint=(leadSurrogate-55296<<10|codePoint-56320)+65536}else if(leadSurrogate){if((units-=3)>-1)bytes.push(239,191,189)}leadSurrogate=null;if(codePoint<128){if((units-=1)<0)break;bytes.push(codePoint)}else if(codePoint<2048){if((units-=2)<0)break;bytes.push(codePoint>>6|192,codePoint&63|128)}else if(codePoint<65536){if((units-=3)<0)break;bytes.push(codePoint>>12|224,codePoint>>6&63|128,codePoint&63|128)}else if(codePoint<1114112){if((units-=4)<0)break;bytes.push(codePoint>>18|240,codePoint>>12&63|128,codePoint>>6&63|128,codePoint&63|128)}else{throw new Error("Invalid code point")}}return bytes}function asciiToBytes(str){const byteArray=[];for(let i=0;i<str.length;++i){byteArray.push(str.charCodeAt(i)&255)}return byteArray}function utf16leToBytes(str,units){let c,hi,lo;const byteArray=[];for(let i=0;i<str.length;++i){if((units-=2)<0)break;c=str.charCodeAt(i);hi=c>>8;lo=c%256;byteArray.push(lo);byteArray.push(hi)}return byteArray}function base64ToBytes(str){return base64.toByteArray(base64clean(str))}function blitBuffer(src,dst,offset,length){let i;for(i=0;i<length;++i){if(i+offset>=dst.length||i>=src.length)break;dst[i+offset]=src[i]}return i}function isInstance(obj,type){return obj instanceof type||obj!=null&&obj.constructor!=null&&obj.constructor.name!=null&&obj.constructor.name===type.name}function numberIsNaN(obj){return obj!==obj}const hexSliceLookupTable=function(){const alphabet="0123456789abcdef";const table=new Array(256);for(let i=0;i<16;++i){const i16=i*16;for(let j=0;j<16;++j){table[i16+j]=alphabet[i]+alphabet[j]}}return table}();const hexCharValueTable=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,-1,-1,-1,-1,-1,-1,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];function defineBigIntMethod(fn){return typeof BigInt==="undefined"?BufferBigIntNotDefined:fn}function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}}).call(this)}).call(this,require("buffer").Buffer)},{"base64-js":4,buffer:2,ieee754:5}]},{},[6])(6)});
Code: Select all
var BSON=function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function n(e,t){return e(t={exports:{}},t.exports),t.exports}for(var i=function(e){var t=p(e),r=t[0],n=t[1];return 3*(r+n)/4-n},o=function(e){var t,r,n=p(e),i=n[0],o=n[1],u=new a(function(e,t,r){return 3*(t+r)/4-r}(0,i,o)),s=0,l=o>0?i-4:i;for(r=0;r<l;r+=4)t=f[e.charCodeAt(r)]<<18|f[e.charCodeAt(r+1)]<<12|f[e.charCodeAt(r+2)]<<6|f[e.charCodeAt(r+3)],u[s++]=t>>16&255,u[s++]=t>>8&255,u[s++]=255&t;2===o&&(t=f[e.charCodeAt(r)]<<2|f[e.charCodeAt(r+1)]>>4,u[s++]=255&t);1===o&&(t=f[e.charCodeAt(r)]<<10|f[e.charCodeAt(r+1)]<<4|f[e.charCodeAt(r+2)]>>2,u[s++]=t>>8&255,u[s++]=255&t);return u},u=function(e){for(var t,r=e.length,n=r%3,i=[],o=16383,u=0,f=r-n;u<f;u+=o)i.push(d(e,u,u+o>f?f:u+o));1===n?(t=e[r-1],i.push(s[t>>2]+s[t<<4&63]+"==")):2===n&&(t=(e[r-2]<<8)+e[r-1],i.push(s[t>>10]+s[t>>4&63]+s[t<<2&63]+"="));return i.join("")},s=[],f=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,h=l.length;c<h;++c)s[c]=l[c],f[l.charCodeAt(c)]=c;function p(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function d(e,t,r){for(var n,i,o=[],u=t;u<r;u+=3)n=(e[u]<<16&16711680)+(e[u+1]<<8&65280)+(255&e[u+2]),o.push(s[(i=n)>>18&63]+s[i>>12&63]+s[i>>6&63]+s[63&i]);return o.join("")}f["-".charCodeAt(0)]=62,f["_".charCodeAt(0)]=63;var y={byteLength:i,toByteArray:o,fromByteArray:u},g=function(e,t,r,n,i){var o,u,s=8*i-n-1,f=(1<<s)-1,a=f>>1,l=-7,c=r?i-1:0,h=r?-1:1,p=e[t+c];for(c+=h,o=p&(1<<-l)-1,p>>=-l,l+=s;l>0;o=256*o+e[t+c],c+=h,l-=8);for(u=o&(1<<-l)-1,o>>=-l,l+=n;l>0;u=256*u+e[t+c],c+=h,l-=8);if(0===o)o=1-a;else{if(o===f)return u?NaN:1/0*(p?-1:1);u+=Math.pow(2,n),o-=a}return(p?-1:1)*u*Math.pow(2,o-n)},_=function(e,t,r,n,i,o){var u,s,f,a=8*o-i-1,l=(1<<a)-1,c=l>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,u=l):(u=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-u))<1&&(u--,f*=2),(t+=u+c>=1?h/f:h*Math.pow(2,1-c))*f>=2&&(u++,f/=2),u+c>=l?(s=0,u=l):u+c>=1?(s=(t*f-1)*Math.pow(2,i),u+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,i),u=0));i>=8;e[r+p]=255&s,p+=d,s/=256,i-=8);for(u=u<<i|s,a+=i;a>0;e[r+p]=255&u,p+=d,u/=256,a-=8);e[r+p-d]|=128*y},b=n((function(e,t){var r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=Buffer,t.SlowBuffer=function(e){+e!=e&&(e=0);return Buffer.alloc(+e)},t.INSPECT_MAX_BYTES=50;var n=2147483647;function i(e){if(e>n)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,Buffer.prototype),t}function Buffer(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return s(e)}return o(e,t,r)}function o(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!Buffer.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var r=0|c(e,t),n=i(r),o=n.write(e,t);o!==r&&(n=n.slice(0,o));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(z(e,Uint8Array)){var t=new Uint8Array(e);return a(t.buffer,t.byteOffset,t.byteLength)}return f(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+babelHelpers.typeof(e));if(z(e,ArrayBuffer)||e&&z(e.buffer,ArrayBuffer))return a(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(z(e,SharedArrayBuffer)||e&&z(e.buffer,SharedArrayBuffer)))return a(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return Buffer.from(n,t,r);var o=function(e){if(Buffer.isBuffer(e)){var t=0|l(e.length),r=i(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||$(e.length)?i(0):f(e);if("Buffer"===e.type&&Array.isArray(e.data))return f(e.data)}(e);if(o)return o;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return Buffer.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+babelHelpers.typeof(e))}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function s(e){return u(e),i(e<0?0:0|l(e))}function f(e){for(var t=e.length<0?0:0|l(e.length),r=i(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function a(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,Buffer.prototype),n}function l(e){if(e>=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|e}function c(e,t){if(Buffer.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||z(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+babelHelpers.typeof(e));var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return P(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(e).length;default:if(i)return n?-1:P(e).length;t=(""+t).toLowerCase(),i=!0}}function h(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,r);case"utf8":case"utf-8":return A(this,t,r);case"ascii":return E(this,t,r);case"latin1":case"binary":return T(this,t,r);case"base64":return v(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function p(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function d(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),$(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=Buffer.from(t,n)),Buffer.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){var o,u=1,s=e.length,f=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;u=2,s/=2,f/=2,r/=2}function a(e,t){return 1===u?e[t]:e.readUInt16BE(t*u)}if(i){var l=-1;for(o=r;o<s;o++)if(a(e,o)===a(t,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===f)return l*u}else-1!==l&&(o-=o-l),l=-1}else for(r+f>s&&(r=s-f),o=r;o>=0;o--){for(var c=!0,h=0;h<f;h++)if(a(e,o+h)!==a(t,h)){c=!1;break}if(c)return o}return-1}function B(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n))>i&&(n=i):n=i;var o=t.length;n>o/2&&(n=o/2);for(var u=0;u<n;++u){var s=parseInt(t.substr(2*u,2),16);if($(s))return u;e[r+u]=s}return u}function O(e,t,r,n){return C(P(t,e.length-r),e,r,n)}function m(e,t,r,n){return C(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function S(e,t,r,n){return C(Y(t),e,r,n)}function N(e,t,r,n){return C(function(e,t){for(var r,n,i,o=[],u=0;u<e.length&&!((t-=2)<0);++u)n=(r=e.charCodeAt(u))>>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function v(e,t,r){return 0===t&&r===e.length?y.fromByteArray(e):y.fromByteArray(e.slice(t,r))}function A(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var o,u,s,f,a=e[i],l=null,c=a>239?4:a>223?3:a>191?2:1;if(i+c<=r)switch(c){case 1:a<128&&(l=a);break;case 2:128==(192&(o=e[i+1]))&&(f=(31&a)<<6|63&o)>127&&(l=f);break;case 3:o=e[i+1],u=e[i+2],128==(192&o)&&128==(192&u)&&(f=(15&a)<<12|(63&o)<<6|63&u)>2047&&(f<55296||f>57343)&&(l=f);break;case 4:o=e[i+1],u=e[i+2],s=e[i+3],128==(192&o)&&128==(192&u)&&128==(192&s)&&(f=(15&a)<<18|(63&o)<<12|(63&u)<<6|63&s)>65535&&f<1114112&&(l=f)}null===l?(l=65533,c=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=c}return function(e){var t=e.length;if(t<=w)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=w));return r}(n)}t.kMaxLength=n,Buffer.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),Buffer.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(Buffer.prototype,"parent",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.buffer}}),Object.defineProperty(Buffer.prototype,"offset",{enumerable:!0,get:function(){if(Buffer.isBuffer(this))return this.byteOffset}}),Buffer.poolSize=8192,Buffer.from=function(e,t,r){return o(e,t,r)},Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype),Object.setPrototypeOf(Buffer,Uint8Array),Buffer.alloc=function(e,t,r){return function(e,t,r){return u(e),e<=0?i(e):void 0!==t?"string"==typeof r?i(e).fill(t,r):i(e).fill(t):i(e)}(e,t,r)},Buffer.allocUnsafe=function(e){return s(e)},Buffer.allocUnsafeSlow=function(e){return s(e)},Buffer.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==Buffer.prototype},Buffer.compare=function(e,t){if(z(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),z(t,Uint8Array)&&(t=Buffer.from(t,t.offset,t.byteLength)),!Buffer.isBuffer(e)||!Buffer.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);i<o;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},Buffer.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Buffer.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Buffer.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=Buffer.allocUnsafe(t),i=0;for(r=0;r<e.length;++r){var o=e[r];if(z(o,Uint8Array))i+o.length>n.length?Buffer.from(o).copy(n,i):Uint8Array.prototype.set.call(n,o,i);else{if(!Buffer.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,i)}i+=o.length}return n},Buffer.byteLength=c,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)p(this,t,t+1);return this},Buffer.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)p(this,t,t+3),p(this,t+1,t+2);return this},Buffer.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)p(this,t,t+7),p(this,t+1,t+6),p(this,t+2,t+5),p(this,t+3,t+4);return this},Buffer.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?A(this,0,e):h.apply(this,arguments)},Buffer.prototype.toLocaleString=Buffer.prototype.toString,Buffer.prototype.equals=function(e){if(!Buffer.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Buffer.compare(this,e)},Buffer.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return e=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(e+=" ... "),"<Buffer "+e+">"},r&&(Buffer.prototype[r]=Buffer.prototype.inspect),Buffer.prototype.compare=function(e,t,r,n,i){if(z(e,Uint8Array)&&(e=Buffer.from(e,e.offset,e.byteLength)),!Buffer.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+babelHelpers.typeof(e));if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),u=(r>>>=0)-(t>>>=0),s=Math.min(o,u),f=this.slice(n,i),a=e.slice(t,r),l=0;l<s;++l)if(f[l]!==a[l]){o=f[l],u=a[l];break}return o<u?-1:u<o?1:0},Buffer.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},Buffer.prototype.indexOf=function(e,t,r){return d(this,e,t,r,!0)},Buffer.prototype.lastIndexOf=function(e,t,r){return d(this,e,t,r,!1)},Buffer.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return B(this,e,t,r);case"utf8":case"utf-8":return O(this,e,t,r);case"ascii":case"latin1":case"binary":return m(this,e,t,r);case"base64":return S(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},Buffer.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function E(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(127&e[i]);return n}function T(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function D(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var i="",o=t;o<r;++o)i+=k[e[o]];return i}function I(e,t,r){for(var n=e.slice(t,r),i="",o=0;o<n.length-1;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function x(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function U(e,t,r,n,i,o){if(!Buffer.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<o)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function R(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function L(e,t,r,n,i){return t=+t,r>>>=0,i||R(e,0,r,4),_(e,t,r,n,23,4),r+4}function j(e,t,r,n,i){return t=+t,r>>>=0,i||R(e,0,r,8),_(e,t,r,n,52,8),r+8}Buffer.prototype.slice=function(e,t){var r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);var n=this.subarray(e,t);return Object.setPrototypeOf(n,Buffer.prototype),n},Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n},Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function(e,t){return e>>>=0,t||x(e,1,this.length),this[e]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function(e,t){return e>>>=0,t||x(e,2,this.length),this[e]|this[e+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function(e,t){return e>>>=0,t||x(e,2,this.length),this[e]<<8|this[e+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function(e,t){return e>>>=0,t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function(e,t){return e>>>=0,t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Buffer.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*t)),n},Buffer.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},Buffer.prototype.readInt8=function(e,t){return e>>>=0,t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Buffer.prototype.readInt16LE=function(e,t){e>>>=0,t||x(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt16BE=function(e,t){e>>>=0,t||x(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt32LE=function(e,t){return e>>>=0,t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Buffer.prototype.readInt32BE=function(e,t){return e>>>=0,t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Buffer.prototype.readFloatLE=function(e,t){return e>>>=0,t||x(e,4,this.length),g(this,e,!0,23,4)},Buffer.prototype.readFloatBE=function(e,t){return e>>>=0,t||x(e,4,this.length),g(this,e,!1,23,4)},Buffer.prototype.readDoubleLE=function(e,t){return e>>>=0,t||x(e,8,this.length),g(this,e,!0,52,8)},Buffer.prototype.readDoubleBE=function(e,t){return e>>>=0,t||x(e,8,this.length),g(this,e,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||U(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o<r&&(i*=256);)this[t+o]=e/i&255;return t+r},Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||U(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,1,255,0),this[t]=255&e,t+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Buffer.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);U(this,e,t,r,i-1,-i)}var o=0,u=1,s=0;for(this[t]=255&e;++o<r&&(u*=256);)e<0&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/u>>0)-s&255;return t+r},Buffer.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);U(this,e,t,r,i-1,-i)}var o=r-1,u=1,s=0;for(this[t+o]=255&e;--o>=0&&(u*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/u>>0)-s&255;return t+r},Buffer.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},Buffer.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},Buffer.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},Buffer.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},Buffer.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||U(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},Buffer.prototype.writeFloatLE=function(e,t,r){return L(this,e,t,!0,r)},Buffer.prototype.writeFloatBE=function(e,t,r){return L(this,e,t,!1,r)},Buffer.prototype.writeDoubleLE=function(e,t,r){return j(this,e,t,!0,r)},Buffer.prototype.writeDoubleBE=function(e,t,r){return j(this,e,t,!1,r)},Buffer.prototype.copy=function(e,t,r,n){if(!Buffer.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var i=n-r;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,n):Uint8Array.prototype.set.call(e,this.subarray(r,n),t),i},Buffer.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!Buffer.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){var i=e.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(e=i)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var o;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o<r;++o)this[o]=e;else{var u=Buffer.isBuffer(e)?e:Buffer.from(e,n),s=u.length;if(0===s)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(o=0;o<r-t;++o)this[o+t]=u[o%s]}return this};var M=/[^+/0-9A-Za-z-_]/g;function P(e,t){var r;t=t||1/0;for(var n=e.length,i=null,o=[],u=0;u<n;++u){if((r=e.charCodeAt(u))>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(u+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(e){return y.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function C(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function z(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function $(e){return e!=e}var k=function(){for(var e="0123456789abcdef",t=new Array(256),r=0;r<16;++r)for(var n=16*r,i=0;i<16;++i)t[n+i]=e[r]+e[i];return t}()}));
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */b.Buffer,b.SlowBuffer,b.INSPECT_MAX_BYTES,b.kMaxLength;var B={},O="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e},m=/%[sdj%]/g;function S(e){if(!j(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(A(arguments[r]));return t.join(" ")}r=1;for(var n=arguments,i=n.length,o=String(e).replace(m,(function(e){if("%%"===e)return"%";if(r>=i)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}})),u=n[r];r<i;u=n[++r])R(u)||!Y(u)?o+=" "+u:o+=" "+A(u);return o}var N,v={};function A(e,t){var r={seen:[],stylize:E};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),U(t)?r.showHidden=t:t&&V(r,t),M(r.showHidden)&&(r.showHidden=!1),M(r.depth)&&(r.depth=2),M(r.colors)&&(r.colors=!1),M(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=w),T(r,e,r.depth)}function w(e,t){var r=A.styles[t];return r?"["+A.colors[r][0]+"m"+e+"["+A.colors[r][1]+"m":e}function E(e,t){return e}function T(e,t,r){if(e.customInspect&&t&&$(t.inspect)&&t.inspect!==A&&(!t.constructor||t.constructor.prototype!==t)){var n=t.inspect(r,e);return j(n)||(n=T(e,n,r)),n}var i=function(e,t){if(M(t))return e.stylize("undefined","undefined");if(j(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(L(t))return e.stylize(""+t,"number");if(U(t))return e.stylize(""+t,"boolean");if(R(t))return e.stylize("null","null")}(e,t);if(i)return i;var o=Object.keys(t),u=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),z(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return D(t);if(0===o.length){if($(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(P(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(C(t))return e.stylize(Date.prototype.toString.call(t),"date");if(z(t))return D(t)}var f,a="",l=!1,c=["{","}"];(x(t)&&(l=!0,c=["[","]"]),$(t))&&(a=" [Function"+(t.name?": "+t.name:"")+"]");return P(t)&&(a=" "+RegExp.prototype.toString.call(t)),C(t)&&(a=" "+Date.prototype.toUTCString.call(t)),z(t)&&(a=" "+D(t)),0!==o.length||l&&0!=t.length?r<0?P(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),f=l?function(e,t,r,n,i){for(var o=[],u=0,s=t.length;u<s;++u)K(t,String(u))?o.push(I(e,t,r,n,String(u),!0)):o.push("");return i.forEach((function(i){i.match(/^\d+$/)||o.push(I(e,t,r,n,i,!0))})),o}(e,t,r,u,o):o.map((function(n){return I(e,t,r,u,n,l)})),e.seen.pop(),function(e,t,r){if(e.reduce((function(e,t){return t.indexOf("\n"),e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(f,a,c)):c[0]+a+c[1]}function D(e){return"["+Error.prototype.toString.call(e)+"]"}function I(e,t,r,n,i,o){var u,s,f;if((f=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?s=f.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):f.set&&(s=e.stylize("[Setter]","special")),K(n,i)||(u="["+i+"]"),s||(e.seen.indexOf(f.value)<0?(s=R(r)?T(e,f.value,null):T(e,f.value,r-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),M(u)){if(o&&i.match(/^\d+$/))return s;(u=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(u=u.substr(1,u.length-2),u=e.stylize(u,"name")):(u=u.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),u=e.stylize(u,"string"))}return u+": "+s}function x(e){return Array.isArray(e)}function U(e){return"boolean"==typeof e}function R(e){return null===e}function L(e){return"number"==typeof e}function j(e){return"string"==typeof e}function M(e){return void 0===e}function P(e){return Y(e)&&"[object RegExp]"===k(e)}function Y(e){return"object"===babelHelpers.typeof(e)&&null!==e}function C(e){return Y(e)&&"[object Date]"===k(e)}function z(e){return Y(e)&&("[object Error]"===k(e)||e instanceof Error)}function $(e){return"function"==typeof e}function k(e){return Object.prototype.toString.call(e)}function J(e){return e<10?"0"+e.toString(10):e.toString(10)}A.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},A.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};var q=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function F(){var e=new Date,t=[J(e.getHours()),J(e.getMinutes()),J(e.getSeconds())].join(":");return[e.getDate(),q[e.getMonth()],t].join(" ")}function V(e,t){if(!t||!Y(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}function K(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var H={inherits:O,_extend:V,log:function(){console.log("%s - %s",F(),S.apply(null,arguments))},isBuffer:function(e){return Buffer.isBuffer(e)},isPrimitive:function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"===babelHelpers.typeof(e)||void 0===e},isFunction:$,isError:z,isDate:C,isObject:Y,isRegExp:P,isUndefined:M,isSymbol:function(e){return"symbol"===babelHelpers.typeof(e)},isString:j,isNumber:L,isNullOrUndefined:function(e){return null==e},isNull:R,isBoolean:U,isArray:x,inspect:A,deprecate:function e(t,r){if(M(global.process))return function(){return e(t,r).apply(this,arguments)};var n=!1;return function(){return n||(console.error(r),n=!0),t.apply(this,arguments)}},format:S,debuglog:function(e){if(M(N)&&(N=""),e=e.toUpperCase(),!v[e])if(new RegExp("\\b"+e+"\\b","i").test(N)){v[e]=function(){var t=S.apply(null,arguments);console.error("%s %d: %s",e,0,t)}}else v[e]=function(){};return v[e]}},X=n((function(e,r){Object.defineProperty(r,"__esModule",{value:!0}),r.deprecate=r.isObjectLike=r.isDate=r.isBuffer=r.haveBuffer=r.isBigUInt64Array=r.isBigInt64Array=r.isUint8Array=r.randomBytes=r.normalizedFunctionString=void 0,r.normalizedFunctionString=function(e){return e.toString().replace("function(","function (")};var n="object"==typeof t.navigator&&"ReactNative"===t.navigator.product?"BSON: For React Native please polyfill crypto.getRandomValues, e.g. using: https://www.npmjs.com/package/react-native-get-random-values.":"BSON: No cryptographic implementation for random bytes present, falling back to a less secure implementation.",i=function(e){console.warn(n);for(var t=b.Buffer.alloc(e),r=0;r<e;++r)t[r]=Math.floor(256*Math.random());return t};function o(e){return"object"==typeof e&&null!==e}r.randomBytes=function(){if("undefined"!=typeof window){var e=window.crypto||window.msCrypto;if(e&&e.getRandomValues)return function(t){return e.getRandomValues(b.Buffer.alloc(t))}}if(void 0!==t&&t.crypto&&t.crypto.getRandomValues)return function(e){return t.crypto.getRandomValues(b.Buffer.alloc(e))};var r;try{r=B.randomBytes}catch(e){}return r||i}(),r.isUint8Array=function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},r.isBigInt64Array=function(e){return"[object BigInt64Array]"===Object.prototype.toString.call(e)},r.isBigUInt64Array=function(e){return"[object BigUint64Array]"===Object.prototype.toString.call(e)},r.haveBuffer=function(){return void 0!==t&&void 0!==t.Buffer},r.isBuffer=function(e){var t;return"object"==typeof e&&"Buffer"===(null===(t=null==e?void 0:e.constructor)||void 0===t?void 0:t.name)},r.isDate=function(e){return o(e)&&"[object Date]"===Object.prototype.toString.call(e)},r.isObjectLike=o,r.deprecate=function(e,t){if("undefined"==typeof window&&"undefined"==typeof self)return H.deprecate(e,t);var r=!1;return function(){for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];return r||(console.warn(t),r=!0),e.apply(this,n)}}}));r(X),X.deprecate,X.isObjectLike,X.isDate,X.isBuffer,X.haveBuffer,X.isBigUInt64Array,X.isBigInt64Array,X.isUint8Array,X.randomBytes,X.normalizedFunctionString;var W=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ensureBuffer=void 0,t.ensureBuffer=function(e){if(X.isBuffer(e))return e;if(ArrayBuffer.isView(e))return b.Buffer.from(e.buffer);if(e instanceof ArrayBuffer)return b.Buffer.from(e);throw new TypeError("Must use either Buffer or TypedArray")}}));r(W),W.ensureBuffer;var G=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.bufferToUuidHexString=t.uuidHexStringToBuffer=t.uuidValidateString=void 0;var r=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|[0-9a-f]{12}4[0-9a-f]{3}[89ab][0-9a-f]{15})$/i;t.uuidValidateString=function(e){return"string"==typeof e&&r.test(e)};t.uuidHexStringToBuffer=function(e){if(!t.uuidValidateString(e))throw new TypeError('UUID string representations must be a 32 or 36 character hex string (dashes excluded/included). Format: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" or "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".');var r=e.replace(/-/g,"");return b.Buffer.from(r,"hex")};t.bufferToUuidHexString=function(e,t){return void 0===t&&(t=!0),t?e.toString("hex",0,4)+"-"+e.toString("hex",4,6)+"-"+e.toString("hex",6,8)+"-"+e.toString("hex",8,10)+"-"+e.toString("hex",10,16):e.toString("hex")}}));r(G),G.bufferToUuidHexString,G.uuidHexStringToBuffer,G.uuidValidateString;var Z=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.UUID=void 0;var r=Symbol("id"),n=function(){function e(t){if(void 0===t)this.id=e.generate();else if(t instanceof e)this[r]=b.Buffer.from(t.id),this.__id=t.__id;else if((b.Buffer.isBuffer(t)||ArrayBuffer.isView(t))&&16===t.byteLength)this.id=W.ensureBuffer(t);else{if("string"!=typeof t)throw new TypeError("Argument passed in UUID constructor must be a UUID, a 16 byte Buffer or a 32/36 character hex string (dashes excluded/included, format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).");this.id=G.uuidHexStringToBuffer(t)}}return Object.defineProperty(e.prototype,"id",{get:function(){return this[r]},set:function(t){this[r]=t,e.cacheHexString&&(this.__id=G.bufferToUuidHexString(t))},enumerable:!1,configurable:!0}),e.prototype.toHexString=function(t){if(void 0===t&&(t=!0),e.cacheHexString&&this.__id)return this.__id;var r=G.bufferToUuidHexString(this.id,t);return e.cacheHexString&&(this.__id=r),r},e.prototype.toString=function(e){return e?this.id.toString(e):this.toHexString()},e.prototype.toJSON=function(){return this.toHexString()},e.prototype.equals=function(t){if(!t)return!1;if(t instanceof e)return t.id.equals(this.id);try{return new e(t).id.equals(this.id)}catch(e){return!1}},e.prototype.toBinary=function(){return new Q.Binary(this.id,Q.Binary.SUBTYPE_UUID)},e.generate=function(){var e=X.randomBytes(16);return e[6]=15&e[6]|64,e[8]=63&e[8]|128,b.Buffer.from(e)},e.isValid=function(t){if(!t)return!1;if(t instanceof e)return!0;if("string"==typeof t)return G.uuidValidateString(t);if(b.Buffer.isBuffer(t)){if(16!==t.length)return!1;try{return parseInt(t[6].toString(16)[0],10)===Q.Binary.SUBTYPE_UUID}catch(e){return!1}}return!1},e.createFromHexString=function(t){return new e(G.uuidHexStringToBuffer(t))},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'new UUID("'+this.toHexString()+'")'},e}();t.UUID=n,Object.defineProperty(n.prototype,"_bsontype",{value:"UUID"})}));r(Z),Z.UUID;var Q=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Binary=void 0;var Binary=function(){function Binary(e,t){if(!(this instanceof Binary))return new Binary(e,t);if(!(null==e||"string"==typeof e||ArrayBuffer.isView(e)||e instanceof ArrayBuffer||Array.isArray(e)))throw new TypeError("Binary can only be constructed from string, Buffer, TypedArray, or Array<number>");this.sub_type=null!=t?t:Binary.BSON_BINARY_SUBTYPE_DEFAULT,null==e?(this.buffer=b.Buffer.alloc(Binary.BUFFER_SIZE),this.position=0):("string"==typeof e?this.buffer=b.Buffer.from(e,"binary"):Array.isArray(e)?this.buffer=b.Buffer.from(e):this.buffer=W.ensureBuffer(e),this.position=this.buffer.byteLength)}return Binary.prototype.put=function(e){if("string"==typeof e&&1!==e.length)throw new TypeError("only accepts single character String");if("number"!=typeof e&&1!==e.length)throw new TypeError("only accepts single character Uint8Array or Array");var t;if((t="string"==typeof e?e.charCodeAt(0):"number"==typeof e?e:e[0])<0||t>255)throw new TypeError("only accepts number in a valid unsigned byte range 0-255");if(this.buffer.length>this.position)this.buffer[this.position++]=t;else{var r=b.Buffer.alloc(Binary.BUFFER_SIZE+this.buffer.length);this.buffer.copy(r,0,0,this.buffer.length),this.buffer=r,this.buffer[this.position++]=t}},Binary.prototype.write=function(e,t){if(t="number"==typeof t?t:this.position,this.buffer.length<t+e.length){var r=b.Buffer.alloc(this.buffer.length+e.length);this.buffer.copy(r,0,0,this.buffer.length),this.buffer=r}ArrayBuffer.isView(e)?(this.buffer.set(W.ensureBuffer(e),t),this.position=t+e.byteLength>this.position?t+e.length:this.position):"string"==typeof e&&(this.buffer.write(e,t,e.length,"binary"),this.position=t+e.length>this.position?t+e.length:this.position)},Binary.prototype.read=function(e,t){return t=t&&t>0?t:this.position,this.buffer.slice(e,e+t)},Binary.prototype.value=function(e){return(e=!!e)&&this.buffer.length===this.position?this.buffer:e?this.buffer.slice(0,this.position):this.buffer.toString("binary",0,this.position)},Binary.prototype.length=function(){return this.position},Binary.prototype.toJSON=function(){return this.buffer.toString("base64")},Binary.prototype.toString=function(e){return this.buffer.toString(e)},Binary.prototype.toExtendedJSON=function(e){e=e||{};var t=this.buffer.toString("base64"),r=Number(this.sub_type).toString(16);return e.legacy?{$binary:t,$type:1===r.length?"0"+r:r}:{$binary:{base64:t,subType:1===r.length?"0"+r:r}}},Binary.prototype.toUUID=function(){if(this.sub_type===Binary.SUBTYPE_UUID)return new Z.UUID(this.buffer.slice(0,this.position));throw new Error('Binary sub_type "'+this.sub_type+'" is not supported for converting to UUID. Only "'+Binary.SUBTYPE_UUID+'" is currently supported.')},Binary.fromExtendedJSON=function(e,t){var r,n;if(t=t||{},"$binary"in e?t.legacy&&"string"==typeof e.$binary&&"$type"in e?(n=e.$type?parseInt(e.$type,16):0,r=b.Buffer.from(e.$binary,"base64")):"string"!=typeof e.$binary&&(n=e.$binary.subType?parseInt(e.$binary.subType,16):0,r=b.Buffer.from(e.$binary.base64,"base64")):"$uuid"in e&&(n=4,r=G.uuidHexStringToBuffer(e.$uuid)),!r)throw new TypeError("Unexpected Binary Extended JSON format "+JSON.stringify(e));return new Binary(r,n)},Binary.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},Binary.prototype.inspect=function(){return'new Binary(Buffer.from("'+this.value(!0).toString("hex")+'", "hex"), '+this.sub_type+")"},Binary.BSON_BINARY_SUBTYPE_DEFAULT=0,Binary.BUFFER_SIZE=256,Binary.SUBTYPE_DEFAULT=0,Binary.SUBTYPE_FUNCTION=1,Binary.SUBTYPE_BYTE_ARRAY=2,Binary.SUBTYPE_UUID_OLD=3,Binary.SUBTYPE_UUID=4,Binary.SUBTYPE_MD5=5,Binary.SUBTYPE_USER_DEFINED=128,Binary}();t.Binary=Binary,Object.defineProperty(Binary.prototype,"_bsontype",{value:"Binary"})}));r(Q),Q.Binary;var ee=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Code=void 0;var r=function(){function e(t,r){if(!(this instanceof e))return new e(t,r);this.code=t,this.scope=r}return e.prototype.toJSON=function(){return{code:this.code,scope:this.scope}},e.prototype.toExtendedJSON=function(){return this.scope?{$code:this.code,$scope:this.scope}:{$code:this.code}},e.fromExtendedJSON=function(t){return new e(t.$code,t.$scope)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){var e=this.toJSON();return'new Code("'+e.code+'"'+(e.scope?", "+JSON.stringify(e.scope):"")+")"},e}();t.Code=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Code"})}));r(ee),ee.Code;var te=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.DBRef=t.isDBRefLike=void 0,t.isDBRefLike=function(e){return X.isObjectLike(e)&&null!=e.$id&&null!=e.$ref};var r=function(){function e(t,r,n,i){if(!(this instanceof e))return new e(t,r,n,i);var o=t.split(".");2===o.length&&(n=o.shift(),t=o.shift()),this.collection=t,this.oid=r,this.db=n,this.fields=i||{}}return Object.defineProperty(e.prototype,"namespace",{get:function(){return this.collection},set:function(e){this.collection=e},enumerable:!1,configurable:!0}),e.prototype.toJSON=function(){var e=Object.assign({$ref:this.collection,$id:this.oid},this.fields);return null!=this.db&&(e.$db=this.db),e},e.prototype.toExtendedJSON=function(e){e=e||{};var t={$ref:this.collection,$id:this.oid};return e.legacy?t:(this.db&&(t.$db=this.db),t=Object.assign(t,this.fields))},e.fromExtendedJSON=function(t){var r=Object.assign({},t);return delete r.$ref,delete r.$id,delete r.$db,new e(t.$ref,t.$id,t.$db,r)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){var e=void 0===this.oid||void 0===this.oid.toString?this.oid:this.oid.toString();return'new DBRef("'+this.namespace+'", new ObjectId("'+e+'")'+(this.db?', "'+this.db+'"':"")+")"},e}();t.DBRef=r,Object.defineProperty(r.prototype,"_bsontype",{value:"DBRef"})}));r(te),te.DBRef,te.isDBRefLike;var re=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Long=void 0;var r=void 0;try{r=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}var n=4294967296,i=0x10000000000000000,o=i/2,u={},s={},f=function(){function e(t,r,n){if(void 0===t&&(t=0),void 0===r&&(r=0),!(this instanceof e))return new e(t,r,n);this.low=0|t,this.high=0|r,this.unsigned=!!n,Object.defineProperty(this,"__isLong__",{value:!0,configurable:!1,writable:!1,enumerable:!1})}return e.fromBits=function(t,r,n){return new e(t,r,n)},e.fromInt=function(t,r){var n,i,o;return r?(o=0<=(t>>>=0)&&t<256)&&(i=s[t])?i:(n=e.fromBits(t,(0|t)<0?-1:0,!0),o&&(s[t]=n),n):(o=-128<=(t|=0)&&t<128)&&(i=u[t])?i:(n=e.fromBits(t,t<0?-1:0,!1),o&&(u[t]=n),n)},e.fromNumber=function(t,r){if(isNaN(t))return r?e.UZERO:e.ZERO;if(r){if(t<0)return e.UZERO;if(t>=i)return e.MAX_UNSIGNED_VALUE}else{if(t<=-o)return e.MIN_VALUE;if(t+1>=o)return e.MAX_VALUE}return t<0?e.fromNumber(-t,r).neg():e.fromBits(t%n|0,t/n|0,r)},e.fromBigInt=function(t,r){return e.fromString(t.toString(),r)},e.fromString=function(t,r,n){if(0===t.length)throw Error("empty string");if("NaN"===t||"Infinity"===t||"+Infinity"===t||"-Infinity"===t)return e.ZERO;if("number"==typeof r?(n=r,r=!1):r=!!r,(n=n||10)<2||36<n)throw RangeError("radix");var i;if((i=t.indexOf("-"))>0)throw Error("interior hyphen");if(0===i)return e.fromString(t.substring(1),r,n).neg();for(var o=e.fromNumber(Math.pow(n,8)),u=e.ZERO,s=0;s<t.length;s+=8){var f=Math.min(8,t.length-s),a=parseInt(t.substring(s,s+f),n);if(f<8){var l=e.fromNumber(Math.pow(n,f));u=u.mul(l).add(e.fromNumber(a))}else u=(u=u.mul(o)).add(e.fromNumber(a))}return u.unsigned=r,u},e.fromBytes=function(t,r,n){return n?e.fromBytesLE(t,r):e.fromBytesBE(t,r)},e.fromBytesLE=function(t,r){return new e(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,r)},e.fromBytesBE=function(t,r){return new e(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],r)},e.isLong=function(e){return X.isObjectLike(e)&&!0===e.__isLong__},e.fromValue=function(t,r){return"number"==typeof t?e.fromNumber(t,r):"string"==typeof t?e.fromString(t,r):e.fromBits(t.low,t.high,"boolean"==typeof r?r:t.unsigned)},e.prototype.add=function(t){e.isLong(t)||(t=e.fromValue(t));var r=this.high>>>16,n=65535&this.high,i=this.low>>>16,o=65535&this.low,u=t.high>>>16,s=65535&t.high,f=t.low>>>16,a=0,l=0,c=0,h=0;return c+=(h+=o+(65535&t.low))>>>16,h&=65535,l+=(c+=i+f)>>>16,c&=65535,a+=(l+=n+s)>>>16,l&=65535,a+=r+u,a&=65535,e.fromBits(c<<16|h,a<<16|l,this.unsigned)},e.prototype.and=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low&t.low,this.high&t.high,this.unsigned)},e.prototype.compare=function(t){if(e.isLong(t)||(t=e.fromValue(t)),this.eq(t))return 0;var r=this.isNegative(),n=t.isNegative();return r&&!n?-1:!r&&n?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1},e.prototype.comp=function(e){return this.compare(e)},e.prototype.divide=function(t){if(e.isLong(t)||(t=e.fromValue(t)),t.isZero())throw Error("division by zero");if(r){if(!this.unsigned&&-2147483648===this.high&&-1===t.low&&-1===t.high)return this;var n=(this.unsigned?r.div_u:r.div_s)(this.low,this.high,t.low,t.high);return e.fromBits(n,r.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?e.UZERO:e.ZERO;var i,o,u;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return e.UZERO;if(t.gt(this.shru(1)))return e.UONE;u=e.UZERO}else{if(this.eq(e.MIN_VALUE))return t.eq(e.ONE)||t.eq(e.NEG_ONE)?e.MIN_VALUE:t.eq(e.MIN_VALUE)?e.ONE:(i=this.shr(1).div(t).shl(1)).eq(e.ZERO)?t.isNegative()?e.ONE:e.NEG_ONE:(o=this.sub(t.mul(i)),u=i.add(o.div(t)));if(t.eq(e.MIN_VALUE))return this.unsigned?e.UZERO:e.ZERO;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();u=e.ZERO}for(o=this;o.gte(t);){i=Math.max(1,Math.floor(o.toNumber()/t.toNumber()));for(var s=Math.ceil(Math.log(i)/Math.LN2),f=s<=48?1:Math.pow(2,s-48),a=e.fromNumber(i),l=a.mul(t);l.isNegative()||l.gt(o);)i-=f,l=(a=e.fromNumber(i,this.unsigned)).mul(t);a.isZero()&&(a=e.ONE),u=u.add(a),o=o.sub(l)}return u},e.prototype.div=function(e){return this.divide(e)},e.prototype.equals=function(t){return e.isLong(t)||(t=e.fromValue(t)),(this.unsigned===t.unsigned||this.high>>>31!=1||t.high>>>31!=1)&&(this.high===t.high&&this.low===t.low)},e.prototype.eq=function(e){return this.equals(e)},e.prototype.getHighBits=function(){return this.high},e.prototype.getHighBitsUnsigned=function(){return this.high>>>0},e.prototype.getLowBits=function(){return this.low},e.prototype.getLowBitsUnsigned=function(){return this.low>>>0},e.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.eq(e.MIN_VALUE)?64:this.neg().getNumBitsAbs();var t,r=0!==this.high?this.high:this.low;for(t=31;t>0&&0==(r&1<<t);t--);return 0!==this.high?t+33:t+1},e.prototype.greaterThan=function(e){return this.comp(e)>0},e.prototype.gt=function(e){return this.greaterThan(e)},e.prototype.greaterThanOrEqual=function(e){return this.comp(e)>=0},e.prototype.gte=function(e){return this.greaterThanOrEqual(e)},e.prototype.ge=function(e){return this.greaterThanOrEqual(e)},e.prototype.isEven=function(){return 0==(1&this.low)},e.prototype.isNegative=function(){return!this.unsigned&&this.high<0},e.prototype.isOdd=function(){return 1==(1&this.low)},e.prototype.isPositive=function(){return this.unsigned||this.high>=0},e.prototype.isZero=function(){return 0===this.high&&0===this.low},e.prototype.lessThan=function(e){return this.comp(e)<0},e.prototype.lt=function(e){return this.lessThan(e)},e.prototype.lessThanOrEqual=function(e){return this.comp(e)<=0},e.prototype.lte=function(e){return this.lessThanOrEqual(e)},e.prototype.modulo=function(t){if(e.isLong(t)||(t=e.fromValue(t)),r){var n=(this.unsigned?r.rem_u:r.rem_s)(this.low,this.high,t.low,t.high);return e.fromBits(n,r.get_high(),this.unsigned)}return this.sub(this.div(t).mul(t))},e.prototype.mod=function(e){return this.modulo(e)},e.prototype.rem=function(e){return this.modulo(e)},e.prototype.multiply=function(t){if(this.isZero())return e.ZERO;if(e.isLong(t)||(t=e.fromValue(t)),r){var n=r.mul(this.low,this.high,t.low,t.high);return e.fromBits(n,r.get_high(),this.unsigned)}if(t.isZero())return e.ZERO;if(this.eq(e.MIN_VALUE))return t.isOdd()?e.MIN_VALUE:e.ZERO;if(t.eq(e.MIN_VALUE))return this.isOdd()?e.MIN_VALUE:e.ZERO;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(e.TWO_PWR_24)&&t.lt(e.TWO_PWR_24))return e.fromNumber(this.toNumber()*t.toNumber(),this.unsigned);var i=this.high>>>16,o=65535&this.high,u=this.low>>>16,s=65535&this.low,f=t.high>>>16,a=65535&t.high,l=t.low>>>16,c=65535&t.low,h=0,p=0,d=0,y=0;return d+=(y+=s*c)>>>16,y&=65535,p+=(d+=u*c)>>>16,d&=65535,p+=(d+=s*l)>>>16,d&=65535,h+=(p+=o*c)>>>16,p&=65535,h+=(p+=u*l)>>>16,p&=65535,h+=(p+=s*a)>>>16,p&=65535,h+=i*c+o*l+u*a+s*f,h&=65535,e.fromBits(d<<16|y,h<<16|p,this.unsigned)},e.prototype.mul=function(e){return this.multiply(e)},e.prototype.negate=function(){return!this.unsigned&&this.eq(e.MIN_VALUE)?e.MIN_VALUE:this.not().add(e.ONE)},e.prototype.neg=function(){return this.negate()},e.prototype.not=function(){return e.fromBits(~this.low,~this.high,this.unsigned)},e.prototype.notEquals=function(e){return!this.equals(e)},e.prototype.neq=function(e){return this.notEquals(e)},e.prototype.ne=function(e){return this.notEquals(e)},e.prototype.or=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low|t.low,this.high|t.high,this.unsigned)},e.prototype.shiftLeft=function(t){return e.isLong(t)&&(t=t.toInt()),0==(t&=63)?this:t<32?e.fromBits(this.low<<t,this.high<<t|this.low>>>32-t,this.unsigned):e.fromBits(0,this.low<<t-32,this.unsigned)},e.prototype.shl=function(e){return this.shiftLeft(e)},e.prototype.shiftRight=function(t){return e.isLong(t)&&(t=t.toInt()),0==(t&=63)?this:t<32?e.fromBits(this.low>>>t|this.high<<32-t,this.high>>t,this.unsigned):e.fromBits(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},e.prototype.shr=function(e){return this.shiftRight(e)},e.prototype.shiftRightUnsigned=function(t){if(e.isLong(t)&&(t=t.toInt()),0===(t&=63))return this;var r=this.high;if(t<32){var n=this.low;return e.fromBits(n>>>t|r<<32-t,r>>>t,this.unsigned)}return 32===t?e.fromBits(r,0,this.unsigned):e.fromBits(r>>>t-32,0,this.unsigned)},e.prototype.shr_u=function(e){return this.shiftRightUnsigned(e)},e.prototype.shru=function(e){return this.shiftRightUnsigned(e)},e.prototype.subtract=function(t){return e.isLong(t)||(t=e.fromValue(t)),this.add(t.neg())},e.prototype.sub=function(e){return this.subtract(e)},e.prototype.toInt=function(){return this.unsigned?this.low>>>0:this.low},e.prototype.toNumber=function(){return this.unsigned?(this.high>>>0)*n+(this.low>>>0):this.high*n+(this.low>>>0)},e.prototype.toBigInt=function(){return BigInt(this.toString())},e.prototype.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},e.prototype.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},e.prototype.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},e.prototype.toSigned=function(){return this.unsigned?e.fromBits(this.low,this.high,!1):this},e.prototype.toString=function(t){if((t=t||10)<2||36<t)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative()){if(this.eq(e.MIN_VALUE)){var r=e.fromNumber(t),n=this.div(r),i=n.mul(r).sub(this);return n.toString(t)+i.toInt().toString(t)}return"-"+this.neg().toString(t)}for(var o=e.fromNumber(Math.pow(t,6),this.unsigned),u=this,s="";;){var f=u.div(o),a=(u.sub(f.mul(o)).toInt()>>>0).toString(t);if((u=f).isZero())return a+s;for(;a.length<6;)a="0"+a;s=""+a+s}},e.prototype.toUnsigned=function(){return this.unsigned?this:e.fromBits(this.low,this.high,!0)},e.prototype.xor=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low^t.low,this.high^t.high,this.unsigned)},e.prototype.eqz=function(){return this.isZero()},e.prototype.le=function(e){return this.lessThanOrEqual(e)},e.prototype.toExtendedJSON=function(e){return e&&e.relaxed?this.toNumber():{$numberLong:this.toString()}},e.fromExtendedJSON=function(t,r){var n=e.fromString(t.$numberLong);return r&&r.relaxed?n.toNumber():n},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'new Long("'+this.toString()+'")'},e.TWO_PWR_24=e.fromInt(16777216),e.MAX_UNSIGNED_VALUE=e.fromBits(-1,-1,!0),e.ZERO=e.fromInt(0),e.UZERO=e.fromInt(0,!0),e.ONE=e.fromInt(1),e.UONE=e.fromInt(1,!0),e.NEG_ONE=e.fromInt(-1),e.MAX_VALUE=e.fromBits(-1,2147483647,!1),e.MIN_VALUE=e.fromBits(0,-2147483648,!1),e}();t.Long=f,Object.defineProperty(f.prototype,"__isLong__",{value:!0}),Object.defineProperty(f.prototype,"_bsontype",{value:"Long"})}));r(re),re.Long;var ne=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Decimal128=void 0;var r=/^(\+|-)?(\d+|(\d*\.\d*))?(E|e)?([-+])?(\d+)?$/,n=/^(\+|-)?(Infinity|inf)$/i,i=/^(\+|-)?NaN$/i,o=6111,u=-6176,s=[124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),f=[248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),a=[120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0].reverse(),l=/^([-+])?(\d+)?$/;function c(e){return!isNaN(parseInt(e,10))}function h(e){var t=re.Long.fromNumber(1e9),r=re.Long.fromNumber(0);if(!(e.parts[0]||e.parts[1]||e.parts[2]||e.parts[3]))return{quotient:e,rem:r};for(var n=0;n<=3;n++)r=(r=r.shiftLeft(32)).add(new re.Long(e.parts[n],0)),e.parts[n]=r.div(t).low,r=r.modulo(t);return{quotient:e,rem:r}}function p(e,t){throw new TypeError('"'+e+'" is not a valid Decimal128 string - '+t)}var d=function(){function e(t){if(!(this instanceof e))return new e(t);this.bytes=t}return e.fromString=function(t){var h,d=!1,y=!1,g=!1,_=0,B=0,O=0,m=0,S=0,N=[0],v=0,A=0,w=0,E=0,T=0,D=0,I=new re.Long(0,0),x=new re.Long(0,0),U=0;if(t.length>=7e3)throw new TypeError(t+" not a valid Decimal128 string");var R=t.match(r),L=t.match(n),j=t.match(i);if(!R&&!L&&!j||0===t.length)throw new TypeError(t+" not a valid Decimal128 string");if(R){var M=R[2],P=R[4],Y=R[5],C=R[6];P&&void 0===C&&p(t,"missing exponent power"),P&&void 0===M&&p(t,"missing exponent base"),void 0===P&&(Y||C)&&p(t,"missing e before exponent")}if("+"!==t[U]&&"-"!==t[U]||(d="-"===t[U++]),!c(t[U])&&"."!==t[U]){if("i"===t[U]||"I"===t[U])return new e(b.Buffer.from(d?f:a));if("N"===t[U])return new e(b.Buffer.from(s))}for(;c(t[U])||"."===t[U];)"."!==t[U]?(v<34&&("0"!==t[U]||g)&&(g||(S=B),g=!0,N[A++]=parseInt(t[U],10),v+=1),g&&(O+=1),y&&(m+=1),B+=1,U+=1):(y&&p(t,"contains multiple periods"),y=!0,U+=1);if(y&&!B)throw new TypeError(t+" not a valid Decimal128 string");if("e"===t[U]||"E"===t[U]){var z=t.substr(++U).match(l);if(!z||!z[2])return new e(b.Buffer.from(s));T=parseInt(z[0],10),U+=z[0].length}if(t[U])return new e(b.Buffer.from(s));if(w=0,v){if(E=v-1,1!==(_=O))for(;"0"===t[S+_-1];)_-=1}else w=0,E=0,N[0]=0,O=1,v=1,_=0;for(T<=m&&m-T>16384?T=u:T-=m;T>o;){if((E+=1)-w>34){if(N.join("").match(/^0+$/)){T=o;break}p(t,"overflow")}T-=1}for(;T<u||v<O;){if(0===E&&_<v){T=u,_=0;break}if(v<O?O-=1:E-=1,T<o)T+=1;else{if(N.join("").match(/^0+$/)){T=o;break}p(t,"overflow")}}if(E-w+1<_){var $=B;y&&(S+=1,$+=1),d&&(S+=1,$+=1);var k=parseInt(t[S+E+1],10),J=0;if(k>=5&&(J=1,5===k))for(J=N[E]%2==1?1:0,D=S+E+2;D<$;D++)if(parseInt(t[D],10)){J=1;break}if(J)for(var q=E;q>=0;q--)if(++N[q]>9&&(N[q]=0,0===q)){if(!(T<o))return new e(b.Buffer.from(d?f:a));T+=1,N[q]=1}}if(I=re.Long.fromNumber(0),x=re.Long.fromNumber(0),0===_)I=re.Long.fromNumber(0),x=re.Long.fromNumber(0);else if(E-w<17){q=w;for(x=re.Long.fromNumber(N[q++]),I=new re.Long(0,0);q<=E;q++)x=(x=x.multiply(re.Long.fromNumber(10))).add(re.Long.fromNumber(N[q]))}else{q=w;for(I=re.Long.fromNumber(N[q++]);q<=E-17;q++)I=(I=I.multiply(re.Long.fromNumber(10))).add(re.Long.fromNumber(N[q]));for(x=re.Long.fromNumber(N[q++]);q<=E;q++)x=(x=x.multiply(re.Long.fromNumber(10))).add(re.Long.fromNumber(N[q]))}var F,V,K,H,X=function(e,t){if(!e&&!t)return{high:re.Long.fromNumber(0),low:re.Long.fromNumber(0)};var r=e.shiftRightUnsigned(32),n=new re.Long(e.getLowBits(),0),i=t.shiftRightUnsigned(32),o=new re.Long(t.getLowBits(),0),u=r.multiply(i),s=r.multiply(o),f=n.multiply(i),a=n.multiply(o);return u=u.add(s.shiftRightUnsigned(32)),s=new re.Long(s.getLowBits(),0).add(f).add(a.shiftRightUnsigned(32)),{high:u=u.add(s.shiftRightUnsigned(32)),low:a=s.shiftLeft(32).add(new re.Long(a.getLowBits(),0))}}(I,re.Long.fromString("100000000000000000"));X.low=X.low.add(x),F=X.low,V=x,K=F.high>>>0,H=V.high>>>0,(K<H||K===H&&F.low>>>0<V.low>>>0)&&(X.high=X.high.add(re.Long.fromNumber(1))),h=T+6176;var W={low:re.Long.fromNumber(0),high:re.Long.fromNumber(0)};X.high.shiftRightUnsigned(49).and(re.Long.fromNumber(1)).equals(re.Long.fromNumber(1))?(W.high=W.high.or(re.Long.fromNumber(3).shiftLeft(61)),W.high=W.high.or(re.Long.fromNumber(h).and(re.Long.fromNumber(16383).shiftLeft(47))),W.high=W.high.or(X.high.and(re.Long.fromNumber(0x7fffffffffff)))):(W.high=W.high.or(re.Long.fromNumber(16383&h).shiftLeft(49)),W.high=W.high.or(X.high.and(re.Long.fromNumber(562949953421311)))),W.low=X.low,d&&(W.high=W.high.or(re.Long.fromString("9223372036854775808")));var G=b.Buffer.alloc(16);return U=0,G[U++]=255&W.low.low,G[U++]=W.low.low>>8&255,G[U++]=W.low.low>>16&255,G[U++]=W.low.low>>24&255,G[U++]=255&W.low.high,G[U++]=W.low.high>>8&255,G[U++]=W.low.high>>16&255,G[U++]=W.low.high>>24&255,G[U++]=255&W.high.low,G[U++]=W.high.low>>8&255,G[U++]=W.high.low>>16&255,G[U++]=W.high.low>>24&255,G[U++]=255&W.high.high,G[U++]=W.high.high>>8&255,G[U++]=W.high.high>>16&255,G[U++]=W.high.high>>24&255,new e(G)},e.prototype.toString=function(){for(var e,t=0,r=new Array(36),n=0;n<r.length;n++)r[n]=0;var i,o,u,s=0,f=!1,a={parts:[0,0,0,0]},l=[];s=0;var c=this.bytes,p=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24,d=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24,y=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24,g=c[s++]|c[s++]<<8|c[s++]<<16|c[s++]<<24;s=0,{low:new re.Long(p,d),high:new re.Long(y,g)}.high.lessThan(re.Long.ZERO)&&l.push("-");var _=g>>26&31;if(_>>3==3){if(30===_)return l.join("")+"Infinity";if(31===_)return"NaN";e=g>>15&16383,i=8+(g>>14&1)}else i=g>>14&7,e=g>>17&16383;var b=e-6176;if(a.parts[0]=(16383&g)+((15&i)<<14),a.parts[1]=y,a.parts[2]=d,a.parts[3]=p,0===a.parts[0]&&0===a.parts[1]&&0===a.parts[2]&&0===a.parts[3])f=!0;else for(u=3;u>=0;u--){var B=0,O=h(a);if(a=O.quotient,B=O.rem.low)for(o=8;o>=0;o--)r[9*u+o]=B%10,B=Math.floor(B/10)}if(f)t=1,r[s]=0;else for(t=36;!r[s];)t-=1,s+=1;var m=t-1+b;if(m>=34||m<=-7||b>0){if(t>34)return l.push("0"),b>0?l.push("E+"+b):b<0&&l.push("E"+b),l.join("");l.push(""+r[s++]),(t-=1)&&l.push(".");for(n=0;n<t;n++)l.push(""+r[s++]);l.push("E"),m>0?l.push("+"+m):l.push(""+m)}else if(b>=0)for(n=0;n<t;n++)l.push(""+r[s++]);else{var S=t+b;if(S>0)for(n=0;n<S;n++)l.push(""+r[s++]);else l.push("0");for(l.push(".");S++<0;)l.push("0");for(n=0;n<t-Math.max(S-1,0);n++)l.push(""+r[s++])}return l.join("")},e.prototype.toJSON=function(){return{$numberDecimal:this.toString()}},e.prototype.toExtendedJSON=function(){return{$numberDecimal:this.toString()}},e.fromExtendedJSON=function(t){return e.fromString(t.$numberDecimal)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'Decimal128.fromString("'+this.toString()+'")'},e}();t.Decimal128=d,Object.defineProperty(d.prototype,"_bsontype",{value:"Decimal128"})}));r(ne),ne.Decimal128;var ie=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Double=void 0;var r=function(){function e(t){if(!(this instanceof e))return new e(t);t instanceof Number&&(t=t.valueOf()),this.value=+t}return e.prototype.valueOf=function(){return this.value},e.prototype.toJSON=function(){return this.value},e.prototype.toExtendedJSON=function(e){return e&&(e.legacy||e.relaxed&&isFinite(this.value))?this.value:Object.is(Math.sign(this.value),-0)?{$numberDouble:"-"+this.value.toFixed(1)}:(Number.isInteger(this.value)?(t=this.value.toFixed(1)).length>=13&&(t=this.value.toExponential(13).toUpperCase()):t=this.value.toString(),{$numberDouble:t});var t},e.fromExtendedJSON=function(t,r){var n=parseFloat(t.$numberDouble);return r&&r.relaxed?n:new e(n)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new Double("+this.toExtendedJSON().$numberDouble+")"},e}();t.Double=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Double"})}));r(ie),ie.Double;var oe=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Int32=void 0;var r=function(){function e(t){if(!(this instanceof e))return new e(t);t instanceof Number&&(t=t.valueOf()),this.value=+t}return e.prototype.valueOf=function(){return this.value},e.prototype.toJSON=function(){return this.value},e.prototype.toExtendedJSON=function(e){return e&&(e.relaxed||e.legacy)?this.value:{$numberInt:this.value.toString()}},e.fromExtendedJSON=function(t,r){return r&&r.relaxed?parseInt(t.$numberInt,10):new e(t.$numberInt)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new Int32("+this.valueOf()+")"},e}();t.Int32=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Int32"})}));r(oe),oe.Int32;var ue=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MaxKey=void 0;var r=function(){function e(){if(!(this instanceof e))return new e}return e.prototype.toExtendedJSON=function(){return{$maxKey:1}},e.fromExtendedJSON=function(){return new e},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new MaxKey()"},e}();t.MaxKey=r,Object.defineProperty(r.prototype,"_bsontype",{value:"MaxKey"})}));r(ue),ue.MaxKey;var se=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MinKey=void 0;var r=function(){function e(){if(!(this instanceof e))return new e}return e.prototype.toExtendedJSON=function(){return{$minKey:1}},e.fromExtendedJSON=function(){return new e},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return"new MinKey()"},e}();t.MinKey=r,Object.defineProperty(r.prototype,"_bsontype",{value:"MinKey"})}));r(se),se.MinKey;var fe=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ObjectId=void 0;for(var r=X.randomBytes(5),n=new RegExp("^[0-9a-fA-F]{24}$"),i=[],o=0;o<256;o++)i[o]=(o<=15?"0":"")+o.toString(16);for(var u=[],s=0;s<10;)u[48+s]=s++;for(;s<16;)u[55+s]=u[87+s]=s++;var f=Symbol("id"),a=function(){function e(t){if(!(this instanceof e))return new e(t);if(t instanceof e&&(this[f]=t.id,this.__id=t.__id),"object"==typeof t&&t&&"id"in t&&("toHexString"in t&&"function"==typeof t.toHexString?this[f]=b.Buffer.from(t.toHexString(),"hex"):this[f]="string"==typeof t.id?b.Buffer.from(t.id):t.id),null!=t&&"number"!=typeof t||(this[f]=e.generate("number"==typeof t?t:void 0),e.cacheHexString&&(this.__id=this.id.toString("hex"))),ArrayBuffer.isView(t)&&12===t.byteLength&&(this[f]=W.ensureBuffer(t)),"string"==typeof t)if(12===t.length){var r=b.Buffer.from(t);12===r.byteLength&&(this[f]=r)}else{if(24!==t.length||!n.test(t))throw new TypeError("Argument passed in must be a Buffer or string of 12 bytes or a string of 24 hex characters");this[f]=b.Buffer.from(t,"hex")}e.cacheHexString&&(this.__id=this.id.toString("hex"))}return Object.defineProperty(e.prototype,"id",{get:function(){return this[f]},set:function(t){this[f]=t,e.cacheHexString&&(this.__id=t.toString("hex"))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"generationTime",{get:function(){return this.id.readInt32BE(0)},set:function(e){this.id.writeUInt32BE(e,0)},enumerable:!1,configurable:!0}),e.prototype.toHexString=function(){if(e.cacheHexString&&this.__id)return this.__id;var t=this.id.toString("hex");return e.cacheHexString&&!this.__id&&(this.__id=t),t},e.getInc=function(){return e.index=(e.index+1)%16777215},e.generate=function(t){"number"!=typeof t&&(t=~~(Date.now()/1e3));var n=e.getInc(),i=b.Buffer.alloc(12);return i.writeUInt32BE(t,0),i[4]=r[0],i[5]=r[1],i[6]=r[2],i[7]=r[3],i[8]=r[4],i[11]=255&n,i[10]=n>>8&255,i[9]=n>>16&255,i},e.prototype.toString=function(e){return e?this.id.toString(e):this.toHexString()},e.prototype.toJSON=function(){return this.toHexString()},e.prototype.equals=function(t){return null!=t&&(t instanceof e?this.toString()===t.toString():"string"==typeof t&&e.isValid(t)&&12===t.length&&b.Buffer.isBuffer(this.id)?t===this.id.toString("binary"):"string"==typeof t&&e.isValid(t)&&24===t.length?t.toLowerCase()===this.toHexString():"string"==typeof t&&e.isValid(t)&&12===t.length?b.Buffer.from(t).equals(this.id):"object"==typeof t&&"toHexString"in t&&"function"==typeof t.toHexString&&t.toHexString()===this.toHexString())},e.prototype.getTimestamp=function(){var e=new Date,t=this.id.readUInt32BE(0);return e.setTime(1e3*Math.floor(t)),e},e.createPk=function(){return new e},e.createFromTime=function(t){var r=b.Buffer.from([0,0,0,0,0,0,0,0,0,0,0,0]);return r.writeUInt32BE(t,0),new e(r)},e.createFromHexString=function(t){if(void 0===t||null!=t&&24!==t.length)throw new TypeError("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters");return new e(b.Buffer.from(t,"hex"))},e.isValid=function(t){return null!=t&&("number"==typeof t||("string"==typeof t?12===t.length||24===t.length&&n.test(t):t instanceof e||(!(!b.Buffer.isBuffer(t)||12!==t.length)||"object"==typeof t&&"toHexString"in t&&"function"==typeof t.toHexString&&("string"==typeof t.id?12===t.id.length:24===t.toHexString().length&&n.test(t.id.toString("hex"))))))},e.prototype.toExtendedJSON=function(){return this.toHexString?{$oid:this.toHexString()}:{$oid:this.toString("hex")}},e.fromExtendedJSON=function(t){return new e(t.$oid)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e.prototype.inspect=function(){return'new ObjectId("'+this.toHexString()+'")'},e.index=~~(16777215*Math.random()),e}();t.ObjectId=a,Object.defineProperty(a.prototype,"generate",{value:X.deprecate((function(e){return a.generate(e)}),"Please use the static `ObjectId.generate(time)` instead")}),Object.defineProperty(a.prototype,"getInc",{value:X.deprecate((function(){return a.getInc()}),"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(a.prototype,"get_inc",{value:X.deprecate((function(){return a.getInc()}),"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(a,"get_inc",{value:X.deprecate((function(){return a.getInc()}),"Please use the static `ObjectId.getInc()` instead")}),Object.defineProperty(a.prototype,"_bsontype",{value:"ObjectID"})}));r(fe),fe.ObjectId;var ae=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BSONRegExp=void 0;var r=function(){function e(t,r){if(!(this instanceof e))return new e(t,r);this.pattern=t,this.options=null!=r?r:"",this.options.split("").sort().join("");for(var n=0;n<this.options.length;n++)if("i"!==this.options[n]&&"m"!==this.options[n]&&"x"!==this.options[n]&&"l"!==this.options[n]&&"s"!==this.options[n]&&"u"!==this.options[n])throw new Error("The regular expression option ["+this.options[n]+"] is not supported")}return e.parseOptions=function(e){return e?e.split("").sort().join(""):""},e.prototype.toExtendedJSON=function(e){return(e=e||{}).legacy?{$regex:this.pattern,$options:this.options}:{$regularExpression:{pattern:this.pattern,options:this.options}}},e.fromExtendedJSON=function(t){if("$regex"in t){if("string"==typeof t.$regex)return new e(t.$regex,e.parseOptions(t.$options));if("BSONRegExp"===t.$regex._bsontype)return t}if("$regularExpression"in t)return new e(t.$regularExpression.pattern,e.parseOptions(t.$regularExpression.options));throw new TypeError("Unexpected BSONRegExp EJSON object form: "+JSON.stringify(t))},e}();t.BSONRegExp=r,Object.defineProperty(r.prototype,"_bsontype",{value:"BSONRegExp"})}));r(ae),ae.BSONRegExp;var le=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BSONSymbol=void 0;var r=function(){function e(t){if(!(this instanceof e))return new e(t);this.value=t}return e.prototype.valueOf=function(){return this.value},e.prototype.toString=function(){return this.value},e.prototype.inspect=function(){return'new BSONSymbol("'+this.value+'")'},e.prototype.toJSON=function(){return this.value},e.prototype.toExtendedJSON=function(){return{$symbol:this.value}},e.fromExtendedJSON=function(t){return new e(t.$symbol)},e.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},e}();t.BSONSymbol=r,Object.defineProperty(r.prototype,"_bsontype",{value:"Symbol"})}));r(le),le.BSONSymbol;
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
var ce=function(e,t){return ce=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])},ce(e,t)};var he=function(){return he=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},he.apply(this,arguments)};function pe(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function de(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),u=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)u.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return u}function ye(e){return this instanceof ye?(this.v=e,this):new ye(e)}var ge=Object.freeze({__proto__:null,__extends:function(e,t){function r(){this.constructor=e}ce(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},get __assign(){return he},__rest:function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r},__decorate:function(e,t,r,n){var i,o=arguments.length,u=o<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"===("undefined"==typeof Reflect?"undefined":babelHelpers.typeof(Reflect))&&"function"==typeof Reflect.decorate)u=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(u=(o<3?i(u):o>3?i(t,r,u):i(t,r))||u);return o>3&&u&&Object.defineProperty(t,r,u),u},__param:function(e,t){return function(r,n){t(r,n,e)}},__metadata:function(e,t){if("object"===("undefined"==typeof Reflect?"undefined":babelHelpers.typeof(Reflect))&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__awaiter:function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function u(e){try{f(n.next(e))}catch(e){o(e)}}function s(e){try{f(n.throw(e))}catch(e){o(e)}}function f(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(u,s)}f((n=n.apply(e,t||[])).next())}))},__generator:function(e,t){var r,n,i,o,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;u;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return u.label++,{value:o[1],done:!1};case 5:u.label++,n=o[1],o=[0];continue;case 7:o=u.ops.pop(),u.trys.pop();continue;default:if(!(i=u.trys,(i=i.length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){u=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){u.label=o[1];break}if(6===o[0]&&u.label<i[1]){u.label=i[1],i=o;break}if(i&&u.label<i[2]){u.label=i[2],u.ops.push(o);break}i[2]&&u.ops.pop(),u.trys.pop();continue}o=t.call(e,u)}catch(e){o=[6,e],n=0}finally{r=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}},__createBinding:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]},__exportStar:function(e,t){for(var r in e)"default"===r||t.hasOwnProperty(r)||(t[r]=e[r])},__values:pe,__read:de,__spread:function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(de(arguments[t]));return e},__spreadArrays:function(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),i=0;for(t=0;t<r;t++)for(var o=arguments[t],u=0,s=o.length;u<s;u++,i++)n[i]=o[u];return n},__await:ye,__asyncGenerator:function(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,i=r.apply(e,t||[]),o=[];return n={},u("next"),u("throw"),u("return"),n[Symbol.asyncIterator]=function(){return this},n;function u(e){i[e]&&(n[e]=function(t){return new Promise((function(r,n){o.push([e,t,r,n])>1||s(e,t)}))})}function s(e,t){try{(r=i[e](t)).value instanceof ye?Promise.resolve(r.value.v).then(f,a):l(o[0][2],r)}catch(e){l(o[0][3],e)}var r}function f(e){s("next",e)}function a(e){s("throw",e)}function l(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}},__asyncDelegator:function(e){var t,r;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,i){t[n]=e[n]?function(t){return(r=!r)?{value:ye(e[n](t)),done:"return"===n}:i?i(t):t}:i}},__asyncValues:function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=pe(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,i){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,i,(t=e[r](t)).done,t.value)}))}}},__makeTemplateObject:function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},__importStar:function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t},__importDefault:function(e){return e&&e.__esModule?e:{default:e}},__classPrivateFieldGet:function(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)},__classPrivateFieldSet:function(e,t,r){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,r),r}}),_e=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Timestamp=t.LongWithoutOverridesClass=void 0,t.LongWithoutOverridesClass=re.Long;var r=function(e){function t(r,n){var i=this;return i instanceof t?(i=re.Long.isLong(r)?e.call(this,r.low,r.high,!0)||this:e.call(this,r,n,!0)||this,Object.defineProperty(i,"_bsontype",{value:"Timestamp",writable:!1,configurable:!1,enumerable:!1}),i):new t(r,n)}return ge.__extends(t,e),t.prototype.toJSON=function(){return{$timestamp:this.toString()}},t.fromInt=function(e){return new t(re.Long.fromInt(e,!0))},t.fromNumber=function(e){return new t(re.Long.fromNumber(e,!0))},t.fromBits=function(e,r){return new t(e,r)},t.fromString=function(e,r){return new t(re.Long.fromString(e,!0,r))},t.prototype.toExtendedJSON=function(){return{$timestamp:{t:this.high>>>0,i:this.low>>>0}}},t.fromExtendedJSON=function(e){return new t(e.$timestamp.i,e.$timestamp.t)},t.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return this.inspect()},t.prototype.inspect=function(){return"new Timestamp("+this.getLowBits().toString()+", "+this.getHighBits().toString()+")"},t.MAX_VALUE=re.Long.MAX_UNSIGNED_VALUE,t}(t.LongWithoutOverridesClass);t.Timestamp=r}));r(_e),_e.Timestamp,_e.LongWithoutOverridesClass;var be=n((function(e,t){function r(e){return X.isObjectLike(e)&&Reflect.has(e,"_bsontype")&&"string"==typeof e._bsontype}Object.defineProperty(t,"__esModule",{value:!0}),t.EJSON=t.isBSONType=void 0,t.isBSONType=r;var n=2147483647,i=-2147483648,o=0x8000000000000000,u=-0x8000000000000000,s={$oid:fe.ObjectId,$binary:Q.Binary,$uuid:Q.Binary,$symbol:le.BSONSymbol,$numberInt:oe.Int32,$numberDecimal:ne.Decimal128,$numberDouble:ie.Double,$numberLong:re.Long,$minKey:se.MinKey,$maxKey:ue.MaxKey,$regex:ae.BSONRegExp,$regularExpression:ae.BSONRegExp,$timestamp:_e.Timestamp};function f(e,t){if(void 0===t&&(t={}),"number"==typeof e){if(t.relaxed||t.legacy)return e;if(Math.floor(e)===e){if(e>=i&&e<=n)return new oe.Int32(e);if(e>=u&&e<=o)return re.Long.fromNumber(e)}return new ie.Double(e)}if(null==e||"object"!=typeof e)return e;if(e.$undefined)return null;for(var r=Object.keys(e).filter((function(t){return t.startsWith("$")&&null!=e[t]})),a=0;a<r.length;a++){var l=s[r[a]];if(l)return l.fromExtendedJSON(e,t)}if(null!=e.$date){var c=e.$date,h=new Date;return t.legacy?"number"==typeof c?h.setTime(c):"string"==typeof c&&h.setTime(Date.parse(c)):"string"==typeof c?h.setTime(Date.parse(c)):re.Long.isLong(c)?h.setTime(c.toNumber()):"number"==typeof c&&t.relaxed&&h.setTime(c),h}if(null!=e.$code){var p=Object.assign({},e);return e.$scope&&(p.$scope=f(e.$scope)),ee.Code.fromExtendedJSON(e)}if(null!=e.$ref||null!=e.$dbPointer){var d=e.$ref?e:e.$dbPointer;if(d instanceof te.DBRef)return d;var y=Object.keys(d).filter((function(e){return e.startsWith("$")})),g=!0;if(y.forEach((function(e){-1===["$ref","$id","$db"].indexOf(e)&&(g=!1)})),g)return te.DBRef.fromExtendedJSON(d)}return e}function a(e){var t=e.toISOString();return 0!==e.getUTCMilliseconds()?t:t.slice(0,-5)+"Z"}function l(e,t){if(Array.isArray(e))return function(e,t){return e.map((function(e){return l(e,t)}))}(e,t);if(void 0===e)return null;if(e instanceof Date){var s=e.getTime(),f=s>-1&&s<2534023188e5;return t.legacy?t.relaxed&&f?{$date:e.getTime()}:{$date:a(e)}:t.relaxed&&f?{$date:a(e)}:{$date:{$numberLong:e.getTime().toString()}}}if("number"==typeof e&&!t.relaxed){if(Math.floor(e)===e){var h=e>=u&&e<=o;if(e>=i&&e<=n)return{$numberInt:e.toString()};if(h)return{$numberLong:e.toString()}}return{$numberDouble:e.toString()}}if(e instanceof RegExp){var p=e.flags;if(void 0===p){var d=e.toString().match(/[gimuy]*$/);d&&(p=d[0])}return new ae.BSONRegExp(e.source,p).toExtendedJSON(t)}return null!=e&&"object"==typeof e?function(e,t){if(null==e||"object"!=typeof e)throw new Error("not an object instance");var n=e._bsontype;if(void 0===n){var i={};for(var o in e)i[o]=l(e[o],t);return i}if(r(e)){var u=e;if("function"!=typeof u.toExtendedJSON){var s=c[e._bsontype];if(!s)throw new TypeError("Unrecognized or invalid _bsontype: "+e._bsontype);u=s(u)}return"Code"===n&&u.scope?u=new ee.Code(u.code,l(u.scope,t)):"DBRef"===n&&u.oid&&(u=new te.DBRef(u.collection,l(u.oid,t),u.db,u.fields)),u.toExtendedJSON(t)}throw new Error("_bsontype must be a string, but was: "+typeof n)}(e,t):e}var c={Binary:function(e){return new Q.Binary(e.value(),e.sub_type)},Code:function(e){return new ee.Code(e.code,e.scope)},DBRef:function(e){return new te.DBRef(e.collection||e.namespace,e.oid,e.db,e.fields)},Decimal128:function(e){return new ne.Decimal128(e.bytes)},Double:function(e){return new ie.Double(e.value)},Int32:function(e){return new oe.Int32(e.value)},Long:function(e){return re.Long.fromBits(null!=e.low?e.low:e.low_,null!=e.low?e.high:e.high_,null!=e.low?e.unsigned:e.unsigned_)},MaxKey:function(){return new ue.MaxKey},MinKey:function(){return new se.MinKey},ObjectID:function(e){return new fe.ObjectId(e)},ObjectId:function(e){return new fe.ObjectId(e)},BSONRegExp:function(e){return new ae.BSONRegExp(e.pattern,e.options)},Symbol:function(e){return new le.BSONSymbol(e.value)},Timestamp:function(e){return _e.Timestamp.fromBits(e.low,e.high)}};!function(e){function t(e,t){var r=Object.assign({},{relaxed:!0,legacy:!1},t);return"boolean"==typeof r.relaxed&&(r.strict=!r.relaxed),"boolean"==typeof r.strict&&(r.relaxed=!r.strict),JSON.parse(e,(function(e,t){return f(t,r)}))}function r(e,t,r,n){null!=r&&"object"==typeof r&&(n=r,r=0),null==t||"object"!=typeof t||Array.isArray(t)||(n=t,t=void 0,r=0);var i=l(e,n=Object.assign({},{relaxed:!0,legacy:!1},n));return JSON.stringify(i,t,r)}e.parse=t,e.stringify=r,e.serialize=function(e,t){return t=t||{},JSON.parse(r(e,t))},e.deserialize=function(e,r){return r=r||{},t(JSON.stringify(e),r)}}(t.EJSON||(t.EJSON={}))}));r(be),be.EJSON,be.isBSONType;var Be=n((function(e,r){var n;Object.defineProperty(r,"__esModule",{value:!0}),r.Map=void 0,r.Map=n;var i=function(e){return e&&e.Math==Math&&e};var o=i("object"==typeof globalThis&&globalThis)||i("object"==typeof window&&window)||i("object"==typeof self&&self)||i("object"==typeof t&&t)||Function("return this")();Object.prototype.hasOwnProperty.call(o,"Map")?r.Map=n=o.Map:r.Map=n=function(){function e(e){void 0===e&&(e=[]),this._keys=[],this._values={};for(var t=0;t<e.length;t++)if(null!=e[t]){var r=e[t],n=r[0],i=r[1];this._keys.push(n),this._values[n]={v:i,i:this._keys.length-1}}}return e.prototype.clear=function(){this._keys=[],this._values={}},e.prototype.delete=function(e){var t=this._values[e];return null!=t&&(delete this._values[e],this._keys.splice(t.i,1),!0)},e.prototype.entries=function(){var e=this,t=0;return{next:function(){var r=e._keys[t++];return{value:void 0!==r?[r,e._values[r].v]:void 0,done:void 0===r}}}},e.prototype.forEach=function(e,t){t=t||this;for(var r=0;r<this._keys.length;r++){var n=this._keys[r];e.call(t,this._values[n].v,n,t)}},e.prototype.get=function(e){return this._values[e]?this._values[e].v:void 0},e.prototype.has=function(e){return null!=this._values[e]},e.prototype.keys=function(){var e=this,t=0;return{next:function(){var r=e._keys[t++];return{value:void 0!==r?r:void 0,done:void 0===r}}}},e.prototype.set=function(e,t){return this._values[e]?(this._values[e].v=t,this):(this._keys.push(e),this._values[e]={v:t,i:this._keys.length-1},this)},e.prototype.values=function(){var e=this,t=0;return{next:function(){var r=e._keys[t++];return{value:void 0!==r?e._values[r].v:void 0,done:void 0===r}}}},Object.defineProperty(e.prototype,"size",{get:function(){return this._keys.length},enumerable:!1,configurable:!0}),e}()}));r(Be),Be.Map;var Oe=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.BSON_BINARY_SUBTYPE_USER_DEFINED=t.BSON_BINARY_SUBTYPE_MD5=t.BSON_BINARY_SUBTYPE_UUID_NEW=t.BSON_BINARY_SUBTYPE_UUID=t.BSON_BINARY_SUBTYPE_BYTE_ARRAY=t.BSON_BINARY_SUBTYPE_FUNCTION=t.BSON_BINARY_SUBTYPE_DEFAULT=t.BSON_DATA_MAX_KEY=t.BSON_DATA_MIN_KEY=t.BSON_DATA_DECIMAL128=t.BSON_DATA_LONG=t.BSON_DATA_TIMESTAMP=t.BSON_DATA_INT=t.BSON_DATA_CODE_W_SCOPE=t.BSON_DATA_SYMBOL=t.BSON_DATA_CODE=t.BSON_DATA_DBPOINTER=t.BSON_DATA_REGEXP=t.BSON_DATA_NULL=t.BSON_DATA_DATE=t.BSON_DATA_BOOLEAN=t.BSON_DATA_OID=t.BSON_DATA_UNDEFINED=t.BSON_DATA_BINARY=t.BSON_DATA_ARRAY=t.BSON_DATA_OBJECT=t.BSON_DATA_STRING=t.BSON_DATA_NUMBER=t.JS_INT_MIN=t.JS_INT_MAX=t.BSON_INT64_MIN=t.BSON_INT64_MAX=t.BSON_INT32_MIN=t.BSON_INT32_MAX=void 0,t.BSON_INT32_MAX=2147483647,t.BSON_INT32_MIN=-2147483648,t.BSON_INT64_MAX=Math.pow(2,63)-1,t.BSON_INT64_MIN=-Math.pow(2,63),t.JS_INT_MAX=Math.pow(2,53),t.JS_INT_MIN=-Math.pow(2,53),t.BSON_DATA_NUMBER=1,t.BSON_DATA_STRING=2,t.BSON_DATA_OBJECT=3,t.BSON_DATA_ARRAY=4,t.BSON_DATA_BINARY=5,t.BSON_DATA_UNDEFINED=6,t.BSON_DATA_OID=7,t.BSON_DATA_BOOLEAN=8,t.BSON_DATA_DATE=9,t.BSON_DATA_NULL=10,t.BSON_DATA_REGEXP=11,t.BSON_DATA_DBPOINTER=12,t.BSON_DATA_CODE=13,t.BSON_DATA_SYMBOL=14,t.BSON_DATA_CODE_W_SCOPE=15,t.BSON_DATA_INT=16,t.BSON_DATA_TIMESTAMP=17,t.BSON_DATA_LONG=18,t.BSON_DATA_DECIMAL128=19,t.BSON_DATA_MIN_KEY=255,t.BSON_DATA_MAX_KEY=127,t.BSON_BINARY_SUBTYPE_DEFAULT=0,t.BSON_BINARY_SUBTYPE_FUNCTION=1,t.BSON_BINARY_SUBTYPE_BYTE_ARRAY=2,t.BSON_BINARY_SUBTYPE_UUID=3,t.BSON_BINARY_SUBTYPE_UUID_NEW=4,t.BSON_BINARY_SUBTYPE_MD5=5,t.BSON_BINARY_SUBTYPE_USER_DEFINED=128}));r(Oe),Oe.BSON_BINARY_SUBTYPE_USER_DEFINED,Oe.BSON_BINARY_SUBTYPE_MD5,Oe.BSON_BINARY_SUBTYPE_UUID_NEW,Oe.BSON_BINARY_SUBTYPE_UUID,Oe.BSON_BINARY_SUBTYPE_BYTE_ARRAY,Oe.BSON_BINARY_SUBTYPE_FUNCTION,Oe.BSON_BINARY_SUBTYPE_DEFAULT,Oe.BSON_DATA_MAX_KEY,Oe.BSON_DATA_MIN_KEY,Oe.BSON_DATA_DECIMAL128,Oe.BSON_DATA_LONG,Oe.BSON_DATA_TIMESTAMP,Oe.BSON_DATA_INT,Oe.BSON_DATA_CODE_W_SCOPE,Oe.BSON_DATA_SYMBOL,Oe.BSON_DATA_CODE,Oe.BSON_DATA_DBPOINTER,Oe.BSON_DATA_REGEXP,Oe.BSON_DATA_NULL,Oe.BSON_DATA_DATE,Oe.BSON_DATA_BOOLEAN,Oe.BSON_DATA_OID,Oe.BSON_DATA_UNDEFINED,Oe.BSON_DATA_BINARY,Oe.BSON_DATA_ARRAY,Oe.BSON_DATA_OBJECT,Oe.BSON_DATA_STRING,Oe.BSON_DATA_NUMBER,Oe.JS_INT_MIN,Oe.JS_INT_MAX,Oe.BSON_INT64_MIN,Oe.BSON_INT64_MAX,Oe.BSON_INT32_MIN,Oe.BSON_INT32_MAX;var me=n((function(e,t){function r(e,t,r){var i=5;if(Array.isArray(e))for(var o=0;o<e.length;o++)i+=n(o.toString(),e[o],t,!0,r);else for(var u in e.toBSON&&(e=e.toBSON()),e)i+=n(u,e[u],t,!1,r);return i}function n(e,t,n,i,o){switch(void 0===n&&(n=!1),void 0===i&&(i=!1),void 0===o&&(o=!1),t&&t.toBSON&&(t=t.toBSON()),typeof t){case"string":return 1+b.Buffer.byteLength(e,"utf8")+1+4+b.Buffer.byteLength(t,"utf8")+1;case"number":return Math.floor(t)===t&&t>=Oe.JS_INT_MIN&&t<=Oe.JS_INT_MAX&&t>=Oe.BSON_INT32_MIN&&t<=Oe.BSON_INT32_MAX?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+5:(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+9;case"undefined":return i||!o?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1:0;case"boolean":return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+2;case"object":if(null==t||"MinKey"===t._bsontype||"MaxKey"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1;if("ObjectId"===t._bsontype||"ObjectID"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+13;if(t instanceof Date||X.isDate(t))return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+9;if(ArrayBuffer.isView(t)||t instanceof ArrayBuffer)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+6+t.byteLength;if("Long"===t._bsontype||"Double"===t._bsontype||"Timestamp"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+9;if("Decimal128"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+17;if("Code"===t._bsontype)return null!=t.scope&&Object.keys(t.scope).length>0?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+4+b.Buffer.byteLength(t.code.toString(),"utf8")+1+r(t.scope,n,o):(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+b.Buffer.byteLength(t.code.toString(),"utf8")+1;if("Binary"===t._bsontype)return t.sub_type===Q.Binary.SUBTYPE_BYTE_ARRAY?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+(t.position+1+4+1+4):(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+(t.position+1+4+1);if("Symbol"===t._bsontype)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+b.Buffer.byteLength(t.value,"utf8")+4+1+1;if("DBRef"===t._bsontype){var u=Object.assign({$ref:t.collection,$id:t.oid},t.fields);return null!=t.db&&(u.$db=t.db),(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+r(u,n,o)}return t instanceof RegExp||"[object RegExp]"===Object.prototype.toString.call(t)?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+b.Buffer.byteLength(t.source,"utf8")+1+(t.global?1:0)+(t.ignoreCase?1:0)+(t.multiline?1:0)+1:"BSONRegExp"===t._bsontype?(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+b.Buffer.byteLength(t.pattern,"utf8")+1+b.Buffer.byteLength(t.options,"utf8")+1:(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+r(t,n,o)+1;case"function":if(t instanceof RegExp||"[object RegExp]"===Object.prototype.toString.call(t)||"[object RegExp]"===String.call(t))return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+b.Buffer.byteLength(t.source,"utf8")+1+(t.global?1:0)+(t.ignoreCase?1:0)+(t.multiline?1:0)+1;if(n&&null!=t.scope&&Object.keys(t.scope).length>0)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+4+b.Buffer.byteLength(X.normalizedFunctionString(t),"utf8")+1+r(t.scope,n,o);if(n)return(null!=e?b.Buffer.byteLength(e,"utf8")+1:0)+1+4+b.Buffer.byteLength(X.normalizedFunctionString(t),"utf8")+1}return 0}Object.defineProperty(t,"__esModule",{value:!0}),t.calculateObjectSize=void 0,t.calculateObjectSize=r}));r(me),me.calculateObjectSize;var Se=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.validateUtf8=void 0;t.validateUtf8=function(e,t,r){for(var n=0,i=t;i<r;i+=1){var o=e[i];if(n){if(128!=(192&o))return!1;n-=1}else if(128&o)if(192==(224&o))n=1;else if(224==(240&o))n=2;else{if(240!=(248&o))return!1;n=3}}return!n}}));r(Se),Se.validateUtf8;var Ne=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.deserialize=void 0;var r=re.Long.fromNumber(Oe.JS_INT_MAX),n=re.Long.fromNumber(Oe.JS_INT_MIN),i={};function o(e,t,s,f){void 0===f&&(f=!1);var a=null!=s.evalFunctions&&s.evalFunctions,l=null!=s.cacheFunctions&&s.cacheFunctions,c=null==s.fieldsAsRaw?null:s.fieldsAsRaw,h=null!=s.raw&&s.raw,p="boolean"==typeof s.bsonRegExp&&s.bsonRegExp,d=null!=s.promoteBuffers&&s.promoteBuffers,y=null==s.promoteLongs||s.promoteLongs,g=null==s.promoteValues||s.promoteValues,_=t;if(e.length<5)throw new Error("corrupt bson message < 5 bytes long");var B=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;if(B<5||B>e.length)throw new Error("corrupt bson message");for(var O=f?[]:{},m=0;;){var S=e[t++];if(0===S)break;for(var N=t;0!==e[N]&&N<e.length;)N++;if(N>=e.byteLength)throw new Error("Bad BSON Document: illegal CString");var v=f?m++:e.toString("utf8",t,N);if(t=N+1,S===Oe.BSON_DATA_STRING){if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");if(!Se.validateUtf8(e,t,t+H-1))throw new Error("Invalid UTF-8 string in BSON document");var A=e.toString("utf8",t,t+H-1);O[v]=A,t+=H}else if(S===Oe.BSON_DATA_OID){var w=b.Buffer.alloc(12);e.copy(w,0,t,t+12),O[v]=new fe.ObjectId(w),t+=12}else if(S===Oe.BSON_DATA_INT&&!1===g)O[v]=new oe.Int32(e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24);else if(S===Oe.BSON_DATA_INT)O[v]=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;else if(S===Oe.BSON_DATA_NUMBER&&!1===g)O[v]=new ie.Double(e.readDoubleLE(t)),t+=8;else if(S===Oe.BSON_DATA_NUMBER)O[v]=e.readDoubleLE(t),t+=8;else if(S===Oe.BSON_DATA_DATE){var E=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,T=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;O[v]=new Date(new re.Long(E,T).toNumber())}else if(S===Oe.BSON_DATA_BOOLEAN){if(0!==e[t]&&1!==e[t])throw new Error("illegal boolean type value");O[v]=1===e[t++]}else if(S===Oe.BSON_DATA_OBJECT){var D=t;if((V=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)<=0||V>e.length-t)throw new Error("bad embedded document length in bson");O[v]=h?e.slice(t,t+V):o(e,D,s,!1),t+=V}else if(S===Oe.BSON_DATA_ARRAY){D=t;var I=s,x=t+(V=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24);if(c&&c[v]){for(var U in I={},s)I[U]=s[U];I.raw=!0}if(O[v]=o(e,D,I,!0),0!==e[(t+=V)-1])throw new Error("invalid array terminator byte");if(t!==x)throw new Error("corrupted array bson")}else if(S===Oe.BSON_DATA_UNDEFINED)O[v]=void 0;else if(S===Oe.BSON_DATA_NULL)O[v]=null;else if(S===Oe.BSON_DATA_LONG){E=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,T=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;var R=new re.Long(E,T);O[v]=y&&!0===g&&R.lessThanOrEqual(r)&&R.greaterThanOrEqual(n)?R.toNumber():R}else if(S===Oe.BSON_DATA_DECIMAL128){var L=b.Buffer.alloc(16);e.copy(L,0,t,t+16),t+=16;var j=new ne.Decimal128(L);"toObject"in j&&"function"==typeof j.toObject?O[v]=j.toObject():O[v]=j}else if(S===Oe.BSON_DATA_BINARY){var M=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,P=M,Y=e[t++];if(M<0)throw new Error("Negative binary type element size found");if(M>e.byteLength)throw new Error("Binary type size larger than document size");if(null!=e.slice){if(Y===Q.Binary.SUBTYPE_BYTE_ARRAY){if((M=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<0)throw new Error("Negative binary type element size found for subtype 0x02");if(M>P-4)throw new Error("Binary type with subtype 0x02 contains too long binary size");if(M<P-4)throw new Error("Binary type with subtype 0x02 contains too short binary size")}O[v]=d&&g?e.slice(t,t+M):new Q.Binary(e.slice(t,t+M),Y)}else{var C=b.Buffer.alloc(M);if(Y===Q.Binary.SUBTYPE_BYTE_ARRAY){if((M=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<0)throw new Error("Negative binary type element size found for subtype 0x02");if(M>P-4)throw new Error("Binary type with subtype 0x02 contains too long binary size");if(M<P-4)throw new Error("Binary type with subtype 0x02 contains too short binary size")}for(N=0;N<M;N++)C[N]=e[t+N];O[v]=d&&g?C:new Q.Binary(C,Y)}t+=M}else if(S===Oe.BSON_DATA_REGEXP&&!1===p){for(N=t;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");var z=e.toString("utf8",t,N);for(N=t=N+1;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");var $=e.toString("utf8",t,N);t=N+1;var k=new Array($.length);for(N=0;N<$.length;N++)switch($[N]){case"m":k[N]="m";break;case"s":k[N]="g";break;case"i":k[N]="i"}O[v]=new RegExp(z,k.join(""))}else if(S===Oe.BSON_DATA_REGEXP&&!0===p){for(N=t;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");z=e.toString("utf8",t,N);for(N=t=N+1;0!==e[N]&&N<e.length;)N++;if(N>=e.length)throw new Error("Bad BSON Document: illegal CString");$=e.toString("utf8",t,N);t=N+1,O[v]=new ae.BSONRegExp(z,$)}else if(S===Oe.BSON_DATA_SYMBOL){if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");var J=e.toString("utf8",t,t+H-1);O[v]=g?J:new le.BSONSymbol(J),t+=H}else if(S===Oe.BSON_DATA_TIMESTAMP){E=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24,T=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;O[v]=new _e.Timestamp(E,T)}else if(S===Oe.BSON_DATA_MIN_KEY)O[v]=new se.MinKey;else if(S===Oe.BSON_DATA_MAX_KEY)O[v]=new ue.MaxKey;else if(S===Oe.BSON_DATA_CODE){if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");var q=e.toString("utf8",t,t+H-1);O[v]=a?l?u(q,i,O):u(q):new ee.Code(q),t+=H}else if(S===Oe.BSON_DATA_CODE_W_SCOPE){var F=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24;if(F<13)throw new Error("code_w_scope total size shorter minimum expected length");if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");q=e.toString("utf8",t,t+H-1),D=t+=H;var V=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24,K=o(e,D,s,!1);if(t+=V,F<8+V+H)throw new Error("code_w_scope total size is too short, truncating scope");if(F>8+V+H)throw new Error("code_w_scope total size is too long, clips outer document");a?(O[v]=l?u(q,i,O):u(q),O[v].scope=K):O[v]=new ee.Code(q,K)}else{if(S!==Oe.BSON_DATA_DBPOINTER)throw new Error("Detected unknown BSON type "+S.toString(16)+' for fieldname "'+v+'"');var H;if((H=e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24)<=0||H>e.length-t||0!==e[t+H-1])throw new Error("bad string length in bson");if(!Se.validateUtf8(e,t,t+H-1))throw new Error("Invalid UTF-8 string in BSON document");var X=e.toString("utf8",t,t+H-1);t+=H;var W=b.Buffer.alloc(12);e.copy(W,0,t,t+12);w=new fe.ObjectId(W);t+=12,O[v]=new te.DBRef(X,w)}}if(B!==t-_){if(f)throw new Error("corrupt array bson");throw new Error("corrupt object bson")}var G=Object.keys(O).filter((function(e){return e.startsWith("$")})),Z=!0;if(G.forEach((function(e){-1===["$ref","$id","$db"].indexOf(e)&&(Z=!1)})),!Z)return O;if(te.isDBRefLike(O)){var ce=Object.assign({},O);return delete ce.$ref,delete ce.$id,delete ce.$db,new te.DBRef(O.$ref,O.$id,O.$db,ce)}return O}function u(e,t,r){return t?(null==t[e]&&(t[e]=new Function(e)),t[e].bind(r)):new Function(e)}t.deserialize=function(e,t,r){var n=(t=null==t?{}:t)&&t.index?t.index:0,i=e[n]|e[n+1]<<8|e[n+2]<<16|e[n+3]<<24;if(i<5)throw new Error("bson size must be >= 5, is "+i);if(t.allowObjectSmallerThanBufferSize&&e.length<i)throw new Error("buffer length "+e.length+" must be >= bson size "+i);if(!t.allowObjectSmallerThanBufferSize&&e.length!==i)throw new Error("buffer length "+e.length+" must === bson size "+i);if(i+n>e.byteLength)throw new Error("(bson size "+i+" + options.index "+n+" must be <= buffer length "+e.byteLength+")");if(0!==e[n+i-1])throw new Error("One object, sized correctly, with a spot for an EOO, but the EOO isn't 0x00");return o(e,n,t,r)}}));r(Ne),Ne.deserialize;var ve=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.writeIEEE754=t.readIEEE754=void 0,t.readIEEE754=function(e,t,r,n,i){var o,u,s="big"===r,f=8*i-n-1,a=(1<<f)-1,l=a>>1,c=-7,h=s?0:i-1,p=s?1:-1,d=e[t+h];for(h+=p,o=d&(1<<-c)-1,d>>=-c,c+=f;c>0;o=256*o+e[t+h],h+=p,c-=8);for(u=o&(1<<-c)-1,o>>=-c,c+=n;c>0;u=256*u+e[t+h],h+=p,c-=8);if(0===o)o=1-l;else{if(o===a)return u?NaN:1/0*(d?-1:1);u+=Math.pow(2,n),o-=l}return(d?-1:1)*u*Math.pow(2,o-n)},t.writeIEEE754=function(e,t,r,n,i,o){var u,s,f,a="big"===n,l=8*o-i-1,c=(1<<l)-1,h=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=a?o-1:0,y=a?-1:1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,u=c):(u=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-u))<1&&(u--,f*=2),(t+=u+h>=1?p/f:p*Math.pow(2,1-h))*f>=2&&(u++,f/=2),u+h>=c?(s=0,u=c):u+h>=1?(s=(t*f-1)*Math.pow(2,i),u+=h):(s=t*Math.pow(2,h-1)*Math.pow(2,i),u=0)),isNaN(t)&&(s=0);i>=8;)e[r+d]=255&s,d+=y,s/=256,i-=8;for(u=u<<i|s,isNaN(t)&&(u+=8),l+=i;l>0;)e[r+d]=255&u,d+=y,u/=256,l-=8;e[r+d-y]|=128*g}}));r(ve),ve.writeIEEE754,ve.readIEEE754;var Ae=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.serializeInto=void 0;var r=/\x00/,n=new Set(["$db","$ref","$id","$clusterTime"]);function i(e){return"[object RegExp]"===Object.prototype.toString.call(e)}function o(e,t,r,n,i){e[n++]=Oe.BSON_DATA_STRING;var o=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8");e[(n=n+o+1)-1]=0;var u=e.write(r,n+4,void 0,"utf8");return e[n+3]=u+1>>24&255,e[n+2]=u+1>>16&255,e[n+1]=u+1>>8&255,e[n]=u+1&255,n=n+4+u,e[n++]=0,n}function u(e,t,r,n,i){Number.isInteger(r)&&r>=Oe.BSON_INT32_MIN&&r<=Oe.BSON_INT32_MAX?(e[n++]=Oe.BSON_DATA_INT,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,e[n++]=255&r,e[n++]=r>>8&255,e[n++]=r>>16&255,e[n++]=r>>24&255):(e[n++]=Oe.BSON_DATA_NUMBER,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,ve.writeIEEE754(e,r,n,"little",52,8),n+=8);return n}function s(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_NULL,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,n}function f(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_BOOLEAN,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,e[n++]=r?1:0,n}function a(e,t,r,n,i){e[n++]=Oe.BSON_DATA_DATE,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=re.Long.fromNumber(r.getTime()),u=o.getLowBits(),s=o.getHighBits();return e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255,e[n++]=255&s,e[n++]=s>>8&255,e[n++]=s>>16&255,e[n++]=s>>24&255,n}function l(e,t,n,i,o){if(e[i++]=Oe.BSON_DATA_REGEXP,i+=o?e.write(t,i,void 0,"ascii"):e.write(t,i,void 0,"utf8"),e[i++]=0,n.source&&null!=n.source.match(r))throw Error("value "+n.source+" must not contain null bytes");return i+=e.write(n.source,i,void 0,"utf8"),e[i++]=0,n.ignoreCase&&(e[i++]=105),n.global&&(e[i++]=115),n.multiline&&(e[i++]=109),e[i++]=0,i}function c(e,t,n,i,o){if(e[i++]=Oe.BSON_DATA_REGEXP,i+=o?e.write(t,i,void 0,"ascii"):e.write(t,i,void 0,"utf8"),e[i++]=0,null!=n.pattern.match(r))throw Error("pattern "+n.pattern+" must not contain null bytes");return i+=e.write(n.pattern,i,void 0,"utf8"),e[i++]=0,i+=e.write(n.options.split("").sort().join(""),i,void 0,"utf8"),e[i++]=0,i}function h(e,t,r,n,i){return null===r?e[n++]=Oe.BSON_DATA_NULL:"MinKey"===r._bsontype?e[n++]=Oe.BSON_DATA_MIN_KEY:e[n++]=Oe.BSON_DATA_MAX_KEY,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,n}function p(e,t,r,n,i){if(e[n++]=Oe.BSON_DATA_OID,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,"string"==typeof r.id)e.write(r.id,n,void 0,"binary");else{if(!r.id||!r.id.copy)throw new TypeError("object ["+JSON.stringify(r)+"] is not a valid ObjectId");r.id.copy(e,n,0,12)}return n+12}function d(e,t,r,n,i){e[n++]=Oe.BSON_DATA_BINARY,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=r.length;return e[n++]=255&o,e[n++]=o>>8&255,e[n++]=o>>16&255,e[n++]=o>>24&255,e[n++]=Oe.BSON_BINARY_SUBTYPE_DEFAULT,e.set(W.ensureBuffer(r),n),n+=o}function y(e,t,r,n,i,o,u,s,f,a){void 0===i&&(i=!1),void 0===o&&(o=0),void 0===u&&(u=!1),void 0===s&&(s=!0),void 0===f&&(f=!1),void 0===a&&(a=[]);for(var l=0;l<a.length;l++)if(a[l]===r)throw new Error("cyclic dependency detected");a.push(r),e[n++]=Array.isArray(r)?Oe.BSON_DATA_ARRAY:Oe.BSON_DATA_OBJECT,n+=f?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var c=A(e,r,i,n,o+1,u,s,a);return a.pop(),c}function g(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_DECIMAL128,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,r.bytes.copy(e,n,0,16),n+16}function _(e,t,r,n,i){e[n++]="Long"===r._bsontype?Oe.BSON_DATA_LONG:Oe.BSON_DATA_TIMESTAMP,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=r.getLowBits(),u=r.getHighBits();return e[n++]=255&o,e[n++]=o>>8&255,e[n++]=o>>16&255,e[n++]=o>>24&255,e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255,n}function b(e,t,r,n,i){return r=r.valueOf(),e[n++]=Oe.BSON_DATA_INT,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,e[n++]=255&r,e[n++]=r>>8&255,e[n++]=r>>16&255,e[n++]=r>>24&255,n}function B(e,t,r,n,i){return e[n++]=Oe.BSON_DATA_NUMBER,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0,ve.writeIEEE754(e,r.value,n,"little",52,8),n+=8}function O(e,t,r,n,i,o,u){e[n++]=Oe.BSON_DATA_CODE,n+=u?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var s=X.normalizedFunctionString(r),f=e.write(s,n+4,void 0,"utf8")+1;return e[n]=255&f,e[n+1]=f>>8&255,e[n+2]=f>>16&255,e[n+3]=f>>24&255,n=n+4+f-1,e[n++]=0,n}function m(e,t,r,n,i,o,u,s,f){if(void 0===i&&(i=!1),void 0===o&&(o=0),void 0===u&&(u=!1),void 0===s&&(s=!0),void 0===f&&(f=!1),r.scope&&"object"==typeof r.scope){e[n++]=Oe.BSON_DATA_CODE_W_SCOPE,n+=f?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var a=n,l="string"==typeof r.code?r.code:r.code.toString();n+=4;var c=e.write(l,n+4,void 0,"utf8")+1;e[n]=255&c,e[n+1]=c>>8&255,e[n+2]=c>>16&255,e[n+3]=c>>24&255,e[n+4+c-1]=0,n=n+c+4;var h=A(e,r.scope,i,n,o+1,u,s);n=h-1;var p=h-a;e[a++]=255&p,e[a++]=p>>8&255,e[a++]=p>>16&255,e[a++]=p>>24&255,e[n++]=0}else{e[n++]=Oe.BSON_DATA_CODE,n+=f?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;l=r.code.toString();var d=e.write(l,n+4,void 0,"utf8")+1;e[n]=255&d,e[n+1]=d>>8&255,e[n+2]=d>>16&255,e[n+3]=d>>24&255,n=n+4+d-1,e[n++]=0}return n}function S(e,t,r,n,i){e[n++]=Oe.BSON_DATA_BINARY,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=r.value(!0),u=r.position;return r.sub_type===Q.Binary.SUBTYPE_BYTE_ARRAY&&(u+=4),e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255,e[n++]=r.sub_type,r.sub_type===Q.Binary.SUBTYPE_BYTE_ARRAY&&(u-=4,e[n++]=255&u,e[n++]=u>>8&255,e[n++]=u>>16&255,e[n++]=u>>24&255),e.set(o,n),n+=r.position}function N(e,t,r,n,i){e[n++]=Oe.BSON_DATA_SYMBOL,n+=i?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var o=e.write(r.value,n+4,void 0,"utf8")+1;return e[n]=255&o,e[n+1]=o>>8&255,e[n+2]=o>>16&255,e[n+3]=o>>24&255,n=n+4+o-1,e[n++]=0,n}function v(e,t,r,n,i,o,u){e[n++]=Oe.BSON_DATA_OBJECT,n+=u?e.write(t,n,void 0,"ascii"):e.write(t,n,void 0,"utf8"),e[n++]=0;var s=n,f={$ref:r.collection||r.namespace,$id:r.oid};null!=r.db&&(f.$db=r.db);var a=A(e,f=Object.assign(f,r.fields),!1,n,i+1,o),l=a-s;return e[s++]=255&l,e[s++]=l>>8&255,e[s++]=l>>16&255,e[s++]=l>>24&255,a}function A(e,t,A,w,E,T,D,I){void 0===A&&(A=!1),void 0===w&&(w=0),void 0===E&&(E=0),void 0===T&&(T=!1),void 0===D&&(D=!0),void 0===I&&(I=[]),w=w||0,(I=I||[]).push(t);var x=w+4;if(Array.isArray(t))for(var U=0;U<t.length;U++){var R=""+U;if((Y=t[U])&&Y.toBSON){if("function"!=typeof Y.toBSON)throw new TypeError("toBSON is not a function");Y=Y.toBSON()}if("string"==typeof Y)x=o(e,R,Y,x,!0);else if("number"==typeof Y)x=u(e,R,Y,x,!0);else{if("bigint"==typeof Y)throw new TypeError("Unsupported type BigInt, please use Decimal128");if("boolean"==typeof Y)x=f(e,R,Y,x,!0);else if(Y instanceof Date||X.isDate(Y))x=a(e,R,Y,x,!0);else if(void 0===Y)x=s(e,R,0,x,!0);else if(null===Y)x=s(e,R,0,x,!0);else if("ObjectId"===Y._bsontype||"ObjectID"===Y._bsontype)x=p(e,R,Y,x,!0);else if(X.isBuffer(Y)||X.isUint8Array(Y))x=d(e,R,Y,x,!0);else if(Y instanceof RegExp||i(Y))x=l(e,R,Y,x,!0);else if("object"==typeof Y&&null==Y._bsontype)x=y(e,R,Y,x,A,E,T,D,!0,I);else if("object"==typeof Y&&be.isBSONType(Y)&&"Decimal128"===Y._bsontype)x=g(e,R,Y,x,!0);else if("Long"===Y._bsontype||"Timestamp"===Y._bsontype)x=_(e,R,Y,x,!0);else if("Double"===Y._bsontype)x=B(e,R,Y,x,!0);else if("function"==typeof Y&&T)x=O(e,R,Y,x,0,0,!0);else if("Code"===Y._bsontype)x=m(e,R,Y,x,A,E,T,D,!0);else if("Binary"===Y._bsontype)x=S(e,R,Y,x,!0);else if("Symbol"===Y._bsontype)x=N(e,R,Y,x,!0);else if("DBRef"===Y._bsontype)x=v(e,R,Y,x,E,T,!0);else if("BSONRegExp"===Y._bsontype)x=c(e,R,Y,x,!0);else if("Int32"===Y._bsontype)x=b(e,R,Y,x,!0);else if("MinKey"===Y._bsontype||"MaxKey"===Y._bsontype)x=h(e,R,Y,x,!0);else if(void 0!==Y._bsontype)throw new TypeError("Unrecognized or invalid _bsontype: "+Y._bsontype)}}else if(t instanceof Be.Map)for(var L=t.entries(),j=!1;!j;){var M=L.next();if(!(j=!!M.done)){R=M.value[0];var P=typeof(Y=M.value[1]);if("string"==typeof R&&!n.has(R)){if(null!=R.match(r))throw Error("key "+R+" must not contain null bytes");if(A){if("$"===R[0])throw Error("key "+R+" must not start with '$'");if(~R.indexOf("."))throw Error("key "+R+" must not contain '.'")}}if("string"===P)x=o(e,R,Y,x);else if("number"===P)x=u(e,R,Y,x);else{if("bigint"===P||X.isBigInt64Array(Y)||X.isBigUInt64Array(Y))throw new TypeError("Unsupported type BigInt, please use Decimal128");if("boolean"===P)x=f(e,R,Y,x);else if(Y instanceof Date||X.isDate(Y))x=a(e,R,Y,x);else if(null===Y||void 0===Y&&!1===D)x=s(e,R,0,x);else if("ObjectId"===Y._bsontype||"ObjectID"===Y._bsontype)x=p(e,R,Y,x);else if(X.isBuffer(Y)||X.isUint8Array(Y))x=d(e,R,Y,x);else if(Y instanceof RegExp||i(Y))x=l(e,R,Y,x);else if("object"===P&&null==Y._bsontype)x=y(e,R,Y,x,A,E,T,D,!1,I);else if("object"===P&&"Decimal128"===Y._bsontype)x=g(e,R,Y,x);else if("Long"===Y._bsontype||"Timestamp"===Y._bsontype)x=_(e,R,Y,x);else if("Double"===Y._bsontype)x=B(e,R,Y,x);else if("Code"===Y._bsontype)x=m(e,R,Y,x,A,E,T,D);else if("function"==typeof Y&&T)x=O(e,R,Y,x,0,0,T);else if("Binary"===Y._bsontype)x=S(e,R,Y,x);else if("Symbol"===Y._bsontype)x=N(e,R,Y,x);else if("DBRef"===Y._bsontype)x=v(e,R,Y,x,E,T);else if("BSONRegExp"===Y._bsontype)x=c(e,R,Y,x);else if("Int32"===Y._bsontype)x=b(e,R,Y,x);else if("MinKey"===Y._bsontype||"MaxKey"===Y._bsontype)x=h(e,R,Y,x);else if(void 0!==Y._bsontype)throw new TypeError("Unrecognized or invalid _bsontype: "+Y._bsontype)}}}else{if(t.toBSON){if("function"!=typeof t.toBSON)throw new TypeError("toBSON is not a function");if(null!=(t=t.toBSON())&&"object"!=typeof t)throw new TypeError("toBSON function did not return an object")}for(var R in t){var Y;if((Y=t[R])&&Y.toBSON){if("function"!=typeof Y.toBSON)throw new TypeError("toBSON is not a function");Y=Y.toBSON()}P=typeof Y;if("string"==typeof R&&!n.has(R)){if(null!=R.match(r))throw Error("key "+R+" must not contain null bytes");if(A){if("$"===R[0])throw Error("key "+R+" must not start with '$'");if(~R.indexOf("."))throw Error("key "+R+" must not contain '.'")}}if("string"===P)x=o(e,R,Y,x);else if("number"===P)x=u(e,R,Y,x);else{if("bigint"===P)throw new TypeError("Unsupported type BigInt, please use Decimal128");if("boolean"===P)x=f(e,R,Y,x);else if(Y instanceof Date||X.isDate(Y))x=a(e,R,Y,x);else if(void 0===Y)!1===D&&(x=s(e,R,0,x));else if(null===Y)x=s(e,R,0,x);else if("ObjectId"===Y._bsontype||"ObjectID"===Y._bsontype)x=p(e,R,Y,x);else if(X.isBuffer(Y)||X.isUint8Array(Y))x=d(e,R,Y,x);else if(Y instanceof RegExp||i(Y))x=l(e,R,Y,x);else if("object"===P&&null==Y._bsontype)x=y(e,R,Y,x,A,E,T,D,!1,I);else if("object"===P&&"Decimal128"===Y._bsontype)x=g(e,R,Y,x);else if("Long"===Y._bsontype||"Timestamp"===Y._bsontype)x=_(e,R,Y,x);else if("Double"===Y._bsontype)x=B(e,R,Y,x);else if("Code"===Y._bsontype)x=m(e,R,Y,x,A,E,T,D);else if("function"==typeof Y&&T)x=O(e,R,Y,x,0,0,T);else if("Binary"===Y._bsontype)x=S(e,R,Y,x);else if("Symbol"===Y._bsontype)x=N(e,R,Y,x);else if("DBRef"===Y._bsontype)x=v(e,R,Y,x,E,T);else if("BSONRegExp"===Y._bsontype)x=c(e,R,Y,x);else if("Int32"===Y._bsontype)x=b(e,R,Y,x);else if("MinKey"===Y._bsontype||"MaxKey"===Y._bsontype)x=h(e,R,Y,x);else if(void 0!==Y._bsontype)throw new TypeError("Unrecognized or invalid _bsontype: "+Y._bsontype)}}}I.pop(),e[x++]=0;var C=x-w;return e[w++]=255&C,e[w++]=C>>8&255,e[w++]=C>>16&255,e[w++]=C>>24&255,x}t.serializeInto=A}));r(Ae),Ae.serializeInto;var we=n((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.ObjectID=t.Decimal128=t.BSONRegExp=t.MaxKey=t.MinKey=t.Int32=t.Double=t.Timestamp=t.Long=t.UUID=t.ObjectId=t.Binary=t.DBRef=t.BSONSymbol=t.Map=t.Code=t.LongWithoutOverridesClass=t.EJSON=t.BSON_INT64_MIN=t.BSON_INT64_MAX=t.BSON_INT32_MIN=t.BSON_INT32_MAX=t.BSON_DATA_UNDEFINED=t.BSON_DATA_TIMESTAMP=t.BSON_DATA_SYMBOL=t.BSON_DATA_STRING=t.BSON_DATA_REGEXP=t.BSON_DATA_OID=t.BSON_DATA_OBJECT=t.BSON_DATA_NUMBER=t.BSON_DATA_NULL=t.BSON_DATA_MIN_KEY=t.BSON_DATA_MAX_KEY=t.BSON_DATA_LONG=t.BSON_DATA_INT=t.BSON_DATA_DECIMAL128=t.BSON_DATA_DBPOINTER=t.BSON_DATA_DATE=t.BSON_DATA_CODE_W_SCOPE=t.BSON_DATA_CODE=t.BSON_DATA_BOOLEAN=t.BSON_DATA_BINARY=t.BSON_DATA_ARRAY=t.BSON_BINARY_SUBTYPE_UUID_NEW=t.BSON_BINARY_SUBTYPE_UUID=t.BSON_BINARY_SUBTYPE_USER_DEFINED=t.BSON_BINARY_SUBTYPE_MD5=t.BSON_BINARY_SUBTYPE_FUNCTION=t.BSON_BINARY_SUBTYPE_DEFAULT=t.BSON_BINARY_SUBTYPE_BYTE_ARRAY=void 0,t.deserializeStream=t.calculateObjectSize=t.deserialize=t.serializeWithBufferAndIndex=t.serialize=t.setInternalBufferSize=void 0,Object.defineProperty(t,"Binary",{enumerable:!0,get:function(){return Q.Binary}}),Object.defineProperty(t,"Code",{enumerable:!0,get:function(){return ee.Code}}),Object.defineProperty(t,"DBRef",{enumerable:!0,get:function(){return te.DBRef}}),Object.defineProperty(t,"Decimal128",{enumerable:!0,get:function(){return ne.Decimal128}}),Object.defineProperty(t,"Double",{enumerable:!0,get:function(){return ie.Double}}),Object.defineProperty(t,"Int32",{enumerable:!0,get:function(){return oe.Int32}}),Object.defineProperty(t,"Long",{enumerable:!0,get:function(){return re.Long}}),Object.defineProperty(t,"Map",{enumerable:!0,get:function(){return Be.Map}}),Object.defineProperty(t,"MaxKey",{enumerable:!0,get:function(){return ue.MaxKey}}),Object.defineProperty(t,"MinKey",{enumerable:!0,get:function(){return se.MinKey}}),Object.defineProperty(t,"ObjectId",{enumerable:!0,get:function(){return fe.ObjectId}}),Object.defineProperty(t,"ObjectID",{enumerable:!0,get:function(){return fe.ObjectId}}),Object.defineProperty(t,"BSONRegExp",{enumerable:!0,get:function(){return ae.BSONRegExp}}),Object.defineProperty(t,"BSONSymbol",{enumerable:!0,get:function(){return le.BSONSymbol}}),Object.defineProperty(t,"Timestamp",{enumerable:!0,get:function(){return _e.Timestamp}}),Object.defineProperty(t,"UUID",{enumerable:!0,get:function(){return Z.UUID}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_BYTE_ARRAY",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_BYTE_ARRAY}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_DEFAULT",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_DEFAULT}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_FUNCTION",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_FUNCTION}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_MD5",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_MD5}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_USER_DEFINED",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_USER_DEFINED}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_UUID",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_UUID}}),Object.defineProperty(t,"BSON_BINARY_SUBTYPE_UUID_NEW",{enumerable:!0,get:function(){return Oe.BSON_BINARY_SUBTYPE_UUID_NEW}}),Object.defineProperty(t,"BSON_DATA_ARRAY",{enumerable:!0,get:function(){return Oe.BSON_DATA_ARRAY}}),Object.defineProperty(t,"BSON_DATA_BINARY",{enumerable:!0,get:function(){return Oe.BSON_DATA_BINARY}}),Object.defineProperty(t,"BSON_DATA_BOOLEAN",{enumerable:!0,get:function(){return Oe.BSON_DATA_BOOLEAN}}),Object.defineProperty(t,"BSON_DATA_CODE",{enumerable:!0,get:function(){return Oe.BSON_DATA_CODE}}),Object.defineProperty(t,"BSON_DATA_CODE_W_SCOPE",{enumerable:!0,get:function(){return Oe.BSON_DATA_CODE_W_SCOPE}}),Object.defineProperty(t,"BSON_DATA_DATE",{enumerable:!0,get:function(){return Oe.BSON_DATA_DATE}}),Object.defineProperty(t,"BSON_DATA_DBPOINTER",{enumerable:!0,get:function(){return Oe.BSON_DATA_DBPOINTER}}),Object.defineProperty(t,"BSON_DATA_DECIMAL128",{enumerable:!0,get:function(){return Oe.BSON_DATA_DECIMAL128}}),Object.defineProperty(t,"BSON_DATA_INT",{enumerable:!0,get:function(){return Oe.BSON_DATA_INT}}),Object.defineProperty(t,"BSON_DATA_LONG",{enumerable:!0,get:function(){return Oe.BSON_DATA_LONG}}),Object.defineProperty(t,"BSON_DATA_MAX_KEY",{enumerable:!0,get:function(){return Oe.BSON_DATA_MAX_KEY}}),Object.defineProperty(t,"BSON_DATA_MIN_KEY",{enumerable:!0,get:function(){return Oe.BSON_DATA_MIN_KEY}}),Object.defineProperty(t,"BSON_DATA_NULL",{enumerable:!0,get:function(){return Oe.BSON_DATA_NULL}}),Object.defineProperty(t,"BSON_DATA_NUMBER",{enumerable:!0,get:function(){return Oe.BSON_DATA_NUMBER}}),Object.defineProperty(t,"BSON_DATA_OBJECT",{enumerable:!0,get:function(){return Oe.BSON_DATA_OBJECT}}),Object.defineProperty(t,"BSON_DATA_OID",{enumerable:!0,get:function(){return Oe.BSON_DATA_OID}}),Object.defineProperty(t,"BSON_DATA_REGEXP",{enumerable:!0,get:function(){return Oe.BSON_DATA_REGEXP}}),Object.defineProperty(t,"BSON_DATA_STRING",{enumerable:!0,get:function(){return Oe.BSON_DATA_STRING}}),Object.defineProperty(t,"BSON_DATA_SYMBOL",{enumerable:!0,get:function(){return Oe.BSON_DATA_SYMBOL}}),Object.defineProperty(t,"BSON_DATA_TIMESTAMP",{enumerable:!0,get:function(){return Oe.BSON_DATA_TIMESTAMP}}),Object.defineProperty(t,"BSON_DATA_UNDEFINED",{enumerable:!0,get:function(){return Oe.BSON_DATA_UNDEFINED}}),Object.defineProperty(t,"BSON_INT32_MAX",{enumerable:!0,get:function(){return Oe.BSON_INT32_MAX}}),Object.defineProperty(t,"BSON_INT32_MIN",{enumerable:!0,get:function(){return Oe.BSON_INT32_MIN}}),Object.defineProperty(t,"BSON_INT64_MAX",{enumerable:!0,get:function(){return Oe.BSON_INT64_MAX}}),Object.defineProperty(t,"BSON_INT64_MIN",{enumerable:!0,get:function(){return Oe.BSON_INT64_MIN}});var r=be;Object.defineProperty(t,"EJSON",{enumerable:!0,get:function(){return r.EJSON}});var n=_e;Object.defineProperty(t,"LongWithoutOverridesClass",{enumerable:!0,get:function(){return n.LongWithoutOverridesClass}});var i=17825792,o=b.Buffer.alloc(i);function u(e){o.length<e&&(o=b.Buffer.alloc(e))}function s(e,t){void 0===t&&(t={});var r="boolean"==typeof t.checkKeys&&t.checkKeys,n="boolean"==typeof t.serializeFunctions&&t.serializeFunctions,u="boolean"!=typeof t.ignoreUndefined||t.ignoreUndefined,s="number"==typeof t.minInternalBufferSize?t.minInternalBufferSize:i;o.length<s&&(o=b.Buffer.alloc(s));var f=Ae.serializeInto(o,e,r,0,0,n,u,[]),a=b.Buffer.alloc(f);return o.copy(a,0,0,a.length),a}function f(e,t,r){void 0===r&&(r={});var n="boolean"==typeof r.checkKeys&&r.checkKeys,i="boolean"==typeof r.serializeFunctions&&r.serializeFunctions,u="boolean"!=typeof r.ignoreUndefined||r.ignoreUndefined,s="number"==typeof r.index?r.index:0,f=Ae.serializeInto(o,e,n,0,0,i,u);return o.copy(t,s,0,f),s+f-1}function a(e,t){return void 0===t&&(t={}),Ne.deserialize(W.ensureBuffer(e),t)}function l(e,t){void 0===t&&(t={});var r="boolean"==typeof(t=t||{}).serializeFunctions&&t.serializeFunctions,n="boolean"!=typeof t.ignoreUndefined||t.ignoreUndefined;return me.calculateObjectSize(e,r,n)}function c(e,t,r,n,i,o){for(var u=Object.assign({allowObjectSmallerThanBufferSize:!0,index:0},o),s=W.ensureBuffer(e),f=t,a=0;a<r;a++){var l=s[f]|s[f+1]<<8|s[f+2]<<16|s[f+3]<<24;u.index=f,n[i+a]=Ne.deserialize(s,u),f+=l}return f}t.setInternalBufferSize=u,t.serialize=s,t.serializeWithBufferAndIndex=f,t.deserialize=a,t.calculateObjectSize=l,t.deserializeStream=c;var h={Binary:Q.Binary,Code:ee.Code,DBRef:te.DBRef,Decimal128:ne.Decimal128,Double:ie.Double,Int32:oe.Int32,Long:re.Long,UUID:Z.UUID,Map:Be.Map,MaxKey:ue.MaxKey,MinKey:se.MinKey,ObjectId:fe.ObjectId,ObjectID:fe.ObjectId,BSONRegExp:ae.BSONRegExp,BSONSymbol:le.BSONSymbol,Timestamp:_e.Timestamp,EJSON:be.EJSON,setInternalBufferSize:u,serialize:s,serializeWithBufferAndIndex:f,deserialize:a,calculateObjectSize:l,deserializeStream:c};t.default=h})),Ee=r(we),Te=we.ObjectID,De=we.Decimal128,Ie=we.BSONRegExp,xe=we.MaxKey,Ue=we.MinKey,Re=we.Int32,Le=we.Double,je=we.Timestamp,Me=we.Long,Pe=we.UUID,Ye=we.ObjectId,Ce=we.Binary,ze=we.DBRef,$e=we.BSONSymbol,ke=we.Map,Je=we.Code,qe=we.LongWithoutOverridesClass,Fe=we.EJSON,Ve=we.BSON_INT64_MIN,Ke=we.BSON_INT64_MAX,He=we.BSON_INT32_MIN,Xe=we.BSON_INT32_MAX,We=we.BSON_DATA_UNDEFINED,Ge=we.BSON_DATA_TIMESTAMP,Ze=we.BSON_DATA_SYMBOL,Qe=we.BSON_DATA_STRING,et=we.BSON_DATA_REGEXP,tt=we.BSON_DATA_OID,rt=we.BSON_DATA_OBJECT,nt=we.BSON_DATA_NUMBER,it=we.BSON_DATA_NULL,ot=we.BSON_DATA_MIN_KEY,ut=we.BSON_DATA_MAX_KEY,st=we.BSON_DATA_LONG,ft=we.BSON_DATA_INT,at=we.BSON_DATA_DECIMAL128,lt=we.BSON_DATA_DBPOINTER,ct=we.BSON_DATA_DATE,ht=we.BSON_DATA_CODE_W_SCOPE,pt=we.BSON_DATA_CODE,dt=we.BSON_DATA_BOOLEAN,yt=we.BSON_DATA_BINARY,gt=we.BSON_DATA_ARRAY,_t=we.BSON_BINARY_SUBTYPE_UUID_NEW,bt=we.BSON_BINARY_SUBTYPE_UUID,Bt=we.BSON_BINARY_SUBTYPE_USER_DEFINED,Ot=we.BSON_BINARY_SUBTYPE_MD5,mt=we.BSON_BINARY_SUBTYPE_FUNCTION,St=we.BSON_BINARY_SUBTYPE_DEFAULT,Nt=we.BSON_BINARY_SUBTYPE_BYTE_ARRAY,vt=we.deserializeStream,At=we.calculateObjectSize,wt=we.deserialize,Et=we.serializeWithBufferAndIndex,Tt=we.serialize,Dt=we.setInternalBufferSize;return e.BSONRegExp=Ie,e.BSONSymbol=$e,e.BSON_BINARY_SUBTYPE_BYTE_ARRAY=Nt,e.BSON_BINARY_SUBTYPE_DEFAULT=St,e.BSON_BINARY_SUBTYPE_FUNCTION=mt,e.BSON_BINARY_SUBTYPE_MD5=Ot,e.BSON_BINARY_SUBTYPE_USER_DEFINED=Bt,e.BSON_BINARY_SUBTYPE_UUID=bt,e.BSON_BINARY_SUBTYPE_UUID_NEW=_t,e.BSON_DATA_ARRAY=gt,e.BSON_DATA_BINARY=yt,e.BSON_DATA_BOOLEAN=dt,e.BSON_DATA_CODE=pt,e.BSON_DATA_CODE_W_SCOPE=ht,e.BSON_DATA_DATE=ct,e.BSON_DATA_DBPOINTER=lt,e.BSON_DATA_DECIMAL128=at,e.BSON_DATA_INT=ft,e.BSON_DATA_LONG=st,e.BSON_DATA_MAX_KEY=ut,e.BSON_DATA_MIN_KEY=ot,e.BSON_DATA_NULL=it,e.BSON_DATA_NUMBER=nt,e.BSON_DATA_OBJECT=rt,e.BSON_DATA_OID=tt,e.BSON_DATA_REGEXP=et,e.BSON_DATA_STRING=Qe,e.BSON_DATA_SYMBOL=Ze,e.BSON_DATA_TIMESTAMP=Ge,e.BSON_DATA_UNDEFINED=We,e.BSON_INT32_MAX=Xe,e.BSON_INT32_MIN=He,e.BSON_INT64_MAX=Ke,e.BSON_INT64_MIN=Ve,e.Binary=Ce,e.Code=Je,e.DBRef=ze,e.Decimal128=De,e.Double=Le,e.EJSON=Fe,e.Int32=Re,e.Long=Me,e.LongWithoutOverridesClass=qe,e.Map=ke,e.MaxKey=xe,e.MinKey=Ue,e.ObjectID=Te,e.ObjectId=Ye,e.Timestamp=je,e.UUID=Pe,e.calculateObjectSize=At,e.default=Ee,e.deserialize=wt,e.deserializeStream=vt,e.serialize=Tt,e.serializeWithBufferAndIndex=Et,e.setInternalBufferSize=Dt,e.BufferPolyfill=b.Buffer,Object.defineProperty(e,"__esModule",{value:!0}),e}({});(()=>{const e=!("undefined"==typeof window);if(e&&window.HotPocket)return;if(!e){const e=require("util");TextEncoder=e.TextEncoder,TextDecoder=e.TextDecoder}const t="0.6.",r=237,n=new TextEncoder,i=new TextDecoder;let o=null,u=null,s=null,f=null,a=0;const l={json:"json",bson:"bson"};Object.freeze(l);const c={disconnect:"disconnect",contractOutput:"contract_output",connectionChange:"connection_change",unlChange:"unl_change",ledgerEvent:"ledger_event",healthEvent:"health_event"};Object.freeze(c);const h={unlChange:"unl_change",ledgerEvent:"ledger_event",healthEvent:"health_event"};Object.freeze(h);const p=async(e=null)=>{if(await S(),e){const t=b(e);if(t[0]!=r)throw"Invaid key type. 'ed' expected.";const n=new Uint8Array(33);return n[0]=r,n.set(t.slice(33),1),{privateKey:t,publicKey:n}}{const e=u.crypto_sign_keypair(),t=new Uint8Array(65);t[0]=r,t.set(e.privateKey,1);const n=new Uint8Array(33);return n[0]=r,n.set(e.publicKey,1),{privateKey:t,publicKey:n}}},d=async(t,r,n)=>{const i={contractId:null,contractVersion:null,trustedServerKeys:null,protocol:l.json,requiredConnectionCount:1,connectionTimeoutMs:5e3},u=n?{...i,...n}:i;if(!r)throw"clientKeys not specified.";if(""==u.contractId)throw"contractId not specified. Specify null to bypass contract id validation.";if(""==u.contractVersion)throw"contractVersion not specified. Specify null to bypass contract version validation.";if(!u.protocol||u.protocol!=l.json&&u.protocol!=l.bson)throw"Valid protocol not specified.";if(!u.requiredConnectionCount||0==u.requiredConnectionCount)throw"requiredConnectionCount must be greater than 0.";if(!u.connectionTimeoutMs||0==u.connectionTimeoutMs)throw"Connection timeout must be greater than 0.";await S(),await async function(){if(f)return;if(e&&window.blake3)f=window.blake3;else{if(e&&!window.blake3)return v||(v=new Promise((e=>{"undefined"==typeof BigUint64Array&&(BigUint64Array=function(e){}),"undefined"==typeof BigInt&&(BigInt=function(e){});import("https://cdn.jsdelivr.net/npm/blake3@2.1.4/browser-async.js").then((t=>{t.default().then((t=>{f=t,e()})).catch((t=>{console.error(t),e()}))})).catch((t=>{console.error(t),e()}))}))),void await v;e||(f=require("blake3"))}if(!f)throw"Blake3 reference not found."}(),function(){if(o)return;e&&window.WebSocket?o=window.WebSocket:e||(o=require("ws"));if(!o)throw"WebSocket reference not found."}(),u.protocol==l.bson&&await async function(){if(s)return;e?(N||(N=new Promise((e=>{setTimeout((()=>{s=window.BSON,window.Buffer=window.BSON.BufferPolyfill,e()}),0)}))),await N):e||(s=require("bson"));if(!s)throw"BSON reference not found."}();const a={};if(t&&t.forEach((e=>{const t=e.trim();t.length>0&&(a[t]=!0)})),0==Object.keys(a).length)throw"servers not specified.";if(u.requiredConnectionCount>Object.keys(a).length)throw"requiredConnectionCount is higher than no. of servers.";let c={};return u.trustedServerKeys&&u.trustedServerKeys.sort().forEach((e=>{const t=e.trim();t.length>0&&(c[t]=!0)})),0==Object.keys(c).length&&(c=null),new y(u.contractId,u.contractVersion,r,a,c,u.protocol,u.requiredConnectionCount,u.connectionTimeoutMs)};function y(e,t,r,n,i,o,u,s){let f=new m;const a=()=>i,l=e=>i=e,p=Object.keys(n).map((e=>({server:e,connection:null,lastActivity:0}))),d={};d[h.unlChange]=!!i,d[h.ledgerEvent]=!1,d[h.healthEvent]=!1;let y=0,_=null,b=0,B=null;const O=()=>{if(2==y)return;if(B=setTimeout((()=>{O()}),1e3),p.filter((e=>e.connection&&e.connection.isConnected())).length==u)return b=0,_&&_(!0),_=null,void(y=1);if(0==b)b=(new Date).getTime();else if((new Date).getTime()-b>s)return w(1,"Missing-connections timeout reached."),void this.close().then((()=>{_?(_(!1),_=null):f&&f.emit(c.disconnect)}));let n=p.filter((e=>e.connection)).length;if(n==u)return;const i=p.filter((e=>!e.connection&&(new Date).getTime()-e.lastActivity>3e3));for(i.sort(((e,t)=>e.lastActivity-t.lastActivity));n<u&&i.length>0;){const u=i.shift();u.connection=new g(e,t,r,u.server,a,l,o,s,f),u.lastActivity=(new Date).getTime(),u.connection.connect().then((e=>{if(e){f&&f.emit(c.connectionChange,u.server,"add");for(const[e,t]of Object.entries(d))t&&u.connection.subscribe(e)}else u.connection=null})),u.connection.onClose=()=>{u.connection=null,f&&f.emit(c.connectionChange,u.server,"remove")},n++}},S=async(e,t)=>{if(2==y)return await Promise.resolve();null==t&&(t=u);const r=p.filter((e=>e.connection&&e.connection.isConnected())).map((e=>e.connection)).slice(0,t),n=await Promise.all(r.map((t=>e(t))));return 1==t&&n.length<=1?0==n.length?null:n[0]:n},N=(e,t)=>{if(2==y)return Promise.resolve();null==t&&(t=u);const r=p.filter((e=>e.connection&&e.connection.isConnected())).map((e=>e.connection)).slice(0,t);return Promise.all(r.map((t=>e(t))))};this.connect=()=>{if(!(y>0))return b=(new Date).getTime(),O(),new Promise((e=>{_=e}))},this.close=async()=>{2!=y&&(y=2,B&&(clearTimeout(B),B=null),f.clear(c.connectionChange),f.clear(c.contractOutput),await Promise.all(p.filter((e=>e.connection)).map((e=>e.connection.close()))),p.forEach((e=>e.connection=null)))},this.on=(e,t)=>{f.on(e,t)},this.clear=e=>{f.clear(e)},this.submitContractInput=(e,t=null,r=null,n=!0)=>S((i=>i.submitContractInput(e,t,r,n)),1),this.submitContractReadRequest=(e,t=null,r=15e3)=>(t=t?t.toString():(new Date).getTime().toString(),S((n=>n.submitContractReadRequest(e,t,r)))),this.getStatus=()=>S((e=>e.getStatus())),this.getLcl=()=>S((e=>e.getLcl())),this.subscribe=e=>(d[e]=!0,N((t=>t.subscribe(e)))),this.unsubscribe=e=>(d[e]=!1,N((t=>t.unsubscribe(e)))),this.getLedgerBySeqNo=(e,t,r)=>S((n=>n.getLedgerBySeqNo(e,t,r)))}function g(r,s,a,h,p,d,y,g,m){const S=new _(a,l.json);let N=0,v=null,A=null,E=null,T=!1,D=null,I=null,x=null,U=null,R=[],L=[],j={},M={},P={};const Y=e=>{const t=f.createHash();return e.forEach((e=>t.update(e))),new Uint8Array(t.digest())},C=(e,t)=>{const r=[];let n=!1;for(let i of e)if(Array.isArray(i)){const e=C(i,n?null:t);1==e[0]&&(n=!0),r.push(e[1])}else{if(!t&&!i)return w(1,"Self hash encountered more than once in output hash tree."),[!1,null];i||(n=!0);const e=i?S.binaryDecode(i):t;r.push(e)}return[n,Y(r)]},z=(e,t)=>{const r=Y([a.publicKey,...S.spreadArrayField(e.outputs)]);if(!function(e,t){if(e.length!=t.length)return!1;for(let r=0;r<e.length;r++)if(e[r]!==t[r])return!1;return!0}(r,S.binaryDecode(e.output_hash)))return w(1,"Contract output hash mismatch."),!1;const n=C(e.hash_tree,r);if(1==n[0]){return((e,t,r)=>{const n=Object.keys(r).length;if(0==n)return w(1,"Cannot validate outputs with empty unl."),!1;const i={};for(const n of t){const t=S.stringifyValue(n[0]),o=S.binaryDecode(n[0]),s=S.binaryDecode(n[1]);!i[t]&&r[t]&&u.crypto_sign_verify_detached(s,e,o.slice(1))&&(i[t]=!0)}return Object.keys(i).length/n>=.8})(n[1],e.unl_sig,t)}return!1},$=(e,t)=>{e=e.map((e=>S.deserializeValue(e))).sort();let r=p();if(r&&r[T]){r={};e.map((e=>S.stringifyValue(e))).forEach((e=>r[e]=!0)),d(r),w(0,"Updated trusted keys.")}t||m&&m.emit(c.unlChange,e)},k=async n=>{const o=e&&(N<2||y==l.json)?i.decode(n.data):n.data;let f;try{f=S.deserializeMessage(o)}catch(e){return w(1,e),w(0,"Exception deserializing: "),w(0,o||n),void(N<2&&this.close())}let a=!1;N<2?a=(e=>{if(0==N&&"user_challenge"==e.type&&e.hp_version&&e.contract_id){if(!e.hp_version.startsWith(t))return w(1,`Incompatible HotPocket server version. Expected:0.6.* Got:${e.hp_version}`),!1;if(!e.contract_id)return w(1,"Server did not specify contract id."),!1;if(r&&e.contract_id!=r)return w(1,`Contract id mismatch. Expected:${r} Got:${e.contract_id}`),!1;if(!e.contract_version)return w(1,"Server did not specify contract version."),!1;if(s&&e.contract_version!=s)return w(1,`Contract version mismatch. Expected:${s} Got:${e.contract_version}`),!1;A=e.contract_id,E=e.contract_version,v=B(u.randombytes_buf(16));const n=S.createUserChallengeResponse(e.challenge,v,y);return V(S.serializeObject(n)),N=1,!0}if(1==N&&v&&"server_challenge_response"==e.type&&e.sig&&e.pubkey){const t=p();if(t&&!t[e.pubkey])return w(1,`${h} is not among the trusted servers.`),!1;const r=v+A+E,n=e.pubkey.substring(2);return u.crypto_sign_verify_detached(b(e.sig),r,b(n))?(clearTimeout(I),I=null,v=null,T=e.pubkey,N=2,$(e.unl,!0),S.useProtocol(y),x&&x(!0),w(0,`Connected to ${h}`),!0):(w(1,`${h} challenge response verification failed.`),!1)}return w(1,`${h} invalid message during handshake. Connection status:${N}`),w(0,e),!1})(f):2==N&&(a=(e=>{if("contract_read_response"==e.type){const t=e.reply_for,r=M[t];r&&(clearTimeout(r.timer),r.resolver(S.deserializeValue(e.content)),delete M[t])}else if("contract_input_status"==e.type){const t=S.stringifyValue(e.input_hash),r=j[t];if(r){const n={status:e.status};"accepted"==e.status?(n.ledgerSeqNo=e.ledger_seq_no,n.ledgerHash=S.deserializeValue(e.ledger_hash)):n.reason=e.reason,r(n),delete j[t]}}else if("contract_output"==e.type){if(m){const t=p();!t||z(e,t)?m.emit(c.contractOutput,{ledgerSeqNo:e.ledger_seq_no,ledgerHash:S.deserializeValue(e.ledger_hash),outputHash:S.deserializeValue(e.output_hash),outputs:e.outputs.map((e=>S.deserializeValue(e)))}):w(1,"Output validation failed.")}}else if("stat_response"==e.type)R.forEach((t=>{t({hpVersion:e.hp_version,ledgerSeqNo:e.ledger_seq_no,ledgerHash:S.deserializeValue(e.ledger_hash),voteStatus:e.vote_status,roundTime:e.round_time,contractExecutionEnabled:e.contract_execution_enabled,readRequestsEnabled:e.read_requests_enabled,isFullHistoryNode:e.is_full_history_node,weaklyConnected:e.weakly_connected,currentUnl:e.current_unl.map((e=>S.deserializeValue(e))),peers:e.peers})})),R=[];else if("lcl_response"==e.type)L.forEach((t=>{t({ledgerSeqNo:e.ledger_seq_no,ledgerHash:S.deserializeValue(e.ledger_hash)})})),L=[];else if("unl_change"==e.type)$(e.unl,!1);else if("ledger_event"==e.type){const t={event:e.event};"ledger_created"==t.event?t.ledger=S.deserializeLedger(e.ledger):"vote_status"==t.event&&(t.voteStatus=e.vote_status),m.emit(c.ledgerEvent,t)}else if("health_event"==e.type){const t=S.deserializeHealthEvent(e);m.emit(c.healthEvent,t)}else{if("ledger_query_result"!=e.type)return w(1,"Received unrecognized contract message: type:"+e.type),!1;{const t=P[e.reply_for];if(t){const r=e.results.map((e=>{const t=S.deserializeLedger(e);return e.inputs&&(t.inputs=e.inputs.map((e=>({pubkey:S.deserializeValue(e.pubkey),hash:S.deserializeValue(e.hash),nonce:e.nonce,blob:S.deserializeValue(e.blob)})))),e.outputs&&(t.outputs=e.outputs.map((e=>({pubkey:S.deserializeValue(e.pubkey),hash:S.deserializeValue(e.hash),blobs:e.blobs.map((e=>S.deserializeValue(e)))})))),t}));"seq_no"==t.type&&t.resolver(r.length>0?r[0]:null),delete P[e.reply_for]}}}return!0})(f)),a||N<2&&this.close()},J=()=>{D.addEventListener("message",k),D.addEventListener("close",q),I=setTimeout((()=>{this.close(),I=null}),g)},q=()=>{w(0,U?"Closing connection to "+h:"Disconnected from "+h),m=null,I&&(clearTimeout(I),I=null),x&&x(!1),x=null,R.forEach((e=>e(null))),R=[],Object.values(j).forEach((e=>e({status:"failed",reason:"connection_error"}))),j={},Object.values(M).forEach((e=>{clearTimeout(e.timer),e.resolver(null)})),M={},this.onClose&&this.onClose(),U&&U()},F=e=>{x&&x(!1)},V=e=>{O(e)?D.send(n.encode(e)):D.send(e)};this.isConnected=()=>2==N,this.connect=()=>(w(0,"Connecting to "+h),new Promise((t=>{D=e?new o(h):new o(h,{rejectUnauthorized:!1}),e&&(D.binaryType="arraybuffer"),x=t,D.addEventListener("error",F),D.addEventListener("open",J)}))),this.close=()=>D.readyState==o.OPEN?new Promise((e=>{U=e,D.close()})):(D.close(),Promise.resolve()),this.getStatus=()=>{if(2!=N)return Promise.resolve(null);const e=new Promise((e=>{R.push(e)}));if(1==R.length){const e=S.createStatusRequest();V(S.serializeObject(e))}return e},this.getLcl=()=>{if(2!=N)return Promise.resolve(null);const e=new Promise((e=>{L.push(e)}));if(1==L.length){const e=S.createLclRequest();V(S.serializeObject(e))}return e},this.submitContractInput=async(e,t,r,n)=>{if(2!=N)throw"Connection error.";if(0==r)throw"Max ledger seq no. or offset cannot be 0.";if(!n&&!r)throw"Max ledger seq. no not specified.";if(t&&(!Number.isInteger(t)||t<=0))throw"Input nonce must be a positive integer.";if(t||(t=(new Date).getTime()),n){r||(r=10);const e=await this.getLcl();if(!e)throw"Error retrieving last closed ledger.";r+=e.ledgerSeqNo}const i=S.createContractInputComponents(e,t,r),o=S.stringifyValue(i.hash),u=new Promise((e=>{j[o]=e})),s=S.createContractInputMessage(i.container,i.sig);return V(S.serializeObject(s)),{hash:S.binaryEncode(i.hash),submissionStatus:u}},this.submitContractReadRequest=(e,t,r)=>2!=N?Promise.resolve():new Promise((n=>{const i=setTimeout((()=>{n(null),delete M[t]}),r);M[t]={resolver:n,timer:i};const o=S.createReadRequest(e,t);V(S.serializeObject(o))})),this.subscribe=e=>{if(2!=N)return Promise.resolve();const t=S.createSubscriptionRequest(e,!0);return V(S.serializeObject(t)),Promise.resolve()},this.unsubscribe=e=>{if(2!=N)return Promise.resolve();const t=S.createSubscriptionRequest(e,!1);return V(S.serializeObject(t)),Promise.resolve()},this.getLedgerBySeqNo=(e,t,r)=>{if(2!=N)return Promise.resolve(null);const n={seq_no:S.serializeNumber(e)},i=S.createLedgerQuery("seq_no",n,t,r),o=new Promise((e=>{P[i.id]={type:"seq_no",resolver:e}}));return V(S.serializeObject(i)),o}}function _(e,t){this.useProtocol=e=>{t=e},this.binaryEncode=e=>t==l.json?B(e):Buffer.isBuffer(e)?e:Buffer.from(e),this.binaryDecode=e=>t==l.json?b(e):new Uint8Array(e.buffer),this.serializeObject=e=>t==l.json?JSON.stringify(e):s.serialize(e),this.deserializeMessage=e=>t==l.json?JSON.parse(e):s.deserialize(e),this.serializeInput=e=>t==l.json?O(e)?e:e.toString():Buffer.isBuffer(e)?e:Buffer.from(e),this.deserializeValue=e=>t==l.json?e:e.buffer,this.serializeNumber=e=>t==l.json?e:s.Long.fromNumber(e),this.stringifyValue=e=>{if(O(e))return e;if(e instanceof Uint8Array)return B(e);if(e.buffer)return B(new Uint8Array(e.buffer));throw"Cannot stringify signature."},this.spreadArrayField=e=>t==l.json?e:e.map((e=>e.buffer)),this.createUserChallengeResponse=(t,r,n)=>{const i=u.crypto_sign_detached(t,e.privateKey.slice(1));return{type:"user_challenge_response",sig:this.binaryEncode(i),pubkey:this.binaryEncode(e.publicKey),server_challenge:r,protocol:n}},this.createContractInputComponents=(t,r,n)=>{if(0==t.length)return null;const i={input:this.serializeInput(t),nonce:this.serializeNumber(r),max_ledger_seq_no:this.serializeNumber(n)},o=this.serializeObject(i),s=u.crypto_sign_detached(o,e.privateKey.slice(1));return{hash:new Uint8Array(f.hash(s)),container:o,sig:s}},this.createContractInputMessage=(e,t)=>({type:"contract_input",input_container:e,sig:this.binaryEncode(t)}),this.createReadRequest=(e,t)=>0==e.length?null:{type:"contract_read_request",id:t,content:this.serializeInput(e)},this.createStatusRequest=()=>({type:"stat"}),this.createLclRequest=()=>({type:"lcl"}),this.createSubscriptionRequest=(e,t)=>({type:"subscription",channel:e,enabled:t}),this.createLedgerQuery=(e,t,r,n)=>{const i=[];return r&&i.push("inputs"),n&&i.push("outputs"),{type:"ledger_query",id:"query_"+e+"_"+(new Date).getTime().toString(),filter_by:e,params:t,include:i}},this.deserializeLedger=e=>({seqNo:e.seq_no,timestamp:e.timestamp,hash:this.deserializeValue(e.hash),prevHash:this.deserializeValue(e.prev_hash),stateHash:this.deserializeValue(e.state_hash),configHash:this.deserializeValue(e.config_hash),userHash:this.deserializeValue(e.user_hash),inputHash:this.deserializeValue(e.input_hash),outputHash:this.deserializeValue(e.output_hash)}),this.deserializeHealthEvent=e=>"proposal"===e.event?{event:e.event,commLatency:e.comm_latency,readLatency:e.read_latency,batchSize:e.batch_size}:"connectivity"===e.event?{event:e.event,peerCount:e.peer_count,weaklyConnected:e.weakly_connected}:void 0}function b(e){return new Uint8Array(e.match(/.{1,2}/g).map((e=>parseInt(e,16))))}function B(e){return e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"")}function O(e){return"string"==typeof e||e instanceof String}function m(){const e={};this.on=(t,r)=>{e[t]||(e[t]=[]),e[t].push(r)},this.emit=(t,...r)=>{e[t]&&e[t].forEach((e=>e(...r)))},this.clear=t=>{t?delete e[t]:Object.keys(e).forEach((t=>delete e[t]))}}async function S(){if(e?u||(u=window.sodium||await new Promise((e=>{window.sodium={onload:async t=>e(t)}}))):(u||(u=require("libsodium-wrappers")),await u.ready),!u)throw"Sodium reference not found. Please include sodium js lib in browser scripts."}let N=null;let v=null;function A(e){a=e}function w(e,t){e>=a&&console.log(t)}e?window.HotPocket={generateKeys:p,createClient:d,events:c,notificationChannels:h,protocols:l,setLogLevel:A}:module.exports={generateKeys:p,createClient:d,events:c,notificationChannels:h,protocols:l,setLogLevel:A}})();
Code: Select all
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Evernode Instance Manager</title>
<link href="./bootstrap.min.css" rel="stylesheet">
<link href="./styles.css" rel="stylesheet">
<style>
.host-address-cell code {
display: inline-block;
max-width: 118px;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
white-space: nowrap;
}
.host-lease {
display: inline-flex;
align-items: baseline;
gap: 0.25rem;
white-space: nowrap;
}
.host-lease-unit {
color: #ffc107;
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0.03em;
}
.hosts-action-sticky {
position: sticky;
right: 0;
z-index: 3;
background: #212529;
box-shadow: -10px 0 14px rgba(0, 0, 0, 0.28);
white-space: nowrap;
}
#hostsBody .hosts-action-sticky {
z-index: 2;
}
.hosts-action-sticky .acquire-btn {
min-width: 86px;
font-weight: 700;
}
.terms-modal-content {
border: 1px solid rgba(255, 193, 7, 0.28);
border-radius: 22px;
background:
radial-gradient(circle at top left, rgba(255, 193, 7, 0.16), transparent 35%),
linear-gradient(145deg, #151922 0%, #0d1117 100%);
box-shadow: 0 26px 80px rgba(0, 0, 0, 0.62);
overflow: hidden;
}
.terms-modal-hero {
padding: 1rem 1.25rem;
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
background: rgba(255, 255, 255, 0.035);
}
.terms-badge {
display: inline-flex;
align-items: center;
gap: 0.35rem;
padding: 0.28rem 0.55rem;
border: 1px solid rgba(255, 193, 7, 0.35);
border-radius: 999px;
color: #ffc107;
background: rgba(255, 193, 7, 0.08);
font-size: 0.78rem;
font-weight: 700;
letter-spacing: 0.03em;
text-transform: uppercase;
}
.terms-markdown-box {
max-height: min(56vh, 520px);
overflow: auto;
padding: 1.25rem;
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 18px;
background: rgba(0, 0, 0, 0.22);
}
.terms-markdown-box h1,
.terms-markdown-box h2,
.terms-markdown-box h3 {
color: #f8f9fa;
margin-top: 1rem;
margin-bottom: 0.55rem;
}
.terms-markdown-box h1:first-child,
.terms-markdown-box h2:first-child,
.terms-markdown-box h3:first-child {
margin-top: 0;
}
.terms-markdown-box p,
.terms-markdown-box li {
color: rgba(248, 249, 250, 0.86);
line-height: 1.55;
}
.terms-markdown-box ul {
padding-left: 1.25rem;
}
.terms-accept-card {
border: 1px solid rgba(25, 135, 84, 0.35);
border-radius: 16px;
background: rgba(25, 135, 84, 0.08);
padding: 0.85rem 1rem;
}
.instance-toolbar {
display: flex;
flex-wrap: wrap;
gap: 0.85rem;
align-items: center;
justify-content: flex-end;
}
.instance-toolbar-group {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.45rem 0.55rem;
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 14px;
background: rgba(255, 255, 255, 0.03);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
}
.instance-toolbar-group .toolbar-label {
font-size: 0.72rem;
text-transform: uppercase;
letter-spacing: 0.06em;
color: rgba(248, 249, 250, 0.62);
font-weight: 700;
margin-right: 0.15rem;
white-space: nowrap;
}
.instance-toolbar .btn,
.instance-toolbar .form-control,
.instance-toolbar .form-check-input {
border-radius: 10px;
}
.instance-toolbar .btn-group .btn {
border-radius: 0;
}
.instance-toolbar .btn-group .btn:first-child {
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
}
.instance-toolbar .btn-group .btn:last-child {
border-top-right-radius: 10px;
border-bottom-right-radius: 10px;
}
.instance-toolbar .form-switch {
display: flex;
align-items: center;
gap: 0.55rem;
margin: 0;
}
.instance-toolbar .form-switch .form-check-input {
margin: 0;
width: 2.5rem;
height: 1.35rem;
}
.instance-toolbar .form-switch .form-check-label {
margin: 0;
color: rgba(248, 249, 250, 0.82);
}
.instance-toolbar .toolbar-moments {
width: 76px;
text-align: center;
font-weight: 700;
}
.instance-toolbar .btn {
font-weight: 700;
letter-spacing: 0.01em;
}
.instance-toolbar .btn-outline-light,
.instance-toolbar .btn-outline-warning,
.instance-toolbar .btn-outline-danger,
.instance-toolbar .btn-outline-info,
.instance-toolbar .btn-outline-success {
background: rgba(255, 255, 255, 0.02);
}
.instance-toolbar .btn-outline-light:hover,
.instance-toolbar .btn-outline-warning:hover,
.instance-toolbar .btn-outline-danger:hover,
.instance-toolbar .btn-outline-info:hover,
.instance-toolbar .btn-outline-success:hover {
transform: translateY(-1px);
box-shadow: 0 8px 18px rgba(0, 0, 0, 0.22);
}
#instancesBody .form-check-input,
#manualExtensionsBody .form-check-input,
#selectAllInstances,
#selectAllManualExtensions {
cursor: pointer;
}
.table-toolbar-note {
font-size: 0.82rem;
color: rgba(248, 249, 250, 0.56);
}
.card.p-4.mb-4 {
border-radius: 18px;
border: 1px solid rgba(255, 255, 255, 0.06);
background:
radial-gradient(circle at top left, rgba(13, 202, 240, 0.05), transparent 30%),
linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));
}
/* Clean dashboard header + toolbar polish */
.dashboard-card {
border-radius: 20px;
border: 1px solid rgba(255, 255, 255, 0.075);
background:
radial-gradient(circle at top left, rgba(13, 202, 240, 0.055), transparent 32%),
radial-gradient(circle at top right, rgba(255, 193, 7, 0.045), transparent 30%),
linear-gradient(180deg, rgba(255, 255, 255, 0.028), rgba(255, 255, 255, 0.012));
box-shadow: 0 18px 60px rgba(0, 0, 0, 0.18);
}
.dashboard-card-header {
display: grid;
grid-template-columns: minmax(260px, 1fr) auto;
gap: 1.25rem;
align-items: start;
margin-bottom: 1.35rem;
}
.dashboard-heading {
min-width: 0;
}
.dashboard-title-row {
display: flex;
align-items: center;
gap: 0.65rem;
flex-wrap: wrap;
}
.dashboard-title-row h4 {
margin: 0;
}
.dashboard-badge {
display: inline-flex;
align-items: center;
padding: 0.2rem 0.5rem;
border-radius: 999px;
border: 1px solid rgba(13, 202, 240, 0.28);
background: rgba(13, 202, 240, 0.08);
color: #8edcff;
font-size: 0.72rem;
font-weight: 800;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.instance-toolbar {
display: flex;
flex-wrap: wrap;
gap: 0.65rem;
align-items: stretch;
justify-content: flex-end;
max-width: 880px;
}
.instance-toolbar-group {
display: inline-flex;
align-items: center;
gap: 0.45rem;
min-height: 42px;
padding: 0.42rem 0.5rem;
border: 1px solid rgba(255, 255, 255, 0.085);
border-radius: 16px;
background: rgba(0, 0, 0, 0.16);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.035),
0 10px 24px rgba(0, 0, 0, 0.12);
}
.instance-toolbar-group .toolbar-label {
font-size: 0.68rem;
text-transform: uppercase;
letter-spacing: 0.075em;
color: rgba(248, 249, 250, 0.58);
font-weight: 800;
white-space: nowrap;
}
.instance-toolbar .btn,
.instance-toolbar .form-control,
.instance-toolbar .form-check-input {
border-radius: 11px;
}
.instance-toolbar .btn {
font-weight: 800;
letter-spacing: 0.01em;
min-height: 31px;
}
.instance-toolbar .btn-group .btn {
border-radius: 0;
}
.instance-toolbar .btn-group .btn:first-child {
border-top-left-radius: 11px;
border-bottom-left-radius: 11px;
}
.instance-toolbar .btn-group .btn:last-child {
border-top-right-radius: 11px;
border-bottom-right-radius: 11px;
}
.instance-toolbar .form-switch {
display: inline-flex;
align-items: center;
gap: 0.5rem;
margin: 0;
white-space: nowrap;
}
.instance-toolbar .form-switch .form-check-input {
margin: 0;
width: 2.35rem;
height: 1.25rem;
}
.instance-toolbar .form-switch .form-check-label {
margin: 0;
color: rgba(248, 249, 250, 0.82);
font-size: 0.85rem;
font-weight: 700;
}
.instance-toolbar .toolbar-moments {
width: 72px;
text-align: center;
font-weight: 800;
}
.instance-toolbar .btn-outline-light,
.instance-toolbar .btn-outline-warning,
.instance-toolbar .btn-outline-danger,
.instance-toolbar .btn-outline-info,
.instance-toolbar .btn-outline-success,
.instance-toolbar .btn-outline-primary {
background: rgba(255, 255, 255, 0.025);
}
.instance-toolbar .btn-outline-light:hover,
.instance-toolbar .btn-outline-warning:hover,
.instance-toolbar .btn-outline-danger:hover,
.instance-toolbar .btn-outline-info:hover,
.instance-toolbar .btn-outline-success:hover,
.instance-toolbar .btn-outline-primary:hover {
transform: translateY(-1px);
box-shadow: 0 10px 22px rgba(0, 0, 0, 0.22);
}
#instancesBody .form-check-input,
#manualExtensionsBody .form-check-input,
#selectAllInstances,
#selectAllManualExtensions {
cursor: pointer;
}
.table-toolbar-note {
display: inline-flex;
align-items: center;
gap: 0.35rem;
font-size: 0.82rem;
color: rgba(248, 249, 250, 0.62);
padding-left: 0.6rem;
border-left: 3px solid rgba(13, 202, 240, 0.42);
}
@media (max-width: 1199.98px) {
.dashboard-card-header {
grid-template-columns: 1fr;
}
.instance-toolbar {
justify-content: flex-start;
max-width: none;
}
}
/* Final button normalization: no old Bootstrap-black hover text on dark UI */
.btn {
border-radius: 11px !important;
font-weight: 800;
letter-spacing: 0.01em;
transition:
transform 0.15s ease,
box-shadow 0.15s ease,
background-color 0.15s ease,
border-color 0.15s ease,
color 0.15s ease;
}
.btn-sm {
min-height: 31px;
}
.card .btn,
.modal-content .btn,
.table .btn,
.key-panel .btn,
.input-group .btn {
border-radius: 11px !important;
}
.btn-group .btn {
border-radius: 0 !important;
}
.btn-group .btn:first-child {
border-top-left-radius: 11px !important;
border-bottom-left-radius: 11px !important;
}
.btn-group .btn:last-child {
border-top-right-radius: 11px !important;
border-bottom-right-radius: 11px !important;
}
.input-group .form-control:first-child {
border-top-left-radius: 11px !important;
border-bottom-left-radius: 11px !important;
}
.input-group .btn:last-child,
.input-group .form-control:last-child {
border-top-right-radius: 11px !important;
border-bottom-right-radius: 11px !important;
}
.btn:hover,
.btn:focus,
.btn:focus-visible {
transform: translateY(-1px);
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.24) !important;
}
.btn-outline-light {
color: rgba(248, 249, 250, 0.9) !important;
border-color: rgba(248, 249, 250, 0.42) !important;
background: rgba(248, 249, 250, 0.025) !important;
}
.btn-outline-light:hover,
.btn-outline-light:focus,
.btn-outline-light:focus-visible {
color: #ffffff !important;
border-color: rgba(248, 249, 250, 0.78) !important;
background: rgba(248, 249, 250, 0.12) !important;
}
.btn-outline-info {
color: #67d9ff !important;
border-color: rgba(13, 202, 240, 0.72) !important;
background: rgba(13, 202, 240, 0.035) !important;
}
.btn-outline-info:hover,
.btn-outline-info:focus,
.btn-outline-info:focus-visible {
color: #bff3ff !important;
border-color: #67d9ff !important;
background: rgba(13, 202, 240, 0.15) !important;
}
.btn-outline-warning {
color: #ffd96a !important;
border-color: rgba(255, 193, 7, 0.72) !important;
background: rgba(255, 193, 7, 0.035) !important;
}
.btn-outline-warning:hover,
.btn-outline-warning:focus,
.btn-outline-warning:focus-visible {
color: #ffe7a3 !important;
border-color: #ffc107 !important;
background: rgba(255, 193, 7, 0.16) !important;
}
.btn-outline-danger {
color: #ff8f9a !important;
border-color: rgba(220, 53, 69, 0.72) !important;
background: rgba(220, 53, 69, 0.035) !important;
}
.btn-outline-danger:hover,
.btn-outline-danger:focus,
.btn-outline-danger:focus-visible {
color: #ffd0d4 !important;
border-color: #ff6b7a !important;
background: rgba(220, 53, 69, 0.17) !important;
}
.btn-outline-success {
color: #74e3a1 !important;
border-color: rgba(25, 135, 84, 0.78) !important;
background: rgba(25, 135, 84, 0.035) !important;
}
.btn-outline-success:hover,
.btn-outline-success:focus,
.btn-outline-success:focus-visible {
color: #bff7d3 !important;
border-color: #47d98a !important;
background: rgba(25, 135, 84, 0.17) !important;
}
.btn-outline-primary {
color: #9ec5fe !important;
border-color: rgba(13, 110, 253, 0.72) !important;
background: rgba(13, 110, 253, 0.045) !important;
}
.btn-outline-primary:hover,
.btn-outline-primary:focus,
.btn-outline-primary:focus-visible {
color: #d6e7ff !important;
border-color: #86b7fe !important;
background: rgba(13, 110, 253, 0.18) !important;
}
.btn-outline-secondary {
color: #cfd6dd !important;
border-color: rgba(173, 181, 189, 0.72) !important;
background: rgba(173, 181, 189, 0.035) !important;
}
.btn-outline-secondary:hover,
.btn-outline-secondary:focus,
.btn-outline-secondary:focus-visible {
color: #ffffff !important;
border-color: #ced4da !important;
background: rgba(173, 181, 189, 0.16) !important;
}
.btn-primary,
.btn-success,
.btn-danger,
.btn-info,
.btn-warning,
.btn-secondary,
.btn-dark {
color: #ffffff !important;
}
.btn-primary:hover,
.btn-success:hover,
.btn-danger:hover,
.btn-info:hover,
.btn-warning:hover,
.btn-secondary:hover,
.btn-dark:hover,
.btn-primary:focus,
.btn-success:focus,
.btn-danger:focus,
.btn-info:focus,
.btn-warning:focus,
.btn-secondary:focus,
.btn-dark:focus {
color: #ffffff !important;
}
.btn-warning {
background-color: #b98600 !important;
border-color: #d79f00 !important;
}
.btn-warning:hover,
.btn-warning:focus,
.btn-warning:focus-visible {
background-color: #946c00 !important;
border-color: #ffc107 !important;
}
.btn-info {
background-color: #087990 !important;
border-color: #0dcaf0 !important;
}
.btn-info:hover,
.btn-info:focus,
.btn-info:focus-visible {
background-color: #066174 !important;
border-color: #67d9ff !important;
}
.table .btn {
padding-inline: 0.65rem;
}
.key-panel,
.terms-accept-card {
border-radius: 16px;
}
</style>
<script src="./bootstrap.bundle.min.js"></script>
<script src="./jquery.min.js"></script>
</head>
<body>
<div class="container">
<div class="mb-5">
<div class="title">Evernode Instance Manager</div>
<div class="subtitle">
Acquire instances, track expiry dates, deploy bootstrap contracts, and prepare clusters.
</div>
</div>
<div class="card p-4 mb-4">
<h4 class="mb-1">Access</h4>
<a href="/setup/" target="_blank" class="btn btn-outline-warning btn-sm" style ="max-width:135px;margin-top:8px;">
Key generators
</a><br><span style="color:fff;margin-top:8px;">You can load the key generator site offline and generate your keys there.</span><br>
<div class="row g-3">
<div class="col-md-6">
<label class="form-label">Admin Authentication</label>
<div id="otpSourceStatus" class="section-subtitle mt-1">
Loading auth status...
</div>
</div>
<div class="col-md-6">
<label class="form-label">Wallet Seed</label>
<input id="instanceSeed" type="hidden" value="">
<div id="seedSourceStatus" class="section-subtitle mt-1">
Loading seed status...
</div>
</div>
</div>
<div class="warning-text mt-3">
Admin auth and wallet seed are requested in popups only when an action needs them.
Private keys are not saved unless you explicitly check the acquisition key save option.
</div>
</div>
<div class="card p-4 mb-4 dashboard-card" id="instancesCard">
<div class="dashboard-card-header">
<div class="dashboard-heading">
<div class="dashboard-title-row">
<h4 class="mb-1">My Instances</h4>
<span class="dashboard-badge">Managed</span>
</div>
<div class="section-subtitle mt-1">
Loaded from <code>/home/everstoring/public/instances</code>.
</div>
</div>
<div class="instance-toolbar">
<div class="instance-toolbar-group">
<span class="toolbar-label">View</span>
<div class="form-check form-switch mb-0">
<input class="form-check-input" type="checkbox" id="showHiddenInstances">
<label class="form-check-label" for="showHiddenInstances">
Hidden only
</label>
</div>
</div>
<div class="instance-toolbar-group">
<span class="toolbar-label">Load</span>
<button class="btn btn-outline-light btn-sm" id="refreshInstancesBtn" type="button">
Refresh
</button>
</div>
<div class="instance-toolbar-group">
<span class="toolbar-label">Bulk</span>
<div class="btn-group btn-group-sm" role="group" aria-label="Bulk instance actions">
<button class="btn btn-outline-warning" id="bulkHideInstancesBtn" type="button">
Hide
</button>
<button class="btn btn-outline-light" id="bulkUnhideInstancesBtn" type="button">
Unhide
</button>
<button class="btn btn-outline-danger" id="bulkDeleteInstancesBtn" type="button">
Delete
</button>
</div>
</div>
<div class="instance-toolbar-group">
<span class="toolbar-label">Extend</span>
<input id="extendAllClustersMoments"
type="number"
class="form-control form-control-sm toolbar-moments"
value="1"
min="1"
title="Moments to extend selected/all instances">
<div class="btn-group btn-group-sm" role="group" aria-label="Extend actions">
<button class="btn btn-outline-primary" id="extendSelectedInstancesBtn" type="button">
Selected
</button>
<button class="btn btn-outline-success" id="extendAllClustersBtn" type="button">
All
</button>
</div>
</div>
<div class="instance-toolbar-group">
<span class="toolbar-label">Backup</span>
<div class="btn-group btn-group-sm" role="group" aria-label="Backup actions">
<button class="btn btn-outline-info" id="downloadInstancesBackupBtn" type="button">
Download
</button>
<button class="btn btn-outline-warning" id="uploadInstancesBackupBtn" type="button">
Upload
</button>
</div>
</div>
<input id="instancesBackupFile"
type="file"
accept="application/json,.json"
class="d-none">
</div>
</div>
<div id="instancesStatus" class="status-line mb-2"></div>
<div class="table-toolbar-note mb-3">
Normal view shows visible instances. Hidden-only view shows hidden instances so unhide removes them from that list.
</div>
<div class="table-wrap">
<table class="table table-dark table-hover align-middle">
<thead>
<tr>
<th style="width: 42px;">
<input class="form-check-input" type="checkbox" id="selectAllInstances" title="Select all visible instances">
</th>
<th>Instance</th>
<th>Host</th>
<th>Contract</th>
<th>Pubkey</th>
<th>Domain</th>
<th>Node Description</th>
<th>Ports</th>
<th>Expires</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="instancesBody">
<tr>
<td colspan="11" class="muted">Click Refresh to load instances.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="card p-4 mb-4 dashboard-card" id="manualExtensionsCard">
<div class="dashboard-card-header">
<div class="dashboard-heading">
<div class="dashboard-title-row">
<h4 class="mb-1">Manually Added</h4>
<span class="dashboard-badge">Extra r-addresses</span>
</div>
<div class="section-subtitle mt-1">
Add r addresses that are not part of the cluster list. They are included by Refresh, Extend selected, and Extend all.
</div>
</div>
<div class="instance-toolbar">
<div class="instance-toolbar-group">
<span class="toolbar-label">Manual</span>
<button class="btn btn-outline-danger btn-sm" id="bulkDeleteManualExtensionsBtn" type="button">
Delete selected
</button>
</div>
</div>
</div>
<div class="row g-3 mb-3">
<div class="col-md-3">
<label class="form-label">Instance Name</label>
<input id="manualInstanceName" class="form-control mono" placeholder="example-instance-name">
</div>
<div class="col-md-3">
<label class="form-label">r Address</label>
<input id="manualRAddress" class="form-control mono" placeholder="r...">
</div>
<div class="col-md-2">
<label class="form-label">Created timestamp</label>
<input id="manualCreatedTimestamp" class="form-control mono" inputmode="numeric" placeholder="1781657495192">
</div>
<div class="col-md-2">
<label class="form-label">Expiry date</label>
<input id="manualExpiryDate" type="datetime-local" class="form-control mono">
</div>
<div class="col-md-2 d-grid gap-2 align-items-end">
<button class="btn btn-outline-info btn-sm" id="manualCreatedPlusHourBtn" type="button">
+1h from created
</button>
<button class="btn btn-primary btn-sm" id="saveManualExtensionBtn" type="button">
Add / Update
</button>
</div>
</div>
<div class="section-subtitle mb-3">
You can either set the expiry date manually, or enter a created timestamp and click <strong>+1h from created</strong>. If no expiry date is selected, the backend also calculates expiry as created timestamp + 1 hour.
</div>
<div id="manualExtensionsStatus" class="status-line mb-3"></div>
<div class="table-wrap">
<table class="table table-dark table-hover align-middle">
<thead>
<tr>
<th style="width: 42px;">
<input class="form-check-input" type="checkbox" id="selectAllManualExtensions" title="Select all manual entries">
</th>
<th>Instance</th>
<th>r Address</th>
<th>Created</th>
<th>Expires</th>
<th>Status</th>
<th>Last Extend</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="manualExtensionsBody">
<tr>
<td colspan="8" class="muted">No manually added entries yet.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="card p-4 mb-4">
<div class="d-flex justify-content-between align-items-center mb-4">
<div>
<h4 class="mb-1">Available Hosts</h4>
<div class="section-subtitle">
Fetched through your server from Onledger.
</div>
</div>
<button class="btn btn-primary btn-sm" id="loadHostsBtn">
Fetch Hosts
</button>
</div>
<div class="row g-3 mb-3">
<div class="col-md-3">
<label class="form-label">Host API</label>
<select id="hostApiSelect" class="form-select">
<option value="onledger">Onledger</option>
</select>
</div>
<div class="col-md-3">
<label class="form-label">Add API Name</label>
<input id="newHostApiName" type="text" class="form-control" placeholder="Example: My API" />
</div>
<div class="col-md-4">
<label class="form-label">Add API URL</label>
<input id="newHostApiUrl" type="text" class="form-control mono" placeholder="https://example.com/hosts" />
</div>
<div class="col-md-2 d-grid align-items-end">
<button class="btn btn-outline-info" id="saveHostApiBtn" type="button">
Save API
</button>
</div>
</div>
<div class="row g-3 mb-3">
<div class="col-md-2">
<label class="form-label">Min Reputation</label>
<input id="minRep" type="number" class="form-control" value="200" min="0" max="255" />
</div>
<div class="col-md-2">
<label class="form-label">Min RAM MB</label>
<input id="minRam" type="number" class="form-control" placeholder="4096" />
</div>
<div class="col-md-2">
<label class="form-label">Min Disk MB</label>
<input id="minDisk" type="number" class="form-control" placeholder="20000" />
</div>
<div class="col-md-2">
<label class="form-label">Country</label>
<input id="country" type="text" class="form-control" placeholder="SE, DE, US" />
</div>
<div class="col-md-2">
<label class="form-label">Limit</label>
<input id="hostLimit" type="number" class="form-control" value="50" min="1" max="200" />
</div>
<div class="col-md-2">
<label class="form-label">Acquire Moments</label>
<input id="acquireMoments" type="number" class="form-control" value="1" min="1" />
</div>
</div>
<div class="row g-3 mb-3">
<div class="col-md-3">
<label class="form-label">Description Preset</label>
<select id="hostDescriptionPreset" class="form-select">
<option value="">Any description</option>
<option value="evrPanel">evrPanel</option>
<option value="__custom__">Custom text below</option>
</select>
</div>
<div class="col-md-5">
<label class="form-label">Description Contains</label>
<input id="descriptionLike" type="text" class="form-control" placeholder="evrpanel, my-node, anything..." />
</div>
</div>
<div id="hostsStatus" class="status-line mb-3"></div>
<div class="table-wrap">
<table class="table table-dark table-hover align-middle">
<thead>
<tr>
<th>Address</th>
<th>Domain</th>
<th>Country</th>
<th>Rep</th>
<th>Slots</th>
<th>Used / Max</th>
<th>Lease</th>
<th>CPU (shared)</th>
<th>RAM</th>
<th>Disk</th>
<th>Description</th>
<th class="hosts-action-sticky">Action</th>
</tr>
</thead>
<tbody id="hostsBody">
<tr>
<td colspan="12" class="muted">Click “Fetch Hosts” to load available nodes.</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="modal fade" id="extendConsoleModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content text-light">
<div class="modal-header">
<h5 class="modal-title" id="extendConsoleTitle">Extend Console</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div id="extendConsoleStatus" class="small text-info mb-2"></div>
<pre id="extendConsoleLog" class="deploy-log-box p-3 mono"></pre>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-info" id="copyExtendConsoleBtn">
Copy Logs
</button>
<button type="button" class="btn btn-outline-light" id="clearExtendConsoleBtn">
Clear
</button>
<button type="button" class="btn btn-success" data-bs-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="adminAuthModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content text-light">
<div class="modal-header">
<h5 class="modal-title">Admin Authentication Required</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="mb-2 section-subtitle">
Action:
<code id="adminAuthAction">this action</code>
</div>
<div id="adminEnvelopeModeWrap">
<label class="form-label">OTP-encrypted Admin Envelope</label>
<div class="key-panel mt-3" id="remoteSignInsideAdminModal">
<strong>Remote Sign With seed-tools-gui</strong>
<div class="section-subtitle mt-1">
Generate a signing URL, paste it into <code>seed-tools-gui</code>,
then this modal will continue automatically when the envelope arrives.
</div>
<div class="row mt-3">
<div class="col-md-12 d-grid gap-2">
<button type="button" class="btn btn-outline-info btn-sm" id="generateAdminSignUrlBtn">
Generate Sign QR
</button>
</div>
</div>
<div id="adminRemoteSignStatus" class="small text-info mt-2"></div>
<div id="adminRemoteSignQrWrap" class="mt-3 d-none text-center">
<div class="section-subtitle mb-2">
Scan this QR code with your signer device.
</div>
<div class="bg-light d-inline-block p-2 rounded">
<img id="adminRemoteSignQr"
alt="Remote sign QR code"
width="260"
height="260">
</div>
<div class="mt-3">
<button type="button"
class="btn btn-outline-light btn-sm"
id="toggleAdminSignUrlBtn">
Show sign URL
</button>
<button type="button"
class="btn btn-outline-light btn-sm"
id="copyAdminSignUrlBtn">
Copy sign URL
</button>
</div>
<div id="adminRemoteSignUrlWrap" class="d-none mt-3">
<label class="form-label">Raw Sign URL</label>
<textarea id="adminRemoteSignUrl"
class="form-control mono"
rows="3"
readonly
placeholder="Generate a sign URL..."></textarea>
</div>
</div>
</div>
<div class="mt-3">
<button type="button"
class="btn btn-outline-light btn-sm"
id="toggleAdminEnvelopeBoxBtn">
Show envelope box
</button>
</div>
<div id="adminAuthEnvelopeBoxWrap" class="d-none mt-3">
<label class="form-label">OTP-encrypted Admin Envelope</label>
<textarea id="adminAuthEnvelope"
class="form-control mono"
rows="4"
autocomplete="off"
placeholder="evadmin:v1:... generated locally with otp.js"></textarea>
<div class="section-subtitle mt-1">
Paste a manually generated <code>evadmin:v1</code> envelope here.
</div>
</div>
<div class="form-check form-switch mt-3">
<input class="form-check-input" type="checkbox" id="adminUseOtpCodeMode">
<label class="form-check-label" for="adminUseOtpCodeMode">
Use OTP number + admin private key on this page instead
</label>
</div>
</div>
<div id="adminOtpCodeModeWrap" class="d-none">
<div class="mb-3">
<label class="form-label">Admin Private Key</label>
<input id="adminAuthPrivateKey"
type="password"
class="form-control mono"
autocomplete="off"
placeholder="ed...">
</div>
<div class="mb-3">
<label class="form-label">OTP Code</label>
<input id="adminAuthOtpCode"
type="text"
inputmode="numeric"
maxlength="24"
class="form-control mono"
autocomplete="off"
placeholder="24-digit OTP code">
</div>
<div class="section-subtitle">
The browser will encrypt your admin private key before sending it.
</div>
</div>
<div id="adminPlainKeyModeWrap" class="d-none">
<div class="mb-3">
<label class="form-label">Admin Private Key</label>
<input id="adminPlainPrivateKey"
type="password"
class="form-control mono"
autocomplete="off"
placeholder="Private key matching the admin public key">
</div>
<div class="section-subtitle">
OTP envelope mode is not enabled on the server, so plain admin-key mode is active.
</div>
</div>
<div id="adminAuthStatus" class="small text-danger mt-3"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-light" data-bs-dismiss="modal">
Cancel
</button>
<button type="button" class="btn btn-success" id="confirmAdminAuthBtn">
Use For This Action
</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="acquireKeyModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content text-light">
<div class="modal-header">
<h5 class="modal-title">Acquire Host With Keypair</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<label class="form-label">Selected Host</label>
<input id="modalAcquireHost" class="form-control mono" readonly>
<input id="modalAcquireNodeDescription" type="hidden" value="">
</div>
<div class="mb-3">
<label class="form-label">Docker Image</label>
<div class="input-group">
<input id="modalAcquireImage"
class="form-control mono"
value="everstoring/everstoring:latest"
placeholder="example/name:latest">
<button type="button" class="btn btn-outline-info" id="saveAcquireImageDefaultBtn">
Save as default
</button>
</div>
<div class="section-subtitle mt-1">
This is passed to <code>evdevkit acquire -i</code>. The field auto-fills from the last image used in this browser, or the saved system default.
</div>
</div>
<div class="key-panel mb-3 d-none" id="modalAcquireImageOptionsWrap">
<div class="d-flex justify-content-between align-items-center mb-2">
<strong>Docker image extra settings</strong>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-info btn-sm" id="toggleAcquireImageOptionsBtn">
Expand
</button>
<button type="button" class="btn btn-outline-light btn-sm" id="clearAcquireImageOptionsBtn">
Clear extras
</button>
</div>
</div>
<div class="section-subtitle mt-1">
EvrPanel-only helper. Expand to append settings like <code>--domain--example.com</code>, <code>--subdomain--app</code>, and <code>--sec1--mysecret</code> in real time.
</div>
<div id="modalAcquireImageOptionsBody" class="d-none mt-3">
<div class="section-subtitle mt-1">
If the Docker image box is empty, the base image becomes <code>evernode/sashimono:hp.0.6.4-ubt.20.04-njs.20</code> automatically.
</div>
<div class="row g-3 mt-1">
<div class="col-md-4">
<label class="form-label">domain</label>
<input id="modalAcquireImageDomain" data-acquire-image-flag="domain" class="form-control mono" placeholder="mydomain.tld">
</div>
<div class="col-md-4">
<label class="form-label">subdomain</label>
<input id="modalAcquireImageSubdomain" data-acquire-image-flag="subdomain" class="form-control mono" placeholder="mysubdomain">
</div>
<div class="col-md-4">
<label class="form-label">security</label>
<select id="modalAcquireImageSecurity" data-acquire-image-flag="security" class="form-select mono">
<option value="">Default</option>
<option value="none">none</option>
<option value="low">low</option>
<option value="mid">mid</option>
<option value="high">high</option>
</select>
</div>
<div class="col-md-3">
<label class="form-label">peer</label>
<input id="modalAcquireImagePeer" data-acquire-image-flag="peer" class="form-control mono" placeholder="Internal port">
</div>
<div class="col-md-3">
<label class="form-label">user</label>
<input id="modalAcquireImageUser" data-acquire-image-flag="user" class="form-control mono" placeholder="Internal port">
</div>
<div class="col-md-3">
<label class="form-label">gptcp1</label>
<input id="modalAcquireImageGpTcp1" data-acquire-image-flag="gptcp1" class="form-control mono" placeholder="8443">
</div>
<div class="col-md-3">
<label class="form-label">gpudp1</label>
<input id="modalAcquireImageGpUdp1" data-acquire-image-flag="gpudp1" class="form-control mono" placeholder="51820">
</div>
<div class="col-md-3">
<label class="form-label">gptcp2</label>
<input id="modalAcquireImageGpTcp2" data-acquire-image-flag="gptcp2" class="form-control mono" placeholder="Optional">
</div>
<div class="col-md-3">
<label class="form-label">gpudp2</label>
<input id="modalAcquireImageGpUdp2" data-acquire-image-flag="gpudp2" class="form-control mono" placeholder="Optional">
</div>
<div class="col-md-3">
<label class="form-label">ssl</label>
<select id="modalAcquireImageSsl" data-acquire-image-flag="ssl" class="form-select mono">
<option value="">Default</option>
<option value="false">false</option>
<option value="true">true</option>
</select>
</div>
<div class="col-md-3">
<label class="form-label">proxyssl</label>
<select id="modalAcquireImageProxySsl" data-acquire-image-flag="proxyssl" class="form-select mono">
<option value="">Default</option>
<option value="false">false</option>
<option value="true">true</option>
</select>
</div>
<div class="col-md-3">
<label class="form-label">dns</label>
<select id="modalAcquireImageDns" data-acquire-image-flag="dns" class="form-select mono">
<option value="">Default</option>
<option value="false">false</option>
<option value="true">true</option>
</select>
</div>
<div class="col-md-3">
<label class="form-label">env1</label>
<input id="modalAcquireImageEnv1" data-acquire-image-flag="env1" class="form-control mono" placeholder="KEY-VALUE">
</div>
<div class="col-md-3">
<label class="form-label">env2</label>
<input id="modalAcquireImageEnv2" data-acquire-image-flag="env2" class="form-control mono" placeholder="KEY-VALUE">
</div>
<div class="col-md-3">
<label class="form-label">sec1</label>
<input id="modalAcquireImageSec1" data-acquire-image-flag="sec1" class="form-control mono" placeholder="mysecretvariable">
</div>
<div class="col-md-3">
<label class="form-label">sec2</label>
<input id="modalAcquireImageSec2" data-acquire-image-flag="sec2" class="form-control mono" placeholder="myothersecret">
</div>
<div class="col-md-3">
<label class="form-label">sec3</label>
<input id="modalAcquireImageSec3" data-acquire-image-flag="sec3" class="form-control mono" placeholder="Optional">
</div>
<div class="col-md-3">
<label class="form-label">sec4</label>
<input id="modalAcquireImageSec4" data-acquire-image-flag="sec4" class="form-control mono" placeholder="Optional">
</div>
<div class="col-md-3"></div>
<div class="col-md-6">
<label class="form-label">vol1</label>
<input id="modalAcquireImageVol1" data-acquire-image-flag="vol1" class="form-control mono" placeholder="Optional volume/path name">
</div>
<div class="col-md-6">
<label class="form-label">vol2</label>
<input id="modalAcquireImageVol2" data-acquire-image-flag="vol2" class="form-control mono" placeholder="Optional volume/path name">
</div>
</div>
<div id="modalAcquireImageOptionsStatus" class="section-subtitle mt-2"></div>
</div>
</div>
<div class="key-panel mb-3 d-none" id="evrPanelSettingsWrap">
<div class="d-flex justify-content-between align-items-center mb-2">
<strong>EvrPanel Settings</strong>
<button type="button" class="btn btn-outline-info btn-sm" id="toggleEvrPanelSettingsBtn">
Expand
</button>
</div>
<div class="section-subtitle mt-1">
This host description contains <code>evrpanel</code>. Expanding this box fetches the selected host domain's <code>/api/</code> JSON.
</div>
<div id="evrPanelSettingsBody" class="d-none mt-3">
<div id="evrPanelSettingsStatus" class="small text-info mb-3">
Expand to fetch EvrPanel API details.
</div>
<div class="row g-3">
<div class="col-md-6">
<label class="form-label">EvrPanel API URL</label>
<input id="evrPanelApiUrl" class="form-control mono" readonly value="-">
</div>
<div class="col-md-3">
<label class="form-label">Evernode version</label>
<input id="evrPanelEvernodeVersion" class="form-control mono" readonly value="-">
</div>
<div class="col-md-3">
<label class="form-label">Evernode API version</label>
<input id="evrPanelEvernodeApiVersion" class="form-control mono" readonly value="-">
</div>
<div class="col-md-3">
<label class="form-label">DNS system active</label>
<input id="evrPanelDnsActive" class="form-control mono" readonly value="-">
</div>
<div class="col-md-6">
<label class="form-label">DNS API</label>
<input id="evrPanelDnsApi" class="form-control mono" readonly value="-">
</div>
<div class="col-md-3">
<label class="form-label">User install version</label>
<input id="evrPanelUserInstallVersion" class="form-control mono" readonly value="-">
</div>
</div>
</div>
</div>
<div class="mb-3">
<label class="form-label">Send Max</label>
<input id="modalAcquireSendMax"
type="text"
inputmode="decimal"
class="form-control mono"
placeholder="Example: 0.001">
<div class="section-subtitle mt-1">
This is passed to <code>evdevkit acquire -s</code>. It is prefilled from the host Lease column.
</div>
</div>
<div class="key-panel mb-3">
<strong>HotPocket mesh settings</strong>
<div class="row g-3 mt-1">
<div class="col-md-6">
<label class="form-label">idle_timeout</label>
<input id="modalAcquireIdleTimeout"
type="number"
min="1"
class="form-control mono"
value="120000">
<div class="section-subtitle mt-1">
Default: <code>120000</code> milliseconds.
</div>
</div>
<div class="col-md-6">
<label class="form-label">max_bytes_per_msg</label>
<input id="modalAcquireMaxBytesPerMsg"
type="number"
min="1"
class="form-control mono"
placeholder="Optional. Blank = HotPocket default">
</div>
</div>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input"
type="checkbox"
id="modalAcquirePlacePortsEnvIntoSeedFolder"
checked>
<label class="form-check-label" for="modalAcquirePlacePortsEnvIntoSeedFolder">
Put env file in during bootstrap install
</label>
<div class="section-subtitle mt-1">
Acquires the node first, then deploys the bootstrap contract with an <code>install.sh</code>
block that writes this node's ports into <code>general.env</code>.
</div>
</div>
<div class="mb-3" id="modalAcquireGeneralEnvExtraWrap">
<label class="form-label">Extra general.env entries optional</label>
<textarea id="modalAcquireGeneralEnvExtra"
class="form-control mono"
rows="4"
placeholder="Example:
APP_MODE=production
API_BASE=https://example.com"></textarea>
<div class="section-subtitle mt-1">
Optional extra lines added to <code>general.env</code> during the <code>bootstrap_alt</code> install pass.
Use <code>KEY=value</code>, one per line. Core port/domain keys are reserved.
</div>
</div>
<div class="mb-3">
<label class="form-label">Wait before bootstrap deploy seconds</label>
<input id="modalAcquireBootstrapDeployDelaySeconds"
type="number"
min="0"
max="300"
class="form-control mono"
value="10">
<div class="section-subtitle mt-1">
After acquire succeeds, wait before deploying bootstrap. This gives the new instance time to settle
before the first bootstrap upload. Use <code>0</code> to disable. Max <code>300</code> seconds.
</div>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" id="modalAcquireClusterFlowEnabled">
<label class="form-check-label" for="modalAcquireClusterFlowEnabled">
This instance is part of a cluster setup
</label>
<div class="section-subtitle mt-1">
First node starts a named cluster. Join mode acquires with the selected cluster contract ID,
then deploys bootstrap using the selected source node's UNL and known peer.
</div>
</div>
<div id="modalAcquireClusterFlowOptions" class="key-panel mb-3 d-none">
<strong>Cluster setup</strong>
<div class="form-check mt-3">
<input class="form-check-input" type="radio" name="modalAcquireClusterMode" id="modalAcquireClusterModeFirst" value="first" checked>
<label class="form-check-label" for="modalAcquireClusterModeFirst">
A: This is the first instance
</label>
</div>
<div id="modalAcquireClusterFirstWrap" class="mt-3">
<label class="form-label">Cluster name</label>
<input id="modalAcquireClusterName"
class="form-control"
placeholder="Example: Master Oracle">
<div class="section-subtitle mt-1">
Friendly name only. The real cluster link is still the contract ID returned after acquire.
</div>
</div>
<div id="modalAcquireClusterJoinModeWrap" class="mt-3 d-none">
<div class="form-check">
<input class="form-check-input" type="radio" name="modalAcquireClusterMode" id="modalAcquireClusterModeJoin" value="join">
<label class="form-check-label" for="modalAcquireClusterModeJoin">
B: This will join a cluster
</label>
</div>
</div>
<div id="modalAcquireClusterJoinWrap" class="mt-3 d-none">
<div class="mb-3">
<label class="form-label">Cluster to join</label>
<select id="modalAcquireClusterSelect" class="form-select mono"></select>
<div class="section-subtitle mt-1">
Uses this cluster's contract ID for <code>evdevkit acquire -c</code>.
</div>
</div>
<div class="mb-3">
<label class="form-label">Populate bootstrap deploy from node</label>
<select id="modalAcquireClusterSourceNode" class="form-select mono"></select>
<div class="section-subtitle mt-1">
Default is the first node. Its public key becomes UNL and its domain:peer_port becomes known peer.
</div>
</div>
</div>
</div>
<div class="key-panel mb-3">
<div class="d-flex justify-content-between align-items-center mb-2">
<strong>Keypair</strong>
<button type="button" class="btn btn-outline-light btn-sm" id="generateKeyBtn">
Generate Keypair
</button>
</div>
<div class="mb-3">
<label class="form-label">Private Key</label>
<textarea id="modalPrivateKey"
class="form-control mono"
rows="3"
placeholder="Click Generate Keypair, or paste an existing private key"></textarea>
</div>
<div class="mb-3">
<label class="form-label">Public Key</label>
<input id="modalPublicKey"
class="form-control mono"
placeholder="Generated/derived public key"
readonly>
</div>
<button type="button" class="btn btn-outline-info btn-sm" id="copyPrivateKeyBtn">
Copy Private Key
</button>
</div>
<div class="form-check mb-3 d-none" id="privateKeySavedConfirmWrap">
<input class="form-check-input" type="checkbox" id="privateKeySavedConfirm">
<label class="form-check-label" for="privateKeySavedConfirm">
I copied and saved this generated private key somewhere safe.
</label>
</div>
<div class="form-check mb-3 d-none" id="savePrivateKeyToSystemWrap">
<input class="form-check-input" type="checkbox" id="savePrivateKeyToSystem">
<label class="form-check-label" for="savePrivateKeyToSystem">
Save this to the system (Only use this if you're not using the private key for anything else other than acquisition)
</label>
<div class="section-subtitle mt-1">
When enabled, this acquisition keypair is saved with the instance and auto-filled when deploying a smart contract to that instance.
</div>
</div>
<div class="danger-text mb-2">
If you lose this private key, you may not be able to deploy or manage this instance later.
</div>
<div id="modalAcquireStatus" class="small text-info"></div>
<div id="modalAcquireCompleteActions" class="mt-2 d-none">
<button type="button" class="btn btn-outline-info btn-sm" id="copyAcquireRAddressBtn">
Copy rAddress
</button>
</div>
<pre id="modalAcquireLog" class="deploy-log-box mt-3 p-3 mono d-none"></pre>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-light" data-bs-dismiss="modal">
Cancel
</button>
<button type="button" class="btn btn-success" id="confirmAcquireBtn">
Acquire + Bootstrap
</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="deployBootstrapModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content text-light">
<div class="modal-header">
<h5 class="modal-title">Deploy Bootstrap Contract</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<input type="hidden" id="deployInstanceName">
<input type="hidden" id="deployDomain">
<input type="hidden" id="deployUserPort">
<input type="hidden" id="deployPeerPort">
<input type="hidden" id="deployGpTcpPort">
<input type="hidden" id="deployGpUdpPort">
<input type="hidden" id="deployPubkey">
<input type="hidden" id="deployInstanceContractId">
<div class="mb-3">
<label class="form-label">Instance</label>
<input id="deployInstanceDisplay" class="form-control mono" readonly>
</div>
<div class="mb-3">
<label class="form-label">Instance Private Key</label>
<textarea id="deployPrivateKey"
class="form-control mono"
rows="3"
placeholder="Private key used when acquiring this instance"></textarea>
</div>
<div class="row g-3 mb-3">
<div class="col-md-6">
<label class="form-label">role</label>
<select id="deployRole" class="form-select">
<option value="validator" selected>validator</option>
<option value="observer">observer</option>
</select>
</div>
<div class="col-md-6">
<label class="form-label">bin_path</label>
<input id="deployBinPath" class="form-control mono" value="/usr/bin/bash">
</div>
<div class="col-md-6">
<label class="form-label">bin_args</label>
<input id="deployBinArgs" class="form-control mono" placeholder="Optional, for example index.sh">
</div>
<div class="col-md-6">
<label class="form-label">roundtime</label>
<input id="deployRoundtime" type="number" class="form-control" value="4000" min="1">
</div>
<div class="col-md-6">
<label class="form-label">consensus mode</label>
<select id="deployConsensusMode" class="form-select">
<option value="public" selected>public</option>
<option value="private">private</option>
</select>
</div>
<div class="col-md-6">
<label class="form-label">npl mode</label>
<select id="deployNplMode" class="form-select">
<option value="public" selected>public</option>
<option value="private">private</option>
</select>
</div>
<div class="col-md-6">
<label class="form-label">peer discovery</label>
<select id="deployPeerDiscovery" class="form-select">
<option value="false" selected>false</option>
<option value="true">true</option>
</select>
</div>
<div class="col-md-6">
<label class="form-label">log_level</label>
<select id="deployLogLevel" class="form-select">
<option value="inf" selected>inf</option>
<option value="err">err</option>
</select>
</div>
</div>
<div class="mb-3">
<div class="d-flex justify-content-between align-items-center mb-2">
<label class="form-label mb-0">UNL</label>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-info btn-sm" id="addAllDeployUnlFromContractBtn">
Add all from contract ID
</button>
<button type="button" class="btn btn-outline-light btn-sm" id="addDeployUnlBtn">
Add UNL
</button>
</div>
</div>
<div id="deployUnlList"></div>
</div>
<div class="mb-3">
<div class="d-flex justify-content-between align-items-center mb-2">
<label class="form-label mb-0">Known Peers</label>
<div class="d-flex gap-2">
<button type="button" class="btn btn-outline-info btn-sm" id="addAllDeployKnownPeersFromContractBtn">
Add all from contract ID
</button>
<button type="button" class="btn btn-outline-light btn-sm" id="addDeployKnownPeerBtn">
Add Peer
</button>
</div>
</div>
<div id="deployKnownPeersList"></div>
</div>
<div class="key-panel mb-3">
<strong>Upload contract src (in zip format)</strong>
<div class="section-subtitle mt-1">
Upload a ZIP containing the contract source files directly at the ZIP root.
Do not upload a ZIP containing one parent folder.
</div>
<div class="row g-3 mt-1">
<div class="col-md-5">
<label class="form-label">Contract name</label>
<input id="uploadContractName"
class="form-control mono"
placeholder="example: my-contract">
<div class="section-subtitle mt-1">
This becomes <code>/home/everstoring/contracts/<name></code>.
</div>
</div>
<div class="col-md-5">
<label class="form-label">ZIP file</label>
<input id="uploadContractZip"
type="file"
class="form-control"
accept=".zip,application/zip,application/x-zip-compressed">
</div>
<div class="col-md-2 d-grid align-items-end">
<button type="button"
class="btn btn-outline-info"
id="uploadContractSrcBtn">
Upload
</button>
</div>
</div>
<div id="uploadContractStatus" class="small text-info mt-3"></div>
</div>
<div class="mb-3">
<div class="d-flex justify-content-between align-items-center mb-2">
<label class="form-label mb-0">Contract folder to deploy</label>
<button type="button" class="btn btn-outline-light btn-sm" id="refreshDeployContractsBtn">
Refresh contracts
</button>
</div>
<select id="deployContractName" class="form-select mono">
<option value="bootstrap">bootstrap</option>
</select>
<div class="section-subtitle mt-1">
Loaded from <code>/home/everstoring/contracts</code>. Each direct folder can be deployed.
</div>
</div>
<div class="section-subtitle mb-3">
Manual deploy never injects <code>general.env</code>. Use the acquire flow for first-time env installation.
</div>
<div id="deployBootstrapStatus" class="small text-info"></div>
<pre id="deployBootstrapLog"
class="deploy-log-box mt-3 p-3 mono"></pre>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-light" data-bs-dismiss="modal">
Cancel
</button>
<button type="button" class="btn btn-success" id="confirmDeployBootstrapBtn">
Bundle + Deploy Selected Contract
</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="seedPromptModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content text-light">
<div class="modal-header">
<h5 class="modal-title">Wallet Seed Required</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="mb-2 section-subtitle">
Action:
<code id="seedPromptAction">this action</code>
</div>
<div class="mb-3">
<label class="form-label">Wallet Seed</label>
<input id="seedPromptInput"
type="password"
class="form-control mono"
autocomplete="off"
placeholder="Enter wallet seed for this request only">
<div class="section-subtitle mt-1">
The seed is only used for this request. It is not saved in browser storage.
</div>
</div>
<div class="key-panel mb-3">
<strong>Future QR / Push Area</strong>
<div id="seedQrArea" class="section-subtitle mt-2">
Later we can add a QR endpoint here so another device can push the seed into this modal.
</div>
</div>
<div id="seedPromptStatus" class="small text-danger"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-light" data-bs-dismiss="modal">
Cancel
</button>
<button type="button" class="btn btn-success" id="confirmSeedPromptBtn">
Use Seed For This Action
</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="termsModal" tabindex="-1" aria-hidden="true" data-bs-backdrop="static" data-bs-keyboard="false">
<div class="modal-dialog modal-xl modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content text-light terms-modal-content">
<div class="terms-modal-hero">
<div class="d-flex flex-column flex-md-row justify-content-between gap-3 align-items-md-center">
<div>
<span class="terms-badge">Proof of Concept</span>
<h3 class="mt-3 mb-1">Terms and Conditions</h3>
<div class="section-subtitle">
You must accept these terms before using the Evernode Instance Manager.
</div>
</div>
<div class="text-warning small">
Experimental dashboard · Use at your own risk
</div>
</div>
</div>
<div class="modal-body p-4">
<div id="termsLoadStatus" class="small text-info mb-3">
Loading terms from <code>terms.md</code>...
</div>
<div id="termsContent" class="terms-markdown-box mb-4">
<div class="muted">Loading terms...</div>
</div>
<div class="terms-accept-card">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="termsAcceptCheck">
<label class="form-check-label" for="termsAcceptCheck">
I have read, understood, and accept these terms and conditions.
</label>
</div>
<div class="section-subtitle mt-2">
Acceptance is stored locally in this browser. Clearing browser data or changing the terms version will show this dialog again.
</div>
</div>
</div>
<div class="modal-footer px-4 pb-4 border-0">
<button type="button" class="btn btn-outline-light" id="termsDeclineBtn">
I Do Not Accept
</button>
<button type="button" class="btn btn-warning fw-bold" id="termsAcceptBtn" disabled>
Accept & Continue
</button>
</div>
</div>
</div>
</div>
<script>
const DEFAULT_ACQUIRE_IMAGE = "everstoring/everstoring:latest";
const ACQUIRE_IMAGE_STORAGE_KEY = "everstoringLastAcquireImage";
const HOST_API_SELECT_STORAGE_KEY = "everstoringSelectedHostApiId";
const TERMS_FILE_URL = "./terms.md";
const TERMS_ACCEPTANCE_VERSION = "everstoring-poc-terms-v1";
const TERMS_ACCEPTANCE_STORAGE_KEY = "everstoringTermsAcceptedVersion";
let selectedAcquireAddress = "";
let selectedAcquireNodeDescription = "";
let selectedAcquireDomain = "";
let selectedAcquireCountryCode = "";
let acquireCompletedMode = false;
let acquireModal = null;
let deployBootstrapModal = null;
let extendConsoleModal = null;
let adminAuthModal = null;
let seedPromptModal = null;
let termsModal = null;
let pendingAdminAuth = null;
let pendingSeedPrompt = null;
let generatedKeyMode = false;
let privateKeyDeriveTimer = null;
let knownInstances = [];
let manualExtensions = [];
let encryptedSeedAvailable = false;
let otpEnvelopeIsEnabled = false;
let deployLogPollTimer = null;
let deployLogOffset = 0;
let otpCodeDigits = 24;
let adminRemoteSignPollTimer = null;
let adminRemoteSignRequestId = "";
let deployContractConfigs = {};
let hostApis = [];
let configuredAcquireImage = DEFAULT_ACQUIRE_IMAGE;
let lastAcquiredRAddress = "";
function installStackedModalFix() {
$(document).on("show.bs.modal", ".modal", function () {
const openModalCount = $(".modal.show").length;
const zIndex = 1055 + openModalCount * 20;
$(this).css("z-index", zIndex);
setTimeout(() => {
$(".modal-backdrop")
.not(".modal-stack")
.last()
.css("z-index", zIndex - 10)
.addClass("modal-stack");
}, 0);
});
$(document).on("hidden.bs.modal", ".modal", function () {
if ($(".modal.show").length > 0) {
$("body").addClass("modal-open");
}
});
}
function forceModalOnTop(modalSelector) {
setTimeout(() => {
const modal = $(modalSelector);
modal.addClass("modal-force-top");
$(".modal-backdrop")
.last()
.addClass("modal-backdrop-force-top");
}, 30);
}
function normalizeCountryCodeForEnv(value) {
const code = String(value || "").trim().toUpperCase();
if (!code || code === "-") {
return "";
}
// Host API should deliver two-letter country codes like SE, DE, US.
if (!/^[A-Z]{2}$/.test(code)) {
return "";
}
return code;
}
function buildGeneralEnvExtraWithCountry(extraText, countryCode) {
const code = normalizeCountryCodeForEnv(countryCode);
const lines = String(extraText || "")
.replace(/\r\n/g, "\n")
.replace(/\r/g, "\n")
.split("\n")
.filter(line => !/^\s*COUNTRY_CODE\s*=/i.test(line));
if (code) {
lines.unshift(`COUNTRY_CODE=${code}`);
}
return lines.join("\n").trim();
}
function cleanupForcedModalTop(modalSelector) {
$(modalSelector).removeClass("modal-force-top");
$(".modal-backdrop").removeClass("modal-backdrop-force-top");
if ($(".modal.show").length > 0) {
$("body").addClass("modal-open");
}
}
$(async function () {
installStackedModalFix();
acquireModal = new bootstrap.Modal(document.getElementById("acquireKeyModal"), { backdrop: "static", keyboard: false });
deployBootstrapModal = new bootstrap.Modal(document.getElementById("deployBootstrapModal"), { backdrop: "static", keyboard: false });
extendConsoleModal = new bootstrap.Modal(document.getElementById("extendConsoleModal"), { backdrop: "static", keyboard: false });
adminAuthModal = new bootstrap.Modal(document.getElementById("adminAuthModal"), { backdrop: "static", keyboard: false });
seedPromptModal = new bootstrap.Modal(document.getElementById("seedPromptModal"), { backdrop: "static", keyboard: false });
termsModal = new bootstrap.Modal(document.getElementById("termsModal"), { backdrop: "static", keyboard: false });
setupTermsModal();
$("#showHiddenInstances").change(function () {
loadInstances();
});
$("#refreshDeployContractsBtn").click(function () {
window.loadDeployContracts($("#deployContractName").val() || "bootstrap");
});
$("#refreshInstancesBtn").click(function () {
loadInstances();
});
$("#selectAllInstances").change(function () {
$(".instance-select-checkbox").prop("checked", $(this).is(":checked"));
});
$("#bulkHideInstancesBtn").click(function () {
bulkUpdateInstances("hide");
});
$("#bulkUnhideInstancesBtn").click(function () {
bulkUpdateInstances("unhide");
});
$("#bulkDeleteInstancesBtn").click(deleteSelectedRows);
$("#selectAllManualExtensions").change(function () {
$(".manual-extension-select-checkbox").prop("checked", $(this).is(":checked"));
});
$("#bulkDeleteManualExtensionsBtn").click(bulkDeleteManualExtensions);
$("#extendSelectedInstancesBtn").click(extendSelectedInstances);
$("#extendAllClustersBtn").click(extendAllClusters);
$("#saveManualExtensionBtn").click(saveManualExtension);
$("#manualCreatedPlusHourBtn").click(fillManualExpiryFromCreatedTimestamp);
$("#copyExtendConsoleBtn").click(async function () {
const text = $("#extendConsoleLog").text();
if (!text.trim()) {
$("#extendConsoleStatus").text("No extend logs to copy yet.");
return;
}
try {
await navigator.clipboard.writeText(text);
$("#extendConsoleStatus").text("Extend logs copied.");
} catch {
$("#extendConsoleLog")[0].focus();
$("#extendConsoleStatus").text("Copy failed. Select and copy the log manually.");
}
});
$("#clearExtendConsoleBtn").click(function () {
$("#extendConsoleLog").text("");
$("#extendConsoleStatus").text("Extend console cleared.");
});
$("#downloadInstancesBackupBtn").click(downloadInstancesBackup);
$("#uploadInstancesBackupBtn").click(function () {
$("#instancesBackupFile").val("");
$("#instancesBackupFile").trigger("click");
});
$("#instancesBackupFile").change(function () {
const file = this.files && this.files[0];
uploadInstancesBackupFile(file);
});
$("#loadHostsBtn").click(loadHosts);
$("#saveHostApiBtn").click(saveHostApi);
$("#hostDescriptionPreset").change(function () {
const value = $(this).val();
if (value === "__custom__") {
$("#descriptionLike").trigger("focus");
return;
}
$("#descriptionLike").val(value || "");
});
$("#uploadContractSrcBtn").click(uploadContractSrcZip);
$("#adminUseOtpCodeMode").change(updateAdminAuthInputState);
$("#confirmAdminAuthBtn").click(confirmAdminAuth);
$("#deployContractName").change(applySelectedContractDeployDefaults);
$("#generateAdminSignUrlBtn").click(generateAdminSignUrlInsideModal);
$("#toggleAdminEnvelopeBoxBtn").click(function () {
const wrap = $("#adminAuthEnvelopeBoxWrap");
const isHidden = wrap.hasClass("d-none");
wrap.toggleClass("d-none", !isHidden);
$(this).text(isHidden ? "Hide envelope box" : "Show envelope box");
if (isHidden) {
setTimeout(() => {
$("#adminAuthEnvelope").trigger("focus");
}, 100);
}
});
$("#toggleAdminSignUrlBtn").click(function () {
const wrap = $("#adminRemoteSignUrlWrap");
const isHidden = wrap.hasClass("d-none");
wrap.toggleClass("d-none", !isHidden);
$(this).text(isHidden ? "Hide sign URL" : "Show sign URL");
});
$("#copyAdminSignUrlBtn").click(async function () {
const url = $("#adminRemoteSignUrl").val().trim();
if (!url) {
$("#adminRemoteSignStatus").text("No sign URL generated yet.");
return;
}
try {
await navigator.clipboard.writeText(url);
$("#adminRemoteSignStatus").text("Sign URL copied.");
} catch {
$("#adminRemoteSignUrl")[0].select();
$("#adminRemoteSignStatus").text("Copy failed. URL selected; copy it manually.");
}
});
$("#confirmSeedPromptBtn").click(confirmSeedPrompt);
$("#adminAuthOtpCode, #adminAuthPrivateKey, #adminPlainPrivateKey").on("keydown", function (event) {
if (event.key === "Enter") {
event.preventDefault();
confirmAdminAuth();
}
});
$("#seedPromptInput").on("keydown", function (event) {
if (event.key === "Enter") {
event.preventDefault();
confirmSeedPrompt();
}
});
$("#adminAuthModal").on("hidden.bs.modal", function () {
stopAdminRemoteSignPolling();
adminRemoteSignRequestId = "";
$("#adminRemoteSignUrl").val("");
$("#adminRemoteSignStatus").text("");
if (pendingAdminAuth) {
const pending = pendingAdminAuth;
pendingAdminAuth = null;
pending.reject(new Error("Admin authentication cancelled."));
}
clearAdminAuthModalFields();
});
$("#seedPromptModal").on("hidden.bs.modal", function () {
cleanupForcedModalTop("#seedPromptModal");
if (pendingSeedPrompt) {
const pending = pendingSeedPrompt;
pendingSeedPrompt = null;
pending.reject(new Error("Wallet seed entry cancelled."));
}
$("#seedPromptInput").val("");
$("#seedPromptStatus").text("");
});
$("#generateKeyBtn").click(generateAcquireKeypair);
$("#copyPrivateKeyBtn").click(copyModalPrivateKey);
$("#copyAcquireRAddressBtn").click(copyAcquiredRAddress);
$("#saveAcquireImageDefaultBtn").click(saveDefaultAcquireImage);
$("#hostApiSelect").change(function () {
rememberSelectedHostApi($(this).val());
});
$("#modalAcquireImage").on("change blur", function () {
rememberLastAcquireImage($(this).val());
});
$("#confirmAcquireBtn").click(function () {
if (acquireCompletedMode) {
acquireModal.hide();
return;
}
confirmAcquireWithGeneratedKey();
});
$("#modalAcquireClusterFlowEnabled").change(updateAcquireClusterFlowOptions);
$(document).on("change", "input[name='modalAcquireClusterMode']", updateAcquireClusterFlowOptions);
$("#modalAcquireClusterSelect").change(function () {
populateAcquireClusterNodeSelect();
updateAcquireClusterFlowOptions();
});
$("#modalAcquireClusterSourceNode").change(updateAcquireClusterFlowOptions);
$("#modalAcquireImageOptionsWrap").on("input change", "[data-acquire-image-flag]", updateAcquireImageFromOptions);
$("#toggleAcquireImageOptionsBtn").click(toggleAcquireImageOptions);
$("#clearAcquireImageOptionsBtn").click(function () {
clearAcquireImageOptionFields(true);
});
$("#toggleEvrPanelSettingsBtn").click(toggleEvrPanelSettings);
$("#modalPrivateKey").on("input", handlePrivateKeyInput);
$("#addDeployUnlBtn").click(function () {
addDeployUnl("");
});
$("#addDeployKnownPeerBtn").click(function () {
addDeployKnownPeer("");
});
$("#addAllDeployUnlFromContractBtn").click(addAllDeployUnlFromCurrentContract);
$("#addAllDeployKnownPeersFromContractBtn").click(addAllDeployKnownPeersFromCurrentContract);
$("#confirmDeployBootstrapBtn").click(confirmDeployBootstrap);
$("#deployBootstrapModal").on("hidden.bs.modal", function () {
stopDeployLogPolling();
});
$("#acquireKeyModal").on("hidden.bs.modal", function () {
setAcquireCompletedMode(false);
setAcquireBusy(false);
});
$(document).on("click", ".remove-repeater-item", function () {
$(this).closest(".input-group").remove();
});
await loadSeedStatus();
await loadDashboardSettings();
await loadHostApis();
setInstanceStatus("Click Refresh to load instances.");
});
function setupTermsModal() {
if (hasAcceptedCurrentTerms()) {
return;
}
$("#termsAcceptCheck").prop("checked", false);
$("#termsAcceptBtn").prop("disabled", true);
$("#termsAcceptCheck").off("change.terms").on("change.terms", function () {
$("#termsAcceptBtn").prop("disabled", !$(this).is(":checked"));
});
$("#termsAcceptBtn").off("click.terms").on("click.terms", function () {
if (!$("#termsAcceptCheck").is(":checked")) {
return;
}
acceptCurrentTerms();
termsModal.hide();
});
$("#termsDeclineBtn").off("click.terms").on("click.terms", function () {
$("#termsLoadStatus")
.removeClass("text-info text-success")
.addClass("text-warning")
.text("You must accept the terms to use this proof-of-concept dashboard. Close this browser tab if you do not accept.");
});
loadTermsMarkdown();
termsModal.show();
}
function hasAcceptedCurrentTerms() {
try {
return localStorage.getItem(TERMS_ACCEPTANCE_STORAGE_KEY) === TERMS_ACCEPTANCE_VERSION;
} catch {
return false;
}
}
function acceptCurrentTerms() {
try {
localStorage.setItem(TERMS_ACCEPTANCE_STORAGE_KEY, TERMS_ACCEPTANCE_VERSION);
localStorage.setItem(`${TERMS_ACCEPTANCE_STORAGE_KEY}At`, new Date().toISOString());
} catch {
// If localStorage is unavailable, acceptance is only valid for this page session.
}
}
async function loadTermsMarkdown() {
try {
const response = await fetch(`${TERMS_FILE_URL}?t=${Date.now()}`, {
method: "GET",
cache: "no-store",
headers: {
"Accept": "text/markdown, text/plain, */*",
"Cache-Control": "no-cache",
},
});
if (!response.ok) {
throw new Error(`Could not load terms.md: HTTP ${response.status}`);
}
const markdown = await response.text();
$("#termsContent").html(renderTermsMarkdown(markdown));
$("#termsLoadStatus")
.removeClass("text-info text-warning text-danger")
.addClass("text-success")
.text("Terms loaded from terms.md.");
} catch (err) {
console.error(err);
$("#termsContent").html(renderTermsMarkdown(getFallbackTermsMarkdown()));
$("#termsLoadStatus")
.removeClass("text-info text-success")
.addClass("text-warning")
.text(`${err.message}. Showing built-in fallback terms.`);
}
}
function renderTermsMarkdown(markdown) {
const lines = String(markdown || "").replace(/\r\n/g, "\n").split("\n");
const html = [];
let inList = false;
function closeList() {
if (inList) {
html.push("</ul>");
inList = false;
}
}
for (const rawLine of lines) {
const line = rawLine.trim();
if (!line) {
closeList();
continue;
}
if (/^---+$/.test(line)) {
closeList();
html.push("<hr>");
continue;
}
const heading = line.match(/^(#{1,3})\s+(.+)$/);
if (heading) {
closeList();
const level = heading[1].length;
html.push(`<h${level}>${renderTermsInlineMarkdown(heading[2])}</h${level}>`);
continue;
}
const bullet = line.match(/^-\s+(.+)$/);
if (bullet) {
if (!inList) {
html.push("<ul>");
inList = true;
}
html.push(`<li>${renderTermsInlineMarkdown(bullet[1])}</li>`);
continue;
}
closeList();
html.push(`<p>${renderTermsInlineMarkdown(line)}</p>`);
}
closeList();
return html.join("\n");
}
function renderTermsInlineMarkdown(value) {
return escapeHtml(value)
.replace(/`([^`]+)`/g, "<code>$1</code>")
.replace(/\*\*([^*]+)\*\*/g, "<strong>$1</strong>")
.replace(/\*([^*]+)\*/g, "<em>$1</em>");
}
function getFallbackTermsMarkdown() {
return `# Terms and Conditions\n\nThis dashboard is a proof of concept only. It is provided for experimentation and testing, not for production use.\n\n## Important Notice\n\n- Use this software entirely at your own risk.\n- The creator accepts no liability for loss, damage, downtime, failed deployments, lost funds, exposed keys, or any other consequences.\n- You are responsible for reviewing the code, protecting your keys, and understanding every action before you use it.\n- Do not use this with production systems, production funds, or sensitive infrastructure.\n\nBy continuing, you confirm that you understand and accept these terms.`;
}
function setAcquireCompletedMode(isComplete) {
acquireCompletedMode = isComplete === true;
const button = $("#confirmAcquireBtn");
$("#modalAcquireCompleteActions").toggleClass("d-none", !acquireCompletedMode || !lastAcquiredRAddress);
if (acquireCompletedMode) {
button
.prop("disabled", false)
.removeClass("btn-success")
.addClass("btn-danger")
.text("Close");
return;
}
button
.removeClass("btn-danger")
.addClass("btn-success")
.text("Acquire + Bootstrap");
}
function setAcquireBusy(isBusy) {
if (acquireCompletedMode) {
$("#confirmAcquireBtn")
.prop("disabled", false)
.removeClass("btn-success")
.addClass("btn-danger")
.text("Close");
} else {
$("#confirmAcquireBtn")
.prop("disabled", isBusy)
.removeClass("btn-danger")
.addClass("btn-success")
.text(isBusy ? "Acquiring + deploying..." : "Acquire + Bootstrap");
}
$("#generateKeyBtn").prop("disabled", isBusy || acquireCompletedMode);
$("#copyPrivateKeyBtn").prop("disabled", isBusy || acquireCompletedMode);
}
function otpCodeRegex() {
return new RegExp(`^[0-9]{${otpCodeDigits}}$`);
}
window.loadDeployContracts = async function loadDeployContracts(preferred = "bootstrap") {
const select = $("#deployContractName");
select.html(`<option value="">Loading contracts...</option>`);
deployContractConfigs = {};
try {
const response = await fetch(`/api/contracts?t=${Date.now()}`, {
method: "GET",
cache: "no-store",
headers: {
"Cache-Control": "no-cache"
}
});
const data = await response.json().catch(() => ({}));
if (!response.ok || data.ok === false) {
throw new Error(data.error || `HTTP ${response.status}`);
}
const contracts = data.contracts || [];
select.html("");
if (!contracts.length) {
select.append(`<option value="">No contract folders found</option>`);
return;
}
contracts.forEach(contract => {
const name = String(contract.name || "").trim();
if (!name) {
return;
}
deployContractConfigs[name] = contract.deployConfig || {};
select.append(`
<option value="${escapeHtml(name)}">
${escapeHtml(name)}
</option>
`);
});
if (preferred && contracts.some(contract => contract.name === preferred)) {
select.val(preferred);
} else if (contracts.some(contract => contract.name === "bootstrap")) {
select.val("bootstrap");
} else {
select.val(contracts[0].name);
}
applySelectedContractDeployDefaults();
} catch (err) {
console.error(err);
select.html(`<option value="">Could not load contracts</option>`);
setDeployBootstrapStatus(err.message, "danger");
}
};
function applySelectedContractDeployDefaults() {
const contractName = $("#deployContractName").val();
const config = deployContractConfigs[contractName] || {};
let applied = [];
if (config.deployBinPath) {
$("#deployBinPath").val(config.deployBinPath);
applied.push("bin_path");
}
if (config.deployBinArgs) {
$("#deployBinArgs").val(config.deployBinArgs);
applied.push("bin_args");
}
if (config.roundtime) {
$("#deployRoundtime").val(String(config.roundtime));
applied.push("roundtime");
}
if (Array.isArray(config.unl) && config.unl.length) {
$("#deployUnlList").html("");
config.unl
.map(value => String(value || "").trim())
.filter(Boolean)
.forEach(value => addDeployUnl(value));
applied.push("UNL");
}
if (Array.isArray(config.knownPeers) && config.knownPeers.length) {
$("#deployKnownPeersList").html("");
config.knownPeers
.map(value => String(value || "").trim())
.filter(Boolean)
.forEach(value => addDeployKnownPeer(value));
applied.push("known peers");
}
if (applied.length) {
setDeployBootstrapStatus(
`Loaded ${contractName} defaults: ${applied.join(", ")}.`,
"info"
);
}
}
function setUploadContractStatus(message, type = "info") {
$("#uploadContractStatus")
.removeClass("text-info text-danger text-success text-warning")
.addClass(`text-${type}`)
.text(message || "");
}
function isSafeContractUploadName(value) {
return /^[A-Za-z0-9._-]+$/.test(value) &&
value !== "." &&
value !== ".." &&
value !== "bundle";
}
async function uploadContractSrcZip() {
const contractName = $("#uploadContractName").val().trim();
const fileInput = $("#uploadContractZip")[0];
const file = fileInput && fileInput.files ? fileInput.files[0] : null;
if (!contractName) {
setUploadContractStatus("Enter a contract name.", "danger");
return;
}
if (!isSafeContractUploadName(contractName)) {
setUploadContractStatus(
"Invalid contract name. Use only letters, numbers, dot, underscore, and dash.",
"danger"
);
return;
}
if (!file) {
setUploadContractStatus("Choose a ZIP file to upload.", "danger");
return;
}
if (!file.name.toLowerCase().endsWith(".zip")) {
setUploadContractStatus("Upload must be a .zip file.", "danger");
return;
}
let authHeaders;
try {
authHeaders = await requestAdminAuthHeaders("upload contract source");
} catch (err) {
setUploadContractStatus(err.message, "danger");
return;
}
$("#uploadContractSrcBtn").prop("disabled", true).text("Uploading...");
setUploadContractStatus("Uploading contract source ZIP...", "info");
try {
const zipBytes = await file.arrayBuffer();
const response = await fetch(
`/api/contracts/upload?name=${encodeURIComponent(contractName)}`,
{
method: "POST",
headers: {
...authHeaders,
"Content-Type": "application/zip",
"x-contract-name": contractName,
},
body: zipBytes,
}
);
const data = await response.json().catch(() => ({}));
if (!response.ok || data.ok === false) {
throw new Error(data.error || `HTTP ${response.status}`);
}
setUploadContractStatus(
`Uploaded ${data.contract.name} with ${data.files} file(s).`,
"success"
);
await window.loadDeployContracts(contractName);
$("#deployContractName").val(contractName);
} catch (err) {
console.error(err);
setUploadContractStatus(err.message, "danger");
} finally {
$("#uploadContractSrcBtn").prop("disabled", false).text("Upload");
}
}
function clearAdminAuthModalFields() {
$("#adminAuthEnvelope").val("");
$("#adminAuthPrivateKey").val("");
$("#adminAuthOtpCode").val("");
$("#adminPlainPrivateKey").val("");
$("#adminRemoteSignUrl").val("");
$("#adminRemoteSignStatus").text("");
$("#adminAuthStatus").text("");
$("#adminRemoteSignQr").attr("src", "");
$("#adminRemoteSignQrWrap").addClass("d-none");
$("#adminRemoteSignUrlWrap").addClass("d-none");
$("#toggleAdminSignUrlBtn").text("Show sign URL");
$("#adminAuthEnvelopeBoxWrap").addClass("d-none");
$("#toggleAdminEnvelopeBoxBtn").text("Show envelope box");
}
function normalizeSendMax(value) {
const raw = String(value ?? "").trim();
if (!raw || raw === "-") {
return "";
}
const cleaned = raw
.replace(/,/g, "")
.replace(/\s+/g, "")
.replace(/[^0-9.]/g, "");
if (!/^(?:\d+|\d*\.\d+)$/.test(cleaned)) {
return "";
}
const normalized = cleaned.startsWith(".")
? `0${cleaned}`
: cleaned;
const numberValue = Number(normalized);
if (!Number.isFinite(numberValue) || numberValue <= 0) {
return "";
}
return normalized;
}
function adminUseOtpCodeMode() {
return $("#adminUseOtpCodeMode").is(":checked");
}
function updateAdminAuthInputState() {
if (otpEnvelopeIsEnabled) {
$("#adminEnvelopeModeWrap").removeClass("d-none");
$("#adminPlainKeyModeWrap").addClass("d-none");
if (adminUseOtpCodeMode()) {
$("#adminAuthEnvelope").prop("disabled", true);
$("#adminOtpCodeModeWrap").removeClass("d-none");
$("#remoteSignInsideAdminModal").addClass("d-none");
$("#adminAuthOtpCode")
.attr("maxlength", String(otpCodeDigits))
.attr("placeholder", `${otpCodeDigits}-digit OTP code`);
setTimeout(() => {
$("#adminAuthPrivateKey").trigger("focus");
}, 250);
} else {
$("#adminAuthEnvelope").prop("disabled", false);
$("#adminOtpCodeModeWrap").addClass("d-none");
$("#remoteSignInsideAdminModal").removeClass("d-none");
setTimeout(() => {
$("#generateAdminSignUrlBtn").trigger("focus");
}, 250);
}
return;
}
$("#adminEnvelopeModeWrap").addClass("d-none");
$("#adminOtpCodeModeWrap").addClass("d-none");
$("#remoteSignInsideAdminModal").addClass("d-none");
$("#adminPlainKeyModeWrap").removeClass("d-none");
setTimeout(() => {
$("#adminPlainPrivateKey").trigger("focus");
}, 250);
}
function requestAdminAuthHeaders(actionName = "this action") {
return new Promise((resolve, reject) => {
pendingAdminAuth = { resolve, reject };
$("#adminAuthAction").text(actionName);
$("#adminAuthStatus").text("");
clearAdminAuthModalFields();
$("#adminUseOtpCodeMode").prop("checked", false);
updateAdminAuthInputState();
adminAuthModal.show();
});
}
function stopAdminRemoteSignPolling() {
if (adminRemoteSignPollTimer) {
clearInterval(adminRemoteSignPollTimer);
adminRemoteSignPollTimer = null;
}
}
async function generateAdminSignUrlInsideModal() {
if (!pendingAdminAuth) {
$("#adminRemoteSignStatus").text("No pending admin auth request.");
return;
}
const actionName = $("#adminAuthAction").text() || "dashboard action";
stopAdminRemoteSignPolling();
adminRemoteSignRequestId = "";
$("#adminRemoteSignStatus").text("Creating sign request...");
$("#adminRemoteSignUrl").val("");
$("#adminRemoteSignUrlWrap").addClass("d-none");
$("#toggleAdminSignUrlBtn").text("Show sign URL");
$("#adminRemoteSignQr").attr("src", "");
$("#adminRemoteSignQrWrap").addClass("d-none");
try {
const response = await fetch("/api/sign-request", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
actionName,
}),
});
const data = await response.json().catch(() => ({}));
if (!response.ok || data.ok === false) {
throw new Error(data.error || "Could not create sign request");
}
adminRemoteSignRequestId = data.requestId;
$("#adminRemoteSignUrl").val(data.signUrl);
$("#adminRemoteSignQr")
.attr("src", `/api/qr?text=${encodeURIComponent(data.signUrl)}&t=${Date.now()}`);
$("#adminRemoteSignQrWrap").removeClass("d-none");
$("#adminRemoteSignStatus").text(`Waiting for seed-tools-gui. Expires at ${data.expiresAt}.`);
async function pollOnce() {
try {
const pollResponse = await fetch(`/api/sign-request/${adminRemoteSignRequestId}/status?t=${Date.now()}`, {
method: "GET",
cache: "no-store",
});
const pollData = await pollResponse.json().catch(() => ({}));
if (!pollResponse.ok || pollData.ok === false) {
throw new Error(pollData.error || "Sign request failed");
}
if (pollData.status === "pending") {
$("#adminRemoteSignStatus").text(`Waiting for seed-tools-gui. Expires at ${pollData.expiresAt}.`);
return;
}
if (pollData.status === "signed" && pollData.adminEnvelope) {
stopAdminRemoteSignPolling();
$("#adminAuthEnvelope").val(pollData.adminEnvelope);
$("#adminRemoteSignStatus").text("Envelope received. Continuing action...");
confirmAdminAuth();
}
} catch (err) {
stopAdminRemoteSignPolling();
$("#adminRemoteSignStatus").text(err.message);
}
}
pollOnce();
adminRemoteSignPollTimer = setInterval(pollOnce, 1500);
} catch (err) {
$("#adminRemoteSignStatus").text(err.message);
}
}
async function confirmAdminAuth() {
if (!pendingAdminAuth) {
adminAuthModal.hide();
return;
}
try {
let headers = {};
if (otpEnvelopeIsEnabled) {
if (adminUseOtpCodeMode()) {
const privateKey = $("#adminAuthPrivateKey").val().trim();
const otpCode = $("#adminAuthOtpCode").val().trim();
if (!privateKey) {
throw new Error("Admin private key is required.");
}
if (!otpCodeRegex().test(otpCode)) {
throw new Error(`Valid ${otpCodeDigits}-digit OTP code is required.`);
}
headers["x-admin-key-envelope"] =
await encryptAdminPrivateKeyWithOtp(privateKey, otpCode);
} else {
const envelope = $("#adminAuthEnvelope").val().trim();
if (!envelope.startsWith("evadmin:v1:")) {
throw new Error("Valid OTP-encrypted admin envelope is required.");
}
headers["x-admin-key-envelope"] = envelope;
}
} else {
const privateKey = $("#adminPlainPrivateKey").val().trim();
if (!privateKey) {
throw new Error("Admin private key is required.");
}
headers["x-admin-private-key"] = privateKey;
}
const pending = pendingAdminAuth;
pendingAdminAuth = null;
adminAuthModal.hide();
pending.resolve(headers);
} catch (err) {
$("#adminAuthStatus").text(err.message);
}
}
function bytesToBase64(bytes) {
let binary = "";
const chunkSize = 0x8000;
for (let i = 0; i < bytes.length; i += chunkSize) {
binary += String.fromCharCode.apply(
null,
bytes.subarray(i, i + chunkSize)
);
}
return btoa(binary);
}
function base64UrlEncodeString(value) {
return btoa(value)
.replaceAll("+", "-")
.replaceAll("/", "_")
.replaceAll("=", "");
}
async function encryptAdminPrivateKeyWithOtp(adminPrivateKey, otpCode) {
if (!adminPrivateKey) {
throw new Error("Missing admin private key");
}
if (!otpCodeRegex().test(otpCode)) {
throw new Error(`Valid ${otpCodeDigits}-digit OTP code is required`);
}
const iterations = 300000;
const salt = crypto.getRandomValues(new Uint8Array(16));
const iv = crypto.getRandomValues(new Uint8Array(12));
const encoder = new TextEncoder();
const passwordMaterial = await crypto.subtle.importKey(
"raw",
encoder.encode(`otp-admin-envelope-v1:${otpCode}`),
"PBKDF2",
false,
["deriveKey"]
);
const aesKey = await crypto.subtle.deriveKey(
{
name: "PBKDF2",
salt,
iterations,
hash: "SHA-256",
},
passwordMaterial,
{
name: "AES-GCM",
length: 256,
},
false,
["encrypt"]
);
const encrypted = new Uint8Array(
await crypto.subtle.encrypt(
{
name: "AES-GCM",
iv,
tagLength: 128,
},
aesKey,
encoder.encode(adminPrivateKey)
)
);
const authTag = encrypted.slice(encrypted.length - 16);
const ciphertext = encrypted.slice(0, encrypted.length - 16);
const envelope = {
v: 1,
type: "otp-encrypted-admin-private-key",
alg: "aes-256-gcm",
kdf: "pbkdf2-sha256",
iterations,
salt: bytesToBase64(salt),
iv: bytesToBase64(iv),
authTag: bytesToBase64(authTag),
ciphertext: bytesToBase64(ciphertext),
};
return `evadmin:v1:${base64UrlEncodeString(JSON.stringify(envelope))}`;
}
function isPublicApiPath(path) {
return (
path.startsWith("/api/seed-status") ||
path.startsWith("/api/evrpanel-info")
);
}
async function instanceApi(path, options = {}) {
const {
actionName = "this action",
authHeaders = null,
...fetchOptions
} = options;
const headers = {
"Content-Type": "application/json",
...(fetchOptions.headers || {})
};
if (!isPublicApiPath(path)) {
const resolvedAuthHeaders =
authHeaders || await requestAdminAuthHeaders(actionName);
Object.assign(headers, resolvedAuthHeaders);
}
const response = await fetch(path, {
...fetchOptions,
headers
});
const data = await response.json().catch(() => ({}));
if (!response.ok || data.ok === false) {
const error = new Error(data.error || `HTTP ${response.status}`);
error.status = response.status;
error.data = data;
throw error;
}
return data;
}
function setInstanceStatus(message, isError = false) {
$("#instancesStatus")
.text(message || "")
.toggleClass("error", !!isError);
}
function setManualExtensionsStatus(message, isError = false) {
$("#manualExtensionsStatus")
.text(message || "")
.toggleClass("error", !!isError);
}
function setHostsStatus(message, isError = false) {
$("#hostsStatus")
.text(message || "")
.toggleClass("error", !!isError);
}
function setModalStatus(message, type = "info") {
$("#modalAcquireStatus")
.removeClass("text-info text-danger text-success text-warning")
.addClass(`text-${type}`)
.text(message || "");
}
function setEvrPanelStatus(message, type = "info") {
$("#evrPanelSettingsStatus")
.removeClass("text-info text-danger text-success text-warning")
.addClass(`text-${type}`)
.text(message || "");
}
function getDockerImageSuffixIndex(image) {
const value = String(image || "");
const lastSlash = value.lastIndexOf("/");
const tagColon = value.indexOf(":", lastSlash + 1);
if (tagColon >= 0) {
return value.indexOf("--", tagColon + 1);
}
return -1;
}
function stripAcquireImageSuffix(image) {
const value = String(image || "").trim();
const suffixIndex = getDockerImageSuffixIndex(value);
return suffixIndex >= 0 ? value.slice(0, suffixIndex).trim() : value;
}
function cleanAcquireImageOptionValue(value) {
return String(value || "")
.trim()
.replace(/\s+/g, "__")
.replace(/\//g, "___")
.replace(/[^A-Za-z0-9._-]/g, "");
}
function rememberLastAcquireImage(value) {
const image = String(value || "").trim();
if (!image) {
return;
}
try {
localStorage.setItem(ACQUIRE_IMAGE_STORAGE_KEY, image);
} catch {
// Local storage can be disabled; the server default still works.
}
}
function getLastAcquireImage() {
try {
return String(localStorage.getItem(ACQUIRE_IMAGE_STORAGE_KEY) || "").trim();
} catch {
return "";
}
}
function getPreferredAcquireImage() {
return getLastAcquireImage() || configuredAcquireImage || DEFAULT_ACQUIRE_IMAGE;
}
function getPreferredAcquireBaseImage() {
return stripAcquireImageSuffix(getPreferredAcquireImage()) || DEFAULT_ACQUIRE_IMAGE;
}
async function loadDashboardSettings() {
try {
const response = await fetch(`/api/settings?t=${Date.now()}`, {
method: "GET",
cache: "no-store",
headers: {
"Cache-Control": "no-cache"
}
});
const data = await response.json().catch(() => ({}));
if (!response.ok || data.ok === false) {
throw new Error(data.error || `HTTP ${response.status}`);
}
const settings = data.settings || {};
configuredAcquireImage = String(settings.defaultAcquireImage || DEFAULT_ACQUIRE_IMAGE).trim() || DEFAULT_ACQUIRE_IMAGE;
} catch (err) {
console.error(err);
configuredAcquireImage = DEFAULT_ACQUIRE_IMAGE;
}
}
async function saveDefaultAcquireImage() {
const image = $("#modalAcquireImage").val().trim();
if (!image) {
setModalStatus("Enter a Docker image before saving the default.", "danger");
return;
}
setModalStatus("Saving Docker image default...", "info");
try {
const data = await instanceApi("/api/settings/acquire-image", {
method: "POST",
actionName: "save Docker image default",
body: JSON.stringify({
defaultAcquireImage: image
})
});
configuredAcquireImage = String(data.settings?.defaultAcquireImage || image).trim() || DEFAULT_ACQUIRE_IMAGE;
rememberLastAcquireImage(configuredAcquireImage);
setModalStatus("Docker image saved as the system default and remembered as last used.", "success");
} catch (err) {
console.error(err);
setModalStatus(err.message, "danger");
}
}
function selectedHostLooksLikeEvrPanel() {
return String(selectedAcquireNodeDescription || "")
.toLowerCase()
.includes("evrpanel");
}
function resetAcquireImageOptions() {
clearAcquireImageOptionFields(false);
$("#modalAcquireImageOptionsBody").addClass("d-none");
$("#toggleAcquireImageOptionsBtn").text("Expand");
$("#modalAcquireImageOptionsStatus").text("");
}
function toggleAcquireImageOptions() {
const body = $("#modalAcquireImageOptionsBody");
const isOpening = body.hasClass("d-none");
body.toggleClass("d-none", !isOpening);
$("#toggleAcquireImageOptionsBtn").text(isOpening ? "Collapse" : "Expand");
}
function buildAcquireImageSuffix() {
const domain = cleanAcquireImageOptionValue($("#modalAcquireImageDomain").val());
const subdomain = cleanAcquireImageOptionValue($("#modalAcquireImageSubdomain").val());
const parts = [];
function add(flag, value) {
const cleanValue = cleanAcquireImageOptionValue(value);
if (cleanValue) {
parts.push(`--${flag}--${cleanValue}`);
}
}
add("domain", domain);
// EvrPanel docs say domain and subdomain should not both be used.
if (!domain) {
add("subdomain", subdomain);
}
[
"peer",
"user",
"gptcp1",
"gpudp1",
"gptcp2",
"gpudp2",
"ssl",
"proxyssl",
"dns",
"security",
"env1",
"env2",
"sec1",
"sec2",
"sec3",
"sec4",
"vol1",
"vol2",
].forEach((flag) => {
add(flag, $(`[data-acquire-image-flag='${flag}']`).val());
});
return parts.join("");
}
function updateAcquireImageFromOptions() {
const existingImage = $("#modalAcquireImage").val().trim();
const suffix = buildAcquireImageSuffix();
let baseImage = stripAcquireImageSuffix(existingImage);
if (!baseImage && suffix) {
baseImage = getPreferredAcquireBaseImage();
}
if (suffix || getDockerImageSuffixIndex(existingImage) >= 0) {
$("#modalAcquireImage").val(`${baseImage}${suffix}`);
}
const domain = cleanAcquireImageOptionValue($("#modalAcquireImageDomain").val());
const subdomain = cleanAcquireImageOptionValue($("#modalAcquireImageSubdomain").val());
if (domain && subdomain) {
$("#modalAcquireImageOptionsStatus").text("Domain is set, so subdomain is ignored because EvrPanel should not receive both.");
} else if (suffix) {
$("#modalAcquireImageOptionsStatus").text("Docker image suffix updated live in the Docker Image field.");
} else {
$("#modalAcquireImageOptionsStatus").text("");
}
}
function clearAcquireImageOptionFields(updateImage = true) {
$("[data-acquire-image-flag]").each(function () {
$(this).val("");
});
$("#modalAcquireImageOptionsStatus").text("");
if (updateImage) {
const baseImage = stripAcquireImageSuffix($("#modalAcquireImage").val());
$("#modalAcquireImage").val(baseImage);
}
}
function resetEvrPanelSettings() {
evrPanelSettingsLoaded = false;
evrPanelSettingsLoading = false;
$("#evrPanelSettingsBody").addClass("d-none");
$("#toggleEvrPanelSettingsBtn").text("Expand");
setEvrPanelStatus("Expand to fetch EvrPanel API details.", "info");
[
"#evrPanelApiUrl",
"#evrPanelEvernodeVersion",
"#evrPanelEvernodeApiVersion",
"#evrPanelDnsActive",
"#evrPanelDnsApi",
"#evrPanelUserInstallVersion",
].forEach((selector) => $(selector).val("-"));
}
function updateEvrPanelSettingsVisibility() {
const isEvrPanel = selectedHostLooksLikeEvrPanel();
$("#modalAcquireImageOptionsWrap").toggleClass("d-none", !isEvrPanel);
$("#evrPanelSettingsWrap").toggleClass("d-none", !isEvrPanel);
if (!isEvrPanel) {
resetAcquireImageOptions();
resetEvrPanelSettings();
}
}
function setEvrPanelField(selector, value) {
const text = value === undefined || value === null || value === ""
? "-"
: String(value);
$(selector).val(text);
}
function makeDownloadFilename() {
return `everstoring-instances-backup-${new Date()
.toISOString()
.replaceAll(":", "-")
.replaceAll(".", "-")}.json`;
}
async function downloadInstancesBackup() {
setInstanceStatus("Preparing backup download...");
let authHeaders;
try {
authHeaders = await requestAdminAuthHeaders("download instances backup");
} catch (err) {
setInstanceStatus(err.message, true);
return;
}
try {
const response = await fetch("/api/instances/backup", {
method: "GET",
headers: {
...authHeaders,
},
cache: "no-store",
});
if (!response.ok) {
const data = await response.json().catch(() => ({}));
throw new Error(data.error || `HTTP ${response.status}`);
}
const blob = await response.blob();
const url = URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
link.download = makeDownloadFilename();
document.body.appendChild(link);
link.click();
link.remove();
URL.revokeObjectURL(url);
setInstanceStatus("Backup downloaded.");
} catch (err) {
console.error(err);
setInstanceStatus(err.message, true);
}
}
async function uploadInstancesBackupFile(file) {
if (!file) {
return;
}
setInstanceStatus("Reading backup file...");
let backupText;
let parsedBackup;
try {
backupText = await file.text();
parsedBackup = JSON.parse(backupText);
} catch {
setInstanceStatus("Selected file is not valid JSON.", true);
return;
}
const backupHasManualExtensions = Array.isArray(parsedBackup.manualExtensions);
const replaceMode = confirm(
[
"Restore mode:",
"",
"OK = replace current instance list",
"Cancel = merge into current instance list",
"",
backupHasManualExtensions
? "This backup includes manually added entries."
: "This backup does not include manually added entries."
].join("\n")
);
const mode = replaceMode ? "replace" : "merge";
if (
replaceMode &&
!confirm(
backupHasManualExtensions
? "Replace will remove current instance JSON files and replace manually added entries from this backup. Continue?"
: "Replace will remove current instance JSON files. Current manually added entries will be kept because this backup has none. Continue?"
)
) {
setInstanceStatus("Restore cancelled.");
return;
}
let authHeaders;
try {
authHeaders = await requestAdminAuthHeaders("restore instances backup");
} catch (err) {
setInstanceStatus(err.message, true);
return;
}
setInstanceStatus(`Uploading backup in ${mode} mode...`);
try {
const response = await fetch(`/api/instances/restore?mode=${encodeURIComponent(mode)}`, {
method: "POST",
headers: {
...authHeaders,
"Content-Type": "application/json",
},
body: backupText,
});
const data = await response.json().catch(() => ({}));
if (!response.ok || data.ok === false) {
throw new Error(data.error || `HTTP ${response.status}`);
}
knownInstances = data.instances || [];
manualExtensions = data.manualExtensions || [];
renderInstances(knownInstances);
renderManualExtensions(manualExtensions);
const manualText = data.manualBackupIncluded
? ` and ${data.restoredManualExtensions || 0} manual extension entr${(data.restoredManualExtensions || 0) === 1 ? "y" : "ies"}`
: "";
setInstanceStatus(`Backup restored. Restored ${data.restored} instance(s)${manualText}.`);
} catch (err) {
console.error(err);
setInstanceStatus(err.message, true);
}
}
function renderEvrPanelSettings(payload, apiUrl) {
const data = payload || {};
const dnsApi = data.dnsAPI || data.dnsApi || {};
const dnsResponse = dnsApi.response || {};
const dnsApiLabel = [
dnsApi.dnsapiURL || dnsApi.url || "",
dnsResponse.version !== undefined ? `version ${dnsResponse.version}` : "",
dnsResponse.status || "",
].filter(Boolean).join(" | ");
setEvrPanelField("#evrPanelApiUrl", apiUrl);
setEvrPanelField("#evrPanelEvernodeVersion", data.version);
setEvrPanelField("#evrPanelEvernodeApiVersion", data.apiVersion);
setEvrPanelField("#evrPanelDnsActive", dnsApi.status === true ? "active" : dnsApi.status === false ? "inactive" : "-");
setEvrPanelField("#evrPanelDnsApi", dnsApiLabel);
setEvrPanelField("#evrPanelUserInstallVersion", data.userinstall && data.userinstall.version);
}
async function fetchEvrPanelSettings() {
if (evrPanelSettingsLoading) {
return;
}
if (!selectedAcquireDomain || selectedAcquireDomain === "-") {
setEvrPanelStatus("Selected host has no domain to fetch /api/ from.", "danger");
return;
}
evrPanelSettingsLoading = true;
setEvrPanelStatus(`Fetching https://${selectedAcquireDomain}/api/ ...`, "info");
try {
const data = await instanceApi(`/api/evrpanel-info?domain=${encodeURIComponent(selectedAcquireDomain)}&t=${Date.now()}`, {
method: "GET",
actionName: "fetch EvrPanel settings",
});
renderEvrPanelSettings(data.data || {}, data.url || "");
evrPanelSettingsLoaded = true;
setEvrPanelStatus("EvrPanel API details loaded.", "success");
} catch (err) {
console.error(err);
setEvrPanelStatus(err.message, "danger");
} finally {
evrPanelSettingsLoading = false;
}
}
function toggleEvrPanelSettings() {
const body = $("#evrPanelSettingsBody");
const isOpening = body.hasClass("d-none");
body.toggleClass("d-none", !isOpening);
$("#toggleEvrPanelSettingsBtn").text(isOpening ? "Collapse" : "Expand");
if (isOpening && !evrPanelSettingsLoaded) {
fetchEvrPanelSettings();
}
}
function updateOtpInputState() {
if (otpEnvelopeIsEnabled) {
$("#otpSourceStatus").html(
`<span class="text-success">OTP envelope mode is enabled. Each protected action will ask for an admin envelope or OTP code.</span>`
);
} else {
$("#otpSourceStatus").html(
`<span class="text-warning">No valid OTP secret found on server. Each protected action will ask for the admin private key.</span>`
);
}
}
function updateSeedInputState() {
$("#instanceSeed").val("");
if (encryptedSeedAvailable) {
$("#seedSourceStatus").html(
`<span class="text-success">Encrypted seed secret found. The server will decrypt and use it automatically.</span>`
);
} else {
$("#seedSourceStatus").html(
`<span class="text-warning">No encrypted seed secret found. Seed-requiring actions will ask for the wallet seed in a popup.</span>`
);
}
}
function requestSeedIfNeeded(actionName = "this action") {
if (encryptedSeedAvailable) {
return Promise.resolve("");
}
return new Promise((resolve, reject) => {
pendingSeedPrompt = { resolve, reject };
$("#seedPromptAction").text(actionName);
$("#seedPromptInput").val("");
$("#seedPromptStatus").text("");
seedPromptModal.show();
forceModalOnTop("#seedPromptModal");
setTimeout(() => {
$("#seedPromptInput").trigger("focus");
}, 300);
});
}
function confirmSeedPrompt() {
if (!pendingSeedPrompt) {
seedPromptModal.hide();
return;
}
const seed = $("#seedPromptInput").val().trim();
if (!seed) {
$("#seedPromptStatus").text("Wallet seed is required.");
return;
}
const pending = pendingSeedPrompt;
pendingSeedPrompt = null;
$("#seedPromptInput").val("");
$("#seedPromptStatus").text("");
seedPromptModal.hide();
pending.resolve(seed);
}
async function loadSeedStatus() {
try {
const response = await fetch(`/api/seed-status?t=${Date.now()}`, {
method: "GET",
cache: "no-store",
headers: {
"Cache-Control": "no-cache"
}
});
const data = await response.json();
encryptedSeedAvailable = data.encryptedSeedAvailable === true;
otpEnvelopeIsEnabled = data.otpEnvelopeEnabled === true;
otpCodeDigits = Number(data.otpDigits || 24);
updateSeedInputState();
updateOtpInputState();
console.log("Seed status:", data.debug || data);
} catch (err) {
console.error(err);
encryptedSeedAvailable = false;
otpEnvelopeIsEnabled = false;
otpCodeDigits = 24;
updateSeedInputState();
updateOtpInputState();
}
}
function setDeployBootstrapStatus(message, type = "info") {
$("#deployBootstrapStatus")
.removeClass("text-info text-danger text-success text-warning")
.addClass(`text-${type}`)
.text(message || "");
}
async function loadInstances(authHeaders = null) {
setInstanceStatus("Loading instances...");
try {
const includeHidden = $("#showHiddenInstances").is(":checked");
const query = includeHidden ? "?includeHidden=1" : "";
const data = await instanceApi(`/api/instances${query}`, {
actionName: "refresh instances",
authHeaders
});
const rawInstances = data.instances || [];
const manualItems = data.manualExtensions || [];
const instances = includeHidden
? rawInstances.filter(instance => instance.hidden === true)
: rawInstances.filter(instance => instance.hidden !== true);
knownInstances = instances;
manualExtensions = manualItems;
renderInstances(instances);
renderManualExtensions(manualItems);
if (includeHidden) {
setInstanceStatus(`Loaded ${instances.length} hidden instance(s) and ${manualItems.length} manual extension entr${manualItems.length === 1 ? "y" : "ies"}.`);
} else {
setInstanceStatus(`Loaded ${instances.length} visible instance(s) and ${manualItems.length} manual extension entr${manualItems.length === 1 ? "y" : "ies"}.`);
}
} catch (err) {
console.error(err);
setInstanceStatus(err.message, true);
}
}
function timestampToLocalDatetimeValue(timestamp) {
const value = Number(timestamp);
if (!Number.isFinite(value) || value <= 0) {
return "";
}
const date = new Date(value);
const local = new Date(date.getTime() - date.getTimezoneOffset() * 60000);
return local.toISOString().slice(0, 16);
}
function datetimeLocalToIso(value) {
const text = String(value || "").trim();
if (!text) {
return "";
}
const date = new Date(text);
if (Number.isNaN(date.getTime())) {
return "";
}
return date.toISOString();
}
function getManualCreatedTimestampValue() {
const raw = String($("#manualCreatedTimestamp").val() || "").trim();
if (!raw) {
return null;
}
const timestamp = Number(raw);
if (!Number.isFinite(timestamp) || timestamp <= 0) {
throw new Error("Created timestamp must be a number like 1781657495192.");
}
return timestamp;
}
function fillManualExpiryFromCreatedTimestamp() {
try {
const createdTimestamp = getManualCreatedTimestampValue();
if (!createdTimestamp) {
setManualExtensionsStatus("Enter a created timestamp first.", true);
return;
}
const expiryTimestamp = createdTimestamp + 60 * 60 * 1000;
$("#manualExpiryDate").val(timestampToLocalDatetimeValue(expiryTimestamp));
setManualExtensionsStatus("Expiry set to created timestamp + 1 hour.");
} catch (err) {
setManualExtensionsStatus(err.message, true);
}
}
function manualExtensionToExtendItem(item) {
return {
...item,
manual_extension: true,
instance_id: item.instance_id || item.instanceName || "",
host_address: item.host_address || item.r_address || item.address || "",
contract_id: "",
};
}
function renderManualExtensions(items = []) {
const body = $("#manualExtensionsBody");
body.html("");
if (!items.length) {
body.append('<tr><td colspan="8" class="muted">No manually added entries yet.</td></tr>');
setManualExtensionsStatus("No manually added entries.");
return;
}
items.forEach(rawItem => {
const item = manualExtensionToExtendItem(rawItem);
const instanceName = item.instance_id || "";
const address = item.host_address || "";
const created = item.created_timestamp ? formatDateTime(item.created_timestamp) : "-";
const expires = formatDateTime(item.expires_timestamp);
const status = getInstanceStatus(item);
const statusClass = status === "expired" ? "expired" : status === "active" ? "active" : "unknown";
const lastExtension = item.last_extension
? [
item.last_extension.extended_at ? new Date(item.last_extension.extended_at).toLocaleString() : "",
item.last_extension.expiryMoment ? `moment ${item.last_extension.expiryMoment}` : "",
item.last_extension.txHash ? `tx ${shorten(item.last_extension.txHash, 10)}` : "",
].filter(Boolean).join(" / ")
: "-";
const row = $(`
<tr>
<td>
<input class="form-check-input manual-extension-select-checkbox"
type="checkbox"
value="${escapeHtml(instanceName)}">
</td>
<td><code title="${escapeHtml(instanceName)}">${escapeHtml(shorten(instanceName, 12))}</code></td>
<td>
<div class="d-flex gap-2 align-items-center flex-wrap">
<code title="${escapeHtml(address)}">${escapeHtml(shorten(address, 12))}</code>
<button class="btn btn-sm btn-outline-info manual-copy-address-btn" ${address ? "" : "disabled"}>
Copy
</button>
</div>
</td>
<td>${escapeHtml(created)}</td>
<td>${escapeHtml(expires)}</td>
<td><span class="pill ${statusClass}">${escapeHtml(status)}</span></td>
<td>${escapeHtml(lastExtension)}</td>
<td>
<div class="d-flex gap-2 align-items-center flex-wrap">
<input type="number"
class="form-control form-control-sm small-input manual-extend-moments"
min="1"
value="1" />
<button class="btn btn-sm btn-primary manual-extend-btn">Extend</button>
<button class="btn btn-sm btn-outline-info manual-edit-btn">Edit</button>
<button class="btn btn-sm btn-outline-danger manual-delete-btn">Delete</button>
</div>
</td>
</tr>
`);
row.find(".manual-extend-btn").click(async function () {
const moments = Number(row.find(".manual-extend-moments").val());
await extendInstance({
instanceName,
address,
moments,
manual: true,
});
});
row.find(".manual-copy-address-btn").click(async function () {
await copyTextToClipboard(address, "r address copied.", setManualExtensionsStatus);
});
row.find(".manual-edit-btn").click(function () {
$("#manualInstanceName").val(instanceName);
$("#manualRAddress").val(address);
$("#manualCreatedTimestamp").val(item.created_timestamp || "");
$("#manualExpiryDate").val(timestampToLocalDatetimeValue(item.expires_timestamp));
setManualExtensionsStatus(`Editing ${instanceName}. Change fields, then click Add / Update.`);
});
row.find(".manual-delete-btn").click(async function () {
await deleteManualExtension(instanceName);
});
body.append(row);
});
setManualExtensionsStatus(`Loaded ${items.length} manually added entr${items.length === 1 ? "y" : "ies"}.`);
}
async function saveManualExtension() {
let authHeaders;
try {
authHeaders = await requestAdminAuthHeaders("save manual extension");
} catch (err) {
setManualExtensionsStatus(err.message, true);
return;
}
try {
const instanceName = String($("#manualInstanceName").val() || "").trim();
const address = String($("#manualRAddress").val() || "").trim();
const createdTimestamp = String($("#manualCreatedTimestamp").val() || "").trim();
const expiresAt = datetimeLocalToIso($("#manualExpiryDate").val());
if (!instanceName || !address) {
setManualExtensionsStatus("Instance name and r address are required.", true);
return;
}
if (!expiresAt && !createdTimestamp) {
setManualExtensionsStatus("Set expiry date manually, or enter created timestamp so expiry can be calculated as +1 hour.", true);
return;
}
const data = await instanceApi("/api/manual-extensions", {
method: "POST",
actionName: "save manual extension",
authHeaders,
body: JSON.stringify({
instanceName,
address,
createdTimestamp,
expiresAt,
}),
});
manualExtensions = data.manualExtensions || [];
renderManualExtensions(manualExtensions);
setManualExtensionsStatus(`Saved manual extension ${instanceName}.`);
} catch (err) {
console.error(err);
setManualExtensionsStatus(err.message, true);
}
}
async function deleteManualExtension(instanceName) {
let authHeaders;
try {
authHeaders = await requestAdminAuthHeaders("delete manual extension");
} catch (err) {
setManualExtensionsStatus(err.message, true);
return;
}
try {
const data = await instanceApi("/api/manual-extensions/delete", {
method: "POST",
actionName: "delete manual extension",
authHeaders,
body: JSON.stringify({ instanceName }),
});
manualExtensions = data.manualExtensions || [];
renderManualExtensions(manualExtensions);
setManualExtensionsStatus(`Deleted manual extension ${instanceName}.`);
} catch (err) {
console.error(err);
setManualExtensionsStatus(err.message, true);
}
}
function getSelectedInstanceNames() {
return $(".instance-select-checkbox:checked")
.map(function () {
return String($(this).val() || "").trim();
})
.get()
.filter(Boolean);
}
function getSelectedExtendItems() {
const selectedInstanceNames = new Set(getSelectedInstanceNames());
const selectedManualNames = new Set(getSelectedManualExtensionNames());
const selectedInstances = knownInstances
.filter(instance => selectedInstanceNames.has(String(instance.instance_id || "").trim()))
.map(instance => ({
instanceName: String(instance.instance_id || "").trim(),
address: String(instance.host_address || "").trim(),
manual: false,
}));
const selectedManualExtensions = manualExtensions
.map(item => manualExtensionToExtendItem(item))
.filter(item => selectedManualNames.has(String(item.instance_id || "").trim()))
.map(item => ({
instanceName: String(item.instance_id || "").trim(),
address: String(item.host_address || "").trim(),
manual: true,
}));
return [
...selectedInstances,
...selectedManualExtensions,
].filter(item => item.instanceName && item.address);
}
async function bulkUpdateInstances(action) {
const instanceNames = getSelectedInstanceNames();
const selectedManualCount = getSelectedManualExtensionNames().length;
if (!instanceNames.length) {
if (selectedManualCount) {
setInstanceStatus("Hide/unhide only applies to rows in My Instances. Manual entries cannot be hidden.", true);
setManualExtensionsStatus("Manual entries cannot be hidden; use Delete selected or Extend selected instead.", true);
return;
}
setInstanceStatus("Select at least one instance.", true);
return;
}
if (selectedManualCount && action !== "delete") {
setManualExtensionsStatus("Manual selections ignored for hide/unhide. Manual entries do not have a hidden state.");
}
if (action === "delete") {
const ok = confirm(
`Delete ${instanceNames.length} instance record(s) from the dashboard?\n\n` +
"This deletes the local JSON record only. It does not destroy the Evernode instance."
);
if (!ok) {
return;
}
}
let authHeaders;
try {
authHeaders = await requestAdminAuthHeaders(`${action} selected instances`);
} catch (err) {
setInstanceStatus(err.message, true);
return;
}
setInstanceStatus(`${action} selected ${instanceNames.length} instance(s)...`);
try {
const data = await instanceApi("/api/instances/bulk", {
method: "POST",
actionName: `${action} selected instances`,
authHeaders,
body: JSON.stringify({
action,
instanceNames,
}),
});
knownInstances = data.instances || knownInstances;
manualExtensions = data.manualExtensions || manualExtensions;
await loadInstances(authHeaders);
$("#selectAllInstances").prop("checked", false);
setInstanceStatus(`${action} completed for ${data.count || instanceNames.length} instance(s).`);
} catch (err) {
console.error(err);
setInstanceStatus(err.message, true);
}
}
async function deleteSelectedRows() {
const instanceNames = getSelectedInstanceNames();
const manualNames = getSelectedManualExtensionNames();
const totalSelected = instanceNames.length + manualNames.length;
if (!totalSelected) {
setInstanceStatus("Select at least one instance or manual entry to delete.", true);
setManualExtensionsStatus("Select at least one instance or manual entry to delete.", true);
return;
}
const parts = [];
if (instanceNames.length) {
parts.push(`${instanceNames.length} instance record${instanceNames.length === 1 ? "" : "s"}`);
}
if (manualNames.length) {
parts.push(`${manualNames.length} manual entr${manualNames.length === 1 ? "y" : "ies"}`);
}
const ok = confirm(
`Delete selected ${parts.join(" and ")} from the dashboard?\n\n` +
"This does not destroy anything on Evernode. It removes dashboard/local records only."
);
if (!ok) {
return;
}
let authHeaders;
try {
authHeaders = await requestAdminAuthHeaders("delete selected rows");
} catch (err) {
setInstanceStatus(err.message, true);
setManualExtensionsStatus(err.message, true);
return;
}
setInstanceStatus(`Deleting selected rows (${totalSelected})...`);
try {
let deletedInstanceCount = 0;
let deletedManualCount = 0;
if (instanceNames.length) {
const data = await instanceApi("/api/instances/bulk", {
method: "POST",
actionName: "delete selected instances",
authHeaders,
body: JSON.stringify({
action: "delete",
instanceNames,
}),
});
deletedInstanceCount = data.count || instanceNames.length;
}
if (manualNames.length) {
const data = await instanceApi("/api/manual-extensions/bulk-delete", {
method: "POST",
actionName: "delete selected manual extensions",
authHeaders,
body: JSON.stringify({
instanceNames: manualNames,
}),
});
deletedManualCount = data.deleted || manualNames.length;
}
await loadInstances(authHeaders);
$("#selectAllInstances").prop("checked", false);
$("#selectAllManualExtensions").prop("checked", false);
const messageParts = [];
if (deletedInstanceCount) {
messageParts.push(`${deletedInstanceCount} instance record${deletedInstanceCount === 1 ? "" : "s"}`);
}
if (deletedManualCount) {
messageParts.push(`${deletedManualCount} manual entr${deletedManualCount === 1 ? "y" : "ies"}`);
}
const message = `Deleted ${messageParts.join(" and ")}.`;
setInstanceStatus(message);
setManualExtensionsStatus(message);
} catch (err) {
console.error(err);
setInstanceStatus(err.message, true);
setManualExtensionsStatus(err.message, true);
}
}
function getSelectedManualExtensionNames() {
return $(".manual-extension-select-checkbox:checked")
.map(function () {
return String($(this).val() || "").trim();
})
.get()
.filter(Boolean);
}
async function bulkDeleteManualExtensions() {
const instanceNames = getSelectedManualExtensionNames();
if (!instanceNames.length) {
setManualExtensionsStatus("Select at least one manual extension entry.", true);
return;
}
const ok = confirm(
`Delete ${instanceNames.length} manual extension entr${instanceNames.length === 1 ? "y" : "ies"}?`
);
if (!ok) {
return;
}
let authHeaders;
try {
authHeaders = await requestAdminAuthHeaders("delete selected manual extensions");
} catch (err) {
setManualExtensionsStatus(err.message, true);
return;
}
setManualExtensionsStatus(`Deleting ${instanceNames.length} selected manual entr${instanceNames.length === 1 ? "y" : "ies"}...`);
try {
const data = await instanceApi("/api/manual-extensions/bulk-delete", {
method: "POST",
actionName: "delete selected manual extensions",
authHeaders,
body: JSON.stringify({
instanceNames,
}),
});
knownInstances = data.instances || knownInstances;
manualExtensions = data.manualExtensions || [];
await loadInstances(authHeaders);
$("#selectAllManualExtensions").prop("checked", false);
setManualExtensionsStatus(`Deleted ${data.deleted || instanceNames.length} selected manual entr${instanceNames.length === 1 ? "y" : "ies"}.`);
} catch (err) {
console.error(err);
setManualExtensionsStatus(err.message, true);
}
}
function getExtendableManualExtensions() {
return manualExtensions
.map(manualExtensionToExtendItem)
.filter(item =>
String(item.instance_id || "").trim() &&
String(item.host_address || "").trim()
);
}
async function extendAllManualExtensions() {
const moments = Number($("#extendAllManualMoments").val() || 1);
if (!Number.isInteger(moments) || moments <= 0) {
setManualExtensionsStatus("Invalid manual extend moments.", true);
return;
}
const matchingInstances = getExtendableManualExtensions();
if (!matchingInstances.length) {
setManualExtensionsStatus("No manually added entries available to extend.", true);
return;
}
let authHeaders;
let actionSeed = "";
try {
authHeaders = await requestAdminAuthHeaders("extend all manually added");
actionSeed = await requestSeedIfNeeded("extend all manually added");
} catch (err) {
setManualExtensionsStatus(err.message, true);
return;
}
openExtendConsole(
"Extend Manual ALL Console",
[
`Starting manual Extend ALL for ${matchingInstances.length} entr${matchingInstances.length === 1 ? "y" : "ies"}.`,
`Moments: ${moments}`,
`Started: ${new Date().toISOString()}`,
].join("\n")
);
$("#extendAllClustersBtn, .manual-extend-btn, .extend-btn").prop("disabled", true);
try {
const results = [];
for (let index = 0; index < matchingInstances.length; index += 1) {
const instance = matchingInstances[index];
const instanceName = instance.instance_id || "";
const address = instance.host_address || "";
appendExtendSeparator(`${index + 1}/${matchingInstances.length}: ${instanceName}`);
appendExtendConsole(`Manual r address: ${address}`);
setManualExtensionsStatus(`Extending manual ${index + 1}/${matchingInstances.length}: ${shorten(instanceName, 10)}...`);
try {
const data = await startExtendWithConsole({
instanceName,
address,
moments,
seed: actionSeed,
authHeaders,
actionName: "extend all manually added",
manual: true,
});
appendExtendResult({ instanceName, ok: true, data });
results.push({ instanceName, ok: true, error: "" });
} catch (err) {
console.error(`Manual extend failed for ${instanceName}:`, err);
appendExtendResult({ instanceName, ok: false, error: err });
results.push({ instanceName, ok: false, error: err.message });
}
}
const successCount = results.filter(result => result.ok).length;
const failed = results.filter(result => !result.ok);
await loadInstances(authHeaders);
appendExtendSeparator("SUMMARY");
appendExtendConsole(`Succeeded: ${successCount}`);
appendExtendConsole(`Failed: ${failed.length}`);
if (failed.length) {
failed.forEach(result => appendExtendConsole(`- ${result.instanceName}: ${result.error}`));
$("#extendConsoleStatus").text(`Finished with ${failed.length} manual failure(s).`);
setManualExtensionsStatus(`Manual Extend ALL finished: ${successCount} succeeded, ${failed.length} failed.`, true);
} else {
$("#extendConsoleStatus").text("Finished successfully.");
setManualExtensionsStatus(`Manual Extend ALL finished: ${successCount} succeeded, 0 failed.`);
}
} catch (err) {
console.error(err);
appendExtendSeparator("FATAL ERROR");
appendExtendConsole(err.message);
appendExtendBackendOutput(err);
$("#extendConsoleStatus").text("Fatal manual extend error.");
setManualExtensionsStatus(err.message, true);
} finally {
$("#extendAllClustersBtn, .manual-extend-btn, .extend-btn").prop("disabled", false);
}
}
function normalizePubkeyForCompare(value) {
return String(value || "").trim().toLowerCase();
}
function getLatestUnlForInstance(instance) {
const sequences = [];
if (Array.isArray(instance.bootstrap_deploys)) {
sequences.push(...instance.bootstrap_deploys);
}
if (instance.bootstrap_deploy && Array.isArray(instance.bootstrap_deploy.sequence)) {
sequences.push(...instance.bootstrap_deploy.sequence);
}
for (let index = sequences.length - 1; index >= 0; index -= 1) {
const deploy = sequences[index] || {};
if (Array.isArray(deploy.unl) && deploy.unl.length) {
return deploy.unl
.map(value => String(value || "").trim())
.filter(Boolean);
}
}
if (instance.bootstrap_deploy && Array.isArray(instance.bootstrap_deploy.unl) && instance.bootstrap_deploy.unl.length) {
return instance.bootstrap_deploy.unl
.map(value => String(value || "").trim())
.filter(Boolean);
}
if (Array.isArray(instance.selected_cluster_unl) && instance.selected_cluster_unl.length) {
return instance.selected_cluster_unl
.map(value => String(value || "").trim())
.filter(Boolean);
}
if (Array.isArray(instance.initial_unl) && instance.initial_unl.length) {
return instance.initial_unl
.map(value => String(value || "").trim())
.filter(Boolean);
}
return [];
}
function calculateUnlCoverage(groupInstances) {
const trackedPubkeys = new Set(
groupInstances
.map(instance => normalizePubkeyForCompare(instance.pubkey))
.filter(Boolean)
);
const counts = new Map();
trackedPubkeys.forEach(pubkey => counts.set(pubkey, 0));
groupInstances.forEach(instance => {
const latestUnl = getLatestUnlForInstance(instance);
const countedForThisInstance = new Set();
latestUnl.forEach(pubkey => {
const normalized = normalizePubkeyForCompare(pubkey);
if (trackedPubkeys.has(normalized)) {
countedForThisInstance.add(normalized);
}
});
countedForThisInstance.forEach(pubkey => {
counts.set(pubkey, (counts.get(pubkey) || 0) + 1);
});
});
return {
total: trackedPubkeys.size,
counts,
};
}
function makeUnlCoverageBadge(instance, coverage) {
const pubkey = normalizePubkeyForCompare(instance.pubkey);
const total = Number(coverage?.total || 0);
const count = pubkey ? Number(coverage?.counts?.get(pubkey) || 0) : 0;
const badgeClass = total > 0 && count === total
? "bg-success"
: count > 0
? "bg-info text-dark"
: "bg-secondary";
return `
<span style="display:none;" class="badge ${badgeClass}"
title="How many tracked nodes in this contract currently have this node pubkey in their latest recorded UNL">
in ${count}/${total || 0} UNLs
</span>
`;
}
function renderInstances(instances) {
const body = $("#instancesBody");
body.html("");
if (!instances.length) {
body.html(`
<tr>
<td colspan="11" class="muted">No instances tracked yet.</td>
</tr>
`);
return;
}
const groups = new Map();
instances.forEach(instance => {
const contractId = instance.contract_id || "";
const groupKey = contractId || "__NO_CONTRACT__";
if (!groups.has(groupKey)) {
groups.set(groupKey, []);
}
groups.get(groupKey).push(instance);
});
const sortedGroups = [...groups.entries()].sort(([a], [b]) => {
if (a === "__NO_CONTRACT__") return 1;
if (b === "__NO_CONTRACT__") return -1;
return a.localeCompare(b);
});
sortedGroups.forEach(([contractKey, groupInstances]) => {
const contractLabel = contractKey === "__NO_CONTRACT__"
? "No contract"
: contractKey;
const unlCoverage = calculateUnlCoverage(groupInstances);
const markedFirstInstance = groupInstances.find(item => item.cluster_first_instance === true) || null;
const clusterName = groupInstances
.map(item => String(item.cluster_name || item.clusterName || "").trim())
.find(Boolean) || "";
const groupRow = $(`
<tr class="contract-group-row">
<td colspan="11">
<div class="d-flex justify-content-between align-items-center flex-wrap gap-2">
<div>
<strong>Contract:</strong>
<code title="${escapeHtml(contractLabel)}">
${escapeHtml(shorten(contractLabel, 24))}
</code>
<span class="ms-2">
${groupInstances.length} instance(s)
</span>
${clusterName ? `
<span class="badge bg-warning text-dark ms-2" title="Cluster name">
${escapeHtml(clusterName)}
</span>
` : ""}
</div>
<div class="d-flex gap-2 align-items-center flex-wrap">
<input type="number"
class="form-control form-control-sm small-input contract-extend-moments"
min="1"
value="1"
title="Moments to extend all instances in this contract">
<button class="btn btn-sm btn-outline-info extend-contract-group-btn"
${contractKey === "__NO_CONTRACT__" ? "disabled" : ""}>
Extend all
</button>
</div>
</div>
</td>
</tr>
`);
groupRow.find(".extend-contract-group-btn").click(async function () {
const moments = Number(groupRow.find(".contract-extend-moments").val());
await extendAllInstancesForContract({
contractId: contractKey,
moments
});
});
body.append(groupRow);
groupInstances.forEach(instance => {
const instanceId = instance.instance_id || "";
const hostAddress = instance.host_address || "";
const contractId = instance.contract_id || "";
const pubkey = instance.pubkey || "";
const domain = instance.domain || "-";
const peerPort = instance.peer_port || "";
const userPort = instance.user_port || "";
const gpTcpPort = instance.gp_tcp_port || "";
const gpUdpPort = instance.gp_udp_port || "";
const knownPeerValue = domain && domain !== "-" && peerPort
? `${domain}:${peerPort}`
: "";
const isClusterFirstInstance = instance.cluster_first_instance === true;
const unlCoverageBadge = makeUnlCoverageBadge(instance, unlCoverage);
const userWebsocketValue = domain && domain !== "-" && userPort
? `${domain}:${userPort}`
: "";
const gpTcpValue = domain && domain !== "-" && gpTcpPort
? `${domain}:${gpTcpPort}`
: "";
const gpUdpValue = domain && domain !== "-" && gpUdpPort
? `${domain}:${gpUdpPort}`
: "";
const nodeDescription =
instance.node_description ||
instance.nodeDescription ||
instance.description ||
"-";
const isHidden = instance.hidden === true;
const status = isHidden ? "hidden" : getInstanceStatus(instance);
const statusClass = status === "hidden"
? "hidden"
: status === "expired"
? "expired"
: status === "active"
? "active"
: "unknown";
const expires = formatDateTime(instance.expires_timestamp);
const ports = [
`peer: ${instance.peer_port || "-"}`,
`user: ${instance.user_port || "-"}`,
`gp_tcp: ${instance.gp_tcp_port || "-"}`,
`gp_udp: ${instance.gp_udp_port || "-"}`
].join("<br>");
const row = $(`
<tr>
<td>
<input class="form-check-input instance-select-checkbox"
type="checkbox"
value="${escapeHtml(instanceId)}">
</td>
<td>
<div class="d-flex flex-column gap-1">
<code title="${escapeHtml(instanceId)}">
${escapeHtml(shorten(instanceId, 12))}
</code>
<div class="d-flex gap-1 align-items-center flex-wrap">
<button class="btn btn-sm ${isClusterFirstInstance ? "btn-warning" : "btn-outline-secondary"} toggle-cluster-first-btn"
${contractId ? "" : "disabled"}
title="${isClusterFirstInstance ? "Unmark this node" : "Mark this node"}">
${isClusterFirstInstance ? "★" : "☆"}
</button>
${unlCoverageBadge}
</div>
</div>
</td>
<td>
<div class="d-flex gap-2 align-items-center flex-wrap">
<code title="${escapeHtml(hostAddress)}">
${escapeHtml(shorten(hostAddress, 12))}
</code>
<button class="btn btn-sm btn-outline-info copy-host-address-btn" ${hostAddress ? "" : "disabled"}>
Copy
</button>
</div>
</td>
<td>
<div class="d-flex flex-column gap-1">
<code title="${escapeHtml(contractId)}">
${escapeHtml(shorten(contractId, 10))}
</code>
<button class="btn btn-sm btn-outline-info copy-contract-btn" ${contractId ? "" : "disabled"}>
Copy contract
</button>
</div>
</td>
<td>
<div class="d-flex gap-2 align-items-center flex-wrap">
<code title="${escapeHtml(pubkey)}">
${escapeHtml(shorten(pubkey, 12))}
</code>
<button class="btn btn-sm btn-outline-info copy-pubkey-btn" ${pubkey ? "" : "disabled"}>
Copy
</button>
</div>
</td>
<td>
<div class="d-flex flex-column gap-1">
<span>${escapeHtml(domain)}</span>
<div class="d-flex gap-1 flex-wrap">
<button class="btn btn-sm btn-outline-info copy-domain-btn" ${domain && domain !== "-" ? "" : "disabled"}>
Copy
</button>
<button class="btn btn-sm btn-outline-info copy-known-peer-btn" ${knownPeerValue ? "" : "disabled"}>
Known peer
</button>
<button class="btn btn-sm btn-outline-info copy-user-ws-btn" ${userWebsocketValue ? "" : "disabled"}>
User WS
</button>
<button class="btn btn-sm btn-outline-info copy-gp-tcp-btn" ${gpTcpValue ? "" : "disabled"}>
GP TCP
</button>
<button class="btn btn-sm btn-outline-info copy-gp-udp-btn" ${gpUdpValue ? "" : "disabled"}>
GP UDP
</button>
</div>
</div>
</td>
<td style="min-width: 160px;">
${escapeHtml(nodeDescription)}
</td>
<td><code>${ports}</code></td>
<td>${escapeHtml(expires)}</td>
<td><span class="pill ${statusClass}">${escapeHtml(status)}</span></td>
<td>
<div class="d-flex gap-2 align-items-center flex-wrap">
<input type="number"
class="form-control form-control-sm small-input extend-moments"
min="1"
value="1" />
<button class="btn btn-sm btn-primary extend-btn">Extend</button>
<button class="btn btn-sm btn-success deploy-contract-btn">Deploy Contract</button>
<button class="btn btn-sm btn-outline-warning hide-instance-btn">
${isHidden ? "Unhide" : "Hide"}
</button>
</div>
</td>
</tr>
`);
row.find(".copy-pubkey-btn").click(async function () {
await copyTextToClipboard(pubkey, "Public key copied.");
});
row.find(".copy-host-address-btn").click(async function () {
await copyTextToClipboard(hostAddress, "r address copied.");
});
row.find(".copy-contract-btn").click(async function () {
await copyTextToClipboard(contractId, "Contract ID copied.");
});
row.find(".copy-domain-btn").click(async function () {
await copyTextToClipboard(domain, "Domain copied.");
});
row.find(".copy-known-peer-btn").click(async function () {
await copyTextToClipboard(knownPeerValue, "Known peer copied.");
});
row.find(".copy-user-ws-btn").click(async function () {
await copyTextToClipboard(userWebsocketValue, "User websocket copied.");
});
row.find(".copy-gp-tcp-btn").click(async function () {
await copyTextToClipboard(gpTcpValue, "GP TCP copied.");
});
row.find(".copy-gp-udp-btn").click(async function () {
await copyTextToClipboard(gpUdpValue, "GP UDP copied.");
});
row.find(".extend-btn").click(async function () {
const moments = Number(row.find(".extend-moments").val());
await extendInstance({
instanceName: instanceId,
address: hostAddress,
moments
});
});
row.find(".deploy-contract-btn").click(function () {
openBootstrapDeployModal(instance);
});
row.find(".hide-instance-btn").click(async function () {
await hideInstance(instanceId, !isHidden);
});
row.find(".toggle-cluster-first-btn").click(async function () {
await toggleClusterFirstInstance({
instanceName: instanceId,
makeFirst: !isClusterFirstInstance,
});
});
body.append(row);
});
});
}
function normalizeExtendConsoleText(value, maxLength = 120000) {
const text = String(value || "").replace(/\r\n/g, "\n").replace(/\r/g, "\n").trim();
if (!text) {
return "";
}
if (text.length <= maxLength) {
return text;
}
return `...[trimmed ${text.length - maxLength} earlier characters]\n${text.slice(-maxLength)}`;
}
function openExtendConsole(title, intro = "") {
$("#extendConsoleTitle").text(title || "Extend Console");
$("#extendConsoleStatus").text("Running...");
$("#extendConsoleLog").text("");
if (intro) {
appendExtendConsole(intro);
}
if (extendConsoleModal) {
extendConsoleModal.show();
}
}
function appendExtendConsole(message = "") {
const text = String(message || "");
const log = $("#extendConsoleLog");
const previous = log.text();
const next = previous
? `${previous}\n${text}`
: text;
log.text(next);
const node = log[0];
if (node) {
node.scrollTop = node.scrollHeight;
}
}
function appendExtendSeparator(label) {
appendExtendConsole(`\n========== ${label} ==========`);
}
function appendExtendBackendOutput(dataOrError) {
const data = dataOrError?.data || dataOrError || {};
const output = normalizeExtendConsoleText(
data.output ||
data.extension?.output ||
""
);
if (output) {
appendExtendConsole(output);
}
}
function appendExtendResult({ instanceName, ok, data = null, error = null }) {
const cleanName = instanceName || "[unknown]";
if (ok) {
const expiryMoment = data?.extension?.expiryMoment || "";
const txHash = data?.extension?.txHash || "";
appendExtendConsole(
`SUCCESS: ${cleanName}${expiryMoment ? ` / expiry moment ${expiryMoment}` : ""}${txHash ? ` / tx ${txHash}` : ""}`
);
appendExtendBackendOutput(data);
return;
}
appendExtendConsole(`FAILED: ${cleanName} / ${error?.message || "Unknown error"}`);
appendExtendBackendOutput(error);
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function fetchExtendJob(runId) {
const response = await fetch(`/api/extend/jobs/${encodeURIComponent(runId)}?t=${Date.now()}`, {
headers: {
"Accept": "application/json",
},
});
const data = await response.json().catch(() => ({}));
if (!response.ok || data.ok === false) {
const error = new Error(data.error || `HTTP ${response.status}`);
error.data = data;
throw error;
}
return data.job || {};
}
async function waitForExtendJob(runId, instanceName) {
let lastLogLength = 0;
for (;;) {
const job = await fetchExtendJob(runId);
const log = String(job.log || "");
if (log.length > lastLogLength) {
appendExtendConsole(log.slice(lastLogLength));
lastLogLength = log.length;
}
const hasHardFailureInLog =
/(^|\n)\s*TRANSACTION_FAILURE\s*($|\n)/i.test(log) ||
/EV_EXTEND_FAIL_JSON/i.test(log);
if (hasHardFailureInLog) {
const error = new Error(`Extend failed for ${instanceName || "instance"}: TRANSACTION_FAILURE`);
error.data = {
ok: false,
runId,
extension: job.extension || null,
output: job.log || "",
error: error.message,
};
throw error;
}
if (job.status === "success") {
return {
ok: true,
runId,
extension: job.extension || {},
output: job.log || "",
};
}
if (job.status === "failed") {
const error = new Error(job.error || `Extend failed for ${instanceName || "instance"}`);
error.data = {
ok: false,
runId,
extension: job.extension || null,
output: job.log || "",
error: error.message,
};
throw error;
}
await sleep(1000);
}
}
async function startExtendWithConsole({ instanceName, address, moments, seed, authHeaders, actionName, manual = false }) {
const startData = await instanceApi("/api/extend/start", {
method: "POST",
actionName,
authHeaders,
body: JSON.stringify({
instanceName,
address,
moments,
seed,
manual,
}),
});
appendExtendConsole(`Run ID: ${startData.runId}`);
return waitForExtendJob(startData.runId, instanceName);
}
function getExtendableLoadedInstances() {
const loadedInstances = knownInstances.filter(instance =>
instance &&
instance.hidden !== true &&
String(instance.instance_id || "").trim() &&
String(instance.host_address || "").trim()
);
return [
...loadedInstances,
...getExtendableManualExtensions(),
];
}
async function extendSelectedInstances() {
const moments = Number($("#extendAllClustersMoments").val() || 1);
const selectedItems = getSelectedExtendItems();
if (!Number.isInteger(moments) || moments <= 0) {
setInstanceStatus("Moments must be a positive whole number.", true);
return;
}
if (!selectedItems.length) {
setInstanceStatus("Select at least one instance or manual r address to extend.", true);
setManualExtensionsStatus("Select at least one instance or manual r address to extend.", true);
return;
}
let authHeaders;
let actionSeed = "";
try {
authHeaders = await requestAdminAuthHeaders("extend selected instances");
actionSeed = await requestSeedIfNeeded("extend selected instances");
} catch (err) {
setInstanceStatus(err.message, true);
return;
}
openExtendConsole(
"Extend Selected Console",
[
`Starting extend for selected entries.`,
`Selected: ${selectedItems.length}`,
`Moments: ${moments}`,
`Started: ${new Date().toISOString()}`,
].join("\n")
);
$("#extendSelectedInstancesBtn, #extendAllClustersBtn, .extend-contract-group-btn, .extend-btn, .manual-extend-btn")
.prop("disabled", true);
const results = [];
try {
for (let index = 0; index < selectedItems.length; index += 1) {
const item = selectedItems[index];
appendExtendSeparator(`${index + 1}/${selectedItems.length}: ${item.instanceName}`);
appendExtendConsole(`${item.manual ? "Manual r address" : "Address"}: ${item.address}`);
appendExtendConsole(`Manual extension: ${item.manual === true}`);
setInstanceStatus(
`Extending selected ${index + 1}/${selectedItems.length}: ${shorten(item.instanceName, 10)}...`
);
try {
const data = await startExtendWithConsole({
instanceName: item.instanceName,
address: item.address,
moments,
seed: actionSeed,
authHeaders,
actionName: item.manual ? "extend selected manual instance" : "extend selected instance",
manual: item.manual,
});
appendExtendResult({
instanceName: item.instanceName,
ok: true,
data,
});
results.push({
instanceName: item.instanceName,
ok: true,
expiryMoment: data.extension?.expiryMoment || null,
txHash: data.extension?.txHash || "",
error: "",
});
} catch (err) {
console.error(`Extend failed for ${item.instanceName}:`, err);
appendExtendResult({
instanceName: item.instanceName,
ok: false,
error: err,
});
results.push({
instanceName: item.instanceName,
ok: false,
error: err.message,
});
}
}
const successCount = results.filter(result => result.ok).length;
const failed = results.filter(result => !result.ok);
await loadInstances(authHeaders);
$("#selectAllInstances").prop("checked", false);
$("#selectAllManualExtensions").prop("checked", false);
appendExtendSeparator("SUMMARY");
appendExtendConsole(`Succeeded: ${successCount}`);
appendExtendConsole(`Failed: ${failed.length}`);
if (failed.length) {
failed.forEach(result => {
appendExtendConsole(`- ${result.instanceName}: ${result.error}`);
});
$("#extendConsoleStatus").text(`Finished with ${failed.length} failure(s).`);
setInstanceStatus(
`Extend selected finished: ${successCount} succeeded, ${failed.length} failed. Check the console popup.`,
true
);
} else {
$("#extendConsoleStatus").text("Finished successfully.");
setInstanceStatus(
`Extend selected finished: ${successCount} succeeded, 0 failed.`
);
}
} catch (err) {
console.error(err);
appendExtendSeparator("FATAL ERROR");
appendExtendConsole(err.message);
appendExtendBackendOutput(err);
$("#extendConsoleStatus").text("Fatal extend selected error.");
setInstanceStatus(err.message, true);
} finally {
$("#extendSelectedInstancesBtn, #extendAllClustersBtn, .extend-contract-group-btn, .extend-btn, .manual-extend-btn")
.prop("disabled", false);
}
}
async function extendAllClusters() {
const moments = Number($("#extendAllClustersMoments").val() || 1);
if (!Number.isInteger(moments) || moments <= 0) {
setInstanceStatus("Invalid global extend moments.", true);
return;
}
const matchingInstances = getExtendableLoadedInstances();
if (!matchingInstances.length) {
setInstanceStatus("No loaded instances available to extend. Click Refresh first.", true);
return;
}
let authHeaders;
let actionSeed = "";
try {
authHeaders = await requestAdminAuthHeaders("extend all clusters");
actionSeed = await requestSeedIfNeeded("extend all clusters");
} catch (err) {
setInstanceStatus(err.message, true);
return;
}
openExtendConsole(
"Extend ALL Console",
[
`Starting Extend ALL for ${matchingInstances.length} instance(s).`,
`Moments: ${moments}`,
`Started: ${new Date().toISOString()}`,
].join("\n")
);
$("#extendSelectedInstancesBtn, #extendAllClustersBtn, .extend-contract-group-btn, .extend-btn, .manual-extend-btn").prop("disabled", true);
try {
const results = [];
for (let index = 0; index < matchingInstances.length; index += 1) {
const instance = matchingInstances[index];
const instanceName = instance.instance_id || "";
const address = instance.host_address || "";
const contractId = String(instance.contract_id || "").trim();
const isManualExtension = instance.manual_extension === true;
appendExtendSeparator(`${index + 1}/${matchingInstances.length}: ${instanceName}`);
appendExtendConsole(`${isManualExtension ? "Manual r address" : "Address"}: ${address}`);
if (contractId) appendExtendConsole(`Contract: ${contractId}`);
if (isManualExtension) appendExtendConsole("Source: manually added");
setInstanceStatus(
`Extending ALL ${index + 1}/${matchingInstances.length}: ${shorten(instanceName, 10)}${contractId ? ` / ${shorten(contractId, 10)}` : ""}...`
);
try {
const data = await startExtendWithConsole({
instanceName,
address,
moments,
seed: actionSeed,
authHeaders,
actionName: "extend all clusters",
manual: isManualExtension,
});
appendExtendResult({ instanceName, ok: true, data });
results.push({
instanceName,
ok: true,
expiryMoment: data.extension?.expiryMoment || null,
txHash: data.extension?.txHash || "",
error: ""
});
} catch (err) {
console.error(`Global extend failed for ${instanceName}:`, err);
appendExtendResult({ instanceName, ok: false, error: err });
results.push({
instanceName,
ok: false,
error: err.message
});
}
}
const successCount = results.filter(result => result.ok).length;
const failed = results.filter(result => !result.ok);
await loadInstances(authHeaders);
appendExtendSeparator("SUMMARY");
appendExtendConsole(`Succeeded: ${successCount}`);
appendExtendConsole(`Failed: ${failed.length}`);
if (failed.length) {
appendExtendConsole("Failed instances:");
failed.forEach(result => appendExtendConsole(`- ${result.instanceName}: ${result.error}`));
$("#extendConsoleStatus").text(`Finished with ${failed.length} failure(s).`);
setInstanceStatus(
`Extend ALL finished: ${successCount} succeeded, ${failed.length} failed. Check the console popup for details.`,
true
);
} else {
$("#extendConsoleStatus").text("Finished successfully.");
setInstanceStatus(
`Extend ALL finished: ${successCount} succeeded, 0 failed.`
);
}
} catch (err) {
console.error(err);
appendExtendSeparator("FATAL ERROR");
appendExtendConsole(err.message);
appendExtendBackendOutput(err);
$("#extendConsoleStatus").text("Fatal extend error.");
setInstanceStatus(err.message, true);
} finally {
$("#extendSelectedInstancesBtn, #extendAllClustersBtn, .extend-contract-group-btn, .extend-btn, .manual-extend-btn").prop("disabled", false);
}
}
async function extendAllInstancesForContract({ contractId, moments }) {
const cleanContractId = String(contractId || "").trim();
if (!cleanContractId || cleanContractId === "__NO_CONTRACT__") {
setInstanceStatus("No contract ID selected for extend all.", true);
return;
}
if (!Number.isInteger(moments) || moments <= 0) {
setInstanceStatus("Invalid extend moments.", true);
return;
}
let authHeaders;
let actionSeed = "";
try {
authHeaders = await requestAdminAuthHeaders("extend all instances for contract");
actionSeed = await requestSeedIfNeeded("extend all instances for contract");
} catch (err) {
setInstanceStatus(err.message, true);
return;
}
$("#extendSelectedInstancesBtn, #extendAllClustersBtn, .extend-contract-group-btn, .extend-btn, .manual-extend-btn").prop("disabled", true);
try {
const matchingInstances = knownInstances.filter(instance =>
String(instance.contract_id || "").trim() === cleanContractId
);
if (!matchingInstances.length) {
setInstanceStatus("No instances found with this contract ID.", true);
return;
}
openExtendConsole(
"Extend Contract Group Console",
[
`Starting extend for contract ${cleanContractId}.`,
`Instances: ${matchingInstances.length}`,
`Moments: ${moments}`,
`Started: ${new Date().toISOString()}`,
].join("\n")
);
const results = [];
for (let index = 0; index < matchingInstances.length; index += 1) {
const instance = matchingInstances[index];
const instanceName = instance.instance_id || "";
const address = instance.host_address || "";
appendExtendSeparator(`${index + 1}/${matchingInstances.length}: ${instanceName || "[unknown]"}`);
appendExtendConsole(`Address: ${address || "[missing]"}`);
if (!instanceName || !address) {
appendExtendConsole("FAILED: Missing instance name or host address");
results.push({
instanceName: instanceName || "[unknown]",
ok: false,
error: "Missing instance name or host address"
});
continue;
}
setInstanceStatus(
`Extending ${index + 1}/${matchingInstances.length}: ${shorten(instanceName, 10)}...`
);
try {
const data = await startExtendWithConsole({
instanceName,
address,
moments,
seed: actionSeed,
authHeaders,
actionName: "extend all instances for contract",
});
appendExtendResult({ instanceName, ok: true, data });
results.push({
instanceName,
ok: true,
expiryMoment: data.extension?.expiryMoment || null,
txHash: data.extension?.txHash || "",
error: ""
});
} catch (err) {
console.error(`Extend failed for ${instanceName}:`, err);
appendExtendResult({ instanceName, ok: false, error: err });
results.push({
instanceName,
ok: false,
error: err.message
});
}
}
const successCount = results.filter(result => result.ok).length;
const failed = results.filter(result => !result.ok);
await loadInstances(authHeaders);
appendExtendSeparator("SUMMARY");
appendExtendConsole(`Succeeded: ${successCount}`);
appendExtendConsole(`Failed: ${failed.length}`);
if (failed.length) {
failed.forEach(result => appendExtendConsole(`- ${result.instanceName}: ${result.error}`));
$("#extendConsoleStatus").text(`Finished with ${failed.length} failure(s).`);
setInstanceStatus(
`Extend all finished: ${successCount} succeeded, ${failed.length} failed. Check the console popup for details.`,
true
);
} else {
$("#extendConsoleStatus").text("Finished successfully.");
setInstanceStatus(
`Extend all finished: ${successCount} succeeded, 0 failed.`
);
}
} catch (err) {
console.error(err);
appendExtendSeparator("FATAL ERROR");
appendExtendConsole(err.message);
appendExtendBackendOutput(err);
$("#extendConsoleStatus").text("Fatal extend error.");
setInstanceStatus(err.message, true);
} finally {
$("#extendSelectedInstancesBtn, #extendAllClustersBtn, .extend-contract-group-btn, .extend-btn, .manual-extend-btn").prop("disabled", false);
}
}
async function extendInstance({ instanceName, address, moments, manual = false }) {
if (!instanceName || !address || !Number.isInteger(moments) || moments <= 0) {
setInstanceStatus("Invalid extend details.", true);
return;
}
let authHeaders;
let actionSeed = "";
try {
authHeaders = await requestAdminAuthHeaders("extend instance");
actionSeed = await requestSeedIfNeeded("extend instance");
} catch (err) {
setInstanceStatus(err.message, true);
return;
}
openExtendConsole(
"Extend Instance Console",
[
`Starting extend for ${instanceName}.`,
`${manual ? "Manual r address" : "Address"}: ${address}`,
`Manual extension: ${manual === true}`,
`Moments: ${moments}`,
`Started: ${new Date().toISOString()}`,
].join("\n")
);
setInstanceStatus(`Extending ${instanceName}...`);
try {
const data = await startExtendWithConsole({
instanceName,
address,
moments,
seed: actionSeed,
authHeaders,
actionName: manual ? "extend manual instance" : "extend instance",
manual,
});
appendExtendSeparator("RESULT");
appendExtendResult({ instanceName, ok: true, data });
const expiryMoment = data.extension?.expiryMoment;
const txHash = data.extension?.txHash || "";
$("#extendConsoleStatus").text("Finished successfully.");
setInstanceStatus(
expiryMoment
? `Extended ${instanceName}. Expiry moment: ${expiryMoment}${txHash ? ` / Tx: ${shorten(txHash, 12)}` : ""}.`
: `Extended ${instanceName}.`
);
await loadInstances(authHeaders);
} catch (err) {
console.error(err);
appendExtendSeparator("ERROR");
appendExtendResult({ instanceName, ok: false, error: err });
$("#extendConsoleStatus").text("Extend failed.");
setInstanceStatus(`${err.message}. Check the console popup for details.`, true);
}
}
async function toggleClusterFirstInstance({ instanceName, makeFirst }) {
if (!instanceName) {
setInstanceStatus("Invalid instance name.", true);
return;
}
let authHeaders;
try {
authHeaders = await requestAdminAuthHeaders(makeFirst ? "mark cluster node" : "unmark cluster node");
} catch (err) {
setInstanceStatus(err.message, true);
return;
}
setInstanceStatus(`${makeFirst ? "Marking" : "Unmarking"} ${shorten(instanceName, 12)} as marked node...`);
try {
await instanceApi("/api/instances/cluster-first", {
method: "POST",
actionName: makeFirst ? "mark cluster node" : "unmark cluster node",
authHeaders,
body: JSON.stringify({
instanceName,
makeFirst: makeFirst === true,
}),
});
setInstanceStatus(`${makeFirst ? "Marked" : "Unmarked"} ${shorten(instanceName, 12)}.`);
await loadInstances(authHeaders);
} catch (err) {
console.error(err);
setInstanceStatus(err.message, true);
}
}
async function hideInstance(instanceName, shouldHide) {
if (!instanceName) {
setInstanceStatus("Invalid instance name.", true);
return;
}
let authHeaders;
try {
authHeaders = await requestAdminAuthHeaders(shouldHide ? "hide instance" : "unhide instance");
} catch (err) {
setInstanceStatus(err.message, true);
return;
}
const action = shouldHide ? "hide" : "unhide";
setInstanceStatus(`${shouldHide ? "Hiding" : "Unhiding"} ${instanceName}...`);
try {
await instanceApi(`/api/instances/${action}`, {
method: "POST",
actionName: `${action} instance`,
authHeaders,
body: JSON.stringify({
instanceName
})
});
setInstanceStatus(`${shouldHide ? "Hidden" : "Unhidden"} ${instanceName}.`);
await loadInstances(authHeaders);
} catch (err) {
console.error(err);
setInstanceStatus(err.message, true);
}
}
async function loadHostApis() {
try {
const response = await fetch("/api/host-apis", {
cache: "no-store"
});
const data = await response.json().catch(() => ({}));
if (!response.ok || data.ok === false) {
throw new Error(data.error || `HTTP ${response.status}`);
}
hostApis = data.apis || [];
renderHostApiOptions();
} catch (err) {
console.error(err);
hostApis = [{
id: "onledger",
name: "Onledger",
url: "https://api.onledger.net/hosts",
readonly: true
}];
renderHostApiOptions();
setHostsStatus(`Could not load saved host APIs: ${err.message}`, true);
}
}
function rememberSelectedHostApi(apiId) {
try {
localStorage.setItem(HOST_API_SELECT_STORAGE_KEY, String(apiId || "onledger"));
} catch {
// Ignore local storage failures.
}
}
function getRememberedHostApi() {
try {
return String(localStorage.getItem(HOST_API_SELECT_STORAGE_KEY) || "").trim();
} catch {
return "";
}
}
function renderHostApiOptions() {
const select = $("#hostApiSelect");
const current = select.val() || getRememberedHostApi() || "onledger";
select.html("");
hostApis.forEach(api => {
select.append(`
<option value="${escapeHtml(api.id)}">
${escapeHtml(api.name)}
</option>
`);
});
if (hostApis.some(api => api.id === current)) {
select.val(current);
} else {
select.val("onledger");
}
rememberSelectedHostApi(select.val());
}
async function saveHostApi() {
const name = $("#newHostApiName").val().trim();
const url = $("#newHostApiUrl").val().trim();
if (!name || !url) {
setHostsStatus("Enter both API name and API URL.", true);
return;
}
setHostsStatus("Saving host API...");
try {
const data = await instanceApi("/api/host-apis", {
method: "POST",
actionName: "save host API",
body: JSON.stringify({
name,
url
})
});
hostApis = data.apis || [];
renderHostApiOptions();
if (data.api && data.api.id) {
$("#hostApiSelect").val(data.api.id);
rememberSelectedHostApi(data.api.id);
}
$("#newHostApiName").val("");
$("#newHostApiUrl").val("");
setHostsStatus("Host API saved.");
} catch (err) {
console.error(err);
setHostsStatus(err.message, true);
}
}
async function loadHosts() {
setHostsStatus("Fetching hosts...");
try {
const params = new URLSearchParams();
params.set("apiId", $("#hostApiSelect").val() || "onledger");
params.set("minRep", $("#minRep").val() || "200");
params.set("limit", $("#hostLimit").val() || "50");
if ($("#minRam").val()) {
params.set("minRam", $("#minRam").val());
}
if ($("#minDisk").val()) {
params.set("minDisk", $("#minDisk").val());
}
if ($("#country").val().trim()) {
params.set("country", $("#country").val().trim().toUpperCase());
}
const descriptionLike = $("#descriptionLike").val().trim();
if (descriptionLike) {
// Gives upstream:
// search=&description_like=evrpanel
params.set("search", "");
params.set("description_like", descriptionLike);
}
const data = await instanceApi(`/api/hosts?${params.toString()}`, {
actionName: "fetch hosts"
});
const hosts = data.hosts || [];
renderHosts(hosts);
const apiName = data.hostApi && data.hostApi.name
? data.hostApi.name
: "selected API";
setHostsStatus(`Loaded ${hosts.length} host(s) from ${apiName}.`);
} catch (err) {
console.error(err);
setHostsStatus(err.message, true);
}
}
function formatPerInstanceResource(totalValue, maxInstances, unit) {
const total = Number(totalValue);
const max = Number(maxInstances);
if (!Number.isFinite(total) || !Number.isFinite(max) || max <= 0) {
return "-";
}
const perInstance = total / max;
if (perInstance >= 1024) {
return `${(perInstance / 1024).toFixed(1)} GB`;
}
return `${Math.round(perInstance)} ${unit}`;
}
function formatLeaseForDisplay(value) {
const text = String(value ?? "").trim();
if (!text || text === "-") {
return "-";
}
return text.toUpperCase().includes("EVR")
? text
: `${text} $EVR`;
}
function renderHosts(hosts) {
const body = $("#hostsBody");
body.html("");
if (!hosts.length) {
body.html(`
<tr>
<td colspan="12" class="muted">No hosts found.</td>
</tr>
`);
return;
}
hosts.forEach(host => {
const address = getFirstValue(host, [
"address",
"hostAddress",
"host_address"
]);
const domain = getFirstValue(host, [
"domain",
"domainName",
"hostDomain"
]) || "-";
const country = getFirstValue(host, [
"countryCode",
"country",
"country_code"
]) || "-";
const reputation = getFirstValue(host, [
"hostReputation",
"reputation",
"host_reputation"
]) ?? "-";
const slots = getFirstValue(host, [
"availableInstances",
"available_slots",
"slots",
"freeSlots"
]) ?? "-";
const usedInstances = getFirstValue(host, [
"activeInstances",
"usedInstances",
"active_instances",
"used_instances"
]) ?? "-";
const maxInstances = getFirstValue(host, [
"maxInstances",
"max_instances",
"maximumInstances"
]) ?? "-";
const lease = getFirstValue(host, [
"leaseAmount",
"leaseDrops",
"lease_amount",
"momentPrice",
"price"
]) ?? "-";
const leaseDisplay = formatLeaseForDisplay(lease);
const cpuModel = getFirstValue(host, [
"cpuModelName",
"cpu_model_name",
"cpuModel",
"cpu"
]) || "-";
const cpuCount = getFirstValue(host, [
"cpuCount",
"cpu_count",
"cores"
]);
const cpuMHz = getFirstValue(host, [
"cpuMHz",
"cpu_mhz"
]);
const cpuParts = [];
if (cpuCount !== undefined && cpuCount !== null && cpuCount !== "") {
cpuParts.push(`${cpuCount}x`);
}
if (cpuModel && cpuModel !== "-") {
cpuParts.push(cpuModel);
}
if (cpuMHz !== undefined && cpuMHz !== null && cpuMHz !== "") {
cpuParts.push(`@ ${cpuMHz} MHz`);
}
const cpu = cpuParts.length ? cpuParts.join(" ") : "-";
const totalRam = getFirstValue(host, [
"ramMb",
"ram_mb",
"ram",
"memory"
]);
const totalDisk = getFirstValue(host, [
"diskMb",
"disk_mb",
"disk"
]);
const ram = formatPerInstanceResource(totalRam, maxInstances, "MB");
const disk = formatPerInstanceResource(totalDisk, maxInstances, "MB");
const description = getFirstValue(host, [
"description",
"desc",
"hostDescription"
]) || "-";
const row = $(`
<tr>
<td class="host-address-cell">
<code title="${escapeHtml(address || "-")}">
${escapeHtml(shorten(address || "-", 8))}
</code>
</td>
<td>${escapeHtml(domain)}</td>
<td>${escapeHtml(country)}</td>
<td>${escapeHtml(String(reputation))}</td>
<td>${escapeHtml(String(slots))}</td>
<td>${escapeHtml(String(usedInstances))} / ${escapeHtml(String(maxInstances))}</td>
<td>
<span class="host-lease">
<span>${escapeHtml(leaseDisplay.replace(/\s*\$?EVR$/i, ""))}</span>
${leaseDisplay !== "-" ? '<span class="host-lease-unit">$EVR</span>' : ""}
</span>
</td>
<td style="min-width: 260px;">${escapeHtml(String(cpu))}</td>
<td>${escapeHtml(String(ram))}</td>
<td>${escapeHtml(String(disk))}</td>
<td style="min-width: 160px;">${escapeHtml(String(description))}</td>
<td class="hosts-action-sticky">
<button class="btn btn-sm btn-success acquire-btn" ${address ? "" : "disabled"}>
Acquire
</button>
</td>
</tr>
`);
row.find(".acquire-btn").click(function () {
acquireHost(address, lease, description, domain, country);
});
body.append(row);
});
}
function getKnownClusterGroups() {
const groups = new Map();
knownInstances.forEach(instance => {
const contractId = String(instance.contract_id || "").trim();
if (!contractId) {
return;
}
if (!groups.has(contractId)) {
groups.set(contractId, {
contractId,
name: String(instance.cluster_name || instance.clusterName || "").trim(),
instances: []
});
}
const group = groups.get(contractId);
if (!group.name && (instance.cluster_name || instance.clusterName)) {
group.name = String(instance.cluster_name || instance.clusterName || "").trim();
}
group.instances.push(instance);
});
return [...groups.values()]
.map(group => {
group.instances.sort((a, b) =>
Number(a.created_timestamp || 0) - Number(b.created_timestamp || 0)
);
group.firstInstance = group.instances.find(item => item.cluster_first_instance === true) || group.instances[0] || null;
group.label = group.name || `Contract ${shorten(group.contractId, 16)}`;
return group;
})
.sort((a, b) => a.label.localeCompare(b.label));
}
function getSelectedAcquireClusterGroup() {
const contractId = $("#modalAcquireClusterSelect").val();
return getKnownClusterGroups().find(group => group.contractId === contractId) || null;
}
function getSelectedAcquireClusterNode() {
const group = getSelectedAcquireClusterGroup();
const instanceId = $("#modalAcquireClusterSourceNode").val();
if (!group) {
return null;
}
return group.instances.find(instance => instance.instance_id === instanceId) || group.firstInstance || group.instances[0] || null;
}
function populateAcquireClusterSelect() {
const select = $("#modalAcquireClusterSelect");
const current = select.val();
const groups = getKnownClusterGroups();
select.html("");
if (!groups.length) {
select.append(`<option value="">No clusters found yet</option>`);
return;
}
groups.forEach(group => {
select.append(`
<option value="${escapeHtml(group.contractId)}">
${escapeHtml(group.label)} / ${escapeHtml(shorten(group.contractId, 18))}
</option>
`);
});
if (current && groups.some(group => group.contractId === current)) {
select.val(current);
} else {
select.val(groups[0].contractId);
}
}
function populateAcquireClusterNodeSelect() {
const select = $("#modalAcquireClusterSourceNode");
const current = select.val();
const group = getSelectedAcquireClusterGroup();
select.html("");
if (!group || !group.instances.length) {
select.append(`<option value="">No nodes in selected cluster</option>`);
return;
}
group.instances.forEach((instance, index) => {
const knownPeer = instance.domain && instance.peer_port
? `${instance.domain}:${instance.peer_port}`
: "missing-known-peer";
const labelPrefix = instance.instance_id === group.firstInstance?.instance_id
? "First node"
: `Node ${index + 1}`;
select.append(`
<option value="${escapeHtml(instance.instance_id || "")}">
${escapeHtml(labelPrefix)} / ${escapeHtml(shorten(instance.pubkey || "", 12))} / ${escapeHtml(knownPeer)}
</option>
`);
});
if (current && group.instances.some(instance => instance.instance_id === current)) {
select.val(current);
} else if (group.firstInstance) {
select.val(group.firstInstance.instance_id);
}
}
function updateAcquireClusterFlowOptions() {
const enabled = $("#modalAcquireClusterFlowEnabled").is(":checked");
const groups = getKnownClusterGroups();
$("#modalAcquireClusterFlowOptions").toggleClass("d-none", !enabled);
$("#modalAcquireClusterJoinModeWrap").toggleClass("d-none", !enabled || !groups.length);
if (!enabled) {
setModalStatus("Generate a keypair or paste an existing private key.", "info");
return;
}
populateAcquireClusterSelect();
populateAcquireClusterNodeSelect();
let mode = $("input[name='modalAcquireClusterMode']:checked").val() || "first";
if (mode === "join" && !groups.length) {
mode = "first";
$("#modalAcquireClusterModeFirst").prop("checked", true);
}
const isFirst = mode === "first";
const isJoin = mode === "join";
$("#modalAcquireClusterFirstWrap").toggleClass("d-none", !isFirst);
$("#modalAcquireClusterJoinWrap").toggleClass("d-none", !isJoin);
if (isFirst) {
setModalStatus("First cluster node: acquire normally, then bootstrap deploy with itself as UNL/known peer.", "info");
} else {
const sourceNode = getSelectedAcquireClusterNode();
const knownPeer = sourceNode && sourceNode.domain && sourceNode.peer_port
? `${sourceNode.domain}:${sourceNode.peer_port}`
: "[missing known peer]";
setModalStatus(`Join cluster: acquire with selected contract ID, then bootstrap deploy with UNL ${shorten(sourceNode?.pubkey || "", 12)} and known peer ${knownPeer}.`, "info");
}
}
function acquireHost(address, lease = "", nodeDescription = "", domain = "", countryCode = "") {
selectedAcquireAddress = address || "";
selectedAcquireNodeDescription = nodeDescription && nodeDescription !== "-"
? String(nodeDescription).trim()
: "";
selectedAcquireDomain = domain && domain !== "-"
? String(domain).trim()
: "";
selectedAcquireCountryCode = normalizeCountryCodeForEnv(countryCode);
generatedKeyMode = false;
lastAcquiredRAddress = selectedAcquireAddress;
$("#modalAcquireHost").val(selectedAcquireAddress);
$("#modalAcquireNodeDescription").val(selectedAcquireNodeDescription);
$("#modalAcquireImage").val(getPreferredAcquireImage());
resetAcquireImageOptions();
resetEvrPanelSettings();
updateEvrPanelSettingsVisibility();
$("#modalAcquireSendMax").val(normalizeSendMax(lease));
$("#modalAcquirePlacePortsEnvIntoSeedFolder").prop("checked", true);
$("#modalAcquireGeneralEnvExtra").val(
selectedAcquireCountryCode
? `COUNTRY_CODE=${selectedAcquireCountryCode}`
: ""
);
$("#modalAcquireBootstrapDeployDelaySeconds").val("10");
$("#modalAcquireClusterFlowEnabled").prop("checked", false);
$("#modalAcquireClusterFlowOptions").addClass("d-none");
$("#modalAcquireClusterModeFirst").prop("checked", true);
$("#modalAcquireClusterName").val("");
$("#modalAcquireClusterFirstWrap").removeClass("d-none");
$("#modalAcquireClusterJoinWrap").addClass("d-none");
$("#modalAcquireRole").val("validator");
$("#modalPrivateKey").val("");
$("#modalAcquireIdleTimeout").val("120000");
$("#modalAcquireMaxBytesPerMsg").val("");
$("#modalPublicKey").val("");
$("#modalAcquireLog").addClass("d-none").text("");
$("#privateKeySavedConfirm").prop("checked", false);
$("#privateKeySavedConfirmWrap").addClass("d-none");
$("#savePrivateKeyToSystem").prop("checked", false);
$("#savePrivateKeyToSystemWrap").addClass("d-none");
$("#modalAcquireCompleteActions").addClass("d-none");
setModalStatus("Generate a keypair or paste an existing private key.", "info");
setAcquireCompletedMode(false);
setAcquireBusy(false);
acquireModal.show();
}
async function generateAcquireKeypair() {
generatedKeyMode = true;
$("#privateKeySavedConfirm").prop("checked", false);
$("#privateKeySavedConfirmWrap").removeClass("d-none");
$("#savePrivateKeyToSystem").prop("checked", false);
$("#savePrivateKeyToSystemWrap").removeClass("d-none");
setModalStatus("Generating keypair...", "info");
try {
const response = await fetch("/api/keygen", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({})
});
const data = await response.json().catch(() => ({}));
if (!response.ok || data.ok === false) {
throw new Error(data.error || `HTTP ${response.status}`);
}
$("#modalPrivateKey").val(data.privateKey || "");
$("#modalPublicKey").val(data.publicKey || "");
setModalStatus("Keypair generated. Copy it yourself, or check the system-save option for acquisition-only keys.", "success");
} catch (err) {
console.error(err);
setModalStatus(err.message, "danger");
}
}
function handlePrivateKeyInput() {
clearTimeout(privateKeyDeriveTimer);
const privateKey = $("#modalPrivateKey").val().trim();
if (!privateKey) {
$("#modalPublicKey").val("");
return;
}
privateKeyDeriveTimer = setTimeout(async function () {
try {
const response = await fetch("/api/publickey", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
privateKey
})
});
const data = await response.json().catch(() => ({}));
if (!response.ok || data.ok === false) {
throw new Error(data.error || `HTTP ${response.status}`);
}
$("#modalPublicKey").val(data.publicKey || "");
} catch (err) {
console.error(err);
$("#modalPublicKey").val("");
setModalStatus(`Could not derive public key: ${err.message}`, "danger");
}
}, 400);
}
async function copyModalPrivateKey() {
const privateKey = $("#modalPrivateKey").val().trim();
if (!privateKey) {
setModalStatus("No private key to copy.", "danger");
return;
}
try {
await navigator.clipboard.writeText(privateKey);
setModalStatus("Private key copied. Save it somewhere safe.", "success");
} catch (err) {
console.error(err);
$("#modalPrivateKey")[0].select();
setModalStatus("Copy failed. The private key is selected; copy it manually.", "warning");
}
}
async function copyAcquiredRAddress() {
const rAddress = String(lastAcquiredRAddress || selectedAcquireAddress || "").trim();
if (!rAddress) {
setModalStatus("No rAddress available to copy yet.", "danger");
return;
}
try {
await navigator.clipboard.writeText(rAddress);
setModalStatus("rAddress copied.", "success");
} catch (err) {
console.error(err);
setModalStatus("Copy failed. rAddress is visible in the acquire log.", "warning");
}
}
async function confirmAcquireWithGeneratedKey() {
if (acquireCompletedMode) {
acquireModal.hide();
return;
}
const privateKey = $("#modalPrivateKey").val().trim();
const moments = Number($("#acquireMoments").val() || 1);
const nodeDescription = $("#modalAcquireNodeDescription").val().trim() || selectedAcquireNodeDescription;
const image = $("#modalAcquireImage").val().trim();
const savePrivateKeyToSystem = $("#savePrivateKeyToSystem").is(":checked");
const sendMaxRaw = $("#modalAcquireSendMax").val().trim();
const sendMax = normalizeSendMax(sendMaxRaw);
const idleTimeout = Number($("#modalAcquireIdleTimeout").val() || 120000);
const maxBytesPerMsgRaw = $("#modalAcquireMaxBytesPerMsg").val().trim();
const maxBytesPerMsg = maxBytesPerMsgRaw ? Number(maxBytesPerMsgRaw) : null;
const placePortsEnvIntoSeedFolder = $("#modalAcquirePlacePortsEnvIntoSeedFolder").is(":checked");
const generalEnvExtra = buildGeneralEnvExtraWithCountry(
$("#modalAcquireGeneralEnvExtra").val(),
selectedAcquireCountryCode
);
const bootstrapDeployDelaySeconds = Number($("#modalAcquireBootstrapDeployDelaySeconds").val() || 0);
const clusterFlowEnabled = $("#modalAcquireClusterFlowEnabled").is(":checked");
const clusterMode = clusterFlowEnabled
? ($("input[name='modalAcquireClusterMode']:checked").val() || "first")
: "none";
const clusterName = clusterMode === "first"
? $("#modalAcquireClusterName").val().trim()
: "";
let contractId = "";
let acquireUnl = [];
let acquireKnownPeers = [];
let clusterSourceInstanceId = "";
if (clusterMode === "join") {
const selectedCluster = getSelectedAcquireClusterGroup();
const sourceNode = getSelectedAcquireClusterNode();
if (!selectedCluster) {
setModalStatus("Pick a cluster to join.", "danger");
return;
}
if (!sourceNode || !sourceNode.pubkey || !sourceNode.domain || !sourceNode.peer_port) {
setModalStatus("Selected source node is missing pubkey/domain/peer_port.", "danger");
return;
}
contractId = selectedCluster.contractId;
clusterSourceInstanceId = sourceNode.instance_id || "";
acquireUnl = [sourceNode.pubkey];
acquireKnownPeers = [`${sourceNode.domain}:${sourceNode.peer_port}`];
}
if (!selectedAcquireAddress) {
setModalStatus("No host selected.", "danger");
return;
}
if (!privateKey) {
setModalStatus("Generate or paste a private key first.", "danger");
return;
}
if (generatedKeyMode && !$("#privateKeySavedConfirm").is(":checked") && !savePrivateKeyToSystem) {
setModalStatus("Confirm that you copied the generated private key, or check the system-save option.", "danger");
return;
}
if (!Number.isInteger(moments) || moments <= 0) {
setModalStatus("Invalid acquire moments.", "danger");
return;
}
if (sendMaxRaw && !sendMax) {
setModalStatus("Invalid send max.", "danger");
return;
}
if (!Number.isInteger(idleTimeout) || idleTimeout <= 0) {
setModalStatus("idle_timeout must be a positive integer.", "danger");
return;
}
if (
maxBytesPerMsgRaw &&
(!Number.isInteger(maxBytesPerMsg) || maxBytesPerMsg <= 0)
) {
setModalStatus("max_bytes_per_msg must be a positive integer, or blank.", "danger");
return;
}
if (!Number.isInteger(bootstrapDeployDelaySeconds) || bootstrapDeployDelaySeconds < 0 || bootstrapDeployDelaySeconds > 300) {
setModalStatus("Bootstrap deploy delay must be between 0 and 300 seconds.", "danger");
return;
}
if (generalEnvExtra.length > 8192) {
setModalStatus("Extra general.env entries are too long. Max 8192 characters.", "danger");
return;
}
if (clusterMode === "first" && !clusterName) {
setModalStatus("Enter a friendly cluster name for the first instance.", "danger");
return;
}
let authHeaders;
let actionSeed = "";
try {
authHeaders = await requestAdminAuthHeaders("acquire instance and bootstrap deploy");
actionSeed = await requestSeedIfNeeded("acquire instance and bootstrap deploy");
} catch (err) {
setModalStatus(err.message, "danger");
return;
}
const acquireStartLogLines = [
`Starting acquire for ${selectedAcquireAddress}`,
`Cluster mode: ${clusterMode}`,
`Pass 2 contract: bootstrap_alt / bootstrap2contract`,
`Pass 3 contract: bootstrap / bootstrap_contract`,
`Inject general.env in pass 2: ${placePortsEnvIntoSeedFolder}`,
`Extra general.env lines: ${generalEnvExtra ? generalEnvExtra.split(/\r?\n/).filter(line => line.trim() && !line.trim().startsWith("#")).length : 0}`,
`Wait before bootstrap deploy: ${bootstrapDeployDelaySeconds}s`,
contractId ? `Acquire contract ID: ${contractId}` : "Acquire contract ID: [new/random]",
`Save acquisition private key to system: ${savePrivateKeyToSystem}`,
`Pass 2 bootstrap_alt UNL: acquired node itself`,
`Pass 2 bootstrap_alt known peer: acquired node itself`,
clusterMode === "join" && acquireUnl.length
? `Pass 3 restore bootstrap UNL: ${acquireUnl.join(",")}`
: "Pass 3 restore bootstrap UNL: acquired node itself",
clusterMode === "join" && acquireKnownPeers.length
? `Pass 3 restore bootstrap known peer: ${acquireKnownPeers.join(",")}`
: "Pass 3 restore bootstrap known peer: acquired node itself",
"",
];
rememberLastAcquireImage(image);
setAcquireBusy(true);
$("#modalAcquireLog")
.removeClass("d-none")
.text(acquireStartLogLines.join("\n"));
setModalStatus(`Acquiring instance on ${selectedAcquireAddress}, then deploying bootstrap_alt and restoring bootstrap...`, "info");
setHostsStatus(`Acquiring and running bootstrap_alt/bootstrap restore on ${selectedAcquireAddress}...`);
try {
const data = await instanceApi("/api/acquire", {
method: "POST",
actionName: "acquire instance and bootstrap deploy",
authHeaders,
body: JSON.stringify({
address: selectedAcquireAddress,
moments,
seed: actionSeed,
privateKey,
contractId,
image,
sendMax,
role: "validator",
unl: acquireUnl,
knownPeers: acquireKnownPeers,
idleTimeout,
maxBytesPerMsg,
nodeDescription,
deployBootstrapAfterAcquire: true,
placePortsEnvIntoSeedFolder,
generalEnvExtra,
bootstrapDeployDelaySeconds,
clusterMode,
clusterName,
clusterSourceInstanceId,
savePrivateKeyToSystem
})
});
const instance = data.instance || {};
const bootstrap = data.bootstrapDeploy || instance.bootstrap_deploy || {};
const acquireLogFile = data.logFile || bootstrap.log_file || "";
const deploySequence = Array.isArray(bootstrap.sequence)
? bootstrap.sequence
: Array.isArray(instance.bootstrap_deploys)
? instance.bootstrap_deploys
: bootstrap.log_file
? [bootstrap]
: [];
const sequenceLines = deploySequence.flatMap((entry, index) => [
`Deploy pass ${index + 1}: ${entry.stage || entry.source || "bootstrap"}`,
` general.env injected: ${entry.place_ports_env_into_seed_folder === true}`,
entry.unl ? ` UNL: ${entry.unl.join ? entry.unl.join(",") : entry.unl}` : "",
entry.known_peers ? ` Known peers: ${entry.known_peers.join ? entry.known_peers.join(",") : entry.known_peers}` : "",
entry.log_file ? ` Log: ${entry.log_file}` : "",
]).filter(Boolean);
const logLines = [
`Acquire completed: ${instance.instance_id || "[unknown]"}`,
`rAddress: ${instance.rAddress || instance.r_address || instance.host_address || selectedAcquireAddress || "[unknown]"}`,
`Contract ID: ${instance.contract_id || "[unknown]"}`,
`Pubkey: ${instance.pubkey || "[unknown]"}`,
`Known peer: ${instance.domain || "[domain]"}:${instance.peer_port || "[peer_port]"}`,
acquireLogFile ? `Acquire log: ${acquireLogFile}` : "",
`Waited before deploy sequence: ${bootstrap.bootstrap_deploy_delay_seconds ?? data.bootstrapDeployDelaySeconds ?? "[unknown]"}s`,
"",
...sequenceLines,
"",
"Done. You can close this modal or acquire another host.",
].filter(Boolean);
$("#modalAcquireLog")
.removeClass("d-none")
.text([
...acquireStartLogLines,
...logLines,
].join("\n"));
lastAcquiredRAddress = instance.rAddress || instance.r_address || instance.host_address || selectedAcquireAddress || "";
setModalStatus("Acquire + bootstrap_alt/restore deploy completed.", "success");
setHostsStatus(`Acquire + bootstrap_alt/restore deploy completed for ${selectedAcquireAddress}.`);
setAcquireCompletedMode(true);
selectedAcquireNodeDescription = "";
generatedKeyMode = false;
$("#privateKeySavedConfirm").prop("checked", false);
$("#privateKeySavedConfirmWrap").addClass("d-none");
$("#savePrivateKeyToSystem").prop("checked", false);
$("#savePrivateKeyToSystemWrap").addClass("d-none");
await loadInstances(authHeaders);
populateAcquireClusterSelect();
populateAcquireClusterNodeSelect();
updateAcquireClusterFlowOptions();
} catch (err) {
console.error(err);
$("#modalAcquireLog").removeClass("d-none").append(`\nERROR: ${err.message}\n`);
setModalStatus(err.message, "danger");
setHostsStatus(err.message, true);
} finally {
setAcquireBusy(false);
}
}
function addDeployUnl(value = "") {
$("#deployUnlList").append(`
<div class="input-group mb-2">
<input class="form-control mono deploy-unl-input"
value="${escapeHtml(value)}"
placeholder="ed...">
<button class="btn btn-outline-danger remove-repeater-item" type="button">
Remove
</button>
</div>
`);
}
function addDeployKnownPeer(value = "") {
$("#deployKnownPeersList").append(`
<div class="input-group mb-2">
<input class="form-control mono deploy-known-peer-input"
value="${escapeHtml(value)}"
placeholder="domain.tld:22862">
<button class="btn btn-outline-danger remove-repeater-item" type="button">
Remove
</button>
</div>
`);
}
function getCurrentDeployContractId() {
const direct = $("#deployInstanceContractId").val().trim();
if (direct) {
return direct;
}
const instanceName = $("#deployInstanceName").val().trim();
const instance = knownInstances.find(item => item.instance_id === instanceName);
return instance && instance.contract_id
? String(instance.contract_id).trim()
: "";
}
function getInstancesForCurrentDeployContract() {
const contractId = getCurrentDeployContractId();
if (!contractId) {
setDeployBootstrapStatus("Selected instance has no contract ID.", "danger");
return [];
}
return knownInstances.filter(instance =>
String(instance.contract_id || "").trim() === contractId
);
}
function getExistingDeployInputValues(selector, normalize = value => value) {
return new Set(
$(selector)
.map(function () {
return normalize($(this).val().trim());
})
.get()
.filter(Boolean)
);
}
function addDeployUnlIfMissing(pubkey) {
const value = String(pubkey || "").trim();
if (!value) {
return false;
}
const existing = getExistingDeployInputValues(
".deploy-unl-input",
value => value.toLowerCase()
);
if (existing.has(value.toLowerCase())) {
return false;
}
addDeployUnl(value);
return true;
}
function addDeployKnownPeerIfMissing(peer) {
const value = String(peer || "").trim();
if (!value) {
return false;
}
const existing = getExistingDeployInputValues(".deploy-known-peer-input");
if (existing.has(value)) {
return false;
}
addDeployKnownPeer(value);
return true;
}
function addAllDeployUnlFromCurrentContract() {
const instances = getInstancesForCurrentDeployContract();
if (!instances.length) {
return;
}
let added = 0;
instances.forEach(instance => {
if (addDeployUnlIfMissing(instance.pubkey)) {
added += 1;
}
});
setDeployBootstrapStatus(
`Added ${added} UNL pubkey(s) from contract ID.`,
added ? "success" : "warning"
);
}
function addAllDeployKnownPeersFromCurrentContract() {
const instances = getInstancesForCurrentDeployContract();
if (!instances.length) {
return;
}
let added = 0;
instances.forEach(instance => {
const domain = String(instance.domain || "").trim();
const peerPort = instance.peer_port;
if (!domain || !peerPort) {
return;
}
const peer = `${domain}:${peerPort}`;
if (addDeployKnownPeerIfMissing(peer)) {
added += 1;
}
});
setDeployBootstrapStatus(
`Added ${added} known peer(s) from contract ID.`,
added ? "success" : "warning"
);
}
function buildHpInitConfig() {
return {
node: {
role: $("#deployRole").val() || "validator"
},
contract: {
consensus: {
roundtime: Number($("#deployRoundtime").val() || 4000)
}
},
mesh: {
peer_discovery: {
enabled: $("#deployPeerDiscovery").val() === "false"
}
},
log: {
log_level: $("#deployLogLevel").val() || "inf"
}
};
}
function buildHpOverrideConfig() {
const unl = $(".deploy-unl-input")
.map(function () {
return $(this).val().trim();
})
.get()
.filter(Boolean);
const knownPeers = $(".deploy-known-peer-input")
.map(function () {
return $(this).val().trim();
})
.get()
.filter(Boolean);
return {
contract: {
unl,
bin_path: $("#deployBinPath").val().trim() || "/usr/bin/bash",
bin_args: $("#deployBinArgs").val().trim(),
consensus: {
mode: $("#deployConsensusMode").val() || "public",
roundtime: Number($("#deployRoundtime").val() || 4000)
},
npl: {
mode: $("#deployNplMode").val() || "public"
}
},
mesh: {
known_peers: knownPeers
}
};
}
function getSavedInstancePrivateKey(instance = {}) {
const acquisitionKeypair = instance.acquisition_keypair && typeof instance.acquisition_keypair === "object"
? instance.acquisition_keypair
: {};
return String(
instance.private_key ||
instance.saved_private_key ||
instance.acquisition_private_key ||
acquisitionKeypair.private_key ||
""
).trim();
}
function openBootstrapDeployModal(instance) {
stopDeployLogPolling();
$("#deployInstanceName").val(instance.instance_id || "");
$("#deployDomain").val(instance.domain || "");
$("#deployUserPort").val(instance.user_port || "");
$("#deployPeerPort").val(instance.peer_port || "");
$("#deployGpTcpPort").val(instance.gp_tcp_port || "");
$("#deployGpUdpPort").val(instance.gp_udp_port || "");
$("#deployPubkey").val(instance.pubkey || "");
$("#deployInstanceContractId").val(instance.contract_id || "");
$("#deployInstanceDisplay").val(`${instance.instance_id || ""} / ${instance.domain || ""}:${instance.user_port || ""}`);
const savedInstancePrivateKey = getSavedInstancePrivateKey(instance);
$("#deployPrivateKey").val(savedInstancePrivateKey);
$("#deployRole").val("validator");
$("#deployBinPath").val("/usr/bin/bash");
$("#deployBinArgs").val("");
$("#deployRoundtime").val("4000");
$("#deployConsensusMode").val("public");
$("#deployNplMode").val("public");
$("#deployPeerDiscovery").val("true");
$("#deployLogLevel").val("inf");
$("#deployUnlList").html("");
$("#deployKnownPeersList").html("");
$("#deployBootstrapLog").text("");
if (instance.pubkey) {
addDeployUnl(instance.pubkey);
}
if (instance.domain && instance.peer_port) {
addDeployKnownPeer(`${instance.domain}:${instance.peer_port}`);
}
setDeployBootstrapStatus(
savedInstancePrivateKey
? "Saved acquisition private key auto-filled. Pick a contract folder, then deploy it to the selected instance."
: "Pick a contract folder, then deploy it to the selected instance.",
"info"
);
$("#confirmDeployBootstrapBtn").prop("disabled", false).text("Deploy Selected Contract");
window.loadDeployContracts("bootstrap");
deployBootstrapModal.show();
}
async function confirmDeployBootstrap() {
const contractName = $("#deployContractName").val().trim();
const privateKey = $("#deployPrivateKey").val().trim();
if (!contractName) {
setDeployBootstrapStatus("Select a contract folder to deploy.", "danger");
return;
}
if (!privateKey) {
setDeployBootstrapStatus("Instance private key is required.", "danger");
return;
}
let authHeaders;
let actionSeed = "";
try {
authHeaders = await requestAdminAuthHeaders("deploy bootstrap contract");
actionSeed = await requestSeedIfNeeded("deploy bootstrap contract");
} catch (err) {
setDeployBootstrapStatus(err.message, "danger");
return;
}
stopDeployLogPolling();
deployLogOffset = 0;
$("#deployBootstrapLog").text("");
$("#confirmDeployBootstrapBtn").prop("disabled", true).text("Deploying...");
setDeployBootstrapStatus("Starting deploy job...", "info");
try {
const data = await instanceApi("/api/deploy/bootstrap", {
method: "POST",
actionName: "deploy bootstrap contract",
authHeaders,
body: JSON.stringify({
instanceName: $("#deployInstanceName").val(),
domain: $("#deployDomain").val(),
userPort: Number($("#deployUserPort").val()),
peerPort: Number($("#deployPeerPort").val()),
gpTcpPort: Number($("#deployGpTcpPort").val()),
gpUdpPort: Number($("#deployGpUdpPort").val()),
pubkey: $("#deployPubkey").val(),
privateKey,
seed: actionSeed,
contractName,
binPath: $("#deployBinPath").val().trim() || "/usr/bin/bash",
binArgs: $("#deployBinArgs").val().trim(),
initConfig: buildHpInitConfig(),
overrideConfig: buildHpOverrideConfig(),
placePortsEnvIntoSeedFolder: false
})
});
setDeployBootstrapStatus(`Deploy job started: ${data.runId}`, "info");
startDeployLogPolling(data.runId, authHeaders);
} catch (err) {
console.error(err);
$("#confirmDeployBootstrapBtn").prop("disabled", false).text("Bundle + Deploy Bootstrap");
setDeployBootstrapStatus(err.message, "danger");
}
}
function startDeployLogPolling(runId, authHeaders) {
stopDeployLogPolling();
deployLogOffset = 0;
const logBox = $("#deployBootstrapLog");
logBox.text("");
async function pollOnce() {
try {
const data = await instanceApi(`/api/deploy/log-poll/${runId}?offset=${deployLogOffset}`, {
actionName: "poll deploy log",
authHeaders
});
if (data.text) {
logBox.append(data.text);
logBox.scrollTop(logBox[0].scrollHeight);
}
deployLogOffset = data.offset || deployLogOffset;
if (data.done) {
stopDeployLogPolling();
$("#confirmDeployBootstrapBtn").prop("disabled", false).text("Bundle + Deploy Contract");
if (data.status === "success") {
setDeployBootstrapStatus("Bootstrap deploy completed.", "success");
} else {
setDeployBootstrapStatus("Bootstrap deploy failed. See log output.", "danger");
}
}
} catch (err) {
console.error(err);
stopDeployLogPolling();
$("#confirmDeployBootstrapBtn").prop("disabled", false).text("Bundle + Deploy Bootstrap");
setDeployBootstrapStatus(`Log polling failed: ${err.message}`, "danger");
}
}
pollOnce();
deployLogPollTimer = setInterval(pollOnce, 1000);
}
function stopDeployLogPolling() {
if (deployLogPollTimer) {
clearInterval(deployLogPollTimer);
deployLogPollTimer = null;
}
}
async function copyTextToClipboard(text, successMessage = "Copied.", setStatus = setInstanceStatus) {
const value = String(text || "");
if (!value) {
setStatus("Nothing to copy.", true);
return;
}
try {
await navigator.clipboard.writeText(value);
setStatus(successMessage);
} catch {
const textarea = document.createElement("textarea");
textarea.value = value;
textarea.setAttribute("readonly", "");
textarea.style.position = "fixed";
textarea.style.opacity = "0";
document.body.appendChild(textarea);
textarea.select();
try {
document.execCommand("copy");
setStatus(successMessage);
} catch {
setStatus("Copy failed. Select and copy manually.", true);
} finally {
document.body.removeChild(textarea);
}
}
}
function escapeHtml(value) {
return String(value ?? "")
.replaceAll("&", "&")
.replaceAll("<", "<")
.replaceAll(">", ">")
.replaceAll('"', """)
.replaceAll("'", "'");
}
function shorten(value, chars = 10) {
const text = String(value || "");
if (text.length <= chars * 2 + 3) {
return text;
}
return `${text.slice(0, chars)}...${text.slice(-chars)}`;
}
function formatDateTime(timestamp) {
if (!timestamp) return "-";
const value = Number(timestamp);
if (!Number.isFinite(value)) return "-";
return new Date(value).toLocaleString();
}
function getInstanceStatus(instance) {
const expires = Number(instance.expires_timestamp || 0);
if (!expires) {
return instance.status || "unknown";
}
if (expires < Date.now()) {
return "expired";
}
return instance.status || "active";
}
function getFirstValue(object, keys) {
for (const key of keys) {
if (
Object.prototype.hasOwnProperty.call(object, key) &&
object[key] !== null &&
object[key] !== undefined &&
object[key] !== ""
) {
return object[key];
}
}
return undefined;
}
</script>
</body>
</html>Code: Select all
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
Code: Select all
!function(A){function g(A){"use strict";var g;void 0===(g=A)&&(g={});var I=g;"object"!=typeof I.sodium&&("object"==typeof global?I=global:"object"==typeof window&&(I=window));var C=g;return g.ready=new Promise((function(A,g){(e=C).onAbort=g,e.print=function(A){},e.printErr=function(A){},e.onRuntimeInitialized=function(){try{e._crypto_secretbox_keybytes(),A()}catch(A){g(A)}},e.useBackupModule=function(){return new Promise((function(A,g){(e={}).onAbort=g,e.onRuntimeInitialized=function(){Object.keys(C).forEach((function(A){"getRandomValue"!==A&&delete C[A]})),Object.keys(e).forEach((function(A){C[A]=e[A]})),A()};var I,e=void 0!==e?e:{},B="object"==typeof window,a="function"==typeof importScripts,i="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,r=Object.assign({},e),t="";if(i){var Q=require("fs"),o=require("path");t=__dirname+"/",I=A=>(A=K(A)?new URL(A):o.normalize(A),Q.readFileSync(A)),!e.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),"undefined"!=typeof module&&(module.exports=e)}else(B||a)&&(a?t=self.location.href:"undefined"!=typeof document&&document.currentScript&&(t=document.currentScript.src),t=t.startsWith("blob:")?"":t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1),a&&(I=A=>{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}));e.print;var c,E=e.printErr||void 0;Object.assign(e,r),r=null,e.arguments&&e.arguments,e.thisProgram&&e.thisProgram,e.quit&&e.quit,e.wasmBinary&&(c=e.wasmBinary);var y,_={Memory:function(A){this.buffer=new ArrayBuffer(65536*A.initial)},Module:function(A){},Instance:function(A,g){this.exports=function(A){for(var g,I=new Uint8Array(123),C=25;C>=0;--C)I[48+C]=52+C,I[65+C]=C,I[97+C]=26+C;function e(A,g,C){for(var e,B,a=0,i=g,r=C.length,t=g+(3*r>>2)-("="==C[r-2])-("="==C[r-1]);a<r;a+=4)e=I[C.charCodeAt(a+1)],B=I[C.charCodeAt(a+2)],A[i++]=I[C.charCodeAt(a)]<<2|e>>4,i<t&&(A[i++]=e<<4|B>>2),i<t&&(A[i++]=B<<6|I[C.charCodeAt(a+3)])}function B(){throw new Error("abort")}return I[43]=62,I[47]=63,function(A){var I=new ArrayBuffer(16777216),C=new Int8Array(I),a=(new Int16Array(I),new Int32Array(I)),i=new Uint8Array(I),r=(new Uint16Array(I),new Uint32Array(I)),t=(new Float32Array(I),new Float64Array(I),Math.imul),Q=(Math.fround,Math.abs,Math.clz32),o=(Math.min,Math.max,Math.floor,Math.ceil,Math.trunc,Math.sqrt,A.a),c=o.a,E=o.b,y=o.c,_=o.d,n=103200,h=0;function s(A,g){var I,e,B,a,r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,iA=0,rA=0,tA=0,QA=0,oA=0,cA=0,EA=0,yA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,kA=0,dA=0,lA=0,uA=0,SA=0,bA=0,MA=0;EA=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,_A=t=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,IA=i[g+104|0]|i[g+105|0]<<8|i[g+106|0]<<16|i[g+107|0]<<24,nA=t=i[g+108|0]|i[g+109|0]<<8|i[g+110|0]<<16|i[g+111|0]<<24,t=i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24,z=i[g+64|0]|i[g+65|0]<<8|i[g+66|0]<<16|i[g+67|0]<<24,eA=t,uA=t=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,u=t,rA=i[g+120|0]|i[g+121|0]<<8|i[g+122|0]<<16|i[g+123|0]<<24,fA=t=i[g+124|0]|i[g+125|0]<<8|i[g+126|0]<<16|i[g+127|0]<<24,B=t=i[g+92|0]|i[g+93|0]<<8|i[g+94|0]<<16|i[g+95|0]<<24,I=i[g+88|0]|i[g+89|0]<<8|i[g+90|0]<<16|i[g+91|0]<<24,q=t,iA=i[g+80|0]|i[g+81|0]<<8|i[g+82|0]<<16|i[g+83|0]<<24,sA=t=i[g+84|0]|i[g+85|0]<<8|i[g+86|0]<<16|i[g+87|0]<<24,j=t,BA=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,t=(QA=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24)+u|0,L=(tA=i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24)+(oA=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24)|0,t=(i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24)+(tA>>>0>L>>>0?t+1|0:t)|0,t=(BA=(Q=L)>>>0>(L=L+BA|0)>>>0?t+1|0:t)+_A|0,aA=yA=L+EA|0,yA=t=yA>>>0<L>>>0?t+1|0:t,L=vA(L^(i[A+80|0]|i[A+81|0]<<8|i[A+82|0]<<16|i[A+83|0]<<24)^-79577749,BA^(i[A+84|0]|i[A+85|0]<<8|i[A+86|0]<<16|i[A+87|0]<<24)^528734635,32),kA=t=h,t=t+1013904242|0,BA=L,V=t=(L=L-23791573|0)>>>0<4271175723?t+1|0:t,QA=vA(L^tA,t^QA,40),t=(t=yA)+(yA=h)|0,tA=vA(BA^(s=tA=QA+aA|0),kA^(p=s>>>0<QA>>>0?t+1|0:t),48),t=V+(P=h)|0,k=t=(tA=L+(f=tA)|0)>>>0<L>>>0?t+1|0:t,tA=t=vA(QA^(w=tA),yA^t,1),V=L=h,yA=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,kA=t=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,cA=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,L=(QA=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24)+(BA=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24)|0,t=(SA=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24)+(MA=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24)|0,t=(i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24)+(L>>>0<BA>>>0?t+1|0:t)|0,t=kA+(aA=(Q=L)>>>0>(L=L+cA|0)>>>0?t+1|0:t)|0,t=(cA=L+yA|0)>>>0<L>>>0?t+1|0:t,Q=vA(L^(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)^725511199,aA^(i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24)^-1694144372,32),y=vA(BA^(o=Q-2067093701|0),MA^(x=(Y=L=h)-((Q>>>0<2067093701)+1150833018|0)|0),40),t=(R=h)+t|0,t=(K=(d=L=y+cA|0)>>>0<y>>>0?t+1|0:t)+V|0,t=(d>>>0>(L=d+tA|0)>>>0?t+1|0:t)+j|0,t=(BA=(c=L)>>>0>(L=L+iA|0)>>>0?t+1|0:t)+q|0,J=q=L+I|0,n=t=q>>>0<L>>>0?t+1|0:t,D=tA,DA=V,V=L,aA=BA,tA=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,L=t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,MA=t=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a=BA=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,j=t,t=(dA=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)+(E=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24)|0,t=a+((q=i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24)>>>0>(c=q+(BA=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)|0)>>>0?t+1|0:t)|0,t=(cA=(j=c+j|0)>>>0<c>>>0?t+1|0:t)+L|0,pA=c=j+tA|0,c=t=c>>>0<j>>>0?t+1|0:t,_=q,q=vA(j^(i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)^-1377402159,cA^(i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24)^1359893119,32),cA=t=h,t=t+1779033703|0,j=q,M=t=(q=q-205731576|0)>>>0<4089235720?t+1|0:t,E=vA(_^(l=q),t^E,40),t=(G=h)+c|0,_=vA(j^(c=q=E+pA|0),cA^(v=E>>>0>c>>>0?t+1|0:t),48),t=vA(_^V,(W=h)^aA,32),O=q=h,U=t,e=t=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,cA=pA=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,b=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,q=(aA=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24)+(j=i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24)|0,t=(lA=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24)+(H=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24)|0,t=(i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24)+(q>>>0<j>>>0?t+1|0:t)|0,t=e+(V=(S=q)>>>0>(q=b+q|0)>>>0?t+1|0:t)|0,t=(b=q+cA|0)>>>0<q>>>0?t+1|0:t,V=vA(q^(i[A+88|0]|i[A+89|0]<<8|i[A+90|0]<<16|i[A+91|0]<<24)^327033209,V^(i[A+92|0]|i[A+93|0]<<8|i[A+94|0]<<16|i[A+95|0]<<24)^1541459225,32),j=vA(j^(cA=V+1595750129|0),(S=H)^(H=(F=q=h)-((V>>>0<2699217167)+1521486533|0)|0),40),t=(gA=h)+t|0,q=vA((b=q=j+b|0)^V,F^(S=b>>>0<j>>>0?t+1|0:t),48),t=H+($=h)|0,N=t=(q=cA+(H=q)|0)>>>0<cA>>>0?t+1|0:t,t=O+t|0,X=D^(V=U+(F=q)|0),D=t=V>>>0<F>>>0?t+1|0:t,cA=vA(X,t^DA,40),t=(DA=h)+n|0,q=vA(J=U^(n=q=cA+J|0),O^(U=n>>>0<cA>>>0?t+1|0:t),48),t=D+(CA=h)|0,O=t=(D=V+(J=q)|0)>>>0<V>>>0?t+1|0:t,q=(m=vA(D^cA,DA^t,1))+(V=i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)|0,t=(hA=h)+(DA=i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)|0,wA=q,T=q>>>0<V>>>0?t+1|0:t,Z=nA,q=i[g+96|0]|i[g+97|0]<<8|i[g+98|0]<<16|i[g+99|0]<<24,cA=t=i[g+100|0]|i[g+101|0]<<8|i[g+102|0]<<16|i[g+103|0]<<24,j=(t=s)+(s=vA(F^j,N^gA,1))|0,t=(F=h)+p|0,t=(s>>>0>j>>>0?t+1|0:t)+cA|0,t=(p=(p=j)>>>0>(j=q+j|0)>>>0?t+1|0:t)+Z|0,X=N=j+IA|0,N=t=N>>>0<j>>>0?t+1|0:t,d=vA(Q^d,K^Y,48),K=t=vA(d^j,(Y=h)^p,32),t=M+W|0,t=(gA=j=h)+(l=(j=_+l|0)>>>0<_>>>0?t+1|0:t)|0,M=t=(p=j)>>>0>(_=p+K|0)>>>0?t+1|0:t,s=vA(_^s,F^t,40),t=(W=h)+N|0,t=(F=s>>>0>(N=j=s+X|0)>>>0?t+1|0:t)+T|0,t=(Q=N>>>0>(j=N+wA|0)>>>0?t+1|0:t)+fA|0,wA=T=j+rA|0,T=t=T>>>0<j>>>0?t+1|0:t,X=j,Z=Q,j=i[g+116|0]|i[g+117|0]<<8|i[g+118|0]<<16|i[g+119|0]<<24,g=i[g+112|0]|i[g+113|0]<<8|i[g+114|0]<<16|i[g+115|0]<<24,E=vA(E^p,l^G,1),t=(G=h)+S|0,t=((Q=E+b|0)>>>0<E>>>0?t+1|0:t)+j|0,t=(p=(l=Q)>>>0>(Q=g+Q|0)>>>0?t+1|0:t)+fA|0,bA=l=Q+rA|0,l=t=l>>>0<Q>>>0?t+1|0:t,t=vA(Q^f,p^P,32),AA=Q=h,f=t,p=Q,t=Y+x|0,d=Q=o+d|0,b=t=Q>>>0<o>>>0?t+1|0:t,t=t+p|0,S=Q=Q+f|0,P=t=d>>>0>Q>>>0?t+1|0:t,p=vA(Q^E,G^t,40),t=(G=h)+l|0,f=vA((Q=p+bA|0)^f,AA^(o=Q>>>0<p>>>0?t+1|0:t),48),t=vA(f^X,(bA=h)^Z,32),AA=E=h,l=t,X=E,y=vA(y^d,b^R,1),t=v+(d=h)|0,t=((E=c)>>>0>(c=c+y|0)>>>0?t+1|0:t)+eA|0,t=(c=(E=c+z|0)>>>0<c>>>0?t+1|0:t)+DA|0,Z=v=E+V|0,v=t=v>>>0<E>>>0?t+1|0:t,b=y,E=vA(E^H,c^$,32),t=(H=h)+k|0,w=vA(b^(c=y=E+w|0),(k=E>>>0>c>>>0?t+1|0:t)^d,40),t=($=h)+v|0,d=y=w+Z|0,y=vA(E^y,H^(v=y>>>0<w>>>0?t+1|0:t),48),t=k+(r=h)|0,k=y,H=t=(y=c+y|0)>>>0<c>>>0?t+1|0:t,t=t+X|0,t=(b=y)>>>0>(y=y+l|0)>>>0?t+1|0:t,X=y,y^=m,m=t,E=vA(y,hA^t,40),t=(hA=h)+T|0,T=y=E+wA|0,t=B+(Z=E>>>0>y>>>0?t+1|0:t)|0,wA=y=y+I|0,Y=t=y>>>0<I>>>0?t+1|0:t,y=Q,x=IA,R=nA,Q=vA(K^N,F^gA,48),t=M+(gA=h)|0,K=Q,M=t=(c=_+Q|0)>>>0<_>>>0?t+1|0:t,Q=vA(c^s,W^t,1),t=(_=h)+R|0,t=((s=Q+x|0)>>>0<Q>>>0?t+1|0:t)+o|0,t=lA+(y=(o=y+s|0)>>>0<s>>>0?t+1|0:t)|0,N=s=o+aA|0,s=t=s>>>0<aA>>>0?t+1|0:t,o=vA(o^k,y^r,32),t=O+(F=h)|0,k=o,D=t=(o=D+o|0)>>>0<D>>>0?t+1|0:t,y=vA(Q^o,t^_,40),t=(t=s)+(s=h)|0,_=Q=y+N|0,Q=vA(Q^k,F^(N=Q>>>0<y>>>0?t+1|0:t),48),t=D+(W=h)|0,F=Q,O=t=(D=o+Q|0)>>>0<o>>>0?t+1|0:t,Q=vA(y^D,s^t,1),t=(s=h)+Y|0,t=e+(y=(o=Q+wA|0)>>>0<Q>>>0?t+1|0:t)|0,wA=k=o+pA|0,k=t=k>>>0<pA>>>0?t+1|0:t,Y=Q,x=s,t=P+bA|0,t=(Q=f+S|0)>>>0<f>>>0?t+1|0:t,f=Q,S=t,t=vA(Q^p,G^t,1),p=s=h,Q=t,t=v+j|0,t=((d=g+d|0)>>>0<g>>>0?t+1|0:t)+s|0,t=sA+(d=(s=Q+d|0)>>>0<d>>>0?t+1|0:t)|0,P=v=s+iA|0,v=t=v>>>0<iA>>>0?t+1|0:t,s=vA(s^J,d^CA,32),t=M+(J=h)|0,d=s,M=t=(M=c)>>>0>(c=c+s|0)>>>0?t+1|0:t,s=vA(Q^c,t^p,40),t=(G=h)+v|0,p=Q=s+P|0,Q=vA(v=Q^d,J^(d=Q>>>0<s>>>0?t+1|0:t),48),t=M+(CA=h)|0,M=Q,v=Q=c+Q|0,J=t=Q>>>0<c>>>0?t+1|0:t,P=o,R=y,Q=vA(w^b,H^$,1),t=(c=h)+u|0,t=U+((o=Q+oA|0)>>>0<Q>>>0?t+1|0:t)|0,t=eA+(y=(o=o+n|0)>>>0<n>>>0?t+1|0:t)|0,U=n=o+z|0,n=t=n>>>0<o>>>0?t+1|0:t,w=Q,Q=(o=vA(o^K,y^gA,32))+f|0,t=(f=h)+S|0,y=Q,c=vA(Q^w,(K=Q>>>0<o>>>0?t+1|0:t)^c,40),t=(gA=h)+n|0,n=Q=c+U|0,b=vA(Q^o,f^(U=Q>>>0<c>>>0?t+1|0:t),48),o=vA(b^P,(t=R)^(R=h),32),t=(P=h)+J|0,f=Q=o+v|0,w=vA(Q^Y,(S=Q>>>0<o>>>0?t+1|0:t)^x,40),t=(Y=h)+k|0,k=Q=w+wA|0,Q=vA(Q^o,P^(H=Q>>>0<w>>>0?t+1|0:t),48),t=S+($=h)|0,S=Q,P=t=(o=f)>>>0>(f=f+Q|0)>>>0?t+1|0:t,Q=vA(f^w,Y^t,1),t=fA+(wA=h)|0,Y=Q,bA=Q=rA+Q|0,w=t=Q>>>0<rA>>>0?t+1|0:t,o=EA,Q=vA(s^v,G^J,1),t=N+(s=h)|0,t=((v=_)>>>0>(_=Q+_|0)>>>0?t+1|0:t)+_A|0,t=(v=(o=o+_|0)>>>0<_>>>0?t+1|0:t)+kA|0,x=_=o+yA|0,N=t=_>>>0<o>>>0?t+1|0:t,J=Q,_=vA(l^T,Z^AA,48),t=vA(_^o,(G=h)^v,32),AA=Q=h,l=t,o=Q,t=K+R|0,t=(Q=y+b|0)>>>0<y>>>0?t+1|0:t,y=Q,K=t,t=t+o|0,v=Q=Q+l|0,b=t=y>>>0>Q>>>0?t+1|0:t,o=vA(Q^J,t^s,40),t=(t=N)+(N=h)|0,J=Q=o+x|0,T=t=Q>>>0<o>>>0?t+1|0:t,t=t+w|0,Z=t=(s=Q+bA|0)>>>0<Q>>>0?t+1|0:t,w=t,Q=vA(c^y,K^gA,1),t=L+(c=h)|0,t=d+((y=Q+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=cA+(p=(y=y+p|0)>>>0<p>>>0?t+1|0:t)|0,x=d=y+q|0,d=t=d>>>0<q>>>0?t+1|0:t,K=Q,t=vA(y^F,p^W,32),R=Q=h,y=t,p=Q,t=G+m|0,F=Q=_+X|0,m=t=Q>>>0<_>>>0?t+1|0:t,t=t+p|0,t=(_=Q+y|0)>>>0<Q>>>0?t+1|0:t,Q=_^K,K=t,p=vA(Q,t^c,40),t=(W=h)+d|0,c=Q=p+x|0,X=vA(Q^y,R^(d=Q>>>0<p>>>0?t+1|0:t),48),t=vA(X^s,(gA=h)^w,32),bA=Q=h,x=t,w=Q,Q=vA(E^F,m^hA,1),t=U+(E=h)|0,t=dA+((y=Q+n|0)>>>0<n>>>0?t+1|0:t)|0,t=(n=(y=y+BA|0)>>>0<BA>>>0?t+1|0:t)+SA|0,F=U=y+QA|0,U=t=U>>>0<y>>>0?t+1|0:t,y=vA(y^M,n^CA,32),t=O+(m=h)|0,M=y,n=E,E=t=(y=D+y|0)>>>0<D>>>0?t+1|0:t,n=vA(Q^y,n^t,40),t=(CA=h)+U|0,D=Q=n+F|0,Q=vA(F=Q^M,m^(M=Q>>>0<n>>>0?t+1|0:t),48),t=E+(G=h)|0,E=Q,U=Q=y+Q|0,F=t=Q>>>0<y>>>0?t+1|0:t,t=t+w|0,O=t=(w=Q+x|0)>>>0<Q>>>0?t+1|0:t,y=vA(w^Y,wA^t,40),t=Z+(m=h)|0,t=((Q=y+s|0)>>>0<s>>>0?t+1|0:t)+nA|0,s=Q,Z=Q=Q+IA|0,Y=t=s>>>0>Q>>>0?t+1|0:t,R=eA,s=vA(l^J,T^AA,48),t=(hA=h)+b|0,l=Q=s+v|0,t=vA(Q^o,(v=Q>>>0<s>>>0?t+1|0:t)^N,1),N=o=h,Q=t,t=d+B|0,t=((c=c+I|0)>>>0<I>>>0?t+1|0:t)+o|0,t=(c=(o=Q+c|0)>>>0<c>>>0?t+1|0:t)+R|0,b=d=o+z|0,d=t=d>>>0<o>>>0?t+1|0:t,o=vA(o^E,c^G,32),t=P+(J=h)|0,f=t=(E=o+f|0)>>>0<f>>>0?t+1|0:t,c=vA(Q^E,t^N,40),t=(T=h)+d|0,d=Q=c+b|0,o=vA(Q^o,J^(N=Q>>>0<c>>>0?t+1|0:t),48),t=f+(b=h)|0,J=t=(f=o+E|0)>>>0<E>>>0?t+1|0:t,Q=vA(c^f,T^t,1),t=(T=h)+Y|0,t=DA+((E=Q+Z|0)>>>0<Q>>>0?t+1|0:t)|0,t=(c=(E=E+V|0)>>>0<V>>>0?t+1|0:t)+u|0,wA=u=E+oA|0,u=t=u>>>0<E>>>0?t+1|0:t,P=Q,R=E,G=c,E=EA,Q=vA(n^U,F^CA,1),t=H+(n=h)|0,t=((c=k)>>>0>(k=Q+k|0)>>>0?t+1|0:t)+_A|0,t=SA+(c=(E=E+k|0)>>>0<k>>>0?t+1|0:t)|0,H=k=E+QA|0,U=t=k>>>0<QA>>>0?t+1|0:t,k=Q,c=t=vA(E^s,c^hA,32),t=K+gA|0,t=(F=Q=h)+(_=(Q=_+X|0)>>>0<_>>>0?t+1|0:t)|0,K=t=(s=Q+c|0)>>>0<Q>>>0?t+1|0:t,k=vA(s^k,t^n,40),t=(gA=h)+U|0,U=vA(H=(E=k+H|0)^c,F^(c=E>>>0<k>>>0?t+1|0:t),48),t=vA(U^R,(CA=h)^G,32),hA=n=h,H=t,F=n,Q=vA(Q^p,_^W,1),t=cA+(n=h)|0,t=M+((_=Q+q|0)>>>0<q>>>0?t+1|0:t)|0,t=dA+(D=(_=_+D|0)>>>0<D>>>0?t+1|0:t)|0,R=p=_+BA|0,p=t=p>>>0<BA>>>0?t+1|0:t,M=Q,X=n,_=vA(_^S,D^$,32),t=(S=h)+v|0,n=Q=_+l|0,D=vA(Q^M,(l=Q>>>0<_>>>0?t+1|0:t)^X,40),t=(W=h)+p|0,M=Q=D+R|0,Q=vA(Q^_,S^(v=Q>>>0<D>>>0?t+1|0:t),48),t=l+(R=h)|0,p=Q,l=Q=n+Q|0,S=t=Q>>>0<n>>>0?t+1|0:t,t=t+F|0,F=Q=Q+H|0,_=T,T=t=l>>>0>Q>>>0?t+1|0:t,_=vA(Q^P,_^t,40),t=(t=u)+(u=h)|0,X=Q=_+wA|0,P=t=Q>>>0<_>>>0?t+1|0:t,n=c,Q=vA(x^Z,Y^bA,48),t=O+($=h)|0,O=Q,c=(Q=w+Q|0)^y,y=t=Q>>>0<w>>>0?t+1|0:t,c=vA(c,t^m,1),t=(m=h)+n|0,t=e+((E=c+E|0)>>>0<c>>>0?t+1|0:t)|0,t=(n=(E=E+pA|0)>>>0<pA>>>0?t+1|0:t)+L|0,Z=w=E+tA|0,w=t=w>>>0<E>>>0?t+1|0:t,E=vA(E^p,n^R,32),t=J+(Y=h)|0,J=E,f=t=(n=f+E|0)>>>0<f>>>0?t+1|0:t,c=vA(c^n,m^t,40),t=(t=w)+(w=h)|0,p=E=c+Z|0,E=vA(x=E^J,Y^(J=E>>>0<c>>>0?t+1|0:t),48),t=f+(wA=h)|0,m=E,Z=t=(f=n+E|0)>>>0<n>>>0?t+1|0:t,E=vA(c^f,w^t,1),t=(w=h)+P|0,t=B+((c=E+X|0)>>>0<E>>>0?t+1|0:t)|0,t=j+(n=(c=c+I|0)>>>0<I>>>0?t+1|0:t)|0,bA=Y=g+c|0,Y=t=Y>>>0<g>>>0?t+1|0:t,x=E,R=w,w=c,G=n,E=vA(D^l,S^W,1),t=(n=h)+N|0,t=sA+((c=E+d|0)>>>0<E>>>0?t+1|0:t)|0,t=(D=(c=c+iA|0)>>>0<iA>>>0?t+1|0:t)+j|0,N=d=g+c|0,d=t=d>>>0<c>>>0?t+1|0:t,l=E,c=t=vA(c^O,D^$,32),D=E=h,t=K+CA|0,K=t=(E=s+U|0)>>>0<s>>>0?t+1|0:t,t=t+D|0,t=(s=E)>>>0>(E=E+c|0)>>>0?t+1|0:t,U=E,E^=l,l=t,n=vA(E,t^n,40),t=(W=h)+d|0,D=vA(d=(E=n+N|0)^c,D^(c=E>>>0<n>>>0?t+1|0:t),48),t=vA(D^w,(t=G)^(G=h),32),$=w=h,d=t,N=y,y=o,t=vA(s^k,K^gA,1),S=o=h,s=t,t=v+kA|0,t=((k=M+yA|0)>>>0<yA>>>0?t+1|0:t)+o|0,k=t=(o=s+k|0)>>>0<k>>>0?t+1|0:t,y=vA(o^y,t^b,32),t=(t=N)+(N=h)|0,s=vA((Q=y+Q|0)^s,S^(K=Q>>>0<y>>>0?t+1|0:t),40),t=k+(gA=h)|0,M=s,t=lA+((v=o)>>>0>(o=o+s|0)>>>0?t+1|0:t)|0,v=t=(s=o+aA|0)>>>0<aA>>>0?t+1|0:t,o=vA(y^s,N^t,48),t=K+(CA=h)|0,b=Q,y=o,K=Q=Q+o|0,N=t=b>>>0>Q>>>0?t+1|0:t,t=t+w|0,b=t=(w=Q+d|0)>>>0<Q>>>0?t+1|0:t,Q=(k=vA(w^x,t^R,40))+bA|0,t=(bA=h)+Y|0,S=Q,O=Q>>>0<k>>>0?t+1|0:t,Q=vA(H^X,P^hA,48),t=(H=h)+T|0,F=o=Q+F|0,x=u,u=t=o>>>0<Q>>>0?t+1|0:t,t=vA(o^_,x^t,1),X=o=h,_=t,t=c+e|0,t=((E=E+pA|0)>>>0<pA>>>0?t+1|0:t)+o|0,t=DA+(E=(o=E+_|0)>>>0<E>>>0?t+1|0:t)|0,P=c=o+V|0,c=t=c>>>0<V>>>0?t+1|0:t,o=vA(o^y,E^CA,32),t=Z+(Y=h)|0,T=o,o=(y=f+o|0)^_,_=t=y>>>0<f>>>0?t+1|0:t,E=vA(o,X^t,40),t=(t=c)+(c=h)|0,X=o=E+P|0,o=vA(f=o^T,Y^(T=o>>>0<E>>>0?t+1|0:t),48),t=_+(CA=h)|0,Z=o,y=t=(o=y+o|0)>>>0<y>>>0?t+1|0:t,E=vA(o^E,c^t,1),t=(f=h)+O|0,t=fA+((c=E+S|0)>>>0<E>>>0?t+1|0:t)|0,t=(_=(c=c+rA|0)>>>0<rA>>>0?t+1|0:t)+eA|0,AA=P=c+z|0,P=t=P>>>0<c>>>0?t+1|0:t,Y=E,x=c,R=_,E=vA(M^K,N^gA,1),t=(N=h)+nA|0,t=J+(E>>>0>(c=E+IA|0)>>>0?t+1|0:t)|0,_=t=(c=c+p|0)>>>0<p>>>0?t+1|0:t,t=vA(Q^c,t^H,32),H=Q=h,p=t,t=l+G|0,t=(Q=D+U|0)>>>0<D>>>0?t+1|0:t,D=Q,K=t,t=H+t|0,l=Q=Q+p|0,M=t=D>>>0>Q>>>0?t+1|0:t,Q=vA(Q^E,N^t,40),t=_+(G=h)|0,U=Q,t=cA+((Q=c+Q|0)>>>0<c>>>0?t+1|0:t)|0,t=(Q=Q+q|0)>>>0<q>>>0?t+1|0:t,N=Q,Q^=p,p=t,_=vA(Q,H^t,48),t=vA(_^x,(t=R)^(R=h),32),gA=Q=h,H=t,J=Q,Q=vA(n^D,K^W,1),t=kA+(c=h)|0,t=v+((E=Q+yA|0)>>>0<yA>>>0?t+1|0:t)|0,t=(n=(E=E+s|0)>>>0<s>>>0?t+1|0:t)+L|0,v=D=E+tA|0,D=t=D>>>0<E>>>0?t+1|0:t,s=Q,K=c,Q=(E=vA(E^m,n^wA,32))+F|0,t=(F=h)+u|0,c=Q,n=vA(n=Q^s,(s=Q>>>0<E>>>0?t+1|0:t)^K,40),t=(W=h)+D|0,D=Q=n+v|0,E=vA(Q^E,F^(u=Q>>>0<n>>>0?t+1|0:t),48),t=s+(K=h)|0,v=Q=E+c|0,F=t=Q>>>0<c>>>0?t+1|0:t,t=t+J|0,J=t=(s=Q+H|0)>>>0<Q>>>0?t+1|0:t,c=vA(s^Y,t^f,40),t=(m=h)+P|0,P=Q=c+AA|0,Y=t=Q>>>0<c>>>0?t+1|0:t,Q=o,f=y,y=E,o=vA(d^S,O^$,48),t=b+(AA=h)|0,d=o,w=t=(E=w+o|0)>>>0<w>>>0?t+1|0:t,t=vA(E^k,bA^t,1),b=o=h,k=t,t=p+uA|0,t=((p=N+oA|0)>>>0<oA>>>0?t+1|0:t)+o|0,p=t=(o=p+k|0)>>>0<p>>>0?t+1|0:t,y=vA(o^y,t^K,32),t=(N=h)+f|0,k=vA((Q=y+Q|0)^k,b^(f=Q>>>0<y>>>0?t+1|0:t),40),t=p+(S=h)|0,t=dA+((p=o)>>>0>(o=o+k|0)>>>0?t+1|0:t)|0,K=t=(p=o+BA|0)>>>0<BA>>>0?t+1|0:t,o=vA(y^p,N^t,48),t=f+($=h)|0,N=o,b=t=(f=Q+o|0)>>>0<Q>>>0?t+1|0:t,Q=vA(f^k,S^t,1),t=(k=h)+Y|0,t=sA+((o=Q+P|0)>>>0<Q>>>0?t+1|0:t)|0,t=fA+(y=(o=o+iA|0)>>>0<iA>>>0?t+1|0:t)|0,hA=S=o+rA|0,S=t=S>>>0<rA>>>0?t+1|0:t,O=Q,x=o,Q=vA(n^v,F^W,1),t=(n=h)+T|0,t=SA+((o=Q+X|0)>>>0<Q>>>0?t+1|0:t)|0,t=lA+(v=(o=o+QA|0)>>>0<QA>>>0?t+1|0:t)|0,X=F=o+aA|0,F=t=F>>>0<aA>>>0?t+1|0:t,T=Q,t=vA(o^d,v^AA,32),AA=Q=h,o=t,t=M+R|0,l=Q=_+l|0,d=t=Q>>>0<_>>>0?t+1|0:t,t=AA+t|0,M=t=(_=Q+o|0)>>>0<Q>>>0?t+1|0:t,n=vA(_^T,t^n,40),t=(R=h)+F|0,v=Q=n+X|0,T=vA(Q^o,AA^(F=Q>>>0<n>>>0?t+1|0:t),48),t=vA(T^x,(AA=h)^y,32),W=Q=h,X=t,y=Q,o=EA,Q=vA(l^U,d^G,1),t=u+(d=h)|0,t=((l=D)>>>0>(D=Q+D|0)>>>0?t+1|0:t)+_A|0,t=sA+(D=(o=o+D|0)>>>0<D>>>0?t+1|0:t)|0,l=u=o+iA|0,u=t=u>>>0<iA>>>0?t+1|0:t,o=vA(o^Z,D^CA,32),t=w+(U=h)|0,w=o,t=(o=E+o|0)>>>0<E>>>0?t+1|0:t,E=d,d=t,E=vA(Q^o,E^t,40),t=(G=h)+u|0,D=Q=E+l|0,Q=vA(Q^w,U^(u=Q>>>0<E>>>0?t+1|0:t),48),t=d+(x=h)|0,d=Q,l=Q=o+Q|0,U=t=Q>>>0<o>>>0?t+1|0:t,t=t+y|0,t=(w=Q+X|0)>>>0<Q>>>0?t+1|0:t,Q=w^O,O=t,k=vA(Q,t^k,40),t=(CA=h)+S|0,S=Q=k+hA|0,Z=Q>>>0<k>>>0?t+1|0:t,Q=vA(H^P,Y^gA,48),t=J+(gA=h)|0,H=Q,t=(Q=s+Q|0)>>>0<s>>>0?t+1|0:t,s=Q,J=t,t=vA(Q^c,t^m,1),m=Q=h,y=t,t=F+DA|0,t=((o=v+V|0)>>>0<V>>>0?t+1|0:t)+Q|0,t=dA+(o=(Q=o+y|0)>>>0<o>>>0?t+1|0:t)|0,v=c=Q+BA|0,c=t=c>>>0<BA>>>0?t+1|0:t,Q=vA(Q^d,o^x,32),t=b+(F=h)|0,d=Q,f=t=(o=f+Q|0)>>>0<f>>>0?t+1|0:t,y=vA(o^y,m^t,40),t=(m=h)+c|0,v=Q=y+v|0,Q=vA(c=Q^d,F^(d=Q>>>0<y>>>0?t+1|0:t),48),t=f+(hA=h)|0,f=Q,b=t=(c=o+Q|0)>>>0<o>>>0?t+1|0:t,Q=vA(c^y,m^t,1),t=(F=h)+Z|0,t=kA+((o=Q+S|0)>>>0<Q>>>0?t+1|0:t)|0,t=(y=(o=o+yA|0)>>>0<yA>>>0?t+1|0:t)+nA|0,wA=m=o+IA|0,m=t=m>>>0<o>>>0?t+1|0:t,P=Q,Y=o,x=y,Q=vA(E^l,G^U,1),t=SA+(y=h)|0,t=K+((o=Q+QA|0)>>>0<QA>>>0?t+1|0:t)|0,t=uA+(E=(o=o+p|0)>>>0<p>>>0?t+1|0:t)|0,U=p=o+oA|0,p=t=p>>>0<oA>>>0?t+1|0:t,K=Q,l=y,t=vA(o^H,E^gA,32),H=Q=h,E=t,o=Q,t=M+AA|0,t=(Q=_+T|0)>>>0<_>>>0?t+1|0:t,_=Q,M=t,t=t+o|0,t=(y=Q+E|0)>>>0<Q>>>0?t+1|0:t,Q=y^K,K=t,Q=vA(Q,t^l,40),t=(t=p)+(p=h)|0,l=o=Q+U|0,U=t=o>>>0<Q>>>0?t+1|0:t,H=vA(o^E,H^t,48),t=vA(H^Y,(t=x)^(x=h),32),G=o=h,T=t,o=vA(_^n,M^R,1),t=(_=h)+_A|0,t=u+((E=o+EA|0)>>>0<o>>>0?t+1|0:t)|0,t=e+(n=(E=E+D|0)>>>0<D>>>0?t+1|0:t)|0,R=D=E+pA|0,D=t=D>>>0<pA>>>0?t+1|0:t,u=o,M=_,E=vA(E^N,n^$,32),t=(N=h)+J|0,_=o=E+s|0,o=(n=vA(o^u,(s=o>>>0<E>>>0?t+1|0:t)^M,40))+R|0,t=(R=h)+D|0,u=o,o=vA(o^E,N^(M=o>>>0<n>>>0?t+1|0:t),48),t=s+(AA=h)|0,N=o,J=o=_+o|0,Y=t=o>>>0<_>>>0?t+1|0:t,t=G+t|0,t=(E=o+T|0)>>>0<o>>>0?t+1|0:t,o=F,F=t,_=vA(E^P,o^t,40),t=(gA=h)+m|0,D=o=_+wA|0,t=vA(o^T,G^(m=o>>>0<_>>>0?t+1|0:t),48),G=o=h,T=t,o=Q,t=K+x|0,K=Q=y+H|0,H=t=Q>>>0<y>>>0?t+1|0:t,t=vA(Q^o,t^p,1),y=o=h,Q=t,t=M+B|0,t=((s=u+I|0)>>>0<I>>>0?t+1|0:t)+o|0,t=cA+(s=(o=Q+s|0)>>>0<s>>>0?t+1|0:t)|0,x=p=o+q|0,p=t=p>>>0<q>>>0?t+1|0:t,u=Q,M=y,Q=vA(S^X,Z^W,48),t=O+(W=h)|0,S=Q,t=(Q=w+Q|0)>>>0<w>>>0?t+1|0:t,w=Q,o=vA(o^f,s^hA,32),O=t,t=t+(X=h)|0,y=Q=o+Q|0,s=vA(Q^u,(f=Q>>>0<o>>>0?t+1|0:t)^M,40),t=(Z=h)+p|0,p=Q=s+x|0,Q=vA(Q^o,X^(u=Q>>>0<s>>>0?t+1|0:t),48),t=f+($=h)|0,M=Q,X=t=(f=y+Q|0)>>>0<y>>>0?t+1|0:t,Q=vA(s^f,Z^t,1),t=dA+(x=h)|0,Z=Q,hA=Q=BA+Q|0,y=t=Q>>>0<BA>>>0?t+1|0:t,Q=vA(k^w,O^CA,1),t=(s=h)+U|0,t=lA+((o=Q+l|0)>>>0<Q>>>0?t+1|0:t)|0,t=eA+(w=(o=o+aA|0)>>>0<aA>>>0?t+1|0:t)|0,O=k=o+z|0,k=t=k>>>0<z>>>0?t+1|0:t,l=s,o=vA(o^N,w^AA,32),t=b+(AA=h)|0,U=o,t=(s=c+o|0)>>>0<c>>>0?t+1|0:t,c=l,l=t,w=vA(Q^s,c^t,40),t=(CA=h)+k|0,N=Q=w+O|0,t=(b=Q>>>0<w>>>0?t+1|0:t)+y|0,k=t=(y=Q+hA|0)>>>0<Q>>>0?t+1|0:t,O=t=vA(y^T,t^G,32),P=Q=h,Q=vA(n^J,Y^R,1),t=(c=h)+d|0,t=j+((o=Q+v|0)>>>0<Q>>>0?t+1|0:t)|0,t=(n=(o=g+o|0)>>>0<g>>>0?t+1|0:t)+L|0,Y=d=o+tA|0,d=t=d>>>0<o>>>0?t+1|0:t,v=Q,J=c,o=vA(o^S,n^W,32),t=(S=h)+H|0,c=Q=o+K|0,Q=(n=vA(Q^v,(K=Q>>>0<o>>>0?t+1|0:t)^J,40))+Y|0,t=(Y=h)+d|0,d=Q,Q=vA(Q^o,S^(v=Q>>>0<n>>>0?t+1|0:t),48),t=K+(W=h)|0,K=Q,S=t=(Q=c+Q|0)>>>0<c>>>0?t+1|0:t,t=t+P|0,H=t=(c=Q)>>>0>(Q=Q+O|0)>>>0?t+1|0:t,o=vA(Q^Z,x^t,40),t=k+(x=h)|0,J=o,t=B+((o=y+o|0)>>>0<y>>>0?t+1|0:t)|0,Z=o=o+I|0,y=o^O,O=t=o>>>0<I>>>0?t+1|0:t,o=vA(y,P^t,48),t=H+(P=h)|0,H=t=(k=Q+o|0)>>>0<Q>>>0?t+1|0:t,Q=t=vA(k^J,x^t,1),J=y=h,y=vA(c^n,S^Y,1),t=u+(n=h)|0,t=lA+((c=y+p|0)>>>0<p>>>0?t+1|0:t)|0,t=sA+(p=(c=c+aA|0)>>>0<aA>>>0?t+1|0:t)|0,x=u=c+iA|0,u=t=u>>>0<iA>>>0?t+1|0:t,S=y,Y=n,t=F+G|0,t=(y=E+T|0)>>>0<E>>>0?t+1|0:t,F=y,U=vA(N^U,b^AA,48),n=vA(c^U,p^(AA=h),32),N=t,t=t+(hA=h)|0,p=y=n+y|0,y=vA(y^S,(b=y>>>0<n>>>0?t+1|0:t)^Y,40),t=(S=h)+u|0,Y=t=(E=y+x|0)>>>0<y>>>0?t+1|0:t,t=t+J|0,t=e+((T=E)>>>0>(E=Q+E|0)>>>0?t+1|0:t)|0,t=(c=(E=E+pA|0)>>>0<pA>>>0?t+1|0:t)+_A|0,wA=u=E+EA|0,x=t=u>>>0<E>>>0?t+1|0:t,R=Q,G=E,t=vA(_^F,N^gA,1),_=E=h,Q=t,t=v+SA|0,t=((u=d+QA|0)>>>0<QA>>>0?t+1|0:t)+E|0,t=cA+(u=(E=Q+u|0)>>>0<u>>>0?t+1|0:t)|0,N=d=E+q|0,d=t=d>>>0<q>>>0?t+1|0:t,v=Q,t=vA(E^M,u^$,32),F=Q=h,E=t,u=Q,t=l+AA|0,l=Q=s+U|0,M=t=Q>>>0<s>>>0?t+1|0:t,t=t+u|0,t=(s=Q+E|0)>>>0<Q>>>0?t+1|0:t,Q=s^v;v=t,u=vA(Q,t^_,40),t=(AA=h)+d|0,U=vA(d=(Q=u+N|0)^E,F^(E=Q>>>0<u>>>0?t+1|0:t),48),t=vA(t=U^G,(G=h)^c,32),gA=c=h,N=t,d=c,c=vA(w^l,M^CA,1),t=eA+(w=h)|0,t=m+((_=c+z|0)>>>0<z>>>0?t+1|0:t)|0,t=kA+(D=(_=_+D|0)>>>0<D>>>0?t+1|0:t)|0,M=l=_+yA|0,l=t=l>>>0<yA>>>0?t+1|0:t,_=vA(_^K,D^W,32),t=X+(F=h)|0,K=_,f=t=(_=f+_|0)>>>0<f>>>0?t+1|0:t,D=vA(c^_,t^w,40),t=(W=h)+l|0,w=c=D+M|0,c=vA(l=c^K,F^(K=c>>>0<D>>>0?t+1|0:t),48),t=f+($=h)|0,l=c,M=c=_+c|0,F=t=c>>>0<_>>>0?t+1|0:t,t=t+d|0,t=(_=c+N|0)>>>0<c>>>0?t+1|0:t,c=J,J=t,f=vA(_^R,c^t,40),t=(m=h)+x|0,d=c=f+wA|0,c=vA(x=c^N,gA^(N=c>>>0<f>>>0?t+1|0:t),48),t=J+(gA=h)|0,J=c,_=t=(c=_+c|0)>>>0<_>>>0?t+1|0:t,m=t=vA(c^f,m^t,1),CA=t,X=f=h,f=E,E=y,y=vA(n^T,Y^hA,48),t=b+(hA=h)|0,b=y,t=(y=p+y|0)>>>0<p>>>0?t+1|0:t,p=Q,Q=E^y,E=t,Q=vA(Q,t^S,1),t=(S=h)+f|0,t=uA+(Q>>>0>(n=p+Q|0)>>>0?t+1|0:t)|0,t=nA+(p=(n=n+oA|0)>>>0<oA>>>0?t+1|0:t)|0,T=f=n+IA|0,f=t=f>>>0<IA>>>0?t+1|0:t,n=vA(n^l,p^$,32),t=H+(Y=h)|0,l=t=(p=n+k|0)>>>0<k>>>0?t+1|0:t,k=vA(Q^p,S^t,40),t=($=h)+f|0,S=Q=k+T|0,n=vA(Q^n,Y^(H=Q>>>0<k>>>0?t+1|0:t),48),t=l+(T=h)|0,Y=Q=n+p|0,l=Q,x=t=Q>>>0<p>>>0?t+1|0:t,p=y,f=E,t=v+G|0,t=(Q=s+U|0)>>>0<s>>>0?t+1|0:t,s=Q,Q^=u,u=t,t=vA(Q,AA^t,1),R=Q=h,v=t,E=t,t=K+L|0,t=((y=w+tA|0)>>>0<tA>>>0?t+1|0:t)+Q|0,w=t=(Q=y)>>>0>(y=E+y|0)>>>0?t+1|0:t,E=vA(o^y,t^P,32),t=(t=f)+(f=h)|0,U=Q=E+p|0,o=vA(o=Q^v,R^(v=Q>>>0<E>>>0?t+1|0:t),40),t=w+(P=h)|0,t=DA+((Q=o+y|0)>>>0<y>>>0?t+1|0:t)|0,R=t=(p=Q+V|0)>>>0<V>>>0?t+1|0:t,f=vA(E^p,f^t,48),wA=t=h,Q=vA(D^M,F^W,1),t=(E=h)+O|0,t=fA+((y=Q+Z|0)>>>0<Q>>>0?t+1|0:t)|0,t=j+(D=(y=y+rA|0)>>>0<rA>>>0?t+1|0:t)|0,O=w=g+y|0,M=t=w>>>0<g>>>0?t+1|0:t,F=Q,w=vA(y^b,D^hA,32),t=(W=h)+u|0,u=Q=w+s|0,y=vA(Q^F,(b=Q>>>0<w>>>0?t+1|0:t)^E,40),t=(t=M)+(M=h)|0,F=Q=y+O|0,O=t=Q>>>0<y>>>0?t+1|0:t,E=t,t=j+X|0,t=((D=g+m|0)>>>0<g>>>0?t+1|0:t)+E|0,K=t=(E=Q+D|0)>>>0<D>>>0?t+1|0:t,Q=vA(E^f,wA^t,32),t=(m=h)+x|0,s=vA((D=Q+l|0)^CA,(t=D>>>0<Q>>>0?t+1|0:t)^X,40),X=t,t=nA+(l=h)|0,t=K+((Z=s+IA|0)>>>0<IA>>>0?t+1|0:t)|0,t=(K=E+Z|0)>>>0<E>>>0?t+1|0:t,E=m,m=t,E=vA(Q^K,E^t,48),t=(t=X)+(X=h)|0,Q=s^(D=E+D|0),s=t=D>>>0<E>>>0?t+1|0:t,Z=t=vA(Q,t^l,1),CA=t,G=Q=h,l=c,AA=_,c=y,y=vA(w^F,O^W,48),t=b+(F=h)|0,w=Q=y+u|0,u=t=Q>>>0<u>>>0?t+1|0:t,c=vA(Q^c,t^M,1),t=(O=h)+uA|0,t=R+((Q=c+oA|0)>>>0<c>>>0?t+1|0:t)|0,p=t=(_=Q+p|0)>>>0<p>>>0?t+1|0:t,Q=vA(_^n,t^T,32),t=(M=h)+AA|0,l=n=Q+l|0,b=t=n>>>0<Q>>>0?t+1|0:t,c=vA(c^n,t^O,40),t=sA+(hA=h)|0,O=c,t=p+((c=iA+c|0)>>>0<iA>>>0?t+1|0:t)|0,_=t=(c=c+_|0)>>>0<_>>>0?t+1|0:t,n=vA(Q^c,t^M,48),t=(t=b)+(b=h)|0,T=Q=n+l|0,M=Q,R=t=Q>>>0<n>>>0?t+1|0:t,t=v+wA|0,l=(Q=f+U|0)^o,o=t=Q>>>0<f>>>0?t+1|0:t,t=vA(l,t^P,1),P=p=h,l=t,t=H+cA|0,t=((f=S+q|0)>>>0<q>>>0?t+1|0:t)+p|0,v=t=(v=f)>>>0>(f=f+l|0)>>>0?t+1|0:t,U=p=vA(f^J,gA^t,32),S=t=h,t=t+u|0,H=p=p+w|0,J=t=U>>>0>p>>>0?t+1|0:t,p=vA(p^l,P^t,40),t=_A+(P=h)|0,t=v+((w=p+EA|0)>>>0<EA>>>0?t+1|0:t)|0,w=t=(l=f)>>>0>(f=f+w|0)>>>0?t+1|0:t,l=vA(f^U,t^S,48),gA=t=h,u=t,k=vA(k^Y,x^$,1),v=t=h,U=y,t=t+L|0,t=N+((y=k+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=(y=y+d|0)>>>0<d>>>0?t+1|0:t,d=y^U,U=t,d=vA(d,t^F,32),t=($=h)+o|0,N=Q=d+Q|0,o=vA(Q^k,(o=v)^(v=Q>>>0<d>>>0?t+1|0:t),40),t=fA+(S=h)|0,t=U+((Q=o+rA|0)>>>0<rA>>>0?t+1|0:t)|0,U=Q=Q+y|0,F=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+lA|0,t=((k=Z+aA|0)>>>0<aA>>>0?t+1|0:t)+y|0,Z=t=(y=Q+k|0)>>>0<k>>>0?t+1|0:t,Q=vA(y^l,t^u,32),t=(Y=h)+R|0,u=vA((k=Q+M|0)^CA,(t=k>>>0<Q>>>0?t+1|0:t)^G,40),x=M=h,G=t,t=M+kA|0,t=Z+((M=u+yA|0)>>>0<yA>>>0?t+1|0:t)|0,Z=t=(M=y+M|0)>>>0<y>>>0?t+1|0:t,y=vA(Q^M,t^Y,48),t=(Y=h)+G|0,Q=(k=y+k|0)^u,u=t=k>>>0<y>>>0?t+1|0:t,x=t=vA(Q,t^x,1),G=Q=h,AA=D,W=n,n=o,o=vA(d^U,F^$,48),t=(d=h)+v|0,v=Q=o+N|0,U=t=Q>>>0<o>>>0?t+1|0:t,n=vA(Q^n,t^S,1),t=(S=h)+dA|0,t=((Q=n+BA|0)>>>0<n>>>0?t+1|0:t)+w|0,f=t=(D=Q+f|0)>>>0<Q>>>0?t+1|0:t,Q=vA(D^W,t^b,32),t=(w=h)+s|0,N=s=Q+AA|0,b=t=s>>>0<Q>>>0?t+1|0:t,n=vA(n^s,t^S,40),t=e+(W=h)|0,S=n,t=f+((n=pA+n|0)>>>0<pA>>>0?t+1|0:t)|0,F=t=(s=n+D|0)>>>0<D>>>0?t+1|0:t,n=vA(Q^s,t^w,48),t=(t=b)+(b=h)|0,N=Q=n+N|0,AA=t=Q>>>0<n>>>0?t+1|0:t,f=E,D=c,t=J+gA|0,E=t=(Q=l+H|0)>>>0<l>>>0?t+1|0:t,c=vA(Q^p,t^P,1),t=(p=h)+eA|0,t=((w=c+z|0)>>>0<c>>>0?t+1|0:t)+_|0,_=vA(f^(D=D+w|0),(t=D>>>0<w>>>0?t+1|0:t)^X,32),w=t,l=c,t=(f=h)+U|0,t=(c=_+v|0)>>>0<_>>>0?t+1|0:t,v=c,c^=l,l=t,c=vA(c,t^p,40),t=B+(U=h)|0,t=((p=c+I|0)>>>0<I>>>0?t+1|0:t)+w|0,H=t=(w=p)>>>0>(p=p+D|0)>>>0?t+1|0:t,f=vA(_^p,t^f,48),gA=t=h,D=t,_=vA(T^O,R^hA,1),J=t=h,O=E,t=t+DA|0,t=m+((E=_+V|0)>>>0<V>>>0?t+1|0:t)|0,w=d,d=t=(E=E+K|0)>>>0<K>>>0?t+1|0:t,w=vA(o^E,w^t,32),t=($=h)+O|0,K=Q=w+Q|0,o=vA(Q^_,(o=J)^(J=Q>>>0<w>>>0?t+1|0:t),40),t=SA+(O=h)|0,t=d+((Q=o+QA|0)>>>0<QA>>>0?t+1|0:t)|0,m=Q=Q+E|0,T=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+cA|0,t=((_=q+x|0)>>>0<q>>>0?t+1|0:t)+E|0,d=t=(E=Q+_|0)>>>0<_>>>0?t+1|0:t,Q=vA(E^f,t^D,32),t=(X=h)+AA|0,D=vA((_=Q+N|0)^x,(t=_>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=L+(P=h)|0,t=d+((R=D+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=(d=E+R|0)>>>0<E>>>0?t+1|0:t,E=X,X=t,E=vA(Q^d,E^t,48),t=(t=x)+(x=h)|0,Q=(_=E+_|0)^D,D=t=_>>>0<E>>>0?t+1|0:t,P=t=vA(Q,t^P,1),R=Q=h,G=n,n=o,o=vA(w^m,T^$,48),t=(t=J)+(J=h)|0,K=Q=o+K|0,w=O,O=t=Q>>>0<o>>>0?t+1|0:t,n=vA(Q^n,w^t,1),t=(m=h)+kA|0,t=H+((Q=n+yA|0)>>>0<n>>>0?t+1|0:t)|0,w=p,p=Q+p|0,Q=b,b=t=w>>>0>p>>>0?t+1|0:t,Q=vA(p^G,Q^t,32),t=(t=u)+(u=h)|0,H=t=(w=Q+k|0)>>>0<Q>>>0?t+1|0:t,k=w,n=vA(n^w,t^m,40),t=DA+($=h)|0,m=n,t=b+((n=V+n|0)>>>0<V>>>0?t+1|0:t)|0,b=t=(w=n+p|0)>>>0<p>>>0?t+1|0:t,n=vA(Q^w,t^u,48),t=(t=H)+(H=h)|0,T=Q=n+k|0,G=t=Q>>>0<n>>>0?t+1|0:t,k=y,t=l+gA|0,y=t=(Q=f+v|0)>>>0<f>>>0?t+1|0:t,c=vA(Q^c,t^U,1),t=nA+(f=h)|0,t=F+((p=c+IA|0)>>>0<IA>>>0?t+1|0:t)|0,l=(p=s+p|0)^k,k=t=p>>>0<s>>>0?t+1|0:t,s=vA(l,t^Y,32),u=t=h,l=c,t=t+O|0,t=(c=s+K|0)>>>0<s>>>0?t+1|0:t,v=c,c^=l,l=t,c=vA(c,t^f,40),t=B+(U=h)|0,t=k+((f=c+I|0)>>>0<I>>>0?t+1|0:t)|0,F=t=(f=p+f|0)>>>0<p>>>0?t+1|0:t,k=vA(s^f,t^u,48),gA=t=h,p=t,s=vA(S^N,W^AA,1),K=t=h,N=y,t=t+e|0,t=Z+((y=s+pA|0)>>>0<pA>>>0?t+1|0:t)|0,M=t=(y=y+M|0)>>>0<M>>>0?t+1|0:t,u=vA(o^y,t^J,32),t=(CA=h)+N|0,N=Q=u+Q|0,o=vA(Q^s,(S=Q>>>0<u>>>0?t+1|0:t)^K,40),t=j+(J=h)|0,t=M+((Q=g+o|0)>>>0<g>>>0?t+1|0:t)|0,M=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=R+fA|0,t=((s=P+rA|0)>>>0<rA>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+G|0,p=vA((s=Q+T|0)^P,(t=s>>>0<Q>>>0?t+1|0:t)^R,40),Y=t,t=uA+(P=h)|0,t=K+((R=p+oA|0)>>>0<oA>>>0?t+1|0:t)|0,t=(K=y+R|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=Y)+(Y=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,P=t=vA(Q,t^P,1),hA=t,R=Q=h,AA=_,W=n,_=o,o=vA(u^M,O^CA,48),t=(u=h)+S|0,M=Q=o+N|0,N=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^J,1),t=(J=h)+_A|0,t=F+((Q=_+EA|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(S=h)+D|0,H=t=(D=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^J,40),t=dA+(CA=h)|0,F=_,t=f+((_=BA+_|0)>>>0<BA>>>0?t+1|0:t)|0,f=_+n|0,_=S,S=t=f>>>0<n>>>0?t+1|0:t,_=vA(Q^f,_^t,48),t=(t=H)+(H=h)|0,J=Q=_+D|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=l+gA|0,E=t=(Q=k+v|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^U,1),t=(k=h)+SA|0,t=b+((D=c+QA|0)>>>0<c>>>0?t+1|0:t)|0,n=vA(n^(D=D+w|0),(t=D>>>0<w>>>0?t+1|0:t)^x,32),l=w=h,w=t,v=c,t=l+N|0,t=(c=n+M|0)>>>0<n>>>0?t+1|0:t,M=c,c^=v,v=t,c=vA(c,t^k,40),t=sA+(U=h)|0,t=((k=c+iA|0)>>>0<iA>>>0?t+1|0:t)+w|0,b=l,l=t=(w=D+k|0)>>>0<k>>>0?t+1|0:t,k=vA(n^w,b^t,48),gA=t=h,D=t,n=vA(T^m,G^$,1),N=t=h,b=E,t=t+eA|0,t=X+((E=n+z|0)>>>0<z>>>0?t+1|0:t)|0,d=t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,u=vA(o^E,t^u,32),t=($=h)+b|0,b=Q=u+Q|0,o=vA(Q^n,(o=N)^(N=Q>>>0<u>>>0?t+1|0:t),40),t=lA+(m=h)|0,t=d+((Q=o+aA|0)>>>0<aA>>>0?t+1|0:t)|0,T=Q=Q+E|0,X=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=R+B|0,t=((n=P+I|0)>>>0<I>>>0?t+1|0:t)+E|0,d=t=(E=Q+n|0)>>>0<n>>>0?t+1|0:t,Q=vA(E^k,t^D,32),t=(P=h)+O|0,D=vA((n=Q+J|0)^hA,(t=n>>>0<Q>>>0?t+1|0:t)^R,40),R=t,t=kA+(x=h)|0,t=d+((G=D+yA|0)>>>0<yA>>>0?t+1|0:t)|0,t=(d=E+G|0)>>>0<E>>>0?t+1|0:t,E=P,P=t,E=vA(Q^d,E^t,48),t=(t=R)+(R=h)|0,Q=(n=E+n|0)^D,D=t=n>>>0<E>>>0?t+1|0:t,x=t=vA(Q,t^x,1),G=Q=h,AA=s,W=_,_=o,o=vA(u^T,X^$,48),t=(u=h)+N|0,N=Q=o+b|0,b=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^m,1),t=(m=h)+dA|0,t=l+((Q=_+BA|0)>>>0<_>>>0?t+1|0:t)|0,w=t=(s=Q+w|0)>>>0<w>>>0?t+1|0:t,Q=vA(s^W,t^H,32),t=(l=h)+p|0,H=t=(p=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^p,t^m,40),t=eA+($=h)|0,m=_,t=w+((_=z+_|0)>>>0<z>>>0?t+1|0:t)|0,w=_+s|0,_=l,l=t=w>>>0<s>>>0?t+1|0:t,_=vA(Q^w,_^t,48),t=(t=H)+(H=h)|0,T=Q=_+p|0,X=t=Q>>>0<_>>>0?t+1|0:t,s=y,t=v+gA|0,y=t=(Q=k+M|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^U,1),t=lA+(k=h)|0,t=S+((p=c+aA|0)>>>0<aA>>>0?t+1|0:t)|0,f=t=(p=p+f|0)>>>0<f>>>0?t+1|0:t,s=vA(s^p,t^Y,32),M=t=h,v=c,t=t+b|0,t=(c=s+N|0)>>>0<s>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=fA+(N=h)|0,t=f+((k=c+rA|0)>>>0<rA>>>0?t+1|0:t)|0,t=(f=p+k|0)>>>0<p>>>0?t+1|0:t,p=M,M=t,k=vA(s^f,p^t,48),gA=t=h,p=t,s=vA(F^J,O^CA,1),b=t=h,S=y,t=t+j|0,t=Z+((y=g+s|0)>>>0<g>>>0?t+1|0:t)|0,K=t=(y=y+K|0)>>>0<K>>>0?t+1|0:t,u=vA(o^y,t^u,32),t=(CA=h)+S|0,S=Q=u+Q|0,o=vA(Q^s,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=DA+(F=h)|0,t=K+((Q=o+V|0)>>>0<V>>>0?t+1|0:t)|0,J=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+nA|0,t=((s=x+IA|0)>>>0<IA>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+X|0,p=vA((s=Q+T|0)^x,(t=s>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=e+(Y=h)|0,t=K+((G=p+pA|0)>>>0<pA>>>0?t+1|0:t)|0,t=(K=y+G|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=x)+(x=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=n,W=_,_=o,o=vA(u^J,O^CA,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^F,1),t=(F=h)+cA|0,t=M+((Q=_+q|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(M=h)+D|0,H=t=(D=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^F,40),t=SA+(CA=h)|0,F=_,t=f+((_=QA+_|0)>>>0<QA>>>0?t+1|0:t)|0,f=_+n|0,_=M,M=t=f>>>0<n>>>0?t+1|0:t,_=vA(Q^f,_^t,48),t=(t=H)+(H=h)|0,J=Q=_+D|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=v+gA|0,E=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=(k=h)+sA|0,t=l+((D=c+iA|0)>>>0<c>>>0?t+1|0:t)|0,w=t=(D=D+w|0)>>>0<w>>>0?t+1|0:t,n=vA(n^D,t^R,32),l=t=h,v=c,t=t+S|0,t=(c=n+b|0)>>>0<n>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=_A+(N=h)|0,t=w+((k=c+EA|0)>>>0<EA>>>0?t+1|0:t)|0,b=l,l=t=(w=D+k|0)>>>0<D>>>0?t+1|0:t,k=vA(n^w,b^t,48),gA=t=h,D=t,n=vA(T^m,X^$,1),b=t=h,S=E,t=t+L|0,t=P+((E=n+tA|0)>>>0<tA>>>0?t+1|0:t)|0,d=t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,u=vA(o^E,t^u,32),t=($=h)+S|0,S=Q=u+Q|0,o=vA(Q^n,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=uA+(m=h)|0,t=d+((Q=o+oA|0)>>>0<oA>>>0?t+1|0:t)|0,T=Q=Q+E|0,X=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+e|0,t=((n=Y+pA|0)>>>0<pA>>>0?t+1|0:t)+E|0,d=t=(E=Q+n|0)>>>0<n>>>0?t+1|0:t,Q=vA(E^k,t^D,32),t=(P=h)+O|0,D=vA((n=Q+J|0)^Y,(t=n>>>0<Q>>>0?t+1|0:t)^G,40),R=t,t=lA+(Y=h)|0,t=d+((G=D+aA|0)>>>0<aA>>>0?t+1|0:t)|0,t=(d=E+G|0)>>>0<E>>>0?t+1|0:t,E=P,P=t,E=vA(Q^d,E^t,48),t=(t=R)+(R=h)|0,Q=(n=E+n|0)^D,D=t=n>>>0<E>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=s,W=_,_=o,o=vA(u^T,X^$,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^m,1),t=(m=h)+L|0,t=l+((Q=_+tA|0)>>>0<_>>>0?t+1|0:t)|0,w=t=(s=Q+w|0)>>>0<w>>>0?t+1|0:t,Q=vA(s^W,t^H,32),t=(l=h)+p|0,H=t=(p=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^p,t^m,40),t=_A+($=h)|0,m=_,t=w+((_=EA+_|0)>>>0<EA>>>0?t+1|0:t)|0,w=_+s|0,_=l,l=t=w>>>0<s>>>0?t+1|0:t,_=vA(Q^w,_^t,48),t=(t=H)+(H=h)|0,T=Q=_+p|0,X=t=Q>>>0<_>>>0?t+1|0:t,s=y,t=v+gA|0,y=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=sA+(k=h)|0,t=M+((p=c+iA|0)>>>0<iA>>>0?t+1|0:t)|0,f=t=(p=p+f|0)>>>0<f>>>0?t+1|0:t,s=vA(s^p,t^x,32),M=t=h,v=c,t=t+S|0,t=(c=s+b|0)>>>0<s>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=SA+(N=h)|0,t=f+((k=c+QA|0)>>>0<QA>>>0?t+1|0:t)|0,t=(f=p+k|0)>>>0<p>>>0?t+1|0:t,p=M,M=t,k=vA(s^f,p^t,48),gA=t=h,p=t,s=vA(F^J,O^CA,1),b=t=h,S=y,t=t+eA|0,t=Z+((y=s+z|0)>>>0<z>>>0?t+1|0:t)|0,K=t=(y=y+K|0)>>>0<K>>>0?t+1|0:t,u=vA(o^y,t^u,32),t=(CA=h)+S|0,S=Q=u+Q|0,o=vA(Q^s,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=uA+(F=h)|0,t=K+((Q=o+oA|0)>>>0<oA>>>0?t+1|0:t)|0,J=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+DA|0,t=((s=Y+V|0)>>>0<V>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+X|0,p=vA((s=Q+T|0)^Y,(t=s>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=j+(Y=h)|0,t=K+((G=g+p|0)>>>0<g>>>0?t+1|0:t)|0,t=(K=y+G|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=x)+(x=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=n,W=_,_=o,o=vA(u^J,O^CA,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^F,1),t=(F=h)+fA|0,t=M+((Q=_+rA|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(M=h)+D|0,H=t=(D=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^F,40),t=B+(CA=h)|0,F=_,t=f+((_=I+_|0)>>>0<I>>>0?t+1|0:t)|0,f=_+n|0,_=M,M=t=f>>>0<n>>>0?t+1|0:t,_=vA(Q^f,_^t,48),t=(t=H)+(H=h)|0,J=Q=_+D|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=v+gA|0,E=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=(k=h)+nA|0,t=l+((D=c+IA|0)>>>0<c>>>0?t+1|0:t)|0,w=t=(D=D+w|0)>>>0<w>>>0?t+1|0:t,n=vA(n^D,t^R,32),l=t=h,v=c,t=t+S|0,t=(c=n+b|0)>>>0<n>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=dA+(N=h)|0,t=w+((k=c+BA|0)>>>0<BA>>>0?t+1|0:t)|0,b=l,l=t=(w=D+k|0)>>>0<D>>>0?t+1|0:t,k=vA(n^w,b^t,48),gA=t=h,D=t,n=vA(T^m,X^$,1),b=t=h,S=E,t=t+kA|0,t=P+((E=n+yA|0)>>>0<yA>>>0?t+1|0:t)|0,d=t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,u=vA(o^E,t^u,32),t=($=h)+S|0,S=Q=u+Q|0,o=vA(Q^n,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=cA+(m=h)|0,t=d+((Q=o+q|0)>>>0<q>>>0?t+1|0:t)|0,T=Q=Q+E|0,X=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+uA|0,t=((n=Y+oA|0)>>>0<oA>>>0?t+1|0:t)+E|0,d=t=(E=Q+n|0)>>>0<n>>>0?t+1|0:t,Q=vA(E^k,t^D,32),t=(P=h)+O|0,D=vA((n=Q+J|0)^Y,(t=n>>>0<Q>>>0?t+1|0:t)^G,40),R=t,t=_A+(Y=h)|0,t=d+((G=D+EA|0)>>>0<EA>>>0?t+1|0:t)|0,t=(d=E+G|0)>>>0<E>>>0?t+1|0:t,E=P,P=t,E=vA(Q^d,E^t,48),t=(t=R)+(R=h)|0,Q=(n=E+n|0)^D,D=t=n>>>0<E>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=s,W=_,_=o,o=vA(u^T,X^$,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^m,1),t=(m=h)+lA|0,t=l+((Q=_+aA|0)>>>0<_>>>0?t+1|0:t)|0,w=t=(s=Q+w|0)>>>0<w>>>0?t+1|0:t,Q=vA(s^W,t^H,32),t=(l=h)+p|0,H=t=(p=Q+AA|0)>>>0<Q>>>0?t+1|0:t,_=vA(_^p,t^m,40),t=e+($=h)|0,m=_,t=w+((_=pA+_|0)>>>0<pA>>>0?t+1|0:t)|0,w=_+s|0,_=l,l=t=w>>>0<s>>>0?t+1|0:t,_=vA(Q^w,_^t,48),t=(t=H)+(H=h)|0,T=Q=_+p|0,X=t=Q>>>0<_>>>0?t+1|0:t,s=y,t=v+gA|0,y=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=dA+(k=h)|0,t=M+((p=c+BA|0)>>>0<BA>>>0?t+1|0:t)|0,f=t=(p=p+f|0)>>>0<f>>>0?t+1|0:t,s=vA(s^p,t^x,32),M=t=h,v=c,t=t+S|0,t=(c=s+b|0)>>>0<s>>>0?t+1|0:t,U=c,c^=v,v=t,c=vA(c,t^k,40),t=L+(N=h)|0,t=f+((k=c+tA|0)>>>0<tA>>>0?t+1|0:t)|0,t=(f=p+k|0)>>>0<p>>>0?t+1|0:t,p=M,M=t,k=vA(s^f,p^t,48),gA=t=h,p=t,s=vA(F^J,O^CA,1),b=t=h,S=y,t=t+SA|0,t=Z+((y=s+QA|0)>>>0<QA>>>0?t+1|0:t)|0,K=t=(y=y+K|0)>>>0<K>>>0?t+1|0:t,u=vA(o^y,t^u,32),t=(CA=h)+S|0,S=Q=u+Q|0,o=vA(Q^s,(o=b)^(b=Q>>>0<u>>>0?t+1|0:t),40),t=kA+(F=h)|0,t=K+((Q=o+yA|0)>>>0<yA>>>0?t+1|0:t)|0,J=Q=Q+y|0,O=t=Q>>>0<y>>>0?t+1|0:t,y=t,t=G+sA|0,t=((s=Y+iA|0)>>>0<iA>>>0?t+1|0:t)+y|0,K=t=(y=Q+s|0)>>>0<s>>>0?t+1|0:t,Q=vA(y^k,t^p,32),t=(Z=h)+X|0,p=vA((s=Q+T|0)^Y,(t=s>>>0<Q>>>0?t+1|0:t)^G,40),x=t,t=B+(Y=h)|0,t=K+((G=p+I|0)>>>0<I>>>0?t+1|0:t)|0,t=(K=y+G|0)>>>0<y>>>0?t+1|0:t,y=Z,Z=t,y=vA(Q^K,y^t,48),t=(t=x)+(x=h)|0,Q=(s=y+s|0)^p,p=t=s>>>0<y>>>0?t+1|0:t,Y=t=vA(Q,t^Y,1),G=Q=h,AA=n,W=_,_=o,o=vA(u^J,O^CA,48),t=(u=h)+b|0,b=Q=o+S|0,S=t=Q>>>0<o>>>0?t+1|0:t,_=vA(Q^_,t^F,1),t=(J=h)+eA|0,t=M+((Q=_+z|0)>>>0<_>>>0?t+1|0:t)|0,f=t=(n=Q+f|0)>>>0<f>>>0?t+1|0:t,Q=vA(n^W,t^H,32),t=(M=h)+D|0,H=D=Q+AA|0,F=t=D>>>0<Q>>>0?t+1|0:t,_=vA(_^D,t^J,40),t=DA+(AA=h)|0,J=_,t=f+((_=V+_|0)>>>0<V>>>0?t+1|0:t)|0,D=_+n|0,_=M,M=t=D>>>0<n>>>0?t+1|0:t,_=vA(Q^D,_^t,48),t=(t=F)+(F=h)|0,H=Q=_+H|0,O=t=Q>>>0<_>>>0?t+1|0:t,n=E,t=v+gA|0,E=t=(Q=k+U|0)>>>0<k>>>0?t+1|0:t,c=vA(Q^c,t^N,1),t=(k=h)+j|0,t=l+((f=g+c|0)>>>0<c>>>0?t+1|0:t)|0,w=t=(f=f+w|0)>>>0<w>>>0?t+1|0:t,l=n=vA(n^f,t^R,32),v=t=h,U=c,t=t+S|0,t=(c=n+b|0)>>>0<n>>>0?t+1|0:t,N=c,c^=U,U=t,c=vA(c,t^k,40),t=fA+(b=h)|0,t=w+((n=c+rA|0)>>>0<rA>>>0?t+1|0:t)|0,S=(n=n+f|0)^l,l=t=n>>>0<f>>>0?t+1|0:t,f=vA(S,t^v,48),R=t=h,k=t,v=w=vA(T^m,X^$,1),S=t=h,m=E,t=t+cA|0,t=P+((E=w+q|0)>>>0<q>>>0?t+1|0:t)|0,t=(E=E+d|0)>>>0<d>>>0?t+1|0:t,d=u,u=t,w=vA(o^E,d^t,32),t=(W=h)+m|0,d=Q=w+Q|0,o=vA(o=Q^v,(v=Q>>>0<w>>>0?t+1|0:t)^S,40),t=nA+(S=h)|0,t=u+((Q=o+IA|0)>>>0<IA>>>0?t+1|0:t)|0,u=Q=Q+E|0,m=t=Q>>>0<E>>>0?t+1|0:t,E=t,t=G+DA|0,t=((P=V)>>>0>(V=Y+V|0)>>>0?t+1|0:t)+E|0,DA=t=(Q=Q+V|0)>>>0<V>>>0?t+1|0:t,V=vA(Q^f,t^k,32),t=(T=h)+O|0,k=vA((E=H+V|0)^Y,(t=E>>>0<V>>>0?t+1|0:t)^G,40),P=t,t=fA+(X=h)|0,t=DA+((Y=rA)>>>0>(rA=k+rA|0)>>>0?t+1|0:t)|0,t=(rA=Q+rA|0)>>>0<Q>>>0?t+1|0:t,Q=V^rA,V=t,fA=vA(Q,t^T,48);t=(DA=h)+P|0,E=t=(Q=E+fA|0)>>>0<fA>>>0?t+1|0:t,t=vA(Q^k,t^X,1),k=h,T=t,X=s,s=IA,P=nA,nA=vA(w^u,m^W,48),t=(w=h)+v|0,v=s,d=t=(IA=d+nA|0)>>>0<nA>>>0?t+1|0:t,s=vA(o^(u=IA),t^S,1),t=(S=h)+P|0,t=l+(s>>>0>(IA=v+s|0)>>>0?t+1|0:t)|0,o=t=(IA=n+IA|0)>>>0<n>>>0?t+1|0:t,_=vA(_^IA,t^F,32),t=(t=p)+(p=h)|0,l=n=_+X|0,v=t=n>>>0<_>>>0?t+1|0:t,n=vA(n^s,t^S,40),t=(S=h)+lA|0,t=(n>>>0>(aA=n+aA|0)>>>0?t+1|0:t)+o|0,o=t=(o=aA)>>>0>(aA=IA+aA|0)>>>0?t+1|0:t,_=vA(_^aA,t^p,48),t=(s=h)+v|0,p=IA=_+l|0,lA=t=IA>>>0<_>>>0?t+1|0:t,l=g,v=j,t=U+R|0,IA=t=(g=f+N|0)>>>0<f>>>0?t+1|0:t,j=vA(g^c,t^b,1),t=(f=h)+v|0,t=M+((c=l+j|0)>>>0<j>>>0?t+1|0:t)|0,y=vA((c=c+D|0)^y,(t=c>>>0<D>>>0?t+1|0:t)^x,32),l=t,M=iA,iA=j,t=(D=h)+d|0,d=f,f=t=(j=y+u|0)>>>0<y>>>0?t+1|0:t,iA=vA(j^iA,d^t,40),t=(u=h)+sA|0,t=((sA=M+iA|0)>>>0<iA>>>0?t+1|0:t)+l|0,l=sA,c=y^(sA=c+sA|0),y=t=l>>>0>sA>>>0?t+1|0:t,t=vA(c,t^D,48),U=c=h,D=t,d=z,l=eA,z=vA(H^J,O^AA,1),v=t=h,t=t+uA|0,t=Z+((z=(M=z)+oA|0)>>>0<oA>>>0?t+1|0:t)|0,oA=t=(z=K+z|0)>>>0<K>>>0?t+1|0:t,eA=vA(z^nA,t^w,32),t=(K=h)+IA|0,IA=g=eA+g|0,nA=vA(g^M,(w=g>>>0<eA>>>0?t+1|0:t)^v,40),t=(t=l)+(l=h)|0,t=oA+((g=nA+d|0)>>>0<nA>>>0?t+1|0:t)|0,oA=g=g+z|0,uA=t=g>>>0<z>>>0?t+1|0:t,z=t,t=k+dA|0,t=((M=BA)>>>0>(BA=T+BA|0)>>>0?t+1|0:t)+z|0,dA=t=(z=g+BA|0)>>>0<BA>>>0?t+1|0:t,BA=vA(D^z,t^c,32),t=(M=h)+lA|0,c=g=BA+p|0,g=vA(g^T,(d=k)^(k=g>>>0<BA>>>0?t+1|0:t),40),t=SA+(v=h)|0,SA=g,t=dA+((g=QA+g|0)>>>0<QA>>>0?t+1|0:t)|0,t=(g=g+z|0)>>>0<z>>>0?t+1|0:t,dA=g,N=(i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24)^g,d=t,b=t^(i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24),z=vA(eA^oA,K^uA,48),t=(oA=h)+w|0,w=g=z+IA|0,uA=t=g>>>0<z>>>0?t+1|0:t,eA=EA,t=f+U|0,EA=t=(g=D+j|0)>>>0<j>>>0?t+1|0:t,iA=vA(g^iA,t^u,1),t=(D=h)+_A|0,t=((eA=iA+eA|0)>>>0<iA>>>0?t+1|0:t)+o|0,eA=t=(_A=eA+aA|0)>>>0<eA>>>0?t+1|0:t,IA=vA(_A^fA,t^DA,32),t=(j=h)+uA|0,aA=t=(QA=IA+w|0)>>>0<IA>>>0?t+1|0:t,fA=IA,IA=vA(iA^QA,t^D,40),t=(o=h)+kA|0,t=(IA>>>0>(iA=IA+yA|0)>>>0?t+1|0:t)+eA|0,f=j,j=t=(_A=iA+_A|0)>>>0<iA>>>0?t+1|0:t,iA=vA(fA^(yA=_A),f^t,48),t=(D=h)+aA|0,t=(eA=iA+QA|0)>>>0<iA>>>0?t+1|0:t,QA=eA,eA^=N,C[A+8|0]=eA,C[A+9|0]=eA>>>8,C[A+10|0]=eA>>>16,C[A+11|0]=eA>>>24,aA=t,t^=b,C[A+12|0]=t,C[A+13|0]=t>>>8,C[A+14|0]=t>>>16,C[A+15|0]=t>>>24,_A=g,eA=EA,g=z,z=vA(n^p,S^lA,1),t=(kA=h)+B|0,t=(z>>>0>(EA=z+I|0)>>>0?t+1|0:t)+V|0,rA=t=(p=EA)>>>0>(EA=rA+EA|0)>>>0?t+1|0:t,g=vA(g^EA,t^oA,32),t=(t=eA)+(eA=h)|0,oA=t=(_A=g+_A|0)>>>0<g>>>0?t+1|0:t,fA=g,_A=vA(z^(V=_A),t^kA,40),t=(n=h)+e|0,t=rA+((g=_A+pA|0)>>>0<_A>>>0?t+1|0:t)|0,t=(g=g+EA|0)>>>0<EA>>>0?t+1|0:t,rA=g,g^=fA,fA=t,EA=vA(g,t^eA,48),t=(p=h)+oA|0,V=g=EA+V|0,oA=g>>>0<EA>>>0?t+1|0:t,nA=g=vA(w^nA,l^uA,1),kA=t=h,t=t+L|0,t=y+((g=g+tA|0)>>>0<tA>>>0?t+1|0:t)|0,L=t=(z=g+sA|0)>>>0<sA>>>0?t+1|0:t,g=(eA=vA(_^z,t^s,32))+Q|0,t=(Q=h)+E|0,sA=g,g=(tA=vA(y=g^nA,(nA=g>>>0<eA>>>0?t+1|0:t)^kA,40))+q|0,t=(q=h)+cA|0,t=L+(g>>>0<tA>>>0?t+1|0:t)|0,t=(L=g+z|0)>>>0<z>>>0?t+1|0:t,z=L^MA^V,C[0|(g=A)]=z,C[g+1|0]=z>>>8,C[g+2|0]=z>>>16,C[g+3|0]=z>>>24,z=t^a^oA,C[g+4|0]=z,C[g+5|0]=z>>>8,C[g+6|0]=z>>>16,C[g+7|0]=z>>>24,z=(eA=vA(L^eA,t^Q,48))+sA|0,t=(sA=h)+nA|0,t=(nA=z>>>0<eA>>>0?t+1|0:t)^(i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24)^fA,L=(i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24)^rA^z,C[g+16|0]=L,C[g+17|0]=L>>>8,C[g+18|0]=L>>>16,C[g+19|0]=L>>>24,C[g+20|0]=t,C[g+21|0]=t>>>8,C[g+22|0]=t>>>16,C[g+23|0]=t>>>24,g=vA(BA^dA,d^M,48),L=h,rA=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,t=(i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24)^vA(IA^QA,o^aA,1)^g,C[A+32|0]=t,C[A+33|0]=t>>>8,C[A+34|0]=t>>>16,C[A+35|0]=t>>>24,t=h^rA^L,C[A+36|0]=t,C[A+37|0]=t>>>8,C[A+38|0]=t>>>16,C[A+39|0]=t>>>24,t=k+L|0,t=(rA=g+c|0)>>>0<g>>>0?t+1|0:t,IA=(i[(g=A)+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)^j^t,L=(i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24)^yA^rA,C[g+24|0]=L,C[g+25|0]=L>>>8,C[g+26|0]=L>>>16,C[g+27|0]=L>>>24,C[g+28|0]=IA,C[g+29|0]=IA>>>8,C[g+30|0]=IA>>>16,C[g+31|0]=IA>>>24,IA=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,g=EA^(i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24)^vA(z^tA,q^nA,1),C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,g=p^h^IA,C[A+44|0]=g,C[A+45|0]=g>>>8,C[A+46|0]=g>>>16,C[A+47|0]=g>>>24,z=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24,g=eA^(i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24)^vA(V^_A,n^oA,1),C[A+56|0]=g,C[A+57|0]=g>>>8,C[A+58|0]=g>>>16,C[A+59|0]=g>>>24,g=sA^h^z,C[A+60|0]=g,C[A+61|0]=g>>>8,C[A+62|0]=g>>>16,C[A+63|0]=g>>>24,z=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24,g=iA^(i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24)^vA(rA^SA,t^v,1),C[A+48|0]=g,C[A+49|0]=g>>>8,C[A+50|0]=g>>>16,C[A+51|0]=g>>>24,g=D^h^z,C[A+52|0]=g,C[A+53|0]=g>>>8,C[A+54|0]=g>>>16,C[A+55|0]=g>>>24}function p(A,g,I,e,B,r,t){var Q,o,c,E,y,_,s,p,f,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,U,x,m,P,R,L,T,q,z,j,X,O,V,$,AA,gA,IA,CA,eA,BA,aA,iA,rA,tA,QA=0,oA=0,cA=0,EA=0,yA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,kA=0,lA=0,uA=0,vA=0,SA=0,bA=0,MA=0,FA=0,NA=0,KA=0,YA=0,HA=0,JA=0,UA=0,xA=0,mA=0,PA=0,LA=0,TA=0,qA=0,zA=0,jA=0,XA=0,OA=0,VA=0,ZA=0,WA=0,$A=0,Ag=0,gg=0,Ig=0,Cg=0,eg=0,Bg=0;return n=c=n-560|0,dA(cA=c+352|0),t&&W(cA,35120,34,0),wA(c+288|0,r,32,0),W(_A=c+352|0,c+320|0,32,0),W(_A,I,e,B),J(_A,hA=c+224|0),pA=i[(oA=r)+32|0]|i[oA+33|0]<<8|i[oA+34|0]<<16|i[oA+35|0]<<24,fA=i[oA+36|0]|i[oA+37|0]<<8|i[oA+38|0]<<16|i[oA+39|0]<<24,EA=i[oA+40|0]|i[oA+41|0]<<8|i[oA+42|0]<<16|i[oA+43|0]<<24,QA=i[oA+44|0]|i[oA+45|0]<<8|i[oA+46|0]<<16|i[oA+47|0]<<24,cA=i[oA+48|0]|i[oA+49|0]<<8|i[oA+50|0]<<16|i[oA+51|0]<<24,r=i[oA+52|0]|i[oA+53|0]<<8|i[oA+54|0]<<16|i[oA+55|0]<<24,yA=i[oA+60|0]|i[oA+61|0]<<8|i[oA+62|0]<<16|i[oA+63|0]<<24,oA=i[oA+56|0]|i[oA+57|0]<<8|i[oA+58|0]<<16|i[oA+59|0]<<24,C[A+56|0]=oA,C[A+57|0]=oA>>>8,C[A+58|0]=oA>>>16,C[A+59|0]=oA>>>24,C[A+60|0]=yA,C[A+61|0]=yA>>>8,C[A+62|0]=yA>>>16,C[A+63|0]=yA>>>24,C[A+48|0]=cA,C[A+49|0]=cA>>>8,C[A+50|0]=cA>>>16,C[A+51|0]=cA>>>24,C[A+52|0]=r,C[A+53|0]=r>>>8,C[A+54|0]=r>>>16,C[A+55|0]=r>>>24,C[A+40|0]=EA,C[A+41|0]=EA>>>8,C[A+42|0]=EA>>>16,C[A+43|0]=EA>>>24,C[A+44|0]=QA,C[A+45|0]=QA>>>8,C[A+46|0]=QA>>>16,C[A+47|0]=QA>>>24,C[0|(r=A+32|0)]=pA,C[r+1|0]=pA>>>8,C[r+2|0]=pA>>>16,C[r+3|0]=pA>>>24,C[r+4|0]=fA,C[r+5|0]=fA>>>8,C[r+6|0]=fA>>>16,C[r+7|0]=fA>>>24,D(hA),Z(c,hA),RA(A,c),dA(_A),t&&W(_A,35120,34,0),W(t=c+352|0,A,64,0),W(t,I,e,B),J(t,nA=c+160|0),D(nA),C[c+288|0]=248&i[c+288|0],C[c+319|0]=63&i[c+319|0]|64,I=i[23+(A=o=c+288|0)|0],EA=GA(E=i[A+21|0]|i[A+22|0]<<8|I<<16&2031616,0,y=(i[nA+28|0]|i[nA+29|0]<<8|i[nA+30|0]<<16|i[nA+31|0]<<24)>>>7|0,0),cA=h,I=(A=i[nA+27|0])>>>24|0,B=A<<8|(QA=i[nA+23|0]|i[nA+24|0]<<8|i[nA+25|0]<<16|i[nA+26|0]<<24)>>>24,A=GA(_=2097151&((3&(fA=(A=(e=i[nA+28|0])>>>16|0)|I))<<30|(I=(e<<=16)|B)>>>2),0,s=(t=i[o+23|0]|i[o+24|0]<<8|i[o+25|0]<<16|i[o+26|0]<<24)>>>5&2097151,0),I=h+cA|0,e=A>>>0>(B=A+EA|0)>>>0?I+1|0:I,A=GA(p=(I=i[nA+23|0])<<16&2031616|i[nA+21|0]|i[nA+22|0]<<8,0,f=(i[o+28|0]|i[o+29|0]<<8|i[o+30|0]<<16|i[o+31|0]<<24)>>>7|0,0),e=h+e|0,cA=I=A+B|0,B=A>>>0>I>>>0?e+1|0:e,e=(A=i[o+27|0])>>>24|0,t=A<<8|t>>>24,A=GA(w=2097151&((3&(e|=I=(A=i[o+28|0])>>>16|0))<<30|(I=(A<<=16)|t)>>>2),0,k=QA>>>5&2097151,0),I=h+B|0,oA=e=A+cA|0,B=A>>>0>e>>>0?I+1|0:I,QA=GA(s,0,k,0),cA=h,I=(A=i[o+19|0])>>>24|0,t=A<<8|(bA=i[o+15|0]|i[o+16|0]<<8|i[o+17|0]<<16|i[o+18|0]<<24)>>>24,e=I,I=GA(d=(7&(e|=I=(A=i[o+20|0])>>>16|0))<<29|(I=(A<<=16)|t)>>>3,fA=e>>>3|0,y,0),A=h+cA|0,A=I>>>0>(e=I+QA|0)>>>0?A+1|0:A,t=(I=GA(E,0,_,0))+e|0,e=h+A|0,I=I>>>0>(QA=t)>>>0?e+1|0:e,e=(A=i[nA+19|0])>>>24|0,cA=A<<8|(uA=i[nA+15|0]|i[nA+16|0]<<8|i[nA+17|0]<<16|i[nA+18|0]<<24)>>>24,A=GA(l=(7&(EA=(A=(t=i[nA+20|0])>>>16|0)|e))<<29|(e=(t<<=16)|cA)>>>3,u=EA>>>3|0,f,0),I=h+I|0,I=A>>>0>(e=A+QA|0)>>>0?I+1|0:I,A=GA(p,0,w,0),I=h+I|0,pA=I=A>>>0>(hA=A+e|0)>>>0?I+1|0:I,DA=A=I-((hA>>>0<4293918720)-1|0)|0,e=(I=A>>>21|0)+B|0,QA=e=(A=(2097151&A)<<11|(EA=hA- -1048576|0)>>>21)>>>0>(oA=A+oA|0)>>>0?e+1|0:e,lA=A=e-((oA>>>0<4293918720)-1|0)|0,yA=(2097151&A)<<11|(cA=oA- -1048576|0)>>>21,t=A>>>21|0,A=GA(f,0,k,0),I=h,e=A,A=GA(y,0,s,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,kA=(A=e)+(e=GA(_,0,w,0))|0,A=h+I|0,A=e>>>0>kA>>>0?A+1|0:A,_A=kA-(I=-2097152&(e=kA- -1048576|0))|0,I=(A-((131071&(B=A-((kA>>>0<4293918720)-1|0)|0))+(I>>>0>kA>>>0)|0)|0)+t|0,R=I=(A=yA+_A|0)>>>0<_A>>>0?I+1|0:I,L=A,_A=GA(A,I,470296,0),yA=h,I=GA(y,0,w,0),A=h,t=I,I=GA(_,0,f,0),A=h+A|0,I=I>>>0>(t=t+I|0)>>>0?A+1|0:A,A=B>>>21|0,B=(2097151&B)<<11|e>>>21,e=A+I|0,KA=B=(e=B>>>0>(t=B+t|0)>>>0?e+1|0:e)-((t>>>0<4293918720)-1|0)|0,A=t-(I=-2097152&(NA=t- -1048576|0))|0,T=t=e-((131071&B)+(I>>>0>t>>>0)|0)|0,q=I=oA-(e=-2097152&cA)|0,z=B=QA-((e>>>0>oA>>>0)+lA|0)|0,j=A,e=GA(A,t,666643,0),A=h+yA|0,A=e>>>0>(t=e+_A|0)>>>0?A+1|0:A,e=GA(I,B,654183,0),I=h+A|0,sA=B=e+t|0,cA=e>>>0>B>>>0?I+1|0:I,kA=hA-(A=-2097152&EA)|0,DA=pA-((A>>>0>hA>>>0)+DA|0)|0,I=GA(_,0,d,fA),e=h,B=(A=I)+(I=GA(v=bA>>>6&2097151,0,y,0))|0,A=h+e|0,A=I>>>0>B>>>0?A+1|0:A,I=GA(s,0,p,0),e=h+A|0,e=I>>>0>(B=I+B|0)>>>0?e+1|0:e,A=GA(E,0,k,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(f,0,S=uA>>>6&2097151,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,e=GA(w,0,l,u),I=h+A|0,hA=B=e+B|0,t=e>>>0>B>>>0?I+1|0:I,I=(A=i[o+14|0])>>>24|0,B=A<<8|(pA=i[o+10|0]|i[o+11|0]<<8|i[o+12|0]<<16|i[o+13|0]<<24)>>>24,I=GA(b=2097151&((1&(I|=A=(e=i[o+15|0])>>>16|0))<<31|(A=(e<<=16)|B)>>>1),0,y,0),A=h,e=I,I=GA(_,0,v,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=GA(k,0,d,fA))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,A=GA(s,0,l,u),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,A=GA(E,0,p,0),I=h+I|0,EA=e=A+B|0,B=A>>>0>e>>>0?I+1|0:I,I=(A=i[nA+14|0])>>>24|0,QA=A<<8|(oA=i[nA+10|0]|i[nA+11|0]<<8|i[nA+12|0]<<16|i[nA+13|0]<<24)>>>24,e=I,I=(A=i[nA+15|0])>>>16|0,I=GA(M=2097151&((1&(I|=e))<<31|(A=A<<16|QA)>>>1),0,f,0),A=h+B|0,A=I>>>0>(e=I+EA|0)>>>0?A+1|0:A,I=GA(w,0,S,0),A=h+A|0,QA=A=I>>>0>(EA=I+e|0)>>>0?A+1|0:A,YA=I=A-((EA>>>0<4293918720)-1|0)|0,e=(A=I>>>21|0)+t|0,yA=e=(I=(2097151&I)<<11|(_A=EA- -1048576|0)>>>21)>>>0>(lA=I+hA|0)>>>0?e+1|0:e,MA=I=e-((lA>>>0<4293918720)-1|0)|0,A=(A=I>>>21|0)+DA|0,X=A=(I=(e=(2097151&I)<<11|(hA=lA- -1048576|0)>>>21)+kA|0)>>>0<e>>>0?A+1|0:A,O=I,A=GA(I,A,-997805,-1),I=h+cA|0,sA=e=A+sA|0,cA=A>>>0>e>>>0?I+1|0:I,kA=(UA=i[23+(Q=c+224|0)|0]|i[Q+24|0]<<8|i[Q+25|0]<<16|i[Q+26|0]<<24)>>>5&2097151,e=GA(F=(A=i[o+2|0])<<16&2031616|i[0|o]|i[o+1|0]<<8,0,k,0),I=h,B=(A=GA(p,0,N=(t=i[o+2|0]|i[o+3|0]<<8|i[o+4|0]<<16|i[o+5|0]<<24)>>>5&2097151,0))+e|0,e=h+I|0,e=A>>>0>B>>>0?e+1|0:e,A=GA(K=(i[o+7|0]|i[o+8|0]<<8|i[o+9|0]<<16|i[o+10|0]<<24)>>>7&2097151,0,S,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(M,0,Y=pA>>>4&2097151,0),A=h+I|0,pA=B=e+B|0,B=e>>>0>B>>>0?A+1|0:A,t=(I=i[o+6|0])<<8|t>>>24,e=A=I>>>24|0,I=(A=i[o+7|0])>>>16|0,I=GA(H=2097151&((3&(I|=e))<<30|(A=A<<16|t)>>>2),0,l,u),A=h+B|0,A=I>>>0>(e=I+pA|0)>>>0?A+1|0:A,B=(I=GA(v,0,G=(i[nA+7|0]|i[nA+8|0]<<8|i[nA+9|0]<<16|i[nA+10|0]<<24)>>>7&2097151,0))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,I=GA(b,0,FA=oA>>>4&2097151,0),A=h+e|0,t=I>>>0>(B=I+B|0)>>>0?A+1|0:A,A=(I=i[nA+6|0])>>>24|0,pA=I<<8|(oA=i[nA+2|0]|i[nA+3|0]<<8|i[nA+4|0]<<16|i[nA+5|0]<<24)>>>24,I=A,A=GA(d,fA,U=2097151&((3&(I|=e=(A=i[nA+7|0])>>>16|0))<<30|(A=A<<16|pA)>>>2),0),I=h+t|0,I=A>>>0>(e=A+B|0)>>>0?I+1|0:I,B=e,e=GA(x=(A=i[nA+2|0])<<16&2031616|i[0|nA]|i[nA+1|0]<<8,0,s,0),A=h+I|0,A=e>>>0>(B=B+e|0)>>>0?A+1|0:A,I=GA(E,0,m=oA>>>5&2097151,0),A=h+A|0,A=I>>>0>(e=I+B|0)>>>0?A+1|0:A,I=e,pA=e=e+kA|0,t=I=I>>>0>e>>>0?A+1|0:A,B=i[Q+21|0]|i[Q+22|0]<<8,A=GA(p,0,F,0),I=h,oA=(e=A)+(A=GA(l,u,N,0))|0,e=h+I|0,e=A>>>0>oA>>>0?e+1|0:e,A=GA(M,0,K,0),I=h+e|0,I=A>>>0>(oA=A+oA|0)>>>0?I+1|0:I,A=GA(Y,0,FA,0),I=h+I|0,I=A>>>0>(e=A+oA|0)>>>0?I+1|0:I,oA=(A=e)+(e=GA(S,0,H,0))|0,A=h+I|0,A=e>>>0>oA>>>0?A+1|0:A,I=GA(v,0,U,0),A=h+A|0,A=I>>>0>(e=I+oA|0)>>>0?A+1|0:A,oA=(I=GA(b,0,G,0))+e|0,e=h+A|0,e=I>>>0>oA>>>0?e+1|0:e,A=GA(d,fA,m,0),I=h+e|0,I=A>>>0>(oA=A+oA|0)>>>0?I+1|0:I,A=GA(E,0,x,0),I=h+I|0,A=A>>>0>(e=A+oA|0)>>>0?I+1|0:I,I=(I=e)>>>0>(e=e+B|0)>>>0?A+1|0:A,B=e,e=(A=i[Q+23|0])<<16&2031616,A=I,e=A=e>>>0>(B=B+e|0)>>>0?A+1|0:A,nA=A=A-((B>>>0<4293918720)-1|0)|0,I=(I=A>>>21|0)+t|0,A=(I=(t=pA=(A=(2097151&A)<<11|(oA=B- -1048576|0)>>>21)+pA|0)>>>0<A>>>0?I+1|0:I)+cA|0,A=(cA=t+sA|0)>>>0<t>>>0?A+1|0:A,uA=t- -1048576|0,vA=t=I-((t>>>0<4293918720)-1|0)|0,SA=cA-(I=-2097152&uA)|0,HA=A-((I>>>0>cA>>>0)+t|0)|0,pA=B,cA=e,A=GA(q,z,470296,0),I=h,e=A,A=GA(L,R,666643,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(O,X,654183,0))|0,A=h+I|0,bA=B,t=e>>>0>B>>>0?A+1|0:A,I=GA(l,u,F,0),A=h,e=I,I=GA(S,0,N,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(K,0,FA,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,A=GA(Y,0,G,0),e=h+I|0,e=A>>>0>(B=A+B|0)>>>0?e+1|0:e,A=GA(M,0,H,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(v,0,m,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,I=GA(b,0,U,0),A=h+A|0,A=I>>>0>(e=I+B|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(d,fA,x,0))|0,I=h+A|0,kA=B,e=e>>>0>B>>>0?I+1|0:I,I=(A=i[Q+19|0])>>>24|0,DA=A<<8|(sA=i[Q+15|0]|i[Q+16|0]<<8|i[Q+17|0]<<16|i[Q+18|0]<<24)>>>24,e=((JA=(A=(B=i[Q+20|0])>>>16|0)|I)>>>3|0)+e|0,kA=B=(I=(7&JA)<<29|(I=(B<<=16)|DA)>>>3)+kA|0,B=I>>>0>B>>>0?e+1|0:e,DA=sA>>>6&2097151,A=GA(S,0,F,0),I=h,e=A,A=GA(M,0,N,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,sA=(A=e)+(e=GA(K,0,G,0))|0,A=h+I|0,A=e>>>0>sA>>>0?A+1|0:A,e=GA(Y,0,U,0),I=h+A|0,I=e>>>0>(sA=e+sA|0)>>>0?I+1|0:I,e=GA(H,0,FA,0),A=h+I|0,A=e>>>0>(sA=e+sA|0)>>>0?A+1|0:A,I=GA(v,0,x,0),e=h+A|0,e=I>>>0>(sA=I+sA|0)>>>0?e+1|0:e,A=GA(b,0,m,0),I=h+e|0,A=A>>>0>(sA=A+sA|0)>>>0?I+1|0:I,XA=A=(mA=sA+DA|0)>>>0<sA>>>0?A+1|0:A,gg=A=A-((mA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(zA=mA- -1048576|0)>>>21,A=(A>>>21|0)+B|0,VA=A=e>>>0>(OA=e+kA|0)>>>0?A+1|0:A,Ig=A=A-((OA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(LA=OA- -1048576|0)>>>21,A=(A>>>21|0)+t|0,I=(e>>>0>(B=e+bA|0)>>>0?A+1|0:A)+cA|0,cA=(e=B+pA|0)-(A=-2097152&oA)|0,nA=A=(I=e>>>0<B>>>0?I+1|0:I)-((A>>>0>e>>>0)+nA|0)|0,Cg=A=A-((cA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(TA=cA- -1048576|0)>>>21,A=(A>>21)+HA|0,B=A=e>>>0>(t=e+SA|0)>>>0?A+1|0:A,Ag=A=A-((t>>>0<4293918720)-1|0)|0,qA=(2097151&A)<<11|(bA=t- -1048576|0)>>>21,pA=A>>21,JA=lA-(A=-2097152&hA)|0,MA=yA-((A>>>0>lA>>>0)+MA|0)|0,A=GA(y,0,f,0),jA=I=h,SA=A,sA=A- -1048576|0,PA=I=I-((A>>>0<4293918720)-1|0)|0,V=A=I>>>21|0,A=GA(P=(2097151&I)<<11|sA>>>21,A,-683901,-1),I=h+QA|0,I=A>>>0>(e=A+EA|0)>>>0?I+1|0:I,hA=e-(A=-2097152&_A)|0,oA=I-((A>>>0>e>>>0)+YA|0)|0,I=GA(k,0,v,0),A=h,e=I,I=GA(y,0,Y,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,I=GA(_,0,b,0),A=h+A|0,A=I>>>0>(e=I+e|0)>>>0?A+1|0:A,QA=(I=e)+(e=GA(p,0,d,fA))|0,I=h+A|0,I=e>>>0>QA>>>0?I+1|0:I,A=GA(s,0,S,0),e=h+I|0,e=A>>>0>(QA=A+QA|0)>>>0?e+1|0:e,A=GA(E,0,l,u),I=h+e|0,I=A>>>0>(QA=A+QA|0)>>>0?I+1|0:I,e=GA(f,0,FA,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,I=GA(w,0,M,0),A=h+A|0,EA=e=I+QA|0,QA=I>>>0>e>>>0?A+1|0:A,A=GA(_,0,Y,0),I=h,e=A,A=GA(y,0,K,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,yA=(A=GA(p,0,v,0))+e|0,e=h+I|0,e=A>>>0>yA>>>0?e+1|0:e,A=GA(k,0,b,0),I=h+e|0,I=A>>>0>(yA=A+yA|0)>>>0?I+1|0:I,e=GA(d,fA,l,u),A=h+I|0,A=e>>>0>(yA=e+yA|0)>>>0?A+1|0:A,I=GA(s,0,M,0),A=h+A|0,A=I>>>0>(e=I+yA|0)>>>0?A+1|0:A,yA=(I=e)+(e=GA(E,0,S,0))|0,I=h+A|0,I=e>>>0>yA>>>0?I+1|0:I,A=GA(f,0,G,0),e=h+I|0,e=A>>>0>(yA=A+yA|0)>>>0?e+1|0:e,A=GA(w,0,FA,0),I=h+e|0,DA=I=A>>>0>(kA=A+yA|0)>>>0?I+1|0:I,WA=A=I-((kA>>>0<4293918720)-1|0)|0,I=(2097151&A)<<11|(lA=kA- -1048576|0)>>>21,A=(A>>>21|0)+QA|0,_A=A=I>>>0>(YA=I+EA|0)>>>0?A+1|0:A,xA=A=A-((YA>>>0<4293918720)-1|0)|0,I=(e=A>>>21|0)+oA|0,hA=I=(A=(2097151&A)<<11|(yA=YA- -1048576|0)>>>21)>>>0>(HA=A+hA|0)>>>0?I+1|0:I,ZA=A=I-((HA>>>0<4293918720)-1|0)|0,QA=(2097151&A)<<11|(oA=HA- -1048576|0)>>>21,A=(A>>21)+MA|0,$=A=(I=QA+JA|0)>>>0<QA>>>0?A+1|0:A,AA=I,A=GA(I,A,-683901,-1),I=h+pA|0,qA=e=A+qA|0,pA=A>>>0>e>>>0?I+1|0:I,A=GA(_,0,F,0),I=h,e=A,A=GA(k,0,N,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,QA=(A=e)+(e=GA(l,u,K,0))|0,A=h+I|0,A=e>>>0>QA>>>0?A+1|0:A,I=GA(S,0,Y,0),e=h+A|0,e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,I=GA(p,0,H,0),A=h+e|0,A=I>>>0>(QA=I+QA|0)>>>0?A+1|0:A,e=GA(v,0,FA,0),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,A=GA(b,0,M,0),I=h+I|0,I=A>>>0>(e=A+QA|0)>>>0?I+1|0:I,QA=(A=e)+(e=GA(d,fA,G,0))|0,A=h+I|0,A=e>>>0>QA>>>0?A+1|0:A,I=GA(s,0,m,0),e=h+A|0,e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,I=GA(E,0,U,0),A=h+e|0,A=I>>>0>(QA=I+QA|0)>>>0?A+1|0:A,e=GA(w,0,x,0),I=h+A|0,MA=QA=e+QA|0,e=e>>>0>QA>>>0?I+1|0:I,I=(A=i[Q+27|0])>>>24|0,EA=A<<8|UA>>>24,QA=2097151&((3&(I|=A=(QA=i[Q+28|0])>>>16|0))<<30|(A=(QA<<=16)|EA)>>>2),I=e,EA=A=QA+MA|0,QA=A>>>0<QA>>>0?I+1|0:I,JA=GA(j,T,470296,0),MA=h,A=(e=(2097151&KA)<<11|NA>>>21)+(SA-(I=-2097152&sA)|0)|0,I=jA-((524287&PA)+(I>>>0>SA>>>0)|0)+(KA>>>21)|0,gA=I=A>>>0<e>>>0?I+1|0:I,IA=A,I=GA(A,I,666643,0),A=h+MA|0,A=I>>>0>(e=I+JA|0)>>>0?A+1|0:A,sA=(I=GA(L,R,654183,0))+e|0,e=h+A|0,e=I>>>0>sA>>>0?e+1|0:e,I=GA(q,z,-997805,-1),A=h+e|0,A=I>>>0>(sA=I+sA|0)>>>0?A+1|0:A,e=GA(O,X,136657,0),I=h+A|0,uA=(A=(2097151&vA)<<11|uA>>>21)+(sA=e+sA|0)|0,I=(vA>>>21|0)+(e>>>0>sA>>>0?I+1|0:I)|0,PA=sA=QA-((EA>>>0<4293918720)-1|0)|0,A=(A>>>0>uA>>>0?I+1|0:I)+QA|0,I=(QA=EA+uA|0)-(e=-2097152&(jA=EA- -1048576|0))|0,e=(A=(A=QA>>>0<uA>>>0?A+1|0:A)-((e>>>0>QA>>>0)+sA|0)|0)+pA|0,JA=QA=A-((I>>>0<4293918720)-1|0)|0,SA=(e=(EA=I+qA|0)>>>0<I>>>0?e+1|0:e)-(((I=-2097152&(MA=I- -1048576|0))>>>0>EA>>>0)+QA|0)|0,UA=A=EA-I|0,QA=t,t=B,$A=HA-(A=-2097152&oA)|0,sA=hA-((A>>>0>HA>>>0)+ZA|0)|0,A=GA(IA,gA,-683901,-1),I=h,B=(e=A)+(A=GA(P,V,136657,0))|0,e=h+I|0,I=_A+(A>>>0>B>>>0?e+1|0:e)|0,yA=(e=B+YA|0)-(A=-2097152&yA)|0,hA=(I=e>>>0<YA>>>0?I+1|0:I)-((A>>>0>e>>>0)+xA|0)|0,I=GA(P,V,-997805,-1),A=h+DA|0,A=I>>>0>(e=I+kA|0)>>>0?A+1|0:A,B=(I=GA(IA,gA,136657,0))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,A=GA(j,T,-683901,-1),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,oA=B-(A=-2097152&lA)|0,pA=I-((A>>>0>B>>>0)+WA|0)|0,I=GA(k,0,Y,0),A=h,e=I,I=GA(_,0,K,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=GA(y,0,H,0))+e|0,e=h+A|0,e=I>>>0>B>>>0?e+1|0:e,A=GA(l,u,v,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(p,0,b,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,e=GA(d,fA,S,0),I=h+A|0,I=e>>>0>(B=e+B|0)>>>0?I+1|0:I,e=GA(s,0,FA,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,I=GA(E,0,M,0),e=h+A|0,e=I>>>0>(B=I+B|0)>>>0?e+1|0:e,A=GA(f,0,U,0),I=h+e|0,I=A>>>0>(B=A+B|0)>>>0?I+1|0:I,e=GA(w,0,G,0),A=h+I|0,EA=B=e+B|0,B=e>>>0>B>>>0?A+1|0:A,A=GA(k,0,K,0),I=h,e=A,A=GA(y,0,N,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,_A=(A=e)+(e=GA(p,0,Y,0))|0,A=h+I|0,A=e>>>0>_A>>>0?A+1|0:A,I=GA(_,0,H,0),e=h+A|0,e=I>>>0>(_A=I+_A|0)>>>0?e+1|0:e,A=GA(v,0,S,0),I=h+e|0,I=A>>>0>(_A=A+_A|0)>>>0?I+1|0:I,e=GA(l,u,b,0),A=h+I|0,A=e>>>0>(_A=e+_A|0)>>>0?A+1|0:A,e=GA(d,fA,M,0),I=h+A|0,I=e>>>0>(_A=e+_A|0)>>>0?I+1|0:I,e=GA(s,0,G,0),A=h+I|0,A=e>>>0>(_A=e+_A|0)>>>0?A+1|0:A,I=GA(E,0,FA,0),e=h+A|0,e=I>>>0>(_A=I+_A|0)>>>0?e+1|0:e,_A=(A=GA(f,0,m,0))+_A|0,I=h+e|0,e=GA(w,0,U,0),A=h+(A>>>0>_A>>>0?I+1|0:I)|0,HA=A=e>>>0>(ZA=e+_A|0)>>>0?A+1|0:A,eA=A=A-((ZA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(KA=ZA- -1048576|0)>>>21,A=(A>>>21|0)+B|0,NA=A=e>>>0>(qA=e+EA|0)>>>0?A+1|0:A,BA=A=A-((qA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(vA=qA- -1048576|0)>>>21,A=(A>>>21|0)+pA|0,uA=A=e>>>0>(YA=e+oA|0)>>>0?A+1|0:A,aA=A=A-((YA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(DA=YA- -1048576|0)>>>21,A=(A>>21)+hA|0,B=A=e>>>0>(oA=e+yA|0)>>>0?A+1|0:A,hA=A=A-((oA>>>0<4293918720)-1|0)|0,pA=(2097151&A)<<11|(e=oA- -1048576|0)>>>21,A=(A>>21)+sA|0,WA=A=(EA=pA+$A|0)>>>0<pA>>>0?A+1|0:A,xA=EA,A=GA(EA,A,-683901,-1),I=h,EA=A,A=GA(AA,$,136657,0),I=h+I|0,A=(A>>>0>(EA=EA+A|0)>>>0?I+1|0:I)+t|0,eg=(t=QA+EA|0)-(I=-2097152&bA)|0,Bg=(A=t>>>0<EA>>>0?A+1|0:A)-((I>>>0>t>>>0)+Ag|0)|0,pA=cA,EA=nA,cA=GA(xA,WA,136657,0),t=h,$A=A=oA-(I=-2097152&e)|0,CA=B=B-((I>>>0>oA>>>0)+hA|0)|0,e=GA(AA,$,-997805,-1),I=h+t|0,I=e>>>0>(cA=e+cA|0)>>>0?I+1|0:I,e=GA(A,B,-683901,-1),A=h+I|0,Ag=B=e+cA|0,QA=e>>>0>B>>>0?A+1|0:A,A=GA(O,X,470296,0),I=h,B=(e=A)+(A=GA(q,z,666643,0))|0,e=h+I|0,I=VA+(A>>>0>B>>>0?e+1|0:e)|0,bA=A=B+OA|0,t=I=A>>>0<OA>>>0?I+1|0:I,I=GA(O,X,666643,0),A=h+XA|0,A=I>>>0>(e=I+mA|0)>>>0?A+1|0:A,yA=e-(I=-2097152&zA)|0,kA=A-((I>>>0>e>>>0)+gg|0)|0,I=GA(M,0,F,0),A=h,e=I,I=GA(N,0,FA,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(K,0,U,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,e=GA(Y,0,m,0),A=h+I|0,A=e>>>0>(B=e+B|0)>>>0?A+1|0:A,I=GA(H,0,G,0),e=h+A|0,e=I>>>0>(B=I+B|0)>>>0?e+1|0:e,A=GA(b,0,x,0),I=h+e|0,oA=B=A+B|0,B=A>>>0>B>>>0?I+1|0:I,I=(A=i[Q+14|0])>>>24|0,cA=A<<8|(hA=i[Q+10|0]|i[Q+11|0]<<8|i[Q+12|0]<<16|i[Q+13|0]<<24)>>>24,I=2097151&((1&(I|=e=(A=i[Q+15|0])>>>16|0))<<31|(A=cA|A<<16)>>>1),A=B,oA=e=I+oA|0,B=I>>>0>e>>>0?A+1|0:A,cA=hA>>>4&2097151,A=GA(F,0,FA,0),I=h,e=A,A=GA(N,0,G,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,A=GA(K,0,m,0),I=h+I|0,I=A>>>0>(e=A+e|0)>>>0?I+1|0:I,hA=(A=e)+(e=GA(Y,0,x,0))|0,A=h+I|0,A=e>>>0>hA>>>0?A+1|0:A,I=GA(H,0,U,0),e=h+A|0,A=I>>>0>(hA=I+hA|0)>>>0?e+1|0:e,nA=A=(zA=cA+hA|0)>>>0<hA>>>0?A+1|0:A,iA=A=A-((zA>>>0<4293918720)-1|0)|0,I=(e=A>>>21|0)+B|0,lA=I=(A=(2097151&A)<<11|(sA=zA- -1048576|0)>>>21)>>>0>(VA=A+oA|0)>>>0?I+1|0:I,rA=A=I-((VA>>>0<4293918720)-1|0)|0,I=(2097151&A)<<11|(_A=VA- -1048576|0)>>>21,A=(A>>>21|0)+kA|0,hA=A=I>>>0>(yA=I+yA|0)>>>0?A+1|0:A,tA=A=A-((yA>>>0<4293918720)-1|0)|0,I=(e=A>>21)+t|0,gg=I=(I=(A=(2097151&A)<<11|(oA=yA- -1048576|0)>>>21)>>>0>(B=A+bA|0)>>>0?I+1|0:I)-(((e=-2097152&LA)>>>0>B>>>0)+Ig|0)|0,LA=A=B-e|0,cA=A- -1048576|0,Ig=A=I-((A>>>0<4293918720)-1|0)|0,e=(I=A>>21)+QA|0,I=((A=(2097151&A)<<11|cA>>>21)>>>0>(B=A+Ag|0)>>>0?e+1|0:e)+EA|0,mA=I=(I=(A=B)>>>0>(B=B+pA|0)>>>0?I+1|0:I)-(((e=-2097152&TA)>>>0>B>>>0)+Cg|0)|0,EA=A=B-e|0,t=A- -1048576|0,XA=A=I-((A>>>0<4293918720)-1|0)|0,e=(I=A>>21)+Bg|0,TA=A=(e=(A=(2097151&A)<<11|t>>>21)>>>0>(QA=A+eg|0)>>>0?e+1|0:e)-((QA>>>0<4293918720)-1|0)|0,bA=UA- -1048576|0,kA=SA-((UA>>>0<4293918720)-1|0)|0,pA=(2097151&A)<<11|(B=QA- -1048576|0)>>>21,A=(A>>21)+SA|0,Cg=(UA=pA+UA|0)-(I=-2097152&bA)|0,eg=(pA>>>0>UA>>>0?A+1|0:A)-((I>>>0>UA>>>0)+kA|0)|0,Bg=QA-(A=-2097152&B)|0,Ag=e-((A>>>0>QA>>>0)+TA|0)|0,OA=EA-(A=-2097152&t)|0,UA=mA-((A>>>0>EA>>>0)+XA|0)|0,A=GA(xA,WA,-997805,-1),I=h,e=A,A=GA(AA,$,654183,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA($A,CA,136657,0))|0,A=h+I|0,I=gg+(e>>>0>B>>>0?A+1|0:A)|0,mA=(e=B+LA|0)-(A=-2097152&cA)|0,XA=(I=e>>>0<LA>>>0?I+1|0:I)-((A>>>0>e>>>0)+Ig|0)|0,LA=YA-(A=-2097152&DA)|0,SA=uA-((A>>>0>YA>>>0)+aA|0)|0,I=GA(IA,gA,-997805,-1),A=h,e=I,I=GA(P,V,654183,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(j,T,136657,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,A=GA(L,R,-683901,-1),e=h+I|0,I=NA+(A>>>0>(B=A+B|0)>>>0?e+1|0:e)|0,DA=(e=B+qA|0)-(A=-2097152&vA)|0,uA=(I=e>>>0<qA>>>0?I+1|0:I)-((A>>>0>e>>>0)+BA|0)|0,I=GA(IA,gA,654183,0),A=h,e=I,I=GA(P,V,470296,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,B=(I=GA(j,T,-997805,-1))+e|0,e=h+A|0,I=HA+(I>>>0>B>>>0?e+1|0:e)|0,I=(A=B+ZA|0)>>>0<ZA>>>0?I+1|0:I,e=A,A=GA(L,R,136657,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(q,z,-683901,-1))|0,A=h+I|0,cA=B-(I=-2097152&KA)|0,t=(e>>>0>B>>>0?A+1|0:A)-((I>>>0>B>>>0)+eA|0)|0,B=(i[Q+28|0]|i[Q+29|0]<<8|i[Q+30|0]<<16|i[Q+31|0]<<24)>>>7|0,A=GA(y,0,F,0),I=h,QA=(e=A)+(A=GA(_,0,N,0))|0,e=h+I|0,e=A>>>0>QA>>>0?e+1|0:e,A=GA(p,0,K,0),I=h+e|0,I=A>>>0>(QA=A+QA|0)>>>0?I+1|0:I,e=GA(l,u,Y,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,e=GA(k,0,H,0),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,e=GA(v,0,M,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,I=GA(S,0,b,0),e=h+A|0,e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,A=GA(d,fA,FA,0),I=h+e|0,I=A>>>0>(QA=A+QA|0)>>>0?I+1|0:I,e=GA(s,0,U,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,e=GA(E,0,G,0),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,e=GA(f,0,x,0),A=h+I|0,A=e>>>0>(QA=e+QA|0)>>>0?A+1|0:A,I=GA(w,0,m,0),e=h+A|0,I=e=I>>>0>(QA=I+QA|0)>>>0?e+1|0:e,NA=(e=(2097151&PA)<<11|jA>>>21)+(A=B+QA|0)|0,A=(PA>>>21|0)+(I=A>>>0<QA>>>0?I+1|0:I)|0,pA=A=e>>>0>NA>>>0?A+1|0:A,TA=I=A-((NA>>>0<4293918720)-1|0)|0,e=(A=I>>>21|0)+t|0,EA=e=(I=(2097151&I)<<11|(fA=NA- -1048576|0)>>>21)>>>0>(vA=I+cA|0)>>>0?e+1|0:e,jA=I=e-((vA>>>0<4293918720)-1|0)|0,A=(A=I>>21)+uA|0,cA=A=(I=(2097151&I)<<11|(QA=vA- -1048576|0)>>>21)>>>0>(DA=I+DA|0)>>>0?A+1|0:A,KA=I=A-((DA>>>0<4293918720)-1|0)|0,e=(A=I>>21)+SA|0,PA=e=(I=(B=(2097151&I)<<11|(t=DA- -1048576|0)>>>21)+LA|0)>>>0<B>>>0?e+1|0:e,SA=I,A=GA(I,e,-683901,-1),I=h+XA|0,uA=e=A+mA|0,B=A>>>0>e>>>0?I+1|0:I,I=GA(AA,$,470296,0),A=h+hA|0,A=I>>>0>(yA=I+yA|0)>>>0?A+1|0:A,I=GA(xA,WA,654183,0),A=h+(A-(((e=-2097152&oA)>>>0>yA>>>0)+tA|0)|0)|0,A=I>>>0>(oA=I+(yA-e|0)|0)>>>0?A+1|0:A,e=GA($A,CA,-997805,-1),I=h+A|0,I=e>>>0>(oA=e+oA|0)>>>0?I+1|0:I,HA=e=DA-(A=-2097152&t)|0,FA=cA=cA-((A>>>0>DA>>>0)+KA|0)|0,oA=(t=GA(SA,PA,136657,0))+oA|0,A=h+I|0,e=GA(e,cA,-683901,-1),I=h+(t>>>0>oA>>>0?A+1|0:A)|0,cA=I=e>>>0>(hA=e+oA|0)>>>0?I+1|0:I,KA=A=I-((hA>>>0<4293918720)-1|0)|0,I=(2097151&A)<<11|(t=hA- -1048576|0)>>>21,A=(A>>21)+B|0,DA=I=(A=I>>>0>(oA=I+uA|0)>>>0?A+1|0:A)-((oA>>>0<4293918720)-1|0)|0,yA=(2097151&I)<<11|(B=oA- -1048576|0)>>>21,I=(I>>21)+UA|0,OA=uA=yA+OA|0,uA=yA>>>0>uA>>>0?I+1|0:I,UA=oA-(I=-2097152&B)|0,ZA=A-((I>>>0>oA>>>0)+DA|0)|0,mA=hA-(A=-2097152&t)|0,XA=cA-((A>>>0>hA>>>0)+KA|0)|0,A=GA(AA,$,666643,0),e=lA+h|0,e=(t=A+VA|0)>>>0<VA>>>0?e+1|0:e,B=(A=GA(xA,WA,470296,0))+(t-(I=-2097152&_A)|0)|0,I=h+(e-((I>>>0>t>>>0)+rA|0)|0)|0,I=A>>>0>B>>>0?I+1|0:I,e=GA($A,CA,654183,0),A=h+I|0,oA=B=e+B|0,B=e>>>0>B>>>0?A+1|0:A,t=vA-(A=-2097152&QA)|0,cA=EA-((A>>>0>vA>>>0)+jA|0)|0,A=GA(IA,gA,470296,0),I=h,e=A,A=GA(P,V,666643,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,A=GA(j,T,654183,0),I=h+I|0,I=A>>>0>(e=A+e|0)>>>0?I+1|0:I,QA=(A=e)+(e=GA(L,R,-997805,-1))|0,A=h+I|0,A=e>>>0>QA>>>0?A+1|0:A,I=GA(q,z,136657,0),A=h+A|0,A=I>>>0>(e=I+QA|0)>>>0?A+1|0:A,QA=(I=GA(O,X,-683901,-1))+e|0,e=h+A|0,I=pA+(I>>>0>QA>>>0?e+1|0:e)|0,vA=(e=(2097151&JA)<<11|MA>>>21)+((QA=QA+NA|0)-(A=-2097152&fA)|0)|0,A=((I=QA>>>0<NA>>>0?I+1|0:I)-((A>>>0>QA>>>0)+TA|0)|0)+(JA>>21)|0,DA=A=e>>>0>vA>>>0?A+1|0:A,LA=A=A-((vA>>>0<4293918720)-1|0)|0,I=t,t=(2097151&A)<<11|(_A=vA- -1048576|0)>>>21,A=(A>>21)+cA|0,KA=A=(e=I+t|0)>>>0<t>>>0?A+1|0:A,NA=e,A=GA(e,A,-683901,-1),I=h+B|0,I=A>>>0>(e=A+oA|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(SA,PA,-997805,-1))|0,A=h+I|0,A=e>>>0>B>>>0?A+1|0:A,I=GA(HA,FA,136657,0),e=h+A|0,MA=B=I+B|0,EA=I>>>0>B>>>0?e+1|0:e,oA=zA-(A=-2097152&sA)|0,pA=nA-((A>>>0>zA>>>0)+iA|0)|0,I=GA(F,0,G,0),A=h,e=I,I=GA(N,0,U,0),A=h+A|0,A=I>>>0>(e=e+I|0)>>>0?A+1|0:A,I=GA(K,0,x,0),A=h+A|0,A=I>>>0>(e=I+e|0)>>>0?A+1|0:A,B=(I=GA(H,0,m,0))+e|0,e=h+A|0,I=I>>>0>B>>>0?e+1|0:e,fA=e=(A=(i[Q+7|0]|i[Q+8|0]<<8|i[Q+9|0]<<16|i[Q+10|0]<<24)>>>7&2097151)+B|0,QA=A>>>0>e>>>0?I+1|0:I,A=GA(F,0,U,0),I=h,e=A,A=GA(N,0,m,0),I=h+I|0,I=A>>>0>(e=e+A|0)>>>0?I+1|0:I,B=(A=e)+(e=GA(H,0,x,0))|0,A=h+I|0,cA=B,B=e>>>0>B>>>0?A+1|0:A,A=(I=i[Q+6|0])>>>24|0,t=I<<8|(TA=i[Q+2|0]|i[Q+3|0]<<8|i[Q+4|0]<<16|i[Q+5|0]<<24)>>>24,e=A,I=(A=i[Q+7|0])>>>16|0,I|=e,e=B,t=e=(A=2097151&((3&I)<<30|(A=A<<16|t)>>>2))>>>0>(cA=A+cA|0)>>>0?e+1|0:e,qA=A=e-((cA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(lA=cA- -1048576|0)>>>21,A=(A>>>21|0)+QA|0,yA=A=e>>>0>(nA=e+fA|0)>>>0?A+1|0:A,jA=A=A-((nA>>>0<4293918720)-1|0)|0,e=(I=A>>>21|0)+pA|0,e=(A=(2097151&A)<<11|(hA=nA- -1048576|0)>>>21)>>>0>(B=A+oA|0)>>>0?e+1|0:e,I=GA(xA,WA,666643,0),A=h+e|0,A=I>>>0>(B=I+B|0)>>>0?A+1|0:A,I=GA($A,CA,470296,0),A=h+A|0,A=I>>>0>(e=I+B|0)>>>0?A+1|0:A,B=(I=e)+(e=GA(NA,KA,136657,0))|0,I=h+A|0,I=e>>>0>B>>>0?I+1|0:I,A=GA(SA,PA,654183,0),I=h+I|0,I=A>>>0>(e=A+B|0)>>>0?I+1|0:I,oA=(A=GA(HA,FA,-997805,-1))+e|0,e=h+I|0,pA=e=A>>>0>oA>>>0?e+1|0:e,JA=A=e-((oA>>>0<4293918720)-1|0)|0,e=(2097151&A)<<11|(fA=oA- -1048576|0)>>>21,A=(A>>21)+EA|0,MA=e=(A=e>>>0>(B=e+MA|0)>>>0?A+1|0:A)-((B>>>0<4293918720)-1|0)|0,QA=(2097151&e)<<11|(EA=B- -1048576|0)>>>21,e=(e>>21)+XA|0,YA=sA=QA+mA|0,sA=QA>>>0>sA>>>0?e+1|0:e,QA=B,I=A,B=(vA-(A=-2097152&_A)|0)+(_A=(2097151&kA)<<11|bA>>>21)|0,A=(DA-((A>>>0>vA>>>0)+LA|0)|0)+(kA>>21)|0,kA=A=B>>>0<_A>>>0?A+1|0:A,mA=A=A-((B>>>0<4293918720)-1|0)|0,vA=e=A>>21,A=GA(xA=(2097151&A)<<11|(DA=B- -1048576|0)>>>21,e,-683901,-1),I=h+I|0,I=A>>>0>(e=A+QA|0)>>>0?I+1|0:I,XA=e-(A=-2097152&EA)|0,zA=I-((A>>>0>e>>>0)+MA|0)|0,I=GA(xA,vA,136657,0),A=h+pA|0,A=I>>>0>(e=I+oA|0)>>>0?A+1|0:A,VA=e-(I=-2097152&fA)|0,JA=A-((I>>>0>e>>>0)+JA|0)|0,I=GA($A,CA,666643,0),A=h+(yA-(((e=-2097152&hA)>>>0>nA>>>0)+jA|0)|0)|0,A=I>>>0>(QA=I+(nA-e|0)|0)>>>0?A+1|0:A,e=GA(NA,KA,-997805,-1),I=h+A|0,I=e>>>0>(QA=e+QA|0)>>>0?I+1|0:I,A=GA(SA,PA,470296,0),e=h+I|0,e=A>>>0>(QA=A+QA|0)>>>0?e+1|0:e,I=GA(HA,FA,654183,0),A=h+e|0,MA=QA=I+QA|0,pA=I>>>0>QA>>>0?A+1|0:A,e=TA>>>5&2097151,A=GA(F,0,m,0),I=h,EA=A,A=GA(N,0,x,0),I=h+I|0,A=A>>>0>(QA=EA+A|0)>>>0?I+1|0:I,EA=I=e+QA|0,e=A=I>>>0<QA>>>0?A+1|0:A,nA=(I=GA(F,0,x,0))+(A=(A=i[Q+2|0])<<16&2031616|i[0|Q]|i[Q+1|0]<<8)|0,I=h,_A=I=A>>>0>nA>>>0?I+1|0:I,LA=I=I-((nA>>>0<4293918720)-1|0)|0,A=(A=I>>>21|0)+e|0,hA=A=(I=(2097151&I)<<11|(yA=nA- -1048576|0)>>>21)>>>0>(bA=I+EA|0)>>>0?A+1|0:A,TA=I=A-((bA>>>0<4293918720)-1|0)|0,e=(2097151&I)<<11|(oA=bA- -1048576|0)>>>21,I=(I>>>21|0)+t|0,I=e>>>0>(QA=e+cA|0)>>>0?I+1|0:I,e=GA(NA,KA,654183,0),A=h+(I-(((t=-2097152&lA)>>>0>QA>>>0)+qA|0)|0)|0,A=e>>>0>(cA=e+(QA-t|0)|0)>>>0?A+1|0:A,I=GA(SA,PA,666643,0),A=h+A|0,A=I>>>0>(e=I+cA|0)>>>0?A+1|0:A,fA=(I=e)+(e=GA(HA,FA,470296,0))|0,I=h+A|0,EA=I=e>>>0>fA>>>0?I+1|0:I,jA=I=I-((fA>>>0<4293918720)-1|0)|0,e=(A=I>>21)+pA|0,lA=I=(e=(I=(2097151&I)<<11|(QA=fA- -1048576|0)>>>21)>>>0>(cA=I+MA|0)>>>0?e+1|0:e)-((cA>>>0<4293918720)-1|0)|0,pA=(2097151&I)<<11|(t=cA- -1048576|0)>>>21,I=(I>>21)+JA|0,PA=SA=pA+VA|0,pA=pA>>>0>SA>>>0?I+1|0:I,A=GA(xA,vA,-997805,-1),I=h+e|0,I=A>>>0>(cA=A+cA|0)>>>0?I+1|0:I,JA=cA-(A=-2097152&t)|0,MA=I-((A>>>0>cA>>>0)+lA|0)|0,I=GA(xA,vA,654183,0),A=h+EA|0,A=I>>>0>(e=I+fA|0)>>>0?A+1|0:A,SA=e-(I=-2097152&QA)|0,lA=A-((I>>>0>e>>>0)+jA|0)|0,A=GA(NA,KA,470296,0),e=h+(hA-(((I=-2097152&oA)>>>0>bA>>>0)+TA|0)|0)|0,e=A>>>0>(t=A+(bA-I|0)|0)>>>0?e+1|0:e,I=GA(HA,FA,666643,0),A=h+e|0,cA=t=I+t|0,e=I>>>0>t>>>0?A+1|0:A,I=GA(NA,KA,666643,0),A=h+(_A-((4095&LA)+((t=-2097152&yA)>>>0>nA>>>0)|0)|0)|0,fA=A=I>>>0>(oA=I+(nA-t|0)|0)>>>0?A+1|0:A,_A=A=A-((oA>>>0<4293918720)-1|0)|0,t=(2097151&A)<<11|(EA=oA- -1048576|0)>>>21,A=(A>>21)+e|0,e=A=t>>>0>(QA=t+cA|0)>>>0?A+1|0:A,yA=A=A-((QA>>>0<4293918720)-1|0)|0,t=(2097151&A)<<11|(cA=QA- -1048576|0)>>>21,A=(A>>21)+lA|0,t=t>>>0>(hA=t+SA|0)>>>0?A+1|0:A,A=GA(xA,vA,470296,0),e=h+e|0,e=A>>>0>(I=A+QA|0)>>>0?e+1|0:e,QA=I-(A=-2097152&cA)|0,cA=e-((A>>>0>I>>>0)+yA|0)|0,I=GA(xA,vA,666643,0),A=h+(fA-(((e=-2097152&EA)>>>0>oA>>>0)+_A|0)|0)|0,I=(e=(A=I>>>0>(lA=I+(oA-e|0)|0)>>>0?A+1|0:A)>>21)+cA|0,A=(A=(I=(A=(2097151&A)<<11|lA>>>21)>>>0>(_A=A+QA|0)>>>0?I+1|0:I)>>21)+t|0,I=(I=(A=(I=(2097151&I)<<11|_A>>>21)>>>0>(yA=I+hA|0)>>>0?A+1|0:A)>>21)+MA|0,e=(A=(I=(A=(2097151&A)<<11|yA>>>21)>>>0>(t=A+JA|0)>>>0?I+1|0:I)>>21)+pA|0,A=(I=(e=(I=(2097151&I)<<11|t>>>21)>>>0>(hA=I+PA|0)>>>0?e+1|0:e)>>21)+zA|0,I=(e=(A=(e=(2097151&e)<<11|hA>>>21)>>>0>(oA=e+XA|0)>>>0?A+1|0:A)>>21)+sA|0,A=(A=(I=(A=(2097151&A)<<11|oA>>>21)>>>0>(pA=A+YA|0)>>>0?I+1|0:I)>>21)+ZA|0,I=(I=(A=(I=(2097151&I)<<11|pA>>>21)>>>0>(fA=I+UA|0)>>>0?A+1|0:A)>>21)+uA|0,e=(A=(I=(A=(2097151&A)<<11|fA>>>21)>>>0>(EA=A+OA|0)>>>0?I+1|0:I)>>21)+Ag|0,A=(I=(e=(I=(2097151&I)<<11|EA>>>21)>>>0>(QA=I+Bg|0)>>>0?e+1|0:e)>>21)+eg|0,DA=(sA=B-(I=-2097152&DA)|0)+((2097151&(A=(e=(2097151&e)<<11|QA>>>21)>>>0>(cA=e+Cg|0)>>>0?A+1|0:A))<<11|cA>>>21)|0,A=(kA-((I>>>0>B>>>0)+mA|0)|0)+(A>>21)|0,kA=I=(A=sA>>>0>DA>>>0?A+1|0:A)>>21,lA=(A=GA(uA=(2097151&A)<<11|DA>>>21,I,666643,0))+(I=2097151&lA)|0,A=h,B=A=I>>>0>lA>>>0?A+1|0:A,C[0|r]=lA,C[r+1|0]=(255&A)<<24|lA>>>8,A=2097151&_A,I=GA(uA,kA,470296,0)+A|0,e=h,A=(B>>21)+(A>>>0>I>>>0?e+1|0:e)|0,A=(_A=(sA=(2097151&B)<<11|lA>>>21)+I|0)>>>0<sA>>>0?A+1|0:A,C[r+4|0]=(2047&A)<<21|_A>>>11,I=A,e=_A,C[r+3|0]=(7&A)<<29|e>>>3,C[r+2|0]=31&((65535&B)<<16|lA>>>16)|e<<5,B=2097151&yA,yA=GA(uA,kA,654183,0)+B|0,A=h,_A=(2097151&I)<<11|e>>>21,I=(I>>21)+(B=B>>>0>yA>>>0?A+1|0:A)|0,A=I=(yA=_A+yA|0)>>>0<_A>>>0?I+1|0:I,C[r+6|0]=(63&A)<<26|yA>>>6,B=yA,yA=0,C[r+5|0]=yA<<13|(1572864&e)>>>19|B<<2,e=2097151&t,t=GA(uA,kA,-997805,-1)+e|0,I=h,I=e>>>0>t>>>0?I+1|0:I,yA=(2097151&(e=A))<<11|B>>>21,e=(A>>=21)+I|0,e=(t=yA+t|0)>>>0<yA>>>0?e+1|0:e,C[r+9|0]=(511&e)<<23|t>>>9,C[r+8|0]=(1&e)<<31|t>>>1,I=0,C[r+7|0]=I<<18|(2080768&B)>>>14|t<<7,I=2097151&hA,B=GA(uA,kA,136657,0)+I|0,A=h,A=I>>>0>B>>>0?A+1|0:A,hA=(2097151&(I=e))<<11|t>>>21,I=A+(e=I>>21)|0,I=(B=hA+B|0)>>>0<hA>>>0?I+1|0:I,C[r+12|0]=(4095&I)<<20|B>>>12,e=B,C[r+11|0]=(15&I)<<28|e>>>4,B=0,C[r+10|0]=B<<15|(1966080&t)>>>17|e<<4,B=2097151&oA,t=GA(uA,kA,-683901,-1)+B|0,A=h,A=B>>>0>t>>>0?A+1|0:A,B=I,I=A+(I>>=21)|0,I=(B=(oA=t)+(t=(2097151&B)<<11|e>>>21)|0)>>>0<t>>>0?I+1|0:I,C[r+14|0]=(127&I)<<25|B>>>7,t=0,C[r+13|0]=t<<12|(1048576&e)>>>20|B<<1,A=I>>21,e=(I=(2097151&I)<<11|B>>>21)>>>0>(t=I+(2097151&pA)|0)>>>0?A+1|0:A,C[r+17|0]=(1023&e)<<22|t>>>10,C[r+16|0]=(3&e)<<30|t>>>2,I=0,C[r+15|0]=I<<17|(2064384&B)>>>15|t<<6,A=e>>21,A=(I=(2097151&e)<<11|t>>>21)>>>0>(e=I+(2097151&fA)|0)>>>0?A+1|0:A,C[r+20|0]=(8191&A)<<19|e>>>13,C[r+19|0]=(31&A)<<27|e>>>5,B=(I=2097151&EA)+(EA=(2097151&A)<<11|e>>>21)|0,I=A>>21,I=B>>>0<EA>>>0?I+1|0:I,EA=B,C[r+21|0]=B,fA=0,C[r+18|0]=fA<<14|(1835008&t)>>>18|e<<3,C[r+22|0]=(255&I)<<24|B>>>8,e=I>>21,e=(B=(t=(2097151&I)<<11|B>>>21)+(2097151&QA)|0)>>>0<t>>>0?e+1|0:e,C[r+25|0]=(2047&e)<<21|B>>>11,C[r+24|0]=(7&e)<<29|B>>>3,C[r+23|0]=31&((65535&I)<<16|EA>>>16)|B<<5,A=e>>21,A=(I=(2097151&e)<<11|B>>>21)>>>0>(e=I+(2097151&cA)|0)>>>0?A+1|0:A,C[r+27|0]=(63&A)<<26|e>>>6,t=0,C[r+26|0]=t<<13|(1572864&B)>>>19|e<<2,I=A,A>>=21,I=(B=(cA=(2097151&I)<<11|e>>>21)+(t=2097151&DA)|0)>>>0<t>>>0?A+1|0:A,C[r+31|0]=(131071&I)<<15|B>>>17,A=B,C[r+30|0]=(511&I)<<23|A>>>9,B=0,C[r+28|0]=B<<18|(2080768&e)>>>14|A<<7,C[r+29|0]=cA+DA>>>1,dg(o,64),dg(Q,64),g&&(a[g>>2]=64,a[g+4>>2]=0),n=c+560|0,0}function f(A,g,I,C){for(var e=0,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0;r=(e=Q<<3)+I|0,B=i[0|(e=g+e|0)]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,v=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,o=B<<24|(65280&B)<<8,c=(t=16711680&B)<<24,t=t>>>8|0,e=(y=-16777216&B)>>>24|0,a[r>>2]=c|y<<8|-16777216&((255&v)<<24|B>>>8)|16711680&((16777215&v)<<8|B>>>24)|v>>>8&65280|v>>>24,B=e|t|o,e=0,a[r+4>>2]=B|e,16!=(0|(Q=Q+1|0)););for(g=a[A+4>>2],a[C>>2]=a[A>>2],a[C+4>>2]=g,g=a[A+60>>2],a[C+56>>2]=a[A+56>>2],a[C+60>>2]=g,g=a[A+52>>2],a[C+48>>2]=a[A+48>>2],a[C+52>>2]=g,g=a[A+44>>2],a[C+40>>2]=a[A+40>>2],a[C+44>>2]=g,g=a[A+36>>2],a[C+32>>2]=a[A+32>>2],a[C+36>>2]=g,g=a[A+28>>2],a[C+24>>2]=a[A+24>>2],a[C+28>>2]=g,g=a[A+20>>2],a[C+16>>2]=a[A+16>>2],a[C+20>>2]=g,g=a[A+12>>2],a[C+8>>2]=a[A+8>>2],a[C+12>>2]=g;r=a[C+56>>2],t=a[C+60>>2],e=a[(g=v=(S=L<<3)+I|0)>>2],g=a[g+4>>2],k=B=a[C+36>>2],B=vA(f=a[C+32>>2],B,50),Q=h,B=vA(f,k,46)^B,Q^=h,B=vA(f,k,23)^B,g=(h^Q)+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,e=(Q=a[(B=S+33968|0)>>2])+e|0,g=a[B+4>>2]+g|0,g=e>>>0<Q>>>0?g+1|0:g,B=(Q=((c=a[C+48>>2])^(_=a[C+40>>2]))&f^c)+e|0,e=(((D=a[C+52>>2])^(d=a[C+44>>2]))&k^D)+g|0,g=(B>>>0<Q>>>0?e+1|0:e)+t|0,g=(r=B+r|0)>>>0<B>>>0?g+1|0:g,Q=(B=a[C+24>>2])+r|0,e=a[C+28>>2]+g|0,n=e=B>>>0>Q>>>0?e+1|0:e,a[C+24>>2]=Q,a[C+28>>2]=e,w=e=a[C+4>>2],e=vA(B=a[C>>2],e,36),t=h,e=vA(B,w,30)^e,t^=h,y=r+(vA(B,w,25)^e)|0,e=g+(h^t)|0,e=r>>>0>y>>>0?e+1|0:e,o=(g=y)+(y=B&((t=a[C+16>>2])|(r=a[C+8>>2]))|r&t)|0,g=(g=e)+(w&((e=a[C+20>>2])|(s=a[C+12>>2]))|e&s)|0,y=g=o>>>0<y>>>0?g+1|0:g,a[C+56>>2]=o,a[C+60>>2]=g,E=t,p=e,u=a[(g=J=(l=8|S)+I|0)>>2],M=a[g+4>>2],e=((k^d)&n^d)+D|0,e=(g=(t=(_^f)&Q^_)+c|0)>>>0<t>>>0?e+1|0:e,t=vA(Q,n,50),c=h,t=vA(Q,n,46)^t,c^=h,t=(D=vA(Q,n,23)^t)+g|0,g=(h^c)+e|0,g=(t>>>0<D>>>0?g+1|0:g)+M|0,g=(e=t+u|0)>>>0<t>>>0?g+1|0:g,t=(t=e)+(c=a[(e=l+33968|0)>>2])|0,e=a[e+4>>2]+g|0,e=(g=t>>>0<c>>>0?e+1|0:e)+p|0,D=e=(c=t+E|0)>>>0<t>>>0?e+1|0:e,a[C+16>>2]=c,a[C+20>>2]=e,g=g+((s|w)&y|s&w)|0,g=(e=t+((B|r)&o|B&r)|0)>>>0<t>>>0?g+1|0:g,t=vA(o,y,36),E=h,t=vA(o,y,30)^t,E^=h,p=e,e=vA(o,y,25)^t,g=(h^E)+g|0,E=g=e>>>0>(t=p+e|0)>>>0?g+1|0:g,a[C+48>>2]=t,a[C+52>>2]=g,p=r,l=s,g=(s=a[(e=K=(r=16|S)+I|0)>>2])+_|0,e=a[e+4>>2]+d|0,e=g>>>0<s>>>0?e+1|0:e,r=(_=g)+(s=a[(g=r+33968|0)>>2])|0,g=a[g+4>>2]+e|0,g=((n^k)&D^k)+(g=r>>>0<s>>>0?g+1|0:g)|0,g=(e=(e=r)+(r=(Q^f)&c^f)|0)>>>0<r>>>0?g+1|0:g,r=vA(c,D,50),s=h,r=vA(c,D,46)^r,s^=h,r=(_=vA(c,D,23)^r)+e|0,e=(h^s)+g|0,e=(_=r>>>0<_>>>0?e+1|0:e)+l|0,l=e=(s=r)>>>0>(r=r+p|0)>>>0?e+1|0:e,a[C+8>>2]=r,a[C+12>>2]=e,g=vA(t,E,36),e=h,g=vA(t,E,30)^g,e^=h,d=vA(t,E,25)^g,g=((y|w)&E|y&w)+(h^e)|0,e=_+((p=d+((B|o)&t|B&o)|0)>>>0<d>>>0?g+1|0:g)|0,s=e=(_=s+p|0)>>>0<s>>>0?e+1|0:e,a[C+40>>2]=_,a[C+44>>2]=e,p=B,e=(e=f)+(f=a[(g=U=(B=24|S)+I|0)>>2])|0,g=a[g+4>>2]+k|0,g=e>>>0<f>>>0?g+1|0:g,B=(d=e)+(f=a[(e=B+33968|0)>>2])|0,e=a[e+4>>2]+g|0,e=(n^(n^D)&l)+(e=B>>>0<f>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=Q^(Q^c)&r)|0)>>>0<B>>>0?e+1|0:e,B=vA(r,l,50),f=h,B=vA(r,l,46)^B,f^=h,B=(k=vA(r,l,23)^B)+g|0,g=(h^f)+e|0,e=(g=B>>>0<k>>>0?g+1|0:g)+w|0,k=e=(w=B+p|0)>>>0<B>>>0?e+1|0:e,a[C>>2]=w,a[C+4>>2]=e,e=vA(_,s,36),f=h,e=vA(_,s,30)^e,p=h^f,d=vA(_,s,25)^e,e=((y|E)&s|y&E)+(h^p)|0,g=g+((f=d+((t|o)&_|t&o)|0)>>>0<d>>>0?e+1|0:e)|0,f=g=(p=B+f|0)>>>0<B>>>0?g+1|0:g,a[C+32>>2]=p,a[C+36>>2]=g,B=a[(e=G=(g=32|S)+I|0)>>2],e=n+a[e+4>>2]|0,e=(B=B+Q|0)>>>0<Q>>>0?e+1|0:e,B=(Q=a[(g=g+33968|0)>>2])+B|0,g=a[g+4>>2]+e|0,g=(D^(D^l)&k)+(g=B>>>0<Q>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=c^(r^c)&w)|0)>>>0<B>>>0?g+1|0:g,B=vA(w,k,50),Q=h,B=vA(w,k,46)^B,Q^=h,B=(n=vA(w,k,23)^B)+e|0,e=(h^Q)+g|0,d=e=B>>>0<n>>>0?e+1|0:e,g=e,e=vA(p,f,36),Q=h,e=vA(p,f,30)^e,n=h^Q,u=vA(p,f,25)^e,e=((E|s)&f|E&s)+(h^n)|0,g=((Q=u+((t|_)&p|t&_)|0)>>>0<u>>>0?e+1|0:e)+g|0,Q=g=(n=B+Q|0)>>>0<Q>>>0?g+1|0:g,a[C+24>>2]=n,a[C+28>>2]=g,e=y+d|0,d=e=(y=B+o|0)>>>0<B>>>0?e+1|0:e,a[C+56>>2]=y,a[C+60>>2]=e,B=a[(g=Y=(e=40|S)+I|0)>>2],g=D+a[g+4>>2]|0,g=(B=B+c|0)>>>0<c>>>0?g+1|0:g,B=(o=a[(e=e+33968|0)>>2])+B|0,e=a[e+4>>2]+g|0,e=(l^(k^l)&d)+(e=B>>>0<o>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=r^(r^w)&y)|0)>>>0<B>>>0?e+1|0:e,B=vA(y,d,50),o=h,B=vA(y,d,46)^B,o^=h,B=(c=vA(y,d,23)^B)+g|0,g=(h^o)+e|0,g=B>>>0<c>>>0?g+1|0:g,e=vA(n,Q,36),o=h,e=vA(n,Q,30)^e,c=h^o,D=vA(n,Q,25)^e,e=((s|f)&Q|s&f)+(h^c)|0,e=((o=D+((_|p)&n|_&p)|0)>>>0<D>>>0?e+1|0:e)+g|0,o=e=(c=B+o|0)>>>0<o>>>0?e+1|0:e,a[C+16>>2]=c,a[C+20>>2]=e,g=g+E|0,u=g=(E=B+t|0)>>>0<t>>>0?g+1|0:g,a[C+48>>2]=E,a[C+52>>2]=g,B=a[(e=N=(g=48|S)+I|0)>>2],e=l+a[e+4>>2]|0,e=(B=B+r|0)>>>0<r>>>0?e+1|0:e,B=(r=a[(g=g+33968|0)>>2])+B|0,g=a[g+4>>2]+e|0,g=(k^(k^d)&u)+(g=B>>>0<r>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=w^(y^w)&E)|0)>>>0<B>>>0?g+1|0:g,B=vA(E,u,50),r=h,B=vA(E,u,46)^B,r^=h,B=(t=vA(E,u,23)^B)+e|0,e=(h^r)+g|0,t=e=B>>>0<t>>>0?e+1|0:e,g=e,e=vA(c,o,36),r=h,e=vA(c,o,30)^e,D=h^r,l=vA(c,o,25)^e,e=((Q|f)&o|Q&f)+(h^D)|0,g=((r=l+((n|p)&c|n&p)|0)>>>0<l>>>0?e+1|0:e)+g|0,D=g=(e=r)>>>0>(r=B+r|0)>>>0?g+1|0:g,a[C+8>>2]=r,a[C+12>>2]=g,e=t+s|0,l=e=(M=B+_|0)>>>0<B>>>0?e+1|0:e,a[C+40>>2]=M,a[C+44>>2]=e,B=a[(g=H=(e=56|S)+I|0)>>2],g=k+a[g+4>>2]|0,g=(B=B+w|0)>>>0<w>>>0?g+1|0:g,B=(t=a[(e=e+33968|0)>>2])+B|0,e=a[e+4>>2]+g|0,e=(d^(d^u)&l)+(e=B>>>0<t>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=y^(y^E)&M)|0)>>>0<B>>>0?e+1|0:e,B=vA(M,l,50),t=h,B=vA(M,l,46)^B,t^=h,B=(s=vA(M,l,23)^B)+g|0,g=(h^t)+e|0,g=B>>>0<s>>>0?g+1|0:g,e=vA(r,D,36),t=h,e=vA(r,D,30)^e,s=h^t,_=vA(r,D,25)^e,e=((Q|o)&D|Q&o)+(h^s)|0,e=((t=_+((c|n)&r|c&n)|0)>>>0<_>>>0?e+1|0:e)+g|0,s=e=(s=t)>>>0>(t=B+t|0)>>>0?e+1|0:e,a[C>>2]=t,a[C+4>>2]=e,g=g+f|0,k=g=(_=B+p|0)>>>0<B>>>0?g+1|0:g,a[C+32>>2]=_,a[C+36>>2]=g,B=a[(e=x=(g=64|S)+I|0)>>2],e=d+a[e+4>>2]|0,e=(B=B+y|0)>>>0<y>>>0?e+1|0:e,B=(y=a[(g=g+33968|0)>>2])+B|0,g=a[g+4>>2]+e|0,g=(u^(l^u)&k)+(g=B>>>0<y>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=E^(E^M)&_)|0)>>>0<B>>>0?g+1|0:g,B=vA(_,k,50),y=h,B=vA(_,k,46)^B,y^=h,B=(w=vA(_,k,23)^B)+e|0,e=(h^y)+g|0,f=e=B>>>0<w>>>0?e+1|0:e,g=e,e=vA(t,s,36),y=h,e=vA(t,s,30)^e,w=h^y,p=vA(t,s,25)^e,e=((o|D)&s|o&D)+(h^w)|0,g=((y=p+((r|c)&t|r&c)|0)>>>0<p>>>0?e+1|0:e)+g|0,y=g=(w=B+y|0)>>>0<y>>>0?g+1|0:g,a[C+56>>2]=w,a[C+60>>2]=g,e=Q+f|0,d=e=(Q=B+n|0)>>>0<B>>>0?e+1|0:e,a[C+24>>2]=Q,a[C+28>>2]=e,B=a[(g=F=(e=72|S)+I|0)>>2],g=u+a[g+4>>2]|0,g=(B=B+E|0)>>>0<E>>>0?g+1|0:g,B=(E=a[(e=e+33968|0)>>2])+B|0,e=a[e+4>>2]+g|0,e=(l^(k^l)&d)+(e=B>>>0<E>>>0?e+1|0:e)|0,e=(g=(g=B)+(B=M^(_^M)&Q)|0)>>>0<B>>>0?e+1|0:e,B=vA(Q,d,50),E=h,B=vA(Q,d,46)^B,E^=h,B=(f=vA(Q,d,23)^B)+g|0,g=(h^E)+e|0,g=B>>>0<f>>>0?g+1|0:g,e=vA(w,y,36),E=h,e=vA(w,y,30)^e,f=h^E,p=vA(w,y,25)^e,e=((s|D)&y|s&D)+(h^f)|0,e=((E=p+((r|t)&w|r&t)|0)>>>0<p>>>0?e+1|0:e)+g|0,E=e=(f=B+E|0)>>>0<E>>>0?e+1|0:e,a[C+48>>2]=f,a[C+52>>2]=e,g=g+o|0,u=g=(o=B+c|0)>>>0<B>>>0?g+1|0:g,a[C+16>>2]=o,a[C+20>>2]=g,g=(g=M)+(c=a[(e=M=(B=80|S)+I|0)>>2])|0,e=a[e+4>>2]+l|0,e=g>>>0<c>>>0?e+1|0:e,B=(n=g)+(c=a[(g=B+33968|0)>>2])|0,g=a[g+4>>2]+e|0,g=(k^(k^d)&u)+(g=B>>>0<c>>>0?g+1|0:g)|0,g=(e=(e=B)+(B=_^(Q^_)&o)|0)>>>0<B>>>0?g+1|0:g,B=vA(o,u,50),c=h,B=vA(o,u,46)^B,c^=h,B=(p=vA(o,u,23)^B)+e|0,e=(h^c)+g|0,n=e=B>>>0<p>>>0?e+1|0:e,g=e,e=vA(f,E,36),c=h,e=vA(f,E,30)^e,p=h^c,l=vA(f,E,25)^e,e=((y|s)&E|y&s)+(h^p)|0,g=((c=l+((t|w)&f|t&w)|0)>>>0<l>>>0?e+1|0:e)+g|0,c=g=(p=B+c|0)>>>0<c>>>0?g+1|0:g,a[C+40>>2]=p,a[C+44>>2]=g,e=n+D|0,D=e=(n=B+r|0)>>>0<r>>>0?e+1|0:e,a[C+8>>2]=n,a[C+12>>2]=e,e=33968+(g=88|S)|0,r=a[(g=b=g+I|0)>>2],B=a[e>>2]+r|0,g=a[e+4>>2]+a[g+4>>2]|0,e=k+(B>>>0<r>>>0?g+1|0:g)|0,e=(d^(d^u)&D)+(e=(g=B+_|0)>>>0<_>>>0?e+1|0:e)|0,e=(g=(B=Q^(Q^o)&n)+g|0)>>>0<B>>>0?e+1|0:e,B=vA(n,D,50),r=h,B=vA(n,D,46)^B,r^=h,B=(_=vA(n,D,23)^B)+g|0,g=(h^r)+e|0,g=B>>>0<_>>>0?g+1|0:g,e=vA(p,c,36),r=h,e=vA(p,c,30)^e,_=h^r,l=vA(p,c,25)^e,e=((y|E)&c|y&E)+(h^_)|0,e=((r=l+((f|w)&p|f&w)|0)>>>0<l>>>0?e+1|0:e)+g|0,_=e=(_=r)>>>0>(r=B+r|0)>>>0?e+1|0:e,a[C+32>>2]=r,a[C+36>>2]=e,g=g+s|0,s=g=(e=t)>>>0>(t=B+t|0)>>>0?g+1|0:g,a[C>>2]=t,a[C+4>>2]=g,e=33968+(g=96|S)|0,l=a[(g=m=g+I|0)>>2],B=a[e>>2]+l|0,e=a[e+4>>2]+a[g+4>>2]|0,g=d+(B>>>0<l>>>0?e+1|0:e)|0,g=(e=B+Q|0)>>>0<Q>>>0?g+1|0:g,B=(Q=o^(o^n)&t)+e|0,e=(u^(D^u)&s)+g|0,e=B>>>0<Q>>>0?e+1|0:e,g=vA(t,s,50),Q=h,g=vA(t,s,46)^g,Q^=h,d=B,B=vA(t,s,23)^g,e=(h^Q)+e|0,k=e=(g=d+B|0)>>>0<B>>>0?e+1|0:e,B=g,g=vA(r,_,36),Q=h,g=vA(r,_,30)^g,l=h^Q,d=vA(r,_,25)^g,g=((c|E)&_|c&E)+(h^l)|0,e=((Q=d+((f|p)&r|f&p)|0)>>>0<d>>>0?g+1|0:g)+e|0,Q=e=(l=B+Q|0)>>>0<Q>>>0?e+1|0:e,a[C+24>>2]=l,a[C+28>>2]=e,e=y+k|0,y=e=(w=B+w|0)>>>0<B>>>0?e+1|0:e,a[C+56>>2]=w,a[C+60>>2]=e,e=33968+(g=104|S)|0,k=a[(g=R=g+I|0)>>2],B=a[e>>2]+k|0,g=a[e+4>>2]+a[g+4>>2]|0,e=u+(B>>>0<k>>>0?g+1|0:g)|0,e=(g=B+o|0)>>>0<o>>>0?e+1|0:e,B=(o=n^(t^n)&w)+g|0,g=(D^(s^D)&y)+e|0,g=B>>>0<o>>>0?g+1|0:g,e=vA(w,y,50),o=h,e=vA(w,y,46)^e,o^=h,k=vA(w,y,23)^e,e=(h^o)+g|0,d=e=(B=k+B|0)>>>0<k>>>0?e+1|0:e,g=e,e=vA(l,Q,36),o=h,e=vA(l,Q,30)^e,k=h^o,u=vA(l,Q,25)^e,e=((c|_)&Q|c&_)+(h^k)|0,g=((o=u+((r|p)&l|r&p)|0)>>>0<u>>>0?e+1|0:e)+g|0,o=g=(k=B+o|0)>>>0<o>>>0?g+1|0:g,a[C+16>>2]=k,a[C+20>>2]=g,g=E+d|0,E=g=(f=B+f|0)>>>0<B>>>0?g+1|0:g,a[C+48>>2]=f,a[C+52>>2]=g,e=33968+(g=112|S)|0,d=a[(B=u=g+I|0)>>2],g=a[e>>2]+d|0,e=a[e+4>>2]+a[B+4>>2]|0,e=D+(g>>>0<d>>>0?e+1|0:e)|0,e=(s^(y^s)&E)+(e=(g=g+n|0)>>>0<n>>>0?e+1|0:e)|0,e=(g=(B=t^(t^w)&f)+g|0)>>>0<B>>>0?e+1|0:e,B=vA(f,E,50),n=h,B=vA(f,E,46)^B,n^=h,B=(D=vA(f,E,23)^B)+g|0,g=(h^n)+e|0,d=g=B>>>0<D>>>0?g+1|0:g,e=g,g=vA(k,o,36),n=h,g=vA(k,o,30)^g,D=h^n,P=vA(k,o,25)^g,g=((Q|_)&o|Q&_)+(h^D)|0,e=((n=P+((r|l)&k|r&l)|0)>>>0<P>>>0?g+1|0:g)+e|0,n=e=(D=B+n|0)>>>0<n>>>0?e+1|0:e,a[C+8>>2]=D,a[C+12>>2]=e,e=c+d|0,B=e=(c=B+p|0)>>>0<B>>>0?e+1|0:e,a[C+40>>2]=c,a[C+44>>2]=e,e=33968+(g=120|S)|0,S=a[(g=p=g+I|0)>>2],d=a[e>>2]+S|0,e=a[e+4>>2]+a[g+4>>2]|0,g=s+(d>>>0<S>>>0?e+1|0:e)|0,g=(y^(y^E)&B)+(g=(e=t+d|0)>>>0<t>>>0?g+1|0:g)|0,g=(e=(t=w^(f^w)&c)+e|0)>>>0<t>>>0?g+1|0:g,t=vA(c,B,50),y=h,t=vA(c,B,46)^t,y^=h,B=(t=vA(c,B,23)^t)+e|0,e=(h^y)+g|0,e=B>>>0<t>>>0?e+1|0:e,t=B,y=e,g=e,e=vA(D,n,36),c=h,e=vA(D,n,30)^e,E=h^c,s=vA(D,n,25)^e,e=((Q|o)&n|Q&o)+(h^E)|0,g=((c=s+((k|l)&D|k&l)|0)>>>0<s>>>0?e+1|0:e)+g|0,g=(B=B+c|0)>>>0<c>>>0?g+1|0:g,a[C>>2]=B,a[C+4>>2]=g,e=y+_|0,e=(E=r)>>>0>(r=r+t|0)>>>0?e+1|0:e,a[C+32>>2]=r,a[C+36>>2]=e,64!=(0|L);)o=((L=L+16|0)<<3)+I|0,t=a[v>>2],Q=a[v+4>>2],P=a[F>>2],y=g=a[F+4>>2],e=g,B=g=a[u+4>>2],g=vA(l=a[u>>2],g,45),r=h,E=((63&B)<<26|l>>>6)^(g=vA(l,B,3)^g),g=(B>>>6^(c=h^r))+e|0,e=((r=E+P|0)>>>0<E>>>0?g+1|0:g)+Q|0,e=(g=r+t|0)>>>0<r>>>0?e+1|0:e,t=r=a[J+4>>2],r=vA(Q=a[J>>2],r,63),c=h,r=((127&t)<<25|Q>>>7)^vA(Q,t,56)^r,e=(h^c^t>>>7)+e|0,r=e=r>>>0>(k=r+g|0)>>>0?e+1|0:e,a[o>>2]=k,a[o+4>>2]=e,Q=(u=a[M>>2])+Q|0,g=(o=a[M+4>>2])+t|0,e=Q>>>0<u>>>0?g+1|0:g,t=g=a[p+4>>2],g=vA(d=a[p>>2],g,45),c=h,E=Q,Q=((63&t)<<26|d>>>6)^vA(d,t,3)^g,e=(h^c^t>>>6)+e|0,Q=Q>>>0>(E=E+Q|0)>>>0?e+1|0:e,e=vA(c=a[K>>2],g=a[K+4>>2],63),s=h,n=E,E=((127&g)<<25|c>>>7)^vA(c,g,56)^e,e=(h^s^g>>>7)+Q|0,Q=e=E>>>0>(D=n+E|0)>>>0?e+1|0:e,a[v+136>>2]=D,a[v+140>>2]=e,e=(M=a[b>>2])+c|0,g=(c=a[b+4>>2])+g|0,E=vA(k,r,45),s=h,E=(_=((63&r)<<26|k>>>6)^vA(k,r,3)^E)+e|0,e=(h^s^r>>>6)+(e>>>0<M>>>0?g+1|0:g)|0,e=E>>>0<_>>>0?e+1|0:e,s=g=a[U+4>>2],g=vA(_=a[U>>2],g,63),w=h,n=E,E=((127&s)<<25|_>>>7)^vA(_,s,56)^g,e=(h^w^s>>>7)+e|0,E=e=E>>>0>(S=n+E|0)>>>0?e+1|0:e,a[v+144>>2]=S,a[v+148>>2]=e,_=(J=a[m>>2])+_|0,g=(g=s)+(s=a[m+4>>2])|0,e=_>>>0<J>>>0?g+1|0:g,g=vA(D,Q,45),w=h,f=((63&Q)<<26|D>>>6)^vA(D,Q,3)^g,e=(h^w^Q>>>6)+e|0,e=(_=f+_|0)>>>0<f>>>0?e+1|0:e,w=g=a[G+4>>2],g=vA(f=a[G>>2],g,63),p=h,n=_,_=((127&w)<<25|f>>>7)^vA(f,w,56)^g,e=(h^p^w>>>7)+e|0,_=e=_>>>0>(K=n+_|0)>>>0?e+1|0:e,a[v+152>>2]=K,a[v+156>>2]=e,g=(U=a[R>>2])+f|0,e=(e=w)+(w=a[R+4>>2])|0,f=vA(S,E,45),p=h,f=((63&E)<<26|S>>>6)^vA(S,E,3)^f,e=(h^p^E>>>6)+(g>>>0<U>>>0?e+1|0:e)|0,f=(n=f+g|0)>>>0<f>>>0?e+1|0:e,e=vA(p=a[Y>>2],g=a[Y+4>>2],63),G=h,b=n,n=((127&g)<<25|p>>>7)^(e=vA(p,g,56)^e),e=(g>>>7^(Y=h^G))+f|0,f=e=n>>>0>(G=b+n|0)>>>0?e+1|0:e,a[v+160>>2]=G,a[v+164>>2]=e,g=g+B|0,g=(e=p+l|0)>>>0<p>>>0?g+1|0:g,p=vA(K,_,45),n=h,p=(Y=((63&_)<<26|K>>>6)^vA(K,_,3)^p)+e|0,e=(h^n^_>>>6)+g|0,e=p>>>0<Y>>>0?e+1|0:e,n=a[N>>2],N=g=a[N+4>>2],g=vA(n,g,63),Y=h,g=vA(n,N,56)^g,b=p,e=(N>>>7^(F=h^Y))+e|0,p=e=(p=((127&N)<<25|n>>>7)^g)>>>0>(Y=b+p|0)>>>0?e+1|0:e,a[v+168>>2]=Y,a[v+172>>2]=e,g=t+N|0,g=(e=n+d|0)>>>0<n>>>0?g+1|0:g,b=n=a[H+4>>2],n=vA(F=a[H>>2],n,63),N=h,n=(H=((127&b)<<25|F>>>7)^vA(F,b,56)^n)+e|0,e=(h^N^b>>>7)+g|0,g=n>>>0<H>>>0?e+1|0:e,e=vA(G,f,45),N=h,e=vA(G,f,3)^e,H=h^N,N=n,g=(f>>>6^H)+g|0,n=g=(n=((63&f)<<26|G>>>6)^e)>>>0>(N=N+n|0)>>>0?g+1|0:g,a[v+176>>2]=N,a[v+180>>2]=g,m=a[x>>2],x=g=a[x+4>>2],H=g,g=vA(P,y,63),e=h,R=((127&y)<<25|P>>>7)^vA(P,y,56)^g,g=(h^e^y>>>7)+Q|0,e=((D=R+D|0)>>>0<R>>>0?g+1|0:g)+H|0,e=(g=D+m|0)>>>0<D>>>0?e+1|0:e,Q=vA(N,n,45),D=h,H=(Q=((63&n)<<26|N>>>6)^vA(N,n,3)^Q)+g|0,g=(h^D^n>>>6)+e|0,Q=g=Q>>>0>H>>>0?g+1|0:g,a[v+192>>2]=H,a[v+196>>2]=g,e=r+b|0,e=(g=k+F|0)>>>0<F>>>0?e+1|0:e,D=vA(m,x,63),F=h,b=((127&x)<<25|m>>>7)^vA(m,x,56)^D,e=(h^F^x>>>7)+e|0,g=(D=b+g|0)>>>0<b>>>0?e+1|0:e,e=vA(Y,p,45),F=h,e=vA(Y,p,3)^e,x=D,g=(p>>>6^(b=h^F))+g|0,D=g=(D=((63&p)<<26|Y>>>6)^e)>>>0>(F=x+D|0)>>>0?g+1|0:g,a[v+184>>2]=F,a[v+188>>2]=g,g=vA(M,c,63),e=h,g=((127&c)<<25|M>>>7)^vA(M,c,56)^g,e=(h^e^c>>>7)+o|0,g=_+(g>>>0>(b=g+u|0)>>>0?e+1|0:e)|0,g=(e=K+b|0)>>>0<K>>>0?g+1|0:g,_=vA(H,Q,45),K=h,_=vA(H,Q,3)^_,b=h^K,K=(_^=(63&Q)<<26|H>>>6)+e|0,e=(Q>>>6^b)+g|0,_=e=_>>>0>K>>>0?e+1|0:e,a[v+208>>2]=K,a[v+212>>2]=e,g=vA(u,o,63),e=h,b=vA(u,o,56)^g,e=((g=o>>>7|0)^h^e)+y|0,g=E+((o=(u=b^((127&o)<<25|u>>>7))+P|0)>>>0<u>>>0?e+1|0:e)|0,g=(e=o+S|0)>>>0<S>>>0?g+1|0:g,y=vA(F,D,45),o=h,E=(y=((63&D)<<26|F>>>6)^vA(F,D,3)^y)+e|0,e=(h^o^D>>>6)+g|0,y=e=y>>>0>E>>>0?e+1|0:e,a[v+200>>2]=E,a[v+204>>2]=e,g=vA(U,w,63),e=h,u=((127&w)<<25|U>>>7)^vA(U,w,56)^g,g=(h^e^w>>>7)+s|0,e=p+((o=u+J|0)>>>0<u>>>0?g+1|0:g)|0,e=(g=o+Y|0)>>>0<Y>>>0?e+1|0:e,o=vA(K,_,45),p=h,u=g,g=_>>>6|0,o=((63&_)<<26|K>>>6)^vA(K,_,3)^o,e=(g^h^p)+e|0,o=e=o>>>0>(_=u+o|0)>>>0?e+1|0:e,a[v+224>>2]=_,a[v+228>>2]=e,g=vA(J,s,63),e=h,g=vA(J,s,56)^g,p=h^e,u=((127&s)<<25|J>>>7)^g,g=((e=s>>>7|0)^p)+c|0,e=f+((s=u+M|0)>>>0<u>>>0?g+1|0:g)|0,e=(g=s+G|0)>>>0<G>>>0?e+1|0:e,c=vA(E,y,45),s=h,p=g,g=y>>>6|0,y=((63&y)<<26|E>>>6)^vA(E,y,3)^c,g=(g^h^s)+e|0,y=g=(c=p+y|0)>>>0<y>>>0?g+1|0:g,a[v+216>>2]=c,a[v+220>>2]=g,g=vA(d,t,63),e=h,s=((127&t)<<25|d>>>7)^vA(d,t,56)^g,e=(h^e^t>>>7)+B|0,e=D+((g=s+l|0)>>>0<s>>>0?e+1|0:e)|0,g=(E=g+F|0)>>>0<F>>>0?e+1|0:e,e=vA(_,o,45),s=h,p=E,E=vA(_,o,3)^e,e=o>>>6|0,o=p+(E^=(63&o)<<26|_>>>6)|0,g=(e^h^s)+g|0,a[v+240>>2]=o,a[v+244>>2]=o>>>0<E>>>0?g+1|0:g,g=vA(l,B,63),e=h,g=vA(l,B,56)^g,o=h^e,e=((e=B>>>7|0)^o)+w|0,g=n+((g^=(127&B)<<25|l>>>7)>>>0>(B=g+U|0)>>>0?e+1|0:e)|0,g=(e=B+N|0)>>>0<N>>>0?g+1|0:g,B=vA(c,y,45),o=h,E=e,e=y>>>6|0,B=((63&y)<<26|c>>>6)^vA(c,y,3)^B,e=(e^h^o)+g|0,B=e=B>>>0>(y=E+B|0)>>>0?e+1|0:e,a[v+232>>2]=y,a[v+236>>2]=e,g=vA(k,r,63),e=h,E=vA(k,r,56)^g,e=((g=r>>>7|0)^h^e)+t|0,g=Q+((r=(o=E^((127&r)<<25|k>>>7))+d|0)>>>0<o>>>0?e+1|0:e)|0,g=(e=r+H|0)>>>0<H>>>0?g+1|0:g,r=vA(y,B,45),t=h,E=e,e=B>>>6|0,B=E+(r=((63&B)<<26|y>>>6)^vA(y,B,3)^r)|0,e=(e^h^t)+g|0,a[v+248>>2]=B,a[v+252>>2]=B>>>0<r>>>0?e+1|0:e;g=g+a[A+4>>2]|0,g=(I=B+a[A>>2]|0)>>>0<B>>>0?g+1|0:g,a[A>>2]=I,a[A+4>>2]=g,e=a[A+12>>2]+a[C+12>>2]|0,g=(I=a[C+8>>2])+a[A+8>>2]|0,a[A+8>>2]=g,a[A+12>>2]=g>>>0<I>>>0?e+1|0:e,e=a[A+20>>2]+a[C+20>>2]|0,g=(I=a[C+16>>2])+a[A+16>>2]|0,a[A+16>>2]=g,a[A+20>>2]=g>>>0<I>>>0?e+1|0:e,g=a[A+28>>2]+a[C+28>>2]|0,I=(e=a[C+24>>2])+a[A+24>>2]|0,a[A+24>>2]=I,a[A+28>>2]=I>>>0<e>>>0?g+1|0:g,e=a[A+36>>2]+a[C+36>>2]|0,g=(I=a[C+32>>2])+a[A+32>>2]|0,a[A+32>>2]=g,a[A+36>>2]=g>>>0<I>>>0?e+1|0:e,g=a[A+44>>2]+a[C+44>>2]|0,I=(e=a[C+40>>2])+a[A+40>>2]|0,a[A+40>>2]=I,a[A+44>>2]=I>>>0<e>>>0?g+1|0:g,e=a[A+52>>2]+a[C+52>>2]|0,g=(I=a[C+48>>2])+a[A+48>>2]|0,a[A+48>>2]=g,a[A+52>>2]=g>>>0<I>>>0?e+1|0:e,e=a[A+60>>2]+a[C+60>>2]|0,g=(I=a[C+56>>2])+a[A+56>>2]|0,a[A+56>>2]=g,a[A+60>>2]=g>>>0<I>>>0?e+1|0:e}function D(A){var g,I,e,B,a,r,t,Q,o,c,E,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0;s=(M=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24)>>>5&2097151,n=GA(g=(i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24)>>>3|0,0,-683901,-1),_=(y=i[A+44|0])<<16&2031616|i[A+42|0]|i[A+43|0]<<8,y=h,w=y=_>>>0>(d=n+_|0)>>>0?y+1|0:y,S=y=y-((d>>>0<4293918720)-1|0)|0,n=y>>21,y=(_=s)+(s=(2097151&y)<<11|(f=d- -1048576|0)>>>21)|0,_=n,G=_=y>>>0<s>>>0?_+1|0:_,q=y,v=GA(y,_,-683901,-1),k=h,D=GA(I=(i[A+49|0]|i[A+50|0]<<8|i[A+51|0]<<16|i[A+52|0]<<24)>>>7&2097151,0,-997805,-1),n=(y=i[A+27|0])>>>24|0,s=y<<8|(b=i[A+23|0]|i[A+24|0]<<8|i[A+25|0]<<16|i[A+26|0]<<24)>>>24,_=(y=i[A+28|0])>>>16|0,_=2097151&((3&(_|=n))<<30|(y=s|y<<16)>>>2),y=h,y=_>>>0>(n=_+D|0)>>>0?y+1|0:y,_=GA(L=(l=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24)>>>4&2097151,0,654183,0),y=h+y|0,D=n=_+n|0,n=_>>>0>n>>>0?y+1|0:y,p=(_=i[A+48|0])<<8|M>>>24,_=y=_>>>24|0,y=GA(e=2097151&((3&(M=(y=(s=i[A+49|0])>>>16|0)|_))<<30|(_=(s<<=16)|p)>>>2),0,136657,0),n=h+n|0,n=y>>>0>(_=y+D|0)>>>0?n+1|0:n,s=(y=GA(B=(i[A+57|0]|i[A+58|0]<<8|i[A+59|0]<<16|i[A+60|0]<<24)>>>6&2097151,0,666643,0))+_|0,_=h+n|0,D=s,n=y>>>0>s>>>0?_+1|0:_,_=(y=i[A+56|0])>>>24|0,p=y<<8|l>>>24,_=GA(a=2097151&((1&(l=(y=(s=i[A+57|0])>>>16|0)|_))<<31|(_=(s<<=16)|p)>>>1),0,470296,0),y=h+n|0,_=(y=(n=s=_+D|0)>>>0<_>>>0?y+1|0:y)+k|0,_=n>>>0>(s=n+v|0)>>>0?_+1|0:_,F=n- -1048576|0,J=n=y-((n>>>0<4293918720)-1|0)|0,k=s-(y=-2097152&F)|0,v=_-((y>>>0>s>>>0)+n|0)|0,_=GA(I,0,654183,0),y=h,y=_>>>0>(n=_+(b>>>5&2097151)|0)>>>0?y+1|0:y,s=(_=n)+(n=GA(L,0,470296,0))|0,_=h+y|0,_=n>>>0>s>>>0?_+1|0:_,y=GA(e,z,-997805,-1),_=h+_|0,_=y>>>0>(n=y+s|0)>>>0?_+1|0:_,s=(y=n)+(n=GA(a,j,666643,0))|0,y=h+_|0,p=s,s=n>>>0>s>>>0?y+1|0:y,D=(n=GA(I,0,470296,0))+(y=(y=i[A+23|0])<<16&2031616|i[A+21|0]|i[A+22|0]<<8)|0,n=h,n=y>>>0>D>>>0?n+1|0:n,D=(_=GA(L,0,666643,0))+D|0,y=h+n|0,n=GA(e,z,654183,0),_=h+(_>>>0>D>>>0?y+1|0:y)|0,l=_=n>>>0>(b=n+D|0)>>>0?_+1|0:_,R=_=_-((b>>>0<4293918720)-1|0)|0,y=(y=_>>>21|0)+s|0,n=y=(_=(2097151&_)<<11|(D=b- -1048576|0)>>>21)>>>0>(p=_+p|0)>>>0?y+1|0:y,u=_=y-((p>>>0<4293918720)-1|0)|0,y=k,k=(2097151&_)<<11|(s=p- -1048576|0)>>>21,_=(_>>21)+v|0,M=k=(_=k>>>0>(N=y+k|0)>>>0?_+1|0:_)-((N>>>0<4293918720)-1|0)|0,T=N-(y=-2097152&(v=N- -1048576|0))|0,X=_-((y>>>0>N>>>0)+k|0)|0,y=GA(q,G,136657,0),n=h+n|0,n=y>>>0>(_=y+p|0)>>>0?n+1|0:n,H=_-(y=-2097152&s)|0,K=n-((y>>>0>_>>>0)+u|0)|0,N=d-(y=-2097152&f)|0,S=w-((y>>>0>d>>>0)+S|0)|0,w=GA(g,0,136657,0),_=(y=i[A+40|0])>>>24|0,s=y<<8|(f=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24)>>>24,n=(y=i[A+41|0])>>>16|0,_=(n|=_)>>>3|0,n=(7&n)<<29|(y=s|y<<16)>>>3,y=_+h|0,y=n>>>0>(s=n+w|0)>>>0?y+1|0:y,_=GA(B,0,-683901,-1),y=h+y|0,y=_>>>0>(n=_+s|0)>>>0?y+1|0:y,p=n,_=GA(g,0,-997805,-1),n=h,n=_>>>0>(s=_+(f>>>6&2097151)|0)>>>0?n+1|0:n,f=(_=s)+(s=GA(B,0,136657,0))|0,_=h+n|0,n=GA(a,j,-683901,-1),_=h+(s>>>0>f>>>0?_+1|0:_)|0,k=_=n>>>0>(U=n+f|0)>>>0?_+1|0:_,O=n=_-((U>>>0<4293918720)-1|0)|0,y=y+(_=n>>21)|0,f=y=(n=(2097151&n)<<11|(d=U- -1048576|0)>>>21)>>>0>(u=n+p|0)>>>0?y+1|0:y,x=y=y-((u>>>0<4293918720)-1|0)|0,_=(_=y>>21)+S|0,P=_=(y=(n=(2097151&y)<<11|(p=u- -1048576|0)>>>21)+N|0)>>>0<n>>>0?_+1|0:_,m=y,_=GA(y,_,-683901,-1),y=h+K|0,Y=n=_+H|0,s=_>>>0>n>>>0?y+1|0:y,N=b-(y=-2097152&D)|0,S=l-((4095&R)+(y>>>0>b>>>0)|0)|0,b=GA(I,0,666643,0),y=(_=i[A+19|0])>>>24|0,D=_<<8|(l=i[A+15|0]|i[A+16|0]<<8|i[A+17|0]<<16|i[A+18|0]<<24)>>>24,n=y,_=(7&(n|=_=(y=i[A+20|0])>>>16|0))<<29|(_=(y<<=16)|D)>>>3,n=h+(n>>>3|0)|0,n=_>>>0>(D=_+b|0)>>>0?n+1|0:n,y=GA(e,z,470296,0),_=h+n|0,y=y>>>0>(D=y+D|0)>>>0?_+1|0:_,n=GA(e,z,666643,0),_=h,b=_=n>>>0>(H=n+(l>>>6&2097151)|0)>>>0?_+1|0:_,V=n=_-((H>>>0<4293918720)-1|0)|0,y=y+(_=n>>>21|0)|0,l=y=(n=(2097151&n)<<11|(w=H- -1048576|0)>>>21)>>>0>(K=n+D|0)>>>0?y+1|0:y,Z=y=y-((K>>>0<4293918720)-1|0)|0,_=(_=y>>>21|0)+S|0,_=(y=(2097151&y)<<11|(D=K- -1048576|0)>>>21)>>>0>(n=y+N|0)>>>0?_+1|0:_,S=(y=n)+(n=GA(q,G,-997805,-1))|0,y=h+_|0,y=n>>>0>S>>>0?y+1|0:y,R=_=u-(n=-2097152&p)|0,r=p=f-((n>>>0>u>>>0)+x|0)|0,n=GA(m,P,136657,0),y=h+y|0,y=n>>>0>(f=n+S|0)>>>0?y+1|0:y,n=GA(_,p,-683901,-1),_=h+y|0,f=_=n>>>0>(S=n+f|0)>>>0?_+1|0:_,x=y=_-((S>>>0<4293918720)-1|0)|0,_=(2097151&y)<<11|(p=S- -1048576|0)>>>21,y=(y>>21)+s|0,Y=_=(y=_>>>0>(u=_+Y|0)>>>0?y+1|0:y)-((u>>>0<4293918720)-1|0)|0,N=(2097151&_)<<11|(s=u- -1048576|0)>>>21,_=(_>>21)+X|0,Q=T=N+T|0,N=N>>>0>T>>>0?_+1|0:_,o=u-(_=-2097152&s)|0,c=y-((_>>>0>u>>>0)+Y|0)|0,T=S-(y=-2097152&p)|0,X=f-((y>>>0>S>>>0)+x|0)|0,n=(y=GA(q,G,654183,0))+(K-(_=-2097152&D)|0)|0,_=h+(l-((2147483647&Z)+(_>>>0>K>>>0)|0)|0)|0,_=y>>>0>n>>>0?_+1|0:_,y=GA(m,P,-997805,-1),_=h+_|0,_=y>>>0>(n=y+n|0)>>>0?_+1|0:_,s=(y=n)+(n=GA(R,r,136657,0))|0,y=h+_|0,Y=s,f=n>>>0>s>>>0?y+1|0:y,K=U-(y=-2097152&d)|0,u=k-((y>>>0>U>>>0)+O|0)|0,l=GA(L,0,-683901,-1),y=(_=i[A+35|0])>>>24|0,s=_<<8|(D=i[A+31|0]|i[A+32|0]<<8|i[A+33|0]<<16|i[A+34|0]<<24)>>>24,n=y,_=(y=i[A+36|0])>>>16|0,_|=n,n=h,n=(y=2097151&((1&_)<<31|(y=y<<16|s)>>>1))>>>0>(_=y+l|0)>>>0?n+1|0:n,s=(y=GA(g,0,654183,0))+_|0,_=h+n|0,_=y>>>0>s>>>0?_+1|0:_,n=GA(B,0,-997805,-1),y=h+_|0,y=n>>>0>(s=n+s|0)>>>0?y+1|0:y,_=GA(a,j,136657,0),y=h+y|0,p=n=_+s|0,s=_>>>0>n>>>0?y+1|0:y,y=GA(I,0,-683901,-1),_=h,_=y>>>0>(n=y+(D>>>4&2097151)|0)>>>0?_+1|0:_,D=(y=GA(L,0,136657,0))+n|0,n=h+_|0,n=y>>>0>D>>>0?n+1|0:n,y=GA(g,0,470296,0),_=h+n|0,_=y>>>0>(D=y+D|0)>>>0?_+1|0:_,D=(n=GA(B,0,654183,0))+D|0,y=h+_|0,_=GA(a,j,-997805,-1),y=h+(n>>>0>D>>>0?y+1|0:y)|0,l=y=_>>>0>(k=_+D|0)>>>0?y+1|0:y,E=_=y-((k>>>0<4293918720)-1|0)|0,n=(y=_>>21)+s|0,S=_=(n=(_=(2097151&_)<<11|(D=k- -1048576|0)>>>21)>>>0>(d=_+p|0)>>>0?n+1|0:n)-((d>>>0<4293918720)-1|0)|0,y=(y=_>>21)+u|0,x=y=(_=(s=(2097151&_)<<11|(p=d- -1048576|0)>>>21)+K|0)>>>0<s>>>0?y+1|0:y,s=Y,Y=_,y=GA(_,y,-683901,-1),_=h+f|0,u=s=s+y|0,s=y>>>0>s>>>0?_+1|0:_,f=(y=GA(q,G,470296,0))+(H-(_=-2097152&w)|0)|0,_=h+(b-((2047&V)+(_>>>0>H>>>0)|0)|0)|0,_=y>>>0>f>>>0?_+1|0:_,w=(y=f)+(f=GA(m,P,654183,0))|0,y=h+_|0,y=f>>>0>w>>>0?y+1|0:y,f=GA(R,r,-997805,-1),_=h+y|0,_=f>>>0>(w=f+w|0)>>>0?_+1|0:_,U=p=d-(y=-2097152&p)|0,t=f=n-((y>>>0>d>>>0)+S|0)|0,n=GA(Y,x,136657,0),y=h+_|0,y=n>>>0>(w=n+w|0)>>>0?y+1|0:y,n=GA(p,f,-683901,-1),_=h+y|0,f=_=n>>>0>(b=n+w|0)>>>0?_+1|0:_,K=y=_-((b>>>0<4293918720)-1|0)|0,_=(2097151&y)<<11|(p=b- -1048576|0)>>>21,y=(y>>21)+s|0,u=_=(y=_>>>0>(w=_+u|0)>>>0?y+1|0:y)-((w>>>0<4293918720)-1|0)|0,d=(2097151&_)<<11|(s=w- -1048576|0)>>>21,_=(_>>21)+X|0,O=S=d+T|0,S=d>>>0>S>>>0?_+1|0:_,V=w-(_=-2097152&s)|0,Z=y-((_>>>0>w>>>0)+u|0)|0,T=b-(y=-2097152&p)|0,X=f-((y>>>0>b>>>0)+K|0)|0,f=GA(q,G,666643,0),y=(_=i[A+14|0])>>>24|0,s=_<<8|(u=i[A+10|0]|i[A+11|0]<<8|i[A+12|0]<<16|i[A+13|0]<<24)>>>24,n=y,_=(y=i[A+15|0])>>>16|0,_|=n,n=h,n=(y=2097151&((1&_)<<31|(y=y<<16|s)>>>1))>>>0>(_=y+f|0)>>>0?n+1|0:n,s=(y=_)+(_=GA(m,P,470296,0))|0,y=h+n|0,y=_>>>0>s>>>0?y+1|0:y,_=GA(R,r,654183,0),y=h+y|0,y=_>>>0>(n=_+s|0)>>>0?y+1|0:y,s=(_=n)+(n=GA(Y,x,-997805,-1))|0,_=h+y|0,_=n>>>0>s>>>0?_+1|0:_,y=GA(U,t,136657,0),_=h+_|0,b=n=y+s|0,s=y>>>0>n>>>0?_+1|0:_,D=k-(y=-2097152&D)|0,f=l-((y>>>0>k>>>0)+E|0)|0,n=GA(I,0,136657,0),y=h,y=(_=(i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24)>>>7&2097151)>>>0>(n=_+n|0)>>>0?y+1|0:y,p=(_=n)+(n=GA(L,0,-997805,-1))|0,_=h+y|0,_=n>>>0>p>>>0?_+1|0:_,y=GA(e,z,-683901,-1),_=h+_|0,_=y>>>0>(n=y+p|0)>>>0?_+1|0:_,p=(y=GA(g,0,666643,0))+n|0,n=h+_|0,n=y>>>0>p>>>0?n+1|0:n,_=GA(B,0,470296,0),y=h+n|0,y=_>>>0>(p=_+p|0)>>>0?y+1|0:y,_=GA(a,j,654183,0),y=h+y|0,_=(J>>21)+(_>>>0>(n=_+p|0)>>>0?y+1|0:y)|0,d=_=(p=(2097151&J)<<11|F>>>21)>>>0>(F=p+n|0)>>>0?_+1|0:_,J=y=_-((F>>>0<4293918720)-1|0)|0,p=(2097151&y)<<11|(w=F- -1048576|0)>>>21,y=(y>>21)+f|0,H=y=(_=p+D|0)>>>0<p>>>0?y+1|0:y,K=_,_=GA(_,y,-683901,-1),y=h+s|0,p=n=_+b|0,s=_>>>0>n>>>0?y+1|0:y,y=GA(m,P,666643,0),_=h,_=y>>>0>(n=y+(u>>>4&2097151)|0)>>>0?_+1|0:_,y=GA(R,r,470296,0),_=h+_|0,_=y>>>0>(n=y+n|0)>>>0?_+1|0:_,f=(y=GA(Y,x,654183,0))+n|0,n=h+_|0,n=y>>>0>f>>>0?n+1|0:n,_=GA(U,t,-997805,-1),y=h+n|0,y=_>>>0>(f=_+f|0)>>>0?y+1|0:y,_=GA(K,H,136657,0),y=h+y|0,l=y=_>>>0>(k=_+f|0)>>>0?y+1|0:y,P=_=y-((k>>>0<4293918720)-1|0)|0,y=p,p=(2097151&_)<<11|(D=k- -1048576|0)>>>21,_=(_>>21)+s|0,m=s=(_=(n=y+p|0)>>>0<p>>>0?_+1|0:_)-((n>>>0<4293918720)-1|0)|0,y=(y=s>>21)+X|0,q=p=(s=(2097151&s)<<11|(f=n- -1048576|0)>>>21)+T|0,b=s>>>0>p>>>0?y+1|0:y,p=n,n=_,s=(F-(_=-2097152&w)|0)+(w=(2097151&M)<<11|v>>>21)|0,_=(d-((_>>>0>F>>>0)+J|0)|0)+(M>>21)|0,u=_=s>>>0<w>>>0?_+1|0:_,L=_=_-((s>>>0<4293918720)-1|0)|0,v=y=_>>21,y=GA(G=(2097151&_)<<11|(J=s- -1048576|0)>>>21,y,-683901,-1),n=h+n|0,n=y>>>0>(_=y+p|0)>>>0?n+1|0:n,z=_-(y=-2097152&f)|0,j=n-((y>>>0>_>>>0)+m|0)|0,y=GA(G,v,136657,0),_=l+h|0,m=(n=y+k|0)-(y=-2097152&D)|0,F=(_=n>>>0<k>>>0?_+1|0:_)-((y>>>0>n>>>0)+P|0)|0,_=GA(R,r,666643,0),n=h,n=(y=(i[A+7|0]|i[A+8|0]<<8|i[A+9|0]<<16|i[A+10|0]<<24)>>>7&2097151)>>>0>(_=y+_|0)>>>0?n+1|0:n,p=(y=GA(Y,x,470296,0))+_|0,_=h+n|0,_=y>>>0>p>>>0?_+1|0:_,y=GA(U,t,654183,0),_=h+_|0,_=y>>>0>(n=y+p|0)>>>0?_+1|0:_,p=(y=n)+(n=GA(K,H,-997805,-1))|0,y=h+_|0,w=p,p=n>>>0>p>>>0?y+1|0:y,l=GA(Y,x,666643,0),y=(_=i[A+6|0])>>>24|0,f=_<<8|(P=i[A+2|0]|i[A+3|0]<<8|i[A+4|0]<<16|i[A+5|0]<<24)>>>24,n=y,_=(y=i[A+7|0])>>>16|0,_=2097151&((3&(_|=n))<<30|(y=y<<16|f)>>>2),y=h,y=_>>>0>(n=_+l|0)>>>0?y+1|0:y,f=(_=GA(U,t,470296,0))+n|0,n=h+y|0,n=_>>>0>f>>>0?n+1|0:n,_=GA(K,H,654183,0),y=h+n|0,l=y=_>>>0>(d=_+f|0)>>>0?y+1|0:y,M=y=y-((d>>>0<4293918720)-1|0)|0,_=(n=y>>21)+p|0,k=y=(_=(y=(2097151&y)<<11|(D=d- -1048576|0)>>>21)>>>0>(f=y+w|0)>>>0?_+1|0:_)-((f>>>0<4293918720)-1|0)|0,w=(2097151&y)<<11|(p=f- -1048576|0)>>>21,y=(y>>21)+F|0,m=Y=w+m|0,w=w>>>0>Y>>>0?y+1|0:y,y=GA(G,v,-997805,-1),_=h+_|0,_=y>>>0>(n=y+f|0)>>>0?_+1|0:_,R=n-(y=-2097152&p)|0,x=_-((y>>>0>n>>>0)+k|0)|0,_=GA(G,v,654183,0),y=l+h|0,Y=(n=_+d|0)-(_=-2097152&D)|0,F=(y=n>>>0<d>>>0?y+1|0:y)-((_>>>0>n>>>0)+M|0)|0,y=GA(U,t,666643,0),_=h,_=y>>>0>(n=y+(P>>>5&2097151)|0)>>>0?_+1|0:_,y=GA(K,H,470296,0),_=h+_|0,f=n=y+n|0,n=y>>>0>n>>>0?_+1|0:_,p=GA(K,H,666643,0),_=(y=i[A+2|0])<<16&2031616|i[0|A]|i[A+1|0]<<8,y=h,l=y=_>>>0>(k=p+_|0)>>>0?y+1|0:y,H=y=y-((k>>>0<4293918720)-1|0)|0,p=(2097151&y)<<11|(D=k- -1048576|0)>>>21,y=(y>>21)+n|0,n=y=p>>>0>(d=p+f|0)>>>0?y+1|0:y,M=y=y-((d>>>0<4293918720)-1|0)|0,p=(2097151&y)<<11|(f=d- -1048576|0)>>>21,y=(y>>21)+F|0,p=p>>>0>(K=p+Y|0)>>>0?y+1|0:y,y=GA(G,v,470296,0),n=n+h|0,n=(_=y+d|0)>>>0<d>>>0?n+1|0:n,d=_-(y=-2097152&f)|0,f=n-((y>>>0>_>>>0)+M|0)|0,_=GA(G,v,666643,0),y=h+(l-(((n=-2097152&D)>>>0>k>>>0)+H|0)|0)|0,_=(n=(y=_>>>0>(F=_+(k-n|0)|0)>>>0?y+1|0:y)>>21)+f|0,y=(y=(_=(y=(2097151&y)<<11|F>>>21)>>>0>(M=y+d|0)>>>0?_+1|0:_)>>21)+p|0,_=(_=(y=(_=(2097151&_)<<11|M>>>21)>>>0>(v=_+K|0)>>>0?y+1|0:y)>>21)+x|0,n=(y=(_=(y=(2097151&y)<<11|v>>>21)>>>0>(p=y+R|0)>>>0?_+1|0:_)>>21)+w|0,y=(_=(n=(_=(2097151&_)<<11|p>>>21)>>>0>(k=_+m|0)>>>0?n+1|0:n)>>21)+j|0,_=(n=(y=(n=(2097151&n)<<11|k>>>21)>>>0>(d=n+z|0)>>>0?y+1|0:y)>>21)+b|0,b=f=(y=(2097151&y)<<11|d>>>21)+q|0,y=(y=(_=y>>>0>f>>>0?_+1|0:_)>>21)+Z|0,_=(_=(y=(_=(2097151&_)<<11|f>>>21)>>>0>(w=_+V|0)>>>0?y+1|0:y)>>21)+S|0,n=(y=(_=(y=(2097151&y)<<11|w>>>21)>>>0>(l=y+O|0)>>>0?_+1|0:_)>>21)+c|0,y=(_=(n=(_=(2097151&_)<<11|l>>>21)>>>0>(D=_+o|0)>>>0?n+1|0:n)>>21)+N|0,J=(S=s-(_=-2097152&J)|0)+((2097151&(y=(n=(2097151&n)<<11|D>>>21)>>>0>(f=n+Q|0)>>>0?y+1|0:y))<<11|f>>>21)|0,y=(u-((_>>>0>s>>>0)+L|0)|0)+(y>>21)|0,u=_=(y=S>>>0>J>>>0?y+1|0:y)>>21,F=(y=GA(N=(2097151&y)<<11|J>>>21,_,666643,0))+(_=2097151&F)|0,y=h,s=y=_>>>0>F>>>0?y+1|0:y,C[0|A]=F,C[A+1|0]=(255&y)<<24|F>>>8,y=2097151&M,_=GA(N,u,470296,0)+y|0,n=h,y=(s>>21)+(y>>>0>_>>>0?n+1|0:n)|0,y=(S=(2097151&s)<<11|F>>>21)>>>0>(M=S+_|0)>>>0?y+1|0:y,C[A+4|0]=(2047&y)<<21|M>>>11,_=y,n=M,C[A+3|0]=(7&y)<<29|n>>>3,C[A+2|0]=31&((65535&s)<<16|F>>>16)|n<<5,s=2097151&v,v=GA(N,u,654183,0)+s|0,y=h,M=(2097151&_)<<11|n>>>21,_=(_>>21)+(s=s>>>0>v>>>0?y+1|0:y)|0,y=_=(v=M+v|0)>>>0<M>>>0?_+1|0:_,C[A+6|0]=(63&y)<<26|v>>>6,s=v,v=0,C[A+5|0]=v<<13|(1572864&n)>>>19|s<<2,n=2097151&p,p=GA(N,u,-997805,-1)+n|0,_=h,_=n>>>0>p>>>0?_+1|0:_,v=(2097151&(n=y))<<11|s>>>21,n=(y>>=21)+_|0,n=(p=v+p|0)>>>0<v>>>0?n+1|0:n,C[A+9|0]=(511&n)<<23|p>>>9,C[A+8|0]=(1&n)<<31|p>>>1,_=0,C[A+7|0]=_<<18|(2080768&s)>>>14|p<<7,_=2097151&k,s=GA(N,u,136657,0)+_|0,y=h,y=_>>>0>s>>>0?y+1|0:y,k=(2097151&(_=n))<<11|p>>>21,_=y+(n=_>>21)|0,_=(s=k+s|0)>>>0<k>>>0?_+1|0:_,C[A+12|0]=(4095&_)<<20|s>>>12,n=s,C[A+11|0]=(15&_)<<28|n>>>4,s=0,C[A+10|0]=s<<15|(1966080&p)>>>17|n<<4,s=2097151&d,p=GA(N,u,-683901,-1)+s|0,y=h,y=s>>>0>p>>>0?y+1|0:y,s=_,_=y+(_>>=21)|0,_=(s=(Y=p)+(p=(2097151&s)<<11|n>>>21)|0)>>>0<p>>>0?_+1|0:_,C[A+14|0]=(127&_)<<25|s>>>7,p=0,C[A+13|0]=p<<12|(1048576&n)>>>20|s<<1,y=_>>21,n=(_=(2097151&_)<<11|s>>>21)>>>0>(p=_+(2097151&b)|0)>>>0?y+1|0:y,C[A+17|0]=(1023&n)<<22|p>>>10,C[A+16|0]=(3&n)<<30|p>>>2,_=0,C[A+15|0]=_<<17|(2064384&s)>>>15|p<<6,y=n>>21,y=(_=(2097151&n)<<11|p>>>21)>>>0>(n=_+(2097151&w)|0)>>>0?y+1|0:y,C[A+20|0]=(8191&y)<<19|n>>>13,C[A+19|0]=(31&y)<<27|n>>>5,s=(_=2097151&l)+(l=(2097151&y)<<11|n>>>21)|0,_=y>>21,_=s>>>0<l>>>0?_+1|0:_,l=s,C[A+21|0]=s,w=0,C[A+18|0]=w<<14|(1835008&p)>>>18|n<<3,C[A+22|0]=(255&_)<<24|s>>>8,n=_>>21,n=(s=(p=(2097151&_)<<11|s>>>21)+(2097151&D)|0)>>>0<p>>>0?n+1|0:n,C[A+25|0]=(2047&n)<<21|s>>>11,C[A+24|0]=(7&n)<<29|s>>>3,C[A+23|0]=31&((65535&_)<<16|l>>>16)|s<<5,y=n>>21,y=(_=(2097151&n)<<11|s>>>21)>>>0>(n=_+(2097151&f)|0)>>>0?y+1|0:y,C[A+27|0]=(63&y)<<26|n>>>6,p=0,C[A+26|0]=p<<13|(1572864&s)>>>19|n<<2,_=y,y>>=21,_=(s=(f=(2097151&_)<<11|n>>>21)+(p=2097151&J)|0)>>>0<p>>>0?y+1|0:y,C[A+31|0]=(131071&_)<<15|s>>>17,y=s,C[A+30|0]=(511&_)<<23|y>>>9,s=0,C[A+28|0]=s<<18|(2080768&n)>>>14|y<<7,C[A+29|0]=f+J>>>1}function w(A,g,I,e,B,r){var Q,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,w=0,k=0,l=0,u=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,U=0,x=0,m=0,P=0,R=0,T=0,q=0,z=0,V=0,Z=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0;for(n=Q=n-592|0,S=-1,k=A+32|0,w=32,l=1;b=i[2656+(_=w-1|0)|0],E|=(_=((c=i[_+k|0])^b)-1>>8&l)&(h=i[k+(w=w-2|0)|0])-(y=i[w+2656|0])>>8|c-b>>8&l,l=_&(y^h)-1>>8,w;);if(255&E&&!(uA(A)|!(~((127&~i[B+31|0]|i[B+1|0]&i[B+2|0]&i[B+3|0]&i[B+4|0]&i[B+5|0]&i[B+6|0]&i[B+7|0]&i[B+8|0]&i[B+9|0]&i[B+10|0]&i[B+11|0]&i[B+12|0]&i[B+13|0]&i[B+14|0]&i[B+15|0]&i[B+16|0]&i[B+17|0]&i[B+18|0]&i[B+19|0]&i[B+20|0]&i[B+21|0]&i[B+22|0]&i[B+23|0]&i[B+24|0]&i[B+25|0]&i[B+26|0]&i[B+27|0]&i[B+28|0]&i[B+30|0]&i[B+29|0]^255)-1&236-i[0|B])>>>8&1)||uA(B)||L(_=Q+128|0,B))){for(dA(c=Q+384|0),r&&W(c,35120,34,0),W(c,A,32,0),W(c,B,32,0),W(c,g,I,e),J(c,I=Q+320|0),D(I),e=Q+8|0,B=0,g=0,n=o=n-2272|0;r=o+2016|0,c=i[I+(B>>>3|0)|0],C[r+B|0]=c>>>(6&B)&1,C[(E=r)+(r=1|B)|0]=c>>>(7&r)&1,256!=(0|(B=B+2|0)););for(;;){g=(I=g)+1|0;A:if(!(I>>>0>254)&&i[0|(E=(B=o+2016|0)+I|0)]){g:if(B=C[0|(y=g+B|0)])if((0|(B=(c=B<<1)+(r=C[0|E])|0))<=15)C[0|E]=B,C[0|y]=0;else{if((0|(B=r-c|0))<-15)break A;for(C[0|E]=B,B=g;;){if(!i[0|(r=(o+2016|0)+B|0)]){C[0|r]=1;break g}if(C[0|r]=0,r=B>>>0<255,B=B+1|0,!r)break}}if(!(I>>>0>253)){g:if(r=C[0|(h=(B=I+2|0)+(o+2016|0)|0)])if((0|(r=(y=r<<2)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(253!=(0|I)){g:if(r=C[0|(h=(B=I+3|0)+(o+2016|0)|0)])if((0|(r=(y=r<<3)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>251)){g:if(r=C[0|(h=(B=I+4|0)+(o+2016|0)|0)])if((0|(r=(y=r<<4)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(251!=(0|I)){g:if(r=C[0|(h=(B=I+5|0)+(o+2016|0)|0)])if((0|(r=(y=r<<5)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+2016|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>249)&&(I=C[0|(y=(B=I+6|0)+(o+2016|0)|0)]))if((0|(I=(c=I<<6)+(r=C[0|E])|0))>=16){if((0|(I=r-c|0))<-15)break A;for(C[0|E]=I;;){if(i[0|(I=(o+2016|0)+B|0)]){if(C[0|I]=0,I=B>>>0<255,B=B+1|0,I)continue;break A}break}C[0|I]=1}else C[0|E]=I,C[0|y]=0}}}}}if(256==(0|g))break}for(B=0;g=o+1760|0,I=i[k+(B>>>3|0)|0],C[g+B|0]=I>>>(6&B)&1,C[(r=g)+(g=1|B)|0]=I>>>(7&g)&1,256!=(0|(B=B+2|0)););for(g=0;;){g=(I=g)+1|0;A:if(!(I>>>0>254)&&i[0|(E=(B=o+1760|0)+I|0)]){g:if(B=C[0|(y=g+B|0)])if((0|(B=(c=B<<1)+(r=C[0|E])|0))<=15)C[0|E]=B,C[0|y]=0;else{if((0|(B=r-c|0))<-15)break A;for(C[0|E]=B,B=g;;){if(!i[0|(r=(o+1760|0)+B|0)]){C[0|r]=1;break g}if(C[0|r]=0,r=B>>>0<255,B=B+1|0,!r)break}}if(!(I>>>0>253)){g:if(r=C[0|(h=(B=I+2|0)+(o+1760|0)|0)])if((0|(r=(y=r<<2)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(253!=(0|I)){g:if(r=C[0|(h=(B=I+3|0)+(o+1760|0)|0)])if((0|(r=(y=r<<3)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>251)){g:if(r=C[0|(h=(B=I+4|0)+(o+1760|0)|0)])if((0|(r=(y=r<<4)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(251!=(0|I)){g:if(r=C[0|(h=(B=I+5|0)+(o+1760|0)|0)])if((0|(r=(y=r<<5)+(c=C[0|E])|0))>=16){if((0|(r=c-y|0))<-15)break A;for(C[0|E]=r;;){if(i[0|(r=(o+1760|0)+B|0)]){if(C[0|r]=0,r=B>>>0<255,B=B+1|0,r)continue;break g}break}C[0|r]=1}else C[0|E]=r,C[0|h]=0;if(!(I>>>0>249)&&(I=C[0|(y=(B=I+6|0)+(o+1760|0)|0)]))if((0|(I=(c=I<<6)+(r=C[0|E])|0))>=16){if((0|(I=r-c|0))<-15)break A;for(C[0|E]=I;;){if(i[0|(I=(o+1760|0)+B|0)]){if(C[0|I]=0,I=B>>>0<255,B=B+1|0,I)continue;break A}break}C[0|I]=1}else C[0|E]=I,C[0|y]=0}}}}}if(256==(0|g))break}for(QA(B=o+480|0,_),g=a[_+36>>2],a[o+192>>2]=a[_+32>>2],a[o+196>>2]=g,g=a[_+28>>2],a[o+184>>2]=a[_+24>>2],a[o+188>>2]=g,g=a[_+20>>2],a[o+176>>2]=a[_+16>>2],a[o+180>>2]=g,g=a[_+12>>2],a[o+168>>2]=a[_+8>>2],a[o+172>>2]=g,g=a[_+4>>2],a[o+160>>2]=a[_>>2],a[o+164>>2]=g,g=a[_+52>>2],a[o+208>>2]=a[_+48>>2],a[o+212>>2]=g,g=a[_+60>>2],a[o+216>>2]=a[_+56>>2],a[o+220>>2]=g,g=a[4+(I=_- -64|0)>>2],a[o+224>>2]=a[I>>2],a[o+228>>2]=g,g=a[_+76>>2],a[o+232>>2]=a[_+72>>2],a[o+236>>2]=g,g=a[_+44>>2],a[o+200>>2]=a[_+40>>2],a[o+204>>2]=g,g=a[_+92>>2],a[o+248>>2]=a[_+88>>2],a[o+252>>2]=g,g=a[_+100>>2],a[o+256>>2]=a[_+96>>2],a[o+260>>2]=g,g=a[_+108>>2],a[o+264>>2]=a[_+104>>2],a[o+268>>2]=g,g=a[_+116>>2],a[o+272>>2]=a[_+112>>2],a[o+276>>2]=g,g=a[_+84>>2],a[o+240>>2]=a[_+80>>2],a[o+244>>2]=g,v(r=o+320|0,I=o+160|0),d(o,r,s=o+440|0),d(o+40|0,p=o+360|0,f=o+400|0),d(o+80|0,f,s),d(o+120|0,r,p),j(r,o,B),d(I,r,s),d(M=o+200|0,p,f),d(F=o+240|0,f,s),d(u=o+280|0,r,p),QA(g=o+640|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+800|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+960|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+1120|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+1280|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(g=o+1440|0,I),j(r,o,g),d(I,r,s),d(M,p,f),d(F,f,s),d(u,r,p),QA(o+1600|0,I),a[e+32>>2]=0,a[e+36>>2]=0,a[e+24>>2]=0,a[e+28>>2]=0,a[e+16>>2]=0,a[e+20>>2]=0,a[e+8>>2]=0,a[e+12>>2]=0,a[e>>2]=0,a[e+4>>2]=0,a[e+44>>2]=0,a[e+48>>2]=0,a[e+40>>2]=1,a[e+52>>2]=0,a[e+56>>2]=0,a[e+60>>2]=0,a[e+64>>2]=0,a[e+68>>2]=0,a[e+72>>2]=0,a[e+84>>2]=0,a[e+88>>2]=0,a[e+76>>2]=0,a[e+80>>2]=1,a[e+92>>2]=0,a[e+96>>2]=0,a[e+100>>2]=0,a[e+104>>2]=0,a[e+108>>2]=0,a[e+112>>2]=0,a[e+116>>2]=0,$=e+80|0,AA=e+40|0,g=255;;){A:{g:{if(!i[(I=o+2016|0)+g|0]&&!i[(B=o+1760|0)+g|0]){if(!(i[(r=I)+(I=g-1|0)|0]|i[I+B|0]))break g;g=I}if((0|g)<0)break A;for(;v(B=o+320|0,e),(0|(r=C[(I=g)+(o+2016|0)|0]))>0?(d(g=o+160|0,B,s),d(M,p,f),d(F,f,s),d(u,B,p),j(B,g,(o+480|0)+t((254&r)>>>1|0,160)|0)):(0|r)>=0||(d(g=o+160|0,B=o+320|0,s),d(M,p,f),d(F,f,s),d(u,B,p),X(B,g,(o+480|0)+t((0-r&254)>>>1|0,160)|0)),(0|(m=C[I+(o+1760|0)|0]))>0?(d(g=o+160|0,B=o+320|0,s),d(M,p,f),d(F,f,s),d(u,B,p),O(B,g,t((254&m)>>>1|0,120)+1472|0)):(0|m)>=0||(d(o+160|0,P=o+320|0,s),d(M,p,f),d(F,f,s),d(u,P,p),N=a[o+160>>2],K=a[o+200>>2],Y=a[o+164>>2],H=a[o+204>>2],G=a[o+168>>2],U=a[o+208>>2],x=a[o+172>>2],w=a[o+212>>2],k=a[o+176>>2],l=a[o+216>>2],S=a[o+180>>2],b=a[o+220>>2],E=a[o+184>>2],h=a[o+224>>2],y=a[o+188>>2],c=a[o+228>>2],_=a[o+192>>2],r=a[o+232>>2],B=a[o+236>>2],g=a[o+196>>2],a[o+396>>2]=B-g,a[o+392>>2]=r-_,a[o+388>>2]=c-y,a[o+384>>2]=h-E,a[o+380>>2]=b-S,a[o+376>>2]=l-k,a[o+372>>2]=w-x,a[o+368>>2]=U-G,a[o+364>>2]=H-Y,a[o+360>>2]=K-N,a[o+356>>2]=g+B,a[o+352>>2]=r+_,a[o+348>>2]=c+y,a[o+344>>2]=E+h,a[o+340>>2]=S+b,a[o+336>>2]=k+l,a[o+332>>2]=w+x,a[o+328>>2]=G+U,a[o+324>>2]=Y+H,a[o+320>>2]=N+K,d(f,P,40+(g=t((0-m&254)>>>1|0,120)+1472|0)|0),d(p,p,g),d(s,g+80|0,u),gA=a[o+276>>2],IA=a[o+272>>2],m=a[o+268>>2],P=a[o+264>>2],E=a[o+260>>2],h=a[o+256>>2],y=a[o+252>>2],c=a[o+248>>2],_=a[o+244>>2],r=a[o+240>>2],R=a[o+360>>2],T=a[o+400>>2],q=a[o+364>>2],z=a[o+404>>2],V=a[o+368>>2],Z=a[o+408>>2],N=a[o+372>>2],K=a[o+412>>2],Y=a[o+376>>2],H=a[o+416>>2],G=a[o+380>>2],U=a[o+420>>2],x=a[o+384>>2],w=a[o+424>>2],k=a[o+388>>2],l=a[o+428>>2],S=a[o+392>>2],b=a[o+432>>2],B=a[o+396>>2],g=a[o+436>>2],a[o+396>>2]=B+g,a[o+392>>2]=S+b,a[o+388>>2]=k+l,a[o+384>>2]=w+x,a[o+380>>2]=G+U,a[o+376>>2]=Y+H,a[o+372>>2]=N+K,a[o+368>>2]=V+Z,a[o+364>>2]=q+z,a[o+360>>2]=R+T,a[o+356>>2]=g-B,a[o+352>>2]=b-S,a[o+348>>2]=l-k,a[o+344>>2]=w-x,a[o+340>>2]=U-G,a[o+336>>2]=H-Y,a[o+332>>2]=K-N,a[o+328>>2]=Z-V,a[o+324>>2]=z-q,a[o+320>>2]=T-R,N=r<<1,K=a[o+440>>2],a[o+400>>2]=N-K,Y=_<<1,H=a[o+444>>2],a[o+404>>2]=Y-H,G=c<<1,U=a[o+448>>2],a[o+408>>2]=G-U,x=y<<1,w=a[o+452>>2],a[o+412>>2]=x-w,k=h<<1,l=a[o+456>>2],a[o+416>>2]=k-l,S=E<<1,b=a[o+460>>2],a[o+420>>2]=S-b,E=P<<1,h=a[o+464>>2],a[o+424>>2]=E-h,y=m<<1,c=a[o+468>>2],a[o+428>>2]=y-c,_=IA<<1,r=a[o+472>>2],a[o+432>>2]=_-r,B=gA<<1,g=a[o+476>>2],a[o+436>>2]=B-g,a[o+440>>2]=N+K,a[o+444>>2]=Y+H,a[o+448>>2]=G+U,a[o+452>>2]=w+x,a[o+456>>2]=k+l,a[o+460>>2]=S+b,a[o+464>>2]=E+h,a[o+468>>2]=c+y,a[o+472>>2]=r+_,a[o+476>>2]=g+B),d(e,o+320|0,s),d(AA,p,f),d($,f,s),g=I-1|0,(0|I)>0;);break A}if(g=g-2|0,I)continue}break}n=o+2272|0,RA(g=Q+288|0,e),CA=-1,eA=KA(g,A),S=((0|A)==(0|g)?CA:eA)|lA(A,g,32)}return n=Q+592|0,S}function k(A,g,I){var C,e,B,r,t,Q,o,c,E,y,_,h,s,p,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0;for(n=C=n-800|0,k=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,l=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,v=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,S=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,D=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,b=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,M=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,B=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,r=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,t=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,Q=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,o=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,c=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,E=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,w=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=I- -64|0,y=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[g>>2]=33620224^y,a[I+56>>2]=1496785429,a[I+60>>2]=1652156816,a[(A=I+48|0)>>2]=33620224,a[A+4>>2]=218629379,a[I+40>>2]=1110511904,a[I+44>>2]=-584534669,a[(e=I+32|0)>>2]=1427652059,a[e+4>>2]=-248528275,_=w^y,a[I>>2]=_,a[I+92>>2]=-584534669^E,a[I+88>>2]=1110511904^c,a[I+84>>2]=-248528275^o,a[(w=I+80|0)>>2]=1427652059^Q,a[I+76>>2]=1652156816^t,a[I+72>>2]=1496785429^r,a[I+68>>2]=218629379^B,M^=E,a[I+28>>2]=M,b^=c,a[I+24>>2]=b,h=D^o,a[I+20>>2]=h,S^=Q,a[(D=I+16|0)>>2]=S,v^=t,a[I+12>>2]=v,s=l^r,a[I+8>>2]=s,p=k^B,a[I+4>>2]=p,l=0;k=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=k,k=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=k,k=a[g+12>>2],a[C+760>>2]=a[g+8>>2],a[C+764>>2]=k,k=a[g+4>>2],a[C+752>>2]=a[g>>2],a[C+756>>2]=k,k=a[w+12>>2],a[C+744>>2]=a[w+8>>2],a[C+748>>2]=k,k=a[w+4>>2],a[C+736>>2]=a[w>>2],a[C+740>>2]=k,oA(k=C+768|0,C+752|0,C+736|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+728>>2]=a[A+8>>2],a[C+732>>2]=f,f=a[A+4>>2],a[C+720>>2]=a[A>>2],a[C+724>>2]=f,f=a[g+12>>2],a[C+712>>2]=a[g+8>>2],a[C+716>>2]=f,f=a[g+4>>2],a[C+704>>2]=a[g>>2],a[C+708>>2]=f,oA(k,C+720|0,C+704|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+696>>2]=a[e+8>>2],a[C+700>>2]=f,f=a[e+4>>2],a[C+688>>2]=a[e>>2],a[C+692>>2]=f,f=a[A+12>>2],a[C+680>>2]=a[A+8>>2],a[C+684>>2]=f,f=a[A+4>>2],a[C+672>>2]=a[A>>2],a[C+676>>2]=f,oA(k,C+688|0,C+672|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+664>>2]=a[D+8>>2],a[C+668>>2]=f,f=a[D+4>>2],a[C+656>>2]=a[D>>2],a[C+660>>2]=f,f=a[e+12>>2],a[C+648>>2]=a[e+8>>2],a[C+652>>2]=f,f=a[e+4>>2],a[C+640>>2]=a[e>>2],a[C+644>>2]=f,oA(k,C+656|0,C+640|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+632>>2]=a[I+8>>2],a[C+636>>2]=f,f=a[I+4>>2],a[C+624>>2]=a[I>>2],a[C+628>>2]=f,f=a[D+12>>2],a[C+616>>2]=a[D+8>>2],a[C+620>>2]=f,f=a[D+4>>2],a[C+608>>2]=a[D>>2],a[C+612>>2]=f,oA(k,C+624|0,C+608|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+600>>2]=a[C+792>>2],a[C+604>>2]=f,f=a[C+788>>2],a[C+592>>2]=a[C+784>>2],a[C+596>>2]=f,f=a[I+12>>2],a[C+584>>2]=a[I+8>>2],a[C+588>>2]=f,f=a[I+4>>2],a[C+576>>2]=a[I>>2],a[C+580>>2]=f,oA(k,C+592|0,C+576|0),f=a[C+768>>2],d=a[C+772>>2],u=a[C+776>>2],a[I+12>>2]=a[C+780>>2]^t,a[I+8>>2]=u^r,a[I+4>>2]=d^B,a[I>>2]=f^y,f=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=f,f=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=f,f=a[g+12>>2],a[C+568>>2]=a[g+8>>2],a[C+572>>2]=f,f=a[g+4>>2],a[C+560>>2]=a[g>>2],a[C+564>>2]=f,f=a[w+12>>2],a[C+552>>2]=a[w+8>>2],a[C+556>>2]=f,f=a[w+4>>2],a[C+544>>2]=a[w>>2],a[C+548>>2]=f,oA(k,C+560|0,C+544|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+536>>2]=a[A+8>>2],a[C+540>>2]=f,f=a[A+4>>2],a[C+528>>2]=a[A>>2],a[C+532>>2]=f,f=a[g+12>>2],a[C+520>>2]=a[g+8>>2],a[C+524>>2]=f,f=a[g+4>>2],a[C+512>>2]=a[g>>2],a[C+516>>2]=f,oA(k,C+528|0,C+512|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+504>>2]=a[e+8>>2],a[C+508>>2]=f,f=a[e+4>>2],a[C+496>>2]=a[e>>2],a[C+500>>2]=f,f=a[A+12>>2],a[C+488>>2]=a[A+8>>2],a[C+492>>2]=f,f=a[A+4>>2],a[C+480>>2]=a[A>>2],a[C+484>>2]=f,oA(k,C+496|0,C+480|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+472>>2]=a[D+8>>2],a[C+476>>2]=f,f=a[D+4>>2],a[C+464>>2]=a[D>>2],a[C+468>>2]=f,f=a[e+12>>2],a[C+456>>2]=a[e+8>>2],a[C+460>>2]=f,f=a[e+4>>2],a[C+448>>2]=a[e>>2],a[C+452>>2]=f,oA(k,C+464|0,C+448|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+440>>2]=a[I+8>>2],a[C+444>>2]=f,f=a[I+4>>2],a[C+432>>2]=a[I>>2],a[C+436>>2]=f,f=a[D+12>>2],a[C+424>>2]=a[D+8>>2],a[C+428>>2]=f,f=a[D+4>>2],a[C+416>>2]=a[D>>2],a[C+420>>2]=f,oA(k,C+432|0,C+416|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+408>>2]=a[C+792>>2],a[C+412>>2]=f,f=a[C+788>>2],a[C+400>>2]=a[C+784>>2],a[C+404>>2]=f,f=a[I+12>>2],a[C+392>>2]=a[I+8>>2],a[C+396>>2]=f,f=a[I+4>>2],a[C+384>>2]=a[I>>2],a[C+388>>2]=f,oA(k,C+400|0,C+384|0),f=a[C+768>>2],d=a[C+772>>2],u=a[C+776>>2],a[I+12>>2]=a[C+780>>2]^E,a[I+8>>2]=u^c,a[I+4>>2]=d^o,a[I>>2]=f^Q,f=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=f,f=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=f,f=a[g+12>>2],a[C+376>>2]=a[g+8>>2],a[C+380>>2]=f,f=a[g+4>>2],a[C+368>>2]=a[g>>2],a[C+372>>2]=f,f=a[w+12>>2],a[C+360>>2]=a[w+8>>2],a[C+364>>2]=f,f=a[w+4>>2],a[C+352>>2]=a[w>>2],a[C+356>>2]=f,oA(k,C+368|0,C+352|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+344>>2]=a[A+8>>2],a[C+348>>2]=f,f=a[A+4>>2],a[C+336>>2]=a[A>>2],a[C+340>>2]=f,f=a[g+12>>2],a[C+328>>2]=a[g+8>>2],a[C+332>>2]=f,f=a[g+4>>2],a[C+320>>2]=a[g>>2],a[C+324>>2]=f,oA(k,C+336|0,C+320|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+312>>2]=a[e+8>>2],a[C+316>>2]=f,f=a[e+4>>2],a[C+304>>2]=a[e>>2],a[C+308>>2]=f,f=a[A+12>>2],a[C+296>>2]=a[A+8>>2],a[C+300>>2]=f,f=a[A+4>>2],a[C+288>>2]=a[A>>2],a[C+292>>2]=f,oA(k,C+304|0,C+288|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+280>>2]=a[D+8>>2],a[C+284>>2]=f,f=a[D+4>>2],a[C+272>>2]=a[D>>2],a[C+276>>2]=f,f=a[e+12>>2],a[C+264>>2]=a[e+8>>2],a[C+268>>2]=f,f=a[e+4>>2],a[C+256>>2]=a[e>>2],a[C+260>>2]=f,oA(k,C+272|0,C+256|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+248>>2]=a[I+8>>2],a[C+252>>2]=f,f=a[I+4>>2],a[C+240>>2]=a[I>>2],a[C+244>>2]=f,f=a[D+12>>2],a[C+232>>2]=a[D+8>>2],a[C+236>>2]=f,f=a[D+4>>2],a[C+224>>2]=a[D>>2],a[C+228>>2]=f,oA(k,C+240|0,C+224|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+216>>2]=a[C+792>>2],a[C+220>>2]=f,f=a[C+788>>2],a[C+208>>2]=a[C+784>>2],a[C+212>>2]=f,f=a[I+12>>2],a[C+200>>2]=a[I+8>>2],a[C+204>>2]=f,f=a[I+4>>2],a[C+192>>2]=a[I>>2],a[C+196>>2]=f,oA(k,C+208|0,C+192|0),f=a[C+768>>2],d=a[C+772>>2],u=a[C+776>>2],a[I+12>>2]=v^a[C+780>>2],a[I+8>>2]=u^s,a[I+4>>2]=d^p,a[I>>2]=f^_,f=a[w+12>>2],a[C+792>>2]=a[w+8>>2],a[C+796>>2]=f,f=a[w+4>>2],a[C+784>>2]=a[w>>2],a[C+788>>2]=f,f=a[g+12>>2],a[C+184>>2]=a[g+8>>2],a[C+188>>2]=f,f=a[g+4>>2],a[C+176>>2]=a[g>>2],a[C+180>>2]=f,f=a[w+12>>2],a[C+168>>2]=a[w+8>>2],a[C+172>>2]=f,f=a[w+4>>2],a[C+160>>2]=a[w>>2],a[C+164>>2]=f,oA(k,C+176|0,C+160|0),f=a[C+780>>2],a[w+8>>2]=a[C+776>>2],a[w+12>>2]=f,f=a[C+772>>2],a[w>>2]=a[C+768>>2],a[w+4>>2]=f,f=a[A+12>>2],a[C+152>>2]=a[A+8>>2],a[C+156>>2]=f,f=a[A+4>>2],a[C+144>>2]=a[A>>2],a[C+148>>2]=f,f=a[g+12>>2],a[C+136>>2]=a[g+8>>2],a[C+140>>2]=f,f=a[g+4>>2],a[C+128>>2]=a[g>>2],a[C+132>>2]=f,oA(k,C+144|0,C+128|0),f=a[C+780>>2],a[g+8>>2]=a[C+776>>2],a[g+12>>2]=f,f=a[C+772>>2],a[g>>2]=a[C+768>>2],a[g+4>>2]=f,f=a[e+12>>2],a[C+120>>2]=a[e+8>>2],a[C+124>>2]=f,f=a[e+4>>2],a[C+112>>2]=a[e>>2],a[C+116>>2]=f,f=a[A+12>>2],a[C+104>>2]=a[A+8>>2],a[C+108>>2]=f,f=a[A+4>>2],a[C+96>>2]=a[A>>2],a[C+100>>2]=f,oA(k,C+112|0,C+96|0),f=a[C+780>>2],a[A+8>>2]=a[C+776>>2],a[A+12>>2]=f,f=a[C+772>>2],a[A>>2]=a[C+768>>2],a[A+4>>2]=f,f=a[D+12>>2],a[C+88>>2]=a[D+8>>2],a[C+92>>2]=f,f=a[D+4>>2],a[C+80>>2]=a[D>>2],a[C+84>>2]=f,f=a[e+12>>2],a[C+72>>2]=a[e+8>>2],a[C+76>>2]=f,f=a[e+4>>2],a[C+64>>2]=a[e>>2],a[C+68>>2]=f,oA(k,C+80|0,C- -64|0),f=a[C+780>>2],a[e+8>>2]=a[C+776>>2],a[e+12>>2]=f,f=a[C+772>>2],a[e>>2]=a[C+768>>2],a[e+4>>2]=f,f=a[I+12>>2],a[C+56>>2]=a[I+8>>2],a[C+60>>2]=f,f=a[I+4>>2],a[C+48>>2]=a[I>>2],a[C+52>>2]=f,f=a[D+12>>2],a[C+40>>2]=a[D+8>>2],a[C+44>>2]=f,f=a[D+4>>2],a[C+32>>2]=a[D>>2],a[C+36>>2]=f,oA(k,C+48|0,C+32|0),f=a[C+780>>2],a[D+8>>2]=a[C+776>>2],a[D+12>>2]=f,f=a[C+772>>2],a[D>>2]=a[C+768>>2],a[D+4>>2]=f,f=a[C+796>>2],a[C+24>>2]=a[C+792>>2],a[C+28>>2]=f,f=a[C+788>>2],a[C+16>>2]=a[C+784>>2],a[C+20>>2]=f,f=a[I+12>>2],a[C+8>>2]=a[I+8>>2],a[C+12>>2]=f,f=a[I+4>>2],a[C>>2]=a[I>>2],a[C+4>>2]=f,oA(k,C+16|0,C),k=a[C+768>>2],f=a[C+772>>2],d=a[C+776>>2],a[I+12>>2]=M^a[C+780>>2],a[I+8>>2]=d^b,a[I+4>>2]=f^h,a[I>>2]=k^S,4!=(0|(l=l+1|0)););n=C+800|0}function d(A,g,I){var C,e,B,i,r,Q,o,c,E,y,_,n,s,p,f,D,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J,U,x,m,P,R,L,T,q,z,j,X,O,V,Z,W,$,AA,gA,IA,CA,eA,BA=0,aA=0,iA=0,rA=0,tA=0,QA=0,oA=0,cA=0,EA=0,yA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,kA=0,dA=0,lA=0,uA=0,vA=0,SA=0,bA=0;BA=GA(C=a[I+4>>2],y=C>>31,DA=(D=a[g+20>>2])<<1,G=DA>>31),iA=h,aA=(hA=GA(pA=a[I>>2],B=pA>>31,e=a[g+24>>2],i=e>>31))+BA|0,BA=h+iA|0,BA=aA>>>0<hA>>>0?BA+1|0:BA,EA=GA(r=a[I+8>>2],s=r>>31,hA=a[g+16>>2],Q=hA>>31),iA=h+BA|0,iA=(aA=EA+aA|0)>>>0<EA>>>0?iA+1|0:iA,BA=(EA=GA(_=a[I+12>>2],w=_>>31,b=(k=a[g+12>>2])<<1,J=b>>31))+aA|0,aA=h+iA|0,aA=BA>>>0<EA>>>0?aA+1|0:aA,iA=(sA=GA(p=a[I+16>>2],M=p>>31,EA=a[g+8>>2],o=EA>>31))+BA|0,BA=h+aA|0,BA=iA>>>0<sA>>>0?BA+1|0:BA,aA=iA,iA=GA(d=a[I+20>>2],U=d>>31,F=(l=a[g+4>>2])<<1,x=F>>31),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,Z=oA=a[I+24>>2],iA=(yA=GA(oA,O=oA>>31,sA=a[g>>2],c=sA>>31))+aA|0,aA=h+BA|0,aA=iA>>>0<yA>>>0?aA+1|0:aA,m=a[I+28>>2],BA=(yA=GA(nA=t(m,19),u=nA>>31,N=(v=a[g+36>>2])<<1,P=N>>31))+iA|0,iA=h+aA|0,iA=BA>>>0<yA>>>0?iA+1|0:iA,lA=a[I+32>>2],aA=(cA=GA(rA=t(lA,19),f=rA>>31,yA=a[g+32>>2],E=yA>>31))+BA|0,BA=h+iA|0,BA=aA>>>0<cA>>>0?BA+1|0:BA,W=a[I+36>>2],I=GA(cA=t(W,19),n=cA>>31,K=(S=a[g+28>>2])<<1,R=K>>31),BA=h+BA|0,tA=g=I+aA|0,I=g>>>0<I>>>0?BA+1|0:BA,g=GA(hA,Q,C,y),BA=h,aA=GA(pA,B,D,L=D>>31),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(r,s,k,T=k>>31),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(EA,o,_,w),BA=h+aA|0,BA=(g=iA+g|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(p,M,l,q=l>>31),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(sA,c,d,U),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(oA=t(oA,19),Y=oA>>31,v,z=v>>31),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(yA,E,nA,u),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(rA,f,S,j=S>>31),BA=h+aA|0,BA=(g=iA+g|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(cA,n,e,i),BA=h+BA|0,vA=g=aA+g|0,wA=g>>>0<aA>>>0?BA+1|0:BA,g=GA(C,y,b,J),BA=h,aA=GA(pA,B,hA,Q),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(EA,o,r,s),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(_,w,F,x),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(sA,c,p,M),BA=h+aA|0,BA=(g=iA+g|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(H=t(d,19),X=H>>31,N,P),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(yA,E,oA,Y),BA=h+BA|0,BA=(g=aA+g|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(nA,u,K,R),iA=h+BA|0,iA=(g=aA+g|0)>>>0<aA>>>0?iA+1|0:iA,BA=GA(rA,f,e,i),aA=h+iA|0,aA=(g=BA+g|0)>>>0<BA>>>0?aA+1|0:aA,iA=GA(cA,n,DA,G),BA=h+aA|0,$=g=iA+g|0,AA=BA=g>>>0<iA>>>0?BA+1|0:BA,gA=g=g+33554432|0,IA=BA=g>>>0<33554432?BA+1|0:BA,iA=(67108863&BA)<<6|g>>>26,BA=(BA>>26)+wA|0,vA=g=iA+vA|0,BA=g>>>0<iA>>>0?BA+1|0:BA,CA=g=g+16777216|0,BA=I+(aA=(iA=g>>>0<16777216?BA+1|0:BA)>>25)|0,BA=(g=(iA=(33554431&iA)<<7|g>>>25)+tA|0)>>>0<iA>>>0?BA+1|0:BA,kA=I=(aA=g)+33554432|0,g=BA=I>>>0<33554432?BA+1|0:BA,a[A+24>>2]=aA-(-67108864&I),I=GA(C,y,F,x),BA=h,aA=GA(pA,B,EA,o),iA=h+BA|0,iA=(I=aA+I|0)>>>0<aA>>>0?iA+1|0:iA,aA=(BA=I)+(I=GA(sA,c,r,s))|0,BA=h+iA|0,BA=I>>>0>aA>>>0?BA+1|0:BA,iA=GA(I=t(_,19),dA=I>>31,N,P),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=(tA=GA(yA,E,wA=t(p,19),V=wA>>31))+aA|0,aA=h+BA|0,aA=iA>>>0<tA>>>0?aA+1|0:aA,tA=GA(K,R,H,X),BA=h+aA|0,BA=(iA=tA+iA|0)>>>0<tA>>>0?BA+1|0:BA,aA=(tA=GA(e,i,oA,Y))+iA|0,iA=h+BA|0,iA=aA>>>0<tA>>>0?iA+1|0:iA,tA=GA(nA,u,DA,G),BA=h+iA|0,BA=(aA=tA+aA|0)>>>0<tA>>>0?BA+1|0:BA,iA=GA(rA,f,hA,Q),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=(tA=GA(cA,n,b,J))+aA|0,aA=h+BA|0,_A=iA,SA=iA>>>0<tA>>>0?aA+1|0:aA,BA=GA(sA,c,C,y),aA=h,iA=(tA=GA(pA,B,l,q))+BA|0,BA=h+aA|0,BA=iA>>>0<tA>>>0?BA+1|0:BA,tA=aA=t(r,19),aA=(QA=GA(aA,uA=aA>>31,v,z))+iA|0,iA=h+BA|0,iA=aA>>>0<QA>>>0?iA+1|0:iA,QA=GA(yA,E,I,dA),BA=h+iA|0,BA=(aA=QA+aA|0)>>>0<QA>>>0?BA+1|0:BA,iA=GA(wA,V,S,j),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=(QA=GA(e,i,H,X))+aA|0,aA=h+BA|0,aA=iA>>>0<QA>>>0?aA+1|0:aA,QA=GA(oA,Y,D,L),BA=h+aA|0,BA=(iA=QA+iA|0)>>>0<QA>>>0?BA+1|0:BA,aA=(QA=GA(hA,Q,nA,u))+iA|0,iA=h+BA|0,iA=aA>>>0<QA>>>0?iA+1|0:iA,QA=GA(rA,f,k,T),BA=h+iA|0,BA=(aA=QA+aA|0)>>>0<QA>>>0?BA+1|0:BA,iA=GA(cA,n,EA,o),BA=h+BA|0,bA=aA=iA+aA|0,QA=aA>>>0<iA>>>0?BA+1|0:BA,BA=GA(BA=t(C,19),BA>>31,N,P),aA=h,iA=GA(pA,B,sA,c),aA=h+aA|0,aA=(BA=iA+BA|0)>>>0<iA>>>0?aA+1|0:aA,iA=(tA=GA(yA,E,tA,uA))+BA|0,BA=h+aA|0,I=(aA=GA(I,dA,K,R))+iA|0,iA=h+(iA>>>0<tA>>>0?BA+1|0:BA)|0,iA=I>>>0<aA>>>0?iA+1|0:iA,aA=GA(e,i,wA,V),BA=h+iA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(DA,G,H,X),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,iA=GA(hA,Q,oA,Y),aA=h+BA|0,aA=(I=iA+I|0)>>>0<iA>>>0?aA+1|0:aA,iA=GA(nA,u,b,J),BA=h+aA|0,BA=(I=iA+I|0)>>>0<iA>>>0?BA+1|0:BA,aA=GA(rA,f,EA,o),iA=h+BA|0,iA=(I=aA+I|0)>>>0<aA>>>0?iA+1|0:iA,aA=GA(cA,n,F,x),BA=h+iA|0,tA=I=aA+I|0,dA=BA=I>>>0<aA>>>0?BA+1|0:BA,uA=I=I+33554432|0,eA=BA=I>>>0<33554432?BA+1|0:BA,aA=(iA=BA>>26)+QA|0,QA=I=(BA=(67108863&BA)<<6|I>>>26)+bA|0,BA=I>>>0<BA>>>0?aA+1|0:aA,bA=I=I+16777216|0,aA=(33554431&(BA=I>>>0<16777216?BA+1|0:BA))<<7|I>>>25,BA=(BA>>25)+SA|0,BA=(I=aA+_A|0)>>>0<aA>>>0?BA+1|0:BA,SA=aA=(iA=I)+33554432|0,I=BA=aA>>>0<33554432?BA+1|0:BA,a[A+8>>2]=iA-(-67108864&aA),BA=GA(e,i,C,y),iA=h,aA=(_A=GA(pA,B,S,j))+BA|0,BA=h+iA|0,BA=aA>>>0<_A>>>0?BA+1|0:BA,iA=GA(r,s,D,L),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(hA,Q,_,w),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,_A=GA(p,M,k,T),iA=h+BA|0,iA=(aA=_A+aA|0)>>>0<_A>>>0?iA+1|0:iA,BA=(_A=GA(EA,o,d,U))+aA|0,aA=h+iA|0,aA=BA>>>0<_A>>>0?aA+1|0:aA,iA=(_A=GA(l,q,Z,O))+BA|0,BA=h+aA|0,BA=iA>>>0<_A>>>0?BA+1|0:BA,aA=iA,iA=GA(sA,c,m,_A=m>>31),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(rA,f,v,z),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,fA=GA(cA,n,yA,E),iA=h+BA|0,BA=g>>26,g=(kA=(67108863&g)<<6|kA>>>26)+(aA=fA+aA|0)|0,aA=BA+(aA>>>0<fA>>>0?iA+1|0:iA)|0,BA=(iA=g)>>>0<kA>>>0?aA+1|0:aA,kA=aA=iA+16777216|0,g=BA=aA>>>0<16777216?BA+1|0:BA,a[A+28>>2]=iA-(-33554432&aA),BA=GA(EA,o,C,y),aA=h,fA=GA(pA,B,k,T),iA=h+aA|0,iA=(BA=fA+BA|0)>>>0<fA>>>0?iA+1|0:iA,fA=GA(r,s,l,q),aA=h+iA|0,aA=(BA=fA+BA|0)>>>0<fA>>>0?aA+1|0:aA,iA=(fA=GA(sA,c,_,w))+BA|0,BA=h+aA|0,BA=iA>>>0<fA>>>0?BA+1|0:BA,aA=iA,iA=GA(wA,V,v,z),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(yA,E,H,X),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,aA=(oA=GA(oA,Y,S,j))+aA|0,iA=h+BA|0,BA=(nA=GA(e,i,nA,u))+aA|0,aA=h+(aA>>>0<oA>>>0?iA+1|0:iA)|0,iA=(rA=GA(rA,f,D,L))+BA|0,BA=h+(BA>>>0<nA>>>0?aA+1|0:aA)|0,BA=iA>>>0<rA>>>0?BA+1|0:BA,aA=iA,iA=GA(cA,n,hA,Q),BA=h+BA|0,rA=aA=aA+iA|0,BA=(BA=aA>>>0<iA>>>0?BA+1|0:BA)+(aA=I>>26)|0,rA=I=rA+(iA=(67108863&I)<<6|SA>>>26)|0,BA=I>>>0<iA>>>0?BA+1|0:BA,nA=aA=I+16777216|0,I=iA=aA>>>0<16777216?BA+1|0:BA,a[A+12>>2]=rA-(-33554432&aA),BA=GA(C,y,K,R),iA=h,aA=(rA=GA(pA,B,yA,E))+BA|0,BA=h+iA|0,BA=aA>>>0<rA>>>0?BA+1|0:BA,iA=GA(e,i,r,s),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,rA=GA(_,w,DA,G),iA=h+BA|0,iA=(aA=rA+aA|0)>>>0<rA>>>0?iA+1|0:iA,BA=(rA=GA(hA,Q,p,M))+aA|0,aA=h+iA|0,aA=BA>>>0<rA>>>0?aA+1|0:aA,iA=(rA=GA(b,J,d,U))+BA|0,BA=h+aA|0,BA=iA>>>0<rA>>>0?BA+1|0:BA,aA=iA,iA=GA(EA,o,Z,O),BA=h+BA|0,BA=(aA=aA+iA|0)>>>0<iA>>>0?BA+1|0:BA,iA=GA(m,_A,F,x),BA=h+BA|0,BA=(aA=iA+aA|0)>>>0<iA>>>0?BA+1|0:BA,aA=(DA=GA(sA,c,rA=lA,oA=rA>>31))+aA|0,iA=h+BA|0,BA=(cA=GA(cA,n,N,P))+aA|0,aA=h+(aA>>>0<DA>>>0?iA+1|0:iA)|0,aA=BA>>>0<cA>>>0?aA+1|0:aA,lA=BA,BA=(BA=g>>25)+aA|0,BA=(g=lA+(iA=(33554431&g)<<7|kA>>>25)|0)>>>0<iA>>>0?BA+1|0:BA,cA=aA=(iA=g)+33554432|0,g=BA=aA>>>0<33554432?BA+1|0:BA,a[A+32>>2]=iA-(-67108864&aA),aA=I>>25,I=(nA=(33554431&I)<<7|nA>>>25)+($-(BA=-67108864&gA)|0)|0,BA=aA+(AA-((BA>>>0>$>>>0)+IA|0)|0)|0,BA=I>>>0<nA>>>0?BA+1|0:BA,BA=((67108863&(BA=(I=(aA=I)+33554432|0)>>>0<33554432?BA+1|0:BA))<<6|I>>>26)+(iA=vA-(-33554432&CA)|0)|0,a[A+20>>2]=BA,a[A+16>>2]=aA-(-67108864&I),I=GA(yA,E,C,y),BA=h,aA=GA(pA,B,v,z),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,iA=GA(r,s,S,j),aA=h+BA|0,aA=(I=iA+I|0)>>>0<iA>>>0?aA+1|0:aA,BA=GA(e,i,_,w),iA=h+aA|0,iA=(I=BA+I|0)>>>0<BA>>>0?iA+1|0:iA,aA=GA(p,M,D,L),BA=h+iA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(hA,Q,d,U),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,aA=GA(k,T,Z,O),BA=h+BA|0,BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA,iA=GA(EA,o,m,_A),aA=h+BA|0,aA=(I=iA+I|0)>>>0<iA>>>0?aA+1|0:aA,BA=GA(rA,oA,l,q),iA=h+aA|0,iA=(I=BA+I|0)>>>0<BA>>>0?iA+1|0:iA,aA=GA(sA,c,W,W>>31),BA=h+iA|0,BA=(BA=(I=aA+I|0)>>>0<aA>>>0?BA+1|0:BA)+(aA=g>>26)|0,BA=(g=(iA=I)+(I=(67108863&g)<<6|cA>>>26)|0)>>>0<I>>>0?BA+1|0:BA,BA=(g=(I=g)+16777216|0)>>>0<16777216?BA+1|0:BA,a[A+36>>2]=I-(-33554432&g),iA=QA-(-33554432&bA)|0,aA=tA-(I=-67108864&uA)|0,pA=dA-((I>>>0>tA>>>0)+eA|0)|0,g=(I=GA((33554431&(I=BA))<<7|g>>>25,BA>>=25,19,0))+aA|0,aA=h+pA|0,BA=g>>>0<I>>>0?aA+1|0:aA,BA=((67108863&(BA=(g=(I=g)+33554432|0)>>>0<33554432?BA+1|0:BA))<<6|g>>>26)+iA|0,a[A+4>>2]=BA,a[A>>2]=I-(-67108864&g)}function l(A,g){var I,C,e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D=0,w=0,k=0;n=I=n-544|0,C=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24,e=i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24,B=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24,r=i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24,t=i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24,Q=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,o=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,c=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24,D=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,E=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,y=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,_=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,h=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,s=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,p=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,f=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,A=a[g+124>>2],a[I+536>>2]=a[g+120>>2],a[I+540>>2]=A,A=a[g+116>>2],a[I+528>>2]=a[g+112>>2],a[I+532>>2]=A,A=a[g+108>>2],a[I+504>>2]=a[g+104>>2],a[I+508>>2]=A,A=a[g+100>>2],a[I+496>>2]=a[g+96>>2],a[I+500>>2]=A,A=a[g+124>>2],a[I+488>>2]=a[g+120>>2],a[I+492>>2]=A,A=a[g+116>>2],a[I+480>>2]=a[g+112>>2],a[I+484>>2]=A,oA(k=I+512|0,I+496|0,I+480|0),A=a[I+524>>2],a[g+120>>2]=a[I+520>>2],a[g+124>>2]=A,A=a[I+516>>2],a[g+112>>2]=a[I+512>>2],a[g+116>>2]=A,A=a[g+92>>2],a[I+472>>2]=a[g+88>>2],a[I+476>>2]=A,A=a[g+84>>2],a[I+464>>2]=a[g+80>>2],a[I+468>>2]=A,A=a[g+108>>2],a[I+456>>2]=a[g+104>>2],a[I+460>>2]=A,A=a[g+100>>2],a[I+448>>2]=a[g+96>>2],a[I+452>>2]=A,oA(k,I+464|0,I+448|0),A=a[I+524>>2],a[g+104>>2]=a[I+520>>2],a[g+108>>2]=A,A=a[I+516>>2],a[g+96>>2]=a[I+512>>2],a[g+100>>2]=A,A=a[g+76>>2],a[I+440>>2]=a[g+72>>2],a[I+444>>2]=A,w=a[4+(A=g- -64|0)>>2],a[I+432>>2]=a[A>>2],a[I+436>>2]=w,w=a[g+92>>2],a[I+424>>2]=a[g+88>>2],a[I+428>>2]=w,w=a[g+84>>2],a[I+416>>2]=a[g+80>>2],a[I+420>>2]=w,oA(k,I+432|0,I+416|0),w=a[I+524>>2],a[g+88>>2]=a[I+520>>2],a[g+92>>2]=w,w=a[I+516>>2],a[g+80>>2]=a[I+512>>2],a[g+84>>2]=w,w=a[g+60>>2],a[I+408>>2]=a[g+56>>2],a[I+412>>2]=w,w=a[g+52>>2],a[I+400>>2]=a[g+48>>2],a[I+404>>2]=w,w=a[g+76>>2],a[I+392>>2]=a[g+72>>2],a[I+396>>2]=w,w=a[A+4>>2],a[I+384>>2]=a[A>>2],a[I+388>>2]=w,oA(k,I+400|0,I+384|0),w=a[I+524>>2],a[g+72>>2]=a[I+520>>2],a[g+76>>2]=w,w=a[I+516>>2],a[A>>2]=a[I+512>>2],a[A+4>>2]=w,w=a[g+44>>2],a[I+376>>2]=a[g+40>>2],a[I+380>>2]=w,w=a[g+36>>2],a[I+368>>2]=a[g+32>>2],a[I+372>>2]=w,w=a[g+60>>2],a[I+360>>2]=a[g+56>>2],a[I+364>>2]=w,w=a[g+52>>2],a[I+352>>2]=a[g+48>>2],a[I+356>>2]=w,oA(k,I+368|0,I+352|0),w=a[I+524>>2],a[g+56>>2]=a[I+520>>2],a[g+60>>2]=w,w=a[I+516>>2],a[g+48>>2]=a[I+512>>2],a[g+52>>2]=w,w=a[g+28>>2],a[I+344>>2]=a[g+24>>2],a[I+348>>2]=w,w=a[g+20>>2],a[I+336>>2]=a[g+16>>2],a[I+340>>2]=w,w=a[g+44>>2],a[I+328>>2]=a[g+40>>2],a[I+332>>2]=w,w=a[g+36>>2],a[I+320>>2]=a[g+32>>2],a[I+324>>2]=w,oA(k,I+336|0,I+320|0),w=a[I+524>>2],a[g+40>>2]=a[I+520>>2],a[g+44>>2]=w,w=a[I+516>>2],a[g+32>>2]=a[I+512>>2],a[g+36>>2]=w,w=a[g+12>>2],a[I+312>>2]=a[g+8>>2],a[I+316>>2]=w,w=a[g+4>>2],a[I+304>>2]=a[g>>2],a[I+308>>2]=w,w=a[g+28>>2],a[I+296>>2]=a[g+24>>2],a[I+300>>2]=w,w=a[g+20>>2],a[I+288>>2]=a[g+16>>2],a[I+292>>2]=w,oA(k,I+304|0,I+288|0),w=a[I+524>>2],a[g+24>>2]=a[I+520>>2],a[g+28>>2]=w,w=a[I+516>>2],a[g+16>>2]=a[I+512>>2],a[g+20>>2]=w,w=a[I+540>>2],a[I+280>>2]=a[I+536>>2],a[I+284>>2]=w,w=a[I+532>>2],a[I+272>>2]=a[I+528>>2],a[I+276>>2]=w,w=a[g+12>>2],a[I+264>>2]=a[g+8>>2],a[I+268>>2]=w,w=a[g+4>>2],a[I+256>>2]=a[g>>2],a[I+260>>2]=w,oA(k,I+272|0,I+256|0),w=a[I+524>>2],a[g+8>>2]=a[I+520>>2],a[g+12>>2]=w,w=a[I+516>>2],a[g>>2]=a[I+512>>2],a[g+4>>2]=w,a[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^p,a[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^s,a[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^h,a[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^f,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^_,a[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^y,a[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^E,a[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^D,D=a[g+124>>2],a[I+536>>2]=a[g+120>>2],a[I+540>>2]=D,D=a[g+116>>2],a[I+528>>2]=a[g+112>>2],a[I+532>>2]=D,D=a[g+108>>2],a[I+248>>2]=a[g+104>>2],a[I+252>>2]=D,D=a[g+100>>2],a[I+240>>2]=a[g+96>>2],a[I+244>>2]=D,D=a[g+124>>2],a[I+232>>2]=a[g+120>>2],a[I+236>>2]=D,D=a[g+116>>2],a[I+224>>2]=a[g+112>>2],a[I+228>>2]=D,oA(k,I+240|0,I+224|0),D=a[I+524>>2],a[g+120>>2]=a[I+520>>2],a[g+124>>2]=D,D=a[I+516>>2],a[g+112>>2]=a[I+512>>2],a[g+116>>2]=D,D=a[g+92>>2],a[I+216>>2]=a[g+88>>2],a[I+220>>2]=D,D=a[g+84>>2],a[I+208>>2]=a[g+80>>2],a[I+212>>2]=D,D=a[g+108>>2],a[I+200>>2]=a[g+104>>2],a[I+204>>2]=D,D=a[g+100>>2],a[I+192>>2]=a[g+96>>2],a[I+196>>2]=D,oA(k,I+208|0,I+192|0),D=a[I+524>>2],a[g+104>>2]=a[I+520>>2],a[g+108>>2]=D,D=a[I+516>>2],a[g+96>>2]=a[I+512>>2],a[g+100>>2]=D,D=a[g+76>>2],a[I+184>>2]=a[g+72>>2],a[I+188>>2]=D,D=a[A+4>>2],a[I+176>>2]=a[A>>2],a[I+180>>2]=D,D=a[g+92>>2],a[I+168>>2]=a[g+88>>2],a[I+172>>2]=D,D=a[g+84>>2],a[I+160>>2]=a[g+80>>2],a[I+164>>2]=D,oA(k,I+176|0,I+160|0),D=a[I+524>>2],a[g+88>>2]=a[I+520>>2],a[g+92>>2]=D,D=a[I+516>>2],a[g+80>>2]=a[I+512>>2],a[g+84>>2]=D,D=a[g+60>>2],a[I+152>>2]=a[g+56>>2],a[I+156>>2]=D,D=a[g+52>>2],a[I+144>>2]=a[g+48>>2],a[I+148>>2]=D,D=a[g+76>>2],a[I+136>>2]=a[g+72>>2],a[I+140>>2]=D,D=a[A+4>>2],a[I+128>>2]=a[A>>2],a[I+132>>2]=D,oA(k,I+144|0,I+128|0),D=a[I+524>>2],a[g+72>>2]=a[I+520>>2],a[g+76>>2]=D,D=a[I+516>>2],a[A>>2]=a[I+512>>2],a[A+4>>2]=D,D=a[g+44>>2],a[I+120>>2]=a[g+40>>2],a[I+124>>2]=D,D=a[g+36>>2],a[I+112>>2]=a[g+32>>2],a[I+116>>2]=D,D=a[g+60>>2],a[I+104>>2]=a[g+56>>2],a[I+108>>2]=D,D=a[g+52>>2],a[I+96>>2]=a[g+48>>2],a[I+100>>2]=D,oA(k,I+112|0,I+96|0),D=a[I+524>>2],a[g+56>>2]=a[I+520>>2],a[g+60>>2]=D,D=a[I+516>>2],a[g+48>>2]=a[I+512>>2],a[g+52>>2]=D,D=a[g+28>>2],a[I+88>>2]=a[g+24>>2],a[I+92>>2]=D,D=a[g+20>>2],a[I+80>>2]=a[g+16>>2],a[I+84>>2]=D,D=a[g+44>>2],a[I+72>>2]=a[g+40>>2],a[I+76>>2]=D,D=a[g+36>>2],a[I+64>>2]=a[g+32>>2],a[I+68>>2]=D,oA(k,I+80|0,I- -64|0),D=a[I+524>>2],a[g+40>>2]=a[I+520>>2],a[g+44>>2]=D,D=a[I+516>>2],a[g+32>>2]=a[I+512>>2],a[g+36>>2]=D,D=a[g+12>>2],a[I+56>>2]=a[g+8>>2],a[I+60>>2]=D,D=a[g+4>>2],a[I+48>>2]=a[g>>2],a[I+52>>2]=D,D=a[g+28>>2],a[I+40>>2]=a[g+24>>2],a[I+44>>2]=D,D=a[g+20>>2],a[I+32>>2]=a[g+16>>2],a[I+36>>2]=D,oA(k,I+48|0,I+32|0),D=a[I+524>>2],a[g+24>>2]=a[I+520>>2],a[g+28>>2]=D,D=a[I+516>>2],a[g+16>>2]=a[I+512>>2],a[g+20>>2]=D,D=a[I+540>>2],a[I+24>>2]=a[I+536>>2],a[I+28>>2]=D,D=a[I+532>>2],a[I+16>>2]=a[I+528>>2],a[I+20>>2]=D,D=a[g+12>>2],a[I+8>>2]=a[g+8>>2],a[I+12>>2]=D,D=a[g+4>>2],a[I>>2]=a[g>>2],a[I+4>>2]=D,oA(k,I+16|0,I),k=a[I+524>>2],a[g+8>>2]=a[I+520>>2],a[g+12>>2]=k,k=a[I+516>>2],a[g>>2]=a[I+512>>2],a[g+4>>2]=k,a[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^c,a[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^o,a[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^Q,a[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^t,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^r,a[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^B,a[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^e,a[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^C,n=I+544|0}function u(A,g,I,e,B){var r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0;for(n=r=n-288|0,s=(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^e>>>29,p=(i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24)^e<<3,f=(i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24)^I>>>29,e=(i[0|(o=B+32|0)]|i[o+1|0]<<8|i[o+2|0]<<16|i[o+3|0]<<24)^I<<3,_=B+16|0,E=B+48|0,Q=B- -64|0,y=B+80|0,t=B+96|0,c=B+112|0;I=a[c+12>>2],a[r+280>>2]=a[c+8>>2],a[r+284>>2]=I,I=a[c+4>>2],a[r+272>>2]=a[c>>2],a[r+276>>2]=I,I=a[t+12>>2],a[r+248>>2]=a[t+8>>2],a[r+252>>2]=I,I=a[t+4>>2],a[r+240>>2]=a[t>>2],a[r+244>>2]=I,I=a[c+12>>2],a[r+232>>2]=a[c+8>>2],a[r+236>>2]=I,I=a[c+4>>2],a[r+224>>2]=a[c>>2],a[r+228>>2]=I,oA(h=r+256|0,r+240|0,r+224|0),I=a[r+268>>2],a[c+8>>2]=a[r+264>>2],a[c+12>>2]=I,I=a[r+260>>2],a[c>>2]=a[r+256>>2],a[c+4>>2]=I,I=a[y+12>>2],a[r+216>>2]=a[y+8>>2],a[r+220>>2]=I,I=a[y+4>>2],a[r+208>>2]=a[y>>2],a[r+212>>2]=I,I=a[t+12>>2],a[r+200>>2]=a[t+8>>2],a[r+204>>2]=I,I=a[t+4>>2],a[r+192>>2]=a[t>>2],a[r+196>>2]=I,oA(h,r+208|0,r+192|0),I=a[r+268>>2],a[t+8>>2]=a[r+264>>2],a[t+12>>2]=I,I=a[r+260>>2],a[t>>2]=a[r+256>>2],a[t+4>>2]=I,I=a[Q+12>>2],a[r+184>>2]=a[Q+8>>2],a[r+188>>2]=I,I=a[Q+4>>2],a[r+176>>2]=a[Q>>2],a[r+180>>2]=I,I=a[y+12>>2],a[r+168>>2]=a[y+8>>2],a[r+172>>2]=I,I=a[y+4>>2],a[r+160>>2]=a[y>>2],a[r+164>>2]=I,oA(h,r+176|0,r+160|0),I=a[r+268>>2],a[y+8>>2]=a[r+264>>2],a[y+12>>2]=I,I=a[r+260>>2],a[y>>2]=a[r+256>>2],a[y+4>>2]=I,I=a[E+12>>2],a[r+152>>2]=a[E+8>>2],a[r+156>>2]=I,I=a[E+4>>2],a[r+144>>2]=a[E>>2],a[r+148>>2]=I,I=a[Q+12>>2],a[r+136>>2]=a[Q+8>>2],a[r+140>>2]=I,I=a[Q+4>>2],a[r+128>>2]=a[Q>>2],a[r+132>>2]=I,oA(h,r+144|0,r+128|0),I=a[r+268>>2],a[Q+8>>2]=a[r+264>>2],a[Q+12>>2]=I,I=a[r+260>>2],a[Q>>2]=a[r+256>>2],a[Q+4>>2]=I,I=a[o+12>>2],a[r+120>>2]=a[o+8>>2],a[r+124>>2]=I,I=a[o+4>>2],a[r+112>>2]=a[o>>2],a[r+116>>2]=I,I=a[E+12>>2],a[r+104>>2]=a[E+8>>2],a[r+108>>2]=I,I=a[E+4>>2],a[r+96>>2]=a[E>>2],a[r+100>>2]=I,oA(h,r+112|0,r+96|0),I=a[r+268>>2],a[E+8>>2]=a[r+264>>2],a[E+12>>2]=I,I=a[r+260>>2],a[E>>2]=a[r+256>>2],a[E+4>>2]=I,I=a[_+12>>2],a[r+88>>2]=a[_+8>>2],a[r+92>>2]=I,I=a[_+4>>2],a[r+80>>2]=a[_>>2],a[r+84>>2]=I,I=a[o+12>>2],a[r+72>>2]=a[o+8>>2],a[r+76>>2]=I,I=a[o+4>>2],a[r+64>>2]=a[o>>2],a[r+68>>2]=I,oA(h,r+80|0,r- -64|0),I=a[r+268>>2],a[o+8>>2]=a[r+264>>2],a[o+12>>2]=I,I=a[r+260>>2],a[o>>2]=a[r+256>>2],a[o+4>>2]=I,I=a[B+12>>2],a[r+56>>2]=a[B+8>>2],a[r+60>>2]=I,I=a[B+4>>2],a[r+48>>2]=a[B>>2],a[r+52>>2]=I,I=a[_+12>>2],a[r+40>>2]=a[_+8>>2],a[r+44>>2]=I,I=a[_+4>>2],a[r+32>>2]=a[_>>2],a[r+36>>2]=I,oA(h,r+48|0,r+32|0),I=a[r+268>>2],a[_+8>>2]=a[r+264>>2],a[_+12>>2]=I,I=a[r+260>>2],a[_>>2]=a[r+256>>2],a[_+4>>2]=I,I=a[r+284>>2],a[r+24>>2]=a[r+280>>2],a[r+28>>2]=I,I=a[r+276>>2],a[r+16>>2]=a[r+272>>2],a[r+20>>2]=I,I=a[B+12>>2],a[r+8>>2]=a[B+8>>2],a[r+12>>2]=I,I=a[B+4>>2],a[r>>2]=a[B>>2],a[r+4>>2]=I,oA(h,r+16|0,r),I=a[r+268>>2],a[B+8>>2]=a[r+264>>2],a[B+12>>2]=I,I=a[r+260>>2],a[B>>2]=a[r+256>>2],a[B+4>>2]=I,w=s^(i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24),a[B+12>>2]=w,k=p^(i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24),a[B+8>>2]=k,d=f^(i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24),a[B+4>>2]=d,l=e^(i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),a[B>>2]=l,u=e^(i[0|Q]|i[Q+1|0]<<8|i[Q+2|0]<<16|i[Q+3|0]<<24),a[Q>>2]=u,v=f^(i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24),a[B+68>>2]=v,S=p^(i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24),a[B+72>>2]=S,b=s^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24),a[B+76>>2]=b,7!=(0|(D=D+1|0)););A:{g:{I:{if(I=g-16|0){if(16==(0|I))break I;break g}Q=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,o=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,_=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,E=i[B+96|0]|i[B+97|0]<<8|i[B+98|0]<<16|i[B+99|0]<<24,y=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,t=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,c=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,h=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,s=i[B+100|0]|i[B+101|0]<<8|i[B+102|0]<<16|i[B+103|0]<<24,p=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,f=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,D=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,e=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,I=i[B+104|0]|i[B+105|0]<<8|i[B+106|0]<<16|i[B+107|0]<<24,g=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,B=w^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24)^(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+108|0]|i[B+109|0]<<8|i[B+110|0]<<16|i[B+111|0]<<24)^b,C[A+12|0]=B,C[A+13|0]=B>>>8,C[A+14|0]=B>>>16,C[A+15|0]=B>>>24,g=f^D^e^g^I^S^k,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=t^c^h^s^p^v^d,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=Q^o^_^E^y^u^l,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24;break A}c=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,h=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,s=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,p=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,f=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,D=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,e=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,I=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,g=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,t=w^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24)^(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24),C[A+12|0]=t,C[A+13|0]=t>>>8,C[A+14|0]=t>>>16,C[A+15|0]=t>>>24,g=e^g^I^k,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=p^f^D^d,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=c^h^s^l,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,E=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,y=i[0|(g=B- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,t=i[B+112|0]|i[B+113|0]<<8|i[B+114|0]<<16|i[B+115|0]<<24,c=i[B+96|0]|i[B+97|0]<<8|i[B+98|0]<<16|i[B+99|0]<<24,h=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,s=i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24,p=i[B+116|0]|i[B+117|0]<<8|i[B+118|0]<<16|i[B+119|0]<<24,f=i[B+100|0]|i[B+101|0]<<8|i[B+102|0]<<16|i[B+103|0]<<24,D=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,e=i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24,I=i[B+120|0]|i[B+121|0]<<8|i[B+122|0]<<16|i[B+123|0]<<24,g=i[B+104|0]|i[B+105|0]<<8|i[B+106|0]<<16|i[B+107|0]<<24,B=(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24)^(i[B+124|0]|i[B+125|0]<<8|i[B+126|0]<<16|i[B+127|0]<<24)^(i[B+108|0]|i[B+109|0]<<8|i[B+110|0]<<16|i[B+111|0]<<24),C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,g=D^e^g^I,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=h^s^p^f,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=E^y^t^c,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24;break A}VA(A,0,g)}n=r+288|0}function v(A,g){var I,C,e,B,i,r,Q,o,c,E,y,_,s,p,f,D,w,k,d,l,u,v,S,b=0,M=0,F=0,N=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,iA=0,rA=0,tA=0,QA=0,oA=0;n=I=n-48|0,K(A,g),K(A+80|0,g+40|0),b=GA(R=(gA=a[g+92>>2])<<1,i=R>>31,J=(N=a[g+84>>2])<<1,C=J>>31),F=h,AA=q=a[g+88>>2],M=(m=GA(q,X=q>>31,q,X))+b|0,b=h+F|0,b=M>>>0<m>>>0?b+1|0:b,F=GA(Y=a[g+96>>2],r=Y>>31,m=(U=a[g+80>>2])<<1,e=m>>31),b=h+b|0,b=(M=F+M|0)>>>0<F>>>0?b+1|0:b,CA=a[g+108>>2],F=GA(P=t(CA,38),y=P>>31,CA,p=CA>>31),b=h+b|0,b=(M=F+M|0)>>>0<F>>>0?b+1|0:b,F=M,W=a[g+112>>2],x=GA(H=t(W,19),Q=H>>31,M=(O=a[g+104>>2])<<1,M>>31),M=h+b|0,M=(F=F+x|0)>>>0<x>>>0?M+1|0:M,aA=a[g+116>>2],b=GA(x=t(aA,38),B=x>>31,j=(Z=a[g+100>>2])<<1,c=j>>31),M=h+M|0,iA=b=(b>>>0>(F=b+F|0)>>>0?M+1:M)<<1|F>>>31,rA=F=33554432+(f=F<<1)|0,tA=b=F>>>0<33554432?b+1|0:b,G=(67108863&b)<<6|F>>>26,V=b>>26,b=GA(J,C,Y,r),F=h,M=($=GA(q<<=1,E=q>>31,gA,D=gA>>31))+b|0,b=h+F|0,b=M>>>0<$>>>0?b+1|0:b,F=($=GA(Z,_=Z>>31,m,e))+M|0,M=h+b|0,M=F>>>0<$>>>0?M+1|0:M,eA=GA(H,Q,$=CA<<1,w=$>>31),b=h+M|0,b=(F=eA+F|0)>>>0<eA>>>0?b+1|0:b,M=GA(x,B,O,o=O>>31),b=h+b|0,M=(M=(M>>>0>(F=M+F|0)>>>0?b+1:b)<<1|F>>>31)+V|0,eA=F=(b=F<<1)+G|0,b=M=b>>>0>F>>>0?M+1|0:M,QA=F=F+16777216|0,G=(33554431&(b=F>>>0<16777216?b+1|0:b))<<7|F>>>25,V=b>>25,b=GA(R,i,gA,D),F=h,M=(z=GA(Y,r,q,E))+b|0,b=h+F|0,b=M>>>0<z>>>0?b+1|0:b,F=GA(J,C,j,c),b=h+b|0,b=(M=F+M|0)>>>0<F>>>0?b+1|0:b,F=(z=GA(m,e,O,o))+M|0,M=h+b|0,M=F>>>0<z>>>0?M+1|0:M,z=GA(H,Q,W,s=W>>31),b=h+M|0,b=(F=z+F|0)>>>0<z>>>0?b+1|0:b,z=GA(x,B,$,w),M=h+b|0,M=((F=z+F|0)>>>0<z>>>0?M+1:M)<<1|F>>>31,F=(b=G)+(G=F<<1)|0,b=M+V|0,b=F>>>0<G>>>0?b+1|0:b,V=F,z=M=F+33554432|0,F=b=M>>>0<33554432?b+1|0:b,a[A+144>>2]=V-(-67108864&M),V=GA(b=t(Z,38),b>>31,Z,_),G=h,U=GA(b=U,M=b>>31,b,M),M=h+G|0,M=(b=U+V|0)>>>0<U>>>0?M+1|0:M,G=(IA=GA(U=t(O,19),k=U>>31,V=Y<<1,d=V>>31))+b|0,b=h+M|0,b=G>>>0<IA>>>0?b+1|0:b,M=G,G=GA(R,i,P,y),b=h+b|0,b=(M=M+G|0)>>>0<G>>>0?b+1|0:b,G=(IA=GA(H,Q,q,E))+M|0,M=h+b|0,M=G>>>0<IA>>>0?M+1|0:M,IA=GA(J,C,x,B),b=h+M|0,IA=b=((G=IA+G|0)>>>0<IA>>>0?b+1:b)<<1|G>>>31,v=M=(G=33554432+(l=G<<1)|0)>>>0<33554432?b+1|0:b,BA=(67108863&M)<<6|G>>>26,oA=M>>26,b=GA(U,k,j,c),L=h,T=N,M=(N=GA(m,e,N,u=N>>31))+b|0,b=h+L|0,b=M>>>0<N>>>0?b+1|0:b,N=(L=GA(Y,r,P,y))+M|0,M=h+b|0,M=N>>>0<L>>>0?M+1|0:M,L=GA(H,Q,R,i),b=h+M|0,b=(N=L+N|0)>>>0<L>>>0?b+1|0:b,L=GA(x,B,AA,X),M=h+b|0,M=((N=L+N|0)>>>0<L>>>0?M+1:M)<<1|N>>>31,N=(b=BA)+(BA=N<<1)|0,b=M+oA|0,b=N>>>0<BA>>>0?b+1|0:b,oA=N,BA=N=N+16777216|0,S=(33554431&(b=N>>>0<16777216?b+1|0:b))<<7|N>>>25,L=b>>25,b=GA(m,e,AA,X),N=h,M=(T=GA(J,C,T,u))+b|0,b=h+N|0,N=(U=GA(U,k,O,o))+M|0,M=h+(M>>>0<T>>>0?b+1|0:b)|0,M=N>>>0<U>>>0?M+1|0:M,U=GA(j,c,P,y),b=h+M|0,b=(N=U+N|0)>>>0<U>>>0?b+1|0:b,M=N,N=GA(H,Q,V,d),b=h+b|0,b=(M=M+N|0)>>>0<N>>>0?b+1|0:b,N=(U=GA(x,B,R,i))+M|0,M=h+b|0,b=(b=(N>>>0<U>>>0?M+1:M)<<1|N>>>31)+L|0,T=N=(M=N<<1)+S|0,b=M>>>0>N>>>0?b+1|0:b,N=(U=N+33554432|0)>>>0<33554432?b+1|0:b,a[A+128>>2]=T-(-67108864&U),b=GA(q,E,Z,_),M=h,T=GA(Y,r,R,i),M=h+M|0,M=(b=T+b|0)>>>0<T>>>0?M+1|0:M,T=(L=GA(J,C,O,o))+b|0,b=h+M|0,b=T>>>0<L>>>0?b+1|0:b,L=GA(m,e,CA,p),M=h+b|0,M=(T=L+T|0)>>>0<L>>>0?M+1|0:M,L=GA(x,B,W,s),b=h+M|0,b=(M=F>>26)+(((T=L+T|0)>>>0<L>>>0?b+1:b)<<1|T>>>31)|0,b=(F=(z=(67108863&F)<<6|z>>>26)+(T<<1)|0)>>>0<z>>>0?b+1|0:b,z=F,M=b,T=b=F+16777216|0,F=M=b>>>0<16777216?M+1|0:M,a[A+148>>2]=z-(-33554432&b),b=GA(m,e,gA,D),gA=h,M=(X=GA(J,C,AA,X))+b|0,b=h+gA|0,b=M>>>0<X>>>0?b+1|0:b,P=GA(O,o,P,y),b=h+b|0,b=(M=P+M|0)>>>0<P>>>0?b+1|0:b,H=(P=GA(H,Q,j,c))+M|0,M=h+b|0,M=H>>>0<P>>>0?M+1|0:M,b=H,H=GA(x,B,Y,r),M=h+M|0,M=((b=b+H|0)>>>0<H>>>0?M+1:M)<<1,H=b,b=(b=M|b>>>31)+(M=N>>26)|0,b=(N=(z=H<<1)+(H=(67108863&N)<<6|U>>>26)|0)>>>0<H>>>0?b+1|0:b,H=N,P=M=N+16777216|0,N=b=M>>>0<16777216?b+1|0:b,a[A+132>>2]=H-(-33554432&M),b=GA(O,o,q,E),H=h,M=(Y=GA(Y,r,Y,r))+b|0,b=h+H|0,b=M>>>0<Y>>>0?b+1|0:b,Y=GA(R,i,j,c),b=h+b|0,b=(M=Y+M|0)>>>0<Y>>>0?b+1|0:b,Y=GA(J,C,$,w),b=h+b|0,b=(M=Y+M|0)>>>0<Y>>>0?b+1|0:b,Y=(H=GA(m,e,W,s))+M|0,M=h+b|0,M=Y>>>0<H>>>0?M+1|0:M,b=Y,Y=GA(Y=x,B,x=aA,j=x>>31),M=h+M|0,M=((b=b+Y|0)>>>0<Y>>>0?M+1:M)<<1,Y=b,b=(b=M|b>>>31)+(M=F>>25)|0,b=(F=(H=Y<<1)+(Y=(33554431&F)<<7|T>>>25)|0)>>>0<Y>>>0?b+1|0:b,Y=F,H=M=F+33554432|0,F=b=M>>>0<33554432?b+1|0:b,a[A+152>>2]=Y-(-67108864&M),M=f-(b=-67108864&rA)|0,Y=iA-((b>>>0>f>>>0)+tA|0)|0,b=N>>25,N=(P=(33554431&N)<<7|P>>>25)+M|0,M=b+Y|0,Y=N,b=M=N>>>0<P>>>0?M+1|0:M,b=((67108863&(b=(N=N+33554432|0)>>>0<33554432?b+1|0:b))<<6|N>>>26)+(X=eA-(-33554432&QA)|0)|0,a[A+140>>2]=b,a[A+136>>2]=Y-(-67108864&N),b=GA(R,i,O,o),M=h,N=GA(Z,_,V,d),M=h+M|0,M=(b=N+b|0)>>>0<N>>>0?M+1|0:M,N=(R=GA(q,E,CA,p))+b|0,b=h+M|0,b=N>>>0<R>>>0?b+1|0:b,J=GA(J,C,W,s),M=h+b|0,M=(N=J+N|0)>>>0<J>>>0?M+1|0:M,J=GA(m,e,x,j),b=h+M|0,b=(b=((N=J+N|0)>>>0<J>>>0?b+1:b)<<1|N>>>31)+(M=F>>26)|0,M=(F=(Y=N<<1)+(N=(67108863&F)<<6|H>>>26)|0)>>>0<N>>>0?b+1|0:b,M=(b=F+16777216|0)>>>0<16777216?M+1|0:M,a[A+156>>2]=F-(-33554432&b),N=oA-(-33554432&BA)|0,J=l-(F=-67108864&G)|0,m=IA-((F>>>0>l>>>0)+v|0)|0,F=GA((33554431&M)<<7|b>>>25,M>>25,19,0),M=h+m|0,M=(b=F+J|0)>>>0<F>>>0?M+1|0:M,F=b,M=((67108863&(M=(b=b+33554432|0)>>>0<33554432?M+1|0:M))<<6|b>>>26)+N|0,a[A+124>>2]=M,a[A+120>>2]=F-(-67108864&b),b=a[g+44>>2],M=a[g+4>>2],F=a[g+48>>2],N=a[g+8>>2],J=a[g+52>>2],m=a[g+12>>2],x=a[g+56>>2],R=a[g+16>>2],Y=a[g+60>>2],H=a[g+20>>2],O=a[g- -64>>2],j=a[g+24>>2],q=a[g+68>>2],P=a[g+28>>2],X=a[g+72>>2],Z=a[g+32>>2],W=a[g+40>>2],AA=a[g>>2],a[A+76>>2]=a[g+76>>2]+a[g+36>>2],a[A+72>>2]=X+Z,a[A+68>>2]=P+q,a[(CA=A- -64|0)>>2]=O+j,a[A+60>>2]=Y+H,a[A+56>>2]=x+R,a[A+52>>2]=J+m,a[A+48>>2]=F+N,a[A+44>>2]=b+M,a[A+40>>2]=W+AA,K(I,A+40|0),g=a[A+4>>2],b=a[A+84>>2],M=a[A+8>>2],F=a[A+88>>2],N=a[A+12>>2],J=a[A+92>>2],m=a[A+16>>2],x=a[A+96>>2],R=a[A+20>>2],Y=a[A+100>>2],H=a[A+24>>2],O=a[A+104>>2],j=a[A+28>>2],q=a[A+108>>2],P=a[A+32>>2],X=a[A+112>>2],Z=a[A>>2],W=a[A+80>>2],$=(AA=a[A+116>>2])-(gA=a[A+36>>2])|0,a[A+116>>2]=$,U=X-P|0,a[A+112>>2]=U,V=q-j|0,a[A+108>>2]=V,G=O-H|0,a[A+104>>2]=G,aA=Y-R|0,a[A+100>>2]=aA,iA=x-m|0,a[A+96>>2]=iA,rA=J-N|0,a[A+92>>2]=rA,tA=F-M|0,a[A+88>>2]=tA,eA=b-g|0,a[A+84>>2]=eA,QA=W-Z|0,a[A+80>>2]=QA,AA=AA+gA|0,a[A+76>>2]=AA,P=P+X|0,a[A+72>>2]=P,j=q+j|0,a[A+68>>2]=j,H=H+O|0,a[CA>>2]=H,R=Y+R|0,a[A+60>>2]=R,m=x+m|0,a[A+56>>2]=m,N=N+J|0,a[A+52>>2]=N,M=M+F|0,a[A+48>>2]=M,g=g+b|0,a[A+44>>2]=g,b=Z+W|0,a[A+40>>2]=b,F=a[I>>2],J=a[I+4>>2],x=a[I+8>>2],Y=a[I+12>>2],O=a[I+16>>2],q=a[I+20>>2],X=a[I+24>>2],Z=a[I+28>>2],W=a[I+32>>2],a[A+36>>2]=a[I+36>>2]-AA,a[A+32>>2]=W-P,a[A+28>>2]=Z-j,a[A+24>>2]=X-H,a[A+20>>2]=q-R,a[A+16>>2]=O-m,a[A+12>>2]=Y-N,a[A+8>>2]=x-M,a[A+4>>2]=J-g,a[A>>2]=F-b,g=a[A+124>>2],b=a[A+128>>2],M=a[A+132>>2],F=a[A+136>>2],N=a[A+140>>2],J=a[A+144>>2],m=a[A+148>>2],x=a[A+152>>2],R=a[A+120>>2],a[A+156>>2]=a[A+156>>2]-$,a[A+152>>2]=x-U,a[A+148>>2]=m-V,a[A+144>>2]=J-G,a[A+140>>2]=N-aA,a[A+136>>2]=F-iA,a[A+132>>2]=M-rA,a[A+128>>2]=b-tA,a[A+124>>2]=g-eA,a[A+120>>2]=R-QA,n=I+48|0}function S(A,g,I,C){var e=0,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0;for(e=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,a[I>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,a[I+4>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,a[I+8>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,a[I+12>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,a[I+16>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,a[I+20>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,a[I+24>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,a[I+28>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,a[I+32>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,a[I+36>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,a[I+40>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,a[I+44>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,a[I+48>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,a[I+52>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,e=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,a[I+56>>2]=e<<24|(65280&e)<<8|e>>>8&65280|e>>>24,g=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,a[I+60>>2]=g<<24|(65280&g)<<8|g>>>8&65280|g>>>24,g=a[A+28>>2],a[C+24>>2]=a[A+24>>2],a[C+28>>2]=g,g=a[A+20>>2],a[C+16>>2]=a[A+16>>2],a[C+20>>2]=g,g=a[A+12>>2],a[C+8>>2]=a[A+8>>2],a[C+12>>2]=g,g=a[A+4>>2],a[C>>2]=a[A>>2],a[C+4>>2]=g;Q=a[C+28>>2],e=(g=w<<2)+I|0,r=a[C+16>>2],o=a[e>>2]+(Ig(r,26)^Ig(r,21)^Ig(r,7))|0,E=(Q=((B=a[g+34784>>2]+o|0)+(r&((o=a[C+24>>2])^(y=a[C+20>>2]))^o)|0)+Q|0)+a[C+12>>2]|0,a[C+12>>2]=E,Q=(n=Q+(Ig(c=a[C>>2],30)^Ig(c,19)^Ig(c,10))|0)+(c&((B=a[C+8>>2])|(t=a[C+4>>2]))|B&t)|0,a[C+28>>2]=Q,B=(n=B)+(o=(a[(s=(B=4|g)+I|0)>>2]+((o+(y^E&(r^y))|0)+(Ig(E,26)^Ig(E,21)^Ig(E,7))|0)|0)+a[B+34784>>2]|0)|0,a[C+8>>2]=B,o=(o+(Q&(t|c)|t&c)|0)+(Ig(Q,30)^Ig(Q,19)^Ig(Q,10))|0,a[C+24>>2]=o,y=(n=t)+(t=(((y+a[(D=(t=8|g)+I|0)>>2]|0)+a[t+34784>>2]|0)+(r^B&(r^E))|0)+(Ig(B,26)^Ig(B,21)^Ig(B,7))|0)|0,a[C+4>>2]=y,t=t+((o&(Q|c)|Q&c)+(Ig(o,30)^Ig(o,19)^Ig(o,10))|0)|0,a[C+20>>2]=t,r=(n=c)+(c=(((r+a[(k=(c=12|g)+I|0)>>2]|0)+a[c+34784>>2]|0)+(E^y&(B^E))|0)+(Ig(y,26)^Ig(y,21)^Ig(y,7))|0)|0,a[C>>2]=r,c=c+((t&(Q|o)|Q&o)+(Ig(t,30)^Ig(t,19)^Ig(t,10))|0)|0,a[C+16>>2]=c,E=(_=((((n=E)+a[(d=(E=16|g)+I|0)>>2]|0)+a[E+34784>>2]|0)+(B^r&(B^y))|0)+(Ig(r,26)^Ig(r,21)^Ig(r,7))|0)+((c&(t|o)|t&o)+(Ig(c,30)^Ig(c,19)^Ig(c,10))|0)|0,a[C+12>>2]=E,_=Q+_|0,a[C+28>>2]=_,Q=(B=(((B+a[(l=(Q=20|g)+I|0)>>2]|0)+a[Q+34784>>2]|0)+(y^_&(r^y))|0)+(Ig(_,26)^Ig(_,21)^Ig(_,7))|0)+((E&(t|c)|t&c)+(Ig(E,30)^Ig(E,19)^Ig(E,10))|0)|0,a[C+8>>2]=Q,B=B+o|0,a[C+24>>2]=B,o=(y=(((y+a[(u=(o=24|g)+I|0)>>2]|0)+a[o+34784>>2]|0)+(r^B&(r^_))|0)+(Ig(B,26)^Ig(B,21)^Ig(B,7))|0)+((Q&(c|E)|c&E)+(Ig(Q,30)^Ig(Q,19)^Ig(Q,10))|0)|0,a[C+4>>2]=o,y=t+y|0,a[C+20>>2]=y,t=(r=(((r+a[(v=(t=28|g)+I|0)>>2]|0)+a[t+34784>>2]|0)+(_^y&(B^_))|0)+(Ig(y,26)^Ig(y,21)^Ig(y,7))|0)+((o&(Q|E)|Q&E)+(Ig(o,30)^Ig(o,19)^Ig(o,10))|0)|0,a[C>>2]=t,r=r+c|0,a[C+16>>2]=r,c=(_=(((_+a[(S=(c=32|g)+I|0)>>2]|0)+a[c+34784>>2]|0)+(B^r&(B^y))|0)+(Ig(r,26)^Ig(r,21)^Ig(r,7))|0)+((t&(Q|o)|Q&o)+(Ig(t,30)^Ig(t,19)^Ig(t,10))|0)|0,a[C+28>>2]=c,_=E+_|0,a[C+12>>2]=_,E=(B=(((B+a[(b=(E=36|g)+I|0)>>2]|0)+a[E+34784>>2]|0)+(y^_&(r^y))|0)+(Ig(_,26)^Ig(_,21)^Ig(_,7))|0)+((c&(t|o)|t&o)+(Ig(c,30)^Ig(c,19)^Ig(c,10))|0)|0,a[C+24>>2]=E,B=B+Q|0,a[C+8>>2]=B,Q=(y=(((y+a[(M=(Q=40|g)+I|0)>>2]|0)+a[Q+34784>>2]|0)+(r^B&(r^_))|0)+(Ig(B,26)^Ig(B,21)^Ig(B,7))|0)+((E&(t|c)|t&c)+(Ig(E,30)^Ig(E,19)^Ig(E,10))|0)|0,a[C+20>>2]=Q,y=o+y|0,a[C+4>>2]=y,n=(o=44|g)+I|0,o=(r=((r+(a[o+34784>>2]+a[n>>2]|0)|0)+(_^y&(B^_))|0)+(Ig(y,26)^Ig(y,21)^Ig(y,7))|0)+((Q&(c|E)|c&E)+(Ig(Q,30)^Ig(Q,19)^Ig(Q,10))|0)|0,a[C+16>>2]=o,t=t+r|0,a[C>>2]=t,f=(r=48|g)+I|0,r=(_=((_+(a[r+34784>>2]+a[f>>2]|0)|0)+(B^t&(B^y))|0)+(Ig(t,26)^Ig(t,21)^Ig(t,7))|0)+((o&(Q|E)|Q&E)+(Ig(o,30)^Ig(o,19)^Ig(o,10))|0)|0,a[C+12>>2]=r,c=c+_|0,a[C+28>>2]=c,p=(_=52|g)+I|0,B=(_=(((a[_+34784>>2]+a[p>>2]|0)+B|0)+(y^c&(t^y))|0)+(Ig(c,26)^Ig(c,21)^Ig(c,7))|0)+((r&(Q|o)|Q&o)+(Ig(r,30)^Ig(r,19)^Ig(r,10))|0)|0,a[C+8>>2]=B,E=E+_|0,a[C+24>>2]=E,_=(h=56|g)+I|0,y=(h=(((a[h+34784>>2]+a[_>>2]|0)+y|0)+(t^E&(t^c))|0)+(Ig(E,26)^Ig(E,21)^Ig(E,7))|0)+((B&(o|r)|o&r)+(Ig(B,30)^Ig(B,19)^Ig(B,10))|0)|0,a[C+4>>2]=y,Q=Q+h|0,a[C+20>>2]=Q,h=(g|=60)+I|0,Q=(g=((t+(a[g+34784>>2]+a[h>>2]|0)|0)+(c^Q&(c^E))|0)+(Ig(Q,26)^Ig(Q,21)^Ig(Q,7))|0)+((y&(B|r)|B&r)+(Ig(y,30)^Ig(y,19)^Ig(y,10))|0)|0,a[C>>2]=Q,a[C+16>>2]=g+o,48!=(0|w);)t=a[b>>2],w=w+16|0,g=a[_>>2],Q=(B=a[e>>2]+(t+(Ig(g,15)^Ig(g,13)^g>>>10)|0)|0)+(Ig(o=a[s>>2],25)^Ig(o,14)^o>>>3)|0,a[(w<<2)+I>>2]=Q,E=(r=(B=(c=a[M>>2])+o|0)+(Ig(o=a[h>>2],15)^Ig(o,13)^o>>>10)|0)+(Ig(B=a[D>>2],25)^Ig(B,14)^B>>>3)|0,a[e+68>>2]=E,y=(n=((r=B)+(B=a[n>>2])|0)+(Ig(Q,15)^Ig(Q,13)^Q>>>10)|0)+(Ig(r=a[k>>2],25)^Ig(r,14)^r>>>3)|0,a[e+72>>2]=y,_=(h=((n=r)+(r=a[f>>2])|0)+(Ig(E,15)^Ig(E,13)^E>>>10)|0)+(Ig(n=a[d>>2],25)^Ig(n,14)^n>>>3)|0,a[e+76>>2]=_,f=(h=((h=n)+(n=a[p>>2])|0)+(Ig(y,15)^Ig(y,13)^y>>>10)|0)+(Ig(p=a[l>>2],25)^Ig(p,14)^p>>>3)|0,a[e+80>>2]=f,p=(s=(g+p|0)+(Ig(_,15)^Ig(_,13)^_>>>10)|0)+(Ig(h=a[u>>2],25)^Ig(h,14)^h>>>3)|0,a[e+84>>2]=p,h=((o+h|0)+(Ig(D=a[v>>2],25)^Ig(D,14)^D>>>3)|0)+(Ig(f,15)^Ig(f,13)^f>>>10)|0,a[e+88>>2]=h,E=((s=a[S>>2])+(E+(Ig(t,25)^Ig(t,14)^t>>>3)|0)|0)+(Ig(h,15)^Ig(h,13)^h>>>10)|0,a[e+96>>2]=E,s=((Q+D|0)+(Ig(s,25)^Ig(s,14)^s>>>3)|0)+(Ig(p,15)^Ig(p,13)^p>>>10)|0,a[e+92>>2]=s,_=(_+(c+(Ig(B,25)^Ig(B,14)^B>>>3)|0)|0)+(Ig(E,15)^Ig(E,13)^E>>>10)|0,a[e+104>>2]=_,t=(y+(t+(Ig(c,25)^Ig(c,14)^c>>>3)|0)|0)+(Ig(s,15)^Ig(s,13)^s>>>10)|0,a[e+100>>2]=t,c=(p+(r+(Ig(n,25)^Ig(n,14)^n>>>3)|0)|0)+(Ig(_,15)^Ig(_,13)^_>>>10)|0,a[e+112>>2]=c,t=(f+(B+(Ig(r,25)^Ig(r,14)^r>>>3)|0)|0)+(Ig(t,15)^Ig(t,13)^t>>>10)|0,a[e+108>>2]=t,F=e,N=(s+(g+(Ig(o,25)^Ig(o,14)^o>>>3)|0)|0)+(Ig(c,15)^Ig(c,13)^c>>>10)|0,a[F+120>>2]=N,g=(h+(n+(Ig(g,25)^Ig(g,14)^g>>>3)|0)|0)+(Ig(t,15)^Ig(t,13)^t>>>10)|0,a[e+116>>2]=g,F=e,N=(E+(o+(Ig(Q,25)^Ig(Q,14)^Q>>>3)|0)|0)+(Ig(g,15)^Ig(g,13)^g>>>10)|0,a[F+124>>2]=N;a[A>>2]=Q+a[A>>2],a[A+4>>2]=a[A+4>>2]+a[C+4>>2],a[A+8>>2]=a[A+8>>2]+a[C+8>>2],a[A+12>>2]=a[A+12>>2]+a[C+12>>2],a[A+16>>2]=a[A+16>>2]+a[C+16>>2],a[A+20>>2]=a[A+20>>2]+a[C+20>>2],a[A+24>>2]=a[A+24>>2]+a[C+24>>2],a[A+28>>2]=a[A+28>>2]+a[C+28>>2]}function b(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v,S,b,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0;n=e=n-288|0,c=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,E=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,y=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,_=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,s=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,p=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,f=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,Y=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,D=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,w=i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24,F=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,H=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,k=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,d=i[I+112|0]|i[I+113|0]<<8|i[I+114|0]<<16|i[I+115|0]<<24,M=i[I+96|0]|i[I+97|0]<<8|i[I+98|0]<<16|i[I+99|0]<<24,N=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,G=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,l=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,u=i[I+116|0]|i[I+117|0]<<8|i[I+118|0]<<16|i[I+119|0]<<24,r=i[I+100|0]|i[I+101|0]<<8|i[I+102|0]<<16|i[I+103|0]<<24,K=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,J=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,v=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,S=i[I+120|0]|i[I+121|0]<<8|i[I+122|0]<<16|i[I+123|0]<<24,t=i[I+104|0]|i[I+105|0]<<8|i[I+106|0]<<16|i[I+107|0]<<24,b=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,B=(Q=i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)^(o=i[I+108|0]|i[I+109|0]<<8|i[I+110|0]<<16|i[I+111|0]<<24)&(i[I+124|0]|i[I+125|0]<<8|i[I+126|0]<<16|i[I+127|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24)^(i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24),C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,J=K^t&S^J^v,C[A+24|0]=J,C[A+25|0]=J>>>8,C[A+26|0]=J>>>16,C[A+27|0]=J>>>24,G=N^r&u^G^l,C[A+20|0]=G,C[A+21|0]=G>>>8,C[A+22|0]=G>>>16,C[A+23|0]=G>>>24,H=F^M&d^H^k,C[A+16|0]=H,C[A+17|0]=H>>>8,C[A+18|0]=H>>>16,C[A+19|0]=H>>>24,Y=w&Q^Y^D^o,C[A+12|0]=Y,C[A+13|0]=Y>>>8,C[A+14|0]=Y>>>16,C[A+15|0]=Y>>>24,K=K&f^s^p^t,C[A+8|0]=K,C[A+9|0]=K>>>8,C[A+10|0]=K>>>16,C[A+11|0]=K>>>24,N=N&h^y^_^r,C[A+4|0]=N,C[A+5|0]=N>>>8,C[A+6|0]=N>>>16,C[A+7|0]=N>>>24,F=M^F&E^c^b,C[0|A]=F,C[A+1|0]=F>>>8,C[A+2|0]=F>>>16,C[A+3|0]=F>>>24,A=a[I+124>>2],a[e+280>>2]=a[I+120>>2],a[e+284>>2]=A,A=a[I+116>>2],a[e+272>>2]=a[I+112>>2],a[e+276>>2]=A,A=a[I+108>>2],a[e+248>>2]=a[I+104>>2],a[e+252>>2]=A,A=a[I+100>>2],a[e+240>>2]=a[I+96>>2],a[e+244>>2]=A,A=a[I+124>>2],a[e+232>>2]=a[I+120>>2],a[e+236>>2]=A,A=a[I+116>>2],a[e+224>>2]=a[I+112>>2],a[e+228>>2]=A,oA(g=e+256|0,e+240|0,e+224|0),A=a[e+268>>2],a[I+120>>2]=a[e+264>>2],a[I+124>>2]=A,A=a[e+260>>2],a[I+112>>2]=a[e+256>>2],a[I+116>>2]=A,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+108>>2],a[e+200>>2]=a[I+104>>2],a[e+204>>2]=A,A=a[I+100>>2],a[e+192>>2]=a[I+96>>2],a[e+196>>2]=A,oA(g,e+208|0,e+192|0),A=a[e+268>>2],a[I+104>>2]=a[e+264>>2],a[I+108>>2]=A,A=a[e+260>>2],a[I+96>>2]=a[e+256>>2],a[I+100>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,M=a[4+(A=I- -64|0)>>2],a[e+176>>2]=a[A>>2],a[e+180>>2]=M,M=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=M,M=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=M,oA(g,e+176|0,e+160|0),M=a[e+268>>2],a[I+88>>2]=a[e+264>>2],a[I+92>>2]=M,M=a[e+260>>2],a[I+80>>2]=a[e+256>>2],a[I+84>>2]=M,M=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=M,M=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=M,M=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=M,M=a[A+4>>2],a[e+128>>2]=a[A>>2],a[e+132>>2]=M,oA(g,e+144|0,e+128|0),M=a[e+268>>2],a[I+72>>2]=a[e+264>>2],a[I+76>>2]=M,M=a[e+260>>2],a[A>>2]=a[e+256>>2],a[A+4>>2]=M,M=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=M,M=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=M,M=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=M,M=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=M,oA(g,e+112|0,e+96|0),M=a[e+268>>2],a[I+56>>2]=a[e+264>>2],a[I+60>>2]=M,M=a[e+260>>2],a[I+48>>2]=a[e+256>>2],a[I+52>>2]=M,M=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=M,M=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=M,M=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=M,M=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=M,oA(g,e+80|0,e- -64|0),M=a[e+268>>2],a[I+40>>2]=a[e+264>>2],a[I+44>>2]=M,M=a[e+260>>2],a[I+32>>2]=a[e+256>>2],a[I+36>>2]=M,M=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=M,M=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=M,M=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=M,M=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=M,oA(g,e+48|0,e+32|0),M=a[e+268>>2],a[I+24>>2]=a[e+264>>2],a[I+28>>2]=M,M=a[e+260>>2],a[I+16>>2]=a[e+256>>2],a[I+20>>2]=M,M=a[e+284>>2],a[e+24>>2]=a[e+280>>2],a[e+28>>2]=M,M=a[e+276>>2],a[e+16>>2]=a[e+272>>2],a[e+20>>2]=M,M=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=M,M=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=M,oA(g,e+16|0,e),g=a[e+268>>2],a[I+8>>2]=a[e+264>>2],a[I+12>>2]=g,g=a[e+260>>2],a[I>>2]=a[e+256>>2],a[I+4>>2]=g,a[I+12>>2]=Y^(i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24),a[I+8>>2]=K^(i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24),a[I+4>>2]=N^(i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24),a[I>>2]=F^(i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24),a[A>>2]=H^(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24),a[I+68>>2]=G^(i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24),a[I+72>>2]=J^(i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24),a[I+76>>2]=B^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24),n=e+288|0}function M(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J=0;n=e=n-288|0,k=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,d=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,B=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,l=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,u=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,r=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,v=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,S=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,t=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,b=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,M=i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24,J=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,Q=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,F=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,N=i[I+112|0]|i[I+113|0]<<8|i[I+114|0]<<16|i[I+115|0]<<24,o=i[I+96|0]|i[I+97|0]<<8|i[I+98|0]<<16|i[I+99|0]<<24,c=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,E=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,K=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,Y=i[I+116|0]|i[I+117|0]<<8|i[I+118|0]<<16|i[I+119|0]<<24,y=i[I+100|0]|i[I+101|0]<<8|i[I+102|0]<<16|i[I+103|0]<<24,_=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,h=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,H=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,G=i[I+120|0]|i[I+121|0]<<8|i[I+122|0]<<16|i[I+123|0]<<24,s=i[I+104|0]|i[I+105|0]<<8|i[I+106|0]<<16|i[I+107|0]<<24,p=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(f=i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)^(D=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24)^(w=i[I+108|0]|i[I+109|0]<<8|i[I+110|0]<<16|i[I+111|0]<<24)&(i[I+124|0]|i[I+125|0]<<8|i[I+126|0]<<16|i[I+127|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24),C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=s&G^H^h^_,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=y&Y^K^E^c,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=J^o&N^F^Q,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,g=M&f^b^t^w,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=_&S^v^r^s,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=c&u^l^B^y,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=J&d^k^p^o,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,A=a[I+124>>2],a[e+280>>2]=a[I+120>>2],a[e+284>>2]=A,A=a[I+116>>2],a[e+272>>2]=a[I+112>>2],a[e+276>>2]=A,A=a[I+108>>2],a[e+248>>2]=a[I+104>>2],a[e+252>>2]=A,A=a[I+100>>2],a[e+240>>2]=a[I+96>>2],a[e+244>>2]=A,A=a[I+124>>2],a[e+232>>2]=a[I+120>>2],a[e+236>>2]=A,A=a[I+116>>2],a[e+224>>2]=a[I+112>>2],a[e+228>>2]=A,oA(g=e+256|0,e+240|0,e+224|0),A=a[e+268>>2],a[I+120>>2]=a[e+264>>2],a[I+124>>2]=A,A=a[e+260>>2],a[I+112>>2]=a[e+256>>2],a[I+116>>2]=A,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+108>>2],a[e+200>>2]=a[I+104>>2],a[e+204>>2]=A,A=a[I+100>>2],a[e+192>>2]=a[I+96>>2],a[e+196>>2]=A,oA(g,e+208|0,e+192|0),A=a[e+268>>2],a[I+104>>2]=a[e+264>>2],a[I+108>>2]=A,A=a[e+260>>2],a[I+96>>2]=a[e+256>>2],a[I+100>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,J=a[4+(A=I- -64|0)>>2],a[e+176>>2]=a[A>>2],a[e+180>>2]=J,J=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=J,J=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=J,oA(g,e+176|0,e+160|0),J=a[e+268>>2],a[I+88>>2]=a[e+264>>2],a[I+92>>2]=J,J=a[e+260>>2],a[I+80>>2]=a[e+256>>2],a[I+84>>2]=J,J=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=J,J=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=J,J=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=J,J=a[A+4>>2],a[e+128>>2]=a[A>>2],a[e+132>>2]=J,oA(g,e+144|0,e+128|0),J=a[e+268>>2],a[I+72>>2]=a[e+264>>2],a[I+76>>2]=J,J=a[e+260>>2],a[A>>2]=a[e+256>>2],a[A+4>>2]=J,J=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=J,J=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=J,J=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=J,J=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=J,oA(g,e+112|0,e+96|0),J=a[e+268>>2],a[I+56>>2]=a[e+264>>2],a[I+60>>2]=J,J=a[e+260>>2],a[I+48>>2]=a[e+256>>2],a[I+52>>2]=J,J=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=J,J=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=J,J=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=J,J=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=J,oA(g,e+80|0,e- -64|0),J=a[e+268>>2],a[I+40>>2]=a[e+264>>2],a[I+44>>2]=J,J=a[e+260>>2],a[I+32>>2]=a[e+256>>2],a[I+36>>2]=J,J=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=J,J=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=J,J=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=J,J=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=J,oA(g,e+48|0,e+32|0),J=a[e+268>>2],a[I+24>>2]=a[e+264>>2],a[I+28>>2]=J,J=a[e+260>>2],a[I+16>>2]=a[e+256>>2],a[I+20>>2]=J,J=a[e+284>>2],a[e+24>>2]=a[e+280>>2],a[e+28>>2]=J,J=a[e+276>>2],a[e+16>>2]=a[e+272>>2],a[e+20>>2]=J,J=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=J,J=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=J,oA(g,e+16|0,e),g=a[e+268>>2],a[I+8>>2]=a[e+264>>2],a[I+12>>2]=g,g=a[e+260>>2],a[I>>2]=a[e+256>>2],a[I+4>>2]=g,a[I+12>>2]=(i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24)^t,a[I+8>>2]=(i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24)^r,a[I+4>>2]=(i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24)^B,a[I>>2]=(i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24)^p,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^Q,a[I+68>>2]=(i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24)^E,a[I+72>>2]=(i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24)^h,a[I+76>>2]=D^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24),n=e+288|0}function F(A,g,I,e,B){var r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0;for(n=r=n-224|0,p=(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^e>>>29,f=(i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24)^e<<3,y=(i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24)^I>>>29,h=(i[0|(t=B+48|0)]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24)^I<<3,Q=B+16|0,o=B+32|0,c=B- -64|0,E=B+80|0;I=a[E+12>>2],a[r+216>>2]=a[E+8>>2],a[r+220>>2]=I,I=a[E+4>>2],a[r+208>>2]=a[E>>2],a[r+212>>2]=I,I=a[c+12>>2],a[r+184>>2]=a[c+8>>2],a[r+188>>2]=I,I=a[c+4>>2],a[r+176>>2]=a[c>>2],a[r+180>>2]=I,I=a[E+12>>2],a[r+168>>2]=a[E+8>>2],a[r+172>>2]=I,I=a[E+4>>2],a[r+160>>2]=a[E>>2],a[r+164>>2]=I,oA(e=r+192|0,r+176|0,r+160|0),I=a[r+204>>2],a[E+8>>2]=a[r+200>>2],a[E+12>>2]=I,I=a[r+196>>2],a[E>>2]=a[r+192>>2],a[E+4>>2]=I,I=a[t+12>>2],a[r+152>>2]=a[t+8>>2],a[r+156>>2]=I,I=a[t+4>>2],a[r+144>>2]=a[t>>2],a[r+148>>2]=I,I=a[c+12>>2],a[r+136>>2]=a[c+8>>2],a[r+140>>2]=I,I=a[c+4>>2],a[r+128>>2]=a[c>>2],a[r+132>>2]=I,oA(e,r+144|0,r+128|0),I=a[r+204>>2],a[c+8>>2]=a[r+200>>2],a[c+12>>2]=I,I=a[r+196>>2],a[c>>2]=a[r+192>>2],a[c+4>>2]=I,I=a[o+12>>2],a[r+120>>2]=a[o+8>>2],a[r+124>>2]=I,I=a[o+4>>2],a[r+112>>2]=a[o>>2],a[r+116>>2]=I,I=a[t+12>>2],a[r+104>>2]=a[t+8>>2],a[r+108>>2]=I,I=a[t+4>>2],a[r+96>>2]=a[t>>2],a[r+100>>2]=I,oA(e,r+112|0,r+96|0),I=a[r+204>>2],a[t+8>>2]=a[r+200>>2],a[t+12>>2]=I,I=a[r+196>>2],a[t>>2]=a[r+192>>2],a[t+4>>2]=I,I=a[Q+12>>2],a[r+88>>2]=a[Q+8>>2],a[r+92>>2]=I,I=a[Q+4>>2],a[r+80>>2]=a[Q>>2],a[r+84>>2]=I,I=a[o+12>>2],a[r+72>>2]=a[o+8>>2],a[r+76>>2]=I,I=a[o+4>>2],a[r+64>>2]=a[o>>2],a[r+68>>2]=I,oA(e,r+80|0,r- -64|0),I=a[r+204>>2],a[o+8>>2]=a[r+200>>2],a[o+12>>2]=I,I=a[r+196>>2],a[o>>2]=a[r+192>>2],a[o+4>>2]=I,I=a[B+12>>2],a[r+56>>2]=a[B+8>>2],a[r+60>>2]=I,I=a[B+4>>2],a[r+48>>2]=a[B>>2],a[r+52>>2]=I,I=a[Q+12>>2],a[r+40>>2]=a[Q+8>>2],a[r+44>>2]=I,I=a[Q+4>>2],a[r+32>>2]=a[Q>>2],a[r+36>>2]=I,oA(e,r+48|0,r+32|0),I=a[r+204>>2],a[Q+8>>2]=a[r+200>>2],a[Q+12>>2]=I,I=a[r+196>>2],a[Q>>2]=a[r+192>>2],a[Q+4>>2]=I,I=a[r+220>>2],a[r+24>>2]=a[r+216>>2],a[r+28>>2]=I,I=a[r+212>>2],a[r+16>>2]=a[r+208>>2],a[r+20>>2]=I,I=a[B+12>>2],a[r+8>>2]=a[B+8>>2],a[r+12>>2]=I,I=a[B+4>>2],a[r>>2]=a[B>>2],a[r+4>>2]=I,oA(e,r+16|0,r),s=a[r+192>>2],e=a[r+196>>2],I=a[r+200>>2],D=p^a[r+204>>2],a[B+12>>2]=D,w=I^f,a[B+8>>2]=w,k=e^y,a[B+4>>2]=k,d=h^s,a[B>>2]=d,7!=(0|(_=_+1|0)););A:{g:{I:{if(I=g-16|0){if(16==(0|I))break I;break g}l=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,t=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,Q=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,o=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,c=i[0|(g=B- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,E=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,p=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,f=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,y=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,h=i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24,s=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,_=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,e=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,I=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,g=i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24,B=D^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24)^(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24),C[A+12|0]=B,C[A+13|0]=B>>>8,C[A+14|0]=B>>>16,C[A+15|0]=B>>>24,g=w^s^g^I^e^_,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=k^E^p^f^y^h,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=d^l^t^Q^o^c,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24;break A}h=i[B+32|0]|i[B+33|0]<<8|i[B+34|0]<<16|i[B+35|0]<<24,s=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,_=i[B+36|0]|i[B+37|0]<<8|i[B+38|0]<<16|i[B+39|0]<<24,e=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,I=i[B+40|0]|i[B+41|0]<<8|i[B+42|0]<<16|i[B+43|0]<<24,g=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,y=D^(i[B+44|0]|i[B+45|0]<<8|i[B+46|0]<<16|i[B+47|0]<<24)^(i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24),C[A+12|0]=y,C[A+13|0]=y>>>8,C[A+14|0]=y>>>16,C[A+15|0]=y>>>24,g=w^g^I,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=k^e^_,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=d^h^s,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,p=i[B+48|0]|i[B+49|0]<<8|i[B+50|0]<<16|i[B+51|0]<<24,f=i[B+80|0]|i[B+81|0]<<8|i[B+82|0]<<16|i[B+83|0]<<24,y=i[0|(g=B- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,h=i[B+52|0]|i[B+53|0]<<8|i[B+54|0]<<16|i[B+55|0]<<24,s=i[B+84|0]|i[B+85|0]<<8|i[B+86|0]<<16|i[B+87|0]<<24,_=i[B+68|0]|i[B+69|0]<<8|i[B+70|0]<<16|i[B+71|0]<<24,e=i[B+56|0]|i[B+57|0]<<8|i[B+58|0]<<16|i[B+59|0]<<24,I=i[B+88|0]|i[B+89|0]<<8|i[B+90|0]<<16|i[B+91|0]<<24,g=i[B+72|0]|i[B+73|0]<<8|i[B+74|0]<<16|i[B+75|0]<<24,B=(i[B+60|0]|i[B+61|0]<<8|i[B+62|0]<<16|i[B+63|0]<<24)^(i[B+92|0]|i[B+93|0]<<8|i[B+94|0]<<16|i[B+95|0]<<24)^(i[B+76|0]|i[B+77|0]<<8|i[B+78|0]<<16|i[B+79|0]<<24),C[A+28|0]=B,C[A+29|0]=B>>>8,C[A+30|0]=B>>>16,C[A+31|0]=B>>>24,g=e^g^I,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=h^s^_,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=p^y^f,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24;break A}VA(A,0,g)}n=r+224|0}function N(A,g,I,C){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v,S,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0;n=e=n-320|0,a[e+280>>2]=0,a[e+284>>2]=0,a[e+272>>2]=0,a[e+276>>2]=0,a[e+264>>2]=0,a[e+268>>2]=0,a[e+256>>2]=0,a[e+260>>2]=0,OA(M=e+256|0,g,I),G=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,b=i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24,t=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,Q=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,o=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,c=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24,E=i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24,y=i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24,g=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,_=i[C+84|0]|i[C+85|0]<<8|i[C+86|0]<<16|i[C+87|0]<<24,h=i[C+116|0]|i[C+117|0]<<8|i[C+118|0]<<16|i[C+119|0]<<24,F=i[C+100|0]|i[C+101|0]<<8|i[C+102|0]<<16|i[C+103|0]<<24,N=i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24,s=i[C+92|0]|i[C+93|0]<<8|i[C+94|0]<<16|i[C+95|0]<<24,p=i[C+124|0]|i[C+125|0]<<8|i[C+126|0]<<16|i[C+127|0]<<24,K=i[C+108|0]|i[C+109|0]<<8|i[C+110|0]<<16|i[C+111|0]<<24,Y=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24,f=i[C+80|0]|i[C+81|0]<<8|i[C+82|0]<<16|i[C+83|0]<<24,D=i[C+112|0]|i[C+113|0]<<8|i[C+114|0]<<16|i[C+115|0]<<24,H=i[C+96|0]|i[C+97|0]<<8|i[C+98|0]<<16|i[C+99|0]<<24,w=a[e+272>>2],k=a[e+256>>2],d=a[e+260>>2],l=a[e+264>>2],u=a[e+268>>2],v=a[e+276>>2],S=a[e+284>>2],B=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,r=i[C+104|0]|i[C+105|0]<<8|i[C+106|0]<<16|i[C+107|0]<<24,a[e+280>>2]=B^r&(i[C+120|0]|i[C+121|0]<<8|i[C+122|0]<<16|i[C+123|0]<<24)^a[e+280>>2]^(i[C+88|0]|i[C+89|0]<<8|i[C+90|0]<<16|i[C+91|0]<<24),a[e+272>>2]=Y^H&D^f^w,a[e+284>>2]=N^K&p^s^S,a[e+276>>2]=g^F&h^_^v,a[e+268>>2]=K^N&y^E^u,a[e+264>>2]=c&B^o^l^r,a[e+260>>2]=F^g&Q^t^d,a[e+256>>2]=H^b&Y^G^k,VA(I+M|0,0,32-I|0),OA(A,M,I),I=a[e+280>>2],M=a[e+272>>2],F=a[e+284>>2],N=a[e+276>>2],K=a[e+256>>2],Y=a[e+260>>2],H=a[e+264>>2],G=a[e+268>>2],A=a[C+124>>2],a[e+312>>2]=a[C+120>>2],a[e+316>>2]=A,A=a[C+116>>2],a[e+304>>2]=a[C+112>>2],a[e+308>>2]=A,A=a[C+108>>2],a[e+248>>2]=a[C+104>>2],a[e+252>>2]=A,A=a[C+100>>2],a[e+240>>2]=a[C+96>>2],a[e+244>>2]=A,A=a[C+124>>2],a[e+232>>2]=a[C+120>>2],a[e+236>>2]=A,A=a[C+116>>2],a[e+224>>2]=a[C+112>>2],a[e+228>>2]=A,oA(g=e+288|0,e+240|0,e+224|0),A=a[e+300>>2],a[C+120>>2]=a[e+296>>2],a[C+124>>2]=A,A=a[e+292>>2],a[C+112>>2]=a[e+288>>2],a[C+116>>2]=A,A=a[C+92>>2],a[e+216>>2]=a[C+88>>2],a[e+220>>2]=A,A=a[C+84>>2],a[e+208>>2]=a[C+80>>2],a[e+212>>2]=A,A=a[C+108>>2],a[e+200>>2]=a[C+104>>2],a[e+204>>2]=A,A=a[C+100>>2],a[e+192>>2]=a[C+96>>2],a[e+196>>2]=A,oA(g,e+208|0,e+192|0),A=a[e+300>>2],a[C+104>>2]=a[e+296>>2],a[C+108>>2]=A,A=a[e+292>>2],a[C+96>>2]=a[e+288>>2],a[C+100>>2]=A,A=a[C+76>>2],a[e+184>>2]=a[C+72>>2],a[e+188>>2]=A,b=a[4+(A=C- -64|0)>>2],a[e+176>>2]=a[A>>2],a[e+180>>2]=b,b=a[C+92>>2],a[e+168>>2]=a[C+88>>2],a[e+172>>2]=b,b=a[C+84>>2],a[e+160>>2]=a[C+80>>2],a[e+164>>2]=b,oA(g,e+176|0,e+160|0),b=a[e+300>>2],a[C+88>>2]=a[e+296>>2],a[C+92>>2]=b,b=a[e+292>>2],a[C+80>>2]=a[e+288>>2],a[C+84>>2]=b,b=a[C+60>>2],a[e+152>>2]=a[C+56>>2],a[e+156>>2]=b,b=a[C+52>>2],a[e+144>>2]=a[C+48>>2],a[e+148>>2]=b,b=a[C+76>>2],a[e+136>>2]=a[C+72>>2],a[e+140>>2]=b,b=a[A+4>>2],a[e+128>>2]=a[A>>2],a[e+132>>2]=b,oA(g,e+144|0,e+128|0),b=a[e+300>>2],a[C+72>>2]=a[e+296>>2],a[C+76>>2]=b,b=a[e+292>>2],a[A>>2]=a[e+288>>2],a[A+4>>2]=b,b=a[C+44>>2],a[e+120>>2]=a[C+40>>2],a[e+124>>2]=b,b=a[C+36>>2],a[e+112>>2]=a[C+32>>2],a[e+116>>2]=b,b=a[C+60>>2],a[e+104>>2]=a[C+56>>2],a[e+108>>2]=b,b=a[C+52>>2],a[e+96>>2]=a[C+48>>2],a[e+100>>2]=b,oA(g,e+112|0,e+96|0),b=a[e+300>>2],a[C+56>>2]=a[e+296>>2],a[C+60>>2]=b,b=a[e+292>>2],a[C+48>>2]=a[e+288>>2],a[C+52>>2]=b,b=a[C+28>>2],a[e+88>>2]=a[C+24>>2],a[e+92>>2]=b,b=a[C+20>>2],a[e+80>>2]=a[C+16>>2],a[e+84>>2]=b,b=a[C+44>>2],a[e+72>>2]=a[C+40>>2],a[e+76>>2]=b,b=a[C+36>>2],a[e+64>>2]=a[C+32>>2],a[e+68>>2]=b,oA(g,e+80|0,e- -64|0),b=a[e+300>>2],a[C+40>>2]=a[e+296>>2],a[C+44>>2]=b,b=a[e+292>>2],a[C+32>>2]=a[e+288>>2],a[C+36>>2]=b,b=a[C+12>>2],a[e+56>>2]=a[C+8>>2],a[e+60>>2]=b,b=a[C+4>>2],a[e+48>>2]=a[C>>2],a[e+52>>2]=b,b=a[C+28>>2],a[e+40>>2]=a[C+24>>2],a[e+44>>2]=b,b=a[C+20>>2],a[e+32>>2]=a[C+16>>2],a[e+36>>2]=b,oA(g,e+48|0,e+32|0),b=a[e+300>>2],a[C+24>>2]=a[e+296>>2],a[C+28>>2]=b,b=a[e+292>>2],a[C+16>>2]=a[e+288>>2],a[C+20>>2]=b,b=a[e+316>>2],a[e+24>>2]=a[e+312>>2],a[e+28>>2]=b,b=a[e+308>>2],a[e+16>>2]=a[e+304>>2],a[e+20>>2]=b,b=a[C+12>>2],a[e+8>>2]=a[C+8>>2],a[e+12>>2]=b,b=a[C+4>>2],a[e>>2]=a[C>>2],a[e+4>>2]=b,oA(g,e+16|0,e),g=a[e+300>>2],a[C+8>>2]=a[e+296>>2],a[C+12>>2]=g,g=a[e+292>>2],a[C>>2]=a[e+288>>2],a[C+4>>2]=g,a[C+12>>2]=G^(i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24),a[C+8>>2]=H^(i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24),a[C+4>>2]=Y^(i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24),a[C>>2]=K^(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),a[A>>2]=M^(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24),a[C+68>>2]=N^(i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24),a[C+72>>2]=I^(i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24),a[C+76>>2]=F^(i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24),n=e+320|0}function K(A,g){var I,C,e,B,i,r,Q,o,c,E,y,_,n,s,p,f,D,w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0;J=GA(C=(f=a[g+12>>2])<<1,r=C>>31,f,l=f>>31),x=h,U=(q=GA(P=a[g+16>>2],Q=P>>31,o=(m=a[g+8>>2])<<1,_=o>>31))+J|0,J=h+x|0,J=U>>>0<q>>>0?J+1|0:J,x=(z=GA(O=(c=a[g+20>>2])<<1,n=O>>31,q=(R=a[g+4>>2])<<1,e=q>>31))+U|0,U=h+J|0,U=x>>>0<z>>>0?U+1|0:U,L=GA(I=a[g+24>>2],E=I>>31,z=(W=a[g>>2])<<1,B=z>>31),J=h+U|0,J=(x=L+x|0)>>>0<L>>>0?J+1|0:J,U=x,s=a[g+32>>2],x=GA(j=t(s,19),y=j>>31,s,w=s>>31),J=h+J|0,J=(U=U+x|0)>>>0<x>>>0?J+1|0:J,M=a[g+36>>2],x=GA(L=t(M,38),i=L>>31,k=(p=a[g+28>>2])<<1,u=k>>31),g=h+J|0,Z=U=x+U|0,x=U>>>0<x>>>0?g+1|0:g,g=GA(q,e,P,Q),J=h,U=GA(o,_,f,l),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,T=GA(c,d=c>>31,z,B),U=h+J|0,U=(g=T+g|0)>>>0<T>>>0?U+1|0:U,T=GA(j,y,k,u),J=h+U|0,J=(g=T+g|0)>>>0<T>>>0?J+1|0:J,U=GA(L,i,I,E),J=h+J|0,CA=g=U+g|0,X=g>>>0<U>>>0?J+1|0:J,J=GA(q,e,C,r),U=h,v=g=m,m=GA(g,V=g>>31,g,V),g=h+U|0,g=(J=m+J|0)>>>0<m>>>0?g+1|0:g,U=(m=GA(z,B,P,Q))+J|0,J=h+g|0,J=U>>>0<m>>>0?J+1|0:J,g=(m=GA(T=t(p,38),D=T>>31,p,S=p>>31))+U|0,U=h+J|0,U=g>>>0<m>>>0?U+1|0:U,g=(J=g)+(m=GA(j,y,g=I<<1,g>>31))|0,J=h+U|0,J=g>>>0<m>>>0?J+1|0:J,U=g,g=GA(L,i,O,n),J=h+J|0,F=U=U+g|0,N=J=g>>>0>U>>>0?J+1|0:J,g=J,K=U=U+33554432|0,Y=g=U>>>0<33554432?g+1|0:g,J=(J=g>>26)+X|0,CA=g=(U=(67108863&g)<<6|U>>>26)+CA|0,J=g>>>0<U>>>0?J+1|0:J,H=g=g+16777216|0,J=(J=(U=g>>>0<16777216?J+1|0:J)>>25)+x|0,g=(g=(33554431&U)<<7|g>>>25)>>>0>(U=g+Z|0)>>>0?J+1|0:J,Z=J=U+33554432|0,m=g=J>>>0<33554432?g+1|0:g,a[A+24>>2]=U-(-67108864&J),g=GA(z,B,v,V),J=h,x=GA(q,e,R,$=R>>31),U=h+J|0,U=(g=x+g|0)>>>0<x>>>0?U+1|0:U,X=GA(x=t(I,19),IA=x>>31,I,E),J=h+U|0,J=(g=X+g|0)>>>0<X>>>0?J+1|0:J,U=(X=GA(O,n,T,D))+g|0,g=h+J|0,g=U>>>0<X>>>0?g+1|0:g,AA=GA(j,y,X=P<<1,b=X>>31),J=h+g|0,J=(U=AA+U|0)>>>0<AA>>>0?J+1|0:J,g=U,U=GA(L,i,C,r),J=h+J|0,gA=g=g+U|0,AA=g>>>0<U>>>0?J+1|0:J,g=GA(O,n,x,IA),J=h,R=GA(z,B,R,$),U=h+J|0,U=(g=R+g|0)>>>0<R>>>0?U+1|0:U,R=GA(P,Q,T,D),J=h+U|0,J=(g=R+g|0)>>>0<R>>>0?J+1|0:J,U=(R=GA(j,y,C,r))+g|0,g=h+J|0,g=U>>>0<R>>>0?g+1|0:g,R=GA(L,i,v,V),J=h+g|0,eA=U=R+U|0,$=U>>>0<R>>>0?J+1|0:J,U=GA(g=t(c,38),g>>31,c,d),R=h,g=W,W=U,U=GA(g,J=g>>31,g,J),J=h+R|0,J=(g=W+U|0)>>>0<U>>>0?J+1|0:J,x=GA(x,IA,X,b),U=h+J|0,U=(g=x+g|0)>>>0<x>>>0?U+1|0:U,x=GA(C,r,T,D),J=h+U|0,J=(g=x+g|0)>>>0<x>>>0?J+1|0:J,U=(x=GA(j,y,o,_))+g|0,g=h+J|0,g=U>>>0<x>>>0?g+1|0:g,x=GA(q,e,L,i),J=h+g|0,R=U=x+U|0,W=J=U>>>0<x>>>0?J+1|0:J,IA=U=U+33554432|0,G=J=U>>>0<33554432?J+1|0:J,g=J>>26,J=(67108863&J)<<6|U>>>26,U=g+$|0,$=x=J+eA|0,J=J>>>0>x>>>0?U+1|0:U,eA=U=x+16777216|0,x=(33554431&(J=U>>>0<16777216?J+1|0:J))<<7|U>>>25,J=(J>>25)+AA|0,J=(U=x+gA|0)>>>0<x>>>0?J+1|0:J,AA=g=U+33554432|0,x=J=g>>>0<33554432?J+1|0:J,a[A+8>>2]=U-(-67108864&g),g=GA(o,_,c,d),J=h,U=GA(P,Q,C,r),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=GA(q,e,I,E),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=GA(z,B,p,S),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,gA=(U=GA(L,i,s,w))+g|0,g=h+J|0,U=(J=m>>26)+(U=U>>>0>gA>>>0?g+1|0:g)|0,Z=g=(m=(67108863&m)<<6|Z>>>26)+gA|0,J=g>>>0<m>>>0?U+1|0:U,gA=g=g+16777216|0,m=J=g>>>0<16777216?J+1|0:J,a[A+28>>2]=Z-(-33554432&g),g=GA(z,B,f,l),U=h,J=(V=GA(q,e,v,V))+g|0,g=h+U|0,g=J>>>0<V>>>0?g+1|0:g,J=(T=GA(I,E,T,D))+J|0,U=h+g|0,g=(j=GA(j,y,O,n))+J|0,J=h+(J>>>0<T>>>0?U+1|0:U)|0,J=g>>>0<j>>>0?J+1|0:J,U=GA(L,i,P,Q),J=h+J|0,J=(J=(g=U+g|0)>>>0<U>>>0?J+1|0:J)+(U=x>>26)|0,g=(U=x=(Z=g)+(g=(67108863&x)<<6|AA>>>26)|0)>>>0<g>>>0?J+1|0:J,j=J=U+16777216|0,x=g=J>>>0<16777216?g+1|0:g,a[A+12>>2]=U-(-33554432&J),g=GA(I,E,o,_),J=h,U=GA(P,Q,P,Q),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=GA(C,r,O,n),J=h+J|0,J=(g=U+g|0)>>>0<U>>>0?J+1|0:J,U=(P=GA(q,e,k,u))+g|0,g=h+J|0,g=U>>>0<P>>>0?g+1|0:g,J=(P=GA(z,B,s,w))+U|0,U=h+g|0,U=J>>>0<P>>>0?U+1|0:U,g=(P=GA(g=L,i,L=M,O=L>>31))+J|0,J=h+U|0,J=g>>>0<P>>>0?J+1|0:J,U=g,J=(g=m>>25)+J|0,J=(U=U+(m=(33554431&m)<<7|gA>>>25)|0)>>>0<m>>>0?J+1|0:J,P=g=U+33554432|0,m=J=g>>>0<33554432?J+1|0:J,a[A+32>>2]=U-(-67108864&g),J=x>>25,U=(x=(33554431&x)<<7|j>>>25)+(F-(g=-67108864&K)|0)|0,g=J+(N-((g>>>0>F>>>0)+Y|0)|0)|0,g=U>>>0<x>>>0?g+1|0:g,x=U,g=((67108863&(J=(U=U+33554432|0)>>>0<33554432?g+1|0:g))<<6|U>>>26)+(T=CA-(-33554432&H)|0)|0,a[A+20>>2]=g,a[A+16>>2]=x-(-67108864&U),g=GA(C,r,I,E),U=h,J=(x=GA(c,d,X,b))+g|0,g=h+U|0,g=J>>>0<x>>>0?g+1|0:g,U=(x=GA(o,_,p,S))+J|0,J=h+g|0,J=U>>>0<x>>>0?J+1|0:J,g=(x=GA(q,e,s,w))+U|0,U=h+J|0,U=g>>>0<x>>>0?U+1|0:U,x=(J=g)+(g=GA(z,B,L,O))|0,J=h+U|0,J=(g=g>>>0>x>>>0?J+1|0:J)+(J=m>>26)|0,g=(U=(m=(67108863&m)<<6|P>>>26)+x|0)>>>0<m>>>0?J+1|0:J,g=(J=U+16777216|0)>>>0<16777216?g+1|0:g,a[A+36>>2]=U-(-33554432&J),m=$-(-33554432&eA)|0,x=R-(U=-67108864&IA)|0,q=W-((U>>>0>R>>>0)+G|0)|0,g=GA((33554431&g)<<7|J>>>25,g>>25,19,0),J=h+q|0,g=g>>>0>(U=g+x|0)>>>0?J+1|0:J,g=((67108863&(g=(J=U+33554432|0)>>>0<33554432?g+1|0:g))<<6|J>>>26)+m|0,a[A+4>>2]=g,a[A>>2]=U-(-67108864&J)}function Y(A,g){var I,C,e,B,r,t,Q,o,c,E,y=0,_=0,h=0;n=I=n-416|0,C=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,e=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,B=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,r=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,h=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,t=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,Q=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,o=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,A=a[g+92>>2],a[I+408>>2]=a[g+88>>2],a[I+412>>2]=A,A=a[g+84>>2],a[I+400>>2]=a[g+80>>2],a[I+404>>2]=A,A=a[g+76>>2],a[I+376>>2]=a[g+72>>2],a[I+380>>2]=A,y=a[4+(A=_=g- -64|0)>>2],a[I+368>>2]=a[A>>2],a[I+372>>2]=y,A=a[g+92>>2],a[I+360>>2]=a[g+88>>2],a[I+364>>2]=A,A=a[g+84>>2],a[I+352>>2]=a[g+80>>2],a[I+356>>2]=A,oA(A=I+384|0,I+368|0,I+352|0),y=a[I+396>>2],a[g+88>>2]=a[I+392>>2],a[g+92>>2]=y,y=a[I+388>>2],a[g+80>>2]=a[I+384>>2],a[g+84>>2]=y,y=a[g+60>>2],a[I+344>>2]=a[g+56>>2],a[I+348>>2]=y,y=a[g+52>>2],a[I+336>>2]=a[g+48>>2],a[I+340>>2]=y,y=a[g+76>>2],a[I+328>>2]=a[g+72>>2],a[I+332>>2]=y,y=a[_+4>>2],a[I+320>>2]=a[_>>2],a[I+324>>2]=y,oA(A,I+336|0,I+320|0),y=a[I+396>>2],a[g+72>>2]=a[I+392>>2],a[g+76>>2]=y,y=a[I+388>>2],a[_>>2]=a[I+384>>2],a[_+4>>2]=y,y=a[g+44>>2],a[I+312>>2]=a[g+40>>2],a[I+316>>2]=y,y=a[g+36>>2],a[I+304>>2]=a[g+32>>2],a[I+308>>2]=y,y=a[g+60>>2],a[I+296>>2]=a[g+56>>2],a[I+300>>2]=y,y=a[g+52>>2],a[I+288>>2]=a[g+48>>2],a[I+292>>2]=y,oA(A,I+304|0,I+288|0),y=a[I+396>>2],a[g+56>>2]=a[I+392>>2],a[g+60>>2]=y,y=a[I+388>>2],a[g+48>>2]=a[I+384>>2],a[g+52>>2]=y,y=a[g+28>>2],a[I+280>>2]=a[g+24>>2],a[I+284>>2]=y,y=a[g+20>>2],a[I+272>>2]=a[g+16>>2],a[I+276>>2]=y,y=a[g+44>>2],a[I+264>>2]=a[g+40>>2],a[I+268>>2]=y,y=a[g+36>>2],a[I+256>>2]=a[g+32>>2],a[I+260>>2]=y,oA(A,I+272|0,I+256|0),y=a[I+396>>2],a[g+40>>2]=a[I+392>>2],a[g+44>>2]=y,y=a[I+388>>2],a[g+32>>2]=a[I+384>>2],a[g+36>>2]=y,y=a[g+12>>2],a[I+248>>2]=a[g+8>>2],a[I+252>>2]=y,y=a[g+4>>2],a[I+240>>2]=a[g>>2],a[I+244>>2]=y,y=a[g+28>>2],a[I+232>>2]=a[g+24>>2],a[I+236>>2]=y,y=a[g+20>>2],a[I+224>>2]=a[g+16>>2],a[I+228>>2]=y,oA(A,I+240|0,I+224|0),y=a[I+396>>2],a[g+24>>2]=a[I+392>>2],a[g+28>>2]=y,y=a[I+388>>2],a[g+16>>2]=a[I+384>>2],a[g+20>>2]=y,y=a[I+412>>2],a[I+216>>2]=a[I+408>>2],a[I+220>>2]=y,y=a[I+404>>2],a[I+208>>2]=a[I+400>>2],a[I+212>>2]=y,y=a[g+12>>2],a[I+200>>2]=a[g+8>>2],a[I+204>>2]=y,y=a[g+4>>2],a[I+192>>2]=a[g>>2],a[I+196>>2]=y,oA(A,I+208|0,I+192|0),y=a[I+384>>2],c=a[I+388>>2],E=a[I+392>>2],a[g+12>>2]=a[I+396>>2]^Q,a[g+8>>2]=t^E,a[g+4>>2]=h^c,a[g>>2]=y^o,h=a[g+92>>2],a[I+408>>2]=a[g+88>>2],a[I+412>>2]=h,h=a[g+84>>2],a[I+400>>2]=a[g+80>>2],a[I+404>>2]=h,h=a[g+76>>2],a[I+184>>2]=a[g+72>>2],a[I+188>>2]=h,h=a[_+4>>2],a[I+176>>2]=a[_>>2],a[I+180>>2]=h,h=a[g+92>>2],a[I+168>>2]=a[g+88>>2],a[I+172>>2]=h,h=a[g+84>>2],a[I+160>>2]=a[g+80>>2],a[I+164>>2]=h,oA(A,I+176|0,I+160|0),h=a[I+396>>2],a[g+88>>2]=a[I+392>>2],a[g+92>>2]=h,h=a[I+388>>2],a[g+80>>2]=a[I+384>>2],a[g+84>>2]=h,h=a[g+60>>2],a[I+152>>2]=a[g+56>>2],a[I+156>>2]=h,h=a[g+52>>2],a[I+144>>2]=a[g+48>>2],a[I+148>>2]=h,h=a[g+76>>2],a[I+136>>2]=a[g+72>>2],a[I+140>>2]=h,h=a[_+4>>2],a[I+128>>2]=a[_>>2],a[I+132>>2]=h,oA(A,I+144|0,I+128|0),h=a[I+396>>2],a[g+72>>2]=a[I+392>>2],a[g+76>>2]=h,h=a[I+388>>2],a[_>>2]=a[I+384>>2],a[_+4>>2]=h,_=a[g+44>>2],a[I+120>>2]=a[g+40>>2],a[I+124>>2]=_,_=a[g+36>>2],a[I+112>>2]=a[g+32>>2],a[I+116>>2]=_,_=a[g+60>>2],a[I+104>>2]=a[g+56>>2],a[I+108>>2]=_,_=a[g+52>>2],a[I+96>>2]=a[g+48>>2],a[I+100>>2]=_,oA(A,I+112|0,I+96|0),_=a[I+396>>2],a[g+56>>2]=a[I+392>>2],a[g+60>>2]=_,_=a[I+388>>2],a[g+48>>2]=a[I+384>>2],a[g+52>>2]=_,_=a[g+28>>2],a[I+88>>2]=a[g+24>>2],a[I+92>>2]=_,_=a[g+20>>2],a[I+80>>2]=a[g+16>>2],a[I+84>>2]=_,_=a[g+44>>2],a[I+72>>2]=a[g+40>>2],a[I+76>>2]=_,_=a[g+36>>2],a[I+64>>2]=a[g+32>>2],a[I+68>>2]=_,oA(A,I+80|0,I- -64|0),_=a[I+396>>2],a[g+40>>2]=a[I+392>>2],a[g+44>>2]=_,_=a[I+388>>2],a[g+32>>2]=a[I+384>>2],a[g+36>>2]=_,_=a[g+12>>2],a[I+56>>2]=a[g+8>>2],a[I+60>>2]=_,_=a[g+4>>2],a[I+48>>2]=a[g>>2],a[I+52>>2]=_,_=a[g+28>>2],a[I+40>>2]=a[g+24>>2],a[I+44>>2]=_,_=a[g+20>>2],a[I+32>>2]=a[g+16>>2],a[I+36>>2]=_,oA(A,I+48|0,I+32|0),_=a[I+396>>2],a[g+24>>2]=a[I+392>>2],a[g+28>>2]=_,_=a[I+388>>2],a[g+16>>2]=a[I+384>>2],a[g+20>>2]=_,_=a[I+412>>2],a[I+24>>2]=a[I+408>>2],a[I+28>>2]=_,_=a[I+404>>2],a[I+16>>2]=a[I+400>>2],a[I+20>>2]=_,_=a[g+12>>2],a[I+8>>2]=a[g+8>>2],a[I+12>>2]=_,_=a[g+4>>2],a[I>>2]=a[g>>2],a[I+4>>2]=_,oA(A,I+16|0,I),A=a[I+384>>2],_=a[I+388>>2],h=a[I+392>>2],a[g+12>>2]=a[I+396>>2]^r,a[g+8>>2]=h^B,a[g+4>>2]=_^e,a[g>>2]=A^C,n=I+416|0}function H(A,g,I){var C,e,B,r,t,Q,o,c,E,y,_,h,s,p,f=0,D=0,w=0;for(n=C=n-288|0,_=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,s=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,o=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,c=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,E=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,p=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=I+112|0,A=33620224^(y=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24),a[g>>2]=A,a[(t=I+96|0)>>2]=1427652059^y,a[(Q=I+80|0)>>2]=A,D=y^p,a[(A=I- -64|0)>>2]=D,a[I+56>>2]=1110511904,a[I+60>>2]=-584534669,a[(e=I+48|0)>>2]=1427652059,a[e+4>>2]=-248528275,a[I+40>>2]=1496785429,a[I+44>>2]=1652156816,a[(B=I+32|0)>>2]=33620224,a[B+4>>2]=218629379,a[I+24>>2]=1110511904,a[I+28>>2]=-584534669,a[(r=I+16|0)>>2]=1427652059,a[r+4>>2]=-248528275,a[I>>2]=D,D=1652156816^E,a[I+124>>2]=D,w=1496785429^c,a[I+120>>2]=w,f=218629379^o,a[I+116>>2]=f,a[I+108>>2]=-584534669^E,a[I+104>>2]=1110511904^c,a[I+100>>2]=-248528275^o,a[I+92>>2]=D,a[I+88>>2]=w,a[I+84>>2]=f,D=E^s,a[I+76>>2]=D,w=c^h,a[I+72>>2]=w,f=o^_,a[I+68>>2]=f,a[I+12>>2]=D,a[I+8>>2]=w,a[I+4>>2]=f,w=0;D=a[g+12>>2],a[C+280>>2]=a[g+8>>2],a[C+284>>2]=D,D=a[g+4>>2],a[C+272>>2]=a[g>>2],a[C+276>>2]=D,D=a[t+12>>2],a[C+248>>2]=a[t+8>>2],a[C+252>>2]=D,D=a[t+4>>2],a[C+240>>2]=a[t>>2],a[C+244>>2]=D,D=a[g+12>>2],a[C+232>>2]=a[g+8>>2],a[C+236>>2]=D,D=a[g+4>>2],a[C+224>>2]=a[g>>2],a[C+228>>2]=D,oA(D=C+256|0,C+240|0,C+224|0),f=a[C+268>>2],a[g+8>>2]=a[C+264>>2],a[g+12>>2]=f,f=a[C+260>>2],a[g>>2]=a[C+256>>2],a[g+4>>2]=f,f=a[Q+12>>2],a[C+216>>2]=a[Q+8>>2],a[C+220>>2]=f,f=a[Q+4>>2],a[C+208>>2]=a[Q>>2],a[C+212>>2]=f,f=a[t+12>>2],a[C+200>>2]=a[t+8>>2],a[C+204>>2]=f,f=a[t+4>>2],a[C+192>>2]=a[t>>2],a[C+196>>2]=f,oA(D,C+208|0,C+192|0),f=a[C+268>>2],a[t+8>>2]=a[C+264>>2],a[t+12>>2]=f,f=a[C+260>>2],a[t>>2]=a[C+256>>2],a[t+4>>2]=f,f=a[A+12>>2],a[C+184>>2]=a[A+8>>2],a[C+188>>2]=f,f=a[A+4>>2],a[C+176>>2]=a[A>>2],a[C+180>>2]=f,f=a[Q+12>>2],a[C+168>>2]=a[Q+8>>2],a[C+172>>2]=f,f=a[Q+4>>2],a[C+160>>2]=a[Q>>2],a[C+164>>2]=f,oA(D,C+176|0,C+160|0),f=a[C+268>>2],a[Q+8>>2]=a[C+264>>2],a[Q+12>>2]=f,f=a[C+260>>2],a[Q>>2]=a[C+256>>2],a[Q+4>>2]=f,f=a[e+12>>2],a[C+152>>2]=a[e+8>>2],a[C+156>>2]=f,f=a[e+4>>2],a[C+144>>2]=a[e>>2],a[C+148>>2]=f,f=a[A+12>>2],a[C+136>>2]=a[A+8>>2],a[C+140>>2]=f,f=a[A+4>>2],a[C+128>>2]=a[A>>2],a[C+132>>2]=f,oA(D,C+144|0,C+128|0),f=a[C+268>>2],a[A+8>>2]=a[C+264>>2],a[A+12>>2]=f,f=a[C+260>>2],a[A>>2]=a[C+256>>2],a[A+4>>2]=f,f=a[B+12>>2],a[C+120>>2]=a[B+8>>2],a[C+124>>2]=f,f=a[B+4>>2],a[C+112>>2]=a[B>>2],a[C+116>>2]=f,f=a[e+12>>2],a[C+104>>2]=a[e+8>>2],a[C+108>>2]=f,f=a[e+4>>2],a[C+96>>2]=a[e>>2],a[C+100>>2]=f,oA(D,C+112|0,C+96|0),f=a[C+268>>2],a[e+8>>2]=a[C+264>>2],a[e+12>>2]=f,f=a[C+260>>2],a[e>>2]=a[C+256>>2],a[e+4>>2]=f,f=a[r+12>>2],a[C+88>>2]=a[r+8>>2],a[C+92>>2]=f,f=a[r+4>>2],a[C+80>>2]=a[r>>2],a[C+84>>2]=f,f=a[B+12>>2],a[C+72>>2]=a[B+8>>2],a[C+76>>2]=f,f=a[B+4>>2],a[C+64>>2]=a[B>>2],a[C+68>>2]=f,oA(D,C+80|0,C- -64|0),f=a[C+268>>2],a[B+8>>2]=a[C+264>>2],a[B+12>>2]=f,f=a[C+260>>2],a[B>>2]=a[C+256>>2],a[B+4>>2]=f,f=a[I+12>>2],a[C+56>>2]=a[I+8>>2],a[C+60>>2]=f,f=a[I+4>>2],a[C+48>>2]=a[I>>2],a[C+52>>2]=f,f=a[r+12>>2],a[C+40>>2]=a[r+8>>2],a[C+44>>2]=f,f=a[r+4>>2],a[C+32>>2]=a[r>>2],a[C+36>>2]=f,oA(D,C+48|0,C+32|0),f=a[C+268>>2],a[r+8>>2]=a[C+264>>2],a[r+12>>2]=f,f=a[C+260>>2],a[r>>2]=a[C+256>>2],a[r+4>>2]=f,f=a[C+284>>2],a[C+24>>2]=a[C+280>>2],a[C+28>>2]=f,f=a[C+276>>2],a[C+16>>2]=a[C+272>>2],a[C+20>>2]=f,f=a[I+12>>2],a[C+8>>2]=a[I+8>>2],a[C+12>>2]=f,f=a[I+4>>2],a[C>>2]=a[I>>2],a[C+4>>2]=f,oA(D,C+16|0,C),D=a[C+268>>2],a[I+8>>2]=a[C+264>>2],a[I+12>>2]=D,D=a[C+260>>2],a[I>>2]=a[C+256>>2],a[I+4>>2]=D,a[I+12>>2]=(i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24)^s,a[I+8>>2]=(i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24)^h,a[I+4>>2]=(i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24)^_,a[I>>2]=(i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24)^p,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^y,a[I+68>>2]=(i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24)^o,a[I+72>>2]=(i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24)^c,a[I+76>>2]=(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24)^E,10!=(0|(w=w+1|0)););n=C+288|0}function G(A,g,I,e,B){var r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0;for(r=n+-64|0,t=a[A+60>>2],Q=a[A+56>>2],L=a[A+52>>2],R=a[A+48>>2],o=a[A+44>>2],c=a[A+40>>2],E=a[A+36>>2],y=a[A+32>>2],_=a[A+28>>2],h=a[A+24>>2],s=a[A+20>>2],p=a[A+16>>2],f=a[A+12>>2],D=a[A+8>>2],w=a[A+4>>2],k=a[A>>2];;){if(!B&e>>>0>63|B)d=I;else{if(a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,a[r+24>>2]=0,a[r+28>>2]=0,a[r+16>>2]=0,a[r+20>>2]=0,a[r+8>>2]=0,a[r+12>>2]=0,a[r>>2]=0,a[r+4>>2]=0,u=0,e|B)for(;C[u+r|0]=i[g+u|0],!B&(u=u+1|0)>>>0<e>>>0|B;);g=d=r,X=I}for(T=20,l=k,K=w,Y=D,J=f,u=p,I=s,S=h,b=_,M=y,x=E,H=c,v=t,m=Q,U=L,G=R,F=o;N=u,l=Ig((u=l+u|0)^G,16),N=G=Ig(N^(M=l+M|0),12),G=Ig((P=u+G|0)^l,8),u=Ig(N^(M=G+M|0),7),v=Ig((l=b+J|0)^v,16),b=Ig((F=v+F|0)^b,12),J=Ig((Y=S+Y|0)^m,16),S=Ig((H=J+H|0)^S,12),m=(q=l+b|0)+u|0,z=Ig((Y=S+Y|0)^J,8),l=Ig(m^z,16),J=Ig((K=I+K|0)^U,16),I=Ig((x=J+x|0)^I,12),N=u,U=Ig((K=I+K|0)^J,8),N=Ig(N^(u=(j=U+x|0)+l|0),12),m=Ig(l^(J=N+m|0),8),u=Ig((x=m+u|0)^N,7),N=M,M=Y,l=Ig(v^q,8),Y=Ig((v=l+F|0)^b,7),U=Ig((M=M+Y|0)^U,16),F=Ig((b=N+U|0)^Y,12),U=Ig(U^(Y=F+M|0),8),b=Ig((M=b+U|0)^F,7),F=v,v=K,K=Ig((H=H+z|0)^S,7),S=F+(G=Ig((v=v+K|0)^G,16))|0,F=v,v=Ig(S^K,12),G=Ig(G^(K=F+v|0),8),S=Ig((F=S+G|0)^v,7),N=H,v=l,l=Ig(I^j,7),v=Ig(v^(H=l+P|0),16),P=Ig((I=N+v|0)^l,12),v=Ig(v^(l=P+H|0),8),I=Ig((H=I+v|0)^P,7),T=T-2|0;);if(T=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,P=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,q=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,z=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,j=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,N=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,O=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,V=i[g+32|0]|i[g+33|0]<<8|i[g+34|0]<<16|i[g+35|0]<<24,Z=i[g+36|0]|i[g+37|0]<<8|i[g+38|0]<<16|i[g+39|0]<<24,W=i[g+40|0]|i[g+41|0]<<8|i[g+42|0]<<16|i[g+43|0]<<24,$=i[g+44|0]|i[g+45|0]<<8|i[g+46|0]<<16|i[g+47|0]<<24,AA=i[g+48|0]|i[g+49|0]<<8|i[g+50|0]<<16|i[g+51|0]<<24,gA=i[g+52|0]|i[g+53|0]<<8|i[g+54|0]<<16|i[g+55|0]<<24,IA=i[g+56|0]|i[g+57|0]<<8|i[g+58|0]<<16|i[g+59|0]<<24,CA=i[g+60|0]|i[g+61|0]<<8|i[g+62|0]<<16|i[g+63|0]<<24,l=l+k^(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),C[0|d]=l,C[d+1|0]=l>>>8,C[d+2|0]=l>>>16,C[d+3|0]=l>>>24,l=v+t^CA,C[d+60|0]=l,C[d+61|0]=l>>>8,C[d+62|0]=l>>>16,C[d+63|0]=l>>>24,l=m+Q^IA,C[d+56|0]=l,C[d+57|0]=l>>>8,C[d+58|0]=l>>>16,C[d+59|0]=l>>>24,l=U+L^gA,C[d+52|0]=l,C[d+53|0]=l>>>8,C[d+54|0]=l>>>16,C[d+55|0]=l>>>24,l=G+R^AA,C[d+48|0]=l,C[d+49|0]=l>>>8,C[d+50|0]=l>>>16,C[d+51|0]=l>>>24,l=F+o^$,C[d+44|0]=l,C[d+45|0]=l>>>8,C[d+46|0]=l>>>16,C[d+47|0]=l>>>24,l=H+c^W,C[d+40|0]=l,C[d+41|0]=l>>>8,C[d+42|0]=l>>>16,C[d+43|0]=l>>>24,l=x+E^Z,C[d+36|0]=l,C[d+37|0]=l>>>8,C[d+38|0]=l>>>16,C[d+39|0]=l>>>24,l=M+y^V,C[d+32|0]=l,C[d+33|0]=l>>>8,C[d+34|0]=l>>>16,C[d+35|0]=l>>>24,b=b+_^O,C[d+28|0]=b,C[d+29|0]=b>>>8,C[d+30|0]=b>>>16,C[d+31|0]=b>>>24,S=N^S+h,C[d+24|0]=S,C[d+25|0]=S>>>8,C[d+26|0]=S>>>16,C[d+27|0]=S>>>24,I=j^I+s,C[d+20|0]=I,C[d+21|0]=I>>>8,C[d+22|0]=I>>>16,C[d+23|0]=I>>>24,I=z^u+p,C[d+16|0]=I,C[d+17|0]=I>>>8,C[d+18|0]=I>>>16,C[d+19|0]=I>>>24,I=q^J+f,C[d+12|0]=I,C[d+13|0]=I>>>8,C[d+14|0]=I>>>16,C[d+15|0]=I>>>24,I=P^Y+D,C[d+8|0]=I,C[d+9|0]=I>>>8,C[d+10|0]=I>>>16,C[d+11|0]=I>>>24,I=T^K+w,C[d+4|0]=I,C[d+5|0]=I>>>8,C[d+6|0]=I>>>16,C[d+7|0]=I>>>24,L=!(R=R+1|0)+L|0,!B&e>>>0<=64){if(!(!(e|B)|!B&e>>>0>63|!!(0|B)))for(u=0;C[u+X|0]=i[d+u|0],e>>>0>(u=u+1|0)>>>0;);a[A+52>>2]=L,a[A+48>>2]=R;break}g=g- -64|0,I=d- -64|0,B=B-1|0,B=(e=e+-64|0)>>>0<4294967232?B+1|0:B}}function J(A,g){var I,e=0,B=0,i=0,r=0,t=0,Q=0,o=0;n=I=n-704|0,e=80+((B=a[A+72>>2]>>>3&127)+A|0)|0,B>>>0>=112?(OA(e,34608,128-B|0),f(A,B=A+80|0,I,I+640|0),VA(B,0,112)):OA(e,34608,112-B|0),Q=(i=a[A+64>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+68>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[A+192|0]=e,C[A+193|0]=e>>>8,C[A+194|0]=e>>>16,C[A+195|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[A+196|0]=B,C[A+197|0]=B>>>8,C[A+198|0]=B>>>16,C[A+199|0]=B>>>24,Q=(i=a[A+72>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+76>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[A+200|0]=e,C[A+201|0]=e>>>8,C[A+202|0]=e>>>16,C[A+203|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[A+204|0]=B,C[A+205|0]=B>>>8,C[A+206|0]=B>>>16,C[A+207|0]=B>>>24,f(A,A+80|0,I,I+640|0),Q=(i=a[A>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+4>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[0|g]=e,C[g+1|0]=e>>>8,C[g+2|0]=e>>>16,C[g+3|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+4|0]=B,C[g+5|0]=B>>>8,C[g+6|0]=B>>>16,C[g+7|0]=B>>>24,Q=(i=a[A+8>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+12>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+8|0]=e,C[g+9|0]=e>>>8,C[g+10|0]=e>>>16,C[g+11|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+12|0]=B,C[g+13|0]=B>>>8,C[g+14|0]=B>>>16,C[g+15|0]=B>>>24,Q=(i=a[A+16>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+20>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+16|0]=e,C[g+17|0]=e>>>8,C[g+18|0]=e>>>16,C[g+19|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+20|0]=B,C[g+21|0]=B>>>8,C[g+22|0]=B>>>16,C[g+23|0]=B>>>24,Q=(i=a[A+24>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+28>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+24|0]=e,C[g+25|0]=e>>>8,C[g+26|0]=e>>>16,C[g+27|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+28|0]=B,C[g+29|0]=B>>>8,C[g+30|0]=B>>>16,C[g+31|0]=B>>>24,Q=(i=a[A+32>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+36>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+32|0]=e,C[g+33|0]=e>>>8,C[g+34|0]=e>>>16,C[g+35|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+36|0]=B,C[g+37|0]=B>>>8,C[g+38|0]=B>>>16,C[g+39|0]=B>>>24,Q=(i=a[A+40>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+44>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+40|0]=e,C[g+41|0]=e>>>8,C[g+42|0]=e>>>16,C[g+43|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+44|0]=B,C[g+45|0]=B>>>8,C[g+46|0]=B>>>16,C[g+47|0]=B>>>24,Q=(i=a[A+48>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,o=r<<24,r=(t=-16777216&i)>>>24|0,e=o|t<<8|-16777216&((255&(e=a[A+52>>2]))<<24|i>>>8)|16711680&((16777215&e)<<8|i>>>24)|e>>>8&65280|e>>>24,C[g+48|0]=e,C[g+49|0]=e>>>8,C[g+50|0]=e>>>16,C[g+51|0]=e>>>24,e=B|r|Q,B=0,B|=e,C[g+52|0]=B,C[g+53|0]=B>>>8,C[g+54|0]=B>>>16,C[g+55|0]=B>>>24,Q=(i=a[A+56>>2])<<24|(65280&i)<<8,B=(r=16711680&i)>>>8|0,e=g,o=r<<24,r=(t=-16777216&i)>>>24|0,g=o|t<<8|-16777216&((255&(g=a[A+60>>2]))<<24|i>>>8)|16711680&((16777215&g)<<8|i>>>24)|g>>>8&65280|g>>>24,C[e+56|0]=g,C[e+57|0]=g>>>8,C[e+58|0]=g>>>16,C[e+59|0]=g>>>24,g=B|r|Q,g|=B=0,C[e+60|0]=g,C[e+61|0]=g>>>8,C[e+62|0]=g>>>16,C[e+63|0]=g>>>24,dg(I,704),dg(A,208),n=I+704|0}function U(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,d,l,u,v=0;n=e=n-224|0,o=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,c=i[0|(v=I- -64|0)]|i[v+1|0]<<8|i[v+2|0]<<16|i[v+3|0]<<24,E=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,y=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,_=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,B=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,h=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,s=i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24,p=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,f=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,D=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,r=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,w=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,k=i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24,d=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,l=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,u=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,t=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(Q=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^(i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)&(i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24)^(i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24)^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24),C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=l&u^k^d^w^r,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=f&D^s^p^h^B,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=y&_^o^c^E^t,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,A=a[v+4>>2],a[e+176>>2]=a[v>>2],a[e+180>>2]=A,A=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=A,A=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=A,oA(A=e+192|0,e+176|0,e+160|0),g=a[e+204>>2],a[I+88>>2]=a[e+200>>2],a[I+92>>2]=g,g=a[e+196>>2],a[I+80>>2]=a[e+192>>2],a[I+84>>2]=g,g=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=g,g=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=g,g=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=g,g=a[v+4>>2],a[e+128>>2]=a[v>>2],a[e+132>>2]=g,oA(A,e+144|0,e+128|0),g=a[e+204>>2],a[I+72>>2]=a[e+200>>2],a[I+76>>2]=g,g=a[e+196>>2],a[v>>2]=a[e+192>>2],a[v+4>>2]=g,g=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=g,g=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=g,g=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=g,g=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=g,oA(A,e+112|0,e+96|0),g=a[e+204>>2],a[I+56>>2]=a[e+200>>2],a[I+60>>2]=g,g=a[e+196>>2],a[I+48>>2]=a[e+192>>2],a[I+52>>2]=g,g=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=g,g=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=g,g=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=g,g=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=g,oA(A,e+80|0,e- -64|0),g=a[e+204>>2],a[I+40>>2]=a[e+200>>2],a[I+44>>2]=g,g=a[e+196>>2],a[I+32>>2]=a[e+192>>2],a[I+36>>2]=g,g=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=g,g=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=g,g=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=g,g=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=g,oA(A,e+48|0,e+32|0),g=a[e+204>>2],a[I+24>>2]=a[e+200>>2],a[I+28>>2]=g,g=a[e+196>>2],a[I+16>>2]=a[e+192>>2],a[I+20>>2]=g,g=a[e+220>>2],a[e+24>>2]=a[e+216>>2],a[e+28>>2]=g,g=a[e+212>>2],a[e+16>>2]=a[e+208>>2],a[e+20>>2]=g,g=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=g,g=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=g,oA(A,e+16|0,e),A=a[e+192>>2],g=a[e+196>>2],v=a[e+200>>2],a[I+12>>2]=Q^a[e+204>>2],a[I+8>>2]=v^r,a[I+4>>2]=g^B,a[I>>2]=A^t,n=e+224|0}function x(A,g,I){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w=0,k=0,d=0,l=0,u=0;n=e=n-224|0,d=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,k=i[0|(w=I- -64|0)]|i[w+1|0]<<8|i[w+2|0]<<16|i[w+3|0]<<24,B=i[I+80|0]|i[I+81|0]<<8|i[I+82|0]<<16|i[I+83|0]<<24,r=i[I+32|0]|i[I+33|0]<<8|i[I+34|0]<<16|i[I+35|0]<<24,t=i[I+48|0]|i[I+49|0]<<8|i[I+50|0]<<16|i[I+51|0]<<24,l=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,Q=i[I+68|0]|i[I+69|0]<<8|i[I+70|0]<<16|i[I+71|0]<<24,o=i[I+84|0]|i[I+85|0]<<8|i[I+86|0]<<16|i[I+87|0]<<24,c=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,E=i[I+36|0]|i[I+37|0]<<8|i[I+38|0]<<16|i[I+39|0]<<24,y=i[I+52|0]|i[I+53|0]<<8|i[I+54|0]<<16|i[I+55|0]<<24,u=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,_=i[I+72|0]|i[I+73|0]<<8|i[I+74|0]<<16|i[I+75|0]<<24,h=i[I+88|0]|i[I+89|0]<<8|i[I+90|0]<<16|i[I+91|0]<<24,s=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,p=i[I+40|0]|i[I+41|0]<<8|i[I+42|0]<<16|i[I+43|0]<<24,f=i[I+56|0]|i[I+57|0]<<8|i[I+58|0]<<16|i[I+59|0]<<24,D=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,g=(i[I+44|0]|i[I+45|0]<<8|i[I+46|0]<<16|i[I+47|0]<<24)&(i[I+60|0]|i[I+61|0]<<8|i[I+62|0]<<16|i[I+63|0]<<24)^(i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24)^(i[I+76|0]|i[I+77|0]<<8|i[I+78|0]<<16|i[I+79|0]<<24)^(i[I+92|0]|i[I+93|0]<<8|i[I+94|0]<<16|i[I+95|0]<<24)^(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24),C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,u=p&f^u^h^s^_,C[A+8|0]=u,C[A+9|0]=u>>>8,C[A+10|0]=u>>>16,C[A+11|0]=u>>>24,l=E&y^l^o^c^Q,C[A+4|0]=l,C[A+5|0]=l>>>8,C[A+6|0]=l>>>16,C[A+7|0]=l>>>24,d=r&t^d^k^B^D,C[0|A]=d,C[A+1|0]=d>>>8,C[A+2|0]=d>>>16,C[A+3|0]=d>>>24,A=a[I+92>>2],a[e+216>>2]=a[I+88>>2],a[e+220>>2]=A,A=a[I+84>>2],a[e+208>>2]=a[I+80>>2],a[e+212>>2]=A,A=a[I+76>>2],a[e+184>>2]=a[I+72>>2],a[e+188>>2]=A,A=a[w+4>>2],a[e+176>>2]=a[w>>2],a[e+180>>2]=A,A=a[I+92>>2],a[e+168>>2]=a[I+88>>2],a[e+172>>2]=A,A=a[I+84>>2],a[e+160>>2]=a[I+80>>2],a[e+164>>2]=A,oA(A=e+192|0,e+176|0,e+160|0),k=a[e+204>>2],a[I+88>>2]=a[e+200>>2],a[I+92>>2]=k,k=a[e+196>>2],a[I+80>>2]=a[e+192>>2],a[I+84>>2]=k,k=a[I+60>>2],a[e+152>>2]=a[I+56>>2],a[e+156>>2]=k,k=a[I+52>>2],a[e+144>>2]=a[I+48>>2],a[e+148>>2]=k,k=a[I+76>>2],a[e+136>>2]=a[I+72>>2],a[e+140>>2]=k,k=a[w+4>>2],a[e+128>>2]=a[w>>2],a[e+132>>2]=k,oA(A,e+144|0,e+128|0),k=a[e+204>>2],a[I+72>>2]=a[e+200>>2],a[I+76>>2]=k,k=a[e+196>>2],a[w>>2]=a[e+192>>2],a[w+4>>2]=k,w=a[I+44>>2],a[e+120>>2]=a[I+40>>2],a[e+124>>2]=w,w=a[I+36>>2],a[e+112>>2]=a[I+32>>2],a[e+116>>2]=w,w=a[I+60>>2],a[e+104>>2]=a[I+56>>2],a[e+108>>2]=w,w=a[I+52>>2],a[e+96>>2]=a[I+48>>2],a[e+100>>2]=w,oA(A,e+112|0,e+96|0),w=a[e+204>>2],a[I+56>>2]=a[e+200>>2],a[I+60>>2]=w,w=a[e+196>>2],a[I+48>>2]=a[e+192>>2],a[I+52>>2]=w,w=a[I+28>>2],a[e+88>>2]=a[I+24>>2],a[e+92>>2]=w,w=a[I+20>>2],a[e+80>>2]=a[I+16>>2],a[e+84>>2]=w,w=a[I+44>>2],a[e+72>>2]=a[I+40>>2],a[e+76>>2]=w,w=a[I+36>>2],a[e+64>>2]=a[I+32>>2],a[e+68>>2]=w,oA(A,e+80|0,e- -64|0),w=a[e+204>>2],a[I+40>>2]=a[e+200>>2],a[I+44>>2]=w,w=a[e+196>>2],a[I+32>>2]=a[e+192>>2],a[I+36>>2]=w,w=a[I+12>>2],a[e+56>>2]=a[I+8>>2],a[e+60>>2]=w,w=a[I+4>>2],a[e+48>>2]=a[I>>2],a[e+52>>2]=w,w=a[I+28>>2],a[e+40>>2]=a[I+24>>2],a[e+44>>2]=w,w=a[I+20>>2],a[e+32>>2]=a[I+16>>2],a[e+36>>2]=w,oA(A,e+48|0,e+32|0),w=a[e+204>>2],a[I+24>>2]=a[e+200>>2],a[I+28>>2]=w,w=a[e+196>>2],a[I+16>>2]=a[e+192>>2],a[I+20>>2]=w,w=a[e+220>>2],a[e+24>>2]=a[e+216>>2],a[e+28>>2]=w,w=a[e+212>>2],a[e+16>>2]=a[e+208>>2],a[e+20>>2]=w,w=a[I+12>>2],a[e+8>>2]=a[I+8>>2],a[e+12>>2]=w,w=a[I+4>>2],a[e>>2]=a[I>>2],a[e+4>>2]=w,oA(A,e+16|0,e),A=a[e+192>>2],w=a[e+196>>2],k=a[e+200>>2],a[I+12>>2]=g^a[e+204>>2],a[I+8>>2]=k^u,a[I+4>>2]=w^l,a[I>>2]=A^d,n=e+224|0}function m(A,g){var I,C,e,B,r,t,Q,o,c,E=0,y=0;n=I=n-288|0,C=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,e=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,B=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,r=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,t=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,Q=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,o=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,c=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,A=a[g+124>>2],a[I+280>>2]=a[g+120>>2],a[I+284>>2]=A,A=a[g+116>>2],a[I+272>>2]=a[g+112>>2],a[I+276>>2]=A,A=a[g+108>>2],a[I+248>>2]=a[g+104>>2],a[I+252>>2]=A,A=a[g+100>>2],a[I+240>>2]=a[g+96>>2],a[I+244>>2]=A,A=a[g+124>>2],a[I+232>>2]=a[g+120>>2],a[I+236>>2]=A,A=a[g+116>>2],a[I+224>>2]=a[g+112>>2],a[I+228>>2]=A,oA(y=I+256|0,I+240|0,I+224|0),A=a[I+268>>2],a[g+120>>2]=a[I+264>>2],a[g+124>>2]=A,A=a[I+260>>2],a[g+112>>2]=a[I+256>>2],a[g+116>>2]=A,A=a[g+92>>2],a[I+216>>2]=a[g+88>>2],a[I+220>>2]=A,A=a[g+84>>2],a[I+208>>2]=a[g+80>>2],a[I+212>>2]=A,A=a[g+108>>2],a[I+200>>2]=a[g+104>>2],a[I+204>>2]=A,A=a[g+100>>2],a[I+192>>2]=a[g+96>>2],a[I+196>>2]=A,oA(y,I+208|0,I+192|0),A=a[I+268>>2],a[g+104>>2]=a[I+264>>2],a[g+108>>2]=A,A=a[I+260>>2],a[g+96>>2]=a[I+256>>2],a[g+100>>2]=A,A=a[g+76>>2],a[I+184>>2]=a[g+72>>2],a[I+188>>2]=A,E=a[4+(A=g- -64|0)>>2],a[I+176>>2]=a[A>>2],a[I+180>>2]=E,E=a[g+92>>2],a[I+168>>2]=a[g+88>>2],a[I+172>>2]=E,E=a[g+84>>2],a[I+160>>2]=a[g+80>>2],a[I+164>>2]=E,oA(y,I+176|0,I+160|0),E=a[I+268>>2],a[g+88>>2]=a[I+264>>2],a[g+92>>2]=E,E=a[I+260>>2],a[g+80>>2]=a[I+256>>2],a[g+84>>2]=E,E=a[g+60>>2],a[I+152>>2]=a[g+56>>2],a[I+156>>2]=E,E=a[g+52>>2],a[I+144>>2]=a[g+48>>2],a[I+148>>2]=E,E=a[g+76>>2],a[I+136>>2]=a[g+72>>2],a[I+140>>2]=E,E=a[A+4>>2],a[I+128>>2]=a[A>>2],a[I+132>>2]=E,oA(y,I+144|0,I+128|0),E=a[I+268>>2],a[g+72>>2]=a[I+264>>2],a[g+76>>2]=E,E=a[I+260>>2],a[A>>2]=a[I+256>>2],a[A+4>>2]=E,E=a[g+44>>2],a[I+120>>2]=a[g+40>>2],a[I+124>>2]=E,E=a[g+36>>2],a[I+112>>2]=a[g+32>>2],a[I+116>>2]=E,E=a[g+60>>2],a[I+104>>2]=a[g+56>>2],a[I+108>>2]=E,E=a[g+52>>2],a[I+96>>2]=a[g+48>>2],a[I+100>>2]=E,oA(y,I+112|0,I+96|0),E=a[I+268>>2],a[g+56>>2]=a[I+264>>2],a[g+60>>2]=E,E=a[I+260>>2],a[g+48>>2]=a[I+256>>2],a[g+52>>2]=E,E=a[g+28>>2],a[I+88>>2]=a[g+24>>2],a[I+92>>2]=E,E=a[g+20>>2],a[I+80>>2]=a[g+16>>2],a[I+84>>2]=E,E=a[g+44>>2],a[I+72>>2]=a[g+40>>2],a[I+76>>2]=E,E=a[g+36>>2],a[I+64>>2]=a[g+32>>2],a[I+68>>2]=E,oA(y,I+80|0,I- -64|0),E=a[I+268>>2],a[g+40>>2]=a[I+264>>2],a[g+44>>2]=E,E=a[I+260>>2],a[g+32>>2]=a[I+256>>2],a[g+36>>2]=E,E=a[g+12>>2],a[I+56>>2]=a[g+8>>2],a[I+60>>2]=E,E=a[g+4>>2],a[I+48>>2]=a[g>>2],a[I+52>>2]=E,E=a[g+28>>2],a[I+40>>2]=a[g+24>>2],a[I+44>>2]=E,E=a[g+20>>2],a[I+32>>2]=a[g+16>>2],a[I+36>>2]=E,oA(y,I+48|0,I+32|0),E=a[I+268>>2],a[g+24>>2]=a[I+264>>2],a[g+28>>2]=E,E=a[I+260>>2],a[g+16>>2]=a[I+256>>2],a[g+20>>2]=E,E=a[I+284>>2],a[I+24>>2]=a[I+280>>2],a[I+28>>2]=E,E=a[I+276>>2],a[I+16>>2]=a[I+272>>2],a[I+20>>2]=E,E=a[g+12>>2],a[I+8>>2]=a[g+8>>2],a[I+12>>2]=E,E=a[g+4>>2],a[I>>2]=a[g>>2],a[I+4>>2]=E,oA(y,I+16|0,I),y=a[I+268>>2],a[g+8>>2]=a[I+264>>2],a[g+12>>2]=y,y=a[I+260>>2],a[g>>2]=a[I+256>>2],a[g+4>>2]=y,a[g+12>>2]=(i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)^o,a[g+8>>2]=(i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24)^Q,a[g+4>>2]=(i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24)^t,a[g>>2]=(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24)^c,a[A>>2]=(i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24)^r,a[g+68>>2]=(i[g+68|0]|i[g+69|0]<<8|i[g+70|0]<<16|i[g+71|0]<<24)^B,a[g+72>>2]=(i[g+72|0]|i[g+73|0]<<8|i[g+74|0]<<16|i[g+75|0]<<24)^e,a[g+76>>2]=(i[g+76|0]|i[g+77|0]<<8|i[g+78|0]<<16|i[g+79|0]<<24)^C,n=I+288|0}function P(A,g,I,C){var e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k=0,d=0,l=0,u=0;n=e=n-240|0,a[e+200>>2]=0,a[e+204>>2]=0,a[e+192>>2]=0,a[e+196>>2]=0,OA(d=e+192|0,g,I),l=i[C+16|0]|i[C+17|0]<<8|i[C+18|0]<<16|i[C+19|0]<<24,u=i[0|(g=C- -64|0)]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,k=i[C+80|0]|i[C+81|0]<<8|i[C+82|0]<<16|i[C+83|0]<<24,B=i[C+32|0]|i[C+33|0]<<8|i[C+34|0]<<16|i[C+35|0]<<24,r=i[C+48|0]|i[C+49|0]<<8|i[C+50|0]<<16|i[C+51|0]<<24,t=i[C+20|0]|i[C+21|0]<<8|i[C+22|0]<<16|i[C+23|0]<<24,Q=i[C+68|0]|i[C+69|0]<<8|i[C+70|0]<<16|i[C+71|0]<<24,o=i[C+84|0]|i[C+85|0]<<8|i[C+86|0]<<16|i[C+87|0]<<24,c=i[C+36|0]|i[C+37|0]<<8|i[C+38|0]<<16|i[C+39|0]<<24,E=i[C+52|0]|i[C+53|0]<<8|i[C+54|0]<<16|i[C+55|0]<<24,y=i[C+24|0]|i[C+25|0]<<8|i[C+26|0]<<16|i[C+27|0]<<24,_=i[C+72|0]|i[C+73|0]<<8|i[C+74|0]<<16|i[C+75|0]<<24,h=i[C+88|0]|i[C+89|0]<<8|i[C+90|0]<<16|i[C+91|0]<<24,s=i[C+40|0]|i[C+41|0]<<8|i[C+42|0]<<16|i[C+43|0]<<24,p=i[C+56|0]|i[C+57|0]<<8|i[C+58|0]<<16|i[C+59|0]<<24,f=a[e+192>>2],D=a[e+196>>2],w=a[e+200>>2],a[e+204>>2]=(i[C+44|0]|i[C+45|0]<<8|i[C+46|0]<<16|i[C+47|0]<<24)&(i[C+60|0]|i[C+61|0]<<8|i[C+62|0]<<16|i[C+63|0]<<24)^(i[C+28|0]|i[C+29|0]<<8|i[C+30|0]<<16|i[C+31|0]<<24)^(i[C+76|0]|i[C+77|0]<<8|i[C+78|0]<<16|i[C+79|0]<<24)^a[e+204>>2]^(i[C+92|0]|i[C+93|0]<<8|i[C+94|0]<<16|i[C+95|0]<<24),a[e+200>>2]=s&p^h^w^_^y,a[e+196>>2]=c&E^o^D^Q^t,a[e+192>>2]=B&r^l^u^k^f,VA(I+d|0,0,16-I|0),OA(A,d,I),I=a[e+192>>2],d=a[e+196>>2],l=a[e+200>>2],u=a[e+204>>2],A=a[C+92>>2],a[e+232>>2]=a[C+88>>2],a[e+236>>2]=A,A=a[C+84>>2],a[e+224>>2]=a[C+80>>2],a[e+228>>2]=A,A=a[C+76>>2],a[e+184>>2]=a[C+72>>2],a[e+188>>2]=A,A=a[g+4>>2],a[e+176>>2]=a[g>>2],a[e+180>>2]=A,A=a[C+92>>2],a[e+168>>2]=a[C+88>>2],a[e+172>>2]=A,A=a[C+84>>2],a[e+160>>2]=a[C+80>>2],a[e+164>>2]=A,oA(A=e+208|0,e+176|0,e+160|0),k=a[e+220>>2],a[C+88>>2]=a[e+216>>2],a[C+92>>2]=k,k=a[e+212>>2],a[C+80>>2]=a[e+208>>2],a[C+84>>2]=k,k=a[C+60>>2],a[e+152>>2]=a[C+56>>2],a[e+156>>2]=k,k=a[C+52>>2],a[e+144>>2]=a[C+48>>2],a[e+148>>2]=k,k=a[C+76>>2],a[e+136>>2]=a[C+72>>2],a[e+140>>2]=k,k=a[g+4>>2],a[e+128>>2]=a[g>>2],a[e+132>>2]=k,oA(A,e+144|0,e+128|0),k=a[e+220>>2],a[C+72>>2]=a[e+216>>2],a[C+76>>2]=k,k=a[e+212>>2],a[g>>2]=a[e+208>>2],a[g+4>>2]=k,g=a[C+44>>2],a[e+120>>2]=a[C+40>>2],a[e+124>>2]=g,g=a[C+36>>2],a[e+112>>2]=a[C+32>>2],a[e+116>>2]=g,g=a[C+60>>2],a[e+104>>2]=a[C+56>>2],a[e+108>>2]=g,g=a[C+52>>2],a[e+96>>2]=a[C+48>>2],a[e+100>>2]=g,oA(A,e+112|0,e+96|0),g=a[e+220>>2],a[C+56>>2]=a[e+216>>2],a[C+60>>2]=g,g=a[e+212>>2],a[C+48>>2]=a[e+208>>2],a[C+52>>2]=g,g=a[C+28>>2],a[e+88>>2]=a[C+24>>2],a[e+92>>2]=g,g=a[C+20>>2],a[e+80>>2]=a[C+16>>2],a[e+84>>2]=g,g=a[C+44>>2],a[e+72>>2]=a[C+40>>2],a[e+76>>2]=g,g=a[C+36>>2],a[e+64>>2]=a[C+32>>2],a[e+68>>2]=g,oA(A,e+80|0,e- -64|0),g=a[e+220>>2],a[C+40>>2]=a[e+216>>2],a[C+44>>2]=g,g=a[e+212>>2],a[C+32>>2]=a[e+208>>2],a[C+36>>2]=g,g=a[C+12>>2],a[e+56>>2]=a[C+8>>2],a[e+60>>2]=g,g=a[C+4>>2],a[e+48>>2]=a[C>>2],a[e+52>>2]=g,g=a[C+28>>2],a[e+40>>2]=a[C+24>>2],a[e+44>>2]=g,g=a[C+20>>2],a[e+32>>2]=a[C+16>>2],a[e+36>>2]=g,oA(A,e+48|0,e+32|0),g=a[e+220>>2],a[C+24>>2]=a[e+216>>2],a[C+28>>2]=g,g=a[e+212>>2],a[C+16>>2]=a[e+208>>2],a[C+20>>2]=g,g=a[e+236>>2],a[e+24>>2]=a[e+232>>2],a[e+28>>2]=g,g=a[e+228>>2],a[e+16>>2]=a[e+224>>2],a[e+20>>2]=g,g=a[C+12>>2],a[e+8>>2]=a[C+8>>2],a[e+12>>2]=g,g=a[C+4>>2],a[e>>2]=a[C>>2],a[e+4>>2]=g,oA(A,e+16|0,e),A=a[e+208>>2],g=a[e+212>>2],k=a[e+216>>2],a[C+12>>2]=u^a[e+220>>2],a[C+8>>2]=k^l,a[C+4>>2]=g^d,a[C>>2]=A^I,n=e+240|0}function R(A,g,I){var e,r=0,t=0,Q=0,o=0,c=0;n=e=n+-64|0;A:{if((I-65&255)>>>0>191){if(t=-1,!(i[A+80|0]|i[A+81|0]<<8|i[A+82|0]<<16|i[A+83|0]<<24|i[A+84|0]|i[A+85|0]<<8|i[A+86|0]<<16|i[A+87|0]<<24)){if((Q=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)>>>0>=129){if(o=r=i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24,r=(Q=128+(t=i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)|0)>>>0<128?r+1|0:r,C[A+64|0]=Q,C[A+65|0]=Q>>>8,C[A+66|0]=Q>>>16,C[A+67|0]=Q>>>24,C[A+68|0]=r,C[A+69|0]=r>>>8,C[A+70|0]=r>>>16,C[A+71|0]=r>>>24,r=i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24,r=(c=t=-1==(0|o)&t>>>0>4294967167)>>>0>(t=t+(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)|0)>>>0?r+1|0:r,C[A+72|0]=t,C[A+73|0]=t>>>8,C[A+74|0]=t>>>16,C[A+75|0]=t>>>24,C[A+76|0]=r,C[A+77|0]=r>>>8,C[A+78|0]=r>>>16,C[A+79|0]=r>>>24,s(A,r=A+96|0),t=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)-128|0,C[A+352|0]=t,C[A+353|0]=t>>>8,C[A+354|0]=t>>>16,C[A+355|0]=t>>>24,t>>>0>=129)break A;OA(r,A+224|0,t),Q=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24}t=c=i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24,t=(o=Q+(r=i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)|0)>>>0<Q>>>0?t+1|0:t,C[A+64|0]=o,C[A+65|0]=o>>>8,C[A+66|0]=o>>>16,C[A+67|0]=o>>>24,C[A+68|0]=t,C[A+69|0]=t>>>8,C[A+70|0]=t>>>16,C[A+71|0]=t>>>24,t=(0|t)==(0|c)&r>>>0>o>>>0|t>>>0<c>>>0,r=i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24,r=(c=t)>>>0>(t=t+(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)|0)>>>0?r+1|0:r,C[A+72|0]=t,C[A+73|0]=t>>>8,C[A+74|0]=t>>>16,C[A+75|0]=t>>>24,C[A+76|0]=r,C[A+77|0]=r>>>8,C[A+78|0]=r>>>16,C[A+79|0]=r>>>24,i[A+356|0]&&(C[A+88|0]=255,C[A+89|0]=255,C[A+90|0]=255,C[A+91|0]=255,C[A+92|0]=255,C[A+93|0]=255,C[A+94|0]=255,C[A+95|0]=255),C[A+80|0]=255,C[A+81|0]=255,C[A+82|0]=255,C[A+83|0]=255,C[A+84|0]=255,C[A+85|0]=255,C[A+86|0]=255,C[A+87|0]=255,VA((t=A+96|0)+Q|0,0,256-Q|0),s(A,t),r=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[e>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[e+4>>2]=r,r=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[e+8>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[e+12>>2]=r,r=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[e+16>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[e+20>>2]=r,r=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[e+24>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[e+28>>2]=r,r=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[e+32>>2]=i[A+32|0]|i[A+33|0]<<8|i[A+34|0]<<16|i[A+35|0]<<24,a[e+36>>2]=r,r=i[A+44|0]|i[A+45|0]<<8|i[A+46|0]<<16|i[A+47|0]<<24,a[e+40>>2]=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[e+44>>2]=r,r=i[A+52|0]|i[A+53|0]<<8|i[A+54|0]<<16|i[A+55|0]<<24,a[e+48>>2]=i[A+48|0]|i[A+49|0]<<8|i[A+50|0]<<16|i[A+51|0]<<24,a[e+52>>2]=r,r=i[A+60|0]|i[A+61|0]<<8|i[A+62|0]<<16|i[A+63|0]<<24,a[e+56>>2]=i[A+56|0]|i[A+57|0]<<8|i[A+58|0]<<16|i[A+59|0]<<24,a[e+60>>2]=r,OA(g,e,I),dg(A,64),dg(t,256),t=0}return n=e- -64|0,t}ig(),B()}E(1268,1130,306,1074),B()}function L(A,g){var I,e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w=0,k=0,l=0,u=0,v=0,S=0,b=0;for(n=I=n-320|0,V(e=A+40|0,g),a[A+84>>2]=0,a[A+88>>2]=0,a[A+80>>2]=1,a[A+92>>2]=0,a[A+96>>2]=0,a[A+100>>2]=0,a[A+104>>2]=0,a[A+108>>2]=0,a[A+112>>2]=0,a[A+116>>2]=0,K(S=I+240|0,e),d(u=I+192|0,S,1328),b=-1,B=a[I+240>>2]-1|0,a[I+240>>2]=B,a[I+192>>2]=a[I+192>>2]+1,r=a[I+244>>2],t=a[I+248>>2],Q=a[I+252>>2],o=a[I+256>>2],c=a[I+260>>2],E=a[I+264>>2],y=a[I+268>>2],_=a[I+272>>2],h=a[I+276>>2],K(v=I+144|0,u),d(v,v,u),K(A,v),d(A,A,u),d(A,A,S),n=k=n-144|0,K(l=k+96|0,A),K(w=k+48|0,l),K(w,w),d(w,A,w),d(l,l,w),K(l,l),d(l,w,l),K(w,l),K(w,w),K(w,w),K(w,w),K(w,w),d(l,w,l),K(w,l),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(w,w,l),K(k,w),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),K(k,k),d(w,k,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(l,w,l),K(w,l),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(w,w,l),K(k,w),w=1;K(k,k),100!=(0|(w=w+1|0)););d(w=k+48|0,k,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),K(w,w),d(l=k+96|0,w,l),K(l,l),K(l,l),d(A,l,A),n=k+144|0,d(A,A,v),d(A,A,S),K(w=I+96|0,A),d(w,w,u),w=a[I+132>>2],a[I+84>>2]=w-h,k=a[I+128>>2],a[I+80>>2]=k-_,l=a[I+124>>2],a[I+76>>2]=l-y,u=a[I+120>>2],a[I+72>>2]=u-E,v=a[I+116>>2],a[I+68>>2]=v-c,S=a[I+112>>2],a[I+64>>2]=S-o,s=a[I+108>>2],a[I+60>>2]=s-Q,p=a[I+104>>2],a[I+56>>2]=p-t,f=a[I+100>>2],a[I+52>>2]=f-r,D=a[I+96>>2],a[I+48>>2]=D-B,yA(I,I+48|0);A:{if(!kA(I,32)){if(a[I+36>>2]=w+h,a[I+32>>2]=k+_,a[I+28>>2]=l+y,a[I+24>>2]=u+E,a[I+20>>2]=v+c,a[I+16>>2]=S+o,a[I+12>>2]=Q+s,a[I+8>>2]=t+p,a[I+4>>2]=r+f,a[I>>2]=B+D,yA(w=I+288|0,I),!kA(w,32))break A;d(A,A,1376)}yA(I+288|0,A),(1&C[I+288|0])==(i[g+31|0]>>>7|0)&&(a[A>>2]=0-a[A>>2],a[A+36>>2]=0-a[A+36>>2],a[A+32>>2]=0-a[A+32>>2],a[A+28>>2]=0-a[A+28>>2],a[A+24>>2]=0-a[A+24>>2],a[A+20>>2]=0-a[A+20>>2],a[A+16>>2]=0-a[A+16>>2],a[A+12>>2]=0-a[A+12>>2],a[A+8>>2]=0-a[A+8>>2],a[A+4>>2]=0-a[A+4>>2]),d(A+120|0,A,e),b=0}return n=I+320|0,b}function T(A,g,I){var e,B,a,r,t,Q,o,c,E,y,_,n,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0;for(D=1634760805,s=e=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24,w=B=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,k=a=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,d=r=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,S=857760878,l=t=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,p=Q=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,v=o=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,M=c=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,g=2036477234,f=E=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,h=1797285236,F=y=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,b=_=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,I=n=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24;u=Ig(s+S|0,7)^M,N=Ig(u+S|0,9)^b,d=Ig(I+D|0,7)^d,K=Ig(d+D|0,9)^v,H=Ig(K+d|0,13)^I,k=Ig(h+f|0,7)^k,Y=Ig(k+h|0,9)^p,v=Ig(k+Y|0,13)^f,f=Ig(Y+v|0,18)^h,p=Ig(g+l|0,7)^F,I=H^Ig(f+p|0,7),b=N^Ig(I+f|0,9),F=Ig(I+b|0,13)^p,h=Ig(b+F|0,18)^f,w=Ig(g+p|0,9)^w,l=Ig(w+p|0,13)^l,g=Ig(l+w|0,18)^g,f=Ig(g+u|0,7)^v,v=Ig(f+g|0,9)^K,M=Ig(f+v|0,13)^u,g=Ig(v+M|0,18)^g,u=Ig(u+N|0,13)^s,s=Ig(u+N|0,18)^S,l=Ig(s+d|0,7)^l,p=Ig(l+s|0,9)^Y,d=Ig(p+l|0,13)^d,S=Ig(p+d|0,18)^s,D=Ig(K+H|0,18)^D,s=Ig(D+k|0,7)^u,w=Ig(s+D|0,9)^w,k=Ig(s+w|0,13)^k,D=Ig(w+k|0,18)^D,u=G>>>0<18,G=G+2|0,u;);h=h+1797285236|0,C[A+60|0]=h,C[A+61|0]=h>>>8,C[A+62|0]=h>>>16,C[A+63|0]=h>>>24,h=F+y|0,C[A+56|0]=h,C[A+57|0]=h>>>8,C[A+58|0]=h>>>16,C[A+59|0]=h>>>24,h=b+_|0,C[A+52|0]=h,C[A+53|0]=h>>>8,C[A+54|0]=h>>>16,C[A+55|0]=h>>>24,I=I+n|0,C[A+48|0]=I,C[A+49|0]=I>>>8,C[A+50|0]=I>>>16,C[A+51|0]=I>>>24,I=f+E|0,C[A+44|0]=I,C[A+45|0]=I>>>8,C[A+46|0]=I>>>16,C[A+47|0]=I>>>24,g=g+2036477234|0,C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,g=M+c|0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,g=v+o|0,C[A+32|0]=g,C[A+33|0]=g>>>8,C[A+34|0]=g>>>16,C[A+35|0]=g>>>24,g=p+Q|0,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=l+t|0,C[A+24|0]=g,C[A+25|0]=g>>>8,C[A+26|0]=g>>>16,C[A+27|0]=g>>>24,g=S+857760878|0,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=d+r|0,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,g=k+a|0,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=w+B|0,C[A+8|0]=g,C[A+9|0]=g>>>8,C[A+10|0]=g>>>16,C[A+11|0]=g>>>24,g=s+e|0,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=D+1634760805|0,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24}function q(A,g,I,C){var e=0,B=0,r=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0;if(s=a[A+36>>2],_=a[A+32>>2],n=a[A+28>>2],E=a[A+24>>2],y=a[A+20>>2],!C&I>>>0>=16|C)for(S=!i[A+80|0]<<24,f=a[A+4>>2],b=t(f,5),w=a[A+8>>2],u=t(w,5),d=a[A+12>>2],l=t(d,5),v=a[A+16>>2],k=t(v,5),D=a[A>>2];e=GA(r=((i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108863)+E|0,0,d,0),o=h,y=(Q=GA(E=(67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))+y|0,0,v,0))+e|0,e=h+o|0,e=Q>>>0>y>>>0?e+1|0:e,o=GA(n=((i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67108863)+n|0,0,w,0),e=h+e|0,e=o>>>0>(y=o+y|0)>>>0?e+1|0:e,o=GA(_=((i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6|0)+_|0,0,f,0),e=h+e|0,e=o>>>0>(y=o+y|0)>>>0?e+1|0:e,o=GA(s=s+S+((i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24)>>>8)|0,0,D,0),e=h+e|0,M=y=o+y|0,y=o>>>0>y>>>0?e+1|0:e,e=GA(r,0,w,0),o=h,Q=GA(E,0,d,0),B=h+o|0,B=(e=Q+e|0)>>>0<Q>>>0?B+1|0:B,o=(Q=GA(n,0,f,0))+e|0,e=h+B|0,e=Q>>>0>o>>>0?e+1|0:e,Q=GA(_,0,D,0),e=h+e|0,e=Q>>>0>(o=Q+o|0)>>>0?e+1|0:e,Q=GA(s,0,k,0),e=h+e|0,F=o=Q+o|0,o=Q>>>0>o>>>0?e+1|0:e,e=GA(r,0,f,0),c=h,Q=(B=GA(E,0,w,0))+e|0,e=h+c|0,e=B>>>0>Q>>>0?e+1|0:e,c=GA(n,0,D,0),B=h+e|0,B=(Q=c+Q|0)>>>0<c>>>0?B+1|0:B,c=GA(_,0,k,0),e=h+B|0,e=(Q=c+Q|0)>>>0<c>>>0?e+1|0:e,c=GA(s,0,l,0),e=h+e|0,N=Q=c+Q|0,Q=Q>>>0<c>>>0?e+1|0:e,e=GA(r,0,D,0),B=h,c=(p=GA(E,0,f,0))+e|0,e=h+B|0,e=c>>>0<p>>>0?e+1|0:e,B=GA(n,0,k,0),e=h+e|0,e=B>>>0>(c=B+c|0)>>>0?e+1|0:e,p=GA(_,0,l,0),B=h+e|0,B=(c=p+c|0)>>>0<p>>>0?B+1|0:B,p=GA(s,0,u,0),e=h+B|0,e=(c=p+c|0)>>>0<p>>>0?e+1|0:e,p=c,c=e,e=GA(r,0,k,0),B=h,r=(E=GA(E,0,D,0))+e|0,e=h+B|0,e=r>>>0<E>>>0?e+1|0:e,E=GA(n,0,l,0),e=h+e|0,e=(r=E+r|0)>>>0<E>>>0?e+1|0:e,E=GA(_,0,u,0),e=h+e|0,e=(r=E+r|0)>>>0<E>>>0?e+1|0:e,E=GA(s,0,b,0),B=h+e|0,B=(r=E+r|0)>>>0<E>>>0?B+1|0:B,E=r,e=c,e=(r=(n=(67108863&B)<<6|r>>>26)+p|0)>>>0<n>>>0?e+1|0:e,n=r,_=(67108863&e)<<6|r>>>26,e=Q,e=(r=_+N|0)>>>0<_>>>0?e+1|0:e,_=r,B=o,s=e=(r=(67108863&e)<<6|r>>>26)+F|0,o=(67108863&(B=e>>>0<r>>>0?B+1|0:B))<<6|e>>>26,e=y,E=(67108863&n)+((e=t((67108863&((r=o+M|0)>>>0<o>>>0?e+1:e))<<6|r>>>26,5)+(67108863&E)|0)>>>26|0)|0,n=67108863&_,_=67108863&s,s=67108863&r,y=67108863&e,g=g+16|0,!(C=C-(I>>>0<16)|0)&(I=I-16|0)>>>0>15|C;);a[A+20>>2]=y,a[A+36>>2]=s,a[A+32>>2]=_,a[A+28>>2]=n,a[A+24>>2]=E}function z(A,g,I,e){A|=0,g|=0;var a=0;return a=-1,(e|=0)-65>>>0<4294967232|(I|=0)>>>0>64||(I&&g?(n=a=n-128|0,!g|((e&=255)-65&255)>>>0<=191|((I&=255)-65&255)>>>0<=191?(ig(),B()):(VA(A- -64|0,0,293),C[A+56|0]=121,C[A+57|0]=33,C[A+58|0]=126,C[A+59|0]=19,C[A+60|0]=25,C[A+61|0]=205,C[A+62|0]=224,C[A+63|0]=91,C[A+48|0]=107,C[A+49|0]=189,C[A+50|0]=65,C[A+51|0]=251,C[A+52|0]=171,C[A+53|0]=217,C[A+54|0]=131,C[A+55|0]=31,C[A+40|0]=31,C[A+41|0]=108,C[A+42|0]=62,C[A+43|0]=43,C[A+44|0]=140,C[A+45|0]=104,C[A+46|0]=5,C[A+47|0]=155,C[A+32|0]=209,C[A+33|0]=130,C[A+34|0]=230,C[A+35|0]=173,C[A+36|0]=127,C[A+37|0]=82,C[A+38|0]=14,C[A+39|0]=81,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,e=-222443256^(I<<8|e),C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,e=I>>>24^1779033703,C[A+4|0]=e,C[A+5|0]=e>>>8,C[A+6|0]=e>>>16,C[A+7|0]=e>>>24,I=OA(VA(a,0,128),g,I),OA(A+96|0,I,128),g=128+(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)|0,C[A+352|0]=g,C[A+353|0]=g>>>8,C[A+354|0]=g>>>16,C[A+355|0]=g>>>24,dg(I,128),n=I+128|0)):(((g=255&e)-65&255)>>>0<=191&&(ig(),B()),VA(A- -64|0,0,293),C[A+56|0]=121,C[A+57|0]=33,C[A+58|0]=126,C[A+59|0]=19,C[A+60|0]=25,C[A+61|0]=205,C[A+62|0]=224,C[A+63|0]=91,C[A+48|0]=107,C[A+49|0]=189,C[A+50|0]=65,C[A+51|0]=251,C[A+52|0]=171,C[A+53|0]=217,C[A+54|0]=131,C[A+55|0]=31,C[A+40|0]=31,C[A+41|0]=108,C[A+42|0]=62,C[A+43|0]=43,C[A+44|0]=140,C[A+45|0]=104,C[A+46|0]=5,C[A+47|0]=155,C[A+32|0]=209,C[A+33|0]=130,C[A+34|0]=230,C[A+35|0]=173,C[A+36|0]=127,C[A+37|0]=82,C[A+38|0]=14,C[A+39|0]=81,C[A+24|0]=241,C[A+25|0]=54,C[A+26|0]=29,C[A+27|0]=95,C[A+28|0]=58,C[A+29|0]=245,C[A+30|0]=79,C[A+31|0]=165,C[A+16|0]=43,C[A+17|0]=248,C[A+18|0]=148,C[A+19|0]=254,C[A+20|0]=114,C[A+21|0]=243,C[A+22|0]=110,C[A+23|0]=60,C[A+8|0]=59,C[A+9|0]=167,C[A+10|0]=202,C[A+11|0]=132,C[A+12|0]=133,C[A+13|0]=174,C[A+14|0]=103,C[A+15|0]=187,g^=-222443256,C[0|A]=g,C[A+1|0]=g>>>8,C[A+2|0]=g>>>16,C[A+3|0]=g>>>24,C[A+4|0]=103,C[A+5|0]=230,C[A+6|0]=9,C[A+7|0]=106),a=0),0|a}function j(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0;_=a[g+4>>2],y=a[g+44>>2],h=a[g+8>>2],s=a[g+48>>2],p=a[g+12>>2],f=a[g+52>>2],D=a[g+16>>2],w=a[g+56>>2],k=a[g+20>>2],l=a[g+60>>2],u=a[g+24>>2],v=a[(n=g- -64|0)>>2],S=a[g+28>>2],b=a[g+68>>2],M=a[g+32>>2],F=a[g+72>>2],N=a[g+36>>2],K=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=N+K,a[A+32>>2]=M+F,a[A+28>>2]=S+b,a[A+24>>2]=u+v,a[A+20>>2]=k+l,a[A+16>>2]=D+w,a[A+12>>2]=p+f,a[A+8>>2]=h+s,a[A+4>>2]=y+_,y=a[g+4>>2],h=a[g+44>>2],s=a[g+8>>2],p=a[g+48>>2],f=a[g+12>>2],D=a[g+52>>2],w=a[g+16>>2],k=a[g+56>>2],l=a[g+20>>2],u=a[g+60>>2],v=a[g+24>>2],n=a[n>>2],_=a[g+28>>2],S=a[g+68>>2],b=a[g+32>>2],M=a[g+72>>2],F=a[g>>2],N=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=M-b,a[A+68>>2]=S-_,a[(_=A- -64|0)>>2]=n-v,a[A+60>>2]=u-l,a[A+56>>2]=k-w,a[A+52>>2]=D-f,a[A+48>>2]=p-s,a[A+44>>2]=h-y,a[A+40>>2]=N-F,d(A+80|0,A,I),d(y=A+40|0,y,I+40|0),d(A+120|0,I+120|0,g+120|0),d(A,g+80|0,I+80|0),N=a[A+4>>2],K=a[A+8>>2],B=a[A+12>>2],i=a[A+16>>2],r=a[A+20>>2],t=a[A+24>>2],Q=a[A+28>>2],o=a[A+32>>2],c=a[A+36>>2],g=a[A+44>>2],I=a[A+84>>2],y=a[A+48>>2],h=a[A+88>>2],s=a[A+52>>2],p=a[A+92>>2],f=a[A+56>>2],D=a[A+96>>2],w=a[A+60>>2],k=a[A+100>>2],l=a[_>>2],u=a[A+104>>2],n=a[A+68>>2],v=a[A+108>>2],S=a[A+72>>2],b=a[A+112>>2],E=a[A>>2],M=a[A+40>>2],F=a[A+80>>2],C=a[A+76>>2],e=a[A+116>>2],a[A+76>>2]=C+e,a[A+72>>2]=S+b,a[A+68>>2]=n+v,a[_>>2]=l+u,a[A+60>>2]=w+k,a[A+56>>2]=f+D,a[A+52>>2]=s+p,a[A+48>>2]=y+h,a[A+44>>2]=g+I,a[A+40>>2]=M+F,a[A+36>>2]=e-C,a[A+32>>2]=b-S,a[A+28>>2]=v-n,a[A+24>>2]=u-l,a[A+20>>2]=k-w,a[A+16>>2]=D-f,a[A+12>>2]=p-s,a[A+8>>2]=h-y,a[A+4>>2]=I-g,a[A>>2]=F-M,g=c<<1,I=a[A+156>>2],a[A+156>>2]=g-I,_=o<<1,y=a[A+152>>2],a[A+152>>2]=_-y,h=Q<<1,s=a[A+148>>2],a[A+148>>2]=h-s,p=t<<1,f=a[A+144>>2],a[A+144>>2]=p-f,D=r<<1,w=a[A+140>>2],a[A+140>>2]=D-w,k=i<<1,l=a[A+136>>2],a[A+136>>2]=k-l,u=B<<1,n=a[A+132>>2],a[A+132>>2]=u-n,v=K<<1,S=a[A+128>>2],a[A+128>>2]=v-S,b=N<<1,M=a[A+124>>2],a[A+124>>2]=b-M,F=E<<1,N=a[A+120>>2],a[A+120>>2]=F-N,a[A+112>>2]=y+_,a[A+108>>2]=h+s,a[A+104>>2]=p+f,a[A+100>>2]=D+w,a[A+96>>2]=k+l,a[A+92>>2]=u+n,a[A+88>>2]=v+S,a[A+84>>2]=b+M,a[A+80>>2]=F+N,a[A+116>>2]=g+I}function X(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0;_=a[g+4>>2],y=a[g+44>>2],h=a[g+8>>2],s=a[g+48>>2],p=a[g+12>>2],f=a[g+52>>2],D=a[g+16>>2],w=a[g+56>>2],k=a[g+20>>2],l=a[g+60>>2],u=a[g+24>>2],v=a[(n=g- -64|0)>>2],S=a[g+28>>2],b=a[g+68>>2],M=a[g+32>>2],F=a[g+72>>2],N=a[g+36>>2],K=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=N+K,a[A+32>>2]=M+F,a[A+28>>2]=S+b,a[A+24>>2]=u+v,a[A+20>>2]=k+l,a[A+16>>2]=D+w,a[A+12>>2]=p+f,a[A+8>>2]=h+s,a[A+4>>2]=y+_,y=a[g+4>>2],h=a[g+44>>2],s=a[g+8>>2],p=a[g+48>>2],f=a[g+12>>2],D=a[g+52>>2],w=a[g+16>>2],k=a[g+56>>2],l=a[g+20>>2],u=a[g+60>>2],v=a[g+24>>2],n=a[n>>2],_=a[g+28>>2],S=a[g+68>>2],b=a[g+32>>2],M=a[g+72>>2],F=a[g>>2],N=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=M-b,a[A+68>>2]=S-_,a[(_=A- -64|0)>>2]=n-v,a[A+60>>2]=u-l,a[A+56>>2]=k-w,a[A+52>>2]=D-f,a[A+48>>2]=p-s,a[A+44>>2]=h-y,a[A+40>>2]=N-F,d(A+80|0,A,I+40|0),d(y=A+40|0,y,I),d(A+120|0,I+120|0,g+120|0),d(A,g+80|0,I+80|0),N=a[A+4>>2],K=a[A+8>>2],B=a[A+12>>2],i=a[A+16>>2],r=a[A+20>>2],t=a[A+24>>2],Q=a[A+28>>2],o=a[A+32>>2],c=a[A+36>>2],g=a[A+44>>2],I=a[A+84>>2],y=a[A+48>>2],h=a[A+88>>2],s=a[A+52>>2],p=a[A+92>>2],f=a[A+56>>2],D=a[A+96>>2],w=a[A+60>>2],k=a[A+100>>2],l=a[_>>2],u=a[A+104>>2],n=a[A+68>>2],v=a[A+108>>2],S=a[A+72>>2],b=a[A+112>>2],E=a[A>>2],M=a[A+40>>2],F=a[A+80>>2],C=a[A+76>>2],e=a[A+116>>2],a[A+76>>2]=C+e,a[A+72>>2]=S+b,a[A+68>>2]=n+v,a[_>>2]=l+u,a[A+60>>2]=w+k,a[A+56>>2]=f+D,a[A+52>>2]=s+p,a[A+48>>2]=y+h,a[A+44>>2]=g+I,a[A+40>>2]=M+F,a[A+36>>2]=e-C,a[A+32>>2]=b-S,a[A+28>>2]=v-n,a[A+24>>2]=u-l,a[A+20>>2]=k-w,a[A+16>>2]=D-f,a[A+12>>2]=p-s,a[A+8>>2]=h-y,a[A+4>>2]=I-g,a[A>>2]=F-M,g=a[A+156>>2],I=c<<1,a[A+156>>2]=g+I,_=a[A+152>>2],y=o<<1,a[A+152>>2]=_+y,h=a[A+148>>2],s=Q<<1,a[A+148>>2]=h+s,p=a[A+144>>2],f=t<<1,a[A+144>>2]=p+f,D=a[A+140>>2],w=r<<1,a[A+140>>2]=D+w,k=a[A+136>>2],l=i<<1,a[A+136>>2]=k+l,u=a[A+132>>2],n=B<<1,a[A+132>>2]=u+n,v=a[A+128>>2],S=K<<1,a[A+128>>2]=v+S,b=a[A+124>>2],M=N<<1,a[A+124>>2]=b+M,F=a[A+120>>2],N=E<<1,a[A+120>>2]=F+N,a[A+112>>2]=y-_,a[A+108>>2]=s-h,a[A+104>>2]=f-p,a[A+100>>2]=w-D,a[A+96>>2]=l-k,a[A+92>>2]=n-u,a[A+88>>2]=S-v,a[A+84>>2]=M-b,a[A+80>>2]=N-F,a[A+116>>2]=I-g}function O(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,K=0;_=a[g+4>>2],y=a[g+44>>2],h=a[g+8>>2],s=a[g+48>>2],p=a[g+12>>2],f=a[g+52>>2],D=a[g+16>>2],w=a[g+56>>2],k=a[g+20>>2],l=a[g+60>>2],u=a[g+24>>2],v=a[(n=g- -64|0)>>2],S=a[g+28>>2],b=a[g+68>>2],M=a[g+32>>2],F=a[g+72>>2],N=a[g+36>>2],K=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=N+K,a[A+32>>2]=M+F,a[A+28>>2]=S+b,a[A+24>>2]=u+v,a[A+20>>2]=k+l,a[A+16>>2]=D+w,a[A+12>>2]=p+f,a[A+8>>2]=h+s,a[A+4>>2]=y+_,y=a[g+4>>2],h=a[g+44>>2],s=a[g+8>>2],p=a[g+48>>2],f=a[g+12>>2],D=a[g+52>>2],w=a[g+16>>2],k=a[g+56>>2],l=a[g+20>>2],u=a[g+60>>2],v=a[g+24>>2],n=a[n>>2],_=a[g+28>>2],S=a[g+68>>2],b=a[g+32>>2],M=a[g+72>>2],F=a[g>>2],N=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=M-b,a[A+68>>2]=S-_,a[(_=A- -64|0)>>2]=n-v,a[A+60>>2]=u-l,a[A+56>>2]=k-w,a[A+52>>2]=D-f,a[A+48>>2]=p-s,a[A+44>>2]=h-y,a[A+40>>2]=N-F,d(A+80|0,A,I),d(y=A+40|0,y,I+40|0),d(A+120|0,I+80|0,g+120|0),N=a[g+84>>2],K=a[g+88>>2],B=a[g+92>>2],i=a[g+96>>2],r=a[g+100>>2],t=a[g+104>>2],Q=a[g+108>>2],o=a[g+112>>2],c=a[g+116>>2],I=a[A+44>>2],y=a[A+84>>2],h=a[A+48>>2],s=a[A+88>>2],p=a[A+52>>2],f=a[A+92>>2],D=a[A+56>>2],w=a[A+96>>2],k=a[A+60>>2],l=a[A+100>>2],u=a[_>>2],n=a[A+104>>2],v=a[A+68>>2],S=a[A+108>>2],b=a[A+72>>2],M=a[A+112>>2],E=a[g+80>>2],g=a[A+40>>2],F=a[A+80>>2],C=a[A+76>>2],e=a[A+116>>2],a[A+76>>2]=C+e,a[A+72>>2]=b+M,a[A+68>>2]=v+S,a[_>>2]=u+n,a[A+60>>2]=k+l,a[A+56>>2]=D+w,a[A+52>>2]=p+f,a[A+48>>2]=h+s,a[A+44>>2]=I+y,a[A+40>>2]=g+F,a[A+36>>2]=e-C,a[A+32>>2]=M-b,a[A+28>>2]=S-v,a[A+24>>2]=n-u,a[A+20>>2]=l-k,a[A+16>>2]=w-D,a[A+12>>2]=f-p,a[A+8>>2]=s-h,a[A+4>>2]=y-I,a[A>>2]=F-g,g=c<<1,I=a[A+156>>2],a[A+156>>2]=g-I,_=o<<1,y=a[A+152>>2],a[A+152>>2]=_-y,h=Q<<1,s=a[A+148>>2],a[A+148>>2]=h-s,p=t<<1,f=a[A+144>>2],a[A+144>>2]=p-f,D=r<<1,w=a[A+140>>2],a[A+140>>2]=D-w,k=i<<1,l=a[A+136>>2],a[A+136>>2]=k-l,u=B<<1,n=a[A+132>>2],a[A+132>>2]=u-n,v=K<<1,S=a[A+128>>2],a[A+128>>2]=v-S,b=N<<1,M=a[A+124>>2],a[A+124>>2]=b-M,F=E<<1,N=a[A+120>>2],a[A+120>>2]=F-N,a[A+112>>2]=y+_,a[A+108>>2]=h+s,a[A+104>>2]=p+f,a[A+100>>2]=D+w,a[A+96>>2]=k+l,a[A+92>>2]=u+n,a[A+88>>2]=v+S,a[A+84>>2]=b+M,a[A+80>>2]=F+N,a[A+116>>2]=g+I}function V(A,g){var I,C,e,B,r,t,Q,o,c,E,y,_,n,s,p=0,f=0,D=0,w=0,k=0,d=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0;n=i[g+31|0],I=i[g+30|0],C=i[g+29|0],e=i[g+6|0],B=i[g+5|0],r=i[g+4|0],t=i[g+9|0],Q=i[g+8|0],o=i[g+7|0],c=i[g+12|0],b=i[g+11|0],M=i[g+10|0],E=i[g+15|0],F=i[g+14|0],y=i[g+13|0],l=i[g+28|0],S=i[g+27|0],u=i[g+26|0],d=i[g+25|0],w=i[g+24|0],D=i[g+23|0],s=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,k=(f=i[g+21|0])<<15,f=p=f>>>17|0,v=k,v|=(k=i[g+20|0])<<7,k=(p=k>>>25|0)|f,f=(p=i[g+22|0])>>>9|0,p=p<<23|v,f|=k,_=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=0,k=p,p=(33554431&(g=(v=_+16777216|0)>>>0<16777216?1:g))<<7|v>>>25,g=(g>>>25|0)+f|0,p=(f=k=k+p|0)>>>0<p>>>0?g+1|0:g,g=(k=f+33554432|0)>>>0<33554432?p+1|0:p,a[A+24>>2]=f-(-67108864&k),p=(f=D>>>27|0)|w>>>19|d>>>11,f=D=(w=d<<21|(D=w<<13|D<<5))+(f=(67108863&(f=g))<<6|k>>>26)|0,g=p,p=(D=w+16777216|0)>>>0<16777216?g+1|0:g,a[A+28>>2]=f-(1040187392&D),f=(p=(g=p)>>>25|0)+(f=S>>>20|u>>>28|l>>>12)|0,g=f=(p=D=(g=(33554431&g)<<7|D>>>25)+(S<<12|u<<4|l<<20)|0)>>>0<g>>>0?f+1|0:f,D=(l=p+33554432|0)>>>0<33554432?g+1|0:g,a[A+32>>2]=p-(-67108864&l),f=c>>>13|(p=b>>>21|M>>>29),g=(f=(S=16777216+(b=b<<11|M<<3|c<<19)|0)>>>0<16777216?f+1|0:f)>>>25|0,f=(p=w=F<<10|y<<2|E<<18)+(w=(33554431&f)<<7|S>>>25)|0,p=g+(d=F>>>22|y>>>30|E>>>14)|0,g=p=f>>>0<w>>>0?p+1|0:p,w=((67108863&(g=(w=f+33554432|0)>>>0<33554432?g+1|0:g))<<6|(p=w)>>>26)+(u=_-(-33554432&v)|0)|0,a[A+20>>2]=w,a[A+16>>2]=f-(-67108864&p),p=B>>>18|r>>>26|e>>>10,f=(p=(u=16777216+(M=B<<14|r<<6|e<<22)|0)>>>0<16777216?p+1|0:p)>>>25|0,p=(g=w=Q<<13|o<<5|t<<21)+(w=(33554431&p)<<7|u>>>25)|0,g=f+(d=Q>>>19|o>>>27|t>>>11)|0,g=p>>>0<w>>>0?g+1|0:g,f=(d=p+33554432|0)>>>0<33554432?g+1|0:g,a[A+8>>2]=p-(-67108864&d),l=(D=(67108863&D)<<6|l>>>26)+(F=n<<18&33292288|I<<10|C<<2)|0,g=p=I>>>22|C>>>30,p=(D=F+16777216|0)>>>0<16777216?g+1|0:g,a[A+36>>2]=l-(33554432&D),f=b+((67108863&f)<<6|d>>>26)|0,a[A+12>>2]=f-(234881024&S),w=M-(2113929216&u)|0,f=GA((33554431&(g=p))<<7|D>>>25,p=g>>>25|0,19,0),g=h,f=(p=f+s|0)>>>0<f>>>0?g+1|0:g,D=((67108863&(f=(g=p+33554432|0)>>>0<33554432?f+1|0:f))<<6|g>>>26)+w|0,a[A+4>>2]=D,a[A>>2]=p-(-67108864&g)}function Z(A,g){var I,e,B,r,t=0,Q=0,o=0,c=0,E=0,y=0;for(n=I=n-480|0;o=(Q=I+288|0)+(t<<1)|0,c=i[g+t|0],C[o+1|0]=c>>>4,C[0|o]=15&c,Q=Q+((o=1|t)<<1)|0,o=i[g+o|0],C[Q+1|0]=o>>>4,C[0|Q]=15&o,32!=(0|(t=t+2|0)););for(g=0;t=8+(Q=(t=g)+i[0|(g=(I+288|0)+E|0)]|0)|0,C[0|g]=Q-(240&t),t=8+(Q=i[g+1|0]+(t<<24>>24>>4)|0)|0,C[g+1|0]=Q-(240&t),t=8+(Q=i[g+2|0]+(t<<24>>24>>4)|0)|0,C[g+2|0]=Q-(240&t),g=t<<24>>24>>4,63!=(0|(E=E+3|0)););for(C[I+351|0]=i[I+351|0]+g,a[A+32>>2]=0,a[A+36>>2]=0,a[A+24>>2]=0,a[A+28>>2]=0,a[A+16>>2]=0,a[A+20>>2]=0,a[A+8>>2]=0,a[A+12>>2]=0,a[A>>2]=0,a[A+4>>2]=0,a[A+44>>2]=0,a[A+48>>2]=0,a[A+40>>2]=1,a[A+52>>2]=0,a[A+56>>2]=0,a[A+60>>2]=0,a[A+64>>2]=0,a[A+68>>2]=0,a[A+72>>2]=0,a[A+76>>2]=0,a[A+80>>2]=1,VA(A+84|0,0,76),B=A+120|0,E=A+80|0,g=A+40|0,Q=I+208|0,e=I+168|0,o=I+248|0,t=1;rA(y=I+8|0,t>>>1|0,C[(I+288|0)+t|0]),O(c=I+128|0,A,y),d(A,c,o),d(g,e,Q),d(E,Q,o),d(B,c,e),y=t>>>0<62,t=t+2|0,y;);for(t=a[A+36>>2],a[I+392>>2]=a[A+32>>2],a[I+396>>2]=t,t=a[A+28>>2],a[I+384>>2]=a[A+24>>2],a[I+388>>2]=t,t=a[A+20>>2],a[I+376>>2]=a[A+16>>2],a[I+380>>2]=t,t=a[A+12>>2],a[I+368>>2]=a[A+8>>2],a[I+372>>2]=t,t=a[A+4>>2],a[I+360>>2]=a[A>>2],a[I+364>>2]=t,t=a[g+12>>2],a[I+408>>2]=a[g+8>>2],a[I+412>>2]=t,t=a[g+20>>2],a[I+416>>2]=a[g+16>>2],a[I+420>>2]=t,t=a[g+28>>2],a[I+424>>2]=a[g+24>>2],a[I+428>>2]=t,t=a[g+36>>2],a[I+432>>2]=a[g+32>>2],a[I+436>>2]=t,t=a[g+4>>2],a[I+400>>2]=a[g>>2],a[I+404>>2]=t,t=a[E+12>>2],a[I+448>>2]=a[E+8>>2],a[I+452>>2]=t,t=a[E+20>>2],a[I+456>>2]=a[E+16>>2],a[I+460>>2]=t,t=a[E+28>>2],a[I+464>>2]=a[E+24>>2],a[I+468>>2]=t,t=a[E+36>>2],a[I+472>>2]=a[E+32>>2],a[I+476>>2]=t,t=a[E+4>>2],a[I+440>>2]=a[E>>2],a[I+444>>2]=t,v(c,t=I+360|0),d(t,c,o),d(y=I+400|0,e,Q),d(r=I+440|0,Q,o),v(c,t),d(t,c,o),d(y,e,Q),d(r,Q,o),v(c,t),d(t,c,o),d(y,e,Q),d(r,Q,o),v(c,t),d(A,c,o),d(g,e,Q),d(E,Q,o),d(B,c,e),t=0;rA(y=I+8|0,t>>>1|0,C[(I+288|0)+t|0]),O(c=I+128|0,A,y),d(A,c,o),d(g,e,Q),d(E,Q,o),d(B,c,e),c=t>>>0<62,t=t+2|0,c;);n=I+480|0}function W(A,g,I,e){var B,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0,p=0,D=0;if(n=B=n-704|0,I|e)if(r=(e<<3|I>>>29)+(t=o=a[A+76>>2])|0,Q=(E=a[A+72>>2])+(c=I<<3)|0,a[A+72>>2]=Q,r=Q>>>0<c>>>0?r+1|0:r,a[A+76>>2]=r,o=a[A+68>>2],r=(r=Q=(0|r)==(0|t)&Q>>>0<E>>>0|r>>>0<t>>>0)>>>0>(Q=Q+a[A+64>>2]|0)>>>0?o+1|0:o,Q=(c=e>>>29|0)+Q|0,a[A+64>>2]=Q,a[A+68>>2]=Q>>>0<c>>>0?r+1|0:r,Q=A+80|0,(0|e)==(0|(o=p=0-((r=0)+((c=127&((7&t)<<29|E>>>3))>>>0>128)|0)|0))&I>>>0>=(E=128-c|0)>>>0|e>>>0>o>>>0){if(t=0,o=0,!r&(127^c)>>>0>=3|r)for(D=252&E;C[(r=t+c|0)+Q|0]=i[g+t|0],C[Q+(c+(r=1|t)|0)|0]=i[g+r|0],C[Q+(c+(r=2|t)|0)|0]=i[g+r|0],C[Q+(c+(r=3|t)|0)|0]=i[g+r|0],r=o,o=(t=t+4|0)>>>0<4?r+1|0:r,r=h,h=r=(y=y+4|0)>>>0<4?r+1|0:r,(0|y)!=(0|D)|(0|s)!=(0|r););if(h=r=0,r|(y=3&E))for(;C[(r=t+c|0)+Q|0]=i[g+t|0],r=o,o=(t=t+1|0)?r:r+1|0,r=s,s=r=(_=_+1|0)?r:r+1|0,(0|y)!=(0|_)|(0|h)!=(0|r););if(f(A,Q,B,t=B+640|0),g=g+E|0,!(e=e-((I>>>0<E>>>0)+p|0)|0)&(I=I-E|0)>>>0>127|e)for(;f(A,g,B,t),g=g+128|0,!(e=e-(I>>>0<128)|0)&(I=I-128|0)>>>0>127|e;);if(I|e){if(A=3&I,_=0,s=0,t=0,o=0,!e&I>>>0>=4|e)for(y=124&I,E=0,I=0,e=0;C[t+Q|0]=i[g+t|0],C[(r=1|t)+Q|0]=i[g+r|0],C[(r=2|t)+Q|0]=i[g+r|0],C[(r=3|t)+Q|0]=i[g+r|0],r=o,o=(t=t+4|0)>>>0<4?r+1|0:r,r=e,e=r=(I=I+4|0)>>>0<4?r+1|0:r,(0|I)!=(0|y)|(0|E)!=(0|r););if(A|h)for(;C[t+Q|0]=i[g+t|0],o=(t=t+1|0)?o:o+1|0,r=s,s=r=(_=_+1|0)?r:r+1|0,(0|A)!=(0|_)|(0|h)!=(0|r););}dg(B,704)}else{if(t=0,o=0,!e&I>>>0>=4|e)for(A=-4&I;C[(r=t+c|0)+Q|0]=i[g+t|0],C[Q+(E=c+(r=1|t)|0)|0]=i[g+r|0],C[Q+(E=c+(r=2|t)|0)|0]=i[g+r|0],C[Q+(E=c+(r=3|t)|0)|0]=i[g+r|0],r=o,o=(t=t+4|0)>>>0<4?r+1|0:r,r=h,h=r=(y=y+4|0)>>>0<4?r+1|0:r,(0|A)!=(0|y)|(0|e)!=(0|r););if((I&=3)|(A=0))for(;C[(e=t+c|0)+Q|0]=i[g+t|0],o=(t=t+1|0)?o:o+1|0,r=s,s=r=(_=_+1|0)?r:r+1|0,(0|I)!=(0|_)|(0|A)!=(0|r););}return n=B+704|0,0}function $(A,g,I){var e=0,B=0,a=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0;for(B=2036477234,r=857760878,e=1634760805,Q=1797285236,a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,E=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,t=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,y=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,o=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,D=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,_=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,n=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,h=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,s=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,g=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,I=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24;c=I,I=Ig((p=g)^(g=I+e|0),16),c=_=Ig(c^(e=I+_|0),12),w=Ig((p=g+_|0)^I,8),g=Ig(c^(_=w+e|0),7),e=n,n=Ig((I=Q+n|0)^a,16),e=Ig(e^(y=n+y|0),12),a=h,Q=Ig((B=B+h|0)^E,16),a=Ig(a^(h=Q+o|0),12),o=Ig((B=a+B|0)^Q,8),I=Ig(o^(Q=g+(f=I+e|0)|0),16),E=Ig((r=r+s|0)^t,16),s=Ig((t=E+D|0)^s,12),c=g,g=Ig((r=r+s|0)^E,8),c=Ig(c^(t=I+(k=g+t|0)|0),12),E=Ig(I^(Q=c+Q|0),8),I=Ig((D=E+t|0)^c,7),c=B,B=e,f=Ig(n^f,8),B=Ig(B^(e=f+y|0),7),n=Ig((t=c+B|0)^g,16),y=Ig((g=n+_|0)^B,12),t=Ig(n^(B=y+t|0),8),n=Ig((_=g+t|0)^y,7),g=Ig((g=a)^(a=o+h|0),7),h=Ig((r=g+r|0)^w,16),o=Ig(g^(e=h+e|0),12),g=Ig(h^(r=o+r|0),8),h=Ig((y=e+g|0)^o,7),c=a,e=Ig(s^k,7),o=Ig((a=e+p|0)^f,16),p=Ig(e^(s=c+o|0),12),a=Ig(o^(e=p+a|0),8),s=Ig((o=s+a|0)^p,7),10!=(0|(d=d+1|0)););C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+24|0]=E,C[A+25|0]=E>>>8,C[A+26|0]=E>>>16,C[A+27|0]=E>>>24,C[A+20|0]=t,C[A+21|0]=t>>>8,C[A+22|0]=t>>>16,C[A+23|0]=t>>>24,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+12|0]=Q,C[A+13|0]=Q>>>8,C[A+14|0]=Q>>>16,C[A+15|0]=Q>>>24,C[A+8|0]=B,C[A+9|0]=B>>>8,C[A+10|0]=B>>>16,C[A+11|0]=B>>>24,C[A+4|0]=r,C[A+5|0]=r>>>8,C[A+6|0]=r>>>16,C[A+7|0]=r>>>24}function AA(A,g,I){var e=0,B=0,a=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0,d=0;for(e=1797285236,o=2036477234,c=857760878,B=1634760805,a=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,t=i[g+8|0]|i[g+9|0]<<8|i[g+10|0]<<16|i[g+11|0]<<24,r=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24,p=i[I+28|0]|i[I+29|0]<<8|i[I+30|0]<<16|i[I+31|0]<<24,s=i[I+24|0]|i[I+25|0]<<8|i[I+26|0]<<16|i[I+27|0]<<24,f=20,n=i[I+20|0]|i[I+21|0]<<8|i[I+22|0]<<16|i[I+23|0]<<24,h=i[I+16|0]|i[I+17|0]<<8|i[I+18|0]<<16|i[I+19|0]<<24,E=i[I+12|0]|i[I+13|0]<<8|i[I+14|0]<<16|i[I+15|0]<<24,y=i[I+8|0]|i[I+9|0]<<8|i[I+10|0]<<16|i[I+11|0]<<24,_=i[I+4|0]|i[I+5|0]<<8|i[I+6|0]<<16|i[I+7|0]<<24,g=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24,I=i[0|I]|i[I+1|0]<<8|i[I+2|0]<<16|i[I+3|0]<<24;Q=Ig(I+c|0,7)^a,D=Ig(Q+c|0,9)^s,E=Ig(B+n|0,7)^E,w=Ig(E+B|0,9)^t,k=Ig(w+E|0,13)^n,y=Ig(e+h|0,7)^y,r=Ig(y+e|0,9)^r,t=Ig(r+y|0,13)^h,e=Ig(r+t|0,18)^e,a=Ig(g+o|0,7)^p,n=k^Ig(e+a|0,7),s=D^Ig(n+e|0,9),p=Ig(n+s|0,13)^a,e=Ig(s+p|0,18)^e,_=Ig(a+o|0,9)^_,d=Ig(_+a|0,13)^g,g=Ig(d+_|0,18)^o,h=Ig(g+Q|0,7)^t,t=Ig(h+g|0,9)^w,a=Ig(t+h|0,13)^Q,o=Ig(a+t|0,18)^g,Q=Ig(Q+D|0,13)^I,I=Ig(Q+D|0,18)^c,g=Ig(I+E|0,7)^d,r=Ig(g+I|0,9)^r,E=Ig(g+r|0,13)^E,c=Ig(r+E|0,18)^I,B=Ig(w+k|0,18)^B,I=Ig(B+y|0,7)^Q,_=Ig(I+B|0,9)^_,y=Ig(I+_|0,13)^y,B=Ig(_+y|0,18)^B,Q=f>>>0>2,f=f-2|0,Q;);return C[0|A]=B,C[A+1|0]=B>>>8,C[A+2|0]=B>>>16,C[A+3|0]=B>>>24,C[A+28|0]=a,C[A+29|0]=a>>>8,C[A+30|0]=a>>>16,C[A+31|0]=a>>>24,C[A+24|0]=t,C[A+25|0]=t>>>8,C[A+26|0]=t>>>16,C[A+27|0]=t>>>24,C[A+20|0]=r,C[A+21|0]=r>>>8,C[A+22|0]=r>>>16,C[A+23|0]=r>>>24,C[A+16|0]=g,C[A+17|0]=g>>>8,C[A+18|0]=g>>>16,C[A+19|0]=g>>>24,C[A+12|0]=e,C[A+13|0]=e>>>8,C[A+14|0]=e>>>16,C[A+15|0]=e>>>24,C[A+8|0]=o,C[A+9|0]=o>>>8,C[A+10|0]=o>>>16,C[A+11|0]=o>>>24,C[A+4|0]=c,C[A+5|0]=c>>>8,C[A+6|0]=c>>>16,C[A+7|0]=c>>>24,0}function gA(A,g){var I,e,B=0,i=0,r=0,t=0;n=I=n-288|0,i=40+((B=a[A+32>>2]>>>3&63)+A|0)|0,B>>>0>=56?(OA(i,35040,64-B|0),S(A,A+40|0,I,I+256|0),a[A+88>>2]=0,a[A+92>>2]=0,a[A+80>>2]=0,a[A+84>>2]=0,a[A+72>>2]=0,a[A+76>>2]=0,a[(B=A- -64|0)>>2]=0,a[B+4>>2]=0,a[A+56>>2]=0,a[A+60>>2]=0,a[A+48>>2]=0,a[A+52>>2]=0,a[A+40>>2]=0,a[A+44>>2]=0):OA(i,35040,56-B|0),r=(B=16711680&(i=a[A+32>>2]))>>>8|0,t=B<<24,e=(B=-16777216&i)>>>24|0,B=(t|=B<<8)|-16777216&((255&(B=a[A+36>>2]))<<24|i>>>8)|16711680&((16777215&B)<<8|i>>>24)|B>>>8&65280|B>>>24,C[A+96|0]=B,C[A+97|0]=B>>>8,C[A+98|0]=B>>>16,C[A+99|0]=B>>>24,B=r|e|i<<24|(65280&i)<<8,B|=r=0,C[A+100|0]=B,C[A+101|0]=B>>>8,C[A+102|0]=B>>>16,C[A+103|0]=B>>>24,S(A,A+40|0,I,I+256|0),B=(B=a[A>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[0|g]=B,C[g+1|0]=B>>>8,C[g+2|0]=B>>>16,C[g+3|0]=B>>>24,B=(B=a[A+4>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+4|0]=B,C[g+5|0]=B>>>8,C[g+6|0]=B>>>16,C[g+7|0]=B>>>24,B=(B=a[A+8>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+8|0]=B,C[g+9|0]=B>>>8,C[g+10|0]=B>>>16,C[g+11|0]=B>>>24,B=(B=a[A+12>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+12|0]=B,C[g+13|0]=B>>>8,C[g+14|0]=B>>>16,C[g+15|0]=B>>>24,B=(B=a[A+16>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+16|0]=B,C[g+17|0]=B>>>8,C[g+18|0]=B>>>16,C[g+19|0]=B>>>24,B=(B=a[A+20>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+20|0]=B,C[g+21|0]=B>>>8,C[g+22|0]=B>>>16,C[g+23|0]=B>>>24,B=(B=a[A+24>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+24|0]=B,C[g+25|0]=B>>>8,C[g+26|0]=B>>>16,C[g+27|0]=B>>>24,B=(B=a[A+28>>2])<<24|(65280&B)<<8|B>>>8&65280|B>>>24,C[g+28|0]=B,C[g+29|0]=B>>>8,C[g+30|0]=B>>>16,C[g+31|0]=B>>>24,dg(I,288),dg(A,104),n=I+288|0}function IA(A,g,I){var e,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0;if(n=e=n-96|0,I>>>0>=65&&(UA(A),eA(A,g,I),gA(A,e),I=32,g=e),UA(A),a[e+88>>2]=909522486,a[e+92>>2]=909522486,a[e+80>>2]=909522486,a[e+84>>2]=909522486,a[e+72>>2]=909522486,a[e+76>>2]=909522486,a[(t=E=e- -64|0)>>2]=909522486,a[t+4>>2]=909522486,a[e+56>>2]=909522486,a[e+60>>2]=909522486,a[e+48>>2]=909522486,a[e+52>>2]=909522486,a[e+40>>2]=909522486,a[e+44>>2]=909522486,a[e+32>>2]=909522486,a[e+36>>2]=909522486,I){if(I>>>0>=4)for(Q=124&I;C[0|(r=(t=e+32|0)+B|0)]=i[0|r]^i[g+B|0],C[0|(y=(r=1|B)+t|0)]=i[0|y]^i[g+r|0],C[0|(y=(r=2|B)+t|0)]=i[0|y]^i[g+r|0],C[0|(r=(r=t)+(t=3|B)|0)]=i[0|r]^i[g+t|0],B=B+4|0,(0|Q)!=(0|(o=o+4|0)););if(o=3&I)for(;C[0|(t=(e+32|0)+B|0)]=i[0|t]^i[g+B|0],B=B+1|0,(0|o)!=(0|(c=c+1|0)););}if(eA(A,e+32|0,64),UA(t=A+104|0),a[e+88>>2]=1549556828,a[e+92>>2]=1549556828,a[e+80>>2]=1549556828,a[e+84>>2]=1549556828,a[e+72>>2]=1549556828,a[e+76>>2]=1549556828,a[E>>2]=1549556828,a[E+4>>2]=1549556828,a[e+56>>2]=1549556828,a[e+60>>2]=1549556828,a[e+48>>2]=1549556828,a[e+52>>2]=1549556828,a[e+40>>2]=1549556828,a[e+44>>2]=1549556828,a[e+32>>2]=1549556828,a[e+36>>2]=1549556828,I){if(c=0,B=0,I>>>0>=4)for(E=124&I,o=0;C[0|(Q=(A=e+32|0)+B|0)]=i[0|Q]^i[g+B|0],C[0|(r=(Q=1|B)+A|0)]=i[0|r]^i[g+Q|0],C[0|(r=(Q=2|B)+A|0)]=i[0|r]^i[g+Q|0],C[0|(Q=(r=A)+(A=3|B)|0)]=i[0|Q]^i[A+g|0],B=B+4|0,(0|E)!=(0|(o=o+4|0)););if(A=3&I)for(;C[0|(I=(e+32|0)+B|0)]=i[0|I]^i[g+B|0],B=B+1|0,(0|A)!=(0|(c=c+1|0)););}return eA(t,A=e+32|0,64),dg(A,64),dg(e,32),n=e+96|0,0}function CA(A,g,I,C,e,i,r){var t=0,Q=0,o=0,c=0,E=0,y=0,_=0;if(g-65>>>0<4294967232|r>>>0>64)A=-1;else{y=t=n,n=t=t-512&-64;A:{g:if(!(!(!(C|e)|I)|!A|((Q=255&g)-65&255)>>>0<=191|!(!(g=255&r)||i)|g>>>0>=65)){if(g){if(!i)break g;VA(t- -64|0,0,293),a[t+56>>2]=327033209,a[t+60>>2]=1541459225,a[t+48>>2]=-79577749,a[t+52>>2]=528734635,a[t+40>>2]=725511199,a[t+44>>2]=-1694144372,a[t+32>>2]=-1377402159,a[t+36>>2]=1359893119,a[t+24>>2]=1595750129,a[t+28>>2]=-1521486534,a[t+16>>2]=-23791573,a[t+20>>2]=1013904242,a[t+8>>2]=-2067093701,a[t+12>>2]=-1150833019,a[t>>2]=-222443256^(g<<8|Q),a[t+4>>2]=g>>>24^1779033703,VA((r=t+384|0)+g|0,0,128-g|0),OA(r,i,g),OA(t+96|0,r,128),a[t+352>>2]=128,dg(r,128),g=128}else VA(t- -64|0,0,293),a[t+56>>2]=327033209,a[t+60>>2]=1541459225,a[t+48>>2]=-79577749,a[t+52>>2]=528734635,a[t+40>>2]=725511199,a[t+44>>2]=-1694144372,a[t+32>>2]=-1377402159,a[t+36>>2]=1359893119,a[t+24>>2]=1595750129,a[t+28>>2]=-1521486534,a[t+16>>2]=-23791573,a[t+20>>2]=1013904242,a[t+8>>2]=-2067093701,a[t+12>>2]=-1150833019,a[t>>2]=-222443256^Q,a[t+4>>2]=1779033703,g=0;I:if(C|e)for(_=t+224|0,o=t+96|0;;){if(r=g+o|0,!e&C>>>0<=(i=256-g|0)>>>0){OA(r,I,C),a[t+352>>2]=C+a[t+352>>2];break I}if(OA(r,I,i),a[t+352>>2]=i+a[t+352>>2],c=g=a[t+68>>2],g=(E=(r=a[t+64>>2])+128|0)>>>0<128?g+1|0:g,a[t+64>>2]=E,a[t+68>>2]=g,g=a[t+76>>2],g=(c=r=-1==(0|c)&r>>>0>4294967167)>>>0>(r=r+a[t+72>>2]|0)>>>0?g+1|0:g,a[t+72>>2]=r,a[t+76>>2]=g,s(t,o),OA(o,_,128),g=a[t+352>>2]-128|0,a[t+352>>2]=g,I=I+i|0,!((e=e-(C>>>0<i>>>0)|0)|(C=C-i|0)))break}R(t,A,Q),n=y;break A}ig(),B()}A=0}return A}function eA(A,g,I){var e,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0;if(n=e=n-288|0,I)if(B=a[A+36>>2],c=(Q=a[A+32>>2])+(o=I<<3)|0,a[A+32>>2]=c,t=(I>>>29|0)+B|0,a[A+36>>2]=o>>>0>c>>>0?t+1|0:t,o=A+40|0,!0&(t=64-(c=63&((7&B)<<29|Q>>>3))|0)>>>0<=I>>>0){if(B=0,Q=0,(63^c)>>>0>=3)for(s=124&t;C[(B+c|0)+o|0]=i[g+B|0],C[(c+(_=1|B)|0)+o|0]=i[g+_|0],C[(c+(_=2|B)|0)+o|0]=i[g+_|0],C[(c+(_=3|B)|0)+o|0]=i[g+_|0],Q=(B=B+4|0)>>>0<4?Q+1|0:Q,(r=(h=h+4|0)>>>0<4?r+1|0:r)|(0|h)!=(0|s););if(r=3&t)for(;C[(B+c|0)+o|0]=i[g+B|0],Q=(B=B+1|0)?Q:Q+1|0,(E=(y=y+1|0)?E:E+1|0)|(0|r)!=(0|y););if(S(A,o,e,E=e+256|0),g=g+t|0,!(r=0-((I>>>0<t>>>0)+0|0)|0)&(I=I-t|0)>>>0>63|r)for(;S(A,g,e,E),g=g- -64|0,r=r-1|0,!(r=(I=I+-64|0)>>>0<4294967232?r+1|0:r)&I>>>0>63|r;);if(I|r){if(A=3&I,y=0,E=0,B=0,Q=0,!r&I>>>0>=4|r)for(c=60&I,I=0,r=0;C[B+o|0]=i[g+B|0],C[(t=1|B)+o|0]=i[g+t|0],C[(t=2|B)+o|0]=i[g+t|0],C[(t=3|B)+o|0]=i[g+t|0],Q=(B=B+4|0)>>>0<4?Q+1|0:Q,(r=(I=I+4|0)>>>0<4?r+1|0:r)|(0|I)!=(0|c););if(A)for(;C[B+o|0]=i[g+B|0],Q=(B=B+1|0)?Q:Q+1|0,(E=(y=y+1|0)?E:E+1|0)|(0|A)!=(0|y););}dg(e,288)}else{if(B=0,Q=0,I>>>0>=4)for(A=-4&I;C[(B+c|0)+o|0]=i[g+B|0],C[(c+(t=1|B)|0)+o|0]=i[g+t|0],C[(c+(t=2|B)|0)+o|0]=i[g+t|0],C[(c+(t=3|B)|0)+o|0]=i[g+t|0],Q=(B=B+4|0)>>>0<4?Q+1|0:Q,(r=(h=h+4|0)>>>0<4?r+1|0:r)|(0|A)!=(0|h););if(A=3&I)for(;C[(B+c|0)+o|0]=i[g+B|0],Q=(B=B+1|0)?Q:Q+1|0,(E=(y=y+1|0)?E:E+1|0)|(0|A)!=(0|y););}n=e+288|0}function BA(A,g,I,e){var B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0;A:{if((r=a[A+56>>2])|(B=a[A+60>>2])){if(y=Q=16-r|0,c=(Q=(0|(t=0-((r>>>0>16)+B|0)|0))==(0|e)&I>>>0>Q>>>0|e>>>0>t>>>0)?y:I,y=Q=Q?t:e,Q|c){if(Q=A- -64|0,t=0,r=0,!y&c>>>0>=4|y)for(E=-4&c;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],B=(_=1|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+_|0],B=(_=2|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+_|0],B=(_=3|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+_|0],B=r,r=(t=t+4|0)>>>0<4?B+1|0:B,B=h,h=B=(o=o+4|0)>>>0<4?B+1|0:B,(0|o)!=(0|E)|(0|y)!=(0|B););if(h=B=0,B|(o=3&c))for(;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],r=(t=t+1|0)?r:r+1|0,B=s,s=B=(n=n+1|0)?B:B+1|0,(0|o)!=(0|n)|(0|h)!=(0|B););r=a[A+56>>2],B=a[A+60>>2]}if(B=B+y|0,B=(r=r+c|0)>>>0<c>>>0?B+1|0:B,a[A+56>>2]=r,a[A+60>>2]=B,!B&r>>>0<16)break A;q(A,A- -64|0,16,0),a[A+56>>2]=0,a[A+60>>2]=0,I=(r=I)-c|0,e=e-((r>>>0<c>>>0)+y|0)|0,g=g+c|0}if(!e&I>>>0>=16|e&&(q(A,g,r=-16&I,e),I&=15,e=0,g=g+r|0),I|e){if(Q=A- -64|0,n=0,s=0,t=0,r=0,!e&I>>>0>=4|e)for(c=12&I,y=0,o=0;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],B=(E=1|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+E|0],B=(E=2|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+E|0],B=(E=3|t)+a[A+56>>2]|0,C[B+Q|0]=i[g+E|0],r=(t=t+4|0)>>>0<4?r+1|0:r,B=h,h=B=(o=o+4|0)>>>0<4?B+1|0:B,(0|c)!=(0|o)|(0|y)!=(0|B););if(h=B=0,B|(o=3&I))for(;B=t+a[A+56>>2]|0,C[B+Q|0]=i[g+t|0],r=(t=t+1|0)?r:r+1|0,B=s,s=B=(n=n+1|0)?B:B+1|0,(0|o)!=(0|n)|(0|h)!=(0|B););r=e+a[A+60>>2]|0,r=(g=I+a[A+56>>2]|0)>>>0<I>>>0?r+1|0:r,a[A+56>>2]=g,a[A+60>>2]=r}}}function aA(A,g,I){var C,e=0,B=0,i=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0,w=0,k=0;n=a[g+4>>2],e=a[A+4>>2],h=a[g+8>>2],B=a[A+8>>2],s=a[g+12>>2],i=a[A+12>>2],p=a[g+16>>2],r=a[A+16>>2],f=a[g+20>>2],t=a[A+20>>2],y=a[g+24>>2],Q=a[A+24>>2],D=a[g+28>>2],o=a[A+28>>2],w=a[g+32>>2],c=a[A+32>>2],k=a[g+36>>2],E=a[A+36>>2],I=0-I|0,_=a[A>>2],a[A>>2]=I&(_^a[g>>2])^_,a[A+36>>2]=E^I&(E^k),a[A+32>>2]=c^I&(c^w),a[A+28>>2]=o^I&(o^D),a[A+24>>2]=Q^I&(Q^y),a[A+20>>2]=t^I&(t^f),a[A+16>>2]=r^I&(r^p),a[A+12>>2]=i^I&(i^s),a[A+8>>2]=B^I&(B^h),a[A+4>>2]=e^I&(e^n),e=a[A+44>>2],n=a[g+44>>2],B=a[A+48>>2],h=a[g+48>>2],i=a[A+52>>2],s=a[g+52>>2],r=a[A+56>>2],p=a[g+56>>2],t=a[A+60>>2],f=a[g+60>>2],Q=a[(y=A- -64|0)>>2],D=a[g- -64>>2],o=a[A+68>>2],w=a[g+68>>2],c=a[A+72>>2],k=a[g+72>>2],E=a[A+40>>2],_=a[g+40>>2],C=a[A+76>>2],a[A+76>>2]=C^I&(a[g+76>>2]^C),a[A+72>>2]=c^I&(c^k),a[A+68>>2]=o^I&(o^w),a[y>>2]=Q^I&(Q^D),a[A+60>>2]=t^I&(t^f),a[A+56>>2]=r^I&(r^p),a[A+52>>2]=i^I&(i^s),a[A+48>>2]=B^I&(B^h),a[A+44>>2]=e^I&(e^n),a[A+40>>2]=E^I&(E^_),e=a[A+84>>2],n=a[g+84>>2],B=a[A+88>>2],h=a[g+88>>2],i=a[A+92>>2],s=a[g+92>>2],r=a[A+96>>2],p=a[g+96>>2],t=a[A+100>>2],f=a[g+100>>2],Q=a[A+104>>2],y=a[g+104>>2],o=a[A+108>>2],D=a[g+108>>2],c=a[A+112>>2],w=a[g+112>>2],E=a[A+80>>2],k=a[g+80>>2],_=a[g+116>>2],g=a[A+116>>2],a[A+116>>2]=I&(_^g)^g,a[A+112>>2]=c^I&(c^w),a[A+108>>2]=o^I&(o^D),a[A+104>>2]=Q^I&(Q^y),a[A+100>>2]=t^I&(t^f),a[A+96>>2]=r^I&(r^p),a[A+92>>2]=i^I&(i^s),a[A+88>>2]=B^I&(B^h),a[A+84>>2]=e^I&(e^n),a[A+80>>2]=E^I&(E^k)}function iA(A,g){var I,C,e=0;for(n=I=n-192|0,K(C=I+144|0,g),K(e=I+96|0,C),K(e,e),d(e,g,e),d(C,C,e),K(g=I+48|0,C),d(e,e,g),K(g,e),K(g,g),K(g,g),K(g,g),K(g,g),d(e,g,e),K(g,e),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(g,g,e),K(I,g),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),K(I,I),d(g,I,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(e,g,e),K(g,e),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(g,g,e),K(I,g),g=1;K(I,I),100!=(0|(g=g+1|0)););d(g=I+48|0,I,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),K(g,g),d(e=I+96|0,g,e),K(e,e),K(e,e),K(e,e),K(e,e),K(e,e),d(A,e,I+144|0),n=I+192|0}function rA(A,g,I){var C,e,B,i,r,Q,o,c,E=0;n=C=n-128|0,a[A>>2]=1,a[A+4>>2]=0,a[A+8>>2]=0,a[A+12>>2]=0,a[A+16>>2]=0,a[A+20>>2]=0,a[A+24>>2]=0,a[A+28>>2]=0,a[A+32>>2]=0,a[A+36>>2]=0,a[A+40>>2]=1,VA(A+44|0,0,76),aA(A,g=t(g,960)+2688|0,(255&(1^(E=I-((I>>31&I)<<1)|0)))-1>>>31|0),aA(A,g+120|0,(255&(2^E))-1>>>31|0),aA(A,g+240|0,(255&(3^E))-1>>>31|0),aA(A,g+360|0,(255&(4^E))-1>>>31|0),aA(A,g+480|0,(255&(5^E))-1>>>31|0),aA(A,g+600|0,(255&(6^E))-1>>>31|0),aA(A,g+720|0,(255&(7^E))-1>>>31|0),aA(A,g+840|0,(255&(8^E))-1>>>31|0),g=a[A+76>>2],a[C+40>>2]=a[A+72>>2],a[C+44>>2]=g,E=a[4+(g=A- -64|0)>>2],a[C+32>>2]=a[g>>2],a[C+36>>2]=E,g=a[A+60>>2],a[C+24>>2]=a[A+56>>2],a[C+28>>2]=g,g=a[A+52>>2],a[C+16>>2]=a[A+48>>2],a[C+20>>2]=g,g=a[A+44>>2],a[C+8>>2]=a[A+40>>2],a[C+12>>2]=g,g=a[A+12>>2],a[C+56>>2]=a[A+8>>2],a[C+60>>2]=g,E=a[A+20>>2],a[(g=C- -64|0)>>2]=a[A+16>>2],a[g+4>>2]=E,g=a[A+28>>2],a[C+72>>2]=a[A+24>>2],a[C+76>>2]=g,g=a[A+36>>2],a[C+80>>2]=a[A+32>>2],a[C+84>>2]=g,g=a[A+4>>2],a[C+48>>2]=a[A>>2],a[C+52>>2]=g,g=a[A+84>>2],E=a[A+88>>2],e=a[A+92>>2],B=a[A+96>>2],i=a[A+100>>2],r=a[A+104>>2],Q=a[A+108>>2],o=a[A+112>>2],c=a[A+80>>2],a[C+124>>2]=0-a[A+116>>2],a[C+120>>2]=0-o,a[C+116>>2]=0-Q,a[C+112>>2]=0-r,a[C+108>>2]=0-i,a[C+104>>2]=0-B,a[C+100>>2]=0-e,a[C+96>>2]=0-E,a[C+92>>2]=0-g,a[C+88>>2]=0-c,aA(A,C+8|0,(128&I)>>>7|0),n=C+128|0}function tA(A,g,I,e){var B=0,a=0,r=0,t=0,Q=0,o=0,c=0;if(I|e)A:for(c=A+224|0,Q=A+96|0,a=i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24;;){if(B=a+Q|0,!e&I>>>0<=(r=256-a|0)>>>0){OA(B,g,I),g=I+(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)|0,C[A+352|0]=g,C[A+353|0]=g>>>8,C[A+354|0]=g>>>16,C[A+355|0]=g>>>24;break A}if(OA(B,g,r),B=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)+r|0,C[A+352|0]=B,C[A+353|0]=B>>>8,C[A+354|0]=B>>>16,C[A+355|0]=B>>>24,o=a=i[A+68|0]|i[A+69|0]<<8|i[A+70|0]<<16|i[A+71|0]<<24,a=(t=128+(B=i[A+64|0]|i[A+65|0]<<8|i[A+66|0]<<16|i[A+67|0]<<24)|0)>>>0<128?a+1|0:a,C[A+64|0]=t,C[A+65|0]=t>>>8,C[A+66|0]=t>>>16,C[A+67|0]=t>>>24,C[A+68|0]=a,C[A+69|0]=a>>>8,C[A+70|0]=a>>>16,C[A+71|0]=a>>>24,a=i[A+76|0]|i[A+77|0]<<8|i[A+78|0]<<16|i[A+79|0]<<24,a=(o=B=-1==(0|o)&B>>>0>4294967167)>>>0>(B=B+(i[A+72|0]|i[A+73|0]<<8|i[A+74|0]<<16|i[A+75|0]<<24)|0)>>>0?a+1|0:a,C[A+72|0]=B,C[A+73|0]=B>>>8,C[A+74|0]=B>>>16,C[A+75|0]=B>>>24,C[A+76|0]=a,C[A+77|0]=a>>>8,C[A+78|0]=a>>>16,C[A+79|0]=a>>>24,s(A,Q),OA(Q,c,128),B=a=(i[A+352|0]|i[A+353|0]<<8|i[A+354|0]<<16|i[A+355|0]<<24)-128|0,C[A+352|0]=B,C[A+353|0]=B>>>8,C[A+354|0]=B>>>16,C[A+355|0]=B>>>24,g=g+r|0,!((e=e-(I>>>0<r>>>0)|0)|(I=I-r|0)))break}return 0}function QA(A,g){var I,C=0,e=0,B=0,i=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0,f=0,D=0;C=a[g+4>>2],B=a[g+44>>2],i=a[g+8>>2],r=a[g+48>>2],t=a[g+12>>2],Q=a[g+52>>2],o=a[g+16>>2],c=a[g+56>>2],E=a[g+20>>2],y=a[g+60>>2],_=a[g+24>>2],n=a[(e=g- -64|0)>>2],h=a[g+28>>2],s=a[g+68>>2],p=a[g+32>>2],f=a[g+72>>2],D=a[g+36>>2],I=a[g+76>>2],a[A>>2]=a[g>>2]+a[g+40>>2],a[A+36>>2]=D+I,a[A+32>>2]=p+f,a[A+28>>2]=h+s,a[A+24>>2]=_+n,a[A+20>>2]=E+y,a[A+16>>2]=o+c,a[A+12>>2]=t+Q,a[A+8>>2]=i+r,a[A+4>>2]=C+B,C=a[g+4>>2],B=a[g+44>>2],i=a[g+8>>2],r=a[g+48>>2],t=a[g+12>>2],Q=a[g+52>>2],o=a[g+16>>2],c=a[g+56>>2],E=a[g+20>>2],y=a[g+60>>2],_=a[g+24>>2],e=a[e>>2],n=a[g+28>>2],h=a[g+68>>2],s=a[g+32>>2],p=a[g+72>>2],f=a[g>>2],D=a[g+40>>2],a[A+76>>2]=a[g+76>>2]-a[g+36>>2],a[A+72>>2]=p-s,a[A+68>>2]=h-n,a[A- -64>>2]=e-_,a[A+60>>2]=y-E,a[A+56>>2]=c-o,a[A+52>>2]=Q-t,a[A+48>>2]=r-i,a[A+44>>2]=B-C,a[A+40>>2]=D-f,C=a[g+84>>2],a[A+80>>2]=a[g+80>>2],a[A+84>>2]=C,C=a[g+92>>2],a[A+88>>2]=a[g+88>>2],a[A+92>>2]=C,C=a[g+100>>2],a[A+96>>2]=a[g+96>>2],a[A+100>>2]=C,C=a[g+108>>2],a[A+104>>2]=a[g+104>>2],a[A+108>>2]=C,C=a[g+116>>2],a[A+112>>2]=a[g+112>>2],a[A+116>>2]=C,d(A+120|0,g+120|0,1424)}function oA(A,g,I){var C,e,B,i,r,t,Q,o,c,E,y,_,h=0,s=0,p=0,f=0,D=0;h=a[g+12>>2],s=a[g+8>>2],p=a[g+4>>2],C=n+-64&-64,g=a[g>>2],a[C>>2]=a[35248+((255&g)<<2)>>2],a[C+4>>2]=a[35248+(p>>>6&1020)>>2],a[C+8>>2]=a[35248+(s>>>14&1020)>>2],a[C+12>>2]=a[35248+(h>>>22&1020)>>2],a[C+16>>2]=a[35248+((255&p)<<2)>>2],a[C+20>>2]=a[35248+(s>>>6&1020)>>2],a[C+24>>2]=a[35248+(h>>>14&1020)>>2],a[C+28>>2]=a[35248+(g>>>22&1020)>>2],a[C+32>>2]=a[35248+((255&s)<<2)>>2],a[C+36>>2]=a[35248+(h>>>6&1020)>>2],a[C+40>>2]=a[35248+(g>>>14&1020)>>2],a[C+44>>2]=a[35248+(p>>>22&1020)>>2],a[C+48>>2]=a[35248+((255&h)<<2)>>2],a[C+52>>2]=a[35248+(g>>>6&1020)>>2],a[C+56>>2]=a[35248+(p>>>14&1020)>>2],a[C+60>>2]=a[35248+(s>>>22&1020)>>2],g=a[C+12>>2],h=a[C>>2],s=a[C+4>>2],p=a[C+8>>2],e=a[C+28>>2],B=a[C+16>>2],i=a[C+20>>2],r=a[C+24>>2],t=a[C+44>>2],Q=a[C+32>>2],o=a[C+36>>2],c=a[C+40>>2],E=a[I>>2],y=a[I+4>>2],_=a[I+8>>2],f=A,D=a[I+12>>2]^a[C+48>>2]^Ig(a[C+52>>2],8)^Ig(a[C+56>>2],16)^Ig(a[C+60>>2],24),a[f+12>>2]=D,f=A,D=Ig(o,8)^Q^Ig(c,16)^Ig(t,24)^_,a[f+8>>2]=D,f=A,D=Ig(i,8)^B^Ig(r,16)^Ig(e,24)^y,a[f+4>>2]=D,f=A,D=Ig(s,8)^h^Ig(p,16)^Ig(g,24)^E,a[f>>2]=D}function cA(A,g){var I,e,B,i,r,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0;(Q=a[A+56>>2])|(o=a[A+60>>2])&&(C[(E=A- -64|0)+Q|0]=1,!((p=Q+1|0)?o:o+1|0)&p>>>0<=15&&VA(65+(A+Q|0)|0,0,15-Q|0),C[A+80|0]=1,q(A,E,16,0)),p=a[A+52>>2],h=a[A+48>>2],E=a[A+44>>2],Q=a[A+24>>2],y=a[A+28>>2]+(Q>>>26|0)|0,c=a[A+32>>2]+(y>>>26|0)|0,I=a[A+36>>2]+(c>>>26|0)|0,o=(n=(Q=(Q=(67108863&Q)+((_=a[A+20>>2]+t(I>>>26|0,5)|0)>>>26|0)|0)&(y=(c=(r=(67108863&I)+((i=(e=67108863&c)+((B=(s=67108863&y)+((_=Q+((o=5+(n=67108863&_)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)>>>26|0)|0)-67108864|0)>>31)|_&(c=67108863&(_=(c>>>31|0)-1|0)))<<26|o&c|y&n)+a[A+40>>2]|0,C[0|g]=o,C[g+1|0]=o>>>8,C[g+2|0]=o>>>16,C[g+3|0]=o>>>24,n=o>>>0<n>>>0,o=0,o=(Q=(s=y&s|c&B)<<20|Q>>>6)>>>0>(Q=Q+E|0)>>>0?1:o,o=(E=Q)>>>0>(Q=Q+n|0)>>>0?o+1|0:o,C[g+4|0]=Q,C[g+5|0]=Q>>>8,C[g+6|0]=Q>>>16,C[g+7|0]=Q>>>24,Q=0,E=(E=(c=y&e|c&i)<<14|s>>>12)>>>0>(h=E+h|0)>>>0?1:Q,Q=h,h=o,Q=Q+o|0,o=E,o=Q>>>0<h>>>0?o+1|0:o,C[g+8|0]=Q,C[g+9|0]=Q>>>8,C[g+10|0]=Q>>>16,C[g+11|0]=Q>>>24,o=(Q=(Q=(_&r|y&I)<<8|c>>>18)+p|0)+o|0,C[g+12|0]=o,C[g+13|0]=o>>>8,C[g+14|0]=o>>>16,C[g+15|0]=o>>>24,dg(A,88)}function EA(A,g,I){var e,B=0;return n=e=n-16|0,C[e+15|0]=0,B=-1,0|Jg[a[8806]](A,g,I)||(C[e+15|0]=i[0|A]|i[e+15|0],C[e+15|0]=i[A+1|0]|i[e+15|0],C[e+15|0]=i[A+2|0]|i[e+15|0],C[e+15|0]=i[A+3|0]|i[e+15|0],C[e+15|0]=i[A+4|0]|i[e+15|0],C[e+15|0]=i[A+5|0]|i[e+15|0],C[e+15|0]=i[A+6|0]|i[e+15|0],C[e+15|0]=i[A+7|0]|i[e+15|0],C[e+15|0]=i[A+8|0]|i[e+15|0],C[e+15|0]=i[A+9|0]|i[e+15|0],C[e+15|0]=i[A+10|0]|i[e+15|0],C[e+15|0]=i[A+11|0]|i[e+15|0],C[e+15|0]=i[A+12|0]|i[e+15|0],C[e+15|0]=i[A+13|0]|i[e+15|0],C[e+15|0]=i[A+14|0]|i[e+15|0],C[e+15|0]=i[A+15|0]|i[e+15|0],C[e+15|0]=i[A+16|0]|i[e+15|0],C[e+15|0]=i[A+17|0]|i[e+15|0],C[e+15|0]=i[A+18|0]|i[e+15|0],C[e+15|0]=i[A+19|0]|i[e+15|0],C[e+15|0]=i[A+20|0]|i[e+15|0],C[e+15|0]=i[A+21|0]|i[e+15|0],C[e+15|0]=i[A+22|0]|i[e+15|0],C[e+15|0]=i[A+23|0]|i[e+15|0],C[e+15|0]=i[A+24|0]|i[e+15|0],C[e+15|0]=i[A+25|0]|i[e+15|0],C[e+15|0]=i[A+26|0]|i[e+15|0],C[e+15|0]=i[A+27|0]|i[e+15|0],C[e+15|0]=i[A+28|0]|i[e+15|0],C[e+15|0]=i[A+29|0]|i[e+15|0],C[e+15|0]=i[A+30|0]|i[e+15|0],C[e+15|0]=i[A+31|0]|i[e+15|0],B=(i[e+15|0]<<23)-8388608>>31),n=e+16|0,B}function yA(A,g){var I,e,B,i,r,Q,o,c=0,E=0;e=a[g+32>>2],B=a[g+28>>2],i=a[g+24>>2],r=a[g+20>>2],Q=a[g+16>>2],o=a[g+12>>2],c=a[g+4>>2],E=a[g>>2],I=a[g+36>>2],g=a[g+8>>2],E=t((e+(B+(i+(r+(Q+(o+((c+(E+(t(I,19)+16777216>>>25|0)>>26)>>25)+g>>26)>>25)>>26)>>25)>>26)>>25)>>26)+I>>25,19)+E|0,C[0|A]=E,C[A+2|0]=E>>>16,C[A+1|0]=E>>>8,c=c+(E>>26)|0,C[A+5|0]=c>>>14,C[A+4|0]=c>>>6,C[A+3|0]=E>>>24&3|c<<2,g=g+(c>>25)|0,C[A+8|0]=g>>>13,C[A+7|0]=g>>>5,C[A+6|0]=g<<3|(29360128&c)>>>22,E=(g>>26)+o|0,C[A+11|0]=E>>>11,C[A+10|0]=E>>>3,C[A+9|0]=E<<5|(65011712&g)>>>21,c=(E>>25)+Q|0,C[A+15|0]=c>>>18,C[A+14|0]=c>>>10,C[A+13|0]=c>>>2,g=(c>>26)+r|0,C[A+16|0]=g,C[A+12|0]=c<<6|(33030144&E)>>>19,C[A+18|0]=g>>>16,C[A+17|0]=g>>>8,c=(g>>25)+i|0,C[A+21|0]=c>>>15,C[A+20|0]=c>>>7,C[A+19|0]=g>>>24&1|c<<1,g=(c>>26)+B|0,C[A+24|0]=g>>>13,C[A+23|0]=g>>>5,C[A+22|0]=g<<3|(58720256&c)>>>23,c=(g>>25)+e|0,C[A+27|0]=c>>>12,C[A+26|0]=c>>>4,C[A+25|0]=c<<4|(31457280&g)>>>21,g=I+(c>>26)|0,C[A+30|0]=g>>>10,C[A+29|0]=g>>>2,C[A+31|0]=(33292288&g)>>>18,C[A+28|0]=g<<6|(66060288&c)>>>20}function _A(A,g,I){var e,B=0,a=0,r=0,t=0,Q=0,o=0,c=0;if(n=e=n-192|0,I>>>0>=129&&(dA(A),W(A,g,I,0),J(A,e),I=64,g=e),dA(A),VA(e- -64|0,54,128),I){if(I>>>0>=4)for(c=252&I;C[0|(B=(r=e- -64|0)+a|0)]=i[0|B]^i[g+a|0],C[0|(t=(B=1|a)+r|0)]=i[0|t]^i[g+B|0],C[0|(t=(B=2|a)+r|0)]=i[0|t]^i[g+B|0],C[0|(B=(B=r)+(r=3|a)|0)]=i[0|B]^i[g+r|0],a=a+4|0,(0|c)!=(0|(Q=Q+4|0)););if(Q=3&I)for(;C[0|(r=(e- -64|0)+a|0)]=i[0|r]^i[g+a|0],a=a+1|0,(0|Q)!=(0|(o=o+1|0)););}if(W(A,a=e- -64|0,128,0),dA(r=A+208|0),VA(a,92,128),I){if(o=0,a=0,I>>>0>=4)for(c=252&I,Q=0;C[0|(B=(A=e- -64|0)+a|0)]=i[0|B]^i[g+a|0],C[0|(t=(B=1|a)+A|0)]=i[0|t]^i[g+B|0],C[0|(t=(B=2|a)+A|0)]=i[0|t]^i[g+B|0],C[0|(B=(B=A)+(A=3|a)|0)]=i[0|B]^i[A+g|0],a=a+4|0,(0|c)!=(0|(Q=Q+4|0)););if(A=3&I)for(;C[0|(I=(e- -64|0)+a|0)]=i[0|I]^i[g+a|0],a=a+1|0,(0|A)!=(0|(o=o+1|0)););}return W(r,A=e- -64|0,128,0),dg(A,128),dg(e,64),n=e+192|0,0}function nA(A,g){var I;return a[12+(I=n-16|0)>>2]=A,a[I+8>>2]=g,a[I+4>>2]=0,a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]]^i[a[I+8>>2]],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+1|0]^i[a[I+8>>2]+1|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+2|0]^i[a[I+8>>2]+2|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+3|0]^i[a[I+8>>2]+3|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+4|0]^i[a[I+8>>2]+4|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+5|0]^i[a[I+8>>2]+5|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+6|0]^i[a[I+8>>2]+6|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+7|0]^i[a[I+8>>2]+7|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+8|0]^i[a[I+8>>2]+8|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+9|0]^i[a[I+8>>2]+9|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+10|0]^i[a[I+8>>2]+10|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+11|0]^i[a[I+8>>2]+11|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+12|0]^i[a[I+8>>2]+12|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+13|0]^i[a[I+8>>2]+13|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+14|0]^i[a[I+8>>2]+14|0],a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+15|0]^i[a[I+8>>2]+15|0],(a[I+4>>2]-1>>>8&1)-1|0}function hA(A,g,I,C,e,B,i){var r,t,Q,o=0,c=0,E=0,y=0;n=r=n-352|0,AA(r,B,i);A:{if(!(((o=!!(0|e))|!e&C>>>0>A-I>>>0)&A>>>0>I>>>0)&(!e&I-A>>>0>=C>>>0|A>>>0>=I>>>0)){if(a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,c=(i=(o=!!(0|e))|!e&C>>>0>=32)?32:C,E=i?0:e,i=o|!e&C>>>0>32,!(C|e)){y=1;break A}}else I=TA(A,I,C),a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,c=(i=o|!e&C>>>0>=32)?32:C,E=i?0:e,i=o|!e&C>>>0>32;OA(r- -64|0,I,c),y=0}return o=E,rg(t=r+32|0,t,Q=c+32|0,o=Q>>>0<32?o+1|0:o,o=B+16|0,r),fg(r+96|0,t),y||OA(A,r- -64|0,c),dg(r+32|0,64),i&&Qg(A+c|0,I+c|0,C-c|0,e-((C>>>0<c>>>0)+E|0)|0,o,r),dg(r,32),ng(I=r+96|0,A,C,e),Dg(I,g),dg(I,256),n=r+352|0,0}function sA(A,g){var I,C=0,e=0;I=g;A:{g:{I:{if(g&=255){if(3&A)for(;;){if(!(C=i[0|A])|(0|g)==(0|C))break A;if(!(3&(A=A+1|0)))break}if(-2139062144!=(-2139062144&((C=a[A>>2])|16843008-C)))break I;for(e=t(g,16843009);;){if(-2139062144!=(-2139062144&(16843008-(g=C^e)|g)))break I;if(C=a[A+4>>2],A=g=A+4|0,-2139062144!=(-2139062144&(16843008-C|C)))break}break g}C=A;C:{e:{B:if(3&A){if(g=0,!i[0|A])break C;for(;;){if(!(3&(A=A+1|0)))break B;if(!i[0|A])break}break e}for(;g=A,A=A+4|0,-2139062144==(-2139062144&(16843008-(e=a[g>>2])|e)););for(;g=(A=g)+1|0,i[0|A];);}g=A-C|0}A=g+C|0;break A}g=A}for(;;){if(!(C=i[0|(A=g)]))break A;if(g=A+1|0,(0|C)==(255&I))break}}return i[0|A]==(255&I)?A:0}function pA(A,g,I,C,e,B,i){var r,t,Q=0,o=0,c=0;n=r=n-96|0,AA(r,B,i),i=r+32|0,t=B+16|0,Jg[a[8808]](i,32,0,t,r),B=-1;A:{g:if(!(0|Jg[a[8802]](I,g,C,e,i))){if(B=0,!A)break A;I:{if(!(((I=!!(0|e))|!e&C>>>0>g-A>>>0)&A>>>0<g>>>0)&(!e&C>>>0<=A-g>>>0|A>>>0<=g>>>0)){if(!(C|e))break I;I=(B=!e&C>>>0>=32|!!(0|e))?32:C,Q=B?0:e}else g=TA(A,g,C),I=(B=I|!e&C>>>0>=32)?32:C,Q=B?0:e;if(B=Q,c=OA(r- -64|0,g,I),rg(i=r+32|0,i,o=I+32|0,B=o>>>0<32?B+1|0:B,t,r),A=OA(A,c,I),dg(i,64),B=0,!e&C>>>0<33)break g;Qg(A+I|0,g+I|0,C-I|0,e-(Q+(I>>>0>C>>>0)|0)|0,t,r);break g}rg(A=r+32|0,A,32,0,t,r),dg(A,64)}dg(r,32)}return n=r+96|0,B}function fA(A,g,I,C,e,B,r,t,Q,o){var c,E;return n=c=n-400|0,a[c+4>>2]=0,$(E=c+16|0,Q,o),o=i[Q+20|0]|i[Q+21|0]<<8|i[Q+22|0]<<16|i[Q+23|0]<<24,a[c+8>>2]=i[Q+16|0]|i[Q+17|0]<<8|i[Q+18|0]<<16|i[Q+19|0]<<24,a[c+12>>2]=o,yg(o=c+80|0,64,c+4|0,E),fg(Q=c+144|0,o),dg(o,64),ng(Q,B,r,t),ng(Q,35104,0-r&15,0),ng(Q,g,I,C),ng(Q,35104,0-I&15,0),a[c+72>>2]=r,a[c+76>>2]=t,ng(Q,B=c+72|0,8,0),a[c+72>>2]=I,a[c+76>>2]=C,ng(Q,B,8,0),Dg(Q,B=c+48|0),dg(Q,256),Q=nA(B,e),dg(B,16),A&&(Q?(VA(A,0,I),Q=-1):(eg(A,g,I,C,c+4|0,c+16|0),Q=0)),dg(c+16|0,32),n=c+400|0,Q}function DA(A,g,I,C,e,B,r,t,Q,o,c){var E,y,_;return n=E=n-384|0,a[E+4>>2]=0,$(y=E+16|0,o,c),c=i[o+20|0]|i[o+21|0]<<8|i[o+22|0]<<16|i[o+23|0]<<24,a[E+8>>2]=i[o+16|0]|i[o+17|0]<<8|i[o+18|0]<<16|i[o+19|0]<<24,a[E+12>>2]=c,yg(c=E- -64|0,64,_=E+4|0,y),fg(o=E+128|0,c),dg(c,64),ng(o,r,t,Q),ng(o,35104,0-t&15,0),eg(A,C,e,B,_,y),ng(o,A,e,B),ng(o,35104,0-e&15,0),a[E+56>>2]=t,a[E+60>>2]=Q,ng(o,A=E+56|0,8,0),a[E+56>>2]=e,a[E+60>>2]=B,ng(o,A,8,0),Dg(o,g),dg(o,256),I&&(a[I>>2]=16,a[I+4>>2]=0),dg(E+16|0,32),n=E+384|0,0}function wA(A,g,I,C){var e,B=0;return n=e=n-208|0,a[e+72>>2]=0,a[e+76>>2]=0,B=a[8479],a[e+8>>2]=a[8478],a[e+12>>2]=B,B=a[8481],a[e+16>>2]=a[8480],a[e+20>>2]=B,B=a[8483],a[e+24>>2]=a[8482],a[e+28>>2]=B,B=a[8485],a[e+32>>2]=a[8484],a[e+36>>2]=B,B=a[8487],a[e+40>>2]=a[8486],a[e+44>>2]=B,B=a[8489],a[e+48>>2]=a[8488],a[e+52>>2]=B,B=a[8491],a[e+56>>2]=a[8490],a[e+60>>2]=B,a[e+64>>2]=0,a[e+68>>2]=0,B=a[8477],a[e>>2]=a[8476],a[e+4>>2]=B,W(e,g,I,C),J(e,A),n=e+208|0,0}function kA(A,g){var I,e=0,B=0,a=0,r=0;if(C[15+(I=n-16|0)|0]=0,g){if(g>>>0>=4)for(r=-4&g;e=A+B|0,C[I+15|0]=i[0|e]|i[I+15|0],C[I+15|0]=i[e+1|0]|i[I+15|0],C[I+15|0]=i[e+2|0]|i[I+15|0],C[I+15|0]=i[e+3|0]|i[I+15|0],B=B+4|0,(0|r)!=(0|(a=a+4|0)););if(e=3&g)for(g=0;C[I+15|0]=i[A+B|0]|i[I+15|0],B=B+1|0,(0|e)!=(0|(g=g+1|0)););}return i[I+15|0]-1>>>8&1}function dA(A){var g=0;a[A+64>>2]=0,a[A+68>>2]=0,a[A+72>>2]=0,a[A+76>>2]=0,g=a[8477],a[A>>2]=a[8476],a[A+4>>2]=g,g=a[8479],a[A+8>>2]=a[8478],a[A+12>>2]=g,g=a[8481],a[A+16>>2]=a[8480],a[A+20>>2]=g,g=a[8483],a[A+24>>2]=a[8482],a[A+28>>2]=g,g=a[8485],a[A+32>>2]=a[8484],a[A+36>>2]=g,g=a[8487],a[A+40>>2]=a[8486],a[A+44>>2]=g,g=a[8489],a[A+48>>2]=a[8488],a[A+52>>2]=g,g=a[8491],a[A+56>>2]=a[8490],a[A+60>>2]=g}function lA(A,g,I){var e,B=0,r=0;if(a[12+(e=n-16|0)>>2]=A,a[e+8>>2]=g,A=0,C[e+7|0]=0,I){if(g=1&I,1!=(0|I))for(r=-2&I,I=0;C[e+7|0]=i[e+7|0]|i[a[e+12>>2]+A|0]^i[a[e+8>>2]+A|0],B=1|A,C[e+7|0]=i[e+7|0]|i[B+a[e+12>>2]|0]^i[a[e+8>>2]+B|0],A=A+2|0,(0|r)!=(0|(I=I+2|0)););g&&(C[e+7|0]=i[e+7|0]|i[a[e+12>>2]+A|0]^i[a[e+8>>2]+A|0])}return(i[e+7|0]-1>>>8&1)-1|0}function uA(A){for(var g=0,I=0,C=0,e=0,B=0,a=0,r=0,t=0,Q=0,o=0;e=(I=i[A+C|0])^i[0|(g=C+2432|0)]|e,B=I^i[g+192|0]|B,a=I^i[g+160|0]|a,r=I^i[g+128|0]|r,t=I^i[g+96|0]|t,Q=I^i[g- -64|0]|Q,o=I^i[g+32|0]|o,31!=(0|(C=C+1|0)););return((255&((g=127^(A=127&i[A+31|0]))|B))-1|(255&(g|a))-1|(255&(g|r))-1|(255&(122^A|t))-1|(255&(5^A|Q))-1|(255&(A|o))-1|(255&(A|e))-1)>>>8&1}function vA(A,g,I){var C=0,e=0,B=0,a=0;return e=31&(B=a=63&I),B=B>>>0>=32?-1>>>e|0:(C=-1>>>e|0)|(1<<e)-1<<32-e,B&=A,C&=g,e=31&a,a>>>0>=32?(C=B<<e,a=0):(C=(1<<e)-1&B>>>32-e|C<<e,a=B<<e),B=C,C=31&(e=0-I&63),e>>>0>=32?(C=-1<<C,I=0):C=(I=-1<<C)|(1<<C)-1&-1>>>32-C,A&=I,g&=C,C=31&e,e>>>0>=32?(I=0,A=g>>>C|0):(I=g>>>C|0,A=((1<<C)-1&g)<<32-C|A>>>C),h=I|B,A|a}function SA(A,g,I,C,e,B,i,r,t,Q){var o,c,E;return n=o=n-352|0,yg(E=o+32|0,64,t,Q),fg(c=o+96|0,E),dg(E,64),ng(c,B,i,r),ng(c,35168,0-i&15,0),ng(c,g,I,C),ng(c,35168,0-I&15,0),a[o+24>>2]=i,a[o+28>>2]=r,ng(c,B=o+24|0,8,0),a[o+24>>2]=I,a[o+28>>2]=C,ng(c,B,8,0),Dg(c,o),dg(c,256),B=nA(o,e),dg(o,16),A&&(B?(VA(A,0,I),B=-1):(JA(A,g,I,C,t,1,Q),B=0)),n=o+352|0,B}function bA(A,g,I,C,e,B,i,r,t,Q,o){var c,E,y;return n=c=n-336|0,yg(y=c+16|0,64,Q,o),fg(E=c+80|0,y),dg(y,64),ng(E,i,r,t),ng(E,35168,0-r&15,0),JA(A,C,e,B,Q,1,o),ng(E,A,e,B),ng(E,35168,0-e&15,0),a[c+8>>2]=r,a[c+12>>2]=t,ng(E,A=c+8|0,8,0),a[c+8>>2]=e,a[c+12>>2]=B,ng(E,A,8,0),Dg(E,g),dg(E,256),I&&(a[I>>2]=16,a[I+4>>2]=0),n=c+336|0,0}function MA(A,g,I,C,e,B,i,r,t,Q){var o,c,E;return n=o=n-352|0,_g(E=o+32|0,t,Q),fg(c=o+96|0,E),dg(E,64),ng(c,B,i,r),a[o+24>>2]=i,a[o+28>>2]=r,ng(c,B=o+24|0,8,0),ng(c,g,I,C),a[o+24>>2]=I,a[o+28>>2]=C,ng(c,B,8,0),Dg(c,o),dg(c,256),B=nA(o,e),dg(o,16),A&&(B?(VA(A,0,I),B=-1):(Cg(A,g,I,C,t,Q),B=0)),n=o+352|0,B}function FA(A,g,I,C,e,B,i,r,t,Q,o){var c,E,y;return n=c=n-336|0,_g(y=c+16|0,Q,o),fg(E=c+80|0,y),dg(y,64),ng(E,i,r,t),a[c+8>>2]=r,a[c+12>>2]=t,ng(E,i=c+8|0,8,0),Cg(A,C,e,B,Q,o),ng(E,A,e,B),a[c+8>>2]=e,a[c+12>>2]=B,ng(E,i,8,0),Dg(E,g),dg(E,256),I&&(a[I>>2]=16,a[I+4>>2]=0),n=c+336|0,0}function NA(A,g,I,C,e,B,i,r,t,Q,o){var c=0,E=0,y=0;return E=-1,(c=C>>>0<32)&!e||!(c=e-c|0)&(y=C-32|0)>>>0>4294967263|c|!r&i>>>0>4294967263|r||(E=0|Jg[a[o>>2]](A,I,y,(I+C|0)-32|0,32,B,i,t,Q)),g&&(a[g>>2]=E?0:C-32|0,a[g+4>>2]=E?0:e-(C>>>0<32)|0),E}function KA(A,g){var I;for(a[12+(I=n-16|0)>>2]=A,a[I+8>>2]=g,A=0,a[I+4>>2]=0;a[I+4>>2]=a[I+4>>2]|i[a[I+12>>2]+A|0]^i[a[I+8>>2]+A|0],g=1|A,a[I+4>>2]=a[I+4>>2]|i[g+a[I+12>>2]|0]^i[g+a[I+8>>2]|0],32!=(0|(A=A+2|0)););return(a[I+4>>2]-1>>>8&1)-1|0}function YA(A){var g=0,I=0,e=0,B=0,a=0;for(g=1;I=(e=g)+i[0|(g=A+B|0)]|0,C[0|g]=I,I=i[g+1|0]+(I>>>8|0)|0,C[g+1|0]=I,I=i[g+2|0]+(I>>>8|0)|0,C[g+2|0]=I,e=g,g=i[g+3|0]+(I>>>8|0)|0,C[e+3|0]=g,g=g>>>8|0,B=B+4|0,4!=(0|(a=a+4|0)););}function HA(A,g,I,C,e,i,r,t,Q,o,c){return!e&C>>>0>4294967263|!!(0|e)|!t&r>>>0>=4294967264|!!(0|t)?(ig(),B()):(A=0|Jg[a[c>>2]](A,A+C|0,32,I,C,i,r,Q,o),g&&(C=(I=C+32|0)>>>0<32?e+1|0:e,a[g>>2]=A?0:I,a[g+4>>2]=A?0:C)),A}function GA(A,g,I,C){var e,B,a,i,r=0,Q=0;return i=t(r=I>>>16|0,Q=A>>>16|0),r=(65535&(Q=((a=t(e=65535&I,B=65535&A))>>>16|0)+t(Q,e)|0))+t(r,B)|0,h=(t(g,I)+i|0)+t(A,C)+(Q>>>16)+(r>>>16)|0,65535&a|r<<16}function JA(A,g,I,C,e,i,r){var t=0,Q=0;t=C,1==(((t=(Q=I+63|0)>>>0<63?t+1|0:t)>>>6|0)+!!(0|(t=(63&t)<<26|Q>>>6))|0)&i>>>0>(Q=0-t|0)>>>0|1==(0|C)|C>>>0>1?(ig(),B()):Jg[a[9075]](A,g,I,C,e,i,r)}function UA(A){var g=0;a[A+32>>2]=0,a[A+36>>2]=0,g=a[8689],a[A>>2]=a[8688],a[A+4>>2]=g,g=a[8691],a[A+8>>2]=a[8690],a[A+12>>2]=g,g=a[8693],a[A+16>>2]=a[8692],a[A+20>>2]=g,g=a[8695],a[A+24>>2]=a[8694],a[A+28>>2]=g}function xA(A,g){A|=0;var I,e=0,B=0,a=0;if(n=I=n-16|0,g|=0)for(;C[I+15|0]=0,B=A+e|0,a=0|c(36304,I+15|0,0),C[0|B]=a,(0|(e=e+1|0))!=(0|g););n=I+16|0}function mA(A,g,I,C,e,B,a){var i,r,t=0;return n=i=n-32|0,t=-1,(r=I>>>0<16)&!C||XA(i,B,a)||(t=pA(A,g+16|0,g,I-16|0,C-r|0,e,i),dg(i,32)),n=i+32|0,t}function PA(A){var g,I;A:{if(!((A=(g=a[8800])+(I=A+7&-8)|0)>>>0<=g>>>0&&I)){if(A>>>0<=Ug()<<16>>>0)break A;if(0|_(0|A))break A}return a[9280]=48,-1}return a[8800]=A,g}function RA(A,g){var I,e,B;n=I=n-176|0,iA(e=I+96|0,g+80|0),d(B=I+48|0,g,e),d(I,g+40|0,e),yA(A,I),yA(I+144|0,B),C[A+31|0]=i[A+31|0]^i[I+144|0]<<7,n=I+176|0}function LA(A,g,I,C,e,i,r,t,Q,o,c,E){return I&&(a[I>>2]=32,a[I+4>>2]=0),!Q&t>>>0<4294967264&!i&e>>>0<=4294967263||(ig(),B()),0|Jg[a[E>>2]](A,g,32,C,e,r,t,o,c)}function TA(A,g,I){var e=0;if(A>>>0<g>>>0)return OA(A,g,I);if(I)for(e=A+I|0,g=g+I|0;g=g-1|0,C[0|(e=e-1|0)]=i[0|g],I=I-1|0;);return A}function qA(A,g,I,C,e,a,i){var r,t=0;if(n=r=n-32|0,!C&I>>>0<4294967280)return t=-1,XA(r,a,i)||(t=hA(A+16|0,A,g,I,C,e,r),dg(r,32)),n=r+32|0,t;ig(),B()}function zA(A,g,I,C,e,B){return g|=0,0|(!(C|=0)&(I|=0)>>>0>=16|C?pA(A|=0,g+16|0,g,I-16|0,C-(I>>>0<16)|0,e|=0,B|=0):-1)}function jA(A,g,I,C,e,B,i,r,t,Q,o){return!C&I>>>0>4294967263|C|!r&i>>>0>4294967263|r?-1:0|Jg[a[o>>2]](A,g,I,e,32,B,i,t,Q)}function XA(A,g,I){A|=0;var C,e=0;return n=C=n-32|0,e=-1,EA(C,I|=0,g|=0)||(e=AA(A,35184,C)),n=C+32|0,0|e}function OA(A,g,I){var e=0;if(I)for(e=A;C[0|e]=i[0|g],e=e+1|0,g=g+1|0,I=I-1|0;);return A}function VA(A,g,I){var e=0;if(I)for(e=A;C[0|e]=g,e=e+1|0,I=I-1|0;);return A}function ZA(A,g,I){return A|=0,g|=0,(I|=0)>>>0>=256&&(E(1248,1175,107,1055),B()),0|R(A,g,255&I)}function WA(A,g){var I;n=I=n+-64|0,J(A,I),W(A=A+208|0,I,64,0),J(A,g),dg(I,64),n=I- -64|0}function $A(A,g,I,C,e,B,a){return 0|hA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)}function Ag(A,g,I,C,e,B,a){return 0|pA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)}function gg(A,g){var I;n=I=n-32|0,gA(A,I),eA(A=A+104|0,I,32),gA(A,g),dg(I,32),n=I+32|0}function Ig(A,g){var I=0;return(-1>>>(I=31&g)&A)<<I|((I=A)&-1<<(A=0-g&31))>>>A}function Cg(A,g,I,C,e,i){1==(0|C)|C>>>0>1&&(ig(),B()),Jg[a[9074]](A,g,I,C,e,1,0,i)}function eg(A,g,I,C,e,i){1==(0|C)|C>>>0>1&&(ig(),B()),Jg[a[9075]](A,g,I,C,e,1,i)}function Bg(){var A;n=A=n-16|0,C[A+15|0]=0,c(36340,A+15|0,0),n=A+16|0}function ag(A,g,I){return 0|EA(A|=0,g|=0,I|=0)}function ig(){var A;(A=a[9413])&&Jg[0|A](),y(),B()}function rg(A,g,I,C,e,B){Jg[a[8809]](A,g,I,C,e,0,0,B)}function tg(A,g){return A|=0,xA(g|=0,32),0|sg(A,g)}function Qg(A,g,I,C,e,B){Jg[a[8809]](A,g,I,C,e,1,0,B)}function og(A){return A?31-Q(A-1^A)|0:32}function cg(A,g,I,C){Jg[a[9075]](A,g,40,0,I,0,C)}function Eg(A,g){return 0|sg(A|=0,g|=0)}function yg(A,g,I,C){Jg[a[9073]](A,g,0,I,C)}function _g(A,g,I){Jg[a[9072]](A,64,0,g,I)}function ng(A,g,I,C){Jg[a[8804]](A,g,I,C)}function hg(A,g,I,C){return W(A,g,I,C),0}function sg(A,g){return 0|Jg[a[8807]](A,g)}function pg(A,g,I){return eA(A,g,I),0}function fg(A,g){Jg[a[8803]](A,g)}function Dg(A,g){Jg[a[8805]](A,g)}function wg(A){xA(A|=0,32)}function kg(A){xA(A|=0,16)}function dg(A,g){VA(A,0,g)}function lg(){return 208}function ug(){return 16}function vg(){return 32}function Sg(){return 24}function bg(){return-17}function Mg(){return-33}function Fg(){return 64}function Ng(){return 0}function Kg(){return 8}function Yg(){return 1}function Hg(){return 2}e(g=i,1024,"cmFuZG9tYnl0ZXMAYjY0X3BvcyA8PSBiNjRfbGVuAGNyeXB0b19nZW5lcmljaGFzaF9ibGFrZTJiX2ZpbmFsAHJhbmRvbWJ5dGVzL3JhbmRvbWJ5dGVzLmMAc29kaXVtL2NvZGVjcy5jAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9ibGFrZTJiLXJlZi5jAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9nZW5lcmljaGFzaF9ibGFrZTJiLmMAYnVmX2xlbiA8PSBTSVpFX01BWABvdXRsZW4gPD0gVUlOVDhfTUFYAFMtPmJ1ZmxlbiA8PSBCTEFLRTJCX0JMT0NLQllURVMAc29kaXVtX2JpbjJiYXNlNjQAMS4wLjIwAAAAALZ4Wf+FctMAvW4V/w8KagApwAEAmOh5/7w8oP+Zcc7/ALfi/rQNSP8AAAAAAAAAALCgDv7TyYb/nhiPAH9pNQBgDL0Ap9f7/59MgP5qZeH/HvwEAJIMrg=="),e(g,1424,"WfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQ"),e(g,1472,"hTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/"),e(g,2464,"AQ=="),e(g,2496,"JuiVj8KyJ7BFw/SJ8u+Y8NXfrAXTxjM5sTgCiG1T/AXHF2pwPU3YT7o8C3YNEGcPKiBT+iw5zMZOx/13kqwDeuz///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f+3T9VwaYxJY1pz3ot753hQ="),e(g,2687,"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"),e(g,33660,"AQ=="),e(g,33696,"AQ=="),e(g,33728,"4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f0xpYnNvZGl1bURSRwAAAAAIybzzZ+YJajunyoSFrme7K/iU/nLzbjzxNh1fOvVPpdGC5q1/Ug5RH2w+K4xoBZtrvUH7q9mDH3khfhMZzeBbIq4o15gvikLNZe8jkUQ3cS87TezP+8C1vNuJgaXbtek4tUjzW8JWORnQBbbxEfFZm08Zr6SCP5IYgW3a1V4cq0ICA6OYqgfYvm9wRQFbgxKMsuROvoUxJOK0/9XDfQxVb4l78nRdvnKxlhY7/rHegDUSxyWnBtyblCZpz3Txm8HSSvGewWmb5OMlTziGR77vtdWMi8adwQ9lnKx3zKEMJHUCK1lvLOktg+SmbqqEdErU+0G93KmwXLVTEYPaiPl2q99m7lJRPpgQMrQtbcYxqD8h+5jIJwOw5A7vvsd/Wb/Cj6g98wvgxiWnCpNHkafVb4ID4FFjygZwbg4KZykpFPwv0kaFCrcnJskmXDghGy7tKsRa/G0sTd+zlZ0TDThT3mOvi1RzCmWosnc8uwpqduau7UcuycKBOzWCFIUscpJkA/FMoei/ogEwQrxLZhqokZf40HCLS8IwvlQGo1FsxxhS79YZ6JLREKllVSQGmdYqIHFXhTUO9LjRuzJwoGoQyNDSuBbBpBlTq0FRCGw3Hpnrjt9Md0gnqEib4bW8sDRjWsnFswwcOcuKQeNKqthOc+Njd0/KnFujuLLW828uaPyy713ugo90YC8XQ29jpXhyq/ChFHjIhOw5ZBoIAseMKB5jI/r/vpDpvYLe62xQpBV5xrL3o/m+K1Ny4/J4ccacYSbqzj4nygfCwCHHuIbRHuvgzdZ92up40W7uf0999bpvF3KqZ/AGppjIosV9YwquDfm+BJg/ERtHHBM1C3EbhH0EI/V32yiTJMdAe6vKMry+yRUKvp48TA0QnMRnHUO2Qj7LvtTFTCp+ZfycKX9Z7PrWOqtvy18XWEdKjBlEbIA="),e(g,34752,"Z+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FuYL4pCkUQ3cc/7wLWl27XpW8JWOfER8Vmkgj+S1V4cq5iqB9gBW4MSvoUxJMN9DFV0Xb5y/rHegKcG3Jt08ZvBwWmb5IZHvu/GncEPzKEMJG8s6S2qhHRK3KmwXNqI+XZSUT6YbcYxqMgnA7DHf1m/8wvgxkeRp9VRY8oGZykpFIUKtyc4IRsu/G0sTRMNOFNUcwpluwpqdi7JwoGFLHKSoei/oktmGqhwi0vCo1FsxxnoktEkBpnWhTUO9HCgahAWwaQZCGw3Hkx3SCe1vLA0swwcOUqq2E5Pypxb828uaO6Cj3RvY6V4FHjIhAgCx4z6/76Q62xQpPej+b7yeHHGgA=="),e(g,35120,"U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMB"),e(g,35200,"IJMBAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQ=="),e(g,35248,"xmNjpfh8fITud3eZ9nt7jf/y8g3Wa2u93m9vsZHFxVRgMDBQAgEBA85nZ6lWKyt95/7+GbXX12JNq6vm7HZ2mo/KykUfgoKdicnJQPp9fYfv+voVsllZ645HR8n78PALQa2t7LPU1GdfoqL9Ra+v6iOcnL9TpKT35HJylpvAwFt1t7fC4f39HD2Tk65MJiZqbDY2Wn4/P0H19/cCg8zMT2g0NFxRpaX00eXlNPnx8QjicXGTq9jYc2IxMVMqFRU/CAQEDJXHx1JGIyNlncPDXjAYGCg3lpahCgUFDy+amrUOBwcJJBISNhuAgJvf4uI9zevrJk4nJ2l/srLN6nV1nxIJCRsdg4OeWCwsdDQaGi42Gxst3G5usrRaWu5boKD7pFJS9nY7O0231tZhfbOzzlIpKXvd4+M+Xi8vcROEhJemU1P1udHRaAAAAADB7e0sQCAgYOP8/B95sbHItltb7dRqar6Ny8tGZ76+2XI5OUuUSkremExM1LBYWOiFz89Ku9DQa8Xv7ypPqqrl7fv7FoZDQ8WaTU3XZjMzVRGFhZSKRUXP6fn5EAQCAgb+f3+BoFBQ8Hg8PEQln5+6S6io46JRUfNdo6P+gEBAwAWPj4o/kpKtIZ2dvHA4OEjx9fUEY7y833e2tsGv2tp1QiEhYyAQEDDl//8a/fPzDr/S0m2Bzc1MGAwMFCYTEzXD7Owvvl9f4TWXl6KIRETMLhcXOZPExFdVp6fy/H5+gno9PUfIZGSsul1d5zIZGSvmc3OVwGBgoBmBgZieT0/Ro9zcf0QiImZUKip+O5CQqwuIiIOMRkbKx+7uKWu4uNMoFBQ8p97eebxeXuIWCwsdrdvbdtvg4DtkMjJWdDo6ThQKCh6SSUnbDAYGCkgkJGy4XFzkn8LCXb3T025DrKzvxGJipjmRkagxlZWk0+TkN/J5eYvV5+cyi8jIQ243N1nabW23AY2NjLHV1WScTk7SSamp4NhsbLSsVlb68/T0B8/q6iXKZWWv9Hp6jkeurukQCAgYb7q61fB4eIhKJSVvXC4ucjgcHCRXpqbxc7S0x5fGxlHL6Ogjod3dfOh0dJw+Hx8hlktL3WG9vdwNi4uGD4qKheBwcJB8Pj5CcbW1xMxmZqqQSEjYBgMDBff29gEcDg4SwmFho2o1NV+uV1f5abm50BeGhpGZwcFYOh0dJyeenrnZ4eE46/j4EyuYmLMiEREz0mlpu6nZ2XAHjo6JM5SUpy2bm7Y8Hh4iFYeHksnp6SCHzs5JqlVV/1AoKHil3996A4yMj1mhofgJiYmAGg0NF2W/v9rX5uYxhEJCxtBoaLiCQUHDKZmZsFotLXceDw8Re7Cwy6hUVPxtu7vWLBYWOgoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAAR");var Gg,Jg=(Gg=[null,function(A,g,I,e,B){var r,t,Q;return A|=0,g|=0,I|=0,e|=0,B|=0,n=r=(t=n)-128&-64,a[r>>2]=67108863&(i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),a[r+4>>2]=(i[B+3|0]|i[B+4|0]<<8|i[B+5|0]<<16|i[B+6|0]<<24)>>>2&67108611,a[r+8>>2]=(i[B+6|0]|i[B+7|0]<<8|i[B+8|0]<<16|i[B+9|0]<<24)>>>4&67092735,a[r+12>>2]=(i[B+9|0]|i[B+10|0]<<8|i[B+11|0]<<16|i[B+12|0]<<24)>>>6&66076671,Q=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[r+20>>2]=0,a[r+24>>2]=0,a[r+28>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,a[r+16>>2]=Q>>>8&1048575,a[r+40>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[r+44>>2]=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[r+48>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,B=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,C[r+80|0]=0,a[r+56>>2]=0,a[r+60>>2]=0,a[r+52>>2]=B,BA(r,g,I,e),cA(r,A),n=t,0},function(A,g,I,e,B){var r,t,Q;return A|=0,g|=0,I|=0,e|=0,B|=0,n=r=(t=n)-192&-64,a[r+64>>2]=67108863&(i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),a[r+68>>2]=(i[B+3|0]|i[B+4|0]<<8|i[B+5|0]<<16|i[B+6|0]<<24)>>>2&67108611,a[r+72>>2]=(i[B+6|0]|i[B+7|0]<<8|i[B+8|0]<<16|i[B+9|0]<<24)>>>4&67092735,a[r+76>>2]=(i[B+9|0]|i[B+10|0]<<8|i[B+11|0]<<16|i[B+12|0]<<24)>>>6&66076671,Q=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[r+84>>2]=0,a[r+88>>2]=0,a[r+92>>2]=0,a[r+96>>2]=0,a[r+100>>2]=0,a[r+80>>2]=Q>>>8&1048575,a[r+104>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[r+108>>2]=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[r+112>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,B=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,C[r+144|0]=0,a[r+120>>2]=0,a[r+124>>2]=0,a[r+116>>2]=B,BA(B=r- -64|0,g,I,e),cA(B,g=r+48|0),A=nA(A,g),n=t,0|A},function(A,g){var I;return g|=0,a[(A|=0)>>2]=67108863&(i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24),a[A+4>>2]=(i[g+3|0]|i[g+4|0]<<8|i[g+5|0]<<16|i[g+6|0]<<24)>>>2&67108611,a[A+8>>2]=(i[g+6|0]|i[g+7|0]<<8|i[g+8|0]<<16|i[g+9|0]<<24)>>>4&67092735,a[A+12>>2]=(i[g+9|0]|i[g+10|0]<<8|i[g+11|0]<<16|i[g+12|0]<<24)>>>6&66076671,I=i[g+12|0]|i[g+13|0]<<8|i[g+14|0]<<16|i[g+15|0]<<24,a[A+20>>2]=0,a[A+24>>2]=0,a[A+28>>2]=0,a[A+32>>2]=0,a[A+36>>2]=0,a[A+16>>2]=I>>>8&1048575,a[A+40>>2]=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,a[A+44>>2]=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,a[A+48>>2]=i[g+24|0]|i[g+25|0]<<8|i[g+26|0]<<16|i[g+27|0]<<24,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,C[A+80|0]=0,a[A+56>>2]=0,a[A+60>>2]=0,a[A+52>>2]=g,0},function(A,g,I,C){return BA(A|=0,g|=0,I|=0,C|=0),0},function(A,g){return cA(A|=0,g|=0),0},function(A,g,I){A|=0,g|=0,I|=0;var e,B=0,r=0,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,v=0,S=0,b=0,M=0,F=0,N=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,L=0,T=0,q=0,z=0,j=0,X=0,O=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,rA=0,tA=0,QA=0,oA=0,cA=0,EA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,kA=0,dA=0,lA=0;for(n=e=n-368|0;p=(t=i[I+B|0])^i[0|(o=B+33664|0)]|p,s=t^i[o+192|0]|s,_=t^i[o+160|0]|_,y=t^i[o+128|0]|y,Q=t^i[o+96|0]|Q,c=t^i[o- -64|0]|c,r=t^i[o+32|0]|r,31!=(0|(B=B+1|0)););if(B=-1,!(256&((255&((t=127^(o=127&i[I+31|0]))|s))-1|(255&(t|_))-1|(255&(t|y))-1|(255&(87^o|Q))-1|(255&(c|o))-1|(255&(r|o))-1|(255&(o|p))-1))){for(B=g,g=i[g+28|0]|i[g+29|0]<<8|i[g+30|0]<<16|i[g+31|0]<<24,a[e+360>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,a[e+364>>2]=g,g=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[e+352>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[e+356>>2]=g,r=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,g=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,a[e+336>>2]=g,a[e+340>>2]=r,r=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[e+344>>2]=i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,a[e+348>>2]=r,C[e+336|0]=248&g,C[e+367|0]=63&i[e+367|0]|64,V(e+288|0,I),a[e+260>>2]=0,a[e+264>>2]=0,a[e+268>>2]=0,a[e+272>>2]=0,a[e+276>>2]=0,a[e+208>>2]=0,a[e+212>>2]=0,a[e+216>>2]=0,a[e+220>>2]=0,a[e+224>>2]=0,a[e+228>>2]=0,g=a[e+308>>2],a[e+160>>2]=a[e+304>>2],a[e+164>>2]=g,g=a[e+316>>2],a[e+168>>2]=a[e+312>>2],a[e+172>>2]=g,g=a[e+324>>2],a[e+176>>2]=a[e+320>>2],a[e+180>>2]=g,a[e+244>>2]=0,a[e+248>>2]=0,a[e+240>>2]=1,a[e+252>>2]=0,a[e+256>>2]=0,a[e+192>>2]=0,a[e+196>>2]=0,a[e+200>>2]=0,a[e+204>>2]=0,g=a[e+292>>2],a[e+144>>2]=a[e+288>>2],a[e+148>>2]=g,g=a[e+300>>2],a[e+152>>2]=a[e+296>>2],a[e+156>>2]=g,a[e+116>>2]=0,a[e+120>>2]=0,a[e+124>>2]=0,a[e+128>>2]=0,a[e+132>>2]=0,a[e+100>>2]=0,a[e+104>>2]=0,a[e+96>>2]=1,a[e+108>>2]=0,a[e+112>>2]=0,I=254;W=a[e+276>>2],t=a[e+180>>2],$=a[e+96>>2],AA=a[e+192>>2],gA=a[e+144>>2],IA=a[e+240>>2],CA=a[e+100>>2],eA=a[e+196>>2],BA=a[e+148>>2],aA=a[e+244>>2],F=a[e+104>>2],rA=a[e+200>>2],N=a[e+152>>2],tA=a[e+248>>2],G=a[e+108>>2],QA=a[e+204>>2],J=a[e+156>>2],oA=a[e+252>>2],Y=a[e+112>>2],cA=a[e+208>>2],b=a[e+160>>2],EA=a[e+256>>2],p=a[e+116>>2],_A=a[e+212>>2],E=a[e+164>>2],nA=a[e+260>>2],s=a[e+120>>2],hA=a[e+216>>2],_=a[e+168>>2],sA=a[e+264>>2],y=a[e+124>>2],pA=a[e+220>>2],Q=a[e+172>>2],fA=a[e+268>>2],c=a[e+128>>2],DA=a[e+224>>2],r=a[e+176>>2],S=a[e+272>>2],wA=I,M=(l=(g=0-((g=Z)^(Z=i[(kA=e+336|0)+(I>>>3|0)|0]>>>(7&I)&1))|0)&((B=a[e+132>>2])^(z=a[e+228>>2])))^B,a[e+132>>2]=M,j=t^(u=g&(t^W)),a[e+84>>2]=j-M,H=c^(D=g&(c^DA)),a[e+128>>2]=H,X=(v=g&(r^S))^r,a[e+80>>2]=X-H,x=y^(w=g&(y^pA)),a[e+124>>2]=x,dA=Q^(k=g&(Q^fA)),a[e+76>>2]=dA-x,m=s^(f=g&(s^hA)),a[e+120>>2]=m,lA=_^(o=g&(_^sA)),a[e+72>>2]=lA-m,P=p^(t=g&(p^_A)),a[e+116>>2]=P,R=E^(p=g&(E^nA)),a[e+68>>2]=R-P,L=Y^(s=g&(Y^cA)),a[e+112>>2]=L,U=b^(_=g&(b^EA)),a[e+64>>2]=U-L,T=G^(y=g&(G^QA)),a[e+108>>2]=T,O=J^(Q=g&(J^oA)),a[e+60>>2]=O-T,q=F^(c=g&(F^rA)),a[e+104>>2]=q,G=N^(r=g&(N^tA)),a[e+56>>2]=G-q,F=CA^(B=g&(CA^eA)),a[e+100>>2]=F,J=BA^(I=g&(BA^aA)),a[e+52>>2]=J-F,N=$^(Y=g&($^AA)),a[e+96>>2]=N,b=(g&=gA^IA)^gA,a[e+48>>2]=b-N,E=u^W,l^=z,a[e+36>>2]=E-l,u=v^S,D^=DA,a[e+32>>2]=u-D,v=k^fA,w^=pA,a[e+28>>2]=v-w,k=o^sA,f^=hA,a[e+24>>2]=k-f,o=p^nA,t^=_A,a[e+20>>2]=o-t,p=_^EA,s^=cA,a[e+16>>2]=p-s,_=Q^oA,y^=QA,a[e+12>>2]=_-y,Q=r^tA,c^=rA,a[e+8>>2]=Q-c,r=I^aA,B^=eA,a[e+4>>2]=r-B,I=g^IA,g=Y^AA,a[e>>2]=I-g,a[e+276>>2]=E+l,a[e+272>>2]=u+D,a[e+268>>2]=w+v,a[e+264>>2]=f+k,a[e+260>>2]=t+o,a[e+256>>2]=s+p,a[e+248>>2]=Q+c,a[e+244>>2]=B+r,a[e+240>>2]=g+I,a[e+252>>2]=y+_,a[e+228>>2]=M+j,a[e+224>>2]=H+X,a[e+220>>2]=x+dA,a[e+216>>2]=m+lA,a[e+212>>2]=P+R,a[e+208>>2]=U+L,a[e+204>>2]=T+O,a[e+200>>2]=G+q,a[e+196>>2]=F+J,a[e+192>>2]=b+N,d(j=e+96|0,H=e+48|0,M=e+240|0),d(S=e+192|0,S,e),K(H,e),K(e,M),E=a[e+192>>2],l=a[e+96>>2],u=a[e+196>>2],D=a[e+100>>2],v=a[e+200>>2],w=a[e+104>>2],k=a[e+204>>2],f=a[e+108>>2],o=a[e+208>>2],t=a[e+112>>2],p=a[e+212>>2],s=a[e+116>>2],_=a[e+216>>2],y=a[e+120>>2],Q=a[e+220>>2],c=a[e+124>>2],r=a[e+224>>2],B=a[e+128>>2],I=a[e+228>>2],g=a[e+132>>2],a[e+180>>2]=I+g,a[e+176>>2]=B+r,a[e+172>>2]=Q+c,a[e+168>>2]=y+_,a[e+164>>2]=s+p,a[e+160>>2]=t+o,a[e+156>>2]=f+k,a[e+152>>2]=w+v,a[e+148>>2]=u+D,a[e+144>>2]=E+l,a[e+228>>2]=g-I,a[e+224>>2]=B-r,a[e+220>>2]=c-Q,a[e+216>>2]=y-_,a[e+212>>2]=s-p,a[e+208>>2]=t-o,a[e+204>>2]=f-k,a[e+200>>2]=w-v,a[e+196>>2]=D-u,a[e+192>>2]=l-E,d(M,e,H),x=a[e+52>>2],f=a[e+4>>2],m=a[e+56>>2],o=a[e+8>>2],P=a[e+64>>2],_=a[e+16>>2],L=a[e+60>>2],y=a[e+12>>2],T=a[e+72>>2],Q=a[e+24>>2],q=a[e+68>>2],c=a[e+20>>2],F=a[e+80>>2],r=a[e+32>>2],N=a[e+76>>2],B=a[e+28>>2],z=a[e+84>>2],g=a[e+36>>2],X=a[e+48>>2],I=a[e>>2]-X|0,a[e>>2]=I,g=g-z|0,a[e+36>>2]=g,Y=B-N|0,a[e+28>>2]=Y,b=r-F|0,a[e+32>>2]=b,t=c-q|0,a[e+20>>2]=t,p=Q-T|0,a[e+24>>2]=p,s=y-L|0,a[e+12>>2]=s,_=_-P|0,a[e+16>>2]=_,y=o-m|0,a[e+8>>2]=y,r=f-x|0,a[e+4>>2]=r,K(S,S),g=GA(g,g>>31,121666,0),B=h,O=g,g=GA((33554431&(B=(E=g+16777216|0)>>>0<16777216?B+1|0:B))<<7|E>>>25,B>>25,19,0),c=h,B=g,g=GA(I,I>>31,121666,0),U=h+c|0,g=g>>>0>(B=B+g|0)>>>0?U+1|0:U,I=(Q=B+33554432|0)>>>0<33554432?g+1|0:g,l=B-(-67108864&Q)|0,a[e+96>>2]=l,c=GA(r,r>>31,121666,0),B=h,B=(r=c+16777216|0)>>>0<16777216?B+1|0:B,u=(c-(-33554432&r)|0)+((67108863&I)<<6|Q>>>26)|0,a[e+100>>2]=u,U=(g=B)>>25,B=(33554431&g)<<7|r>>>25,I=GA(y,y>>31,121666,0)+B|0,g=U+h|0,g=I>>>0<B>>>0?g+1|0:g,c=(D=I+33554432|0)>>>0<33554432?g+1|0:g,v=I-(-67108864&D)|0,a[e+104>>2]=v,B=GA(_,_>>31,121666,0),r=h,I=GA(s,s>>31,121666,0),g=h,R=B,G=I,B=(33554431&(g=(w=I+16777216|0)>>>0<16777216?g+1|0:g))<<7|w>>>25,g=(g>>25)+r|0,g=(I=R+B|0)>>>0<B>>>0?g+1|0:g,r=(k=I+33554432|0)>>>0<33554432?g+1|0:g,f=I-(-67108864&k)|0,a[e+112>>2]=f,B=GA(p,p>>31,121666,0),Q=h,I=GA(t,t>>31,121666,0),g=h,R=B,J=I,B=(33554431&(g=(o=I+16777216|0)>>>0<16777216?g+1|0:g))<<7|o>>>25,g=(g>>25)+Q|0,g=(I=R+B|0)>>>0<B>>>0?g+1|0:g,B=(t=I+33554432|0)>>>0<33554432?g+1|0:g,p=I-(-67108864&t)|0,a[e+120>>2]=p,Q=GA(b,b>>31,121666,0),y=h,I=GA(Y,Y>>31,121666,0),g=h,b=I,I=(33554431&(g=(s=I+16777216|0)>>>0<16777216?g+1|0:g))<<7|s>>>25,g=(g>>25)+y|0,g=I>>>0>(Q=I+Q|0)>>>0?g+1|0:g,I=(_=Q+33554432|0)>>>0<33554432?g+1|0:g,y=Q-(-67108864&_)|0,a[e+128>>2]=y,Q=(c=G+((67108863&c)<<6|D>>>26)|0)-(-33554432&w)|0,a[e+108>>2]=Q,c=(r=J+((67108863&r)<<6|k>>>26)|0)-(-33554432&o)|0,a[e+116>>2]=c,r=(g=b+((67108863&B)<<6|t>>>26)|0)-(-33554432&s)|0,a[e+124>>2]=r,I=(I=O+((67108863&I)<<6|_>>>26)|0)-(-33554432&E)|0,a[e+132>>2]=I,K(g=e+144|0,g),a[e+84>>2]=I+z,a[e+80>>2]=y+F,a[e+76>>2]=r+N,a[e+72>>2]=p+T,a[e+68>>2]=c+q,a[e+64>>2]=f+P,a[e+60>>2]=Q+L,a[e+56>>2]=v+m,a[e+52>>2]=u+x,a[e+48>>2]=l+X,I=wA-1|0,d(j,e+288|0,S),d(S,e,H),wA;);p=a[e+144>>2],l=a[e+240>>2],s=a[e+148>>2],u=a[e+244>>2],_=a[e+152>>2],D=a[e+248>>2],y=a[e+156>>2],v=a[e+252>>2],Q=a[e+160>>2],w=a[e+256>>2],c=a[e+164>>2],k=a[e+260>>2],r=a[e+168>>2],f=a[e+264>>2],B=a[e+172>>2],o=a[e+268>>2],I=a[e+176>>2],t=a[e+272>>2],E=0-Z|0,g=a[e+276>>2],a[e+276>>2]=E&(g^a[e+180>>2])^g,a[e+272>>2]=t^E&(I^t),a[e+268>>2]=o^E&(B^o),a[e+264>>2]=f^E&(r^f),a[e+260>>2]=k^E&(c^k),a[e+256>>2]=w^E&(Q^w),a[e+252>>2]=v^E&(y^v),a[e+248>>2]=D^E&(_^D),a[e+244>>2]=u^E&(s^u),a[e+240>>2]=l^E&(p^l),l=a[e+192>>2],p=a[e+96>>2],u=a[e+196>>2],s=a[e+100>>2],D=a[e+200>>2],_=a[e+104>>2],v=a[e+204>>2],y=a[e+108>>2],w=a[e+208>>2],Q=a[e+112>>2],k=a[e+212>>2],c=a[e+116>>2],f=a[e+216>>2],r=a[e+120>>2],o=a[e+220>>2],B=a[e+124>>2],t=a[e+224>>2],I=a[e+128>>2],g=a[e+228>>2],a[e+228>>2]=E&(g^a[e+132>>2])^g,a[e+224>>2]=t^E&(I^t),a[e+220>>2]=o^E&(B^o),a[e+216>>2]=f^E&(r^f),a[e+212>>2]=k^E&(c^k),a[e+208>>2]=w^E&(Q^w),a[e+204>>2]=v^E&(y^v),a[e+200>>2]=D^E&(_^D),a[e+196>>2]=u^E&(s^u),a[e+192>>2]=l^E&(p^l),iA(S,S),d(M,M,S),yA(A,M),dg(kA,32),B=0}return n=e+368|0,0|B},function(A,g){var I,e,B,r,t,Q,o,c,E,y,_,h,s,p,f,D,w,k,l,u;return g|=0,n=I=n-304|0,C[0|(A|=0)]=i[0|g],C[A+1|0]=i[g+1|0],C[A+2|0]=i[g+2|0],C[A+3|0]=i[g+3|0],C[A+4|0]=i[g+4|0],C[A+5|0]=i[g+5|0],C[A+6|0]=i[g+6|0],C[A+7|0]=i[g+7|0],C[A+8|0]=i[g+8|0],C[A+9|0]=i[g+9|0],C[A+10|0]=i[g+10|0],C[A+11|0]=i[g+11|0],C[A+12|0]=i[g+12|0],C[A+13|0]=i[g+13|0],C[A+14|0]=i[g+14|0],C[A+15|0]=i[g+15|0],C[A+16|0]=i[g+16|0],C[A+17|0]=i[g+17|0],C[A+18|0]=i[g+18|0],C[A+19|0]=i[g+19|0],C[A+20|0]=i[g+20|0],C[A+21|0]=i[g+21|0],C[A+22|0]=i[g+22|0],C[A+23|0]=i[g+23|0],C[A+24|0]=i[g+24|0],C[A+25|0]=i[g+25|0],C[A+26|0]=i[g+26|0],C[A+27|0]=i[g+27|0],C[A+28|0]=i[g+28|0],C[A+29|0]=i[g+29|0],C[A+30|0]=i[g+30|0],g=i[g+31|0],C[0|A]=248&i[0|A],C[A+31|0]=63&g|64,Z(I+48|0,A),g=a[I+128>>2],e=a[I+88>>2],B=a[I+132>>2],r=a[I+92>>2],t=a[I+136>>2],Q=a[I+96>>2],o=a[I+140>>2],c=a[I+100>>2],E=a[I+144>>2],y=a[I+104>>2],_=a[I+148>>2],h=a[I+108>>2],s=a[I+152>>2],p=a[I+112>>2],f=a[I+156>>2],D=a[I+116>>2],w=a[I+160>>2],k=a[I+120>>2],l=a[I+124>>2],u=a[I+164>>2],a[I+292>>2]=l+u,a[I+288>>2]=w+k,a[I+284>>2]=f+D,a[I+280>>2]=s+p,a[I+276>>2]=_+h,a[I+272>>2]=E+y,a[I+268>>2]=o+c,a[I+264>>2]=t+Q,a[I+260>>2]=B+r,a[I+256>>2]=g+e,a[I+244>>2]=u-l,a[I+240>>2]=w-k,a[I+236>>2]=f-D,a[I+232>>2]=s-p,a[I+228>>2]=_-h,a[I+224>>2]=E-y,a[I+220>>2]=o-c,a[I+216>>2]=t-Q,a[I+212>>2]=B-r,a[I+208>>2]=g-e,iA(g=I+208|0,g),d(I,I+256|0,g),yA(A,I),n=I+304|0,0},function(A,g,I,e,B){A|=0,e|=0,B|=0;var r,t=0,Q=0,o=0,c=0;if(n=r=n-112|0,(g|=0)|(I|=0)){t=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,a[r+24>>2]=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,a[r+28>>2]=t,t=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,a[r+16>>2]=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,a[r+20>>2]=t,t=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,a[r>>2]=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,a[r+4>>2]=t,t=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,a[r+8>>2]=i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,a[r+12>>2]=t,B=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,e=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[r+104>>2]=0,a[r+108>>2]=0,a[r+96>>2]=B,a[r+100>>2]=e;A:{if(!I&g>>>0>=64|I){for(;T(A,r+96|0,r),e=i[r+104|0]+1|0,C[r+104|0]=e,e=i[r+105|0]+(e>>>8|0)|0,C[r+105|0]=e,e=i[r+106|0]+(e>>>8|0)|0,C[r+106|0]=e,e=i[r+107|0]+(e>>>8|0)|0,C[r+107|0]=e,e=i[r+108|0]+(e>>>8|0)|0,C[r+108|0]=e,e=i[r+109|0]+(e>>>8|0)|0,C[r+109|0]=e,e=i[r+110|0]+(e>>>8|0)|0,C[r+110|0]=e,C[r+111|0]=i[r+111|0]+(e>>>8|0),A=A- -64|0,I=I-1|0,!(I=(g=g+-64|0)>>>0<4294967232?I+1|0:I)&g>>>0>63|I;);if(!(g|I))break A}if(e=0,T(r+32|0,r+96|0,r),t=3&g,B=0,!I&g>>>0>=4|I)for(I=60&g,g=0;Q=o=r+32|0,C[A+B|0]=i[Q+B|0],C[(c=1|B)+A|0]=i[Q+c|0],C[(Q=2|B)+A|0]=i[Q+o|0],C[(Q=3|B)+A|0]=i[Q+(r+32|0)|0],B=B+4|0,(0|I)!=(0|(g=g+4|0)););if(t)for(;C[A+B|0]=i[(r+32|0)+B|0],B=B+1|0,(0|t)!=(0|(e=e+1|0)););}dg(r+32|0,64),dg(r,32)}return n=r+112|0,0},function(A,g,I,e,B,r,t,Q){A|=0,g|=0,B|=0,r|=0,t|=0,Q|=0;var o,c=0;if(n=o=n-112|0,(I|=0)|(e|=0)){c=i[Q+28|0]|i[Q+29|0]<<8|i[Q+30|0]<<16|i[Q+31|0]<<24,a[o+24>>2]=i[Q+24|0]|i[Q+25|0]<<8|i[Q+26|0]<<16|i[Q+27|0]<<24,a[o+28>>2]=c,c=i[Q+20|0]|i[Q+21|0]<<8|i[Q+22|0]<<16|i[Q+23|0]<<24,a[o+16>>2]=i[Q+16|0]|i[Q+17|0]<<8|i[Q+18|0]<<16|i[Q+19|0]<<24,a[o+20>>2]=c,c=i[Q+4|0]|i[Q+5|0]<<8|i[Q+6|0]<<16|i[Q+7|0]<<24,a[o>>2]=i[0|Q]|i[Q+1|0]<<8|i[Q+2|0]<<16|i[Q+3|0]<<24,a[o+4>>2]=c,c=i[Q+12|0]|i[Q+13|0]<<8|i[Q+14|0]<<16|i[Q+15|0]<<24,a[o+8>>2]=i[Q+8|0]|i[Q+9|0]<<8|i[Q+10|0]<<16|i[Q+11|0]<<24,a[o+12>>2]=c,Q=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,a[o+96>>2]=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,a[o+100>>2]=Q,C[o+104|0]=r,C[o+111|0]=t>>>24,C[o+110|0]=t>>>16,C[o+109|0]=t>>>8,C[o+108|0]=t,C[o+107|0]=(16777215&t)<<8|r>>>24,C[o+106|0]=(65535&t)<<16|r>>>16,C[o+105|0]=(255&t)<<24|r>>>8;A:{if(!e&I>>>0>=64|e){for(;;){for(Q=0,T(o+32|0,o+96|0,o);r=o+32|0,C[A+Q|0]=i[r+Q|0]^i[g+Q|0],C[(B=1|Q)+A|0]=i[B+r|0]^i[g+B|0],64!=(0|(Q=Q+2|0)););if(B=i[o+104|0]+1|0,C[o+104|0]=B,B=i[o+105|0]+(B>>>8|0)|0,C[o+105|0]=B,B=i[o+106|0]+(B>>>8|0)|0,C[o+106|0]=B,B=i[o+107|0]+(B>>>8|0)|0,C[o+107|0]=B,B=i[o+108|0]+(B>>>8|0)|0,C[o+108|0]=B,B=i[o+109|0]+(B>>>8|0)|0,C[o+109|0]=B,B=i[o+110|0]+(B>>>8|0)|0,C[o+110|0]=B,C[o+111|0]=i[o+111|0]+(B>>>8|0),g=g- -64|0,A=A- -64|0,e=e-1|0,!(!(e=(I=I+-64|0)>>>0<4294967232?e+1|0:e)&I>>>0>63|e))break}if(!(I|e))break A}if(Q=0,T(o+32|0,o+96|0,o),r=1&I,1!=(0|I)|e)for(e=62&I,B=0;t=o+32|0,C[A+Q|0]=i[t+Q|0]^i[g+Q|0],C[(I=1|Q)+A|0]=i[I+t|0]^i[g+I|0],Q=Q+2|0,(0|e)!=(0|(B=B+2|0)););r&&(C[A+Q|0]=i[(o+32|0)+Q|0]^i[g+Q|0])}dg(o+32|0,64),dg(o,32)}return n=o+112|0,0},function(A,g,I,C,e,B,a,i,r){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0;var t,Q,o=0;if(Q=o=n,n=t=o-192&-32,H(r|=0,i|=0,t- -64|0),r=0,a>>>0<=63)i=0;else for(o=64;l(B+r|0,t- -64|0),r=i=o,(o=i- -64|0)>>>0<=a>>>0;);if((o=32|i)>>>0>a>>>0)r=i;else for(;m(B+i|0,t- -64|0),r=o,(o=(i=o)+32|0)>>>0<=a>>>0;);if((i=31&a)&&(VA((o=t+32|0)|i,0,32-i|0),OA(o,B+r|0,i),m(o,t- -64|0)),r=32,i=0,e>>>0<32)B=0;else for(;M(A+i|0,C+i|0,t- -64|0),B=r,(r=(i=r)+32|0)>>>0<=e>>>0;);return(i=31&e)&&(VA((r=t+32|0)|i,0,32-i|0),OA(r,C+B|0,i),M(t,r,t- -64|0),OA(A+B|0,t,i)),u(g,I,a,e,t- -64|0),n=Q,0},function(A,g,I,C,e,B,a,i,r){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0;var t,Q,o=0;if(Q=o=n,n=t=o-224&-32,H(r|=0,i|=0,t+96|0),r=0,a>>>0<=63)i=0;else for(o=64;l(B+r|0,t+96|0),r=i=o,(o=i- -64|0)>>>0<=a>>>0;);if((o=32|i)>>>0>a>>>0)r=i;else for(;m(B+i|0,t+96|0),r=o,(o=(i=o)+32|0)>>>0<=a>>>0;);(i=31&a)&&(VA((o=t- -64|0)|i,0,32-i|0),OA(o,B+r|0,i),m(o,t+96|0));A:{g:{I:{C:{e:{if(A){if(r=32,I>>>0<32)break e;for(B=0;b(A+B|0,g+B|0,t+96|0),B=i=r,(r=i+32|0)>>>0<=I>>>0;);}else{if(B=32,I>>>0<32)break I;for(r=0;b(t+32|0,g+r|0,t+96|0),r=i=B,(B=i+32|0)>>>0<=I>>>0;);}if(!(B=31&I))break A;if(A)break C;break g}if(i=0,B=I,!I)break A}N(A+i|0,g+i|0,B,t+96|0);break A}if(i=0,B=I,!I)break A}N(t+32|0,g+i|0,B,t+96|0)}u(t,e,a,I,t+96|0),i=-1;A:{g:{if(g=e-16|0){if(16==(0|g))break g;break A}i=nA(t,C);break A}i=KA(t,C)}return!A|!i||VA(A,0,I),n=Q,0|i},function(A,g,I,C,e,B,r,t,Q){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,r|=0;var o,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0;if(n=o=n-528|0,k(Q|=0,t|=0,o+400|0),Q=0,r>>>0<=31)t=0;else for(E=32;Y(B+Q|0,o+400|0),Q=t=E,(E=t+32|0)>>>0<=r>>>0;);if((Q=16|t)>>>0<=r>>>0)for(E=o+416|0,_=o+432|0,h=o+448|0,y=o+464|0,s=o+480|0;p=i[0|(t=B+t|0)]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,f=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,D=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,w=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,t=a[s+12>>2],a[o+520>>2]=a[s+8>>2],a[o+524>>2]=t,t=a[s+4>>2],a[o+512>>2]=a[s>>2],a[o+516>>2]=t,t=a[y+12>>2],a[o+376>>2]=a[y+8>>2],a[o+380>>2]=t,t=a[y+4>>2],a[o+368>>2]=a[y>>2],a[o+372>>2]=t,t=a[s+12>>2],a[o+360>>2]=a[s+8>>2],a[o+364>>2]=t,t=a[s+4>>2],a[o+352>>2]=a[s>>2],a[o+356>>2]=t,oA(t=o+496|0,o+368|0,o+352|0),c=a[o+508>>2],a[s+8>>2]=a[o+504>>2],a[s+12>>2]=c,c=a[o+500>>2],a[s>>2]=a[o+496>>2],a[s+4>>2]=c,c=a[h+12>>2],a[o+344>>2]=a[h+8>>2],a[o+348>>2]=c,c=a[h+4>>2],a[o+336>>2]=a[h>>2],a[o+340>>2]=c,c=a[y+12>>2],a[o+328>>2]=a[y+8>>2],a[o+332>>2]=c,c=a[y+4>>2],a[o+320>>2]=a[y>>2],a[o+324>>2]=c,oA(t,o+336|0,o+320|0),c=a[o+508>>2],a[y+8>>2]=a[o+504>>2],a[y+12>>2]=c,c=a[o+500>>2],a[y>>2]=a[o+496>>2],a[y+4>>2]=c,c=a[_+12>>2],a[o+312>>2]=a[_+8>>2],a[o+316>>2]=c,c=a[_+4>>2],a[o+304>>2]=a[_>>2],a[o+308>>2]=c,c=a[h+12>>2],a[o+296>>2]=a[h+8>>2],a[o+300>>2]=c,c=a[h+4>>2],a[o+288>>2]=a[h>>2],a[o+292>>2]=c,oA(t,o+304|0,o+288|0),c=a[o+508>>2],a[h+8>>2]=a[o+504>>2],a[h+12>>2]=c,c=a[o+500>>2],a[h>>2]=a[o+496>>2],a[h+4>>2]=c,c=a[E+12>>2],a[o+280>>2]=a[E+8>>2],a[o+284>>2]=c,c=a[E+4>>2],a[o+272>>2]=a[E>>2],a[o+276>>2]=c,c=a[_+12>>2],a[o+264>>2]=a[_+8>>2],a[o+268>>2]=c,c=a[_+4>>2],a[o+256>>2]=a[_>>2],a[o+260>>2]=c,oA(t,o+272|0,o+256|0),c=a[o+508>>2],a[_+8>>2]=a[o+504>>2],a[_+12>>2]=c,c=a[o+500>>2],a[_>>2]=a[o+496>>2],a[_+4>>2]=c,c=a[o+412>>2],a[o+248>>2]=a[o+408>>2],a[o+252>>2]=c,c=a[o+404>>2],a[o+240>>2]=a[o+400>>2],a[o+244>>2]=c,c=a[E+12>>2],a[o+232>>2]=a[E+8>>2],a[o+236>>2]=c,c=a[E+4>>2],a[o+224>>2]=a[E>>2],a[o+228>>2]=c,oA(t,o+240|0,o+224|0),c=a[o+508>>2],a[E+8>>2]=a[o+504>>2],a[E+12>>2]=c,c=a[o+500>>2],a[E>>2]=a[o+496>>2],a[E+4>>2]=c,c=a[o+524>>2],a[o+216>>2]=a[o+520>>2],a[o+220>>2]=c,c=a[o+412>>2],a[o+200>>2]=a[o+408>>2],a[o+204>>2]=c,c=a[o+516>>2],a[o+208>>2]=a[o+512>>2],a[o+212>>2]=c,c=a[o+404>>2],a[o+192>>2]=a[o+400>>2],a[o+196>>2]=c,oA(t,o+208|0,o+192|0),a[o+412>>2]=w^a[o+508>>2],a[o+408>>2]=a[o+504>>2]^D,a[o+404>>2]=a[o+500>>2]^f,a[o+400>>2]=a[o+496>>2]^p,(Q=(t=Q)+16|0)>>>0<=r>>>0;);if((Q=15&r)&&(VA((E=o+384|0)|Q,0,16-Q|0),OA(E,B+t|0,Q),Q=a[o+384>>2],E=a[o+388>>2],_=a[o+392>>2],h=a[o+396>>2],t=a[o+492>>2],B=a[o+488>>2],a[o+520>>2]=B,a[o+524>>2]=t,y=a[o+476>>2],a[o+184>>2]=a[o+472>>2],a[o+188>>2]=y,a[o+168>>2]=B,a[o+172>>2]=t,t=a[o+484>>2],B=a[o+480>>2],a[o+512>>2]=B,a[o+516>>2]=t,y=a[o+468>>2],a[o+176>>2]=a[o+464>>2],a[o+180>>2]=y,a[o+160>>2]=B,a[o+164>>2]=t,oA(B=o+496|0,o+176|0,o+160|0),t=a[o+508>>2],a[o+488>>2]=a[o+504>>2],a[o+492>>2]=t,t=a[o+460>>2],a[o+152>>2]=a[o+456>>2],a[o+156>>2]=t,t=a[o+476>>2],a[o+136>>2]=a[o+472>>2],a[o+140>>2]=t,t=a[o+500>>2],a[o+480>>2]=a[o+496>>2],a[o+484>>2]=t,t=a[o+452>>2],a[o+144>>2]=a[o+448>>2],a[o+148>>2]=t,t=a[o+468>>2],a[o+128>>2]=a[o+464>>2],a[o+132>>2]=t,oA(B,o+144|0,o+128|0),t=a[o+508>>2],a[o+472>>2]=a[o+504>>2],a[o+476>>2]=t,t=a[o+444>>2],a[o+120>>2]=a[o+440>>2],a[o+124>>2]=t,t=a[o+460>>2],a[o+104>>2]=a[o+456>>2],a[o+108>>2]=t,t=a[o+500>>2],a[o+464>>2]=a[o+496>>2],a[o+468>>2]=t,t=a[o+436>>2],a[o+112>>2]=a[o+432>>2],a[o+116>>2]=t,t=a[o+452>>2],a[o+96>>2]=a[o+448>>2],a[o+100>>2]=t,oA(B,o+112|0,o+96|0),t=a[o+508>>2],a[o+456>>2]=a[o+504>>2],a[o+460>>2]=t,t=a[o+428>>2],a[o+88>>2]=a[o+424>>2],a[o+92>>2]=t,t=a[o+444>>2],a[o+72>>2]=a[o+440>>2],a[o+76>>2]=t,t=a[o+500>>2],a[o+448>>2]=a[o+496>>2],a[o+452>>2]=t,t=a[o+420>>2],a[o+80>>2]=a[o+416>>2],a[o+84>>2]=t,t=a[o+436>>2],a[o+64>>2]=a[o+432>>2],a[o+68>>2]=t,oA(B,o+80|0,o- -64|0),t=a[o+508>>2],a[o+440>>2]=a[o+504>>2],a[o+444>>2]=t,t=a[o+412>>2],a[o+56>>2]=a[o+408>>2],a[o+60>>2]=t,t=a[o+428>>2],a[o+40>>2]=a[o+424>>2],a[o+44>>2]=t,t=a[o+500>>2],a[o+432>>2]=a[o+496>>2],a[o+436>>2]=t,t=a[o+404>>2],a[o+48>>2]=a[o+400>>2],a[o+52>>2]=t,t=a[o+420>>2],a[o+32>>2]=a[o+416>>2],a[o+36>>2]=t,oA(B,o+48|0,o+32|0),t=a[o+508>>2],a[o+424>>2]=a[o+504>>2],a[o+428>>2]=t,t=a[o+524>>2],a[o+24>>2]=a[o+520>>2],a[o+28>>2]=t,t=a[o+412>>2],a[o+8>>2]=a[o+408>>2],a[o+12>>2]=t,t=a[o+500>>2],a[o+416>>2]=a[o+496>>2],a[o+420>>2]=t,t=a[o+516>>2],a[o+16>>2]=a[o+512>>2],a[o+20>>2]=t,t=a[o+404>>2],a[o>>2]=a[o+400>>2],a[o+4>>2]=t,oA(B,o+16|0,o),a[o+412>>2]=h^a[o+508>>2],a[o+408>>2]=_^a[o+504>>2],a[o+404>>2]=E^a[o+500>>2],a[o+400>>2]=Q^a[o+496>>2]),E=16,t=0,e>>>0<16)Q=0;else for(;U(A+t|0,C+t|0,o+400|0),Q=E,(E=(t=E)+16|0)>>>0<=e>>>0;);return(B=15&e)&&(VA((t=o+384|0)|B,0,16-B|0),OA(t,C+Q|0,B),U(C=o+512|0,t,o+400|0),OA(A+Q|0,C,B)),F(g,I,r,e,o+400|0),n=o+528|0,0},function(A,g,I,C,e,B,r,t,Q){A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,r|=0;var o,c=0,E=0,y=0,_=0,h=0,s=0,p=0,f=0,D=0,w=0;if(n=o=n-544|0,k(Q|=0,t|=0,o+432|0),Q=0,r>>>0<=31)t=0;else for(E=32;Y(B+Q|0,o+432|0),Q=t=E,(E=t+32|0)>>>0<=r>>>0;);if((Q=16|t)>>>0<=r>>>0)for(E=o+448|0,_=o+464|0,h=o+480|0,y=o+496|0,s=o+512|0;p=i[0|(t=B+t|0)]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,f=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,D=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,w=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,t=a[s+12>>2],a[o+392>>2]=a[s+8>>2],a[o+396>>2]=t,t=a[s+4>>2],a[o+384>>2]=a[s>>2],a[o+388>>2]=t,t=a[y+12>>2],a[o+376>>2]=a[y+8>>2],a[o+380>>2]=t,t=a[y+4>>2],a[o+368>>2]=a[y>>2],a[o+372>>2]=t,t=a[s+12>>2],a[o+360>>2]=a[s+8>>2],a[o+364>>2]=t,t=a[s+4>>2],a[o+352>>2]=a[s>>2],a[o+356>>2]=t,oA(t=o+528|0,o+368|0,o+352|0),c=a[o+540>>2],a[s+8>>2]=a[o+536>>2],a[s+12>>2]=c,c=a[o+532>>2],a[s>>2]=a[o+528>>2],a[s+4>>2]=c,c=a[h+12>>2],a[o+344>>2]=a[h+8>>2],a[o+348>>2]=c,c=a[h+4>>2],a[o+336>>2]=a[h>>2],a[o+340>>2]=c,c=a[y+12>>2],a[o+328>>2]=a[y+8>>2],a[o+332>>2]=c,c=a[y+4>>2],a[o+320>>2]=a[y>>2],a[o+324>>2]=c,oA(t,o+336|0,o+320|0),c=a[o+540>>2],a[y+8>>2]=a[o+536>>2],a[y+12>>2]=c,c=a[o+532>>2],a[y>>2]=a[o+528>>2],a[y+4>>2]=c,c=a[_+12>>2],a[o+312>>2]=a[_+8>>2],a[o+316>>2]=c,c=a[_+4>>2],a[o+304>>2]=a[_>>2],a[o+308>>2]=c,c=a[h+12>>2],a[o+296>>2]=a[h+8>>2],a[o+300>>2]=c,c=a[h+4>>2],a[o+288>>2]=a[h>>2],a[o+292>>2]=c,oA(t,o+304|0,o+288|0),c=a[o+540>>2],a[h+8>>2]=a[o+536>>2],a[h+12>>2]=c,c=a[o+532>>2],a[h>>2]=a[o+528>>2],a[h+4>>2]=c,c=a[E+12>>2],a[o+280>>2]=a[E+8>>2],a[o+284>>2]=c,c=a[E+4>>2],a[o+272>>2]=a[E>>2],a[o+276>>2]=c,c=a[_+12>>2],a[o+264>>2]=a[_+8>>2],a[o+268>>2]=c,c=a[_+4>>2],a[o+256>>2]=a[_>>2],a[o+260>>2]=c,oA(t,o+272|0,o+256|0),c=a[o+540>>2],a[_+8>>2]=a[o+536>>2],a[_+12>>2]=c,c=a[o+532>>2],a[_>>2]=a[o+528>>2],a[_+4>>2]=c,c=a[o+444>>2],a[o+248>>2]=a[o+440>>2],a[o+252>>2]=c,c=a[o+436>>2],a[o+240>>2]=a[o+432>>2],a[o+244>>2]=c,c=a[E+12>>2],a[o+232>>2]=a[E+8>>2],a[o+236>>2]=c,c=a[E+4>>2],a[o+224>>2]=a[E>>2],a[o+228>>2]=c,oA(t,o+240|0,o+224|0),c=a[o+540>>2],a[E+8>>2]=a[o+536>>2],a[E+12>>2]=c,c=a[o+532>>2],a[E>>2]=a[o+528>>2],a[E+4>>2]=c,c=a[o+396>>2],a[o+216>>2]=a[o+392>>2],a[o+220>>2]=c,c=a[o+444>>2],a[o+200>>2]=a[o+440>>2],a[o+204>>2]=c,c=a[o+388>>2],a[o+208>>2]=a[o+384>>2],a[o+212>>2]=c,c=a[o+436>>2],a[o+192>>2]=a[o+432>>2],a[o+196>>2]=c,oA(t,o+208|0,o+192|0),a[o+444>>2]=w^a[o+540>>2],a[o+440>>2]=a[o+536>>2]^D,a[o+436>>2]=a[o+532>>2]^f,a[o+432>>2]=a[o+528>>2]^p,(Q=(t=Q)+16|0)>>>0<=r>>>0;);(Q=15&r)&&(VA((E=o+416|0)|Q,0,16-Q|0),OA(E,B+t|0,Q),Q=a[o+416>>2],E=a[o+420>>2],_=a[o+424>>2],h=a[o+428>>2],t=a[o+524>>2],B=a[o+520>>2],a[o+392>>2]=B,a[o+396>>2]=t,y=a[o+508>>2],a[o+184>>2]=a[o+504>>2],a[o+188>>2]=y,a[o+168>>2]=B,a[o+172>>2]=t,t=a[o+516>>2],B=a[o+512>>2],a[o+384>>2]=B,a[o+388>>2]=t,y=a[o+500>>2],a[o+176>>2]=a[o+496>>2],a[o+180>>2]=y,a[o+160>>2]=B,a[o+164>>2]=t,oA(B=o+528|0,o+176|0,o+160|0),t=a[o+540>>2],a[o+520>>2]=a[o+536>>2],a[o+524>>2]=t,t=a[o+492>>2],a[o+152>>2]=a[o+488>>2],a[o+156>>2]=t,t=a[o+508>>2],a[o+136>>2]=a[o+504>>2],a[o+140>>2]=t,t=a[o+532>>2],a[o+512>>2]=a[o+528>>2],a[o+516>>2]=t,t=a[o+484>>2],a[o+144>>2]=a[o+480>>2],a[o+148>>2]=t,t=a[o+500>>2],a[o+128>>2]=a[o+496>>2],a[o+132>>2]=t,oA(B,o+144|0,o+128|0),t=a[o+540>>2],a[o+504>>2]=a[o+536>>2],a[o+508>>2]=t,t=a[o+476>>2],a[o+120>>2]=a[o+472>>2],a[o+124>>2]=t,t=a[o+492>>2],a[o+104>>2]=a[o+488>>2],a[o+108>>2]=t,t=a[o+532>>2],a[o+496>>2]=a[o+528>>2],a[o+500>>2]=t,t=a[o+468>>2],a[o+112>>2]=a[o+464>>2],a[o+116>>2]=t,t=a[o+484>>2],a[o+96>>2]=a[o+480>>2],a[o+100>>2]=t,oA(B,o+112|0,o+96|0),t=a[o+540>>2],a[o+488>>2]=a[o+536>>2],a[o+492>>2]=t,t=a[o+460>>2],a[o+88>>2]=a[o+456>>2],a[o+92>>2]=t,t=a[o+476>>2],a[o+72>>2]=a[o+472>>2],a[o+76>>2]=t,t=a[o+532>>2],a[o+480>>2]=a[o+528>>2],a[o+484>>2]=t,t=a[o+452>>2],a[o+80>>2]=a[o+448>>2],a[o+84>>2]=t,t=a[o+468>>2],a[o+64>>2]=a[o+464>>2],a[o+68>>2]=t,oA(B,o+80|0,o- -64|0),t=a[o+540>>2],a[o+472>>2]=a[o+536>>2],a[o+476>>2]=t,t=a[o+444>>2],a[o+56>>2]=a[o+440>>2],a[o+60>>2]=t,t=a[o+460>>2],a[o+40>>2]=a[o+456>>2],a[o+44>>2]=t,t=a[o+532>>2],a[o+464>>2]=a[o+528>>2],a[o+468>>2]=t,t=a[o+436>>2],a[o+48>>2]=a[o+432>>2],a[o+52>>2]=t,t=a[o+452>>2],a[o+32>>2]=a[o+448>>2],a[o+36>>2]=t,oA(B,o+48|0,o+32|0),t=a[o+540>>2],a[o+456>>2]=a[o+536>>2],a[o+460>>2]=t,t=a[o+396>>2],a[o+24>>2]=a[o+392>>2],a[o+28>>2]=t,t=a[o+444>>2],a[o+8>>2]=a[o+440>>2],a[o+12>>2]=t,t=a[o+532>>2],a[o+448>>2]=a[o+528>>2],a[o+452>>2]=t,t=a[o+388>>2],a[o+16>>2]=a[o+384>>2],a[o+20>>2]=t,t=a[o+436>>2],a[o>>2]=a[o+432>>2],a[o+4>>2]=t,oA(B,o+16|0,o),a[o+444>>2]=h^a[o+540>>2],a[o+440>>2]=_^a[o+536>>2],a[o+436>>2]=E^a[o+532>>2],a[o+432>>2]=Q^a[o+528>>2]);A:{g:{I:{C:{e:{if(A){if(E=16,I>>>0<16)break e;for(Q=0;x(A+Q|0,g+Q|0,o+432|0),Q=t=E,(E=t+16|0)>>>0<=I>>>0;);}else{if(Q=16,I>>>0<16)break I;for(E=0;x(o+528|0,g+E|0,o+432|0),E=t=Q,(Q=t+16|0)>>>0<=I>>>0;);}if(!(Q=15&I))break A;if(A)break C;break g}if(t=0,!(Q=I))break A}P(A+t|0,g+t|0,Q,o+432|0);break A}if(t=0,!(Q=I))break A}P(o+528|0,g+t|0,Q,o+432|0)}F(o+384|0,e,r,I,o+432|0),t=-1;A:{g:{if(g=e-16|0){if(16==(0|g))break g;break A}t=nA(o+384|0,C);break A}t=KA(o+384|0,C)}return!A|!t||VA(A,0,I),n=o+544|0,0|t},function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n+-64|0,(g|=0)|(I|=0)&&(a[B+8>>2]=2036477234,a[B+12>>2]=1797285236,a[B>>2]=1634760805,a[B+4>>2]=857760878,a[B+16>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[B+20>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[B+24>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,a[B+28>>2]=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,a[B+32>>2]=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,a[B+36>>2]=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,a[B+40>>2]=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,e=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,a[B+48>>2]=0,a[B+52>>2]=0,a[B+44>>2]=e,a[B+56>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,a[B+60>>2]=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,G(B,A=VA(A,0,g),A,g,I),dg(B,64)),n=B- -64|0,0},function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n+-64|0,(g|=0)|(I|=0)&&(a[B+8>>2]=2036477234,a[B+12>>2]=1797285236,a[B>>2]=1634760805,a[B+4>>2]=857760878,a[B+16>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[B+20>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[B+24>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,a[B+28>>2]=i[e+12|0]|i[e+13|0]<<8|i[e+14|0]<<16|i[e+15|0]<<24,a[B+32>>2]=i[e+16|0]|i[e+17|0]<<8|i[e+18|0]<<16|i[e+19|0]<<24,a[B+36>>2]=i[e+20|0]|i[e+21|0]<<8|i[e+22|0]<<16|i[e+23|0]<<24,a[B+40>>2]=i[e+24|0]|i[e+25|0]<<8|i[e+26|0]<<16|i[e+27|0]<<24,e=i[e+28|0]|i[e+29|0]<<8|i[e+30|0]<<16|i[e+31|0]<<24,a[B+48>>2]=0,a[B+44>>2]=e,a[B+52>>2]=i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24,a[B+56>>2]=i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24,a[B+60>>2]=i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24,G(B,A=VA(A,0,g),A,g,I),dg(B,64)),n=B- -64|0,0},function(A,g,I,C,e,B,r,t){var Q;return A|=0,g|=0,e|=0,B|=0,r|=0,t|=0,n=Q=n+-64|0,(I|=0)|(C|=0)&&(a[Q+8>>2]=2036477234,a[Q+12>>2]=1797285236,a[Q>>2]=1634760805,a[Q+4>>2]=857760878,a[Q+16>>2]=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,a[Q+20>>2]=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,a[Q+24>>2]=i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,a[Q+28>>2]=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,a[Q+32>>2]=i[t+16|0]|i[t+17|0]<<8|i[t+18|0]<<16|i[t+19|0]<<24,a[Q+36>>2]=i[t+20|0]|i[t+21|0]<<8|i[t+22|0]<<16|i[t+23|0]<<24,a[Q+40>>2]=i[t+24|0]|i[t+25|0]<<8|i[t+26|0]<<16|i[t+27|0]<<24,a[Q+44>>2]=i[t+28|0]|i[t+29|0]<<8|i[t+30|0]<<16|i[t+31|0]<<24,a[Q+48>>2]=B,a[Q+52>>2]=r,a[Q+56>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[Q+60>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,G(Q,g,A,I,C),dg(Q,64)),n=Q- -64|0,0},function(A,g,I,C,e,B,r){var t;return A|=0,g|=0,e|=0,B|=0,r|=0,n=t=n+-64|0,(I|=0)|(C|=0)&&(a[t+8>>2]=2036477234,a[t+12>>2]=1797285236,a[t>>2]=1634760805,a[t+4>>2]=857760878,a[t+16>>2]=i[0|r]|i[r+1|0]<<8|i[r+2|0]<<16|i[r+3|0]<<24,a[t+20>>2]=i[r+4|0]|i[r+5|0]<<8|i[r+6|0]<<16|i[r+7|0]<<24,a[t+24>>2]=i[r+8|0]|i[r+9|0]<<8|i[r+10|0]<<16|i[r+11|0]<<24,a[t+28>>2]=i[r+12|0]|i[r+13|0]<<8|i[r+14|0]<<16|i[r+15|0]<<24,a[t+32>>2]=i[r+16|0]|i[r+17|0]<<8|i[r+18|0]<<16|i[r+19|0]<<24,a[t+36>>2]=i[r+20|0]|i[r+21|0]<<8|i[r+22|0]<<16|i[r+23|0]<<24,a[t+40>>2]=i[r+24|0]|i[r+25|0]<<8|i[r+26|0]<<16|i[r+27|0]<<24,r=i[r+28|0]|i[r+29|0]<<8|i[r+30|0]<<16|i[r+31|0]<<24,a[t+48>>2]=B,a[t+44>>2]=r,a[t+52>>2]=i[0|e]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,a[t+56>>2]=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[t+60>>2]=i[e+8|0]|i[e+9|0]<<8|i[e+10|0]<<16|i[e+11|0]<<24,G(t,g,A,I,C),dg(t,64)),n=t- -64|0,0}],Gg.grow=function(A){var g=this.length;return this.length=this.length+A,g},Gg.set=function(A,g){this[A]=g},Gg.get=function(A){return this[A]},Gg);function Ug(){return I.byteLength/65536|0}return{e:Object.create(Object.prototype,{grow:{value:function(A){A|=0;var e=0|Ug(),B=e+A|0;if(e<B&&B<65536){var Q=new ArrayBuffer(t(B,65536));new Int8Array(Q).set(C),C=new Int8Array(Q),new Int16Array(Q),a=new Int32Array(Q),i=new Uint8Array(Q),new Uint16Array(Q),r=new Uint32Array(Q),new Float32Array(Q),new Float64Array(Q),I=Q,g=i}return e}},buffer:{get:function(){return I}}}),f:function(){},g:ug,h:Ng,i:ug,j:vg,k:Mg,l:kg,m:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|HA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,t|=0,Q|=0,36272)},n:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|LA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,Q|=0,o|=0,36272)},o:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|NA(A|=0,g|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36276)},p:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|jA(A|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36276)},q:vg,r:Ng,s:vg,t:vg,u:Mg,v:wg,w:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|HA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,t|=0,Q|=0,36280)},x:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|LA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,Q|=0,o|=0,36280)},y:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|NA(A|=0,g|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36284)},z:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|jA(A|=0,I|=0,C|=0,e|=0,B|=0,a|=0,i|=0,r|=0,t|=0,Q|=0,36284)},A:Ng,B:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|FA(A|=0,g|=0,I|=0,C|=0,(A=0)|(e|=0),B|=0,a|=0,A|(i|=0),r|=0,Q|=0,o|=0)},C:function(A,g,I,C,e,i,r,t,Q,o,c){return A|=0,g|=0,C|=0,r|=0,Q|=0,r|=Q=0,!(e|=0)&(C|=Q)>>>0<4294967280?(FA(A,A+C|0,0,I|=0,C,e,i|=0,r,t|=0,o|=0,c|=0),g&&(e=(A=C+16|0)>>>0<16?e+1|0:e,a[g>>2]=A,a[g+4>>2]=e)):(ig(),B()),0},D:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|bA(A|=0,g|=0,I|=0,C|=0,(A=0)|(e|=0),B|=0,a|=0,A|(i|=0),r|=0,Q|=0,o|=0)},E:function(A,g,I,C,e,i,r,t,Q,o,c){return A|=0,g|=0,C|=0,r|=0,Q|=0,r|=Q=0,!(e|=0)&(C|=Q)>>>0<4294967280?(bA(A,A+C|0,0,I|=0,C,e,i|=0,r,t|=0,o|=0,c|=0),g&&(e=(A=C+16|0)>>>0<16?e+1|0:e,a[g>>2]=A,a[g+4>>2]=e)):(ig(),B()),0},F:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|MA(A|=0,I|=0,(A=0)|(C|=0),e|=0,B|=0,a|=0,A|(i|=0),r|=0,t|=0,Q|=0)},G:function(A,g,I,C,e,B,i,r,t,Q,o){return g|=0,I|=0,C|=0,e|=0,r|=0,r|=0,I=-1,!(B|=0)&(e|=0)>>>0>=16|B&&(I=MA(A|=0,C,e-16|0,B-(e>>>0<16)|0,(C+e|0)-16|0,i|=0,r,t|=0,Q|=0,o|=0)),g&&(a[g>>2]=I?0:e-16|0,a[g+4>>2]=I?0:B-(e>>>0<16)|0),0|I},H:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|SA(A|=0,I|=0,(A=0)|(C|=0),e|=0,B|=0,a|=0,A|(i|=0),r|=0,t|=0,Q|=0)},I:function(A,g,I,C,e,B,i,r,t,Q,o){return g|=0,I|=0,C|=0,e|=0,r|=0,r|=0,I=-1,!(B|=0)&(e|=0)>>>0>=16|B&&(I=SA(A|=0,C,e-16|0,B-(e>>>0<16)|0,(C+e|0)-16|0,i|=0,r,t|=0,Q|=0,o|=0)),g&&(a[g>>2]=I?0:e-16|0,a[g+4>>2]=I?0:B-(e>>>0<16)|0),0|I},J:vg,K:function(){return 12},L:Ng,M:ug,N:bg,O:wg,P:vg,Q:Kg,R:Ng,S:ug,T:bg,U:wg,V:function(A,g,I,C,e,B,a,i,r,t,Q,o){return 0|DA(A|=0,g|=0,I|=0,C|=0,(A=0)|(e|=0),B|=0,a|=0,A|(i|=0),r|=0,Q|=0,o|=0)},W:function(A,g,I,C,e,i,r,t,Q,o,c){return A|=0,g|=0,C|=0,r|=0,Q|=0,r|=Q=0,!(e|=0)&(C|=Q)>>>0<4294967280?(DA(A,A+C|0,0,I|=0,C,e,i|=0,r,t|=0,o|=0,c|=0),g&&(e=(A=C+16|0)>>>0<16?e+1|0:e,a[g>>2]=A,a[g+4>>2]=e)):(ig(),B()),0},X:function(A,g,I,C,e,B,a,i,r,t,Q){return 0|fA(A|=0,I|=0,(A=0)|(C|=0),e|=0,B|=0,a|=0,A|(i|=0),r|=0,t|=0,Q|=0)},Y:function(A,g,I,C,e,B,i,r,t,Q,o){return g|=0,I|=0,C|=0,e|=0,r|=0,r|=0,I=-1,!(B|=0)&(e|=0)>>>0>=16|B&&(I=fA(A|=0,C,e-16|0,B-(e>>>0<16)|0,(C+e|0)-16|0,i|=0,r,t|=0,Q|=0,o|=0)),g&&(a[g>>2]=I?0:e-16|0,a[g+4>>2]=I?0:B-(e>>>0<16)|0),0|I},Z:vg,_:Sg,$:Ng,aa:ug,ba:bg,ca:wg,da:vg,ea:vg,fa:function(A,g,I,e,B){var i;return A|=0,g|=0,I|=0,e|=0,n=i=n-480|0,_A(i,B|=0,32),hg(i,g,I,e),WA(i,i+416|0),g=a[i+444>>2],I=a[i+440>>2],C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[i+436>>2],I=a[i+432>>2],C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[i+428>>2],I=a[i+424>>2],C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[i+420>>2],I=a[i+416>>2],C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,n=i+480|0,0},ga:function(A,g,I,C,e){var B,i;return A|=0,g|=0,I|=0,C|=0,n=B=n-512|0,_A(i=B+32|0,e|=0,32),hg(i,g,I,C),WA(i,B+448|0),g=a[B+476>>2],a[B+24>>2]=a[B+472>>2],a[B+28>>2]=g,g=a[B+468>>2],a[B+16>>2]=a[B+464>>2],a[B+20>>2]=g,g=a[B+460>>2],a[B+8>>2]=a[B+456>>2],a[B+12>>2]=g,g=a[B+452>>2],a[B>>2]=a[B+448>>2],a[B+4>>2]=g,g=KA(A,B),I=lA(B,A,32),n=B+512|0,((0|A)==(0|B)?-1:g)|I},ha:wg,ia:vg,ja:vg,ka:vg,la:vg,ma:Sg,na:ug,oa:bg,pa:function(A,g,I){A|=0,g|=0;var e,B=0;return n=e=n+-64|0,wA(e,I|=0,32,0),I=a[e+28>>2],B=a[e+24>>2],C[g+24|0]=B,C[g+25|0]=B>>>8,C[g+26|0]=B>>>16,C[g+27|0]=B>>>24,C[g+28|0]=I,C[g+29|0]=I>>>8,C[g+30|0]=I>>>16,C[g+31|0]=I>>>24,I=a[e+20>>2],B=a[e+16>>2],C[g+16|0]=B,C[g+17|0]=B>>>8,C[g+18|0]=B>>>16,C[g+19|0]=B>>>24,C[g+20|0]=I,C[g+21|0]=I>>>8,C[g+22|0]=I>>>16,C[g+23|0]=I>>>24,I=a[e+12>>2],B=a[e+8>>2],C[g+8|0]=B,C[g+9|0]=B>>>8,C[g+10|0]=B>>>16,C[g+11|0]=B>>>24,C[g+12|0]=I,C[g+13|0]=I>>>8,C[g+14|0]=I>>>16,C[g+15|0]=I>>>24,I=a[e+4>>2],B=a[e>>2],C[0|g]=B,C[g+1|0]=B>>>8,C[g+2|0]=B>>>16,C[g+3|0]=B>>>24,C[g+4|0]=I,C[g+5|0]=I>>>8,C[g+6|0]=I>>>16,C[g+7|0]=I>>>24,dg(e,64),A=sg(A,g),n=e- -64|0,0|A},qa:tg,ra:XA,sa:$A,ta:function(A,g,I,C,e,B,a,i){A|=0,g|=0,I|=0,B|=0;var r,t=0;return t=C|=0,C=e|=0,r=0|t,n=t=n-32|0,e=-1,XA(t,a|=0,i|=0)||(e=hA(A,g,I,r,C,B,t),dg(t,32)),n=t+32|0,0|e},ua:function(A,g,I,C,e,a){return A|=0,g|=0,e|=0,a|=0,!(C|=0)&(I|=0)>>>0>=4294967280|C&&(ig(),B()),0|hA(A+16|0,A,g,I,C,e,a)},va:function(A,g,I,C,e,B,a){return 0|qA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)},wa:Ag,xa:function(A,g,I,C,e,B,a,i){A|=0,g|=0,I|=0,B|=0;var r,t=0;return t=C|=0,C=e|=0,r=0|t,n=t=n-32|0,e=-1,XA(t,a|=0,i|=0)||(e=pA(A,g,I,r,C,B,t),dg(t,32)),n=t+32|0,0|e},ya:zA,za:function(A,g,I,C,e,B,a){return 0|mA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)},Aa:function(A,g,I,e,B){A|=0,g|=0,B|=0;var i,r,t,Q,o=0,c=0;return o=I|=0,I=e|=0,Q=0|o,o=e=n,n=i=e-512&-64,e=-1,tg(r=i- -64|0,t=i+32|0)||(z(e=i+128|0,0,0,24),tA(e,r,32,0),tA(e,B,32,0),ZA(e,c=i+96|0,24),e=qA(A+32|0,g,Q,I,c,B,t),g=a[i+92>>2],I=a[i+88>>2],C[A+24|0]=I,C[A+25|0]=I>>>8,C[A+26|0]=I>>>16,C[A+27|0]=I>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[i+84>>2],I=a[i+80>>2],C[A+16|0]=I,C[A+17|0]=I>>>8,C[A+18|0]=I>>>16,C[A+19|0]=I>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[i+76>>2],I=a[i+72>>2],C[A+8|0]=I,C[A+9|0]=I>>>8,C[A+10|0]=I>>>16,C[A+11|0]=I>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[i+68>>2],I=a[i+64>>2],C[0|A]=I,C[A+1|0]=I>>>8,C[A+2|0]=I>>>16,C[A+3|0]=I>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,dg(t,32),dg(r,32),dg(c,24)),n=o,0|e},Ba:function(A,g,I,C,e,B){A|=0,g|=0,e|=0,B|=0;var a,i,r=0;return i=r=n,n=a=r-448&-64,r=-1,!(C|=0)&(I|=0)>>>0>=48|C&&(z(r=a- -64|0,0,0,24),tA(r,g,32,0),tA(r,e,32,0),ZA(r,e=a+32|0,24),r=mA(A,g+32|0,I-32|0,C-(I>>>0<32)|0,e,g,B)),n=i,0|r},Ca:function(){return 48},Da:ug,Ea:Fg,Fa:vg,Ga:ug,Ha:Fg,Ia:vg,Ja:function(){return 384},Ka:function(A,g,I,C,e,B,a){return 0|CA(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,a|=0)},La:z,Ma:function(A,g,I,C){return 0|tA(A|=0,g|=0,I|=0,C|=0)},Na:ZA,Oa:wg,Pa:Fg,Qa:function(A,g,I,C){return 0|wA(A|=0,g|=0,I|=0,C|=0)},Ra:ug,Sa:Fg,Ta:Kg,Ua:vg,Va:function(A,g,I,C,e,r){A|=0,g|=0,I|=0,C|=0,r|=0;var t,Q=0,o=0,c=0,E=0,y=0,_=0,h=0;return n=t=n-32|0,Q=i[0|(e|=0)]|i[e+1|0]<<8|i[e+2|0]<<16|i[e+3|0]<<24,e=i[e+4|0]|i[e+5|0]<<8|i[e+6|0]<<16|i[e+7|0]<<24,a[t+24>>2]=0,a[t+28>>2]=0,a[t+16>>2]=Q,a[t+20>>2]=e,a[t+8>>2]=0,a[t+12>>2]=0,a[(e=t)>>2]=I,a[e+4>>2]=C,g-65>>>0<=4294967246?(a[9280]=28,A=-1):g-65>>>0<4294967232?A=-1:(n=e=(c=n)-512&-64,!r|!A|((o=255&g)-65&255)>>>0<=191?(ig(),B()):(C=t+16|0,t?(E=725511199^(i[t+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24),y=-1694144372^(i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24),I=-1377402159^(i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24),g=1359893119^(i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24)):(E=725511199,y=-1694144372,I=-1377402159,g=1359893119),C?(_=327033209^(i[C+8|0]|i[C+9|0]<<8|i[C+10|0]<<16|i[C+11|0]<<24),h=1541459225^(i[C+12|0]|i[C+13|0]<<8|i[C+14|0]<<16|i[C+15|0]<<24),Q=-79577749^(i[0|C]|i[C+1|0]<<8|i[C+2|0]<<16|i[C+3|0]<<24),C=528734635^(i[C+4|0]|i[C+5|0]<<8|i[C+6|0]<<16|i[C+7|0]<<24)):(_=327033209,h=1541459225,Q=-79577749,C=528734635),VA(e- -64|0,0,293),a[e+56>>2]=_,a[e+60>>2]=h,a[e+48>>2]=Q,a[e+52>>2]=C,a[e+40>>2]=E,a[e+44>>2]=y,a[e+32>>2]=I,a[e+36>>2]=g,a[e+24>>2]=1595750129,a[e+28>>2]=-1521486534,a[e+16>>2]=-23791573,a[e+20>>2]=1013904242,a[e+8>>2]=-2067093701,a[e+12>>2]=-1150833019,a[e>>2]=-222443256^(8192|o),a[e+4>>2]=1779033703,VA(32+(g=e+384|0)|0,0,96),OA(g,r,32),OA(e+96|0,g,128),a[e+352>>2]=128,dg(g,128),R(e,A,o),n=c),A=0),n=t+32|0,0|A},Wa:wg,Xa:function(A,g,I){return 0|IA(A|=0,g|=0,I|=0)},Ya:function(A,g,I){return 0|pg(A|=0,g|=0,I|=0)},Za:function(A,g){return gg(A|=0,g|=0),dg(A,4),0},_a:function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n-208|0,IA(B,g|=0,I|=0),pg(B,C,e),gg(B,A),dg(B,4),n=B+208|0,0},$a:wg,ab:function(A,g,I,e,B){A|=0,g|=0,I|=0,e|=0,B|=0;var r,t=0,Q=0,o=0,c=0;if(n=r=n-256|0,C[r+15|0]=1,g>>>0<=8160){if(g>>>0>=32)for(c=A-32|0,t=32;o=t,IA(t=r+48|0,B,32),Q&&pg(t,Q+c|0,32),pg(t=r+48|0,I,e),pg(t,r+15|0,1),gg(t,A+Q|0),C[r+15|0]=i[r+15|0]+1,(t=(Q=o)+32|0)>>>0<=g>>>0;);(Q=31&g)&&(IA(g=r+48|0,B,32),o&&pg(g,(A+o|0)-32|0,32),pg(g=r+48|0,I,e),pg(g,r+15|0,1),gg(I=g,g=r+16|0),OA(A+o|0,g,Q),dg(g,32)),dg(r+48|0,208),A=0}else a[9280]=28,A=-1;return n=r+256|0,0|A},bb:vg,cb:Ng,db:function(){return 8160},eb:lg,fb:function(A,g,I){return 0|_A(A|=0,g|=0,I|=0)},gb:function(A,g,I){return 0|hg(A|=0,g|=0,I|=0,0)},hb:function(A,g){return WA(A|=0,g|=0),dg(A,4),0},ib:function(A,g,I,C,e){var B;return A|=0,C|=0,e|=0,n=B=n-416|0,_A(B,g|=0,I|=0),hg(B,C,e,0),WA(B,A),dg(B,4),n=B+416|0,0},jb:function(A){xA(A|=0,64)},kb:function(A,g,I,e,B){A|=0,g|=0,I|=0,e|=0,B|=0;var r,t=0,Q=0,o=0,c=0;if(n=r=n-496|0,C[r+15|0]=1,g>>>0<=16320){if(g>>>0>=64)for(c=A+-64|0,t=64;o=t,_A(t=r+80|0,B,64),Q&&hg(t,Q+c|0,64,0),hg(t=r+80|0,I,e,0),hg(t,r+15|0,1,0),WA(t,A+Q|0),C[r+15|0]=i[r+15|0]+1,(t=(Q=o)- -64|0)>>>0<=g>>>0;);(Q=63&g)&&(_A(g=r+80|0,B,64),o&&hg(g,(A+o|0)-64|0,64,0),hg(g=r+80|0,I,e,0),hg(g,r+15|0,1,0),WA(I=g,g=r+16|0),OA(A+o|0,g,Q),dg(g,64)),dg(r+80|0,416),A=0}else a[9280]=28,A=-1;return n=r+496|0,0|A},lb:Fg,mb:Ng,nb:function(){return 16320},ob:function(){return 416},pb:function(A,g,I){return A|=0,CA(g|=0,32,I|=0,32,0,0,0),0|Eg(A,g)},qb:function(A,g){return A|=0,xA(g|=0,32),0|Eg(A,g)},rb:function(A,g,I,e,a){g|=0,I|=0,e|=0,a|=0;var r,t,Q=0,o=0,c=0;if(t=Q=n,n=Q=Q-512&-64,r=(A|=0)||g){if(c=-1,!ag(o=Q+96|0,e,a)){for(e=g||A,A=0,z(g=Q+128|0,0,0,64),tA(g,o,32,0),dg(o,32),tA(g,I,32,0),tA(g,a,32,0),ZA(g,Q+32|0,64),dg(g,384);I=(g=Q+32|0)+A|0,C[A+r|0]=i[0|I],C[A+e|0]=i[I+32|0],C[(I=1|A)+r|0]=i[g+I|0],C[I+e|0]=i[g+(33|A)|0],32!=(0|(A=A+2|0)););dg(g,64),c=0}return n=t,0|c}ig(),B()},sb:function(A,g,I,e,a){g|=0,I|=0,e|=0,a|=0;var r,t,Q=0,o=0,c=0;if(t=Q=n,n=Q=Q-512&-64,r=(A|=0)||g){if(c=-1,!ag(o=Q+96|0,e,a)){for(e=g||A,A=0,z(g=Q+128|0,0,0,64),tA(g,o,32,0),dg(o,32),tA(g,a,32,0),tA(g,I,32,0),ZA(g,Q+32|0,64),dg(g,384);I=(g=Q+32|0)+A|0,C[A+e|0]=i[0|I],C[A+r|0]=i[I+32|0],C[(I=1|A)+e|0]=i[g+I|0],C[I+r|0]=i[g+(33|A)|0],32!=(0|(A=A+2|0)););dg(g,64),c=0}return n=t,0|c}ig(),B()},tb:vg,ub:vg,vb:vg,wb:vg,xb:Eg,yb:ag,zb:vg,Ab:vg,Bb:vg,Cb:Sg,Db:ug,Eb:bg,Fb:wg,Gb:$A,Hb:function(A,g,I,C,e,a){return A|=0,g|=0,e|=0,a|=0,!(C|=0)&(I|=0)>>>0>=4294967280|C&&(ig(),B()),hA(A+16|0,A,g,I,C,e,a),0},Ib:Ag,Jb:zA,Kb:wg,Lb:function(A,g,I){return A|=0,I|=0,xA(g|=0,24),$(A,g,I),C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,I=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,C[A+44|0]=0,C[A+45|0]=0,C[A+46|0]=0,C[A+47|0]=0,C[A+48|0]=0,C[A+49|0]=0,C[A+50|0]=0,C[A+51|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,0},Mb:function(A,g,I){return $(A|=0,g|=0,I|=0),C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,I=i[g+16|0]|i[g+17|0]<<8|i[g+18|0]<<16|i[g+19|0]<<24,g=i[g+20|0]|i[g+21|0]<<8|i[g+22|0]<<16|i[g+23|0]<<24,C[A+44|0]=0,C[A+45|0]=0,C[A+46|0]=0,C[A+47|0]=0,C[A+48|0]=0,C[A+49|0]=0,C[A+50|0]=0,C[A+51|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=g,C[A+41|0]=g>>>8,C[A+42|0]=g>>>16,C[A+43|0]=g>>>24,0},Nb:function(A){var g,I=0,e=0;n=g=n-48|0,I=i[28+(A|=0)|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[g+24>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[g+28>>2]=I,I=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[g+16>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[g+20>>2]=I,I=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[g>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[g+4>>2]=I,I=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[g+8>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[g+12>>2]=I,I=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[g+32>>2]=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[g+36>>2]=I,cg(g,g,A+32|0,A),I=a[g+28>>2],e=a[g+24>>2],C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+28|0]=I,C[A+29|0]=I>>>8,C[A+30|0]=I>>>16,C[A+31|0]=I>>>24,I=a[g+20>>2],e=a[g+16>>2],C[A+16|0]=e,C[A+17|0]=e>>>8,C[A+18|0]=e>>>16,C[A+19|0]=e>>>24,C[A+20|0]=I,C[A+21|0]=I>>>8,C[A+22|0]=I>>>16,C[A+23|0]=I>>>24,I=a[g+12>>2],e=a[g+8>>2],C[A+8|0]=e,C[A+9|0]=e>>>8,C[A+10|0]=e>>>16,C[A+11|0]=e>>>24,C[A+12|0]=I,C[A+13|0]=I>>>8,C[A+14|0]=I>>>16,C[A+15|0]=I>>>24,I=a[g+4>>2],e=a[g>>2],C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+4|0]=I,C[A+5|0]=I>>>8,C[A+6|0]=I>>>16,C[A+7|0]=I>>>24,e=a[g+36>>2],I=a[g+32>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=I,C[A+37|0]=I>>>8,C[A+38|0]=I>>>16,C[A+39|0]=I>>>24,C[A+40|0]=e,C[A+41|0]=e>>>8,C[A+42|0]=e>>>16,C[A+43|0]=e>>>24,n=g+48|0},Ob:function(A,g,I,e,r,t,Q,o,c,E){A|=0,g|=0,e|=0,t|=0,Q|=0,c|=0,E|=0;var y,_=0,h=0,s=0;return _=r|=0,_|=r=0,y=r|(o|=0),n=r=n-384|0,(I|=0)&&(a[I>>2]=0,a[I+4>>2]=0),!t&_>>>0<4294967279?(yg(h=r+16|0,64,s=A+32|0,A),fg(o=r+80|0,h),dg(h,64),ng(o,Q,y,c),ng(o,34736,0-y&15,0),a[r+72>>2]=0,a[r+76>>2]=0,a[(Q=r- -64|0)>>2]=0,a[Q+4>>2]=0,a[r+56>>2]=0,a[r+60>>2]=0,a[r+48>>2]=0,a[r+52>>2]=0,a[r+40>>2]=0,a[r+44>>2]=0,a[r+32>>2]=0,a[r+36>>2]=0,a[r+16>>2]=0,a[r+20>>2]=0,a[r+24>>2]=0,a[r+28>>2]=0,C[r+16|0]=E,JA(h,h,64,0,s,1,A),ng(o,h,64,0),C[0|g]=i[r+16|0],JA(g=g+1|0,e,_,t,s,2,A),ng(o,g,_,t),ng(o,34736,15&_,0),a[r+8>>2]=y,a[r+12>>2]=c,ng(o,e=r+8|0,8,0),a[r+8>>2]=_- -64,a[r+12>>2]=t-((_>>>0<4294967232)-1|0),ng(o,e,8,0),Dg(o,g=g+_|0),dg(o,256),C[A+36|0]=i[A+36|0]^i[0|g],C[A+37|0]=i[A+37|0]^i[g+1|0],C[A+38|0]=i[A+38|0]^i[g+2|0],C[A+39|0]=i[A+39|0]^i[g+3|0],C[A+40|0]=i[A+40|0]^i[g+4|0],C[A+41|0]=i[A+41|0]^i[g+5|0],C[A+42|0]=i[A+42|0]^i[g+6|0],C[A+43|0]=i[A+43|0]^i[g+7|0],YA(s),(2&E||kA(s,4))&&(g=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[r+360>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[r+364>>2]=g,g=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[r+352>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[r+356>>2]=g,g=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[r+336>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[r+340>>2]=g,g=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[r+344>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[r+348>>2]=g,g=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[r+368>>2]=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[r+372>>2]=g,cg(g=r+336|0,g,s,A),g=a[r+364>>2],e=a[r+360>>2],C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[r+356>>2],e=a[r+352>>2],C[A+16|0]=e,C[A+17|0]=e>>>8,C[A+18|0]=e>>>16,C[A+19|0]=e>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[r+348>>2],e=a[r+344>>2],C[A+8|0]=e,C[A+9|0]=e>>>8,C[A+10|0]=e>>>16,C[A+11|0]=e>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[r+340>>2],e=a[r+336>>2],C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=a[r+368>>2],e=a[r+372>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=e,C[A+41|0]=e>>>8,C[A+42|0]=e>>>16,C[A+43|0]=e>>>24),I&&(t=(A=_+17|0)>>>0<17?t+1|0:t,a[I>>2]=A,a[I+4>>2]=t),n=r+384|0):(ig(),B()),0},Pb:function(A,g,I,e,r,t,Q,o,c,E){A|=0,g|=0,e|=0,r|=0,o|=0,E|=0;var y,_=0,h=0,s=0,p=0,f=0,D=0;_=t|=0,t=Q|=0,h=0|_,y=c|=0,n=Q=n-400|0,(I|=0)&&(a[I>>2]=0,a[I+4>>2]=0),e&&(C[0|e]=255),D=-1;A:{g:{if(!((c=h>>>0<17)&!t)){if(f=_=t-c|0,!_&(c=h-17|0)>>>0>=4294967279|_)break g;yg(s=Q+32|0,64,p=A+32|0,A),fg(_=Q+96|0,s),dg(s,64),ng(_,o,y,E),ng(_,34736,0-y&15,0),a[Q+88>>2]=0,a[Q+92>>2]=0,a[Q+80>>2]=0,a[Q+84>>2]=0,a[Q+72>>2]=0,a[Q+76>>2]=0,a[(o=Q- -64|0)>>2]=0,a[o+4>>2]=0,a[Q+56>>2]=0,a[Q+60>>2]=0,a[Q+48>>2]=0,a[Q+52>>2]=0,a[Q+40>>2]=0,a[Q+44>>2]=0,a[Q+32>>2]=0,a[Q+36>>2]=0,C[Q+32|0]=i[0|r],JA(s,s,64,0,p,1,A),o=i[Q+32|0],C[Q+32|0]=i[0|r],ng(_,s,64,0),ng(_,r=r+1|0,c,f),ng(_,34736,h-1&15,0),a[Q+24>>2]=y,a[Q+28>>2]=E,ng(_,E=Q+24|0,8,0),t=(h=h+47|0)>>>0<47?t+1|0:t,a[Q+24>>2]=h,a[Q+28>>2]=t,ng(_,E,8,0),Dg(_,Q),dg(_,256),lA(Q,r+c|0,16)?dg(Q,16):(JA(g,r,c,f,p,2,A),C[A+36|0]=i[A+36|0]^i[0|Q],C[A+37|0]=i[A+37|0]^i[Q+1|0],C[A+38|0]=i[A+38|0]^i[Q+2|0],C[A+39|0]=i[A+39|0]^i[Q+3|0],C[A+40|0]=i[A+40|0]^i[Q+4|0],C[A+41|0]=i[A+41|0]^i[Q+5|0],C[A+42|0]=i[A+42|0]^i[Q+6|0],C[A+43|0]=i[A+43|0]^i[Q+7|0],YA(p),(2&o||kA(p,4))&&(g=i[A+28|0]|i[A+29|0]<<8|i[A+30|0]<<16|i[A+31|0]<<24,a[Q+376>>2]=i[A+24|0]|i[A+25|0]<<8|i[A+26|0]<<16|i[A+27|0]<<24,a[Q+380>>2]=g,g=i[A+20|0]|i[A+21|0]<<8|i[A+22|0]<<16|i[A+23|0]<<24,a[Q+368>>2]=i[A+16|0]|i[A+17|0]<<8|i[A+18|0]<<16|i[A+19|0]<<24,a[Q+372>>2]=g,g=i[A+4|0]|i[A+5|0]<<8|i[A+6|0]<<16|i[A+7|0]<<24,a[Q+352>>2]=i[0|A]|i[A+1|0]<<8|i[A+2|0]<<16|i[A+3|0]<<24,a[Q+356>>2]=g,g=i[A+12|0]|i[A+13|0]<<8|i[A+14|0]<<16|i[A+15|0]<<24,a[Q+360>>2]=i[A+8|0]|i[A+9|0]<<8|i[A+10|0]<<16|i[A+11|0]<<24,a[Q+364>>2]=g,g=i[A+40|0]|i[A+41|0]<<8|i[A+42|0]<<16|i[A+43|0]<<24,a[Q+384>>2]=i[A+36|0]|i[A+37|0]<<8|i[A+38|0]<<16|i[A+39|0]<<24,a[Q+388>>2]=g,cg(g=Q+352|0,g,p,A),g=a[Q+380>>2],r=a[Q+376>>2],C[A+24|0]=r,C[A+25|0]=r>>>8,C[A+26|0]=r>>>16,C[A+27|0]=r>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,g=a[Q+372>>2],r=a[Q+368>>2],C[A+16|0]=r,C[A+17|0]=r>>>8,C[A+18|0]=r>>>16,C[A+19|0]=r>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[Q+364>>2],r=a[Q+360>>2],C[A+8|0]=r,C[A+9|0]=r>>>8,C[A+10|0]=r>>>16,C[A+11|0]=r>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[Q+356>>2],r=a[Q+352>>2],C[0|A]=r,C[A+1|0]=r>>>8,C[A+2|0]=r>>>16,C[A+3|0]=r>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=a[Q+384>>2],r=a[Q+388>>2],C[A+32|0]=1,C[A+33|0]=0,C[A+34|0]=0,C[A+35|0]=0,C[A+36|0]=g,C[A+37|0]=g>>>8,C[A+38|0]=g>>>16,C[A+39|0]=g>>>24,C[A+40|0]=r,C[A+41|0]=r>>>8,C[A+42|0]=r>>>16,C[A+43|0]=r>>>24),I&&(a[I>>2]=c,a[I+4>>2]=f),D=0,e&&(C[0|e]=o))}n=Q+400|0;break A}ig(),B()}return 0|D},Qb:function(){return 52},Rb:function(){return 17},Sb:Sg,Tb:vg,Ub:function(){return-18},Vb:Ng,Wb:Yg,Xb:Hg,Yb:function(){return 3},Zb:Kg,_b:ug,$b:function(A,g,I,e,B){A|=0,g|=0,I|=0,e|=0;var a,r,t=0,Q=0,o=0,c=0,E=0,y=0,_=0,n=0,s=0,p=0,f=0,D=0,w=0,k=0;if(w=1886610805^(t=i[0|(B|=0)]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24),_=1936682341^(Q=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24),t^=1852142177,o=1819895653^Q,k=1852075885^(Q=i[B+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24),f=1685025377^(B=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24),E=2037671283^Q,Q=1952801890^B,p=I,(0|(r=(I+g|0)-(a=7&I)|0))!=(0|g))for(;I=(c=Q^(D=i[g+4|0]|i[g+5|0]<<8|i[g+6|0]<<16|i[g+7|0]<<24))+o|0,E=e=t+(B=E^(n=i[0|g]|i[g+1|0]<<8|i[g+2|0]<<16|i[g+3|0]<<24))|0,s=I=e>>>0<B>>>0?I+1|0:I,t=e,e=I,I=_+f|0,I=(Q=w+k|0)>>>0<w>>>0?I+1|0:I,y=(o=vA(k,f,13)^Q)+t|0,e=(t=h^I)+e|0,t=vA(o,t,17)^y,f=vA(t,e=(o=o>>>0>y>>>0?e+1|0:e)^h,13),_=h,c=vA(B,c,16),B=s^h,c^=E,s=vA(Q,I,32),I=h+B|0,I=(E=e)+(e=(Q=c+s|0)>>>0<s>>>0?I+1|0:I)|0,s=I=(E=t+Q|0)>>>0<Q>>>0?I+1|0:I,f=vA(t=E^f,I^=_,17),_=h,c=vA(c,B,21),B=e^h,c^=Q,Q=vA(y,o,32),e=h+B|0,I=(Q=Q>>>0>(o=c+Q|0)>>>0?e+1|0:e)+I|0,k=(t=t+o|0)^f,e=I=t>>>0<o>>>0?I+1|0:I,f=I^_,I=vA(c,B,16),c=Q^=h,y=vA(I^=o,Q,21),o=h,s=(Q=vA(E,s,32))+I|0,I=h+c|0,E=y^s,Q=(I=Q>>>0>s>>>0?I+1|0:I)^o,t=vA(t,e,32),o=h,w=s^n,_=I^D,(0|r)!=(0|(g=g+8|0)););switch(D=0,y=p<<24,a-1|0){case 6:y|=i[g+6|0]<<16;case 5:y|=i[g+5|0]<<8;case 4:y|=i[g+4|0];case 3:D|=(I=i[g+3|0])<<24,y|=e=I>>>8|0;case 2:D|=(e=i[g+2|0])<<16,y|=I=e>>>16|0;case 1:D|=(I=i[g+1|0])<<8,y|=e=I>>>24|0;case 0:D=i[0|g]|D}return g=A,e=vA(B=E^D,A=Q^y,16),A=A+o|0,Q=A=(s=B+t|0)>>>0<t>>>0?A+1|0:A,n=vA(B=e^s,A^=I=h,21),o=h,I=_+f|0,e=I=(t=w+k|0)>>>0<w>>>0?I+1|0:I,c=B,B=vA(t,I,32),I=h+A|0,A=o,o=I=B>>>0>(E=c+B|0)>>>0?I+1|0:I,_=vA(B=E^n,A^=I,16),c=h,I=(t=p=vA(k,f,13)^t)+s|0,e=(n=h^e)+Q|0,s=B,B=vA(I,e=I>>>0<t>>>0?e+1|0:e,32),A=h+A|0,_=vA(t=_^(s=s+B|0),B=(Q=B>>>0>s>>>0?A+1|0:A)^c,21),c=h,p=vA(p,n,17)^I,I=(n=h^e)+o|0,A=I=(e=E=(A=p)+E|0)>>>0<A>>>0?I+1|0:I,o=t,t=vA(e,I,32),I=h+B|0,c=I=(t=t>>>0>(o=o+t|0)>>>0?I+1|0:I)^c,_=vA(f=o^_,I,16),E=h,p=vA(p,n,13)^e,A=(n=A^h)+Q|0,e=A=(I=p)>>>0>(B=I+s|0)>>>0?A+1|0:A,A=vA(B,A,32),I=c+h|0,c=I=(Q=(A=f+(255^A)|0)>>>0<f>>>0?I+1|0:I)^E,s=A,_=vA(f=_^A,I,21),E=h,p=vA(p,n,17)^B,I=(n=e^h)+(t^y)|0,e=I=(A=o^D)>>>0>(B=p+A|0)>>>0?I+1|0:I,A=vA(B,I,32),I=c+h|0,c=I=(t=(A=A+f|0)>>>0<f>>>0?I+1|0:I)^E,o=A,y=vA(_^=A,I,16),E=h,p=vA(p,n,13)^B,A=Q+(n=h^e)|0,A=vA(B=s+p|0,I=A=B>>>0<s>>>0?A+1|0:A,32),e=c+h|0,c=e=(Q=(A=A+_|0)>>>0<_>>>0?e+1|0:e)^E,s=A,y=vA(_=y^A,e,21),E=h,A=vA(p,n,17),I=t+(p=I^h)|0,e=I=(B=o+(n=A^B)|0)>>>0<o>>>0?I+1|0:I,A=vA(B,I,32),I=c+h|0,o=A=A+_|0,t=I=A>>>0<_>>>0?I+1|0:I,y=vA(c=y^A,I^=E,16),E=h,A=vA(n,p,13),e=Q+(p=e^h)|0,A=vA(B=s+(n=A^B)|0,e=B>>>0<s>>>0?e+1|0:e,32),I=I+h|0,c=I=(Q=(A=A+c|0)>>>0<c>>>0?I+1|0:I)^E,s=A,y=vA(_=y^A,I,21),E=h,A=vA(n,p,17),I=t+(p=e^h)|0,e=I=(B=o+(n=A^B)|0)>>>0<o>>>0?I+1|0:I,I=vA(B,I,32),A=c+h|0,c=A=(t=(I=I+_|0)>>>0<_>>>0?A+1|0:A)^E,o=I,y=vA(_=y^I,A,16),E=h,A=vA(n,p,13),I=Q+(p=e^h)|0,e=I=(B=s+(n=A^B)|0)>>>0<s>>>0?I+1|0:I,A=vA(B,I,32),I=c+h|0,Q=A=A+_|0,y=vA(y^A,(I=A>>>0<_>>>0?I+1|0:I)^E,21),E=h,B=vA(n,p,17)^B,s=vA(B,A=e^h,13),A=A+t|0,e=A=h^((B=B+o|0)>>>0<o>>>0?A+1:A),B=vA(t=B^s,A,17)^y,A=h^E,e=I+e|0,I=vA(I=t+Q|0,e=I>>>0<Q>>>0?e+1|0:e,32)^B^I,C[0|g]=I,C[g+1|0]=I>>>8,C[g+2|0]=I>>>16,C[g+3|0]=I>>>24,A^=e^h,C[g+4|0]=A,C[g+5|0]=A>>>8,C[g+6|0]=A>>>16,C[g+7|0]=A>>>24,0},ac:kg,bc:lg,cc:Fg,dc:vg,ec:vg,fc:Fg,gc:function(){return-65},hc:function(A,g,I){A|=0;var e,B,a,r,t=0,Q=0,o=0,c=0,E=0;return n=a=n-160|0,wA(g|=0,I|=0,32,0),C[0|g]=248&i[0|g],C[g+31|0]=63&i[g+31|0]|64,Z(a,g),RA(A,a),Q=i[(B=I)+8|0]|i[B+9|0]<<8|i[B+10|0]<<16|i[B+11|0]<<24,t=i[B+12|0]|i[B+13|0]<<8|i[B+14|0]<<16|i[B+15|0]<<24,o=i[B+16|0]|i[B+17|0]<<8|i[B+18|0]<<16|i[B+19|0]<<24,c=i[B+20|0]|i[B+21|0]<<8|i[B+22|0]<<16|i[B+23|0]<<24,E=i[0|B]|i[B+1|0]<<8|i[B+2|0]<<16|i[B+3|0]<<24,I=i[B+4|0]|i[B+5|0]<<8|i[B+6|0]<<16|i[B+7|0]<<24,r=i[B+28|0]|i[B+29|0]<<8|i[B+30|0]<<16|i[B+31|0]<<24,e=g,g=i[B+24|0]|i[B+25|0]<<8|i[B+26|0]<<16|i[B+27|0]<<24,C[e+24|0]=g,C[e+25|0]=g>>>8,C[e+26|0]=g>>>16,C[e+27|0]=g>>>24,C[e+28|0]=r,C[e+29|0]=r>>>8,C[e+30|0]=r>>>16,C[e+31|0]=r>>>24,C[e+16|0]=o,C[e+17|0]=o>>>8,C[e+18|0]=o>>>16,C[e+19|0]=o>>>24,C[e+20|0]=c,C[e+21|0]=c>>>8,C[e+22|0]=c>>>16,C[e+23|0]=c>>>24,C[e+8|0]=Q,C[e+9|0]=Q>>>8,C[e+10|0]=Q>>>16,C[e+11|0]=Q>>>24,C[e+12|0]=t,C[e+13|0]=t>>>8,C[e+14|0]=t>>>16,C[e+15|0]=t>>>24,C[0|e]=E,C[e+1|0]=E>>>8,C[e+2|0]=E>>>16,C[e+3|0]=E>>>24,C[e+4|0]=I,C[e+5|0]=I>>>8,C[e+6|0]=I>>>16,C[e+7|0]=I>>>24,o=i[(t=A)+8|0]|i[t+9|0]<<8|i[t+10|0]<<16|i[t+11|0]<<24,c=i[t+12|0]|i[t+13|0]<<8|i[t+14|0]<<16|i[t+15|0]<<24,E=i[t+16|0]|i[t+17|0]<<8|i[t+18|0]<<16|i[t+19|0]<<24,I=i[t+20|0]|i[t+21|0]<<8|i[t+22|0]<<16|i[t+23|0]<<24,g=i[0|t]|i[t+1|0]<<8|i[t+2|0]<<16|i[t+3|0]<<24,A=i[t+4|0]|i[t+5|0]<<8|i[t+6|0]<<16|i[t+7|0]<<24,Q=i[t+28|0]|i[t+29|0]<<8|i[t+30|0]<<16|i[t+31|0]<<24,t=i[t+24|0]|i[t+25|0]<<8|i[t+26|0]<<16|i[t+27|0]<<24,C[e+56|0]=t,C[e+57|0]=t>>>8,C[e+58|0]=t>>>16,C[e+59|0]=t>>>24,C[e+60|0]=Q,C[e+61|0]=Q>>>8,C[e+62|0]=Q>>>16,C[e+63|0]=Q>>>24,C[e+48|0]=E,C[e+49|0]=E>>>8,C[e+50|0]=E>>>16,C[e+51|0]=E>>>24,C[e+52|0]=I,C[e+53|0]=I>>>8,C[e+54|0]=I>>>16,C[e+55|0]=I>>>24,C[e+40|0]=o,C[e+41|0]=o>>>8,C[e+42|0]=o>>>16,C[e+43|0]=o>>>24,C[e+44|0]=c,C[e+45|0]=c>>>8,C[e+46|0]=c>>>16,C[e+47|0]=c>>>24,C[e+32|0]=g,C[e+33|0]=g>>>8,C[e+34|0]=g>>>16,C[e+35|0]=g>>>24,C[e+36|0]=A,C[e+37|0]=A>>>8,C[e+38|0]=A>>>16,C[e+39|0]=A>>>24,n=a+160|0,0},ic:function(A,g){A|=0,g|=0;var I,e,B,r,t,Q=0,o=0,c=0;return n=o=n-192|0,xA(o,32),wA(g,o,32,0),C[0|g]=248&i[0|g],C[g+31|0]=63&i[g+31|0]|64,Z(c=o+32|0,g),RA(A,c),I=o,c=a[o+28>>2],o=a[o+24>>2],C[g+24|0]=o,C[g+25|0]=o>>>8,C[g+26|0]=o>>>16,C[g+27|0]=o>>>24,C[g+28|0]=c,C[g+29|0]=c>>>8,C[g+30|0]=c>>>16,C[g+31|0]=c>>>24,c=a[I+20>>2],o=a[I+16>>2],C[g+16|0]=o,C[g+17|0]=o>>>8,C[g+18|0]=o>>>16,C[g+19|0]=o>>>24,C[g+20|0]=c,C[g+21|0]=c>>>8,C[g+22|0]=c>>>16,C[g+23|0]=c>>>24,c=a[I+12>>2],o=a[I+8>>2],C[g+8|0]=o,C[g+9|0]=o>>>8,C[g+10|0]=o>>>16,C[g+11|0]=o>>>24,C[g+12|0]=c,C[g+13|0]=c>>>8,C[g+14|0]=c>>>16,C[g+15|0]=c>>>24,c=a[I+4>>2],o=a[I>>2],C[0|g]=o,C[g+1|0]=o>>>8,C[g+2|0]=o>>>16,C[g+3|0]=o>>>24,C[g+4|0]=c,C[g+5|0]=c>>>8,C[g+6|0]=c>>>16,C[g+7|0]=c>>>24,e=i[(Q=A)+8|0]|i[Q+9|0]<<8|i[Q+10|0]<<16|i[Q+11|0]<<24,B=i[Q+12|0]|i[Q+13|0]<<8|i[Q+14|0]<<16|i[Q+15|0]<<24,r=i[Q+16|0]|i[Q+17|0]<<8|i[Q+18|0]<<16|i[Q+19|0]<<24,c=i[Q+20|0]|i[Q+21|0]<<8|i[Q+22|0]<<16|i[Q+23|0]<<24,o=i[0|Q]|i[Q+1|0]<<8|i[Q+2|0]<<16|i[Q+3|0]<<24,A=i[Q+4|0]|i[Q+5|0]<<8|i[Q+6|0]<<16|i[Q+7|0]<<24,t=i[Q+28|0]|i[Q+29|0]<<8|i[Q+30|0]<<16|i[Q+31|0]<<24,Q=i[Q+24|0]|i[Q+25|0]<<8|i[Q+26|0]<<16|i[Q+27|0]<<24,C[g+56|0]=Q,C[g+57|0]=Q>>>8,C[g+58|0]=Q>>>16,C[g+59|0]=Q>>>24,C[g+60|0]=t,C[g+61|0]=t>>>8,C[g+62|0]=t>>>16,C[g+63|0]=t>>>24,C[g+48|0]=r,C[g+49|0]=r>>>8,C[g+50|0]=r>>>16,C[g+51|0]=r>>>24,C[g+52|0]=c,C[g+53|0]=c>>>8,C[g+54|0]=c>>>16,C[g+55|0]=c>>>24,C[g+40|0]=e,C[g+41|0]=e>>>8,C[g+42|0]=e>>>16,C[g+43|0]=e>>>24,C[g+44|0]=B,C[g+45|0]=B>>>8,C[g+46|0]=B>>>16,C[g+47|0]=B>>>24,C[g+32|0]=o,C[g+33|0]=o>>>8,C[g+34|0]=o>>>16,C[g+35|0]=o>>>24,C[g+36|0]=A,C[g+37|0]=A>>>8,C[g+38|0]=A>>>16,C[g+39|0]=A>>>24,dg(I,32),n=I+192|0,0},jc:function(A,g,I,C,e,B){g|=0,e|=0,B|=0;var i,r=0;return n=i=n-16|0,p(A|=0,i+8|0,TA(A- -64|0,I|=0,C|=0),C,e,B,0),64!=a[i+8>>2]|a[i+12>>2]?(g&&(a[g>>2]=0,a[g+4>>2]=0),VA(A,0,C- -64|0),r=-1):g&&(a[g>>2]=C- -64,a[g+4>>2]=e-((C>>>0<4294967232)-1|0)),n=i+16|0,0|r},kc:function(A,g,I,C,e,B){A|=0,g|=0,I|=0;var i=0;A:{g:{if(i=C|=0,!(!(e|=0)&C>>>0<64||(C=e-1|0,!(C=(e=i+-64|0)>>>0<4294967232?C+1|0:C)&e>>>0>4294967231|C))){if(!w(I,i=I- -64|0,e,C,B|=0,0))break g;A&&VA(A,0,e)}if(I=-1,!g)break A;a[g>>2]=0,a[g+4>>2]=0;break A}g&&(a[g>>2]=e,a[g+4>>2]=C),I=0,A&&TA(A,i,e)}return 0|I},lc:function(A,g,I,C,e,B){return p(A|=0,g|=0,I|=0,C|=0,e|=0,B|=0,0),0},mc:function(A,g,I,C,e){return 0|w(A|=0,g|=0,I|=0,C|=0,e|=0,0)},nc:function(A){return dA(A|=0),0},oc:function(A,g,I,C){return 0|W(A|=0,g|=0,I|=0,C|=0)},pc:function(A,g,I,C){var e;return g|=0,I|=0,C|=0,n=e=n+-64|0,J(A|=0,e),A=p(g,I,e,64,0,C,1),n=e- -64|0,0|A},qc:function(A,g,I){var C;return g|=0,I|=0,n=C=n+-64|0,J(A|=0,C),A=w(g,C,64,0,I,1),n=C- -64|0,0|A},rc:function(A,g){A|=0;var I,e=0,B=0,i=0,r=0,Q=0,o=0,c=0,E=0,y=0,_=0,s=0,p=0,f=0,D=0,w=0,k=0,l=0,u=0,S=0,b=0,M=0,F=0,N=0,K=0,Y=0,H=0,G=0,J=0,U=0,x=0,m=0,P=0,R=0,T=0,q=0,z=0,O=0,V=0,Z=0,W=0,$=0,AA=0,gA=0,IA=0,CA=0,eA=0,BA=0,aA=0,rA=0,tA=0,oA=0,cA=0,EA=0,_A=0,nA=0,hA=0,sA=0,pA=0,fA=0,DA=0,wA=0,dA=0,lA=0,vA=0,SA=0,bA=0,MA=0,FA=0,NA=0,KA=0,YA=0,HA=0,JA=0,UA=0,xA=0,mA=0,PA=0,RA=0,LA=0,TA=0;if(n=I=n-256|0,HA=-1,!uA(g|=0)&&!L(e=I+96|0,g)){for(n=i=n-2048|0,QA(r=i+640|0,e),e=a[(g=e)+36>>2],a[i+352>>2]=a[g+32>>2],a[i+356>>2]=e,e=a[g+28>>2],a[i+344>>2]=a[g+24>>2],a[i+348>>2]=e,e=a[g+20>>2],a[i+336>>2]=a[g+16>>2],a[i+340>>2]=e,e=a[g+12>>2],a[i+328>>2]=a[g+8>>2],a[i+332>>2]=e,e=a[g+4>>2],a[i+320>>2]=a[g>>2],a[i+324>>2]=e,e=a[g+52>>2],a[i+368>>2]=a[g+48>>2],a[i+372>>2]=e,e=a[g+60>>2],a[i+376>>2]=a[g+56>>2],a[i+380>>2]=e,B=a[4+(e=g- -64|0)>>2],a[i+384>>2]=a[e>>2],a[i+388>>2]=B,e=a[g+76>>2],a[i+392>>2]=a[g+72>>2],a[i+396>>2]=e,e=a[g+44>>2],a[i+360>>2]=a[g+40>>2],a[i+364>>2]=e,e=a[g+92>>2],a[i+408>>2]=a[g+88>>2],a[i+412>>2]=e,e=a[g+100>>2],a[i+416>>2]=a[g+96>>2],a[i+420>>2]=e,e=a[g+108>>2],a[i+424>>2]=a[g+104>>2],a[i+428>>2]=e,e=a[g+116>>2],a[i+432>>2]=a[g+112>>2],a[i+436>>2]=e,e=a[g+84>>2],a[i+400>>2]=a[g+80>>2],a[i+404>>2]=e,v(g=i+480|0,e=i+320|0),d(B=i+160|0,g,o=i+600|0),d(i+200|0,E=i+520|0,y=i+560|0),d(i+240|0,y,o),d(i+280|0,g,E),j(g,B,r),d(e,g,o),d(w=i+360|0,E,y),d(k=i+400|0,y,o),d(p=i+440|0,g,E),QA(r=i+800|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+960|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1120|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1280|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1440|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(r=i+1600|0,e),j(g,B,r),d(e,g,o),d(w,E,y),d(k,y,o),d(p,g,E),QA(i+1760|0,e),a[i+32>>2]=0,a[i+36>>2]=0,a[i+24>>2]=0,a[i+28>>2]=0,a[i+16>>2]=0,a[i+20>>2]=0,a[i+8>>2]=0,a[i+12>>2]=0,a[i+52>>2]=0,a[i+56>>2]=0,a[i+60>>2]=0,a[i+64>>2]=0,a[i+68>>2]=0,a[i+72>>2]=0,a[i+76>>2]=0,a[i+80>>2]=1,a[i>>2]=0,a[i+4>>2]=0,a[i+44>>2]=0,a[i+48>>2]=0,a[i+40>>2]=1,VA(i+84|0,0,76),_=i+120|0,D=i+2008|0,f=i+1968|0,e=i+80|0,B=i+40|0,r=252;Q=a[i+36>>2],a[(g=i+1960|0)>>2]=a[i+32>>2],a[g+4>>2]=Q,Q=a[i+28>>2],a[(g=i+1952|0)>>2]=a[i+24>>2],a[g+4>>2]=Q,Q=a[i+20>>2],a[(g=i+1944|0)>>2]=a[i+16>>2],a[g+4>>2]=Q,Q=a[i+12>>2],a[(g=i+1936|0)>>2]=a[i+8>>2],a[g+4>>2]=Q,g=a[i+4>>2],a[i+1928>>2]=a[i>>2],a[i+1932>>2]=g,Q=a[(g=B)+36>>2],a[f+32>>2]=a[g+32>>2],a[f+36>>2]=Q,Q=a[g+28>>2],a[f+24>>2]=a[g+24>>2],a[f+28>>2]=Q,Q=a[g+20>>2],a[f+16>>2]=a[g+16>>2],a[f+20>>2]=Q,Q=a[g+12>>2],a[f+8>>2]=a[g+8>>2],a[f+12>>2]=Q,Q=a[g+4>>2],a[f>>2]=a[g>>2],a[f+4>>2]=Q,Q=a[(g=e)+36>>2],a[D+32>>2]=a[g+32>>2],a[D+36>>2]=Q,Q=a[g+28>>2],a[D+24>>2]=a[g+24>>2],a[D+28>>2]=Q,Q=a[g+20>>2],a[D+16>>2]=a[g+16>>2],a[D+20>>2]=Q,Q=a[g+12>>2],a[D+8>>2]=a[g+8>>2],a[D+12>>2]=Q,Q=a[g+4>>2],a[D>>2]=a[g>>2],a[D+4>>2]=Q,r=C[(g=r)+33408|0],v(Q=i+480|0,i+1928|0),(0|r)>0?(d(u=i+320|0,Q,o),d(w,E,y),d(k,y,o),d(p,Q,E),j(Q,u,(i+640|0)+t((254&r)>>>1|0,160)|0)):(0|r)>=0||(d(u=i+320|0,Q=i+480|0,o),d(w,E,y),d(k,y,o),d(p,Q,E),X(Q,u,(i+640|0)+t((0-r&254)>>>1|0,160)|0)),d(i,r=i+480|0,o),d(B,E,y),d(e,y,o),d(_,r,E),r=g-1|0,g;);yA(g=i+640|0,i),g=kA(g,32),n=i+2048|0,g&&(HA=0,P=a[I+172>>2],a[I+36>>2]=0-P,w=a[I+168>>2],a[I+32>>2]=0-w,R=a[I+164>>2],a[I+28>>2]=0-R,E=a[I+160>>2],a[I+24>>2]=0-E,T=a[I+156>>2],a[I+20>>2]=0-T,y=a[I+152>>2],a[I+16>>2]=0-y,q=a[I+148>>2],a[I+12>>2]=0-q,D=a[I+144>>2],a[I+8>>2]=0-D,z=a[I+140>>2],a[I+4>>2]=0-z,i=a[I+136>>2],a[I>>2]=1-i,iA(I,I),g=GA(k=a[I+4>>2],U=k>>31,F=T<<1,rA=F>>31),e=h,B=GA(o=a[I>>2],N=o>>31,E,K=E>>31),e=h+e|0,e=(g=B+g|0)>>>0<B>>>0?e+1|0:e,B=(r=GA(Q=a[I+8>>2],O=Q>>31,y,Y=y>>31))+g|0,g=h+e|0,g=B>>>0<r>>>0?g+1|0:g,e=B,B=GA(x=a[I+12>>2],W=x>>31,gA=q<<1,tA=gA>>31),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(V=a[I+16>>2],IA=V>>31,D,H=D>>31),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,bA=r=a[I+20>>2],f=GA(r,oA=r>>31,CA=z<<1,cA=CA>>31),B=h+g|0,B=(e=f+e|0)>>>0<f>>>0?B+1|0:B,MA=S=a[I+24>>2],g=(i=GA(S,lA=S>>31,f=i+1|0,G=f>>31))+e|0,e=h+B|0,e=g>>>0<i>>>0?e+1|0:e,EA=a[I+28>>2],B=(i=GA(u=t(EA,19),$=u>>31,eA=P<<1,_A=eA>>31))+g|0,g=h+e|0,g=B>>>0<i>>>0?g+1|0:g,e=B,JA=a[I+32>>2],B=GA(_=t(JA,19),Z=_>>31,w,J=w>>31),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,UA=a[I+36>>2],B=GA(p=t(UA,19),m=p>>31,BA=R<<1,nA=BA>>31),g=h+g|0,s=e=B+e|0,i=e>>>0<B>>>0?g+1|0:g,g=GA(y,Y,k,U),e=h,c=GA(o,N,T,hA=T>>31),B=h+e|0,B=(g=c+g|0)>>>0<c>>>0?B+1|0:B,c=GA(Q,O,q,sA=q>>31),e=h+B|0,e=(g=c+g|0)>>>0<c>>>0?e+1|0:e,B=(c=GA(D,H,x,W))+g|0,g=h+e|0,g=B>>>0<c>>>0?g+1|0:g,e=B,B=GA(V,IA,z,pA=z>>31),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(f,G,r,oA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,c=GA(S=t(S,19),aA=S>>31,P,fA=P>>31),B=h+g|0,B=(e=c+e|0)>>>0<c>>>0?B+1|0:B,g=(c=GA(w,J,u,$))+e|0,e=h+B|0,e=g>>>0<c>>>0?e+1|0:e,B=(c=GA(_,Z,R,DA=R>>31))+g|0,g=h+e|0,g=B>>>0<c>>>0?g+1|0:g,e=B,B=GA(E,K,p,m),g=h+g|0,FA=e=e+B|0,AA=e>>>0<B>>>0?g+1|0:g,g=GA(k,U,gA,tA),B=h,e=(c=GA(o,N,y,Y))+g|0,g=h+B|0,g=e>>>0<c>>>0?g+1|0:g,c=GA(D,H,Q,O),B=h+g|0,B=(e=c+e|0)>>>0<c>>>0?B+1|0:B,g=(c=GA(x,W,CA,cA))+e|0,e=h+B|0,e=g>>>0<c>>>0?e+1|0:e,B=(c=GA(f,G,V,IA))+g|0,g=h+e|0,g=B>>>0<c>>>0?g+1|0:g,e=B,B=GA(c=t(r,19),wA=c>>31,eA,_A),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(w,J,S,aA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,r=GA(u,$,BA,nA),B=h+g|0,B=(e=r+e|0)>>>0<r>>>0?B+1|0:B,g=(r=GA(E,K,_,Z))+e|0,e=h+B|0,e=g>>>0<r>>>0?e+1|0:e,B=(r=GA(p,m,F,rA))+g|0,g=h+e|0,xA=B,mA=g=B>>>0<r>>>0?g+1|0:g,PA=B=B+33554432|0,RA=g=B>>>0<33554432?g+1|0:g,B=(67108863&g)<<6|B>>>26,g=(g>>26)+AA|0,FA=r=B+FA|0,g=B>>>0>r>>>0?g+1|0:g,LA=r=r+16777216|0,g=(e=(B=r>>>0<16777216?g+1|0:g)>>25)+i|0,g=(B=(r=(33554431&B)<<7|r>>>25)+s|0)>>>0<r>>>0?g+1|0:g,M=e=B+33554432|0,r=g=e>>>0<33554432?g+1|0:g,a[I+72>>2]=B-(-67108864&e),g=GA(k,U,CA,cA),e=h,i=GA(o,N,D,H),B=h+e|0,B=(g=i+g|0)>>>0<i>>>0?B+1|0:B,e=(i=GA(f,G,Q,O))+g|0,g=h+B|0,g=e>>>0<i>>>0?g+1|0:g,B=GA(i=t(x,19),dA=i>>31,eA,_A),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(s=GA(AA=t(V,19),vA=AA>>31,w,J))+e|0,e=h+g|0,e=B>>>0<s>>>0?e+1|0:e,s=GA(BA,nA,c,wA),g=h+e|0,g=(B=s+B|0)>>>0<s>>>0?g+1|0:g,e=(s=GA(E,K,S,aA))+B|0,B=h+g|0,B=e>>>0<s>>>0?B+1|0:B,s=GA(u,$,F,rA),g=h+B|0,g=(e=s+e|0)>>>0<s>>>0?g+1|0:g,B=GA(y,Y,_,Z),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(s=GA(p,m,gA,tA))+e|0,e=h+g|0,b=B,NA=B>>>0<s>>>0?e+1|0:e,g=GA(f,G,k,U),e=h,B=(s=GA(o,N,z,pA))+g|0,g=h+e|0,g=B>>>0<s>>>0?g+1|0:g,s=e=t(Q,19),e=(l=GA(e,SA=e>>31,P,fA))+B|0,B=h+g|0,B=e>>>0<l>>>0?B+1|0:B,l=GA(i,dA,w,J),g=h+B|0,g=(e=l+e|0)>>>0<l>>>0?g+1|0:g,B=GA(AA,vA,R,DA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(l=GA(E,K,c,wA))+e|0,e=h+g|0,e=B>>>0<l>>>0?e+1|0:e,l=GA(S,aA,T,hA),g=h+e|0,g=(B=l+B|0)>>>0<l>>>0?g+1|0:g,e=(l=GA(y,Y,u,$))+B|0,B=h+g|0,B=e>>>0<l>>>0?B+1|0:B,l=GA(_,Z,q,sA),g=h+B|0,g=(e=l+e|0)>>>0<l>>>0?g+1|0:g,B=GA(D,H,p,m),g=h+g|0,KA=e=B+e|0,l=e>>>0<B>>>0?g+1|0:g,g=GA(g=t(k,19),g>>31,eA,_A),e=h,B=GA(o,N,f,G),e=h+e|0,e=(g=B+g|0)>>>0<B>>>0?e+1|0:e,B=(s=GA(s,SA,w,J))+g|0,g=h+e|0,e=(i=GA(i,dA,BA,nA))+B|0,B=h+(B>>>0<s>>>0?g+1|0:g)|0,B=e>>>0<i>>>0?B+1|0:B,i=GA(E,K,AA,vA),g=h+B|0,g=(e=i+e|0)>>>0<i>>>0?g+1|0:g,B=GA(F,rA,c,wA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(i=GA(y,Y,S,aA))+e|0,e=h+g|0,e=B>>>0<i>>>0?e+1|0:e,i=GA(u,$,gA,tA),g=h+e|0,g=(B=i+B|0)>>>0<i>>>0?g+1|0:g,e=(i=GA(D,H,_,Z))+B|0,B=h+g|0,B=e>>>0<i>>>0?B+1|0:B,i=GA(p,m,CA,cA),g=h+B|0,s=e=i+e|0,dA=g=e>>>0<i>>>0?g+1|0:g,SA=e=e+33554432|0,TA=g=e>>>0<33554432?g+1|0:g,B=g>>26,g=(67108863&g)<<6|e>>>26,e=B+l|0,l=i=g+KA|0,g=e=g>>>0>i>>>0?e+1|0:e,KA=i=i+16777216|0,i=(33554431&(g=i>>>0<16777216?g+1|0:g))<<7|i>>>25,g=(g>>25)+NA|0,g=(e=i+b|0)>>>0<i>>>0?g+1|0:g,B=e,NA=e=e+33554432|0,i=g=e>>>0<33554432?g+1|0:g,a[I+56>>2]=B-(-67108864&e),g=GA(E,K,k,U),B=h,e=(b=GA(o,N,R,DA))+g|0,g=h+B|0,g=e>>>0<b>>>0?g+1|0:g,B=GA(Q,O,T,hA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=GA(y,Y,x,W),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,b=GA(V,IA,q,sA),B=h+g|0,B=(e=b+e|0)>>>0<b>>>0?B+1|0:B,g=(b=GA(D,H,bA,oA))+e|0,e=h+B|0,e=g>>>0<b>>>0?e+1|0:e,B=(b=GA(z,pA,MA,lA))+g|0,g=h+e|0,g=B>>>0<b>>>0?g+1|0:g,e=B,B=GA(EA,YA=EA>>31,f,G),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(_,Z,P,fA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,b=(B=e)+(e=GA(w,J,p,m))|0,B=h+g|0,e=(g=r>>26)+(e=e>>>0>b>>>0?B+1|0:B)|0,M=B=(r=(67108863&r)<<6|M>>>26)+b|0,g=e=B>>>0<r>>>0?e+1|0:e,b=B=B+16777216|0,r=g=B>>>0<16777216?g+1|0:g,a[I+76>>2]=M-(-33554432&B),g=GA(D,H,k,U),e=h,M=GA(o,N,q,sA),B=h+e|0,B=(g=M+g|0)>>>0<M>>>0?B+1|0:B,M=GA(Q,O,z,pA),e=h+B|0,e=(g=M+g|0)>>>0<M>>>0?e+1|0:e,B=(M=GA(f,G,x,W))+g|0,g=h+e|0,g=B>>>0<M>>>0?g+1|0:g,e=B,B=GA(AA,vA,P,fA),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=GA(w,J,c,wA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,e=(S=GA(S,aA,R,DA))+e|0,B=h+g|0,g=(u=GA(E,K,u,$))+e|0,e=h+(e>>>0<S>>>0?B+1|0:B)|0,B=(_=GA(_,Z,T,hA))+g|0,g=h+(g>>>0<u>>>0?e+1|0:e)|0,g=B>>>0<_>>>0?g+1|0:g,e=B,B=GA(y,Y,p,m),g=h+g|0,M=e=e+B|0,g=(g=e>>>0<B>>>0?g+1|0:g)+(e=i>>26)|0,_=i=M+(B=(67108863&i)<<6|NA>>>26)|0,g=B>>>0>i>>>0?g+1|0:g,u=e=i+16777216|0,i=B=e>>>0<16777216?g+1|0:g,a[I+60>>2]=_-(-33554432&e),g=GA(k,U,BA,nA),B=h,e=(_=GA(o,N,w,J))+g|0,g=h+B|0,g=e>>>0<_>>>0?g+1|0:g,B=GA(E,K,Q,O),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,_=GA(x,W,F,rA),B=h+g|0,B=(e=_+e|0)>>>0<_>>>0?B+1|0:B,g=(_=GA(y,Y,V,IA))+e|0,e=h+B|0,e=g>>>0<_>>>0?e+1|0:e,B=(_=GA(gA,tA,bA,oA))+g|0,g=h+e|0,g=B>>>0<_>>>0?g+1|0:g,e=B,B=GA(D,H,MA,lA),g=h+g|0,g=(e=e+B|0)>>>0<B>>>0?g+1|0:g,B=e,e=GA(CA,cA,EA,YA),g=h+g|0,g=e>>>0>(B=B+e|0)>>>0?g+1|0:g,_=e=JA,e=(F=GA(e,S=e>>31,f,G))+B|0,B=h+g|0,g=(p=GA(p,m,eA,_A))+e|0,e=h+(e>>>0<F>>>0?B+1|0:B)|0,B=g>>>0<p>>>0?e+1|0:e,e=g,g=(g=r>>25)+B|0,g=(e=e+(r=(33554431&r)<<7|b>>>25)|0)>>>0<r>>>0?g+1|0:g,B=e,p=e=e+33554432|0,r=g=e>>>0<33554432?g+1|0:g,a[I+80>>2]=B-(-67108864&e),e=i>>25,B=(i=(33554431&i)<<7|u>>>25)+(xA-(g=-67108864&PA)|0)|0,g=e+(mA-((g>>>0>xA>>>0)+RA|0)|0)|0,g=B>>>0<i>>>0?g+1|0:g,g=((67108863&(g=(e=B+33554432|0)>>>0<33554432?g+1|0:g))<<6|e>>>26)+(F=FA-(-33554432&LA)|0)|0,a[I+68>>2]=g,a[I+64>>2]=B-(-67108864&e),g=GA(w,J,k,U),B=h,e=(i=GA(o,N,P,fA))+g|0,g=h+B|0,g=e>>>0<i>>>0?g+1|0:g,B=(i=GA(Q,O,R,DA))+e|0,e=h+g|0,e=B>>>0<i>>>0?e+1|0:e,g=(i=GA(E,K,x,W))+B|0,B=h+e|0,B=g>>>0<i>>>0?B+1|0:B,e=(i=GA(V,IA,T,hA))+g|0,g=h+B|0,g=e>>>0<i>>>0?g+1|0:g,B=GA(y,Y,bA,oA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=GA(q,sA,MA,lA),g=h+g|0,g=(e=B+e|0)>>>0<B>>>0?g+1|0:g,B=(i=GA(D,H,EA,YA))+e|0,e=h+g|0,e=B>>>0<i>>>0?e+1|0:e,i=(g=GA(_,S,z,pA))+B|0,B=h+e|0,B=g>>>0>i>>>0?B+1|0:B,e=i,i=GA(g=UA,g>>31,f,G),g=h+B|0,B=e=e+i|0,g=(g=e>>>0<i>>>0?g+1|0:g)+(e=r>>26)|0,g=(B=B+(r=(67108863&r)<<6|p>>>26)|0)>>>0<r>>>0?g+1|0:g,g=(e=B+16777216|0)>>>0<16777216?g+1|0:g,a[I+84>>2]=B-(-33554432&e),r=l-(-33554432&KA)|0,i=s-(B=-67108864&SA)|0,o=dA-((B>>>0>s>>>0)+TA|0)|0,g=GA((33554431&(B=g))<<7|e>>>25,g>>=25,19,0),e=h+o|0,g=g>>>0>(B=g+i|0)>>>0?e+1|0:e,g=((67108863&(g=(e=B+33554432|0)>>>0<33554432?g+1|0:g))<<6|e>>>26)+r|0,a[I+52>>2]=g,a[I+48>>2]=B-(-67108864&e),yA(A,I+48|0))}return n=I+256|0,0|HA},sc:function(A,g){A|=0;var I,e=0;return n=I=n+-64|0,wA(I,g|=0,32,0),C[0|I]=248&i[0|I],C[I+31|0]=63&i[I+31|0]|64,g=a[I+20>>2],e=a[I+16>>2],C[A+16|0]=e,C[A+17|0]=e>>>8,C[A+18|0]=e>>>16,C[A+19|0]=e>>>24,C[A+20|0]=g,C[A+21|0]=g>>>8,C[A+22|0]=g>>>16,C[A+23|0]=g>>>24,g=a[I+12>>2],e=a[I+8>>2],C[A+8|0]=e,C[A+9|0]=e>>>8,C[A+10|0]=e>>>16,C[A+11|0]=e>>>24,C[A+12|0]=g,C[A+13|0]=g>>>8,C[A+14|0]=g>>>16,C[A+15|0]=g>>>24,g=a[I+4>>2],e=a[I>>2],C[0|A]=e,C[A+1|0]=e>>>8,C[A+2|0]=e>>>16,C[A+3|0]=e>>>24,C[A+4|0]=g,C[A+5|0]=g>>>8,C[A+6|0]=g>>>16,C[A+7|0]=g>>>24,g=a[I+28>>2],e=a[I+24>>2],C[A+24|0]=e,C[A+25|0]=e>>>8,C[A+26|0]=e>>>16,C[A+27|0]=e>>>24,C[A+28|0]=g,C[A+29|0]=g>>>8,C[A+30|0]=g>>>16,C[A+31|0]=g>>>24,dg(I,64),n=I- -64|0,0},tc:function(){var A,g;return n=A=n-16|0,C[A+15|0]=0,g=0|c(36304,A+15|0,0),n=A+16|0,0|g},uc:Bg,vc:function(A){var g,I=0,e=0;if(n=g=n-16|0,(A|=0)>>>0>=2){for(I=(0-A>>>0)%(A>>>0)|0;C[g+15|0]=0,I>>>0>(e=0|c(36304,g+15|0,0))>>>0;);I=(e>>>0)%(A>>>0)|0}return n=g+16|0,0|I},wc:xA,xc:function(A,g,I){yg(A|=0,g|=0,33888,I|=0)},yc:vg,zc:function(){var A=0,g=0;return(A=a[9414])&&(A=a[A+20>>2])&&(g=0|Jg[0|A]()),0|g},Ac:function(A,g,I){A|=0,g|=0;var e,a=0,i=0,r=0;if(n=e=n-16|0,I|=0)E(1228,1088,198,1024),B();else{if(g|I)for(;C[e+15|0]=0,i=A+a|0,r=0|c(36304,e+15|0,0),C[0|i]=r,(0|g)!=(0|(a=a+1|0)););n=e+16|0}},Bc:function(A,g,I,e){A|=0,I|=0;var a=0,r=0,t=0;if(!((e|=0)>>>0>2147483646|e<<1>>>0>=(g|=0)>>>0)){if(g=0,e){for(;a=(g<<1)+A|0,r=15&(t=i[g+I|0]),C[a+1|0]=22272+((r<<8)+(r+65526&55552)|0)>>>8,r=a,a=t>>>4|0,C[0|r]=87+((a+65526>>>8&217)+a|0),(0|e)!=(0|(g=g+1|0)););g=e<<1}else g=0;return C[g+A|0]=0,0|A}ig(),B()},Cc:function(A,g,I,e,B,r,t){A|=0,g|=0,I|=0,B|=0,r|=0,t|=0;var Q=0,o=0,c=0,E=0,y=0,_=0,n=0,h=0,s=0;A:{g:{I:{C:{e:{B:{a:{i:{r:{if(e|=0){if(B)break r;for(o=1,B=0;;){if(!(255&((n=(65526+(c=(223&(y=i[I+Q|0]))-55&255)^c+65520)>>>8|0)|(h=65526+(y^=48)>>>8|0))))break a;if(g>>>0<=_>>>0)break i;if(c=c&n|y&h,255&E?(C[A+_|0]=B|c,_=_+1|0):B=c<<4,E=~E,(0|(Q=Q+1|0))==(0|e))break}Q=e;break a}if(A=0,!t)break A;break I}for(;;){r:{t:{Q:{o:{c:{if(!(255&((y=(65526+(o=(223&(c=i[I+Q|0]))-55&255)^o+65520)>>>8|0)|(h=65526+(n=48^c)>>>8|0)))){if(255&E)break B;if(o=0,!sA(B,c))break C;if((Q=E=Q+1|0)>>>0<e>>>0)break c;break C}if(g>>>0<=_>>>0)break i;if(o=o&y|n&h,!(255&E))break o;C[A+_|0]=o|s,_=_+1|0;break r}for(;;){if(!(255&((n=(65526+(y=(223&(c=i[I+Q|0]))-55&255)^y+65520)>>>8|0)|(s=65526+(h=48^c)>>>8|0)))){if(!sA(B,c))break C;if((Q=Q+1|0)>>>0<e>>>0)continue;break Q}break}if(g>>>0<=_>>>0)break t;o=y&n|h&s}s=o<<4,E=0;break r}Q=e>>>0>E>>>0?e:E;break C}E=0;break i}if(E=~E,o=1,!((Q=Q+1|0)>>>0<e>>>0))break}break a}a[9280]=68,o=0}if(!(255&E))break e}a[9280]=28,o=-1,Q=Q-1|0,_=0;break C}_=o?_:0,o=o-1|0}if(!t){if((0|e)!=(0|Q))break g;A=o;break A}}a[t>>2]=I+Q,A=o;break A}a[9280]=28,A=-1}return r&&(a[r>>2]=_),0|A},Dc:function(A,g){A|=0;var I=0;return 1!=(-7&(g|=0))&&(ig(),B()),1+((3&(I=(I=A)+t(A=(A>>>0)/3|0,-3)|0)?2&g?I+1|0:4:0)+(A<<2)|0)|0},Ec:function(A,g,I,e,a){A|=0,g|=0,I|=0,e|=0;var r=0,Q=0,o=0,c=0,y=0,_=0,n=0;A:{g:{I:{C:{e:{B:{a:{if(1==(-7&(a|=0))&&(o=(r=(e>>>0)/3|0)<<2,(r=t(r,-3)+e|0)&&(o=2&a?2+((r>>>1|0)+o|0)|0:o+4|0),!(g>>>0<=o>>>0))){if(!(a>>>0>=4)){if(!e){a=0;break C}r=0,a=0;break a}if(!e){a=0;break C}for(r=0,a=0;;){for(y=i[I+c|0]|y<<8,r|=8;_=65510+(Q=y>>>(r=r-6|0)&63)>>>8|0,n=Q+65484>>>8|0,C[A+a|0]=~(1+(16321^Q))>>>8&45|Q+252&Q+65474>>>8&~n|~(Q+32705)>>>8&95|_&Q+65|n&Q+71&~_,a=a+1|0,r>>>0>5;);if((0|(c=c+1|0))==(0|e))break}if(!r)break e;c=45,Q=32705,e=95;break B}ig(),B()}for(;;){for(y=i[I+c|0]|y<<8,r|=8;_=65510+(Q=y>>>(r=r-6|0)&63)>>>8|0,n=Q+65484>>>8|0,C[A+a|0]=~(1+(16321^Q))>>>8&43|Q+252&Q+65474>>>8&~n|~(Q+16321)>>>8&47|_&Q+65|n&Q+71&~_,a=a+1|0,r>>>0>5;);if((0|(c=c+1|0))==(0|e))break}if(!r)break e;c=43,Q=16321,e=47}Q=~((I=y<<6-r&63)+Q)>>>8&e|(r=I+65510>>>8|0)&I+65,e=I+65484>>>8|0,C[A+a|0]=~(1+(16321^I))>>>8&c|Q|I+252&I+65474>>>8&~e|e&I+71&~r,a=a+1|0}if(a>>>0>o>>>0)break I}if(a>>>0<o>>>0)break g;o=a;break A}E(1036,1114,231,1300),B()}VA(A+a|0,61,o-a|0)}return VA(A+o|0,0,(g>>>0>(I=o+1|0)>>>0?g:I)-o|0),0|A},Fc:function(A,g,I,e,r,t,Q,o){A|=0,g|=0,I|=0,e|=0,r|=0,t|=0,Q|=0;var c=0,E=0,y=0,_=0,n=0,h=0,s=0,p=0;if(1==(-7&(o|=0))){A:{g:{I:{C:{e:{B:{a:{if(e){i:{r:{if(o>>>0<=3){for(;;){_=E;t:{Q:{o:{c:{for(;;){if(c=(c=(y=C[I+_|0])-65|0)&(~(90-y)&~c)>>>8&255|y+4&(~(y+65488)&~(57-y))>>>8&255|y+185&(~(y+65439)&~(122-y))>>>8&255|~(1+(16336^y))>>>8&63|~(1+(16340^y))>>>8&62,255!=(0|(c|=(c-1&1+(65470^y))>>>8&255)))break c;if(c=0,!r)break i;if(!sA(r,y))break;if((_=_+1|0)>>>0>=e>>>0)break o}E=_;break i}if(s=c+(s<<6)|0,n>>>0>1)break Q;n=n+6|0;break t}E=(A=E+1|0)>>>0<e>>>0?e:A;break i}if(n=n-2|0,g>>>0<=h>>>0)break r;C[A+h|0]=s>>>n,h=h+1|0}if(c=0,!((E=_+1|0)>>>0<e>>>0))break}break i}for(;;){t:{if(c=(c=(y=C[I+_|0])-65|0)&(~(90-y)&~c)>>>8&255|y+4&(~(y+65488)&~(57-y))>>>8&255|y+185&(~(y+65439)&~(122-y))>>>8&255|~(1+(16288^y))>>>8&63|~(1+(16338^y))>>>8&62,255==(0|(c|=(c-1&1+(65470^y))>>>8&255))){if(c=0,!r)break i;if(sA(r,y)){if((_=_+1|0)>>>0>=e>>>0)break t;continue}E=_;break i}if(s=c+(s<<6)|0,n>>>0<2)n=n+6|0;else{if(n=n-2|0,g>>>0<=h>>>0)break r;C[A+h|0]=s>>>n,h=h+1|0}if(c=0,(E=_+1|0)>>>0>=e>>>0)break i;_=E;continue}break}E=(A=E+1|0)>>>0<e>>>0?e:A;break i}E=_,a[9280]=68,c=1}if(n>>>0>4)break a;A=E}else A=0;if(g=-1,c){E=A;break A}if(~(-1<<n)&s){E=A;break A}if(2&o){o=A;break e}if(n>>>0<2){o=A;break e}if(E=A>>>0>e>>>0?A:e,_=n>>>1|0,!r)break B;for(o=A;;){if((0|o)==(0|E)){c=68;break C}if(61!=(0|(A=C[I+o|0]))){if(!sA(r,A)){c=28,E=o;break C}}else _=_-1|0;if(o=o+1|0,!_)break}break e}g=-1;break A}if(c=68,A>>>0>=e>>>0)break C;if(61!=i[A+I|0]){E=A,c=28;break C}if(o=A+_|0,1!=(0|_)){if((0|(n=A+1|0))==(0|E))break C;if(61!=i[I+n|0]){E=n,c=28;break C}if(2!=(0|_)){if((0|(A=A+2|0))==(0|E))break C;if(c=28,E=A,61!=i[A+I|0])break C}}}if(g=0,r)break I;break g}a[9280]=c;break A}if(!(e>>>0<=o>>>0)){for(;;){if(!sA(r,C[I+o|0]))break g;if((0|(o=o+1|0))==(0|e))break}o=e}}E=o,p=h}return Q?a[Q>>2]=I+E:(0|e)!=(0|E)&&(a[9280]=28,g=-1),t&&(a[t>>2]=p),0|g}ig(),B()},Gc:function(){var A=0;return a[9412]?A=1:(Bg(),xA(37632,16),a[9412]=1,A=0),0|A},Hc:function(A,g,I,e,r){A|=0,g|=0,I|=0,r|=0;var t,Q=0,o=0,c=0;n=t=n-16|0;A:{if(e|=0){if((Q=e-1|0)&e?(o=~I,Q=Q-((I>>>0)%(e>>>0)|0)|0):Q&=o=~I,Q>>>0>=o>>>0)break A;if((I=I+Q|0)>>>0>=r>>>0)g=-1;else for(A&&(a[A>>2]=I+1),A=g+I|0,g=0,C[t+15|0]=0,I=0;o=r=A-I|0,c=i[0|r]&i[t+15|0],r=(I^Q)-1>>>24|0,C[0|o]=c|128&r,C[t+15|0]=r|i[t+15|0],(0|e)!=(0|(I=I+1|0)););}else g=-1;return n=t+16|0,0|g}ig(),B()},Ic:function(A,g,I,C){A|=0,g|=0,I|=0,C|=0;var e,B=0,r=0,t=0,Q=0,o=0;if(a[12+(e=n-16|0)>>2]=0,C-1>>>0<I>>>0){for(o=(B=I-1|0)+g|0,I=0,g=0;Q=((128^(r=i[o-I|0]))-1&a[e+12>>2]-1&t-1)>>>8&1,a[e+12>>2]=a[e+12>>2]|0-Q&I,g|=Q,t|=r,(0|C)!=(0|(I=I+1|0)););a[A>>2]=B-a[e+12>>2],A=(255&g)-1|0}else A=-1;return 0|A},Jc:function(){return 1318},Kc:function(){return 26},Lc:Hg,Mc:Yg,Nc:function(A){var g,I=0,C=0,e=0,B=0,t=0,o=0,c=0,E=0,y=0,_=0,h=0,s=0;n=g=n-16|0;A:{g:{I:{C:{e:{B:{a:{i:{r:{t:{if((A|=0)>>>0<=244){if(3&(I=(B=a[9281])>>>(A=(c=A>>>0<11?16:A+11&504)>>>3|0)|0)){A=37164+(I=(C=A+(1&~I)|0)<<3)|0,I=a[I+37172>>2],(0|A)!=(0|(e=a[I+8>>2]))?(a[e+12>>2]=A,a[A+8>>2]=e):(h=37124,s=Ig(-2,C)&B,a[h>>2]=s),A=I+8|0,C<<=3,a[I+4>>2]=3|C,a[4+(I=I+C|0)>>2]=1|a[I+4>>2];break A}if((E=a[9283])>>>0>=c>>>0)break t;if(I){I=37164+(C=(A=og((0-(C=2<<A)|C)&I<<A))<<3)|0,C=a[C+37172>>2],(0|I)!=(0|(e=a[C+8>>2]))?(a[e+12>>2]=I,a[I+8>>2]=e):(B=Ig(-2,A)&B,a[9281]=B),a[C+4>>2]=3|c,t=(A<<=3)-c|0,a[4+(o=C+c|0)>>2]=1|t,a[A+C>>2]=t,E&&(A=37164+(-8&E)|0,e=a[9286],(I=1<<(E>>>3))&B?I=a[A+8>>2]:(a[9281]=I|B,I=A),a[A+8>>2]=e,a[I+12>>2]=e,a[e+12>>2]=A,a[e+8>>2]=I),A=C+8|0,a[9286]=o,a[9283]=t;break A}if(!(_=a[9282]))break t;for(C=a[37428+(og(_)<<2)>>2],t=(-8&a[C+4>>2])-c|0,I=C;(A=a[I+16>>2])||(A=a[I+20>>2]);)t=(I=(e=(-8&a[A+4>>2])-c|0)>>>0<t>>>0)?e:t,C=I?A:C,I=A;if(y=a[C+24>>2],(0|C)!=(0|(A=a[C+12>>2]))){I=a[C+8>>2],a[I+12>>2]=A,a[A+8>>2]=I;break g}if(I=a[C+20>>2])e=C+20|0;else{if(!(I=a[C+16>>2]))break r;e=C+16|0}for(;o=e,e=(A=I)+20|0,(I=a[A+20>>2])||(e=A+16|0,I=a[A+16>>2]););a[o>>2]=0;break g}if(c=-1,!(A>>>0>4294967231)&&(c=-8&(I=A+11|0),o=a[9282])){E=31,t=0-c|0,A>>>0<=16777204&&(E=62+((c>>>38-(A=Q(I>>>8|0))&1)-(A<<1)|0)|0);Q:{o:{if(I=a[37428+(E<<2)>>2])for(A=0,C=c<<(31!=(0|E)?25-(E>>>1|0):0);;){if(!((B=(-8&a[I+4>>2])-c|0)>>>0>=t>>>0||(e=I,t=B))){t=0,A=I;break o}if(B=a[I+20>>2],I=a[16+((C>>>29&4)+I|0)>>2],A=B?(0|B)==(0|I)?A:B:A,C<<=1,!I)break}else A=0;if(!(A|e)){if(e=0,!(A=(0-(A=2<<E)|A)&o))break t;A=a[37428+(og(A)<<2)>>2]}if(!A)break Q}for(;t=(I=(C=(-8&a[A+4>>2])-c|0)>>>0<t>>>0)?C:t,e=I?A:e,A=(I=a[A+16>>2])||a[A+20>>2];);}if(!(!e|a[9283]-c>>>0<=t>>>0)){if(E=a[e+24>>2],(0|e)!=(0|(A=a[e+12>>2]))){I=a[e+8>>2],a[I+12>>2]=A,a[A+8>>2]=I;break I}if(I=a[e+20>>2])C=e+20|0;else{if(!(I=a[e+16>>2]))break i;C=e+16|0}for(;B=C,C=(A=I)+20|0,(I=a[A+20>>2])||(C=A+16|0,I=a[A+16>>2]););a[B>>2]=0;break I}}}if((e=a[9283])>>>0>=c>>>0){A=a[9286],(I=e-c|0)>>>0>=16?(a[4+(C=A+c|0)>>2]=1|I,a[A+e>>2]=I,a[A+4>>2]=3|c):(a[A+4>>2]=3|e,a[4+(I=A+e|0)>>2]=1|a[I+4>>2],C=0,I=0),a[9283]=I,a[9286]=C,A=A+8|0;break A}if((C=a[9284])>>>0>c>>>0){I=C-c|0,a[9284]=I,C=(A=a[9287])+c|0,a[9287]=C,a[C+4>>2]=1|I,a[A+4>>2]=3|c,A=A+8|0;break A}if(A=0,t=c+47|0,a[9399]?I=a[9401]:(a[9402]=-1,a[9403]=-1,a[9400]=4096,a[9401]=4096,a[9399]=g+12&-16^1431655768,a[9404]=0,a[9392]=0,I=4096),(I=(B=t+I|0)&(o=0-I|0))>>>0<=c>>>0)break A;if((E=a[9391])&&(e=(y=a[9389])+I|0)>>>0<=y>>>0|e>>>0>E>>>0)break A;t:{if(!(4&i[37568])){Q:{o:{c:{E:{if(e=a[9287])for(A=37572;;){if((E=a[A>>2])>>>0<=e>>>0&e>>>0<E+a[A+4>>2]>>>0)break E;if(!(A=a[A+8>>2]))break}if(-1==(0|(C=PA(0))))break Q;if(B=I,(e=(A=a[9400])-1|0)&C&&(B=(I-C|0)+(C+e&0-A)|0),B>>>0<=c>>>0)break Q;if((e=a[9391])&&(A=(o=a[9389])+B|0)>>>0<=o>>>0|A>>>0>e>>>0)break Q;if((0|C)!=(0|(A=PA(B))))break c;break t}if((0|(C=PA(B=o&B-C)))==(a[A>>2]+a[A+4>>2]|0))break o;A=C}if(-1==(0|A))break Q;if(c+48>>>0<=B>>>0){C=A;break t}if(-1==(0|PA(C=(C=a[9401])+(t-B|0)&0-C)))break Q;B=C+B|0,C=A;break t}if(-1!=(0|C))break t}a[9392]=4|a[9392]}if(-1==(0|(C=PA(I)))|-1==(0|(A=PA(0)))|A>>>0<=C>>>0)break e;if((B=A-C|0)>>>0<=c+40>>>0)break e}A=a[9389]+B|0,a[9389]=A,A>>>0>r[9390]&&(a[9390]=A);t:{if(t=a[9287]){for(A=37572;;){if(((I=a[A>>2])+(e=a[A+4>>2])|0)==(0|C))break t;if(!(A=a[A+8>>2]))break}break a}for((A=a[9285])>>>0<=C>>>0&&A||(a[9285]=C),A=0,a[9394]=B,a[9393]=C,a[9289]=-1,a[9290]=a[9399],a[9396]=0;e=37164+(I=A<<3)|0,a[I+37172>>2]=e,a[I+37176>>2]=e,32!=(0|(A=A+1|0)););e=(A=B-40|0)-(I=-8-C&7)|0,a[9284]=e,I=I+C|0,a[9287]=I,a[I+4>>2]=1|e,a[4+(A+C|0)>>2]=40,a[9288]=a[9403];break B}if(8&a[A+12>>2]|C>>>0<=t>>>0|I>>>0>t>>>0)break a;a[A+4>>2]=e+B,I=(A=-8-t&7)+t|0,a[9287]=I,A=(C=a[9284]+B|0)-A|0,a[9284]=A,a[I+4>>2]=1|A,a[4+(C+t|0)>>2]=40,a[9288]=a[9403];break B}A=0;break g}A=0;break I}r[9285]>C>>>0&&(a[9285]=C),e=C+B|0,A=37572;a:{for(;;){if((0|(I=a[A>>2]))!=(0|e)){if(A=a[A+8>>2])continue;break a}break}if(!(8&i[A+12|0]))break C}for(A=37572;!((I=a[A>>2])>>>0<=t>>>0&&(e=I+a[A+4>>2]|0)>>>0>t>>>0);)A=a[A+8>>2];for(o=(A=B-40|0)-(I=-8-C&7)|0,a[9284]=o,I=I+C|0,a[9287]=I,a[I+4>>2]=1|o,a[4+(A+C|0)>>2]=40,a[9288]=a[9403],a[(I=(A=(e+(39-e&7)|0)-47|0)>>>0<t+16>>>0?t:A)+4>>2]=27,A=a[9396],a[I+16>>2]=a[9395],a[I+20>>2]=A,A=a[9394],a[I+8>>2]=a[9393],a[I+12>>2]=A,a[9395]=I+8,a[9394]=B,a[9393]=C,a[9396]=0,A=I+24|0;a[A+4>>2]=7,C=A+8|0,A=A+4|0,C>>>0<e>>>0;);if((0|I)!=(0|t)){a[I+4>>2]=-2&a[I+4>>2],C=I-t|0,a[t+4>>2]=1|C,a[I>>2]=C;a:if(C>>>0<=255)A=37164+(-8&C)|0,(I=a[9281])&(C=1<<(C>>>3))?I=a[A+8>>2]:(a[9281]=I|C,I=A),a[A+8>>2]=t,a[I+12>>2]=t,e=8,C=12;else{A=31,C>>>0<=16777215&&(A=62+((C>>>38-(A=Q(C>>>8|0))&1)-(A<<1)|0)|0),a[t+28>>2]=A,a[t+16>>2]=0,a[t+20>>2]=0,I=37428+(A<<2)|0;i:{if((e=a[9282])&(B=1<<A)){for(A=C<<(31!=(0|A)?25-(A>>>1|0):0),e=a[I>>2];;){if((0|C)==(-8&a[(I=e)+4>>2]))break i;if(e=A>>>29|0,A<<=1,!(e=a[16+(B=(4&e)+I|0)>>2]))break}a[B+16>>2]=t}else a[9282]=e|B,a[I>>2]=t;a[t+24>>2]=I,A=I=t,e=12,C=8;break a}A=a[I+8>>2],a[A+12>>2]=t,a[I+8>>2]=t,a[t+8>>2]=A,A=0,e=12,C=24}a[e+t>>2]=I,a[C+t>>2]=A}}if(!((A=a[9284])>>>0<=c>>>0)){I=A-c|0,a[9284]=I,C=(A=a[9287])+c|0,a[9287]=C,a[C+4>>2]=1|I,a[A+4>>2]=3|c,A=A+8|0;break A}}a[9280]=48,A=0;break A}a[A>>2]=C,a[A+4>>2]=a[A+4>>2]+B,a[4+(E=(-8-C&7)+C|0)>>2]=3|c,o=(B=I+(-8-I&7)|0)-(t=c+E|0)|0;C:if(a[9287]!=(0|B))if(a[9286]!=(0|B)){if(1==(3&(A=a[B+4>>2]))){y=-8&A,C=a[B+12>>2];e:if(A>>>0<=255){if((0|(I=a[B+8>>2]))==(0|C)){h=37124,s=a[9281]&Ig(-2,A>>>3|0),a[h>>2]=s;break e}a[I+12>>2]=C,a[C+8>>2]=I}else{c=a[B+24>>2];B:if((0|C)==(0|B)){a:{if(A=a[B+20>>2])I=B+20|0;else{if(!(A=a[B+16>>2]))break a;I=B+16|0}for(;e=I,C=A,I=A+20|0,(A=a[A+20>>2])||(I=C+16|0,A=a[C+16>>2]););a[e>>2]=0;break B}C=0}else A=a[B+8>>2],a[A+12>>2]=C,a[C+8>>2]=A;if(c){A=a[B+28>>2];B:{if(a[(I=37428+(A<<2)|0)>>2]==(0|B)){if(a[I>>2]=C,C)break B;h=37128,s=a[9282]&Ig(-2,A),a[h>>2]=s;break e}if(a[c+(a[c+16>>2]==(0|B)?16:20)>>2]=C,!C)break e}a[C+24>>2]=c,(A=a[B+16>>2])&&(a[C+16>>2]=A,a[A+24>>2]=C),(A=a[B+20>>2])&&(a[C+20>>2]=A,a[A+24>>2]=C)}}o=o+y|0,A=a[4+(B=B+y|0)>>2]}if(a[B+4>>2]=-2&A,a[t+4>>2]=1|o,a[t+o>>2]=o,o>>>0<=255)A=37164+(-8&o)|0,(I=a[9281])&(C=1<<(o>>>3))?I=a[A+8>>2]:(a[9281]=I|C,I=A),a[A+8>>2]=t,a[I+12>>2]=t,a[t+12>>2]=A,a[t+8>>2]=I;else{C=31,o>>>0<=16777215&&(C=62+((o>>>38-(A=Q(o>>>8|0))&1)-(A<<1)|0)|0),a[t+28>>2]=C,a[t+16>>2]=0,a[t+20>>2]=0,A=37428+(C<<2)|0;e:{if((I=a[9282])&(e=1<<C)){for(C=o<<(31!=(0|C)?25-(C>>>1|0):0),I=a[A>>2];;){if((-8&a[(A=I)+4>>2])==(0|o))break e;if(I=C>>>29|0,C<<=1,!(I=a[16+(e=(4&I)+A|0)>>2]))break}a[e+16>>2]=t}else a[9282]=I|e,a[A>>2]=t;a[t+24>>2]=A,a[t+12>>2]=t,a[t+8>>2]=t;break C}I=a[A+8>>2],a[I+12>>2]=t,a[A+8>>2]=t,a[t+24>>2]=0,a[t+12>>2]=A,a[t+8>>2]=I}}else a[9286]=t,A=a[9283]+o|0,a[9283]=A,a[t+4>>2]=1|A,a[A+t>>2]=A;else a[9287]=t,A=a[9284]+o|0,a[9284]=A,a[t+4>>2]=1|A;A=E+8|0;break A}I:if(E){I=a[e+28>>2];C:{if(a[(C=37428+(I<<2)|0)>>2]==(0|e)){if(a[C>>2]=A,A)break C;o=Ig(-2,I)&o,a[9282]=o;break I}if(a[E+(a[E+16>>2]==(0|e)?16:20)>>2]=A,!A)break I}a[A+24>>2]=E,(I=a[e+16>>2])&&(a[A+16>>2]=I,a[I+24>>2]=A),(I=a[e+20>>2])&&(a[A+20>>2]=I,a[I+24>>2]=A)}I:if(t>>>0<=15)A=t+c|0,a[e+4>>2]=3|A,a[4+(A=A+e|0)>>2]=1|a[A+4>>2];else if(a[e+4>>2]=3|c,a[4+(B=e+c|0)>>2]=1|t,a[t+B>>2]=t,t>>>0<=255)A=37164+(-8&t)|0,(I=a[9281])&(C=1<<(t>>>3))?I=a[A+8>>2]:(a[9281]=I|C,I=A),a[A+8>>2]=B,a[I+12>>2]=B,a[B+12>>2]=A,a[B+8>>2]=I;else{A=31,t>>>0<=16777215&&(A=62+((t>>>38-(A=Q(t>>>8|0))&1)-(A<<1)|0)|0),a[B+28>>2]=A,a[B+16>>2]=0,a[B+20>>2]=0,I=37428+(A<<2)|0;C:{if((C=1<<A)&o){for(A=t<<(31!=(0|A)?25-(A>>>1|0):0),I=a[I>>2];;){if(C=I,(-8&a[I+4>>2])==(0|t))break C;if(o=A>>>29|0,A<<=1,!(I=a[16+(o=I+(4&o)|0)>>2]))break}a[o+16>>2]=B,a[B+24>>2]=C}else a[9282]=C|o,a[I>>2]=B,a[B+24>>2]=I;a[B+12>>2]=B,a[B+8>>2]=B;break I}A=a[C+8>>2],a[A+12>>2]=B,a[C+8>>2]=B,a[B+24>>2]=0,a[B+12>>2]=C,a[B+8>>2]=A}A=e+8|0;break A}g:if(y){I=a[C+28>>2];I:{if(a[(e=37428+(I<<2)|0)>>2]==(0|C)){if(a[e>>2]=A,A)break I;h=37128,s=Ig(-2,I)&_,a[h>>2]=s;break g}if(a[y+(a[y+16>>2]==(0|C)?16:20)>>2]=A,!A)break g}a[A+24>>2]=y,(I=a[C+16>>2])&&(a[A+16>>2]=I,a[I+24>>2]=A),(I=a[C+20>>2])&&(a[A+20>>2]=I,a[I+24>>2]=A)}t>>>0<=15?(A=t+c|0,a[C+4>>2]=3|A,a[4+(A=A+C|0)>>2]=1|a[A+4>>2]):(a[C+4>>2]=3|c,a[4+(o=C+c|0)>>2]=1|t,a[t+o>>2]=t,E&&(A=37164+(-8&E)|0,e=a[9286],(I=1<<(E>>>3))&B?I=a[A+8>>2]:(a[9281]=I|B,I=A),a[A+8>>2]=e,a[I+12>>2]=e,a[e+12>>2]=A,a[e+8>>2]=I),a[9286]=o,a[9283]=t),A=C+8|0}return n=g+16|0,0|A},Oc:function(A){var g=0,I=0,C=0,e=0,B=0,i=0,t=0,o=0,c=0;A:if(A|=0){B=(C=A-8|0)+(A=-8&(g=a[A-4>>2]))|0;g:if(!(1&g)){if(!(2&g))break A;if((C=C-(g=a[C>>2])|0)>>>0<r[9285])break A;A=A+g|0;I:{C:{e:{if(a[9286]!=(0|C)){if(I=a[C+12>>2],g>>>0<=255){if((0|(e=a[C+8>>2]))!=(0|I))break e;o=37124,c=a[9281]&Ig(-2,g>>>3|0),a[o>>2]=c;break g}if(t=a[C+24>>2],(0|I)!=(0|C)){g=a[C+8>>2],a[g+12>>2]=I,a[I+8>>2]=g;break I}if(e=a[C+20>>2])g=C+20|0;else{if(!(e=a[C+16>>2]))break C;g=C+16|0}for(;i=g,g=(I=e)+20|0,(e=a[I+20>>2])||(g=I+16|0,e=a[I+16>>2]););a[i>>2]=0;break I}if(3&~(g=a[B+4>>2]))break g;return a[9283]=A,a[B+4>>2]=-2&g,a[C+4>>2]=1|A,void(a[B>>2]=A)}a[e+12>>2]=I,a[I+8>>2]=e;break g}I=0}if(t){g=a[C+28>>2];I:{if(a[(e=37428+(g<<2)|0)>>2]==(0|C)){if(a[e>>2]=I,I)break I;o=37128,c=a[9282]&Ig(-2,g),a[o>>2]=c;break g}if(a[t+(a[t+16>>2]==(0|C)?16:20)>>2]=I,!I)break g}a[I+24>>2]=t,(g=a[C+16>>2])&&(a[I+16>>2]=g,a[g+24>>2]=I),(g=a[C+20>>2])&&(a[I+20>>2]=g,a[g+24>>2]=I)}}if(!(C>>>0>=B>>>0)&&1&(g=a[B+4>>2])){g:{I:{C:{e:{if(!(2&g)){if((0|B)==a[9287]){if(a[9287]=C,A=a[9284]+A|0,a[9284]=A,a[C+4>>2]=1|A,a[9286]!=(0|C))break A;return a[9283]=0,void(a[9286]=0)}if((0|B)==a[9286])return a[9286]=C,A=a[9283]+A|0,a[9283]=A,a[C+4>>2]=1|A,void(a[A+C>>2]=A);if(A=(-8&g)+A|0,I=a[B+12>>2],g>>>0<=255){if((0|(e=a[B+8>>2]))==(0|I)){o=37124,c=a[9281]&Ig(-2,g>>>3|0),a[o>>2]=c;break I}a[e+12>>2]=I,a[I+8>>2]=e;break I}if(t=a[B+24>>2],(0|I)!=(0|B)){g=a[B+8>>2],a[g+12>>2]=I,a[I+8>>2]=g;break C}if(e=a[B+20>>2])g=B+20|0;else{if(!(e=a[B+16>>2]))break e;g=B+16|0}for(;i=g,g=(I=e)+20|0,(e=a[I+20>>2])||(g=I+16|0,e=a[I+16>>2]););a[i>>2]=0;break C}a[B+4>>2]=-2&g,a[C+4>>2]=1|A,a[A+C>>2]=A;break g}I=0}if(t){g=a[B+28>>2];C:{if((0|B)==a[(e=37428+(g<<2)|0)>>2]){if(a[e>>2]=I,I)break C;o=37128,c=a[9282]&Ig(-2,g),a[o>>2]=c;break I}if(a[t+((0|B)==a[t+16>>2]?16:20)>>2]=I,!I)break I}a[I+24>>2]=t,(g=a[B+16>>2])&&(a[I+16>>2]=g,a[g+24>>2]=I),(g=a[B+20>>2])&&(a[I+20>>2]=g,a[g+24>>2]=I)}}if(a[C+4>>2]=1|A,a[A+C>>2]=A,a[9286]==(0|C))return void(a[9283]=A)}if(A>>>0<=255)return g=37164+(-8&A)|0,(e=a[9281])&(A=1<<(A>>>3))?A=a[g+8>>2]:(a[9281]=A|e,A=g),a[g+8>>2]=C,a[A+12>>2]=C,a[C+12>>2]=g,void(a[C+8>>2]=A);I=31,A>>>0<=16777215&&(I=62+((A>>>38-(g=Q(A>>>8|0))&1)-(g<<1)|0)|0),a[C+28>>2]=I,a[C+16>>2]=0,a[C+20>>2]=0,i=37428+(I<<2)|0;g:{I:{if((g=a[9282])&(e=1<<I)){for(I=A<<(31!=(0|I)?25-(I>>>1|0):0),g=a[i>>2];;){if(e=g,(-8&a[g+4>>2])==(0|A))break I;if(g=I>>>29|0,I<<=1,!(g=a[(i=16+((4&g)+e|0)|0)>>2]))break}I=24,g=e}else a[9282]=g|e,I=24,g=i;e=C,B=C,A=8;break g}g=a[e+8>>2],a[g+12>>2]=C,I=8,i=e+8|0,B=0,A=24}a[i>>2]=C,a[I+C>>2]=g,a[C+12>>2]=e,a[A+C>>2]=B,A=a[9289]-1|0,a[9289]=A||-1}}},Pc:Jg}}(A)}(g)},instantiate:function(A,g){return{then:function(I){var C=new _.Module(A);I({instance:new _.Instance(C,g)})}}},RuntimeError:Error};c=[];var n,h,s,p,f,D,w,k=!1;function d(){var A=y.buffer;e.HEAP8=n=new Int8Array(A),e.HEAP16=s=new Int16Array(A),e.HEAPU8=h=new Uint8Array(A),e.HEAPU16=new Uint16Array(A),e.HEAP32=p=new Int32Array(A),e.HEAPU32=f=new Uint32Array(A),e.HEAPF32=D=new Float32Array(A),e.HEAPF64=w=new Float64Array(A)}var l=[],u=[],v=[],S=0,b=null,M=null;function F(A){throw e.onAbort?.(A),E(A="Aborted("+A+")"),k=!0,A+=". Build with -sASSERTIONS for more info.",new _.RuntimeError(A)}var N,K=A=>A.startsWith("file://");var Y={36304:()=>e.getRandomValue(),36340:()=>{if(void 0===e.getRandomValue)try{var A="object"==typeof window?window:self,g=void 0!==A.crypto?A.crypto:A.msCrypto;g=void 0===g?C:g;var I=function(){var A=new Uint32Array(1);return g.getRandomValues(A),A[0]>>>0};I(),e.getRandomValue=I}catch(A){try{var C=require("crypto"),B=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};B(),e.getRandomValue=B}catch(A){throw"No secure random number generator found"}}}},H=A=>{for(;A.length>0;)A.shift()(e)};e.noExitRuntime;var G,J="undefined"!=typeof TextDecoder?new TextDecoder:void 0,U=(A,g)=>A?((A,g,I)=>{for(var C=g+I,e=g;A[e]&&!(e>=C);)++e;if(e-g>16&&A.buffer&&J)return J.decode(A.subarray(g,e));for(var B="";g<e;){var a=A[g++];if(128&a){var i=63&A[g++];if(192!=(224&a)){var r=63&A[g++];if((a=224==(240&a)?(15&a)<<12|i<<6|r:(7&a)<<18|i<<12|r<<6|63&A[g++])<65536)B+=String.fromCharCode(a);else{var t=a-65536;B+=String.fromCharCode(55296|t>>10,56320|1023&t)}}else B+=String.fromCharCode((31&a)<<6|i)}else B+=String.fromCharCode(a)}return B})(h,A,g):"",x=[],m=A=>{var g=(A-y.buffer.byteLength+65535)/65536;try{return y.grow(g),d(),1}catch(A){}},P={b:(A,g,I,C)=>{F(`Assertion failed: ${U(A)}, at: `+[g?U(g):"unknown filename",I,C?U(C):"unknown function"])},c:()=>{F("")},a:(A,g,I)=>((A,g,I)=>{var C=((A,g)=>{var I;for(x.length=0;I=h[A++];){var C=105!=I;g+=(C&=112!=I)&&g%8?4:0,x.push(112==I?f[g>>2]:105==I?p[g>>2]:w[g>>3]),g+=C?8:4}return x})(g,I);return Y[A](...C)})(A,g,I),d:A=>{var g=h.length,I=2147483648;if((A>>>=0)>I)return!1;for(var C,e=1;e<=4;e*=2){var B=g*(1+.2/e);B=Math.min(B,A+100663296);var a=Math.min(I,(C=Math.max(A,B))+(65536-C%65536)%65536);if(m(a))return!0}return!1}},R=function(){var A={a:P};function g(A,g){var I;return R=A.exports,y=R.e,d(),I=R.f,u.unshift(I),function(A){if(S--,e.monitorRunDependencies?.(S),0==S&&(null!==b&&(clearInterval(b),b=null),M)){var g=M;M=null,g()}}(),R}if(S++,e.monitorRunDependencies?.(S),e.instantiateWasm)try{return e.instantiateWasm(A,g)}catch(A){return E(`Module.instantiateWasm callback failed with error: ${A}`),!1}return N||(N="<<< WASM_BINARY_FILE >>>"),function(A,g,C){(function(A){return Promise.resolve().then((()=>function(A){if(A==N&&c)return new Uint8Array(c);if(I)return I(A);throw"both async and sync fetching of the wasm failed"}(A)))})(A).then((A=>_.instantiate(A,g))).then(C,(A=>{E(`failed to asynchronously prepare wasm: ${A}`),F(A)}))}(N,A,(function(A){g(A.instance)})),{}}();function L(){function A(){G||(G=!0,e.calledRun=!0,k||(H(u),e.onRuntimeInitialized?.(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)A=e.postRun.shift(),v.unshift(A);var A;H(v)}()))}S>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)A=e.preRun.shift(),l.unshift(A);var A;H(l)}(),S>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),A()}),1)):A()))}if(e._crypto_aead_aegis128l_keybytes=()=>(e._crypto_aead_aegis128l_keybytes=R.g)(),e._crypto_aead_aegis128l_nsecbytes=()=>(e._crypto_aead_aegis128l_nsecbytes=R.h)(),e._crypto_aead_aegis128l_npubbytes=()=>(e._crypto_aead_aegis128l_npubbytes=R.i)(),e._crypto_aead_aegis128l_abytes=()=>(e._crypto_aead_aegis128l_abytes=R.j)(),e._crypto_aead_aegis128l_messagebytes_max=()=>(e._crypto_aead_aegis128l_messagebytes_max=R.k)(),e._crypto_aead_aegis128l_keygen=A=>(e._crypto_aead_aegis128l_keygen=R.l)(A),e._crypto_aead_aegis128l_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_encrypt=R.m)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis128l_encrypt_detached=R.n)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis128l_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt=R.o)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt_detached=R.p)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_keybytes=()=>(e._crypto_aead_aegis256_keybytes=R.q)(),e._crypto_aead_aegis256_nsecbytes=()=>(e._crypto_aead_aegis256_nsecbytes=R.r)(),e._crypto_aead_aegis256_npubbytes=()=>(e._crypto_aead_aegis256_npubbytes=R.s)(),e._crypto_aead_aegis256_abytes=()=>(e._crypto_aead_aegis256_abytes=R.t)(),e._crypto_aead_aegis256_messagebytes_max=()=>(e._crypto_aead_aegis256_messagebytes_max=R.u)(),e._crypto_aead_aegis256_keygen=A=>(e._crypto_aead_aegis256_keygen=R.v)(A),e._crypto_aead_aegis256_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_encrypt=R.w)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis256_encrypt_detached=R.x)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis256_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt=R.y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt_detached=R.z)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aes256gcm_is_available=()=>(e._crypto_aead_aes256gcm_is_available=R.A)(),e._crypto_aead_chacha20poly1305_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_encrypt_detached=R.B)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_encrypt=R.C)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=R.D)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt=R.E)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt_detached=R.F)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt=R.G)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=R.H)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt=R.I)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_chacha20poly1305_ietf_keybytes=R.J)(),e._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_npubbytes=R.K)(),e._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_nsecbytes=R.L)(),e._crypto_aead_chacha20poly1305_ietf_abytes=()=>(e._crypto_aead_chacha20poly1305_ietf_abytes=R.M)(),e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=R.N)(),e._crypto_aead_chacha20poly1305_ietf_keygen=A=>(e._crypto_aead_chacha20poly1305_ietf_keygen=R.O)(A),e._crypto_aead_chacha20poly1305_keybytes=()=>(e._crypto_aead_chacha20poly1305_keybytes=R.P)(),e._crypto_aead_chacha20poly1305_npubbytes=()=>(e._crypto_aead_chacha20poly1305_npubbytes=R.Q)(),e._crypto_aead_chacha20poly1305_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_nsecbytes=R.R)(),e._crypto_aead_chacha20poly1305_abytes=()=>(e._crypto_aead_chacha20poly1305_abytes=R.S)(),e._crypto_aead_chacha20poly1305_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_messagebytes_max=R.T)(),e._crypto_aead_chacha20poly1305_keygen=A=>(e._crypto_aead_chacha20poly1305_keygen=R.U)(A),e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=R.V)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_xchacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt=R.W)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=R.X)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt=R.Y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_keybytes=R.Z)(),e._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_npubbytes=R._)(),e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=R.$)(),e._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_abytes=R.aa)(),e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=R.ba)(),e._crypto_aead_xchacha20poly1305_ietf_keygen=A=>(e._crypto_aead_xchacha20poly1305_ietf_keygen=R.ca)(A),e._crypto_auth_bytes=()=>(e._crypto_auth_bytes=R.da)(),e._crypto_auth_keybytes=()=>(e._crypto_auth_keybytes=R.ea)(),e._crypto_auth=(A,g,I,C,B)=>(e._crypto_auth=R.fa)(A,g,I,C,B),e._crypto_auth_verify=(A,g,I,C,B)=>(e._crypto_auth_verify=R.ga)(A,g,I,C,B),e._crypto_auth_keygen=A=>(e._crypto_auth_keygen=R.ha)(A),e._crypto_box_seedbytes=()=>(e._crypto_box_seedbytes=R.ia)(),e._crypto_box_publickeybytes=()=>(e._crypto_box_publickeybytes=R.ja)(),e._crypto_box_secretkeybytes=()=>(e._crypto_box_secretkeybytes=R.ka)(),e._crypto_box_beforenmbytes=()=>(e._crypto_box_beforenmbytes=R.la)(),e._crypto_box_noncebytes=()=>(e._crypto_box_noncebytes=R.ma)(),e._crypto_box_macbytes=()=>(e._crypto_box_macbytes=R.na)(),e._crypto_box_messagebytes_max=()=>(e._crypto_box_messagebytes_max=R.oa)(),e._crypto_box_seed_keypair=(A,g,I)=>(e._crypto_box_seed_keypair=R.pa)(A,g,I),e._crypto_box_keypair=(A,g)=>(e._crypto_box_keypair=R.qa)(A,g),e._crypto_box_beforenm=(A,g,I)=>(e._crypto_box_beforenm=R.ra)(A,g,I),e._crypto_box_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_detached_afternm=R.sa)(A,g,I,C,B,a,i),e._crypto_box_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_detached=R.ta)(A,g,I,C,B,a,i,r),e._crypto_box_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_easy_afternm=R.ua)(A,g,I,C,B,a),e._crypto_box_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_easy=R.va)(A,g,I,C,B,a,i),e._crypto_box_open_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_open_detached_afternm=R.wa)(A,g,I,C,B,a,i),e._crypto_box_open_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_open_detached=R.xa)(A,g,I,C,B,a,i,r),e._crypto_box_open_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_open_easy_afternm=R.ya)(A,g,I,C,B,a),e._crypto_box_open_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_open_easy=R.za)(A,g,I,C,B,a,i),e._crypto_box_seal=(A,g,I,C,B)=>(e._crypto_box_seal=R.Aa)(A,g,I,C,B),e._crypto_box_seal_open=(A,g,I,C,B,a)=>(e._crypto_box_seal_open=R.Ba)(A,g,I,C,B,a),e._crypto_box_sealbytes=()=>(e._crypto_box_sealbytes=R.Ca)(),e._crypto_generichash_bytes_min=()=>(e._crypto_generichash_bytes_min=R.Da)(),e._crypto_generichash_bytes_max=()=>(e._crypto_generichash_bytes_max=R.Ea)(),e._crypto_generichash_bytes=()=>(e._crypto_generichash_bytes=R.Fa)(),e._crypto_generichash_keybytes_min=()=>(e._crypto_generichash_keybytes_min=R.Ga)(),e._crypto_generichash_keybytes_max=()=>(e._crypto_generichash_keybytes_max=R.Ha)(),e._crypto_generichash_keybytes=()=>(e._crypto_generichash_keybytes=R.Ia)(),e._crypto_generichash_statebytes=()=>(e._crypto_generichash_statebytes=R.Ja)(),e._crypto_generichash=(A,g,I,C,B,a,i)=>(e._crypto_generichash=R.Ka)(A,g,I,C,B,a,i),e._crypto_generichash_init=(A,g,I,C)=>(e._crypto_generichash_init=R.La)(A,g,I,C),e._crypto_generichash_update=(A,g,I,C)=>(e._crypto_generichash_update=R.Ma)(A,g,I,C),e._crypto_generichash_final=(A,g,I)=>(e._crypto_generichash_final=R.Na)(A,g,I),e._crypto_generichash_keygen=A=>(e._crypto_generichash_keygen=R.Oa)(A),e._crypto_hash_bytes=()=>(e._crypto_hash_bytes=R.Pa)(),e._crypto_hash=(A,g,I,C)=>(e._crypto_hash=R.Qa)(A,g,I,C),e._crypto_kdf_bytes_min=()=>(e._crypto_kdf_bytes_min=R.Ra)(),e._crypto_kdf_bytes_max=()=>(e._crypto_kdf_bytes_max=R.Sa)(),e._crypto_kdf_contextbytes=()=>(e._crypto_kdf_contextbytes=R.Ta)(),e._crypto_kdf_keybytes=()=>(e._crypto_kdf_keybytes=R.Ua)(),e._crypto_kdf_derive_from_key=(A,g,I,C,B,a)=>(e._crypto_kdf_derive_from_key=R.Va)(A,g,I,C,B,a),e._crypto_kdf_keygen=A=>(e._crypto_kdf_keygen=R.Wa)(A),e._crypto_kdf_hkdf_sha256_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_init=R.Xa)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_update=R.Ya)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha256_extract_final=R.Za)(A,g),e._crypto_kdf_hkdf_sha256_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_extract=R._a)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keygen=A=>(e._crypto_kdf_hkdf_sha256_keygen=R.$a)(A),e._crypto_kdf_hkdf_sha256_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_expand=R.ab)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keybytes=()=>(e._crypto_kdf_hkdf_sha256_keybytes=R.bb)(),e._crypto_kdf_hkdf_sha256_bytes_min=()=>(e._crypto_kdf_hkdf_sha256_bytes_min=R.cb)(),e._crypto_kdf_hkdf_sha256_bytes_max=()=>(e._crypto_kdf_hkdf_sha256_bytes_max=R.db)(),e._crypto_kdf_hkdf_sha256_statebytes=()=>(e._crypto_kdf_hkdf_sha256_statebytes=R.eb)(),e._crypto_kdf_hkdf_sha512_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_init=R.fb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_update=R.gb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha512_extract_final=R.hb)(A,g),e._crypto_kdf_hkdf_sha512_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_extract=R.ib)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keygen=A=>(e._crypto_kdf_hkdf_sha512_keygen=R.jb)(A),e._crypto_kdf_hkdf_sha512_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_expand=R.kb)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keybytes=()=>(e._crypto_kdf_hkdf_sha512_keybytes=R.lb)(),e._crypto_kdf_hkdf_sha512_bytes_min=()=>(e._crypto_kdf_hkdf_sha512_bytes_min=R.mb)(),e._crypto_kdf_hkdf_sha512_bytes_max=()=>(e._crypto_kdf_hkdf_sha512_bytes_max=R.nb)(),e._crypto_kdf_hkdf_sha512_statebytes=()=>(e._crypto_kdf_hkdf_sha512_statebytes=R.ob)(),e._crypto_kx_seed_keypair=(A,g,I)=>(e._crypto_kx_seed_keypair=R.pb)(A,g,I),e._crypto_kx_keypair=(A,g)=>(e._crypto_kx_keypair=R.qb)(A,g),e._crypto_kx_client_session_keys=(A,g,I,C,B)=>(e._crypto_kx_client_session_keys=R.rb)(A,g,I,C,B),e._crypto_kx_server_session_keys=(A,g,I,C,B)=>(e._crypto_kx_server_session_keys=R.sb)(A,g,I,C,B),e._crypto_kx_publickeybytes=()=>(e._crypto_kx_publickeybytes=R.tb)(),e._crypto_kx_secretkeybytes=()=>(e._crypto_kx_secretkeybytes=R.ub)(),e._crypto_kx_seedbytes=()=>(e._crypto_kx_seedbytes=R.vb)(),e._crypto_kx_sessionkeybytes=()=>(e._crypto_kx_sessionkeybytes=R.wb)(),e._crypto_scalarmult_base=(A,g)=>(e._crypto_scalarmult_base=R.xb)(A,g),e._crypto_scalarmult=(A,g,I)=>(e._crypto_scalarmult=R.yb)(A,g,I),e._crypto_scalarmult_bytes=()=>(e._crypto_scalarmult_bytes=R.zb)(),e._crypto_scalarmult_scalarbytes=()=>(e._crypto_scalarmult_scalarbytes=R.Ab)(),e._crypto_secretbox_keybytes=()=>(e._crypto_secretbox_keybytes=R.Bb)(),e._crypto_secretbox_noncebytes=()=>(e._crypto_secretbox_noncebytes=R.Cb)(),e._crypto_secretbox_macbytes=()=>(e._crypto_secretbox_macbytes=R.Db)(),e._crypto_secretbox_messagebytes_max=()=>(e._crypto_secretbox_messagebytes_max=R.Eb)(),e._crypto_secretbox_keygen=A=>(e._crypto_secretbox_keygen=R.Fb)(A),e._crypto_secretbox_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_detached=R.Gb)(A,g,I,C,B,a,i),e._crypto_secretbox_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_easy=R.Hb)(A,g,I,C,B,a),e._crypto_secretbox_open_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_open_detached=R.Ib)(A,g,I,C,B,a,i),e._crypto_secretbox_open_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_open_easy=R.Jb)(A,g,I,C,B,a),e._crypto_secretstream_xchacha20poly1305_keygen=A=>(e._crypto_secretstream_xchacha20poly1305_keygen=R.Kb)(A),e._crypto_secretstream_xchacha20poly1305_init_push=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_push=R.Lb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_init_pull=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_pull=R.Mb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_rekey=A=>(e._crypto_secretstream_xchacha20poly1305_rekey=R.Nb)(A),e._crypto_secretstream_xchacha20poly1305_push=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_push=R.Ob)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_pull=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_pull=R.Pb)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_statebytes=()=>(e._crypto_secretstream_xchacha20poly1305_statebytes=R.Qb)(),e._crypto_secretstream_xchacha20poly1305_abytes=()=>(e._crypto_secretstream_xchacha20poly1305_abytes=R.Rb)(),e._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(e._crypto_secretstream_xchacha20poly1305_headerbytes=R.Sb)(),e._crypto_secretstream_xchacha20poly1305_keybytes=()=>(e._crypto_secretstream_xchacha20poly1305_keybytes=R.Tb)(),e._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(e._crypto_secretstream_xchacha20poly1305_messagebytes_max=R.Ub)(),e._crypto_secretstream_xchacha20poly1305_tag_message=()=>(e._crypto_secretstream_xchacha20poly1305_tag_message=R.Vb)(),e._crypto_secretstream_xchacha20poly1305_tag_push=()=>(e._crypto_secretstream_xchacha20poly1305_tag_push=R.Wb)(),e._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(e._crypto_secretstream_xchacha20poly1305_tag_rekey=R.Xb)(),e._crypto_secretstream_xchacha20poly1305_tag_final=()=>(e._crypto_secretstream_xchacha20poly1305_tag_final=R.Yb)(),e._crypto_shorthash_bytes=()=>(e._crypto_shorthash_bytes=R.Zb)(),e._crypto_shorthash_keybytes=()=>(e._crypto_shorthash_keybytes=R._b)(),e._crypto_shorthash=(A,g,I,C,B)=>(e._crypto_shorthash=R.$b)(A,g,I,C,B),e._crypto_shorthash_keygen=A=>(e._crypto_shorthash_keygen=R.ac)(A),e._crypto_sign_statebytes=()=>(e._crypto_sign_statebytes=R.bc)(),e._crypto_sign_bytes=()=>(e._crypto_sign_bytes=R.cc)(),e._crypto_sign_seedbytes=()=>(e._crypto_sign_seedbytes=R.dc)(),e._crypto_sign_publickeybytes=()=>(e._crypto_sign_publickeybytes=R.ec)(),e._crypto_sign_secretkeybytes=()=>(e._crypto_sign_secretkeybytes=R.fc)(),e._crypto_sign_messagebytes_max=()=>(e._crypto_sign_messagebytes_max=R.gc)(),e._crypto_sign_seed_keypair=(A,g,I)=>(e._crypto_sign_seed_keypair=R.hc)(A,g,I),e._crypto_sign_keypair=(A,g)=>(e._crypto_sign_keypair=R.ic)(A,g),e._crypto_sign=(A,g,I,C,B,a)=>(e._crypto_sign=R.jc)(A,g,I,C,B,a),e._crypto_sign_open=(A,g,I,C,B,a)=>(e._crypto_sign_open=R.kc)(A,g,I,C,B,a),e._crypto_sign_detached=(A,g,I,C,B,a)=>(e._crypto_sign_detached=R.lc)(A,g,I,C,B,a),e._crypto_sign_verify_detached=(A,g,I,C,B)=>(e._crypto_sign_verify_detached=R.mc)(A,g,I,C,B),e._crypto_sign_init=A=>(e._crypto_sign_init=R.nc)(A),e._crypto_sign_update=(A,g,I,C)=>(e._crypto_sign_update=R.oc)(A,g,I,C),e._crypto_sign_final_create=(A,g,I,C)=>(e._crypto_sign_final_create=R.pc)(A,g,I,C),e._crypto_sign_final_verify=(A,g,I)=>(e._crypto_sign_final_verify=R.qc)(A,g,I),e._crypto_sign_ed25519_pk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_pk_to_curve25519=R.rc)(A,g),e._crypto_sign_ed25519_sk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_sk_to_curve25519=R.sc)(A,g),e._randombytes_random=()=>(e._randombytes_random=R.tc)(),e._randombytes_stir=()=>(e._randombytes_stir=R.uc)(),e._randombytes_uniform=A=>(e._randombytes_uniform=R.vc)(A),e._randombytes_buf=(A,g)=>(e._randombytes_buf=R.wc)(A,g),e._randombytes_buf_deterministic=(A,g,I)=>(e._randombytes_buf_deterministic=R.xc)(A,g,I),e._randombytes_seedbytes=()=>(e._randombytes_seedbytes=R.yc)(),e._randombytes_close=()=>(e._randombytes_close=R.zc)(),e._randombytes=(A,g,I)=>(e._randombytes=R.Ac)(A,g,I),e._sodium_bin2hex=(A,g,I,C)=>(e._sodium_bin2hex=R.Bc)(A,g,I,C),e._sodium_hex2bin=(A,g,I,C,B,a,i)=>(e._sodium_hex2bin=R.Cc)(A,g,I,C,B,a,i),e._sodium_base64_encoded_len=(A,g)=>(e._sodium_base64_encoded_len=R.Dc)(A,g),e._sodium_bin2base64=(A,g,I,C,B)=>(e._sodium_bin2base64=R.Ec)(A,g,I,C,B),e._sodium_base642bin=(A,g,I,C,B,a,i,r)=>(e._sodium_base642bin=R.Fc)(A,g,I,C,B,a,i,r),e._sodium_init=()=>(e._sodium_init=R.Gc)(),e._sodium_pad=(A,g,I,C,B)=>(e._sodium_pad=R.Hc)(A,g,I,C,B),e._sodium_unpad=(A,g,I,C)=>(e._sodium_unpad=R.Ic)(A,g,I,C),e._sodium_version_string=()=>(e._sodium_version_string=R.Jc)(),e._sodium_library_version_major=()=>(e._sodium_library_version_major=R.Kc)(),e._sodium_library_version_minor=()=>(e._sodium_library_version_minor=R.Lc)(),e._sodium_library_minimal=()=>(e._sodium_library_minimal=R.Mc)(),e._malloc=A=>(e._malloc=R.Nc)(A),e._free=A=>(e._free=R.Oc)(A),e.setValue=function(A,g,I="i8"){switch(I.endsWith("*")&&(I="*"),I){case"i1":case"i8":n[A]=g;break;case"i16":s[A>>1]=g;break;case"i32":p[A>>2]=g;break;case"i64":F("to do setValue(i64) use WASM_BIGINT");case"float":D[A>>2]=g;break;case"double":w[A>>3]=g;break;case"*":f[A>>2]=g;break;default:F(`invalid type for setValue: ${I}`)}},e.getValue=function(A,g="i8"){switch(g.endsWith("*")&&(g="*"),g){case"i1":case"i8":return n[A];case"i16":return s[A>>1];case"i32":return p[A>>2];case"i64":F("to do getValue(i64) use WASM_BIGINT");case"float":return D[A>>2];case"double":return w[A>>3];case"*":return f[A>>2];default:F(`invalid type for getValue: ${g}`)}},e.UTF8ToString=U,M=function A(){G||L(),G||(M=A)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();L()}))};var I,e=void 0!==e?e:{},B="object"==typeof window,a="function"==typeof importScripts,i="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,r=Object.assign({},e),t="";if(i){var Q=require("fs"),o=require("path");t=__dirname+"/",I=A=>(A=K(A)?new URL(A):o.normalize(A),Q.readFileSync(A)),!e.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),"undefined"!=typeof module&&(module.exports=e)}else(B||a)&&(a?t=self.location.href:"undefined"!=typeof document&&document.currentScript&&(t=document.currentScript.src),t=t.startsWith("blob:")?"":t.substr(0,t.replace(/[?#].*/,"").lastIndexOf("/")+1),a&&(I=A=>{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}));e.print;var c,E,y=e.printErr||void 0;Object.assign(e,r),r=null,e.arguments&&e.arguments,e.thisProgram&&e.thisProgram,e.quit&&e.quit,e.wasmBinary&&(c=e.wasmBinary);var _,n,h,s,p,f,D,w=!1;function k(){var A=E.buffer;e.HEAP8=_=new Int8Array(A),e.HEAP16=h=new Int16Array(A),e.HEAPU8=n=new Uint8Array(A),e.HEAPU16=new Uint16Array(A),e.HEAP32=s=new Int32Array(A),e.HEAPU32=p=new Uint32Array(A),e.HEAPF32=f=new Float32Array(A),e.HEAPF64=D=new Float64Array(A)}var d=[],l=[],u=[],v=0,S=null,b=null;function M(A){throw e.onAbort?.(A),y(A="Aborted("+A+")"),w=!0,A+=". Build with -sASSERTIONS for more info.",new WebAssembly.RuntimeError(A)}var F,N="data:application/octet-stream;base64,",K=A=>A.startsWith("file://");function Y(A){return Promise.resolve().then((()=>function(A){if(A==F&&c)return new Uint8Array(c);var g=function(A){if((A=>A.startsWith(N))(A))return function(A){if(void 0!==i&&i){var g=Buffer.from(A,"base64");return new Uint8Array(g.buffer,g.byteOffset,g.length)}for(var I=atob(A),C=new Uint8Array(I.length),e=0;e<I.length;++e)C[e]=I.charCodeAt(e);return C}(A.slice(37))}(A);if(g)return g;if(I)return I(A);throw"both async and sync fetching of the wasm failed"}(A)))}var H={36304:()=>e.getRandomValue(),36340:()=>{if(void 0===e.getRandomValue)try{var A="object"==typeof window?window:self,g=void 0!==A.crypto?A.crypto:A.msCrypto;g=void 0===g?C:g;var I=function(){var A=new Uint32Array(1);return g.getRandomValues(A),A[0]>>>0};I(),e.getRandomValue=I}catch(A){try{var C=require("crypto"),B=function(){var A=C.randomBytes(4);return(A[0]<<24|A[1]<<16|A[2]<<8|A[3])>>>0};B(),e.getRandomValue=B}catch(A){throw"No secure random number generator found"}}}},G=A=>{for(;A.length>0;)A.shift()(e)};e.noExitRuntime;var J,U="undefined"!=typeof TextDecoder?new TextDecoder:void 0,x=(A,g)=>A?((A,g,I)=>{for(var C=g+I,e=g;A[e]&&!(e>=C);)++e;if(e-g>16&&A.buffer&&U)return U.decode(A.subarray(g,e));for(var B="";g<e;){var a=A[g++];if(128&a){var i=63&A[g++];if(192!=(224&a)){var r=63&A[g++];if((a=224==(240&a)?(15&a)<<12|i<<6|r:(7&a)<<18|i<<12|r<<6|63&A[g++])<65536)B+=String.fromCharCode(a);else{var t=a-65536;B+=String.fromCharCode(55296|t>>10,56320|1023&t)}}else B+=String.fromCharCode((31&a)<<6|i)}else B+=String.fromCharCode(a)}return B})(n,A,g):"",m=[],P=A=>{var g=(A-E.buffer.byteLength+65535)/65536;try{return E.grow(g),k(),1}catch(A){}},R={b:(A,g,I,C)=>{M(`Assertion failed: ${x(A)}, at: `+[g?x(g):"unknown filename",I,C?x(C):"unknown function"])},c:()=>{M("")},d:(A,g,I)=>n.copyWithin(A,g,g+I),a:(A,g,I)=>((A,g,I)=>{var C=((A,g)=>{var I;for(m.length=0;I=n[A++];){var C=105!=I;g+=(C&=112!=I)&&g%8?4:0,m.push(112==I?p[g>>2]:105==I?s[g>>2]:D[g>>3]),g+=C?8:4}return m})(g,I);return H[A](...C)})(A,g,I),e:A=>{var g=n.length,I=2147483648;if((A>>>=0)>I)return!1;for(var C,e=1;e<=4;e*=2){var B=g*(1+.2/e);B=Math.min(B,A+100663296);var a=Math.min(I,(C=Math.max(A,B))+(65536-C%65536)%65536);if(P(a))return!0}return!1}},L=function(){var A,g={a:R};function I(A,g){return L=A.exports,E=L.f,k(),function(A){if(v--,e.monitorRunDependencies?.(v),0==v&&(null!==S&&(clearInterval(S),S=null),b)){var g=b;b=null,g()}}(),L}if(v++,e.monitorRunDependencies?.(v),e.instantiateWasm)try{return e.instantiateWasm(g,I)}catch(A){return y(`Module.instantiateWasm callback failed with error: ${A}`),!1}return F||(F="data:application/octet-stream;base64,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IAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRrIAE2AgAgAkEYayABNgIAIAJBHGsgATYCACAEIANBBHFBGHIiBGsiAkEgSQ0AIAGtQoGAgIAQfiEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkEgayICQR9LDQALCyAAC4IEAQN/IAJBgARPBEAgACABIAIQAyAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLIANBfHEhBAJAIANBwABJDQAgAiAEQUBqIgVLDQADQCACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAFTQ0ACwsgAiAETw0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgBEkNAAsMAQsgA0EESQRAIAAhAgwBCyAAIANBBGsiBEsEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCyAACxgBAX9BlKYCKAIAIgAEQCAAERMACxACAAsEAEEgC4kGAgd+A38jAEHABWsiCyQAAkAgAlANACAAIAApA0giAyACQgOGfCIENwNIIAAgACkDQCADIARWrXwgAkI9iHw3A0AgAEHQAGohCkKAASADQgOIQv8AgyIEfSIIIAJYBEBCACEDIARC/wCFQgNaBEAgCEL8AYMhBwNAIAogAyAEfKdqIAEgA6dqLQAAOgAAIAogA0IBhCIJIAR8p2ogASAJp2otAAA6AAAgCiADQgKEIgkgBHynaiABIAmnai0AADoAACAKIANCA4QiCSAEfKdqIAEgCadqLQAAOgAAIANCBHwhAyAFQgR8IgUgB1INAAsLIAhCA4MiBUIAUgRAA0AgCiADIAR8p2ogASADp2otAAA6AAAgA0IBfCEDIAZCAXwiBiAFUg0ACwsgACAKIAsgC0GABWoiDBAsIAEgCKdqIQEgAiAIfSICQv8AVgRAA0AgACABIAsgDBAsIAFBgAFqIQEgAkKAAX0iAkL/AFYNAAsLAkAgAlANACACQgODIQRCACEGQgAhAyACQgRaBEAgAkL8AIMhBUIAIQIDQCAKIAOnIgBqIAAgAWotAAA6AAAgCiAAQQFyIgxqIAEgDGotAAA6AAAgCiAAQQJyIgxqIAEgDGotAAA6AAAgCiAAQQNyIgBqIAAgAWotAAA6AAAgA0IEfCEDIAJCBHwiAiAFUg0ACwsgBFANAANAIAogA6ciAGogACABai0AADoAACADQgF8IQMgBkIBfCIGIARSDQALCyALQcAFEAgMAQtCACEDIAJCBFoEQCACQnyDIQgDQCAKIAMgBHynaiABIAOnai0AADoAACAKIANCAYQiByAEfKdqIAEgB6dqLQAAOgAAIAogA0IChCIHIAR8p2ogASAHp2otAAA6AAAgCiADQgOEIgcgBHynaiABIAenai0AADoAACADQgR8IQMgBUIEfCIFIAhSDQALCyACQgODIgJQDQADQCAKIAMgBHynaiABIAOnai0AADoAACADQgF8IQMgBkIBfCIGIAJSDQALCyALQcAFaiQAQQALnwQBE38gASgCBCECIAEoAiwhAyABKAIIIQQgASgCMCEFIAEoAgwhBiABKAI0IQcgASgCECEIIAEoAjghCSABKAIUIQogASgCPCELIAEoAhghDCABQUBrIg0oAgAhDiABKAIcIQ8gASgCRCEQIAEoAiAhESABKAJIIRIgASgCJCETIAEoAkwhFCAAIAEoAgAgASgCKGo2AgAgACATIBRqNgIkIAAgESASajYCICAAIA8gEGo2AhwgACAMIA5qNgIYIAAgCiALajYCFCAAIAggCWo2AhAgACAGIAdqNgIMIAAgBCAFajYCCCAAIAIgA2o2AgQgASgCBCECIAEoAiwhAyABKAIIIQQgASgCMCEFIAEoAgwhBiABKAI0IQcgASgCECEIIAEoAjghCSABKAIUIQogASgCPCELIAEoAhghDCANKAIAIQ0gASgCHCEOIAEoAkQhDyABKAIgIRAgASgCSCERIAEoAgAhEiABKAIoIRMgACABKAJMIAEoAiRrNgJMIAAgESAQazYCSCAAIA8gDms2AkQgAEFAayANIAxrNgIAIAAgCyAKazYCPCAAIAkgCGs2AjggACAHIAZrNgI0IAAgBSAEazYCMCAAIAMgAms2AiwgACATIBJrNgIoIAAgASkCUDcCUCAAIAEpAlg3AlggACABKQJgNwJgIAAgASkCaDcCaCAAIAEpAnA3AnAgAEH4AGogAUH4AGpBkAsQBgvwCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAIQBiAAQShqIgMgAyACQShqEAYgAEH4AGogAkH4AGogAUH4AGoQBiAAIAFB0ABqIAJB0ABqEAYgACgCBCEUIAAoAgghFSAAKAIMIRYgACgCECEXIAAoAhQhGCAAKAIYIRkgACgCHCEaIAAoAiAhGyAAKAIkIRwgACgCLCEBIAAoAlQhAiAAKAIwIQMg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KAI0ISMgASgCDCEkIAEoAjghJSABKAIQISYgASgCPCEnIAEoAhQhKCABQUBrKAIAISkgASgCGCEqIAEoAkQhKyABKAIcISwgASgCSCEtIAEoAiAhLiABKAIoIS8gASgCACEwIAAgASgCTCABKAIkajYCTCAAIC0gLmo2AkggACArICxqNgJEIABBQGsiMSApICpqNgIAIAAgJyAoajYCPCAAICUgJmo2AjggACAjICRqNgI0IAAgISAiajYCMCAAIB8gIGo2AiwgACAvIDBqNgIoIB4gAEEoahAFIAAoAgQhASAAKAJUIR8gACgCCCEgIAAoAlghISAAKAIMISIgACgCXCEjIAAoAhAhJCAAKAJgISUgACgCFCEmIAAoAmQhJyAAKAIYISggACgCaCEpIAAoAhwhKiAAKAJsISsgACgCICEsIAAoAnAhLSAAKAIAIS4gACgCUCEvIAAgACgCdCIwIAAoAiQiMmsiMzYCdCAAIC0gLGsiNDYCcCAAICsgKmsiNTYCbCAAICkgKGsiNjYCaCAAICcgJmsiNzYCZCAAICUgJGsiODYCYCAAICMgImsiOTYCXCAAICEgIGsiOjYCWCAAIB8gAWsiOzYCVCAAIC8gLmsiPDYCUCAAIDAgMmoiMDYCTCAAICwgLWoiLDYCSCAAICogK2oiKjYCRCAxICggKWoiKDYCACAAICYgJ2oiJjYCPCAAICQgJWoiJDYCOCAAICIgI2oiIjYCNCAAICAgIWoiIDYCMCAAIAEgH2oiATYCLCAAIC4gL2oiHzYCKCAeKAIAISEgHigCBCEjIB4oAgghJSAeKAIMIScgHigCECEpIB4oAhQhKyAeKAIYIS0gHigCHCEuIB4oAiAhLyAAIB4oAiQgMGs2AiQgACAvICxrNgIgIAAgLiAqazYCHCAAIC0gKGs2AhggACArICZrNgIUIAAgKSAkazYCECAAICcgIms2AgwgACAlICBrNgIIIAAgIyABazYCBCAAICEgH2s2AgAgACgCfCEBIAAoAoABIR8gACgChAEhICAAKAKIASEhIAAoAowBISIgACgCkAEhIyAAKAKUASEkIAAoApgBISUgACgCeCEmIAAgACgCnAEgM2s2ApwBIAAgJSA0azYCmAEgACAkIDVrNgKUASAAICMgNms2ApABIAAgIiA3azYCjAEgACAhIDhrNgKIASAAICAgOWs2AoQBIAAgHyA6azYCgAEgACABIDtrNgJ8IAAgJiA8azYCeCAeQTBqJAALDAAgACABIAIQKkEAC3AAIABCADcDQCAAQgA3A0ggAEHwiAIpAwA3AwAgAEH4iAIpAwA3AwggAEGAiQIpAwA3AxAgAEGIiQIpAwA3AxggAEGQiQIpAwA3AyAgAEGYiQIpAwA3AyggAEGgiQIpAwA3AzAgAEGoiQIpAwA3AzgLJAAgAUKAgICAEFoEQBALAAsgACABIAIgA0HEmwIoAgARDgAaCwUAQcAACzcBAX8jAEFAaiICJAAgACACEBQgAEHQAWoiACACQsAAEA0aIAAgARAUIAJBwAAQCCACQUBrJAAL1gQBCH8jAEHAAWsiBSQAIAJBgQFPBEAgABAbIAAgASACrRANGiAAIAUQFEHAACECIAUhAQsgABAbIAVBQGtBNkGAARAJGgJAIAJFDQAgAkEETwRAIAJB/AFxIQoDQCAFQUBrIgggA2oiBCAELQAAIAEgA2otAABzOgAAIAggA0EBciIEaiIGIAYtAAAgASAEai0AAHM6AAAgCCADQQJyIgRqIgYgBi0AACABIARqLQAAczoAACAIIANBA3IiBGoiBiAGLQAAIAEgBGotAABzOgAAIANBBGohAyAHQQRqIgcgCkcNAAsLIAJBA3EiB0UNAANAIAVBQGsgA2oiCiAKLQAAIAEgA2otAABzOgAAIANBAWohAyAJQQFqIgkgB0cNAAsLIAAgBUFAayIDQoABEA0aIABB0AFqIgAQGyADQdwAQYABEAkaAkAgAkUNAEEAIQlBACEDIAJBBE8EQCACQfwBcSEKQQAhBwNAIAVBQGsiCCADaiIEIAQtAAAgASADai0AAHM6AAAgCCADQQFyIgRqIgYgBi0AACABIARqLQAAczoAACAIIANBAnIiBGoiBiAGLQAAIAEgBGotAABzOgAAIAggA0EDciIEaiIGIAYtAAAgASAEai0AAHM6AAAgA0EEaiEDIAdBBGoiByAKRw0ACwsgAkEDcSICRQ0AA0AgBUFAayADaiIHIActAAAgASADai0AAHM6AAAgA0EBaiEDIAlBAWoiCSACRw0ACwsgACAFQUBrIgBCgAEQDRogAEGAARAIIAVBwAAQCCAFQcABaiQAQQALlQEBAX8jAEHQAWsiAyQAIANCADcDSCADQfiIAikDADcDCCADQYCJAikDADcDECADQYiJAikDADcDGCADQZCJAikDADcDICADQZiJAikDADcDKCADQaCJAikDADcDMCADQaiJAikDADcDOCADQgA3A0AgA0HwiAIpAwA3AwAgAyABIAIQDRogAyAAEBQgA0HQAWokAEEAC0AAAkAgBK1CgICAgBAgAkI/fEIGiH1WDQAgAkKAgICAEFoNACAAIAEgAiADIAQgBUHMmwIoAgARCgAaDwsQCwAL7wMBAX8jAEEQayICIAA2AgwgAiABNgIIIAJBADYCBCACIAIoAgQgAigCDC0AACACKAIILQAAc3I2AgQgAiACKAIEIAIoAgwtAAEgAigCCC0AAXNyNgIEIAIgAigCBCACKAIMLQACIAIoAggtAAJzcjYCBCACIAIoAgQgAigCDC0AAyACKAIILQADc3I2AgQgAiACKAIEIAIoAgwtAAQgAigCCC0ABHNyNgIEIAIgAigCBCACKAIMLQAFIAIoAggtAAVzcjYCBCACIAIoAgQgAigCDC0ABiACKAIILQAGc3I2AgQgAiACKAIEIAIoAgwtAAcgAigCCC0AB3NyNgIEIAIgAigCBCACKAIMLQAIIAIoAggtAAhzcjYCBCACIAIoAgQgAigCDC0ACSACKAIILQAJc3I2AgQgAiACKAIEIAIoAgwtAAogAigCCC0ACnNyNgIEIAIgAigCBCACKAIMLQALIAIoAggtAAtzcjYCBCACIAIoAgQgAigCDC0ADCACKAIILQAMc3I2AgQgAiACKAIEIAIoAgwtAA0gAigCCC0ADXNyNgIEIAIgAigCBCACKAIMLQAOIAIoAggtAA5zcjYCBCACIAIoAgQgAigCDC0ADyACKAIILQAPc3I2AgQgAigCBEEBa0EIdkEBcUEBawv3AgEDfwJ/AkACQAJAIAEiBEH/AXEiAQRAIABBA3EEQANAIAAtAAAiAkUNBSABIAJGDQUgAEEBaiIAQQNxDQALC0GAgoQIIAAoAgAiAmsgAnJBgIGChHhxQYCBgoR4Rw0BIAFBgYKECGwhAwNAQYCChAggAiADcyIBayABckGAgYKEeHFBgIGChHhHDQIgACgCBCECIABBBGoiASEAIAJBgIKECCACa3JBgIGChHhxQYCBgoR4Rg0ACwwCCwJ/AkACQCAAIgJBA3FFDQBBACAALQAA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NgAMIAUgFSAOIChqczYACCAFIBYgCiApanM2AAQgEiATQQFqIhNFaiESIANCwABYBEACQCADQj9WDQAgA1ANACADpyEBQQAhBANAIAQgK2ogBCAFai0AADoAACAEQQFqIgQgAUkNAAsLIAAgEjYCNCAAIBM2AjAFIAFBQGshASAFQUBrIQIgA0JAfCEDDAELCwvRBgEKfyMAQaACayICJAAgACgAHCEEIAAoABghBSAAKAAUIQYgACgAECEHIAAoAAQhCCAAKAAIIQkgACgADCEKIAAoAAAhCyACIAEpAng3A5gCIAIgASkCcDcDkAIgAiABKQJoNwP4ASACIAEpAmA3A/ABIAIgASkCeDcD6AEgAiABKQJwNwPgASACQYACaiIDIAJB8AFqIAJB4AFqEAcgASACKQKIAjcCeCABIAIpAoACNwJwIAIgASkCWDcD2AEgAiABKQJQNwPQASACIAEpAmg3A8gBIAIgASkCYDcDwAEgAyACQdABaiACQcABahAHIAEgAikCiAI3AmggASACKQKAAjcCYCACIAEpAkg3A7gBIAIgAUFAayIAKQIANwOwASACIAEpAlg3A6gBIAIgASkCUDcDoAEgAyACQbABaiACQaABahAHIAEgAikCiAI3AlggASACKQKAAjcCUCACIAEpAjg3A5gBIAIgASkCMDcDkAEgAiABKQJINwOIASACIAApAgA3A4ABIAMgAkGQAWogAkGAAWoQByABIAIpAogCNwJIIAAgAikCgAI3AgAgAiABKQIoNwN4IAIgASkCIDcDcCACIAEpAjg3A2ggAiABKQIwNwNgIAMgAkHwAGogAkHgAGoQByABIAIpAogCNwI4IAEgAikCgAI3AjAgAiABKQIYNwNYIAIgASkCEDcDUCACIAEpAig3A0ggAiABKQIgNwNAIAMgAkHQAGogAkFAaxAHIAEgAikCiAI3AiggASACKQKAAjcCICACIAEpAgg3AzggAiABKQIANwMwIAIgASkCGDcDKCACIAEpAhA3AyAgAyACQTBqIAJBIGoQByABIAIpAogCNwIYIAEgAikCgAI3AhAgAiACKQOYAjcDGCACIAIpA5ACNwMQIAIgASkCCDcDCCACIAEpAgA3AwAgAyACQRBqIAIQByABIAIpAogCNwIIIAEgAikCgAI3AgAgASAKIAEoAAxzNgIMIAEg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EAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgASABEAUgAyABIAMQBiABIAMQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEQBSABIAEgAxAGIAIgARAFQQEhAQNAIAIgAhAFIAFBAWoiAUHkAEcNAAsgAkEwaiIBIAIgARAGIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAEgARAFIAJB4ABqIgMgASADEAYgAyADEAUgAyADEAUgAyADEAUgAyADEAUgAyADEAUgACADIAJBkAFqEAYgAkHAAWokAAuLAQEBfyMAQRBrIgIgADYCDCACIAE2AghBACEAIAJBADYCBANAIAIgAigCBCACKAIMIABqLQAAIAIoAgggAGotAABzcjYCBCACIAIoAgQgAEEBciIBIAIoAgxqLQAAIAIoAgggAWotAABzcjYCBCAAQQJqIgBBIEcNAAsgAigCBEEBa0EIdkEBcUEBawvPAgICfwF+IwBB4ABrIgYkACAGIAQgBRBIGiAGQSBqIgdCICAEQRBqIgUgBkGgkwIoAgARDgAaQX8hBAJAAkAgAiABIAMgB0GIkwIoAgARFgANAEEAIQQgAEUNAQJAAn4CQCAAIAFJIAEgAGutIANUcUUEQCAAIAFNDQEgACABa60gA1oNAQsgACABIAOnEDYhAUIgIAMgA0IgWhsMAQsgA1ANAUIgIAMgA0IgWhsLIQggBkFAayABIAinIgIQCiEHIAZBIGoiBCAEIAhCIHwgBUIAIAZBpJMCKAIAEQwAGiAAIAcgAhAKIARBwAAQCEEAIQQgA0IhVA0BIAJqIAEgAmogAyAIfSAFQgEgBkGkkwIoAgARDAAaDAELIAZBIGoiACAAQiAgBUIAIAZBpJMCKAIAEQwAGiAAQcAAEAgLIAZBIBAICyAGQeAAaiQAIAQL6AIBAn8CQCAAIAFGDQAgASAAIAJqIgRrQQAgAkEBdGtNBEAgACABIAIQCg8LIAAgAXNBA3EhAwJAAkAgACABSQRAIAMEQCAAIQMMAwsgAEEDcUUEQCAAIQMMAgsgACEDA0AgAkUNBCADIAEtAAA6AAAgAUEBaiEBIAJBAWshAiADQQFqIgNBA3ENAAsMAQsCQCADDQAgBEEDcQRAA0AgAkUNBSAAIAJBAWsiAmoiAyABIAJqLQAAOgAAIANBA3ENAAsLIAJBA00NAANAIAAgAkEEayICaiABIAJqKAIANgIAIAJBA0sNAAsLIAJFDQIDQCAAIAJBAWsiAmogASACai0AADoAACACDQALDAILIAJBA00NAANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIAJBBGsiAkEDSw0ACwsgAkUNAANAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBIAJBAWsiAg0ACwsgAAs0AQF/IwBBIGsiAiQAIAAgAhBJIABB6ABqIgAgAkIgECogACABEEkgAkEgEAggAkEgaiQAC88HAQl/IwBB4ABrIgMkACACQcEATwRAIABCADcDICAAQcCPAikDADcDACAAQciPAikDADcDCCAAQdCPAikDADcDECAAQdiPAikDADcDGCAAIAEgAq0QKiAAIAMQSUEgIQIgAyEBCyAAQgA3AyAgAEHAjwIpAwA3AwAgAEHIjwIpAwA3AwggAEHQjwIpAwA3AxAgAEHYjwIpAwA3AxggA0K27Nix48aNmzY3A1ggA0K27Nix48aNmzY3A1AgA0K27Nix48aNmzY3A0ggA0FAayIKQrbs2LHjxo2bNjcDACADQrbs2LHjxo2bNjcDOCADQrbs2LHjxo2bNjcDMCADQrbs2LHjxo2bNjcDKCADQrbs2LHjxo2bNjcDIAJAIAJFDQAgAkEETwRAIAJB/ABxIQYDQCADQSBqIgcgBGoiBSAFLQAAIAEgBGotAABzOgAAIAcgBEEBciIFaiILIAstAAAgASAFai0AAHM6AAAgByAEQQJyIgVqIgsgCy0AACABIAVqLQAAczoAACAHIARBA3IiBWoiByAHLQAAIAEgBWotAABzOgAAIARBBGohBCAIQQRqIgggBkcNAAsLIAJBA3EiCEUNAANAIANBIGogBGoiByAHLQAAIAEgBGotAABzOgAAIARBAWohBCAJQQFqIgkgCEcNAAsLIAAgA0EgakLAABAqIABB6ABqIgciAEIANwMgIABBwI8CKQMANwMAIABByI8CKQMANwMIIABB0I8CKQMANwMQIABB2I8CKQMANwMYIANC3Ljx4sWLl67cADcDWCADQty48eLFi5eu3AA3A1AgA0LcuPHixYuXrtwANwNIIApC3Ljx4sWLl67cADcDACADQty48eLFi5eu3AA3AzggA0LcuPHixYuXrtwANwMwIANC3Ljx4sWLl67cADcDKCADQty48eLFi5eu3AA3AyACQCACRQ0AQQAhCUEAIQQgAkEETwRAIAJB/ABxIQpBACEIA0AgA0EgaiIAIARqIgYgBi0AACABIARqLQAAczoAACAAIARBAXIiBmoiBSAFLQAAIAEgBmotAABzOgAAIAAgBEECciIGaiIFIAUtAAAgASAGai0AAHM6AAAgACAEQQNyIgZqIgAgAC0AACABIAZqLQAAczoAACAEQQRqIQQgCEEEaiIIIApHDQALCyACQQNxIgBFDQADQCADQSBqIARqIgIgAi0AACABIARqLQAAczoAACAEQQFqIQQgCUEBaiIJIABHDQALCyAHIANBIGoiAELAABAqIABBwAAQCCADQSAQCCADQeAAaiQAQQAL7hsBGX8gAiABKAAAIgRBGHQgBEGA/gNxQQh0ciAEQQh2QYD+A3EgBEEYdnJyNgIA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QhOIhDwAGiAAIAFCFYciAyAEQv///wCDfCICQhGIPAAfIAAgAkIJiDwAHiAAIAJCB4YgAUKAgP8Ag0IOiIQ8ABwgACADpyAEp2pBAXatPAAdC/gBAQp/A0AgBCAAIANqLQAAIgEgA0GAE2oiAi0AAHNyIQQgCiABIAItAMABc3IhCiAJIAEgAi0AoAFzciEJIAggASACLQCAAXNyIQggByABIAItAGBzciEHIAYgASACQUBrLQAAc3IhBiAFIAEgAi0AIHNyIQUgA0EBaiIDQR9HDQALIAogAC0AH0H/AHEiAEH/AHMiAXJB/wFxQQFrIAEgCXJB/wFxQQFrIAEgCHJB/wFxQQFrIAcgAEH6AHNyQf8BcUEBayAGIABBBXNyQf8BcUEBayAAIAVyQf8BcUEBayAAIARyQf8BcUEBa3JycnJyckEIdkEBcQvgCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgCDCEHIAEoAjQhCCABKAIQIQkgASgCOCEKIAEoAhQhCyABKAI8IQwgASgCGCENIAFBQGsiDigCACEPIAEoAhwhECABKAJEIREgASgCICESIAEoAkghEyABKAIkIRQgASgCTCEVIAAgASgCACABKAIoajYCACAAIBQgFWo2AiQgACASIBNqNgIgIAAgECARajYCHCAAIA0gD2o2AhggACALIAxqNgIUIAAgCSAKajYCECAAIAcgCGo2AgwgACAFIAZqNgIIIAAgAyAEajYCBCABKAIEIQMgASgCLCEFIAEoAgghBiABKAIwIQcgASgCDCEIIAEoAjQhCSABKAIQIQogASgCOCELIAEoAhQhDCABKAI8IQ0gASgCGCEPIA4oAgAhDiABKAIcIQQgASgCRCEQIAEoAiAhESABKAJIIRIgASgCACETIAEoAighFCAAIAEoAkwgASgCJGs2AkwgACASIBFrNgJIIAAgECAEazYCRCAAQUBrIgQgDiAPazYCACAAIA0gDGs2AjwgACALIAprNgI4IAAgCSAIazYCNCAAIAcgBms2AjAgACAFIANrNgIsIAAgFCATazYCKCAAQdAAaiAAIAIQBiAAQShqIgMgAyACQShqEAYgAEH4AGogAkHQAGogAUH4AGoQBiABKAJUIRQgASgCWCEVIAEoAlwhFiABKAJgIRcgASgCZCEYIAEoAmgh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wAEgBEHAAWoiCSABIAIQChogAygAECEGIANBQGsiASgAACEHIAMoAFAhBSADKAAgIQggAygAMCEKIAMoABQhCyADKABEIQwgAygAVCENIAMoACQhDiADKAA0IQ8gAygAGCEQIAMoAEghESADKABYIRIgAygAKCETIAMoADghFCAEKALAASEVIAQoAsQBIRYgBCgCyAEhFyAEIAMoACwgAygAPHEgAygAHCADKABMIAMoAFwgBCgCzAFzc3NzNgLMASAEIBMgFHEgECARIBIgF3Nzc3M2AsgBIAQgDiAPcSALIAwgDSAWc3NzczYCxAEgBCAIIApxIAYgByAFIBVzc3NzNgLAASACIAlqQQBBECACaxAJGiAAIAkgAhAKGiAEKALAASEAIAQoAsQBIQIgBCgCyAEhBiAEKALMASEHIAQgAykCWDcD6AEgBCADKQJQNwPgASAEIAMpAkg3A7gBIAQgASkCADcDsAEgBCADKQJYNwOoASAEIAMpAlA3A6ABIARB0AFqIgUgBEGwAWogBEGgAWoQByADIAQpAtgBNwJYIAMgBCkC0AE3AlAgBCADKQI4NwOYASAEIAMpAjA3A5ABIAQgAykCSDcDiAEgBCABKQIANwOAASAFIARBkAFqIARBgAFqEAcgAyAEKQLYATcCSCABIAQpAtABNwIAIAQgAykCKDcDeCAEIAMpAiA3A3AgBCADKQI4NwNoIAQgAykCMDcDYCAFIARB8ABqIARB4ABqEAcgAyAEKQLYATcCOCADIAQpAtABNwIwIAQgAykCGDcDWCAEIAMpAhA3A1AgBCADKQIoNwNIIAQgAykCIDcDQCAFIARB0ABqIARBQGsQByADIAQpAtgBNwIoIAMgBCkC0AE3AiAgBCADKQIINwM4IAQgAykCADcDMCAEIAMpAhg3AyggBCADKQIQNwMgIAUgBEEwaiAEQSBqEAcgAyAEKQLYATcCGCADIAQpAtABNwIQIAQgBCkD6AE3AxggBCAEKQPgATcDECAEIAMpAgg3AwggBCADKQIANwMAIAUgBEEQaiAEEAcgBCgC0AEhASAEKALUASEFIAQoAtgBIQggAyAHIAQoAtwBczYCDCADIAYgCHM2AgggAyACIAVzNgIEIAMgACABczYCACAEQfABaiQAC6sGARR/IwBB4AFrIgMkACACKAAQIQQgAkFAayIFKAAAIQYgAigAUCEJIAIoACAhCiACKAAwIQsgAigAFCEHIAIoAEQhDCACKABUIQ0gASgABCEOIAIoACQhDyACKAA0IRAgAigAGCEIIAIoAEghESACKABYIRIgASgACCETIAIoACghFCACKAA4IRUgASgAACEWIAAgAigALCACKAA8cSACKAAcIAIoAEwgAigAXCABKAAMc3NzcyIBNgAMIAAgFCAVcSAIIBEgEiATc3NzcyIINgAIIAAgDyAQcSAHIAwgDSAOc3NzcyIHNgAEIAAgCiALcSAEIAYgCSAWc3NzcyIANgAAIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAkg3A7gBIAMgBSkCADcDsAEgAyACKQJYNwOoASADIAIpAlA3A6ABIANBwAFqIgQgA0GwAWogA0GgAWoQByACIAMpAsgBNwJYIAIgAykCwAE3AlAgAyACKQI4NwOYASADIAIpAjA3A5ABIAMgAikCSDcDiAEgAyAFKQIANwOAASAEIANBkAFqIANBgAFqEAcgAiADKQLIATcCSCAFIAMpAsABNwIAIAMgAikCKDcDeCADIAIpAiA3A3AgAyACKQI4NwNoIAMgAikCMDcDYCAEIANB8ABqIANB4ABqEAcgAiADKQLIATcCOCACIAMpAsABNwIwIAMgAikCGDcDWCADIAIpAhA3A1AgAyACKQIoNwNIIAMgAikCIDcDQCAEIANB0ABqIANBQGsQByACIAMpAsgBNwIoIAIgAykCwAE3AiAgAyACKQIINwM4IAMgAikCADcDMCADIAIpAhg3AyggAyACKQIQNwMgIAQgA0EwaiADQSBqEAcgAiADKQLIATcCGCACIAMpAsABNwIQIAMgAykD2AE3AxggAyADKQPQATcDECADIAIpAgg3AwggAyACKQIANwMAIAQgA0EQaiADEAcgAygCwAEhBSADKALEASEEIAMoAsgBIQYgAiADKALMASABczYCDCACIAYgCHM2AgggAiAEIAdzNgIEIAIgACAFczYCACADQeABaiQAC4sJARF/IwBB4AFrIgUkACAEKAA8IANBHXZzIQ4gBCgAOCADQQN0cyEPIAQoADQgAkEddnMhECAEQTBqIgMoAAAgAkEDdHMhESAEQRBqIQIgBEEgaiEGIARBQGshByAEQdAAaiEIA0AgBSAIKQIINwPYASAFIAgpAgA3A9ABIAUgBykCCDcDuAEgBSAHKQIANwOwASAFIAgpAgg3A6gBIAUgCCkCADcDoAEgBUHAAWoiCSAFQbABaiAFQaABahAHIAggBSkCyAE3AgggCCAFKQLAATcCACAFIAMpAgg3A5gBIAUgAykCADcDkAEgBSAHKQIINwOIASAFIAcpAgA3A4ABIAkgBUGQAWogBUGAAWoQByAHIAUpAsgBNwIIIAcgBSkCwAE3AgAgBSAGKQIINwN4IAUgBikCADcDcCAFIAMpAgg3A2ggBSADKQIANwNgIAkgBUHwAGogBUHgAGoQByADIAUpAsgBNwIIIAMgBSkCwAE3AgAgBSACKQIINwNYIAUgAikCADcDUCAFIAYpAgg3A0ggBSAGKQIANwNAIAkgBUHQAGogBUFAaxAHIAYgBSkCyAE3AgggBiAFKQLAATcCACAFIAQpAgg3AzggBSAEKQIANwMwIAUgAikCCDcDKCAFIAIpAgA3AyAgCSAFQTBqIAVBIGoQByACIAUpAsgBNwIIIAIgBSkCwAE3AgAgBSAFKQPYATcDGCAFIAUpA9ABNwMQIAUgBCkCCDcDCCAFIAQpAgA3AwAgCSAFQRBqIAUQByAFKALAASELIAUoAsQBIQwgBSgCyAEhCSAEIA4gBSgCzAFzIg02AgwgBCAJIA9zIgk2AgggBCAMIBBzIgw2AgQgBCALIBFzIgs2AgAgCkEBaiIKQQdHDQALAkACQAJAAkAgAUEQaw4RAAICAgICAgICAgICAgICAgECCyAEKAAQIQEgBCgAMCECIAQoACAhAyAEKABQIQYgBEFAaygAACEHIAQoABQhCCAEKAA0IQogBCgAJCEOIAQoAFQhDyAEKABEIRAgBCgAGCERIAQoADghEiAEKAAoIRMgBCgAWCEUIAQoAEghFSAAIAQoABwgBCgAPCAEKAAsIAQoAFwgBCgATHNzc3MgDXM2AAwgACARIBIgEyAUIBVzc3NzIAlzNgAIIAAgCCAKIA4gDyAQc3NzcyAMczYABCAAIAEgAiADIAYgB3Nzc3MgC3M2AAAMAgsgBCgAICEBIAQoABAhAiAEKAAkIQMgBCgAFCEGIAQoACghByAEKAAYIQggACAEKAAsIAQoABxzIA1zNgAMIAAgByAIcyAJczYACCAAIAMgBnMgDHM2AAQgACABIAJzIAtzNgAAIAQoADAhASAEKABQIQIgBEFAaygAACEDIAQoADQhBiAEKABUIQcgBCgARCEIIAQoADghCiAEKABYIQ0gBCgASCEJIAAgBCgAPCAEKABcIAQoAExzczYAHCAAIAogCSANc3M2ABggACAGIAcgCHNzNgAUIAAgASACIANzczYAEAwBCyAAQQAgARAJGgsgBUHgAWokAAulBgEUfyMAQeABayIDJAAgAigAECEFIAJBQGsiBCgAACEJIAIoAFAhCiACKAAgIQsgAigAMCEMIAEoAAQhBiACKAAUIQ0gAigARCEOIAIoAFQhDyACKAAkIRAgAigANCERIAEoAAghByACKAAYIRIgAigASCETIAIoAFghFCACKAAoIRUgAigAOCEWIAEoAAAhCCAAIAEoAAwiASACKAAsIAIoADxxIAIoABwgAigAXCACKABMc3NzczYADCAAIAcgFSAWcSASIBMgFHNzc3M2AAggACAGIBAgEXEgDSAOIA9zc3NzNgAEIAAgCCALIAxxIAUgCSAKc3NzczYAACADIAIpAlg3A9gBIAMgAikCUDcD0AEgAyACKQJINwO4ASADIAQpAgA3A7ABIAMgAikCWDcDqAEgAyACKQJQNwOgASADQcABaiIAIANBsAFqIANBoAFqEAcgAiADKQLIATcCWCACIAMpAsABNwJQIAMgAikCODcDmAEgAyACKQIwNwOQASADIAIpAkg3A4gBIAMgBCkCADcDgAEgACADQZABaiADQYABahAHIAIgAykCyAE3AkggBCADKQLAATcCACADIAIpAig3A3ggAyACKQIgNwNwIAMgAikCODcDaCADIAIpAjA3A2AgACADQfAAaiADQeAAahAHIAIgAykCyAE3AjggAiADKQLAATcCMCADIAIpAhg3A1ggAyACKQIQNwNQIAMgAikCKDcDSCADIAIpAiA3A0AgACADQdAAaiADQUBrEAcgAiADKQLIATcCKCACIAMpAsABNwIgIAMgAikCCDcDOCADIAIpAgA3AzAgAyACKQIYNwMoIAMgAikCEDcDICAAIANBMGogA0EgahAHIAIgAykCyAE3AhggAiADKQLAATcCECADIAMpA9gBNwMYIAMgAykD0AE3AxAgAyACKQIINwMIIAMgAikCADcDACAAIANBEGogAxAHIAMoAsABIQAgAygCxAEhBCADKALIASEFIAIgASADKALMAXM2AgwgAiAFIAdzNgIIIAIgBCAGczYCBCACIAAgCHM2AgAgA0HgAWokAAulCQENfyMAQaADayICJAAgACgAECEGIAAoABQhByAAKAAYIQggACgAHCEJIAAoAAQhBCAAKAAIIQUgACgADCEKIAAoAAAhCyACIAEpAlg3A5gDIAIgASkCUDcDkAMgAiABKQJINwP4AiACIAFBQGsiACkCADcD8AIgAiABKQJYNwPoAiACIAEpAlA3A+ACIAJBgANqIgMgAkHwAmogAkHgAmoQByABIAIpAogDNwJYIAEgAikCgAM3AlAgAiABKQI4NwPYAiACIAEpAjA3A9ACIAIgASkCSDcDyAIgAiAAKQIANwPAAiADIAJB0AJqIAJBwAJqEAcgASACKQKIAzcCSCAAIAIpAoADNwIAIAIgASkCKDcDuAIgAiABKQIgNwOwAiACIAEpAjg3A6gCIAIgASkCMDcDoAIgAyACQbACaiACQaACahAHIAEgAikCiAM3AjggASACKQKAAzcCMCACIAEpAhg3A5gCIAIgASkCEDcDkAIgAiABKQIoNwOIAiACIAEpAiA3A4ACIAMgAkGQAmogAkGAAmoQByABIAIpAogDNwIoIAEgAikCgAM3AiAgAiABKQIINwP4ASACIAEpAgA3A/ABIAIgASkCGDcD6AEgAiABKQIQNwPgASADIAJB8AFqIAJB4AFqEAcgASACKQKIAzcCGCABIAIpAoADNwIQIAIgAikDmAM3A9gBIAIgAikDkAM3A9ABIAIgASkCCDcDyAEgAiABKQIANwPAASADIAJB0AFqIAJBwAFqEAcgAigCgAMhDCACKAKEAyENIAIoAogDIQ4gASAKIAIoAowDczYCDCABIAUgDnM2AgggASAEIA1zNgIEIAEgCyAMczYCACACIAEpAlg3A5gDIAIgASkCUDcDkAMgAiABKQJINwO4ASACIAApAgA3A7ABIAIgASkCWDcDqAEgAiABKQJQNwOgASADIAJBsAFqIAJBoAFqEAcgASACKQKIAzcCWCABIAIpAoADNwJQIAIgASkCODcDmAEgAiABKQIwNwOQASACIAEpAkg3A4gBIAIgACkCADcDgAEgAyACQZABaiACQYABahAHIAEgAikCiAM3AkggACACKQKAAzcCACACIAEpAig3A3ggAiABKQIgNwNwIAIgASkCODcDaCACIAEpAjA3A2AgAyACQfAAaiACQeAAahAHIAEgAikCiAM3AjggASACKQKAAzcCMCACIAEpAhg3A1ggAiABKQIQNwNQIAIgASkCKDcDSCACIAEpAiA3A0AgAyACQdAAaiACQUBrEAcgASACKQKIAzcCKCABIAIpAoADNwIgIAIgASkCCDcDOCACIAEpAgA3AzAgAiABKQIYNwMoIAIgASkCEDcDICADIAJBMGogAkEgahAHIAEgAikCiAM3AhggASACKQKAAzcCECACIAIpA5gDNwMYIAIgAikDkAM3AxAgAiABKQIINwMIIAIgASkCADcDACADIAJBEGogAhAHIAIoAoADIQAgAigChAMhBCACKAKIAyEFIAEgCSACKAKMA3M2AgwgASAFIAhzNgIIIAEgBCAHczYCBCABIAAgBnM2AgAgAkGgA2okAAvzFAEZfyMAQaAGayIDJAAgASgABCELIAEoAAghDCABKAAMIQ0gASgAECEOIAEoABQhBCABKAAYIQ8gASgAHCEQIAAoAAQhESAAKAAIIRIgACgADCETIAAoABAhFCAAKAAUIRUgACgAGCEWIAAoABwhFyABKAAAIQUgAkFAayIBIAAoAAAiGEGAgoQQczYCACACQpXE3MmFsvq84gA3AjggAkEwaiIAQoCChJCwoIGEDTcCACACQqCixJG0rq2UXTcCKCACQSBqIgZC2/vgqNXN8JdxNwIAIAIgBSAYcyIZNgIAIAIgF0Hz6qLpfXM2AlwgAiAWQaCixJEEczYCWCACIBVB7YS/iX9zNgJUIAJB0ABqIgUgFEHb++CoBXM2AgAgAiATQZDT55MGczYCTCACIBJBlcTcyQVzNgJIIAIgEUGDiqDoAHM2AkQgAiAQIBdzIhA2AhwgAiAPIBZzIg82AhggAiAEIBVzIho2AhQgAkEQaiIEIA4gFHMiDjYCACACIA0gE3MiDTYCDCACIAwgEnMiDDYCCCACIAsgEXMiGzYCBEEAIQsDQCADIAUpAgg3A5gGIAMgBSkCADcDkAYgAyABKQIINwP4BSADIAEpAgA3A/AFIAMgBSkCCDcD6AUgAyAFKQIANwPgBSADQYAGaiIHIANB8AVqIANB4AVqEAcgBSADKQKIBjcCCCAFIAMpAoAGNwIAIAMgACkCCDcD2AUgAyAAKQIANwPQBSADIAEpAgg3A8gFIAMgASkCADcDwAUgByADQdAFaiADQcAFahAHIAEgAykCiAY3AgggASADKQKABjcCACADIAYpAgg3A7gFIAMgBikCADcDsAUgAyAAKQIINwOoBSADIAApAgA3A6AFIAcgA0GwBWogA0GgBWoQByAAIAMpAogGNwIIIAAgAykCgAY3AgAgAyAEKQIINwOYBSADIAQpAgA3A5AFIAMgBikCCDcDiAUgAyAGKQIANwOABSAHIANBkAVqIANBgAVqEAcgBiADKQKIBjcCCCAGIAMpAoAGNwIAIAMgAikCCDcD+AQgAyACKQIANwPwBCADIAQpAgg3A+gEIAMgBCkCADcD4AQgByADQfAEaiADQeAEahAHIAQgAykCiAY3AgggBCADKQKABjcCACADIAMpA5gGNwPYBCADIAMpA5AGNwPQBCADIAIpAgg3A8gEIAMgAikCADcDwAQgByADQdAEaiADQcAEahAHIAMoAoAGIQggAygChAYhCSADKAKIBiEKIAIgAygCjAYgE3M2AgwgAiAKIBJzNgIIIAIgCSARczYCBCACIAggGHM2AgAgAyAFKQIINwOYBiADIAUpAgA3A5AGIAMgASkCCDcDuAQgAyABKQIANwOwBCADIAUpAgg3A6gEIAMgBSkCADcDoAQgByADQbAEaiADQaAEahAHIAUgAykCiAY3AgggBSADKQKABjcCACADIAApAgg3A5gEIAMgACkCADcDkAQgAyABKQIINwOIBCADIAEpAgA3A4AEIAcgA0GQBGogA0GABGoQByABIAMpAogGNwIIIAEgAykCgAY3AgAgAyAGKQIINwP4AyADIAYpAgA3A/ADIAMgACkCCDcD6AMgAyAAKQIANwPgAyAHIANB8ANqIANB4ANqEAcgACADKQKIBjcCCCAAIAMpAoAGNwIAIAMgBCkCCDcD2AMgAyAEKQIANwPQAyADIAYpAgg3A8gDIAMgBikCADcDwAMgByADQdADaiADQcADahAHIAYgAykCiAY3AgggBiADKQKABjcCACADIAIpAgg3A7gDIAMgAikCADcDsAMgAyAEKQIINwOoAyADIAQpAgA3A6ADIAcgA0GwA2ogA0GgA2oQByAEIAMpAogGNwIIIAQgAykCgAY3AgAgAyADKQOYBjcDmAMgAyADKQOQBjcDkAMgAyACKQIINwOIAyADIAIpAgA3A4ADIAcgA0GQA2ogA0GAA2oQByADKAKABiEIIAMoAoQGIQkgAygCiAYhCiACIAMoAowGIBdzNgIMIAIgCiAWczYCCCACIAkgFXM2AgQgAiAIIBRzNgIAIAMgBSkCCDcDmAYgAyAFKQIANwOQBiADIAEpAgg3A/gCIAMgASkCADcD8AIgAyAFKQIINwPoAiADIAUpAgA3A+ACIAcgA0HwAmogA0HgAmoQByAFIAMpAogGNwIIIAUgAykCgAY3AgAgAyAAKQIINwPYAiADIAApAgA3A9ACIAMgASkCCDcDyAIgAyABKQIANwPAAiAHIANB0AJqIANBwAJqEAcgASADKQKIBjcCCCABIAMpAoAGNwIAIAMgBikCCDcDuAIgAyAGKQIANwOwAiADIAApAgg3A6gCIAMgACkCADcDoAIgByADQbACaiADQaACahAHIAAgAykCiAY3AgggACADKQKABjcCACADIAQpAgg3A5gCIAMgBCkCADcDkAIgAyAGKQIINwOIAiADIAYpAgA3A4ACIAcgA0GQAmogA0GAAmoQByAGIAMpAogGNwIIIAYgAykCgAY3AgAgAyACKQIINwP4ASADIAIpAgA3A/ABIAMgBCkCCDcD6AEgAyAEKQIANwPgASAHIANB8AFqIANB4AFqEAcgBCADKQKIBjcCCCAEIAMpAoAGNwIAIAMgAykDmAY3A9gBIAMgAykDkAY3A9ABIAMgAikCCDcDyAEgAyACKQIANwPAASAHIANB0AFqIANBwAFqEAcgAygCgAYhCCADKAKEBiEJIAMoAogGIQogAiADKAKMBiANczYCDCACIAogDHM2AgggAiAJIBtzNgIEIAIgCCAZczYCACADIAUpAgg3A5gGIAMgBSkCADcDkAYgAyABKQIINwO4ASADIAEpAgA3A7ABIAMgBSkCCDcDqAEgAyAFKQIANwOgASAHIANBsAFqIANBoAFqEAcgBSADKQKIBjcCCCAFIAMpAoAGNwIAIAMgACkCCDcDmAEgAyAAKQIANwOQASADIAEpAgg3A4gBIAMgASkCADcDgAEgByADQZABaiADQYABahAHIAEgAykCiAY3AgggASADKQKABjcCACADIAYpAgg3A3ggAyAGKQIANwNwIAMgACkCCDcDaCADIAApAgA3A2AgByADQfAAaiADQeAAahAHIAAgAykCiAY3AgggACADKQKABjcCACADIAQpAgg3A1ggAyAEKQIANwNQIAMgBikCCDcDSCADIAYpAgA3A0AgByADQdAAaiADQUBrEAcgBiADKQKIBjcCCCAGIAMpAoAGNwIAIAMgAikCCDcDOCADIAIpAgA3AzAgAyAEKQIINwMoIAMgBCkCADcDICAHIANBMGogA0EgahAHIAQgAykCiAY3AgggBCADKQKABjcCACADIAMpA5gGNwMYIAMgAykDkAY3AxAgAyACKQIINwMIIAMgAikCADcDACAHIANBEGogAxAHIAMoAoAGIQggAygChAYhCSADKAKIBiEKIAIgAygCjAYgEHM2AgwgAiAKIA9zNgIIIAIgCSAaczYCBCACIAggDnM2AgAgC0EBaiILQQRHDQALIANBoAZqJAALCAAgAEEQEBgLBABBXwuYCgEefyMAQcACayIEJAAgBEIANwOYAiAEQgA3A5ACIARCADcDiAIgBEIANwOAAiAEQYACaiIFIAEgAhAKGiADKAAQIQsgAygAMCEMIAMoABQhDSADKAA0IQ4gAygAGCEPIAMoADghECADKAAcIREgAygAPCESIAMoACQhASADKABUIRMgAygAdCEUIAMoAGQhBiADKAAsIQcgAygAXCEVIAMoAHwhFiADKABsIQggAygAICEJIAMoAFAhFyADKABwIRggAygAYCEKIAQoApACIRkgBCgCgAIhGiAEKAKEAiEbIAQoAogCIRwgBCgCjAIhHSAEKAKUAiEeIAQoApwCIR8gBCADKAAoIiAgAygAaCIhIAMoAHhxIAMoAFggBCgCmAJzc3M2ApgCIAQgCSAKIBhxIBcgGXNzczYCkAIgBCAHIAggFnEgFSAfc3NzNgKcAiAEIAEgBiAUcSATIB5zc3M2ApQCIAQgCCAHIBJxIBEgHXNzczYCjAIgBCAhIBAgIHEgDyAcc3NzNgKIAiAEIAYgASAOcSANIBtzc3M2AoQCIAQgCiAJIAxxIAsgGnNzczYCgAIgAiAFakEAQSAgAmsQCRogACAFIAIQChogBCgCmAIhASAEKAKQAiECIAQoApwCIQYgBCgClAIhByAEKAKAAiEIIAQoAoQCIQkgBCgCiAIhCiAEKAKMAiELIAQgAykCeDcDuAIgBCADKQJwNwOwAiAEIAMpAmg3A/gBIAQgAykCYDcD8AEgBCADKQJ4NwPoASAEIAMpAnA3A+ABIARBoAJqIgUgBEHwAWogBEHgAWoQByADIAQpAqgCNwJ4IAMgBCkCoAI3AnAgBCADKQJYNwPYASAEIAMpAlA3A9ABIAQgAykCaDcDyAEgBCADKQJgNwPAASAFIARB0AFqIARBwAFqEAcgAyAEKQKoAjcCaCADIAQpAqACNwJgIAQgAykCSDcDuAEgBCADQUBrIgApAgA3A7ABIAQgAykCWDcDqAEgBCADKQJQNwOgASAFIARBsAFqIARBoAFqEAcgAyAEKQKoAjcCWCADIAQpAqACNwJQIAQgAykCODcDmAEgBCADKQIwNwOQASAEIAMpAkg3A4gBIAQgACkCADcDgAEgBSAEQZABaiAEQYABahAHIAMgBCkCqAI3AkggACAEKQKgAjcCACAEIAMpAig3A3ggBCADKQIgNwNwIAQgAykCODcDaCAEIAMpAjA3A2AgBSAEQfAAaiAEQeAAahAHIAMgBCkCqAI3AjggAyAEKQKgAjcCMCAEIAMpAhg3A1ggBCADKQIQNwNQIAQgAykCKDcDSCAEIAMpAiA3A0AgBSAEQdAAaiAEQUBrEAcgAyAEKQKoAjcCKCADIAQpAqACNwIgIAQgAykCCDcDOCAEIAMpAgA3AzAgBCADKQIYNwMoIAQgAykCEDcDICAFIARBMGogBEEgahAHIAMgBCkCqAI3AhggAyAEKQKgAjcCECAEIAQpA7gCNwMYIAQgBCkDsAI3AxAgBCADKQIINwMIIAQgAykCADcDACAFIARBEGogBBAHIAMgBCkCqAI3AgggAyAEKQKgAjcCACADIAsgAygADHM2AgwgAyAKIAMoAAhzNgIIIAMgCSADKAAEczYCBCADIAggAygAAHM2AgAgACACIAAoAABzNgIAIAMgByADKABEczYCRCADIAEgAygASHM2AkggAyAGIAMoAExzNgJMIARBwAJqJAALkQkBHn8jAEGgAmsiAyQAIAIoABAhDiACKAAwIQ8gAigAFCEQIAEoAAQhESACKAA0IRIgAigAGCETIAEoAAghFCACKAA4IRUgAigAHCEIIAEoAAwhFiACKAA8IRcgAigAICEFIAIoAFAhCSABKAAQIRggAigAcCEZIAIoAGAhBCACKAAkIQYgAigAVCEKIAEoABQhGiACKAB0IRsgAigAZCEMIAIoACghByACKABYIQsgASgAGCEcIAIoAHghHSACKABoIQ0gASgAACEeIAAgAigALCIfIAIoAGwiICACKAB8cSACKABcIAEoABxzc3MiATYAHCAAIAcgDSAdcSALIBxzc3MiCzYAGCAAIAYgDCAbcSAKIBpzc3MiCjYAFCAAIAUgBCAZcSAJIBhzc3MiCTYAECAAICAgFyAfcSAIIBZzc3MiCDYADCAAIA0gByAVcSATIBRzc3MiBzYACCAAIAwgBiAScSAQIBFzc3MiBjYABCAAIAQgBSAPcSAOIB5zc3MiBTYAACADIAIpAng3A5gCIAMgAikCcDcDkAIgAyACKQJoNwP4ASADIAIpAmA3A/ABIAMgAikCeDcD6AEgAyACKQJwNwPgASADQYACaiIEIANB8AFqIANB4AFqEAcgAiADKQKIAjcCeCACIAMpAoACNwJwIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAmg3A8gBIAMgAikCYDcDwAEgBCADQdABaiADQcABahAHIAIgAykCiAI3AmggAiADKQKAAjcCYCADIAIpAkg3A7gBIAMgAkFAayIAKQIANwOwASADIAIpAlg3A6gBIAMgAikCUDcDoAEgBCADQbABaiADQaABahAHIAIgAykCiAI3AlggAiADKQKAAjcCUCADIAIpAjg3A5gBIAMgAikCMDcDkAEgAyACKQJINwOIASADIAApAgA3A4ABIAQgA0GQAWogA0GAAWoQByACIAMpAogCNwJIIAAgAykCgAI3AgAgAyACKQIoNwN4IAMgAikCIDcDcCADIAIpAjg3A2ggAyACKQIwNwNgIAQgA0HwAGogA0HgAGoQByACIAMpAogCNwI4IAIgAykCgAI3AjAgAyACKQIYNwNYIAMgAikCEDcDUCADIAIpAig3A0ggAyACKQIgNwNAIAQgA0HQAGogA0FAaxAHIAIgAykCiAI3AiggAiADKQKAAjcCICADIAIpAgg3AzggAyACKQIANwMwIAMgAikCGDcDKCADIAIpAhA3AyAgBCADQTBqIANBIGoQByACIAMpAogCNwIYIAIgAykCgAI3AhAgAyADKQOYAjcDGCADIAMpA5ACNwMQIAMgAikCCDcDCCADIAIpAgA3AwAgBCADQRBqIAMQByACIAMpAogCNwIIIAIgAykCgAI3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AGghDyABKAAAIRAgACACKAAsIh8gASgAHCIBIAIoAFwgAigAbCIgIAIoAHxxc3NzNgAcIAAgDSAOIB0gDyAecXNzczYAGCAAIAogCyAbIAwgHHFzc3M2ABQgACAEIAggGSAJIBpxc3NzNgAQIAAgICAHIBcgGCAfcXNzczYADCAAIA8gBiAVIA0gFnFzc3M2AAggACAMIAUgEyAKIBRxc3NzNgAEIAAgCSAQIBEgBCAScXNzczYAACADIAIpAng3A5gCIAMgAikCcDcDkAIgAyACKQJoNwP4ASADIAIpAmA3A/ABIAMgAikCeDcD6AEgAyACKQJwNwPgASADQYACaiIEIANB8AFqIANB4AFqEAcgAiADKQKIAjcCeCACIAMpAoACNwJwIAMgAikCWDcD2AEgAyACKQJQNwPQASADIAIpAmg3A8gBIAMgAikCYDcDwAEgBCADQdABaiADQcABahAHIAIgAykCiAI3AmggAiADKQKAAjcCYCADIAIpAkg3A7gBIAMgAkFAayIAKQIANwOwASADIAIpAlg3A6gBIAMgAikCUDcDoAEgBCADQbABaiADQaABahAHIAIgAykCiAI3AlggAiADKQKAAjcCUCADIAIpAjg3A5gBIAMgAikCMDcDkAEgAyACKQJINwOIASADIAApAgA3A4ABIAQgA0GQAWogA0GAAWoQByACIAMpAogCNwJIIAAgAykCgAI3AgAgAyACKQIoNwN4IAMgAikCIDcDcCADIAIpAjg3A2ggAyACKQIwNwNgIAQgA0HwAGogA0HgAGoQByACIAMpAogCNwI4IAIgAykCgAI3AjAgAyACKQIYNwNYIAMgAikCEDcDUCADIAIpAig3A0ggAyACKQIgNwNAIAQgA0HQAGogA0FAaxAHIAIgAykCiAI3AiggAiADKQKAAjcCICADIAIpAgg3AzggAyACKQIANwMwIAMgAikCGDcDKCADIAIpAhA3AyAgBCADQTBqIANBIGoQByACIAMpAogCNwIYIAIgAykCgAI3AhAgAyADKQOYAjcDGCADIAMpA5ACNwMQIAMgAikCCDcDCCADIAIpAgA3AwAgBCADQRBqIAMQByACIAMpAogCNwIIIAIgAykCgAI3AgAgAiAHIAIoAAxzNgIMIAIgBiACKAAIczYCCCACIAUgAigABHM2AgQgAiAQIAIoAABzNgIAIAAgCCAAKAAAczYCACACIAsgAigARHM2AkQgAiAOIAIoAEhzNgJIIAIgASACKABMczYCTCADQaACaiQAC5kNARJ/IwBBoARrIgIkACAAKAA8IQQgACgAOCEFIAAoADQhBiAAKAAwIQcgACgAICEIIAAoACQhCSAAKAAoIQogACgALCELIAAoABwhDCAAKAAYIQ0gACgAFCEOIAAoABAhDyAAKAAEIRAgACgACCERIAAoAAwhEiAAKAAAIRMgAiABKQJ4NwOYBCACIAEpAnA3A5AEIAIgASkCaDcD+AMgAiABKQJgNwPwAyACIAEpAng3A+gDIAIgASkCcDcD4AMgAkGABGoiAyACQfADaiACQeADahAHIAEgAikCiAQ3AnggASACKQKABDcCcCACIAEpAlg3A9gDIAIgASkCUDcD0AMgAiABKQJoNwPIAyACIAEpAmA3A8ADIAMgAkHQA2ogAkHAA2oQByABIAIpAogENwJoIAEgAikCgAQ3AmAgAiABKQJINwO4AyACIAFBQGsiACkCADcDsAMgAiABKQJYNwOoAyACIAEpAlA3A6ADIAMgAkGwA2ogAkGgA2oQByABIAIpAogENwJYIAEgAikCgAQ3AlAgAiABKQI4NwOYAyACIAEpAjA3A5ADIAIgASkCSDcDiAMgAiAAKQIANwOAAyADIAJBkANqIAJBgANqEAcgASACKQKIBDcCSCAAIAIpAoAENwIAIAIgASkCKDcD+AIgAiABKQIgNwPwAiACIAEpAjg3A+gCIAIgASkCMDcD4AIgAyACQfACaiACQeACahAHIAEgAikCiAQ3AjggASACKQKABDcCMCACIAEpAhg3A9gCIAIgASkCEDcD0AIgAiABKQIoNwPIAiACIAEpAiA3A8ACIAMgAkHQAmogAkHAAmoQByABIAIpAogENwIoIAEgAikCgAQ3AiAgAiABKQIINwO4AiACIAEpAgA3A7ACIAIgASkCGDcDqAIgAiABKQIQNwOgAiADIAJBsAJqIAJBoAJqEAcgASACKQKIBDcCGCABIAIpAoAENwIQIAIgAikDmAQ3A5gCIAIgAikDkAQ3A5ACIAIgASkCCDcDiAIgAiABKQIANwOAAiADIAJBkAJqIAJBgAJqEAcgASACKQKIBDcCCCABIAIpAoAENwIAIAEgEiABKAAMczYCDCABIBEgASgACHM2AgggASAQIAEoAARzNgIEIAEgEyABKAAAczYCACAAIA8gACgAAHM2AgAgASAOIAEoAERzNgJEIAEgDSABKABIczYCSCABIAwgASgATHM2AkwgAiABKQJ4NwOYBCACIAEpAnA3A5AEIAIgASkCaDcD+AEgAiABKQJgNwPwASACIAEpAng3A+gBIAIgASkCcDcD4AEgAyACQfABaiACQeABahAHIAEgAikCiAQ3AnggASACKQKABDcCcCACIAEpAlg3A9gBIAIgASkCUDcD0AEgAiABKQJoNwPIASACIAEpAmA3A8ABIAMgAkHQAWogAkHAAWoQByABIAIpAogENwJoIAEgAikCgAQ3AmAgAiABKQJINwO4ASACIAApAgA3A7ABIAIgASkCWDcDqAEgAiABKQJQNwOgASADIAJBsAFqIAJBoAFqEAcgASACKQKIBDcCWCABIAIpAoAENwJQIAIgASkCODcDmAEgAiABKQIwNwOQASACIAEpAkg3A4gBIAIgACkCADcDgAEgAyACQZABaiACQYABahAHIAEgAikCiAQ3AkggACACKQKABDcCACACIAEpAig3A3ggAiABKQIgNwNwIAIgASkCODcDaCACIAEpAjA3A2AgAyACQfAAaiACQeAAahAHIAEgAikCiAQ3AjggASACKQKABDcCMCACIAEpAhg3A1ggAiABKQIQNwNQIAIgASkCKDcDSCACIAEpAiA3A0AgAyACQdAAaiACQUBrEAcgASACKQKIBDcCKCABIAIpAoAENwIgIAIgASkCCDcDOCACIAEpAgA3AzAgAiABKQIYNwMoIAIgASkCEDcDICADIAJBMGogAkEgahAHIAEgAikCiAQ3AhggASACKQKABDcCECACIAIpA5gENwMYIAIgAikDkAQ3AxAgAiABKQIINwMIIAIgASkCADcDACADIAJBEGogAhAHIAEgAikCiAQ3AgggASACKQKABDcCACABIAsgASgADHM2AgwgASAKIAEoAAhzNgIIIAEgCSABKAAEczYCBCABIAggASgAAHM2AgAgACAHIAAoAABzNgIAIAEgBiABKABEczYCRCABIAUgASgASHM2AkggASAEIAEoAExzNgJMIAJBoARqJAALvQkBEX8jAEGgAmsiAyQAIAEoAAQhECABKAAIIREgASgADCESIAAoAAQhCyAAKAAIIQwgACgADCENIAEoAAAhEyACQfAAaiIBIAAoAAAiDkGAgoQQcyIANgIAIAJB4ABqIgYgDkHb++CoBXM2AgAgAkHQAGoiByAANgIAIAJBQGsiACAOIBNzIgU2AgAgAkKgosSRtK6tlF03AjggAkEwaiIIQtv74KjVzfCXcTcCACACQpXE3MmFsvq84gA3AiggAkEgaiIJQoCChJCwoIGEDTcCACACQqCixJG0rq2UXTcCGCACQRBqIgpC2/vgqNXN8JdxNwIAIAIgBTYCACACIA1BkNPnkwZzIgU2AnwgAiAMQZXE3MkFcyIENgJ4IAIgC0GDiqDoAHMiDzYCdCACIA1B8+qi6X1zNgJsIAIgDEGgosSRBHM2AmggAiALQe2Ev4l/czYCZCACIAU2AlwgAiAENgJYIAIgDzYCVCACIA0gEnMiBTYCTCACIAwgEXMiBDYCSCACIAsgEHMiDzYCRCACIAU2AgwgAiAENgIIIAIgDzYCBEEAIQUDQCADIAEpAgg3A5gCIAMgASkCADcDkAIgAyAGKQIINwP4ASADIAYpAgA3A/ABIAMgASkCCDcD6AEgAyABKQIANwPgASADQYACaiIEIANB8AFqIANB4AFqEAcgASADKQKIAjcCCCABIAMpAoACNwIAIAMgBykCCDcD2AEgAyAHKQIANwPQASADIAYpAgg3A8gBIAMgBikCADcDwAEgBCADQdABaiADQcABahAHIAYgAykCiAI3AgggBiADKQKAAjcCACADIAApAgg3A7gBIAMgACkCADcDsAEgAyAHKQIINwOoASADIAcpAgA3A6ABIAQgA0GwAWogA0GgAWoQByAHIAMpAogCNwIIIAcgAykCgAI3AgAgAyAIKQIINwOYASADIAgpAgA3A5ABIAMgACkCCDcDiAEgAyAAKQIANwOAASAEIANBkAFqIANBgAFqEAcgACADKQKIAjcCCCAAIAMpAoACNwIAIAMgCSkCCDcDeCADIAkpAgA3A3AgAyAIKQIINwNoIAMgCCkCADcDYCAEIANB8ABqIANB4ABqEAcgCCADKQKIAjcCCCAIIAMpAoACNwIAIAMgCikCCDcDWCADIAopAgA3A1AgAyAJKQIINwNIIAMgCSkCADcDQCAEIANB0ABqIANBQGsQByAJIAMpAogCNwIIIAkgAykCgAI3AgAgAyACKQIINwM4IAMgAikCADcDMCADIAopAgg3AyggAyAKKQIANwMgIAQgA0EwaiADQSBqEAcgCiADKQKIAjcCCCAKIAMpAoACNwIAIAMgAykDmAI3AxggAyADKQOQAjcDECADIAIpAgg3AwggAyACKQIANwMAIAQgA0EQaiADEAcgAiADKQKIAjcCCCACIAMpAoACNwIAIAIgAigADCASczYCDCACIAIoAAggEXM2AgggAiACKAAEIBBzNgIEIAIgAigAACATczYCACAAIAAoAAAgDnM2AgAgAiACKABEIAtzNgJEIAIgAigASCAMczYCSCACIAIoAEwgDXM2AkwgBUEBaiIFQQpHDQALIANBoAJqJAALzwQBCX8jAEGAAWsiAyQAIABBATYCACAAQgA3AgQgAEIANwIMIABCADcCFCAAQgA3AhwgAEKAgICAEDcCJCAAQSxqQQBBzAAQCRogACABQcAHbEGAFWoiASACIAJBH3UgAnFBAXRrIgRBAXNB/wFxQQFrQR92EBUgACABQfgAaiAEQQJzQf8BcUEBa0EfdhAVIAAgAUHwAWogBEEDc0H/AXFBAWtBH3YQFSAAIAFB6AJqIARBBHNB/wFxQQFrQR92EBUgACABQeADaiAEQQVzQf8BcUEBa0EfdhAVIAAgAUHYBGogBEEGc0H/AXFBAWtBH3YQFSAAIAFB0AVqIARBB3NB/wFxQQFrQR92EBUgACABQcgGaiAEQQhzQf8BcUEBa0EfdhAVIAMgACkCSDcDKCADIABBQGspAgA3AyAgAyAAKQI4NwMYIAMgACkCMDcDECADIAApAig3AwggAyAAKQIINwM4IANBQGsgACkCEDcDACADIAApAhg3A0ggAyAAKQIgNwNQIAMgACkCADcDMCAAKAJUIQEgACgCWCEEIAAoAlwhBSAAKAJgIQYgACgCZCEHIAAoAmghCCAAKAJsIQkgACgCcCEKIAAoAlAhCyADQQAgACgCdGs2AnwgA0EAIAprNgJ4IANBACAJazYCdCADQQAgCGs2AnAgA0EAIAdrNgJsIANBACAGazYCaCADQQAgBWs2AmQgA0EAIARrNgJgIANBACABazYCXCADQQAgC2s2AlggACADQQhqIAJBgAFxQQd2EBUgA0GAAWokAAvwCQEdfyABKAIEIQQgASgCLCEDIAEoAgghBSABKAIwIQYgASgC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BSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSACIAIQBSAFIAIgBRAGIAIgBRAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAhAFIAIgAiAFEAYgBCACEAVBASECA0AgBCAEEAUgAkEBaiICQeQARw0ACyAEQTBqIgIgBCACEAYgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgAiACEAUgBEHgAGoiBSACIAUQBiAFIAUQBSAFIAUQBSAAIAUgABAGIARBkAFqJAAgACAAIAcQBiAAIAAgCBAGIANB4ABqIgIgABAFIAIgAiAGEAYgAyADKAKEASICIBRrNgJUIAMgAygCgAEiBCATazYCUCADIAMoAnwiBSASazYCTCADIAMoAngiBiARazYCSCADIAMoAnQiByAQazYCRCADIAMoAnAiCCAPazYCQCADIAMoAmwiFSAOazYCPCADIAMoAmgiFiANazYCOCAD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QUBrIQAgAUJAfCIBQj9WDQALIAFQDQELQQAhAiAEQSBqIARB4ABqIAQQLyABpyIGQQNxIQdBACEDIAFCBFoEQCAGQTxxIQhBACEGA0AgACADaiAEQSBqIgkgA2otAAA6AAAgACADQQFyIgVqIAUgCWotAAA6AAAgACADQQJyIgVqIARBIGogBWotAAA6AAAgACADQQNyIgVqIARBIGogBWotAAA6AAAgA0EEaiEDIAZBBGoiBiAIRw0ACwsgB0UNAANAIAAgA2ogBEEgaiADai0AADoAACADQQFqIQMgAkEBaiICIAdHDQALCyAEQSBqQcAAEAggBEEgEAgLIARB8ABqJABBAAuGBgEUfyMAQbACayICJAAgACABLQAAOgAAIAAgAS0AAToAASAAIAEtAAI6AAIgACABLQADOgADIAAgAS0ABDoABCAAIAEtAAU6AAUgACABLQAGOgAGIAAgAS0ABzoAByAAIAEtAAg6AAggACABLQAJOgAJIAAgAS0ACjoACiAAIAEtAAs6AAsgACABLQAMOgAMIAAgAS0ADToADSAAIAEtAA46AA4gACABLQAPOgAPIAAgAS0AEDoAECAAIAEtABE6ABEgACABLQASOgASIAAgAS0AEzoAEyAAIAEtABQ6ABQgACABLQAVOgAVIAAgAS0AFjoAFiAAIAEtABc6ABcgACABLQAYOgAYIAAgAS0AGToAGSAAIAEtABo6ABogACABLQAbOgAbIAAgAS0AHDoAHCAAIAEtAB06AB0gACABLQAeOgAeIAEtAB8hASAAIAAtAABB+AFxOgAAIAAgAUE/cUHAAHI6AB8gAkEwaiAAEDEgAigCgAEhASACKAJYIQMgAigChAEhBCACKAJcIQUgAigCiAEhBiACKAJgIQcgAigCjAEhCCACKAJkIQkgAigCkAEhCiACKAJoIQsgAigClAEhDCACKAJsIQ0gAigCmAEhDiACKAJwIQ8gAigCnAEhECACKAJ0IREgAigCoAEhEiACKAJ4IRMgAiACKAJ8IhQgAigCpAEiFWo2AqQCIAIgEiATajYCoAIgAiAQIBFqNgKcAiACIA4gD2o2ApgCIAIgDCANajYClAIgAiAKIAtqNgKQAiACIAggCWo2AowCIAIgBiAHajYCiAIgAiAEIAVqNgKEAiACIAEgA2o2AoACIAIgFSAUazYC9AEgAiASIBNrNgLwASACIBAgEWs2AuwBIAIgDiAPazYC6AEgAiAMIA1rNgLkASACIAogC2s2AuABIAIgCCAJazYC3AEgAiAGIAdrNgLYASACIAQgBWs2AtQBIAIgASADazYC0AEgAkHQAWoiASABEDMgAiACQYACaiABEAYgACACEBYgAkGwAmokAEEAC+scAj5/DH4jAEHwAmsiAyQAA0AgAiAGai0AACIEIAZBgIcCaiIJLQAAcyAHciEHIAQgCS0AwAFzIAVyIQUgBCAJLQCgAXMgDHIhDCAEIAktAIABcyAIciEIIAQgCS0AYHMgDXIhDSAEIAlBQGstAABzIAtyIQsgBCAJLQAgcyAKciEKIAZBAWoiBkEfRw0AC0F/IQkgAi0AH0H/AHEiBCAKckH/AXFBAWsgBCAHckH/AXFBAWtyIAQgC3JB/wFxQQFrciAEQdcAcyANckH/AXFBAWtyIARB/wBzIgQgCHJB/wFxQQFrciAEIAxyQf8BcUEBa3IgBCAFckH/AXFBAWtyQYACcUUEQCADIAEpABg3A+gCIAMgASkAEDcD4AIgAyABKQAAIkM3A9ACIAMgASkACDcD2AIgAyBDp0H4AXE6ANACIAMgAy0A7wJBP3FBwAByOgDvAiADQaACaiACEGAgA0IANwKEAiADQgA3AowCIANBADYClAIgA0IANwPQASADQgA3A9gBIANCADcD4AEgAyADKQOwAjcDoAEgAyADKQO4AjcDqAEgAyADKQPAAjcDsAEgA0IANwL0ASADQQE2AvABIANCADcC/AEgA0IANwPAASADQgA3A8gBIAMgAykDoAI3A5ABIAMgAykDqAI3A5gBIANCADcCdCADQgA3AnwgA0EANgKEASADQgA3AmQgA0EBNgJgIANCADcCbEH+ASECQQAhBANAIAMoApQCIQkgAygCtAEhBiADKAJgIQcgAygCwAEhCiADKAKQASELIAMoAvABIQ0gAygCZCEIIAMoAsQBIQwgAygClAEhBSADKAL0ASEQIAMoAmghDiADKALIASERIAMoApgBIRIgAygC+AEhEyADKAJsIQ8gAygCzAEhFCADKAKcASEVIAMoAvwBIRcgAygCcCEYIAMoAtABIRwgAygCoAEhHSADKAKAAiEeIAMoAnQhGSADKALUASEfIAMoAqQBISAgAygChAIhISADKAJ4IRogAygC2AEhIiADKAKoASEjIAMoAogCISQgAygCfCEbIAMoAtwBISUgAygCrAEhJiADKAKMAiEnIAMoAoABIRYgAygC4AEhKCADKAKwASEpIAMoApACISwgA0EAIAQgA0HQAmoiLSACIgFBA3ZqLQAAIAJBB3F2QQFxIgRzayICIAMoAoQBIiogAygC5AEiK3NxIi4gKnMiKjYChAEgAyAGIAYgCXMgAnEiL3MiMCAqazYCVCADIBYgFiAocyACcSIxcyIGNgKAASADICkgKSAscyACcSIWcyIpIAZrNgJQIAMgGyAbICVzIAJxIjJzIhs2AnwgAyAmICYgJ3MgAnEiM3MiJiAbazYCTCADIBogGiAicyACcSI0cyIaNgJ4IAMgIyAjICRzIAJxIjVzIiMgGms2AkggAyAZIBkgH3MgAnEiNnMiGTYCdCADICAgICAhcyACcSI3cyIgIBlrNgJEIAMgGCAYIBxzIAJxIjhzIhg2AnAgAyAdIB0gHnMgAnEiOXMiHSAYazYCQCADIA8gDyAUcyACcSI6cyIPNgJsIAMgFSAVIBdzIAJxIjtzIhUgD2s2AjwgAyAOIA4gEXMgAnEiPHMiDjYCaCADIBIgEiATcyACcSI9cyISIA5rNgI4IAMgCCAIIAxzIAJxIj5zIgg2AmQgAyAFIAUgEHMgAnEiP3MiBSAIazYCNCADIAcgByAKcyACcSJAcyIHNgJgIAMgCyALIA1zIAJxIgJzIgsgB2s2AjAgAyAJIC9zIgkgKyAucyIrazYCJCADIBYgLHMiFiAoIDFzIihrNgIgIAMgJyAzcyInICUgMnMiJWs2AhwgAyAkIDVzIiQgIiA0cyIiazYCGCADICEgN3MiISAfIDZzIh9rNgIUIAMgHiA5cyIeIBwgOHMiHGs2AhAgAyAXIDtzIhcgFCA6cyIUazYCDCADIBMgPXMiEyARIDxzIhFrNgIIIAMgECA/cyIQIAwgPnMiDGs2AgQgAyACIA1zIgIgCiBAcyIKazYCACADIAkgK2o2ApQCIAMgFiAoajYCkAIgAyAlICdqNgKMAiADICIgJGo2AogCIAMgHyAhajYChAIgAyAcIB5qNgKAAiADIBEgE2o2AvgBIAMgDCAQajYC9AEgAyACIApqNgLwASADIBQgF2o2AvwBIAMgKiAwajYC5AEgAyAGIClqNgLgASADIBsgJmo2AtwBIAMgGiAjajYC2AEgAyAZICBqNgLUASADIBggHWo2AtABIAMgDyAVajYCzAEgAyAOIBJqNgLIASADIAUgCGo2AsQBIAMgByALajYCwAEgA0HgAGoiGyADQTBqIhogA0HwAWoiGRAGIANBwAFqIhYgFiADEAYgGiADEAUgAyAZEAUgAygCwAEhAiADKAJgIQkgAygCxAEhBiADKAJkIQcgAygCyAEhCiADKAJoIQsgAygCzAEhDSADKAJsIQggAygC0AEhDCADKAJwIQUgAygC1AEhECADKAJ0IQ4gAygC2AEhESADKAJ4IRIgAygC3AEhEyADKAJ8IQ8gAygC4AEhFCADKAKAASEVIAMgAygC5AEiFyADKAKEASIYajYCtAEgAyAUIBVqNgKwASADIA8gE2o2AqwBIAMgESASajYCqAEgAyAOIBBqNgKkASADIAUgDGo2AqABIAMgCCANajYCnAEgAyAKIAtqNgKYASADIAYgB2o2ApQBIAMgAiAJajYCkAEgAyAYIBdrNgLkASADIBUgFGs2AuABIAMgDyATazYC3AEgAyASIBFrNgLYASADIA4gEGs2AtQBIAMgBSAMazYC0AEgAyAIIA1rNgLMASADIAsgCms2AsgBIAMgByAGazYCxAEgAyAJIAJrNgLAASAZIAMgGhAGIAMoAjQhAiADKAIEIQUgAygCOCEJIAMoAgghECADKAJAIQYgAygCECEOIAMoAjwhByADKAIMIREgAygCSCEKIAMoAhghEiADKAJEIQsgAygCFCETIAMoAlAhDSADKAIgIQ8gAygCTCEIIAMoAhwhFCADKAJUIQwgAygCJCEVIAMgAygCACADKAIwIhdrIhg2AgAgAyAVIAxrIhU2AiQgAyAUIAhrIhQ2AhwgAyAPIA1rIg82AiAgAyATIAtrIhM2AhQgAyASIAprIhI2AhggAyARIAdrIhE2AgwgAyAOIAZrIg42AhAgAyAQIAlrIhA2AgggAyAFIAJrIgU2AgQgFiAWEAUgAyAVrELCtgd+IkNCgICACHwiR0IZh0ITfiAYrELCtgd+fCJBIEFCgICAEHwiQUKAgIDgD4N9pyIVNgJgIAMgBaxCwrYHfiJCIEJCgICACHwiQkKAgIDwD4N9IEFCGoh8pyIFNgJkIAMgEKxCwrYHfiBCQhmHfCJBIEFCgICAEHwiQUKAgIDgD4N9pyIQNgJoIAMgDqxCwrYHfiARrELCtgd+IkJCgICACHwiSEIZh3wiRCBEQoCAgBB8IkRCgICA4A+DfaciDjYCcCADIBKsQsK2B34gE6xCwrYHfiJJQoCAgAh8IkpCGYd8IkUgRUKAgIAQfCJFQoCAgOAPg32nIhE2AnggAyAPrELCtgd+IBSsQsK2B34iS0KAgIAIfCJMQhmHfCJGIEZCgICAEHwiRkKAgIDgD4N9pyISNgKAASADIEFCGoggQnwgSEKAgIDwD4N9pyITNgJsIAMgREIaiCBJfCBKQoCAgPAPg32nIg82AnQgAyBFQhqIIEt8IExCgICA8A+DfaciFDYCfCADIEZCGoggQ3wgR0KAgIDwD4N9pyIYNgKEASADQZABaiIcIBwQBSADIAwgGGo2AlQgAyANIBJqNgJQIAMgCCAUajYCTCADIAogEWo2AkggAyALIA9qNgJEIAMgBiAOajYCQCADIAcgE2o2AjwgAyAJIBBqNgI4IAMgAiAFajYCNCADIBUgF2o2AjAgAUEBayECIBsgA0GgAmogFhAGIBYgAyAaEAYgAQ0ACyADKAKQASEQIAMoAvABIQIgAygClAEhDiADKAL0ASEGIAMoApgBIREgAygC+AEhByADKAKcASESIAMoAvwBIQogAygCoAEhEyADKAKAAiELIAMoAqQBIQ8gAygChAIhDSADKAKoASEUIAMoAogCIQggAygCrAEhFSADKAKMAiEMIAMoArABIRcgAygCkAIhBSADQQAgBGsiASADKAKUAiIEIAMoArQBc3EgBHM2ApQCIAMgBSAFIBdzIAFxczYCkAIgAyAMIAwgFXMgAXFzNgKMAiADIAggCCAUcyABcXM2AogCIAMgDSANIA9zIAFxczYChAIgAyALIAsgE3MgAXFzNgKAAiADIAogCiAScyABcXM2AvwBIAMgByAHIBFzIAFxczYC+AEgAyAGIAYgDnMgAXFzNgL0ASADIAIgAiAQcyABcXM2AvABIAMoAsABIQIgAygCYCEFIAMoAsQBIQQgAygCZCEQIAMoAsgBIQYgAygCaCEOIAMoAswBIQcgAygCbCERIAMoAtABIQogAygCcCESIAMoAtQBIQsgAygCdCETIAMoAtgBIQ0gAygCeCEPIAMoAtwBIQggAygCfCEUIAMoAuABIQwgAygCgAEhFSADIAMoAuQBIhcgAygChAFzIAFxIBdzNgLkASADIAwgDCAVcyABcXM2AuABIAMgCCAIIBRzIAFxczYC3AEgAyANIA0gD3MgAXFzNgLYASADIAsgCyATcyABcXM2AtQBIAMgCiAKIBJzIAFxczYC0AEgAyAHIAcgEXMgAXFzNgLMASADIAYgBiAOcyABcXM2AsgBIAMgBCAEIBBzIAFxczYCxAEgAyACIAIgBXMgAXFzNgLAASAWIBYQMyAZIBkgFhAGIAAgGRAWIC1BIBAIQQAhCQsgA0HwAmokACAJC+4LAQd/AkAgAEUNACAAQQhrIgMgAEEEaygCACIBQXhxIgBqIQUCQCABQQFxDQAgAUECcUUNASADIAMoAgAiAWsiA0GUogIoAgBJDQEgACABaiEAAkACQAJAQZiiAigCACADRwRAIAMoAgwhAiABQf8BTQRAIAIgAygCCCIERw0CQYSiAkGEogIoAgBBfiABQQN2d3E2AgAMBQsgAygCGCEGIAIgA0cEQCADKAIIIgEgAjYCDCACIAE2AggMBAsgAygCFCIBBH8gA0EUagUgAygCECIBRQ0DIANBEGoLIQQDQCAEIQcgASICQRRqIQQgAigCFCIBDQAgAkEQaiEEIAIoAhAiAQ0ACyAHQQA2AgAMAwsgBSgCBCIBQQNxQQNHDQNBjKICIAA2AgAgBSABQX5xNgIEIAMgAEEBcjYCBCAFIAA2AgAPCyAEIAI2AgwgAiAENgIIDAILQQAhAgsgBkUNAAJAIAMoAhwiAUECdEG0pAJqIgQoAgAgA0YEQCAEIAI2AgAgAg0BQYiiAkGIogIoAgBBfiABd3E2AgAMAgsgBkEQQRQgBigCECADRhtqIAI2AgAgAkUNAQsgAiAGNgIYIAMoAhAiAQRAIAIgATYCECABIAI2AhgLIAMoAhQiAUUNACACIAE2AhQgASACNgIYCyADIAVPDQAgBSgCBCIBQQFxRQ0AAkACQAJAAkAgAUECcUUEQEGcogIoAgAgBUYEQEGcogIgAzYCAEGQogJBkKICKAIAIABqIgA2AgAgAyAAQQFyNgIEIANBmKICKAIARw0GQYyiAkEANgIAQZiiAkEANgIADwtBmKICKAIAIAVGBEBBmKICIAM2AgBBjKICQYyiAigCACAAaiIANgIAIAMgAEEBcjYCBCAAIANqIAA2AgAPCyABQXhxIABqIQAgBSgCDCECIAFB/wFNBEAgBSgCCCIEIAJGBEBBhKICQYSiAigCAEF+IAFBA3Z3cTYCAAwFCyAEIAI2AgwgAiAENgIIDAQLIAUoAhghBiACIAVHBEAgBSgCCCIBIAI2AgwgAiABNgIIDAMLIAUoAhQiAQR/IAVBFGoFIAUoAhAiAUUNAiAFQRBqCyEEA0AgBCEHIAEiAkEUaiEEIAIoAhQiAQ0AIAJBEGohBCACKAIQIgENAAsgB0EANgIADAILIAUgAUF+cTYCBCADIABBAXI2AgQgACADaiAANgIADAMLQQAhAgsgBkUNAAJAIAUoAhwiAUECdEG0pAJqIgQoAgAgBUYEQCAEIAI2AgAgAg0BQYiiAkGIogIoAgBBfiABd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAI2AgAgAkUNAQsgAiAGNgIYIAUoAhAiAQRAIAIgATYCECABIAI2AhgLIAUoAhQiAUUNACACIAE2AhQgASACNgIYCyADIABBAXI2AgQgACADaiAANgIAIANBmKICKAIARw0AQYyiAiAANgIADwsgAEH/AU0EQCAAQXhxQayiAmohAQJ/QYSiAigCACIEQQEgAEEDdnQiAHFFBEBBhKICIAAgBHI2AgAgAQwBCyABKAIICyEAIAEgAzYCCCAAIAM2AgwgAyABNgIMIAMgADYCCA8LQR8hAiAAQf///wdNBEAgAEEmIABBCHZnIgFrdkEBcSABQQF0a0E+aiECCyADIAI2AhwgA0IANwIQIAJBAnRBtKQCaiEHAn8CQAJ/QYiiAigCACIBQQEgAnQiBHFFBEBBiKICIAEgBHI2AgBBGCECIAchBEEIDAELIABBGSACQQF2a0EAIAJBH0cbdCECIAcoAgAhBANAIAQiASgCBEF4cSAARg0CIAJBHXYhBCACQQF0IQIgASAEQQRxakEQaiIHKAIAIgQNAAtBGCECIAEhBEEICyEAIAMiAQwBCyABKAIIIgQgAzYCDEEIIQIgAUEIaiEHQRghAEEACyEFIAcgAzYCACACIANqIAQ2AgAgAyABNgIMIAAgA2ogBTYCAEGkogJBpKICKAIAQQFrIgBBfyAAGzYCAAsLwCgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQYSiAigCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUGsogJqIgAgAUG0ogJqKAIAIgEoAggiBUYEQEGEogIgBEF+IAJ3cTYCAAwBCyAFIAA2AgwgACAFNgIICyABQQhqIQAgASACQQN0IgJBA3I2AgQgASACaiIBIAEoAgRBAXI2AgQMCwsgBkGMogIoAgAiCE0NASABBEACQEECIAB0IgJBACACa3IgASAAdHFoIgFBA3QiAEGsogJqIgIgAEG0ogJqKAIAIgAoAggiBUYEQEGEogIgBEF+IAF3cSIENgIADAELIAUgAjYCDCACIAU2AggLIAAgBkEDcjYCBCAAIAZqIgcgAUEDdCIBIAZrIgVBAXI2AgQgACABaiAFNgIAIAgEQCAIQXhxQayiAmohAUGYogIoAgAhAgJ/IARBASAIQQN2dCIDcUUEQEGEogIgAyAEcjYCACABDAELIAEoAggLIQMgASACNgIIIAMgAjYCDCACIAE2AgwgAiADNgIICyAAQQhqIQBBmKICIAc2AgBBjKICIAU2AgAMCwtBiKICKAIAIgtFDQEgC2hBAnRBtKQCaigCACICKAIEQXhxIAZrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAZrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgBHBEAgAigCCCIBIAA2AgwgACABNgIIDAoLIAIoAhQiAQR/IAJBFGoFIAIoAhAiAUUNAyACQRBqCyEFA0AgBSEHIAEiAEEUaiEFIAAoAhQiAQ0AIABBEGohBSAAKAIQIgENAAsgB0EANgIADAkLQX8hBiAAQb9/Sw0AIABBC2oiAUF4cSEGQYiiAigCACIHRQ0AQR8hCEEAIAZrIQMgAEH0//8HTQRAIAZBJiABQQh2ZyIAa3ZBAXEgAEEBdGtBPmohCAsCQAJAAkAgCEECdEG0pAJqKAIAIgFFBEBBACEADAELQQAhACAGQRkgCEEBdmtBACAIQR9HG3QhAgNAAkAgASgCBEF4cSAGayIEIANPDQAgASEFIAQiAw0AQQAhAyABIQAMAwsgACABKAIUIgQgBCABIAJBHXZBBHFqKAIQIgFGGyAAIAQbIQAgAkEBdCECIAENAAsLIAAgBXJFBEBBACEFQQIgCHQiAEEAIABrciAHcSIARQ0DIABoQQJ0QbSkAmooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAZrIgIgA0khASACIAMgARshAyAAIAUgARshBSAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAFRQ0AIANBjKICKAIAIAZrTw0AIAUoAhghCCAFIAUoAgwiAEcEQCAFKAIIIgEgADYCDCAAIAE2AggMCAsgBSgCFCIBBH8gBUEUagUgBSgCECIBRQ0DIAVBEGoLIQIDQCACIQQgASIAQRRqIQIgACgCFCIBDQAgAEEQaiECIAAoAhAiAQ0ACyAEQQA2AgAMBwsgBkGMogIoAgAiBU0EQEGYogIoAgAhAAJAIAUgBmsiAUEQTwRAIAAgBmoiAiABQQFyNgIEIAAgBWogATYCACAAIAZBA3I2AgQMAQsgACAFQQNyNgIEIAAgBWoiASABKAIEQQFyNgIEQQAhAkEAIQELQYyiAiABNgIAQZiiAiACNgIAIABBCGohAAwJCyAGQZCiAigCACICSQRAQZCiAiACIAZrIgE2AgBBnKICQZyiAigCACIAIAZqIgI2AgAgAiABQQFyNgIEIAAgBkEDcjYCBCAAQQhqIQAMCQtBACEAIAZBL2oiAwJ/QdylAigCAARAQeSlAigCAAwBC0HopQJCfzcCAEHgpQJCgKCAgICABDcCAEHcpQIgCkEMakFwcUHYqtWqBXM2AgBB8KUCQQA2AgBBwKUCQQA2AgBBgCALIgFqIgRBACABayIHcSIBIAZNDQhBvKUCKAIAIgUEQEG0pQIoAgAiCCABaiIJIAhNDQkgBSAJSQ0JCwJAQcClAi0AAEEEcUUEQAJAAkACQAJAQZyiAigCACIFBEBBxKUCIQADQCAFIAAoAgAiCE8EQCAIIAAoAgRqIAVLDQMLIAAoAggiAA0ACwtBABAkIgJBf0YNAyABIQRB4KUCKAIAIgBBAWsiBSACcQRAIAEgAmsgAiAFakEAIABrcWohBAsgBCAGTQ0DQbylAigCACIABEBBtKUCKAIAIgUgBGoiByAFTQ0EIAAgB0kNBAsgBBAkIgAgAkcNAQwFCyAEIAJrIAdxIgQQJCICIAAoAgAgACgCBGpGDQEgAiEACyAAQX9GDQEgBkEwaiAETQRAIAAhAgwEC0HkpQIoAgAiAiADIARrakEAIAJrcSICECRBf0YNASACIARqIQQgACECDAMLIAJBf0cNAgtBwKUCQcClAigCAEEEcjYCAAsgARAkIQJBABAkIQAgAkF/Rg0FIABBf0YNBSAAIAJNDQUgACACayIEIAZBKGpNDQULQbSlAkG0pQIoAgAgBGoiADYCAEG4pQIoAgAgAEkEQEG4pQIgADYCAAsCQEGcogIoAgAiAwRAQcSlAiEAA0AgAiAAKAIAIgEgACgCBCIFakYNAiAAKAIIIgANAAsMBAtBlKICKAIAIgBBACAAIAJNG0UEQEGUogIgAjYCAAtBACEAQcilAiAENgIAQcSlAiACNgIAQaSiAkF/NgIAQaiiAkHcpQIoAgA2AgBB0KUCQQA2AgADQCAAQQN0IgFBtKICaiABQayiAmoiBTYCACABQbiiAmogBTYCACAAQQFqIgBBIEcNAAtBkKICIARBKGsiAEF4IAJrQQdxIgFrIgU2AgBBnKICIAEgAmoiATYCACABIAVBAXI2AgQgACACakEoNgIEQaCiAkHspQIoAgA2AgAMBAsgAiADTQ0CIAEgA0sNAiAAKAIMQQhxDQIgACAEIAVqNgIEQZyiAiADQXggA2tBB3EiAGoiATYCAEGQogJBkKICKAIAIARqIgIgAGsiADYCACABIABBAXI2AgQgAiADakEoNgIEQaCiAkHspQIoAgA2AgAMAwtBACEADAYLQQAhAAwEC0GUogIoAgAgAksEQEGUogIgAjYCAAsgAiAEaiEFQcSlAiEAAkADQCAFIAAoAgAiAUcEQCAAKAIIIgANAQwCCwsgAC0ADEEIcUUNAwtBxKUCIQADQAJAIAMgACgCACIBTwRAIAEgACgCBGoiBSADSw0BCyAAKAIIIQAMAQsLQZCiAiAEQShrIgBBeCACa0EHcSIBayIHNgIAQZyiAiABIAJqIgE2AgAgASAHQQFyNgIEIAAgAmpBKDYCBEGgogJB7KUCKAIANgIAIAMgBUEnIAVrQQdxakEvayIAIAAgA0EQakkbIgFBGzYCBCABQcylAikCADcCECABQcSlAikCADcCCEHMpQIgAUEIajYCAEHIpQIgBDYCAEHEpQIgAjYCAEHQpQJBADYCACABQRhqIQADQCAAQQc2AgQgAEEIaiAAQQRqIQAgBUkNAAsgASADRg0AIAEgASgCBEF+cTYCBCADIAEgA2siAkEBcjYCBCABIAI2AgACfyACQf8BTQRAIAJBeHFBrKICaiEAAn9BhKICKAIAIgFBASACQQN2dCICcUUEQEGEogIgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDEEMIQJBCAwBC0EfIQAgAkH///8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QbSkAmohAQJAAkBBiKICKAIAIgVBASAAdCIEcUUEQEGIogIgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQZCiAigCACIAIAZNDQBBkKICIAAgBmsiATYCAEGcogJBnKICKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwEC0GAogJBMDYCAEEAIQAMAwsgACACNgIAIAAgACgCBCAEajYCBCACQXggAmtBB3FqIgggBkEDcjYCBCABQXggAWtBB3FqIgQgBiAIaiIDayEHAkBBnKICKAIAIARGBEBBnKICIAM2AgBBkKICQZCiAigCACAHaiIANgIAIAMgAEEBcjYCBAwBC0GYogIoAgAgBEYEQEGYogIgAzYCAEGMogJBjKICKAIAIAdqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwBCyAEKAIEIgBBA3FBAUYEQCAAQXhxIQkgBCgCDCECAkAgAEH/AU0EQCAEKAIIIgEgAkYEQEGEogJBhKICKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAIAQoAggiACACNgIMIAIgADYCCAwBCwJAIAQoAhQiAAR/IARBFGoFIAQoAhAiAEUNASAEQRBqCyEBA0AgASEFIAAiAkEUaiEBIAAoAhQiAA0AIAJBEGohASACKAIQIgANAAsgBUEANgIADAELQQAhAgsgBkUNAAJAIAQoAhwiAEECdEG0pAJqIgEoAgAgBEYEQCABIAI2AgAgAg0BQYiiAkGIogIoAgBBfiAAd3E2AgAMAgsgBkEQQRQgBigCECAERhtqIAI2AgAgAkUNAQsgAiAGNgIYIAQoAhAiAARAIAIgADYCECAAIAI2AhgLIAQoAhQiAEUNACACIAA2AhQgACACNgIYCyAHIAlqIQcgBCAJaiIEKAIEIQALIAQgAEF+cTYCBCADIAdBAXI2AgQgAyAHaiAHNgIAIAdB/wFNBEAgB0F4cUGsogJqIQACf0GEogIoAgAiAUEBIAdBA3Z0IgJxRQRAQYSiAiABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyECIAdB////B00EQCAHQSYgB0EIdmciAGt2QQFxIABBAXRrQT5qIQILIAMgAjYCHCADQgA3AhAgAkECdEG0pAJqIQACQAJAQYiiAigCACIBQQEgAnQiBXFFBEBBiKICIAEgBXI2AgAgACADNgIADAELIAdBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAQNAIAEiACgCBEF4cSAHRg0CIAJBHXYhASACQQF0IQIgACABQQRxaiIFKAIQIgENAAsgBSADNgIQCyADIAA2AhggAyADNgIMIAMgAzYCCAwBCyAAKAIIIgEgAzYCDCAAIAM2AgggA0EANgIYIAMgADYCDCADIAE2AggLIAhBCGohAAwCCwJAIAhFDQACQCAFKAIcIgFBAnRBtKQCaiICKAIAIAVGBEAgAiAANgIAIAANAUGIogIgB0F+IAF3cSIHNgIADAILIAhBEEEUIAgoAhAgBUYbaiAANgIAIABFDQELIAAgCDYCGCAFKAIQIgEEQCAAIAE2AhAgASAANgIYCyAFKAIUIgFFDQAgACABNgIUIAEgADYCGAsCQCADQQ9NBEAgBSADIAZqIgBBA3I2AgQgACAFaiIAIAAoAgRBAXI2AgQMAQsgBSAGQQNyNgIEIAUgBmoiBCADQQFyNgIEIAMgBGogAzYCACADQf8BTQRAIANBeHFBrKICaiEAAn9BhKICKAIAIgFBASADQQN2dCICcUUEQEGEogIgASACcjYCACAADAELIAAoAggLIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCABNgIIDAELQR8hACADQf///wdNBEAgA0EmIANBCHZnIgBrdkEBcSAAQQF0a0E+aiEACyAEIAA2AhwgBEIANwIQIABBAnRBtKQCaiEBAkACQCAHQQEgAHQiAnFFBEBBiKICIAIgB3I2AgAgASAENgIAIAQgATYCGAwBCyADQRkgAEEBdmtBACAAQR9HG3QhACABKAIAIQEDQCABIgIoAgRBeHEgA0YNAiAAQR12IQEgAEEBdCEAIAIgAUEEcWoiBygCECIBDQALIAcgBDYCECAEIAI2AhgLIAQgBDYCDCAEIAQ2AggMAQsgAigCCCIAIAQ2AgwgAiAENgIIIARBADYCGCAEIAI2AgwgBCAANgIICyAFQQhqIQAMAQsCQCAJRQ0AAkAgAigCHCIBQQJ0QbSkAmoiBSgCACACRgRAIAUgADYCACAADQFBiKICIAtBfiABd3E2AgAMAgsgCUEQQRQgCSgCECACRhtqIAA2AgAgAEUNAQsgACAJNgIYIAIoAhAiAQRAIAAgATYCECABIAA2AhgLIAIoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCACIAMgBmoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBCyACIAZBA3I2AgQgAiAGaiIFIANBAXI2AgQgAyAFaiADNgIAIAgEQCAIQXhxQayiAmohAEGYogIoAgAhAQJ/QQEgCEEDdnQiByAEcUUEQEGEogIgBCAHcjYCACAADAELIAAoAggLIQQgACABNgIIIAQgATYCDCABIAA2AgwgASAENgIIC0GYogIgBTYCAEGMogIgAzYCAAsgAkEIaiEACyAKQRBqJAAgAAsKACAAIAEQQkEACwwAIAAgASACEENBAAu0AQEBfyAAIAEoAABB////H3E2AgAgACABKAADQQJ2QYP+/x9xNgIEIAAgASgABkEEdkH/gf8fcTYCCCAAIAEoAAlBBnZB///AH3E2AgwgASgADCECIABCADcCFCAAQgA3AhwgAEEANgIkIAAgAkEIdkH//z9xNgIQIAAgASgAEDYCKCAAIAEoABQ2AiwgACABKAAYNgIwIAEoABwhASAAQQA6AFAgAEIANwM4IAAgATYCNEEAC3gCAn8BfgJAIwBBEGsiBCQAIAGtIAKtQiCGhCIFQoCAgIAQVARAIAVCAFIEQCAFpyEBA0AgBEEAOgAPIAAgA2pB0JsCIARBD2pBABAAOgAAIANBAWoiAyABRw0ACwsgBEEQaiQADAELQcwJQcAIQcYBQYAIEAEACwsSACAAIAEgAq0gA61CIIaEEA0LFgAgACABIAKtIAOtQiCGhCAEQQAQRgsbACAAIAEgAiADrSAErUIghoQgBUEAEEcaQQALigEBAX4CfwJAAkACQCADrSAErUIghoQiBkLAAFQNACAGQkB8IgZCv////w9WDQAgAiACQUBrIgMgBiAFQQAQRkUNASAARQ0AIABBACAGpxAJGgtBfyECIAFFDQEgAUIANwMAQX8MAgsgAQRAIAEgBjcDAAtBACECIABFDQAgACADIAanEDYaCyACCwt8AgJ/AX4jAEEQayIGJAAgACAGQQhqIABBQGsgAiADrSAErUIghoQiCKciAhA2IAggBUEAEEcaAkAgBikDCELAAFIEQCABBEAgAUIANwMACyAAQQAgAkFAaxAJGkF/IQcMAQsgAUUNACABIAhCQH03AwALIAZBEGokACAHC+QBAQN/IwAiBUHAAWtBQHEiBCQAIAQgAygAAEH///8fcTYCQCAEIAMoAANBAnZBg/7/H3E2AkQgBCADKAAGQQR2Qf+B/x9xNgJIIAQgAygACUEGdkH//8AfcTYCTCADKAAMIQYgBEIANwJUIARCADcCXCAEQQA2AmQgBCAGQQh2Qf//P3E2AlAgBCADKAAQNgJoIAQgAygAFDYCbCAEIAMoABg2AnAgAygAHCEDIARBADoAkAEgBEIANwN4IAQgAzYCdCAEQUBrIgMgASACEEMgAyAEQTBqIgEQQiAAIAEQIiAFJAAL9gUBB34gBCkAACIFQvXKzYPXrNu38wCFIQcgBULh5JXz1uzZvOwAhSEJIAQpAAgiBULt3pHzlszct+QAhSEGIAVC88rRy6eM2bL0AIUhCCABIAEgAq0gA61CIIaEIgWnIgJqIAJBB3EiAmsiA0cEQANAIAkgASkAACIKIAiFIgh8IgkgBiAHfCIHIAZCDYmFIgZ8IgsgBkIRiYUiBkINiSAGIAhCEIkgCYUiCSAHQiCJfCIHfCIIhSIGQhGJIAYgCUIViSAHhSIHIAtCIIl8Igl8IguFIQYgB0IQiSAJhSIHQhWJIAcgCEIgiXwiB4UhCCALQiCJIQkgByAKhSEHIAFBCGoiASADRw0ACwsgBUI4hiEFAkACQAJAAkACQAJAAkACQCACQQFrDgcGBQQDAgEABwsgATEABkIwhiAFhCEFCyABMQAFQiiGIAWEIQULIAExAARCIIYgBYQhBQsgATEAA0IYhiAFhCEFCyABMQACQhCGIAWEIQULIAExAAFCCIYgBYQhBQsgBSABMQAAhCEFCyAAIAUgCIUiCEIQiSAIIAl8IgmFIghCFYkgCCAGIAd8IgdCIIl8IgiFIgpCEIkgCiAJIAcgBkINiYUiBnwiB0IgiXwiCYUiCkIViSAKIAggByAGQhGJhSIGfCIHQiCJfCIIhSIKQhCJIAkgBkINiSAHhSIGfCIHQiCJQv8BhSAKfCIJhSIKQhWJIAZCEYkgB4UiBiAFIAiFfCIFQiCJIAp8IgeFIghCEIkgBSAGQg2JhSIFIAl8IgZCIIkgCHwiCYUiCEIViSAFQhGJIAaFIgUgB3wiBkIgiSAIfCIHhSIIQhCJIAVCDYkgBoUiBSAJfCIGQiCJIAh8IgmFIghCFYkgBUIRiSAGhSIFIAd8IgZCIIkgCHwiB4UiCEIQiSAFQg2JIAaFIgUgCXwiBkIgiSAIfCIJhUIViSAFQhGJIAaFIgVCDYkgBSAHfIUiBUIRiYUgBSAJfCIFQiCJhSAFhTcAAEEAC7MGAgN+AX8CfyAFrSAGrUIghoQhCiAIrSAJrUIghoQhDCMAQZADayIFJAAgAgRAIAJCADcDAAsgAwRAIANB/wE6AAALQX8hDQJAAkAgCkIRVA0AIApCEX0iC0Lv////D1oNASAFQSBqIghCwAAgAEEgaiIJIAAQHCAFQeAAaiIGIAhBjJMCKAIAEQEAGiAIQcAAEAggBiAHIAxBkJMCKAIAEQAAGiAGQbCPAkIAIAx9Qg+DQZCTAigCABEAABogBUIANwNYIAVCADcDUCAFQgA3A0ggBUFAa0IANwMAIAVCADcDOCAFQgA3AzAgBUIANwMoIAVCADcDICAFIAQtAAA6ACAgCCAIQsAAIAlBASAAECEgBS0AICEHIAUgBC0AADoAICAGIAhCwABBkJMCKAIAEQAAGiAGIARBAWoiBCALQZCTAigCABEAABogBkGwjwIgCkIBfUIPg0GQkwIoAgARAAAaIAUgDDcDGCAGIAVBGGoiCEIIQZCTAigCABEAABogBSAKQi98NwMYIAYgCEIIQZCTAigCABEAABogBiAFQZSTAigCABEBABogBkGAAhAIIAUgBCALp2pBEBA9BEAgBUEQEAgMAQsgASAEIAsgCUECIAAQISAAIAAtACQgBS0AAHM6ACQgACAALQAlIAUtAAFzOgAlIAAgAC0AJiAFLQACczoAJiAAIAAtACcgBS0AA3M6ACcgACAALQAoIAUtAARzOgAoIAAgAC0AKSAFLQAFczoAKSAAIAAtACogBS0ABnM6ACogACAALQArIAUtAAdzOgArIAkQTgJAIAdBAnFFBEAgCUEEECVFDQELIAUgACkAGDcD+AIgBSAAKQAQNwPwAiAFIAApAAA3A+ACIAUgACkACDcD6AIgBSAAKQAkNwOAAyAFQeACaiIBIAFCKCAJQQAgAEHMmwIoAgARCgAaIAAgBSkD+AI3ABggACAFKQPwAjcAECAAIAUpA+gCNwAIIAAgBSkD4AI3AAAgBSkDgAMhCiAAQQE2ACAgACAKNwAkCyACBEAgAiALNwMAC0EAIQ0gA0UNACADIAc6AAALIAVBkANqJAAgDQwBCxALAAsL5AUBAn4CfyAErSAFrUIghoQhCiAHrSAIrUIghoQhCyMAQYADayIEJAAgAgRAIAJCADcDAAsgCkLv////D1QEQCAEQRBqIgdCwAAgAEEgaiIIIAAQHCAEQdAAaiIFIAdBjJMCKAIAEQEAGiAHQcAAEAggBSAGIAtBkJMCKAIAEQAAGiAFQbCPAkIAIAt9Qg+DQZCTAigCABEAABogBEIANwNIIARBQGtCADcDACAEQgA3AzggBEIANwMwIARCADcDKCAEQgA3AyAgBEIANwMQIARCADcDGCAEIAk6ABAgByAHQsAAIAhBASAAECEgBSAHQsAAQZCTAigCABEAABogASAELQAQOgAAIAFBAWoiASADIAogCEECIAAQISAFIAEgCkGQkwIoAgARAAAaIAVBsI8CIApCD4NBkJMCKAIAEQAAGiAEIAs3AwggBSAEQQhqIgNCCEGQkwIoAgARAAAaIAQgCkJAfTcDCCAFIANCCEGQkwIoAgARAAAaIAUgASAKp2oiAUGUkwIoAgARAQAaIAVBgAIQCCAAIAAtACQgAS0AAHM6ACQgACAALQAlIAEtAAFzOgAlIAAgAC0AJiABLQACczoAJiAAIAAtACcgAS0AA3M6ACcgACAALQAoIAEtAARzOgAoIAAgAC0AKSABLQAFczoAKSAAIAAtACogAS0ABnM6ACogACAALQArIAEtAAdzOgArIAgQTgJAIAlBAnFFBEAgCEEEECVFDQELIAQgACkAGDcD6AIgBCAAKQAQNwPgAiAEIAApAAA3A9ACIAQgACkACDcD2AIgBCAAKQAkNwPwAiAEQdACaiIBIAFCKCAIQQAgAEHMmwIoAgARCgAaIAAgBCkD6AI3ABggACAEKQPgAjcAECAAIAQpA9gCNwAIIAAgBCkD0AI3AAAgBCkD8AIhCyAAQQE2ACAgACALNwAkCyACBEAgAiAKQhF8NwMACyAEQYADaiQAQQAMAQsQCwALCzEBAX4gAq0gA61CIIaEIgZC8P///w9aBEAQCwALIABBEGogACABIAYgBCAFECkaQQALgwQCAn8EfiMAQSBrIgYkACAEKQAAIQggBkIANwMYIAYgCDcDECAGQgA3AwggBiACrSADrUIghoQ3AwACfyABQcEAa0FOTQRAQYCiAkEcNgIAQX8MAQsgAUHBAGtBQE8EfwJ/IAZBEGohAiABQf8BcSEDIwAiASEEIAFBgARrQUBxIgEkAAJAIABFDQAgA0HBAGtB/wFxQb8BTQ0AIAVFIgcNACAHDQACfiAGRQRAQp/Y+dnCkdqCm38hCELRhZrv+s+Uh9EADAELIAYpAAhCn9j52cKR2oKbf4UhCCAGKQAAQtGFmu/6z5SH0QCFCyEKAn4gAkUEQEL5wvibkaOz8NsAIQlC6/qG2r+19sEfDAELIAIpAAhC+cL4m5Gjs/DbAIUhCSACKQAAQuv6htq/tfbBH4ULIQsgAUFAa0EAQaUCEAkaIAEgCTcDOCABIAs3AzAgASAINwMoIAEgCjcDICABQvHt9Pilp/2npX83AxggAUKr8NP0r+68tzw3AxAgAUK7zqqm2NDrs7t/NwMIIAEgA61CgMAAhEKIkveV/8z5hOoAhTcDACABQYADaiICQSBqQQBB4AAQCRogAiAFQSAQChogAUHgAGogAkGAARAKGiABQYABNgLgAiACQYABEAggASAAIAMQShogBCQAQQAMAQsQCwALBUF/CwsgBkEgaiQACxIAIAAgASACrSADrUIghoQQIAsSACAAIAEgAq0gA61CIIaEEBELGAAgACABIAIgA60gBK1CIIaEIAUgBhBsC3cCA38BfiMAIgYgBkHAA2tBQHEiBiQAQX8hByACrSADrUIghoQiCUIwWgRAIAZBQGsiAkEAQQBBGBAnGiACIAFCIBARGiACIARCIBARGiACIAZBIGoiAkEYECsaIAAgAUEgaiAJQiB9IAIgASAFEGQhBwskACAHC74BAgR/AX4gAq0gA61CIIaEIQkjACICIAJBgARrQUBxIgIkAEF/IQMgAkFAayIFIAJBIGoiBhBERQRAIAJBgAFqIgNBAEEAQRgQJxogAyAFQiAQERogAyAEQiAQERogAyACQeAAaiIHQRgQKxogAEEgaiABIAkgByAEIAYQZSEDIAAgAikDWDcAGCAAIAIpA1A3ABAgACACKQNINwAIIAAgAikDQDcAACAGQSAQCCAFQSAQCCAHQRgQCAskACADCxgAIAAgASACrSADrUIghoQgBCAFIAYQZAtIAQF+IAOtIAStQiCGhCEIIwBBIGsiAyQAQX8hBCADIAYgBxAmRQRAIAAgASACIAggBSADEDUhBCADQSAQCAsgA0EgaiQAIAQLGAAgACABIAKtIAOtQiCGhCAEIAUgBhBlCy4BAX4gAq0gA61CIIaEIgZC8P///w9aBEAQCwALIABBEGogACABIAYgBCAFECkLSAEBfiADrSAErUIghoQhCCMAQSBrIgMkAEF/IQQgAyAGIAcQJkUEQCAAIAEgAiAIIAUgAxApIQQgA0EgEAgLIANBIGokACAEC4YBAQJ/IwBBgARrIgUkACAFQSBqIgYgBEEgEB8aIAYgASACrSADrUIghoQQEhogBiAFQcADahAeIAUgBSkD2AM3AxggBSAFKQPQAzcDECAFIAUpA8gDNwMIIAUgBSkDwAM3AwAgACAFEDQhASAFIABBIBA9IAVBgARqJABBfyABIAAgBUYbcgtoAQF/IwBB4ANrIgUkACAFIARBIBAfGiAFIAEgAq0gA61CIIaEEBIaIAUgBUGgA2oQHiAAIAUpA7gDNwAYIAAgBSkDsAM3ABAgACAFKQOoAzcACCAAIAUpA6ADNwAAIAVB4ANqJABBAAtaAQJ+IAetIAitQiCGhCEMQX8hAiAErSAFrUIghoQiC0IQWgRAIAAgAyALQhB9IAMgC6dqQRBrIAYgDCAJIAoQaiECCyABBEAgAUIAIAtCEH0gAhs3AwALIAILJAAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChBqC1gBAn4CfyAGrSAHrUIghoQhDCADrSAErUIghoQiC0Lw////D1QEQCAAIAAgC6dqQQAgAiALIAUgDCAJIAoQaxogAQRAIAEgC0IQfDcDAAtBAAwBCxALAAsLJgAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEGsLWgECfiAHrSAIrUIghoQhDEF/IQIgBK0gBa1CIIaEIgtCEFoEQCAAIAMgC0IQfSADIAunakEQayAGIAwgCSAKEGYhAgsgAQRAIAFCACALQhB9IAIbNwMACyACCyQAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQZgtaAQJ+IAetIAitQiCGhCEMQX8hAiAErSAFrUIghoQiC0IQWgRAIAAgAyALQhB9IAMgC6dqQRBrIAYgDCAJIAoQZyECCyABBEAgAUIAIAtCEH0gAhs3AwALIAILJAAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChBnC1gBAn4CfyAGrSAHrUIghoQhDCADrSAErUIghoQiC0Lw////D1QEQCAAIAAgC6dqQQAgAiALIAUgDCAJIAoQaBogAQRAIAEgC0IQfDcDAAtBAAwBCxALAAsLJgAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEGgL1QEBA38jACIFQYABa0FAcSIEJAAgBCADKAAAQf///x9xNgIAIAQgAygAA0ECdkGD/v8fcTYCBCAEIAMoAAZBBHZB/4H/H3E2AgggBCADKAAJQQZ2Qf//wB9xNgIMIAMoAAwhBiAEQgA3AhQgBEIANwIcIARBADYCJCAEIAZBCHZB//8/cTYCECAEIAMoABA2AiggBCADKAAUNgIsIAQgAygAGDYCMCADKAAcIQMgBEEAOgBQIARCADcDOCAEIAM2AjQgBCABIAIQQyAEIAAQQiAFJABBAAtYAQJ+An8gBq0gB61CIIaEIQwgA60gBK1CIIaEIgtC8P///w9UBEAgACAAIAunakEAIAIgCyAFIAwgCSAKEGkaIAEEQCABIAtCEHw3AwALQQAMAQsQCwALCyYAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxBpC1kBAn4gB60gCK1CIIaEIQtBfyEBAkAgA60gBK1CIIaEIgxC3////w9WDQAgC0Lf////D1YNACAAIAIgDKcgBUEgIAYgC6cgCSAKQbybAigCABEIACEBCyABC4ABAQN+IAetIAitQiCGhCEMQX8hAgJAIAStIAWtQiCGhCILQiBUDQAgC0IgfSINQt////8PVg0AIAxC3////w9WDQAgACADIA2nIAMgC6dqQSBrQSAgBiAMpyAJIApBvJsCKAIAEQgAIQILIAEEQCABQgAgC0IgfSACGzcDAAsgAgtgAQJ+IAStIAWtQiCGhCEMIAetIAitQiCGhCENIAIEQCACQiA3AwALIA1C4P///w9UIAxC3////w9YcUUEQBALAAsgACABQSAgAyAMpyAGIA2nIAogC0G4mwIoAgARCAALdgECfgJ/IAatIAetQiCGhCELAkAgA60gBK1CIIaEIgxC3////w9WDQAgC0Lg////D1oNACAAIAAgDKciA2pBICACIAMgBSALpyAJIApBuJsCKAIAEQgAIQAgAQRAIAFCACAMQiB8IAAbNwMACyAADAELEAsACwtZAQJ+IAetIAitQiCGhCELQX8hAQJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC3////w9WDQAgACACIAynIAVBICAGIAunIAkgCkG0mwIoAgARCAAhAQsgAQuAAQEDfiAHrSAIrUIghoQhDEF/IQICQCAErSAFrUIghoQiC0IgVA0AIAtCIH0iDULf////D1YNACAMQt////8PVg0AIAAgAyANpyADIAunakEga0EgIAYgDKcgCSAKQbSbAigCABEIACECCyABBEAgAUIAIAtCIH0gAhs3AwALIAILYAECfiAErSAFrUIghoQhDCAHrSAIrUIghoQhDSACBEAgAkIgNwMACyANQuD///8PVCAMQt////8PWHFFBEAQCwALIAAgAUEgIAMgDKcgBiANpyAKIAtBsJsCKAIAEQgAC3YBAn4CfyAGrSAHrUIghoQhCwJAIAOtIAStQiCGhCIMQt////8PVg0AIAtC4P///w9aDQAgACAAIAynIgNqQSAgAiADIAUgC6cgCSAKQbCbAigCABEIACEAIAEEQCABQgAgDEIgfCAAGzcDAAsgAAwBCxALAAsLBABBMAv9AQEFfyMAIgUhCSAFQYAEa0FAcSIFJAAgACABIAAbIgcEQEF/IQYgBUHgAGoiCCADIAQQMEUEQCABIAAg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ASABLQAAQfgBcToAACABIAEtAB9BP3FBwAByOgAfIAJBIGoiAyABEDEgACADEDIgASACKQMYNwAYIAEgAikDEDcAECABIAIpAwg3AAggASACKQMANwAAIAApAAghBCAAKQAQIQUgACkAACEGIAEgACkAGDcAOCABIAU3ADAgASAENwAoIAEgBjcAICACQSAQCCACQcABaiQAQQALtgECAX8DfiMAQaABayIDJAAgASACQiAQIBogASABLQAAQfgBcToAACABIAEtAB9BP3FBwAByOgAfIAMgARAxIAAgAxAyIAIpAAghBCACKQAQIQUgAikAACEGIAEgAikAGDcAGCABIAU3ABAgASAENwAIIAEgBjcAACAAKQAIIQQgACkAECEFIAApAAAhBiABIAApABg3ADggASAFNwAwIAEgBDcAKCABIAY3ACAgA0GgAWokAEEACwUAQb9/C20BAX8jAEFAaiICJAAgAiABQiAQIBogAiACLQAAQfgBcToAACACIAItAB9BP3FBwAByOgAfIAAgAikDEDcAECAAIAIpAwg3AAggACACKQMANwAAIAAgAikDGDcAGCACQcAAEAggAkFAayQAQQALrRQCEX8ofiMAQYACayIDJABBfyESAkAgARA/DQAgA0HgAGoiBCABEF8NACMAQYAQayICJAAgAkGABWoiASAEEA4gAiAEKQIgNwPgAiACIAQpAhg3A9gCIAIgBCkCEDcD0AIgAiAEKQIINwPIAiACIAQpAgA3A8ACIAIgBCkCMDcD8AIgAiAEKQI4NwP4AiACIARBQGspAgA3A4ADIAIgBCkCSDcDiAMgAiAEKQIoNwPoAiACIAQpAlg3A5gDIAIgBCkCYDcDoAMgAiAEKQJoNwOoAyACIAQpAnA3A7ADIAIgBCkCUDcDkAMgAkHgA2oiBSACQcACaiIJEBkgAkGgAWoiBCAFIAJB2ARqIgYQBiACQcgBaiACQYgEaiIHIAJBsARqIggQBiACQfABaiAIIAYQBiACQZgCaiAFIAcQBiAFIAQgARAPIAkgBSAGEAYgAkHoAmoiCiAHIAgQBiACQZADaiILIAggBhAGIAJBuANqIgwgBSAHEAYgAkGgBmoiASAJEA4gBSAEIAEQDyAJIAUgBhAGIAogByAIEAYgCyAIIAYQBiAMIAUgBxAGIAJBwAdqIgEgCRAOIAUg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5cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/AEGgEwsBAQBBwBMLsAEm6JWPwrInsEXD9Iny75jw1d+sBdPGMzmxOAKIbVP8BccXanA9TdhPujwLdg0QZw8qIFP6LDnMxk7H/XeSrAN67P///////////////////////////////////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/7dP1XBpjEljWnPei3vneFABB/xQL/PABEIU7jAG98ST/+CXDAWDcNwC3TD7/w0I9ADJMpAHhpEz/TD2j/3U+HwBRkUD/dkEOAKJz1v8Gii4AfOb0/wqKjwA0GsIAuPRMAIGPKQG+9BP/e6p6/2KBRAB51ZMAVmUe/6FnmwCMWUP/7+W+AUMLtQDG8In+7kW8/+pxPP8l/zn/RbK2/oDQswB2Gn3+AwfW//EyTf9Vy8X/04f6/xkwZP+71bT+EVhpAFPRngEFc2IABK48/qs3bv/ZtRH/FLyqAJKcZv5X1q7/cnqbAeksqgB/CO8B1uzqAK8F2wAxaj3/BkLQ/wJqbv9R6hP/12vA/0OX7gATKmz/5VVxATJEh/8RagkAMmcB/1ABqAEjmB7/EKi5AThZ6P9l0vwAKfpHAMyqT/8OLu//UE3vAL3WS/8RjfkAJlBM/75VdQBW5KoAnNjQAcPPpP+WQkz/r+EQ/41QYgFM2/IAxqJyAC7a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////////////////f+3///////////////////////////////////////9/7v///////////////////////////////////////39MaWJzb2RpdW1EUkcAAAAACMm882fmCWo7p8qEha5nuyv4lP5y82488TYdXzr1T6XRguatf1IOUR9sPiuMaAWba71B+6vZgx95IX4TGc3gWyKuKNeYL4pCzWXvI5FEN3EvO03sz/vAtbzbiYGl27XpOLVI81vCVjkZ0AW28RHxWZtPGa+kgj+SGIFt2tVeHKtCAgOjmKoH2L5vcEUBW4MSjLLkTr6FMSTitP/Vw30MVW+Je/J0Xb5ysZYWO/6x3oA1Esclpwbcm5Qmac908ZvB0krxnsFpm+TjJU84hke+77XVjIvGncEPZZysd8yhDCR1AitZbyzpLYPkpm6qhHRK1PtBvdypsFy1UxGD2oj5dqvfZu5SUT6YEDK0LW3GMag/IfuYyCcDsOQO777Hf1m/wo+oPfML4MYlpwqTR5Gn1W+CA+BRY8oGcG4OCmcpKRT8L9JGhQq3JybJJlw4IRsu7SrEWvxtLE3fs5WdEw04U95jr4tUcwplqLJ3PLsKanbmru1HLsnCgTs1ghSFLHKSZAPxTKHov6IBMEK8S2YaqJGX+NBwi0vCML5UBqNRbMcYUu/WGeiS0RCpZVUkBpnWKiBxV4U1DvS40bsycKBqEMjQ0rgWwaQZU6tBUQhsNx6Z647fTHdIJ6hIm+G1vLA0Y1rJxbMMHDnLikHjSqrYTnPjY3dPypxbo7iy1vNvLmj8su9d7oKPdGAvF0NvY6V4cqvwoRR4yITsOWQaCALHjCgeYyP6/76Q6b2C3utsUKQVecay96P5vitTcuPyeHHGnGEm6s4+J8oHwsAhx7iG0R7r4M3WfdrqeNFu7n9PffW6bxdyqmfwBqaYyKLFfWMKrg35vgSYPxEbRxwTNQtxG4R9BCP1d9sokyTHQHuryjK8vskVCr6ePEwNEJzEZx1DtkI+y77UxUwqfmX8nCl/Wez61jqrb8tfF1hHSowZRGyAAEHAjwILoQJn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gW5gvikKRRDdxz/vAtaXbtelbwlY58RHxWaSCP5LVXhyrmKoH2AFbgxK+hTEkw30MVXRdvnL+sd6Apwbcm3Txm8HBaZvkhke+78adwQ/MoQwkbyzpLaqEdErcqbBc2oj5dlJRPphtxjGoyCcDsMd/Wb/zC+DGR5Gn1VFjygZnKSkUhQq3JzghGy78bSxNEw04U1RzCmW7Cmp2LsnCgYUscpKh6L+iS2YaqHCLS8KjUWzHGeiS0SQGmdaFNQ70cKBqEBbBpBkIbDceTHdIJ7W8sDSzDBw5SqrYTk/KnFvzby5o7oKPdG9jpXgUeMiECALHjPr/vpDrbFCk96P5vvJ4ccaAAEGwkgILIVNpZ0VkMjU1MTkgbm8gRWQyNTUxOSBjb2xsaXNpb25zAQBBgJMCCyUgkwEAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAEGwkwILnQjGY2Ol+Hx8hO53d5n2e3uN//LyDdZra73eb2+xkcXFVGAwMFACAQEDzmdnqVYrK33n/v4ZtdfXYk2rq+bsdnaaj8rKRR+Cgp2JyclA+n19h+/6+hWyWVnrjkdHyfvw8AtBra3ss9TUZ1+iov1Fr6/qI5ycv1OkpPfkcnKWm8DAW3W3t8Lh/f0cPZOTrkwmJmpsNjZafj8/QfX39wKDzMxPaDQ0XFGlpfTR5eU0+fHxCOJxcZOr2NhzYjExUyoVFT8IBAQMlcfHUkYjI2Wdw8NeMBgYKDeWlqEKBQUPL5qatQ4HBwkkEhI2G4CAm9/i4j3N6+smTicnaX+yss3qdXWfEgkJGx2Dg55YLCx0NBoaLjYbGy3cbm6ytFpa7lugoPukUlL2djs7TbfW1mF9s7POUikpe93j4z5eLy9xE4SEl6ZTU/W50dFoAAAAAMHt7SxAICBg4/z8H3mxsci2W1vt1Gpqvo3Ly0Znvr7Zcjk5S5RKSt6YTEzUsFhY6IXPz0q70NBrxe/vKk+qquXt+/sWhkNDxZpNTddmMzNVEYWFlIpFRc/p+fkQBAICBv5/f4GgUFDweDw8RCWfn7pLqKjjolFR812jo/6AQEDABY+Pij+Skq0hnZ28cDg4SPH19QRjvLzfd7a2wa/a2nVCISFjIBAQMOX//xr98/MOv9LSbYHNzUwYDAwUJhMTNcPs7C++X1/hNZeXoohERMwuFxc5k8TEV1Wnp/L8fn6Cej09R8hkZKy6XV3nMhkZK+Zzc5XAYGCgGYGBmJ5PT9Gj3Nx/RCIiZlQqKn47kJCrC4iIg4xGRsrH7u4pa7i40ygUFDyn3t55vF5e4hYLCx2t29t22+DgO2QyMlZ0OjpOFAoKHpJJSdsMBgYKSCQkbLhcXOSfwsJdvdPTbkOsrO/EYmKmOZGRqDGVlaTT5OQ38nl5i9Xn5zKLyMhDbjc3WdptbbcBjY2MsdXVZJxOTtJJqang2GxstKxWVvrz9PQHz+rqJcplZa/0enqOR66u6RAICBhvurrV8Hh4iEolJW9cLi5yOBwcJFempvFztLTHl8bGUcvo6COh3d186HR0nD4fHyGWS0vdYb293A2Li4YPioqF4HBwkHw+PkJxtbXEzGZmqpBISNgGAwMF9/b2ARwODhLCYWGjajU1X65XV/lpubnQF4aGkZnBwVg6HR0nJ56eudnh4Tjr+PgTK5iYsyIRETPSaWm7qdnZcAeOjokzlJSnLZubtjweHiIVh4eSyenpIIfOzkmqVVX/UCgoeKXf33oDjIyPWaGh+AmJiYAaDQ0XZb+/2tfm5jGEQkLG0GhouIJBQcMpmZmwWi0tdx4PDxF7sLDLqFRU/G27u9YsFhY6CgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABE="),A=g,Y(F).then((g=>WebAssembly.instantiate(g,A))).then((function(A){I(A.instance)}),(A=>{y(`failed to asynchronously prepare wasm: ${A}`),M(A)})),{}}();function T(){function A(){J||(J=!0,e.calledRun=!0,w||(G(l),e.onRuntimeInitialized?.(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)A=e.postRun.shift(),u.unshift(A);var A;G(u)}()))}v>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)A=e.preRun.shift(),d.unshift(A);var A;G(d)}(),v>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),A()}),1)):A()))}if(e._crypto_aead_aegis128l_keybytes=()=>(e._crypto_aead_aegis128l_keybytes=L.g)(),e._crypto_aead_aegis128l_nsecbytes=()=>(e._crypto_aead_aegis128l_nsecbytes=L.h)(),e._crypto_aead_aegis128l_npubbytes=()=>(e._crypto_aead_aegis128l_npubbytes=L.i)(),e._crypto_aead_aegis128l_abytes=()=>(e._crypto_aead_aegis128l_abytes=L.j)(),e._crypto_aead_aegis128l_messagebytes_max=()=>(e._crypto_aead_aegis128l_messagebytes_max=L.k)(),e._crypto_aead_aegis128l_keygen=A=>(e._crypto_aead_aegis128l_keygen=L.l)(A),e._crypto_aead_aegis128l_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_encrypt=L.m)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis128l_encrypt_detached=L.n)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis128l_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt=L.o)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis128l_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis128l_decrypt_detached=L.p)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_keybytes=()=>(e._crypto_aead_aegis256_keybytes=L.q)(),e._crypto_aead_aegis256_nsecbytes=()=>(e._crypto_aead_aegis256_nsecbytes=L.r)(),e._crypto_aead_aegis256_npubbytes=()=>(e._crypto_aead_aegis256_npubbytes=L.s)(),e._crypto_aead_aegis256_abytes=()=>(e._crypto_aead_aegis256_abytes=L.t)(),e._crypto_aead_aegis256_messagebytes_max=()=>(e._crypto_aead_aegis256_messagebytes_max=L.u)(),e._crypto_aead_aegis256_keygen=A=>(e._crypto_aead_aegis256_keygen=L.v)(A),e._crypto_aead_aegis256_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_encrypt=L.w)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_aegis256_encrypt_detached=L.x)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_aegis256_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt=L.y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aegis256_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_aegis256_decrypt_detached=L.z)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_aes256gcm_is_available=()=>(e._crypto_aead_aes256gcm_is_available=L.A)(),e._crypto_aead_chacha20poly1305_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_encrypt_detached=L.B)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_encrypt=L.C)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt_detached=L.D)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_chacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_encrypt=L.E)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt_detached=L.F)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_decrypt=L.G)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt_detached=L.H)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_chacha20poly1305_ietf_decrypt=L.I)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_chacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_chacha20poly1305_ietf_keybytes=L.J)(),e._crypto_aead_chacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_npubbytes=L.K)(),e._crypto_aead_chacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_ietf_nsecbytes=L.L)(),e._crypto_aead_chacha20poly1305_ietf_abytes=()=>(e._crypto_aead_chacha20poly1305_ietf_abytes=L.M)(),e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_ietf_messagebytes_max=L.N)(),e._crypto_aead_chacha20poly1305_ietf_keygen=A=>(e._crypto_aead_chacha20poly1305_ietf_keygen=L.O)(A),e._crypto_aead_chacha20poly1305_keybytes=()=>(e._crypto_aead_chacha20poly1305_keybytes=L.P)(),e._crypto_aead_chacha20poly1305_npubbytes=()=>(e._crypto_aead_chacha20poly1305_npubbytes=L.Q)(),e._crypto_aead_chacha20poly1305_nsecbytes=()=>(e._crypto_aead_chacha20poly1305_nsecbytes=L.R)(),e._crypto_aead_chacha20poly1305_abytes=()=>(e._crypto_aead_chacha20poly1305_abytes=L.S)(),e._crypto_aead_chacha20poly1305_messagebytes_max=()=>(e._crypto_aead_chacha20poly1305_messagebytes_max=L.T)(),e._crypto_aead_chacha20poly1305_keygen=A=>(e._crypto_aead_chacha20poly1305_keygen=L.U)(A),e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o,c)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=L.V)(A,g,I,C,B,a,i,r,t,Q,o,c),e._crypto_aead_xchacha20poly1305_ietf_encrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_encrypt=L.W)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=L.X)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_decrypt=(A,g,I,C,B,a,i,r,t,Q,o)=>(e._crypto_aead_xchacha20poly1305_ietf_decrypt=L.Y)(A,g,I,C,B,a,i,r,t,Q,o),e._crypto_aead_xchacha20poly1305_ietf_keybytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_keybytes=L.Z)(),e._crypto_aead_xchacha20poly1305_ietf_npubbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_npubbytes=L._)(),e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_nsecbytes=L.$)(),e._crypto_aead_xchacha20poly1305_ietf_abytes=()=>(e._crypto_aead_xchacha20poly1305_ietf_abytes=L.aa)(),e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=()=>(e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=L.ba)(),e._crypto_aead_xchacha20poly1305_ietf_keygen=A=>(e._crypto_aead_xchacha20poly1305_ietf_keygen=L.ca)(A),e._crypto_auth_bytes=()=>(e._crypto_auth_bytes=L.da)(),e._crypto_auth_keybytes=()=>(e._crypto_auth_keybytes=L.ea)(),e._crypto_auth=(A,g,I,C,B)=>(e._crypto_auth=L.fa)(A,g,I,C,B),e._crypto_auth_verify=(A,g,I,C,B)=>(e._crypto_auth_verify=L.ga)(A,g,I,C,B),e._crypto_auth_keygen=A=>(e._crypto_auth_keygen=L.ha)(A),e._crypto_box_seedbytes=()=>(e._crypto_box_seedbytes=L.ia)(),e._crypto_box_publickeybytes=()=>(e._crypto_box_publickeybytes=L.ja)(),e._crypto_box_secretkeybytes=()=>(e._crypto_box_secretkeybytes=L.ka)(),e._crypto_box_beforenmbytes=()=>(e._crypto_box_beforenmbytes=L.la)(),e._crypto_box_noncebytes=()=>(e._crypto_box_noncebytes=L.ma)(),e._crypto_box_macbytes=()=>(e._crypto_box_macbytes=L.na)(),e._crypto_box_messagebytes_max=()=>(e._crypto_box_messagebytes_max=L.oa)(),e._crypto_box_seed_keypair=(A,g,I)=>(e._crypto_box_seed_keypair=L.pa)(A,g,I),e._crypto_box_keypair=(A,g)=>(e._crypto_box_keypair=L.qa)(A,g),e._crypto_box_beforenm=(A,g,I)=>(e._crypto_box_beforenm=L.ra)(A,g,I),e._crypto_box_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_detached_afternm=L.sa)(A,g,I,C,B,a,i),e._crypto_box_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_detached=L.ta)(A,g,I,C,B,a,i,r),e._crypto_box_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_easy_afternm=L.ua)(A,g,I,C,B,a),e._crypto_box_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_easy=L.va)(A,g,I,C,B,a,i),e._crypto_box_open_detached_afternm=(A,g,I,C,B,a,i)=>(e._crypto_box_open_detached_afternm=L.wa)(A,g,I,C,B,a,i),e._crypto_box_open_detached=(A,g,I,C,B,a,i,r)=>(e._crypto_box_open_detached=L.xa)(A,g,I,C,B,a,i,r),e._crypto_box_open_easy_afternm=(A,g,I,C,B,a)=>(e._crypto_box_open_easy_afternm=L.ya)(A,g,I,C,B,a),e._crypto_box_open_easy=(A,g,I,C,B,a,i)=>(e._crypto_box_open_easy=L.za)(A,g,I,C,B,a,i),e._crypto_box_seal=(A,g,I,C,B)=>(e._crypto_box_seal=L.Aa)(A,g,I,C,B),e._crypto_box_seal_open=(A,g,I,C,B,a)=>(e._crypto_box_seal_open=L.Ba)(A,g,I,C,B,a),e._crypto_box_sealbytes=()=>(e._crypto_box_sealbytes=L.Ca)(),e._crypto_generichash_bytes_min=()=>(e._crypto_generichash_bytes_min=L.Da)(),e._crypto_generichash_bytes_max=()=>(e._crypto_generichash_bytes_max=L.Ea)(),e._crypto_generichash_bytes=()=>(e._crypto_generichash_bytes=L.Fa)(),e._crypto_generichash_keybytes_min=()=>(e._crypto_generichash_keybytes_min=L.Ga)(),e._crypto_generichash_keybytes_max=()=>(e._crypto_generichash_keybytes_max=L.Ha)(),e._crypto_generichash_keybytes=()=>(e._crypto_generichash_keybytes=L.Ia)(),e._crypto_generichash_statebytes=()=>(e._crypto_generichash_statebytes=L.Ja)(),e._crypto_generichash=(A,g,I,C,B,a,i)=>(e._crypto_generichash=L.Ka)(A,g,I,C,B,a,i),e._crypto_generichash_init=(A,g,I,C)=>(e._crypto_generichash_init=L.La)(A,g,I,C),e._crypto_generichash_update=(A,g,I,C)=>(e._crypto_generichash_update=L.Ma)(A,g,I,C),e._crypto_generichash_final=(A,g,I)=>(e._crypto_generichash_final=L.Na)(A,g,I),e._crypto_generichash_keygen=A=>(e._crypto_generichash_keygen=L.Oa)(A),e._crypto_hash_bytes=()=>(e._crypto_hash_bytes=L.Pa)(),e._crypto_hash=(A,g,I,C)=>(e._crypto_hash=L.Qa)(A,g,I,C),e._crypto_kdf_bytes_min=()=>(e._crypto_kdf_bytes_min=L.Ra)(),e._crypto_kdf_bytes_max=()=>(e._crypto_kdf_bytes_max=L.Sa)(),e._crypto_kdf_contextbytes=()=>(e._crypto_kdf_contextbytes=L.Ta)(),e._crypto_kdf_keybytes=()=>(e._crypto_kdf_keybytes=L.Ua)(),e._crypto_kdf_derive_from_key=(A,g,I,C,B,a)=>(e._crypto_kdf_derive_from_key=L.Va)(A,g,I,C,B,a),e._crypto_kdf_keygen=A=>(e._crypto_kdf_keygen=L.Wa)(A),e._crypto_kdf_hkdf_sha256_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_init=L.Xa)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha256_extract_update=L.Ya)(A,g,I),e._crypto_kdf_hkdf_sha256_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha256_extract_final=L.Za)(A,g),e._crypto_kdf_hkdf_sha256_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_extract=L._a)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keygen=A=>(e._crypto_kdf_hkdf_sha256_keygen=L.$a)(A),e._crypto_kdf_hkdf_sha256_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha256_expand=L.ab)(A,g,I,C,B),e._crypto_kdf_hkdf_sha256_keybytes=()=>(e._crypto_kdf_hkdf_sha256_keybytes=L.bb)(),e._crypto_kdf_hkdf_sha256_bytes_min=()=>(e._crypto_kdf_hkdf_sha256_bytes_min=L.cb)(),e._crypto_kdf_hkdf_sha256_bytes_max=()=>(e._crypto_kdf_hkdf_sha256_bytes_max=L.db)(),e._crypto_kdf_hkdf_sha256_statebytes=()=>(e._crypto_kdf_hkdf_sha256_statebytes=L.eb)(),e._crypto_kdf_hkdf_sha512_extract_init=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_init=L.fb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_update=(A,g,I)=>(e._crypto_kdf_hkdf_sha512_extract_update=L.gb)(A,g,I),e._crypto_kdf_hkdf_sha512_extract_final=(A,g)=>(e._crypto_kdf_hkdf_sha512_extract_final=L.hb)(A,g),e._crypto_kdf_hkdf_sha512_extract=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_extract=L.ib)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keygen=A=>(e._crypto_kdf_hkdf_sha512_keygen=L.jb)(A),e._crypto_kdf_hkdf_sha512_expand=(A,g,I,C,B)=>(e._crypto_kdf_hkdf_sha512_expand=L.kb)(A,g,I,C,B),e._crypto_kdf_hkdf_sha512_keybytes=()=>(e._crypto_kdf_hkdf_sha512_keybytes=L.lb)(),e._crypto_kdf_hkdf_sha512_bytes_min=()=>(e._crypto_kdf_hkdf_sha512_bytes_min=L.mb)(),e._crypto_kdf_hkdf_sha512_bytes_max=()=>(e._crypto_kdf_hkdf_sha512_bytes_max=L.nb)(),e._crypto_kdf_hkdf_sha512_statebytes=()=>(e._crypto_kdf_hkdf_sha512_statebytes=L.ob)(),e._crypto_kx_seed_keypair=(A,g,I)=>(e._crypto_kx_seed_keypair=L.pb)(A,g,I),e._crypto_kx_keypair=(A,g)=>(e._crypto_kx_keypair=L.qb)(A,g),e._crypto_kx_client_session_keys=(A,g,I,C,B)=>(e._crypto_kx_client_session_keys=L.rb)(A,g,I,C,B),e._crypto_kx_server_session_keys=(A,g,I,C,B)=>(e._crypto_kx_server_session_keys=L.sb)(A,g,I,C,B),e._crypto_kx_publickeybytes=()=>(e._crypto_kx_publickeybytes=L.tb)(),e._crypto_kx_secretkeybytes=()=>(e._crypto_kx_secretkeybytes=L.ub)(),e._crypto_kx_seedbytes=()=>(e._crypto_kx_seedbytes=L.vb)(),e._crypto_kx_sessionkeybytes=()=>(e._crypto_kx_sessionkeybytes=L.wb)(),e._crypto_scalarmult_base=(A,g)=>(e._crypto_scalarmult_base=L.xb)(A,g),e._crypto_scalarmult=(A,g,I)=>(e._crypto_scalarmult=L.yb)(A,g,I),e._crypto_scalarmult_bytes=()=>(e._crypto_scalarmult_bytes=L.zb)(),e._crypto_scalarmult_scalarbytes=()=>(e._crypto_scalarmult_scalarbytes=L.Ab)(),e._crypto_secretbox_keybytes=()=>(e._crypto_secretbox_keybytes=L.Bb)(),e._crypto_secretbox_noncebytes=()=>(e._crypto_secretbox_noncebytes=L.Cb)(),e._crypto_secretbox_macbytes=()=>(e._crypto_secretbox_macbytes=L.Db)(),e._crypto_secretbox_messagebytes_max=()=>(e._crypto_secretbox_messagebytes_max=L.Eb)(),e._crypto_secretbox_keygen=A=>(e._crypto_secretbox_keygen=L.Fb)(A),e._crypto_secretbox_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_detached=L.Gb)(A,g,I,C,B,a,i),e._crypto_secretbox_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_easy=L.Hb)(A,g,I,C,B,a),e._crypto_secretbox_open_detached=(A,g,I,C,B,a,i)=>(e._crypto_secretbox_open_detached=L.Ib)(A,g,I,C,B,a,i),e._crypto_secretbox_open_easy=(A,g,I,C,B,a)=>(e._crypto_secretbox_open_easy=L.Jb)(A,g,I,C,B,a),e._crypto_secretstream_xchacha20poly1305_keygen=A=>(e._crypto_secretstream_xchacha20poly1305_keygen=L.Kb)(A),e._crypto_secretstream_xchacha20poly1305_init_push=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_push=L.Lb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_init_pull=(A,g,I)=>(e._crypto_secretstream_xchacha20poly1305_init_pull=L.Mb)(A,g,I),e._crypto_secretstream_xchacha20poly1305_rekey=A=>(e._crypto_secretstream_xchacha20poly1305_rekey=L.Nb)(A),e._crypto_secretstream_xchacha20poly1305_push=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_push=L.Ob)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_pull=(A,g,I,C,B,a,i,r,t,Q)=>(e._crypto_secretstream_xchacha20poly1305_pull=L.Pb)(A,g,I,C,B,a,i,r,t,Q),e._crypto_secretstream_xchacha20poly1305_statebytes=()=>(e._crypto_secretstream_xchacha20poly1305_statebytes=L.Qb)(),e._crypto_secretstream_xchacha20poly1305_abytes=()=>(e._crypto_secretstream_xchacha20poly1305_abytes=L.Rb)(),e._crypto_secretstream_xchacha20poly1305_headerbytes=()=>(e._crypto_secretstream_xchacha20poly1305_headerbytes=L.Sb)(),e._crypto_secretstream_xchacha20poly1305_keybytes=()=>(e._crypto_secretstream_xchacha20poly1305_keybytes=L.Tb)(),e._crypto_secretstream_xchacha20poly1305_messagebytes_max=()=>(e._crypto_secretstream_xchacha20poly1305_messagebytes_max=L.Ub)(),e._crypto_secretstream_xchacha20poly1305_tag_message=()=>(e._crypto_secretstream_xchacha20poly1305_tag_message=L.Vb)(),e._crypto_secretstream_xchacha20poly1305_tag_push=()=>(e._crypto_secretstream_xchacha20poly1305_tag_push=L.Wb)(),e._crypto_secretstream_xchacha20poly1305_tag_rekey=()=>(e._crypto_secretstream_xchacha20poly1305_tag_rekey=L.Xb)(),e._crypto_secretstream_xchacha20poly1305_tag_final=()=>(e._crypto_secretstream_xchacha20poly1305_tag_final=L.Yb)(),e._crypto_shorthash_bytes=()=>(e._crypto_shorthash_bytes=L.Zb)(),e._crypto_shorthash_keybytes=()=>(e._crypto_shorthash_keybytes=L._b)(),e._crypto_shorthash=(A,g,I,C,B)=>(e._crypto_shorthash=L.$b)(A,g,I,C,B),e._crypto_shorthash_keygen=A=>(e._crypto_shorthash_keygen=L.ac)(A),e._crypto_sign_statebytes=()=>(e._crypto_sign_statebytes=L.bc)(),e._crypto_sign_bytes=()=>(e._crypto_sign_bytes=L.cc)(),e._crypto_sign_seedbytes=()=>(e._crypto_sign_seedbytes=L.dc)(),e._crypto_sign_publickeybytes=()=>(e._crypto_sign_publickeybytes=L.ec)(),e._crypto_sign_secretkeybytes=()=>(e._crypto_sign_secretkeybytes=L.fc)(),e._crypto_sign_messagebytes_max=()=>(e._crypto_sign_messagebytes_max=L.gc)(),e._crypto_sign_seed_keypair=(A,g,I)=>(e._crypto_sign_seed_keypair=L.hc)(A,g,I),e._crypto_sign_keypair=(A,g)=>(e._crypto_sign_keypair=L.ic)(A,g),e._crypto_sign=(A,g,I,C,B,a)=>(e._crypto_sign=L.jc)(A,g,I,C,B,a),e._crypto_sign_open=(A,g,I,C,B,a)=>(e._crypto_sign_open=L.kc)(A,g,I,C,B,a),e._crypto_sign_detached=(A,g,I,C,B,a)=>(e._crypto_sign_detached=L.lc)(A,g,I,C,B,a),e._crypto_sign_verify_detached=(A,g,I,C,B)=>(e._crypto_sign_verify_detached=L.mc)(A,g,I,C,B),e._crypto_sign_init=A=>(e._crypto_sign_init=L.nc)(A),e._crypto_sign_update=(A,g,I,C)=>(e._crypto_sign_update=L.oc)(A,g,I,C),e._crypto_sign_final_create=(A,g,I,C)=>(e._crypto_sign_final_create=L.pc)(A,g,I,C),e._crypto_sign_final_verify=(A,g,I)=>(e._crypto_sign_final_verify=L.qc)(A,g,I),e._crypto_sign_ed25519_pk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_pk_to_curve25519=L.rc)(A,g),e._crypto_sign_ed25519_sk_to_curve25519=(A,g)=>(e._crypto_sign_ed25519_sk_to_curve25519=L.sc)(A,g),e._randombytes_random=()=>(e._randombytes_random=L.tc)(),e._randombytes_stir=()=>(e._randombytes_stir=L.uc)(),e._randombytes_uniform=A=>(e._randombytes_uniform=L.vc)(A),e._randombytes_buf=(A,g)=>(e._randombytes_buf=L.wc)(A,g),e._randombytes_buf_deterministic=(A,g,I)=>(e._randombytes_buf_deterministic=L.xc)(A,g,I),e._randombytes_seedbytes=()=>(e._randombytes_seedbytes=L.yc)(),e._randombytes_close=()=>(e._randombytes_close=L.zc)(),e._randombytes=(A,g,I)=>(e._randombytes=L.Ac)(A,g,I),e._sodium_bin2hex=(A,g,I,C)=>(e._sodium_bin2hex=L.Bc)(A,g,I,C),e._sodium_hex2bin=(A,g,I,C,B,a,i)=>(e._sodium_hex2bin=L.Cc)(A,g,I,C,B,a,i),e._sodium_base64_encoded_len=(A,g)=>(e._sodium_base64_encoded_len=L.Dc)(A,g),e._sodium_bin2base64=(A,g,I,C,B)=>(e._sodium_bin2base64=L.Ec)(A,g,I,C,B),e._sodium_base642bin=(A,g,I,C,B,a,i,r)=>(e._sodium_base642bin=L.Fc)(A,g,I,C,B,a,i,r),e._sodium_init=()=>(e._sodium_init=L.Gc)(),e._sodium_pad=(A,g,I,C,B)=>(e._sodium_pad=L.Hc)(A,g,I,C,B),e._sodium_unpad=(A,g,I,C)=>(e._sodium_unpad=L.Ic)(A,g,I,C),e._sodium_version_string=()=>(e._sodium_version_string=L.Jc)(),e._sodium_library_version_major=()=>(e._sodium_library_version_major=L.Kc)(),e._sodium_library_version_minor=()=>(e._sodium_library_version_minor=L.Lc)(),e._sodium_library_minimal=()=>(e._sodium_library_minimal=L.Mc)(),e._malloc=A=>(e._malloc=L.Nc)(A),e._free=A=>(e._free=L.Oc)(A),e.setValue=function(A,g,I="i8"){switch(I.endsWith("*")&&(I="*"),I){case"i1":case"i8":_[A]=g;break;case"i16":h[A>>1]=g;break;case"i32":s[A>>2]=g;break;case"i64":M("to do setValue(i64) use WASM_BIGINT");case"float":f[A>>2]=g;break;case"double":D[A>>3]=g;break;case"*":p[A>>2]=g;break;default:M(`invalid type for setValue: ${I}`)}},e.getValue=function(A,g="i8"){switch(g.endsWith("*")&&(g="*"),g){case"i1":case"i8":return _[A];case"i16":return h[A>>1];case"i32":return s[A>>2];case"i64":M("to do getValue(i64) use WASM_BIGINT");case"float":return f[A>>2];case"double":return D[A>>3];case"*":return p[A>>2];default:M(`invalid type for getValue: ${g}`)}},e.UTF8ToString=x,b=function A(){J||T(),J||(b=A)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();T()})).catch((function(){return C.useBackupModule()})),g}"function"==typeof define&&define.amd?define(["exports"],g):"object"==typeof exports&&"string"!=typeof exports.nodeName?g(exports):A.libsodium=g(A.libsodium_mod||(A.commonJsStrict={}))}(this),function(A){function g(A,g){"use strict";var I,C="uint8array",e=g.ready.then((function(){function C(){if(0!==I._sodium_init())throw new Error("libsodium was not correctly initialized.");for(var g=["crypto_aead_aegis128l_decrypt","crypto_aead_aegis128l_decrypt_detached","crypto_aead_aegis128l_encrypt","crypto_aead_aegis128l_encrypt_detached","crypto_aead_aegis128l_keygen","crypto_aead_aegis256_decrypt","crypto_aead_aegis256_decrypt_detached","crypto_aead_aegis256_encrypt","crypto_aead_aegis256_encrypt_detached","crypto_aead_aegis256_keygen","crypto_aead_chacha20poly1305_decrypt","crypto_aead_chacha20poly1305_decrypt_detached","crypto_aead_chacha20poly1305_encrypt","crypto_aead_chacha20poly1305_encrypt_detached","crypto_aead_chacha20poly1305_ietf_decrypt","crypto_aead_chacha20poly1305_ietf_decrypt_detached","crypto_aead_chacha20poly1305_ietf_encrypt","crypto_aead_chacha20poly1305_ietf_encrypt_detached","crypto_aead_chacha20poly1305_ietf_keygen","crypto_aead_chacha20poly1305_keygen","crypto_aead_xchacha20poly1305_ietf_decrypt","crypto_aead_xchacha20poly1305_ietf_decrypt_detached","crypto_aead_xchacha20poly1305_ietf_encrypt","crypto_aead_xchacha20poly1305_ietf_encrypt_detached","crypto_aead_xchacha20poly1305_ietf_keygen","crypto_auth","crypto_auth_hmacsha256","crypto_auth_hmacsha256_final","crypto_auth_hmacsha256_init","crypto_auth_hmacsha256_keygen","crypto_auth_hmacsha256_update","crypto_auth_hmacsha256_verify","crypto_auth_hmacsha512","crypto_auth_hmacsha512256","crypto_auth_hmacsha512256_final","crypto_auth_hmacsha512256_init","crypto_auth_hmacsha512256_keygen","crypto_auth_hmacsha512256_update","crypto_auth_hmacsha512256_verify","crypto_auth_hmacsha512_final","crypto_auth_hmacsha512_init","crypto_auth_hmacsha512_keygen","crypto_auth_hmacsha512_update","crypto_auth_hmacsha512_verify","crypto_auth_keygen","crypto_auth_verify","crypto_box_beforenm","crypto_box_curve25519xchacha20poly1305_beforenm","crypto_box_curve25519xchacha20poly1305_detached","crypto_box_curve25519xchacha20poly1305_detached_afternm","crypto_box_curve25519xchacha20poly1305_easy","crypto_box_curve25519xchacha20poly1305_easy_afternm","crypto_box_curve25519xchacha20poly1305_keypair","crypto_box_curve25519xchacha20poly1305_open_detached","crypto_box_curve25519xchacha20poly1305_open_detached_afternm","crypto_box_curve25519xchacha20poly1305_open_easy","crypto_box_curve25519xchacha20poly1305_open_easy_afternm","crypto_box_curve25519xchacha20poly1305_seal","crypto_box_curve25519xchacha20poly1305_seal_open","crypto_box_curve25519xchacha20poly1305_seed_keypair","crypto_box_detached","crypto_box_easy","crypto_box_easy_afternm","crypto_box_keypair","crypto_box_open_detached","crypto_box_open_easy","crypto_box_open_easy_afternm","crypto_box_seal","crypto_box_seal_open","crypto_box_seed_keypair","crypto_core_ed25519_add","crypto_core_ed25519_from_hash","crypto_core_ed25519_from_uniform","crypto_core_ed25519_is_valid_point","crypto_core_ed25519_random","crypto_core_ed25519_scalar_add","crypto_core_ed25519_scalar_complement","crypto_core_ed25519_scalar_invert","crypto_core_ed25519_scalar_mul","crypto_core_ed25519_scalar_negate","crypto_core_ed25519_scalar_random","crypto_core_ed25519_scalar_reduce","crypto_core_ed25519_scalar_sub","crypto_core_ed25519_sub","crypto_core_hchacha20","crypto_core_hsalsa20","crypto_core_ristretto255_add","crypto_core_ristretto255_from_hash","crypto_core_ristretto255_is_valid_point","crypto_core_ristretto255_random","crypto_core_ristretto255_scalar_add","crypto_core_ristretto255_scalar_complement","crypto_core_ristretto255_scalar_invert","crypto_core_ristretto255_scalar_mul","crypto_core_ristretto255_scalar_negate","crypto_core_ristretto255_scalar_random","crypto_core_ristretto255_scalar_reduce","crypto_core_ristretto255_scalar_sub","crypto_core_ristretto255_sub","crypto_generichash","crypto_generichash_blake2b_salt_personal","crypto_generichash_final","crypto_generichash_init","crypto_generichash_keygen","crypto_generichash_update","crypto_hash","crypto_hash_sha256","crypto_hash_sha256_final","crypto_hash_sha256_init","crypto_hash_sha256_update","crypto_hash_sha512","crypto_hash_sha512_final","crypto_hash_sha512_init","crypto_hash_sha512_update","crypto_kdf_derive_from_key","crypto_kdf_keygen","crypto_kx_client_session_keys","crypto_kx_keypair","crypto_kx_seed_keypair","crypto_kx_server_session_keys","crypto_onetimeauth","crypto_onetimeauth_final","crypto_onetimeauth_init","crypto_onetimeauth_keygen","crypto_onetimeauth_update","crypto_onetimeauth_verify","crypto_pwhash","crypto_pwhash_scryptsalsa208sha256","crypto_pwhash_scryptsalsa208sha256_ll","crypto_pwhash_scryptsalsa208sha256_str","crypto_pwhash_scryptsalsa208sha256_str_verify","crypto_pwhash_str","crypto_pwhash_str_needs_rehash","crypto_pwhash_str_verify","crypto_scalarmult","crypto_scalarmult_base","crypto_scalarmult_ed25519","crypto_scalarmult_ed25519_base","crypto_scalarmult_ed25519_base_noclamp","crypto_scalarmult_ed25519_noclamp","crypto_scalarmult_ristretto255","crypto_scalarmult_ristretto255_base","crypto_secretbox_detached","crypto_secretbox_easy","crypto_secretbox_keygen","crypto_secretbox_open_detached","crypto_secretbox_open_easy","crypto_secretstream_xchacha20poly1305_init_pull","crypto_secretstream_xchacha20poly1305_init_push","crypto_secretstream_xchacha20poly1305_keygen","crypto_secretstream_xchacha20poly1305_pull","crypto_secretstream_xchacha20poly1305_push","crypto_secretstream_xchacha20poly1305_rekey","crypto_shorthash","crypto_shorthash_keygen","crypto_shorthash_siphashx24","crypto_sign","crypto_sign_detached","crypto_sign_ed25519_pk_to_curve25519","crypto_sign_ed25519_sk_to_curve25519","crypto_sign_ed25519_sk_to_pk","crypto_sign_ed25519_sk_to_seed","crypto_sign_final_create","crypto_sign_final_verify","crypto_sign_init","crypto_sign_keypair","crypto_sign_open","crypto_sign_seed_keypair","crypto_sign_update","crypto_sign_verify_detached","crypto_stream_chacha20","crypto_stream_chacha20_ietf_xor","crypto_stream_chacha20_ietf_xor_ic","crypto_stream_chacha20_keygen","crypto_stream_chacha20_xor","crypto_stream_chacha20_xor_ic","crypto_stream_keygen","crypto_stream_xchacha20_keygen","crypto_stream_xchacha20_xor","crypto_stream_xchacha20_xor_ic","randombytes_buf","randombytes_buf_deterministic","randombytes_close","randombytes_random","randombytes_set_implementation","randombytes_stir","randombytes_uniform","sodium_version_string"],C=[w,k,d,l,u,v,S,b,M,F,N,K,Y,H,G,J,U,x,m,P,R,L,T,q,z,j,X,O,V,Z,W,$,AA,gA,IA,CA,eA,BA,aA,iA,rA,tA,QA,oA,cA,EA,yA,_A,nA,hA,sA,pA,fA,DA,wA,kA,dA,lA,uA,vA,SA,bA,MA,FA,NA,KA,YA,HA,GA,JA,UA,xA,mA,PA,RA,LA,TA,qA,zA,jA,XA,OA,VA,ZA,WA,$A,Ag,gg,Ig,Cg,eg,Bg,ag,ig,rg,tg,Qg,og,cg,Eg,yg,_g,ng,hg,sg,pg,fg,Dg,wg,kg,dg,lg,ug,vg,Sg,bg,Mg,Fg,Ng,Kg,Yg,Hg,Gg,Jg,Ug,xg,mg,Pg,Rg,Lg,Tg,qg,zg,jg,Xg,Og,Vg,Zg,Wg,$g,AI,gI,II,CI,eI,BI,aI,iI,rI,tI,QI,oI,cI,EI,yI,_I,nI,hI,sI,pI,fI,DI,wI,kI,dI,lI,uI,vI,SI,bI,MI,FI,NI,KI,YI,HI,GI,JI,UI,xI,mI,PI,RI,LI,TI,qI,zI,jI],e=0;e<C.length;e++)"function"==typeof I["_"+g[e]]&&(A[g[e]]=C[e]);var B=["SODIUM_LIBRARY_VERSION_MAJOR","SODIUM_LIBRARY_VERSION_MINOR","crypto_aead_aegis128l_ABYTES","crypto_aead_aegis128l_KEYBYTES","crypto_aead_aegis128l_MESSAGEBYTES_MAX","crypto_aead_aegis128l_NPUBBYTES","crypto_aead_aegis128l_NSECBYTES","crypto_aead_aegis256_ABYTES","crypto_aead_aegis256_KEYBYTES","crypto_aead_aegis256_MESSAGEBYTES_MAX","crypto_aead_aegis256_NPUBBYTES","crypto_aead_aegis256_NSECBYTES","crypto_aead_aes256gcm_ABYTES","crypto_aead_aes256gcm_KEYBYTES","crypto_aead_aes256gcm_MESSAGEBYTES_MAX","crypto_aead_aes256gcm_NPUBBYTES","crypto_aead_aes256gcm_NSECBYTES","crypto_aead_chacha20poly1305_ABYTES","crypto_aead_chacha20poly1305_IETF_ABYTES","crypto_aead_chacha20poly1305_IETF_KEYBYTES","crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_IETF_NPUBBYTES","crypto_aead_chacha20poly1305_IETF_NSECBYTES","crypto_aead_chacha20poly1305_KEYBYTES","crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_NPUBBYTES","crypto_aead_chacha20poly1305_NSECBYTES","crypto_aead_chacha20poly1305_ietf_ABYTES","crypto_aead_chacha20poly1305_ietf_KEYBYTES","crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_ietf_NPUBBYTES","crypto_aead_chacha20poly1305_ietf_NSECBYTES","crypto_aead_xchacha20poly1305_IETF_ABYTES","crypto_aead_xchacha20poly1305_IETF_KEYBYTES","crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX","crypto_aead_xchacha20poly1305_IETF_NPUBBYTES","crypto_aead_xchacha20poly1305_IETF_NSECBYTES","crypto_aead_xchacha20poly1305_ietf_ABYTES","crypto_aead_xchacha20poly1305_ietf_KEYBYTES","crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX","crypto_aead_xchacha20poly1305_ietf_NPUBBYTES","crypto_aead_xchacha20poly1305_ietf_NSECBYTES","crypto_auth_BYTES","crypto_auth_KEYBYTES","crypto_auth_hmacsha256_BYTES","crypto_auth_hmacsha256_KEYBYTES","crypto_auth_hmacsha512256_BYTES","crypto_auth_hmacsha512256_KEYBYTES","crypto_auth_hmacsha512_BYTES","crypto_auth_hmacsha512_KEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_MACBYTES","crypto_box_MESSAGEBYTES_MAX","crypto_box_NONCEBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SEALBYTES","crypto_box_SECRETKEYBYTES","crypto_box_SEEDBYTES","crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES","crypto_box_curve25519xchacha20poly1305_MACBYTES","crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX","crypto_box_curve25519xchacha20poly1305_NONCEBYTES","crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES","crypto_box_curve25519xchacha20poly1305_SEALBYTES","crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES","crypto_box_curve25519xchacha20poly1305_SEEDBYTES","crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES","crypto_box_curve25519xsalsa20poly1305_MACBYTES","crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX","crypto_box_curve25519xsalsa20poly1305_NONCEBYTES","crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES","crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES","crypto_box_curve25519xsalsa20poly1305_SEEDBYTES","crypto_core_ed25519_BYTES","crypto_core_ed25519_HASHBYTES","crypto_core_ed25519_NONREDUCEDSCALARBYTES","crypto_core_ed25519_SCALARBYTES","crypto_core_ed25519_UNIFORMBYTES","crypto_core_hchacha20_CONSTBYTES","crypto_core_hchacha20_INPUTBYTES","crypto_core_hchacha20_KEYBYTES","crypto_core_hchacha20_OUTPUTBYTES","crypto_core_hsalsa20_CONSTBYTES","crypto_core_hsalsa20_INPUTBYTES","crypto_core_hsalsa20_KEYBYTES","crypto_core_hsalsa20_OUTPUTBYTES","crypto_core_ristretto255_BYTES","crypto_core_ristretto255_HASHBYTES","crypto_core_ristretto255_NONREDUCEDSCALARBYTES","crypto_core_ristretto255_SCALARBYTES","crypto_core_salsa2012_CONSTBYTES","crypto_core_salsa2012_INPUTBYTES","crypto_core_salsa2012_KEYBYTES","crypto_core_salsa2012_OUTPUTBYTES","crypto_core_salsa208_CONSTBYTES","crypto_core_salsa208_INPUTBYTES","crypto_core_salsa208_KEYBYTES","crypto_core_salsa208_OUTPUTBYTES","crypto_core_salsa20_CONSTBYTES","crypto_core_salsa20_INPUTBYTES","crypto_core_salsa20_KEYBYTES","crypto_core_salsa20_OUTPUTBYTES","crypto_generichash_BYTES","crypto_generichash_BYTES_MAX","crypto_generichash_BYTES_MIN","crypto_generichash_KEYBYTES","crypto_generichash_KEYBYTES_MAX","crypto_generichash_KEYBYTES_MIN","crypto_generichash_blake2b_BYTES","crypto_generichash_blake2b_BYTES_MAX","crypto_generichash_blake2b_BYTES_MIN","crypto_generichash_blake2b_KEYBYTES","crypto_generichash_blake2b_KEYBYTES_MAX","crypto_generichash_blake2b_KEYBYTES_MIN","crypto_generichash_blake2b_PERSONALBYTES","crypto_generichash_blake2b_SALTBYTES","crypto_hash_BYTES","crypto_hash_sha256_BYTES","crypto_hash_sha512_BYTES","crypto_kdf_BYTES_MAX","crypto_kdf_BYTES_MIN","crypto_kdf_CONTEXTBYTES","crypto_kdf_KEYBYTES","crypto_kdf_blake2b_BYTES_MAX","crypto_kdf_blake2b_BYTES_MIN","crypto_kdf_blake2b_CONTEXTBYTES","crypto_kdf_blake2b_KEYBYTES","crypto_kdf_hkdf_sha256_BYTES_MAX","crypto_kdf_hkdf_sha256_BYTES_MIN","crypto_kdf_hkdf_sha256_KEYBYTES","crypto_kdf_hkdf_sha512_BYTES_MAX","crypto_kdf_hkdf_sha512_BYTES_MIN","crypto_kdf_hkdf_sha512_KEYBYTES","crypto_kx_PUBLICKEYBYTES","crypto_kx_SECRETKEYBYTES","crypto_kx_SEEDBYTES","crypto_kx_SESSIONKEYBYTES","crypto_onetimeauth_BYTES","crypto_onetimeauth_KEYBYTES","crypto_onetimeauth_poly1305_BYTES","crypto_onetimeauth_poly1305_KEYBYTES","crypto_pwhash_ALG_ARGON2I13","crypto_pwhash_ALG_ARGON2ID13","crypto_pwhash_ALG_DEFAULT","crypto_pwhash_BYTES_MAX","crypto_pwhash_BYTES_MIN","crypto_pwhash_MEMLIMIT_INTERACTIVE","crypto_pwhash_MEMLIMIT_MAX","crypto_pwhash_MEMLIMIT_MIN","crypto_pwhash_MEMLIMIT_MODERATE","crypto_pwhash_MEMLIMIT_SENSITIVE","crypto_pwhash_OPSLIMIT_INTERACTIVE","crypto_pwhash_OPSLIMIT_MAX","crypto_pwhash_OPSLIMIT_MIN","crypto_pwhash_OPSLIMIT_MODERATE","crypto_pwhash_OPSLIMIT_SENSITIVE","crypto_pwhash_PASSWD_MAX","crypto_pwhash_PASSWD_MIN","crypto_pwhash_SALTBYTES","crypto_pwhash_STRBYTES","crypto_pwhash_argon2i_BYTES_MAX","crypto_pwhash_argon2i_BYTES_MIN","crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVE","crypto_pwhash_argon2i_MEMLIMIT_MAX","crypto_pwhash_argon2i_MEMLIMIT_MIN","crypto_pwhash_argon2i_MEMLIMIT_MODERATE","crypto_pwhash_argon2i_MEMLIMIT_SENSITIVE","crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVE","crypto_pwhash_argon2i_OPSLIMIT_MAX","crypto_pwhash_argon2i_OPSLIMIT_MIN","crypto_pwhash_argon2i_OPSLIMIT_MODERATE","crypto_pwhash_argon2i_OPSLIMIT_SENSITIVE","crypto_pwhash_argon2i_PASSWD_MAX","crypto_pwhash_argon2i_PASSWD_MIN","crypto_pwhash_argon2i_SALTBYTES","crypto_pwhash_argon2i_STRBYTES","crypto_pwhash_argon2id_BYTES_MAX","crypto_pwhash_argon2id_BYTES_MIN","crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVE","crypto_pwhash_argon2id_MEMLIMIT_MAX","crypto_pwhash_argon2id_MEMLIMIT_MIN","crypto_pwhash_argon2id_MEMLIMIT_MODERATE","crypto_pwhash_argon2id_MEMLIMIT_SENSITIVE","crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVE","crypto_pwhash_argon2id_OPSLIMIT_MAX","crypto_pwhash_argon2id_OPSLIMIT_MIN","crypto_pwhash_argon2id_OPSLIMIT_MODERATE","crypto_pwhash_argon2id_OPSLIMIT_SENSITIVE","crypto_pwhash_argon2id_PASSWD_MAX","crypto_pwhash_argon2id_PASSWD_MIN","crypto_pwhash_argon2id_SALTBYTES","crypto_pwhash_argon2id_STRBYTES","crypto_pwhash_scryptsalsa208sha256_BYTES_MAX","crypto_pwhash_scryptsalsa208sha256_BYTES_MIN","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE","crypto_pwhash_scryptsalsa208sha256_PASSWD_MAX","crypto_pwhash_scryptsalsa208sha256_PASSWD_MIN","crypto_pwhash_scryptsalsa208sha256_SALTBYTES","crypto_pwhash_scryptsalsa208sha256_STRBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_scalarmult_curve25519_BYTES","crypto_scalarmult_curve25519_SCALARBYTES","crypto_scalarmult_ed25519_BYTES","crypto_scalarmult_ed25519_SCALARBYTES","crypto_scalarmult_ristretto255_BYTES","crypto_scalarmult_ristretto255_SCALARBYTES","crypto_secretbox_KEYBYTES","crypto_secretbox_MACBYTES","crypto_secretbox_MESSAGEBYTES_MAX","crypto_secretbox_NONCEBYTES","crypto_secretbox_xchacha20poly1305_KEYBYTES","crypto_secretbox_xchacha20poly1305_MACBYTES","crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX","crypto_secretbox_xchacha20poly1305_NONCEBYTES","crypto_secretbox_xsalsa20poly1305_KEYBYTES","crypto_secretbox_xsalsa20poly1305_MACBYTES","crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX","crypto_secretbox_xsalsa20poly1305_NONCEBYTES","crypto_secretstream_xchacha20poly1305_ABYTES","crypto_secretstream_xchacha20poly1305_HEADERBYTES","crypto_secretstream_xchacha20poly1305_KEYBYTES","crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX","crypto_secretstream_xchacha20poly1305_TAG_FINAL","crypto_secretstream_xchacha20poly1305_TAG_MESSAGE","crypto_secretstream_xchacha20poly1305_TAG_PUSH","crypto_secretstream_xchacha20poly1305_TAG_REKEY","crypto_shorthash_BYTES","crypto_shorthash_KEYBYTES","crypto_shorthash_siphash24_BYTES","crypto_shorthash_siphash24_KEYBYTES","crypto_shorthash_siphashx24_BYTES","crypto_shorthash_siphashx24_KEYBYTES","crypto_sign_BYTES","crypto_sign_MESSAGEBYTES_MAX","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","crypto_sign_SEEDBYTES","crypto_sign_ed25519_BYTES","crypto_sign_ed25519_MESSAGEBYTES_MAX","crypto_sign_ed25519_PUBLICKEYBYTES","crypto_sign_ed25519_SECRETKEYBYTES","crypto_sign_ed25519_SEEDBYTES","crypto_stream_KEYBYTES","crypto_stream_MESSAGEBYTES_MAX","crypto_stream_NONCEBYTES","crypto_stream_chacha20_IETF_KEYBYTES","crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX","crypto_stream_chacha20_IETF_NONCEBYTES","crypto_stream_chacha20_KEYBYTES","crypto_stream_chacha20_MESSAGEBYTES_MAX","crypto_stream_chacha20_NONCEBYTES","crypto_stream_chacha20_ietf_KEYBYTES","crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX","crypto_stream_chacha20_ietf_NONCEBYTES","crypto_stream_salsa2012_KEYBYTES","crypto_stream_salsa2012_MESSAGEBYTES_MAX","crypto_stream_salsa2012_NONCEBYTES","crypto_stream_salsa208_KEYBYTES","crypto_stream_salsa208_MESSAGEBYTES_MAX","crypto_stream_salsa208_NONCEBYTES","crypto_stream_salsa20_KEYBYTES","crypto_stream_salsa20_MESSAGEBYTES_MAX","crypto_stream_salsa20_NONCEBYTES","crypto_stream_xchacha20_KEYBYTES","crypto_stream_xchacha20_MESSAGEBYTES_MAX","crypto_stream_xchacha20_NONCEBYTES","crypto_stream_xsalsa20_KEYBYTES","crypto_stream_xsalsa20_MESSAGEBYTES_MAX","crypto_stream_xsalsa20_NONCEBYTES","crypto_verify_16_BYTES","crypto_verify_32_BYTES","crypto_verify_64_BYTES"];for(e=0;e<B.length;e++)"function"==typeof(i=I["_"+B[e].toLowerCase()])&&(A[B[e]]=i());var a=["SODIUM_VERSION_STRING","crypto_pwhash_STRPREFIX","crypto_pwhash_argon2i_STRPREFIX","crypto_pwhash_argon2id_STRPREFIX","crypto_pwhash_scryptsalsa208sha256_STRPREFIX"];for(e=0;e<a.length;e++){var i;"function"==typeof(i=I["_"+a[e].toLowerCase()])&&(A[a[e]]=I.UTF8ToString(i()))}}I=g;try{C();var e=new Uint8Array([98,97,108,108,115]),B=A.randombytes_buf(A.crypto_secretbox_NONCEBYTES),a=A.randombytes_buf(A.crypto_secretbox_KEYBYTES),i=A.crypto_secretbox_easy(e,B,a),r=A.crypto_secretbox_open_easy(i,B,a);if(A.memcmp(e,r))return}catch(A){if(null==I.useBackupModule)throw new Error("Both wasm and asm failed to load"+A)}I.useBackupModule(),C()}));function B(A){if("function"==typeof TextEncoder)return(new TextEncoder).encode(A);A=unescape(encodeURIComponent(A));for(var g=new Uint8Array(A.length),I=0,C=A.length;I<C;I++)g[I]=A.charCodeAt(I);return g}function a(A){if("function"==typeof TextDecoder)return new TextDecoder("utf-8",{fatal:!0}).decode(A);var g=8192,I=Math.ceil(A.length/g);if(I<=1)try{return decodeURIComponent(escape(String.fromCharCode.apply(null,A)))}catch(A){throw new TypeError("The encoded data was not valid.")}for(var C="",e=0,B=0;B<I;B++){var i=Array.prototype.slice.call(A,B*g+e,(B+1)*g+e);if(0!=i.length){var r,t=i.length,Q=0;do{var o=i[--t];o>=240?(Q=4,r=!0):o>=224?(Q=3,r=!0):o>=192?(Q=2,r=!0):o<128&&(Q=1,r=!0)}while(!r);for(var c=Q-(i.length-t),E=0;E<c;E++)e--,i.pop();C+=a(i)}}return C}function i(A){A=D(null,A,"input");for(var g,I,C,e="",B=0;B<A.length;B++)C=87+(I=15&A[B])+(I-10>>8&-39)<<8|87+(g=A[B]>>>4)+(g-10>>8&-39),e+=String.fromCharCode(255&C)+String.fromCharCode(C>>>8);return e}var r={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function t(A){if(null==A)return r.URLSAFE_NO_PADDING;if(A!==r.ORIGINAL&&A!==r.ORIGINAL_NO_PADDING&&A!==r.URLSAFE&&A!=r.URLSAFE_NO_PADDING)throw new Error("unsupported base64 variant");return A}function Q(A,g){g=t(g),A=D(e,A,"input");var C,e=[],B=0|Math.floor(A.length/3),i=A.length-3*B,r=4*B+(0!==i?2&g?2+(i>>>1):4:0),Q=new y(r+1),o=_(A);return e.push(o),e.push(Q.address),0===I._sodium_bin2base64(Q.address,Q.length,o,A.length,g)&&s(e,"conversion failed"),Q.length=r,C=a(Q.to_Uint8Array()),h(e),C}function o(A,g){var I=g||C;if(!c(I))throw new Error(I+" output format is not available");if(A instanceof y){if("uint8array"===I)return A.to_Uint8Array();if("text"===I)return a(A.to_Uint8Array());if("hex"===I)return i(A.to_Uint8Array());if("base64"===I)return Q(A.to_Uint8Array(),r.URLSAFE_NO_PADDING);throw new Error('What is output format "'+I+'"?')}if("object"==typeof A){for(var e=Object.keys(A),B={},t=0;t<e.length;t++)B[e[t]]=o(A[e[t]],I);return B}if("string"==typeof A)return A;throw new TypeError("Cannot format output")}function c(A){for(var g=["uint8array","text","hex","base64"],I=0;I<g.length;I++)if(g[I]===A)return!0;return!1}function E(A){if(A){if("string"!=typeof A)throw new TypeError("When defined, the output format must be a string");if(!c(A))throw new Error(A+" is not a supported output format")}}function y(A){this.length=A,this.address=n(A)}function _(A){var g=n(A.length);return I.HEAPU8.set(A,g),g}function n(A){var g=I._malloc(A);if(0===g)throw{message:"_malloc() failed",length:A};return g}function h(A){if(A)for(var g=0;g<A.length;g++)C=A[g],I._free(C);var C}function s(A,g){throw h(A),new Error(g)}function p(A,g){throw h(A),new TypeError(g)}function f(A,g,I){null==g&&p(A,I+" cannot be null or undefined")}function D(A,g,I){return f(A,g,I),g instanceof Uint8Array?g:"string"==typeof g?B(g):void p(A,"unsupported input type for "+I)}function w(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_aegis128l_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_aegis128l_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_aegis128l_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_aegis128l_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_aegis128l_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function k(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_aegis128l_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_aegis128l_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_aegis128l_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function d(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis128l_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis128l_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_aegis128l_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_aegis128l_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function l(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis128l_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis128l_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_aegis128l_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_aegis128l_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function u(A){var g=[];E(A);var C=new y(0|I._crypto_aead_aegis128l_keybytes()),e=C.address;g.push(e),I._crypto_aead_aegis128l_keygen(e);var B=o(C,A);return h(g),B}function v(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_aegis256_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_aegis256_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_aegis256_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_aegis256_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_aegis256_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function S(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_aegis256_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_aegis256_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_aegis256_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function b(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis256_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis256_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_aegis256_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_aegis256_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function M(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_aegis256_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_aegis256_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_aegis256_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_aegis256_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function F(A){var g=[];E(A);var C=new y(0|I._crypto_aead_aegis256_keybytes()),e=C.address;g.push(e),I._crypto_aead_aegis256_keygen(e);var B=o(C,A);return h(g),B}function N(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_chacha20poly1305_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_chacha20poly1305_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_chacha20poly1305_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_chacha20poly1305_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_chacha20poly1305_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function K(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_chacha20poly1305_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_chacha20poly1305_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_chacha20poly1305_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function Y(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_chacha20poly1305_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_chacha20poly1305_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function H(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_chacha20poly1305_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_chacha20poly1305_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function G(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_chacha20poly1305_ietf_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_chacha20poly1305_ietf_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_chacha20poly1305_ietf_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function J(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_chacha20poly1305_ietf_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function U(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_chacha20poly1305_ietf_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_chacha20poly1305_ietf_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function x(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_chacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_chacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_chacha20poly1305_ietf_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_chacha20poly1305_ietf_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function m(A){var g=[];E(A);var C=new y(0|I._crypto_aead_chacha20poly1305_ietf_keybytes()),e=C.address;g.push(e),I._crypto_aead_chacha20poly1305_ietf_keygen(e);var B=o(C,A);return h(g),B}function P(A){var g=[];E(A);var C=new y(0|I._crypto_aead_chacha20poly1305_keybytes()),e=C.address;g.push(e),I._crypto_aead_chacha20poly1305_keygen(e);var B=o(C,A);return h(g),B}function R(A,g,C,e,B,a){var i=[];E(a);var r=null;null!=A&&(r=_(A=D(i,A,"secret_nonce")),A.length,i.push(r)),g=D(i,g,"ciphertext");var t,Q=I._crypto_aead_xchacha20poly1305_ietf_abytes(),c=g.length;c<Q&&p(i,"ciphertext is too short"),t=_(g),i.push(t);var n=null,f=0;null!=C&&(n=_(C=D(i,C,"additional_data")),f=C.length,i.push(n)),e=D(i,e,"public_nonce");var w,k=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();e.length!==k&&p(i,"invalid public_nonce length"),w=_(e),i.push(w),B=D(i,B,"key");var d,l=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();B.length!==l&&p(i,"invalid key length"),d=_(B),i.push(d);var u=new y(c-I._crypto_aead_xchacha20poly1305_ietf_abytes()|0),v=u.address;if(i.push(v),0===I._crypto_aead_xchacha20poly1305_ietf_decrypt(v,null,r,t,c,0,n,f,0,w,d)){var S=o(u,a);return h(i),S}s(i,"ciphertext cannot be decrypted using that key")}function L(A,g,C,e,B,a,i){var r=[];E(i);var t=null;null!=A&&(t=_(A=D(r,A,"secret_nonce")),A.length,r.push(t));var Q=_(g=D(r,g,"ciphertext")),c=g.length;r.push(Q),C=D(r,C,"mac");var n,f=0|I._crypto_box_macbytes();C.length!==f&&p(r,"invalid mac length"),n=_(C),r.push(n);var w=null,k=0;null!=e&&(w=_(e=D(r,e,"additional_data")),k=e.length,r.push(w)),B=D(r,B,"public_nonce");var d,l=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();B.length!==l&&p(r,"invalid public_nonce length"),d=_(B),r.push(d),a=D(r,a,"key");var u,v=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();a.length!==v&&p(r,"invalid key length"),u=_(a),r.push(u);var S=new y(0|c),b=S.address;if(r.push(b),0===I._crypto_aead_xchacha20poly1305_ietf_decrypt_detached(b,t,Q,c,0,n,w,k,0,d,u)){var M=o(S,i);return h(r),M}s(r,"ciphertext cannot be decrypted using that key")}function T(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(t+I._crypto_aead_xchacha20poly1305_ietf_abytes()|0),u=l.address;if(i.push(u),0===I._crypto_aead_xchacha20poly1305_ietf_encrypt(u,null,r,t,0,Q,c,0,n,f,k)){var v=o(l,a);return h(i),v}s(i,"invalid usage")}function q(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"message")),t=A.length;i.push(r);var Q=null,c=0;null!=g&&(Q=_(g=D(i,g,"additional_data")),c=g.length,i.push(Q));var n=null;null!=C&&(n=_(C=D(i,C,"secret_nonce")),C.length,i.push(n)),e=D(i,e,"public_nonce");var f,w=0|I._crypto_aead_xchacha20poly1305_ietf_npubbytes();e.length!==w&&p(i,"invalid public_nonce length"),f=_(e),i.push(f),B=D(i,B,"key");var k,d=0|I._crypto_aead_xchacha20poly1305_ietf_keybytes();B.length!==d&&p(i,"invalid key length"),k=_(B),i.push(k);var l=new y(0|t),u=l.address;i.push(u);var v=new y(0|I._crypto_aead_xchacha20poly1305_ietf_abytes()),S=v.address;if(i.push(S),0===I._crypto_aead_xchacha20poly1305_ietf_encrypt_detached(u,S,null,r,t,0,Q,c,0,n,f,k)){var b=o({ciphertext:l,mac:v},a);return h(i),b}s(i,"invalid usage")}function z(A){var g=[];E(A);var C=new y(0|I._crypto_aead_xchacha20poly1305_ietf_keybytes()),e=C.address;g.push(e),I._crypto_aead_xchacha20poly1305_ietf_keygen(e);var B=o(C,A);return h(g),B}function j(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function X(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_hmacsha256_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_hmacsha256_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth_hmacsha256(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function O(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_auth_hmacsha256_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_auth_hmacsha256_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function V(A,g){var C=[];E(g);var e=null,B=0;null!=A&&(e=_(A=D(C,A,"key")),B=A.length,C.push(e));var a=new y(208).address;if(!(0|I._crypto_auth_hmacsha256_init(a,e,B))){var i=a;return h(C),i}s(C,"invalid usage")}function Z(A){var g=[];E(A);var C=new y(0|I._crypto_auth_hmacsha256_keybytes()),e=C.address;g.push(e),I._crypto_auth_hmacsha256_keygen(e);var B=o(C,A);return h(g),B}function W(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_auth_hmacsha256_update(A,B,a)&&s(e,"invalid usage"),h(e)}function $(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_hmacsha256_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_hmacsha256_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_hmacsha256_verify(B,i,r,0,t));return h(e),o}function AA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_hmacsha512_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_hmacsha512_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth_hmacsha512(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function gA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_auth_hmacsha512256_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_auth_hmacsha512256_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_auth_hmacsha512256(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function IA(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_auth_hmacsha512256_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_auth_hmacsha512256_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function CA(A,g){var C=[];E(g);var e=null,B=0;null!=A&&(e=_(A=D(C,A,"key")),B=A.length,C.push(e));var a=new y(416).address;if(!(0|I._crypto_auth_hmacsha512256_init(a,e,B))){var i=a;return h(C),i}s(C,"invalid usage")}function eA(A){var g=[];E(A);var C=new y(0|I._crypto_auth_hmacsha512256_keybytes()),e=C.address;g.push(e),I._crypto_auth_hmacsha512256_keygen(e);var B=o(C,A);return h(g),B}function BA(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_auth_hmacsha512256_update(A,B,a)&&s(e,"invalid usage"),h(e)}function aA(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_hmacsha512256_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_hmacsha512256_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_hmacsha512256_verify(B,i,r,0,t));return h(e),o}function iA(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_auth_hmacsha512_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_auth_hmacsha512_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function rA(A,g){var C=[];E(g);var e=null,B=0;null!=A&&(e=_(A=D(C,A,"key")),B=A.length,C.push(e));var a=new y(416).address;if(!(0|I._crypto_auth_hmacsha512_init(a,e,B))){var i=a;return h(C),i}s(C,"invalid usage")}function tA(A){var g=[];E(A);var C=new y(0|I._crypto_auth_hmacsha512_keybytes()),e=C.address;g.push(e),I._crypto_auth_hmacsha512_keygen(e);var B=o(C,A);return h(g),B}function QA(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_auth_hmacsha512_update(A,B,a)&&s(e,"invalid usage"),h(e)}function oA(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_hmacsha512_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_hmacsha512_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_hmacsha512_verify(B,i,r,0,t));return h(e),o}function cA(A){var g=[];E(A);var C=new y(0|I._crypto_auth_keybytes()),e=C.address;g.push(e),I._crypto_auth_keygen(e);var B=o(C,A);return h(g),B}function EA(A,g,C){var e=[];A=D(e,A,"tag");var B,a=0|I._crypto_auth_bytes();A.length!==a&&p(e,"invalid tag length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_auth_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_auth_verify(B,i,r,0,t));return h(e),o}function yA(A,g,C){var e=[];E(C),A=D(e,A,"publicKey");var B,a=0|I._crypto_box_publickeybytes();A.length!==a&&p(e,"invalid publicKey length"),B=_(A),e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_box_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_box_beforenmbytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_box_beforenm(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function _A(A,g,C){var e=[];E(C),A=D(e,A,"publicKey");var B,a=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();A.length!==a&&p(e,"invalid publicKey length"),B=_(A),e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_box_curve25519xchacha20poly1305_beforenm(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function nA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;a.push(d);var l=new y(0|I._crypto_box_curve25519xchacha20poly1305_macbytes()),u=l.address;if(a.push(u),!(0|I._crypto_box_curve25519xchacha20poly1305_detached(d,u,i,r,0,t,c,f))){var v=o({ciphertext:k,mac:l},B);return h(a),v}s(a,"invalid usage")}function hA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;B.push(f);var w=new y(0|I._crypto_box_curve25519xchacha20poly1305_macbytes()),k=w.address;if(B.push(k),!(0|I._crypto_box_curve25519xchacha20poly1305_detached_afternm(f,k,a,i,0,r,Q))){var d=o({ciphertext:n,mac:w},e);return h(B),d}s(B,"invalid usage")}function sA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(r+I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),d=k.address;if(a.push(d),!(0|I._crypto_box_curve25519xchacha20poly1305_easy(d,i,r,0,t,c,f))){var l=o(k,B);return h(a),l}s(a,"invalid usage")}function pA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i+I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_curve25519xchacha20poly1305_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function fA(A){var g=[];E(A);var C=new y(0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),a=B.address;g.push(a),I._crypto_box_curve25519xchacha20poly1305_keypair(e,a);var i=o({publicKey:C,privateKey:B,keyType:"curve25519"},A);return h(g),i}function DA(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"ciphertext")),t=A.length;i.push(r),g=D(i,g,"mac");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_macbytes();g.length!==c&&p(i,"invalid mac length"),Q=_(g),i.push(Q),C=D(i,C,"nonce");var n,f=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();C.length!==f&&p(i,"invalid nonce length"),n=_(C),i.push(n),e=D(i,e,"publicKey");var w,k=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();e.length!==k&&p(i,"invalid publicKey length"),w=_(e),i.push(w),B=D(i,B,"privateKey");var d,l=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();B.length!==l&&p(i,"invalid privateKey length"),d=_(B),i.push(d);var u=new y(0|t),v=u.address;if(i.push(v),!(0|I._crypto_box_curve25519xchacha20poly1305_open_detached(v,r,Q,t,0,n,w,d))){var S=o(u,a);return h(i),S}s(i,"incorrect key pair for the given ciphertext")}function wA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"ciphertext")),r=A.length;a.push(i),g=D(a,g,"mac");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_macbytes();g.length!==Q&&p(a,"invalid mac length"),t=_(g),a.push(t),C=D(a,C,"nonce");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();C.length!==n&&p(a,"invalid nonce length"),c=_(C),a.push(c),e=D(a,e,"sharedKey");var f,w=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();e.length!==w&&p(a,"invalid sharedKey length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;if(a.push(d),!(0|I._crypto_box_curve25519xchacha20poly1305_open_detached_afternm(d,i,t,r,0,c,f))){var l=o(k,B);return h(a),l}s(a,"incorrect secret key for the given ciphertext")}function kA(A,g,C,e,B){var a=[];E(B),A=D(a,A,"ciphertext");var i,r=I._crypto_box_curve25519xchacha20poly1305_macbytes(),t=A.length;t<r&&p(a,"ciphertext is too short"),i=_(A),a.push(i),g=D(a,g,"nonce");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==c&&p(a,"invalid nonce length"),Q=_(g),a.push(Q),C=D(a,C,"publicKey");var n,f=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();C.length!==f&&p(a,"invalid publicKey length"),n=_(C),a.push(n),e=D(a,e,"privateKey");var w,k=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();e.length!==k&&p(a,"invalid privateKey length"),w=_(e),a.push(w);var d=new y(t-I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),l=d.address;if(a.push(l),!(0|I._crypto_box_curve25519xchacha20poly1305_open_easy(l,i,t,0,Q,n,w))){var u=o(d,B);return h(a),u}s(a,"incorrect key pair for the given ciphertext")}function dA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"ciphertext")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_curve25519xchacha20poly1305_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_curve25519xchacha20poly1305_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i-I._crypto_box_curve25519xchacha20poly1305_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_curve25519xchacha20poly1305_open_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"incorrect secret key for the given ciphertext")}function lA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"publicKey");var i,r=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();g.length!==r&&p(e,"invalid publicKey length"),i=_(g),e.push(i);var t=new y(a+I._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),Q=t.address;e.push(Q),I._crypto_box_curve25519xchacha20poly1305_seal(Q,B,a,0,i);var c=o(t,C);return h(e),c}function uA(A,g,C,e){var B=[];E(e),A=D(B,A,"ciphertext");var a,i=I._crypto_box_curve25519xchacha20poly1305_sealbytes(),r=A.length;r<i&&p(B,"ciphertext is too short"),a=_(A),B.push(a),g=D(B,g,"publicKey");var t,Q=0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes();g.length!==Q&&p(B,"invalid publicKey length"),t=_(g),B.push(t),C=D(B,C,"secretKey");var c,n=0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes();C.length!==n&&p(B,"invalid secretKey length"),c=_(C),B.push(c);var s=new y(r-I._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),f=s.address;B.push(f),I._crypto_box_curve25519xchacha20poly1305_seal_open(f,a,r,0,t,c);var w=o(s,e);return h(B),w}function vA(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_box_curve25519xchacha20poly1305_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_box_curve25519xchacha20poly1305_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_box_curve25519xchacha20poly1305_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"x25519"};return h(C),Q}s(C,"invalid usage")}function SA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;a.push(d);var l=new y(0|I._crypto_box_macbytes()),u=l.address;if(a.push(u),!(0|I._crypto_box_detached(d,u,i,r,0,t,c,f))){var v=o({ciphertext:k,mac:l},B);return h(a),v}s(a,"invalid usage")}function bA(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_box_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),C=D(a,C,"publicKey");var c,n=0|I._crypto_box_publickeybytes();C.length!==n&&p(a,"invalid publicKey length"),c=_(C),a.push(c),e=D(a,e,"privateKey");var f,w=0|I._crypto_box_secretkeybytes();e.length!==w&&p(a,"invalid privateKey length"),f=_(e),a.push(f);var k=new y(r+I._crypto_box_macbytes()|0),d=k.address;if(a.push(d),!(0|I._crypto_box_easy(d,i,r,0,t,c,f))){var l=o(k,B);return h(a),l}s(a,"invalid usage")}function MA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i+I._crypto_box_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function FA(A){var g=[];E(A);var C=new y(0|I._crypto_box_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_box_secretkeybytes()),a=B.address;if(g.push(a),!(0|I._crypto_box_keypair(e,a))){var i={publicKey:o(C,A),privateKey:o(B,A),keyType:"x25519"};return h(g),i}s(g,"internal error")}function NA(A,g,C,e,B,a){var i=[];E(a);var r=_(A=D(i,A,"ciphertext")),t=A.length;i.push(r),g=D(i,g,"mac");var Q,c=0|I._crypto_box_macbytes();g.length!==c&&p(i,"invalid mac length"),Q=_(g),i.push(Q),C=D(i,C,"nonce");var n,f=0|I._crypto_box_noncebytes();C.length!==f&&p(i,"invalid nonce length"),n=_(C),i.push(n),e=D(i,e,"publicKey");var w,k=0|I._crypto_box_publickeybytes();e.length!==k&&p(i,"invalid publicKey length"),w=_(e),i.push(w),B=D(i,B,"privateKey");var d,l=0|I._crypto_box_secretkeybytes();B.length!==l&&p(i,"invalid privateKey length"),d=_(B),i.push(d);var u=new y(0|t),v=u.address;if(i.push(v),!(0|I._crypto_box_open_detached(v,r,Q,t,0,n,w,d))){var S=o(u,a);return h(i),S}s(i,"incorrect key pair for the given ciphertext")}function KA(A,g,C,e,B){var a=[];E(B),A=D(a,A,"ciphertext");var i,r=I._crypto_box_macbytes(),t=A.length;t<r&&p(a,"ciphertext is too short"),i=_(A),a.push(i),g=D(a,g,"nonce");var Q,c=0|I._crypto_box_noncebytes();g.length!==c&&p(a,"invalid nonce length"),Q=_(g),a.push(Q),C=D(a,C,"publicKey");var n,f=0|I._crypto_box_publickeybytes();C.length!==f&&p(a,"invalid publicKey length"),n=_(C),a.push(n),e=D(a,e,"privateKey");var w,k=0|I._crypto_box_secretkeybytes();e.length!==k&&p(a,"invalid privateKey length"),w=_(e),a.push(w);var d=new y(t-I._crypto_box_macbytes()|0),l=d.address;if(a.push(l),!(0|I._crypto_box_open_easy(l,i,t,0,Q,n,w))){var u=o(d,B);return h(a),u}s(a,"incorrect key pair for the given ciphertext")}function YA(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"ciphertext")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_box_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"sharedKey");var Q,c=0|I._crypto_box_beforenmbytes();C.length!==c&&p(B,"invalid sharedKey length"),Q=_(C),B.push(Q);var n=new y(i-I._crypto_box_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_box_open_easy_afternm(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"incorrect secret key for the given ciphertext")}function HA(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"publicKey");var i,r=0|I._crypto_box_publickeybytes();g.length!==r&&p(e,"invalid publicKey length"),i=_(g),e.push(i);var t=new y(a+I._crypto_box_sealbytes()|0),Q=t.address;if(e.push(Q),!(0|I._crypto_box_seal(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function GA(A,g,C,e){var B=[];E(e),A=D(B,A,"ciphertext");var a,i=I._crypto_box_sealbytes(),r=A.length;r<i&&p(B,"ciphertext is too short"),a=_(A),B.push(a),g=D(B,g,"publicKey");var t,Q=0|I._crypto_box_publickeybytes();g.length!==Q&&p(B,"invalid publicKey length"),t=_(g),B.push(t),C=D(B,C,"privateKey");var c,n=0|I._crypto_box_secretkeybytes();C.length!==n&&p(B,"invalid privateKey length"),c=_(C),B.push(c);var f=new y(r-I._crypto_box_sealbytes()|0),w=f.address;if(B.push(w),!(0|I._crypto_box_seal_open(w,a,r,0,t,c))){var k=o(f,e);return h(B),k}s(B,"incorrect key pair for the given ciphertext")}function JA(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_box_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_box_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_box_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_box_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"x25519"};return h(C),Q}s(C,"invalid usage")}function UA(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ed25519_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ed25519_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ed25519_add(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function xA(A,g){var C=[];E(g);var e=_(A=D(C,A,"r"));A.length,C.push(e);var B=new y(0|I._crypto_core_ed25519_bytes()),a=B.address;if(C.push(a),!(0|I._crypto_core_ed25519_from_hash(a,e))){var i=o(B,g);return h(C),i}s(C,"invalid usage")}function mA(A,g){var C=[];E(g);var e=_(A=D(C,A,"r"));A.length,C.push(e);var B=new y(0|I._crypto_core_ed25519_bytes()),a=B.address;if(C.push(a),!(0|I._crypto_core_ed25519_from_uniform(a,e))){var i=o(B,g);return h(C),i}s(C,"invalid usage")}function PA(A,g){var C=[];E(g),A=D(C,A,"repr");var e,B=0|I._crypto_core_ed25519_bytes();A.length!==B&&p(C,"invalid repr length"),e=_(A),C.push(e);var a=1==(0|I._crypto_core_ed25519_is_valid_point(e));return h(C),a}function RA(A){var g=[];E(A);var C=new y(0|I._crypto_core_ed25519_bytes()),e=C.address;g.push(e),I._crypto_core_ed25519_random(e);var B=o(C,A);return h(g),B}function LA(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ed25519_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ed25519_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ed25519_scalar_add(Q,B,i);var c=o(t,C);return h(e),c}function TA(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ed25519_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ed25519_scalar_complement(i,e);var r=o(a,g);return h(C),r}function qA(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ed25519_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_core_ed25519_scalar_invert(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid reciprocate")}function zA(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ed25519_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ed25519_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ed25519_scalar_mul(Q,B,i);var c=o(t,C);return h(e),c}function jA(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ed25519_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ed25519_scalar_negate(i,e);var r=o(a,g);return h(C),r}function XA(A){var g=[];E(A);var C=new y(0|I._crypto_core_ed25519_scalarbytes()),e=C.address;g.push(e),I._crypto_core_ed25519_scalar_random(e);var B=o(C,A);return h(g),B}function OA(A,g){var C=[];E(g),A=D(C,A,"sample");var e,B=0|I._crypto_core_ed25519_nonreducedscalarbytes();A.length!==B&&p(C,"invalid sample length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ed25519_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ed25519_scalar_reduce(i,e);var r=o(a,g);return h(C),r}function VA(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ed25519_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ed25519_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ed25519_scalar_sub(Q,B,i);var c=o(t,C);return h(e),c}function ZA(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ed25519_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ed25519_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ed25519_sub(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function WA(A,g,C,e){var B=[];E(e),A=D(B,A,"input");var a,i=0|I._crypto_core_hchacha20_inputbytes();A.length!==i&&p(B,"invalid input length"),a=_(A),B.push(a),g=D(B,g,"privateKey");var r,t=0|I._crypto_core_hchacha20_keybytes();g.length!==t&&p(B,"invalid privateKey length"),r=_(g),B.push(r);var Q=null;null!=C&&(Q=_(C=D(B,C,"constant")),C.length,B.push(Q));var c=new y(0|I._crypto_core_hchacha20_outputbytes()),n=c.address;if(B.push(n),!(0|I._crypto_core_hchacha20(n,a,r,Q))){var f=o(c,e);return h(B),f}s(B,"invalid usage")}function $A(A,g,C,e){var B=[];E(e),A=D(B,A,"input");var a,i=0|I._crypto_core_hsalsa20_inputbytes();A.length!==i&&p(B,"invalid input length"),a=_(A),B.push(a),g=D(B,g,"privateKey");var r,t=0|I._crypto_core_hsalsa20_keybytes();g.length!==t&&p(B,"invalid privateKey length"),r=_(g),B.push(r);var Q=null;null!=C&&(Q=_(C=D(B,C,"constant")),C.length,B.push(Q));var c=new y(0|I._crypto_core_hsalsa20_outputbytes()),n=c.address;if(B.push(n),!(0|I._crypto_core_hsalsa20(n,a,r,Q))){var f=o(c,e);return h(B),f}s(B,"invalid usage")}function Ag(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ristretto255_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ristretto255_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ristretto255_add(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function gg(A,g){var C=[];E(g);var e=_(A=D(C,A,"r"));A.length,C.push(e);var B=new y(0|I._crypto_core_ristretto255_bytes()),a=B.address;if(C.push(a),!(0|I._crypto_core_ristretto255_from_hash(a,e))){var i=o(B,g);return h(C),i}s(C,"invalid usage")}function Ig(A,g){var C=[];E(g),A=D(C,A,"repr");var e,B=0|I._crypto_core_ristretto255_bytes();A.length!==B&&p(C,"invalid repr length"),e=_(A),C.push(e);var a=1==(0|I._crypto_core_ristretto255_is_valid_point(e));return h(C),a}function Cg(A){var g=[];E(A);var C=new y(0|I._crypto_core_ristretto255_bytes()),e=C.address;g.push(e),I._crypto_core_ristretto255_random(e);var B=o(C,A);return h(g),B}function eg(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ristretto255_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ristretto255_scalar_add(Q,B,i);var c=o(t,C);return h(e),c}function Bg(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ristretto255_scalar_complement(i,e);var r=o(a,g);return h(C),r}function ag(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_core_ristretto255_scalar_invert(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid reciprocate")}function ig(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ristretto255_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ristretto255_scalar_mul(Q,B,i);var c=o(t,C);return h(e),c}function rg(A,g){var C=[];E(g),A=D(C,A,"s");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid s length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ristretto255_scalar_negate(i,e);var r=o(a,g);return h(C),r}function tg(A){var g=[];E(A);var C=new y(0|I._crypto_core_ristretto255_scalarbytes()),e=C.address;g.push(e),I._crypto_core_ristretto255_scalar_random(e);var B=o(C,A);return h(g),B}function Qg(A,g){var C=[];E(g),A=D(C,A,"sample");var e,B=0|I._crypto_core_ristretto255_nonreducedscalarbytes();A.length!==B&&p(C,"invalid sample length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_scalarbytes()),i=a.address;C.push(i),I._crypto_core_ristretto255_scalar_reduce(i,e);var r=o(a,g);return h(C),r}function og(A,g,C){var e=[];E(C),A=D(e,A,"x");var B,a=0|I._crypto_core_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid x length"),B=_(A),e.push(B),g=D(e,g,"y");var i,r=0|I._crypto_core_ristretto255_scalarbytes();g.length!==r&&p(e,"invalid y length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_scalarbytes()),Q=t.address;e.push(Q),I._crypto_core_ristretto255_scalar_sub(Q,B,i);var c=o(t,C);return h(e),c}function cg(A,g,C){var e=[];E(C),A=D(e,A,"p");var B,a=0|I._crypto_core_ristretto255_bytes();A.length!==a&&p(e,"invalid p length"),B=_(A),e.push(B),g=D(e,g,"q");var i,r=0|I._crypto_core_ristretto255_bytes();g.length!==r&&p(e,"invalid q length"),i=_(g),e.push(i);var t=new y(0|I._crypto_core_ristretto255_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_core_ristretto255_sub(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"input is an invalid element")}function Eg(A,g,C,e){var B=[];E(e),f(B,A,"hash_length"),("number"!=typeof A||(0|A)!==A||A<0)&&p(B,"hash_length must be an unsigned integer");var a=_(g=D(B,g,"message")),i=g.length;B.push(a);var r=null,t=0;null!=C&&(r=_(C=D(B,C,"key")),t=C.length,B.push(r));var Q=new y(A|=0),c=Q.address;if(B.push(c),!(0|I._crypto_generichash(c,A,a,i,0,r,t))){var n=o(Q,e);return h(B),n}s(B,"invalid usage")}function yg(A,g,C,e,B){var a=[];E(B),f(a,A,"subkey_len"),("number"!=typeof A||(0|A)!==A||A<0)&&p(a,"subkey_len must be an unsigned integer");var i=null,r=0;null!=g&&(i=_(g=D(a,g,"key")),r=g.length,a.push(i));var t=null,Q=0;null!=C&&(C=D(a,C,"id"),Q=0|I._crypto_generichash_blake2b_saltbytes(),C.length!==Q&&p(a,"invalid id length"),t=_(C),a.push(t));var c=null,n=0;null!=e&&(e=D(a,e,"ctx"),n=0|I._crypto_generichash_blake2b_personalbytes(),e.length!==n&&p(a,"invalid ctx length"),c=_(e),a.push(c));var w=new y(0|A),k=w.address;if(a.push(k),!(0|I._crypto_generichash_blake2b_salt_personal(k,A,null,0,0,i,r,t,c))){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function _g(A,g,C){var e=[];E(C),f(e,A,"state_address"),f(e,g,"hash_length"),("number"!=typeof g||(0|g)!==g||g<0)&&p(e,"hash_length must be an unsigned integer");var B=new y(g|=0),a=B.address;if(e.push(a),!(0|I._crypto_generichash_final(A,a,g))){var i=(I._free(A),o(B,C));return h(e),i}s(e,"invalid usage")}function ng(A,g,C){var e=[];E(C);var B=null,a=0;null!=A&&(B=_(A=D(e,A,"key")),a=A.length,e.push(B)),f(e,g,"hash_length"),("number"!=typeof g||(0|g)!==g||g<0)&&p(e,"hash_length must be an unsigned integer");var i=new y(357).address;if(!(0|I._crypto_generichash_init(i,B,a,g))){var r=i;return h(e),r}s(e,"invalid usage")}function hg(A){var g=[];E(A);var C=new y(0|I._crypto_generichash_keybytes()),e=C.address;g.push(e),I._crypto_generichash_keygen(e);var B=o(C,A);return h(g),B}function sg(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_generichash_update(A,B,a)&&s(e,"invalid usage"),h(e)}function pg(A,g){var C=[];E(g);var e=_(A=D(C,A,"message")),B=A.length;C.push(e);var a=new y(0|I._crypto_hash_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_hash(i,e,B,0))){var r=o(a,g);return h(C),r}s(C,"invalid usage")}function fg(A,g){var C=[];E(g);var e=_(A=D(C,A,"message")),B=A.length;C.push(e);var a=new y(0|I._crypto_hash_sha256_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_hash_sha256(i,e,B,0))){var r=o(a,g);return h(C),r}s(C,"invalid usage")}function Dg(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_hash_sha256_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_hash_sha256_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function wg(A){var g=[];E(A);var C=new y(104).address;if(!(0|I._crypto_hash_sha256_init(C))){var e=C;return h(g),e}s(g,"invalid usage")}function kg(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_hash_sha256_update(A,B,a)&&s(e,"invalid usage"),h(e)}function dg(A,g){var C=[];E(g);var e=_(A=D(C,A,"message")),B=A.length;C.push(e);var a=new y(0|I._crypto_hash_sha512_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_hash_sha512(i,e,B,0))){var r=o(a,g);return h(C),r}s(C,"invalid usage")}function lg(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_hash_sha512_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_hash_sha512_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function ug(A){var g=[];E(A);var C=new y(208).address;if(!(0|I._crypto_hash_sha512_init(C))){var e=C;return h(g),e}s(g,"invalid usage")}function vg(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_hash_sha512_update(A,B,a)&&s(e,"invalid usage"),h(e)}function Sg(A,g,C,e,a){var i=[];E(a),f(i,A,"subkey_len"),("number"!=typeof A||(0|A)!==A||A<0)&&p(i,"subkey_len must be an unsigned integer"),f(i,g,"subkey_id");var r,t=0;if("bigint"==typeof g&&g>=BigInt(0)){const A=g>>BigInt(32);A>BigInt(4294967295)&&p(i,"subkey_id cannot be more than 64 bits"),t=Number(A),r=Number(g&BigInt(4294967295))}else"number"==typeof g&&(0|g)===g&&g>=0?r=g:p(i,"subkey_id must be an unsigned integer or bigint");"string"!=typeof C&&p(i,"ctx must be a string"),C=B(C+"\0"),null!=c&&C.length-1!==c&&p(i,"invalid ctx length");var Q=_(C),c=C.length-1;i.push(Q),e=D(i,e,"key");var n,s=0|I._crypto_kdf_keybytes();e.length!==s&&p(i,"invalid key length"),n=_(e),i.push(n);var w=new y(0|A),k=w.address;i.push(k),I._crypto_kdf_derive_from_key(k,A,r,t,Q,n);var d=o(w,a);return h(i),d}function bg(A){var g=[];E(A);var C=new y(0|I._crypto_kdf_keybytes()),e=C.address;g.push(e),I._crypto_kdf_keygen(e);var B=o(C,A);return h(g),B}function Mg(A,g,C,e){var B=[];E(e),A=D(B,A,"clientPublicKey");var a,i=0|I._crypto_kx_publickeybytes();A.length!==i&&p(B,"invalid clientPublicKey length"),a=_(A),B.push(a),g=D(B,g,"clientSecretKey");var r,t=0|I._crypto_kx_secretkeybytes();g.length!==t&&p(B,"invalid clientSecretKey length"),r=_(g),B.push(r),C=D(B,C,"serverPublicKey");var Q,c=0|I._crypto_kx_publickeybytes();C.length!==c&&p(B,"invalid serverPublicKey length"),Q=_(C),B.push(Q);var n=new y(0|I._crypto_kx_sessionkeybytes()),f=n.address;B.push(f);var w=new y(0|I._crypto_kx_sessionkeybytes()),k=w.address;if(B.push(k),!(0|I._crypto_kx_client_session_keys(f,k,a,r,Q))){var d=o({sharedRx:n,sharedTx:w},e);return h(B),d}s(B,"invalid usage")}function Fg(A){var g=[];E(A);var C=new y(0|I._crypto_kx_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_kx_secretkeybytes()),a=B.address;if(g.push(a),!(0|I._crypto_kx_keypair(e,a))){var i={publicKey:o(C,A),privateKey:o(B,A),keyType:"x25519"};return h(g),i}s(g,"internal error")}function Ng(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_kx_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_kx_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_kx_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_kx_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"x25519"};return h(C),Q}s(C,"internal error")}function Kg(A,g,C,e){var B=[];E(e),A=D(B,A,"serverPublicKey");var a,i=0|I._crypto_kx_publickeybytes();A.length!==i&&p(B,"invalid serverPublicKey length"),a=_(A),B.push(a),g=D(B,g,"serverSecretKey");var r,t=0|I._crypto_kx_secretkeybytes();g.length!==t&&p(B,"invalid serverSecretKey length"),r=_(g),B.push(r),C=D(B,C,"clientPublicKey");var Q,c=0|I._crypto_kx_publickeybytes();C.length!==c&&p(B,"invalid clientPublicKey length"),Q=_(C),B.push(Q);var n=new y(0|I._crypto_kx_sessionkeybytes()),f=n.address;B.push(f);var w=new y(0|I._crypto_kx_sessionkeybytes()),k=w.address;if(B.push(k),!(0|I._crypto_kx_server_session_keys(f,k,a,r,Q))){var d=o({sharedRx:n,sharedTx:w},e);return h(B),d}s(B,"invalid usage")}function Yg(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_onetimeauth_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_onetimeauth_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_onetimeauth(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function Hg(A,g){var C=[];E(g),f(C,A,"state_address");var e=new y(0|I._crypto_onetimeauth_bytes()),B=e.address;if(C.push(B),!(0|I._crypto_onetimeauth_final(A,B))){var a=(I._free(A),o(e,g));return h(C),a}s(C,"invalid usage")}function Gg(A,g){var C=[];E(g);var e=null;null!=A&&(e=_(A=D(C,A,"key")),A.length,C.push(e));var B=new y(144).address;if(!(0|I._crypto_onetimeauth_init(B,e))){var a=B;return h(C),a}s(C,"invalid usage")}function Jg(A){var g=[];E(A);var C=new y(0|I._crypto_onetimeauth_keybytes()),e=C.address;g.push(e),I._crypto_onetimeauth_keygen(e);var B=o(C,A);return h(g),B}function Ug(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_onetimeauth_update(A,B,a)&&s(e,"invalid usage"),h(e)}function xg(A,g,C){var e=[];A=D(e,A,"hash");var B,a=0|I._crypto_onetimeauth_bytes();A.length!==a&&p(e,"invalid hash length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"key");var t,Q=0|I._crypto_onetimeauth_keybytes();C.length!==Q&&p(e,"invalid key length"),t=_(C),e.push(t);var o=!(0|I._crypto_onetimeauth_verify(B,i,r,0,t));return h(e),o}function mg(A,g,C,e,B,a,i){var r=[];E(i),f(r,A,"keyLength"),("number"!=typeof A||(0|A)!==A||A<0)&&p(r,"keyLength must be an unsigned integer");var t=_(g=D(r,g,"password")),Q=g.length;r.push(t),C=D(r,C,"salt");var c,n=0|I._crypto_pwhash_saltbytes();C.length!==n&&p(r,"invalid salt length"),c=_(C),r.push(c),f(r,e,"opsLimit"),("number"!=typeof e||(0|e)!==e||e<0)&&p(r,"opsLimit must be an unsigned integer"),f(r,B,"memLimit"),("number"!=typeof B||(0|B)!==B||B<0)&&p(r,"memLimit must be an unsigned integer"),f(r,a,"algorithm"),("number"!=typeof a||(0|a)!==a||a<0)&&p(r,"algorithm must be an unsigned integer");var w=new y(0|A),k=w.address;if(r.push(k),!(0|I._crypto_pwhash(k,A,0,t,Q,0,c,e,0,B,a))){var d=o(w,i);return h(r),d}s(r,"invalid usage")}function Pg(A,g,C,e,B,a){var i=[];E(a),f(i,A,"keyLength"),("number"!=typeof A||(0|A)!==A||A<0)&&p(i,"keyLength must be an unsigned integer");var r=_(g=D(i,g,"password")),t=g.length;i.push(r),C=D(i,C,"salt");var Q,c=0|I._crypto_pwhash_scryptsalsa208sha256_saltbytes();C.length!==c&&p(i,"invalid salt length"),Q=_(C),i.push(Q),f(i,e,"opsLimit"),("number"!=typeof e||(0|e)!==e||e<0)&&p(i,"opsLimit must be an unsigned integer"),f(i,B,"memLimit"),("number"!=typeof B||(0|B)!==B||B<0)&&p(i,"memLimit must be an unsigned integer");var n=new y(0|A),w=n.address;if(i.push(w),!(0|I._crypto_pwhash_scryptsalsa208sha256(w,A,0,r,t,0,Q,e,0,B))){var k=o(n,a);return h(i),k}s(i,"invalid usage")}function Rg(A,g,C,e,B,a,i){var r=[];E(i);var t=_(A=D(r,A,"password")),Q=A.length;r.push(t);var c=_(g=D(r,g,"salt")),n=g.length;r.push(c),f(r,C,"opsLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(r,"opsLimit must be an unsigned integer"),f(r,e,"r"),("number"!=typeof e||(0|e)!==e||e<0)&&p(r,"r must be an unsigned integer"),f(r,B,"p"),("number"!=typeof B||(0|B)!==B||B<0)&&p(r,"p must be an unsigned integer"),f(r,a,"keyLength"),("number"!=typeof a||(0|a)!==a||a<0)&&p(r,"keyLength must be an unsigned integer");var w=new y(0|a),k=w.address;if(r.push(k),!(0|I._crypto_pwhash_scryptsalsa208sha256_ll(t,Q,c,n,C,0,e,B,k,a))){var d=o(w,i);return h(r),d}s(r,"invalid usage")}function Lg(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"password")),i=A.length;B.push(a),f(B,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&p(B,"opsLimit must be an unsigned integer"),f(B,C,"memLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(B,"memLimit must be an unsigned integer");var r=new y(0|I._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(B.push(r),!(0|I._crypto_pwhash_scryptsalsa208sha256_str(r,a,i,0,g,0,C))){var t=I.UTF8ToString(r);return h(B),t}s(B,"invalid usage")}function Tg(A,g,C){var e=[];E(C),"string"!=typeof A&&p(e,"hashed_password must be a string"),A=B(A+"\0"),null!=i&&A.length-1!==i&&p(e,"invalid hashed_password length");var a=_(A),i=A.length-1;e.push(a);var r=_(g=D(e,g,"password")),t=g.length;e.push(r);var Q=!(0|I._crypto_pwhash_scryptsalsa208sha256_str_verify(a,r,t,0));return h(e),Q}function qg(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"password")),i=A.length;B.push(a),f(B,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&p(B,"opsLimit must be an unsigned integer"),f(B,C,"memLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(B,"memLimit must be an unsigned integer");var r=new y(0|I._crypto_pwhash_strbytes()).address;if(B.push(r),!(0|I._crypto_pwhash_str(r,a,i,0,g,0,C))){var t=I.UTF8ToString(r);return h(B),t}s(B,"invalid usage")}function zg(A,g,C,e){var a=[];E(e),"string"!=typeof A&&p(a,"hashed_password must be a string"),A=B(A+"\0"),null!=r&&A.length-1!==r&&p(a,"invalid hashed_password length");var i=_(A),r=A.length-1;a.push(i),f(a,g,"opsLimit"),("number"!=typeof g||(0|g)!==g||g<0)&&p(a,"opsLimit must be an unsigned integer"),f(a,C,"memLimit"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"memLimit must be an unsigned integer");var t=!!(0|I._crypto_pwhash_str_needs_rehash(i,g,0,C));return h(a),t}function jg(A,g,C){var e=[];E(C),"string"!=typeof A&&p(e,"hashed_password must be a string"),A=B(A+"\0"),null!=i&&A.length-1!==i&&p(e,"invalid hashed_password length");var a=_(A),i=A.length-1;e.push(a);var r=_(g=D(e,g,"password")),t=g.length;e.push(r);var Q=!(0|I._crypto_pwhash_str_verify(a,r,t,0));return h(e),Q}function Xg(A,g,C){var e=[];E(C),A=D(e,A,"privateKey");var B,a=0|I._crypto_scalarmult_scalarbytes();A.length!==a&&p(e,"invalid privateKey length"),B=_(A),e.push(B),g=D(e,g,"publicKey");var i,r=0|I._crypto_scalarmult_bytes();g.length!==r&&p(e,"invalid publicKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"weak public key")}function Og(A,g){var C=[];E(g),A=D(C,A,"privateKey");var e,B=0|I._crypto_scalarmult_scalarbytes();A.length!==B&&p(C,"invalid privateKey length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_base(i,e))){var r=o(a,g);return h(C),r}s(C,"unknown error")}function Vg(A,g,C){var e=[];E(C),A=D(e,A,"n");var B,a=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==a&&p(e,"invalid n length"),B=_(A),e.push(B),g=D(e,g,"p");var i,r=0|I._crypto_scalarmult_ed25519_bytes();g.length!==r&&p(e,"invalid p length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult_ed25519(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid point or scalar is 0")}function Zg(A,g){var C=[];E(g),A=D(C,A,"scalar");var e,B=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==B&&p(C,"invalid scalar length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_ed25519_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_ed25519_base(i,e))){var r=o(a,g);return h(C),r}s(C,"scalar is 0")}function Wg(A,g){var C=[];E(g),A=D(C,A,"scalar");var e,B=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==B&&p(C,"invalid scalar length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_ed25519_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_ed25519_base_noclamp(i,e))){var r=o(a,g);return h(C),r}s(C,"scalar is 0")}function $g(A,g,C){var e=[];E(C),A=D(e,A,"n");var B,a=0|I._crypto_scalarmult_ed25519_scalarbytes();A.length!==a&&p(e,"invalid n length"),B=_(A),e.push(B),g=D(e,g,"p");var i,r=0|I._crypto_scalarmult_ed25519_bytes();g.length!==r&&p(e,"invalid p length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_ed25519_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult_ed25519_noclamp(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"invalid point or scalar is 0")}function AI(A,g,C){var e=[];E(C),A=D(e,A,"scalar");var B,a=0|I._crypto_scalarmult_ristretto255_scalarbytes();A.length!==a&&p(e,"invalid scalar length"),B=_(A),e.push(B),g=D(e,g,"element");var i,r=0|I._crypto_scalarmult_ristretto255_bytes();g.length!==r&&p(e,"invalid element length"),i=_(g),e.push(i);var t=new y(0|I._crypto_scalarmult_ristretto255_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_scalarmult_ristretto255(Q,B,i))){var c=o(t,C);return h(e),c}s(e,"result is identity element")}function gI(A,g){var C=[];E(g),A=D(C,A,"scalar");var e,B=0|I._crypto_core_ristretto255_scalarbytes();A.length!==B&&p(C,"invalid scalar length"),e=_(A),C.push(e);var a=new y(0|I._crypto_core_ristretto255_bytes()),i=a.address;if(C.push(i),!(0|I._crypto_scalarmult_ristretto255_base(i,e))){var r=o(a,g);return h(C),r}s(C,"scalar is 0")}function II(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_secretbox_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_secretbox_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;B.push(f);var w=new y(0|I._crypto_secretbox_macbytes()),k=w.address;if(B.push(k),!(0|I._crypto_secretbox_detached(f,k,a,i,0,r,Q))){var d=o({mac:w,cipher:n},e);return h(B),d}s(B,"invalid usage")}function CI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_secretbox_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_secretbox_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(i+I._crypto_secretbox_macbytes()|0),f=n.address;if(B.push(f),!(0|I._crypto_secretbox_easy(f,a,i,0,r,Q))){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function eI(A){var g=[];E(A);var C=new y(0|I._crypto_secretbox_keybytes()),e=C.address;g.push(e),I._crypto_secretbox_keygen(e);var B=o(C,A);return h(g),B}function BI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"ciphertext")),r=A.length;a.push(i),g=D(a,g,"mac");var t,Q=0|I._crypto_secretbox_macbytes();g.length!==Q&&p(a,"invalid mac length"),t=_(g),a.push(t),C=D(a,C,"nonce");var c,n=0|I._crypto_secretbox_noncebytes();C.length!==n&&p(a,"invalid nonce length"),c=_(C),a.push(c),e=D(a,e,"key");var f,w=0|I._crypto_secretbox_keybytes();e.length!==w&&p(a,"invalid key length"),f=_(e),a.push(f);var k=new y(0|r),d=k.address;if(a.push(d),!(0|I._crypto_secretbox_open_detached(d,i,t,r,0,c,f))){var l=o(k,B);return h(a),l}s(a,"wrong secret key for the given ciphertext")}function aI(A,g,C,e){var B=[];E(e),A=D(B,A,"ciphertext");var a,i=I._crypto_secretbox_macbytes(),r=A.length;r<i&&p(B,"ciphertext is too short"),a=_(A),B.push(a),g=D(B,g,"nonce");var t,Q=0|I._crypto_secretbox_noncebytes();g.length!==Q&&p(B,"invalid nonce length"),t=_(g),B.push(t),C=D(B,C,"key");var c,n=0|I._crypto_secretbox_keybytes();C.length!==n&&p(B,"invalid key length"),c=_(C),B.push(c);var f=new y(r-I._crypto_secretbox_macbytes()|0),w=f.address;if(B.push(w),!(0|I._crypto_secretbox_open_easy(w,a,r,0,t,c))){var k=o(f,e);return h(B),k}s(B,"wrong secret key for the given ciphertext")}function iI(A,g,C){var e=[];E(C),A=D(e,A,"header");var B,a=0|I._crypto_secretstream_xchacha20poly1305_headerbytes();A.length!==a&&p(e,"invalid header length"),B=_(A),e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_secretstream_xchacha20poly1305_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(52).address;if(!(0|I._crypto_secretstream_xchacha20poly1305_init_pull(t,B,i))){var Q=t;return h(e),Q}s(e,"invalid usage")}function rI(A,g){var C=[];E(g),A=D(C,A,"key");var e,B=0|I._crypto_secretstream_xchacha20poly1305_keybytes();A.length!==B&&p(C,"invalid key length"),e=_(A),C.push(e);var a=new y(52).address,i=new y(0|I._crypto_secretstream_xchacha20poly1305_headerbytes()),r=i.address;if(C.push(r),!(0|I._crypto_secretstream_xchacha20poly1305_init_push(a,r,e))){var t={state:a,header:o(i,g)};return h(C),t}s(C,"invalid usage")}function tI(A){var g=[];E(A);var C=new y(0|I._crypto_secretstream_xchacha20poly1305_keybytes()),e=C.address;g.push(e),I._crypto_secretstream_xchacha20poly1305_keygen(e);var B=o(C,A);return h(g),B}function QI(A,g,C,e){var B=[];E(e),f(B,A,"state_address"),g=D(B,g,"cipher");var a,i=I._crypto_secretstream_xchacha20poly1305_abytes(),r=g.length;r<i&&p(B,"cipher is too short"),a=_(g),B.push(a);var t=null,Q=0;null!=C&&(t=_(C=D(B,C,"ad")),Q=C.length,B.push(t));var c=new y(r-I._crypto_secretstream_xchacha20poly1305_abytes()|0),s=c.address;B.push(s);var w,k=(w=n(1),B.push(w),(k=0===I._crypto_secretstream_xchacha20poly1305_pull(A,s,0,w,a,r,0,t,Q)&&{tag:I.HEAPU8[w],message:c})&&{message:o(k.message,e),tag:k.tag});return h(B),k}function oI(A,g,C,e,B){var a=[];E(B),f(a,A,"state_address");var i=_(g=D(a,g,"message_chunk")),r=g.length;a.push(i);var t=null,Q=0;null!=C&&(t=_(C=D(a,C,"ad")),Q=C.length,a.push(t)),f(a,e,"tag"),("number"!=typeof e||(0|e)!==e||e<0)&&p(a,"tag must be an unsigned integer");var c=new y(r+I._crypto_secretstream_xchacha20poly1305_abytes()|0),n=c.address;if(a.push(n),!(0|I._crypto_secretstream_xchacha20poly1305_push(A,n,0,i,r,0,t,Q,0,e))){var w=o(c,B);return h(a),w}s(a,"invalid usage")}function cI(A,g){var C=[];return E(g),f(C,A,"state_address"),I._crypto_secretstream_xchacha20poly1305_rekey(A),h(C),!0}function EI(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_shorthash_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_shorthash_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_shorthash(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function yI(A){var g=[];E(A);var C=new y(0|I._crypto_shorthash_keybytes()),e=C.address;g.push(e),I._crypto_shorthash_keygen(e);var B=o(C,A);return h(g),B}function _I(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"key");var i,r=0|I._crypto_shorthash_siphashx24_keybytes();g.length!==r&&p(e,"invalid key length"),i=_(g),e.push(i);var t=new y(0|I._crypto_shorthash_siphashx24_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_shorthash_siphashx24(Q,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function nI(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_sign_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(A.length+I._crypto_sign_bytes()|0),Q=t.address;if(e.push(Q),!(0|I._crypto_sign(Q,null,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function hI(A,g,C){var e=[];E(C);var B=_(A=D(e,A,"message")),a=A.length;e.push(B),g=D(e,g,"privateKey");var i,r=0|I._crypto_sign_secretkeybytes();g.length!==r&&p(e,"invalid privateKey length"),i=_(g),e.push(i);var t=new y(0|I._crypto_sign_bytes()),Q=t.address;if(e.push(Q),!(0|I._crypto_sign_detached(Q,null,B,a,0,i))){var c=o(t,C);return h(e),c}s(e,"invalid usage")}function sI(A,g){var C=[];E(g),A=D(C,A,"edPk");var e,B=0|I._crypto_sign_publickeybytes();A.length!==B&&p(C,"invalid edPk length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_pk_to_curve25519(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function pI(A,g){var C=[];E(g),A=D(C,A,"edSk");var e,B=0|I._crypto_sign_secretkeybytes();A.length!==B&&p(C,"invalid edSk length"),e=_(A),C.push(e);var a=new y(0|I._crypto_scalarmult_scalarbytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_sk_to_curve25519(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function fI(A,g){var C=[];E(g),A=D(C,A,"privateKey");var e,B=0|I._crypto_sign_secretkeybytes();A.length!==B&&p(C,"invalid privateKey length"),e=_(A),C.push(e);var a=new y(0|I._crypto_sign_publickeybytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_sk_to_pk(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function DI(A,g){var C=[];E(g),A=D(C,A,"privateKey");var e,B=0|I._crypto_sign_secretkeybytes();A.length!==B&&p(C,"invalid privateKey length"),e=_(A),C.push(e);var a=new y(0|I._crypto_sign_seedbytes()),i=a.address;if(C.push(i),!(0|I._crypto_sign_ed25519_sk_to_seed(i,e))){var r=o(a,g);return h(C),r}s(C,"invalid key")}function wI(A,g,C){var e=[];E(C),f(e,A,"state_address"),g=D(e,g,"privateKey");var B,a=0|I._crypto_sign_secretkeybytes();g.length!==a&&p(e,"invalid privateKey length"),B=_(g),e.push(B);var i=new y(0|I._crypto_sign_bytes()),r=i.address;if(e.push(r),!(0|I._crypto_sign_final_create(A,r,null,B))){var t=(I._free(A),o(i,C));return h(e),t}s(e,"invalid usage")}function kI(A,g,C,e){var B=[];E(e),f(B,A,"state_address"),g=D(B,g,"signature");var a,i=0|I._crypto_sign_bytes();g.length!==i&&p(B,"invalid signature length"),a=_(g),B.push(a),C=D(B,C,"publicKey");var r,t=0|I._crypto_sign_publickeybytes();C.length!==t&&p(B,"invalid publicKey length"),r=_(C),B.push(r);var Q=!(0|I._crypto_sign_final_verify(A,a,r));return h(B),Q}function dI(A){var g=[];E(A);var C=new y(208).address;if(!(0|I._crypto_sign_init(C))){var e=C;return h(g),e}s(g,"internal error")}function lI(A){var g=[];E(A);var C=new y(0|I._crypto_sign_publickeybytes()),e=C.address;g.push(e);var B=new y(0|I._crypto_sign_secretkeybytes()),a=B.address;if(g.push(a),!(0|I._crypto_sign_keypair(e,a))){var i={publicKey:o(C,A),privateKey:o(B,A),keyType:"ed25519"};return h(g),i}s(g,"internal error")}function uI(A,g,C){var e=[];E(C),A=D(e,A,"signedMessage");var B,a=I._crypto_sign_bytes(),i=A.length;i<a&&p(e,"signedMessage is too short"),B=_(A),e.push(B),g=D(e,g,"publicKey");var r,t=0|I._crypto_sign_publickeybytes();g.length!==t&&p(e,"invalid publicKey length"),r=_(g),e.push(r);var Q=new y(i-I._crypto_sign_bytes()|0),c=Q.address;if(e.push(c),!(0|I._crypto_sign_open(c,null,B,i,0,r))){var n=o(Q,C);return h(e),n}s(e,"incorrect signature for the given public key")}function vI(A,g){var C=[];E(g),A=D(C,A,"seed");var e,B=0|I._crypto_sign_seedbytes();A.length!==B&&p(C,"invalid seed length"),e=_(A),C.push(e);var a=new y(0|I._crypto_sign_publickeybytes()),i=a.address;C.push(i);var r=new y(0|I._crypto_sign_secretkeybytes()),t=r.address;if(C.push(t),!(0|I._crypto_sign_seed_keypair(i,t,e))){var Q={publicKey:o(a,g),privateKey:o(r,g),keyType:"ed25519"};return h(C),Q}s(C,"invalid usage")}function SI(A,g,C){var e=[];E(C),f(e,A,"state_address");var B=_(g=D(e,g,"message_chunk")),a=g.length;e.push(B),0|I._crypto_sign_update(A,B,a,0)&&s(e,"invalid usage"),h(e)}function bI(A,g,C){var e=[];A=D(e,A,"signature");var B,a=0|I._crypto_sign_bytes();A.length!==a&&p(e,"invalid signature length"),B=_(A),e.push(B);var i=_(g=D(e,g,"message")),r=g.length;e.push(i),C=D(e,C,"publicKey");var t,Q=0|I._crypto_sign_publickeybytes();C.length!==Q&&p(e,"invalid publicKey length"),t=_(C),e.push(t);var o=!(0|I._crypto_sign_verify_detached(B,i,r,0,t));return h(e),o}function MI(A,g,C,e){var B=[];E(e),f(B,A,"outLength"),("number"!=typeof A||(0|A)!==A||A<0)&&p(B,"outLength must be an unsigned integer"),g=D(B,g,"key");var a,i=0|I._crypto_stream_chacha20_keybytes();g.length!==i&&p(B,"invalid key length"),a=_(g),B.push(a),C=D(B,C,"nonce");var r,t=0|I._crypto_stream_chacha20_noncebytes();C.length!==t&&p(B,"invalid nonce length"),r=_(C),B.push(r);var Q=new y(0|A),c=Q.address;B.push(c),I._crypto_stream_chacha20(c,A,0,r,a);var n=o(Q,e);return h(B),n}function FI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"input_message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_stream_chacha20_ietf_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_stream_chacha20_ietf_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;if(B.push(f),0===I._crypto_stream_chacha20_ietf_xor(f,a,i,0,r,Q)){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function NI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"input_message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_stream_chacha20_ietf_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),f(a,C,"nonce_increment"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"nonce_increment must be an unsigned integer"),e=D(a,e,"key");var c,n=0|I._crypto_stream_chacha20_ietf_keybytes();e.length!==n&&p(a,"invalid key length"),c=_(e),a.push(c);var w=new y(0|r),k=w.address;if(a.push(k),0===I._crypto_stream_chacha20_ietf_xor_ic(k,i,r,0,t,C,c)){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function KI(A){var g=[];E(A);var C=new y(0|I._crypto_stream_chacha20_keybytes()),e=C.address;g.push(e),I._crypto_stream_chacha20_keygen(e);var B=o(C,A);return h(g),B}function YI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"input_message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_stream_chacha20_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_stream_chacha20_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;if(B.push(f),0===I._crypto_stream_chacha20_xor(f,a,i,0,r,Q)){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function HI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"input_message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_stream_chacha20_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),f(a,C,"nonce_increment"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"nonce_increment must be an unsigned integer"),e=D(a,e,"key");var c,n=0|I._crypto_stream_chacha20_keybytes();e.length!==n&&p(a,"invalid key length"),c=_(e),a.push(c);var w=new y(0|r),k=w.address;if(a.push(k),0===I._crypto_stream_chacha20_xor_ic(k,i,r,0,t,C,0,c)){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function GI(A){var g=[];E(A);var C=new y(0|I._crypto_stream_keybytes()),e=C.address;g.push(e),I._crypto_stream_keygen(e);var B=o(C,A);return h(g),B}function JI(A){var g=[];E(A);var C=new y(0|I._crypto_stream_xchacha20_keybytes()),e=C.address;g.push(e),I._crypto_stream_xchacha20_keygen(e);var B=o(C,A);return h(g),B}function UI(A,g,C,e){var B=[];E(e);var a=_(A=D(B,A,"input_message")),i=A.length;B.push(a),g=D(B,g,"nonce");var r,t=0|I._crypto_stream_xchacha20_noncebytes();g.length!==t&&p(B,"invalid nonce length"),r=_(g),B.push(r),C=D(B,C,"key");var Q,c=0|I._crypto_stream_xchacha20_keybytes();C.length!==c&&p(B,"invalid key length"),Q=_(C),B.push(Q);var n=new y(0|i),f=n.address;if(B.push(f),0===I._crypto_stream_xchacha20_xor(f,a,i,0,r,Q)){var w=o(n,e);return h(B),w}s(B,"invalid usage")}function xI(A,g,C,e,B){var a=[];E(B);var i=_(A=D(a,A,"input_message")),r=A.length;a.push(i),g=D(a,g,"nonce");var t,Q=0|I._crypto_stream_xchacha20_noncebytes();g.length!==Q&&p(a,"invalid nonce length"),t=_(g),a.push(t),f(a,C,"nonce_increment"),("number"!=typeof C||(0|C)!==C||C<0)&&p(a,"nonce_increment must be an unsigned integer"),e=D(a,e,"key");var c,n=0|I._crypto_stream_xchacha20_keybytes();e.length!==n&&p(a,"invalid key length"),c=_(e),a.push(c);var w=new y(0|r),k=w.address;if(a.push(k),0===I._crypto_stream_xchacha20_xor_ic(k,i,r,0,t,C,0,c)){var d=o(w,B);return h(a),d}s(a,"invalid usage")}function mI(A,g){var C=[];E(g),f(C,A,"length"),("number"!=typeof A||(0|A)!==A||A<0)&&p(C,"length must be an unsigned integer");var e=new y(0|A),B=e.address;C.push(B),I._randombytes_buf(B,A);var a=o(e,g);return h(C),a}function PI(A,g,C){var e=[];E(C),f(e,A,"length"),("number"!=typeof A||(0|A)!==A||A<0)&&p(e,"length must be an unsigned integer"),g=D(e,g,"seed");var B,a=0|I._randombytes_seedbytes();g.length!==a&&p(e,"invalid seed length"),B=_(g),e.push(B);var i=new y(0|A),r=i.address;e.push(r),I._randombytes_buf_deterministic(r,A,B);var t=o(i,C);return h(e),t}function RI(A){E(A),I._randombytes_close()}function LI(A){E(A);var g=I._randombytes_random()>>>0;return h([]),g}function TI(A,g){var C=[];E(g);for(var e=I._malloc(24),B=0;B<6;B++)I.setValue(e+4*B,I.Runtime.addFunction(A[["implementation_name","random","stir","uniform","buf","close"][B]]),"i32");0|I._randombytes_set_implementation(e)&&s(C,"unsupported implementation"),h(C)}function qI(A){E(A),I._randombytes_stir()}function zI(A,g){var C=[];E(g),f(C,A,"upper_bound"),("number"!=typeof A||(0|A)!==A||A<0)&&p(C,"upper_bound must be an unsigned integer");var e=I._randombytes_uniform(A)>>>0;return h(C),e}function jI(){var A=I._sodium_version_string(),g=I.UTF8ToString(A);return h([]),g}return y.prototype.to_Uint8Array=function(){var A=new Uint8Array(this.length);return A.set(I.HEAPU8.subarray(this.address,this.address+this.length)),A},A.add=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can added");var I=A.length,C=0,e=0;if(g.length!=A.length)throw new TypeError("Arguments must have the same length");for(e=0;e<I;e++)C>>=8,C+=A[e]+g[e],A[e]=255&C},A.base64_variants=r,A.compare=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(A.length!==g.length)throw new TypeError("Only instances of identical length can be compared");for(var I=0,C=1,e=A.length;e-- >0;)I|=g[e]-A[e]>>8&C,C&=(g[e]^A[e])-1>>8;return I+I+C-1},A.from_base64=function(A,g){g=t(g);var C,e=[],B=new y(3*(A=D(e,A,"input")).length/4),a=_(A),i=n(4),r=n(4);return e.push(a),e.push(B.address),e.push(B.result_bin_len_p),e.push(B.b64_end_p),0!==I._sodium_base642bin(B.address,B.length,a,A.length,0,i,r,g)&&s(e,"invalid input"),I.getValue(r,"i32")-a!==A.length&&s(e,"incomplete input"),B.length=I.getValue(i,"i32"),C=B.to_Uint8Array(),h(e),C},A.from_hex=function(A){var g,C=[],e=new y((A=D(C,A,"input")).length/2),B=_(A),a=n(4);return C.push(B),C.push(e.address),C.push(e.hex_end_p),0!==I._sodium_hex2bin(e.address,e.length,B,A.length,0,0,a)&&s(C,"invalid input"),I.getValue(a,"i32")-B!==A.length&&s(C,"incomplete input"),g=e.to_Uint8Array(),h(C),g},A.from_string=B,A.increment=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be incremented");for(var g=256,I=0,C=A.length;I<C;I++)g>>=8,g+=A[I],A[I]=255&g},A.is_zero=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be checked");for(var g=0,I=0,C=A.length;I<C;I++)g|=A[I];return 0===g},A.libsodium=g,A.memcmp=function(A,g){if(!(A instanceof Uint8Array&&g instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(A.length!==g.length)throw new TypeError("Only instances of identical length can be compared");for(var I=0,C=0,e=A.length;C<e;C++)I|=A[C]^g[C];return 0===I},A.memzero=function(A){if(!(A instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be wiped");for(var g=0,I=A.length;g<I;g++)A[g]=0},A.output_formats=function(){return["uint8array","text","hex","base64"]},A.pad=function(A,g){if(!(A instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((g|=0)<=0)throw new Error("block size must be > 0");var C,e=[],B=n(4),a=1,i=0,r=0|A.length,t=new y(r+g);e.push(B),e.push(t.address);for(var Q=t.address,o=t.address+r+g;Q<o;Q++)I.HEAPU8[Q]=A[i],i+=a=1&~((65535&((r-=a)>>>48|r>>>32|r>>>16|r))-1>>16);return 0!==I._sodium_pad(B,t.address,A.length,g,t.length)&&s(e,"internal error"),t.length=I.getValue(B,"i32"),C=t.to_Uint8Array(),h(e),C},A.unpad=function(A,g){if(!(A instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((g|=0)<=0)throw new Error("block size must be > 0");var C=[],e=_(A),B=n(4);return C.push(e),C.push(B),0!==I._sodium_unpad(B,e,A.length,g)&&s(C,"unsupported/invalid padding"),A=(A=new Uint8Array(A)).subarray(0,I.getValue(B,"i32")),h(C),A},A.ready=e,A.symbols=function(){return Object.keys(A).sort()},A.to_base64=Q,A.to_hex=i,A.to_string=a,A}var I="object"==typeof A.sodium&&"function"==typeof A.sodium.onload?A.sodium.onload:null;"function"==typeof define&&define.amd?define(["exports","libsodium"],g):"object"==typeof exports&&"string"!=typeof exports.nodeName?g(exports,require("libsodium")):A.sodium=g(A.commonJsStrict={},A.libsodium),I&&A.sodium.ready.then((function(){I(A.sodium)}))}(this);
Code: Select all
* {
box-sizing: border-box;
}
.modal-backdrop.modal-stack {
opacity: 0.65;
}
body {
background: #0f1115;
color: white;
min-height: 100vh;
padding: 40px;
}
.mb-1, span, p, .form-label {color:#FFF;}
.card {
background: #181c23;
border: 1px solid #252b35;
border-radius: 16px;
}
.title {
font-size: 32px;
font-weight: 700;
}
.subtitle {
color: #9ca3af;
}
.section-title {
font-size: 24px;
font-weight: 700;
}
.section-subtitle {
color: #9ca3af;
font-size: 14px;
}
.form-control,
.form-select {
background: #0f1115;
color: #fff;
border: 1px solid #303846;
}
.form-control:focus,
.form-select:focus {
background: #0f1115;
color: #fff;
border-color: #3b82f6;
box-shadow: 0 0 0 0.2rem rgba(59, 130, 246, 0.25);
}
.form-control::placeholder {
color: #6b7280;
}
.contract-group-row td {
background: #1f2937 !important;
color: #f8fafc !important;
border-top: 2px solid #475569;
border-bottom: 1px solid #334155;
}
.contract-group-row code {
color: #93c5fd;
background: rgba(15, 23, 42, 0.8);
padding: 2px 6px;
border-radius: 6px;
}
textarea.form-control {
min-height: 110px;
}
.table {
color: #e5e7eb;
margin-bottom: 0;
}
.table thead th {
color: #93c5fd;
border-color: #303846;
white-space: nowrap;
}
.table tbody td {
border-color: #252b35;
vertical-align: middle;
}
.table code {
color: #bfdbfe;
}
.table-wrap {
width: 100%;
overflow-x: auto;
}
.status-line {
min-height: 24px;
color: #93c5fd;
font-size: 14px;
}
.modal-force-top {
z-index: 2005 !important;
}
.modal-backdrop-force-top {
z-index: 2000 !important;
}
.status-line.error {
color: #fca5a5;
}
.warning-text {
color: #fbbf24;
font-size: 14px;
}
.danger-text {
color: #fca5a5;
font-size: 14px;
}
.pill {
display: inline-block;
border-radius: 999px;
padding: 4px 10px;
font-size: 12px;
font-weight: 700;
}
.pill.active {
background: #064e3b;
color: #a7f3d0;
}
.pill.expired {
background: #7f1d1d;
color: #fecaca;
}
.pill.unknown {
background: #374151;
color: #d1d5db;
}
.pill.hidden {
background: #78350f;
color: #fde68a;
}
.small-input {
width: 90px;
min-width: 90px;
}
.divider {
height: 1px;
background: #252b35;
margin: 40px 0;
}
.muted {
color: #9ca3af;
}
.mono {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
}
.modal-content {
background: #181c23;
border: 1px solid #303846;
border-radius: 16px;
}
.modal-header,
.modal-footer {
border-color: #303846;
}
.key-panel {
background: #111827;
border: 1px solid #303846;
border-radius: 12px;
padding: 14px;
}
.deploy-log-box {
background: #05070a;
border: 1px solid #303846;
border-radius: 12px;
max-height: 360px;
min-height: 180px;
overflow: auto;
white-space: pre-wrap;
color: #d1d5db;
font-size: 13px;
}
@media (max-width: 768px) {
body {
padding: 20px;
}
.title {
font-size: 26px;
}
}Code: Select all
# Terms and Conditions
**Last updated:** May 28, 2026
These Terms and Conditions apply to the Evernode Instance Manager dashboard and related proof-of-concept tools, scripts, configuration, signing flow, acquire flow, deployment flow, and user interface.
## 1. Proof of Concept Only
This software is provided as a **proof of concept** for experimentation, learning, testing, and development. It is not finished software, not audited software, and not intended to be used in production.
Do not use this software for production workloads, production infrastructure, customer systems, critical systems, high-value assets, or any situation where failure could cause meaningful loss.
## 2. Use at Your Own Risk
You use this software entirely at your own risk. You are responsible for understanding what the software does before running it, modifying it, signing requests, entering keys, acquiring hosts, deploying contracts, transferring funds, or interacting with any third-party service.
This software may contain bugs, security issues, incomplete features, incorrect assumptions, unsafe defaults, or behavior that changes without notice.
## 3. No Warranty
The software is provided **as is** and **as available**, without warranties of any kind, whether express, implied, statutory, or otherwise.
No guarantee is made that the software will be secure, reliable, accurate, available, compatible with your environment, suitable for your use case, or free from errors.
## 4. No Liability
To the maximum extent permitted by law, the creator, maintainer, contributor, distributor, or anyone otherwise associated with this software accepts no liability for any direct, indirect, incidental, special, consequential, punitive, or other damages or losses.
This includes, but is not limited to, loss of funds, lost keys, failed transactions, failed deployments, downtime, data loss, security incidents, unauthorized access, service interruption, configuration mistakes, or damage to systems.
## 5. Keys, Seeds, Signing, and Security
You are solely responsible for protecting your private keys, wallet seeds, admin keys, signing devices, passwords, OTP codes, envelopes, and any other sensitive information.
Never use keys, seeds, or wallets containing funds or permissions you are not prepared to lose. Never enter secrets into an environment you do not fully trust.
Signing a request may authorize actions that are difficult or impossible to reverse. Always review requests carefully before signing.
## 6. Funds and Irreversible Actions
Blockchain, ledger, host acquisition, deployment, and contract-related actions may be irreversible. Fees, lease payments, host costs, or other amounts may be lost or unrecoverable.
You are responsible for verifying all addresses, amounts, contracts, hosts, domains, configuration values, and deployment settings before continuing.
## 7. Third-Party Services and Hosts
This software may interact with third-party APIs, hosts, networks, services, or infrastructure. The creator does not control and is not responsible for third-party availability, pricing, behavior, security, data handling, or reliability.
You are responsible for evaluating any third-party host, API, service, or dependency before using it.
## 8. No Support or Maintenance Promise
There is no promise of support, maintenance, updates, fixes, compatibility, documentation, or continued availability.
Features may be experimental, incomplete, removed, changed, or broken at any time.
## 9. Your Responsibility
By using this software, you confirm that you:
- Understand that this is experimental proof-of-concept software.
- Understand that it is not intended for production use.
- Accept full responsibility for your own actions and results.
- Accept the risks of bugs, failures, security issues, and financial loss.
- Agree that the creator is not liable for your use of the software.
## 10. Acceptance
If you do not agree with these terms, do not use this software.
By clicking **Accept & Continue**, continuing to use the dashboard, or otherwise interacting with this software, you acknowledge that you have read, understood, and accepted these Terms and Conditions.
/clustering/logs (create folder)
/clustering/evdevkit (build bin file with -s added in evdevkit read this: https://evernode.forum/viewtopic.php?t=1785)
/clustering/evdevkit-extender.sh
Code: Select all
#!/bin/bash
set -euo pipefail
IFS= read -r SEED || [ -n "${SEED:-}" ] || exit 1
RUN_ID="${1:-}"
INSTANCE_NAME="${2:-}"
ADDRESS="${3:-}"
MOMENTS="${4:-}"
MODE="${5:-instance}" # instance | manual
[ -n "$SEED" ] || exit 1
[ -n "$RUN_ID" ] || exit 1
[ -n "$INSTANCE_NAME" ] || exit 1
[ -n "$ADDRESS" ] || exit 1
[ -n "$MOMENTS" ] || exit 1
if ! [[ "$RUN_ID" =~ ^[a-f0-9]{16}$ ]]; then
echo "ERROR: Invalid RUN_ID"
exit 1
fi
if ! [[ "$MOMENTS" =~ ^[0-9]+$ ]] || [ "$MOMENTS" -le 0 ]; then
echo "ERROR: Invalid MOMENTS"
exit 1
fi
MAX_EXTEND_MOMENTS="${MAX_EXTEND_MOMENTS:-8760}"
if [ "$MOMENTS" -gt "$MAX_EXTEND_MOMENTS" ]; then
echo "ERROR: MOMENTS too large. Max is $MAX_EXTEND_MOMENTS"
exit 1
fi
if ! [[ "$INSTANCE_NAME" =~ ^[A-Za-z0-9._-]+$ ]]; then
echo "ERROR: Invalid INSTANCE_NAME"
exit 1
fi
if [ "$INSTANCE_NAME" = "." ] || [ "$INSTANCE_NAME" = ".." ]; then
echo "ERROR: Invalid INSTANCE_NAME"
exit 1
fi
if [ "$MODE" != "instance" ] && [ "$MODE" != "manual" ]; then
echo "ERROR: Invalid MODE"
exit 1
fi
# XRPL/Evernode r-address style.
# Loosen this if you intentionally support another address format.
if ! [[ "$ADDRESS" =~ ^r[1-9A-HJ-NP-Za-km-z]{25,40}$ ]]; then
echo "ERROR: Invalid ADDRESS"
exit 1
fi
ulimit -v unlimited
ulimit -m unlimited
ulimit -s unlimited
export WASMTIME_MAX_MEMORY=8G
export WASM_STACK_SIZE=64M
BASE_DIR="/home/everstoring"
PUBLIC_DIR="$BASE_DIR/public"
INSTANCES_DIR="$PUBLIC_DIR/instances"
LOG_DIR="$BASE_DIR/clustering/logs"
EVDEVKIT="$BASE_DIR/clustering/evdevkit"
LOG_FILE="$LOG_DIR/extend_${INSTANCE_NAME}_${RUN_ID}.log"
LOCK_FILE="$LOG_DIR/extend_${INSTANCE_NAME}.lock"
TMP_FILE="/tmp/extend_${INSTANCE_NAME}_${RUN_ID}.txt"
EV_OUTPUT_FILE="/tmp/extend_${INSTANCE_NAME}_${RUN_ID}_evdevkit.out"
INSTANCE_TMP=""
mkdir -p "$LOG_DIR" "$INSTANCES_DIR"
chmod 700 "$LOG_DIR"
# Send output to both Node stdout and the log file.
exec > >(tee -a "$LOG_FILE") 2>&1
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
}
cleanup() {
rm -f "$TMP_FILE" "$EV_OUTPUT_FILE"
if [ -n "${INSTANCE_TMP:-}" ]; then
rm -f "$INSTANCE_TMP"
fi
}
trap cleanup EXIT
fail() {
local message="$1"
log "ERROR: $message"
log "EV_EXTEND_FAIL_JSON $(jq -cn \
--arg run_id "$RUN_ID" \
--arg instance "$INSTANCE_NAME" \
--arg mode "$MODE" \
--arg error "$message" \
'{run_id:$run_id,instance:$instance,mode:$mode,error:$error}')"
log "=== EXTEND FAILURE RUN_ID=$RUN_ID ==="
exit 1
}
command -v jq >/dev/null 2>&1 || {
echo "ERROR: jq is required"
exit 1
}
command -v flock >/dev/null 2>&1 || {
echo "ERROR: flock is required"
exit 1
}
if ! date -u -d "@0" "+%Y-%m-%d %H:%M:%S" >/dev/null 2>&1; then
echo "ERROR: GNU date is required"
exit 1
fi
if [ ! -x "$EVDEVKIT" ]; then
fail "evdevkit binary not found or not executable: $EVDEVKIT"
fi
{
log "=== EXTEND START RUN_ID=$RUN_ID ==="
log "Instance: $INSTANCE_NAME"
log "Host: $ADDRESS"
log "Moments: $MOMENTS"
log "Mode: $MODE"
log "User: $(whoami)"
log "Seed: [REDACTED]"
log "evdevkit: $EVDEVKIT"
}
exec 9>"$LOCK_FILE"
if ! flock -w 900 9; then
fail "Could not acquire extend lock for $INSTANCE_NAME"
fi
log "Lock acquired"
echo "${ADDRESS}:${INSTANCE_NAME}:${MOMENTS}" > "$TMP_FILE"
chmod 600 "$TMP_FILE"
log "Instance request file created: $TMP_FILE"
set +e
printf '%s\n' "$SEED" | "$EVDEVKIT" \
--secret-stdin \
--randomprivatekey \
extend "$TMP_FILE" \
> "$EV_OUTPUT_FILE" 2>&1
EV_EXIT=$?
set -e
unset SEED
cat "$EV_OUTPUT_FILE"
if grep -Eiq '(^|[^A-Za-z0-9_])NO_TOKEN([^A-Za-z0-9_]|$)' "$EV_OUTPUT_FILE"; then
fail "evdevkit returned NO_TOKEN"
fi
if [ "$EV_EXIT" -ne 0 ]; then
fail "evdevkit extend failed with exit code $EV_EXIT"
fi
TX_RESULT="$(sed -nE "s/.*Transaction result:[[:space:]]*'?([^'[:space:]]+)'?.*/\1/ip" "$EV_OUTPUT_FILE" | tail -n 1 || true)"
TX_REF="$(grep -Eio 'Extension txn Ref:[[:space:]]*[A-Fa-f0-9]{64}' "$EV_OUTPUT_FILE" | tail -n 1 | grep -Eio '[A-Fa-f0-9]{64}' || true)"
REQ_TX_HASH="$(grep -Eio 'txHash:[[:space:]]*[A-Fa-f0-9]{64}' "$EV_OUTPUT_FILE" | tail -n 1 | grep -Eio '[A-Fa-f0-9]{64}' || true)"
EXPIRY_MOMENT="$(sed -nE 's/.*Expiry[[:space:]]+moment[[:space:]]*:[[:space:]]*([0-9]+).*/\1/ip' "$EV_OUTPUT_FILE" | tail -n 1 || true)"
INSTANCE_JSON="$INSTANCES_DIR/$INSTANCE_NAME.json"
NEW_EXPIRES_TS=""
NEW_EXPIRES_AT=""
if [ -f "$INSTANCE_JSON" ]; then
OLD_EXPIRES_TS="$(jq -r '.expires_timestamp // empty' "$INSTANCE_JSON")"
if ! [[ "$OLD_EXPIRES_TS" =~ ^[0-9]+$ ]]; then
fail "Invalid expires_timestamp in $INSTANCE_JSON"
fi
NOW_MS=$(($(date +%s) * 1000))
BASE_TS="$OLD_EXPIRES_TS"
if [ "$BASE_TS" -lt "$NOW_MS" ]; then
BASE_TS="$NOW_MS"
fi
ADD_MS=$((MOMENTS * 3600000))
NEW_EXPIRES_TS=$((BASE_TS + ADD_MS))
NEW_EXPIRES_AT="$(date -u -d "@$((NEW_EXPIRES_TS / 1000))" "+%Y-%m-%d %H:%M:%S")"
EXTENDED_AT="$(date -u "+%Y-%m-%d %H:%M:%S")"
INSTANCE_TMP="$INSTANCE_JSON.$RUN_ID.tmp"
jq \
--argjson ts "$NEW_EXPIRES_TS" \
--arg at "$NEW_EXPIRES_AT" \
--arg extended_at "$EXTENDED_AT" \
--argjson moments "$MOMENTS" \
'.expires_timestamp = $ts
| .expires_at = $at
| .last_extended_at = $extended_at
| .last_extend_moments = $moments
| .status = "active"' \
"$INSTANCE_JSON" > "$INSTANCE_TMP"
chmod 600 "$INSTANCE_TMP"
mv -f "$INSTANCE_TMP" "$INSTANCE_JSON"
INSTANCE_TMP=""
log "Instance JSON expiration updated"
log "New expires_at: $NEW_EXPIRES_AT"
else
if [ "$MODE" = "manual" ]; then
log "Manual mode: no instance JSON found, skipping local instance JSON update"
else
fail "Instance JSON not found: $INSTANCE_JSON"
fi
fi
LOCAL_EXPIRES_JSON="null"
if [ -n "$NEW_EXPIRES_TS" ]; then
LOCAL_EXPIRES_JSON="$NEW_EXPIRES_TS"
fi
log "EV_EXTEND_OK_JSON $(jq -cn \
--arg run_id "$RUN_ID" \
--arg instance "$INSTANCE_NAME" \
--arg address "$ADDRESS" \
--arg mode "$MODE" \
--arg transactionResult "${TX_RESULT:-not-required}" \
--arg txHash "${TX_REF:-}" \
--arg requestTxHash "${REQ_TX_HASH:-}" \
--arg expiryMoment "${EXPIRY_MOMENT:-}" \
--argjson moments "$MOMENTS" \
--argjson localExpiresTimestamp "$LOCAL_EXPIRES_JSON" \
'{
run_id:$run_id,
instance:$instance,
address:$address,
mode:$mode,
transactionResult:$transactionResult,
txHash:$txHash,
requestTxHash:$requestTxHash,
expiryMoment:($expiryMoment | if . == "" then null else tonumber end),
moments:$moments,
localExpiresTimestamp:$localExpiresTimestamp
}')"
log "=== EXTEND SUCCESS RUN_ID=$RUN_ID ==="
log "Finished at $(date -u '+%Y-%m-%d %H:%M:%S')"Code: Select all
#!/bin/bash
set -euo pipefail
read -r SEED || exit 1
RUN_ID="${1:-}"
ADDRESS="${2:-}"
MOMENTS="${3:-1}"
SEND_MAX="${4:-}"
[ -n "$SEED" ] || exit 1
[ -n "$RUN_ID" ] || exit 1
[ -n "$ADDRESS" ] || exit 1
[ -n "$MOMENTS" ] || exit 1
if ! [[ "$MOMENTS" =~ ^[0-9]+$ ]]; then
exit 1
fi
if [ -n "$SEND_MAX" ] && ! [[ "$SEND_MAX" =~ ^([0-9]+|[0-9]*\.[0-9]+)$ ]]; then
exit 1
fi
ulimit -v unlimited
ulimit -m unlimited
ulimit -s unlimited
export WASMTIME_MAX_MEMORY=8G
export WASM_STACK_SIZE=64M
BASE_DIR="/home/everstoring"
PUBLIC_DIR="$BASE_DIR/public"
INSTANCES_DIR="$PUBLIC_DIR/instances"
LOG_DIR="$BASE_DIR/clustering/logs"
ADDRESS_SAFE=$(printf '%s' "$ADDRESS" | tr -cd 'A-Za-z0-9._-')
[ -n "$ADDRESS_SAFE" ] || ADDRESS_SAFE="unknown"
LOG_FILE="$LOG_DIR/rent_${ADDRESS_SAFE}_${RUN_ID}.log"
EVDEV_OUT="/tmp/evdevkit_acquire_${RUN_ID}_${ADDRESS_SAFE}.log"
mkdir -p "$LOG_DIR" "$INSTANCES_DIR"
chmod 700 "$LOG_DIR"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
}
HB_PID=""
cleanup() {
[ -n "$HB_PID" ] && kill "$HB_PID" 2>/dev/null || true
rm -f "$EVDEV_OUT"
}
trap cleanup EXIT
{
log "=== RENT JOB START RUN_ID=$RUN_ID ==="
log "Host: $ADDRESS"
log "Moments: $MOMENTS"
log "Send max: ${SEND_MAX:-auto}"
log "User: $(whoami)"
log "Image: everstoring/everstoring:latest"
log "Seed: [REDACTED]"
log "evdevkit: $(command -v evdevkit || true)"
(
while true; do
sleep 30
log "Still running..."
done
) &
HB_PID=$!
SEND_MAX_ARGS=()
if [ -n "$SEND_MAX" ]; then
SEND_MAX_ARGS=(-s "$SEND_MAX")
fi
if ! printf '%s' "$SEED" | /home/everstoring/clustering/evdevkit \
--secret-stdin \
--randomprivatekey \
acquire \
-i everstoring/everstoring:latest \
-m "$MOMENTS" \
"${SEND_MAX_ARGS[@]}" \
"$ADDRESS" > "$EVDEV_OUT" 2>&1
then
cat "$EVDEV_OUT"
unset SEED
log "ERROR: evdevkit acquire failed"
log "STATUS: FAILURE"
exit 1
fi
unset SEED
kill "$HB_PID" 2>/dev/null || true
HB_PID=""
cat "$EVDEV_OUT"
INSTANCE_BLOCK=$(sed -n "/Instance created!/,/}/p" "$EVDEV_OUT")
if [ -z "$INSTANCE_BLOCK" ]; then
log "ERROR: Instance block not found"
log "STATUS: FAILURE"
exit 1
fi
log "Parsing instance metadata"
NAME=$(echo "$INSTANCE_BLOCK" | sed -n "s/.*name: '\([^']*\)'.*/\1/p")
PUBKEY=$(echo "$INSTANCE_BLOCK" | sed -n "s/.*pubkey: '\([^']*\)'.*/\1/p")
CONTRACT_ID=$(echo "$INSTANCE_BLOCK" | sed -n "s/.*contract_id: '\([^']*\)'.*/\1/p")
PEER_PORT=$(echo "$INSTANCE_BLOCK" | sed -n "s/.*peer_port: '\([^']*\)'.*/\1/p")
USER_PORT=$(echo "$INSTANCE_BLOCK" | sed -n "s/.*user_port: '\([^']*\)'.*/\1/p")
GP_TCP_PORT=$(echo "$INSTANCE_BLOCK" | sed -n "s/.*gp_tcp_port: '\([^']*\)'.*/\1/p")
GP_UDP_PORT=$(echo "$INSTANCE_BLOCK" | sed -n "s/.*gp_udp_port: '\([^']*\)'.*/\1/p")
DOMAIN=$(echo "$INSTANCE_BLOCK" | sed -n "s/.*domain: '\([^']*\)'.*/\1/p")
OUTBOUND_IP=$(echo "$INSTANCE_BLOCK" | sed -n "s/.*outbound_ip: '\([^']*\)'.*/\1/p")
CREATED_TS=$(echo "$INSTANCE_BLOCK" | sed -n "s/.*created_timestamp: \([0-9]*\).*/\1/p")
if [ -z "$NAME" ] || [ -z "$PUBKEY" ] || [ -z "$CONTRACT_ID" ] || [ -z "$DOMAIN" ] || [ -z "$CREATED_TS" ]; then
log "ERROR: Failed to extract required fields"
log "NAME=$NAME"
log "PUBKEY=$PUBKEY"
log "CONTRACT_ID=$CONTRACT_ID"
log "DOMAIN=$DOMAIN"
log "CREATED_TS=$CREATED_TS"
log "STATUS: FAILURE"
exit 1
fi
if ! [[ "$NAME" =~ ^[A-Za-z0-9._-]+$ ]]; then
log "ERROR: Unsafe instance name: $NAME"
log "STATUS: FAILURE"
exit 1
fi
for value in "$PEER_PORT" "$USER_PORT" "$GP_TCP_PORT" "$GP_UDP_PORT" "$CREATED_TS"; do
if ! [[ "$value" =~ ^[0-9]+$ ]]; then
log "ERROR: Invalid numeric field from evdevkit output: $value"
log "STATUS: FAILURE"
exit 1
fi
done
EXPIRES_TS=$((CREATED_TS + MOMENTS * 3600000))
CREATED_AT=$(date -d "@$((CREATED_TS/1000))" "+%Y-%m-%d %H:%M:%S")
EXPIRES_AT=$(date -d "@$((EXPIRES_TS/1000))" "+%Y-%m-%d %H:%M:%S")
jq -n \
--arg instance_id "$NAME" \
--arg host "$ADDRESS" \
--arg pubkey "$PUBKEY" \
--arg contract_id "$CONTRACT_ID" \
--arg domain "$DOMAIN" \
--arg outbound_ip "$OUTBOUND_IP" \
--argjson peer_port "$PEER_PORT" \
--argjson user_port "$USER_PORT" \
--argjson gp_tcp_port "$GP_TCP_PORT" \
--argjson gp_udp_port "$GP_UDP_PORT" \
--argjson created_ts "$CREATED_TS" \
--argjson expires_ts "$EXPIRES_TS" \
--arg created_at "$CREATED_AT" \
--arg expires_at "$EXPIRES_AT" \
--argjson moments "$MOMENTS" \
'{
instance_id: $instance_id,
host_address: $host,
pubkey: $pubkey,
contract_id: $contract_id,
domain: $domain,
outbound_ip: $outbound_ip,
peer_port: $peer_port,
user_port: $user_port,
gp_tcp_port: $gp_tcp_port,
gp_udp_port: $gp_udp_port,
created_timestamp: $created_ts,
expires_timestamp: $expires_ts,
created_at: $created_at,
expires_at: $expires_at,
moments: $moments,
status: "active"
}' > "$INSTANCES_DIR/$NAME.json.tmp"
mv "$INSTANCES_DIR/$NAME.json.tmp" "$INSTANCES_DIR/$NAME.json"
log "Instance JSON written: $INSTANCES_DIR/$NAME.json"
log "STATUS: SUCCESS"
log "Finished at $(date)"
} >>"$LOG_FILE" 2>&1