Clazz.load(["java.io.Reader"], "java.io.BufferedReader", null, function(){
var c$ = Clazz.decorateAsClass(function(){
this.$in = null;
this.cb = null;
this.nChars = 0;
this.nextChar = 0;
this.markedChar = -1;
this.readAheadLimit = 0;
this.skipLF = false;
this.markedSkipLF = false;
Clazz.instantialize(this, arguments);}, java.io, "BufferedReader", java.io.Reader);
Clazz.makeConstructor(c$, 
function($in){
Clazz.superConstructor(this, java.io.BufferedReader, [$in]);
this.$in = $in;
this.setSize(8192);
}, "java.io.Reader");
Clazz.defineMethod(c$, "setSize", 
function(sz){
if (sz <= 0) throw  new IllegalArgumentException("Buffer size <= 0");
this.cb =  Clazz.newCharArray (sz, '\0');
this.nextChar = this.nChars = 0;
}, "~N");
Clazz.defineMethod(c$, "ensureOpen", 
function(){
if (this.$in == null) throw  new java.io.IOException("Stream closed");
});
Clazz.defineMethod(c$, "fill", 
function(){
var dst;
if (this.markedChar <= -1) {
dst = 0;
} else {
var delta = this.nextChar - this.markedChar;
if (delta >= this.readAheadLimit) {
this.markedChar = -2;
this.readAheadLimit = 0;
dst = 0;
} else {
if (this.readAheadLimit <= this.cb.length) {
System.arraycopy(this.cb, this.markedChar, this.cb, 0, delta);
this.markedChar = 0;
dst = delta;
} else {
var ncb =  Clazz.newCharArray (this.readAheadLimit, '\0');
System.arraycopy(this.cb, this.markedChar, ncb, 0, delta);
this.cb = ncb;
this.markedChar = 0;
dst = delta;
}this.nextChar = this.nChars = delta;
}}var n;
do {
n = this.$in.read(this.cb, dst, this.cb.length - dst);
} while (n == 0);
if (n > 0) {
this.nChars = dst + n;
this.nextChar = dst;
}});
Clazz.defineMethod(c$, "read1", 
function(cbuf, off, len){
if (this.nextChar >= this.nChars) {
if (len >= this.cb.length && this.markedChar <= -1 && !this.skipLF) {
return this.$in.read(cbuf, off, len);
}this.fill();
}if (this.nextChar >= this.nChars) return -1;
if (this.skipLF) {
this.skipLF = false;
if (this.cb[this.nextChar] == '\n') {
this.nextChar++;
if (this.nextChar >= this.nChars) this.fill();
if (this.nextChar >= this.nChars) return -1;
}}var n = Math.min(len, this.nChars - this.nextChar);
System.arraycopy(this.cb, this.nextChar, cbuf, off, n);
this.nextChar += n;
return n;
}, "~A,~N,~N");
Clazz.defineMethod(c$, "read", 
function(cbuf, off, len){
{
this.ensureOpen();
if ((off < 0) || (off > cbuf.length) || (len < 0) || ((off + len) > cbuf.length) || ((off + len) < 0)) {
throw  new IndexOutOfBoundsException();
} else if (len == 0) {
return 0;
}var n = this.read1(cbuf, off, len);
if (n <= 0) return n;
while ((n < len) && this.$in.ready()) {
var n1 = this.read1(cbuf, off + n, len - n);
if (n1 <= 0) break;
n += n1;
}
return n;
}}, "~A,~N,~N");
Clazz.defineMethod(c$, "readLine1", 
function(ignoreLF){
var s = null;
var startChar;
{
this.ensureOpen();
var omitLF = ignoreLF || this.skipLF;
for (; ; ) {
if (this.nextChar >= this.nChars) this.fill();
if (this.nextChar >= this.nChars) {
if (s != null && s.length > 0) return s.toString();
return null;
}var eol = false;
var c = String.fromCharCode(0);
var i;
if (omitLF && (this.cb[this.nextChar] == '\n')) this.nextChar++;
this.skipLF = false;
omitLF = false;
charLoop : for (i = this.nextChar; i < this.nChars; i++) {
c = this.cb[i];
if ((c == '\n') || (c == '\r')) {
eol = true;
break charLoop;
}}
startChar = this.nextChar;
this.nextChar = i;
var str =  String.instantialize(this.cb, startChar, i - startChar);
if (eol) {
if (s != null) {
s += str;
str = s;
}this.nextChar++;
if (c == '\r') {
this.skipLF = true;
}return str;
}if (s == null) s = "";
s += str;
}
}}, "~B");
Clazz.defineMethod(c$, "readLine", 
function(){
return this.readLine1(false);
});
Clazz.overrideMethod(c$, "skip", 
function(n){
if (n < 0) {
throw  new IllegalArgumentException("skip value is negative");
}{
this.ensureOpen();
var r = n;
while (r > 0) {
if (this.nextChar >= this.nChars) this.fill();
if (this.nextChar >= this.nChars) break;
if (this.skipLF) {
this.skipLF = false;
if (this.cb[this.nextChar] == '\n') {
this.nextChar++;
}}var d = this.nChars - this.nextChar;
if (r <= d) {
this.nextChar += r;
r = 0;
break;
}r -= d;
this.nextChar = this.nChars;
}
return n - r;
}}, "~N");
Clazz.defineMethod(c$, "ready", 
function(){
{
this.ensureOpen();
if (this.skipLF) {
if (this.nextChar >= this.nChars && this.$in.ready()) {
this.fill();
}if (this.nextChar < this.nChars) {
if (this.cb[this.nextChar] == '\n') this.nextChar++;
this.skipLF = false;
}}return (this.nextChar < this.nChars) || this.$in.ready();
}});
Clazz.overrideMethod(c$, "markSupported", 
function(){
return true;
});
Clazz.overrideMethod(c$, "mark", 
function(readAheadLimit){
if (readAheadLimit < 0) {
throw  new IllegalArgumentException("Read-ahead limit < 0");
}{
this.ensureOpen();
this.readAheadLimit = readAheadLimit;
this.markedChar = this.nextChar;
this.markedSkipLF = this.skipLF;
}}, "~N");
Clazz.overrideMethod(c$, "reset", 
function(){
{
this.ensureOpen();
if (this.markedChar < 0) throw  new java.io.IOException((this.markedChar == -2) ? "Mark invalid" : "Stream not marked");
this.nextChar = this.markedChar;
this.skipLF = this.markedSkipLF;
}});
Clazz.defineMethod(c$, "close", 
function(){
{
if (this.$in == null) return;
this.$in.close();
this.$in = null;
this.cb = null;
}});
});
;//5.0.1-v7 Mon May 12 23:42:45 CDT 2025
