/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as published
* by the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*----------------------------------------------------------------------
*/
package org.geogebra.desktop.sound.mp3transform;
public class Constants {
static final double[] POW2 = new double[256];
static {
for (int i = 0; i < POW2.length; i++) {
POW2[i] = Math.pow(2.0, (0.25 * (i - 210.0)));
}
}
private static final double[] D = { 0.0f, -4.42505E-4f, 0.003250122f,
-0.007003784f, 0.031082153f, -0.07862854f, 0.10031128f,
-0.57203674f, 1.144989f, 0.57203674f, 0.10031128f, 0.07862854f,
0.031082153f, 0.007003784f, 0.003250122f, 4.42505E-4f, -1.5259E-5f,
-4.73022E-4f, 0.003326416f, -0.007919312f, 0.030517578f,
-0.08418274f, 0.090927124f, -0.6002197f, 1.1442871f, 0.54382324f,
0.1088562f, 0.07305908f, 0.03147888f, 0.006118774f, 0.003173828f,
3.96729E-4f, -1.5259E-5f, -5.34058E-4f, 0.003387451f, -0.008865356f,
0.029785156f, -0.08970642f, 0.08068848f, -0.6282959f, 1.1422119f,
0.51560974f, 0.11657715f, 0.06752014f, 0.03173828f, 0.0052948f,
0.003082275f, 3.66211E-4f, -1.5259E-5f, -5.79834E-4f, 0.003433228f,
-0.009841919f, 0.028884888f, -0.09516907f, 0.06959534f, -0.6562195f,
1.1387634f, 0.48747253f, 0.12347412f, 0.06199646f, 0.031845093f,
0.004486084f, 0.002990723f, 3.20435E-4f, -1.5259E-5f, -6.2561E-4f,
0.003463745f, -0.010848999f, 0.027801514f, -0.10054016f,
0.057617188f, -0.6839142f, 1.1339264f, 0.45947266f, 0.12957764f,
0.056533813f, 0.031814575f, 0.003723145f, 0.00289917f, 2.89917E-4f,
-1.5259E-5f, -6.86646E-4f, 0.003479004f, -0.011886597f,
0.026535034f, -0.1058197f, 0.044784546f, -0.71131897f, 1.1277466f,
0.43165588f, 0.1348877f, 0.051132202f, 0.031661987f, 0.003005981f,
0.002792358f, 2.59399E-4f, -1.5259E-5f, -7.47681E-4f, 0.003479004f,
-0.012939453f, 0.02508545f, -0.110946655f, 0.031082153f,
-0.7383728f, 1.120224f, 0.40408325f, 0.13945007f, 0.045837402f,
0.03138733f, 0.002334595f, 0.002685547f, 2.44141E-4f, -3.0518E-5f,
-8.08716E-4f, 0.003463745f, -0.014022827f, 0.023422241f,
-0.11592102f, 0.01651001f, -0.7650299f, 1.1113739f, 0.37680054f,
0.14326477f, 0.040634155f, 0.03100586f, 0.001693726f, 0.002578735f,
2.13623E-4f, -3.0518E-5f, -8.8501E-4f, 0.003417969f, -0.01512146f,
0.021575928f, -0.12069702f, 0.001068115f, -0.791214f, 1.1012115f,
0.34986877f, 0.1463623f, 0.03555298f, 0.030532837f, 0.001098633f,
0.002456665f, 1.98364E-4f, -3.0518E-5f, -9.61304E-4f, 0.003372192f,
-0.016235352f, 0.01953125f, -0.1252594f, -0.015228271f, -0.816864f,
1.0897827f, 0.32331848f, 0.1487732f, 0.03060913f, 0.029937744f,
5.49316E-4f, 0.002349854f, 1.67847E-4f, -3.0518E-5f, -0.001037598f,
0.00328064f, -0.017349243f, 0.01725769f, -0.12956238f, -0.03237915f,
-0.84194946f, 1.0771179f, 0.2972107f, 0.15049744f, 0.025817871f,
0.029281616f, 3.0518E-5f, 0.002243042f, 1.52588E-4f, -4.5776E-5f,
-0.001113892f, 0.003173828f, -0.018463135f, 0.014801025f,
-0.1335907f, -0.050354004f, -0.8663635f, 1.0632172f, 0.2715912f,
0.15159607f, 0.0211792f, 0.028533936f, -4.42505E-4f, 0.002120972f,
1.37329E-4f, -4.5776E-5f, -0.001205444f, 0.003051758f,
-0.019577026f, 0.012115479f, -0.13729858f, -0.06916809f,
-0.89009094f, 1.0481567f, 0.24650574f, 0.15206909f, 0.016708374f,
0.02772522f, -8.69751E-4f, 0.00201416f, 1.2207E-4f, -6.1035E-5f,
-0.001296997f, 0.002883911f, -0.020690918f, 0.009231567f,
-0.14067078f, -0.088775635f, -0.9130554f, 1.0319366f, 0.22198486f,
0.15196228f, 0.012420654f, 0.02684021f, -0.001266479f, 0.001907349f,
1.06812E-4f, -6.1035E-5f, -0.00138855f, 0.002700806f, -0.02178955f,
0.006134033f, -0.14367676f, -0.10916138f, -0.9351959f, 1.0146179f,
0.19805908f, 0.15130615f, 0.00831604f, 0.025909424f, -0.001617432f,
0.001785278f, 1.06812E-4f, -7.6294E-5f, -0.001480103f, 0.002487183f,
-0.022857666f, 0.002822876f, -0.1462555f, -0.13031006f,
-0.95648193f, 0.99624634f, 0.17478943f, 0.15011597f, 0.004394531f,
0.024932861f, -0.001937866f, 0.001693726f, 9.1553E-5f, -7.6294E-5f,
-0.001586914f, 0.002227783f, -0.023910522f, -6.86646E-4f,
-0.14842224f, -0.15220642f, -0.9768524f, 0.9768524f, 0.15220642f,
0.14842224f, 6.86646E-4f, 0.023910522f, -0.002227783f, 0.001586914f,
7.6294E-5f, -9.1553E-5f, -0.001693726f, 0.001937866f, -0.024932861f,
-0.004394531f, -0.15011597f, -0.17478943f, -0.99624634f,
0.95648193f, 0.13031006f, 0.1462555f, -0.002822876f, 0.022857666f,
-0.002487183f, 0.001480103f, 7.6294E-5f, -1.06812E-4f,
-0.001785278f, 0.001617432f, -0.025909424f, -0.00831604f,
-0.15130615f, -0.19805908f, -1.0146179f, 0.9351959f, 0.10916138f,
0.14367676f, -0.006134033f, 0.02178955f, -0.002700806f, 0.00138855f,
6.1035E-5f, -1.06812E-4f, -0.001907349f, 0.001266479f, -0.02684021f,
-0.012420654f, -0.15196228f, -0.22198486f, -1.0319366f, 0.9130554f,
0.088775635f, 0.14067078f, -0.009231567f, 0.020690918f,
-0.002883911f, 0.001296997f, 6.1035E-5f, -1.2207E-4f, -0.00201416f,
8.69751E-4f, -0.02772522f, -0.016708374f, -0.15206909f,
-0.24650574f, -1.0481567f, 0.89009094f, 0.06916809f, 0.13729858f,
-0.012115479f, 0.019577026f, -0.003051758f, 0.001205444f,
4.5776E-5f, -1.37329E-4f, -0.002120972f, 4.42505E-4f, -0.028533936f,
-0.0211792f, -0.15159607f, -0.2715912f, -1.0632172f, 0.8663635f,
0.050354004f, 0.1335907f, -0.014801025f, 0.018463135f,
-0.003173828f, 0.001113892f, 4.5776E-5f, -1.52588E-4f,
-0.002243042f, -3.0518E-5f, -0.029281616f, -0.025817871f,
-0.15049744f, -0.2972107f, -1.0771179f, 0.84194946f, 0.03237915f,
0.12956238f, -0.01725769f, 0.017349243f, -0.00328064f, 0.001037598f,
3.0518E-5f, -1.67847E-4f, -0.002349854f, -5.49316E-4f,
-0.029937744f, -0.03060913f, -0.1487732f, -0.32331848f, -1.0897827f,
0.816864f, 0.015228271f, 0.1252594f, -0.01953125f, 0.016235352f,
-0.003372192f, 9.61304E-4f, 3.0518E-5f, -1.98364E-4f, -0.002456665f,
-0.001098633f, -0.030532837f, -0.03555298f, -0.1463623f,
-0.34986877f, -1.1012115f, 0.791214f, -0.001068115f, 0.12069702f,
-0.021575928f, 0.01512146f, -0.003417969f, 8.8501E-4f, 3.0518E-5f,
-2.13623E-4f, -0.002578735f, -0.001693726f, -0.03100586f,
-0.040634155f, -0.14326477f, -0.37680054f, -1.1113739f, 0.7650299f,
-0.01651001f, 0.11592102f, -0.023422241f, 0.014022827f,
-0.003463745f, 8.08716E-4f, 3.0518E-5f, -2.44141E-4f, -0.002685547f,
-0.002334595f, -0.03138733f, -0.045837402f, -0.13945007f,
-0.40408325f, -1.120224f, 0.7383728f, -0.031082153f, 0.110946655f,
-0.02508545f, 0.012939453f, -0.003479004f, 7.47681E-4f, 1.5259E-5f,
-2.59399E-4f, -0.002792358f, -0.003005981f, -0.031661987f,
-0.051132202f, -0.1348877f, -0.43165588f, -1.1277466f, 0.71131897f,
-0.044784546f, 0.1058197f, -0.026535034f, 0.011886597f,
-0.003479004f, 6.86646E-4f, 1.5259E-5f, -2.89917E-4f, -0.00289917f,
-0.003723145f, -0.031814575f, -0.056533813f, -0.12957764f,
-0.45947266f, -1.1339264f, 0.6839142f, -0.057617188f, 0.10054016f,
-0.027801514f, 0.010848999f, -0.003463745f, 6.2561E-4f, 1.5259E-5f,
-3.20435E-4f, -0.002990723f, -0.004486084f, -0.031845093f,
-0.06199646f, -0.12347412f, -0.48747253f, -1.1387634f, 0.6562195f,
-0.06959534f, 0.09516907f, -0.028884888f, 0.009841919f,
-0.003433228f, 5.79834E-4f, 1.5259E-5f, -3.66211E-4f, -0.003082275f,
-0.0052948f, -0.03173828f, -0.06752014f, -0.11657715f, -0.51560974f,
-1.1422119f, 0.6282959f, -0.08068848f, 0.08970642f, -0.029785156f,
0.008865356f, -0.003387451f, 5.34058E-4f, 1.5259E-5f, -3.96729E-4f,
-0.003173828f, -0.006118774f, -0.03147888f, -0.07305908f,
-0.1088562f, -0.54382324f, -1.1442871f, 0.6002197f, -0.090927124f,
0.08418274f, -0.030517578f, 0.007919312f, -0.003326416f,
4.73022E-4f, 1.5259E-5f };
static final double[] TWO_TO_NEGATIVE_HALF_POW = { 1.0000000000E+00f,
7.0710678119E-01f, 5.0000000000E-01f, 3.5355339059E-01f,
2.5000000000E-01f, 1.7677669530E-01f, 1.2500000000E-01f,
8.8388347648E-02f, 6.2500000000E-02f, 4.4194173824E-02f,
3.1250000000E-02f, 2.2097086912E-02f, 1.5625000000E-02f,
1.1048543456E-02f, 7.8125000000E-03f, 5.5242717280E-03f,
3.9062500000E-03f, 2.7621358640E-03f, 1.9531250000E-03f,
1.3810679320E-03f, 9.7656250000E-04f, 6.9053396600E-04f,
4.8828125000E-04f, 3.4526698300E-04f, 2.4414062500E-04f,
1.7263349150E-04f, 1.2207031250E-04f, 8.6316745750E-05f,
6.1035156250E-05f, 4.3158372875E-05f, 3.0517578125E-05f,
2.1579186438E-05f, 1.5258789062E-05f, 1.0789593219E-05f,
7.6293945312E-06f, 5.3947966094E-06f, 3.8146972656E-06f,
2.6973983047E-06f, 1.9073486328E-06f, 1.3486991523E-06f,
9.5367431641E-07f, 6.7434957617E-07f, 4.7683715820E-07f,
3.3717478809E-07f, 2.3841857910E-07f, 1.6858739404E-07f,
1.1920928955E-07f, 8.4293697022E-08f, 5.9604644775E-08f,
4.2146848511E-08f, 2.9802322388E-08f, 2.1073424255E-08f,
1.4901161194E-08f, 1.0536712128E-08f, 7.4505805969E-09f,
5.2683560639E-09f, 3.7252902985E-09f, 2.6341780319E-09f,
1.8626451492E-09f, 1.3170890160E-09f, 9.3132257462E-10f,
6.5854450798E-10f, 4.6566128731E-10f, 3.2927225399E-10f };
static final double[] TAN12 = { 0.0f, 0.26794919f, 0.57735027f, 1.0f,
1.73205081f, 3.73205081f, 9.9999999e10f, -3.73205081f, -1.73205081f,
-1.0f, -0.57735027f, -0.26794919f, 0.0f, 0.26794919f, 0.57735027f,
1.0f };
static final int T43_SIZE = 8192;
static final double[] T43 = new double[T43_SIZE];
static {
// DOUBLE
double d43 = (4.0 / 3.0);
for (int i = 0; i < T43_SIZE; i++) {
T43[i] = Math.pow(i, d43);
}
}
static final int[][][] NR_OF_SFB_BLOCK = {
{ { 6, 5, 5, 5 }, { 9, 9, 9, 9 }, { 6, 9, 9, 9 } },
{ { 6, 5, 7, 3 }, { 9, 9, 12, 6 }, { 6, 9, 12, 6 } },
{ { 11, 10, 0, 0 }, { 18, 18, 0, 0 }, { 15, 18, 0, 0 } },
{ { 7, 7, 7, 0 }, { 12, 12, 12, 0 }, { 6, 15, 12, 0 } },
{ { 6, 6, 6, 3 }, { 12, 9, 9, 6 }, { 6, 12, 9, 6 } },
{ { 8, 8, 5, 0 }, { 15, 12, 9, 0 }, { 6, 18, 9, 0 } } };
static final double[][] WIN = {
{ -1.6141214951E-02f, -5.3603178919E-02f, -1.0070713296E-01f,
-1.6280817573E-01f, -4.9999999679E-01f, -3.8388735032E-01f,
-6.2061144372E-01f, -1.1659756083E+00f, -3.8720752656E+00f,
-4.2256286556E+00f, -1.5195289984E+00f, -9.7416483388E-01f,
-7.3744074053E-01f, -1.2071067773E+00f, -5.1636156596E-01f,
-4.5426052317E-01f, -4.0715656898E-01f, -3.6969460527E-01f,
-3.3876269197E-01f, -3.1242222492E-01f, -2.8939587111E-01f,
-2.6880081906E-01f, -5.0000000266E-01f, -2.3251417468E-01f,
-2.1596714708E-01f, -2.0004979098E-01f, -1.8449493497E-01f,
-1.6905846094E-01f, -1.5350360518E-01f, -1.3758624925E-01f,
-1.2103922149E-01f, -2.0710679058E-01f, -8.4752577594E-02f,
-6.4157525656E-02f, -4.1131172614E-02f,
-1.4790705759E-02f },
{ -1.6141214951E-02f, -5.3603178919E-02f, -1.0070713296E-01f,
-1.6280817573E-01f, -4.9999999679E-01f, -3.8388735032E-01f,
-6.2061144372E-01f, -1.1659756083E+00f, -3.8720752656E+00f,
-4.2256286556E+00f, -1.5195289984E+00f, -9.7416483388E-01f,
-7.3744074053E-01f, -1.2071067773E+00f, -5.1636156596E-01f,
-4.5426052317E-01f, -4.0715656898E-01f, -3.6969460527E-01f,
-3.3908542600E-01f, -3.1511810350E-01f, -2.9642226150E-01f,
-2.8184548650E-01f, -5.4119610000E-01f, -2.6213228100E-01f,
-2.5387916537E-01f, -2.3296291359E-01f, -1.9852728987E-01f,
-1.5233534808E-01f, -9.6496400054E-02f, -3.3423828516E-02f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f },
{ -4.8300800645E-02f, -1.5715656932E-01f, -2.8325045177E-01f,
-4.2953747763E-01f, -1.2071067795E+00f, -8.2426483178E-01f,
-1.1451749106E+00f, -1.7695290101E+00f, -4.5470225061E+00f,
-3.4890531002E+00f, -7.3296292804E-01f, -1.5076514758E-01f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f },
{ 0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f,
0.0000000000E+00f, 0.0000000000E+00f, 0.0000000000E+00f,
-1.5076513660E-01f, -7.3296291107E-01f, -3.4890530566E+00f,
-4.5470224727E+00f, -1.7695290031E+00f, -1.1451749092E+00f,
-8.3137738100E-01f, -1.3065629650E+00f, -5.4142014250E-01f,
-4.6528974900E-01f, -4.1066990750E-01f, -3.7004680800E-01f,
-3.3876269197E-01f, -3.1242222492E-01f, -2.8939587111E-01f,
-2.6880081906E-01f, -5.0000000266E-01f, -2.3251417468E-01f,
-2.1596714708E-01f, -2.0004979098E-01f, -1.8449493497E-01f,
-1.6905846094E-01f, -1.5350360518E-01f, -1.3758624925E-01f,
-1.2103922149E-01f, -2.0710679058E-01f, -8.4752577594E-02f,
-6.4157525656E-02f, -4.1131172614E-02f,
-1.4790705759E-02f } };
static final double[] CA = { -0.5144957554270f, -0.4717319685650f,
-0.3133774542040f, -0.1819131996110f, -0.0945741925262f,
-0.0409655828852f, -0.0141985685725f, -0.00369997467375f };
static final double[] CS = { 0.857492925712f, 0.881741997318f,
0.949628649103f, 0.983314592492f, 0.995517816065f, 0.999160558175f,
0.999899195243f, 0.999993155067f };
static final double[][] IO = {
{ 1.0000000000E+00f, 8.4089641526E-01f, 7.0710678119E-01f,
5.9460355751E-01f, 5.0000000001E-01f, 4.2044820763E-01f,
3.5355339060E-01f, 2.9730177876E-01f, 2.5000000001E-01f,
2.1022410382E-01f, 1.7677669530E-01f, 1.4865088938E-01f,
1.2500000000E-01f, 1.0511205191E-01f, 8.8388347652E-02f,
7.4325444691E-02f, 6.2500000003E-02f, 5.2556025956E-02f,
4.4194173826E-02f, 3.7162722346E-02f, 3.1250000002E-02f,
2.6278012978E-02f, 2.2097086913E-02f, 1.8581361173E-02f,
1.5625000001E-02f, 1.3139006489E-02f, 1.1048543457E-02f,
9.2906805866E-03f, 7.8125000006E-03f, 6.5695032447E-03f,
5.5242717285E-03f, 4.6453402934E-03f },
{ 1.0000000000E+00f, 7.0710678119E-01f, 5.0000000000E-01f,
3.5355339060E-01f, 2.5000000000E-01f, 1.7677669530E-01f,
1.2500000000E-01f, 8.8388347650E-02f, 6.2500000001E-02f,
4.4194173825E-02f, 3.1250000001E-02f, 2.2097086913E-02f,
1.5625000000E-02f, 1.1048543456E-02f, 7.8125000002E-03f,
5.5242717282E-03f, 3.9062500001E-03f, 2.7621358641E-03f,
1.9531250001E-03f, 1.3810679321E-03f, 9.7656250004E-04f,
6.9053396603E-04f, 4.8828125002E-04f, 3.4526698302E-04f,
2.4414062501E-04f, 1.7263349151E-04f, 1.2207031251E-04f,
8.6316745755E-05f, 6.1035156254E-05f, 4.3158372878E-05f,
3.0517578127E-05f, 2.1579186439E-05f } };
static final int[] PRETAB = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
2, 2, 3, 3, 3, 2, 0 };
static final int[][] SLEN = {
{ 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 },
{ 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 } };
static final int[][] VAL_TAB_0 = { { 0, 0 } // dummy
};
static final int[][] VAL_TAB_1 = { { 2, 1 }, { 0, 0 }, { 2, 1 }, { 0, 16 },
{ 2, 1 }, { 0, 1 }, { 0, 17 }, };
static final int[][] VAL_TAB_2 = { { 2, 1 }, { 0, 0 }, { 4, 1 }, { 2, 1 },
{ 0, 16 }, { 0, 1 }, { 2, 1 }, { 0, 17 }, { 4, 1 }, { 2, 1 },
{ 0, 32 }, { 0, 33 }, { 2, 1 }, { 0, 18 }, { 2, 1 }, { 0, 2 },
{ 0, 34 }, };
static final int[][] VAL_TAB_3 = { { 4, 1 }, { 2, 1 }, { 0, 0 }, { 0, 1 },
{ 2, 1 }, { 0, 17 }, { 2, 1 }, { 0, 16 }, { 4, 1 }, { 2, 1 },
{ 0, 32 }, { 0, 33 }, { 2, 1 }, { 0, 18 }, { 2, 1 }, { 0, 2 },
{ 0, 34 }, };
static final int[][] VAL_TAB_4 = { { 0, 0 } }; // dummy
static final int[][] VAL_TAB_5 = { { 2, 1 }, { 0, 0 }, { 4, 1 }, { 2, 1 },
{ 0, 16 }, { 0, 1 }, { 2, 1 }, { 0, 17 }, { 8, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 32 }, { 0, 2 }, { 2, 1 }, { 0, 33 }, { 0, 18 },
{ 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 34 }, { 0, 48 }, { 2, 1 },
{ 0, 3 }, { 0, 19 }, { 2, 1 }, { 0, 49 }, { 2, 1 }, { 0, 50 },
{ 2, 1 }, { 0, 35 }, { 0, 51 }, };
static final int[][] VAL_TAB_6 = { { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 0 },
{ 0, 16 }, { 0, 17 }, { 6, 1 }, { 2, 1 }, { 0, 1 }, { 2, 1 },
{ 0, 32 }, { 0, 33 }, { 6, 1 }, { 2, 1 }, { 0, 18 }, { 2, 1 },
{ 0, 2 }, { 0, 34 }, { 4, 1 }, { 2, 1 }, { 0, 49 }, { 0, 19 },
{ 4, 1 }, { 2, 1 }, { 0, 48 }, { 0, 50 }, { 2, 1 }, { 0, 35 },
{ 2, 1 }, { 0, 3 }, { 0, 51 }, };
static final int[][] VAL_TAB_7 = { { 2, 1 }, { 0, 0 }, { 4, 1 }, { 2, 1 },
{ 0, 16 }, { 0, 1 }, { 8, 1 }, { 2, 1 }, { 0, 17 }, { 4, 1 },
{ 2, 1 }, { 0, 32 }, { 0, 2 }, { 0, 33 }, { 18, 1 }, { 6, 1 },
{ 2, 1 }, { 0, 18 }, { 2, 1 }, { 0, 34 }, { 0, 48 }, { 4, 1 },
{ 2, 1 }, { 0, 49 }, { 0, 19 }, { 4, 1 }, { 2, 1 }, { 0, 3 },
{ 0, 50 }, { 2, 1 }, { 0, 35 }, { 0, 4 }, { 10, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 64 }, { 0, 65 }, { 2, 1 }, { 0, 20 }, { 2, 1 },
{ 0, 66 }, { 0, 36 }, { 12, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 51 }, { 0, 67 }, { 0, 80 }, { 4, 1 }, { 2, 1 }, { 0, 52 },
{ 0, 5 }, { 0, 81 }, { 6, 1 }, { 2, 1 }, { 0, 21 }, { 2, 1 },
{ 0, 82 }, { 0, 37 }, { 4, 1 }, { 2, 1 }, { 0, 68 }, { 0, 53 },
{ 4, 1 }, { 2, 1 }, { 0, 83 }, { 0, 84 }, { 2, 1 }, { 0, 69 },
{ 0, 85 }, };
static final int[][] VAL_TAB_8 = { { 6, 1 }, { 2, 1 }, { 0, 0 }, { 2, 1 },
{ 0, 16 }, { 0, 1 }, { 2, 1 }, { 0, 17 }, { 4, 1 }, { 2, 1 },
{ 0, 33 }, { 0, 18 }, { 14, 1 }, { 4, 1 }, { 2, 1 }, { 0, 32 },
{ 0, 2 }, { 2, 1 }, { 0, 34 }, { 4, 1 }, { 2, 1 }, { 0, 48 },
{ 0, 3 }, { 2, 1 }, { 0, 49 }, { 0, 19 }, { 14, 1 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 50 }, { 0, 35 }, { 2, 1 }, { 0, 64 },
{ 0, 4 }, { 2, 1 }, { 0, 65 }, { 2, 1 }, { 0, 20 }, { 0, 66 },
{ 12, 1 }, { 6, 1 }, { 2, 1 }, { 0, 36 }, { 2, 1 }, { 0, 51 },
{ 0, 80 }, { 4, 1 }, { 2, 1 }, { 0, 67 }, { 0, 52 }, { 0, 81 },
{ 6, 1 }, { 2, 1 }, { 0, 21 }, { 2, 1 }, { 0, 5 }, { 0, 82 },
{ 6, 1 }, { 2, 1 }, { 0, 37 }, { 2, 1 }, { 0, 68 }, { 0, 53 },
{ 2, 1 }, { 0, 83 }, { 2, 1 }, { 0, 69 }, { 2, 1 }, { 0, 84 },
{ 0, 85 }, };
static final int[][] VAL_TAB_9 = { { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 0 },
{ 0, 16 }, { 2, 1 }, { 0, 1 }, { 0, 17 }, { 10, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 32 }, { 0, 33 }, { 2, 1 }, { 0, 18 }, { 2, 1 },
{ 0, 2 }, { 0, 34 }, { 12, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 48 }, { 0, 3 }, { 0, 49 }, { 2, 1 }, { 0, 19 }, { 2, 1 },
{ 0, 50 }, { 0, 35 }, { 12, 1 }, { 4, 1 }, { 2, 1 }, { 0, 65 },
{ 0, 20 }, { 4, 1 }, { 2, 1 }, { 0, 64 }, { 0, 51 }, { 2, 1 },
{ 0, 66 }, { 0, 36 }, { 10, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 4 }, { 0, 80 }, { 0, 67 }, { 2, 1 }, { 0, 52 }, { 0, 81 },
{ 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 21 }, { 0, 82 }, { 2, 1 },
{ 0, 37 }, { 0, 68 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 5 },
{ 0, 84 }, { 0, 83 }, { 2, 1 }, { 0, 53 }, { 2, 1 }, { 0, 69 },
{ 0, 85 }, };
static final int[][] VAL_TAB_10 = { { 2, 1 }, { 0, 0 }, { 4, 1 }, { 2, 1 },
{ 0, 16 }, { 0, 1 }, { 10, 1 }, { 2, 1 }, { 0, 17 }, { 4, 1 },
{ 2, 1 }, { 0, 32 }, { 0, 2 }, { 2, 1 }, { 0, 33 }, { 0, 18 },
{ 28, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 34 }, { 0, 48 },
{ 2, 1 }, { 0, 49 }, { 0, 19 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 3 }, { 0, 50 }, { 2, 1 }, { 0, 35 }, { 0, 64 }, { 4, 1 },
{ 2, 1 }, { 0, 65 }, { 0, 20 }, { 4, 1 }, { 2, 1 }, { 0, 4 },
{ 0, 51 }, { 2, 1 }, { 0, 66 }, { 0, 36 }, { 28, 1 }, { 10, 1 },
{ 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 80 }, { 0, 5 }, { 0, 96 },
{ 2, 1 }, { 0, 97 }, { 0, 22 }, { 12, 1 }, { 6, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 67 }, { 0, 52 }, { 0, 81 }, { 2, 1 }, { 0, 21 },
{ 2, 1 }, { 0, 82 }, { 0, 37 }, { 4, 1 }, { 2, 1 }, { 0, 38 },
{ 0, 54 }, { 0, 113 }, { 20, 1 }, { 8, 1 }, { 2, 1 }, { 0, 23 },
{ 4, 1 }, { 2, 1 }, { 0, 68 }, { 0, 83 }, { 0, 6 }, { 6, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 53 }, { 0, 69 }, { 0, 98 }, { 2, 1 },
{ 0, 112 }, { 2, 1 }, { 0, 7 }, { 0, 100 }, { 14, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 114 }, { 0, 39 }, { 6, 1 }, { 2, 1 }, { 0, 99 },
{ 2, 1 }, { 0, 84 }, { 0, 85 }, { 2, 1 }, { 0, 70 }, { 0, 115 },
{ 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 55 }, { 0, 101 }, { 2, 1 },
{ 0, 86 }, { 0, 116 }, { 6, 1 }, { 2, 1 }, { 0, 71 }, { 2, 1 },
{ 0, 102 }, { 0, 117 }, { 4, 1 }, { 2, 1 }, { 0, 87 }, { 0, 118 },
{ 2, 1 }, { 0, 103 }, { 0, 119 }, };
static final int[][] VAL_TAB_11 = { { 6, 1 }, { 2, 1 }, { 0, 0 }, { 2, 1 },
{ 0, 16 }, { 0, 1 }, { 8, 1 }, { 2, 1 }, { 0, 17 }, { 4, 1 },
{ 2, 1 }, { 0, 32 }, { 0, 2 }, { 0, 18 }, { 24, 1 }, { 8, 1 },
{ 2, 1 }, { 0, 33 }, { 2, 1 }, { 0, 34 }, { 2, 1 }, { 0, 48 },
{ 0, 3 }, { 4, 1 }, { 2, 1 }, { 0, 49 }, { 0, 19 }, { 4, 1 },
{ 2, 1 }, { 0, 50 }, { 0, 35 }, { 4, 1 }, { 2, 1 }, { 0, 64 },
{ 0, 4 }, { 2, 1 }, { 0, 65 }, { 0, 20 }, { 30, 1 }, { 16, 1 },
{ 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 66 }, { 0, 36 }, { 4, 1 },
{ 2, 1 }, { 0, 51 }, { 0, 67 }, { 0, 80 }, { 4, 1 }, { 2, 1 },
{ 0, 52 }, { 0, 81 }, { 0, 97 }, { 6, 1 }, { 2, 1 }, { 0, 22 },
{ 2, 1 }, { 0, 6 }, { 0, 38 }, { 2, 1 }, { 0, 98 }, { 2, 1 },
{ 0, 21 }, { 2, 1 }, { 0, 5 }, { 0, 82 }, { 16, 1 }, { 10, 1 },
{ 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 37 }, { 0, 68 }, { 0, 96 },
{ 2, 1 }, { 0, 99 }, { 0, 54 }, { 4, 1 }, { 2, 1 }, { 0, 112 },
{ 0, 23 }, { 0, 113 }, { 16, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 7 }, { 0, 100 }, { 0, 114 }, { 2, 1 }, { 0, 39 }, { 4, 1 },
{ 2, 1 }, { 0, 83 }, { 0, 53 }, { 2, 1 }, { 0, 84 }, { 0, 69 },
{ 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 70 }, { 0, 115 }, { 2, 1 },
{ 0, 55 }, { 2, 1 }, { 0, 101 }, { 0, 86 }, { 10, 1 }, { 6, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 85 }, { 0, 87 }, { 0, 116 }, { 2, 1 },
{ 0, 71 }, { 0, 102 }, { 4, 1 }, { 2, 1 }, { 0, 117 }, { 0, 118 },
{ 2, 1 }, { 0, 103 }, { 0, 119 }, };
static final int[][] VAL_TAB_12 = { { 12, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 16 }, { 0, 1 }, { 2, 1 }, { 0, 17 }, { 2, 1 }, { 0, 0 },
{ 2, 1 }, { 0, 32 }, { 0, 2 }, { 16, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 33 }, { 0, 18 }, { 4, 1 }, { 2, 1 }, { 0, 34 }, { 0, 49 },
{ 2, 1 }, { 0, 19 }, { 2, 1 }, { 0, 48 }, { 2, 1 }, { 0, 3 },
{ 0, 64 }, { 26, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 50 },
{ 0, 35 }, { 2, 1 }, { 0, 65 }, { 0, 51 }, { 10, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 20 }, { 0, 66 }, { 2, 1 }, { 0, 36 }, { 2, 1 },
{ 0, 4 }, { 0, 80 }, { 4, 1 }, { 2, 1 }, { 0, 67 }, { 0, 52 },
{ 2, 1 }, { 0, 81 }, { 0, 21 }, { 28, 1 }, { 14, 1 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 82 }, { 0, 37 }, { 2, 1 }, { 0, 83 },
{ 0, 53 }, { 4, 1 }, { 2, 1 }, { 0, 96 }, { 0, 22 }, { 0, 97 },
{ 4, 1 }, { 2, 1 }, { 0, 98 }, { 0, 38 }, { 6, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 5 }, { 0, 6 }, { 0, 68 }, { 2, 1 }, { 0, 84 },
{ 0, 69 }, { 18, 1 }, { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 99 },
{ 0, 54 }, { 4, 1 }, { 2, 1 }, { 0, 112 }, { 0, 7 }, { 0, 113 },
{ 4, 1 }, { 2, 1 }, { 0, 23 }, { 0, 100 }, { 2, 1 }, { 0, 70 },
{ 0, 114 }, { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 39 }, { 2, 1 },
{ 0, 85 }, { 0, 115 }, { 2, 1 }, { 0, 55 }, { 0, 86 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 101 }, { 0, 116 }, { 2, 1 }, { 0, 71 },
{ 0, 102 }, { 4, 1 }, { 2, 1 }, { 0, 117 }, { 0, 87 }, { 2, 1 },
{ 0, 118 }, { 2, 1 }, { 0, 103 }, { 0, 119 }, };
static final int[][] VAL_TAB_13 = { { 2, 1 }, { 0, 0 }, { 6, 1 }, { 2, 1 },
{ 0, 16 }, { 2, 1 }, { 0, 1 }, { 0, 17 }, { 28, 1 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 2, 1 }, { 0, 33 },
{ 0, 18 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 34 }, { 0, 48 },
{ 2, 1 }, { 0, 3 }, { 0, 49 }, { 6, 1 }, { 2, 1 }, { 0, 19 },
{ 2, 1 }, { 0, 50 }, { 0, 35 }, { 4, 1 }, { 2, 1 }, { 0, 64 },
{ 0, 4 }, { 0, 65 }, { 70, 1 }, { 28, 1 }, { 14, 1 }, { 6, 1 },
{ 2, 1 }, { 0, 20 }, { 2, 1 }, { 0, 51 }, { 0, 66 }, { 4, 1 },
{ 2, 1 }, { 0, 36 }, { 0, 80 }, { 2, 1 }, { 0, 67 }, { 0, 52 },
{ 4, 1 }, { 2, 1 }, { 0, 81 }, { 0, 21 }, { 4, 1 }, { 2, 1 },
{ 0, 5 }, { 0, 82 }, { 2, 1 }, { 0, 37 }, { 2, 1 }, { 0, 68 },
{ 0, 83 }, { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 96 },
{ 0, 6 }, { 2, 1 }, { 0, 97 }, { 0, 22 }, { 4, 1 }, { 2, 1 },
{ 0, 128 }, { 0, 8 }, { 0, 129 }, { 16, 1 }, { 8, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 53 }, { 0, 98 }, { 2, 1 }, { 0, 38 }, { 0, 84 },
{ 4, 1 }, { 2, 1 }, { 0, 69 }, { 0, 99 }, { 2, 1 }, { 0, 54 },
{ 0, 112 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 7 }, { 0, 85 },
{ 0, 113 }, { 2, 1 }, { 0, 23 }, { 2, 1 }, { 0, 39 }, { 0, 55 },
{ 72, 1 }, { 24, 1 }, { 12, 1 }, { 4, 1 }, { 2, 1 }, { 0, 24 },
{ 0, 130 }, { 2, 1 }, { 0, 40 }, { 4, 1 }, { 2, 1 }, { 0, 100 },
{ 0, 70 }, { 0, 114 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 132 },
{ 0, 72 }, { 2, 1 }, { 0, 144 }, { 0, 9 }, { 2, 1 }, { 0, 145 },
{ 0, 25 }, { 24, 1 }, { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 115 }, { 0, 101 }, { 2, 1 }, { 0, 86 }, { 0, 116 }, { 4, 1 },
{ 2, 1 }, { 0, 71 }, { 0, 102 }, { 0, 131 }, { 6, 1 }, { 2, 1 },
{ 0, 56 }, { 2, 1 }, { 0, 117 }, { 0, 87 }, { 2, 1 }, { 0, 146 },
{ 0, 41 }, { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 103 },
{ 0, 133 }, { 2, 1 }, { 0, 88 }, { 0, 57 }, { 2, 1 }, { 0, 147 },
{ 2, 1 }, { 0, 73 }, { 0, 134 }, { 6, 1 }, { 2, 1 }, { 0, 160 },
{ 2, 1 }, { 0, 104 }, { 0, 10 }, { 2, 1 }, { 0, 161 }, { 0, 26 },
{ 68, 1 }, { 24, 1 }, { 12, 1 }, { 4, 1 }, { 2, 1 }, { 0, 162 },
{ 0, 42 }, { 4, 1 }, { 2, 1 }, { 0, 149 }, { 0, 89 }, { 2, 1 },
{ 0, 163 }, { 0, 58 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 74 },
{ 0, 150 }, { 2, 1 }, { 0, 176 }, { 0, 11 }, { 2, 1 }, { 0, 177 },
{ 0, 27 }, { 20, 1 }, { 8, 1 }, { 2, 1 }, { 0, 178 }, { 4, 1 },
{ 2, 1 }, { 0, 118 }, { 0, 119 }, { 0, 148 }, { 6, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 135 }, { 0, 120 }, { 0, 164 }, { 4, 1 }, { 2, 1 },
{ 0, 105 }, { 0, 165 }, { 0, 43 }, { 12, 1 }, { 6, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 90 }, { 0, 136 }, { 0, 179 }, { 2, 1 }, { 0, 59 },
{ 2, 1 }, { 0, 121 }, { 0, 166 }, { 6, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 106 }, { 0, 180 }, { 0, 192 }, { 4, 1 }, { 2, 1 }, { 0, 12 },
{ 0, 152 }, { 0, 193 }, { 60, 1 }, { 22, 1 }, { 10, 1 }, { 6, 1 },
{ 2, 1 }, { 0, 28 }, { 2, 1 }, { 0, 137 }, { 0, 181 }, { 2, 1 },
{ 0, 91 }, { 0, 194 }, { 4, 1 }, { 2, 1 }, { 0, 44 }, { 0, 60 },
{ 4, 1 }, { 2, 1 }, { 0, 182 }, { 0, 107 }, { 2, 1 }, { 0, 196 },
{ 0, 76 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 168 },
{ 0, 138 }, { 2, 1 }, { 0, 208 }, { 0, 13 }, { 2, 1 }, { 0, 209 },
{ 2, 1 }, { 0, 75 }, { 2, 1 }, { 0, 151 }, { 0, 167 }, { 12, 1 },
{ 6, 1 }, { 2, 1 }, { 0, 195 }, { 2, 1 }, { 0, 122 }, { 0, 153 },
{ 4, 1 }, { 2, 1 }, { 0, 197 }, { 0, 92 }, { 0, 183 }, { 4, 1 },
{ 2, 1 }, { 0, 29 }, { 0, 210 }, { 2, 1 }, { 0, 45 }, { 2, 1 },
{ 0, 123 }, { 0, 211 }, { 52, 1 }, { 28, 1 }, { 12, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 61 }, { 0, 198 }, { 4, 1 }, { 2, 1 }, { 0, 108 },
{ 0, 169 }, { 2, 1 }, { 0, 154 }, { 0, 212 }, { 8, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 184 }, { 0, 139 }, { 2, 1 }, { 0, 77 }, { 0, 199 },
{ 4, 1 }, { 2, 1 }, { 0, 124 }, { 0, 213 }, { 2, 1 }, { 0, 93 },
{ 0, 224 }, { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 225 }, { 0, 30 },
{ 4, 1 }, { 2, 1 }, { 0, 14 }, { 0, 46 }, { 0, 226 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 227 }, { 0, 109 }, { 2, 1 }, { 0, 140 },
{ 0, 228 }, { 4, 1 }, { 2, 1 }, { 0, 229 }, { 0, 186 }, { 0, 240 },
{ 38, 1 }, { 16, 1 }, { 4, 1 }, { 2, 1 }, { 0, 241 }, { 0, 31 },
{ 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 170 }, { 0, 155 }, { 0, 185 },
{ 2, 1 }, { 0, 62 }, { 2, 1 }, { 0, 214 }, { 0, 200 }, { 12, 1 },
{ 6, 1 }, { 2, 1 }, { 0, 78 }, { 2, 1 }, { 0, 215 }, { 0, 125 },
{ 2, 1 }, { 0, 171 }, { 2, 1 }, { 0, 94 }, { 0, 201 }, { 6, 1 },
{ 2, 1 }, { 0, 15 }, { 2, 1 }, { 0, 156 }, { 0, 110 }, { 2, 1 },
{ 0, 242 }, { 0, 47 }, { 32, 1 }, { 16, 1 }, { 6, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 216 }, { 0, 141 }, { 0, 63 }, { 6, 1 }, { 2, 1 },
{ 0, 243 }, { 2, 1 }, { 0, 230 }, { 0, 202 }, { 2, 1 }, { 0, 244 },
{ 0, 79 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 187 }, { 0, 172 },
{ 2, 1 }, { 0, 231 }, { 0, 245 }, { 4, 1 }, { 2, 1 }, { 0, 217 },
{ 0, 157 }, { 2, 1 }, { 0, 95 }, { 0, 232 }, { 30, 1 }, { 12, 1 },
{ 6, 1 }, { 2, 1 }, { 0, 111 }, { 2, 1 }, { 0, 246 }, { 0, 203 },
{ 4, 1 }, { 2, 1 }, { 0, 188 }, { 0, 173 }, { 0, 218 }, { 8, 1 },
{ 2, 1 }, { 0, 247 }, { 4, 1 }, { 2, 1 }, { 0, 126 }, { 0, 127 },
{ 0, 142 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 158 }, { 0, 174 },
{ 0, 204 }, { 2, 1 }, { 0, 248 }, { 0, 143 }, { 18, 1 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 219 }, { 0, 189 }, { 2, 1 }, { 0, 234 },
{ 0, 249 }, { 4, 1 }, { 2, 1 }, { 0, 159 }, { 0, 235 }, { 2, 1 },
{ 0, 190 }, { 2, 1 }, { 0, 205 }, { 0, 250 }, { 14, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 221 }, { 0, 236 }, { 6, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 233 }, { 0, 175 }, { 0, 220 }, { 2, 1 }, { 0, 206 },
{ 0, 251 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 191 }, { 0, 222 },
{ 2, 1 }, { 0, 207 }, { 0, 238 }, { 4, 1 }, { 2, 1 }, { 0, 223 },
{ 0, 239 }, { 2, 1 }, { 0, 255 }, { 2, 1 }, { 0, 237 }, { 2, 1 },
{ 0, 253 }, { 2, 1 }, { 0, 252 }, { 0, 254 } };
static final int[][] VAL_TAB_14 = { { 0, 0 } // dummy
};
static final int[][] VAL_TAB_15 = { { 16, 1 }, { 6, 1 }, { 2, 1 }, { 0, 0 },
{ 2, 1 }, { 0, 16 }, { 0, 1 }, { 2, 1 }, { 0, 17 }, { 4, 1 },
{ 2, 1 }, { 0, 32 }, { 0, 2 }, { 2, 1 }, { 0, 33 }, { 0, 18 },
{ 50, 1 }, { 16, 1 }, { 6, 1 }, { 2, 1 }, { 0, 34 }, { 2, 1 },
{ 0, 48 }, { 0, 49 }, { 6, 1 }, { 2, 1 }, { 0, 19 }, { 2, 1 },
{ 0, 3 }, { 0, 64 }, { 2, 1 }, { 0, 50 }, { 0, 35 }, { 14, 1 },
{ 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 4 }, { 0, 20 }, { 0, 65 },
{ 4, 1 }, { 2, 1 }, { 0, 51 }, { 0, 66 }, { 2, 1 }, { 0, 36 },
{ 0, 67 }, { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 52 }, { 2, 1 },
{ 0, 80 }, { 0, 5 }, { 2, 1 }, { 0, 81 }, { 0, 21 }, { 4, 1 },
{ 2, 1 }, { 0, 82 }, { 0, 37 }, { 4, 1 }, { 2, 1 }, { 0, 68 },
{ 0, 83 }, { 0, 97 }, { 90, 1 }, { 36, 1 }, { 18, 1 }, { 10, 1 },
{ 6, 1 }, { 2, 1 }, { 0, 53 }, { 2, 1 }, { 0, 96 }, { 0, 6 },
{ 2, 1 }, { 0, 22 }, { 0, 98 }, { 4, 1 }, { 2, 1 }, { 0, 38 },
{ 0, 84 }, { 2, 1 }, { 0, 69 }, { 0, 99 }, { 10, 1 }, { 6, 1 },
{ 2, 1 }, { 0, 54 }, { 2, 1 }, { 0, 112 }, { 0, 7 }, { 2, 1 },
{ 0, 113 }, { 0, 85 }, { 4, 1 }, { 2, 1 }, { 0, 23 }, { 0, 100 },
{ 2, 1 }, { 0, 114 }, { 0, 39 }, { 24, 1 }, { 16, 1 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 70 }, { 0, 115 }, { 2, 1 }, { 0, 55 },
{ 0, 101 }, { 4, 1 }, { 2, 1 }, { 0, 86 }, { 0, 128 }, { 2, 1 },
{ 0, 8 }, { 0, 116 }, { 4, 1 }, { 2, 1 }, { 0, 129 }, { 0, 24 },
{ 2, 1 }, { 0, 130 }, { 0, 40 }, { 16, 1 }, { 8, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 71 }, { 0, 102 }, { 2, 1 }, { 0, 131 }, { 0, 56 },
{ 4, 1 }, { 2, 1 }, { 0, 117 }, { 0, 87 }, { 2, 1 }, { 0, 132 },
{ 0, 72 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 144 }, { 0, 25 },
{ 0, 145 }, { 4, 1 }, { 2, 1 }, { 0, 146 }, { 0, 118 }, { 2, 1 },
{ 0, 103 }, { 0, 41 }, { 92, 1 }, { 36, 1 }, { 18, 1 }, { 10, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 133 }, { 0, 88 }, { 4, 1 }, { 2, 1 },
{ 0, 9 }, { 0, 119 }, { 0, 147 }, { 4, 1 }, { 2, 1 }, { 0, 57 },
{ 0, 148 }, { 2, 1 }, { 0, 73 }, { 0, 134 }, { 10, 1 }, { 6, 1 },
{ 2, 1 }, { 0, 104 }, { 2, 1 }, { 0, 160 }, { 0, 10 }, { 2, 1 },
{ 0, 161 }, { 0, 26 }, { 4, 1 }, { 2, 1 }, { 0, 162 }, { 0, 42 },
{ 2, 1 }, { 0, 149 }, { 0, 89 }, { 26, 1 }, { 14, 1 }, { 6, 1 },
{ 2, 1 }, { 0, 163 }, { 2, 1 }, { 0, 58 }, { 0, 135 }, { 4, 1 },
{ 2, 1 }, { 0, 120 }, { 0, 164 }, { 2, 1 }, { 0, 74 }, { 0, 150 },
{ 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 105 }, { 0, 176 }, { 0, 177 },
{ 4, 1 }, { 2, 1 }, { 0, 27 }, { 0, 165 }, { 0, 178 }, { 14, 1 },
{ 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 90 }, { 0, 43 }, { 2, 1 },
{ 0, 136 }, { 0, 151 }, { 2, 1 }, { 0, 179 }, { 2, 1 }, { 0, 121 },
{ 0, 59 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 106 }, { 0, 180 },
{ 2, 1 }, { 0, 75 }, { 0, 193 }, { 4, 1 }, { 2, 1 }, { 0, 152 },
{ 0, 137 }, { 2, 1 }, { 0, 28 }, { 0, 181 }, { 80, 1 }, { 34, 1 },
{ 16, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 91 }, { 0, 44 },
{ 0, 194 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 11 }, { 0, 192 },
{ 0, 166 }, { 2, 1 }, { 0, 167 }, { 0, 122 }, { 10, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 195 }, { 0, 60 }, { 4, 1 }, { 2, 1 }, { 0, 12 },
{ 0, 153 }, { 0, 182 }, { 4, 1 }, { 2, 1 }, { 0, 107 }, { 0, 196 },
{ 2, 1 }, { 0, 76 }, { 0, 168 }, { 20, 1 }, { 10, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 138 }, { 0, 197 }, { 4, 1 }, { 2, 1 }, { 0, 208 },
{ 0, 92 }, { 0, 209 }, { 4, 1 }, { 2, 1 }, { 0, 183 }, { 0, 123 },
{ 2, 1 }, { 0, 29 }, { 2, 1 }, { 0, 13 }, { 0, 45 }, { 12, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 210 }, { 0, 211 }, { 4, 1 }, { 2, 1 },
{ 0, 61 }, { 0, 198 }, { 2, 1 }, { 0, 108 }, { 0, 169 }, { 6, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 154 }, { 0, 184 }, { 0, 212 }, { 4, 1 },
{ 2, 1 }, { 0, 139 }, { 0, 77 }, { 2, 1 }, { 0, 199 }, { 0, 124 },
{ 68, 1 }, { 34, 1 }, { 18, 1 }, { 10, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 213 }, { 0, 93 }, { 4, 1 }, { 2, 1 }, { 0, 224 }, { 0, 14 },
{ 0, 225 }, { 4, 1 }, { 2, 1 }, { 0, 30 }, { 0, 226 }, { 2, 1 },
{ 0, 170 }, { 0, 46 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 185 },
{ 0, 155 }, { 2, 1 }, { 0, 227 }, { 0, 214 }, { 4, 1 }, { 2, 1 },
{ 0, 109 }, { 0, 62 }, { 2, 1 }, { 0, 200 }, { 0, 140 }, { 16, 1 },
{ 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 228 }, { 0, 78 }, { 2, 1 },
{ 0, 215 }, { 0, 125 }, { 4, 1 }, { 2, 1 }, { 0, 229 }, { 0, 186 },
{ 2, 1 }, { 0, 171 }, { 0, 94 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 201 }, { 0, 156 }, { 2, 1 }, { 0, 241 }, { 0, 31 }, { 6, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 240 }, { 0, 110 }, { 0, 242 }, { 2, 1 },
{ 0, 47 }, { 0, 230 }, { 38, 1 }, { 18, 1 }, { 8, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 216 }, { 0, 243 }, { 2, 1 }, { 0, 63 }, { 0, 244 },
{ 6, 1 }, { 2, 1 }, { 0, 79 }, { 2, 1 }, { 0, 141 }, { 0, 217 },
{ 2, 1 }, { 0, 187 }, { 0, 202 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 172 }, { 0, 231 }, { 2, 1 }, { 0, 126 }, { 0, 245 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 157 }, { 0, 95 }, { 2, 1 }, { 0, 232 },
{ 0, 142 }, { 2, 1 }, { 0, 246 }, { 0, 203 }, { 34, 1 }, { 18, 1 },
{ 10, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 15 }, { 0, 174 },
{ 0, 111 }, { 2, 1 }, { 0, 188 }, { 0, 218 }, { 4, 1 }, { 2, 1 },
{ 0, 173 }, { 0, 247 }, { 2, 1 }, { 0, 127 }, { 0, 233 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 158 }, { 0, 204 }, { 2, 1 }, { 0, 248 },
{ 0, 143 }, { 4, 1 }, { 2, 1 }, { 0, 219 }, { 0, 189 }, { 2, 1 },
{ 0, 234 }, { 0, 249 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 159 }, { 0, 220 }, { 2, 1 }, { 0, 205 }, { 0, 235 }, { 4, 1 },
{ 2, 1 }, { 0, 190 }, { 0, 250 }, { 2, 1 }, { 0, 175 }, { 0, 221 },
{ 14, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 236 }, { 0, 206 },
{ 0, 251 }, { 4, 1 }, { 2, 1 }, { 0, 191 }, { 0, 237 }, { 2, 1 },
{ 0, 222 }, { 0, 252 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 207 },
{ 0, 253 }, { 0, 238 }, { 4, 1 }, { 2, 1 }, { 0, 223 }, { 0, 254 },
{ 2, 1 }, { 0, 239 }, { 0, 255 }, };
static final int[][] VAL_TAB_16 = { { 2, 1 }, { 0, 0 }, { 6, 1 }, { 2, 1 },
{ 0, 16 }, { 2, 1 }, { 0, 1 }, { 0, 17 }, { 42, 1 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 2, 1 }, { 0, 33 },
{ 0, 18 }, { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 34 }, { 2, 1 },
{ 0, 48 }, { 0, 3 }, { 2, 1 }, { 0, 49 }, { 0, 19 }, { 10, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 50 }, { 0, 35 }, { 4, 1 }, { 2, 1 },
{ 0, 64 }, { 0, 4 }, { 0, 65 }, { 6, 1 }, { 2, 1 }, { 0, 20 },
{ 2, 1 }, { 0, 51 }, { 0, 66 }, { 4, 1 }, { 2, 1 }, { 0, 36 },
{ 0, 80 }, { 2, 1 }, { 0, 67 }, { 0, 52 }, { 138, 1 }, { 40, 1 },
{ 16, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 5 }, { 0, 21 },
{ 0, 81 }, { 4, 1 }, { 2, 1 }, { 0, 82 }, { 0, 37 }, { 4, 1 },
{ 2, 1 }, { 0, 68 }, { 0, 53 }, { 0, 83 }, { 10, 1 }, { 6, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 96 }, { 0, 6 }, { 0, 97 }, { 2, 1 },
{ 0, 22 }, { 0, 98 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 38 },
{ 0, 84 }, { 2, 1 }, { 0, 69 }, { 0, 99 }, { 4, 1 }, { 2, 1 },
{ 0, 54 }, { 0, 112 }, { 0, 113 }, { 40, 1 }, { 18, 1 }, { 8, 1 },
{ 2, 1 }, { 0, 23 }, { 2, 1 }, { 0, 7 }, { 2, 1 }, { 0, 85 },
{ 0, 100 }, { 4, 1 }, { 2, 1 }, { 0, 114 }, { 0, 39 }, { 4, 1 },
{ 2, 1 }, { 0, 70 }, { 0, 101 }, { 0, 115 }, { 10, 1 }, { 6, 1 },
{ 2, 1 }, { 0, 55 }, { 2, 1 }, { 0, 86 }, { 0, 8 }, { 2, 1 },
{ 0, 128 }, { 0, 129 }, { 6, 1 }, { 2, 1 }, { 0, 24 }, { 2, 1 },
{ 0, 116 }, { 0, 71 }, { 2, 1 }, { 0, 130 }, { 2, 1 }, { 0, 40 },
{ 0, 102 }, { 24, 1 }, { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 131 }, { 0, 56 }, { 2, 1 }, { 0, 117 }, { 0, 132 }, { 4, 1 },
{ 2, 1 }, { 0, 72 }, { 0, 144 }, { 0, 145 }, { 6, 1 }, { 2, 1 },
{ 0, 25 }, { 2, 1 }, { 0, 9 }, { 0, 118 }, { 2, 1 }, { 0, 146 },
{ 0, 41 }, { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 133 },
{ 0, 88 }, { 2, 1 }, { 0, 147 }, { 0, 57 }, { 4, 1 }, { 2, 1 },
{ 0, 160 }, { 0, 10 }, { 0, 26 }, { 8, 1 }, { 2, 1 }, { 0, 162 },
{ 2, 1 }, { 0, 103 }, { 2, 1 }, { 0, 87 }, { 0, 73 }, { 6, 1 },
{ 2, 1 }, { 0, 148 }, { 2, 1 }, { 0, 119 }, { 0, 134 }, { 2, 1 },
{ 0, 161 }, { 2, 1 }, { 0, 104 }, { 0, 149 }, { 220, 1 },
{ 126, 1 }, { 50, 1 }, { 26, 1 }, { 12, 1 }, { 6, 1 }, { 2, 1 },
{ 0, 42 }, { 2, 1 }, { 0, 89 }, { 0, 58 }, { 2, 1 }, { 0, 163 },
{ 2, 1 }, { 0, 135 }, { 0, 120 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 164 }, { 0, 74 }, { 2, 1 }, { 0, 150 }, { 0, 105 }, { 4, 1 },
{ 2, 1 }, { 0, 176 }, { 0, 11 }, { 0, 177 }, { 10, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 27 }, { 0, 178 }, { 2, 1 }, { 0, 43 }, { 2, 1 },
{ 0, 165 }, { 0, 90 }, { 6, 1 }, { 2, 1 }, { 0, 179 }, { 2, 1 },
{ 0, 166 }, { 0, 106 }, { 4, 1 }, { 2, 1 }, { 0, 180 }, { 0, 75 },
{ 2, 1 }, { 0, 12 }, { 0, 193 }, { 30, 1 }, { 14, 1 }, { 6, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 181 }, { 0, 194 }, { 0, 44 }, { 4, 1 },
{ 2, 1 }, { 0, 167 }, { 0, 195 }, { 2, 1 }, { 0, 107 }, { 0, 196 },
{ 8, 1 }, { 2, 1 }, { 0, 29 }, { 4, 1 }, { 2, 1 }, { 0, 136 },
{ 0, 151 }, { 0, 59 }, { 4, 1 }, { 2, 1 }, { 0, 209 }, { 0, 210 },
{ 2, 1 }, { 0, 45 }, { 0, 211 }, { 18, 1 }, { 6, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 30 }, { 0, 46 }, { 0, 226 }, { 6, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 121 }, { 0, 152 }, { 0, 192 }, { 2, 1 }, { 0, 28 },
{ 2, 1 }, { 0, 137 }, { 0, 91 }, { 14, 1 }, { 6, 1 }, { 2, 1 },
{ 0, 60 }, { 2, 1 }, { 0, 122 }, { 0, 182 }, { 4, 1 }, { 2, 1 },
{ 0, 76 }, { 0, 153 }, { 2, 1 }, { 0, 168 }, { 0, 138 }, { 6, 1 },
{ 2, 1 }, { 0, 13 }, { 2, 1 }, { 0, 197 }, { 0, 92 }, { 4, 1 },
{ 2, 1 }, { 0, 61 }, { 0, 198 }, { 2, 1 }, { 0, 108 }, { 0, 154 },
{ 88, 1 }, { 86, 1 }, { 36, 1 }, { 16, 1 }, { 8, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 139 }, { 0, 77 }, { 2, 1 }, { 0, 199 }, { 0, 124 },
{ 4, 1 }, { 2, 1 }, { 0, 213 }, { 0, 93 }, { 2, 1 }, { 0, 224 },
{ 0, 14 }, { 8, 1 }, { 2, 1 }, { 0, 227 }, { 4, 1 }, { 2, 1 },
{ 0, 208 }, { 0, 183 }, { 0, 123 }, { 6, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 169 }, { 0, 184 }, { 0, 212 }, { 2, 1 }, { 0, 225 }, { 2, 1 },
{ 0, 170 }, { 0, 185 }, { 24, 1 }, { 10, 1 }, { 6, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 155 }, { 0, 214 }, { 0, 109 }, { 2, 1 }, { 0, 62 },
{ 0, 200 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 140 }, { 0, 228 },
{ 0, 78 }, { 4, 1 }, { 2, 1 }, { 0, 215 }, { 0, 229 }, { 2, 1 },
{ 0, 186 }, { 0, 171 }, { 12, 1 }, { 4, 1 }, { 2, 1 }, { 0, 156 },
{ 0, 230 }, { 4, 1 }, { 2, 1 }, { 0, 110 }, { 0, 216 }, { 2, 1 },
{ 0, 141 }, { 0, 187 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 231 },
{ 0, 157 }, { 2, 1 }, { 0, 232 }, { 0, 142 }, { 4, 1 }, { 2, 1 },
{ 0, 203 }, { 0, 188 }, { 0, 158 }, { 0, 241 }, { 2, 1 }, { 0, 31 },
{ 2, 1 }, { 0, 15 }, { 0, 47 }, { 66, 1 }, { 56, 1 }, { 2, 1 },
{ 0, 242 }, { 52, 1 }, { 50, 1 }, { 20, 1 }, { 8, 1 }, { 2, 1 },
{ 0, 189 }, { 2, 1 }, { 0, 94 }, { 2, 1 }, { 0, 125 }, { 0, 201 },
{ 6, 1 }, { 2, 1 }, { 0, 202 }, { 2, 1 }, { 0, 172 }, { 0, 126 },
{ 4, 1 }, { 2, 1 }, { 0, 218 }, { 0, 173 }, { 0, 204 }, { 10, 1 },
{ 6, 1 }, { 2, 1 }, { 0, 174 }, { 2, 1 }, { 0, 219 }, { 0, 220 },
{ 2, 1 }, { 0, 205 }, { 0, 190 }, { 6, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 235 }, { 0, 237 }, { 0, 238 }, { 6, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 217 }, { 0, 234 }, { 0, 233 }, { 2, 1 }, { 0, 222 }, { 4, 1 },
{ 2, 1 }, { 0, 221 }, { 0, 236 }, { 0, 206 }, { 0, 63 }, { 0, 240 },
{ 4, 1 }, { 2, 1 }, { 0, 243 }, { 0, 244 }, { 2, 1 }, { 0, 79 },
{ 2, 1 }, { 0, 245 }, { 0, 95 }, { 10, 1 }, { 2, 1 }, { 0, 255 },
{ 4, 1 }, { 2, 1 }, { 0, 246 }, { 0, 111 }, { 2, 1 }, { 0, 247 },
{ 0, 127 }, { 12, 1 }, { 6, 1 }, { 2, 1 }, { 0, 143 }, { 2, 1 },
{ 0, 248 }, { 0, 249 }, { 4, 1 }, { 2, 1 }, { 0, 159 }, { 0, 250 },
{ 0, 175 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 251 }, { 0, 191 },
{ 2, 1 }, { 0, 252 }, { 0, 207 }, { 4, 1 }, { 2, 1 }, { 0, 253 },
{ 0, 223 }, { 2, 1 }, { 0, 254 }, { 0, 239 }, };
static final int[][] VAL_TAB_24 = { { 60, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 0 }, { 0, 16 }, { 2, 1 }, { 0, 1 }, { 0, 17 }, { 14, 1 },
{ 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 0, 33 },
{ 2, 1 }, { 0, 18 }, { 2, 1 }, { 0, 34 }, { 2, 1 }, { 0, 48 },
{ 0, 3 }, { 14, 1 }, { 4, 1 }, { 2, 1 }, { 0, 49 }, { 0, 19 },
{ 4, 1 }, { 2, 1 }, { 0, 50 }, { 0, 35 }, { 4, 1 }, { 2, 1 },
{ 0, 64 }, { 0, 4 }, { 0, 65 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 20 }, { 0, 51 }, { 2, 1 }, { 0, 66 }, { 0, 36 }, { 6, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 67 }, { 0, 52 }, { 0, 81 }, { 6, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 80 }, { 0, 5 }, { 0, 21 }, { 2, 1 },
{ 0, 82 }, { 0, 37 }, { 250, 1 }, { 98, 1 }, { 34, 1 }, { 18, 1 },
{ 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 68 }, { 0, 83 }, { 2, 1 },
{ 0, 53 }, { 2, 1 }, { 0, 96 }, { 0, 6 }, { 4, 1 }, { 2, 1 },
{ 0, 97 }, { 0, 22 }, { 2, 1 }, { 0, 98 }, { 0, 38 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 84 }, { 0, 69 }, { 2, 1 }, { 0, 99 },
{ 0, 54 }, { 4, 1 }, { 2, 1 }, { 0, 113 }, { 0, 85 }, { 2, 1 },
{ 0, 100 }, { 0, 70 }, { 32, 1 }, { 14, 1 }, { 6, 1 }, { 2, 1 },
{ 0, 114 }, { 2, 1 }, { 0, 39 }, { 0, 55 }, { 2, 1 }, { 0, 115 },
{ 4, 1 }, { 2, 1 }, { 0, 112 }, { 0, 7 }, { 0, 23 }, { 10, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 101 }, { 0, 86 }, { 4, 1 }, { 2, 1 },
{ 0, 128 }, { 0, 8 }, { 0, 129 }, { 4, 1 }, { 2, 1 }, { 0, 116 },
{ 0, 71 }, { 2, 1 }, { 0, 24 }, { 0, 130 }, { 16, 1 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 40 }, { 0, 102 }, { 2, 1 }, { 0, 131 },
{ 0, 56 }, { 4, 1 }, { 2, 1 }, { 0, 117 }, { 0, 87 }, { 2, 1 },
{ 0, 132 }, { 0, 72 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 145 },
{ 0, 25 }, { 2, 1 }, { 0, 146 }, { 0, 118 }, { 4, 1 }, { 2, 1 },
{ 0, 103 }, { 0, 41 }, { 2, 1 }, { 0, 133 }, { 0, 88 }, { 92, 1 },
{ 34, 1 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 147 },
{ 0, 57 }, { 2, 1 }, { 0, 148 }, { 0, 73 }, { 4, 1 }, { 2, 1 },
{ 0, 119 }, { 0, 134 }, { 2, 1 }, { 0, 104 }, { 0, 161 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 162 }, { 0, 42 }, { 2, 1 }, { 0, 149 },
{ 0, 89 }, { 4, 1 }, { 2, 1 }, { 0, 163 }, { 0, 58 }, { 2, 1 },
{ 0, 135 }, { 2, 1 }, { 0, 120 }, { 0, 74 }, { 22, 1 }, { 12, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 164 }, { 0, 150 }, { 4, 1 }, { 2, 1 },
{ 0, 105 }, { 0, 177 }, { 2, 1 }, { 0, 27 }, { 0, 165 }, { 6, 1 },
{ 2, 1 }, { 0, 178 }, { 2, 1 }, { 0, 90 }, { 0, 43 }, { 2, 1 },
{ 0, 136 }, { 0, 179 }, { 16, 1 }, { 10, 1 }, { 6, 1 }, { 2, 1 },
{ 0, 144 }, { 2, 1 }, { 0, 9 }, { 0, 160 }, { 2, 1 }, { 0, 151 },
{ 0, 121 }, { 4, 1 }, { 2, 1 }, { 0, 166 }, { 0, 106 }, { 0, 180 },
{ 12, 1 }, { 6, 1 }, { 2, 1 }, { 0, 26 }, { 2, 1 }, { 0, 10 },
{ 0, 176 }, { 2, 1 }, { 0, 59 }, { 2, 1 }, { 0, 11 }, { 0, 192 },
{ 4, 1 }, { 2, 1 }, { 0, 75 }, { 0, 193 }, { 2, 1 }, { 0, 152 },
{ 0, 137 }, { 67, 1 }, { 34, 1 }, { 16, 1 }, { 8, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 28 }, { 0, 181 }, { 2, 1 }, { 0, 91 }, { 0, 194 },
{ 4, 1 }, { 2, 1 }, { 0, 44 }, { 0, 167 }, { 2, 1 }, { 0, 122 },
{ 0, 195 }, { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 60 }, { 2, 1 },
{ 0, 12 }, { 0, 208 }, { 2, 1 }, { 0, 182 }, { 0, 107 }, { 4, 1 },
{ 2, 1 }, { 0, 196 }, { 0, 76 }, { 2, 1 }, { 0, 153 }, { 0, 168 },
{ 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 138 }, { 0, 197 },
{ 2, 1 }, { 0, 92 }, { 0, 209 }, { 4, 1 }, { 2, 1 }, { 0, 183 },
{ 0, 123 }, { 2, 1 }, { 0, 29 }, { 0, 210 }, { 9, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 45 }, { 0, 211 }, { 2, 1 }, { 0, 61 }, { 0, 198 },
{ 85, 250 }, { 4, 1 }, { 2, 1 }, { 0, 108 }, { 0, 169 }, { 2, 1 },
{ 0, 154 }, { 0, 212 }, { 32, 1 }, { 16, 1 }, { 8, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 184 }, { 0, 139 }, { 2, 1 }, { 0, 77 }, { 0, 199 },
{ 4, 1 }, { 2, 1 }, { 0, 124 }, { 0, 213 }, { 2, 1 }, { 0, 93 },
{ 0, 225 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 30 }, { 0, 226 },
{ 2, 1 }, { 0, 170 }, { 0, 185 }, { 4, 1 }, { 2, 1 }, { 0, 155 },
{ 0, 227 }, { 2, 1 }, { 0, 214 }, { 0, 109 }, { 20, 1 }, { 10, 1 },
{ 6, 1 }, { 2, 1 }, { 0, 62 }, { 2, 1 }, { 0, 46 }, { 0, 78 },
{ 2, 1 }, { 0, 200 }, { 0, 140 }, { 4, 1 }, { 2, 1 }, { 0, 228 },
{ 0, 215 }, { 4, 1 }, { 2, 1 }, { 0, 125 }, { 0, 171 }, { 0, 229 },
{ 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 186 }, { 0, 94 }, { 2, 1 },
{ 0, 201 }, { 2, 1 }, { 0, 156 }, { 0, 110 }, { 8, 1 }, { 2, 1 },
{ 0, 230 }, { 2, 1 }, { 0, 13 }, { 2, 1 }, { 0, 224 }, { 0, 14 },
{ 4, 1 }, { 2, 1 }, { 0, 216 }, { 0, 141 }, { 2, 1 }, { 0, 187 },
{ 0, 202 }, { 74, 1 }, { 2, 1 }, { 0, 255 }, { 64, 1 }, { 58, 1 },
{ 32, 1 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 172 },
{ 0, 231 }, { 2, 1 }, { 0, 126 }, { 0, 217 }, { 4, 1 }, { 2, 1 },
{ 0, 157 }, { 0, 232 }, { 2, 1 }, { 0, 142 }, { 0, 203 }, { 8, 1 },
{ 4, 1 }, { 2, 1 }, { 0, 188 }, { 0, 218 }, { 2, 1 }, { 0, 173 },
{ 0, 233 }, { 4, 1 }, { 2, 1 }, { 0, 158 }, { 0, 204 }, { 2, 1 },
{ 0, 219 }, { 0, 189 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 234 }, { 0, 174 }, { 2, 1 }, { 0, 220 }, { 0, 205 }, { 4, 1 },
{ 2, 1 }, { 0, 235 }, { 0, 190 }, { 2, 1 }, { 0, 221 }, { 0, 236 },
{ 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 206 }, { 0, 237 }, { 2, 1 },
{ 0, 222 }, { 0, 238 }, { 0, 15 }, { 4, 1 }, { 2, 1 }, { 0, 240 },
{ 0, 31 }, { 0, 241 }, { 4, 1 }, { 2, 1 }, { 0, 242 }, { 0, 47 },
{ 2, 1 }, { 0, 243 }, { 0, 63 }, { 18, 1 }, { 8, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 244 }, { 0, 79 }, { 2, 1 }, { 0, 245 }, { 0, 95 },
{ 4, 1 }, { 2, 1 }, { 0, 246 }, { 0, 111 }, { 2, 1 }, { 0, 247 },
{ 2, 1 }, { 0, 127 }, { 0, 143 }, { 10, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 248 }, { 0, 249 }, { 4, 1 }, { 2, 1 }, { 0, 159 }, { 0, 175 },
{ 0, 250 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 251 }, { 0, 191 },
{ 2, 1 }, { 0, 252 }, { 0, 207 }, { 4, 1 }, { 2, 1 }, { 0, 253 },
{ 0, 223 }, { 2, 1 }, { 0, 254 }, { 0, 239 }, };
static final int[][] VAL_TAB_32 = { { 2, 1 }, { 0, 0 }, { 8, 1 }, { 4, 1 },
{ 2, 1 }, { 0, 8 }, { 0, 4 }, { 2, 1 }, { 0, 1 }, { 0, 2 },
{ 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 12 }, { 0, 10 }, { 2, 1 },
{ 0, 3 }, { 0, 6 }, { 6, 1 }, { 2, 1 }, { 0, 9 }, { 2, 1 },
{ 0, 5 }, { 0, 7 }, { 4, 1 }, { 2, 1 }, { 0, 14 }, { 0, 13 },
{ 2, 1 }, { 0, 15 }, { 0, 11 }, };
static final int[][] VAL_TAB_33 = { { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 },
{ 0, 0 }, { 0, 1 }, { 2, 1 }, { 0, 2 }, { 0, 3 }, { 4, 1 },
{ 2, 1 }, { 0, 4 }, { 0, 5 }, { 2, 1 }, { 0, 6 }, { 0, 7 },
{ 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 8 }, { 0, 9 }, { 2, 1 },
{ 0, 10 }, { 0, 11 }, { 4, 1 }, { 2, 1 }, { 0, 12 }, { 0, 13 },
{ 2, 1 }, { 0, 14 }, { 0, 15 }, };
static final int[][] BITRATES = {
{ 0 /* free format */, 8000, 16000, 24000, 32000, 40000, 48000,
56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000,
0 },
{ 0 /* free format */, 32000, 40000, 48000, 56000, 64000, 80000,
96000, 112000, 128000, 160000, 192000, 224000, 256000,
320000, 0 },
{ 0 /* free format */, 8000, 16000, 24000, 32000, 40000, 48000,
56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000,
0 } };
static final int[][] REORDER_TABLE;
public static class SBI {
public int[] l;
public int[] s;
public SBI(int[] thel, int[] thes) {
l = thel;
s = thes;
}
}
static final SBI[] SF_BAND_INDEX = new SBI[9];
static {
int[] l0 = { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140,
168, 200, 238, 284, 336, 396, 464, 522, 576 };
int[] s0 = { 0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192 };
int[] l1 = { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136,
162, 194, 232, 278, 330, 394, 464, 540, 576 };
int[] s1 = { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192 };
int[] l2 = { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140,
168, 200, 238, 284, 336, 396, 464, 522, 576 };
int[] s2 = { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192 };
int[] l3 = { 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110,
134, 162, 196, 238, 288, 342, 418, 576 };
int[] s3 = { 0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192 };
int[] l4 = { 0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106,
128, 156, 190, 230, 276, 330, 384, 576 };
int[] s4 = { 0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192 };
int[] l5 = { 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126,
156, 194, 240, 296, 364, 448, 550, 576 };
int[] s5 = { 0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192 };
int[] l6 = { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140,
168, 200, 238, 284, 336, 396, 464, 522, 576 };
int[] s6 = { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192 };
int[] l7 = { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140,
168, 200, 238, 284, 336, 396, 464, 522, 576 };
int[] s7 = { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192 };
int[] l8 = { 0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192, 232,
280, 336, 400, 476, 566, 568, 570, 572, 574, 576 };
int[] s8 = { 0, 8, 16, 24, 36, 52, 72, 96, 124, 160, 162, 164, 166,
192 };
SF_BAND_INDEX[0] = new SBI(l0, s0);
SF_BAND_INDEX[1] = new SBI(l1, s1);
SF_BAND_INDEX[2] = new SBI(l2, s2);
SF_BAND_INDEX[3] = new SBI(l3, s3);
SF_BAND_INDEX[4] = new SBI(l4, s4);
SF_BAND_INDEX[5] = new SBI(l5, s5);
SF_BAND_INDEX[6] = new SBI(l6, s6);
SF_BAND_INDEX[7] = new SBI(l7, s7);
SF_BAND_INDEX[8] = new SBI(l8, s8);
REORDER_TABLE = new int[9][];
for (int i = 0; i < 9; i++) {
REORDER_TABLE[i] = reorder(SF_BAND_INDEX[i].s);
}
}
private static int[] reorder(int[] scaleFactorBand) {
int j = 0;
int[] ix = new int[576];
for (int sfb = 0; sfb < 13; sfb++) {
int start = scaleFactorBand[sfb];
int end = scaleFactorBand[sfb + 1];
for (int window = 0; window < 3; window++) {
for (int i = start; i < end; i++) {
ix[3 * i + window] = j++;
}
}
}
return ix;
}
/**
* d[] split into subarrays of length 16. This provides for more faster
* access by allowing a block of 16 to be addressed with constant offset.
*/
static final double[][] D16;
static {
D16 = splitArray(D, 16);
}
/**
* Converts a 1D array into a number of smaller arrays. This is used to
* achieve offset + constant indexing into an array. Each sub-array
* represents a block of values of the original array.
*
* @param array
* The array to split up into blocks.
* @param blockSize
* The size of the blocks to split the array into. This must be
* an exact divisor of the length of the array, or some data will
* be lost from the main array.
*
* @return An array of arrays in which each element in the returned array
* will be of length <code>blockSize</code>.
*/
private static double[][] splitArray(final double[] array,
final int blockSize) {
int size = array.length / blockSize;
double[][] split = new double[size][];
for (int i = 0; i < size; i++) {
split[i] = subArray(array, i * blockSize, blockSize);
}
return split;
}
/**
* Returns a subarray of an existing array.
*
* @param array
* The array to retrieve a subarra from.
* @param offs
* The offset in the array that corresponds to the first index of
* the subarray.
* @param len
* The number of indeces in the subarray.
* @return The subarray, which may be of length 0.
*/
private static double[] subArray(final double[] array, final int offs,
int len) {
if (offs + len > array.length) {
len = array.length - offs;
}
if (len < 0) {
len = 0;
}
double[] subarray = new double[len];
for (int i = 0; i < len; i++) {
subarray[i] = array[offs + i];
}
return subarray;
}
}