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
This commit is contained in:
2026-02-18 15:48:36 -08:00
parent c19eb3d7ff
commit c080f0d97f
26930 changed files with 2529574 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
package com.google.android.gms.auth.api.proxy;
import androidx.annotation.NonNull;
import com.google.android.gms.common.annotation.KeepForSdkWithMembers;
import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.common.internal.ShowFirstParty;
@ShowFirstParty
@KeepForSdkWithMembers
/* loaded from: classes2.dex */
public class AuthApiStatusCodes extends CommonStatusCodes {
@ShowFirstParty
public static final int AUTH_API_ACCESS_FORBIDDEN = 3001;
@ShowFirstParty
public static final int AUTH_API_CLIENT_ERROR = 3002;
@ShowFirstParty
public static final int AUTH_API_INVALID_CREDENTIALS = 3000;
@ShowFirstParty
public static final int AUTH_API_SERVER_ERROR = 3003;
@ShowFirstParty
public static final int AUTH_APP_CERT_ERROR = 3006;
@ShowFirstParty
public static final int AUTH_TOKEN_ERROR = 3004;
@ShowFirstParty
public static final int AUTH_URL_RESOLUTION = 3005;
private AuthApiStatusCodes() {
}
@NonNull
public static String getStatusCodeString(int i) {
switch (i) {
case 3000:
return "AUTH_API_INVALID_CREDENTIALS";
case 3001:
return "AUTH_API_ACCESS_FORBIDDEN";
case 3002:
return "AUTH_API_CLIENT_ERROR";
case AUTH_API_SERVER_ERROR /* 3003 */:
return "AUTH_API_SERVER_ERROR";
case AUTH_TOKEN_ERROR /* 3004 */:
return "AUTH_TOKEN_ERROR";
case 3005:
return "AUTH_URL_RESOLUTION";
case AUTH_APP_CERT_ERROR /* 3006 */:
return "AUTH_APP_CERT_ERROR";
default:
return CommonStatusCodes.getStatusCodeString(i);
}
}
}

View File

@@ -0,0 +1,42 @@
package com.google.android.gms.auth.api.proxy;
import androidx.annotation.NonNull;
import com.google.android.gms.common.annotation.KeepForSdk;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.PendingResult;
import com.google.android.gms.common.api.Result;
import com.google.android.gms.common.internal.ShowFirstParty;
@ShowFirstParty
@KeepForSdk
/* loaded from: classes2.dex */
public interface ProxyApi {
@ShowFirstParty
@KeepForSdk
public interface ProxyResult extends Result {
@NonNull
@KeepForSdk
ProxyResponse getResponse();
}
@ShowFirstParty
@KeepForSdk
public interface SpatulaHeaderResult extends Result {
@NonNull
@ShowFirstParty
@KeepForSdk
String getSpatulaHeader();
}
@NonNull
@Deprecated
@ShowFirstParty
@KeepForSdk
PendingResult<SpatulaHeaderResult> getSpatulaHeader(@NonNull GoogleApiClient googleApiClient);
@NonNull
@KeepForSdk
@Deprecated
PendingResult<ProxyResult> performProxyRequest(@NonNull GoogleApiClient googleApiClient, @NonNull ProxyRequest proxyRequest);
}

View File

@@ -0,0 +1,21 @@
package com.google.android.gms.auth.api.proxy;
import androidx.annotation.NonNull;
import com.google.android.gms.auth.api.AuthProxyOptions;
import com.google.android.gms.common.annotation.KeepForSdk;
import com.google.android.gms.common.api.HasApiKey;
import com.google.android.gms.common.internal.ShowFirstParty;
import com.google.android.gms.tasks.Task;
@ShowFirstParty
@KeepForSdk
/* loaded from: classes2.dex */
public interface ProxyClient extends HasApiKey<AuthProxyOptions> {
@NonNull
@KeepForSdk
Task<String> getSpatulaHeader();
@NonNull
@KeepForSdk
Task<ProxyResponse> performProxyRequest(@NonNull ProxyRequest proxyRequest);
}

View File

