Merge branch 'dev' into RSR

This commit is contained in:
ΞTΞRNAL
2026-03-04 09:11:37 +05:30
committed by GitHub
139 changed files with 25845 additions and 22295 deletions

View File

@@ -88,16 +88,20 @@ ensure_omvll_bundle() {
local archive_url="${OMVLL_ARCHIVE_URL:-https://github.com/open-obfuscator/o-mvll/releases/download/${OMVLL_VERSION}/${OMVLL_LINUX_ASSET}}"
OMVLL_CACHE_DIR="$SCRIPT_DIR/.omvll/$OMVLL_VERSION"
OMVLL_PLUGIN_PATH="$OMVLL_CACHE_DIR/omvll-ndk.so"
local tmp_tar=""
if [ ! -f "$OMVLL_PLUGIN_PATH" ]; then
echo "Downloading O-MVLL bundle from $archive_url"
download_omvll_bundle() {
rm -rf "$OMVLL_CACHE_DIR"
mkdir -p "$OMVLL_CACHE_DIR"
local tmp_tar
tmp_tar=$(mktemp)
curl -fL "$archive_url" -o "$tmp_tar"
tar -xzf "$tmp_tar" -C "$OMVLL_CACHE_DIR"
rm -f "$tmp_tar"
}
if [ ! -f "$OMVLL_PLUGIN_PATH" ]; then
echo "Downloading O-MVLL bundle from $archive_url"
download_omvll_bundle
fi
if [ ! -f "$OMVLL_PLUGIN_PATH" ]; then
@@ -117,11 +121,16 @@ ensure_omvll_bundle() {
local py_root
py_root=$(find "$OMVLL_CACHE_DIR" -maxdepth 1 -type d -name 'Python-*' | head -n1 || true)
if [ -z "$py_root" ] || [ ! -d "$py_root/Lib" ]; then
echo "Unable to determine Python stdlib directory inside the O-MVLL bundle" >&2
echo "OMVLL_CACHE_DIR: $OMVLL_CACHE_DIR" >&2
echo "Contents:" >&2
ls -la "$OMVLL_CACHE_DIR" >&2 || true
exit 1
echo "OMVLL cache is incomplete. Re-downloading bundle..." >&2
download_omvll_bundle
py_root=$(find "$OMVLL_CACHE_DIR" -maxdepth 1 -type d -name 'Python-*' | head -n1 || true)
if [ -z "$py_root" ] || [ ! -d "$py_root/Lib" ]; then
echo "Unable to determine Python stdlib directory inside the O-MVLL bundle" >&2
echo "OMVLL_CACHE_DIR: $OMVLL_CACHE_DIR" >&2
echo "Contents:" >&2
ls -la "$OMVLL_CACHE_DIR" >&2 || true
exit 1
fi
fi
export OMVLL_PYTHONPATH="$py_root/Lib"
fi

View File

@@ -252,28 +252,39 @@ val syncTasks = cargoTargets.mapIndexed { index, target ->
omvllArchiveUrl?.let { environment("OMVLL_ARCHIVE_URL", it) }
}
tasks.register<Sync>("syncNative${target.taskSuffix}") {
tasks.register("syncNative${target.taskSuffix}") {
dependsOn(cargoTask)
val outputLibName = nativeLibFileName
inputs.property("outputLibName", outputLibName)
val wslCandidate = File(wslStagingDir, "native/rust/target/${target.triple}/release/libpurrfectsnap.so")
val localCandidate = layout.projectDirectory.file("rust/target/${target.triple}/release/libpurrfectsnap.so").asFile
val sourceLibs = files(wslCandidate, localCandidate)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from(sourceLibs) {
rename { outputLibName }
}
from(sourceLibs) {
rename { "libpurrfectsnap.so" }
}
into(layout.buildDirectory.dir("rustJniLibs/android/${target.abi}"))
inputs.files(sourceLibs)
val outputDir = layout.buildDirectory.dir("rustJniLibs/android/${target.abi}")
inputs.property("outputLibName", outputLibName)
inputs.files(wslCandidate, localCandidate)
outputs.dir(outputDir)
outputs.upToDateWhen { false }
val checksumsDir = layout.buildDirectory.dir("checksums")
doLast {
val file = File(destinationDir, outputLibName)
if (!file.exists()) {
error("Native library not found for ${target.abi}. Expected ${file.absolutePath}")
val sourceFile = listOf(wslCandidate, localCandidate).firstOrNull { it.exists() }
?: error(
"Native library not found for ${target.abi}. Looked in: " +
"${wslCandidate.absolutePath}, ${localCandidate.absolutePath}"
)
val abiDir = outputDir.get().asFile
abiDir.mkdirs()
project.copy {
from(sourceFile)
into(abiDir)
rename { outputLibName }
}
project.copy {
from(sourceFile)
into(abiDir)
rename { "libpurrfectsnap.so" }
}
val file = File(abiDir, outputLibName)
val crc = CRC32()
crc.update(file.readBytes())
val checksumsDirFile = checksumsDir.get().asFile

View File

@@ -6,154 +6,191 @@
static const uint8_t KEY = 0x5Au;
static const uint8_t DET_LENS[] = {
5, 11, 6, 9, 15, 16, 7, 11, 25, 9, 14, 13, 16, 23, 21, 10, 21, 24, 21,
17, 10, 19, 18, 18, 19, 18, 17, 27, 20, 18, 16, 23, 13, 27, 22, 28,
19, 14
5, 11, 6, 9, 15, 16, 7, 11, 25, 9, 14, 13,
16, 23, 21, 10, 21, 24, 21, 17, 10, 19, 18, 18,
19, 18, 17, 27, 20, 18, 16, 23, 13, 27, 22, 28,
19, 14, 18, 20, 16, 15, 14, 19, 18, 13, 26, 9,
10, 17, 17, 15, 26, 28, 28, 29, 20, 21, 22,
};
static const uint8_t DET_ENC[] = {
0x3B, 0x28, 0x3D, 0x35, 0x29, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B,
0x2E, 0x33, 0x35, 0x34, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x33,
0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x39, 0x36, 0x33,
0x3F, 0x34, 0x2E, 0x33, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E,
0x23, 0x39, 0x36, 0x33, 0x3F, 0x34, 0x2E, 0x05, 0x33, 0x34, 0x2E,
0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x29, 0x39, 0x3B, 0x28, 0x3D,
0x35, 0x29, 0x3B, 0x28, 0x3D, 0x35, 0x29, 0x39, 0x36, 0x33, 0x3F,
0x34, 0x2E, 0x2A, 0x36, 0x3B, 0x2E, 0x3C, 0x35, 0x28, 0x37, 0x39,
0x36, 0x33, 0x3F, 0x34, 0x2E, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E,
0x3B, 0x2E, 0x33, 0x35, 0x34, 0x29, 0x3B, 0x3C, 0x3F, 0x2E, 0x23,
0x34, 0x3F, 0x2E, 0x2A, 0x36, 0x3B, 0x23, 0x05, 0x33, 0x34, 0x2E,
0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x2A, 0x36, 0x3B, 0x23, 0x33,
0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x3F, 0x22, 0x2A,
0x28, 0x3F, 0x29, 0x29, 0x33, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33,
0x2E, 0x23, 0x3B, 0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E, 0x05, 0x31,
0x3F, 0x23, 0x05, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E,
0x33, 0x35, 0x34, 0x3B, 0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E, 0x31,
0x3F, 0x23, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33,
0x35, 0x34, 0x3B, 0x2A, 0x2A, 0x05, 0x3B, 0x2E, 0x2E, 0x3F, 0x29,
0x2E, 0x3D, 0x3F, 0x2E, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B,
0x2E, 0x33, 0x35, 0x34, 0x32, 0x3F, 0x3B, 0x3E, 0x3F, 0x28, 0x29,
0x39, 0x35, 0x37, 0x2A, 0x2F, 0x2E, 0x3F, 0x3B, 0x2E, 0x2E, 0x3F,
0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x32, 0x3F, 0x3B, 0x3E,
0x3F, 0x28, 0x3D, 0x3F, 0x2E, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E,
0x3B, 0x2E, 0x33, 0x35, 0x34, 0x2A, 0x3B, 0x23, 0x36, 0x35, 0x3B,
0x3E, 0x3D, 0x3F, 0x34, 0x3F, 0x28, 0x3B, 0x2E, 0x3F, 0x29, 0x33,
0x3D, 0x34, 0x3B, 0x2E, 0x2F, 0x28, 0x3F, 0x32, 0x3F, 0x28, 0x37,
0x35, 0x3E, 0x05, 0x3E, 0x2F, 0x2A, 0x3E, 0x3F, 0x2C, 0x33, 0x39,
0x3F, 0x05, 0x2C, 0x3F, 0x28, 0x33, 0x3C, 0x33, 0x39, 0x3B, 0x2E,
0x33, 0x35, 0x34, 0x3E, 0x3F, 0x2C, 0x33, 0x39, 0x3F, 0x05, 0x3C,
0x33, 0x34, 0x3D, 0x3F, 0x28, 0x2A, 0x28, 0x33, 0x34, 0x2E, 0x3E,
0x3F, 0x2C, 0x33, 0x39, 0x3F, 0x05, 0x3B, 0x2E, 0x2E, 0x3F, 0x29,
0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x39, 0x36, 0x33, 0x3F, 0x34,
0x2E, 0x05, 0x2C, 0x3F, 0x28, 0x33, 0x3C, 0x33, 0x39, 0x3B, 0x2E,
0x33, 0x35, 0x34, 0x39, 0x36, 0x33, 0x3F, 0x34, 0x2E, 0x05, 0x3B,
0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x2C,
0x3F, 0x34, 0x3E, 0x35, 0x28, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E,
0x3B, 0x2E, 0x33, 0x35, 0x34, 0x3D, 0x35, 0x35, 0x3D, 0x36, 0x3F,
0x3B, 0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E, 0x31, 0x3F, 0x23, 0x3B,
0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x3D,
0x3F, 0x2E, 0x29, 0x33, 0x3D, 0x34, 0x3F, 0x3E, 0x3B, 0x2E, 0x2E,
0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x3B, 0x2E, 0x2E,
0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x37, 0x3B, 0x34,
0x3B, 0x3D, 0x3F, 0x28, 0x2E, 0x32, 0x33, 0x28, 0x3E, 0x2A, 0x3B,
0x28, 0x2E, 0x23, 0x3B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x2E, 0x32,
0x33, 0x28, 0x3E, 0x2A, 0x3B, 0x28, 0x2E, 0x23, 0x3B, 0x39, 0x39,
0x3F, 0x29, 0x29, 0x29, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x2E,
0x32, 0x33, 0x28, 0x3E, 0x2A, 0x3B, 0x28, 0x2E, 0x23, 0x3B, 0x2A,
0x2A, 0x3D, 0x28, 0x2A, 0x39, 0x2E, 0x32, 0x33, 0x28, 0x3E, 0x2A,
0x3B, 0x28, 0x2E, 0x23, 0x3B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x29,
0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x28, 0x3F, 0x39, 0x35, 0x28,
0x3E, 0x2E, 0x32, 0x33, 0x28, 0x3E, 0x2A, 0x3B, 0x28, 0x2E, 0x23,
0x3B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x28, 0x3F, 0x39, 0x35, 0x28,
0x3E, 0x2E, 0x32, 0x33, 0x28, 0x3E, 0x2A, 0x3B, 0x28, 0x2E, 0x23,
0x3B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x3B, 0x39, 0x2E, 0x33, 0x35,
0x34, 0x3B, 0x2F, 0x2E, 0x32, 0x39, 0x35, 0x34, 0x2E, 0x3F, 0x22,
0x2E, 0x3E, 0x3F, 0x36, 0x3F, 0x3D, 0x3B, 0x2E, 0x3F, 0x3D, 0x3F,
0x2E, 0x3B, 0x2F, 0x2E, 0x32, 0x39, 0x35, 0x34, 0x2E, 0x3F, 0x22,
0x2E
0x2E, 0x33, 0x35, 0x34, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x33, 0x34,
0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x39, 0x36, 0x33, 0x3F, 0x34,
0x2E, 0x33, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x39, 0x36,
0x33, 0x3F, 0x34, 0x2E, 0x05, 0x33, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33,
0x2E, 0x23, 0x29, 0x39, 0x3B, 0x28, 0x3D, 0x35, 0x29, 0x3B, 0x28, 0x3D,
0x35, 0x29, 0x39, 0x36, 0x33, 0x3F, 0x34, 0x2E, 0x2A, 0x36, 0x3B, 0x2E,
0x3C, 0x35, 0x28, 0x37, 0x39, 0x36, 0x33, 0x3F, 0x34, 0x2E, 0x3B, 0x2E,
0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x29, 0x3B, 0x3C,
0x3F, 0x2E, 0x23, 0x34, 0x3F, 0x2E, 0x2A, 0x36, 0x3B, 0x23, 0x05, 0x33,
0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x2A, 0x36, 0x3B, 0x23,
0x33, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x3F, 0x22, 0x2A,
0x28, 0x3F, 0x29, 0x29, 0x33, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E,
0x23, 0x3B, 0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E, 0x05, 0x31, 0x3F, 0x23,
0x05, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34,
0x3B, 0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E, 0x31, 0x3F, 0x23, 0x3B, 0x2E,
0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x3B, 0x2A, 0x2A,
0x05, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3D, 0x3F, 0x2E, 0x3B, 0x2E,
0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x32, 0x3F, 0x3B,
0x3E, 0x3F, 0x28, 0x29, 0x39, 0x35, 0x37, 0x2A, 0x2F, 0x2E, 0x3F, 0x3B,
0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x32, 0x3F,
0x3B, 0x3E, 0x3F, 0x28, 0x3D, 0x3F, 0x2E, 0x3B, 0x2E, 0x2E, 0x3F, 0x29,
0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x2A, 0x3B, 0x23, 0x36, 0x35, 0x3B,
0x3E, 0x3D, 0x3F, 0x34, 0x3F, 0x28, 0x3B, 0x2E, 0x3F, 0x29, 0x33, 0x3D,
0x34, 0x3B, 0x2E, 0x2F, 0x28, 0x3F, 0x32, 0x3F, 0x28, 0x37, 0x35, 0x3E,
0x05, 0x3E, 0x2F, 0x2A, 0x3E, 0x3F, 0x2C, 0x33, 0x39, 0x3F, 0x05, 0x2C,
0x3F, 0x28, 0x33, 0x3C, 0x33, 0x39, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x3E,
0x3F, 0x2C, 0x33, 0x39, 0x3F, 0x05, 0x3C, 0x33, 0x34, 0x3D, 0x3F, 0x28,
0x2A, 0x28, 0x33, 0x34, 0x2E, 0x3E, 0x3F, 0x2C, 0x33, 0x39, 0x3F, 0x05,
0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x39,
0x36, 0x33, 0x3F, 0x34, 0x2E, 0x05, 0x2C, 0x3F, 0x28, 0x33, 0x3C, 0x33,
0x39, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x39, 0x36, 0x33, 0x3F, 0x34, 0x2E,
0x05, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34,
0x2C, 0x3F, 0x34, 0x3E, 0x35, 0x28, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E,
0x3B, 0x2E, 0x33, 0x35, 0x34, 0x3D, 0x35, 0x35, 0x3D, 0x36, 0x3F, 0x3B,
0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E, 0x31, 0x3F, 0x23, 0x3B, 0x2E, 0x2E,
0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x3D, 0x3F, 0x2E, 0x29,
0x33, 0x3D, 0x34, 0x3F, 0x3E, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B,
0x2E, 0x33, 0x35, 0x34, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E,
0x33, 0x35, 0x34, 0x37, 0x3B, 0x34, 0x3B, 0x3D, 0x3F, 0x28, 0x2E, 0x32,
0x33, 0x28, 0x3E, 0x2A, 0x3B, 0x28, 0x2E, 0x23, 0x3B, 0x39, 0x39, 0x3F,
0x29, 0x29, 0x2E, 0x32, 0x33, 0x28, 0x3E, 0x2A, 0x3B, 0x28, 0x2E, 0x23,
0x3B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x29, 0x3F, 0x28, 0x2C, 0x33, 0x39,
0x3F, 0x2E, 0x32, 0x33, 0x28, 0x3E, 0x2A, 0x3B, 0x28, 0x2E, 0x23, 0x3B,
0x2A, 0x2A, 0x3D, 0x28, 0x2A, 0x39, 0x2E, 0x32, 0x33, 0x28, 0x3E, 0x2A,
0x3B, 0x28, 0x2E, 0x23, 0x3B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x29, 0x3F,
0x28, 0x2C, 0x33, 0x39, 0x3F, 0x28, 0x3F, 0x39, 0x35, 0x28, 0x3E, 0x2E,
0x32, 0x33, 0x28, 0x3E, 0x2A, 0x3B, 0x28, 0x2E, 0x23, 0x3B, 0x39, 0x39,
0x3F, 0x29, 0x29, 0x28, 0x3F, 0x39, 0x35, 0x28, 0x3E, 0x2E, 0x32, 0x33,
0x28, 0x3E, 0x2A, 0x3B, 0x28, 0x2E, 0x23, 0x3B, 0x39, 0x39, 0x3F, 0x29,
0x29, 0x3B, 0x39, 0x2E, 0x33, 0x35, 0x34, 0x3B, 0x2F, 0x2E, 0x32, 0x39,
0x35, 0x34, 0x2E, 0x3F, 0x22, 0x2E, 0x3E, 0x3F, 0x36, 0x3F, 0x3D, 0x3B,
0x2E, 0x3F, 0x3D, 0x3F, 0x2E, 0x3B, 0x2F, 0x2E, 0x32, 0x39, 0x35, 0x34,
0x2E, 0x3F, 0x22, 0x2E, 0x34, 0x3B, 0x2E, 0x33, 0x2C, 0x3F, 0x05, 0x34,
0x3F, 0x2E, 0x2D, 0x35, 0x28, 0x31, 0x05, 0x3B, 0x2A, 0x33, 0x34, 0x3B,
0x2E, 0x33, 0x2C, 0x3F, 0x34, 0x3F, 0x2E, 0x2D, 0x35, 0x28, 0x31, 0x28,
0x3F, 0x2B, 0x2F, 0x3F, 0x29, 0x2E, 0x34, 0x3B, 0x2E, 0x33, 0x2C, 0x3F,
0x34, 0x3F, 0x2E, 0x2D, 0x35, 0x28, 0x31, 0x3B, 0x2A, 0x33, 0x3B, 0x2E,
0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x2E, 0x23, 0x2A,
0x3F, 0x3B, 0x28, 0x3D, 0x35, 0x29, 0x3B, 0x34, 0x3E, 0x36, 0x3F, 0x3D,
0x3B, 0x39, 0x23, 0x28, 0x3F, 0x2B, 0x2F, 0x33, 0x28, 0x3F, 0x29, 0x3B,
0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x3D, 0x3F,
0x2E, 0x3B, 0x28, 0x3D, 0x35, 0x29, 0x2E, 0x35, 0x31, 0x3F, 0x34, 0x3B,
0x29, 0x23, 0x34, 0x39, 0x3D, 0x3F, 0x2E, 0x3B, 0x28, 0x3D, 0x35, 0x29,
0x2E, 0x35, 0x31, 0x3F, 0x34, 0x3B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B,
0x2E, 0x33, 0x35, 0x34, 0x32, 0x3F, 0x3B, 0x3E, 0x3F, 0x28, 0x29, 0x39,
0x3B, 0x36, 0x36, 0x38, 0x3B, 0x39, 0x31, 0x3B, 0x28, 0x3D, 0x35, 0x29,
0x37, 0x35, 0x3E, 0x3F, 0x3B, 0x28, 0x3D, 0x35, 0x29, 0x3F, 0x2C, 0x3F,
0x34, 0x2E, 0x3B, 0x28, 0x3D, 0x35, 0x29, 0x2E, 0x35, 0x31, 0x3F, 0x34,
0x28, 0x3F, 0x3C, 0x28, 0x3F, 0x29, 0x32, 0x3B, 0x28, 0x3D, 0x35, 0x29,
0x28, 0x3F, 0x3C, 0x28, 0x3F, 0x29, 0x28, 0x3F, 0x3B, 0x29, 0x35, 0x34,
0x3B, 0x28, 0x3D, 0x35, 0x29, 0x32, 0x3F, 0x3B, 0x3E, 0x3F, 0x28, 0x2E,
0x23, 0x2A, 0x3F, 0x3D, 0x35, 0x35, 0x3D, 0x36, 0x3F, 0x2A, 0x36, 0x3B,
0x23, 0x33, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x37, 0x3B,
0x34, 0x3B, 0x3D, 0x3F, 0x28, 0x28, 0x3F, 0x2B, 0x2F, 0x3F, 0x29, 0x2E,
0x3F, 0x22, 0x2A, 0x28, 0x3F, 0x29, 0x29, 0x33, 0x34, 0x2E, 0x3F, 0x3D,
0x28, 0x33, 0x2E, 0x23, 0x2E, 0x35, 0x31, 0x3F, 0x34, 0x28, 0x3F, 0x2B,
0x2F, 0x3F, 0x29, 0x2E, 0x39, 0x36, 0x3B, 0x29, 0x29, 0x33, 0x39, 0x33,
0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x2E, 0x35, 0x31, 0x3F,
0x34, 0x28, 0x3F, 0x2B, 0x2F, 0x3F, 0x29, 0x2E, 0x29, 0x2E, 0x3B, 0x34,
0x3E, 0x3B, 0x28, 0x3E, 0x33, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E,
0x23, 0x2E, 0x35, 0x31, 0x3F, 0x34, 0x39, 0x36, 0x3B, 0x29, 0x29, 0x33,
0x39, 0x2A, 0x36, 0x3B, 0x23, 0x33, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33,
0x2E, 0x23, 0x29, 0x2E, 0x3B, 0x34, 0x3E, 0x3B, 0x28, 0x3E, 0x2A, 0x36,
0x3B, 0x23, 0x33, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x39,
0x32, 0x3B, 0x36, 0x36, 0x3F, 0x34, 0x3D, 0x3F, 0x35, 0x28, 0x39, 0x32,
0x3F, 0x29, 0x2E, 0x28, 0x3B, 0x2E, 0x33, 0x35, 0x34,
};
static char DET_DEC[678];
static char DET_DEC[1132];
static size_t DET_LEN = 0;
static int DET_READY = 0;
static const uint8_t RISK_LENS[] = {
22, 24, 16, 18, 22, 19, 22, 19, 25, 21, 27, 21, 30, 18, 24, 26, 28,
34, 36, 14, 17, 18, 20, 14, 16, 12, 26, 10, 27, 29, 23, 53, 29, 30
22, 24, 16, 18, 22, 19, 22, 19, 25, 21, 27, 21,
30, 18, 24, 26, 28, 34, 36, 14, 17, 18, 20, 14,
16, 12, 26, 10, 27, 29, 23, 53, 29, 30, 26, 28,
50, 29,
};
static const uint8_t RISK_ENC[] = {
0x19, 0x36, 0x33, 0x3F, 0x34, 0x2E, 0x13, 0x34, 0x2E, 0x3F, 0x3D, 0x28,
0x33, 0x2E, 0x23, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75,
0x19, 0x36, 0x33, 0x3F, 0x34, 0x2E, 0x13, 0x34, 0x2E, 0x3F, 0x3D,
0x28, 0x33, 0x2E, 0x23, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F,
0x75, 0x13, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x09,
0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x13, 0x34, 0x2E, 0x3F,
0x3D, 0x28, 0x33, 0x2E, 0x23, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39,
0x3F, 0x75, 0x75, 0x1D, 0x3F, 0x2E, 0x1B, 0x2E, 0x2E, 0x3F, 0x29,
0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x12, 0x3F, 0x3B, 0x3E, 0x3F,
0x28, 0x29, 0x75, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E,
0x33, 0x35, 0x34, 0x12, 0x3F, 0x3B, 0x3E, 0x3F, 0x28, 0x29, 0x75,
0x1D, 0x3F, 0x2E, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E,
0x33, 0x35, 0x34, 0x0A, 0x3B, 0x23, 0x36, 0x35, 0x3B, 0x3E, 0x75,
0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34,
0x0A, 0x3B, 0x23, 0x36, 0x35, 0x3B, 0x3E, 0x75, 0x19, 0x35, 0x37,
0x2A, 0x2F, 0x2E, 0x3F, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B,
0x2E, 0x33, 0x35, 0x34, 0x12, 0x3F, 0x3B, 0x3E, 0x3F, 0x28, 0x75,
0x1D, 0x3F, 0x2E, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E,
0x33, 0x35, 0x34, 0x12, 0x3F, 0x3B, 0x3E, 0x3F, 0x28, 0x75, 0x1D,
0x3F, 0x34, 0x3F, 0x28, 0x3B, 0x2E, 0x3F, 0x1B, 0x2E, 0x2E, 0x3F,
0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x0A, 0x3B, 0x23, 0x36,
0x35, 0x3B, 0x3E, 0x75, 0x1D, 0x3F, 0x2E, 0x09, 0x33, 0x3D, 0x34,
0x3F, 0x3E, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33,
0x35, 0x34, 0x75, 0x1D, 0x3F, 0x2E, 0x09, 0x33, 0x3D, 0x34, 0x3F,
0x3E, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35,
0x34, 0x0D, 0x33, 0x2E, 0x32, 0x14, 0x35, 0x34, 0x39, 0x3F, 0x75,
0x0C, 0x3F, 0x34, 0x3E, 0x35, 0x28, 0x1B, 0x2E, 0x2E, 0x3F, 0x29,
0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x0C, 0x3F, 0x34, 0x3E, 0x35,
0x28, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35,
0x34, 0x17, 0x3B, 0x34, 0x3B, 0x3D, 0x3F, 0x28, 0x75, 0x0C, 0x3F,
0x34, 0x3E, 0x35, 0x28, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B,
0x2E, 0x33, 0x35, 0x34, 0x17, 0x3B, 0x34, 0x3B, 0x3D, 0x3F, 0x28,
0x75, 0x75, 0x1D, 0x35, 0x35, 0x3D, 0x36, 0x3F, 0x1B, 0x34, 0x3E,
0x28, 0x35, 0x33, 0x3E, 0x11, 0x3F, 0x23, 0x1B, 0x2E, 0x2E, 0x3F,
0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x1D, 0x35, 0x35, 0x3D,
0x36, 0x3F, 0x1B, 0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E, 0x11, 0x3F,
0x23, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35,
0x34, 0x17, 0x3B, 0x34, 0x3B, 0x3D, 0x3F, 0x28, 0x75, 0x1D, 0x35,
0x35, 0x3D, 0x36, 0x3F, 0x1B, 0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E,
0x11, 0x3F, 0x23, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E,
0x33, 0x35, 0x34, 0x17, 0x3B, 0x34, 0x3B, 0x3D, 0x3F, 0x28, 0x75,
0x75, 0x0A, 0x36, 0x3B, 0x23, 0x13, 0x34, 0x2E, 0x3F, 0x3D, 0x28,
0x33, 0x2E, 0x23, 0x75, 0x1F, 0x22, 0x2A, 0x28, 0x3F, 0x29, 0x29,
0x13, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x09, 0x19,
0x1B, 0x28, 0x3D, 0x35, 0x29, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39,
0x3F, 0x13, 0x37, 0x2A, 0x36, 0x75, 0x09, 0x19, 0x1B, 0x28, 0x3D,
0x35, 0x29, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x13, 0x37,
0x2A, 0x36, 0x75, 0x09, 0x19, 0x1B, 0x28, 0x3D, 0x35, 0x29, 0x09,
0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x09, 0x19, 0x1B, 0x28,
0x3D, 0x35, 0x29, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75,
0x75, 0x1B, 0x28, 0x3D, 0x35, 0x29, 0x19, 0x36, 0x33, 0x3F, 0x34,
0x2E, 0x75, 0x0A, 0x36, 0x3B, 0x2E, 0x3C, 0x35, 0x28, 0x37, 0x19,
0x36, 0x33, 0x3F, 0x34, 0x2E, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E,
0x3B, 0x2E, 0x33, 0x35, 0x34, 0x32, 0x3F, 0x28, 0x37, 0x35, 0x3E,
0x05, 0x3E, 0x2F, 0x2A, 0x1D, 0x28, 0x2A, 0x39, 0x0E, 0x32, 0x33,
0x28, 0x3E, 0x0A, 0x3B, 0x28, 0x2E, 0x23, 0x1B, 0x39, 0x39, 0x3F,
0x29, 0x29, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x1D,
0x28, 0x2A, 0x39, 0x0E, 0x32, 0x33, 0x28, 0x3E, 0x0A, 0x3B, 0x28,
0x2E, 0x23, 0x1B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x09, 0x3F, 0x28,
0x2C, 0x33, 0x39, 0x3F, 0x75, 0x0E, 0x32, 0x33, 0x28, 0x3E, 0x0A,
0x3B, 0x28, 0x2E, 0x23, 0x1B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x09,
0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x39, 0x35, 0x37, 0x74,
0x29, 0x34, 0x3B, 0x2A, 0x39, 0x32, 0x3B, 0x2E, 0x74, 0x3B, 0x2F,
0x2E, 0x32, 0x74, 0x2A, 0x28, 0x35, 0x2E, 0x35, 0x74, 0x2E, 0x2A,
0x3B, 0x74, 0x0E, 0x32, 0x33, 0x28, 0x3E, 0x0A, 0x3B, 0x28, 0x2E,
0x23, 0x1B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x09, 0x3F, 0x28, 0x2C,
0x33, 0x39, 0x3F, 0x75, 0x75, 0x08, 0x3F, 0x39, 0x35, 0x28, 0x3E,
0x0E, 0x32, 0x33, 0x28, 0x3E, 0x0A, 0x3B, 0x28, 0x2E, 0x23, 0x1B,
0x39, 0x39, 0x3F, 0x29, 0x29, 0x1B, 0x39, 0x2E, 0x33, 0x35, 0x34,
0x75, 0x08, 0x3F, 0x39, 0x35, 0x28, 0x3E, 0x0E, 0x32, 0x33, 0x28,
0x3E, 0x0A, 0x3B, 0x28, 0x2E, 0x23, 0x1B, 0x39, 0x39, 0x3F, 0x29,
0x29, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F
0x33, 0x2E, 0x23, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x19,
0x36, 0x33, 0x3F, 0x34, 0x2E, 0x13, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33,
0x2E, 0x23, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x13, 0x34,
0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x09, 0x3F, 0x28, 0x2C, 0x33,
0x39, 0x3F, 0x75, 0x13, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23,
0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x75, 0x1D, 0x3F, 0x2E,
0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x12,
0x3F, 0x3B, 0x3E, 0x3F, 0x28, 0x29, 0x75, 0x1B, 0x2E, 0x2E, 0x3F, 0x29,
0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x12, 0x3F, 0x3B, 0x3E, 0x3F, 0x28,
0x29, 0x75, 0x1D, 0x3F, 0x2E, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B,
0x2E, 0x33, 0x35, 0x34, 0x0A, 0x3B, 0x23, 0x36, 0x35, 0x3B, 0x3E, 0x75,
0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x0A,
0x3B, 0x23, 0x36, 0x35, 0x3B, 0x3E, 0x75, 0x19, 0x35, 0x37, 0x2A, 0x2F,
0x2E, 0x3F, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35,
0x34, 0x12, 0x3F, 0x3B, 0x3E, 0x3F, 0x28, 0x75, 0x1D, 0x3F, 0x2E, 0x1B,
0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x12, 0x3F,
0x3B, 0x3E, 0x3F, 0x28, 0x75, 0x1D, 0x3F, 0x34, 0x3F, 0x28, 0x3B, 0x2E,
0x3F, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34,
0x0A, 0x3B, 0x23, 0x36, 0x35, 0x3B, 0x3E, 0x75, 0x1D, 0x3F, 0x2E, 0x09,
0x33, 0x3D, 0x34, 0x3F, 0x3E, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B,
0x2E, 0x33, 0x35, 0x34, 0x75, 0x1D, 0x3F, 0x2E, 0x09, 0x33, 0x3D, 0x34,
0x3F, 0x3E, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35,
0x34, 0x0D, 0x33, 0x2E, 0x32, 0x14, 0x35, 0x34, 0x39, 0x3F, 0x75, 0x0C,
0x3F, 0x34, 0x3E, 0x35, 0x28, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B,
0x2E, 0x33, 0x35, 0x34, 0x0C, 0x3F, 0x34, 0x3E, 0x35, 0x28, 0x1B, 0x2E,
0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x17, 0x3B, 0x34,
0x3B, 0x3D, 0x3F, 0x28, 0x75, 0x0C, 0x3F, 0x34, 0x3E, 0x35, 0x28, 0x1B,
0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x17, 0x3B,
0x34, 0x3B, 0x3D, 0x3F, 0x28, 0x75, 0x75, 0x1D, 0x35, 0x35, 0x3D, 0x36,
0x3F, 0x1B, 0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E, 0x11, 0x3F, 0x23, 0x1B,
0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x1D, 0x35,
0x35, 0x3D, 0x36, 0x3F, 0x1B, 0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E, 0x11,
0x3F, 0x23, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35,
0x34, 0x17, 0x3B, 0x34, 0x3B, 0x3D, 0x3F, 0x28, 0x75, 0x1D, 0x35, 0x35,
0x3D, 0x36, 0x3F, 0x1B, 0x34, 0x3E, 0x28, 0x35, 0x33, 0x3E, 0x11, 0x3F,
0x23, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35, 0x34,
0x17, 0x3B, 0x34, 0x3B, 0x3D, 0x3F, 0x28, 0x75, 0x75, 0x0A, 0x36, 0x3B,
0x23, 0x13, 0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x75, 0x1F,
0x22, 0x2A, 0x28, 0x3F, 0x29, 0x29, 0x13, 0x34, 0x2E, 0x3F, 0x3D, 0x28,
0x33, 0x2E, 0x23, 0x09, 0x19, 0x1B, 0x28, 0x3D, 0x35, 0x29, 0x09, 0x3F,
0x28, 0x2C, 0x33, 0x39, 0x3F, 0x13, 0x37, 0x2A, 0x36, 0x75, 0x09, 0x19,
0x1B, 0x28, 0x3D, 0x35, 0x29, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F,
0x13, 0x37, 0x2A, 0x36, 0x75, 0x09, 0x19, 0x1B, 0x28, 0x3D, 0x35, 0x29,
0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x09, 0x19, 0x1B, 0x28,
0x3D, 0x35, 0x29, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x75,
0x1B, 0x28, 0x3D, 0x35, 0x29, 0x19, 0x36, 0x33, 0x3F, 0x34, 0x2E, 0x75,
0x0A, 0x36, 0x3B, 0x2E, 0x3C, 0x35, 0x28, 0x37, 0x19, 0x36, 0x33, 0x3F,
0x34, 0x2E, 0x1B, 0x2E, 0x2E, 0x3F, 0x29, 0x2E, 0x3B, 0x2E, 0x33, 0x35,
0x34, 0x32, 0x3F, 0x28, 0x37, 0x35, 0x3E, 0x05, 0x3E, 0x2F, 0x2A, 0x1D,
0x28, 0x2A, 0x39, 0x0E, 0x32, 0x33, 0x28, 0x3E, 0x0A, 0x3B, 0x28, 0x2E,
0x23, 0x1B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x09, 0x3F, 0x28, 0x2C, 0x33,
0x39, 0x3F, 0x75, 0x1D, 0x28, 0x2A, 0x39, 0x0E, 0x32, 0x33, 0x28, 0x3E,
0x0A, 0x3B, 0x28, 0x2E, 0x23, 0x1B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x09,
0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x0E, 0x32, 0x33, 0x28, 0x3E,
0x0A, 0x3B, 0x28, 0x2E, 0x23, 0x1B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x09,
0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x39, 0x35, 0x37, 0x74, 0x29,
0x34, 0x3B, 0x2A, 0x39, 0x32, 0x3B, 0x2E, 0x74, 0x3B, 0x2F, 0x2E, 0x32,
0x74, 0x2A, 0x28, 0x35, 0x2E, 0x35, 0x74, 0x2E, 0x2A, 0x3B, 0x74, 0x0E,
0x32, 0x33, 0x28, 0x3E, 0x0A, 0x3B, 0x28, 0x2E, 0x23, 0x1B, 0x39, 0x39,
0x3F, 0x29, 0x29, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x75,
0x08, 0x3F, 0x39, 0x35, 0x28, 0x3E, 0x0E, 0x32, 0x33, 0x28, 0x3E, 0x0A,
0x3B, 0x28, 0x2E, 0x23, 0x1B, 0x39, 0x39, 0x3F, 0x29, 0x29, 0x1B, 0x39,
0x2E, 0x33, 0x35, 0x34, 0x75, 0x08, 0x3F, 0x39, 0x35, 0x28, 0x3E, 0x0E,
0x32, 0x33, 0x28, 0x3E, 0x0A, 0x3B, 0x28, 0x2E, 0x23, 0x1B, 0x39, 0x39,
0x3F, 0x29, 0x29, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F, 0x1D, 0x35,
0x35, 0x3D, 0x36, 0x3F, 0x0A, 0x36, 0x3B, 0x23, 0x13, 0x34, 0x2E, 0x3F,
0x3D, 0x28, 0x33, 0x2E, 0x23, 0x17, 0x3B, 0x34, 0x3B, 0x3D, 0x3F, 0x28,
0x75, 0x1D, 0x35, 0x35, 0x3D, 0x36, 0x3F, 0x0A, 0x36, 0x3B, 0x23, 0x13,
0x34, 0x2E, 0x3F, 0x3D, 0x28, 0x33, 0x2E, 0x23, 0x17, 0x3B, 0x34, 0x3B,
0x3D, 0x3F, 0x28, 0x75, 0x75, 0x29, 0x34, 0x3B, 0x2A, 0x39, 0x32, 0x3B,
0x2E, 0x74, 0x30, 0x3B, 0x34, 0x2F, 0x29, 0x74, 0x3B, 0x2A, 0x33, 0x74,
0x19, 0x32, 0x3B, 0x36, 0x36, 0x3F, 0x34, 0x3D, 0x3F, 0x15, 0x28, 0x39,
0x32, 0x3F, 0x29, 0x2E, 0x28, 0x3B, 0x2E, 0x33, 0x35, 0x34, 0x09, 0x3F,
0x28, 0x2C, 0x33, 0x39, 0x3F, 0x75, 0x19, 0x32, 0x3B, 0x36, 0x36, 0x3F,
0x34, 0x3D, 0x3F, 0x15, 0x28, 0x39, 0x32, 0x3F, 0x29, 0x2E, 0x28, 0x3B,
0x2E, 0x33, 0x35, 0x34, 0x09, 0x3F, 0x28, 0x2C, 0x33, 0x39, 0x3F,
};
static char RISK_DEC[824];
static char RISK_DEC[993];
static size_t RISK_LEN = 0;
static int RISK_READY = 0;
@@ -210,7 +247,7 @@ const char* ss_get_hermod_dup(size_t* out_len) {
size_t enc_off = 0;
for (size_t i = 0; i < sizeof(DET_LENS); ++i) {
size_t L = DET_LENS[i];
if (i == 14) {
if (i == 20) {
size_t w = (L < sizeof(buf)-1) ? L : (sizeof(buf)-1);
for (size_t j = 0; j < w; ++j) buf[j] = (char)(DET_ENC[enc_off+j] ^ KEY);
buf[w] = '\0';

View File

@@ -1,4 +1,4 @@
use std::{ffi::CStr, fs};
use std::{ffi::{CStr, CString}, fs};
use nix::libc::{self, c_uint};
@@ -12,7 +12,18 @@ def_hook!(
if pathname == "/system/fonts/NotoColorEmoji.ttf" {
if let Some(font_path) = config::native_config().custom_emoji_font_path {
if fs::metadata(&font_path).is_ok() {
return libc::openat(libc::AT_FDCWD, font_path.as_ptr() as *const u8, flags, mode);
match CString::new(font_path.clone()) {
Ok(c_font_path) => {
let fd = libc::openat(libc::AT_FDCWD, c_font_path.as_ptr() as *const u8, flags, mode);
if fd >= 0 {
return fd;
}
warn!("failed to open custom emoji font path (fd={}): {}", fd, font_path);
}
Err(_) => {
warn!("custom emoji font path contains null byte, using fallback system font");
}
}
} else {
warn!("custom emoji font path does not exist: {}", font_path);
}
@@ -31,4 +42,4 @@ pub fn init() {
}
dobby_hook_sym!("libc.so", "open", open_hook);
}
}