/*
 * Decompiled with CFR 0.152.
 */
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Hashtable;
import java.util.Vector;

/*
 * Duplicate member names - consider using --renamedupmembers true
 */
public final class az {
    private static final char[] b;
    private static final String[] b;
    private static final long[] a;
    public static final String[] a;
    private boolean h;
    private Vector h;
    private int[] B;
    private boolean D;
    private boolean E;
    private boolean F;
    private Vector c;
    private Vector e;
    private int f;
    private az f;
    private boolean g;
    private StringBuffer g;
    private az g;
    private Hashtable i;
    private on i;
    private int i;
    private String[] k;
    private String[] l;
    private Reader n;
    private char[] o;
    private char[] s;
    private boolean u;
    private String v;
    private String w;
    private boolean x;
    private String[] y;
    private int z;
    public int b;
    public String b;
    public int h;
    public int[] a;
    public Hashtable a;
    public int c;
    public no d;
    public int d;
    public int e;
    public String e;
    public int g;
    public int j;

    public int e(int n) {
        switch (this.i.c(11)) {
            case 1103: {
                return n / 2;
            }
            case 48: {
                return n;
            }
        }
        return 0;
    }

    public int f(int n) {
        switch (this.i.c(51)) {
            default: {
                return n / 2;
            }
            case 50: {
                return 0;
            }
            case 32: 
        }
        return n;
    }

    /*
     * Unable to fully structure code
     */
    public int c() {
        block54: {
            block53: {
                this.u = true;
                this.f = 0;
                this.F = true;
                if (this.n == null) {
                    this.b("No Input specified");
                }
                if (this.j == 3) {
                    --this.g;
                }
                block22: while (true) {
                    this.d = -1;
                    if (this.x) break block53;
                    if (this.b != null) break block54;
                    if (this.h && (this.z > 0 || this.d(0) == -1 && this.g > 0)) break;
                    this.w = null;
                    this.e = null;
                    this.v = null;
                    block0 : switch (this.d(0)) {
                        case 60: {
                            switch (this.d(1)) {
                                default: {
                                    var1_1 = 2;
                                    break block0;
                                }
                                case 33: 
                                case 63: {
                                    var1_1 = 999;
                                    break block0;
                                }
                                case 47: 
                            }
                            var1_1 = 3;
                            break;
                        }
                        case 38: {
                            var1_1 = 6;
                            break;
                        }
                        default: {
                            var1_1 = 4;
                            break;
                        }
                        case -1: {
                            var1_1 = 1;
                        }
                    }
                    this.j = var1_1;
                    switch (this.j) {
                        default: {
                            var3_3 = 0;
                            var4_4 = "";
                            var6_6 = this.F;
                            this.i();
                            var1_1 = this.i();
                            if (var1_1 != 63) ** GOTO lbl82
                            if (this.d(0) != 120 && this.d(0) != 88 || this.d(1) != 109 && this.d(1) != 77) ** GOTO lbl79
                            if (var6_6) {
                                this.c(this.d(0));
                                this.c(this.d(1));
                            }
                            this.i();
                            this.i();
                            if (this.d(0) != 108 && this.d(0) != 76 || this.d(1) > 32) ** GOTO lbl79
                            if (this.h != 1 || this.e > 4) {
                                this.c("PI must not start with xml");
                            }
                            this.c(true);
                            if (this.d < 1 || !"version".equals(this.y[2])) {
                                this.c("version expected");
                            }
                            var1_1 = 1;
                            if (1 < this.d && "encoding".equals(this.y[6])) {
                                var1_1 = 1 + 1;
                            }
                            if (var1_1 < this.d && "standalone".equals(this.y[4 * var1_1 + 2])) {
                                var4_4 = this.y[3 + 4 * var1_1];
                                if (!"yes".equals(var4_4)) {
                                    if (!"no".equals(var4_4)) {
                                        this.c("illegal standalone value: " + var4_4);
                                    } else {
                                        new Boolean(false);
                                    }
                                } else {
                                    new Boolean(true);
                                }
                                ++var1_1;
                            }
                            if (var1_1 != this.d) {
                                this.c("illegal xmldecl");
                            }
                            this.u = true;
                            this.f = 0;
                            var1_1 = 998;
                            ** GOTO lbl145
lbl79:
                            // 2 sources

                            var1_1 = 8;
                            var2_2 = 63;
                            ** GOTO lbl97
lbl82:
                            // 1 sources

                            if (var1_1 != 33) ** GOTO lbl143
                            if (this.d(0) != 45) {
                                if (this.d(0) != 91) {
                                    var2_2 = -1;
                                    var4_4 = "DOCTYPE";
                                    var1_1 = 10;
                                } else {
                                    var4_4 = "[CDATA[";
                                    var1_1 = 5;
                                    var6_6 = true;
                                    var2_2 = 93;
                                }
                            } else {
                                var4_4 = "--";
                                var1_1 = 9;
                                var2_2 = 45;
                            }
lbl97:
                            // 5 sources

                            for (var5_5 = 0; var5_5 < var4_4.length(); ++var5_5) {
                                this.a(var4_4.charAt(var5_5));
                            }
                            if (var1_1 != 10) ** GOTO lbl124
                            var2_2 = 0;
                            var3_3 = 1;
                            block24: while (true) {
                                var5_5 = this.i();
                                switch (var5_5) {
                                    case 60: {
                                        if (var2_2 == 0) {
                                            ++var3_3;
                                        }
                                        ** GOTO lbl116
                                    }
                                    case 62: {
                                        if (var2_2 == 0 && --var3_3 == 0) {
                                            break block24;
                                        }
                                        ** GOTO lbl116
                                    }
                                    case 39: {
                                        var2_2 = var2_2 != 0 ? 0 : 1;
                                    }
lbl116:
                                    // 4 sources

                                    default: {
                                        if (!var6_6) continue block24;
                                        this.c(var5_5);
                                        continue block24;
                                    }
                                    case -1: {
                                        this.c("Unexpected EOF");
                                        break block24;
                                    }
                                }
                                break;
                            }
                            ** GOTO lbl145
lbl124:
                            // 1 sources

                            do {
                                var5_5 = var3_3;
                                var3_3 = this.i();
                                if (var3_3 == -1) ** GOTO lbl140
                                if (!var6_6) continue;
                                this.c(var3_3);
                            } while (var2_2 != 63 && var3_3 != var2_2 || this.d(0) != var2_2 || this.d(1) != 62);
                            if (var2_2 == 45 && var5_5 == 45) {
                                this.c("illegal comment delimiter: --->");
                            }
                            this.i();
                            this.i();
                            if (var6_6 && var2_2 != 63) {
                                --this.f;
                            }
                            ** GOTO lbl145
lbl140:
                            // 1 sources

                            var1_1 = 9;
                            this.c("Unexpected EOF");
                            ** GOTO lbl145
lbl143:
                            // 1 sources

                            this.c("illegal: <" + var1_1);
                            var1_1 = 9;
lbl145:
                            // 5 sources

                            this.j = var1_1;
                            if (this.j == 998) continue block22;
                            ** GOTO lbl210
                        }
                        case 6: {
                            this.h();
                            ** GOTO lbl210
                        }
                        case 4: {
                            var1_1 = this.F != false ? 0 : 1;
                            this.a(60, (boolean)var1_1);
                            if (this.g == 0 && this.u) {
                                this.j = 7;
                            }
                            ** GOTO lbl210
                        }
                        case 3: {
                            this.i();
                            this.i();
                            this.e = this.j();
                            this.k();
                            this.a('>');
                            var2_2 = this.g - 1 << 2;
                            if (this.g == 0) ** GOTO lbl182
                            if (this.e.equals(this.k[var2_2 + 3])) ** GOTO lbl-1000
                            this.c("expected: /" + this.k[var2_2 + 3] + " read: " + this.e);
                            var1_1 = var2_2;
                            while (var1_1 >= 0 && !this.e.toLowerCase().equals(this.k[var1_1 + 3].toLowerCase())) {
                                var1_1 -= 4;
                                ++this.z;
                            }
                            if (var1_1 < 0) {
                                this.z = 0;
                                this.j = 9;
                            } else lbl-1000:
                            // 2 sources

                            {
                                this.v = this.k[var2_2];
                                this.w = this.k[var2_2 + 1];
                                this.e = this.k[var2_2 + 2];
                            }
                            ** GOTO lbl210
lbl182:
                            // 1 sources

                            this.c("element stack empty");
                            this.j = 9;
                            ** GOTO lbl210
                        }
                        case 2: {
                            this.c(false);
                            ** GOTO lbl210
                        }
                        case 1: {
                            return this.j;
                        }
                    }
                    break;
                }
                var1_1 = this.g - 1 << 2;
                this.j = 3;
                this.v = this.k[var1_1];
                this.w = this.k[var1_1 + 1];
                this.e = this.k[var1_1 + 2];
                if (this.z != 1) {
                    this.b = "missing end tag /" + this.e + " inserted";
                }
                if (this.z > 0) {
                    --this.z;
                }
                ** GOTO lbl210
            }
            this.x = false;
            this.j = 3;
            ** GOTO lbl210
        }
        for (var1_1 = 0; var1_1 < this.b.length(); ++var1_1) {
            this.c(this.b.charAt(var1_1));
        }
        this.b = null;
        this.j = 9;
lbl210:
        // 10 sources

        return this.j;
    }