@@ -0,0 +1,158 @@
package com.google.android.gms.auth.api.proxy;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Patterns;
import androidx.annotation.NonNull;
import com.google.android.gms.common.annotation.KeepForSdkWithMembers;
import com.google.android.gms.common.internal.Preconditions;
import com.google.android.gms.common.internal.ShowFirstParty;
import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelWriter;
import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
@ShowFirstParty
@KeepForSdkWithMembers
@SafeParcelable.Class(creator = "ProxyRequestCreator")
/* loaded from: classes2.dex */
public class ProxyRequest extends AbstractSafeParcelable {
public static final int VERSION_CODE = 2;
@NonNull
@SafeParcelable.Field(id = 4)
public final byte[] body;
@SafeParcelable.Field(id = 2)
public final int httpMethod;
@SafeParcelable.Field(id = 3)
public final long timeoutMillis;
@NonNull
@SafeParcelable.Field(id = 1)
public final String url;
@SafeParcelable.VersionField(id = 1000)
final int zza;
@SafeParcelable.Field(id = 5)
final Bundle zzb;
@NonNull
public static final Parcelable.Creator<ProxyRequest> CREATOR = new zza();
public static final int HTTP_METHOD_GET = 0;
public static final int HTTP_METHOD_POST = 1;
public static final int HTTP_METHOD_PUT = 2;
public static final int HTTP_METHOD_DELETE = 3;
public static final int HTTP_METHOD_HEAD = 4;
public static final int HTTP_METHOD_OPTIONS = 5;
public static final int HTTP_METHOD_TRACE = 6;
public static final int HTTP_METHOD_PATCH = 7;
public static final int LAST_CODE = 7;
@ShowFirstParty
@KeepForSdkWithMembers
public static class Builder {
private final String zza;
private int zzb = ProxyRequest.HTTP_METHOD_GET;
private long zzc = 3000;
private byte[] zzd = new byte[0];
private final Bundle zze = new Bundle();
public Builder(@NonNull String str) {
Preconditions.checkNotEmpty(str);
if (Patterns.WEB_URL.matcher(str).matches()) {
this.zza = str;
return;
}
throw new IllegalArgumentException("The supplied url [ " + str + "] is not match Patterns.WEB_URL!");
}
@NonNull
public ProxyRequest build() {
if (this.zzd == null) {
this.zzd = new byte[0];
}
return new ProxyRequest(2, this.zza, this.zzb, this.zzc, this.zzd, this.zze);
}
@NonNull
public Builder putHeader(@NonNull String str, @NonNull String str2) {
Preconditions.checkNotEmpty(str, "Header name cannot be null or empty!");
Bundle bundle = this.zze;
if (str2 == null) {
str2 = "";
}
bundle.putString(str, str2);
return this;
}
@NonNull
public Builder setBody(@NonNull byte[] bArr) {
this.zzd = bArr;
return this;
}
@NonNull
public Builder setHttpMethod(int i) {
boolean z = false;
if (i >= 0 && i <= ProxyRequest.LAST_CODE) {
z = true;
}
Preconditions.checkArgument(z, "Unrecognized http method code.");
this.zzb = i;
return this;
}
@NonNull
public Builder setTimeoutMillis(long j) {
Preconditions.checkArgument(j >= 0, "The specified timeout must be non-negative.");
this.zzc = j;
return this;
}
}
@SafeParcelable.Constructor
public ProxyRequest(@SafeParcelable.Param(id = 1000) int i, @SafeParcelable.Param(id = 1) String str, @SafeParcelable.Param(id = 2) int i2, @SafeParcelable.Param(id = 3) long j, @SafeParcelable.Param(id = 4) byte[] bArr, @SafeParcelable.Param(id = 5) Bundle bundle) {
this.zza = i;
this.url = str;
this.httpMethod = i2;
this.timeoutMillis = j;
this.body = bArr;
this.zzb = bundle;
}
@NonNull
public Map<String, String> getHeaderMap() {
LinkedHashMap linkedHashMap = new LinkedHashMap(this.zzb.size());
for (String str : this.zzb.keySet()) {
String string = this.zzb.getString(str);
if (string == null) {
string = "";
}
linkedHashMap.put(str, string);
}
return Collections.unmodifiableMap(linkedHashMap);
}
@NonNull
public String toString() {
return "ProxyRequest[ url: " + this.url + ", method: " + this.httpMethod + " ]";
}
@Override // android.os.Parcelable
public void writeToParcel(@NonNull Parcel parcel, int i) {
int beginObjectHeader = SafeParcelWriter.beginObjectHeader(parcel);
SafeParcelWriter.writeString(parcel, 1, this.url, false);
SafeParcelWriter.writeInt(parcel, 2, this.httpMethod);
SafeParcelWriter.writeLong(parcel, 3, this.timeoutMillis);
SafeParcelWriter.writeByteArray(parcel, 4, this.body, false);
SafeParcelWriter.writeBundle(parcel, 5, this.zzb, false);
SafeParcelWriter.writeInt(parcel, 1000, this.zza);
SafeParcelWriter.finishObjectHeader(parcel, beginObjectHeader);
}
}

