package com.alibaba.fastjson.parser; import androidx.constraintlayout.widget.ConstraintLayout; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONException; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.TimeZone; import kotlin.text.Typography; import okio.internal.BufferKt; import tech.rabbit.r1launcher.BuildConfig; import tech.rabbit.r1systemupdater.model.UpdateEngineErrorCodes; /* loaded from: classes2.dex */ public final class JSONLexer { public static final char[] CA; public static final int END = 4; public static final char EOI = 26; static final int[] IA; public static final int NOT_MATCH = -1; public static final int NOT_MATCH_NAME = -2; public static final int UNKNOWN = 0; private static boolean V6 = false; public static final int VALUE = 3; protected static final int[] digits; public static final boolean[] firstIdentifierFlags; public static final boolean[] identifierFlags; private static final ThreadLocal sbufLocal; protected int bp; public Calendar calendar; protected char ch; public boolean disableCircularReferenceDetect; protected int eofPos; protected boolean exp; public int features; protected long fieldHash; protected boolean hasSpecial; protected boolean isDouble; protected final int len; public Locale locale; public int matchStat; protected int np; protected int pos; protected char[] sbuf; protected int sp; protected String stringDefaultValue; protected final String text; public TimeZone timeZone; protected int token; static boolean checkDate(char c, char c2, char c3, char c4, char c5, char c6, int i, int i2) { if (c >= '1' && c <= '3' && c2 >= '0' && c2 <= '9' && c3 >= '0' && c3 <= '9' && c4 >= '0' && c4 <= '9') { if (c5 == '0') { if (c6 < '1' || c6 > '9') { return false; } } else if (c5 != '1' || (c6 != '0' && c6 != '1' && c6 != '2')) { return false; } if (i == 48) { return i2 >= 49 && i2 <= 57; } if (i != 49 && i != 50) { return i == 51 && (i2 == 48 || i2 == 49); } if (i2 >= 48 && i2 <= 57) { return true; } } return false; } /* JADX WARN: Code restructure failed: missing block: B:36:0x001d, code lost: if (r5 <= '4') goto L18; */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ static boolean checkTime(char r4, char r5, char r6, char r7, char r8, char r9) { /* r0 = 57 r1 = 0 r2 = 48 if (r4 != r2) goto Lc if (r5 < r2) goto Lb if (r5 <= r0) goto L20 Lb: return r1 Lc: r3 = 49 if (r4 != r3) goto L15 if (r5 < r2) goto L14 if (r5 <= r0) goto L20 L14: return r1 L15: r3 = 50 if (r4 != r3) goto L42 if (r5 < r2) goto L42 r4 = 52 if (r5 <= r4) goto L20 goto L42 L20: r4 = 53 r5 = 54 if (r6 < r2) goto L2d if (r6 > r4) goto L2d if (r7 < r2) goto L2c if (r7 <= r0) goto L32 L2c: return r1 L2d: if (r6 != r5) goto L42 if (r7 == r2) goto L32 return r1 L32: if (r8 < r2) goto L3b if (r8 > r4) goto L3b if (r9 < r2) goto L3a if (r9 <= r0) goto L40 L3a: return r1 L3b: if (r8 != r5) goto L42 if (r9 == r2) goto L40 return r1 L40: r4 = 1 return r4 L42: return r1 */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.checkTime(char, char, char, char, char, char):boolean"); } public final int token() { return this.token; } /* JADX WARN: Removed duplicated region for block: B:10:0x0030 A[LOOP:0: B:8:0x002c->B:10:0x0030, LOOP_END] */ /* JADX WARN: Removed duplicated region for block: B:15:0x0040 A[LOOP:1: B:13:0x003c->B:15:0x0040, LOOP_END] */ /* JADX WARN: Removed duplicated region for block: B:20:0x0050 A[LOOP:2: B:18:0x004c->B:20:0x0050, LOOP_END] */ /* JADX WARN: Removed duplicated region for block: B:24:0x006f A[LOOP:3: B:23:0x006d->B:24:0x006f, LOOP_END] */ /* JADX WARN: Removed duplicated region for block: B:29:0x0090 */ /* JADX WARN: Removed duplicated region for block: B:42:0x00a6 A[EDGE_INSN: B:42:0x00a6->B:43:0x00a6 BREAK A[LOOP:4: B:27:0x0085->B:33:0x00a2], SYNTHETIC] */ /* JADX WARN: Removed duplicated region for block: B:46:0x00af */ /* JADX WARN: Removed duplicated region for block: B:64:0x00cc A[SYNTHETIC] */ static { /* Method dump skipped, instructions count: 205 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.():void"); } public JSONLexer(String str) { this(str, JSON.DEFAULT_PARSER_FEATURE); } public JSONLexer(char[] cArr, int i) { this(cArr, i, JSON.DEFAULT_PARSER_FEATURE); } public JSONLexer(char[] cArr, int i, int i2) { this(new String(cArr, 0, i), i2); } public JSONLexer(String str, int i) { this.features = JSON.DEFAULT_PARSER_FEATURE; this.exp = false; this.isDouble = false; this.timeZone = JSON.defaultTimeZone; this.locale = JSON.defaultLocale; this.calendar = null; this.matchStat = 0; char[] cArr = sbufLocal.get(); this.sbuf = cArr; if (cArr == null) { this.sbuf = new char[512]; } this.features = i; this.text = str; int length = str.length(); this.len = length; int i2 = (-1) + 1; this.bp = i2; char charAt = i2 >= length ? EOI : str.charAt(i2); this.ch = charAt; if (charAt == 65279) { next(); } this.stringDefaultValue = (Feature.InitStringFieldAsEmpty.mask & i) != 0 ? "" : null; this.disableCircularReferenceDetect = (Feature.DisableCircularReferenceDetect.mask & i) != 0; } public void close() { char[] cArr = this.sbuf; if (cArr.length <= 8196) { sbufLocal.set(cArr); } this.sbuf = null; } public char next() { int i = this.bp + 1; this.bp = i; char charAt = i >= this.len ? EOI : this.text.charAt(i); this.ch = charAt; return charAt; } public final void config(Feature feature, boolean z) { if (z) { this.features |= feature.mask; } else { this.features &= ~feature.mask; } if (feature == Feature.InitStringFieldAsEmpty) { this.stringDefaultValue = z ? "" : null; } this.disableCircularReferenceDetect = (this.features & Feature.DisableCircularReferenceDetect.mask) != 0; } public final boolean isEnabled(Feature feature) { return (this.features & feature.mask) != 0; } public final void nextTokenWithChar(char c) { this.sp = 0; while (true) { char c2 = this.ch; if (c2 == c) { int i = this.bp + 1; this.bp = i; this.ch = i >= this.len ? EOI : this.text.charAt(i); nextToken(); return; } if (c2 == ' ' || c2 == '\n' || c2 == '\r' || c2 == '\t' || c2 == '\f' || c2 == '\b') { next(); } else { throw new JSONException("not match " + c + " - " + this.ch); } } } public final String numberString() { char charAt = this.text.charAt((this.np + this.sp) - 1); int i = this.sp; if (charAt == 'L' || charAt == 'S' || charAt == 'B' || charAt == 'F' || charAt == 'D') { i--; } return subString(this.np, i); } protected char charAt(int i) { return i >= this.len ? EOI : this.text.charAt(i); } /* JADX WARN: Code restructure failed: missing block: B:12:0x0027, code lost: scanNumber(); */ /* JADX WARN: Code restructure failed: missing block: B:13:0x002a, code lost: return; */ /* JADX WARN: Code restructure failed: missing block: B:55:0x00a1, code lost: if (r16.token == 20) goto L68; */ /* JADX WARN: Code restructure failed: missing block: B:56:0x00a3, code lost: r16.token = 20; r1 = r16.eofPos; r16.bp = r1; r16.pos = r1; */ /* JADX WARN: Code restructure failed: missing block: B:57:0x00ab, code lost: return; */ /* JADX WARN: Code restructure failed: missing block: B:59:0x00b3, code lost: throw new com.alibaba.fastjson.JSONException("EOF error"); */ /* JADX WARN: Code restructure failed: missing block: B:82:0x00fe, code lost: scanIdent(); */ /* JADX WARN: Code restructure failed: missing block: B:83:0x0101, code lost: return; */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public final void nextToken() { /* Method dump skipped, instructions count: 496 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.nextToken():void"); } /* JADX WARN: Can't fix incorrect switch cases order, some code will duplicate */ /* JADX WARN: Failed to find 'out' block for switch in B:12:0x0029. Please report as an issue. */ public final void nextToken(int i) { this.sp = 0; while (true) { if (i != 2) { char c = EOI; if (i == 4) { char c2 = this.ch; if (c2 == '\"') { this.pos = this.bp; scanString(); return; } if (c2 >= '0' && c2 <= '9') { this.pos = this.bp; scanNumber(); return; } else if (c2 == '{') { this.token = 12; int i2 = this.bp + 1; this.bp = i2; if (i2 < this.len) { c = this.text.charAt(i2); } this.ch = c; return; } } else if (i == 12) { char c3 = this.ch; if (c3 == '{') { this.token = 12; int i3 = this.bp + 1; this.bp = i3; if (i3 < this.len) { c = this.text.charAt(i3); } this.ch = c; return; } if (c3 == '[') { this.token = 14; int i4 = this.bp + 1; this.bp = i4; if (i4 < this.len) { c = this.text.charAt(i4); } this.ch = c; return; } } else { if (i == 18) { nextIdent(); return; } if (i != 20) { switch (i) { case 14: char c4 = this.ch; if (c4 == '[') { this.token = 14; next(); return; } else if (c4 == '{') { this.token = 12; next(); return; } break; case 15: if (this.ch == ']') { this.token = 15; next(); return; } break; case 16: char c5 = this.ch; if (c5 == ',') { this.token = 16; int i5 = this.bp + 1; this.bp = i5; if (i5 < this.len) { c = this.text.charAt(i5); } this.ch = c; return; } if (c5 == '}') { this.token = 13; int i6 = this.bp + 1; this.bp = i6; if (i6 < this.len) { c = this.text.charAt(i6); } this.ch = c; return; } if (c5 == ']') { this.token = 15; int i7 = this.bp + 1; this.bp = i7; if (i7 < this.len) { c = this.text.charAt(i7); } this.ch = c; return; } if (c5 == 26) { this.token = 20; return; } break; } } if (this.ch == 26) { this.token = 20; return; } } } else { char c6 = this.ch; if (c6 >= '0' && c6 <= '9') { this.pos = this.bp; scanNumber(); return; } if (c6 == '\"') { this.pos = this.bp; scanString(); return; } else if (c6 == '[') { this.token = 14; next(); return; } else if (c6 == '{') { this.token = 12; next(); return; } } char c7 = this.ch; if (c7 == ' ' || c7 == '\n' || c7 == '\r' || c7 == '\t' || c7 == '\f' || c7 == '\b') { next(); } else { nextToken(); return; } } } public final void nextIdent() { char c; while (true) { c = this.ch; if (c > ' ' || !(c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == '\f' || c == '\b')) { break; } else { next(); } } if (c == '_' || Character.isLetter(c)) { scanIdent(); } else { nextToken(); } } public final Number integerValue() throws NumberFormatException { char c; boolean z; long j; long j2; int i = this.np; int i2 = this.sp + i; int i3 = i2 - 1; char charAt = i3 >= this.len ? EOI : this.text.charAt(i3); if (charAt == 'B') { i2--; c = 'B'; } else if (charAt == 'L') { i2--; c = 'L'; } else if (charAt != 'S') { c = ' '; } else { i2--; c = 'S'; } int i4 = this.np; if (i4 < this.len && this.text.charAt(i4) == '-') { i++; j = Long.MIN_VALUE; z = true; } else { z = false; j = -9223372036854775807L; } if (i < i2) { j2 = -((i >= this.len ? EOI : this.text.charAt(i)) - '0'); i++; } else { j2 = 0; } while (i < i2) { int i5 = i + 1; int charAt2 = (i >= this.len ? EOI : this.text.charAt(i)) - '0'; if (j2 < BufferKt.OVERFLOW_ZONE) { return new BigInteger(numberString()); } long j3 = j2 * 10; long j4 = charAt2; if (j3 < j + j4) { return new BigInteger(numberString()); } j2 = j3 - j4; i = i5; } if (!z) { long j5 = -j2; if (j5 > 2147483647L || c == 'L') { return Long.valueOf(j5); } if (c == 'S') { return Short.valueOf((short) j5); } if (c == 'B') { return Byte.valueOf((byte) j5); } return Integer.valueOf((int) j5); } if (i <= this.np + 1) { throw new NumberFormatException(numberString()); } if (j2 < -2147483648L || c == 'L') { return Long.valueOf(j2); } if (c == 'S') { return Short.valueOf((short) j2); } if (c == 'B') { return Byte.valueOf((byte) j2); } return Integer.valueOf((int) j2); } public final String scanSymbol(SymbolTable symbolTable) { char c; while (true) { c = this.ch; if (c != ' ' && c != '\n' && c != '\r' && c != '\t' && c != '\f' && c != '\b') { break; } next(); } if (c == '\"') { return scanSymbol(symbolTable, Typography.quote); } if (c == '\'') { return scanSymbol(symbolTable, '\''); } if (c == '}') { next(); this.token = 13; return null; } if (c == ',') { next(); this.token = 16; return null; } if (c != 26) { return scanSymbolUnQuoted(symbolTable); } this.token = 20; return null; } public String scanSymbol(SymbolTable symbolTable, char c) { String readString; int i = this.bp + 1; int indexOf = this.text.indexOf(c, i); if (indexOf == -1) { throw new JSONException("unclosed str, " + info()); } int i2 = indexOf - i; char[] sub_chars = sub_chars(this.bp + 1, i2); boolean z = false; while (i2 > 0 && sub_chars[i2 - 1] == '\\') { int i3 = 1; for (int i4 = i2 - 2; i4 >= 0 && sub_chars[i4] == '\\'; i4--) { i3++; } if (i3 % 2 == 0) { break; } int indexOf2 = this.text.indexOf(c, indexOf + 1); int i5 = (indexOf2 - indexOf) + i2; if (i5 >= sub_chars.length) { int length = (sub_chars.length * 3) / 2; if (length < i5) { length = i5; } char[] cArr = new char[length]; System.arraycopy(sub_chars, 0, cArr, 0, sub_chars.length); sub_chars = cArr; } this.text.getChars(indexOf, indexOf2, sub_chars, i2); indexOf = indexOf2; i2 = i5; z = true; } if (z) { readString = readString(sub_chars, i2); } else { int i6 = 0; for (int i7 = 0; i7 < i2; i7++) { char c2 = sub_chars[i7]; i6 = (i6 * 31) + c2; if (c2 == '\\') { z = true; } } if (z) { readString = readString(sub_chars, i2); } else { readString = i2 < 20 ? symbolTable.addSymbol(sub_chars, 0, i2, i6) : new String(sub_chars, 0, i2); } } int i8 = indexOf + 1; this.bp = i8; this.ch = i8 >= this.len ? EOI : this.text.charAt(i8); return readString; } /* JADX WARN: Failed to find 'out' block for switch in B:26:0x0040. Please report as an issue. */ /* JADX WARN: Failed to find 'out' block for switch in B:27:0x0043. Please report as an issue. */ private static String readString(char[] cArr, int i) { int i2; int i3; char[] cArr2 = new char[i]; int i4 = 0; int i5 = 0; while (i4 < i) { char c = cArr[i4]; if (c != '\\') { cArr2[i5] = c; i5++; } else { int i6 = i4 + 1; char c2 = cArr[i6]; if (c2 == '\"') { i2 = i5 + 1; cArr2[i5] = Typography.quote; } else if (c2 != '\'') { if (c2 != 'F') { if (c2 == '\\') { i2 = i5 + 1; cArr2[i5] = '\\'; } else if (c2 == 'b') { i2 = i5 + 1; cArr2[i5] = '\b'; } else if (c2 != 'f') { if (c2 == 'n') { i2 = i5 + 1; cArr2[i5] = '\n'; } else if (c2 != 'r') { if (c2 != 'x') { switch (c2) { case '/': i2 = i5 + 1; cArr2[i5] = '/'; break; case '0': i2 = i5 + 1; cArr2[i5] = 0; break; case ConstraintLayout.LayoutParams.Table.LAYOUT_EDITOR_ABSOLUTEX /* 49 */: i2 = i5 + 1; cArr2[i5] = 1; break; case '2': i2 = i5 + 1; cArr2[i5] = 2; break; case ConstraintLayout.LayoutParams.Table.LAYOUT_CONSTRAINT_TAG /* 51 */: i2 = i5 + 1; cArr2[i5] = 3; break; case UpdateEngineErrorCodes.UPDATED_BUT_NOT_ACTIVE /* 52 */: i2 = i5 + 1; cArr2[i5] = 4; break; case '5': i2 = i5 + 1; cArr2[i5] = 5; break; case '6': i2 = i5 + 1; cArr2[i5] = 6; break; case '7': i2 = i5 + 1; cArr2[i5] = 7; break; default: switch (c2) { case 't': i2 = i5 + 1; cArr2[i5] = '\t'; break; case 'u': i3 = i5 + 1; i4 += 5; cArr2[i5] = (char) Integer.parseInt(new String(new char[]{cArr[i4 + 2], cArr[i4 + 3], cArr[i4 + 4], cArr[i4]}), 16); break; case 'v': i2 = i5 + 1; cArr2[i5] = 11; break; default: throw new JSONException("unclosed.str.lit"); } } } else { i3 = i5 + 1; int[] iArr = digits; int i7 = iArr[cArr[i4 + 2]] * 16; i4 += 3; cArr2[i5] = (char) (i7 + iArr[cArr[i4]]); } i5 = i3; } else { i2 = i5 + 1; cArr2[i5] = '\r'; } } } i2 = i5 + 1; cArr2[i5] = '\f'; } else { i2 = i5 + 1; cArr2[i5] = '\''; } i5 = i2; i4 = i6; } i4++; } return new String(cArr2, 0, i5); } public String info() { StringBuilder append = new StringBuilder("pos ").append(this.bp).append(", json : "); int i = this.len; String str = this.text; if (i >= 65536) { str = str.substring(0, 65536); } return append.append(str).toString(); } protected void skipComment() { next(); char c = this.ch; if (c != '/') { if (c == '*') { next(); while (true) { char c2 = this.ch; if (c2 == 26) { return; } if (c2 == '*') { next(); if (this.ch == '/') { next(); return; } } else { next(); } } } else { throw new JSONException("invalid comment"); } } do { next(); } while (this.ch != '\n'); next(); } public final String scanSymbolUnQuoted(SymbolTable symbolTable) { int i = this.ch; boolean[] zArr = firstIdentifierFlags; if (i < zArr.length && !zArr[i]) { throw new JSONException("illegal identifier : " + this.ch + ", " + info()); } this.np = this.bp; this.sp = 1; while (true) { char next = next(); boolean[] zArr2 = identifierFlags; if (next < zArr2.length && !zArr2[next]) { break; } i = (i * 31) + next; this.sp++; } this.ch = charAt(this.bp); this.token = 18; if (this.sp == 4 && this.text.startsWith("null", this.np)) { return null; } return symbolTable.addSymbol(this.text, this.np, this.sp, i); } public final void scanString() { char c = this.ch; int i = this.bp + 1; int indexOf = this.text.indexOf(c, i); if (indexOf == -1) { throw new JSONException("unclosed str, " + info()); } int i2 = indexOf - i; char[] sub_chars = sub_chars(this.bp + 1, i2); boolean z = false; while (i2 > 0 && sub_chars[i2 - 1] == '\\') { int i3 = 1; for (int i4 = i2 - 2; i4 >= 0 && sub_chars[i4] == '\\'; i4--) { i3++; } if (i3 % 2 == 0) { break; } int indexOf2 = this.text.indexOf(c, indexOf + 1); int i5 = (indexOf2 - indexOf) + i2; if (i5 >= sub_chars.length) { int length = (sub_chars.length * 3) / 2; if (length < i5) { length = i5; } char[] cArr = new char[length]; System.arraycopy(sub_chars, 0, cArr, 0, sub_chars.length); sub_chars = cArr; } this.text.getChars(indexOf, indexOf2, sub_chars, i2); indexOf = indexOf2; i2 = i5; z = true; } if (!z) { for (int i6 = 0; i6 < i2; i6++) { if (sub_chars[i6] == '\\') { z = true; } } } this.sbuf = sub_chars; this.sp = i2; this.np = this.bp; this.hasSpecial = z; int i7 = indexOf + 1; this.bp = i7; this.ch = i7 >= this.len ? EOI : this.text.charAt(i7); this.token = 4; } public String scanStringValue(char c) { String str; int i = this.bp + 1; int indexOf = this.text.indexOf(c, i); if (indexOf == -1) { throw new JSONException("unclosed str, " + info()); } if (V6) { str = this.text.substring(i, indexOf); } else { int i2 = indexOf - i; str = new String(sub_chars(this.bp + 1, i2), 0, i2); } if (str.indexOf(92) != -1) { while (true) { int i3 = 0; for (int i4 = indexOf - 1; i4 >= 0 && this.text.charAt(i4) == '\\'; i4--) { i3++; } if (i3 % 2 == 0) { break; } indexOf = this.text.indexOf(c, indexOf + 1); } int i5 = indexOf - i; str = readString(sub_chars(this.bp + 1, i5), i5); } int i6 = indexOf + 1; this.bp = i6; this.ch = i6 >= this.len ? EOI : this.text.charAt(i6); return str; } public final int intValue() { int i; boolean z; int i2 = this.np; int i3 = this.sp + i2; int i4 = 0; if (i2 < this.len && this.text.charAt(i2) == '-') { i2++; i = Integer.MIN_VALUE; z = true; } else { i = -2147483647; z = false; } if (i2 < i3) { i4 = -((i2 >= this.len ? (char) 26 : this.text.charAt(i2)) - '0'); i2++; } while (i2 < i3) { int i5 = i2 + 1; char charAt = i2 >= this.len ? (char) 26 : this.text.charAt(i2); if (charAt == 'L' || charAt == 'S' || charAt == 'B') { i2 = i5; break; } int i6 = charAt - '0'; if (i4 < -214748364) { throw new NumberFormatException(numberString()); } int i7 = i4 * 10; if (i7 < i + i6) { throw new NumberFormatException(numberString()); } i4 = i7 - i6; i2 = i5; } if (!z) { return -i4; } if (i2 > this.np + 1) { return i4; } throw new NumberFormatException(numberString()); } public byte[] bytesValue() { return decodeFast(this.text, this.np + 1, this.sp); } private void scanIdent() { this.np = this.bp - 1; this.hasSpecial = false; do { this.sp++; next(); } while (Character.isLetterOrDigit(this.ch)); String stringVal = stringVal(); if (stringVal.equals("null")) { this.token = 8; return; } if (stringVal.equals("true")) { this.token = 6; return; } if (stringVal.equals("false")) { this.token = 7; return; } if (stringVal.equals("new")) { this.token = 9; return; } if (stringVal.equals("undefined")) { this.token = 23; return; } if (stringVal.equals("Set")) { this.token = 21; } else if (stringVal.equals("TreeSet")) { this.token = 22; } else { this.token = 18; } } public final String stringVal() { if (this.hasSpecial) { return readString(this.sbuf, this.sp); } return subString(this.np + 1, this.sp); } private final String subString(int i, int i2) { char[] cArr = this.sbuf; if (i2 < cArr.length) { this.text.getChars(i, i + i2, cArr, 0); return new String(this.sbuf, 0, i2); } char[] cArr2 = new char[i2]; this.text.getChars(i, i2 + i, cArr2, 0); return new String(cArr2); } final char[] sub_chars(int i, int i2) { char[] cArr = this.sbuf; if (i2 < cArr.length) { this.text.getChars(i, i2 + i, cArr, 0); return this.sbuf; } char[] cArr2 = new char[i2]; this.sbuf = cArr2; this.text.getChars(i, i2 + i, cArr2, 0); return cArr2; } public final boolean isBlankInput() { int i = 0; while (true) { char charAt = charAt(i); if (charAt == 26) { return true; } if (charAt > ' ' || !(charAt == ' ' || charAt == '\n' || charAt == '\r' || charAt == '\t' || charAt == '\f' || charAt == '\b')) { break; } i++; } return false; } /* JADX INFO: Access modifiers changed from: package-private */ public final void skipWhitespace() { while (true) { char c = this.ch; if (c > '/') { return; } if (c == ' ' || c == '\r' || c == '\n' || c == '\t' || c == '\f' || c == '\b') { next(); } else if (c != '/') { return; } else { skipComment(); } } } public final void scanNumber() { char c; char c2; int i = this.bp; this.np = i; this.exp = false; if (this.ch == '-') { this.sp++; int i2 = i + 1; this.bp = i2; this.ch = i2 >= this.len ? (char) 26 : this.text.charAt(i2); } while (true) { c = this.ch; if (c < '0' || c > '9') { break; } this.sp++; int i3 = this.bp + 1; this.bp = i3; this.ch = i3 >= this.len ? (char) 26 : this.text.charAt(i3); } this.isDouble = false; if (c == '.') { this.sp++; int i4 = this.bp + 1; this.bp = i4; this.ch = i4 >= this.len ? (char) 26 : this.text.charAt(i4); this.isDouble = true; while (true) { char c3 = this.ch; if (c3 < '0' || c3 > '9') { break; } this.sp++; int i5 = this.bp + 1; this.bp = i5; this.ch = i5 >= this.len ? (char) 26 : this.text.charAt(i5); } } char c4 = this.ch; if (c4 == 'L') { this.sp++; next(); } else if (c4 == 'S') { this.sp++; next(); } else if (c4 == 'B') { this.sp++; next(); } else if (c4 == 'F') { this.sp++; next(); this.isDouble = true; } else if (c4 == 'D') { this.sp++; next(); this.isDouble = true; } else if (c4 == 'e' || c4 == 'E') { this.sp++; int i6 = this.bp + 1; this.bp = i6; char charAt = i6 >= this.len ? (char) 26 : this.text.charAt(i6); this.ch = charAt; if (charAt == '+' || charAt == '-') { this.sp++; int i7 = this.bp + 1; this.bp = i7; this.ch = i7 >= this.len ? (char) 26 : this.text.charAt(i7); } while (true) { c2 = this.ch; if (c2 < '0' || c2 > '9') { break; } this.sp++; int i8 = this.bp + 1; this.bp = i8; this.ch = i8 >= this.len ? (char) 26 : this.text.charAt(i8); } if (c2 == 'D' || c2 == 'F') { this.sp++; next(); } this.exp = true; this.isDouble = true; } if (this.isDouble) { this.token = 3; } else { this.token = 2; } } public boolean scanBoolean() { int i; boolean z = false; if (this.text.startsWith("false", this.bp)) { i = 5; } else if (this.text.startsWith("true", this.bp)) { i = 4; z = true; } else { char c = this.ch; if (c == '1') { i = 1; z = true; } else { if (c != '0') { this.matchStat = -1; return false; } i = 1; } } int i2 = this.bp + i; this.bp = i2; this.ch = charAt(i2); return z; } /* JADX WARN: Removed duplicated region for block: B:108:0x026d A[Catch: NumberFormatException -> 0x02b3, TryCatch #0 {NumberFormatException -> 0x02b3, blocks: (B:101:0x025b, B:106:0x0269, B:108:0x026d, B:112:0x027e, B:113:0x0275, B:115:0x027c, B:121:0x0285, B:124:0x028b, B:126:0x0290, B:129:0x0296, B:131:0x0266, B:132:0x029b, B:134:0x02a5, B:136:0x02aa), top: B:98:0x0257 }] */ /* JADX WARN: Removed duplicated region for block: B:121:0x0285 A[Catch: NumberFormatException -> 0x02b3, TryCatch #0 {NumberFormatException -> 0x02b3, blocks: (B:101:0x025b, B:106:0x0269, B:108:0x026d, B:112:0x027e, B:113:0x0275, B:115:0x027c, B:121:0x0285, B:124:0x028b, B:126:0x0290, B:129:0x0296, B:131:0x0266, B:132:0x029b, B:134:0x02a5, B:136:0x02aa), top: B:98:0x0257 }] */ /* JADX WARN: Removed duplicated region for block: B:126:0x0290 A[Catch: NumberFormatException -> 0x02b3, TryCatch #0 {NumberFormatException -> 0x02b3, blocks: (B:101:0x025b, B:106:0x0269, B:108:0x026d, B:112:0x027e, B:113:0x0275, B:115:0x027c, B:121:0x0285, B:124:0x028b, B:126:0x0290, B:129:0x0296, B:131:0x0266, B:132:0x029b, B:134:0x02a5, B:136:0x02aa), top: B:98:0x0257 }] */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public final java.lang.Number scanNumberValue() { /* Method dump skipped, instructions count: 729 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.scanNumberValue():java.lang.Number"); } /* JADX WARN: Code restructure failed: missing block: B:30:0x00be, code lost: if (r0 != false) goto L37; */ /* JADX WARN: Code restructure failed: missing block: B:32:0x00c1, code lost: return -r4; */ /* JADX WARN: Code restructure failed: missing block: B:33:?, code lost: return r4; */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public final long scanLongValue() { /* r12 = this; r0 = 0 r12.np = r0 char r1 = r12.ch r2 = 45 r3 = 1 if (r1 != r2) goto L3b r12.np = r3 int r0 = r12.bp int r0 = r0 + r3 r12.bp = r0 int r1 = r12.len if (r0 >= r1) goto L22 java.lang.String r1 = r12.text char r0 = r1.charAt(r0) r12.ch = r0 r0 = -9223372036854775808 r1 = r0 r0 = r3 goto L40 L22: com.alibaba.fastjson.JSONException r0 = new com.alibaba.fastjson.JSONException java.lang.StringBuilder r1 = new java.lang.StringBuilder java.lang.String r2 = "syntax error, " r1.(r2) java.lang.String r12 = r12.info() java.lang.StringBuilder r12 = r1.append(r12) java.lang.String r12 = r12.toString() r0.(r12) throw r0 L3b: r1 = -9223372036854775807(0x8000000000000001, double:-4.9E-324) L40: r4 = 0 L42: char r6 = r12.ch r7 = 48 if (r6 < r7) goto Lbe r7 = 57 if (r6 > r7) goto Lbe int r6 = r6 + (-48) r7 = -922337203685477580(0xf333333333333334, double:-8.390303882365713E246) int r7 = (r4 > r7 ? 1 : (r4 == r7 ? 0 : -1)) java.lang.String r8 = ", " java.lang.String r9 = "error long value, " if (r7 < 0) goto L9f r10 = 10 long r4 = r4 * r10 long r6 = (long) r6 long r10 = r1 + r6 int r10 = (r4 > r10 ? 1 : (r4 == r10 ? 0 : -1)) if (r10 < 0) goto L80 long r4 = r4 - r6 int r6 = r12.np int r6 = r6 + r3 r12.np = r6 int r6 = r12.bp int r6 = r6 + r3 r12.bp = r6 int r7 = r12.len if (r6 < r7) goto L77 r6 = 26 goto L7d L77: java.lang.String r7 = r12.text char r6 = r7.charAt(r6) L7d: r12.ch = r6 goto L42 L80: com.alibaba.fastjson.JSONException r0 = new com.alibaba.fastjson.JSONException java.lang.StringBuilder r1 = new java.lang.StringBuilder r1.(r9) java.lang.StringBuilder r1 = r1.append(r4) java.lang.StringBuilder r1 = r1.append(r8) java.lang.String r12 = r12.info() java.lang.StringBuilder r12 = r1.append(r12) java.lang.String r12 = r12.toString() r0.(r12) throw r0 L9f: com.alibaba.fastjson.JSONException r0 = new com.alibaba.fastjson.JSONException java.lang.StringBuilder r1 = new java.lang.StringBuilder r1.(r9) java.lang.StringBuilder r1 = r1.append(r4) java.lang.StringBuilder r1 = r1.append(r8) java.lang.String r12 = r12.info() java.lang.StringBuilder r12 = r1.append(r12) java.lang.String r12 = r12.toString() r0.(r12) throw r0 Lbe: if (r0 != 0) goto Lc1 long r4 = -r4 Lc1: return r4 */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.scanLongValue():long"); } /* JADX WARN: Removed duplicated region for block: B:30:0x0077 */ /* JADX WARN: Removed duplicated region for block: B:35:0x0087 */ /* JADX WARN: Removed duplicated region for block: B:8:0x002d */ /* JADX WARN: Unsupported multi-entry loop pattern (BACK_EDGE: B:21:0x005e -> B:6:0x0027). Please report as a decompilation issue!!! */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public final long longValue() throws java.lang.NumberFormatException { /* r13 = this; int r0 = r13.np int r1 = r13.sp int r1 = r1 + r0 char r2 = r13.charAt(r0) r3 = 45 r4 = 1 if (r2 != r3) goto L15 int r0 = r0 + 1 r2 = -9223372036854775808 r5 = r2 r2 = r4 goto L1b L15: r2 = 0 r5 = -9223372036854775807(0x8000000000000001, double:-4.9E-324) L1b: if (r0 >= r1) goto L29 int r3 = r0 + 1 char r0 = r13.charAt(r0) int r0 = r0 + (-48) int r0 = -r0 long r7 = (long) r0 L27: r0 = r3 goto L2b L29: r7 = 0 L2b: if (r0 >= r1) goto L75 int r3 = r0 + 1 int r9 = r13.len if (r0 < r9) goto L36 r0 = 26 goto L3c L36: java.lang.String r9 = r13.text char r0 = r9.charAt(r0) L3c: r9 = 76 if (r0 == r9) goto L74 r9 = 83 if (r0 == r9) goto L74 r9 = 66 if (r0 != r9) goto L49 goto L74 L49: int r0 = r0 + (-48) r9 = -922337203685477580(0xf333333333333334, double:-8.390303882365713E246) int r9 = (r7 > r9 ? 1 : (r7 == r9 ? 0 : -1)) if (r9 < 0) goto L6a r9 = 10 long r7 = r7 * r9 long r9 = (long) r0 long r11 = r5 + r9 int r0 = (r7 > r11 ? 1 : (r7 == r11 ? 0 : -1)) if (r0 < 0) goto L60 long r7 = r7 - r9 goto L27 L60: java.lang.NumberFormatException r0 = new java.lang.NumberFormatException java.lang.String r13 = r13.numberString() r0.(r13) throw r0 L6a: java.lang.NumberFormatException r0 = new java.lang.NumberFormatException java.lang.String r13 = r13.numberString() r0.(r13) throw r0 L74: r0 = r3 L75: if (r2 == 0) goto L87 int r1 = r13.np int r1 = r1 + r4 if (r0 <= r1) goto L7d return r7 L7d: java.lang.NumberFormatException r0 = new java.lang.NumberFormatException java.lang.String r13 = r13.numberString() r0.(r13) throw r0 L87: long r0 = -r7 return r0 */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.longValue():long"); } public final Number decimalValue(boolean z) { char[] cArr; boolean z2; int i = (this.np + this.sp) - 1; char charAt = i >= this.len ? EOI : this.text.charAt(i); try { if (charAt == 'F') { return Float.valueOf(Float.parseFloat(numberString())); } if (charAt == 'D') { return Double.valueOf(Double.parseDouble(numberString())); } if (z) { return decimalValue(); } char charAt2 = this.text.charAt((this.np + this.sp) - 1); int i2 = this.sp; if (charAt2 == 'L' || charAt2 == 'S' || charAt2 == 'B' || charAt2 == 'F' || charAt2 == 'D') { i2--; } int i3 = this.np; char[] cArr2 = this.sbuf; int i4 = 0; if (i2 < cArr2.length) { this.text.getChars(i3, i3 + i2, cArr2, 0); cArr = this.sbuf; } else { char[] cArr3 = new char[i2]; this.text.getChars(i3, i3 + i2, cArr3, 0); cArr = cArr3; } if (i2 <= 9 && !this.exp) { char c = cArr[0]; int i5 = 2; if (c == '-') { c = cArr[1]; z2 = true; } else { if (c == '+') { c = cArr[1]; } else { i5 = 1; } z2 = false; } int i6 = c - '0'; while (i5 < i2) { char c2 = cArr[i5]; if (c2 == '.') { i4 = 1; } else { i6 = (i6 * 10) + (c2 - '0'); if (i4 != 0) { i4 *= 10; } } i5++; } double d = i6 / i4; if (z2) { d = -d; } return Double.valueOf(d); } return Double.valueOf(Double.parseDouble(new String(cArr, 0, i2))); } catch (NumberFormatException e) { throw new JSONException(e.getMessage() + ", " + info()); } } public final BigDecimal decimalValue() { char charAt = this.text.charAt((this.np + this.sp) - 1); int i = this.sp; if (charAt == 'L' || charAt == 'S' || charAt == 'B' || charAt == 'F' || charAt == 'D') { i--; } int i2 = this.np; char[] cArr = this.sbuf; if (i < cArr.length) { this.text.getChars(i2, i2 + i, cArr, 0); return new BigDecimal(this.sbuf, 0, i); } char[] cArr2 = new char[i]; this.text.getChars(i2, i + i2, cArr2, 0); return new BigDecimal(cArr2); } public boolean matchField(long j) { char c = this.ch; int i = this.bp + 1; int i2 = 1; while (c != '\"' && c != '\'') { if (c > ' ' || !(c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == '\f' || c == '\b')) { this.fieldHash = 0L; this.matchStat = -2; return false; } int i3 = i2 + 1; int i4 = this.bp + i2; c = i4 >= this.len ? EOI : this.text.charAt(i4); i2 = i3; } int i5 = i; long j2 = -3750763034362895579L; while (true) { if (i5 >= this.len) { break; } char charAt = this.text.charAt(i5); if (charAt == c) { i2 += (i5 - i) + 1; break; } j2 = 1099511628211L * (j2 ^ charAt); i5++; } if (j2 != j) { this.matchStat = -2; this.fieldHash = j2; return false; } int i6 = i2 + 1; int i7 = this.bp + i2; char charAt2 = i7 >= this.len ? EOI : this.text.charAt(i7); while (charAt2 != ':') { if (charAt2 <= ' ' && (charAt2 == ' ' || charAt2 == '\n' || charAt2 == '\r' || charAt2 == '\t' || charAt2 == '\f' || charAt2 == '\b')) { int i8 = i6 + 1; int i9 = this.bp + i6; charAt2 = i9 >= this.len ? EOI : this.text.charAt(i9); i6 = i8; } else { throw new JSONException("match feild error expect ':'"); } } int i10 = this.bp + i6; char charAt3 = i10 >= this.len ? EOI : this.text.charAt(i10); if (charAt3 == '{') { int i11 = i10 + 1; this.bp = i11; this.ch = i11 >= this.len ? EOI : this.text.charAt(i11); this.token = 12; } else if (charAt3 == '[') { int i12 = i10 + 1; this.bp = i12; this.ch = i12 >= this.len ? EOI : this.text.charAt(i12); this.token = 14; } else { this.bp = i10; this.ch = i10 >= this.len ? EOI : this.text.charAt(i10); nextToken(); } return true; } private int matchFieldHash(long j) { char c = this.ch; int i = 1; while (c != '\"' && c != '\'') { if (c != ' ' && c != '\n' && c != '\r' && c != '\t' && c != '\f' && c != '\b') { this.fieldHash = 0L; this.matchStat = -2; return 0; } int i2 = i + 1; int i3 = this.bp + i; c = i3 >= this.len ? EOI : this.text.charAt(i3); i = i2; } int i4 = this.bp + i; long j2 = -3750763034362895579L; while (true) { if (i4 >= this.len) { break; } char charAt = this.text.charAt(i4); if (charAt == c) { i += (i4 - this.bp) - i; break; } j2 = 1099511628211L * (charAt ^ j2); i4++; } if (j2 != j) { this.fieldHash = j2; this.matchStat = -2; return 0; } int i5 = i + 1; int i6 = this.bp + i5; char charAt2 = i6 >= this.len ? EOI : this.text.charAt(i6); while (charAt2 != ':') { if (charAt2 <= ' ' && (charAt2 == ' ' || charAt2 == '\n' || charAt2 == '\r' || charAt2 == '\t' || charAt2 == '\f' || charAt2 == '\b')) { int i7 = i5 + 1; int i8 = this.bp + i5; charAt2 = i8 >= this.len ? EOI : this.text.charAt(i8); i5 = i7; } else { throw new JSONException("match feild error expect ':'"); } } return i5 + 1; } public int scanFieldInt(long j) { int i; char charAt; this.matchStat = 0; int matchFieldHash = matchFieldHash(j); if (matchFieldHash == 0) { return 0; } int i2 = matchFieldHash + 1; int i3 = this.bp + matchFieldHash; int i4 = this.len; char c = EOI; char charAt2 = i3 >= i4 ? (char) 26 : this.text.charAt(i3); boolean z = charAt2 == '\"'; if (z) { int i5 = matchFieldHash + 2; int i6 = this.bp + i2; charAt2 = i6 >= this.len ? (char) 26 : this.text.charAt(i6); i2 = i5; z = true; } boolean z2 = charAt2 == '-'; if (z2) { int i7 = i2 + 1; int i8 = this.bp + i2; charAt2 = i8 >= this.len ? (char) 26 : this.text.charAt(i8); i2 = i7; } if (charAt2 < '0' || charAt2 > '9') { this.matchStat = -1; return 0; } int i9 = charAt2 - '0'; while (true) { i = i2 + 1; int i10 = this.bp + i2; charAt = i10 >= this.len ? (char) 26 : this.text.charAt(i10); if (charAt < '0' || charAt > '9') { break; } i9 = (i9 * 10) + (charAt - '0'); i2 = i; } if (charAt == '.') { this.matchStat = -1; return 0; } if (charAt == '\"') { if (!z) { this.matchStat = -1; return 0; } int i11 = i2 + 2; int i12 = this.bp + i; charAt = i12 >= this.len ? (char) 26 : this.text.charAt(i12); i = i11; } if (i9 < 0) { this.matchStat = -1; return 0; } while (charAt != ',') { if (charAt > ' ' || !(charAt == ' ' || charAt == '\n' || charAt == '\r' || charAt == '\t' || charAt == '\f' || charAt == '\b')) { if (charAt != '}') { this.matchStat = -1; return 0; } char charAt3 = charAt(this.bp + i); if (charAt3 == ',') { this.token = 16; int i13 = this.bp + i + 1; this.bp = i13; if (i13 < this.len) { c = this.text.charAt(i13); } this.ch = c; } else if (charAt3 == ']') { this.token = 15; int i14 = this.bp + i + 1; this.bp = i14; if (i14 < this.len) { c = this.text.charAt(i14); } this.ch = c; } else if (charAt3 == '}') { this.token = 13; int i15 = this.bp + i + 1; this.bp = i15; if (i15 < this.len) { c = this.text.charAt(i15); } this.ch = c; } else { if (charAt3 != 26) { this.matchStat = -1; return 0; } this.token = 20; this.bp += i; this.ch = EOI; } this.matchStat = 4; return z2 ? -i9 : i9; } int i16 = i + 1; int i17 = this.bp + i; charAt = i17 >= this.len ? (char) 26 : this.text.charAt(i17); i = i16; } int i18 = this.bp + (i - 1) + 1; this.bp = i18; if (i18 < this.len) { c = this.text.charAt(i18); } this.ch = c; this.matchStat = 3; this.token = 16; return z2 ? -i9 : i9; } public final int[] scanFieldIntArray(long j) { boolean z; int[] iArr; int i; int i2; char charAt; int i3; char charAt2; int i4; this.matchStat = 0; int matchFieldHash = matchFieldHash(j); int[] iArr2 = null; if (matchFieldHash == 0) { return null; } int i5 = matchFieldHash + 1; int i6 = this.bp + matchFieldHash; int i7 = -1; if (i6 >= this.len || this.text.charAt(i6) != '[') { this.matchStat = -1; return null; } int i8 = matchFieldHash + 2; int i9 = this.bp + i5; char charAt3 = i9 >= this.len ? EOI : this.text.charAt(i9); int[] iArr3 = new int[16]; if (charAt3 != ']') { int i10 = 0; while (true) { if (charAt3 == '-') { int i11 = i8 + 1; int i12 = this.bp + i8; charAt3 = i12 >= this.len ? EOI : this.text.charAt(i12); i8 = i11; z = true; } else { z = false; } if (charAt3 < '0') { iArr = iArr2; i = i7; break; } if (charAt3 > '9') { i = i7; iArr = null; break; } int i13 = charAt3 - '0'; while (true) { i2 = i8 + 1; int i14 = this.bp + i8; charAt = i14 >= this.len ? EOI : this.text.charAt(i14); if (charAt < '0' || charAt > '9') { break; } i13 = (i13 * 10) + (charAt - '0'); i8 = i2; } if (i10 >= iArr3.length) { int[] iArr4 = new int[(iArr3.length * 3) / 2]; System.arraycopy(iArr3, 0, iArr4, 0, i10); iArr3 = iArr4; } i3 = i10 + 1; if (z) { i13 = -i13; } iArr3[i10] = i13; if (charAt == ',') { int i15 = i8 + 2; int i16 = this.bp + i2; charAt = i16 >= this.len ? EOI : this.text.charAt(i16); i2 = i15; } else if (charAt == ']') { int i17 = i8 + 2; int i18 = this.bp + i2; charAt2 = i18 >= this.len ? EOI : this.text.charAt(i18); i4 = i17; } charAt3 = charAt; i7 = -1; i10 = i3; iArr2 = null; i8 = i2; } this.matchStat = i; return iArr; } i4 = matchFieldHash + 3; int i19 = this.bp + i8; charAt2 = i19 >= this.len ? EOI : this.text.charAt(i19); i3 = 0; if (i3 != iArr3.length) { int[] iArr5 = new int[i3]; System.arraycopy(iArr3, 0, iArr5, 0, i3); iArr3 = iArr5; } if (charAt2 == ',') { this.bp += i4 - 1; next(); this.matchStat = 3; this.token = 16; return iArr3; } if (charAt2 != '}') { this.matchStat = -1; return null; } char charAt4 = charAt(this.bp + i4); if (charAt4 == ',') { this.token = 16; this.bp += i4; next(); } else if (charAt4 == ']') { this.token = 15; this.bp += i4; next(); } else if (charAt4 == '}') { this.token = 13; this.bp += i4; next(); } else { if (charAt4 != 26) { this.matchStat = -1; return null; } this.bp += i4; this.token = 20; this.ch = EOI; } this.matchStat = 4; return iArr3; } public long scanFieldLong(long j) { int i; char charAt; this.matchStat = 0; int matchFieldHash = matchFieldHash(j); if (matchFieldHash == 0) { return 0L; } int i2 = matchFieldHash + 1; int i3 = this.bp + matchFieldHash; char charAt2 = i3 >= this.len ? EOI : this.text.charAt(i3); boolean z = charAt2 == '\"'; if (z) { int i4 = matchFieldHash + 2; int i5 = this.bp + i2; charAt2 = i5 >= this.len ? EOI : this.text.charAt(i5); i2 = i4; } boolean z2 = charAt2 == '-'; if (z2) { int i6 = i2 + 1; int i7 = this.bp + i2; i2 = i6; charAt2 = i7 >= this.len ? EOI : this.text.charAt(i7); } if (charAt2 < '0' || charAt2 > '9') { this.matchStat = -1; return 0L; } long j2 = charAt2 - '0'; while (true) { i = i2 + 1; int i8 = this.bp + i2; charAt = i8 >= this.len ? EOI : this.text.charAt(i8); if (charAt < '0' || charAt > '9') { break; } j2 = (j2 * 10) + (charAt - '0'); i2 = i; } if (charAt == '.') { this.matchStat = -1; return 0L; } if (charAt == '\"') { if (!z) { this.matchStat = -1; return 0L; } int i9 = i2 + 2; int i10 = this.bp + i; charAt = i10 >= this.len ? EOI : this.text.charAt(i10); i = i9; } if (j2 < 0) { this.matchStat = -1; return 0L; } if (charAt == ',') { int i11 = this.bp + (i - 1) + 1; this.bp = i11; this.ch = i11 >= this.len ? EOI : this.text.charAt(i11); this.matchStat = 3; this.token = 16; return z2 ? -j2 : j2; } if (charAt != '}') { this.matchStat = -1; return 0L; } char charAt3 = charAt(this.bp + i); if (charAt3 == ',') { this.token = 16; int i12 = this.bp + i + 1; this.bp = i12; this.ch = i12 >= this.len ? EOI : this.text.charAt(i12); } else if (charAt3 == ']') { this.token = 15; int i13 = this.bp + i + 1; this.bp = i13; this.ch = i13 >= this.len ? EOI : this.text.charAt(i13); } else if (charAt3 == '}') { this.token = 13; int i14 = this.bp + i + 1; this.bp = i14; this.ch = i14 >= this.len ? EOI : this.text.charAt(i14); } else { if (charAt3 != 26) { this.matchStat = -1; return 0L; } this.token = 20; this.bp += i; this.ch = EOI; } this.matchStat = 4; return z2 ? -j2 : j2; } public String scanFieldString(long j) { String str; this.matchStat = 0; int matchFieldHash = matchFieldHash(j); if (matchFieldHash == 0) { return null; } int i = matchFieldHash + 1; int i2 = this.bp + matchFieldHash; if (i2 >= this.len) { throw new JSONException("unclosed str, " + info()); } if (this.text.charAt(i2) != '\"') { this.matchStat = -1; return this.stringDefaultValue; } int i3 = this.bp + i; int indexOf = this.text.indexOf(34, i3); if (indexOf == -1) { throw new JSONException("unclosed str, " + info()); } if (V6) { str = this.text.substring(i3, indexOf); } else { int i4 = indexOf - i3; str = new String(sub_chars(this.bp + i, i4), 0, i4); } if (str.indexOf(92) != -1) { boolean z = false; while (true) { int i5 = indexOf - 1; int i6 = 0; while (i5 >= 0 && this.text.charAt(i5) == '\\') { i6++; i5--; z = true; } if (i6 % 2 == 0) { break; } indexOf = this.text.indexOf(34, indexOf + 1); } int i7 = indexOf - i3; char[] sub_chars = sub_chars(this.bp + i, i7); if (z) { str = readString(sub_chars, i7); } else { str = new String(sub_chars, 0, i7); if (str.indexOf(92) != -1) { str = readString(sub_chars, i7); } } } int i8 = indexOf + 1; int i9 = this.len; char c = EOI; char charAt = i8 >= i9 ? (char) 26 : this.text.charAt(i8); if (charAt == ',') { int i10 = indexOf + 2; this.bp = i10; if (i10 < this.len) { c = this.text.charAt(i10); } this.ch = c; this.matchStat = 3; this.token = 16; return str; } if (charAt != '}') { this.matchStat = -1; return this.stringDefaultValue; } int i11 = indexOf + 2; char charAt2 = i11 >= this.len ? (char) 26 : this.text.charAt(i11); if (charAt2 == ',') { this.token = 16; this.bp = i11; next(); } else if (charAt2 == ']') { this.token = 15; this.bp = i11; next(); } else if (charAt2 == '}') { this.token = 13; this.bp = i11; next(); } else { if (charAt2 != 26) { this.matchStat = -1; return this.stringDefaultValue; } this.token = 20; this.bp = i11; this.ch = EOI; } this.matchStat = 4; return str; } public Date scanFieldDate(long j) { int i; char charAt; char c; int i2; Date date; this.matchStat = 0; int matchFieldHash = matchFieldHash(j); if (matchFieldHash == 0) { return null; } int i3 = this.bp; char c2 = this.ch; int i4 = matchFieldHash + 1; int i5 = i3 + matchFieldHash; int i6 = this.len; char c3 = EOI; char charAt2 = i5 >= i6 ? (char) 26 : this.text.charAt(i5); if (charAt2 == '\"') { int i7 = this.bp; int i8 = i7 + i4; int i9 = matchFieldHash + 2; int i10 = i7 + i4; if (i10 < this.len) { this.text.charAt(i10); } int indexOf = this.text.indexOf(34, this.bp + i9); if (indexOf == -1) { throw new JSONException("unclosed str"); } int i11 = indexOf - i8; this.bp = i8; if (!scanISO8601DateIfMatch(false, i11)) { this.bp = i3; this.matchStat = -1; return null; } date = this.calendar.getTime(); int i12 = i9 + i11; i2 = i12 + 1; c = charAt(i12 + i3); this.bp = i3; } else { if (charAt2 < '0' || charAt2 > '9') { this.matchStat = -1; return null; } long j2 = charAt2 - '0'; while (true) { i = i4 + 1; int i13 = this.bp + i4; charAt = i13 >= this.len ? (char) 26 : this.text.charAt(i13); if (charAt < '0' || charAt > '9') { break; } j2 = (j2 * 10) + (charAt - '0'); i4 = i; } if (charAt == '.') { this.matchStat = -1; return null; } if (charAt == '\"') { i2 = i4 + 2; int i14 = this.bp + i; c = i14 >= this.len ? (char) 26 : this.text.charAt(i14); } else { c = charAt; i2 = i; } if (j2 < 0) { this.matchStat = -1; return null; } date = new Date(j2); } if (c == ',') { int i15 = this.bp + (i2 - 1) + 1; this.bp = i15; if (i15 < this.len) { c3 = this.text.charAt(i15); } this.ch = c3; this.matchStat = 3; this.token = 16; return date; } if (c != '}') { this.bp = i3; this.ch = c2; this.matchStat = -1; return null; } char charAt3 = charAt(this.bp + i2); if (charAt3 == ',') { this.token = 16; int i16 = this.bp + i2 + 1; this.bp = i16; if (i16 < this.len) { c3 = this.text.charAt(i16); } this.ch = c3; } else if (charAt3 == ']') { this.token = 15; int i17 = this.bp + i2 + 1; this.bp = i17; if (i17 < this.len) { c3 = this.text.charAt(i17); } this.ch = c3; } else if (charAt3 == '}') { this.token = 13; int i18 = this.bp + i2 + 1; this.bp = i18; if (i18 < this.len) { c3 = this.text.charAt(i18); } this.ch = c3; } else { if (charAt3 != 26) { this.bp = i3; this.ch = c2; this.matchStat = -1; return null; } this.token = 20; this.bp += i2; this.ch = EOI; } this.matchStat = 4; return date; } /* JADX WARN: Removed duplicated region for block: B:11:0x0097 */ /* JADX WARN: Removed duplicated region for block: B:15:0x00be */ /* JADX WARN: Removed duplicated region for block: B:66:0x00b1 */ /* JADX WARN: Removed duplicated region for block: B:69:0x0099 */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public boolean scanFieldBoolean(long r13) { /* Method dump skipped, instructions count: 347 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.scanFieldBoolean(long):boolean"); } public final float scanFieldFloat(long j) { int i; char charAt; int i2; float parseFloat; int i3; char charAt2; this.matchStat = 0; int matchFieldHash = matchFieldHash(j); if (matchFieldHash == 0) { return 0.0f; } int i4 = matchFieldHash + 1; char charAt3 = charAt(this.bp + matchFieldHash); int i5 = this.bp; int i6 = (i5 + i4) - 1; boolean z = charAt3 == '-'; if (z) { charAt3 = charAt(i5 + i4); i4 = matchFieldHash + 2; } if (charAt3 < '0' || charAt3 > '9') { this.matchStat = -1; return 0.0f; } int i7 = charAt3 - '0'; while (true) { i = i4 + 1; charAt = charAt(this.bp + i4); if (charAt < '0' || charAt > '9') { break; } i7 = (i7 * 10) + (charAt - '0'); i4 = i; } if (charAt == '.') { int i8 = i4 + 2; char charAt4 = charAt(this.bp + i); if (charAt4 < '0' || charAt4 > '9') { this.matchStat = -1; return 0.0f; } i7 = (i7 * 10) + (charAt4 - '0'); int i9 = 10; while (true) { i3 = i8 + 1; charAt2 = charAt(this.bp + i8); if (charAt2 < '0' || charAt2 > '9') { break; } i7 = (i7 * 10) + (charAt2 - '0'); i9 *= 10; i8 = i3; } i = i3; int i10 = i9; charAt = charAt2; i2 = i10; } else { i2 = 1; } boolean z2 = charAt == 'e' || charAt == 'E'; if (z2) { int i11 = i + 1; charAt = charAt(this.bp + i); if (charAt == '+' || charAt == '-') { i += 2; charAt = charAt(this.bp + i11); } else { i = i11; } while (charAt >= '0' && charAt <= '9') { charAt = charAt(this.bp + i); i++; } } int i12 = ((this.bp + i) - i6) - 1; if (z2 || i12 >= 10) { parseFloat = Float.parseFloat(subString(i6, i12)); } else { parseFloat = i7 / i2; if (z) { parseFloat = -parseFloat; } } if (charAt == ',') { this.bp += i - 1; next(); this.matchStat = 3; this.token = 16; return parseFloat; } if (charAt != '}') { this.matchStat = -1; return 0.0f; } char charAt5 = charAt(this.bp + i); if (charAt5 == ',') { this.token = 16; this.bp += i; next(); } else if (charAt5 == ']') { this.token = 15; this.bp += i; next(); } else if (charAt5 == '}') { this.token = 13; this.bp += i; next(); } else { if (charAt5 != 26) { this.matchStat = -1; return 0.0f; } this.bp += i; this.token = 20; this.ch = EOI; } this.matchStat = 4; return parseFloat; } /* JADX WARN: Code restructure failed: missing block: B:134:0x00d3, code lost: r19.matchStat = -1; */ /* JADX WARN: Code restructure failed: missing block: B:135:0x00d5, code lost: return r3; */ /* JADX WARN: Code restructure failed: missing block: B:142:0x0222, code lost: r19.matchStat = -1; */ /* JADX WARN: Code restructure failed: missing block: B:143:0x0224, code lost: return r3; */ /* JADX WARN: Removed duplicated region for block: B:64:0x0119 A[ADDED_TO_REGION] */ /* JADX WARN: Removed duplicated region for block: B:67:0x0125 */ /* JADX WARN: Removed duplicated region for block: B:70:0x0128 */ /* JADX WARN: Unsupported multi-entry loop pattern (BACK_EDGE: B:67:0x0116 -> B:61:0x0117). Please report as a decompilation issue!!! */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public final float[] scanFieldFloatArray(long r20) { /* Method dump skipped, instructions count: 549 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.scanFieldFloatArray(long):float[]"); } /* JADX WARN: Code restructure failed: missing block: B:165:0x00f2, code lost: r20.matchStat = -1; */ /* JADX WARN: Code restructure failed: missing block: B:166:0x00f7, code lost: return r3; */ /* JADX WARN: Code restructure failed: missing block: B:173:0x02a1, code lost: r6 = r3; r20.matchStat = -1; */ /* JADX WARN: Code restructure failed: missing block: B:174:0x02a7, code lost: return r6; */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public final float[][] scanFieldFloatArray2(long r21) { /* Method dump skipped, instructions count: 685 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.scanFieldFloatArray2(long):float[][]"); } public final double scanFieldDouble(long j) { int i; char charAt; int i2; double parseDouble; int i3; char charAt2; this.matchStat = 0; int matchFieldHash = matchFieldHash(j); if (matchFieldHash == 0) { return BuildConfig.SENTRY_SAMPLE_RATE; } int i4 = matchFieldHash + 1; char charAt3 = charAt(this.bp + matchFieldHash); int i5 = this.bp; int i6 = (i5 + i4) - 1; boolean z = charAt3 == '-'; if (z) { charAt3 = charAt(i5 + i4); i4 = matchFieldHash + 2; } if (charAt3 < '0' || charAt3 > '9') { this.matchStat = -1; return BuildConfig.SENTRY_SAMPLE_RATE; } int i7 = charAt3 - '0'; while (true) { i = i4 + 1; charAt = charAt(this.bp + i4); if (charAt < '0' || charAt > '9') { break; } i7 = (i7 * 10) + (charAt - '0'); i4 = i; } if (charAt == '.') { int i8 = i4 + 2; char charAt4 = charAt(this.bp + i); if (charAt4 < '0' || charAt4 > '9') { this.matchStat = -1; return BuildConfig.SENTRY_SAMPLE_RATE; } i7 = (i7 * 10) + (charAt4 - '0'); int i9 = 10; while (true) { i3 = i8 + 1; charAt2 = charAt(this.bp + i8); if (charAt2 < '0' || charAt2 > '9') { break; } i7 = (i7 * 10) + (charAt2 - '0'); i9 *= 10; i8 = i3; } i = i3; int i10 = i9; charAt = charAt2; i2 = i10; } else { i2 = 1; } boolean z2 = charAt == 'e' || charAt == 'E'; if (z2) { int i11 = i + 1; charAt = charAt(this.bp + i); if (charAt == '+' || charAt == '-') { i += 2; charAt = charAt(this.bp + i11); } else { i = i11; } while (charAt >= '0' && charAt <= '9') { charAt = charAt(this.bp + i); i++; } } int i12 = ((this.bp + i) - i6) - 1; if (z2 || i12 >= 10) { parseDouble = Double.parseDouble(subString(i6, i12)); } else { parseDouble = i7 / i2; if (z) { parseDouble = -parseDouble; } } if (charAt == ',') { this.bp += i - 1; next(); this.matchStat = 3; this.token = 16; return parseDouble; } if (charAt != '}') { this.matchStat = -1; return BuildConfig.SENTRY_SAMPLE_RATE; } char charAt5 = charAt(this.bp + i); if (charAt5 == ',') { this.token = 16; this.bp += i; next(); } else if (charAt5 == ']') { this.token = 15; this.bp += i; next(); } else if (charAt5 == '}') { this.token = 13; this.bp += i; next(); } else { if (charAt5 != 26) { this.matchStat = -1; return BuildConfig.SENTRY_SAMPLE_RATE; } this.bp += i; this.token = 20; this.ch = EOI; } this.matchStat = 4; return parseDouble; } /* JADX WARN: Code restructure failed: missing block: B:135:0x00d3, code lost: r19.matchStat = -1; */ /* JADX WARN: Code restructure failed: missing block: B:136:0x00d5, code lost: return r3; */ /* JADX WARN: Removed duplicated region for block: B:64:0x0119 A[ADDED_TO_REGION] */ /* JADX WARN: Removed duplicated region for block: B:67:0x0125 */ /* JADX WARN: Removed duplicated region for block: B:70:0x0128 */ /* JADX WARN: Unsupported multi-entry loop pattern (BACK_EDGE: B:67:0x0116 -> B:61:0x0117). Please report as a decompilation issue!!! */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public final double[] scanFieldDoubleArray(long r20) { /* Method dump skipped, instructions count: 555 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.scanFieldDoubleArray(long):double[]"); } /* JADX WARN: Code restructure failed: missing block: B:165:0x00f2, code lost: r20.matchStat = -1; */ /* JADX WARN: Code restructure failed: missing block: B:166:0x00f7, code lost: return r3; */ /* JADX WARN: Code restructure failed: missing block: B:173:0x02a3, code lost: r6 = r3; r20.matchStat = -1; */ /* JADX WARN: Code restructure failed: missing block: B:174:0x02a9, code lost: return r6; */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public final double[][] scanFieldDoubleArray2(long r21) { /* Method dump skipped, instructions count: 687 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.scanFieldDoubleArray2(long):double[][]"); } public long scanFieldSymbol(long j) { this.matchStat = 0; int matchFieldHash = matchFieldHash(j); if (matchFieldHash == 0) { return 0L; } int i = matchFieldHash + 1; int i2 = this.bp + matchFieldHash; if (i2 >= this.len || this.text.charAt(i2) != '\"') { this.matchStat = -1; return 0L; } long j2 = -3750763034362895579L; while (true) { int i3 = i + 1; int i4 = this.bp + i; int i5 = this.len; char c = EOI; char charAt = i4 >= i5 ? (char) 26 : this.text.charAt(i4); if (charAt == '\"') { int i6 = i + 2; int i7 = this.bp + i3; char charAt2 = i7 >= this.len ? (char) 26 : this.text.charAt(i7); if (charAt2 == ',') { int i8 = this.bp + i + 1 + 1; this.bp = i8; if (i8 < this.len) { c = this.text.charAt(i8); } this.ch = c; this.matchStat = 3; return j2; } if (charAt2 != '}') { this.matchStat = -1; return 0L; } int i9 = this.bp + i6; char charAt3 = i9 >= this.len ? (char) 26 : this.text.charAt(i9); if (charAt3 == ',') { this.token = 16; this.bp += i + 2; next(); } else if (charAt3 == ']') { this.token = 15; this.bp += i + 2; next(); } else if (charAt3 == '}') { this.token = 13; this.bp += i + 2; next(); } else { if (charAt3 != 26) { this.matchStat = -1; return 0L; } this.token = 20; this.bp += i + 2; this.ch = EOI; } this.matchStat = 4; return j2; } j2 = (j2 ^ charAt) * 1099511628211L; if (charAt == '\\') { this.matchStat = -1; return 0L; } i = i3; } } public boolean scanISO8601DateIfMatch(boolean z) { return scanISO8601DateIfMatch(z, this.len - this.bp); } /* JADX WARN: Removed duplicated region for block: B:127:0x0209 A[RETURN] */ /* JADX WARN: Removed duplicated region for block: B:128:0x020c */ /* Code decompiled incorrectly, please refer to instructions dump. To view partially-correct add '--show-bad-code' argument */ public boolean scanISO8601DateIfMatch(boolean r36, int r37) { /* Method dump skipped, instructions count: 1614 To view this dump add '--comments-level debug' option */ throw new UnsupportedOperationException("Method not decompiled: com.alibaba.fastjson.parser.JSONLexer.scanISO8601DateIfMatch(boolean, int):boolean"); } protected void setTime(char c, char c2, char c3, char c4, char c5, char c6) { this.calendar.set(11, ((c - '0') * 10) + (c2 - '0')); this.calendar.set(12, ((c3 - '0') * 10) + (c4 - '0')); this.calendar.set(13, ((c5 - '0') * 10) + (c6 - '0')); } protected void setTimeZone(char c, char c2, char c3) { int i = (((c2 - '0') * 10) + (c3 - '0')) * 3600000; if (c == '-') { i = -i; } if (this.calendar.getTimeZone().getRawOffset() != i) { String[] availableIDs = TimeZone.getAvailableIDs(i); if (availableIDs.length > 0) { this.calendar.setTimeZone(TimeZone.getTimeZone(availableIDs[0])); } } } private void setCalendar(char c, char c2, char c3, char c4, char c5, char c6, char c7, char c8) { Calendar calendar = Calendar.getInstance(this.timeZone, this.locale); this.calendar = calendar; calendar.set(1, ((c - '0') * 1000) + ((c2 - '0') * 100) + ((c3 - '0') * 10) + (c4 - '0')); this.calendar.set(2, (((c5 - '0') * 10) + (c6 - '0')) - 1); this.calendar.set(5, ((c7 - '0') * 10) + (c8 - '0')); } public static final byte[] decodeFast(String str, int i, int i2) { int i3; if (i2 == 0) { return new byte[0]; } int i4 = (i + i2) - 1; int i5 = i; while (i5 < i4 && IA[str.charAt(i5)] < 0) { i5++; } while (i4 > 0 && IA[str.charAt(i4)] < 0) { i4--; } int i6 = str.charAt(i4) == '=' ? str.charAt(i4 + (-1)) == '=' ? 2 : 1 : 0; int i7 = (i4 - i5) + 1; if (i2 > 76) { i3 = (str.charAt(76) == '\r' ? i7 / 78 : 0) << 1; } else { i3 = 0; } int i8 = (((i7 - i3) * 6) >> 3) - i6; byte[] bArr = new byte[i8]; int i9 = (i8 / 3) * 3; int i10 = 0; int i11 = 0; while (i10 < i9) { int[] iArr = IA; int i12 = i5 + 4; int i13 = iArr[str.charAt(i5 + 3)] | (iArr[str.charAt(i5 + 1)] << 12) | (iArr[str.charAt(i5)] << 18) | (iArr[str.charAt(i5 + 2)] << 6); bArr[i10] = (byte) (i13 >> 16); int i14 = i10 + 2; bArr[i10 + 1] = (byte) (i13 >> 8); i10 += 3; bArr[i14] = (byte) i13; if (i3 <= 0 || (i11 = i11 + 1) != 19) { i5 = i12; } else { i5 += 6; i11 = 0; } } if (i10 < i8) { int i15 = 0; int i16 = 0; while (i5 <= i4 - i6) { i15 |= IA[str.charAt(i5)] << (18 - (i16 * 6)); i16++; i5++; } int i17 = 16; while (i10 < i8) { bArr[i10] = (byte) (i15 >> i17); i17 -= 8; i10++; } } return bArr; } }