    private void c(boolean n) {
        block24: {
            block30: {
                block29: {
                    String string;
                    block27: {
                        String string2;
                        int[] nArray;
                        int n2;
                        int n3;
                        String string3;
                        int n4;
                        block28: {
                            block23: {
                                block26: {
                                    block25: {
                                        if (n == 0) {
                                            this.i();
                                        }
                                        this.e = this.j();
                                        this.d = 0;
                                        while (true) {
                                            this.k();
                                            n4 = this.d(0);
                                            if (n == 0) {
                                                if (n4 == 47) break;
                                                if (n4 == 62 && n == 0) {
                                                    break block23;
                                                }
                                            } else if (n4 == 63) break block24;
                                            if (n4 == -1) break block25;
                                            string3 = this.j();
                                            if (string3.length() != 0) {
                                                n4 = this.d;
                                                n3 = n4 << 2;
                                                n2 = n3 + 1;
                                                this.d = n4 + 1;
                                                this.y = az.a(this.y, n3 + 4);
                                                this.y[n3] = "";
                                                this.y[n2] = null;
                                                int n5 = n2 + 1;
                                                n3 = n5 + 1;
                                                this.y[n5] = string3;
                                                this.k();
                                                if (this.d(0) == 61) {
                                                    this.a('=');
                                                    this.k();
                                                    n4 = this.d(0);
                                                    if (n4 != 39 && n4 != 34) {
                                                        this.c("attr value delimiter missing!");
                                                        n4 = 32;
                                                    } else {
                                                        this.i();
                                                    }
                                                    n2 = this.f;
                                                    this.a(n4, true);
                                                    this.y[n3] = this.c(n2);
                                                    this.f = n2;
                                                    if (n4 == 32) continue;
                                                    this.i();
                                                    continue;
                                                }
                                                this.c("Attr.value missing f. " + string3);
                                                this.y[n3] = "1";
                                                continue;
                                            }
                                            break block26;
                                            break;
                                        }
                                        this.x = true;
                                        this.i();
                                        this.k();
                                        this.a('>');
                                        break block28;
                                    }
                                    this.c("Unexpected EOF");
                                    return;
                                }
                                this.c("attr name expected");
                                break block28;
                            }
                            this.i();
                        }
                        n3 = this.g++ << 2;
                        this.k = az.a(this.k, n3 + 4);
                        this.k[n3 + 3] = this.e;
                        if (this.g >= this.a.length) {
                            nArray = new int[this.g + 4];
                            System.arraycopy(this.a, 0, nArray, 0, this.a.length);
                            this.a = nArray;
                        }
                        this.a[this.g] = this.a[this.g - 1];
                        if (!this.g) break block29;
                        n = 0;
                        for (n4 = 0; n4 < this.d << 2; n4 += 4) {
                            string = this.y[n4 + 2];
                            n2 = string.indexOf(58);
                            if (n2 != -1) {
                                string2 = string.substring(0, n2);
                                string3 = string.substring(n2 + 1);
                                string = string2;
                            } else {
                                if (!string.equals("xmlns")) continue;
                                string3 = null;
                            }
                            if (string.equals("xmlns")) {
                                nArray = this.a;
                                n2 = this.g;
                                int n6 = nArray[n2];
                                nArray[n2] = n6 + 1;
                                int n7 = n6 << 1;
                                this.l = az.a(this.l, n7 + 2);
                                this.l[n7] = string3;
                                this.l[n7 + 1] = this.y[n4 + 3];
                                if (string3 != null && this.y[n4 + 3].equals("")) {
                                    this.c("illegal empty namespace");
                                }
                                System.arraycopy(this.y, n4 + 4, this.y, n4, (--this.d << 2) - n4);
                                n4 -= 4;
                                continue;
                            }
                            n = 1;
                        }
                        if (n != 0) {
                            for (n4 = (this.d << 2) - 4; n4 >= 0; n4 -= 4) {
                                string3 = this.y[n4 + 2];
                                n = string3.indexOf(58);
                                if (n != 0 || this.h) {
                                    if (n == -1) continue;
                                    string = string3.substring(0, n);
                                    string3 = string3.substring(n + 1);
                                    string2 = this.c(string);
                                    if (string2 != null || this.h) {
                                        this.y[n4] = string2;
                                        this.y[n4 + 1] = string;
                                        this.y[n4 + 2] = string3;
                                        continue;
                                    }
                                    break block27;
                                }
                                throw new RuntimeException("illegal attribute name: " + string3 + " at " + this);
                            }
                        }
                        if ((n = this.e.indexOf(58)) == 0) {
                            this.c("illegal tag name: " + this.e);
                        }
                        if (n != -1) {
                            this.w = this.e.substring(0, n);
                            this.e = this.e.substring(n + 1);
                        }
                        this.v = this.c(this.w);
                        if (this.v == null) {
                            if (this.w != null) {
                                this.c("undefined prefix: " + this.w);
                            }
                            this.v = "";
                        }
                        break block30;
                    }
                    throw new RuntimeException("Undefined Prefix: " + string + " in " + this);
                }
                this.v = "";
            }
            this.k[n3] = this.v;
            this.k[n3 + 1] = this.w;
            this.k[n3 + 2] = this.e;
            return;
        }
        this.i();
        this.a('>');
    }

    /*
     * Enabled aggressive block sorting
     */
    private void h() {
        int n;
        block9: {
            this.c(this.i());
            int n2 = this.f;
            while ((n = this.i()) != 59) {
                if (n >= 128 || n >= 48 && n <= 57 || n >= 97 && n <= 122 || n >= 65 && n <= 90 || n == 95 || n == 45 || n == 35) {
                    this.c(n);
                    continue;
                }
                break block9;
            }
            String string = this.c(n2);
            this.f = n2 - 1;
            if (this.F && this.j == 6) {
                this.e = string;
            }
            if (string.charAt(0) != '#') {
                String string2 = (String)this.i.get(string);
                n2 = string2 == null ? 1 : 0;
                this.E = n2;
                if (this.E) {
                    if (this.F) return;
                    this.c("unresolved: &" + string + ";");
                    return;
                }
                for (n2 = 0; n2 < string2.length(); ++n2) {
                    this.c(string2.charAt(n2));
                }
                return;
            }
            n2 = string.charAt(1) == 'x' ? Integer.parseInt(string.substring(2), 16) : Integer.parseInt(string.substring(1));
            this.c(n2);
            return;
        }
        if (!this.h) {
            this.c("unterminated entity ref");
        }
        if (n == -1) return;
        this.c(n);
    }

    private String j() {
        int n = this.f;
        int n2 = this.d(0);
        if (!(n2 >= 97 && n2 <= 122 || n2 >= 65 && n2 <= 90 || n2 == 95 || n2 == 58 || n2 >= 192 || this.h)) {
            this.c("name expected");
        }
        do {
            this.c(this.i());
        } while ((n2 = this.d(0)) >= 97 && n2 <= 122 || n2 >= 65 && n2 <= 90 || n2 >= 48 && n2 <= 57 || n2 == 95 || n2 == 45 || n2 == 58 || n2 == 46 || n2 >= 183);
        String string = this.c(n);
        this.f = n;
        return string;
    }