View File

@@ -0,0 +1,104 @@
package com.google.android.gms.auth.api.proxy;
import android.app.PendingIntent;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import com.google.android.gms.common.annotation.KeepForSdkWithMembers;
import com.google.android.gms.common.internal.ShowFirstParty;
import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelWriter;
import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@ShowFirstParty
@KeepForSdkWithMembers
@SafeParcelable.Class(creator = "ProxyResponseCreator")
/* loaded from: classes2.dex */
public class ProxyResponse extends AbstractSafeParcelable {
@NonNull
public static final Parcelable.Creator<ProxyResponse> CREATOR = new zzb();
public static final int STATUS_CODE_NO_CONNECTION = -1;
@NonNull
@SafeParcelable.Field(id = 5)
public final byte[] body;
@SafeParcelable.Field(id = 1)
public final int googlePlayServicesStatusCode;
@NonNull
@SafeParcelable.Field(id = 2)
public final PendingIntent recoveryAction;
@SafeParcelable.Field(id = 3)
public final int statusCode;
@SafeParcelable.VersionField(id = 1000)
final int zza;
@SafeParcelable.Field(id = 4)
final Bundle zzb;
@SafeParcelable.Constructor
public ProxyResponse(@SafeParcelable.Param(id = 1000) int i, @SafeParcelable.Param(id = 1) int i2, @SafeParcelable.Param(id = 2) PendingIntent pendingIntent, @SafeParcelable.Param(id = 3) int i3, @SafeParcelable.Param(id = 4) Bundle bundle, @SafeParcelable.Param(id = 5) byte[] bArr) {
this.zza = i;
this.googlePlayServicesStatusCode = i2;
this.statusCode = i3;
this.zzb = bundle;
this.body = bArr;
this.recoveryAction = pendingIntent;
}
@NonNull
public static ProxyResponse createErrorProxyResponse(int i, @NonNull PendingIntent pendingIntent, int i2, @NonNull Map<String, String> map, @NonNull byte[] bArr) {
return new ProxyResponse(1, i, pendingIntent, i2, zza(map), bArr);
}
private static Bundle zza(Map map) {
Bundle bundle = new Bundle();
if (map == null) {
return bundle;
}
for (Map.Entry entry : map.entrySet()) {
bundle.putString((String) entry.getKey(), (String) entry.getValue());
}
return bundle;
}
@NonNull
public Map<String, String> getHeaders() {
if (this.zzb == null) {
return Collections.emptyMap();
}
HashMap hashMap = new HashMap();
for (String str : this.zzb.keySet()) {
hashMap.put(str, this.zzb.getString(str));
}
return hashMap;
}
@Override // android.os.Parcelable
public void writeToParcel(@NonNull Parcel parcel, int i) {
int beginObjectHeader = SafeParcelWriter.beginObjectHeader(parcel);
SafeParcelWriter.writeInt(parcel, 1, this.googlePlayServicesStatusCode);
SafeParcelWriter.writeParcelable(parcel, 2, this.recoveryAction, i, false);
SafeParcelWriter.writeInt(parcel, 3, this.statusCode);
SafeParcelWriter.writeBundle(parcel, 4, this.zzb, false);
SafeParcelWriter.writeByteArray(parcel, 5, this.body, false);
SafeParcelWriter.writeInt(parcel, 1000, this.zza);
SafeParcelWriter.finishObjectHeader(parcel, beginObjectHeader);
}
public ProxyResponse(int i, @NonNull PendingIntent pendingIntent, int i2, @NonNull Bundle bundle, @NonNull byte[] bArr) {
this(1, i, pendingIntent, i2, bundle, bArr);
}
public ProxyResponse(int i, @NonNull Map<String, String> map, @NonNull byte[] bArr) {
this(1, 0, null, i, zza(map), bArr);
}
}

