Files
iTartanas/itranvias_code/com/google/android.gms/common/server/response/FastParser.java
T

660 lines
24 KiB
Java

package com.google.android.gms.common.server.response;
import android.util.Log;
import com.google.android.gms.common.server.response.FastJsonResponse;
import com.google.errorprone.annotations.ResultIgnorabilityUnspecified;
import io.ktor.util.date.GMTDateParser;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Map;
import java.util.Stack;
import kotlinx.serialization.json.internal.AbstractJsonLexerKt;
import okio.internal.Buffer;
/* JADX INFO: compiled from: com.google.android.gms:play-services-base@@18.4.0 */
/* JADX INFO: loaded from: classes2.dex */
public class FastParser<T extends FastJsonResponse> {
private static final char[] zaa = {AbstractJsonLexerKt.UNICODE_ESC, 'l', 'l'};
private static final char[] zab = {'r', AbstractJsonLexerKt.UNICODE_ESC, 'e'};
private static final char[] zac = {'r', AbstractJsonLexerKt.UNICODE_ESC, 'e', '\"'};
private static final char[] zad = {'a', 'l', GMTDateParser.SECONDS, 'e'};
private static final char[] zae = {'a', 'l', GMTDateParser.SECONDS, 'e', '\"'};
private static final char[] zaf = {'\n'};
private static final zai zag = new zaa();
private static final zai zah = new zab();
private static final zai zai = new zac();
private static final zai zaj = new zad();
private static final zai zak = new zae();
private static final zai zal = new zaf();
private static final zai zam = new zag();
private static final zai zan = new zah();
private final char[] zao = new char[1];
private final char[] zap = new char[32];
private final char[] zaq = new char[1024];
private final StringBuilder zar = new StringBuilder(32);
private final StringBuilder zas = new StringBuilder(1024);
private final Stack zat = new Stack();
/* JADX INFO: compiled from: com.google.android.gms:play-services-base@@18.4.0 */
public static class ParseException extends Exception {
public ParseException(String str) {
super(str);
}
public ParseException(String str, Throwable th) {
super("Error instantiating inner object", th);
}
public ParseException(Throwable th) {
super(th);
}
}
/* JADX WARN: Code restructure failed: missing block: B:14:0x002a, code lost:
throw new com.google.android.gms.common.server.response.FastParser.ParseException("Unexpected control character while reading string");
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct code enable 'Show inconsistent code' option in preferences
*/
private static final java.lang.String zaA(java.io.BufferedReader r8, char[] r9, java.lang.StringBuilder r10, char[] r11) throws com.google.android.gms.common.server.response.FastParser.ParseException, java.io.IOException {
/*
r0 = 0
r10.setLength(r0)
int r1 = r9.length
r8.mark(r1)
r1 = r0
r2 = r1
La:
int r3 = r8.read(r9)
r4 = -1
if (r3 == r4) goto L60
r4 = r0
L12:
if (r4 >= r3) goto L58
char r5 = r9[r4]
boolean r6 = java.lang.Character.isISOControl(r5)
if (r6 == 0) goto L2b
if (r11 == 0) goto L23
char r6 = r11[r0]
if (r6 != r5) goto L23
goto L2b
L23:
com.google.android.gms.common.server.response.FastParser$ParseException r8 = new com.google.android.gms.common.server.response.FastParser$ParseException
java.lang.String r9 = "Unexpected control character while reading string"
r8.<init>(r9)
throw r8
L2b:
int r6 = r4 + 1
r7 = 34
if (r5 != r7) goto L4d
if (r1 != 0) goto L55
r10.append(r9, r0, r4)
r8.reset()
long r0 = (long) r6
r8.skip(r0)
if (r2 == 0) goto L48
java.lang.String r8 = r10.toString()
java.lang.String r8 = com.google.android.gms.common.util.JsonUtils.unescapeString(r8)
return r8
L48:
java.lang.String r8 = r10.toString()
return r8
L4d:
r4 = 92
if (r5 != r4) goto L55
r1 = r1 ^ 1
r2 = 1
goto L56
L55:
r1 = r0
L56:
r4 = r6
goto L12
L58:
r10.append(r9, r0, r3)
int r3 = r9.length
r8.mark(r3)
goto La
L60:
com.google.android.gms.common.server.response.FastParser$ParseException r8 = new com.google.android.gms.common.server.response.FastParser$ParseException
java.lang.String r9 = "Unexpected EOF while parsing string"
r8.<init>(r9)
throw r8
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.gms.common.server.response.FastParser.zaA(java.io.BufferedReader, char[], java.lang.StringBuilder, char[]):java.lang.String");
}
private final char zai(BufferedReader bufferedReader) throws ParseException, IOException {
if (bufferedReader.read(this.zao) != -1) {
while (Character.isWhitespace(this.zao[0])) {
if (bufferedReader.read(this.zao) == -1) {
}
}
return this.zao[0];
}
return (char) 0;
}
/* JADX INFO: Access modifiers changed from: private */
public final double zaj(BufferedReader bufferedReader) throws ParseException, IOException {
int iZam = zam(bufferedReader, this.zaq);
if (iZam == 0) {
return 0.0d;
}
return Double.parseDouble(new String(this.zaq, 0, iZam));
}
/* JADX INFO: Access modifiers changed from: private */
public final float zak(BufferedReader bufferedReader) throws ParseException, IOException {
int iZam = zam(bufferedReader, this.zaq);
if (iZam == 0) {
return 0.0f;
}
return Float.parseFloat(new String(this.zaq, 0, iZam));
}
/* JADX INFO: Access modifiers changed from: private */
public final int zal(BufferedReader bufferedReader) throws ParseException, IOException {
int i;
int i2;
int iZam = zam(bufferedReader, this.zaq);
if (iZam == 0) {
return 0;
}
char[] cArr = this.zaq;
if (iZam <= 0) {
throw new ParseException("No number to parse");
}
char c = cArr[0];
int i3 = c == '-' ? Integer.MIN_VALUE : -2147483647;
int i4 = c == '-' ? 1 : 0;
if (i4 < iZam) {
i2 = i4 + 1;
int iDigit = Character.digit(cArr[i4], 10);
if (iDigit < 0) {
throw new ParseException("Unexpected non-digit character");
}
i = -iDigit;
} else {
i = 0;
i2 = i4;
}
while (i2 < iZam) {
int i5 = i2 + 1;
int iDigit2 = Character.digit(cArr[i2], 10);
if (iDigit2 < 0) {
throw new ParseException("Unexpected non-digit character");
}
if (i < -214748364) {
throw new ParseException("Number too large");
}
int i6 = i * 10;
if (i6 < i3 + iDigit2) {
throw new ParseException("Number too large");
}
i = i6 - iDigit2;
i2 = i5;
}
if (i4 == 0) {
return -i;
}
if (i2 > 1) {
return i;
}
throw new ParseException("No digits to parse");
}
@ResultIgnorabilityUnspecified
private final int zam(BufferedReader bufferedReader, char[] cArr) throws ParseException, IOException {
int i;
char cZai = zai(bufferedReader);
if (cZai == 0) {
throw new ParseException("Unexpected EOF");
}
if (cZai == ',') {
throw new ParseException("Missing value");
}
if (cZai == 'n') {
zax(bufferedReader, zaa);
return 0;
}
bufferedReader.mark(1024);
if (cZai == '\"') {
i = 0;
boolean z = false;
while (i < 1024 && bufferedReader.read(cArr, i, 1) != -1) {
char c = cArr[i];
if (Character.isISOControl(c)) {
throw new ParseException("Unexpected control character while reading string");
}
int i2 = i + 1;
if (c != '\"') {
if (c == '\\') {
z = !z;
}
i = i2;
} else if (!z) {
bufferedReader.reset();
bufferedReader.skip(i2);
return i;
}
z = false;
i = i2;
}
} else {
cArr[0] = cZai;
i = 1;
while (i < 1024 && bufferedReader.read(cArr, i, 1) != -1) {
char c2 = cArr[i];
if (c2 == '}' || c2 == ',' || Character.isWhitespace(c2) || cArr[i] == ']') {
bufferedReader.reset();
bufferedReader.skip(i - 1);
cArr[i] = 0;
return i;
}
i++;
}
}
if (i == 1024) {
throw new ParseException("Absurdly long value");
}
throw new ParseException("Unexpected EOF");
}
/* JADX INFO: Access modifiers changed from: private */
public final long zan(BufferedReader bufferedReader) throws ParseException, IOException {
long j;
int i;
int iZam = zam(bufferedReader, this.zaq);
if (iZam == 0) {
return 0L;
}
char[] cArr = this.zaq;
if (iZam <= 0) {
throw new ParseException("No number to parse");
}
char c = cArr[0];
long j2 = c == '-' ? Long.MIN_VALUE : -9223372036854775807L;
int i2 = c == '-' ? 1 : 0;
if (i2 < iZam) {
i = i2 + 1;
int iDigit = Character.digit(cArr[i2], 10);
if (iDigit < 0) {
throw new ParseException("Unexpected non-digit character");
}
j = -iDigit;
} else {
j = 0;
i = i2;
}
while (i < iZam) {
int i3 = i + 1;
int iDigit2 = Character.digit(cArr[i], 10);
if (iDigit2 < 0) {
throw new ParseException("Unexpected non-digit character");
}
if (j < Buffer.OVERFLOW_ZONE) {
throw new ParseException("Number too large");
}
long j3 = j * 10;
int i4 = iZam;
long j4 = iDigit2;
if (j3 < j2 + j4) {
throw new ParseException("Number too large");
}
j = j3 - j4;
iZam = i4;
i = i3;
}
if (i2 == 0) {
return -j;
}
if (i > 1) {
return j;
}
throw new ParseException("No digits to parse");
}
/* JADX INFO: Access modifiers changed from: private */
public final String zao(BufferedReader bufferedReader) throws ParseException, IOException {
return zap(bufferedReader, this.zap, this.zar, null);
}
private final String zap(BufferedReader bufferedReader, char[] cArr, StringBuilder sb, char[] cArr2) throws ParseException, IOException {
char cZai = zai(bufferedReader);
if (cZai == '\"') {
return zaA(bufferedReader, cArr, sb, cArr2);
}
if (cZai != 'n') {
throw new ParseException("Expected string");
}
zax(bufferedReader, zaa);
return null;
}
@ResultIgnorabilityUnspecified
private final String zaq(BufferedReader bufferedReader) throws ParseException, IOException {
this.zat.push(2);
char cZai = zai(bufferedReader);
if (cZai == '\"') {
this.zat.push(3);
String strZaA = zaA(bufferedReader, this.zap, this.zar, null);
zaw(3);
if (zai(bufferedReader) == ':') {
return strZaA;
}
throw new ParseException("Expected key/value separator");
}
if (cZai == ']') {
zaw(2);
zaw(1);
zaw(5);
return null;
}
if (cZai == '}') {
zaw(2);
return null;
}
throw new ParseException("Unexpected token: " + cZai);
}
private final String zar(BufferedReader bufferedReader) throws ParseException, IOException {
bufferedReader.mark(1024);
char cZai = zai(bufferedReader);
int i = 1;
if (cZai == '\"') {
if (bufferedReader.read(this.zao) == -1) {
throw new ParseException("Unexpected EOF while parsing string");
}
char c = this.zao[0];
boolean z = false;
do {
if (c == '\"') {
if (z) {
c = '\"';
z = true;
}
}
z = c == '\\' ? !z : false;
if (bufferedReader.read(this.zao) == -1) {
throw new ParseException("Unexpected EOF while parsing string");
}
c = this.zao[0];
} while (!Character.isISOControl(c));
throw new ParseException("Unexpected control character while reading string");
}
if (cZai == ',') {
throw new ParseException("Missing value");
}
if (cZai == '[') {
this.zat.push(5);
bufferedReader.mark(32);
if (zai(bufferedReader) == ']') {
zaw(5);
} else {
bufferedReader.reset();
boolean z2 = false;
boolean z3 = false;
while (i > 0) {
char cZai2 = zai(bufferedReader);
if (cZai2 == 0) {
throw new ParseException("Unexpected EOF while parsing array");
}
if (Character.isISOControl(cZai2)) {
throw new ParseException("Unexpected control character while reading array");
}
if (cZai2 == '\"') {
if (!z3) {
z2 = !z2;
}
cZai2 = '\"';
}
if (cZai2 == '[') {
if (!z2) {
i++;
}
cZai2 = '[';
}
if (cZai2 == ']' && !z2) {
i--;
}
z3 = (cZai2 == '\\' && z2) ? !z3 : false;
}
zaw(5);
}
} else if (cZai != '{') {
bufferedReader.reset();
zam(bufferedReader, this.zaq);
} else {
this.zat.push(1);
bufferedReader.mark(32);
char cZai3 = zai(bufferedReader);
if (cZai3 == '}') {
zaw(1);
} else {
if (cZai3 != '\"') {
throw new ParseException("Unexpected token " + cZai3);
}
bufferedReader.reset();
zaq(bufferedReader);
while (zar(bufferedReader) != null) {
}
zaw(1);
}
}
char cZai4 = zai(bufferedReader);
if (cZai4 == ',') {
zaw(2);
return zaq(bufferedReader);
}
if (cZai4 == '}') {
zaw(2);
return null;
}
throw new ParseException("Unexpected token " + cZai4);
}
/* JADX INFO: Access modifiers changed from: private */
public final BigDecimal zas(BufferedReader bufferedReader) throws ParseException, IOException {
int iZam = zam(bufferedReader, this.zaq);
if (iZam == 0) {
return null;
}
return new BigDecimal(new String(this.zaq, 0, iZam));
}
/* JADX INFO: Access modifiers changed from: private */
public final BigInteger zat(BufferedReader bufferedReader) throws ParseException, IOException {
int iZam = zam(bufferedReader, this.zaq);
if (iZam == 0) {
return null;
}
return new BigInteger(new String(this.zaq, 0, iZam));
}
private final ArrayList zau(BufferedReader bufferedReader, zai zaiVar) throws ParseException, IOException {
char cZai = zai(bufferedReader);
if (cZai == 'n') {
zax(bufferedReader, zaa);
return null;
}
if (cZai != '[') {
throw new ParseException("Expected start of array");
}
this.zat.push(5);
ArrayList arrayList = new ArrayList();
while (true) {
bufferedReader.mark(1024);
char cZai2 = zai(bufferedReader);
if (cZai2 == 0) {
throw new ParseException("Unexpected EOF");
}
if (cZai2 != ',') {
if (cZai2 == ']') {
zaw(5);
return arrayList;
}
bufferedReader.reset();
arrayList.add(zaiVar.zaa(this, bufferedReader));
}
}
}
private final ArrayList zav(BufferedReader bufferedReader, FastJsonResponse.Field field) throws ParseException, IOException {
ArrayList arrayList = new ArrayList();
char cZai = zai(bufferedReader);
if (cZai == ']') {
zaw(5);
return arrayList;
}
if (cZai == 'n') {
zax(bufferedReader, zaa);
zaw(5);
return null;
}
if (cZai != '{') {
throw new ParseException("Unexpected token: " + cZai);
}
this.zat.push(1);
while (true) {
try {
FastJsonResponse fastJsonResponseZad = field.zad();
if (!zaz(bufferedReader, fastJsonResponseZad)) {
return arrayList;
}
arrayList.add(fastJsonResponseZad);
char cZai2 = zai(bufferedReader);
if (cZai2 != ',') {
if (cZai2 == ']') {
zaw(5);
return arrayList;
}
throw new ParseException("Unexpected token: " + cZai2);
}
if (zai(bufferedReader) != '{') {
throw new ParseException("Expected start of next object in array");
}
this.zat.push(1);
} catch (IllegalAccessException e) {
throw new ParseException("Error instantiating inner object", e);
} catch (InstantiationException e2) {
throw new ParseException("Error instantiating inner object", e2);
}
}
}
private final void zaw(int i) throws ParseException {
if (this.zat.isEmpty()) {
throw new ParseException("Expected state " + i + " but had empty stack");
}
int iIntValue = ((Integer) this.zat.pop()).intValue();
if (iIntValue == i) {
return;
}
throw new ParseException("Expected state " + i + " but had " + iIntValue);
}
private final void zax(BufferedReader bufferedReader, char[] cArr) throws ParseException, IOException {
int i = 0;
while (true) {
int length = cArr.length;
if (i >= length) {
return;
}
int i2 = bufferedReader.read(this.zap, 0, length - i);
if (i2 == -1) {
throw new ParseException("Unexpected EOF");
}
for (int i3 = 0; i3 < i2; i3++) {
if (cArr[i3 + i] != this.zap[i3]) {
throw new ParseException("Unexpected character");
}
}
i += i2;
}
}
/* JADX INFO: Access modifiers changed from: private */
public final boolean zay(BufferedReader bufferedReader, boolean z) throws ParseException, IOException {
char cZai = zai(bufferedReader);
if (cZai == '\"') {
if (z) {
throw new ParseException("No boolean value found in string");
}
return zay(bufferedReader, true);
}
if (cZai == 'f') {
zax(bufferedReader, z ? zae : zad);
return false;
}
if (cZai == 'n') {
zax(bufferedReader, zaa);
return false;
}
if (cZai == 't') {
zax(bufferedReader, z ? zac : zab);
return true;
}
throw new ParseException("Unexpected token: " + cZai);
}
/* JADX WARN: Multi-variable type inference failed */
/* JADX WARN: Removed duplicated region for block: B:129:0x0266 A[SYNTHETIC] */
/* JADX WARN: Removed duplicated region for block: B:131:0x024d A[SYNTHETIC] */
@com.google.errorprone.annotations.ResultIgnorabilityUnspecified
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct code enable 'Show inconsistent code' option in preferences
*/
private final boolean zaz(java.io.BufferedReader r17, com.google.android.gms.common.server.response.FastJsonResponse r18) throws com.google.android.gms.common.server.response.FastParser.ParseException, java.io.IOException {
/*
Method dump skipped, instruction units count: 658
To view this dump change 'Code comments level' option to 'DEBUG'
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.gms.common.server.response.FastParser.zaz(java.io.BufferedReader, com.google.android.gms.common.server.response.FastJsonResponse):boolean");
}
public void parse(InputStream inputStream, T t) throws ParseException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream), 1024);
try {
try {
this.zat.push(0);
char cZai = zai(bufferedReader);
if (cZai == 0) {
throw new ParseException("No data to parse");
}
if (cZai == '[') {
this.zat.push(5);
Map<String, FastJsonResponse.Field<?, ?>> fieldMappings = t.getFieldMappings();
if (fieldMappings.size() != 1) {
throw new ParseException("Object array response class must have a single Field");
}
FastJsonResponse.Field<?, ?> value = fieldMappings.entrySet().iterator().next().getValue();
t.addConcreteTypeArrayInternal(value, value.zae, zav(bufferedReader, value));
} else {
if (cZai != '{') {
throw new ParseException("Unexpected token: " + cZai);
}
this.zat.push(1);
zaz(bufferedReader, t);
}
zaw(0);
} catch (IOException e) {
throw new ParseException(e);
}
} finally {
try {
bufferedReader.close();
} catch (IOException unused) {
Log.w("FastParser", "Failed to close reader while parsing.");
}
}
}
}