    public int a(boolean bl2) {
        this.b = "";
        this.b = 0;
        if (this.e == -99) {
            this.e = this.d();
        }
        if (this.e != -1) {
            if (this.e <= 32) {
                this.b();
                if (bl2) {
                    this.d = -14;
                    return this.d;
                }
            }
            switch (this.e) {
                case 35: {
                    StringBuffer stringBuffer = new StringBuffer();
                    this.e = this.d();
                    do {
                        stringBuffer.append((char)this.e);
                        this.e = this.d();
                    } while (this.e >= 48 && this.e <= 57 || this.e >= 97 && this.e <= 122 || this.e >= 65 && this.e <= 90 || this.e == 45 || this.e == 95);
                    this.d = -6;
                    this.b = stringBuffer.toString();
                    break;
                }
                case 126: {
                    this.e = this.d();
                    if (this.e != 61) {
                        this.d = 126;
                        break;
                    }
                    this.d = -17;
                    this.e = -99;
                    break;
                }
                case 124: {
                    this.e = this.d();
                    if (this.e != 61) {
                        this.d = 126;
                        break;
                    }
                    this.d = -18;
                    this.e = -99;
                    break;
                }
                case 64: {
                    this.e = this.d();
                    this.b = this.a();
                    this.d = -3;
                    break;
                }
                case 48: 
                case 49: 
                case 50: 
                case 51: 
                case 52: 
                case 53: 
                case 54: 
                case 55: 
                case 56: 
                case 57: {
                    this.b(false);
                    break;
                }
                case 47: {
                    this.e = this.d();
                    switch (this.e) {
                        case 42: {
                            int n;
                            this.e = this.d();
                            do {
                                n = this.e;
                                this.e = this.d();
                                if (this.e != 10) continue;
                                ++this.h;
                            } while (this.e != -1 && (n != 42 || this.e != 47));
                            this.e = -99;
                            return this.a(bl2);
                        }
                        case 47: {
                            do {
                                this.e = this.d();
                            } while (this.e != 10 && this.e != 13 && this.e != -1);
                            return this.a(bl2);
                        }
                    }
                    this.d = 47;
                    break;
                }
                case 46: {
                    this.e = this.d();
                    if (this.e >= 48 && this.e <= 57) {
                        this.b(true);
                        break;
                    }
                    this.d = 46;
                    break;
                }
                case 45: {
                    this.e = this.d();
                    this.b(false);
                    this.b = -this.b;
                    break;
                }
                case 39: {
                    this.e = this.d();
                    this.b = this.a('\'');
                    this.d = -4;
                    break;
                }
                case 34: {
                    this.e = this.d();
                    this.b = this.a('\"');
                    this.d = -4;
                    break;
                }
                default: {
                    if ("~|<>+*()[]{}.,;*:%=!@#".indexOf((char)this.e) == -1) {
                        this.b = this.a();
                        if (this.e == 40) {
                            if (this.b.equals("url")) {
                                this.e = this.d();
                                this.b();
                                switch (this.e) {
                                    case 39: {
                                        this.e = this.d();
                                        this.b = this.a('\'');
                                        this.b();
                                        this.a(41);
                                        this.e = -99;
                                        break;
                                    }
                                    case 34: {
                                        this.e = this.d();
                                        this.b = this.a('\"');
                                        this.b();
                                        this.a(41);
                                        this.e = -99;
                                        break;
                                    }
                                    default: {
                                        this.b = this.a(')');
                                    }
                                }
                                this.d = -10;
                                break;
                            }
                            this.d = -16;
                            this.e = -99;
                            break;
                        }
                        this.d = -2;
                        break;
                    }
                    this.d = this.e;
                    this.e = -99;
                }
            }
            return this.d;
        }
        this.d = -1;
        return -1;
    }

    private void b(boolean bl2) {
        long l = 0L;
        long l2 = !bl2 ? 0L : 1L;
        do {
            if (this.e == 46) {
                l2 = 1L;
            } else {
                l2 *= (long)10;
                l = l * (long)10 + (long)this.e - (long)48;
            }
            this.e = this.d();
        } while (this.e >= 48 && this.e <= 57 || this.e == 46);
        l *= (long)1000;
        if (l2 != 0L) {
            l /= l2;
        }
        this.b = (int)l;
        if (this.e != 37) {
            if (this.e >= 97 && this.e <= 122 || this.e >= 65 && this.e <= 90) {
                StringBuffer stringBuffer = new StringBuffer();
                do {
                    stringBuffer.append((char)this.e);
                    this.e = this.d();
                } while (this.e >= 97 && this.e <= 122 || this.e >= 65 && this.e <= 90);
                this.d = -9;
                this.b = stringBuffer.toString();
                return;
            }
            this.d = -7;
            this.b = "";
            return;
        }
        this.d = -8;
        this.e = -99;
        this.b = "%";
    }

    /*
     * Unable to fully structure code
     */
    private on a(az var1_1) {
        block42: {
            var15_2 = this;
            var9_3 = new StringBuffer();
            var5_4 = 0;
            var3_5 = 0;
            var10_6 = new Vector<String>();
            var11_7 = new Vector<String>();
            block21: while (true) {
                var6_10 = null;
                var4_9 = '\u0000';
                var7_11 = null;
                switch (var1_1.d) {
                    case 91: {
                        var1_1.a(false);
                        var7_11 = var1_1.b.toLowerCase();
                        var1_1.a(false);
                        if (var1_1.d == 93) ** GOTO lbl36
                        switch (var1_1.d) {
                            case 61: {
                                var2_8 = 8;
                                ** GOTO lbl28
                            }
                            case -17: {
                                var2_8 = 9;
                                ** GOTO lbl28
                            }
                            case -18: {
                                var2_8 = 10;
lbl28:
                                // 3 sources

                                var1_1.a(false);
                                if (var1_1.d != -4) break block42;
                                var6_10 = var1_1.b;
                                var1_1.a(false);
                                var1_1.a(93);
                                ** GOTO lbl84
                            }
                        }
lbl36:
                        // 1 sources

                        var2_8 = 7;
                        var6_10 = null;
                        ** GOTO lbl84
                    }
                    case 62: {
                        var2_8 = 11;
                        var4_9 = '\u0001';
                        var1_1.a(false);
                        ** GOTO lbl84
                    }
                    case 58: {
                        var2_8 = 3;
                        var1_1.a(false);
                        var3_5 = var1_1.d != -2 ? 1 : 0;
                        var7_11 = var1_1.b;
                        ** GOTO lbl84
                    }
                    case 46: {
                        var7_11 = "class";
                        var2_8 = 2;
                        var1_1.a(false);
                        var3_5 = var1_1.d == -2 ? 0 : 1;
                        var6_10 = var1_1.b;
                        ** GOTO lbl84
                    }
                    case 42: {
                        var1_1.a(true);
                        continue block21;
                    }
                    case -2: {
                        var2_8 = 4;
                        var7_11 = var1_1.b.toLowerCase();
                        ** GOTO lbl84
                    }
                    case -6: {
                        var2_8 = 1;
                        var6_10 = var1_1.b;
                        var7_11 = "id";
                        ** GOTO lbl84
                    }
                    case -14: {
                        var1_1.a(false);
                        if (var1_1.d == 123 || var1_1.d == 44 || var1_1.d == -1) ** break;
                        var4_9 = '\u0001';
                        if (var1_1.d != 62) {
                            var2_8 = 6;
                        } else {
                            var2_8 = 11;
                            var1_1.a(false);
                        }
lbl84:
                        // 9 sources

                        if (var4_9 == '\u0000') {
                            var9_3.insert(var5_4, (char)var2_8);
                            var10_6.insertElementAt(var7_11, var5_4);
                            var11_7.insertElementAt(var6_10, var5_4);
                            ++var5_4;
                            var1_1.a(true);
                            continue block21;
                        }
                        var5_4 = 0;
                        var9_3.insert(0, (char)var2_8);
                        var10_6.insertElementAt(var7_11, 0);
                        var11_7.insertElementAt(var6_10, 0);
                        continue block21;
                    }
                }
                break;
            }
            var3_5 = 1;
            ** break;
        }
        var3_5 = 1;
lbl103:
        // 4 sources

        if (var3_5 == 0 && (var1_1.d == 44 || var1_1.d == 123)) {
            var2_8 = 0;
            block22: for (var5_4 = 0; var5_4 < var9_3.length(); ++var5_4) {
                var6_10 = (String)var10_6.elementAt(var5_4);
                var7_11 = (String)var11_7.elementAt(var5_4);
                var4_9 = var9_3.charAt(var5_4);
                switch (var4_9) {
                    default: {
                        var13_13 = 100;
                        if (var4_9 != '\u0001') {
                            if (var4_9 == '\u0002') {
                                var4_9 = '\t';
                            }
                        } else {
                            var4_9 = '\b';
                            var13_13 = 10000;
                        }
                        var3_5 = -1;
                        if (var15_2.g == null) {
                            var15_2.g = new StringBuffer();
                            var15_2.c = new Vector<E>();
                            var15_2.e = new Vector<E>();
                        } else {
                            for (var8_12 = 0; var8_12 < var15_2.g.length(); ++var8_12) {
                                if (var15_2.g.charAt(var8_12) != var4_9 || !var15_2.c.elementAt(var8_12).equals(var6_10)) continue;
                                var3_5 = var8_12;
                            }
                        }
                        if (var4_9 != '\u0007') {
                            if (var3_5 == -1) {
                                var3_5 = var15_2.g.length();
                                var15_2.g.append(var4_9);
                                var15_2.c.addElement(var6_10);
                                var15_2.e.addElement(new Hashtable<K, V>());
                            }
                            var15_2 = az.a((Hashtable)var15_2.e.elementAt(var3_5), var7_11);
                            var2_8 = (int)((long)var2_8 + var13_13);
                            continue block22;
                        }
                        if (var3_5 == -1) {
                            var3_5 = var15_2.g.length();
                            var15_2.g.append(var4_9);
                            var15_2.c.addElement(var6_10);
                            var15_2.e.addElement(new az(false));
                        }
                        var15_2 = (az)var15_2.e.elementAt(var3_5);
                        continue block22;
                    }
                    case '\u000b': {
                        if (var15_2.f == null) {
                            var15_2.f = new az(false);
                        }
                        var15_2 = var15_2.f;
                        continue block22;
                    }
                    case '\u0006': {
                        if (var15_2.g == null) {
                            var15_2.g = new az(false);
                        }
                        var15_2 = var15_2.g;
                        continue block22;
                    }
                    case '\u0004': {
                        if (var15_2.a == null) {
                            var15_2.a = new Hashtable<K, V>();
                        }
                        ++var2_8;
                        var15_2 = az.a(var15_2.a, var6_10);
                        continue block22;
                    }
                    case '\u0003': {
                        if (var15_2.i == null) {
                            var15_2.i = new Hashtable<K, V>();
                        }
                        var15_2 = az.a(var15_2.i, var6_10);
                        ++var2_8;
                    }
                }
            }
            var12_14 = new on();
            var12_14.d = var2_8;
            if (var15_2.h == null) {
                var15_2.h = new Vector<E>();
            }
            var15_2.h.addElement(var12_14);
            return var12_14;
        }
        var1_1.a("Unrecognized selector");
        while (var1_1.d != 44 && var1_1.d != -1 && var1_1.d != 123) {
            var1_1.a(false);
        }
        return null;
    }

