first commit
Build AsminVoicechat / prepare-release (push) Successful in 14s
Build AsminVoicechat / build-and-test (17) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (18) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (19) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (20) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (21) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (22) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (23) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (24) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (25) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (26) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (27-ea) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (16) (push) Canceled after 38s
Build AsminVoicechat / prepare-release (push) Successful in 14s
Build AsminVoicechat / build-and-test (17) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (18) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (19) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (20) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (21) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (22) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (23) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (24) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (25) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (26) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (27-ea) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (16) (push) Canceled after 38s
This commit is contained in:
commit
bbccd4a815
454 files changed
+45050
No files matched your search
@@ -0,0 +1,401 @@
|
||||
/*
|
||||
* Decompiled with CFR 0.152.
|
||||
*/
|
||||
package de.maxhenkel.voicechat.org.json;
|
||||
|
||||
import de.maxhenkel.voicechat.org.json.JSONArray;
|
||||
import de.maxhenkel.voicechat.org.json.JSONException;
|
||||
import de.maxhenkel.voicechat.org.json.JSONObject;
|
||||
import de.maxhenkel.voicechat.org.json.JSONParserConfiguration;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.io.StringReader;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
public class JSONTokener {
|
||||
private long character;
|
||||
private boolean eof;
|
||||
private long index;
|
||||
private long line;
|
||||
private char previous;
|
||||
private final Reader reader;
|
||||
private boolean usePrevious;
|
||||
private long characterPreviousLine;
|
||||
private JSONParserConfiguration jsonParserConfiguration;
|
||||
|
||||
public JSONTokener(Reader reader) {
|
||||
this(reader, new JSONParserConfiguration());
|
||||
}
|
||||
|
||||
public JSONTokener(Reader reader, JSONParserConfiguration jsonParserConfiguration) {
|
||||
this.jsonParserConfiguration = jsonParserConfiguration;
|
||||
this.reader = reader.markSupported() ? reader : new BufferedReader(reader);
|
||||
this.eof = false;
|
||||
this.usePrevious = false;
|
||||
this.previous = '\u0000';
|
||||
this.index = 0L;
|
||||
this.character = 1L;
|
||||
this.characterPreviousLine = 0L;
|
||||
this.line = 1L;
|
||||
}
|
||||
|
||||
public JSONTokener(InputStream inputStream) {
|
||||
this(inputStream, new JSONParserConfiguration());
|
||||
}
|
||||
|
||||
public JSONTokener(InputStream inputStream, JSONParserConfiguration jsonParserConfiguration) {
|
||||
this(new InputStreamReader(inputStream, Charset.forName("UTF-8")), jsonParserConfiguration);
|
||||
}
|
||||
|
||||
public JSONTokener(String source) {
|
||||
this(new StringReader(source));
|
||||
}
|
||||
|
||||
public JSONTokener(String source, JSONParserConfiguration jsonParserConfiguration) {
|
||||
this(new StringReader(source), jsonParserConfiguration);
|
||||
}
|
||||
|
||||
public JSONParserConfiguration getJsonParserConfiguration() {
|
||||
return this.jsonParserConfiguration;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void setJsonParserConfiguration(JSONParserConfiguration jsonParserConfiguration) {
|
||||
this.jsonParserConfiguration = jsonParserConfiguration;
|
||||
}
|
||||
|
||||
public void back() throws JSONException {
|
||||
if (this.usePrevious || this.index <= 0L) {
|
||||
throw new JSONException("Stepping back two steps is not supported");
|
||||
}
|
||||
this.decrementIndexes();
|
||||
this.usePrevious = true;
|
||||
this.eof = false;
|
||||
}
|
||||
|
||||
private void decrementIndexes() {
|
||||
--this.index;
|
||||
if (this.previous == '\r' || this.previous == '\n') {
|
||||
--this.line;
|
||||
this.character = this.characterPreviousLine;
|
||||
} else if (this.character > 0L) {
|
||||
--this.character;
|
||||
}
|
||||
}
|
||||
|
||||
public static int dehexchar(char c) {
|
||||
if (c >= '0' && c <= '9') {
|
||||
return c - 48;
|
||||
}
|
||||
if (c >= 'A' && c <= 'F') {
|
||||
return c - 55;
|
||||
}
|
||||
if (c >= 'a' && c <= 'f') {
|
||||
return c - 87;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public boolean end() {
|
||||
return this.eof && !this.usePrevious;
|
||||
}
|
||||
|
||||
public boolean more() throws JSONException {
|
||||
if (this.usePrevious) {
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
this.reader.mark(1);
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new JSONException("Unable to preserve stream position", e);
|
||||
}
|
||||
try {
|
||||
if (this.reader.read() <= 0) {
|
||||
this.eof = true;
|
||||
return false;
|
||||
}
|
||||
this.reader.reset();
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new JSONException("Unable to read the next character from the stream", e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public char next() throws JSONException {
|
||||
int c;
|
||||
if (this.usePrevious) {
|
||||
this.usePrevious = false;
|
||||
c = this.previous;
|
||||
} else {
|
||||
try {
|
||||
c = this.reader.read();
|
||||
}
|
||||
catch (IOException exception) {
|
||||
throw new JSONException(exception);
|
||||
}
|
||||
}
|
||||
if (c <= 0) {
|
||||
this.eof = true;
|
||||
return '\u0000';
|
||||
}
|
||||
this.incrementIndexes(c);
|
||||
this.previous = (char)c;
|
||||
return this.previous;
|
||||
}
|
||||
|
||||
protected char getPrevious() {
|
||||
return this.previous;
|
||||
}
|
||||
|
||||
private void incrementIndexes(int c) {
|
||||
if (c > 0) {
|
||||
++this.index;
|
||||
if (c == 13) {
|
||||
++this.line;
|
||||
this.characterPreviousLine = this.character;
|
||||
this.character = 0L;
|
||||
} else if (c == 10) {
|
||||
if (this.previous != '\r') {
|
||||
++this.line;
|
||||
this.characterPreviousLine = this.character;
|
||||
}
|
||||
this.character = 0L;
|
||||
} else {
|
||||
++this.character;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public char next(char c) throws JSONException {
|
||||
char n = this.next();
|
||||
if (n != c) {
|
||||
if (n > '\u0000') {
|
||||
throw this.syntaxError("Expected '" + c + "' and instead saw '" + n + "'");
|
||||
}
|
||||
throw this.syntaxError("Expected '" + c + "' and instead saw ''");
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
public String next(int n) throws JSONException {
|
||||
if (n == 0) {
|
||||
return "";
|
||||
}
|
||||
char[] chars = new char[n];
|
||||
for (int pos = 0; pos < n; ++pos) {
|
||||
chars[pos] = this.next();
|
||||
if (!this.end()) continue;
|
||||
throw this.syntaxError("Substring bounds error");
|
||||
}
|
||||
return new String(chars);
|
||||
}
|
||||
|
||||
public char nextClean() throws JSONException {
|
||||
char c;
|
||||
while ((c = this.next()) != '\u0000' && c <= ' ') {
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
public String nextString(char quote) throws JSONException {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
block15: while (true) {
|
||||
char c = this.next();
|
||||
switch (c) {
|
||||
case '\u0000':
|
||||
case '\n':
|
||||
case '\r': {
|
||||
throw this.syntaxError("Unterminated string. Character with int code " + c + " is not allowed within a quoted string.");
|
||||
}
|
||||
case '\\': {
|
||||
c = this.next();
|
||||
switch (c) {
|
||||
case 'b': {
|
||||
sb.append('\b');
|
||||
continue block15;
|
||||
}
|
||||
case 't': {
|
||||
sb.append('\t');
|
||||
continue block15;
|
||||
}
|
||||
case 'n': {
|
||||
sb.append('\n');
|
||||
continue block15;
|
||||
}
|
||||
case 'f': {
|
||||
sb.append('\f');
|
||||
continue block15;
|
||||
}
|
||||
case 'r': {
|
||||
sb.append('\r');
|
||||
continue block15;
|
||||
}
|
||||
case 'u': {
|
||||
String next = this.next(4);
|
||||
try {
|
||||
sb.append((char)Integer.parseInt(next, 16));
|
||||
continue block15;
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
throw this.syntaxError("Illegal escape. \\u must be followed by a 4 digit hexadecimal number. \\" + next + " is not valid.", e);
|
||||
}
|
||||
}
|
||||
case '\"':
|
||||
case '\'':
|
||||
case '/':
|
||||
case '\\': {
|
||||
sb.append(c);
|
||||
continue block15;
|
||||
}
|
||||
}
|
||||
throw this.syntaxError("Illegal escape. Escape sequence \\" + c + " is not valid.");
|
||||
}
|
||||
}
|
||||
if (c == quote) {
|
||||
return sb.toString();
|
||||
}
|
||||
sb.append(c);
|
||||
}
|
||||
}
|
||||
|
||||
public String nextTo(char delimiter) throws JSONException {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while (true) {
|
||||
char c;
|
||||
if ((c = this.next()) == delimiter || c == '\u0000' || c == '\n' || c == '\r') {
|
||||
if (c != '\u0000') {
|
||||
this.back();
|
||||
}
|
||||
return sb.toString().trim();
|
||||
}
|
||||
sb.append(c);
|
||||
}
|
||||
}
|
||||
|
||||
public String nextTo(String delimiters) throws JSONException {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while (true) {
|
||||
char c;
|
||||
if (delimiters.indexOf(c = this.next()) >= 0 || c == '\u0000' || c == '\n' || c == '\r') {
|
||||
if (c != '\u0000') {
|
||||
this.back();
|
||||
}
|
||||
return sb.toString().trim();
|
||||
}
|
||||
sb.append(c);
|
||||
}
|
||||
}
|
||||
|
||||
public Object nextValue() throws JSONException {
|
||||
char c = this.nextClean();
|
||||
switch (c) {
|
||||
case '{': {
|
||||
this.back();
|
||||
try {
|
||||
return new JSONObject(this, this.jsonParserConfiguration);
|
||||
}
|
||||
catch (StackOverflowError e) {
|
||||
throw new JSONException("JSON Array or Object depth too large to process.", e);
|
||||
}
|
||||
}
|
||||
case '[': {
|
||||
this.back();
|
||||
try {
|
||||
return new JSONArray(this, this.jsonParserConfiguration);
|
||||
}
|
||||
catch (StackOverflowError e) {
|
||||
throw new JSONException("JSON Array or Object depth too large to process.", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.nextSimpleValue(c);
|
||||
}
|
||||
|
||||
Object nextSimpleValue(char c) {
|
||||
String string;
|
||||
if (this.jsonParserConfiguration != null && this.jsonParserConfiguration.isStrictMode() && c == '\'') {
|
||||
throw this.syntaxError("Strict mode error: Single quoted strings are not allowed");
|
||||
}
|
||||
switch (c) {
|
||||
case '\"':
|
||||
case '\'': {
|
||||
return this.nextString(c);
|
||||
}
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while (c >= ' ' && ",:]}/\\\"[{;=#".indexOf(c) < 0) {
|
||||
sb.append(c);
|
||||
c = this.next();
|
||||
}
|
||||
if (!this.eof) {
|
||||
this.back();
|
||||
}
|
||||
if ("".equals(string = sb.toString().trim())) {
|
||||
throw this.syntaxError("Missing value");
|
||||
}
|
||||
if (this.jsonParserConfiguration != null && this.jsonParserConfiguration.isStrictMode() && string.endsWith(".")) {
|
||||
throw this.syntaxError(String.format("Strict mode error: Value '%s' ends with dot", string));
|
||||
}
|
||||
Object obj = JSONObject.stringToValue(string);
|
||||
if (this.jsonParserConfiguration != null && this.jsonParserConfiguration.isStrictMode()) {
|
||||
if (obj instanceof Boolean && !"true".equals(string) && !"false".equals(string)) {
|
||||
throw this.syntaxError(String.format("Strict mode error: Value '%s' is not lowercase boolean", obj));
|
||||
}
|
||||
if (obj == JSONObject.NULL && !"null".equals(string)) {
|
||||
throw this.syntaxError(String.format("Strict mode error: Value '%s' is not lowercase null", obj));
|
||||
}
|
||||
if (obj instanceof String) {
|
||||
throw this.syntaxError(String.format("Strict mode error: Value '%s' is not surrounded by quotes", obj));
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
public char skipTo(char to) throws JSONException {
|
||||
char c;
|
||||
try {
|
||||
long startIndex = this.index;
|
||||
long startCharacter = this.character;
|
||||
long startLine = this.line;
|
||||
this.reader.mark(1000000);
|
||||
do {
|
||||
if ((c = this.next()) != '\u0000') continue;
|
||||
this.reader.reset();
|
||||
this.index = startIndex;
|
||||
this.character = startCharacter;
|
||||
this.line = startLine;
|
||||
return '\u0000';
|
||||
} while (c != to);
|
||||
this.reader.mark(1);
|
||||
}
|
||||
catch (IOException exception) {
|
||||
throw new JSONException(exception);
|
||||
}
|
||||
this.back();
|
||||
return c;
|
||||
}
|
||||
|
||||
public JSONException syntaxError(String message) {
|
||||
return new JSONException(message + this.toString());
|
||||
}
|
||||
|
||||
public JSONException syntaxError(String message, Throwable causedBy) {
|
||||
return new JSONException(message + this.toString(), causedBy);
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return " at " + this.index + " [character " + this.character + " line " + this.line + "]";
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
if (this.reader != null) {
|
||||
this.reader.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user