View File

@@ -0,0 +1,46 @@
package com.google.android.gms.auth.api.proxy;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelReader;
/* loaded from: classes2.dex */
public final class zza implements Parcelable.Creator {
@Override // android.os.Parcelable.Creator
public final /* bridge */ /* synthetic */ Object createFromParcel(Parcel parcel) {
int validateObjectHeader = SafeParcelReader.validateObjectHeader(parcel);
String str = null;
byte[] bArr = null;
Bundle bundle = null;
long j = 0;
int i = 0;
int i2 = 0;
while (parcel.dataPosition() < validateObjectHeader) {
int readHeader = SafeParcelReader.readHeader(parcel);
int fieldId = SafeParcelReader.getFieldId(readHeader);
if (fieldId == 1) {
str = SafeParcelReader.createString(parcel, readHeader);
} else if (fieldId == 2) {
i2 = SafeParcelReader.readInt(parcel, readHeader);
} else if (fieldId == 3) {
j = SafeParcelReader.readLong(parcel, readHeader);
} else if (fieldId == 4) {
bArr = SafeParcelReader.createByteArray(parcel, readHeader);
} else if (fieldId == 5) {
bundle = SafeParcelReader.createBundle(parcel, readHeader);
} else if (fieldId != 1000) {
SafeParcelReader.skipUnknownField(parcel, readHeader);
} else {
i = SafeParcelReader.readInt(parcel, readHeader);
}
}
SafeParcelReader.ensureAtEnd(parcel, validateObjectHeader);
return new ProxyRequest(i, str, i2, j, bArr, bundle);
}
@Override // android.os.Parcelable.Creator
public final /* synthetic */ Object[] newArray(int i) {
return new ProxyRequest[i];
}
}

View File

@@ -0,0 +1,47 @@
package com.google.android.gms.auth.api.proxy;
import android.app.PendingIntent;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.android.gms.common.internal.safeparcel.SafeParcelReader;
/* loaded from: classes2.dex */
public final class zzb implements Parcelable.Creator {
@Override // android.os.Parcelable.Creator
public final /* bridge */ /* synthetic */ Object createFromParcel(Parcel parcel) {
int validateObjectHeader = SafeParcelReader.validateObjectHeader(parcel);
PendingIntent pendingIntent = null;
Bundle bundle = null;
byte[] bArr = null;
int i = 0;
int i2 = 0;
int i3 = 0;
while (parcel.dataPosition() < validateObjectHeader) {
int readHeader = SafeParcelReader.readHeader(parcel);
int fieldId = SafeParcelReader.getFieldId(readHeader);
if (fieldId == 1) {
i2 = SafeParcelReader.readInt(parcel, readHeader);
} else if (fieldId == 2) {
pendingIntent = (PendingIntent) SafeParcelReader.createParcelable(parcel, readHeader, PendingIntent.CREATOR);
} else if (fieldId == 3) {
i3 = SafeParcelReader.readInt(parcel, readHeader);
} else if (fieldId == 4) {
bundle = SafeParcelReader.createBundle(parcel, readHeader);
} else if (fieldId == 5) {
bArr = SafeParcelReader.createByteArray(parcel, readHeader);
} else if (fieldId != 1000) {
SafeParcelReader.skipUnknownField(parcel, readHeader);
} else {
i = SafeParcelReader.readInt(parcel, readHeader);
}
}
SafeParcelReader.ensureAtEnd(parcel, validateObjectHeader);
return new ProxyResponse(i, i2, pendingIntent, i3, bundle, bArr);
}
@Override // android.os.Parcelable.Creator
public final /* synthetic */ Object[] newArray(int i) {
return new ProxyResponse[i];
}
}