    /*
     * Unable to fully structure code
     */
    public az a(no var1_1, String var2_2, String var3_3) {
        var4_4 = new az(var1_1, var2_2, var3_3);
        var5_5 = var2_2.lastIndexOf(35);
        var9_6 = 0;
        if (var5_5 != -1) {
            var13_7 = ed.a(var2_2.substring(var5_5 + 1), ',');
            var8_8 = new int[var13_7.length];
            for (var5_5 = 0; var5_5 < var8_8.length; ++var5_5) {
                var8_8[var5_5] = Integer.parseInt(var13_7[var5_5]);
            }
        } else {
            var8_8 = new int[]{};
        }
        var5_5 = 0;
        block6: while (var4_4.d != -1) {
            block23: {
                if (var4_4.d != -3) break block23;
                if (!"media".equals(var4_4.b)) {
                    if ("import".equals(var4_4.b)) {
                        var4_4.a(false);
                        var3_3 = var4_4.b;
                        var4_4.a(false);
                        var7_10 = new StringBuffer();
                        while (var4_4.d != 59 && var4_4.d != -1) {
                            var7_10.append(var4_4.b);
                            var4_4.a(false);
                        }
                        if (var1_1.a(var7_10.toString())) {
                            var7_10 = new StringBuffer();
                            var7_10.append(ar.a(var2_2, var3_3));
                            var7_10.append('#');
                            for (var6_9 = 0; var6_9 < var8_8.length; ++var6_9) {
                                var7_10.append(var8_8[var6_9]);
                                var7_10.append(',');
                            }
                            var7_10.append(var9_6);
                            var4_4.d.a(var7_10.toString(), 3, (Object)this);
                        }
                        var4_4.a(false);
                        ++var9_6;
                        continue;
                    }
                    var4_4.a("unsupported @" + var4_4.b);
                    var4_4.a(false);
                    continue;
                }
                var5_5 = 0;
                var4_4.a(false);
                do {
                    if (var4_4.d != 44) {
                        var5_5 |= var1_1.a(var4_4.b);
                    }
                    var4_4.a(false);
                } while (var4_4.d != 123 && var4_4.d != -1);
                var4_4.a(false);
                if (var5_5 != 0) continue;
                var6_9 = 1;
                block10: while (true) {
                    switch (var4_4.d) {
                        case 125: {
                            --var6_9;
                            ** GOTO lbl73
                        }
                        case 123: {
                            ++var6_9;
                        }
lbl73:
                        // 3 sources

                        default: {
                            var4_4.a(false);
                            if (var6_9 > 0) continue block10;
                            continue block6;
                        }
                        case -1: {
                            return this;
                        }
                    }
                    break;
                }
            }
            if (var4_4.d != 125) {
                var10_11 = new Vector<on>();
                var10_11.addElement(this.a(var4_4));
                while (var4_4.d == 44) {
                    var4_4.a(false);
                    var10_11.addElement(this.a(var4_4));
                }
                var12_13 = new on();
                if (var4_4.d == 123) {
                    var4_4.a(false);
                    var12_13.a(var4_4);
                    var4_4.a(125);
                } else {
                    var4_4.a("{ expected");
                }
                for (var6_9 = 0; var6_9 < var10_11.size(); ++var6_9) {
                    var11_12 = (on)var10_11.elementAt(var6_9);
                    if (var11_12 == null) continue;
                    var11_12.e = var9_6;
                    var11_12.f = var8_8;
                    var11_12.b(var12_13);
                }
                var4_4.a(false);
                ++var9_6;
                continue;
            }
            if (var5_5 == 0) {
                var4_4.a("unexpected }");
            }
            var5_5 = 0;
            var4_4.a(false);
        }
        return this;
    }

    public void a(pv pv2, Vector vector) {
        pv pv3;
        int n;
        int n2;
        if (this.h != null) {
            for (n2 = 0; n2 < this.h.size(); ++n2) {
                on on2;
                on on3 = (on)this.h.elementAt(n2);
                for (n = vector.size(); n > 0 && (on2 = (on)vector.elementAt(n - 1)).c(on3) >= 0; --n) {
                    if (on2 != on3) {
                        continue;
                    }
                    n = -1;
                    break;
                }
                if (n == -1) continue;
                vector.insertElementAt(on3, n);
            }
        }
        if (this.g != null) {
            for (n2 = 0; n2 < this.g.length(); ++n2) {
                n = this.g.charAt(n2);
                String string = pv2.d((String)this.c.elementAt(n2));
                if (string == null) continue;
                if (n != 7) {
                    Hashtable hashtable = (Hashtable)this.e.elementAt(n2);
                    if (n != 8) {
                        char c = n != 9 ? (char)',' : ' ';
                        String[] stringArray = ed.a(string, c);
                        for (n = 0; n < stringArray.length; ++n) {
                            az.a(pv2, hashtable, stringArray[n], vector);
                        }
                        continue;
                    }
                    az.a(pv2, hashtable, string, vector);
                    continue;
                }
                ((az)this.e.elementAt(n2)).a(pv2, vector);
            }
        }
        if (this.a != null) {
            az.a(pv2, this.a, pv2.c, vector);
        }
        if (this.f != null && (pv3 = pv2.b) != null) {
            this.f.a(pv3, vector);
        }
        if (this.i != null && pv2.d()) {
            az.a(pv2, this.i, "link", vector);
        }
        if (this.g != null) {
            pv2 = pv2.b;
            while (pv2 != null) {
                this.g.a(pv2, vector);
                pv2 = pv2.b;
            }
        }
    }

