Files
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

325 lines
10 KiB
Java
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.applovin.impl;
import android.graphics.PointF;
import android.text.Layout;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.UnderlineSpan;
import androidx.work.WorkRequest;
import com.applovin.exoplayer2.common.base.Ascii;
import com.applovin.impl.b5;
import com.applovin.impl.zk;
import com.facebook.internal.security.CertificateUtil;
import com.mbridge.msdk.playercommon.exoplayer2.C;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/* loaded from: classes.dex */
public final class xk extends ek {
private static final Pattern t = Pattern.compile("(?:(\\d+):)?(\\d+):(\\d+)[:.](\\d+)");
private final boolean o;
private final yk p;
private Map q;
private float r;
private float s;
private static float b(int i) {
if (i == 0) {
return 0.05f;
}
if (i != 1) {
return i != 2 ? -3.4028235E38f : 0.95f;
}
return 0.5f;
}
public xk(List list) {
super("SsaDecoder");
this.r = -3.4028235E38f;
this.s = -3.4028235E38f;
if (list == null || list.isEmpty()) {
this.o = false;
this.p = null;
return;
}
this.o = true;
String a = xp.a((byte[]) list.get(0));
b1.a(a.startsWith("Format:"));
this.p = (yk) b1.a(yk.a(a));
a(new bh((byte[]) list.get(1)));
}
private void b(bh bhVar) {
while (true) {
String l = bhVar.l();
if (l == null) {
return;
}
if (bhVar.a() != 0 && bhVar.g() == 91) {
return;
}
String[] split = l.split(CertificateUtil.DELIMITER);
if (split.length == 2) {
String lowerCase = Ascii.toLowerCase(split[0].trim());
lowerCase.hashCode();
if (lowerCase.equals("playresx")) {
this.r = Float.parseFloat(split[1].trim());
} else if (lowerCase.equals("playresy")) {
try {
this.s = Float.parseFloat(split[1].trim());
} catch (NumberFormatException unused) {
}
}
}
}
}
private static Layout.Alignment e(int i) {
switch (i) {
case -1:
return null;
case 0:
default:
pc.d("SsaDecoder", "Unknown alignment: " + i);
return null;
case 1:
case 4:
case 7:
return Layout.Alignment.ALIGN_NORMAL;
case 2:
case 5:
case 8:
return Layout.Alignment.ALIGN_CENTER;
case 3:
case 6:
case 9:
return Layout.Alignment.ALIGN_OPPOSITE;
}
}
private static int c(int i) {
switch (i) {
case -1:
break;
case 0:
default:
pc.d("SsaDecoder", "Unknown alignment: " + i);
break;
case 1:
case 2:
case 3:
break;
case 4:
case 5:
case 6:
break;
case 7:
case 8:
case 9:
break;
}
return Integer.MIN_VALUE;
}
private static Map c(bh bhVar) {
LinkedHashMap linkedHashMap = new LinkedHashMap();
zk.a aVar = null;
while (true) {
String l = bhVar.l();
if (l == null || (bhVar.a() != 0 && bhVar.g() == 91)) {
break;
}
if (l.startsWith("Format:")) {
aVar = zk.a.a(l);
} else if (l.startsWith("Style:")) {
if (aVar == null) {
pc.d("SsaDecoder", "Skipping 'Style:' line before 'Format:' line: " + l);
} else {
zk a = zk.a(l, aVar);
if (a != null) {
linkedHashMap.put(a.a, a);
}
}
}
}
return linkedHashMap;
}
private static int d(int i) {
switch (i) {
case -1:
break;
case 0:
default:
pc.d("SsaDecoder", "Unknown alignment: " + i);
break;
case 1:
case 4:
case 7:
break;
case 2:
case 5:
case 8:
break;
case 3:
case 6:
case 9:
break;
}
return Integer.MIN_VALUE;
}
private static int a(long j, List list, List list2) {
int i;
int size = list.size() - 1;
while (true) {
if (size < 0) {
i = 0;
break;
}
if (((Long) list.get(size)).longValue() == j) {
return size;
}
if (((Long) list.get(size)).longValue() < j) {
i = size + 1;
break;
}
size--;
}
list.add(i, Long.valueOf(j));
list2.add(i, i == 0 ? new ArrayList() : new ArrayList((Collection) list2.get(i - 1)));
return i;
}
private static b5 a(String str, zk zkVar, zk.b bVar, float f, float f2) {
SpannableString spannableString = new SpannableString(str);
b5.b a = new b5.b().a(spannableString);
if (zkVar != null) {
if (zkVar.c != null) {
spannableString.setSpan(new ForegroundColorSpan(zkVar.c.intValue()), 0, spannableString.length(), 33);
}
float f3 = zkVar.d;
if (f3 != -3.4028235E38f && f2 != -3.4028235E38f) {
a.b(f3 / f2, 1);
}
boolean z = zkVar.e;
if (z && zkVar.f) {
spannableString.setSpan(new StyleSpan(3), 0, spannableString.length(), 33);
} else if (z) {
spannableString.setSpan(new StyleSpan(1), 0, spannableString.length(), 33);
} else if (zkVar.f) {
spannableString.setSpan(new StyleSpan(2), 0, spannableString.length(), 33);
}
if (zkVar.g) {
spannableString.setSpan(new UnderlineSpan(), 0, spannableString.length(), 33);
}
if (zkVar.h) {
spannableString.setSpan(new StrikethroughSpan(), 0, spannableString.length(), 33);
}
}
int i = bVar.a;
if (i == -1) {
i = zkVar != null ? zkVar.b : -1;
}
a.b(e(i)).b(d(i)).a(c(i));
PointF pointF = bVar.b;
if (pointF != null && f2 != -3.4028235E38f && f != -3.4028235E38f) {
a.b(pointF.x / f);
a.a(bVar.b.y / f2, 0);
} else {
a.b(b(a.d()));
a.a(b(a.c()), 0);
}
return a.a();
}
@Override // com.applovin.impl.ek
public nl a(byte[] bArr, int i, boolean z) {
ArrayList arrayList = new ArrayList();
ArrayList arrayList2 = new ArrayList();
bh bhVar = new bh(bArr, i);
if (!this.o) {
a(bhVar);
}
a(bhVar, arrayList, arrayList2);
return new al(arrayList, arrayList2);
}
private void a(String str, yk ykVar, List list, List list2) {
int i;
b1.a(str.startsWith("Dialogue:"));
String[] split = str.substring(9).split(",", ykVar.e);
if (split.length != ykVar.e) {
pc.d("SsaDecoder", "Skipping dialogue line with fewer columns than format: " + str);
return;
}
long a = a(split[ykVar.a]);
if (a == C.TIME_UNSET) {
pc.d("SsaDecoder", "Skipping invalid timing: " + str);
return;
}
long a2 = a(split[ykVar.b]);
if (a2 == C.TIME_UNSET) {
pc.d("SsaDecoder", "Skipping invalid timing: " + str);
return;
}
Map map = this.q;
zk zkVar = (map == null || (i = ykVar.c) == -1) ? null : (zk) map.get(split[i].trim());
String str2 = split[ykVar.d];
b5 a3 = a(zk.b.d(str2).replace("\\N", "\n").replace("\\n", "\n").replace("\\h", " "), zkVar, zk.b.b(str2), this.r, this.s);
int a4 = a(a2, list2, list);
for (int a5 = a(a, list2, list); a5 < a4; a5++) {
((List) list.get(a5)).add(a3);
}
}
private void a(bh bhVar, List list, List list2) {
yk ykVar = this.o ? this.p : null;
while (true) {
String l = bhVar.l();
if (l == null) {
return;
}
if (l.startsWith("Format:")) {
ykVar = yk.a(l);
} else if (l.startsWith("Dialogue:")) {
if (ykVar == null) {
pc.d("SsaDecoder", "Skipping dialogue line before complete format: " + l);
} else {
a(l, ykVar, list, list2);
}
}
}
}
private void a(bh bhVar) {
while (true) {
String l = bhVar.l();
if (l == null) {
return;
}
if ("[Script Info]".equalsIgnoreCase(l)) {
b(bhVar);
} else if ("[V4+ Styles]".equalsIgnoreCase(l)) {
this.q = c(bhVar);
} else if ("[V4 Styles]".equalsIgnoreCase(l)) {
pc.c("SsaDecoder", "[V4 Styles] are not supported");
} else if ("[Events]".equalsIgnoreCase(l)) {
return;
}
}
}
private static long a(String str) {
Matcher matcher = t.matcher(str.trim());
return !matcher.matches() ? C.TIME_UNSET : (Long.parseLong((String) xp.a((Object) matcher.group(1))) * 3600000000L) + (Long.parseLong((String) xp.a((Object) matcher.group(2))) * 60000000) + (Long.parseLong((String) xp.a((Object) matcher.group(3))) * 1000000) + (Long.parseLong((String) xp.a((Object) matcher.group(4))) * WorkRequest.MIN_BACKOFF_MILLIS);
}
}