    public void a(int n, int n2, int n3, int n4) {
        char c;
        int n5;
        if (n3 != 37 && n3 != 48) {
            n2 = this.j = Math.max(this.j, n2);
        }
        boolean bl2 = n3 == 48;
        n3 = this.d;
        int n6 = 0;
        int n7 = 0;
        boolean bl3 = n4 == 37 || n4 == 1102;
        boolean bl4 = n4 == 48 || n4 == 1102;
        for (n5 = 0; n5 < this.g.length(); n5 += 3) {
            n7 = Math.max(this.h, this.g.charAt(n5));
            n3 = Math.min(this.c, this.g.charAt(n5 + 1));
            c = n5 + 3;
            for (n4 = (int)this.g.charAt(n5 + 2); n4 < n2 && c < this.g.length(); n4 += this.g.charAt(c + 2), c += 3) {
                n7 = Math.max(n7, this.g.charAt(c));
                n3 = Math.min(n3, this.g.charAt(c + 1));
            }
            if (n3 - n7 >= n && (!bl3 || n7 == 0) && (!bl4 || n3 == this.d)) break;
            n6 += this.g.charAt(n5 + 2);
        }
        if (n5 >= this.g.length()) {
            n7 = this.h;
            n3 = this.c;
        }
        n4 = !bl2 ? n7 : n3 - n;
        this.g = n4 - this.h;
        this.b = this.e + n6;
        while (n5 < this.g.length() && n2 >= this.g.charAt(n5 + 2)) {
            n2 -= this.g.charAt(n5 + 2);
            if (!bl2) {
                this.g.setCharAt(n5, (char)(n7 + n));
            } else {
                this.g.setCharAt(n5 + 1, (char)(n3 - n));
            }
            n5 += 3;
        }
        if (n2 > 0) {
            if (n5 < this.g.length()) {
                n4 = this.g.charAt(n5);
                n6 = this.g.charAt(n5 + 1);
                c = (char)(this.g.charAt(n5 + 2) - n2);
                this.g.setCharAt(n5 + 2, c);
                if (bl2) {
                    this.g.insert(n5, (char)n4);
                    this.g.insert(n5 + 1, (char)(n3 - n));
                } else {
                    this.g.insert(n5, (char)(n7 + n));
                    this.g.insert(n5 + 1, (char)n6);
                }
                this.g.insert(n5 + 2, (char)n2);
                return;
            }
            if (bl2) {
                this.g.append((char)this.h);
                this.g.append((char)(n3 - n));
            } else {
                this.g.append((char)(n7 + n));
                this.g.append((char)this.c);
            }
            this.g.append((char)n2);
        }
    }

    public final void a(int n, int n2, ck ck2, dc dc2) {
        int n3 = ck2.a(2);
        int n4 = ck2.b(2);
        if (this.a == null || this.b != n || this.c != n2 || this.g != n4 || this.f != n3) {
            dc2.a();
            this.b = n;
            this.c = n2;
            this.f = n3;
            this.g = n4;
            this.h = ck2.c(2);
            this.i = 200 * ck2.b(0) / 500 << 2;
            n = this.b * this.c;
            if (this.a == null || this.a.length < n) {
                this.a = new int[n];
            }
            n2 = 0;
            int n5 = (this.i << 8) / (this.c * 2) * this.j / 100;
            int n6 = this.h;
            int[] nArray = new int[this.b];
            int[] nArray2 = new int[this.b];
            for (n = 0; n < this.b; ++n) {
                nArray[n] = n2 = n * n5 >> 8;
                nArray2[n] = gu.b(n2, n6) * this.f >> 16;
            }
            n = 0;
            n4 = 0;
            int[] nArray3 = new int[((this.c - 1) * n5 >> 8) + 1];
            az.a(nArray3, n6);
            int[] nArray4 = new int[n2 + 1];
            while (true) {
                n2 = n4;
                if (n >= this.c) break;
                n3 = 0;
                int n7 = n * n5 >> 8;
                az.a(nArray4, nArray3[n7]);
                int n8 = n6 * n7;
                while (true) {
                    n4 = n2;
                    if (n3 >= this.b) break;
                    int n9 = nArray2[n3] | n8 / nArray4[nArray[n3]] << 16;
                    ++n3;
                    n2 = n4 + 1;
                    this.a[n4] = n9;
                }
                ++n;
            }
            this.d = this.a(this.b - 1, 0) & 0xFFFF;
            this.e = this.a(0, this.c - 1) >> 16 & 0xFFFF;
            dc2.b();
        }
    }

    public String c() {
        StringBuffer stringBuffer;
        String string = this.j < a.length ? a[this.j] : "unknown";
        StringBuffer stringBuffer2 = stringBuffer;
        stringBuffer2(string);
        StringBuffer stringBuffer3 = stringBuffer2;
        stringBuffer3.append(' ');
        if (this.j != 2 && this.j != 3) {
            if (this.j != 7) {
                if (this.j == 4) {
                    if (!this.u) {
                        string = this.b();
                        if (string.length() > 16) {
                            string = string.substring(0, 16) + "...";
                        }
                        stringBuffer3.append(string);
                    } else {
                        stringBuffer3.append("(whitespace)");
                    }
                } else {
                    stringBuffer3.append(this.b());
                }
            }
        } else {
            if (this.x) {
                stringBuffer3.append("(empty) ");
            }
            stringBuffer3.append('<');
            if (this.j == 3) {
                stringBuffer3.append('/');
            }
            if (this.w != null) {
                stringBuffer3.append("{" + this.v + "}" + this.w + ":");
            }
            stringBuffer3.append(this.e);
            int n = this.d << 2;
            for (int i = 0; i < n; i += 4) {
                stringBuffer3.append(' ');
                if (this.y[i + 1] != null) {
                    stringBuffer3.append("{" + this.y[i] + "}" + this.y[i + 1] + ":");
                }
                stringBuffer3.append(this.y[i + 2] + "='" + this.y[i + 3] + "'");
            }
            stringBuffer3.append('>');
        }
        stringBuffer3.append("@" + this.h + ":" + this.e);
        if (this.n != null) {
            stringBuffer3.append(" in ");
            stringBuffer3.append(this.n.toString());
        }
        return stringBuffer3.toString();
    }

    public static String a(String string) {
        StringBuffer stringBuffer = new StringBuffer();
        int n = string.length();
        for (int i = 0; i < n; ++i) {
            char c = string.charAt(i);
            if (c != '\uff5e') {
                if (c != '\u00ab') {
                    if (c != '\u00bb') {
                        if ('\uff01' <= c && c <= '\uff5d') {
                            stringBuffer.append((char)(c - 65248));
                            continue;
                        }
                        if ('\u30a1' <= c && c <= '\u30fc') {
                            stringBuffer.append(b[c - 12449]);
                            continue;
                        }
                        if (c != '\u3001') {
                            if (c != '\u3002') {
                                if (c != '\u300c') {
                                    if (c != '\u300d') {
                                        if (c != '\u3099' && c != '\u309b') {
                                            if (c != '\u309a' && c != '\u309c') {
                                                if (c != '\u00a9') {
                                                    stringBuffer.append(c);
                                                    continue;
                                                }
                                                stringBuffer.append("(c)");
                                                continue;
                                            }
                                            stringBuffer.append('\uff9f');
                                            continue;
                                        }
                                        stringBuffer.append('\uff9e');
                                        continue;
                                    }
                                    stringBuffer.append('\uff63');
                                    continue;
                                }
                                stringBuffer.append('\uff62');
                                continue;
                            }
                            stringBuffer.append('\uff61');
                            continue;
                        }
                        stringBuffer.append('\uff64');
                        continue;
                    }
                    stringBuffer.append('\u300b');
                    continue;
                }
                stringBuffer.append('\u300a');
                continue;
            }
            stringBuffer.append('\u301c');
        }
        return stringBuffer.toString();
    }

    public void a(InputStream inputStream, String string) {
        this.b = 0;
        this.i = 0;
        try {
            if (string == null) {
                string = "UTF-8";
            }
            int n = this.i;
            this.n = new InputStreamReader(inputStream, string);
            this.h = 1;
            this.e = 0;
            this.j = 0;
            this.e = null;
            this.v = null;
            this.x = false;
            this.d = -1;
            this.b = 0;
            this.i = 0;
            this.c = 0;
            this.g = 0;
            this.i = new Hashtable();
            this.i.put("amp", "&");
            this.i.put("apos", "'");
            this.i.put("gt", ">");
            this.i.put("lt", "<");
            this.i.put("quot", "\"");
            this.i = n;
            return;
        }
        catch (Exception exception) {
            throw new jw("Invalid stream or encoding: " + exception.toString(), this, exception);
        }
    }

    private void a(String string, on on2) {
        if (this.a == null) {
            this.a = new Hashtable();
        }
        boolean bl2 = true;
        for (int i = 0; i < string.length(); ++i) {
            char c = string.charAt(i);
            if (c >= 'a' && c <= 'z') {
                continue;
            }
            bl2 = false;
            break;
        }
        if (!bl2) {
            on on3 = this.a(new az(null, null, string + "{"));
            on3.b(on2);
            on3.d += on2.d - 1000000;
            return;
        }
        az az2 = new az(false);
        az2.h = new Vector();
        az2.h.addElement(on2);
        az az3 = az2;
        on2.d = -999999;
        this.a.put(string, az3);
    }

    public void a(String string, boolean bl2) {
        if (!"http://xmlpull.org/v1/doc/features.html#process-namespaces".equals(string)) {
            boolean bl3 = string.startsWith("http://xmlpull.org/v1/doc/") ? (false ? string.substring(42).equals("relaxed") : string.substring(40).equals("relaxed")) : false;
            if (!bl3) {
                this.b("unsupported feature: " + string);
                return;
            }
            this.h = bl2;
            return;
        }
        this.g = bl2;
    }

    private void a(int n, boolean bl2) {
        int n2 = 0;
        int n3 = this.d(0);
        while (n3 != -1 && n3 != n && (n != 32 || n3 > 32 && n3 != 62)) {
            if (n3 != 38) {
                if (n3 == 10 && this.j == 2) {
                    this.i();
                    this.c(32);
                } else {
                    this.c(this.i());
                }
            } else {
                if (!bl2) break;
                this.h();
            }
            if (n3 == 62 && n2 >= 2 && n != 93) {
                this.c("Illegal: ]]>");
            }
            n2 = n3 == 93 ? ++n2 : 0;
            n3 = this.d(0);
        }
    }

    private int d(int n) {
        while (n >= this.c) {
            int n2;
            if (this.o.length > 1) {
                if (this.b >= this.i) {
                    this.i = this.n.read(this.o, 0, this.o.length);
                    n2 = this.i > 0 ? this.o[0] : -1;
                    this.b = 1;
                } else {
                    n2 = this.o[this.b++];
                }
            } else {
                n2 = this.n.read();
            }
            if (n2 != 13) {
                if (n2 == 10) {
                    if (!this.D) {
                        this.B[this.c++] = 10;
                    }
                } else {
                    this.B[this.c++] = n2;
                }
                this.D = false;
                continue;
            }
            this.D = true;
            this.B[this.c++] = 10;
        }
        return this.B[n];
    }

    public int g(int n) {
        if (n < this.j) {
            n = this.j;
        }
        if (this.g.length() != 0) {
            int n2 = 3;
            int n3 = Math.max(this.h, this.g.charAt(0));
            int n4 = Math.min(this.c, this.g.charAt(1));
            for (int i = this.g.charAt(2); i < n && n2 < this.g.length(); i += this.g.charAt(n2 + 2), n2 += 3) {
                n3 = Math.max(n3, this.g.charAt(n2));
                n4 = Math.min(n4, this.g.charAt(n2 + 1));
            }
            return n4 - n3;
        }
        return this.d;
    }

    public void b(int n) {
        int n2;
        this.e += n;
        this.j = 0;
        for (n2 = 0; n2 < this.g.length() && n >= this.g.charAt(n2 + 2); n -= this.g.charAt(n2 + 2), n2 += 3) {
        }
        if (n2 > 0) {
            this.g.delete(0, n2);
        }
        if (this.g.length() > 0) {
            this.g.setCharAt(2, (char)(this.g.charAt(2) - n));
        }
    }

    private char c() {
        int n;
        int n2 = 0;
        this.e = this.d();
        for (n = 0; n < 6 && (this.e >= 48 && this.e <= 57 || this.e >= 97 && this.e <= 122 || this.e >= 65 && this.e <= 90); ++n) {
            n2 = n2 * 16 + Character.digit((char)this.e, 16);
            this.e = this.d();
        }
        if (n != 0) {
            if (this.e <= 32) {
                this.e = this.d();
            }
        } else {
            n2 = this.e;
            this.e = this.d();
        }
        return (char)n2;
    }

    private void b() {
        while (this.e <= 32 && this.e != -1) {
            if (this.e == 10) {
                ++this.h;
            }
            this.e = this.d();
        }
    }

    private String a(char c) {
        StringBuffer stringBuffer = new StringBuffer();
        while (this.e != c && this.e != -1 && this.e != 10 && this.e != 13) {
            if (this.e != 92) {
                stringBuffer.append((char)this.e);
                this.e = this.d();
                continue;
            }
            stringBuffer.append(this.c());
        }
        this.e = -99;
        return stringBuffer.toString();
    }

    private String a() {
        StringBuffer stringBuffer = new StringBuffer();
        do {
            if (this.e != 92) {
                stringBuffer.append((char)this.e);
                this.e = this.d();
                continue;
            }
            stringBuffer.append(this.c());
        } while ("~|<>+*()[]{}.,;*:%=!@#".indexOf(this.e) == -1 && this.e > 32);
        return stringBuffer.toString();
    }

    private void c(String string) {
        if (this.h) {
            if (this.b == null) {
                this.b = "ERR: " + string;
            }
            return;
        }
        this.b(string);
    }

    public void a(String string) {
        System.out.print(string + " line: " + this.h + "; token: ");
        switch (this.d) {
            case -4: {
                System.out.println("string '" + this.b + "'");
                return;
            }
            case -2: {
                System.out.println("identifier '" + this.b + "'");
                return;
            }
            case -9: 
            case -8: 
            case -7: {
                System.out.println("numeric " + this.b + " unit: " + this.b);
                return;
            }
            case -10: {
                System.out.println("uri '" + this.b + "'");
                return;
            }
        }
        if (this.d <= 32) {
            System.out.println(this.d);
            return;
        }
        System.out.println((char)this.d);
    }

    public void a(int n) {
        if (this.d != n) {
            this.a("Expected: " + (char)n);
        }
    }

    private void a(char c) {
        int n = this.i();
        if (n != c) {
            this.c("expected: '" + c + "' actual: '" + (char)n + "'");
        }
    }

    private void b(String string) {
        jw jw2;
        if (string.length() >= 100) {
            string = string.substring(0, 100) + "\n";
        }
        jw jw3 = jw2;
        jw3(string, this, null);
        throw jw3;
    }

    private String c(String string) {
        if (!"xml".equals(string)) {
            if (!"xmlns".equals(string)) {
                int n = this.g;
                if (n <= this.g) {
                    block7: {
                        for (n = (this.a[n] << 1) - 2; n >= 0; n -= 2) {
                            if (string == null) {
                                if (this.l[n] != null) continue;
                            } else {
                                if (!string.equals(this.l[n])) {
                                    continue;
                                }
                                break block7;
                            }
                            return this.l[n + 1];
                        }
                        return null;
                    }
                    return this.l[n + 1];
                }
                throw new IndexOutOfBoundsException();
            }
            return "http://www.w3.org/2000/xmlns/";
        }
        return "http://www.w3.org/XML/1998/namespace";
    }

    public String a(int n) {
        if (n < this.d) {
            return this.y[(n << 2) + 2];
        }
        throw new IndexOutOfBoundsException();
    }

    public String b(int n) {
        if (n >= this.d) {
            throw new IndexOutOfBoundsException();
        }
        return this.y[(n << 2) + 3];
    }

    public boolean c(int n) {
        if (n == 37 || n == 48 || n == 1102) {
            this.a(0, 0, 0, n);
            if (this.b != this.e) {
                this.b(this.b - this.e);
                return true;
            }
        }
        return false;
    }

    private int i() {
        int n;
        if (this.c != 0) {
            n = this.B[0];
            this.B[0] = this.B[1];
        } else {
            n = this.d(0);
        }
        --this.c;
        ++this.e;
        if (n == 10) {
            ++this.h;
            this.e = 1;
        }
        return n;
    }

    public az() {
        this.k = new String[16];
        this.l = new String[8];
        this.a = new int[4];
        this.s = new char[128];
        this.y = new String[16];
        this.B = new int[2];
        int n = Runtime.getRuntime().freeMemory() < 0x100000L ? 128 : 8192;
        this.o = new char[n];
    }

    public az(int n, on on2, az az2, int n2, int n3) {
        this.g = new StringBuffer();
        this.d = n;
        this.i = on2;
        if (az2 == null) {
            this.g = new StringBuffer();
        } else {
            az2.b(n3);
            this.g = az2.g;
            this.h = az2.h + n2;
        }
        this.c = this.h + n;
    }

    public az(boolean n) {
        if (n != 0) {
            w w2 = new on().a();
            int n2 = w2.a("88. ") * 1000;
            int n3 = Math.max(1, w2.l() / 2) * 1000;
            this.a(":link", new on().a(4, -16776961, (byte)17).a(12, 1130, (byte)16));
            this.a("address", new on().a(5, 1202, (byte)16));
            this.a("b", new on().a(7, 700000, (byte)0));
            this.a("blockquote", new on().a(5, 1202, (byte)16).a(38, n3, (byte)9).a(39, n2, (byte)9).a(40, n3, (byte)9).a(41, n2, (byte)9));
            this.a("body", new on().a(5, 1202, (byte)16).a(65579, n3 / 2, (byte)9, 0));
            this.a("center", new on().a(5, 1202, (byte)16).a(38, n3, (byte)9).a(40, n3, (byte)9).a(11, 1103, (byte)16));
            this.a("dd", new on().a(5, 1202, (byte)16).a(41, n2, (byte)9));
            this.a("dir", new on().a(5, 1202, (byte)16).a(38, n3, (byte)9).a(40, n3, (byte)9).a(41, n2, (byte)9).a(10, 1301, (byte)16));
            this.a("div", new on().a(5, 1202, (byte)16));
            this.a("dl", new on().a(5, 1202, (byte)16));
            this.a("dt", new on().a(5, 1202, (byte)16));
            this.a("form", new on().a(5, 1202, (byte)16));
            for (n = 1; n <= 6; ++n) {
                this.a("h" + n, new on().a(5, 1202, (byte)16).a(7, 700000, (byte)0).a(38, n3, (byte)9).a(40, n3, (byte)9));
            }
            this.a("hr", new on().a(5, 1202, (byte)16).a(24, 1000, (byte)9).a(28, 1403, (byte)16).a(20, -7829368, (byte)17).a(38, n3, (byte)9).a(40, n3, (byte)9));
            this.a("img", new on().a(5, 1204, (byte)16));
            this.a("input", new on().a(5, 1204, (byte)16));
            this.a("li", new on().a(5, 1205, (byte)16).a(38, n3, (byte)9).a(40, n3, (byte)9));
            this.a("marquee", new on().a(5, 1202, (byte)16));
            this.a("menu", new on().a(5, 1202, (byte)16).a(38, n3, (byte)9).a(40, n3, (byte)9).a(41, n2, (byte)9).a(10, 1301, (byte)16));
            this.a("ol", new on().a(5, 1202, (byte)16).a(41, n2, (byte)9).a(10, 1304, (byte)16));
            this.a("p", new on().a(5, 1202, (byte)16).a(38, n3, (byte)9).a(40, n3, (byte)9));
            this.a("pre", new on().a(5, 1202, (byte)16).a(16, 1114, (byte)16).a(38, n3, (byte)9).a(40, n3, (byte)9));
            this.a("select[multiple]", new on().a(5, 1202, (byte)16).a(65579, 1000, (byte)9, 0).a(65560, 1000, (byte)9, 0).a(65556, -7829368, (byte)17, 0).a(65564, 1403, (byte)16, 0));
            this.a("script", new on().a(5, 0, (byte)16));
            this.a("strong", new on().a(7, 700000, (byte)16));
            this.a("style", new on().a(5, 0, (byte)16));
            this.a("table", new on().a(5, 1206, (byte)16).a(33, 1102, (byte)16));
            this.a("td", new on().a(5, 1214, (byte)16).a(65579, 1000, (byte)9, 0).a(11, 37, (byte)16));
            this.a("th", new on().a(5, 1214, (byte)16).a(7, 700000, (byte)0).a(65579, 1000, (byte)9, 0).a(11, 1103, (byte)16));
            this.a("tr", new on().a(5, 1208, (byte)16));
            this.a("ul", new on().a(5, 1202, (byte)16).a(41, n2, (byte)9).a(10, 1301, (byte)16));
            this.a("ul ul", new on().a(10, 1302, (byte)16));
            this.a("ul ul ul", new on().a(10, 1303, (byte)16));
        }
    }

    public static String[] a() {
        String[] stringArray = new String[a.length * 2];
        StringBuffer stringBuffer = new StringBuffer(8);
        char[] cArray = new char[1];
        for (int i = 0; i < a.length; ++i) {
            stringBuffer.setLength(0);
            for (long k = a[i]; k > 0L; k >>>= 8) {
                stringBuffer.insert(0, (char)(k & (long)255));
            }
            cArray[0] = b[i];
            stringArray[i * 2] = stringBuffer.toString();
            stringArray[i * 2 + 1] = new String(cArray);
        }
        return stringArray;
    }

    private static String[] a(String[] stringArray, int n) {
        if (stringArray.length < n) {
            String[] stringArray2 = new String[n + 16];
            System.arraycopy(stringArray, 0, stringArray2, 0, stringArray.length);
            return stringArray2;
        }
        return stringArray;
    }

    public void a(String string, String string2) {
        if (this.i != null) {
            this.i.put(string, string2);
            return;
        }
        throw new RuntimeException("entity replacement text must be defined after setInput!");
    }

    private static void a(pv pv2, Hashtable hashtable, String string, Vector vector) {
        az az2;
        if (string != null && hashtable != null && (az2 = (az)hashtable.get(string)) != null) {
            az2.a(pv2, vector);
        }
    }

    public static void a(StringBuffer stringBuffer, String string, String string2) {
        if (string2 != null && string2.length() > 0) {
            stringBuffer.append(string);
            stringBuffer.append(string2);
        }
    }

    private static az a(Hashtable hashtable, String string) {
        az az2 = (az)hashtable.get(string);
        if (az2 == null) {
            az az3 = new az(false);
            hashtable.put(string, az3);
            return az3;
        }
        return az2;
    }

    public String b() {
        if (this.j < 4 || this.j == 6 && this.E) {
            return null;
        }
        return this.c(0);
    }

    private void k() {
        int n;
        while ((n = this.d(0)) <= 32 && n != -1) {
            this.i();
        }
    }

    private void c(int n) {
        boolean bl2 = this.u;
        boolean bl3 = n <= 32;
        this.u = bl2 & bl3;
        if (this.f == this.s.length) {
            char[] cArray = new char[this.f * 4 / 3 + 4];
            System.arraycopy(this.s, 0, cArray, 0, this.f);
            this.s = cArray;
        }
        this.s[this.f++] = (char)n;
    }

    private int d() {
        if (this.j < this.e.length()) {
            return this.e.charAt(this.j++);
        }
        return -1;
    }

    static {
        a = new long[]{19829, 20085, 20585, 22633, 26469, 26484, 27749, 27764, 28021, 28261, 28265, 28277, 28530, 28777, 30825, 4417641L, 0x455448L, 4551777L, 5269609L, 5272425L, 5400687L, 5529973L, 6385008L, 6385252L, 6385255L, 6513008L, 6514793L, 6518128L, 6579559L, 6648929L, 6648936L, 6909556L, 7106426L, 7107181L, 7237492L, 7366761L, 7367030L, 7369577L, 7497063L, 7497839L, 7498861L, 7563385L, 7563629L, 7566690L, 7566701L, 7566704L, 7627125L, 7695724L, 7955822L, 0x7A776AL, 1098214764L, 1113945185L, 1165323628L, 1232041057L, 1232432492L, 1333095788L, 1433759084L, 1500867948L, 1516598369L, 1635085676L, 1650816097L, 1651862636L, 1667591796L, 1667854947L, 1668247143L, 1668247673L, 1682010738L, 1684107890L, 1701671792L, 1701737328L, 1702194540L, 1702195823L, 0x666E6F66L, 1749119602L, 1751216754L, 1768911969L, 1769171310L, 1769303404L, 1816228466L, 1818324583L, 1818325618L, 1835098994L, 1851945840L, 1853060450L, 1869767782L, 1869767789L, 1869966700L, 1885434465L, 1885434484L, 1885696624L, 1886547812L, 1886547824L, 1903521652L, 1916891762L, 1918987879L, 1918988914L, 1919246700L, 1935961972L, 1936024436L, 1937072741L, 1937076273L, 1937076274L, 1937076275L, 1937076325L, 1967223410L, 1969320562L, 1970629996L, 2037738860L, 2053469281L, 2054647402L, 280337607015L, 280840729187L, 280992180321L, 281092386407L, 293759382625L, 298020598371L, 306577239393L, 315200467555L, 323757305953L, 340467149159L, 340970271331L, 341137778529L, 345516895589L, 358250671457L, 361990410830L, 362528732257L, 366740075107L, 418279682659L, 418280469605L, 418313431399L, 418431133793L, 418531339879L, 418549165424L, 422591952239L, 426902841708L, 427021394547L, 427120751218L, 431198336097L, 431264722291L, 435459551843L, 435627783289L, 435695217014L, 435811873652L, 440005653356L, 444016192865L, 452639421027L, 452673954668L, 452806666085L, 0x696E66696EL, 461196259425L, 465491293551L, 465524058476L, 465541625199L, 465793283439L, 469835543400L, 469919560303L, 469920281971L, 474080242785L, 474130510696L, 474316302702L, 478409224803L, 478442973543L, 478560218725L, 478576732001L, 478627526003L, 482906304100L, 482955849061L, 491260242275L, 491261097327L, 491293862252L, 491311428975L, 491563087215L, 495572841839L, 495689624929L, 495975164263L, 499967685729L, 499968340590L, 499984917605L, 499984983411L, 500135191653L, 504179028579L, 504397785448L, 71886536275045L, 71912556426853L, 71968240723045L, 74094181902700L, 75185137345906L, 76284582786149L, 76310602937957L, 80682629297253L, 80708649449061L, 83981330703457L, 86261891884133L, 87279699063909L, 87305719215717L, 87357158159208L, 87361403511909L, 91686301757294L, 93876768830565L, 93902788982373L, 98274815341669L, 107070908363877L, 107096928515685L, 107152612811877L, 108243751952754L, 109278553991532L, 109356082423150L, 110369509434738L, 110404120962149L, 111468954874981L, 111494975026789L, 112628846390380L, 112641446195506L, 112641446195508L, 112641446196020L, 114784635876467L, 114784820029808L, 115867001386085L, 115893021537893L, 115936021803892L, 119165702792289L, 119187161706354L, 119226000044916L, 119242811864431L, 120299423297396L, 121446263972965L, 122464071152741L, 122490091304549L, 122541530248040L, 122545775600741L, 122545775666547L, 123581013780844L, 123611129277806L, 125784231473010L, 125839881631087L, 126870673846126L, 126896543981926L, 126926507500915L, 127991727416628L, 127991794266992L, 129061140919397L, 129087161071205L, 131277443658352L, 133459187430501L, 19545414385299310L, 22356822567579502L, 24049014012669806L, 27422255507274093L, 28552613640040302L, 31364021822320494L, 33056213267410798L, 8388065856503118189L};
        b = new char[]{'\u039c', '\u039d', '\u03a0', '\u039e', '\u2265', '>', '\u2264', '<', '\u03bc', '\u2260', '\u220b', '\u03bd', '\u2228', '\u03c0', '\u03be', '\u03a7', '\u00d0', '\u0397', '\u03a6', '\u03a8', '\u03a1', '\u03a4', '&', '\u2227', '\u2220', '\u2229', '\u03c7', '\u222a', '\u00b0', '\u03b7', '\u00f0', '\u222b', '\u25ca', '\u200e', '\u00ac', '\u03c6', '\u03d6', '\u03c8', '\u00ae', '\u03c1', '\u200f', '\u00ad', '\u223c', '\u2282', '\u2211', '\u2283', '\u03c4', '\u00a8', '\u00a5', '\u200d', '\u00c4', '\u0392', '\u00cb', '\u0399', '\u00cf', '\u00d6', '\u00dc', '\u0178', '\u0396', '\u00e4', '\u03b2', '\u2022', '\u00a2', '\u02c6', '\u2245', '\u00a9', '\u21d3', '\u2193', '\u2003', '\u2002', '\u00eb', '\u20ac', '\u0192', '\u21d4', '\u2194', '\u03b9', '\u2208', '\u00ef', '\u21d0', '\u2329', '\u2190', '\u00af', '\u00a0', '\u2284', '\u00aa', '\u00ba', '\u00f6', '\u00b6', '\u2202', '\u22a5', '\u220f', '\u221d', '\"', '\u21d2', '\u232a', '\u2192', '\u211c', '\u22c5', '\u00a7', '\u2286', '\u00b9', '\u00b2', '\u00b3', '\u2287', '\u21d1', '\u2191', '\u00fc', '\u00ff', '\u03b6', '\u200c', '\u00c6', '\u00c2', '\u0391', '\u00c5', '\u0394', '\u00ca', '\u0393', '\u00ce', '\u039a', '\u0152', '\u00d4', '\u03a9', '\u2033', '\u03a3', '\u00de', '\u0398', '\u00db', '\u00e2', '\u00b4', '\u00e6', '\u03b1', '\u00e5', '\u2248', '\u201e', '\u00b8', '\u2663', '\u21b5', '\u03b4', '\u2666', '\u00ea', '\u2205', '\u2261', '\u2203', '\u2044', '\u03b3', '\u00ee', '\u00a1', '\u2111', '\u221e', '\u03ba', '\u00ab', '\u2308', '\u201c', '\u2018', '\u2014', '\u00b5', '\u2212', '\u2207', '\u2013', '\u2209', '\u00f4', '\u0153', '\u203e', '\u03c9', '\u2295', '\u00a3', '\u2032', '\u221a', '\u00bb', '\u2309', '\u201d', '\u2019', '\u201a', '\u03c3', '\u00df', '\u03b8', '\u00fe', '\u02dc', '\u00d7', '\u2122', '\u00fb', '\u03d2', '\u00c1', '\u00c0', '\u00c3', '\u00c7', '\u2021', '\u00c9', '\u00c8', '\u00cd', '\u00cc', '\u039b', '\u00d1', '\u00d3', '\u00d2', '\u00d8', '\u00d5', '\u0160', '\u00da', '\u00d9', '\u00dd', '\u00e1', '\u00e0', '\u00e3', '\u00a6', '\u00e7', '\u00a4', '\u2020', '\u00f7', '\u00e9', '\u00e8', '\u2200', '\u00bd', '\u00bc', '\u00be', '\u2665', '\u2026', '\u00ed', '\u00ec', '\u00bf', '\u03bb', '\u230a', '\u2217', '\u2039', '\u00b7', '\u00f1', '\u00f3', '\u00f2', '\u00f8', '\u00f5', '\u2297', '\u2030', '\u00b1', '\u230b', '\u203a', '\u0161', '\u03c2', '\u2660', '\u2234', '\u2009', '\u00fa', '\u00f9', '\u2118', '\u00fd', '\u0395', '\u039f', '\u03a5', '\u2135', '\u03b5', '\u03bf', '\u03c5', '\u03d1'};
        b = new String[]{"\uff67", "\uff71", "\uff68", "\uff72", "\uff69", "\uff73", "\uff6a", "\uff74", "\uff6b", "\uff75", "\uff76", "\uff76\uff9e", "\uff77", "\uff77\uff9e", "\uff78", "\uff78\uff9e", "\uff79", "\uff79\uff9e", "\uff7a", "\uff7a\uff9e", "\uff7b", "\uff7b\uff9e", "\uff7c", "\uff7c\uff9e", "\uff7d", "\uff7d\uff9e", "\uff7e", "\uff7e\uff9e", "\uff7f", "\uff7f\uff9e", "\uff80", "\uff80\uff9e", "\uff81", "\uff81\uff9e", "\uff6f", "\uff82", "\uff82\uff9e", "\uff83", "\uff83\uff9e", "\uff84", "\uff84\uff9e", "\uff85", "\uff86", "\uff87", "\uff88", "\uff89", "\uff8a", "\uff8a\uff9e", "\uff8a\uff9f", "\uff8b", "\uff8b\uff9e", "\uff8b\uff9f", "\uff8c", "\uff8c\uff9e", "\uff8c\uff9f", "\uff8d", "\uff8d\uff9e", "\uff8d\uff9f", "\uff8e", "\uff8e\uff9e", "\uff8e\uff9f", "\uff8f", "\uff90", "\uff91", "\uff92", "\uff93", "\uff6c", "\uff94", "\uff6d", "\uff95", "\uff6e", "\uff96", "\uff97", "\uff98", "\uff99", "\uff9a", "\uff9b", "\uff9c", "\uff9c", "\uff68", "\uff6a", "\uff66", "\uff9d", "\uff69\uff9e", "\uff76", "\uff79", "\uff9c\uff9e", "\uff68\uff9e", "\uff6a\uff9e", "\uff66\uff9e", "\uff65", "\uff70"};
        a = new String[]{"START_DOCUMENT", "END_DOCUMENT", "START_TAG", "END_TAG", "TEXT", "CDSECT", "ENTITY_REF", "IGNORABLE_WHITESPACE", "PROCESSING_INSTRUCTION", "COMMENT", "DOCDECL"};
    }

    public az(no no2, String string, String string2) {
        this.e = -99;
        this.d = no2;
        this.e = string2;
        this.a(false);
    }

    public az(int n) {
        this.j = n;
    }

    public void d(int n) {
        this.e += n;
    }

    private String c(int n) {
        return new String(this.s, n, this.f - n);
    }

    public static int a(int n) {
        return 2 - n;
    }

    private int a(int n, int n2) {
        return this.a[n2 * this.b + n];
    }

    private static void a(int[] nArray, int n) {
        int n2 = 1 - 2 * n;
        for (int i = 0; i < nArray.length; ++i) {
            nArray[i] = n++;
            n2 = n2 >= 0 ? n2 + 4 * (i - n) + 2 : n2 + 4 * i + 6;
        }
    }
}

