reformat benchmark source codes to meet the requirements of the annotation generation.
authoryeom <yeom>
Mon, 13 Aug 2012 02:07:08 +0000 (02:07 +0000)
committeryeom <yeom>
Mon, 13 Aug 2012 02:07:08 +0000 (02:07 +0000)
67 files changed:
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/BitReserve.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/Bitstream.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/BitstreamErrors.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/BitstreamException.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/Crc16.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/DataParse.java [deleted file]
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/Decoder.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/DecoderErrors.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/DecoderException.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/Equalizer.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/FrameDecoder.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/Header.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/HuffData.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/InputStreamSource.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/JavaLayerError.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/JavaLayerErrors.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/JavaLayerException.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/JavaLayerHook.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/JavaLayerUtils.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/LATTICE.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/LayerIDecoder.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/LayerIIDecoder.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/LayerIIIDecoder.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/METHODDEFAULT.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/Manager.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/Obuffer.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/OutputChannels.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/Player.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/SampleBuffer.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/SampleBufferWrapper.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/SideInfoBuffer.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/Source.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/Subband.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/SynthesisFilter.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/huffcodetab.java
Robust/src/Benchmarks/SSJava/MP3DecoderInfer/infer/makefile [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/BufferedInputStream.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/ByteArrayInputStream.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Character.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Cloneable.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Double.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Enumeration.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Exception.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/File.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/FileDescriptor.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/FileInputStream.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/FileOutputStream.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/FilterInputStream.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/FilterOutputStream.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Float.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/IOException.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/InputStream.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Integer.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Long.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Math.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Number.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Object.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/OutputStream.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/PrintStream.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/PushbackInputStream.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Random.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/SSJAVA.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/String.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/StringBuffer.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/System.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Throwable.java [new file with mode: 0644]
Robust/src/ClassLibrary/SSJavaInfer/Vector.java [new file with mode: 0644]

index eb54d964b406c2f58f23398db7204c2a86e5738e..49d62afd23c1127322edcd683582443d6415d9f1 100644 (file)
@@ -38,7 +38,6 @@
 // REVIEW: there is no range checking, so buffer underflow or overflow\r
 // can silently occur.\r
 \r
-\r
 final class BitReserve {\r
   /**\r
    * Size of the internal buffer to store the reserved bits. Must be a power of\r
@@ -52,16 +51,12 @@ final class BitReserve {
    */\r
   private static final int BUFSIZE_MASK = BUFSIZE - 1;\r
 \r
-  \r
   private int offset;\r
 \r
-  \r
   public int totbit;\r
 \r
-  \r
   public int buf_byte_idx;\r
 \r
-  \r
   private final int[] buf;\r
 \r
   BitReserve() {\r
@@ -74,7 +69,7 @@ final class BitReserve {
   /**\r
    * Return totbit Field.\r
    */\r
-  \r
+\r
   public int hsstell() {\r
     return (totbit);\r
   }\r
@@ -85,13 +80,13 @@ final class BitReserve {
    * @param N\r
    *          the number of\r
    */\r
-  public int hgetbits( int N) {\r
+  public int hgetbits(int N) {\r
 \r
     totbit += N;\r
 \r
-     int val = 0;\r
+    int val = 0;\r
 \r
-     int pos = buf_byte_idx;\r
+    int pos = buf_byte_idx;\r
     if (pos + N < BUFSIZE) {\r
       TERMINATE: while (N-- > 0) {\r
         val <<= 1;\r
@@ -116,10 +111,10 @@ final class BitReserve {
    * \r
    * @returns 0 if next bit is reset, or 1 if next bit is set.\r
    */\r
-  \r
+\r
   public int hget1bit() {\r
     totbit++;\r
-     int val = buf[buf_byte_idx];\r
+    int val = buf[buf_byte_idx];\r
     buf_byte_idx = (buf_byte_idx + 1) & BUFSIZE_MASK;\r
     return val;\r
   }\r
@@ -127,9 +122,9 @@ final class BitReserve {
   /**\r
    * Write 8 bits into the bit stream.\r
    */\r
-  \r
-  public void hputbuf( int val) {\r
-     int ofs = offset;\r
+\r
+  public void hputbuf(int val) {\r
+    int ofs = offset;\r
     buf[ofs++] = val & 0x80;\r
     buf[ofs++] = val & 0x40;\r
     buf[ofs++] = val & 0x20;\r
@@ -149,7 +144,7 @@ final class BitReserve {
   /**\r
    * Rewind N bits in Stream.\r
    */\r
-  public void rewindNbits( int N) {\r
+  public void rewindNbits(int N) {\r
     totbit -= N;\r
     buf_byte_idx -= N;\r
     if (buf_byte_idx < 0)\r
@@ -159,9 +154,9 @@ final class BitReserve {
   /**\r
    * Rewind N bytes in Stream.\r
    */\r
-  \r
-  public void rewindNbytes( int N) {\r
-     int bits = (N << 3);\r
+\r
+  public void rewindNbytes(int N) {\r
+    int bits = (N << 3);\r
     totbit -= bits;\r
     buf_byte_idx -= bits;\r
     if (buf_byte_idx < 0)\r
index 5bb23eba36c8b9527689d39c745979f8717ddfd5..ce88b158d23a4327684e794c6ce48ab861a6f0c5 100644 (file)
  * This should be moved into this class and associated inner classes.
  */
 
-
 public final class Bitstream implements BitstreamErrors {
   /**
    * Synchronization control constant for the initial synchronization to the
    * start of a frame.
    */
-  
+
   static byte INITIAL_SYNC = 0;
 
   /**
    * Synchronization control constant for non-initial frame synchronizations.
    */
 
-  
   static byte STRICT_SYNC = 1;
 
   // max. 1730 bytes per frame: 144 * 384kbit/s / 32000 Hz + 2 Bytes CRC
   /**
    * Maximum size of the frame buffer.
    */
-  
+
   private static final int BUFFER_INT_SIZE = 433;
 
   /**
    * The frame buffer that holds the data for the current frame.
    */
-  
+
   private final int[] framebuffer = new int[BUFFER_INT_SIZE];
 
   /**
    * Number of valid bytes in the frame buffer.
    */
-  
+
   private int framesize;
 
   /**
    * The bytes read from the stream.
    */
-  
+
   private byte[] frame_bytes = new byte[BUFFER_INT_SIZE * 4];
 
   /**
    * Index into <code>framebuffer</code> where the next bits are retrieved.
    */
-  
+
   private int wordpointer;
 
   /**
    * Number (0-31, from MSB to LSB) of next bit for get_bits()
    */
-  
+
   private int bitindex;
 
   /**
    * The current specified syncword
    */
-  
+
   private int syncword;
 
   /**
    * Audio header position in stream.
    */
-  
+
   private int header_pos = 0;
 
   /**
       *
       */
-  
+
   private boolean single_ch_mode;
   // private int current_frame_number;
   // private int last_frame_number;
 
-  
-  private final int bitmask[] = {
-      0, // dummy
-      0x00000001, 0x00000003, 0x00000007, 0x0000000F, 0x0000001F, 0x0000003F, 0x0000007F,
-      0x000000FF, 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF, 0x00001FFF, 0x00003FFF,
-      0x00007FFF, 0x0000FFFF, 0x0001FFFF };
+  private final int bitmask[] = { 0, // dummy
+  0x00000001, 0x00000003, 0x00000007, 0x0000000F, 0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF, 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF, 0x00001FFF, 0x00003FFF, 0x00007FFF, 0x0000FFFF, 0x0001FFFF };
 
-  
   private final PushbackInputStream source;
 
-  
   private final Header header = new Header();
 
-  
   private final byte syncbuf[] = new byte[4];
 
-  
   private Crc16[] crc = new Crc16[1];
 
-  
   private byte[] rawid3v2 = null;
 
-  
   private boolean firstframe = true;
 
   private BitReserve br;
@@ -226,8 +214,7 @@ public final class Bitstream implements BitstreamErrors {
       int majorVersion = id3header[0];
       int revision = id3header[1];
       in.read(id3header, 0, 4);
-      size =
-          (int) (id3header[0] << 21) + (id3header[1] << 14) + (id3header[2] << 7) + (id3header[3]);
+      size = (int) (id3header[0] << 21) + (id3header[1] << 14) + (id3header[2] << 7) + (id3header[3]);
     }
     return (size + 10);
   }
@@ -364,9 +351,7 @@ public final class Bitstream implements BitstreamErrors {
    */
   public boolean isSyncCurrentPosition(int syncmode) throws BitstreamException {
     int read = readBytes(syncbuf, 0, 4);
-    int headerstring =
-        ((syncbuf[0] << 24) & 0xFF000000) | ((syncbuf[1] << 16) & 0x00FF0000)
-            | ((syncbuf[2] << 8) & 0x0000FF00) | ((syncbuf[3] << 0) & 0x000000FF);
+    int headerstring = ((syncbuf[0] << 24) & 0xFF000000) | ((syncbuf[1] << 16) & 0x00FF0000) | ((syncbuf[2] << 8) & 0x0000FF00) | ((syncbuf[3] << 0) & 0x000000FF);
 
     try {
       source.unread(syncbuf, 0, read);
@@ -462,9 +447,7 @@ public final class Bitstream implements BitstreamErrors {
     if (bytesRead != 3)
       throw newBitstreamException(STREAM_EOF, null);
 
-    headerstring =
-        ((syncbuf[0] << 16) & 0x00FF0000) | ((syncbuf[1] << 8) & 0x0000FF00)
-            | ((syncbuf[2] << 0) & 0x000000FF);
+    headerstring = ((syncbuf[0] << 16) & 0x00FF0000) | ((syncbuf[1] << 8) & 0x0000FF00) | ((syncbuf[2] << 0) & 0x000000FF);
 
     do {
       headerstring <<= 8;
@@ -494,9 +477,7 @@ public final class Bitstream implements BitstreamErrors {
       // sync = ((headerstring & 0xFFF00000) == 0xFFF00000);
       sync = ((headerstring & 0xFFE00000) == 0xFFE00000); // SZD: MPEG 2.5
     } else {
-      sync =
-          ((headerstring & 0xFFF80C00) == word)
-              && (((headerstring & 0x000000C0) == 0x000000C0) == single_ch_mode);
+      sync = ((headerstring & 0xFFF80C00) == word) && (((headerstring & 0x000000C0) == 0x000000C0) == single_ch_mode);
     }
 
     // filter out invalid sample rate
@@ -528,12 +509,12 @@ public final class Bitstream implements BitstreamErrors {
   /**
    * Parses the data previously read with read_frame_data().
    */
-  
+
   void parse_frame() throws BitstreamException {
     // Convert Bytes read to int
-     int b = 0;
-     byte[] byteread = frame_bytes;
-     int bytesize = framesize;
+    int b = 0;
+    byte[] byteread = frame_bytes;
+    int bytesize = framesize;
 
     // Check ID3v1 TAG (True only if last frame).
     // for (int t=0;t<(byteread.length)-2;t++)
@@ -545,12 +526,12 @@ public final class Bitstream implements BitstreamErrors {
     // }
     // }
 
-    for ( int k = 0; k < bytesize; k = k + 4) {
-       int convert = 0;
-       byte b0 = 0;
-       byte b1 = 0;
-       byte b2 = 0;
-       byte b3 = 0;
+    for (int k = 0; k < bytesize; k = k + 4) {
+      int convert = 0;
+      byte b0 = 0;
+      byte b1 = 0;
+      byte b2 = 0;
+      byte b3 = 0;
       b0 = byteread[k];
       if (k + 1 < bytesize)
         b1 = byteread[k + 1];
@@ -558,9 +539,7 @@ public final class Bitstream implements BitstreamErrors {
         b2 = byteread[k + 2];
       if (k + 3 < bytesize)
         b3 = byteread[k + 3];
-      framebuffer[b++] =
-          ((b0 << 24) & 0xFF000000) | ((b1 << 16) & 0x00FF0000) | ((b2 << 8) & 0x0000FF00)
-              | (b3 & 0x000000FF);
+      framebuffer[b++] = ((b0 << 24) & 0xFF000000) | ((b1 << 16) & 0x00FF0000) | ((b2 << 8) & 0x0000FF00) | (b3 & 0x000000FF);
     }
     wordpointer = 0;
     bitindex = 0;
@@ -570,11 +549,11 @@ public final class Bitstream implements BitstreamErrors {
    * Read bits from buffer into the lower bits of an unsigned int. The LSB
    * contains the latest read bit of the stream. (1 <= number_of_bits <= 16)
    */
-  
-  public int get_bits( int number_of_bits) {
 
-     int returnvalue = 0;
-     int sum = bitindex + number_of_bits;
+  public int get_bits(int number_of_bits) {
+
+    int returnvalue = 0;
+    int sum = bitindex + number_of_bits;
 
     // E.B
     // There is a problem here, wordpointer could be -1 ?!
@@ -597,9 +576,9 @@ public final class Bitstream implements BitstreamErrors {
     // ((short[])&returnvalue)[0] = ((short[])wordpointer + 1)[0];
     // wordpointer++; // Added by me!
     // ((short[])&returnvalue + 1)[0] = ((short[])wordpointer)[0];
-     int Right = (framebuffer[wordpointer] & 0x0000FFFF);
+    int Right = (framebuffer[wordpointer] & 0x0000FFFF);
     wordpointer++;
-     int Left = (framebuffer[wordpointer] & 0xFFFF0000);
+    int Left = (framebuffer[wordpointer] & 0xFFFF0000);
     returnvalue = ((Right << 16) & 0xFFFF0000) | ((Left >>> 16) & 0x0000FFFF);
 
     returnvalue >>>= 48 - sum; // returnvalue >>= 16 - (number_of_bits - (32 -
@@ -612,7 +591,7 @@ public final class Bitstream implements BitstreamErrors {
   /**
    * Set the word we want to sync the header to. In Big-Endian byte order
    */
-  void set_syncword( int syncword0) {
+  void set_syncword(int syncword0) {
     syncword = syncword0 & 0xFFFFFF3F;
     single_ch_mode = ((syncword0 & 0x000000C0) == 0x000000C0);
   }
@@ -632,14 +611,12 @@ public final class Bitstream implements BitstreamErrors {
    *              is thrown if the specified number of bytes could not be read
    *              from the stream.
    */
-  
-  
-  private int readFully( byte[] b,  int offs,  int len)
-      throws BitstreamException {
-     int nRead = 0;
+
+  private int readFully(byte[] b, int offs, int len) throws BitstreamException {
+    int nRead = 0;
     try {
       while (len > 0) {
-         int bytesread = source.read(b, offs, len);
+        int bytesread = source.read(b, offs, len);
         if (bytesread == -1) {
           while (len-- > 0) {
             b[offs++] = 0;
@@ -660,14 +637,12 @@ public final class Bitstream implements BitstreamErrors {
   /**
    * Simlar to readFully, but doesn't throw exception when EOF is reached.
    */
-  
-  
-  private int readBytes( byte[] b,  int offs,  int len)
-      throws BitstreamException {
-     int totalBytesRead = 0;
+
+  private int readBytes(byte[] b, int offs, int len) throws BitstreamException {
+    int totalBytesRead = 0;
     try {
       while (len > 0) {
-         int bytesread = source.read(b, offs, len);
+        int bytesread = source.read(b, offs, len);
         if (bytesread == -1) {
           break;
         }
index 07114dbf0c4774b041eac67becb4270f43debe64..452711a1365efafa444608722c7e3c55bb12489c 100644 (file)
  */\r
 \r
 /**\r
- * This interface describes all error codes that can be thrown \r
- * in <code>BistreamException</code>s.\r
+ * This interface describes all error codes that can be thrown in\r
+ * <code>BistreamException</code>s.\r
  * \r
  * @see BitstreamException\r
  * \r
- * @author     MDM             12/12/99\r
- * @since      0.0.6\r
+ * @author MDM 12/12/99\r
+ * @since 0.0.6\r
  */\r
 \r
-public interface BitstreamErrors extends JavaLayerErrors\r
-{\r
-       \r
-       /**\r
-        * An undeterminable error occurred. \r
-        */\r
-       static public final int UNKNOWN_ERROR = BITSTREAM_ERROR + 0;\r
-       \r
-       /**\r
-        * The header describes an unknown sample rate.\r
-        */\r
-       static public final int UNKNOWN_SAMPLE_RATE = BITSTREAM_ERROR + 1;\r
+public interface BitstreamErrors extends JavaLayerErrors {\r
 \r
-       /**\r
-        * A problem occurred reading from the stream.\r
-        */\r
-       static public final int STREAM_ERROR = BITSTREAM_ERROR + 2;\r
-       \r
-       /**\r
-        * The end of the stream was reached prematurely. \r
-        */\r
-       static public final int UNEXPECTED_EOF = BITSTREAM_ERROR + 3;\r
-       \r
-       /**\r
-        * The end of the stream was reached. \r
-        */\r
-       static public final int STREAM_EOF = BITSTREAM_ERROR + 4;\r
-       \r
-       /**\r
-        * Frame data are missing. \r
-        */\r
-       static public final int INVALIDFRAME = BITSTREAM_ERROR + 5;\r
+  /**\r
+   * An undeterminable error occurred.\r
+   */\r
+  static public final int UNKNOWN_ERROR = BITSTREAM_ERROR + 0;\r
 \r
-       /**\r
+  /**\r
+   * The header describes an unknown sample rate.\r
+   */\r
+  static public final int UNKNOWN_SAMPLE_RATE = BITSTREAM_ERROR + 1;\r
+\r
+  /**\r
+   * A problem occurred reading from the stream.\r
+   */\r
+  static public final int STREAM_ERROR = BITSTREAM_ERROR + 2;\r
+\r
+  /**\r
+   * The end of the stream was reached prematurely.\r
+   */\r
+  static public final int UNEXPECTED_EOF = BITSTREAM_ERROR + 3;\r
+\r
+  /**\r
+   * The end of the stream was reached.\r
+   */\r
+  static public final int STREAM_EOF = BITSTREAM_ERROR + 4;\r
+\r
+  /**\r
+   * Frame data are missing.\r
+   */\r
+  static public final int INVALIDFRAME = BITSTREAM_ERROR + 5;\r
+\r
+  /**\r
         * \r
         */\r
-       static public final int BITSTREAM_LAST = 0x1ff;\r
-       \r
+  static public final int BITSTREAM_LAST = 0x1ff;\r
+\r
 }\r
index 1889add6e7612f4bd99c03d368e3c0d057096076..9d88622f7e1c5a6b95161fec9ba9ca381bb51ff0 100644 (file)
  */\r
 \r
 /**\r
- * Instances of <code>BitstreamException</code> are thrown \r
- * when operations on a <code>Bitstream</code> fail. \r
+ * Instances of <code>BitstreamException</code> are thrown when operations on a\r
+ * <code>Bitstream</code> fail.\r
  * <p>\r
- * The exception provides details of the exception condition \r
- * in two ways:\r
- * <ol><li>\r
- *             as an error-code describing the nature of the error\r
- * </li><br></br><li>\r
- *             as the <code>Throwable</code> instance, if any, that was thrown\r
- *             indicating that an exceptional condition has occurred. \r
- * </li></ol></p>\r
+ * The exception provides details of the exception condition in two ways:\r
+ * <ol>\r
+ * <li>\r
+ * as an error-code describing the nature of the error</li><br>\r
+ * </br>\r
+ * <li>\r
+ * as the <code>Throwable</code> instance, if any, that was thrown indicating\r
+ * that an exceptional condition has occurred.</li>\r
+ * </ol>\r
+ * </p>\r
  * \r
  * @since 0.0.6\r
- * @author MDM 12/12/99\r
+ * @author MDM 12/12/99\r
  */\r
 \r
-public class BitstreamException extends JavaLayerException\r
-       implements BitstreamErrors\r
-{      \r
-        private int errorcode = UNKNOWN_ERROR;\r
-       \r
-       public BitstreamException(String msg, Throwable t)\r
-       {\r
-               super(msg, t);  \r
-       }\r
-       \r
-       public BitstreamException(int errorcode, Throwable t)\r
-       {\r
-               this(getErrorString(errorcode), t);\r
-               this.errorcode = errorcode;\r
-       }\r
-       \r
-       public int getErrorCode()\r
-       {\r
-               return errorcode;       \r
-       }\r
-       \r
-       \r
-       static public String getErrorString(int errorcode)\r
-       {\r
-               // REVIEW: use resource bundle to map error codes\r
-               // to locale-sensitive strings.\r
-               \r
-//             return "Bitstream errorcode "+Integer.toHexString(errorcode);\r
-               return "Bitstream errorcode "+errorcode;\r
-       }\r
-       \r
-       \r
+public class BitstreamException extends JavaLayerException implements BitstreamErrors {\r
+  private int errorcode = UNKNOWN_ERROR;\r
+\r
+  public BitstreamException(String msg, Throwable t) {\r
+    super(msg, t);\r
+  }\r
+\r
+  public BitstreamException(int errorcode, Throwable t) {\r
+    this(getErrorString(errorcode), t);\r
+    this.errorcode = errorcode;\r
+  }\r
+\r
+  public int getErrorCode() {\r
+    return errorcode;\r
+  }\r
+\r
+  static public String getErrorString(int errorcode) {\r
+    // REVIEW: use resource bundle to map error codes\r
+    // to locale-sensitive strings.\r
+\r
+    // return "Bitstream errorcode "+Integer.toHexString(errorcode);\r
+    return "Bitstream errorcode " + errorcode;\r
+  }\r
+\r
 }\r
index 90351d15222919a370b078714480fac65f7288ea..f822adf6abe9dc3a4735eb388c45dbfb2fc50bd5 100644 (file)
  * 16-Bit CRC checksum\r
  */\r
 \r
-\r
-public final class Crc16\r
-{\r
-   private static      short polynomial=(short)0x8005;\r
-   private                     short crc;\r
+public final class Crc16 {\r
+  private static short polynomial = (short) 0x8005;\r
+  private short crc;\r
 \r
   /**\r
    * Dummy Constructor\r
    */\r
-  public Crc16()\r
-  { \r
-       crc = (short) 0xFFFF;\r
+  public Crc16() {\r
+    crc = (short) 0xFFFF;\r
   }\r
 \r
   /**\r
    * Feed a bitstring to the crc calculation (0 < length <= 32).\r
    */\r
-  //ssjava\r
\r
-  public void add_bits ( int bitstring,  int length)\r
-  {\r
-     int bitmask = 1 << (length - 1);\r
-    do{\r
-      if (((crc & 0x8000) == 0) ^ ((bitstring & bitmask) == 0 ))\r
-      {\r
+  // ssjava\r
+\r
+  public void add_bits(int bitstring, int length) {\r
+    int bitmask = 1 << (length - 1);\r
+    do {\r
+      if (((crc & 0x8000) == 0) ^ ((bitstring & bitmask) == 0)) {\r
         crc <<= 1;\r
         crc ^= polynomial;\r
-      }\r
-      else{\r
+      } else {\r
         crc <<= 1;\r
       }\r
-    }while ((bitmask >>>= 1) != 0);\r
+    } while ((bitmask >>>= 1) != 0);\r
   }\r
 \r
   /**\r
-   * Return the calculated checksum.\r
-   * Erase it for next calls to add_bits().\r
+   * Return the calculated checksum. Erase it for next calls to add_bits().\r
    */\r
-  \r
-  public short checksum()\r
-  {\r
-     short sum = crc;\r
+\r
+  public short checksum() {\r
+    short sum = crc;\r
     crc = (short) 0xFFFF;\r
     return sum;\r
   }\r
diff --git a/Robust/src/Benchmarks/SSJava/MP3DecoderInfer/DataParse.java b/Robust/src/Benchmarks/SSJava/MP3DecoderInfer/DataParse.java
deleted file mode 100644 (file)
index a6b30b0..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-import java.io.*;
-import java.util.*;
-
-public class DataParse {
-
-  public static void main(String args[]) {
-
-    try {
-
-      FileWriter fout = new FileWriter("out.csv");
-      BufferedWriter out = new BufferedWriter(fout);
-
-      FileInputStream fin = new FileInputStream("errinj-history-5001.txt");
-      DataInputStream in = new DataInputStream(fin);
-      BufferedReader br = new BufferedReader(new InputStreamReader(in));
-      String inLine;
-      String value;
-      while ((inLine = br.readLine()) != null) {
-        // System.out.println(inLine);
-        if (inLine.startsWith("idx")) {
-          value = inLine.substring(4, inLine.length());
-          out.write("\n" + value);
-        } else if (inLine.startsWith("inj")) {
-          if (inLine.length() > 3) {
-            value = inLine.substring(4, inLine.length());
-            if (value.length() > 0) {
-              StringTokenizer st = new StringTokenizer(value, " ");
-              if (st.hasMoreTokens()) {
-                out.write("," + st.nextToken());
-              }
-            }
-          }
-        } else if (inLine.startsWith("NO DIFF")) {
-          // do nothing
-        } else {
-          out.write("," + inLine);
-        }
-      }
-      in.close();
-      out.close();
-
-    } catch (Exception e) {
-      System.out.println(e);
-    }
-
-  }
-
-}
\ No newline at end of file
index d7754bbb80aab487906f9a33ebc3f9eae165e87e..b453a6c74bf5d838a83cbf665c3585c29d807fb3 100644 (file)
@@ -27,7 +27,6 @@
  * @since 0.0.5\r
  */\r
 \r
-\r
 public class Decoder implements DecoderErrors {\r
 \r
   static private final Params DEFAULT_PARAMS = new Params();\r
@@ -35,49 +34,45 @@ public class Decoder implements DecoderErrors {
   /**\r
    * The Bistream from which the MPEG audio frames are read.\r
    */\r
-  // \r
+  //\r
   // private Bitstream stream;\r
 \r
   /**\r
    * The Obuffer instance that will receive the decoded PCM samples.\r
    */\r
-  // \r
+  //\r
   // private Obuffer output;\r
 \r
   /**\r
    * Synthesis filter for the left channel.\r
    */\r
-  // \r
+  //\r
   // private SynthesisFilter filter1;\r
 \r
   /**\r
    * Sythesis filter for the right channel.\r
    */\r
-  // \r
+  //\r
   // private SynthesisFilter filter2;\r
 \r
   /**\r
    * The decoder used to decode layer III frames.\r
    */\r
-  \r
+\r
   private LayerIIIDecoder l3decoder;\r
-  // \r
+  //\r
   // private LayerIIDecoder l2decoder;\r
-  // \r
+  //\r
   // private LayerIDecoder l1decoder;\r
 \r
-  \r
   private int outputFrequency;\r
-  \r
+\r
   private int outputChannels;\r
 \r
-  \r
   private Equalizer equalizer = new Equalizer();\r
 \r
-  \r
   private Params params;\r
 \r
-  \r
   private boolean initialized;\r
 \r
   /**\r
@@ -127,25 +122,24 @@ public class Decoder implements DecoderErrors {
   // if (filter2 != null)\r
   // filter2.setEQ(factors);\r
   // }\r
-  \r
-  public void init(  Header header) {\r
-     float scalefactor = 32700.0f;\r
 \r
-     int mode = header.mode();\r
-     int layer = header.layer();\r
-     int channels = mode == Header.SINGLE_CHANNEL ? 1 : 2;\r
+  public void init(Header header) {\r
+    float scalefactor = 32700.0f;\r
+\r
+    int mode = header.mode();\r
+    int layer = header.layer();\r
+    int channels = mode == Header.SINGLE_CHANNEL ? 1 : 2;\r
 \r
     // set up output buffer if not set up by client.\r
     // if (output == null)\r
     // output = new SampleBuffer(header.frequency(), channels);\r
     SampleBufferWrapper.init(header.frequency(), channels);\r
 \r
-     float[] factors = equalizer.getBandFactors();\r
-     SynthesisFilter filter1 =\r
-        new SynthesisFilter(0, scalefactor, factors);\r
+    float[] factors = equalizer.getBandFactors();\r
+    SynthesisFilter filter1 = new SynthesisFilter(0, scalefactor, factors);\r
 \r
     // REVIEW: allow mono output for stereo\r
-     SynthesisFilter filter2 = null;\r
+    SynthesisFilter filter2 = null;\r
     if (channels == 2) {\r
       filter2 = new SynthesisFilter(1, scalefactor, factors);\r
     }\r
@@ -153,7 +147,7 @@ public class Decoder implements DecoderErrors {
     outputChannels = channels;\r
     outputFrequency = header.frequency();\r
 \r
-    l3decoder = new LayerIIIDecoder(header,filter1, filter2, OutputChannels.BOTH_CHANNELS);\r
+    l3decoder = new LayerIIIDecoder(header, filter1, filter2, OutputChannels.BOTH_CHANNELS);\r
 \r
   }\r
 \r
@@ -167,8 +161,8 @@ public class Decoder implements DecoderErrors {
    * \r
    * @return A SampleBuffer containing the decoded samples.\r
    */\r
-  \r
-  public void decodeFrame( Header header) throws DecoderException {\r
+\r
+  public void decodeFrame(Header header) throws DecoderException {\r
 \r
     SampleBufferWrapper.clear_buffer();\r
     l3decoder.decode(header);\r
@@ -234,67 +228,63 @@ public class Decoder implements DecoderErrors {
   }\r
 }\r
 \r
+/**\r
+ * The <code>Params</code> class presents the customizable aspects of the\r
+ * decoder.\r
+ * <p>\r
+ * Instances of this class are not thread safe.\r
+ */\r
+public class Params implements Cloneable {\r
 \r
+  // private OutputChannels outputChannels = OutputChannels.BOTH;\r
+  private OutputChannels outputChannels = new OutputChannels(0);\r
 \r
+  private Equalizer equalizer = new Equalizer();\r
 \r
+  public Params() {\r
+  }\r
 \r
-  /**\r
-   * The <code>Params</code> class presents the customizable aspects of the\r
-   * decoder.\r
-   * <p>\r
-   * Instances of this class are not thread safe.\r
-   */\r
-  public class Params implements Cloneable {\r
-\r
-    // private OutputChannels outputChannels = OutputChannels.BOTH;\r
-    private OutputChannels outputChannels = new OutputChannels(0);\r
-\r
-    private Equalizer equalizer = new Equalizer();\r
-\r
-    public Params() {\r
-    }\r
-\r
-    public Object clone() {\r
-      // TODO: need to have better clone method\r
-      Params clone = new Params();\r
-      clone.outputChannels = new OutputChannels(outputChannels.getChannelsOutputCode());\r
-      clone.equalizer = new Equalizer();\r
-      return clone;\r
-      // try\r
-      // {\r
-      // return super.clone();\r
-      // }\r
-      // catch (CloneNotSupportedException ex)\r
-      // {\r
-      // throw new InternalError(this+": "+ex);\r
-      // }\r
-    }\r
+  public Object clone() {\r
+    // TODO: need to have better clone method\r
+    Params clone = new Params();\r
+    clone.outputChannels = new OutputChannels(outputChannels.getChannelsOutputCode());\r
+    clone.equalizer = new Equalizer();\r
+    return clone;\r
+    // try\r
+    // {\r
+    // return super.clone();\r
+    // }\r
+    // catch (CloneNotSupportedException ex)\r
+    // {\r
+    // throw new InternalError(this+": "+ex);\r
+    // }\r
+  }\r
 \r
-    public void setOutputChannels(OutputChannels out) {\r
-      if (out == null)\r
-        throw new NullPointerException("out");\r
+  public void setOutputChannels(OutputChannels out) {\r
+    if (out == null)\r
+      throw new NullPointerException("out");\r
 \r
-      outputChannels = out;\r
-    }\r
+    outputChannels = out;\r
+  }\r
 \r
-    public OutputChannels getOutputChannels() {\r
-      return outputChannels;\r
-    }\r
+  public OutputChannels getOutputChannels() {\r
+    return outputChannels;\r
+  }\r
 \r
-    /**\r
-     * Retrieves the equalizer settings that the decoder's equalizer will be\r
-     * initialized from.\r
-     * <p>\r
-     * The <code>Equalizer</code> instance returned cannot be changed in real\r
-     * time to affect the decoder output as it is used only to initialize the\r
-     * decoders EQ settings. To affect the decoder's output in realtime, use the\r
-     * Equalizer returned from the getEqualizer() method on the decoder.\r
-     \r
-     * @return The <code>Equalizer</code> used to initialize the EQ settings of\r
-     *         the decoder.\r
-     */\r
-    public Equalizer getInitialEqualizerSettings() {\r
-      return equalizer;\r
-    }\r
+  /**\r
+   * Retrieves the equalizer settings that the decoder's equalizer will be\r
+   * initialized from.\r
+   * <p>\r
+   * The <code>Equalizer</code> instance returned cannot be changed in real time\r
+   * to affect the decoder output as it is used only to initialize the decoders\r
+   * EQ settings. To affect the decoder's output in realtime, use the Equalizer\r
+   * returned from the getEqualizer() method on the decoder.\r
+   * \r
+   * @return The <code>Equalizer</code> used to initialize the EQ settings of\r
+   *         the decoder.\r
+   */\r
+  public Equalizer getInitialEqualizerSettings() {\r
+    return equalizer;\r
+  }\r
 \r
-  }
\ No newline at end of file
+}
\ No newline at end of file
index ef3552ada024fc94204c119bd3efd919a8b88ef2..f329fe46509ed34bcb9c73be729904336871e701 100644 (file)
  *----------------------------------------------------------------------\r
  */\r
 \r
-\r
 /**\r
- * This interface provides constants describing the error\r
- * codes used by the Decoder to indicate errors. \r
+ * This interface provides constants describing the error codes used by the\r
+ * Decoder to indicate errors.\r
  * \r
- * @author     MDM\r
+ * @author MDM\r
  */\r
-public interface DecoderErrors extends JavaLayerErrors\r
-{\r
-       \r
-       static public final int UNKNOWN_ERROR = DECODER_ERROR + 0;\r
-       \r
-       /**\r
-        * Layer not supported by the decoder. \r
-        */\r
-       static public final int UNSUPPORTED_LAYER = DECODER_ERROR + 1;\r
+public interface DecoderErrors extends JavaLayerErrors {\r
+\r
+  static public final int UNKNOWN_ERROR = DECODER_ERROR + 0;\r
+\r
+  /**\r
+   * Layer not supported by the decoder.\r
+   */\r
+  static public final int UNSUPPORTED_LAYER = DECODER_ERROR + 1;\r
 \r
-    /**\r
-        * Illegal allocation in subband layer. Indicates a corrupt stream.\r
-        */\r
-       static public final int ILLEGAL_SUBBAND_ALLOCATION = DECODER_ERROR + 2;\r
+  /**\r
+   * Illegal allocation in subband layer. Indicates a corrupt stream.\r
+   */\r
+  static public final int ILLEGAL_SUBBAND_ALLOCATION = DECODER_ERROR + 2;\r
 \r
 }\r
index d33b0f09e5f2d4926ea3640fc6eb57b4736899f4..aaeec8e7552733e781e06ccf9af652d624bceab1 100644 (file)
  *----------------------------------------------------------------------\r
  */\r
 \r
-\r
 /**\r
- * The <code>DecoderException</code> represents the class of\r
- * errors that can occur when decoding MPEG audio. \r
+ * The <code>DecoderException</code> represents the class of errors that can\r
+ * occur when decoding MPEG audio.\r
  * \r
  * @author MDM\r
  */\r
-public class DecoderException extends JavaLayerException\r
-       implements DecoderErrors\r
-{      \r
-       private int             errorcode = UNKNOWN_ERROR;\r
-       \r
-       public DecoderException(String msg, Throwable t)\r
-       {\r
-               super(msg, t);  \r
-       }\r
-       \r
-       public DecoderException(int errorcode, Throwable t)\r
-       {\r
-               this(getErrorString(errorcode), t);\r
-               this.errorcode = errorcode;\r
-       }\r
-       \r
-       public int getErrorCode()\r
-       {\r
-               return errorcode;       \r
-       }\r
-       \r
-       \r
-       static public String getErrorString(int errorcode)\r
-       {\r
-               // REVIEW: use resource file to map error codes\r
-               // to locale-sensitive strings. \r
-               \r
-//             return "Decoder errorcode "+Integer.toHexString(errorcode);\r
-         return "Decoder errorcode  "+errorcode;\r
-       }\r
-       \r
-       \r
-}\r
+public class DecoderException extends JavaLayerException implements DecoderErrors {\r
+  private int errorcode = UNKNOWN_ERROR;\r
+\r
+  public DecoderException(String msg, Throwable t) {\r
+    super(msg, t);\r
+  }\r
+\r
+  public DecoderException(int errorcode, Throwable t) {\r
+    this(getErrorString(errorcode), t);\r
+    this.errorcode = errorcode;\r
+  }\r
 \r
+  public int getErrorCode() {\r
+    return errorcode;\r
+  }\r
+\r
+  static public String getErrorString(int errorcode) {\r
+    // REVIEW: use resource file to map error codes\r
+    // to locale-sensitive strings.\r
+\r
+    // return "Decoder errorcode "+Integer.toHexString(errorcode);\r
+    return "Decoder errorcode  " + errorcode;\r
+  }\r
+\r
+}\r
index 1fe7fb9ed74cd86cbcb05296ff699b427d4eb9db..b8d4ad45fa6cb14cc678fa0b7e616c51a552737c 100644 (file)
  * @author MDM\r
  */\r
 \r
-\r
 public final class Equalizer {\r
   /**\r
    * Equalizer setting to denote that a given band will not be present in the\r
    * output signal.\r
    */\r
-  \r
+\r
   static public final float BAND_NOT_PRESENT = Float.NEGATIVE_INFINITY;\r
 \r
-  \r
   static public final Equalizer PASS_THRU_EQ = new Equalizer();\r
 \r
-  \r
   private static final int BANDS = 32;\r
 \r
-  \r
   private final float[] settings = new float[BANDS];\r
 \r
   /**\r
@@ -154,12 +150,11 @@ public final class Equalizer {
    * \r
    * @return an array of factors that can be applied to the subbands.\r
    */\r
-  \r
-  \r
+\r
   float[] getBandFactors() {\r
-     float[] factors = new float[BANDS];\r
-     int maxCount = BANDS;\r
-    for ( int i = 0; i < maxCount; i++) {\r
+    float[] factors = new float[BANDS];\r
+    int maxCount = BANDS;\r
+    for (int i = 0; i < maxCount; i++) {\r
       factors[i] = getBandFactor(settings[i]);\r
     }\r
 \r
@@ -172,12 +167,12 @@ public final class Equalizer {
    * the range [-1.0,1.0].\r
    * \r
    */\r
-  \r
-  float getBandFactor( float eq) {\r
+\r
+  float getBandFactor(float eq) {\r
     if (eq == BAND_NOT_PRESENT)\r
       return 0.0f;\r
 \r
-     float f = (float) Math.pow(2.0, eq);\r
+    float f = (float) Math.pow(2.0, eq);\r
     return f;\r
   }\r
 \r
index 9c7029dd5ba5bcbab2ba8c60bdd716d1b12a2c63..777a1d3cd4d4e045452a45dee789e77c118847e7 100644 (file)
  *----------------------------------------------------------------------\r
  */\r
 \r
-\r
 /**\r
- * Implementations of FrameDecoder are responsible for decoding\r
- * an MPEG audio frame.\r
- *  \r
+ * Implementations of FrameDecoder are responsible for decoding an MPEG audio\r
+ * frame.\r
+ * \r
  */\r
-//REVIEW: the interface currently is too thin. There should be\r
+// REVIEW: the interface currently is too thin. There should be\r
 // methods to specify the output buffer, the synthesis filters and\r
-// possibly other objects used by the decoder. \r
-public interface FrameDecoder\r
-{\r
-       /**\r
-        * Decodes one frame of MPEG audio. \r
-        */\r
-       public void decodeFrame() throws DecoderException;\r
-               \r
+// possibly other objects used by the decoder.\r
+public interface FrameDecoder {\r
+  /**\r
+   * Decodes one frame of MPEG audio.\r
+   */\r
+  public void decodeFrame() throws DecoderException;\r
+\r
 }\r
index 55bf5ed8d5bc9c92832d3e40111a8586f997cfd1..b4ccc69aa02ed39bf060bbe6a8b6e50a359c199b 100644 (file)
  * Class for extracting information from a frame header.
  */
 
-
 public final class Header {
 
-  public static final int[][] frequencies = { { 22050, 24000, 16000, 1 },
-      { 44100, 48000, 32000, 1 }, { 11025, 12000, 8000, 1 } }; // SZD: MPEG25
+  public static final int[][] frequencies = { { 22050, 24000, 16000, 1 }, { 44100, 48000, 32000, 1 }, { 11025, 12000, 8000, 1 } }; // SZD:
+                                                                                                                                   // MPEG25
 
   /**
    * Constant for MPEG-2 LSF version
@@ -59,73 +58,66 @@ public final class Header {
   public static final int FOURTYEIGHT = 1;
   public static final int THIRTYTWO = 2;
 
-  
   private int h_layer;
-  
+
   private int h_protection_bit;
-  
+
   private int h_bitrate_index;
-  
+
   private int h_padding_bit;
-  
+
   private int h_mode_extension;
-  
+
   private int h_version;
-  
+
   private int h_mode;
-  
+
   private int h_sample_frequency;
-  
+
   private int h_number_of_subbands;
-  
+
   private int h_intensity_stereo_bound;
-  
+
   private boolean h_copyright;
-  
+
   private boolean h_original;
   // VBR support added by E.B
-  
+
   private double[] h_vbr_time_per_frame = { -1.0, 384.0, 1152.0, 1152.0 };
-  
+
   private boolean h_vbr;
-  
+
   private int h_vbr_frames;
-  
+
   private int h_vbr_scale;
-  
+
   private int h_vbr_bytes;
-  
+
   private byte[] h_vbr_toc;
 
-  
   private byte syncmode = Bitstream.INITIAL_SYNC;
-  
+
   private Crc16 crc;
 
-  
   public short checksum;
-  
+
   public int framesize;
-  
+
   public int nSlots;
 
-  
   private int _headerstring = -1; // E.B
 
-  
   private SideInfoBuffer sib;
-  
+
   private BitReserve br;
 
-  
   private int idx;
 
   Header() {
   }
 
-  
   public String toString() {
-     StringBuffer buffer = new StringBuffer(200);
+    StringBuffer buffer = new StringBuffer(200);
     buffer.append("Layer ");
     buffer.append(layer_string());
     buffer.append(" frame ");
@@ -141,7 +133,7 @@ public final class Header {
     buffer.append(' ');
     buffer.append(bitrate_string());
 
-     String s = buffer.toString();
+    String s = buffer.toString();
     return s;
   }
 
@@ -199,8 +191,7 @@ public final class Header {
             h_number_of_subbands = 12;
           else
             h_number_of_subbands = 8;
-        else if ((h_sample_frequency == FOURTYEIGHT)
-            || ((channel_bitrate >= 3) && (channel_bitrate <= 5)))
+        else if ((h_sample_frequency == FOURTYEIGHT) || ((channel_bitrate >= 3) && (channel_bitrate <= 5)))
           h_number_of_subbands = 27;
         else
           h_number_of_subbands = 30;
@@ -290,17 +281,13 @@ public final class Header {
         // Read number of frames (if available).
         if ((flags[3] & (byte) (1 << 0)) != 0) {
           System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length);
-          h_vbr_frames =
-              (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8)
-                  & 0x0000FF00 | tmp[3] & 0x000000FF;
+          h_vbr_frames = (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00 | tmp[3] & 0x000000FF;
           length += 4;
         }
         // Read size (if available).
         if ((flags[3] & (byte) (1 << 1)) != 0) {
           System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length);
-          h_vbr_bytes =
-              (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8)
-                  & 0x0000FF00 | tmp[3] & 0x000000FF;
+          h_vbr_bytes = (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00 | tmp[3] & 0x000000FF;
           length += 4;
         }
         // Read TOC (if available).
@@ -311,9 +298,7 @@ public final class Header {
         // Read scale (if available).
         if ((flags[3] & (byte) (1 << 3)) != 0) {
           System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length);
-          h_vbr_scale =
-              (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8)
-                  & 0x0000FF00 | tmp[3] & 0x000000FF;
+          h_vbr_scale = (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00 | tmp[3] & 0x000000FF;
           length += 4;
         }
         // System.out.println("VBR:"+xing+" Frames:"+ h_vbr_frames
@@ -339,15 +324,11 @@ public final class Header {
         // Bytes.
         int length = 4 + 6;
         System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length);
-        h_vbr_bytes =
-            (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00
-                | tmp[3] & 0x000000FF;
+        h_vbr_bytes = (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00 | tmp[3] & 0x000000FF;
         length += 4;
         // Frames.
         System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length);
-        h_vbr_frames =
-            (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00
-                | tmp[3] & 0x000000FF;
+        h_vbr_frames = (tmp[0] << 24) & 0xFF000000 | (tmp[1] << 16) & 0x00FF0000 | (tmp[2] << 8) & 0x0000FF00 | tmp[3] & 0x000000FF;
         length += 4;
         // System.out.println("VBR:"+vbri+" Frames:"+ h_vbr_frames
         // +" Size:"+h_vbr_bytes);
@@ -363,7 +344,7 @@ public final class Header {
   /**
    * Returns version.
    */
-  
+
   public int version() {
     return h_version;
   }
@@ -371,7 +352,7 @@ public final class Header {
   /**
    * Returns Layer ID.
    */
-  
+
   public int layer() {
     return h_layer;
   }
@@ -386,7 +367,7 @@ public final class Header {
   /**
    * Returns Sample Frequency.
    */
-  
+
   public int sample_frequency() {
     return h_sample_frequency;
   }
@@ -394,7 +375,7 @@ public final class Header {
   /**
    * Returns Frequency.
    */
-  
+
   public int frequency() {
     return frequencies[h_version][h_sample_frequency];
   }
@@ -402,7 +383,7 @@ public final class Header {
   /**
    * Returns Mode.
    */
-  
+
   public int mode() {
     return h_mode;
   }
@@ -410,7 +391,7 @@ public final class Header {
   /**
    * Returns Protection bit.
    */
-  
+
   public boolean checksums() {
     if (h_protection_bit == 0)
       return true;
@@ -462,7 +443,7 @@ public final class Header {
   /**
    * Returns Checksum flag. Compares computed checksum with stream checksum.
    */
-  
+
   public boolean checksum_ok() {
     return (checksum == crc.checksum());
   }
@@ -481,7 +462,7 @@ public final class Header {
   /**
    * Returns Slots.
    */
-  
+
   public int slots() {
     return nSlots;
   }
@@ -489,36 +470,35 @@ public final class Header {
   /**
    * Returns Mode Extension.
    */
-  
+
   public int mode_extension() {
     return h_mode_extension;
   }
 
   // E.B -> private to public
-  public static final int bitrates[][][] = {
-      {
-          { 0 /* free format */, 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000,
-              160000, 176000, 192000, 224000, 256000, 0 },
-          { 0 /* free format */, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000,
-              96000, 112000, 128000, 144000, 160000, 0 },
-          { 0 /* free format */, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000,
-              96000, 112000, 128000, 144000, 160000, 0 } },
-
-      {
-          { 0 /* free format */, 32000, 64000, 96000, 128000, 160000, 192000, 224000, 256000,
-              288000, 320000, 352000, 384000, 416000, 448000, 0 },
-          { 0 /* free format */, 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000,
-              192000, 224000, 256000, 320000, 384000, 0 },
-          { 0 /* free format */, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000,
-              160000, 192000, 224000, 256000, 320000, 0 } },
+  public static final int bitrates[][][] = { { { 0 /* free format */, 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 176000, 192000, 224000, 256000, 0 }, { 0 /*
+                                                                                                                                                                                          * free
+                                                                                                                                                                                          * format
+                                                                                                                                                                                          */, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0 }, { 0 /*
+                                                                                                                                                                                                                                                                                                             * free
+                                                                                                                                                                                                                                                                                                             * format
+                                                                                                                                                                                                                                                                                                             */, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0 } },
+
+  { { 0 /* free format */, 32000, 64000, 96000, 128000, 160000, 192000, 224000, 256000, 288000, 320000, 352000, 384000, 416000, 448000, 0 }, { 0 /*
+                                                                                                                                                  * free
+                                                                                                                                                  * format
+                                                                                                                                                  */, 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, 384000, 0 }, { 0 /*
+                                                                                                                                                                                                                                                                          * free
+                                                                                                                                                                                                                                                                          * format
+                                                                                                                                                                                                                                                                          */, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, 0 } },
       // SZD: MPEG2.5
-      {
-          { 0 /* free format */, 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000,
-              160000, 176000, 192000, 224000, 256000, 0 },
-          { 0 /* free format */, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000,
-              96000, 112000, 128000, 144000, 160000, 0 },
-          { 0 /* free format */, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000,
-              96000, 112000, 128000, 144000, 160000, 0 } },
+  { { 0 /* free format */, 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 176000, 192000, 224000, 256000, 0 }, { 0 /*
+                                                                                                                                               * free
+                                                                                                                                               * format
+                                                                                                                                               */, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0 }, { 0 /*
+                                                                                                                                                                                                                                                                  * free
+                                                                                                                                                                                                                                                                  * format
+                                                                                                                                                                                                                                                                  */, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0 } },
 
   };
 
@@ -529,17 +509,13 @@ public final class Header {
   public int calculate_framesize() {
 
     if (h_layer == 1) {
-      framesize =
-          (12 * bitrates[h_version][0][h_bitrate_index])
-              / frequencies[h_version][h_sample_frequency];
+      framesize = (12 * bitrates[h_version][0][h_bitrate_index]) / frequencies[h_version][h_sample_frequency];
       if (h_padding_bit != 0)
         framesize++;
       framesize <<= 2; // one slot is 4 bytes long
       nSlots = 0;
     } else {
-      framesize =
-          (144 * bitrates[h_version][h_layer - 1][h_bitrate_index])
-              / frequencies[h_version][h_sample_frequency];
+      framesize = (144 * bitrates[h_version][h_layer - 1][h_bitrate_index]) / frequencies[h_version][h_sample_frequency];
       if (h_version == MPEG2_LSF || h_version == MPEG25_LSF)
         framesize >>= 1; // SZD
       if (h_padding_bit != 0)
@@ -608,17 +584,16 @@ public final class Header {
    * 
    * @return milliseconds per frame
    */
-  
+
   public float ms_per_frame() // E.B
   {
     if (h_vbr == true) {
-       double tpf = h_vbr_time_per_frame[layer()] / frequency();
+      double tpf = h_vbr_time_per_frame[layer()] / frequency();
       if ((h_version == MPEG2_LSF) || (h_version == MPEG25_LSF))
         tpf /= 2;
       return ((float) (tpf * 1000));
     } else {
-       float ms_per_frame_array[][] =
-          { { 8.707483f, 8.0f, 12.0f }, { 26.12245f, 24.0f, 36.0f }, { 26.12245f, 24.0f, 36.0f } };
+      float ms_per_frame_array[][] = { { 8.707483f, 8.0f, 12.0f }, { 26.12245f, 24.0f, 36.0f }, { 26.12245f, 24.0f, 36.0f } };
       return (ms_per_frame_array[h_layer - 1][h_sample_frequency]);
     }
   }
@@ -646,7 +621,7 @@ public final class Header {
   /**
    * Return Layer version.
    */
-  
+
   public String layer_string() {
     switch (h_layer) {
     case 1:
@@ -660,39 +635,11 @@ public final class Header {
   }
 
   // E.B -> private to public
-  public static final String bitrate_str[][][] = {
-      {
-          { "free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s",
-              "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "176 kbit/s",
-              "192 kbit/s", "224 kbit/s", "256 kbit/s", "forbidden" },
-          { "free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s",
-              "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s",
-              "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden" },
-          { "free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s",
-              "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s",
-              "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden" } },
-
-      {
-          { "free format", "32 kbit/s", "64 kbit/s", "96 kbit/s", "128 kbit/s", "160 kbit/s",
-              "192 kbit/s", "224 kbit/s", "256 kbit/s", "288 kbit/s", "320 kbit/s", "352 kbit/s",
-              "384 kbit/s", "416 kbit/s", "448 kbit/s", "forbidden" },
-          { "free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s",
-              "96 kbit/s", "112 kbit/s", "128 kbit/s", "160 kbit/s", "192 kbit/s", "224 kbit/s",
-              "256 kbit/s", "320 kbit/s", "384 kbit/s", "forbidden" },
-          { "free format", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s",
-              "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "160 kbit/s", "192 kbit/s",
-              "224 kbit/s", "256 kbit/s", "320 kbit/s", "forbidden" } },
+  public static final String bitrate_str[][][] = { { { "free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "176 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "forbidden" }, { "free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden" }, { "free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden" } },
+
+  { { "free format", "32 kbit/s", "64 kbit/s", "96 kbit/s", "128 kbit/s", "160 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "288 kbit/s", "320 kbit/s", "352 kbit/s", "384 kbit/s", "416 kbit/s", "448 kbit/s", "forbidden" }, { "free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "160 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "320 kbit/s", "384 kbit/s", "forbidden" }, { "free format", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "160 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "320 kbit/s", "forbidden" } },
       // SZD: MPEG2.5
-      {
-          { "free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s",
-              "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "176 kbit/s",
-              "192 kbit/s", "224 kbit/s", "256 kbit/s", "forbidden" },
-          { "free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s",
-              "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s",
-              "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden" },
-          { "free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s",
-              "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s",
-              "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden" } }, };
+  { { "free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "176 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "forbidden" }, { "free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden" }, { "free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden" } }, };
 
   /**
    * Return Bitrate.
@@ -700,9 +647,8 @@ public final class Header {
    * @return bitrate in bps
    */
 
-  
   public String bitrate_string() {
-     String kbs = " kb/s";
+    String kbs = " kb/s";
     if (h_vbr == true) {
       return Integer.toString(bitrate() / 1000) + kbs;
     } else {
@@ -715,7 +661,7 @@ public final class Header {
    * 
    * @return bitrate in bps and average bitrate for VBR header
    */
-  
+
   public int bitrate() {
     if (h_vbr == true) {
       return ((int) ((h_vbr_bytes * 8) / (ms_per_frame() * h_vbr_frames))) * 1000;
@@ -738,7 +684,7 @@ public final class Header {
    * 
    * @return frequency string in kHz
    */
-  
+
   public String sample_frequency_string() {
     switch (h_sample_frequency) {
     case THIRTYTWO:
@@ -772,7 +718,7 @@ public final class Header {
   /**
    * Returns Mode.
    */
-  
+
   public String mode_string() {
     switch (h_mode) {
     case STEREO:
@@ -792,7 +738,7 @@ public final class Header {
    * 
    * @return MPEG-1 or MPEG-2 LSF or MPEG-2.5 LSF
    */
-  
+
   public String version_string() {
     switch (h_version) {
     case MPEG1:
@@ -833,17 +779,14 @@ public final class Header {
     this.br = br;
   }
 
-  
   public SideInfoBuffer getSideInfoBuffer() {
     return sib;
   }
 
-  
   public BitReserve getBitReserve() {
     return br;
   }
 
-  
   public int getIdx() {
     return idx;
   }
index fd77b6468f717a1886bd29366b4fa152abb5be5d..d32ee1aefaa5c6c7f413e779913db8c344a37508 100644 (file)
@@ -2,11 +2,11 @@
 
 public class HuffData {
 
-   public int x;
-   public int y;
-   public int w;
-   public int v;
-   public BitReserve br;
+  public int x;
+  public int y;
+  public int w;
+  public int v;
+  public BitReserve br;
 
   public HuffData(int x, int y, int w, int v, BitReserve br) {
     this.x = x;
index 3945c3d0dafe6e911096ad3643e9ba378dc6bab7..079a5c891d917c2e5d339179f0b8cbf2b55e7deb 100644 (file)
@@ -26,53 +26,44 @@ import java.io.InputStream;
  * \r
  * An instance of <code>InputStreamSource</code> implements a\r
  * <code>Source</code> that provides data from an <code>InputStream\r
- * </code>. Seeking functionality is not supported. \r
+ * </code>. Seeking functionality is not supported.\r
  * \r
  * @author MDM\r
  */\r
-public class InputStreamSource implements Source\r
-{\r
-       private final InputStream               in;\r
-       \r
-       public InputStreamSource(InputStream in)\r
-       {\r
-               if (in==null)\r
-                       throw new NullPointerException("in");\r
-               \r
-               this.in = in;           \r
-       }\r
-       \r
-       public int read(byte[] b, int offs, int len)\r
-               throws IOException\r
-       {\r
-               int read = in.read(b, offs, len);\r
-               return read;\r
-       }\r
-       \r
-       public boolean willReadBlock()\r
-       {\r
-               return true;\r
-               //boolean block = (in.available()==0);\r
-               //return block;\r
-       }\r
-       \r
-       public boolean isSeekable()\r
-       {\r
-               return false;   \r
-       }\r
-       \r
-       public long     tell()\r
-       {\r
-               return -1;      \r
-       }\r
-       \r
-       public long     seek(long to)\r
-       {\r
-               return -1;      \r
-       }\r
-       \r
-       public long length()\r
-       {\r
-               return -1;\r
-       }\r
+public class InputStreamSource implements Source {\r
+  private final InputStream in;\r
+\r
+  public InputStreamSource(InputStream in) {\r
+    if (in == null)\r
+      throw new NullPointerException("in");\r
+\r
+    this.in = in;\r
+  }\r
+\r
+  public int read(byte[] b, int offs, int len) throws IOException {\r
+    int read = in.read(b, offs, len);\r
+    return read;\r
+  }\r
+\r
+  public boolean willReadBlock() {\r
+    return true;\r
+    // boolean block = (in.available()==0);\r
+    // return block;\r
+  }\r
+\r
+  public boolean isSeekable() {\r
+    return false;\r
+  }\r
+\r
+  public long tell() {\r
+    return -1;\r
+  }\r
+\r
+  public long seek(long to) {\r
+    return -1;\r
+  }\r
+\r
+  public long length() {\r
+    return -1;\r
+  }\r
 }\r
index cc8dde737b8236153237481eef4b280a9b0a2ac7..502c0bdfb5dc9247d061e8c9eb10d5e08652bb4e 100644 (file)
@@ -21,9 +21,8 @@
 /**\r
  * Work in progress.\r
  * \r
- * API usage errors may be handled by throwing an instance of this\r
- * class, as per JMF 2.0. \r
+ * API usage errors may be handled by throwing an instance of this class, as per\r
+ * JMF 2.0.\r
  */\r
-public class JavaLayerError extends Error\r
-{      \r
+public class JavaLayerError extends Error {\r
 }\r
index 4d11270c14f1216fd3b4ef44630f31f6cdf63569..e8f455a8ebf1d785ad5b0d4dfe541b4480b7671d 100644 (file)
  *----------------------------------------------------------------------\r
  */\r
 \r
-\r
 /**\r
  * Exception erorr codes for components of the JavaLayer API.\r
  */\r
-public interface JavaLayerErrors\r
-{\r
-       /**\r
-        * The first bitstream error code. See the {@link DecoderErrors DecoderErrors}\r
-        * interface for other bitstream error codes.\r
-        */\r
-       static public final int BITSTREAM_ERROR = 0x100;\r
+public interface JavaLayerErrors {\r
+  /**\r
+   * The first bitstream error code. See the {@link DecoderErrors DecoderErrors}\r
+   * interface for other bitstream error codes.\r
+   */\r
+  static public final int BITSTREAM_ERROR = 0x100;\r
 \r
-       /**\r
-        * The first decoder error code. See the {@link DecoderErrors DecoderErrors}\r
-        * interface for other decoder error codes.\r
-        */\r
-       static public final int DECODER_ERROR = 0x200;\r
+  /**\r
+   * The first decoder error code. See the {@link DecoderErrors DecoderErrors}\r
+   * interface for other decoder error codes.\r
+   */\r
+  static public final int DECODER_ERROR = 0x200;\r
 \r
 }\r
index 2759a9a86ccd321025e20196e6270782bdc8d92f..b324415f29caa0475de1adbef28618834c921f8c 100644 (file)
  *----------------------------------------------------------------------
  */
 
-
 //import java.io.PrintStream;
 
-
 /**
- * The JavaLayerException is the base class for all API-level
- * exceptions thrown by JavaLayer. To facilitate conversion and 
- * common handling of exceptions from other domains, the class 
- * can delegate some functionality to a contained Throwable instance. 
- * <p> 
+ * The JavaLayerException is the base class for all API-level exceptions thrown
+ * by JavaLayer. To facilitate conversion and common handling of exceptions from
+ * other domains, the class can delegate some functionality to a contained
+ * Throwable instance.
+ * <p>
  * 
  * @author MDM
  */
-public class JavaLayerException extends Exception
-{
-     
-     private Throwable        exception;
-     
-     
-     public JavaLayerException()
-     {
-     }
-     
-     public JavaLayerException(String msg)
-     {
-          super(msg);
-     }
-     
-     public JavaLayerException(String msg, Throwable t)
-     {
-          super(msg);
-          exception = t;
-     }
-     
-     public Throwable getException()
-     {
-          return exception;   
-     }
-     
-     
-     public void printStackTrace()
-     {
-//          printStackTrace(System.err);  
-     }
-     
-     public void printStackTrace(PrintStream ps)
-     {
-//          if (this.exception==null)
-//          {
-//               super.printStackTrace(ps);    
-//          }
-//          else
-//          {
-//               exception.printStackTrace();
-//          }
-     }
-     
-     
+public class JavaLayerException extends Exception {
+
+  private Throwable exception;
+
+  public JavaLayerException() {
+  }
+
+  public JavaLayerException(String msg) {
+    super(msg);
+  }
+
+  public JavaLayerException(String msg, Throwable t) {
+    super(msg);
+    exception = t;
+  }
+
+  public Throwable getException() {
+    return exception;
+  }
+
+  public void printStackTrace() {
+    // printStackTrace(System.err);
+  }
+
+  public void printStackTrace(PrintStream ps) {
+    // if (this.exception==null)
+    // {
+    // super.printStackTrace(ps);
+    // }
+    // else
+    // {
+    // exception.printStackTrace();
+    // }
+  }
+
 }
index eda09dec606349014f0b41930718313de943d864..fc719e6a4a64908e65a15e12ff4d0521bc887ebb 100644 (file)
  *----------------------------------------------------------------------\r
  */\r
 \r
-\r
 //import java.io.InputStream;\r
 \r
 /**\r
- * The <code>JavaLayerHooks</code> class allows developers to change\r
- * the way the JavaLayer library uses Resources. \r
+ * The <code>JavaLayerHooks</code> class allows developers to change the way the\r
+ * JavaLayer library uses Resources.\r
  */\r
 \r
-public interface JavaLayerHook\r
-{\r
-       /**\r
-        * Retrieves the named resource. This allows resources to be\r
-        * obtained without specifying how they are retrieved. \r
-        */\r
-       public InputStream getResourceAsStream(String name);\r
+public interface JavaLayerHook {\r
+  /**\r
+   * Retrieves the named resource. This allows resources to be obtained without\r
+   * specifying how they are retrieved.\r
+   */\r
+  public InputStream getResourceAsStream(String name);\r
 }\r
index 13f2ac0b6f48cfaf678d9d5ee79ae995cd987b9a..54aae48ff2798c1882a6a9e9acbf6631ecbc1971 100644 (file)
@@ -18,7 +18,6 @@
  *----------------------------------------------------------------------\r
  */\r
 \r
-\r
 //import java.io.IOException;\r
 //import java.io.InputStream;\r
 //import java.io.InvalidClassException;\r
 //import java.lang.reflect.Array;\r
 \r
 /**\r
- * The JavaLayerUtils class is not strictly part of the JavaLayer API.\r
- * It serves to provide useful methods and system-wide hooks.\r
+ * The JavaLayerUtils class is not strictly part of the JavaLayer API. It serves\r
+ * to provide useful methods and system-wide hooks.\r
  * \r
  * @author MDM\r
  */\r
-public class JavaLayerUtils\r
-{\r
-       static private JavaLayerHook    hook = null;\r
-       \r
-       /**\r
-        * Deserializes the object contained in the given input stream.\r
-        * @param in    The input stream to deserialize an object from.\r
-        * @param cls   The expected class of the deserialized object. \r
-        */\r
-//     static public Object deserialize(InputStream in, Class cls)\r
-       static public Object deserialize(InputStream in)\r
-               throws IOException\r
-       {\r
-//             if (cls==null)\r
-//                     throw new NullPointerException("cls");\r
-               \r
-//             Object obj = deserialize(in, cls);\r
-            Object obj = deserialize(in);\r
-//             if (!cls.isInstance(obj))\r
-//             {\r
-//                     throw new InvalidObjectException("type of deserialized instance not of required class.");\r
-//             }\r
-               \r
-               return obj;\r
-       }\r
-       \r
-       /**\r
-        * Deserializes an object from the given <code>InputStream</code>.\r
-        * The deserialization is delegated to an <code>\r
-        * ObjectInputStream</code> instance. \r
-        * \r
-        * @param in    The <code>InputStream</code> to deserialize an object\r
-        *                              from.\r
-        * \r
-        * @return The object deserialized from the stream. \r
-        * @exception IOException is thrown if there was a problem reading\r
-        *              the underlying stream, or an object could not be deserialized\r
-        *              from the stream.\r
-        * \r
-        * @see java.io.ObjectInputStream\r
-        */\r
-       static public Object deserialize(InputStream in)\r
-               throws IOException\r
-       {\r
-               if (in==null)\r
-                       throw new NullPointerException("in");\r
-               \r
-               //TODO : need to enable after having objectinputstream\r
-               /*\r
-               ObjectInputStream objIn = new ObjectInputStream(in);\r
-               \r
-               Object obj;\r
-               \r
-               try\r
-               {\r
-                       obj = objIn.readObject();\r
-               }\r
-               catch (ClassNotFoundException ex)\r
-               {\r
-                       throw new InvalidClassException(ex.toString());\r
-               }\r
-               \r
-               return obj;\r
-               */\r
-               return null;\r
-       }\r
-\r
-       /**\r
-        * Deserializes an array from a given <code>InputStream</code>.\r
-        * \r
-        * @param in            The <code>InputStream</code> to \r
-        *                                      deserialize an object from.\r
-        *                              \r
-        * @param elemType      The class denoting the type of the array\r
-        *                                      elements.\r
-        * @param length        The expected length of the array, or -1 if\r
-        *                                      any length is expected.\r
-        */\r
-           static public Object deserializeArray(InputStream in, int length)\r
-         throws IOException\r
-    {\r
-         if (length<-1)\r
-              throw new IllegalArgumentException("length");\r
-         \r
-         Object obj = deserialize(in);\r
-         \r
-         return obj;\r
+public class JavaLayerUtils {\r
+  static private JavaLayerHook hook = null;\r
+\r
+  /**\r
+   * Deserializes the object contained in the given input stream.\r
+   * \r
+   * @param in\r
+   *          The input stream to deserialize an object from.\r
+   * @param cls\r
+   *          The expected class of the deserialized object.\r
+   */\r
+  // static public Object deserialize(InputStream in, Class cls)\r
+  static public Object deserialize(InputStream in) throws IOException {\r
+    // if (cls==null)\r
+    // throw new NullPointerException("cls");\r
+\r
+    // Object obj = deserialize(in, cls);\r
+    Object obj = deserialize(in);\r
+    // if (!cls.isInstance(obj))\r
+    // {\r
+    // throw new\r
+    // InvalidObjectException("type of deserialized instance not of required class.");\r
+    // }\r
+\r
+    return obj;\r
+  }\r
+\r
+  /**\r
+   * Deserializes an object from the given <code>InputStream</code>. The\r
+   * deserialization is delegated to an <code>\r
+   * ObjectInputStream</code> instance.\r
+   * \r
+   * @param in\r
+   *          The <code>InputStream</code> to deserialize an object from.\r
+   * \r
+   * @return The object deserialized from the stream.\r
+   * @exception IOException\r
+   *              is thrown if there was a problem reading the underlying\r
+   *              stream, or an object could not be deserialized from the\r
+   *              stream.\r
+   * \r
+   * @see java.io.ObjectInputStream\r
+   */\r
+  static public Object deserialize(InputStream in) throws IOException {\r
+    if (in == null)\r
+      throw new NullPointerException("in");\r
+\r
+    // TODO : need to enable after having objectinputstream\r
+    /*\r
+     * ObjectInputStream objIn = new ObjectInputStream(in);\r
+     * \r
+     * Object obj;\r
+     * \r
+     * try { obj = objIn.readObject(); } catch (ClassNotFoundException ex) {\r
+     * throw new InvalidClassException(ex.toString()); }\r
+     * \r
+     * return obj;\r
+     */\r
+    return null;\r
+  }\r
+\r
+  /**\r
+   * Deserializes an array from a given <code>InputStream</code>.\r
+   * \r
+   * @param in\r
+   *          The <code>InputStream</code> to deserialize an object from.\r
+   * \r
+   * @param elemType\r
+   *          The class denoting the type of the array elements.\r
+   * @param length\r
+   *          The expected length of the array, or -1 if any length is expected.\r
+   */\r
+  static public Object deserializeArray(InputStream in, int length) throws IOException {\r
+    if (length < -1)\r
+      throw new IllegalArgumentException("length");\r
+\r
+    Object obj = deserialize(in);\r
+\r
+    return obj;\r
+  }\r
+\r
+  // static public Object deserializeArray(InputStream in, Class elemType, int\r
+  // length)\r
+  // throws IOException\r
+  // {\r
+  // if (elemType==null)\r
+  // throw new NullPointerException("elemType");\r
+  //\r
+  // if (length<-1)\r
+  // throw new IllegalArgumentException("length");\r
+  //\r
+  // Object obj = deserialize(in);\r
+  //\r
+  // //SSJava will never throw exceptions as it is so this code is meaningless\r
+  // /*\r
+  // Class cls = obj.getClass();\r
+  //\r
+  // if (!cls.isArray())\r
+  // throw new InvalidObjectException("object is not an array");\r
+  //\r
+  // Class arrayElemType = cls.getComponentType();\r
+  // if (arrayElemType!=elemType)\r
+  // throw new InvalidObjectException("unexpected array component type");\r
+  //\r
+  // if (length != -1)\r
+  // {\r
+  // int arrayLength = Array.getLength(obj);\r
+  // if (arrayLength!=length)\r
+  // throw new InvalidObjectException("array length mismatch");\r
+  // }\r
+  // */\r
+  // return obj;\r
+  // }\r
+\r
+  // static public Object deserializeArrayResource(String name, Class elemType,\r
+  // int length)\r
+  static public Object deserializeArrayResource(String name, int length) throws IOException {\r
+    InputStream str = getResourceAsStream(name);\r
+    if (str == null)\r
+      throw new IOException("unable to load resource '" + name + "'");\r
+\r
+    // Object obj = deserializeArray(str, elemType, length);\r
+    Object obj = deserializeArray(str, length);\r
+\r
+    return obj;\r
+  }\r
+\r
+  static public void serialize(OutputStream out, Object obj) throws IOException {\r
+    // TODO : need to enable after having objectinputstream\r
+    // if (out==null)\r
+    // throw new NullPointerException("out");\r
+    //\r
+    // if (obj==null)\r
+    // throw new NullPointerException("obj");\r
+    //\r
+    // ObjectOutputStream objOut = new ObjectOutputStream(out);\r
+    // objOut.writeObject(obj);\r
+\r
+  }\r
+\r
+  /**\r
+   * Sets the system-wide JavaLayer hook.\r
+   */\r
+  static synchronized public void setHook(JavaLayerHook hook0) {\r
+    hook = hook0;\r
+  }\r
+\r
+  static synchronized public JavaLayerHook getHook() {\r
+    return hook;\r
+  }\r
+\r
+  /**\r
+   * Retrieves an InputStream for a named resource.\r
+   * \r
+   * @param name\r
+   *          The name of the resource. This must be a simple name, and not a\r
+   *          qualified package name.\r
+   * \r
+   * @return The InputStream for the named resource, or null if the resource has\r
+   *         not been found. If a hook has been provided, its\r
+   *         getResourceAsStream() method is called to retrieve the resource.\r
+   */\r
+  static synchronized public InputStream getResourceAsStream(String name) {\r
+    InputStream is = null;\r
+\r
+    if (hook != null) {\r
+      is = hook.getResourceAsStream(name);\r
     }\r
-//     static public Object deserializeArray(InputStream in, Class elemType, int length)\r
-//             throws IOException\r
-//     {\r
-//             if (elemType==null)\r
-//                     throw new NullPointerException("elemType");\r
-//             \r
-//             if (length<-1)\r
-//                     throw new IllegalArgumentException("length");\r
-//             \r
-//             Object obj = deserialize(in);\r
-//             \r
-//             //SSJava will never throw exceptions as it is so this code is meaningless\r
-//             /*\r
-//             Class cls = obj.getClass();\r
-//             \r
-//             if (!cls.isArray())\r
-//                     throw new InvalidObjectException("object is not an array");\r
-//             \r
-//             Class arrayElemType = cls.getComponentType();\r
-//             if (arrayElemType!=elemType)\r
-//                     throw new InvalidObjectException("unexpected array component type");\r
-//                             \r
-//             if (length != -1)\r
-//             {\r
-//                     int arrayLength = Array.getLength(obj);\r
-//                     if (arrayLength!=length)\r
-//                             throw new InvalidObjectException("array length mismatch");\r
-//             }\r
-//             */\r
-//             return obj;\r
-//     }\r
-\r
-//     static public Object deserializeArrayResource(String name, Class elemType, int length)\r
-           static public Object deserializeArrayResource(String name, int length)\r
-               throws IOException\r
-       {               \r
-               InputStream str = getResourceAsStream(name);\r
-               if (str==null)\r
-                       throw new IOException("unable to load resource '"+name+"'");\r
-               \r
-//             Object obj = deserializeArray(str, elemType, length);\r
-               Object obj = deserializeArray(str, length);\r
-               \r
-               return obj;\r
-       }       \r
-       \r
-       static public void serialize(OutputStream out, Object obj)\r
-               throws IOException\r
-       {\r
-       //TODO : need to enable after having objectinputstream\r
-//             if (out==null)\r
-//                     throw new NullPointerException("out");\r
-//             \r
-//             if (obj==null)\r
-//                     throw new NullPointerException("obj");\r
-//             \r
-//             ObjectOutputStream objOut = new ObjectOutputStream(out);\r
-//             objOut.writeObject(obj);\r
-                               \r
-       }\r
-\r
-       /**\r
-        * Sets the system-wide JavaLayer hook.\r
-        */\r
-       static synchronized public void setHook(JavaLayerHook hook0)            \r
-       {\r
-               hook = hook0;\r
-       }\r
-       \r
-       static synchronized public JavaLayerHook getHook()\r
-       {\r
-               return hook;    \r
-       }\r
-       \r
-       /**\r
-        * Retrieves an InputStream for a named resource. \r
-        * \r
-        * @param name  The name of the resource. This must be a simple\r
-        *                              name, and not a qualified package name.\r
-        * \r
-        * @return              The InputStream for the named resource, or null if\r
-        *                              the resource has not been found. If a hook has been \r
-        *                              provided, its getResourceAsStream() method is called\r
-        *                              to retrieve the resource. \r
-        */\r
-       static synchronized public InputStream getResourceAsStream(String name)\r
-       {\r
-               InputStream is = null;\r
-               \r
-               if (hook!=null)\r
-               {\r
-                       is = hook.getResourceAsStream(name);    \r
-               }\r
-               //TODO java reflection\r
-//             else\r
-//             {\r
-//                     Class cls = JavaLayerUtils.class;\r
-//                     is = cls.getResourceAsStream(name);\r
-//             }\r
-               \r
-               return is;              \r
-       }\r
+    // TODO java reflection\r
+    // else\r
+    // {\r
+    // Class cls = JavaLayerUtils.class;\r
+    // is = cls.getResourceAsStream(name);\r
+    // }\r
+\r
+    return is;\r
+  }\r
 }\r
index 3dc53b81d222b06c8d2d2c8f246ef39f140e56d8..3cb4b1dadb9728ae498a68a6f2609533e8f30d22 100644 (file)
@@ -1,3 +1,3 @@
-public @interface LATTICE{
-    String value();
+public @interface LATTICE {
+  String value();
 }
index 2b28d2d8265529e97e12fffa38aeed64106986fe..6802e54112e613a2c9f596754a45b472a7f7f42d 100644 (file)
  * Implements decoding of MPEG Audio Layer I frames.
  */
 
-
 class LayerIDecoder implements FrameDecoder {
 
-  
   protected Bitstream stream;
-  
+
   protected Header header;
-  
+
   protected SynthesisFilter filter1;
-  
+
   protected SynthesisFilter filter2;
-  
+
   protected Obuffer buffer;
-  
+
   protected int which_channels;
-  
+
   protected int mode;
 
-  
   protected int num_subbands;
-  
+
   protected Subband[] subbands;
 
-  
   protected Crc16 crc = null; // new Crc16[1] to enable CRC checking.
 
   public LayerIDecoder() {
     crc = new Crc16();
   }
 
-  public void create( Bitstream stream0,  Header header0,
-       SynthesisFilter filtera,  SynthesisFilter filterb,
-       Obuffer buffer0,  int which_ch0) {
+  public void create(Bitstream stream0, Header header0, SynthesisFilter filtera, SynthesisFilter filterb, Obuffer buffer0, int which_ch0) {
     stream = stream0;
     header = header0;
     filter1 = filtera;
@@ -90,7 +84,7 @@ class LayerIDecoder implements FrameDecoder {
   }
 
   protected void createSubbands() {
-     int i;
+    int i;
     if (mode == Header.SINGLE_CHANNEL) {
       for (i = 0; i < num_subbands; ++i) {
         subbands[i] = new SubbandLayer1(i);
@@ -111,7 +105,7 @@ class LayerIDecoder implements FrameDecoder {
 
   protected void readAllocation() throws DecoderException {
     // start to read audio data:
-    for ( int i = 0; i < num_subbands; ++i)
+    for (int i = 0; i < num_subbands; ++i)
       subbands[i].read_allocation(stream, header, crc);
 
   }
@@ -121,20 +115,19 @@ class LayerIDecoder implements FrameDecoder {
   }
 
   protected void readScaleFactors() {
-    for ( int i = 0; i < num_subbands; ++i)
+    for (int i = 0; i < num_subbands; ++i)
       subbands[i].read_scalefactor(stream, header);
   }
 
-  
   protected void readSampleData() {
 
-     boolean read_ready = false;
-     boolean write_ready = false;
+    boolean read_ready = false;
+    boolean write_ready = false;
 
-     int mode = header.mode(); // header.mode() will return
-                                           // DELTA(THIS)
+    int mode = header.mode(); // header.mode() will return
+                              // DELTA(THIS)
 
-     int i;
+    int i;
     do {
 
       for (i = 0; i < num_subbands; ++i) {
@@ -161,53 +154,34 @@ class LayerIDecoder implements FrameDecoder {
    * Class for layer I subbands in single channel mode. Used for single channel
    * mode and in derived class for intensity stereo mode
    */
-  
-  
+
   static class SubbandLayer1 extends Subband {
 
     // Factors and offsets for sample requantization
-    public static final float table_factor[] = { 0.0f, (1.0f / 2.0f) * (4.0f / 3.0f),
-        (1.0f / 4.0f) * (8.0f / 7.0f), (1.0f / 8.0f) * (16.0f / 15.0f),
-        (1.0f / 16.0f) * (32.0f / 31.0f), (1.0f / 32.0f) * (64.0f / 63.0f),
-        (1.0f / 64.0f) * (128.0f / 127.0f), (1.0f / 128.0f) * (256.0f / 255.0f),
-        (1.0f / 256.0f) * (512.0f / 511.0f), (1.0f / 512.0f) * (1024.0f / 1023.0f),
-        (1.0f / 1024.0f) * (2048.0f / 2047.0f), (1.0f / 2048.0f) * (4096.0f / 4095.0f),
-        (1.0f / 4096.0f) * (8192.0f / 8191.0f), (1.0f / 8192.0f) * (16384.0f / 16383.0f),
-        (1.0f / 16384.0f) * (32768.0f / 32767.0f) };
-
-    public static final float table_offset[] = { 0.0f, ((1.0f / 2.0f) - 1.0f) * (4.0f / 3.0f),
-        ((1.0f / 4.0f) - 1.0f) * (8.0f / 7.0f), ((1.0f / 8.0f) - 1.0f) * (16.0f / 15.0f),
-        ((1.0f / 16.0f) - 1.0f) * (32.0f / 31.0f), ((1.0f / 32.0f) - 1.0f) * (64.0f / 63.0f),
-        ((1.0f / 64.0f) - 1.0f) * (128.0f / 127.0f), ((1.0f / 128.0f) - 1.0f) * (256.0f / 255.0f),
-        ((1.0f / 256.0f) - 1.0f) * (512.0f / 511.0f),
-        ((1.0f / 512.0f) - 1.0f) * (1024.0f / 1023.0f),
-        ((1.0f / 1024.0f) - 1.0f) * (2048.0f / 2047.0f),
-        ((1.0f / 2048.0f) - 1.0f) * (4096.0f / 4095.0f),
-        ((1.0f / 4096.0f) - 1.0f) * (8192.0f / 8191.0f),
-        ((1.0f / 8192.0f) - 1.0f) * (16384.0f / 16383.0f),
-        ((1.0f / 16384.0f) - 1.0f) * (32768.0f / 32767.0f) };
-
-    
+    public static final float table_factor[] = { 0.0f, (1.0f / 2.0f) * (4.0f / 3.0f), (1.0f / 4.0f) * (8.0f / 7.0f), (1.0f / 8.0f) * (16.0f / 15.0f), (1.0f / 16.0f) * (32.0f / 31.0f), (1.0f / 32.0f) * (64.0f / 63.0f), (1.0f / 64.0f) * (128.0f / 127.0f), (1.0f / 128.0f) * (256.0f / 255.0f), (1.0f / 256.0f) * (512.0f / 511.0f), (1.0f / 512.0f) * (1024.0f / 1023.0f), (1.0f / 1024.0f) * (2048.0f / 2047.0f), (1.0f / 2048.0f) * (4096.0f / 4095.0f), (1.0f / 4096.0f) * (8192.0f / 8191.0f), (1.0f / 8192.0f) * (16384.0f / 16383.0f), (1.0f / 16384.0f) * (32768.0f / 32767.0f) };
+
+    public static final float table_offset[] = { 0.0f, ((1.0f / 2.0f) - 1.0f) * (4.0f / 3.0f), ((1.0f / 4.0f) - 1.0f) * (8.0f / 7.0f), ((1.0f / 8.0f) - 1.0f) * (16.0f / 15.0f), ((1.0f / 16.0f) - 1.0f) * (32.0f / 31.0f), ((1.0f / 32.0f) - 1.0f) * (64.0f / 63.0f), ((1.0f / 64.0f) - 1.0f) * (128.0f / 127.0f), ((1.0f / 128.0f) - 1.0f) * (256.0f / 255.0f), ((1.0f / 256.0f) - 1.0f) * (512.0f / 511.0f), ((1.0f / 512.0f) - 1.0f) * (1024.0f / 1023.0f), ((1.0f / 1024.0f) - 1.0f) * (2048.0f / 2047.0f), ((1.0f / 2048.0f) - 1.0f) * (4096.0f / 4095.0f), ((1.0f / 4096.0f) - 1.0f) * (8192.0f / 8191.0f), ((1.0f / 8192.0f) - 1.0f) * (16384.0f / 16383.0f), ((1.0f / 16384.0f) - 1.0f) * (32768.0f / 32767.0f) };
+
     protected int subbandnumber;
-    
+
     protected int samplenumber;
-    
+
     protected int allocation;
-    
+
     protected float scalefactor;
-    
+
     protected int samplelength;
-    
+
     protected float sample;
-    
+
     protected float factor;
-    
+
     protected float offset;
 
     /**
      * Construtor.
      */
-    public SubbandLayer1( int subbandnumber) {
+    public SubbandLayer1(int subbandnumber) {
       this.subbandnumber = subbandnumber;
       samplenumber = 0;
     }
@@ -215,11 +189,9 @@ class LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    // 
-    
-    public void read_allocation( Bitstream stream,
-         Header header,  Crc16 crc)
-        throws DecoderException {
+    //
+
+    public void read_allocation(Bitstream stream, Header header, Crc16 crc) throws DecoderException {
 
       if ((allocation = stream.get_bits(4)) == 15) {
         // CGJ: catch this condition and throw appropriate exception
@@ -242,15 +214,14 @@ class LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    public void read_scalefactor( Bitstream stream,  Header header) {
+    public void read_scalefactor(Bitstream stream, Header header) {
       if (allocation != 0)
         scalefactor = scalefactors[stream.get_bits(6)];
     }
 
     // ssjava
-    
-    
-    public boolean read_sampledata( Bitstream stream) {
+
+    public boolean read_sampledata(Bitstream stream) {
       if (allocation != 0) {
         sample = (float) (stream.get_bits(samplelength));
       }
@@ -261,14 +232,11 @@ class LayerIDecoder implements FrameDecoder {
       return false;
     }
 
-    // 
-    
-    public boolean put_next_sample( int channels,
-         SynthesisFilter filter1,
-         SynthesisFilter filter2) {
+    //
+
+    public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) {
       if ((allocation != 0) && (channels != OutputChannels.RIGHT_CHANNEL)) {
-         float scaled_sample =
-            (sample * factor + offset) * scalefactor;
+        float scaled_sample = (sample * factor + offset) * scalefactor;
         filter1.input_sample(scaled_sample, subbandnumber);
       }
       return true;
@@ -278,56 +246,53 @@ class LayerIDecoder implements FrameDecoder {
   /**
    * Class for layer I subbands in joint stereo mode.
    */
-  
-  
+
   static class SubbandLayer1IntensityStereo extends SubbandLayer1 {
-    
+
     protected float channel2_scalefactor;
 
     /**
      * Constructor
      */
-    public SubbandLayer1IntensityStereo( int subbandnumber) {
+    public SubbandLayer1IntensityStereo(int subbandnumber) {
       super(subbandnumber);
     }
 
     /**
           *
           */
-    
-    public void read_allocation( Bitstream stream,  Header header,
-         Crc16 crc) throws DecoderException {
+
+    public void read_allocation(Bitstream stream, Header header, Crc16 crc) throws DecoderException {
       super.read_allocation(stream, header, crc);
     }
 
     /**
           *
           */
-    public void read_scalefactor( Bitstream stream,  Header header) {
+    public void read_scalefactor(Bitstream stream, Header header) {
       if (allocation != 0) {
         scalefactor = scalefactors[stream.get_bits(6)];
         channel2_scalefactor = scalefactors[stream.get_bits(6)];
       }
     }
 
-    public boolean read_sampledata( Bitstream stream) {
+    public boolean read_sampledata(Bitstream stream) {
       return super.read_sampledata(stream);
     }
 
-    public boolean put_next_sample( int channels,  SynthesisFilter filter1,
-         SynthesisFilter filter2) {
+    public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) {
       if (allocation != 0) {
         sample = sample * factor + offset; // requantization
         if (channels == OutputChannels.BOTH_CHANNELS) {
-           float sample1 = sample * scalefactor;
-           float sample2 = sample * channel2_scalefactor;
+          float sample1 = sample * scalefactor;
+          float sample2 = sample * channel2_scalefactor;
           filter1.input_sample(sample1, subbandnumber);
           filter2.input_sample(sample2, subbandnumber);
         } else if (channels == OutputChannels.LEFT_CHANNEL) {
-           float sample1 = sample * scalefactor;
+          float sample1 = sample * scalefactor;
           filter1.input_sample(sample1, subbandnumber);
         } else {
-           float sample2 = sample * channel2_scalefactor;
+          float sample2 = sample * channel2_scalefactor;
           filter1.input_sample(sample2, subbandnumber);
         }
       }
@@ -338,26 +303,25 @@ class LayerIDecoder implements FrameDecoder {
   /**
    * Class for layer I subbands in stereo mode.
    */
-  
-  
+
   static class SubbandLayer1Stereo extends SubbandLayer1 {
-    
+
     protected int channel2_allocation;
-    
+
     protected float channel2_scalefactor;
-    
+
     protected int channel2_samplelength;
-    
+
     protected float channel2_sample;
-    
+
     protected float channel2_factor;
-    
+
     protected float channel2_offset;
 
     /**
      * Constructor
      */
-    public SubbandLayer1Stereo( int subbandnumber) {
+    public SubbandLayer1Stereo(int subbandnumber) {
       super(subbandnumber);
     }
 
@@ -365,9 +329,7 @@ class LayerIDecoder implements FrameDecoder {
           *
           */
     // ssjava
-    public void read_allocation( Bitstream stream,
-         Header header,  Crc16 crc)
-        throws DecoderException {
+    public void read_allocation(Bitstream stream, Header header, Crc16 crc) throws DecoderException {
       allocation = stream.get_bits(4);
       channel2_allocation = stream.get_bits(4);
       if (crc != null) {
@@ -389,7 +351,7 @@ class LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    public void read_scalefactor( Bitstream stream,  Header header) {
+    public void read_scalefactor(Bitstream stream, Header header) {
       if (allocation != 0)
         scalefactor = scalefactors[stream.get_bits(6)];
       if (channel2_allocation != 0)
@@ -399,10 +361,9 @@ class LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    
-    public boolean read_sampledata( Bitstream stream) {
-       boolean returnvalue =
-          super.read_sampledata(stream);
+
+    public boolean read_sampledata(Bitstream stream) {
+      boolean returnvalue = super.read_sampledata(stream);
       if (channel2_allocation != 0) {
         channel2_sample = (float) (stream.get_bits(channel2_samplelength));
       }
@@ -412,13 +373,11 @@ class LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    
-    public boolean put_next_sample( int channels,  SynthesisFilter filter1,
-         SynthesisFilter filter2) {
+
+    public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) {
       super.put_next_sample(channels, filter1, filter2);
       if ((channel2_allocation != 0) && (channels != OutputChannels.LEFT_CHANNEL)) {
-         float sample2 =
-            (channel2_sample * channel2_factor + channel2_offset) * channel2_scalefactor;
+        float sample2 = (channel2_sample * channel2_factor + channel2_offset) * channel2_scalefactor;
         if (channels == OutputChannels.BOTH_CHANNELS)
           filter2.input_sample(sample2, subbandnumber);
         else
index d9af8f4b24eff257444ff84b5c53abcaff8ac477..0ab4e20d1c8973263503077886f41ce0781f8021 100644 (file)
  * Implements decoding of MPEG Audio Layer II frames.
  */
 
-
 class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
 
   public LayerIIDecoder() {
   }
 
   protected void createSubbands() {
-     int i;
+    int i;
     if (mode == Header.SINGLE_CHANNEL)
       for (i = 0; i < num_subbands; ++i)
         subbands[i] = new SubbandLayer2(i);
@@ -57,7 +56,7 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
   protected void readScaleFactorSelection() {
     // eom note: num_subbands is defined in LayerIDecoder so it has (THIS,
     // LayerIDecoder) Loc
-    for ( int i = 0; i < num_subbands; ++i) {
+    for (int i = 0; i < num_subbands; ++i) {
       ((SubbandLayer2) subbands[i]).read_scalefactor_selection(stream, crc);
     }
   }
@@ -65,510 +64,105 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
   /**
    * Class for layer II subbands in single channel mode.
    */
-  
-  
+
   static class SubbandLayer2 extends Subband {
     // this table contains 3 requantized samples for each legal codeword
     // when grouped in 5 bits, i.e. 3 quantizationsteps per sample
-    public static final float grouping_5bits[] = new float[] { -2.0f / 3.0f, -2.0f / 3.0f,
-        -2.0f / 3.0f, 0.0f, -2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, -2.0f / 3.0f,
-        -2.0f / 3.0f, 0.0f, -2.0f / 3.0f, 0.0f, 0.0f, -2.0f / 3.0f, 2.0f / 3.0f, 0.0f,
-        -2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, 0.0f, 2.0f / 3.0f, -2.0f / 3.0f,
-        2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, -2.0f / 3.0f, -2.0f / 3.0f, 0.0f, 0.0f,
-        -2.0f / 3.0f, 0.0f, 2.0f / 3.0f, -2.0f / 3.0f, 0.0f, -2.0f / 3.0f, 0.0f, 0.0f, 0.0f, 0.0f,
-        0.0f, 2.0f / 3.0f, 0.0f, 0.0f, -2.0f / 3.0f, 2.0f / 3.0f, 0.0f, 0.0f, 2.0f / 3.0f, 0.0f,
-        2.0f / 3.0f, 2.0f / 3.0f, 0.0f, -2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, 0.0f,
-        -2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, 0.0f,
-        2.0f / 3.0f, 0.0f, 0.0f, 2.0f / 3.0f, 2.0f / 3.0f, 0.0f, 2.0f / 3.0f, -2.0f / 3.0f,
-        2.0f / 3.0f, 2.0f / 3.0f, 0.0f, 2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f,
-        2.0f / 3.0f };
+    public static final float grouping_5bits[] = new float[] { -2.0f / 3.0f, -2.0f / 3.0f, -2.0f / 3.0f, 0.0f, -2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, -2.0f / 3.0f, -2.0f / 3.0f, 0.0f, -2.0f / 3.0f, 0.0f, 0.0f, -2.0f / 3.0f, 2.0f / 3.0f, 0.0f, -2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, 0.0f, 2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, -2.0f / 3.0f, -2.0f / 3.0f, 0.0f, 0.0f, -2.0f / 3.0f, 0.0f, 2.0f / 3.0f, -2.0f / 3.0f, 0.0f, -2.0f / 3.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f / 3.0f, 0.0f, 0.0f, -2.0f / 3.0f, 2.0f / 3.0f, 0.0f, 0.0f, 2.0f / 3.0f, 0.0f, 2.0f / 3.0f, 2.0f / 3.0f, 0.0f, -2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, 0.0f, -2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, -2.0f / 3.0f, 0.0f, 2.0f / 3.0f, 0.0f, 0.0f, 2.0f / 3.0f, 2.0f / 3.0f, 0.0f, 2.0f / 3.0f, -2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f, 0.0f, 2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f, 2.0f / 3.0f };
 
     // this table contains 3 requantized samples for each legal codeword
     // when grouped in 7 bits, i.e. 5 quantizationsteps per sample
-    public static final float grouping_7bits[] = new float[] { -0.8f, -0.8f, -0.8f, -0.4f, -0.8f,
-        -0.8f, 0.0f, -0.8f, -0.8f, 0.4f, -0.8f, -0.8f, 0.8f, -0.8f, -0.8f, -0.8f, -0.4f, -0.8f,
-        -0.4f, -0.4f, -0.8f, 0.0f, -0.4f, -0.8f, 0.4f, -0.4f, -0.8f, 0.8f, -0.4f, -0.8f, -0.8f,
-        0.0f, -0.8f, -0.4f, 0.0f, -0.8f, 0.0f, 0.0f, -0.8f, 0.4f, 0.0f, -0.8f, 0.8f, 0.0f, -0.8f,
-        -0.8f, 0.4f, -0.8f, -0.4f, 0.4f, -0.8f, 0.0f, 0.4f, -0.8f, 0.4f, 0.4f, -0.8f, 0.8f, 0.4f,
-        -0.8f, -0.8f, 0.8f, -0.8f, -0.4f, 0.8f, -0.8f, 0.0f, 0.8f, -0.8f, 0.4f, 0.8f, -0.8f, 0.8f,
-        0.8f, -0.8f, -0.8f, -0.8f, -0.4f, -0.4f, -0.8f, -0.4f, 0.0f, -0.8f, -0.4f, 0.4f, -0.8f,
-        -0.4f, 0.8f, -0.8f, -0.4f, -0.8f, -0.4f, -0.4f, -0.4f, -0.4f, -0.4f, 0.0f, -0.4f, -0.4f,
-        0.4f, -0.4f, -0.4f, 0.8f, -0.4f, -0.4f, -0.8f, 0.0f, -0.4f, -0.4f, 0.0f, -0.4f, 0.0f, 0.0f,
-        -0.4f, 0.4f, 0.0f, -0.4f, 0.8f, 0.0f, -0.4f, -0.8f, 0.4f, -0.4f, -0.4f, 0.4f, -0.4f, 0.0f,
-        0.4f, -0.4f, 0.4f, 0.4f, -0.4f, 0.8f, 0.4f, -0.4f, -0.8f, 0.8f, -0.4f, -0.4f, 0.8f, -0.4f,
-        0.0f, 0.8f, -0.4f, 0.4f, 0.8f, -0.4f, 0.8f, 0.8f, -0.4f, -0.8f, -0.8f, 0.0f, -0.4f, -0.8f,
-        0.0f, 0.0f, -0.8f, 0.0f, 0.4f, -0.8f, 0.0f, 0.8f, -0.8f, 0.0f, -0.8f, -0.4f, 0.0f, -0.4f,
-        -0.4f, 0.0f, 0.0f, -0.4f, 0.0f, 0.4f, -0.4f, 0.0f, 0.8f, -0.4f, 0.0f, -0.8f, 0.0f, 0.0f,
-        -0.4f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.4f, 0.0f, 0.0f, 0.8f, 0.0f, 0.0f, -0.8f, 0.4f, 0.0f,
-        -0.4f, 0.4f, 0.0f, 0.0f, 0.4f, 0.0f, 0.4f, 0.4f, 0.0f, 0.8f, 0.4f, 0.0f, -0.8f, 0.8f, 0.0f,
-        -0.4f, 0.8f, 0.0f, 0.0f, 0.8f, 0.0f, 0.4f, 0.8f, 0.0f, 0.8f, 0.8f, 0.0f, -0.8f, -0.8f,
-        0.4f, -0.4f, -0.8f, 0.4f, 0.0f, -0.8f, 0.4f, 0.4f, -0.8f, 0.4f, 0.8f, -0.8f, 0.4f, -0.8f,
-        -0.4f, 0.4f, -0.4f, -0.4f, 0.4f, 0.0f, -0.4f, 0.4f, 0.4f, -0.4f, 0.4f, 0.8f, -0.4f, 0.4f,
-        -0.8f, 0.0f, 0.4f, -0.4f, 0.0f, 0.4f, 0.0f, 0.0f, 0.4f, 0.4f, 0.0f, 0.4f, 0.8f, 0.0f, 0.4f,
-        -0.8f, 0.4f, 0.4f, -0.4f, 0.4f, 0.4f, 0.0f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.8f, 0.4f, 0.4f,
-        -0.8f, 0.8f, 0.4f, -0.4f, 0.8f, 0.4f, 0.0f, 0.8f, 0.4f, 0.4f, 0.8f, 0.4f, 0.8f, 0.8f, 0.4f,
-        -0.8f, -0.8f, 0.8f, -0.4f, -0.8f, 0.8f, 0.0f, -0.8f, 0.8f, 0.4f, -0.8f, 0.8f, 0.8f, -0.8f,
-        0.8f, -0.8f, -0.4f, 0.8f, -0.4f, -0.4f, 0.8f, 0.0f, -0.4f, 0.8f, 0.4f, -0.4f, 0.8f, 0.8f,
-        -0.4f, 0.8f, -0.8f, 0.0f, 0.8f, -0.4f, 0.0f, 0.8f, 0.0f, 0.0f, 0.8f, 0.4f, 0.0f, 0.8f,
-        0.8f, 0.0f, 0.8f, -0.8f, 0.4f, 0.8f, -0.4f, 0.4f, 0.8f, 0.0f, 0.4f, 0.8f, 0.4f, 0.4f, 0.8f,
-        0.8f, 0.4f, 0.8f, -0.8f, 0.8f, 0.8f, -0.4f, 0.8f, 0.8f, 0.0f, 0.8f, 0.8f, 0.4f, 0.8f, 0.8f,
-        0.8f, 0.8f, 0.8f };
+    public static final float grouping_7bits[] = new float[] { -0.8f, -0.8f, -0.8f, -0.4f, -0.8f, -0.8f, 0.0f, -0.8f, -0.8f, 0.4f, -0.8f, -0.8f, 0.8f, -0.8f, -0.8f, -0.8f, -0.4f, -0.8f, -0.4f, -0.4f, -0.8f, 0.0f, -0.4f, -0.8f, 0.4f, -0.4f, -0.8f, 0.8f, -0.4f, -0.8f, -0.8f, 0.0f, -0.8f, -0.4f, 0.0f, -0.8f, 0.0f, 0.0f, -0.8f, 0.4f, 0.0f, -0.8f, 0.8f, 0.0f, -0.8f, -0.8f, 0.4f, -0.8f, -0.4f, 0.4f, -0.8f, 0.0f, 0.4f, -0.8f, 0.4f, 0.4f, -0.8f, 0.8f, 0.4f, -0.8f, -0.8f, 0.8f, -0.8f, -0.4f, 0.8f, -0.8f, 0.0f, 0.8f, -0.8f, 0.4f, 0.8f, -0.8f, 0.8f, 0.8f, -0.8f, -0.8f, -0.8f, -0.4f, -0.4f, -0.8f, -0.4f, 0.0f, -0.8f, -0.4f, 0.4f, -0.8f, -0.4f, 0.8f, -0.8f, -0.4f, -0.8f, -0.4f, -0.4f, -0.4f, -0.4f, -0.4f, 0.0f, -0.4f, -0.4f, 0.4f, -0.4f, -0.4f, 0.8f, -0.4f, -0.4f, -0.8f, 0.0f, -0.4f, -0.4f, 0.0f, -0.4f, 0.0f, 0.0f, -0.4f, 0.4f, 0.0f, -0.4f, 0.8f, 0.0f, -0.4f, -0.8f, 0.4f, -0.4f, -0.4f, 0.4f, -0.4f, 0.0f, 0.4f, -0.4f, 0.4f, 0.4f, -0.4f, 0.8f, 0.4f, -0.4f, -0.8f, 0.8f, -0.4f, -0.4f, 0.8f, -0.4f, 0.0f, 0.8f, -0.4f, 0.4f, 0.8f, -0.4f, 0.8f, 0.8f, -0.4f, -0.8f, -0.8f, 0.0f, -0.4f, -0.8f, 0.0f, 0.0f, -0.8f, 0.0f, 0.4f, -0.8f, 0.0f, 0.8f, -0.8f, 0.0f, -0.8f, -0.4f, 0.0f, -0.4f, -0.4f, 0.0f, 0.0f, -0.4f, 0.0f, 0.4f, -0.4f, 0.0f, 0.8f, -0.4f, 0.0f, -0.8f, 0.0f, 0.0f, -0.4f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.4f, 0.0f, 0.0f, 0.8f, 0.0f, 0.0f, -0.8f, 0.4f, 0.0f, -0.4f, 0.4f, 0.0f, 0.0f, 0.4f, 0.0f, 0.4f, 0.4f, 0.0f, 0.8f, 0.4f, 0.0f, -0.8f, 0.8f, 0.0f, -0.4f, 0.8f, 0.0f, 0.0f, 0.8f, 0.0f, 0.4f, 0.8f, 0.0f, 0.8f, 0.8f, 0.0f, -0.8f, -0.8f, 0.4f, -0.4f, -0.8f, 0.4f, 0.0f, -0.8f, 0.4f, 0.4f, -0.8f, 0.4f, 0.8f, -0.8f, 0.4f, -0.8f, -0.4f, 0.4f, -0.4f, -0.4f, 0.4f, 0.0f, -0.4f, 0.4f, 0.4f, -0.4f, 0.4f, 0.8f, -0.4f, 0.4f, -0.8f, 0.0f, 0.4f, -0.4f, 0.0f, 0.4f, 0.0f, 0.0f, 0.4f, 0.4f, 0.0f, 0.4f, 0.8f, 0.0f, 0.4f, -0.8f, 0.4f, 0.4f, -0.4f, 0.4f, 0.4f, 0.0f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.8f, 0.4f, 0.4f, -0.8f, 0.8f, 0.4f, -0.4f, 0.8f, 0.4f, 0.0f, 0.8f, 0.4f, 0.4f, 0.8f, 0.4f, 0.8f, 0.8f, 0.4f, -0.8f, -0.8f, 0.8f, -0.4f, -0.8f, 0.8f, 0.0f, -0.8f, 0.8f, 0.4f, -0.8f, 0.8f, 0.8f, -0.8f, 0.8f, -0.8f, -0.4f, 0.8f, -0.4f, -0.4f, 0.8f, 0.0f, -0.4f, 0.8f, 0.4f, -0.4f, 0.8f, 0.8f, -0.4f, 0.8f, -0.8f, 0.0f, 0.8f, -0.4f, 0.0f, 0.8f, 0.0f, 0.0f, 0.8f, 0.4f, 0.0f, 0.8f, 0.8f, 0.0f, 0.8f, -0.8f, 0.4f, 0.8f, -0.4f, 0.4f, 0.8f, 0.0f, 0.4f, 0.8f, 0.4f, 0.4f, 0.8f, 0.8f, 0.4f, 0.8f, -0.8f, 0.8f, 0.8f, -0.4f, 0.8f, 0.8f, 0.0f, 0.8f, 0.8f, 0.4f, 0.8f, 0.8f, 0.8f, 0.8f, 0.8f };
 
     // this table contains 3 requantized samples for each legal codeword
     // when grouped in 10 bits, i.e. 9 quantizationsteps per sample
-    public static final float grouping_10bits[] = { -8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f,
-        -6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f,
-        -2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 0.0f, -8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f,
-        -8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f,
-        -8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f,
-        -6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f,
-        -6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 0.0f, -6.0f / 9.0f,
-        -8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f,
-        -8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f,
-        -8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f,
-        -8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f,
-        -8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f,
-        4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f,
-        8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f,
-        -6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f,
-        -2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 0.0f, -2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f,
-        -2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f,
-        -2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 0.0f,
-        -8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -8.0f / 9.0f, -4.0f / 9.0f, 0.0f, -8.0f / 9.0f,
-        -2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 0.0f, 0.0f, -8.0f / 9.0f, 2.0f / 9.0f, 0.0f,
-        -8.0f / 9.0f, 4.0f / 9.0f, 0.0f, -8.0f / 9.0f, 6.0f / 9.0f, 0.0f, -8.0f / 9.0f,
-        8.0f / 9.0f, 0.0f, -8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f,
-        2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f,
-        2.0f / 9.0f, -8.0f / 9.0f, 0.0f, 2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f,
-        -8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f,
-        -8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f,
-        -8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f,
-        -8.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 0.0f, 4.0f / 9.0f, -8.0f / 9.0f,
-        2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f,
-        6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f,
-        -8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f,
-        -4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 0.0f,
-        6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f,
-        6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f,
-        6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f,
-        8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f,
-        8.0f / 9.0f, -8.0f / 9.0f, 0.0f, 8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f,
-        -8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        -8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f,
-        -6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f,
-        -6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -8.0f / 9.0f, -6.0f / 9.0f,
-        2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f,
-        6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f,
-        -8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f,
-        -4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 0.0f,
-        -6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f,
-        -6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f,
-        -4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f,
-        -4.0f / 9.0f, -6.0f / 9.0f, 0.0f, -4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f,
-        -6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f,
-        -6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f,
-        -6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f,
-        -6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 0.0f, -2.0f / 9.0f, -6.0f / 9.0f,
-        2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f,
-        -8.0f / 9.0f, 0.0f, -6.0f / 9.0f, -6.0f / 9.0f, 0.0f, -6.0f / 9.0f, -4.0f / 9.0f, 0.0f,
-        -6.0f / 9.0f, -2.0f / 9.0f, 0.0f, -6.0f / 9.0f, 0.0f, 0.0f, -6.0f / 9.0f, 2.0f / 9.0f,
-        0.0f, -6.0f / 9.0f, 4.0f / 9.0f, 0.0f, -6.0f / 9.0f, 6.0f / 9.0f, 0.0f, -6.0f / 9.0f,
-        8.0f / 9.0f, 0.0f, -6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f,
-        2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f,
-        2.0f / 9.0f, -6.0f / 9.0f, 0.0f, 2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f,
-        -6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f,
-        -6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 0.0f, 4.0f / 9.0f, -6.0f / 9.0f,
-        2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f,
-        6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f,
-        -8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f,
-        -4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 0.0f,
-        6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f,
-        6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f,
-        6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f,
-        8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f,
-        8.0f / 9.0f, -6.0f / 9.0f, 0.0f, 8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f,
-        -6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        -6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f,
-        -4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f,
-        -4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 0.0f, -8.0f / 9.0f, -4.0f / 9.0f,
-        2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f,
-        6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f,
-        -8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f,
-        -4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 0.0f,
-        -6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f,
-        -6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f,
-        -4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f,
-        -4.0f / 9.0f, -4.0f / 9.0f, 0.0f, -4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f,
-        -4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f,
-        -4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f,
-        -4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f,
-        -4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 0.0f, -2.0f / 9.0f, -4.0f / 9.0f,
-        2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f,
-        -8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -6.0f / 9.0f, 0.0f, -4.0f / 9.0f, -4.0f / 9.0f, 0.0f,
-        -4.0f / 9.0f, -2.0f / 9.0f, 0.0f, -4.0f / 9.0f, 0.0f, 0.0f, -4.0f / 9.0f, 2.0f / 9.0f,
-        0.0f, -4.0f / 9.0f, 4.0f / 9.0f, 0.0f, -4.0f / 9.0f, 6.0f / 9.0f, 0.0f, -4.0f / 9.0f,
-        8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f,
-        2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f,
-        2.0f / 9.0f, -4.0f / 9.0f, 0.0f, 2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f,
-        -4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f,
-        -4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f,
-        -4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f,
-        -4.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 0.0f, 4.0f / 9.0f, -4.0f / 9.0f,
-        2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f,
-        6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f,
-        -8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f,
-        -4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 0.0f,
-        6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f,
-        6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f,
-        6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f,
-        8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f,
-        8.0f / 9.0f, -4.0f / 9.0f, 0.0f, 8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f,
-        -4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        -4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f,
-        -2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f,
-        -2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 0.0f, -8.0f / 9.0f, -2.0f / 9.0f,
-        2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f,
-        6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f,
-        -8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f,
-        -4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 0.0f,
-        -6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f,
-        -6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f,
-        -4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f,
-        -4.0f / 9.0f, -2.0f / 9.0f, 0.0f, -4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f,
-        -2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f,
-        -2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f,
-        -2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f,
-        -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 0.0f, -2.0f / 9.0f, -2.0f / 9.0f,
-        2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f,
-        -8.0f / 9.0f, 0.0f, -2.0f / 9.0f, -6.0f / 9.0f, 0.0f, -2.0f / 9.0f, -4.0f / 9.0f, 0.0f,
-        -2.0f / 9.0f, -2.0f / 9.0f, 0.0f, -2.0f / 9.0f, 0.0f, 0.0f, -2.0f / 9.0f, 2.0f / 9.0f,
-        0.0f, -2.0f / 9.0f, 4.0f / 9.0f, 0.0f, -2.0f / 9.0f, 6.0f / 9.0f, 0.0f, -2.0f / 9.0f,
-        8.0f / 9.0f, 0.0f, -2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f,
-        2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f,
-        2.0f / 9.0f, -2.0f / 9.0f, 0.0f, 2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f,
-        -2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f,
-        -2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f,
-        -2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f,
-        -2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 0.0f, 4.0f / 9.0f, -2.0f / 9.0f,
-        2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f,
-        6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f,
-        -8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f,
-        -4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 0.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f,
-        8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f,
-        8.0f / 9.0f, -2.0f / 9.0f, 0.0f, 8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f,
-        -2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        -2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 0.0f,
-        -6.0f / 9.0f, -8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -8.0f / 9.0f, 0.0f, -2.0f / 9.0f,
-        -8.0f / 9.0f, 0.0f, 0.0f, -8.0f / 9.0f, 0.0f, 2.0f / 9.0f, -8.0f / 9.0f, 0.0f, 4.0f / 9.0f,
-        -8.0f / 9.0f, 0.0f, 6.0f / 9.0f, -8.0f / 9.0f, 0.0f, 8.0f / 9.0f, -8.0f / 9.0f, 0.0f,
-        -8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -6.0f / 9.0f, -6.0f / 9.0f, 0.0f, -4.0f / 9.0f,
-        -6.0f / 9.0f, 0.0f, -2.0f / 9.0f, -6.0f / 9.0f, 0.0f, 0.0f, -6.0f / 9.0f, 0.0f,
-        2.0f / 9.0f, -6.0f / 9.0f, 0.0f, 4.0f / 9.0f, -6.0f / 9.0f, 0.0f, 6.0f / 9.0f,
-        -6.0f / 9.0f, 0.0f, 8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -8.0f / 9.0f, -4.0f / 9.0f, 0.0f,
-        -6.0f / 9.0f, -4.0f / 9.0f, 0.0f, -4.0f / 9.0f, -4.0f / 9.0f, 0.0f, -2.0f / 9.0f,
-        -4.0f / 9.0f, 0.0f, 0.0f, -4.0f / 9.0f, 0.0f, 2.0f / 9.0f, -4.0f / 9.0f, 0.0f, 4.0f / 9.0f,
-        -4.0f / 9.0f, 0.0f, 6.0f / 9.0f, -4.0f / 9.0f, 0.0f, 8.0f / 9.0f, -4.0f / 9.0f, 0.0f,
-        -8.0f / 9.0f, -2.0f / 9.0f, 0.0f, -6.0f / 9.0f, -2.0f / 9.0f, 0.0f, -4.0f / 9.0f,
-        -2.0f / 9.0f, 0.0f, -2.0f / 9.0f, -2.0f / 9.0f, 0.0f, 0.0f, -2.0f / 9.0f, 0.0f,
-        2.0f / 9.0f, -2.0f / 9.0f, 0.0f, 4.0f / 9.0f, -2.0f / 9.0f, 0.0f, 6.0f / 9.0f,
-        -2.0f / 9.0f, 0.0f, 8.0f / 9.0f, -2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 0.0f, 0.0f,
-        -6.0f / 9.0f, 0.0f, 0.0f, -4.0f / 9.0f, 0.0f, 0.0f, -2.0f / 9.0f, 0.0f, 0.0f, 0.0f, 0.0f,
-        0.0f, 2.0f / 9.0f, 0.0f, 0.0f, 4.0f / 9.0f, 0.0f, 0.0f, 6.0f / 9.0f, 0.0f, 0.0f,
-        8.0f / 9.0f, 0.0f, 0.0f, -8.0f / 9.0f, 2.0f / 9.0f, 0.0f, -6.0f / 9.0f, 2.0f / 9.0f, 0.0f,
-        -4.0f / 9.0f, 2.0f / 9.0f, 0.0f, -2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 0.0f, 2.0f / 9.0f, 0.0f,
-        2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 4.0f / 9.0f, 2.0f / 9.0f, 0.0f, 6.0f / 9.0f, 2.0f / 9.0f,
-        0.0f, 8.0f / 9.0f, 2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 4.0f / 9.0f, 0.0f, -6.0f / 9.0f,
-        4.0f / 9.0f, 0.0f, -4.0f / 9.0f, 4.0f / 9.0f, 0.0f, -2.0f / 9.0f, 4.0f / 9.0f, 0.0f, 0.0f,
-        4.0f / 9.0f, 0.0f, 2.0f / 9.0f, 4.0f / 9.0f, 0.0f, 4.0f / 9.0f, 4.0f / 9.0f, 0.0f,
-        6.0f / 9.0f, 4.0f / 9.0f, 0.0f, 8.0f / 9.0f, 4.0f / 9.0f, 0.0f, -8.0f / 9.0f, 6.0f / 9.0f,
-        0.0f, -6.0f / 9.0f, 6.0f / 9.0f, 0.0f, -4.0f / 9.0f, 6.0f / 9.0f, 0.0f, -2.0f / 9.0f,
-        6.0f / 9.0f, 0.0f, 0.0f, 6.0f / 9.0f, 0.0f, 2.0f / 9.0f, 6.0f / 9.0f, 0.0f, 4.0f / 9.0f,
-        6.0f / 9.0f, 0.0f, 6.0f / 9.0f, 6.0f / 9.0f, 0.0f, 8.0f / 9.0f, 6.0f / 9.0f, 0.0f,
-        -8.0f / 9.0f, 8.0f / 9.0f, 0.0f, -6.0f / 9.0f, 8.0f / 9.0f, 0.0f, -4.0f / 9.0f,
-        8.0f / 9.0f, 0.0f, -2.0f / 9.0f, 8.0f / 9.0f, 0.0f, 0.0f, 8.0f / 9.0f, 0.0f, 2.0f / 9.0f,
-        8.0f / 9.0f, 0.0f, 4.0f / 9.0f, 8.0f / 9.0f, 0.0f, 6.0f / 9.0f, 8.0f / 9.0f, 0.0f,
-        8.0f / 9.0f, 8.0f / 9.0f, 0.0f, -8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f,
-        -8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f,
-        -8.0f / 9.0f, 2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f,
-        2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f,
-        2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f,
-        2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f,
-        2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 0.0f, -6.0f / 9.0f, 2.0f / 9.0f,
-        2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f,
-        6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f,
-        -8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f,
-        -4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 0.0f,
-        -4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f,
-        -4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f,
-        -4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f,
-        -2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f,
-        -2.0f / 9.0f, 2.0f / 9.0f, 0.0f, -2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f,
-        2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f,
-        2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 0.0f, 2.0f / 9.0f,
-        -6.0f / 9.0f, 0.0f, 2.0f / 9.0f, -4.0f / 9.0f, 0.0f, 2.0f / 9.0f, -2.0f / 9.0f, 0.0f,
-        2.0f / 9.0f, 0.0f, 0.0f, 2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 2.0f / 9.0f, 4.0f / 9.0f, 0.0f,
-        2.0f / 9.0f, 6.0f / 9.0f, 0.0f, 2.0f / 9.0f, 8.0f / 9.0f, 0.0f, 2.0f / 9.0f, -8.0f / 9.0f,
-        2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f,
-        2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 2.0f / 9.0f,
-        2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f,
-        6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f,
-        4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f,
-        4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 0.0f, 4.0f / 9.0f,
-        2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f,
-        6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f,
-        6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f,
-        6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 0.0f, 6.0f / 9.0f,
-        2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f,
-        6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f,
-        8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f,
-        8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 0.0f, 8.0f / 9.0f,
-        2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f,
-        6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f,
-        -8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f,
-        -8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 0.0f, -8.0f / 9.0f,
-        4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f,
-        4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f,
-        4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f,
-        4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f,
-        4.0f / 9.0f, 0.0f, -6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f,
-        4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f,
-        8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f,
-        -2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 0.0f, -4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f,
-        -4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f,
-        -4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f,
-        -2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f,
-        -2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 0.0f, -2.0f / 9.0f,
-        4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f,
-        4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f,
-        4.0f / 9.0f, -8.0f / 9.0f, 0.0f, 4.0f / 9.0f, -6.0f / 9.0f, 0.0f, 4.0f / 9.0f,
-        -4.0f / 9.0f, 0.0f, 4.0f / 9.0f, -2.0f / 9.0f, 0.0f, 4.0f / 9.0f, 0.0f, 0.0f, 4.0f / 9.0f,
-        2.0f / 9.0f, 0.0f, 4.0f / 9.0f, 4.0f / 9.0f, 0.0f, 4.0f / 9.0f, 6.0f / 9.0f, 0.0f,
-        4.0f / 9.0f, 8.0f / 9.0f, 0.0f, 4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f,
-        -2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 0.0f, 2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f,
-        2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f,
-        4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f,
-        -2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 0.0f, 4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f,
-        4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f,
-        4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f,
-        -2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 0.0f, 6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f,
-        6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f,
-        4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f,
-        -2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 0.0f, 8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f,
-        8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f,
-        6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 0.0f, -8.0f / 9.0f, 6.0f / 9.0f,
-        2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f,
-        6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f,
-        -8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f,
-        -4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 0.0f,
-        -6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        -6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f,
-        -4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f,
-        -4.0f / 9.0f, 6.0f / 9.0f, 0.0f, -4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f,
-        6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f,
-        6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f,
-        6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 0.0f, -2.0f / 9.0f, 6.0f / 9.0f,
-        2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f,
-        -8.0f / 9.0f, 0.0f, 6.0f / 9.0f, -6.0f / 9.0f, 0.0f, 6.0f / 9.0f, -4.0f / 9.0f, 0.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, 0.0f, 6.0f / 9.0f, 0.0f, 0.0f, 6.0f / 9.0f, 2.0f / 9.0f, 0.0f,
-        6.0f / 9.0f, 4.0f / 9.0f, 0.0f, 6.0f / 9.0f, 6.0f / 9.0f, 0.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        0.0f, 6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f,
-        6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f,
-        6.0f / 9.0f, 0.0f, 2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f,
-        4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f,
-        4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f,
-        4.0f / 9.0f, 6.0f / 9.0f, 0.0f, 4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f,
-        6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f,
-        8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f,
-        -6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f,
-        -2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 0.0f, 6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f,
-        6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f,
-        6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f,
-        -6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f,
-        -2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 0.0f, 8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f,
-        8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f,
-        8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f,
-        8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 0.0f, -8.0f / 9.0f, 8.0f / 9.0f,
-        2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f,
-        6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f,
-        -8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f,
-        -4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 0.0f,
-        -6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f,
-        -6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f,
-        -6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f,
-        -4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f,
-        -4.0f / 9.0f, 8.0f / 9.0f, 0.0f, -4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f,
-        8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f,
-        8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f,
-        8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f,
-        8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 0.0f, -2.0f / 9.0f, 8.0f / 9.0f,
-        2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f,
-        6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f,
-        -8.0f / 9.0f, 0.0f, 8.0f / 9.0f, -6.0f / 9.0f, 0.0f, 8.0f / 9.0f, -4.0f / 9.0f, 0.0f,
-        8.0f / 9.0f, -2.0f / 9.0f, 0.0f, 8.0f / 9.0f, 0.0f, 0.0f, 8.0f / 9.0f, 2.0f / 9.0f, 0.0f,
-        8.0f / 9.0f, 4.0f / 9.0f, 0.0f, 8.0f / 9.0f, 6.0f / 9.0f, 0.0f, 8.0f / 9.0f, 8.0f / 9.0f,
-        0.0f, 8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f,
-        8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f,
-        8.0f / 9.0f, 0.0f, 2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f,
-        4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f,
-        2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f,
-        4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f,
-        4.0f / 9.0f, 8.0f / 9.0f, 0.0f, 4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f,
-        8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f,
-        8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        -6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        -2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 0.0f, 6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f,
-        6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f,
-        8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f,
-        -6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f,
-        -2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 0.0f, 8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f,
-        8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f,
-        8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f };
+    public static final float grouping_10bits[] = { -8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 0.0f, -8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 0.0f, -6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 0.0f, -2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 0.0f, -8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -8.0f / 9.0f, -4.0f / 9.0f, 0.0f, -8.0f / 9.0f, -2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 0.0f, 0.0f, -8.0f / 9.0f, 2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 4.0f / 9.0f, 0.0f, -8.0f / 9.0f, 6.0f / 9.0f, 0.0f, -8.0f / 9.0f, 8.0f / 9.0f, 0.0f, -8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 0.0f, 2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 0.0f, 4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 0.0f, 6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 0.0f, 8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 0.0f, -6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 0.0f, -4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 0.0f, -2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 0.0f, -6.0f / 9.0f, -6.0f / 9.0f, 0.0f, -6.0f / 9.0f, -4.0f / 9.0f, 0.0f, -6.0f / 9.0f, -2.0f / 9.0f, 0.0f, -6.0f / 9.0f, 0.0f, 0.0f, -6.0f / 9.0f, 2.0f / 9.0f, 0.0f, -6.0f / 9.0f, 4.0f / 9.0f, 0.0f, -6.0f / 9.0f, 6.0f / 9.0f, 0.0f, -6.0f / 9.0f, 8.0f / 9.0f, 0.0f, -6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 0.0f, 2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 0.0f, 4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 0.0f, 6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 0.0f, 8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 0.0f, -8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 0.0f, -6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 0.0f, -4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 0.0f, -2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -6.0f / 9.0f, 0.0f, -4.0f / 9.0f, -4.0f / 9.0f, 0.0f, -4.0f / 9.0f, -2.0f / 9.0f, 0.0f, -4.0f / 9.0f, 0.0f, 0.0f, -4.0f / 9.0f, 2.0f / 9.0f, 0.0f, -4.0f / 9.0f, 4.0f / 9.0f, 0.0f, -4.0f / 9.0f, 6.0f / 9.0f, 0.0f, -4.0f / 9.0f, 8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 0.0f, 2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 0.0f, 4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 0.0f, 6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 0.0f, 8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 0.0f, -8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 0.0f, -6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 0.0f, -4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 0.0f, -2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 0.0f, -2.0f / 9.0f, -6.0f / 9.0f, 0.0f, -2.0f / 9.0f, -4.0f / 9.0f, 0.0f, -2.0f / 9.0f, -2.0f / 9.0f, 0.0f, -2.0f / 9.0f, 0.0f, 0.0f, -2.0f / 9.0f, 2.0f / 9.0f, 0.0f, -2.0f / 9.0f, 4.0f / 9.0f, 0.0f, -2.0f / 9.0f, 6.0f / 9.0f, 0.0f, -2.0f / 9.0f, 8.0f / 9.0f, 0.0f, -2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 0.0f, 2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 0.0f, 4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 0.0f, 6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 0.0f, 8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 0.0f, -6.0f / 9.0f, -8.0f / 9.0f, 0.0f, -4.0f / 9.0f, -8.0f / 9.0f, 0.0f, -2.0f / 9.0f, -8.0f / 9.0f, 0.0f, 0.0f, -8.0f / 9.0f, 0.0f, 2.0f / 9.0f, -8.0f / 9.0f, 0.0f, 4.0f / 9.0f, -8.0f / 9.0f, 0.0f, 6.0f / 9.0f, -8.0f / 9.0f, 0.0f, 8.0f / 9.0f, -8.0f / 9.0f, 0.0f, -8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -6.0f / 9.0f, -6.0f / 9.0f, 0.0f, -4.0f / 9.0f, -6.0f / 9.0f, 0.0f, -2.0f / 9.0f, -6.0f / 9.0f, 0.0f, 0.0f, -6.0f / 9.0f, 0.0f, 2.0f / 9.0f, -6.0f / 9.0f, 0.0f, 4.0f / 9.0f, -6.0f / 9.0f, 0.0f, 6.0f / 9.0f, -6.0f / 9.0f, 0.0f, 8.0f / 9.0f, -6.0f / 9.0f, 0.0f, -8.0f / 9.0f, -4.0f / 9.0f, 0.0f, -6.0f / 9.0f, -4.0f / 9.0f, 0.0f, -4.0f / 9.0f, -4.0f / 9.0f, 0.0f, -2.0f / 9.0f, -4.0f / 9.0f, 0.0f, 0.0f, -4.0f / 9.0f, 0.0f, 2.0f / 9.0f, -4.0f / 9.0f, 0.0f, 4.0f / 9.0f, -4.0f / 9.0f, 0.0f, 6.0f / 9.0f, -4.0f / 9.0f, 0.0f, 8.0f / 9.0f, -4.0f / 9.0f, 0.0f, -8.0f / 9.0f, -2.0f / 9.0f, 0.0f, -6.0f / 9.0f, -2.0f / 9.0f, 0.0f, -4.0f / 9.0f, -2.0f / 9.0f, 0.0f, -2.0f / 9.0f, -2.0f / 9.0f, 0.0f, 0.0f, -2.0f / 9.0f, 0.0f, 2.0f / 9.0f, -2.0f / 9.0f, 0.0f, 4.0f / 9.0f, -2.0f / 9.0f, 0.0f, 6.0f / 9.0f, -2.0f / 9.0f, 0.0f, 8.0f / 9.0f, -2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 0.0f, 0.0f, -6.0f / 9.0f, 0.0f, 0.0f, -4.0f / 9.0f, 0.0f, 0.0f, -2.0f / 9.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f / 9.0f, 0.0f, 0.0f, 4.0f / 9.0f, 0.0f, 0.0f, 6.0f / 9.0f, 0.0f, 0.0f, 8.0f / 9.0f, 0.0f, 0.0f, -8.0f / 9.0f, 2.0f / 9.0f, 0.0f, -6.0f / 9.0f, 2.0f / 9.0f, 0.0f, -4.0f / 9.0f, 2.0f / 9.0f, 0.0f, -2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 0.0f, 2.0f / 9.0f, 0.0f, 2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 4.0f / 9.0f, 2.0f / 9.0f, 0.0f, 6.0f / 9.0f, 2.0f / 9.0f, 0.0f, 8.0f / 9.0f, 2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 4.0f / 9.0f, 0.0f, -6.0f / 9.0f, 4.0f / 9.0f, 0.0f, -4.0f / 9.0f, 4.0f / 9.0f, 0.0f, -2.0f / 9.0f, 4.0f / 9.0f, 0.0f, 0.0f, 4.0f / 9.0f, 0.0f, 2.0f / 9.0f, 4.0f / 9.0f, 0.0f, 4.0f / 9.0f, 4.0f / 9.0f, 0.0f, 6.0f / 9.0f, 4.0f / 9.0f, 0.0f, 8.0f / 9.0f, 4.0f / 9.0f, 0.0f, -8.0f / 9.0f, 6.0f / 9.0f, 0.0f, -6.0f / 9.0f, 6.0f / 9.0f, 0.0f, -4.0f / 9.0f, 6.0f / 9.0f, 0.0f, -2.0f / 9.0f, 6.0f / 9.0f, 0.0f, 0.0f, 6.0f / 9.0f, 0.0f, 2.0f / 9.0f, 6.0f / 9.0f, 0.0f, 4.0f / 9.0f, 6.0f / 9.0f, 0.0f, 6.0f / 9.0f, 6.0f / 9.0f, 0.0f, 8.0f / 9.0f, 6.0f / 9.0f, 0.0f, -8.0f / 9.0f, 8.0f / 9.0f, 0.0f, -6.0f / 9.0f, 8.0f / 9.0f, 0.0f, -4.0f / 9.0f, 8.0f / 9.0f, 0.0f, -2.0f / 9.0f, 8.0f / 9.0f, 0.0f, 0.0f, 8.0f / 9.0f, 0.0f, 2.0f / 9.0f, 8.0f / 9.0f, 0.0f, 4.0f / 9.0f, 8.0f / 9.0f, 0.0f, 6.0f / 9.0f, 8.0f / 9.0f, 0.0f, 8.0f / 9.0f, 8.0f / 9.0f, 0.0f, -8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 0.0f, -8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 0.0f, -6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 0.0f, -4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 0.0f, -2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 0.0f, 2.0f / 9.0f, -6.0f / 9.0f, 0.0f, 2.0f / 9.0f, -4.0f / 9.0f, 0.0f, 2.0f / 9.0f, -2.0f / 9.0f, 0.0f, 2.0f / 9.0f, 0.0f, 0.0f, 2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 2.0f / 9.0f, 4.0f / 9.0f, 0.0f, 2.0f / 9.0f, 6.0f / 9.0f, 0.0f, 2.0f / 9.0f, 8.0f / 9.0f, 0.0f, 2.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 0.0f, 2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 0.0f, 4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 0.0f, 6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 0.0f, 8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 0.0f, -8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 0.0f, -6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 0.0f, -4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 0.0f, -2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 0.0f, 4.0f / 9.0f, -6.0f / 9.0f, 0.0f, 4.0f / 9.0f, -4.0f / 9.0f, 0.0f, 4.0f / 9.0f, -2.0f / 9.0f, 0.0f, 4.0f / 9.0f, 0.0f, 0.0f, 4.0f / 9.0f, 2.0f / 9.0f, 0.0f, 4.0f / 9.0f, 4.0f / 9.0f, 0.0f, 4.0f / 9.0f, 6.0f / 9.0f, 0.0f, 4.0f / 9.0f, 8.0f / 9.0f, 0.0f, 4.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 0.0f, 2.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 0.0f, 4.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 0.0f, 6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 0.0f, 8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 0.0f, -8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 0.0f, -6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 0.0f, -4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 0.0f, -2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 0.0f, 6.0f / 9.0f, -6.0f / 9.0f, 0.0f, 6.0f / 9.0f, -4.0f / 9.0f, 0.0f, 6.0f / 9.0f, -2.0f / 9.0f, 0.0f, 6.0f / 9.0f, 0.0f, 0.0f, 6.0f / 9.0f, 2.0f / 9.0f, 0.0f, 6.0f / 9.0f, 4.0f / 9.0f, 0.0f, 6.0f / 9.0f, 6.0f / 9.0f, 0.0f, 6.0f / 9.0f, 8.0f / 9.0f, 0.0f, 6.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 0.0f, 2.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 0.0f, 4.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 0.0f, 6.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 0.0f, 8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 0.0f, -8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 0.0f, -6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 0.0f, -4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 0.0f, -2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 0.0f, 8.0f / 9.0f, -6.0f / 9.0f, 0.0f, 8.0f / 9.0f, -4.0f / 9.0f, 0.0f, 8.0f / 9.0f, -2.0f / 9.0f, 0.0f, 8.0f / 9.0f, 0.0f, 0.0f, 8.0f / 9.0f, 2.0f / 9.0f, 0.0f, 8.0f / 9.0f, 4.0f / 9.0f, 0.0f, 8.0f / 9.0f, 6.0f / 9.0f, 0.0f, 8.0f / 9.0f, 8.0f / 9.0f, 0.0f, 8.0f / 9.0f, -8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 0.0f, 2.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 0.0f, 4.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 0.0f, 6.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, -8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, -2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 0.0f, 8.0f / 9.0f, 8.0f / 9.0f, 2.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 4.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 6.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f, 8.0f / 9.0f };
 
     // data taken from ISO/IEC DIS 11172, Annexes 3-B.2[abcd] and 3-B.4:
 
     // subbands 0-2 in tables 3-B.2a and 2b: (index is allocation)
     public static final int table_ab1_codelength[] =
     // bits per codeword
-        { 0, 5, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
+    { 0, 5, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
 
     public static final float table_ab1_groupingtables[][] =
     // pointer to sample grouping table, or NULL-pointer if ungrouped
-        { null, grouping_5bits, null, null, null, null, null, null, null, null, null, null, null,
-            null, null, null };
+    { null, grouping_5bits, null, null, null, null, null, null, null, null, null, null, null, null, null, null };
 
     public static final float table_ab1_factor[] =
     // factor for requantization: (real)sample * factor - 1.0 gives requantized
     // sample
-        { 0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32.0f, 1.0f / 64.0f,
-            1.0f / 128.0f, 1.0f / 256.0f, 1.0f / 512.0f, 1.0f / 1024.0f, 1.0f / 2048.0f,
-            1.0f / 4096.0f, 1.0f / 8192.0f, 1.0f / 16384.0f, 1.0f / 32768.0f };
+    { 0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32.0f, 1.0f / 64.0f, 1.0f / 128.0f, 1.0f / 256.0f, 1.0f / 512.0f, 1.0f / 1024.0f, 1.0f / 2048.0f, 1.0f / 4096.0f, 1.0f / 8192.0f, 1.0f / 16384.0f, 1.0f / 32768.0f };
 
     public static final float table_ab1_c[] =
     // factor c for requantization from table 3-B.4
-        { 0.0f, 1.33333333333f, 1.14285714286f, 1.06666666666f, 1.03225806452f, 1.01587301587f,
-            1.00787401575f, 1.00392156863f, 1.00195694716f, 1.00097751711f, 1.00048851979f,
-            1.00024420024f, 1.00012208522f, 1.00006103888f, 1.00003051851f, 1.00001525902f };
+    { 0.0f, 1.33333333333f, 1.14285714286f, 1.06666666666f, 1.03225806452f, 1.01587301587f, 1.00787401575f, 1.00392156863f, 1.00195694716f, 1.00097751711f, 1.00048851979f, 1.00024420024f, 1.00012208522f, 1.00006103888f, 1.00003051851f, 1.00001525902f };
 
     public static final float table_ab1_d[] =
     // addend d for requantization from table 3-B.4
-        { 0.0f, 0.50000000000f, 0.25000000000f, 0.12500000000f, 0.06250000000f, 0.03125000000f,
-            0.01562500000f, 0.00781250000f, 0.00390625000f, 0.00195312500f, 0.00097656250f,
-            0.00048828125f, 0.00024414063f, 0.00012207031f, 0.00006103516f, 0.00003051758f };
+    { 0.0f, 0.50000000000f, 0.25000000000f, 0.12500000000f, 0.06250000000f, 0.03125000000f, 0.01562500000f, 0.00781250000f, 0.00390625000f, 0.00195312500f, 0.00097656250f, 0.00048828125f, 0.00024414063f, 0.00012207031f, 0.00006103516f, 0.00003051758f };
 
     // subbands 3-... tables 3-B.2a and 2b:
-    public static final float[] table_ab234_groupingtables[] = { null, grouping_5bits,
-        grouping_7bits, null, grouping_10bits, null, null, null, null, null, null, null, null,
-        null, null, null };
+    public static final float[] table_ab234_groupingtables[] = { null, grouping_5bits, grouping_7bits, null, grouping_10bits, null, null, null, null, null, null, null, null, null, null, null };
 
     // subbands 3-10 in tables 3-B.2a and 2b:
-    public static final int table_ab2_codelength[] = { 0, 5, 7, 3, 10, 4, 5, 6, 7, 8, 9, 10, 11,
-        12, 13, 16 };
-    public static final float table_ab2_factor[] = { 0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 4.0f,
-        1.0f / 8.0f, 1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32.0f, 1.0f / 64.0f, 1.0f / 128.0f,
-        1.0f / 256.0f, 1.0f / 512.0f, 1.0f / 1024.0f, 1.0f / 2048.0f, 1.0f / 4096.0f,
-        1.0f / 32768.0f };
-    public static final float table_ab2_c[] = { 0.0f, 1.33333333333f, 1.60000000000f,
-        1.14285714286f, 1.77777777777f, 1.06666666666f, 1.03225806452f, 1.01587301587f,
-        1.00787401575f, 1.00392156863f, 1.00195694716f, 1.00097751711f, 1.00048851979f,
-        1.00024420024f, 1.00012208522f, 1.00001525902f };
-    public static final float table_ab2_d[] = { 0.0f, 0.50000000000f, 0.50000000000f,
-        0.25000000000f, 0.50000000000f, 0.12500000000f, 0.06250000000f, 0.03125000000f,
-        0.01562500000f, 0.00781250000f, 0.00390625000f, 0.00195312500f, 0.00097656250f,
-        0.00048828125f, 0.00024414063f, 0.00003051758f };
+    public static final int table_ab2_codelength[] = { 0, 5, 7, 3, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 };
+    public static final float table_ab2_factor[] = { 0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 4.0f, 1.0f / 8.0f, 1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32.0f, 1.0f / 64.0f, 1.0f / 128.0f, 1.0f / 256.0f, 1.0f / 512.0f, 1.0f / 1024.0f, 1.0f / 2048.0f, 1.0f / 4096.0f, 1.0f / 32768.0f };
+    public static final float table_ab2_c[] = { 0.0f, 1.33333333333f, 1.60000000000f, 1.14285714286f, 1.77777777777f, 1.06666666666f, 1.03225806452f, 1.01587301587f, 1.00787401575f, 1.00392156863f, 1.00195694716f, 1.00097751711f, 1.00048851979f, 1.00024420024f, 1.00012208522f, 1.00001525902f };
+    public static final float table_ab2_d[] = { 0.0f, 0.50000000000f, 0.50000000000f, 0.25000000000f, 0.50000000000f, 0.12500000000f, 0.06250000000f, 0.03125000000f, 0.01562500000f, 0.00781250000f, 0.00390625000f, 0.00195312500f, 0.00097656250f, 0.00048828125f, 0.00024414063f, 0.00003051758f };
 
     // subbands 11-22 in tables 3-B.2a and 2b:
     public static final int table_ab3_codelength[] = { 0, 5, 7, 3, 10, 4, 5, 16 };
-    public static final float table_ab3_factor[] = { 0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 4.0f,
-        1.0f / 8.0f, 1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32768.0f };
-    public static final float table_ab3_c[] = { 0.0f, 1.33333333333f, 1.60000000000f,
-        1.14285714286f, 1.77777777777f, 1.06666666666f, 1.03225806452f, 1.00001525902f };
-    public static final float table_ab3_d[] = { 0.0f, 0.50000000000f, 0.50000000000f,
-        0.25000000000f, 0.50000000000f, 0.12500000000f, 0.06250000000f, 0.00003051758f };
+    public static final float table_ab3_factor[] = { 0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 4.0f, 1.0f / 8.0f, 1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32768.0f };
+    public static final float table_ab3_c[] = { 0.0f, 1.33333333333f, 1.60000000000f, 1.14285714286f, 1.77777777777f, 1.06666666666f, 1.03225806452f, 1.00001525902f };
+    public static final float table_ab3_d[] = { 0.0f, 0.50000000000f, 0.50000000000f, 0.25000000000f, 0.50000000000f, 0.12500000000f, 0.06250000000f, 0.00003051758f };
 
     // subbands 23-... in tables 3-B.2a and 2b:
     public static final int table_ab4_codelength[] = { 0, 5, 7, 16 };
-    public static final float table_ab4_factor[] = { 0.0f, 1.0f / 2.0f, 1.0f / 4.0f,
-        1.0f / 32768.0f };
-    public static final float table_ab4_c[] = { 0.0f, 1.33333333333f, 1.60000000000f,
-        1.00001525902f };
-    public static final float table_ab4_d[] = { 0.0f, 0.50000000000f, 0.50000000000f,
-        0.00003051758f };
+    public static final float table_ab4_factor[] = { 0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 32768.0f };
+    public static final float table_ab4_c[] = { 0.0f, 1.33333333333f, 1.60000000000f, 1.00001525902f };
+    public static final float table_ab4_d[] = { 0.0f, 0.50000000000f, 0.50000000000f, 0.00003051758f };
 
     // subbands in tables 3-B.2c and 2d:
-    public static final int table_cd_codelength[] = { 0, 5, 7, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12,
-        13, 14, 15 };
-    public static final float table_cd_groupingtables[][] = { null, grouping_5bits, grouping_7bits,
-        grouping_10bits, null, null, null, null, null, null, null, null, null, null, null, null };
-    public static final float table_cd_factor[] = { 0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 8.0f,
-        1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32.0f, 1.0f / 64.0f, 1.0f / 128.0f, 1.0f / 256.0f,
-        1.0f / 512.0f, 1.0f / 1024.0f, 1.0f / 2048.0f, 1.0f / 4096.0f, 1.0f / 8192.0f,
-        1.0f / 16384.0f };
-    public static final float table_cd_c[] = { 0.0f, 1.33333333333f, 1.60000000000f,
-        1.77777777777f, 1.06666666666f, 1.03225806452f, 1.01587301587f, 1.00787401575f,
-        1.00392156863f, 1.00195694716f, 1.00097751711f, 1.00048851979f, 1.00024420024f,
-        1.00012208522f, 1.00006103888f, 1.00003051851f };
-    public static final float table_cd_d[] = { 0.0f, 0.50000000000f, 0.50000000000f,
-        0.50000000000f, 0.12500000000f, 0.06250000000f, 0.03125000000f, 0.01562500000f,
-        0.00781250000f, 0.00390625000f, 0.00195312500f, 0.00097656250f, 0.00048828125f,
-        0.00024414063f, 0.00012207031f, 0.00006103516f };
-
-    
+    public static final int table_cd_codelength[] = { 0, 5, 7, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
+    public static final float table_cd_groupingtables[][] = { null, grouping_5bits, grouping_7bits, grouping_10bits, null, null, null, null, null, null, null, null, null, null, null, null };
+    public static final float table_cd_factor[] = { 0.0f, 1.0f / 2.0f, 1.0f / 4.0f, 1.0f / 8.0f, 1.0f / 8.0f, 1.0f / 16.0f, 1.0f / 32.0f, 1.0f / 64.0f, 1.0f / 128.0f, 1.0f / 256.0f, 1.0f / 512.0f, 1.0f / 1024.0f, 1.0f / 2048.0f, 1.0f / 4096.0f, 1.0f / 8192.0f, 1.0f / 16384.0f };
+    public static final float table_cd_c[] = { 0.0f, 1.33333333333f, 1.60000000000f, 1.77777777777f, 1.06666666666f, 1.03225806452f, 1.01587301587f, 1.00787401575f, 1.00392156863f, 1.00195694716f, 1.00097751711f, 1.00048851979f, 1.00024420024f, 1.00012208522f, 1.00006103888f, 1.00003051851f };
+    public static final float table_cd_d[] = { 0.0f, 0.50000000000f, 0.50000000000f, 0.50000000000f, 0.12500000000f, 0.06250000000f, 0.03125000000f, 0.01562500000f, 0.00781250000f, 0.00390625000f, 0.00195312500f, 0.00097656250f, 0.00048828125f, 0.00024414063f, 0.00012207031f, 0.00006103516f };
+
     protected int subbandnumber;
-    
+
     protected int allocation;
-    
+
     protected int scfsi;
-    
+
     protected float scalefactor1;
-    
+
     protected float scalefactor2;
-    
+
     protected float scalefactor3;
-    
+
     protected int[] codelength = { 0 };
-    
+
     protected float groupingtable[][] = new float[2][];
     // protected float[][] groupingtable = {{0},{0}} ;
-    
+
     protected float[] factor = { 0.0f };
-    
+
     protected int groupnumber;
-    
+
     protected int samplenumber;
-    
+
     protected float[] samples = new float[3];
-    
+
     protected float[] c = { 0.0f };
-    
+
     protected float[] d = { 0.0f };
 
     /**
      * Constructor
      */
-    public SubbandLayer2( int subbandnumber) {
+    public SubbandLayer2(int subbandnumber) {
       this.subbandnumber = subbandnumber;
       groupnumber = samplenumber = 0;
     }
@@ -576,11 +170,11 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    protected int get_allocationlength( Header header) {
+    protected int get_allocationlength(Header header) {
 
       if (header.version() == Header.MPEG1) {
 
-         int channel_bitrate = header.bitrate_index();
+        int channel_bitrate = header.bitrate_index();
 
         // calculate bitrate per channel:
         if (header.mode() != Header.SINGLE_CHANNEL)
@@ -618,15 +212,13 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    
-    protected void prepare_sample_reading( Header header,
-         int allocation,
-        // float[][] groupingtable,
-         int channel,  float[] factor,  int[] codelength,
-         float[] c,  float[] d) {
+
+    protected void prepare_sample_reading(Header header, int allocation,
+    // float[][] groupingtable,
+    int channel, float[] factor, int[] codelength, float[] c, float[] d) {
 
       // header.bitrate_index() will generate at most DELTA(THIS,SH*)
-       int channel_bitrate = header.bitrate_index();
+      int channel_bitrate = header.bitrate_index();
 
       // calculate bitrate per channel:
       if (header.mode() != Header.SINGLE_CHANNEL) {
@@ -677,13 +269,11 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    
+
     // ssjava
-    public void read_allocation( Bitstream stream,
-         Header header,
-         Crc16 crc) {
+    public void read_allocation(Bitstream stream, Header header, Crc16 crc) {
 
-       int length = get_allocationlength(header);
+      int length = get_allocationlength(header);
 
       allocation = stream.get_bits(length);
       if (crc != null) {
@@ -694,8 +284,7 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    public void read_scalefactor_selection( Bitstream stream,
-         Crc16 crc) {
+    public void read_scalefactor_selection(Bitstream stream, Crc16 crc) {
       if (allocation != 0) {
         scfsi = stream.get_bits(2);
         if (crc != null)
@@ -706,7 +295,7 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    public void read_scalefactor( Bitstream stream,  Header header) {
+    public void read_scalefactor(Bitstream stream, Header header) {
       if (allocation != 0) {
         switch (scfsi) {
         case 0:
@@ -734,12 +323,11 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
           *
           */
     // ssjava
-    public boolean read_sampledata( Bitstream stream) {
+    public boolean read_sampledata(Bitstream stream) {
       if (allocation != 0) {
         if (groupingtable[0] != null) {
 
-           int samplecode =
-              stream.get_bits(codelength[0]);
+          int samplecode = stream.get_bits(codelength[0]);
           // create requantized samples:
           samplecode += samplecode << 1;
           // float[] target = samples; //subbed in variable to reduce areas
@@ -751,8 +339,8 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
            * target[tmp] = source[samplecode + temp];
            */
           // Bugfix:
-           int tmp = 0;
-           int temp = samplecode;
+          int tmp = 0;
+          int temp = samplecode;
 
           // if(temp > source.length - 3) temp = source.length - 3;
           if (temp > groupingtable[0].length - 3) {
@@ -782,12 +370,11 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     }
 
     // ssjava
-    public boolean put_next_sample( int channels,  SynthesisFilter filter1,
-         SynthesisFilter filter2) {
+    public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) {
 
       if ((allocation != 0) && (channels != OutputChannels.RIGHT_CHANNEL)) {
 
-         float sample = samples[samplenumber];
+        float sample = samples[samplenumber];
 
         if (groupingtable[0] == null) {
           sample = (sample + d[0]) * c[0];
@@ -812,39 +399,36 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
   /**
    * Class for layer II subbands in joint stereo mode.
    */
-  
-  
+
   static class SubbandLayer2IntensityStereo extends SubbandLayer2 {
-    
+
     protected int channel2_scfsi;
-    
+
     protected float channel2_scalefactor1;
-    
+
     protected float channel2_scalefactor2;
-    
+
     protected float channel2_scalefactor3;
 
     /**
      * Constructor
      */
-    public SubbandLayer2IntensityStereo( int subbandnumber) {
+    public SubbandLayer2IntensityStereo(int subbandnumber) {
       super(subbandnumber);
     }
 
     /**
           *
           */
-    
-    public void read_allocation( Bitstream stream,  Header header,
-         Crc16 crc) {
+
+    public void read_allocation(Bitstream stream, Header header, Crc16 crc) {
       super.read_allocation(stream, header, crc);
     }
 
     /**
           *
           */
-    public void read_scalefactor_selection( Bitstream stream,
-         Crc16 crc) {
+    public void read_scalefactor_selection(Bitstream stream, Crc16 crc) {
       if (allocation != 0) {
         scfsi = stream.get_bits(2);
         channel2_scfsi = stream.get_bits(2);
@@ -858,7 +442,7 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    public void read_scalefactor( Bitstream stream,  Header header) {
+    public void read_scalefactor(Bitstream stream, Header header) {
       if (allocation != 0) {
         super.read_scalefactor(stream, header);
         switch (channel2_scfsi) {
@@ -893,24 +477,22 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    public boolean read_sampledata( Bitstream stream) {
+    public boolean read_sampledata(Bitstream stream) {
       return super.read_sampledata(stream);
     }
 
     /**
           *
           */
-    
-    
-    public boolean put_next_sample( int channels,  SynthesisFilter filter1,
-         SynthesisFilter filter2) {
+
+    public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) {
       if (allocation != 0) {
-         float sample = samples[samplenumber];
+        float sample = samples[samplenumber];
 
         if (groupingtable[0] == null)
           sample = (sample + d[0]) * c[0];
         if (channels == OutputChannels.BOTH_CHANNELS) {
-           float sample2 = sample;
+          float sample2 = sample;
           if (groupnumber <= 4) {
             sample *= scalefactor1;
             sample2 *= channel2_scalefactor1;
@@ -952,36 +534,35 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
   /**
    * Class for layer II subbands in stereo mode.
    */
-  
-  
+
   static class SubbandLayer2Stereo extends SubbandLayer2 {
-    
+
     protected int channel2_allocation;
-    
+
     protected int channel2_scfsi;
-    
+
     protected float channel2_scalefactor1;
-    
+
     protected float channel2_scalefactor2;
-    
+
     protected float channel2_scalefactor3;
     // protected boolean channel2_grouping; ???? Never used!
-    
+
     protected int[] channel2_codelength = { 0 };
     // protected float[][] channel2_groupingtable = {{0},{0}};
-    
+
     protected float[] channel2_factor = { 0.0f };
-    
+
     protected float[] channel2_samples;
-    
+
     protected float[] channel2_c = { 0.0f };
-    
+
     protected float[] channel2_d = { 0.0f };
 
     /**
      * Constructor
      */
-    public SubbandLayer2Stereo( int subbandnumber) {
+    public SubbandLayer2Stereo(int subbandnumber) {
       super(subbandnumber);
       channel2_samples = new float[3];
     }
@@ -989,14 +570,11 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    
+
     // ssjava
-    public void read_allocation(
-         Bitstream stream,
-         Header header,
-         Crc16 crc) {
+    public void read_allocation(Bitstream stream, Header header, Crc16 crc) {
 
-       int length = get_allocationlength(header);
+      int length = get_allocationlength(header);
       allocation = stream.get_bits(length);
       channel2_allocation = stream.get_bits(length);
       if (crc != null) {
@@ -1009,8 +587,7 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    public void read_scalefactor_selection( Bitstream stream,
-         Crc16 crc) {
+    public void read_scalefactor_selection(Bitstream stream, Crc16 crc) {
       if (allocation != 0) {
         scfsi = stream.get_bits(2);
         if (crc != null)
@@ -1026,7 +603,7 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
     /**
           *
           */
-    public void read_scalefactor( Bitstream stream,  Header header) {
+    public void read_scalefactor(Bitstream stream, Header header) {
       super.read_scalefactor(stream, header);
       if (channel2_allocation != 0) {
         switch (channel2_scfsi) {
@@ -1042,8 +619,8 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
           break;
 
         case 2:
-          channel2_scalefactor1 =
-              channel2_scalefactor2 = channel2_scalefactor3 = scalefactors[stream.get_bits(6)];
+          channel2_scalefactor1 = channel2_scalefactor2 = channel2_scalefactor3 = scalefactors[stream
+              .get_bits(6)];
           break;
 
         case 3:
@@ -1060,19 +637,17 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
           *
           */
     // ssjava
-    public boolean read_sampledata(
-         Bitstream stream) {
-       boolean returnvalue = super.read_sampledata(stream);
+    public boolean read_sampledata(Bitstream stream) {
+      boolean returnvalue = super.read_sampledata(stream);
 
       if (channel2_allocation != 0)
         if (groupingtable[1] != null) {
-           int samplecode =
-              stream.get_bits(channel2_codelength[0]);
+          int samplecode = stream.get_bits(channel2_codelength[0]);
           // create requantized samples:
           samplecode += samplecode << 1;
 
-           int tmp = 0;
-           int temp = samplecode;
+          int tmp = 0;
+          int temp = samplecode;
 
           channel2_samples[tmp] = groupingtable[1][temp];
           temp++;
@@ -1083,26 +658,21 @@ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder {
           channel2_samples[tmp] = groupingtable[1][temp];
 
         } else {
-          channel2_samples[0] =
-              (float) ((stream.get_bits(channel2_codelength[0])) * channel2_factor[0] - 1.0);
-          channel2_samples[1] =
-              (float) ((stream.get_bits(channel2_codelength[0])) * channel2_factor[0] - 1.0);
-          channel2_samples[2] =
-              (float) ((stream.get_bits(channel2_codelength[0])) * channel2_factor[0] - 1.0);
+          channel2_samples[0] = (float) ((stream.get_bits(channel2_codelength[0])) * channel2_factor[0] - 1.0);
+          channel2_samples[1] = (float) ((stream.get_bits(channel2_codelength[0])) * channel2_factor[0] - 1.0);
+          channel2_samples[2] = (float) ((stream.get_bits(channel2_codelength[0])) * channel2_factor[0] - 1.0);
         }
       return returnvalue;
     }
 
     // ssjava
-    public boolean put_next_sample( int channels,  SynthesisFilter filter1,
-         SynthesisFilter filter2) {
+    public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) {
 
-       boolean returnvalue = super.put_next_sample(channels, filter1, filter2);
+      boolean returnvalue = super.put_next_sample(channels, filter1, filter2);
 
       if ((channel2_allocation != 0) && (channels != OutputChannels.LEFT_CHANNEL)) {
 
-         float sample =
-            channel2_samples[samplenumber - 1];
+        float sample = channel2_samples[samplenumber - 1];
 
         if (groupingtable[1] == null) {
           sample = (sample + channel2_d[0]) * channel2_c[0];
index ebbf8ec788f22a4c68e00c6eb8820fdb7c39f41e..d0f217dc8c3a872909493a3c132b69bb5ae9c6fb 100644 (file)
@@ -37,7 +37,7 @@
  * 
  * @since 0.0
  */
-// 
+//
 // 4th line added for hybrid.
 // 5th added for stereo
 // 6th added for reorder method
 // 9th added for get_LSF_scale_factors
 // 10th added for get_scale_factors
 // llth added for decode
-// 
-
+//
 
 final class LayerIIIDecoder implements FrameDecoder {
   static final double d43 = (4.0 / 3.0);
-  
+
   public int[] scalefac_buffer;
 
   // MDM: removed, as this wasn't being used.
   // private float CheckSumOut1d = 0.0f;
-  
+
   private int CheckSumHuff = 0;
-  
+
   private int[] is_1d;
-  
+
   private float[][][] ro;
-  
+
   private float[][][] lr;
-  
+
   private float[] inter; // 576 samples
-  
+
   private float[] out_1d; // 576 samples
-  
+
   private float[][] prevblck;
 
-  
   private float[][] k;
-  
+
   private int[] nonzero;
-  
+
   private SynthesisFilter filter1;
-  
+
   private SynthesisFilter filter2;
-  // 
+  //
   // private Obuffer buffer; // output buffer
-  
+
   private int which_channels;
-  
+
   private BitReserve br;
-  
+
   private III_side_info_t si;
 
-  //  private temporaire2[] III_scalefac_t;
-  
+  // private temporaire2[] III_scalefac_t;
+
   private final temporaire2[] scalefac;
   // private III_scalefac_t scalefac;
 
-  
   private int max_gr;
-  
+
   private int frame_start;
-  //  private int part2_start;
-  
+  // private int part2_start;
+
   private final int channels;
-  
+
   private int first_channel;
-  
+
   private int last_channel;
-  
+
   private int sfreq;
 
-  
   private int part2_start;
 
-  
   private boolean initialized = false;
 
-  
   float[][] raw_full; // 18 left shfited since it will be copied into prevblck!
 
   // constructor for the linear type system
-  public LayerIIIDecoder(Header h, @DELEGATE  SynthesisFilter filtera,
-      @DELEGATE  SynthesisFilter filterb,  int which_ch0) {
+  public LayerIIIDecoder(Header h, @DELEGATE SynthesisFilter filtera,
+      @DELEGATE SynthesisFilter filterb, int which_ch0) {
 
     filter_pos = 11;
     raw_full = new float[2][SBLIMIT * SSLIMIT];
@@ -150,44 +144,26 @@ final class LayerIIIDecoder implements FrameDecoder {
     // L3TABLE INIT
 
     sfBandIndex = new SBI[9]; // SZD: MPEG2.5 +3 indices
-     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[] 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 };
     // SZD: MPEG2.5
-     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 };
+    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 };
 
     sfBandIndex[0] = new SBI(l0, s0);
     sfBandIndex[1] = new SBI(l1, s1);
@@ -204,7 +180,7 @@ final class LayerIIIDecoder implements FrameDecoder {
 
     if (reorder_table == null) { // SZD: generate LUT
       reorder_table = new int[9][];
-      for ( int i = 0; i < 9; i++)
+      for (int i = 0; i < 9; i++)
         reorder_table[i] = reorder(sfBandIndex[i].s);
     }
 
@@ -215,17 +191,14 @@ final class LayerIIIDecoder implements FrameDecoder {
     init(h);
   }
 
-  
-  private void init( Header header) {
+  private void init(Header header) {
 
     frame_start = 0;
     channels = (header.mode() == Header.SINGLE_CHANNEL) ? 1 : 2;
     max_gr = (header.version() == Header.MPEG1) ? 2 : 1;
 
-    sfreq =
-        header.sample_frequency()
-            + ((header.version() == Header.MPEG1) ? 3 : (header.version() == Header.MPEG25_LSF) ? 6
-                : 0); // SZD
+    sfreq = header.sample_frequency() + ((header.version() == Header.MPEG1) ? 3
+        : (header.version() == Header.MPEG25_LSF) ? 6 : 0); // SZD
 
     if (channels == 2) {
       switch (which_channels) {
@@ -248,8 +221,8 @@ final class LayerIIIDecoder implements FrameDecoder {
       first_channel = last_channel = 0;
     }
 
-    for ( int ch = 0; ch < 2; ch++)
-      for ( int j = 0; j < 576; j++)
+    for (int ch = 0; ch < 2; ch++)
+      for (int j = 0; j < 576; j++)
         prevblck[ch][j] = 0.0f;
 
     nonzero[0] = nonzero[1] = 576;
@@ -265,10 +238,10 @@ final class LayerIIIDecoder implements FrameDecoder {
    */
   // REVIEW: these constructor arguments should be moved to the
   // decodeFrame() method, where possible, so that one
-  // 
-  // public LayerIIIDecoder( Header header0, 
+  //
+  // public LayerIIIDecoder( Header header0,
   // SynthesisFilter filtera,
-  //  SynthesisFilter filterb,  int which_ch0) {
+  // SynthesisFilter filterb, int which_ch0) {
   //
   // huffcodetab.inithuff();
   // is_1d = new int[SBLIMIT * SSLIMIT + 4];
@@ -293,61 +266,61 @@ final class LayerIIIDecoder implements FrameDecoder {
   // // L3TABLE INIT
   //
   // sfBandIndex = new SBI[9]; // SZD: MPEG2.5 +3 indices
-  //  int[] l0 =
+  // 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,
+  // int[] s0 = { 0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132,
   // 174, 192 };
-  //  int[] l1 =
+  // 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,
+  // int[] s1 = { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136,
   // 180, 192 };
-  //  int[] l2 =
+  // 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,
+  // int[] s2 = { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134,
   // 174, 192 };
   //
-  //  int[] l3 =
+  // 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,
+  // int[] s3 = { 0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136,
   // 192 };
-  //  int[] l4 =
+  // 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,
+  // int[] s4 = { 0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126,
   // 192 };
-  //  int[] l5 =
+  // 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,
+  // int[] s5 = { 0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138,
   // 180, 192 };
   // // SZD: MPEG2.5
-  //  int[] l6 =
+  // 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,
+  // int[] s6 = { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134,
   // 174, 192 };
-  //  int[] l7 =
+  // 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,
+  // int[] s7 = { 0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134,
   // 174, 192 };
-  //  int[] l8 =
+  // 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,
+  // int[] s8 = { 0, 8, 16, 24, 36, 52, 72, 96, 124, 160, 162, 164,
   // 166, 192 };
   //
   // sfBandIndex[0] = new SBI(l0, s0);
@@ -370,8 +343,8 @@ final class LayerIIIDecoder implements FrameDecoder {
   // }
   //
   // // Sftable
-  //  int[] ll0 = { 0, 6, 11, 16, 21 };
-  //  int[] ss0 = { 0, 6, 12 };
+  // int[] ll0 = { 0, 6, 11, 16, 21 };
+  // int[] ss0 = { 0, 6, 12 };
   // sftable = new Sftable(ll0, ss0);
   // // END OF Sftable
   //
@@ -429,16 +402,16 @@ final class LayerIIIDecoder implements FrameDecoder {
   /**
    * Notify decoder that a seek is being made.
    */
-  
+
   public void seek_notify() {
     frame_start = 0;
-    for ( int ch = 0; ch < 2; ch++)
-      for ( int j = 0; j < 576; j++)
+    for (int ch = 0; ch < 2; ch++)
+      for (int j = 0; j < 576; j++)
         prevblck[ch][j] = 0.0f;
     br = new BitReserve();
   }
 
-  public void decodeFrame( Header header) {
+  public void decodeFrame(Header header) {
     decode(header);
   }
 
@@ -448,11 +421,11 @@ final class LayerIIIDecoder implements FrameDecoder {
 
   // subband samples are buffered and passed to the
   // SynthesisFilter in one go.
-  
+
   private float[] samples1 = new float[32];
-  
+
   private float[] samples2 = new float[32];
-  
+
   private int filter_pos;
 
   /*
@@ -462,9 +435,9 @@ final class LayerIIIDecoder implements FrameDecoder {
    * {part2_start} {sb18, ss} {out_1d}* {sb}* {samples1,sample2}
    * {filter1,filter2}
    */
-  // 
-  
-  public void decode( Header header) {
+  //
+
+  public void decode(Header header) {
 
     // if (!initialized) {
     // init(header);
@@ -493,26 +466,26 @@ final class LayerIIIDecoder implements FrameDecoder {
     si = new III_side_info_t();
     //
 
-     int nSlots = header.slots();
+    int nSlots = header.slots();
 
-     int gr;
-     int ch;
+    int gr;
+    int ch;
 
-     int ss;
-     int sb;
-     int sb18;
+    int ss;
+    int sb;
+    int sb18;
 
-     int main_data_end;
-     int flush_main;
+    int main_data_end;
+    int flush_main;
 
-     int bytes_to_discard;
-     int i;
+    int bytes_to_discard;
+    int i;
 
     // modifications for linear type
     get_side_info(header);
     br = header.getBitReserve();
 
-     int version = header.version();
+    int version = header.version();
 
     // additional codes for the definitely written property
     filter_pos = (header.getIdx() * 4) & 0xf;
@@ -528,7 +501,7 @@ final class LayerIIIDecoder implements FrameDecoder {
       // 'ch', 'channels' should be higher than all locs in the below body
       for (ch = 0; ch < channels; ch++) {
         // part2_start = br.hsstell();
-         int part2_start_local = br.hsstell();
+        int part2_start_local = br.hsstell();
 
         // grab scale factors from the main data.
         // following the scale factors is the actual compressed data
@@ -567,7 +540,7 @@ final class LayerIIIDecoder implements FrameDecoder {
         // }
         // System.out.println("CheckSumOut1d = "+CheckSumOut1d);
 
-        for ( int index = 0; index < 576; index++) {
+        for (int index = 0; index < 576; index++) {
           out_1d[index] = inter[index];
         }
 
@@ -669,15 +642,14 @@ final class LayerIIIDecoder implements FrameDecoder {
    * Reads the side info from the stream, assuming the entire. frame has been
    * read already. Mono : 136 bits (= 17 bytes) Stereo : 256 bits (= 32 bytes)
    */
-  
-  private boolean get_side_info( Header header) {
 
-     SideInfoBuffer sib =
-        header.getSideInfoBuffer();
-     int version = header.version();
+  private boolean get_side_info(Header header) {
 
-     int ch;
-     int gr;
+    SideInfoBuffer sib = header.getSideInfoBuffer();
+    int version = header.version();
+
+    int ch;
+    int gr;
     // System.out.println("#get_side_info");
     if (version == Header.MPEG1) {
 
@@ -704,7 +676,7 @@ final class LayerIIIDecoder implements FrameDecoder {
           si.ch[ch].gr[gr].big_values = sib.get_bits(9);
           si.ch[ch].gr[gr].global_gain = sib.get_bits(8);
           si.ch[ch].gr[gr].scalefac_compress = sib.get_bits(4);
-           int cond = sib.get_bits(1);
+          int cond = sib.get_bits(1);
           // si.ch[ch].gr[gr].window_switching_flag = sib.get_bits(1);
           // if ((si.ch[ch].gr[gr].window_switching_flag) != 0) {
           if (cond != 0) {
@@ -762,7 +734,7 @@ final class LayerIIIDecoder implements FrameDecoder {
         si.ch[ch].gr[0].global_gain = sib.get_bits(8);
         si.ch[ch].gr[0].scalefac_compress = sib.get_bits(9);
 
-         int cond = sib.get_bits(1);
+        int cond = sib.get_bits(1);
         // si.ch[ch].gr[0].window_switching_flag = sib.get_bits(1);
         // if ((si.ch[ch].gr[0].window_switching_flag) != 0) {
         if (cond != 0) {
@@ -811,17 +783,16 @@ final class LayerIIIDecoder implements FrameDecoder {
   /**
         *
         */
-  
-  private void get_scale_factors( Header header,
-       int ch,  int gr) {
+
+  private void get_scale_factors(Header header, int ch, int gr) {
 
     // gr_info_s gr_info = (si.ch[ch].gr[gr]); remove alias
 
-     int sfb;
-     int window;
-     int scale_comp = si.ch[ch].gr[gr].scalefac_compress;
-     int length0 = slen[0][scale_comp];
-     int length1 = slen[1][scale_comp];
+    int sfb;
+    int window;
+    int scale_comp = si.ch[ch].gr[gr].scalefac_compress;
+    int length0 = slen[0][scale_comp];
+    int length1 = slen[1][scale_comp];
 
     if ((si.ch[ch].gr[gr].window_switching_flag != 0) && (si.ch[ch].gr[gr].block_type == 2)) {
       if ((si.ch[ch].gr[gr].mixed_block_flag) != 0) { // MIXED
@@ -921,26 +892,23 @@ final class LayerIIIDecoder implements FrameDecoder {
         */
   // MDM: new_slen is fully initialized before use, no need
   // to reallocate array.
-  
+
   private int[] new_slen = new int[4];
 
   // ssjava
-  
-  private void get_LSF_scale_data( Header header,
-       int ch,  int gr) {
 
-     int mode_ext = header.mode_extension();
-    //  gr_info_s gr_info =
+  private void get_LSF_scale_data(Header header, int ch, int gr) {
+
+    int mode_ext = header.mode_extension();
+    // gr_info_s gr_info =
     // (si.ch[ch].gr[gr]); // remove alias
 
-     int scalefac_comp =
-        si.ch[ch].gr[gr].scalefac_compress;
-     int blocktypenumber;
+    int scalefac_comp = si.ch[ch].gr[gr].scalefac_compress;
+    int blocktypenumber;
 
-     int int_scalefac_comp;
-     int m;
-     int blocknumber =
-        0;
+    int int_scalefac_comp;
+    int m;
+    int blocknumber = 0;
 
     if (si.ch[ch].gr[gr].block_type == 2) {
       if (si.ch[ch].gr[gr].mixed_block_flag == 0) {
@@ -1017,9 +985,9 @@ final class LayerIIIDecoder implements FrameDecoder {
     // scalefac_buffer[x] = 0;
 
     m = 0;
-    for ( int i = 0; i < 4; i++) {
-       int jmax = nr_of_sfb_block[blocknumber][blocktypenumber][i];
-      for ( int j = 0; j < jmax; j++) {
+    for (int i = 0; i < 4; i++) {
+      int jmax = nr_of_sfb_block[blocknumber][blocktypenumber][i];
+      for (int j = 0; j < jmax; j++) {
         scalefac_buffer[m] = (new_slen[i] == 0) ? 0 : br.hgetbits(new_slen[i]);
         m++;
 
@@ -1030,13 +998,12 @@ final class LayerIIIDecoder implements FrameDecoder {
   /**
         *
         */
-  
-  private void get_LSF_scale_factors( Header header,
-       int ch,  int gr) {
 
-     int sfb;
-     int m = 0;
-     int window;
+  private void get_LSF_scale_factors(Header header, int ch, int gr) {
+
+    int sfb;
+    int m = 0;
+    int window;
     // gr_info_s gr_info = (si.ch[ch].gr[gr]); // remove alias
 
     get_LSF_scale_data(header, ch, gr);
@@ -1082,41 +1049,38 @@ final class LayerIIIDecoder implements FrameDecoder {
   /**
         *
         */
-  // 
+  //
   // int[] x = { 0 };
-  // 
+  //
   // int[] y = { 0 };
-  // 
+  //
   // int[] v = { 0 };
-  // 
+  //
   // int[] w = { 0 };
-  // 
+  //
   // int x[] = { 0 };
-  // 
+  //
   // int y[] = { 0 };
-  // 
+  //
   // int v[] = { 0 };
-  // 
+  //
   // int w[] = { 0 };
 
-  
-  private void huffman_decode( int part2_start_local,
-       int ch,  int gr) {
+  private void huffman_decode(int part2_start_local, int ch, int gr) {
 
-     int x[] = new int[1];
-     int y[] = new int[1];
-     int v[] = new int[1];
-     int w[] = new int[1];
+    int x[] = new int[1];
+    int y[] = new int[1];
+    int v[] = new int[1];
+    int w[] = new int[1];
 
-     int part2_3_end =
-        part2_start_local + si.ch[ch].gr[gr].part2_3_length;
-     int num_bits;
-     int region1Start;
-     int region2Start;
-     int index;
+    int part2_3_end = part2_start_local + si.ch[ch].gr[gr].part2_3_length;
+    int num_bits;
+    int region1Start;
+    int region2Start;
+    int index;
 
-     int buf;
-     int buf1;
+    int buf;
+    int buf1;
 
     // Find region boundary for short block case
 
@@ -1142,10 +1106,9 @@ final class LayerIIIDecoder implements FrameDecoder {
 
     index = 0;
     // Read bigvalues area
-    TERMINATE: for ( int i = 0; i < (si.ch[ch].gr[gr].big_values << 1); i +=
-        2) {
+    TERMINATE: for (int i = 0; i < (si.ch[ch].gr[gr].big_values << 1); i += 2) {
 
-       int htIdx;
+      int htIdx;
       if (i < region1Start) {
         htIdx = si.ch[ch].gr[gr].table_select[0];
         // h = huffcodetab.ht[si.ch[ch].gr[gr].table_select[0]];
@@ -1170,7 +1133,7 @@ final class LayerIIIDecoder implements FrameDecoder {
 
     // Read count1 area
 
-     int htIdx = si.ch[ch].gr[gr].count1table_select + 32;
+    int htIdx = si.ch[ch].gr[gr].count1table_select + 32;
     // h = huffcodetab.ht[si.ch[ch].gr[gr].count1table_select + 32];
     num_bits = br.hsstell();
 
@@ -1214,8 +1177,7 @@ final class LayerIIIDecoder implements FrameDecoder {
       is_1d[index] = 0;
   }
 
-  
-  private int huffcodetab_huffman_decoder( int h) {
+  private int huffcodetab_huffman_decoder(int h) {
     // TODO need to move huffmancodetab implementation here
     return 0;
   }
@@ -1223,8 +1185,7 @@ final class LayerIIIDecoder implements FrameDecoder {
   /**
         *
         */
-  private void i_stereo_k_values( int is_pos,
-       int io_type,  int i) {
+  private void i_stereo_k_values(int is_pos, int io_type, int i) {
     if (is_pos == 0) {
       k[0][i] = 1.0f;
       k[1][i] = 1.0f;
@@ -1240,24 +1201,23 @@ final class LayerIIIDecoder implements FrameDecoder {
   /**
         *
         */
-  // 
-  
+  //
+
   // ssjava
   private void dequantize_sample(
-  /*  float xr[][], */ int ch,
-       int gr) {
+  /* float xr[][], */int ch, int gr) {
 
-    //  gr_info_s gr_info = (si.ch[ch].gr[gr]); remove alias!
-     int cb = 0;
+    // gr_info_s gr_info = (si.ch[ch].gr[gr]); remove alias!
+    int cb = 0;
 
-     int next_cb_boundary;
-     int cb_begin = 0;
-     int cb_width = 0;
-     float g_gain;
+    int next_cb_boundary;
+    int cb_begin = 0;
+    int cb_width = 0;
+    float g_gain;
 
-     int index = 0;
-     int t_index;
-     int j;
+    int index = 0;
+    int t_index;
+    int j;
 
     // float[][] xr_1d = xr;//substituted xr for instances of xr_1d to decrease
     // number of areas
@@ -1282,12 +1242,12 @@ final class LayerIIIDecoder implements FrameDecoder {
 
     for (j = 0; j < nonzero[ch]; j++) {
       // Modif E.B 02/22/99
-       int reste = j % SSLIMIT;
-       int quotien = (int) ((j - reste) / SSLIMIT);
+      int reste = j % SSLIMIT;
+      int quotien = (int) ((j - reste) / SSLIMIT);
       if (is_1d[j] == 0) {
         ro[ch][quotien][reste] = 0.0f;
       } else {
-         int abv = is_1d[j];
+        int abv = is_1d[j];
         // Pow Array fix (11/17/04)
         if (abv < t_43.length) {
           if (is_1d[j] > 0)
@@ -1310,8 +1270,8 @@ final class LayerIIIDecoder implements FrameDecoder {
     // apply formula per block type
     for (j = 0; j < nonzero[ch]; j++) {
       // Modif E.B 02/22/99
-       int reste = j % SSLIMIT;
-       int quotien = (int) ((j - reste) / SSLIMIT);
+      int reste = j % SSLIMIT;
+      int quotien = (int) ((j - reste) / SSLIMIT);
 
       if (index == next_cb_boundary) { /* Adjust critical band boundary */
         if ((si.ch[ch].gr[gr].window_switching_flag != 0) && (si.ch[ch].gr[gr].block_type == 2)) {
@@ -1359,17 +1319,14 @@ final class LayerIIIDecoder implements FrameDecoder {
 
       // Do long/short dependent scaling operations
 
-      if ((si.ch[ch].gr[gr].window_switching_flag != 0)
-          && (((si.ch[ch].gr[gr].block_type == 2) && (si.ch[ch].gr[gr].mixed_block_flag == 0)) || ((si.ch[ch].gr[gr].block_type == 2)
-              && (si.ch[ch].gr[gr].mixed_block_flag != 0) && (j >= 36)))) {
+      if ((si.ch[ch].gr[gr].window_switching_flag != 0) && (((si.ch[ch].gr[gr].block_type == 2) && (si.ch[ch].gr[gr].mixed_block_flag == 0)) || ((si.ch[ch].gr[gr].block_type == 2) && (si.ch[ch].gr[gr].mixed_block_flag != 0) && (j >= 36)))) {
 
         t_index = (index - cb_begin) / cb_width;
         /*
          * xr[sb][ss] *= pow(2.0, ((-2.0 * gr_info.subblock_gain[t_index]) -(0.5
          * * (1.0 + gr_info.scalefac_scale) scalefac[ch].s[t_index][cb])));
          */
-         int idx =
-            scalefac[ch].s[t_index][cb] << si.ch[ch].gr[gr].scalefac_scale;
+        int idx = scalefac[ch].s[t_index][cb] << si.ch[ch].gr[gr].scalefac_scale;
         idx += (si.ch[ch].gr[gr].subblock_gain[t_index] << 2);
 
         ro[ch][quotien][reste] *= two_to_negative_half_pow[idx];
@@ -1379,7 +1336,7 @@ final class LayerIIIDecoder implements FrameDecoder {
          * xr[sb][ss] *= pow(2.0, -0.5 * (1.0+gr_info.scalefac_scale)
          * (scalefac[ch].l[cb] + gr_info.preflag * pretab[cb]));
          */
-         int idx = scalefac[ch].l[cb];
+        int idx = scalefac[ch].l[cb];
 
         if (si.ch[ch].gr[gr].preflag != 0)
           idx += pretab[cb];
@@ -1392,8 +1349,8 @@ final class LayerIIIDecoder implements FrameDecoder {
 
     for (j = nonzero[ch]; j < 576; j++) {
       // Modif E.B 02/22/99
-       int reste = j % SSLIMIT;
-       int quotien = (int) ((j - reste) / SSLIMIT);
+      int reste = j % SSLIMIT;
+      int quotien = (int) ((j - reste) / SSLIMIT);
       if (reste < 0)
         reste = 0;
       if (quotien < 0)
@@ -1408,10 +1365,9 @@ final class LayerIIIDecoder implements FrameDecoder {
         *
         */
   // ssjava
-  // 
-  
-  private void reorder(/*  float xr[][], */ int ch,
-       int gr) {
+  //
+
+  private void reorder(/* float xr[][], */int ch, int gr) {
     // the purpose of reordering: move 'short samples' back to their original
     // position
     // after reorder, the samples are no long ordered by frequency
@@ -1422,15 +1378,15 @@ final class LayerIIIDecoder implements FrameDecoder {
 
     // gr_info_s gr_info = (si.ch[ch].gr[gr]); //remove alias
 
-     int index;
+    int index;
 
-     int freq;
-     int freq3;
-     int sfb;
-     int sfb_start;
-     int sfb_lines;
-     int src_line;
-     int des_line;
+    int freq;
+    int freq3;
+    int sfb;
+    int sfb_start;
+    int sfb_lines;
+    int src_line;
+    int des_line;
     // float[][] xr_1d = xr; subbed in xr for xr_1d so as not to create extra
     // areas
 
@@ -1444,8 +1400,8 @@ final class LayerIIIDecoder implements FrameDecoder {
         // NO REORDER FOR LOW 2 SUBBANDS
         for (index = 0; index < 36; index++) {
           // Modif E.B 02/22/99
-           int reste = index % SSLIMIT;
-           int quotien = (int) ((index - reste) / SSLIMIT);
+          int reste = index % SSLIMIT;
+          int quotien = (int) ((index - reste) / SSLIMIT);
           inter[index] = lr[ch][quotien][reste];
         }
         // REORDERING FOR REST SWITCHED SHORT
@@ -1460,15 +1416,15 @@ final class LayerIIIDecoder implements FrameDecoder {
           sfb_start = sfBandIndex[sfreq].s[sfb];
           sfb_lines = sfBandIndex[sfreq].s[sfb + 1] - sfb_start;
 
-           int sfb_start3 = (sfb_start << 2) - sfb_start;
+          int sfb_start3 = (sfb_start << 2) - sfb_start;
 
           for (freq = 0, freq3 = 0; freq < sfb_lines; freq++, freq3 += 3) {
 
             src_line = sfb_start3 + freq;
             des_line = sfb_start3 + freq3;
             // Modif E.B 02/22/99
-             int reste = src_line % SSLIMIT;
-             int quotien = (int) ((src_line - reste) / SSLIMIT);
+            int reste = src_line % SSLIMIT;
+            int quotien = (int) ((src_line - reste) / SSLIMIT);
 
             inter[des_line] = lr[ch][quotien][reste];
             src_line += sfb_lines;
@@ -1490,17 +1446,17 @@ final class LayerIIIDecoder implements FrameDecoder {
 
       } else { // pure short
         for (index = 0; index < 576; index++) {
-           int j = reorder_table[sfreq][index];
-           int reste = j % SSLIMIT;
-           int quotien = (int) ((j - reste) / SSLIMIT);
+          int j = reorder_table[sfreq][index];
+          int reste = j % SSLIMIT;
+          int quotien = (int) ((j - reste) / SSLIMIT);
           inter[index] = lr[ch][quotien][reste];
         }
       }
     } else { // long blocks
       for (index = 0; index < 576; index++) {
         // Modif E.B 02/22/99
-         int reste = index % SSLIMIT;
-         int quotien = (int) ((index - reste) / SSLIMIT);
+        int reste = index % SSLIMIT;
+        int quotien = (int) ((index - reste) / SSLIMIT);
         inter[index] = lr[ch][quotien][reste];
       }
     }
@@ -1510,17 +1466,15 @@ final class LayerIIIDecoder implements FrameDecoder {
         *
         */
 
-  
   int[] is_pos = new int[576];
-  
+
   float[] is_ratio = new float[576];
 
   // ssjava
-  
-  private void stereo( Header header,
-       int gr) {
-     int sb;
-     int ss;
+
+  private void stereo(Header header, int gr) {
+    int sb;
+    int ss;
 
     if (channels == 1) { // mono , bypass xr[0][][] to lr[0][][]
 
@@ -1534,22 +1488,19 @@ final class LayerIIIDecoder implements FrameDecoder {
     } else {
 
       // gr_info_s gr_info = (si.ch[0].gr[gr]); remove alias
-       int mode_ext = header.mode_extension();
+      int mode_ext = header.mode_extension();
 
-       int sfb;
-       int i;
-       int lines;
-       int temp;
-       int temp2;
+      int sfb;
+      int i;
+      int lines;
+      int temp;
+      int temp2;
 
-       boolean ms_stereo =
-          ((header.mode() == Header.JOINT_STEREO) && ((mode_ext & 0x2) != 0));
-       boolean i_stereo =
-          ((header.mode() == Header.JOINT_STEREO) && ((mode_ext & 0x1) != 0));
-       boolean lsf =
-          ((header.version() == Header.MPEG2_LSF || header.version() == Header.MPEG25_LSF)); // SZD
+      boolean ms_stereo = ((header.mode() == Header.JOINT_STEREO) && ((mode_ext & 0x2) != 0));
+      boolean i_stereo = ((header.mode() == Header.JOINT_STEREO) && ((mode_ext & 0x1) != 0));
+      boolean lsf = ((header.version() == Header.MPEG2_LSF || header.version() == Header.MPEG25_LSF)); // SZD
 
-       int io_type = (si.ch[0].gr[gr].scalefac_compress & 1);
+      int io_type = (si.ch[0].gr[gr].scalefac_compress & 1);
 
       // initialization
       // for (i = 0; i < 576; i++) {
@@ -1561,10 +1512,10 @@ final class LayerIIIDecoder implements FrameDecoder {
         if ((si.ch[0].gr[gr].window_switching_flag != 0) && (si.ch[0].gr[gr].block_type == 2)) {
           if (si.ch[0].gr[gr].mixed_block_flag != 0) {
 
-             int max_sfb = 0;
+            int max_sfb = 0;
 
-            for ( int j = 0; j < 3; j++) {
-               int sfbcnt;
+            for (int j = 0; j < 3; j++) {
+              int sfbcnt;
               sfbcnt = 2;
               TERMINATE: for (sfb = 12; sfb >= 3; sfb--) {
                 i = sfBandIndex[sfreq].s[sfb];
@@ -1661,8 +1612,8 @@ final class LayerIIIDecoder implements FrameDecoder {
               } // for (; sfb<8 ...
             } // for (j=0 ...
           } else { // if (gr_info.mixed_block_flag)
-            for ( int j = 0; j < 3; j++) {
-               int sfbcnt;
+            for (int j = 0; j < 3; j++) {
+              int sfbcnt;
               sfbcnt = -1;
               TERMINATE: for (sfb = 12; sfb >= 0; sfb--) {
                 temp = sfBandIndex[sfreq].s[sfb];
@@ -1801,27 +1752,24 @@ final class LayerIIIDecoder implements FrameDecoder {
   /**
         *
         */
-  // 
-  
-  private void antialias( int ch,
-       int gr) {
+  //
+
+  private void antialias(int ch, int gr) {
 
-     int sb18;
-     int ss;
-     int sb18lim;
+    int sb18;
+    int ss;
+    int sb18lim;
 
-    // 
+    //
     // gr_info_s gr_info =
     // (si.ch[ch].gr[gr]);
     // 31 alias-reduction operations between each pair of sub-bands
     // with 8 butterflies between each pair
 
-    if ((si.ch[ch].gr[gr].window_switching_flag != 0) && (si.ch[ch].gr[gr].block_type == 2)
-        && !(si.ch[ch].gr[gr].mixed_block_flag != 0))
+    if ((si.ch[ch].gr[gr].window_switching_flag != 0) && (si.ch[ch].gr[gr].block_type == 2) && !(si.ch[ch].gr[gr].mixed_block_flag != 0))
       return;
 
-    if ((si.ch[ch].gr[gr].window_switching_flag != 0) && (si.ch[ch].gr[gr].mixed_block_flag != 0)
-        && (si.ch[ch].gr[gr].block_type == 2)) {
+    if ((si.ch[ch].gr[gr].window_switching_flag != 0) && (si.ch[ch].gr[gr].mixed_block_flag != 0) && (si.ch[ch].gr[gr].block_type == 2)) {
       sb18lim = 18;
     } else {
       sb18lim = 558;
@@ -1829,10 +1777,10 @@ final class LayerIIIDecoder implements FrameDecoder {
 
     for (sb18 = 0; sb18 < sb18lim; sb18 += 18) {
       for (ss = 0; ss < 8; ss++) {
-         int src_idx1 = sb18 + 17 - ss;
-         int src_idx2 = sb18 + 18 + ss;
-         float bu = inter[src_idx1];
-         float bd = inter[src_idx2];
+        int src_idx1 = sb18 + 17 - ss;
+        int src_idx2 = sb18 + 18 + ss;
+        float bu = inter[src_idx1];
+        float bd = inter[src_idx2];
         inter[src_idx1] = (bu * cs[ss]) - (bd * ca[ss]);
         inter[src_idx2] = (bd * cs[ss]) + (bu * ca[ss]);
       }
@@ -1845,24 +1793,22 @@ final class LayerIIIDecoder implements FrameDecoder {
 
   // MDM: tsOutCopy and rawout do not need initializing, so the arrays
   // can be reused.
-  
+
   float[] tsOutCopy = new float[18];
-  
+
   float[] rawout = new float[36];
 
-  
-  private void hybrid( int ch,  int gr) {
+  private void hybrid(int ch, int gr) {
 
-     int bt;
-     int sb18;
+    int bt;
+    int sb18;
     // gr_info_s gr_info = (si.ch[ch].gr[gr]); //remove alias
-    //  float[] tsOut; //remove alias
+    // float[] tsOut; //remove alias
 
     // float[][] prvblk;
 
     for (sb18 = 0; sb18 < 576; sb18 += 18) {
-      if ((si.ch[ch].gr[gr].window_switching_flag != 0) && (si.ch[ch].gr[gr].mixed_block_flag != 0)
-          && (sb18 < 36)) {
+      if ((si.ch[ch].gr[gr].window_switching_flag != 0) && (si.ch[ch].gr[gr].mixed_block_flag != 0) && (sb18 < 36)) {
         bt = 0;
       } else {
         bt = si.ch[ch].gr[gr].block_type;
@@ -1870,14 +1816,14 @@ final class LayerIIIDecoder implements FrameDecoder {
 
       // tsOut = out_1d;
       // Modif E.B 02/22/99
-      for ( int cc = 0; cc < 18; cc++) {
+      for (int cc = 0; cc < 18; cc++) {
         // tsOutCopy[cc] = out_1d[cc + sb18];
         tsOutCopy[cc] = inter[cc + sb18];
       }
 
       inv_mdct(bt);
 
-      for ( int cc = 0; cc < 18; cc++) {
+      for (int cc = 0; cc < 18; cc++) {
         out_1d[cc + sb18] = tsOutCopy[cc];
       }
 
@@ -1966,8 +1912,8 @@ final class LayerIIIDecoder implements FrameDecoder {
         *
         */
   private void do_downmix() {
-    for ( int sb = 0; sb < SSLIMIT; sb++) {
-      for ( int ss = 0; ss < SSLIMIT; ss += 3) {
+    for (int sb = 0; sb < SSLIMIT; sb++) {
+      for (int ss = 0; ss < SSLIMIT; ss += 3) {
         lr[0][sb][ss] = (lr[0][sb][ss] + lr[1][sb][ss]) * 0.5f;
         lr[0][sb][ss + 1] = (lr[0][sb][ss + 1] + lr[1][sb][ss + 1]) * 0.5f;
         lr[0][sb][ss + 2] = (lr[0][sb][ss + 2] + lr[1][sb][ss + 2]) * 0.5f;
@@ -1978,50 +1924,35 @@ final class LayerIIIDecoder implements FrameDecoder {
   /**
    * Fast INV_MDCT.
    */
-  // 
-  // public void inv_mdct( float[] in,  float[] out,
-  //  int block_type) {//remove alias
+  //
+  // public void inv_mdct( float[] in, float[] out,
+  // int block_type) {//remove alias
   // ssjava
-  
-  public void inv_mdct( int block_type) {
+
+  public void inv_mdct(int block_type) {
     // float[] win_bt;
-     int i;
-
-     float tmpf_0;
-     float tmpf_1;
-     float tmpf_2;
-     float tmpf_3;
-     float tmpf_4;
-     float tmpf_5;
-     float tmpf_6;
-     float tmpf_7;
-     float tmpf_8;
-     float tmpf_9;
-     float tmpf_10;
-     float tmpf_11;
-     float tmpf_12;
-     float tmpf_13;
-     float tmpf_14;
-     float tmpf_15;
-     float tmpf_16;
-     float tmpf_17;
-
-    tmpf_0 =
-        tmpf_1 =
-            tmpf_2 =
-                tmpf_3 =
-                    tmpf_4 =
-                        tmpf_5 =
-                            tmpf_6 =
-                                tmpf_7 =
-                                    tmpf_8 =
-                                        tmpf_9 =
-                                            tmpf_10 =
-                                                tmpf_11 =
-                                                    tmpf_12 =
-                                                        tmpf_13 =
-                                                            tmpf_14 =
-                                                                tmpf_15 = tmpf_16 = tmpf_17 = 0.0f;
+    int i;
+
+    float tmpf_0;
+    float tmpf_1;
+    float tmpf_2;
+    float tmpf_3;
+    float tmpf_4;
+    float tmpf_5;
+    float tmpf_6;
+    float tmpf_7;
+    float tmpf_8;
+    float tmpf_9;
+    float tmpf_10;
+    float tmpf_11;
+    float tmpf_12;
+    float tmpf_13;
+    float tmpf_14;
+    float tmpf_15;
+    float tmpf_16;
+    float tmpf_17;
+
+    tmpf_0 = tmpf_1 = tmpf_2 = tmpf_3 = tmpf_4 = tmpf_5 = tmpf_6 = tmpf_7 = tmpf_8 = tmpf_9 = tmpf_10 = tmpf_11 = tmpf_12 = tmpf_13 = tmpf_14 = tmpf_15 = tmpf_16 = tmpf_17 = 0.0f;
 
     if (block_type == 2) {
 
@@ -2069,7 +2000,7 @@ final class LayerIIIDecoder implements FrameDecoder {
       rawout[34] = 0.0f;
       rawout[35] = 0.0f;
 
-       int six_i = 0;
+      int six_i = 0;
 
       for (i = 0; i < 3; i++) {
         // 12 point IMDCT
@@ -2086,9 +2017,9 @@ final class LayerIIIDecoder implements FrameDecoder {
         tsOutCopy[9 + i] += tsOutCopy[3 + i];
 
         // 3 point IDCT on even indices
-         float pp1;
-         float pp2;
-         float sum;
+        float pp1;
+        float pp2;
+        float sum;
         pp2 = tsOutCopy[12 + i] * 0.500000000f;
         pp1 = tsOutCopy[6 + i] * 0.866025403f;
         sum = tsOutCopy[0 + i] + pp2;
@@ -2112,7 +2043,7 @@ final class LayerIIIDecoder implements FrameDecoder {
         tmpf_5 *= 0.517638090f;
 
         // Output butterflies on 2 3 point IDCT's (for 6 point IDCT)
-         float save = tmpf_0;
+        float save = tmpf_0;
         tmpf_0 += tmpf_5;
         tmpf_5 = save - tmpf_5;
         save = tmpf_1;
@@ -2199,24 +2130,24 @@ final class LayerIIIDecoder implements FrameDecoder {
       tsOutCopy[5] += tsOutCopy[3];
       tsOutCopy[3] += tsOutCopy[1];
 
-       float tmp0;
-       float tmp1;
-       float tmp2;
-       float tmp3;
-       float tmp4;
-       float tmp0_;
-       float tmp1_;
-       float tmp2_;
-       float tmp3_;
-       float tmp0o;
-       float tmp1o;
-       float tmp2o;
-       float tmp3o;
-       float tmp4o;
-       float tmp0_o;
-       float tmp1_o;
-       float tmp2_o;
-       float tmp3_o;
+      float tmp0;
+      float tmp1;
+      float tmp2;
+      float tmp3;
+      float tmp4;
+      float tmp0_;
+      float tmp1_;
+      float tmp2_;
+      float tmp3_;
+      float tmp0o;
+      float tmp1o;
+      float tmp2o;
+      float tmp3o;
+      float tmp4o;
+      float tmp0_o;
+      float tmp1_o;
+      float tmp2_o;
+      float tmp3_o;
 
       // Fast 9 Point Inverse Discrete Cosine Transform
       //
@@ -2233,68 +2164,41 @@ final class LayerIIIDecoder implements FrameDecoder {
       // 9 point IDCT on even indices
 
       // 5 points on odd indices (not realy an IDCT)
-       float i00 = tsOutCopy[0] + tsOutCopy[0];
-       float iip12 = i00 + tsOutCopy[12];
+      float i00 = tsOutCopy[0] + tsOutCopy[0];
+      float iip12 = i00 + tsOutCopy[12];
 
-      tmp0 =
-          iip12 + tsOutCopy[4] * 1.8793852415718f + tsOutCopy[8] * 1.532088886238f + tsOutCopy[16]
-              * 0.34729635533386f;
+      tmp0 = iip12 + tsOutCopy[4] * 1.8793852415718f + tsOutCopy[8] * 1.532088886238f + tsOutCopy[16] * 0.34729635533386f;
       tmp1 = i00 + tsOutCopy[4] - tsOutCopy[8] - tsOutCopy[12] - tsOutCopy[12] - tsOutCopy[16];
-      tmp2 =
-          iip12 - tsOutCopy[4] * 0.34729635533386f - tsOutCopy[8] * 1.8793852415718f
-              + tsOutCopy[16] * 1.532088886238f;
-      tmp3 =
-          iip12 - tsOutCopy[4] * 1.532088886238f + tsOutCopy[8] * 0.34729635533386f - tsOutCopy[16]
-              * 1.8793852415718f;
+      tmp2 = iip12 - tsOutCopy[4] * 0.34729635533386f - tsOutCopy[8] * 1.8793852415718f + tsOutCopy[16] * 1.532088886238f;
+      tmp3 = iip12 - tsOutCopy[4] * 1.532088886238f + tsOutCopy[8] * 0.34729635533386f - tsOutCopy[16] * 1.8793852415718f;
       tmp4 = tsOutCopy[0] - tsOutCopy[4] + tsOutCopy[8] - tsOutCopy[12] + tsOutCopy[16];
 
       // 4 points on even indices
-       float i66_ = tsOutCopy[6] * 1.732050808f; // Sqrt[3]
+      float i66_ = tsOutCopy[6] * 1.732050808f; // Sqrt[3]
 
-      tmp0_ =
-          tsOutCopy[2] * 1.9696155060244f + i66_ + tsOutCopy[10] * 1.2855752193731f + tsOutCopy[14]
-              * 0.68404028665134f;
+      tmp0_ = tsOutCopy[2] * 1.9696155060244f + i66_ + tsOutCopy[10] * 1.2855752193731f + tsOutCopy[14] * 0.68404028665134f;
       tmp1_ = (tsOutCopy[2] - tsOutCopy[10] - tsOutCopy[14]) * 1.732050808f;
-      tmp2_ =
-          tsOutCopy[2] * 1.2855752193731f - i66_ - tsOutCopy[10] * 0.68404028665134f
-              + tsOutCopy[14] * 1.9696155060244f;
-      tmp3_ =
-          tsOutCopy[2] * 0.68404028665134f - i66_ + tsOutCopy[10] * 1.9696155060244f
-              - tsOutCopy[14] * 1.2855752193731f;
+      tmp2_ = tsOutCopy[2] * 1.2855752193731f - i66_ - tsOutCopy[10] * 0.68404028665134f + tsOutCopy[14] * 1.9696155060244f;
+      tmp3_ = tsOutCopy[2] * 0.68404028665134f - i66_ + tsOutCopy[10] * 1.9696155060244f - tsOutCopy[14] * 1.2855752193731f;
 
       // 9 point IDCT on odd indices
       // 5 points on odd indices (not realy an IDCT)
-       float i0 = tsOutCopy[0 + 1] + tsOutCopy[0 + 1];
-       float i0p12 = i0 + tsOutCopy[12 + 1];
-
-      tmp0o =
-          i0p12 + tsOutCopy[4 + 1] * 1.8793852415718f + tsOutCopy[8 + 1] * 1.532088886238f
-              + tsOutCopy[16 + 1] * 0.34729635533386f;
-      tmp1o =
-          i0 + tsOutCopy[4 + 1] - tsOutCopy[8 + 1] - tsOutCopy[12 + 1] - tsOutCopy[12 + 1]
-              - tsOutCopy[16 + 1];
-      tmp2o =
-          i0p12 - tsOutCopy[4 + 1] * 0.34729635533386f - tsOutCopy[8 + 1] * 1.8793852415718f
-              + tsOutCopy[16 + 1] * 1.532088886238f;
-      tmp3o =
-          i0p12 - tsOutCopy[4 + 1] * 1.532088886238f + tsOutCopy[8 + 1] * 0.34729635533386f
-              - tsOutCopy[16 + 1] * 1.8793852415718f;
-      tmp4o =
-          (tsOutCopy[0 + 1] - tsOutCopy[4 + 1] + tsOutCopy[8 + 1] - tsOutCopy[12 + 1] + tsOutCopy[16 + 1]) * 0.707106781f; // Twiddled
+      float i0 = tsOutCopy[0 + 1] + tsOutCopy[0 + 1];
+      float i0p12 = i0 + tsOutCopy[12 + 1];
+
+      tmp0o = i0p12 + tsOutCopy[4 + 1] * 1.8793852415718f + tsOutCopy[8 + 1] * 1.532088886238f + tsOutCopy[16 + 1] * 0.34729635533386f;
+      tmp1o = i0 + tsOutCopy[4 + 1] - tsOutCopy[8 + 1] - tsOutCopy[12 + 1] - tsOutCopy[12 + 1] - tsOutCopy[16 + 1];
+      tmp2o = i0p12 - tsOutCopy[4 + 1] * 0.34729635533386f - tsOutCopy[8 + 1] * 1.8793852415718f + tsOutCopy[16 + 1] * 1.532088886238f;
+      tmp3o = i0p12 - tsOutCopy[4 + 1] * 1.532088886238f + tsOutCopy[8 + 1] * 0.34729635533386f - tsOutCopy[16 + 1] * 1.8793852415718f;
+      tmp4o = (tsOutCopy[0 + 1] - tsOutCopy[4 + 1] + tsOutCopy[8 + 1] - tsOutCopy[12 + 1] + tsOutCopy[16 + 1]) * 0.707106781f; // Twiddled
 
       // 4 points on even indices
-       float i6_ = tsOutCopy[6 + 1] * 1.732050808f; // Sqrt[3]
+      float i6_ = tsOutCopy[6 + 1] * 1.732050808f; // Sqrt[3]
 
-      tmp0_o =
-          tsOutCopy[2 + 1] * 1.9696155060244f + i6_ + tsOutCopy[10 + 1] * 1.2855752193731f
-              + tsOutCopy[14 + 1] * 0.68404028665134f;
+      tmp0_o = tsOutCopy[2 + 1] * 1.9696155060244f + i6_ + tsOutCopy[10 + 1] * 1.2855752193731f + tsOutCopy[14 + 1] * 0.68404028665134f;
       tmp1_o = (tsOutCopy[2 + 1] - tsOutCopy[10 + 1] - tsOutCopy[14 + 1]) * 1.732050808f;
-      tmp2_o =
-          tsOutCopy[2 + 1] * 1.2855752193731f - i6_ - tsOutCopy[10 + 1] * 0.68404028665134f
-              + tsOutCopy[14 + 1] * 1.9696155060244f;
-      tmp3_o =
-          tsOutCopy[2 + 1] * 0.68404028665134f - i6_ + tsOutCopy[10 + 1] * 1.9696155060244f
-              - tsOutCopy[14 + 1] * 1.2855752193731f;
+      tmp2_o = tsOutCopy[2 + 1] * 1.2855752193731f - i6_ - tsOutCopy[10 + 1] * 0.68404028665134f + tsOutCopy[14 + 1] * 1.9696155060244f;
+      tmp3_o = tsOutCopy[2 + 1] * 0.68404028665134f - i6_ + tsOutCopy[10 + 1] * 1.9696155060244f - tsOutCopy[14 + 1] * 1.2855752193731f;
 
       // Twiddle factors on odd indices
       // and
@@ -2302,8 +2206,8 @@ final class LayerIIIDecoder implements FrameDecoder {
       // and
       // twiddle factors for 36 point IDCT
 
-       float e;
-       float o;
+      float e;
+      float o;
       e = tmp0 + tmp0_;
       o = (tmp0o + tmp0_o) * 0.501909918f;
       tmpf_0 = e + o;
@@ -2384,7 +2288,6 @@ final class LayerIIIDecoder implements FrameDecoder {
 
   }
 
-  
   private int counter = 0;
   private static final int SSLIMIT = 18;
   private static final int SBLIMIT = 32;
@@ -2393,67 +2296,29 @@ final class LayerIIIDecoder implements FrameDecoder {
   // This may be adjusted for performance without any problems.
   // public static final int POW_TABLE_LIMIT=512;
 
-  private 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 } };
+  private 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 } };
 
-  public 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 };
+  public 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 };
 
-  
   private SBI[] sfBandIndex; // Init in the constructor.
 
-  public static final float 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 };
+  public static final float 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 };
 
   public static final float t_43[] = create_t_43();
 
-  
   static private float[] create_t_43() {
-     float[] t43 = new float[8192];
+    float[] t43 = new float[8192];
     final double d43 = (4.0 / 3.0);
 
-    for ( int i = 0; i < 8192; i++) {
+    for (int i = 0; i < 8192; i++) {
       t43[i] = (float) Math.pow(i, d43);
     }
     return t43;
   }
 
-  public static final float 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 } };
-
-  public static final float 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 };
+  public static final float 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 } };
+
+  public static final float 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 };
 
   // REVIEW: in java, the array lookup may well be slower than
   // the actual calculation
@@ -2518,7 +2383,7 @@ final class LayerIIIDecoder implements FrameDecoder {
    * 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
    * 12, 13, 14, 15, 16, 17 };
    */
-  
+
   private static/* final */int reorder_table[][]/* = loadReorderTable() */; // SZD:
 
   // will
@@ -2537,11 +2402,11 @@ final class LayerIIIDecoder implements FrameDecoder {
    * return (int[][])o; } catch (IOException ex) { throw new
    * ExceptionInInitializerError(ex); } }
    */
-  
-  static int[] reorder( int scalefac_band[]) { // SZD: converted from
-                                                         // LAME
-     int j = 0;
-     int ix[] = new int[576];
+
+  static int[] reorder(int scalefac_band[]) { // SZD: converted from
+                                              // LAME
+    int j = 0;
+    int ix[] = new int[576];
     for (int sfb = 0; sfb < 13; sfb++) {
       int start = scalefac_band[sfb];
       int end = scalefac_band[sfb + 1];
@@ -2766,12 +2631,9 @@ final class LayerIIIDecoder implements FrameDecoder {
    * 570,547,559,571,548,560,572,549,561,573,550,562,574,551,563,575} };
    */
 
-  private static final float cs[] = { 0.857492925712f, 0.881741997318f, 0.949628649103f,
-      0.983314592492f, 0.995517816065f, 0.999160558175f, 0.999899195243f, 0.999993155067f };
+  private static final float cs[] = { 0.857492925712f, 0.881741997318f, 0.949628649103f, 0.983314592492f, 0.995517816065f, 0.999160558175f, 0.999899195243f, 0.999993155067f };
 
-  private static final float ca[] = { -0.5144957554270f, -0.4717319685650f, -0.3133774542040f,
-      -0.1819131996110f, -0.0945741925262f, -0.0409655828852f, -0.0141985685725f,
-      -0.00369997467375f };
+  private static final float ca[] = { -0.5144957554270f, -0.4717319685650f, -0.3133774542040f, -0.1819131996110f, -0.0945741925262f, -0.0409655828852f, -0.0141985685725f, -0.00369997467375f };
 
   /************************************************************/
   /* END OF L3TABLE */
@@ -2788,58 +2650,19 @@ final class LayerIIIDecoder implements FrameDecoder {
   /***************************************************************/
   /* INV_MDCT */
   /***************************************************************/
-  public static final float 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 } };
+  public static final float 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 } };
 
   /***************************************************************/
   /* END OF INV_MDCT */
   /***************************************************************/
 
-  public 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 } } };
+  public 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 } } };
 
 }
 
@@ -2847,11 +2670,10 @@ final class LayerIIIDecoder implements FrameDecoder {
 /* L3TABLE */
 /************************************************************/
 
-
 class SBI {
-  
+
   public int[] l;
-  
+
   public int[] s;
 
   public SBI() {
@@ -2859,42 +2681,40 @@ class SBI {
     s = new int[14];
   }
 
-  
-  public SBI(@DELEGATE  int[] thel, @DELEGATE  int[] thes) {
+  public SBI(@DELEGATE int[] thel, @DELEGATE int[] thes) {
     l = thel;
     s = thes;
   }
 }
 
-
 class gr_info_s {
-  
+
   public int part2_3_length = 0;
-  
+
   public int big_values = 0;
-  
+
   public int global_gain = 0;
-  
+
   public int scalefac_compress = 0;
-  
+
   public int window_switching_flag = 0;
-  
+
   public int block_type = 0;
-  
+
   public int mixed_block_flag = 0;
-  
+
   public int[] table_select;
-  
+
   public int[] subblock_gain;
-  
+
   public int region0_count = 0;
-  
+
   public int region1_count = 0;
-  
+
   public int preflag = 0;
-  
+
   public int scalefac_scale = 0;
-  
+
   public int count1table_select = 0;
 
   /**
@@ -2906,11 +2726,10 @@ class gr_info_s {
   }
 }
 
-
 class temporaire {
-  
+
   public int[] scfsi;
-  
+
   public gr_info_s[] gr;
 
   /**
@@ -2924,14 +2743,12 @@ class temporaire {
   }
 }
 
-
 class III_side_info_t {
 
-  
   public int main_data_begin = 0;
-  
+
   public int private_bits = 0;
-  
+
   public temporaire[] ch;
 
   /**
@@ -2944,11 +2761,10 @@ class III_side_info_t {
   }
 }
 
-
 class temporaire2 {
-  
+
   public int[] l; /* [cb] */
-  
+
   public int[][] s; /* [window][cb] */
 
   /**
index 8cc6ce767950ee4e892e8471ce2630ff807f3b77..b9b49e241bbf1945a0fa63990c0a87886f9b3286 100644 (file)
@@ -1,3 +1,3 @@
-public @interface METHODDEFAULT{
-    String value();
+public @interface METHODDEFAULT {
+  String value();
 }
index fe855401ebc5b97f090cb1655c35c7f873db6d7d..651713ca96474ecd11a18ecefbb79a59b462495c 100644 (file)
  *----------------------------------------------------------------------\r
  */\r
 \r
-\r
 /**\r
  * Work in progress.\r
  * \r
  * Manages a number of controls.\r
  */\r
-public class Manager //implements Control\r
+public class Manager // implements Control\r
 {\r
-       public void addControl(Control c)\r
-       {\r
-               \r
-       }\r
-       \r
-       public void removeControl(Control c)\r
-       {\r
-               \r
-       }\r
-       \r
-       public void removeAll()\r
-       {\r
-               \r
-       }\r
-       \r
-       // control interface delegates to a managed control\r
-       \r
+  public void addControl(Control c) {\r
+\r
+  }\r
+\r
+  public void removeControl(Control c) {\r
+\r
+  }\r
+\r
+  public void removeAll() {\r
+\r
+  }\r
+\r
+  // control interface delegates to a managed control\r
+\r
 }\r
index 8a6d8c09551d0edbef04ca9f05a4815db5b75415..ca7eaf0c4fa5f06f0ebe1ebdfa57771505579881 100644 (file)
@@ -37,7 +37,6 @@
  * Base Class for audio output.
  */
 
-
 public abstract class Obuffer {
   public static final int OBUFFERSIZE = 2 * 1152; // max. 2 * 1152 samples per
                                                   // frame
@@ -46,15 +45,15 @@ public abstract class Obuffer {
   /**
    * Takes a 16 Bit PCM sample.
    */
-  public abstract void append( int channel,  short value);
+  public abstract void append(int channel, short value);
 
   /**
    * Accepts 32 new PCM samples.
    */
-  
-  public void appendSamples( int channel,  float[] f) {
-     short s;
-    for ( int i = 0; i < 32;) {
+
+  public void appendSamples(int channel, float[] f) {
+    short s;
+    for (int i = 0; i < 32;) {
       s = clip(f[i++]);
       append(channel, s);
     }
@@ -63,10 +62,10 @@ public abstract class Obuffer {
   /**
    * Clip Sample to 16 Bits
    */
-  
-  private final short clip( float sample) {
 
-     short s = (short) sample;
+  private final short clip(float sample) {
+
+    short s = (short) sample;
 
     if (sample > 32767.0f) {
       s = (short) 32767;
@@ -81,7 +80,7 @@ public abstract class Obuffer {
   /**
    * Write the samples to the file or directly to the audio hardware.
    */
-  public abstract void write_buffer( int val);
+  public abstract void write_buffer(int val);
 
   public abstract void close();
 
index 811a4e65a250e70810a16813bc1f28f74463dbb0..056011b0065e8e57231a97d80a526faef32dc9b6 100644 (file)
@@ -27,7 +27,6 @@
  * @since 0.0.7\r
  */\r
 \r
-\r
 public class OutputChannels {\r
   /**\r
    * Flag to indicate output should include both channels.\r
@@ -54,7 +53,6 @@ public class OutputChannels {
   public static final OutputChannels BOTH = new OutputChannels(BOTH_CHANNELS);\r
   public static final OutputChannels DOWNMIX = new OutputChannels(DOWNMIX_CHANNELS);\r
 \r
-  \r
   private/* final */int outputChannels;\r
 \r
   /**\r
@@ -82,7 +80,7 @@ public class OutputChannels {
     }\r
   }\r
 \r
-  public OutputChannels( int channels) {\r
+  public OutputChannels(int channels) {\r
     outputChannels = channels;\r
 \r
     if (channels < 0 || channels > 3)\r
index f9593476afed3c26f0c10855edcb7c74c107e663..c7ef1c0f4310310a6df6c158b0cf1b68891da0ba 100644 (file)
@@ -37,7 +37,7 @@ public class Player {
   /**\r
    * The current frame number.\r
    */\r
-  \r
+\r
   private int frame = 0;\r
 \r
   /**\r
@@ -59,19 +59,17 @@ public class Player {
   /**\r
    * Has the player been closed?\r
    */\r
-  \r
+\r
   private boolean closed = false;\r
 \r
   /**\r
    * Has the player played back all frames from the stream?\r
    */\r
-  \r
+\r
   private boolean complete = false;\r
 \r
-  \r
   private int lastPosition = 0;\r
 \r
-  \r
   private long sampleNumber;\r
 \r
   /**\r
@@ -110,20 +108,19 @@ public class Player {
    * @return true if the last frame was played, or false if there are more\r
    *         frames.\r
    */\r
-  \r
-  \r
-  public boolean play( int frames) throws JavaLayerException {\r
-     boolean ret = true;\r
+\r
+  public boolean play(int frames) throws JavaLayerException {\r
+    boolean ret = true;\r
 \r
     // initialization before ssjava loop\r
-     boolean init = true;\r
-     Header h = BitstreamWrapper.readFrame();\r
+    boolean init = true;\r
+    Header h = BitstreamWrapper.readFrame();\r
     decoder.init(h);\r
 \r
     sampleNumber = 1;\r
     System.out.println("Gobble sentinel: +++");\r
 \r
-    //  int count = 0;\r
+    // int count = 0;\r
     SSJAVA: while (true) {\r
       if (h == null) {\r
         break;\r
@@ -189,9 +186,8 @@ public class Player {
    * \r
    * @return true if there are no more frames to decode, false otherwise.\r
    */\r
-  \r
-  protected boolean decodeFrame( boolean init,  Header h)\r
-      throws JavaLayerException {\r
+\r
+  protected boolean decodeFrame(boolean init, Header h) throws JavaLayerException {\r
     try {\r
       // AudioDevice out = audio;\r
       // if (out==null)\r
@@ -202,12 +198,12 @@ public class Player {
       // if (h == null){\r
       // return false;\r
       // }\r
-      \r
-      //  SampleBuffer output = (SampleBuffer) decoder.decodeFrame(h);\r
+\r
+      // SampleBuffer output = (SampleBuffer) decoder.decodeFrame(h);\r
       decoder.decodeFrame(h);\r
 \r
-//      DEBUG_OUTPUT_CHECKSUM();\r
-//       DEBUG_OUTPUT();\r
+      // DEBUG_OUTPUT_CHECKSUM();\r
+      // DEBUG_OUTPUT();\r
       // synchronized (this)\r
       // {\r
       // out = audio;\r
@@ -247,10 +243,10 @@ public class Player {
   @TRUST\r
   public void DEBUG_OUTPUT_CHECKSUM() {\r
     // eom debug\r
-     int sum = 0;\r
-     short[] outbuf = SampleBufferWrapper.getBuffer();\r
+    int sum = 0;\r
+    short[] outbuf = SampleBufferWrapper.getBuffer();\r
     // short[] outbuf = output.getBuffer();\r
-    TERMINATE: for ( int i = 0; i < SampleBufferWrapper.getBufferLength(); i++) {\r
+    TERMINATE: for (int i = 0; i < SampleBufferWrapper.getBufferLength(); i++) {\r
       // System.out.println(outbuf[i]);\r
       sum += outbuf[i];\r
     }\r
index 5e710561f7dab8f13ff2e0c5bf59f99b28ef471d..0d40115952f67265970fd2aab0d617d7e5743c90 100644 (file)
  * storage for a fixed size block of samples.
  */
 
-
 public class SampleBuffer extends Obuffer {
-  
+
   private short[] buffer;
-  
+
   private int[] bufferp;
-  
+
   private int channels;
-  
+
   private int frequency;
-  
+
   private int idx;
 
   static public long sampleNumber = 0;
@@ -46,13 +45,13 @@ public class SampleBuffer extends Obuffer {
   /**
    * Constructor
    */
-  public SampleBuffer( int sample_frequency,  int number_of_channels) {
+  public SampleBuffer(int sample_frequency, int number_of_channels) {
     buffer = new short[OBUFFERSIZE];
     bufferp = new int[MAXCHANNELS];
     channels = number_of_channels; // [IN] -> [D]
     frequency = sample_frequency; // [IN] -> [D]
 
-    for ( int i = 0; i < number_of_channels; ++i) {
+    for (int i = 0; i < number_of_channels; ++i) {
       bufferp[i] = (short) i; // LOC(bufferp[i]) has indirect flows from the
                               // location C, IN
       // also, it has a direct flow from C
@@ -81,7 +80,7 @@ public class SampleBuffer extends Obuffer {
   /**
    * Takes a 16 Bit PCM sample.
    */
-  public void append( int channel,  short value) {
+  public void append(int channel, short value) {
     buffer[bufferp[channel]] = value;
     // LOC(bufferp[channel])= [local.D,SampleBuffer.BUF]
     // so, for LHS, LOC(buffer) < LOC(bufferp[channle])
@@ -93,16 +92,15 @@ public class SampleBuffer extends Obuffer {
 
   }
 
-  
-  public void appendSamples( int channel,  float[] f) {
-     int pos = bufferp[channel];
+  public void appendSamples(int channel, float[] f) {
+    int pos = bufferp[channel];
     // LOC(bufferp[channel])=[D,SampleBuffer.BUFP]
     // LOC(pos)=[D,SampleBuffer.BUFP]
 
-     short s;
-     float fs;
+    short s;
+    float fs;
 
-    for ( int i = 0; i < 32;) {
+    for (int i = 0; i < 32;) {
       fs = f[i++]; // [IN] -> [D,BUFP]
 
       if (fs > 32767.0f) {
@@ -140,7 +138,7 @@ public class SampleBuffer extends Obuffer {
   /**
    * Write the samples to the file (Random Acces).
    */
-  public void write_buffer( int val) {
+  public void write_buffer(int val) {
 
     // for (int i = 0; i < channels; ++i)
     // bufferp[i] = (short)i;
index 5c691eb27f5d76af06c45d7636bbdc6d7a5f1187..ac0232c5bbe0ecd934ede42bd772f9783a1a33b1 100644 (file)
@@ -6,9 +6,9 @@ public class SampleBufferWrapper {
   static void init(int freq, int channels) {
     output = new SampleBuffer(freq, channels);
   }
-  
+
   @TRUST
-  static void clear_buffer(){
+  static void clear_buffer() {
     output.clear_buffer();
   }
 
index d62c4885a3d9d3a4026b6530c2348f1ba8da0727..644d14ac474f47e9c2c8dc597be8f57f41abb1e8 100644 (file)
@@ -1,11 +1,9 @@
-
-
 public class SideInfoBuffer {
 
   /**
    * The frame buffer that holds the data for the current frame.
    */
-  
+
   private final int[] framebuffer = new int[BUFFER_INT_SIZE];
 
   /**
@@ -16,36 +14,31 @@ public class SideInfoBuffer {
   /**
    * Index into <code>framebuffer</code> where the next bits are retrieved.
    */
-  
+
   private int wordpointer;
 
   /**
    * Number (0-31, from MSB to LSB) of next bit for get_bits()
    */
-  
+
   private int bitindex;
 
-  
   private int main_data_begin;
 
   public int getMain_data_begin() {
     return main_data_begin;
   }
 
-  public void setMain_data_begin( int main_data_begin) {
+  public void setMain_data_begin(int main_data_begin) {
     this.main_data_begin = main_data_begin;
   }
 
-  private static final int bitmask[] = {
-      0, // dummy
-      0x00000001, 0x00000003, 0x00000007, 0x0000000F, 0x0000001F, 0x0000003F, 0x0000007F,
-      0x000000FF, 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF, 0x00001FFF, 0x00003FFF,
-      0x00007FFF, 0x0000FFFF, 0x0001FFFF };
+  private static final int bitmask[] = { 0, // dummy
+  0x00000001, 0x00000003, 0x00000007, 0x0000000F, 0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF, 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF, 0x00001FFF, 0x00003FFF, 0x00007FFF, 0x0000FFFF, 0x0001FFFF };
 
-  
-  public int get_bits( int number_of_bits) {
-     int returnvalue = 0;
-     int sum = bitindex + number_of_bits;
+  public int get_bits(int number_of_bits) {
+    int returnvalue = 0;
+    int sum = bitindex + number_of_bits;
     // System.out.println("bitindex=" + bitindex + " wordpointer="
     // + wordpointer);
     // E.B
@@ -70,9 +63,9 @@ public class SideInfoBuffer {
     // ((short[])&returnvalue)[0] = ((short[])wordpointer + 1)[0];
     // wordpointer++; // Added by me!
     // ((short[])&returnvalue + 1)[0] = ((short[])wordpointer)[0];
-     int Right = (framebuffer[wordpointer] & 0x0000FFFF);
+    int Right = (framebuffer[wordpointer] & 0x0000FFFF);
     wordpointer++;
-     int Left = (framebuffer[wordpointer] & 0xFFFF0000);
+    int Left = (framebuffer[wordpointer] & 0xFFFF0000);
     returnvalue = ((Right << 16) & 0xFFFF0000) | ((Left >>> 16) & 0x0000FFFF);
 
     returnvalue >>>= 48 - sum; // returnvalue >>= 16 - (number_of_bits - (32
index ad2f0c91856c10882db820ec2d75e98f9452fb89..ce8874b27d2d4dda5ada443c2fd74f529530e9cb 100644 (file)
  *----------------------------------------------------------------------\r
  */\r
 \r
-\r
 import java.io.IOException;\r
 \r
 /**\r
  * Work in progress.\r
  * \r
- * Class to describe a seekable data source. \r
- *  \r
+ * Class to describe a seekable data source.\r
+ * \r
  */\r
-public interface Source\r
-{\r
-       \r
-       public static final long        LENGTH_UNKNOWN = -1;\r
-       \r
-       public int read(byte[] b, int offs, int len)\r
-               throws IOException;\r
-       \r
-       \r
-       public boolean  willReadBlock();\r
-                       \r
-       public boolean  isSeekable();\r
-               \r
-       public long             length();\r
-       \r
-       public long             tell();\r
-       \r
-       public long             seek(long pos);\r
-       \r
+public interface Source {\r
+\r
+  public static final long LENGTH_UNKNOWN = -1;\r
+\r
+  public int read(byte[] b, int offs, int len) throws IOException;\r
+\r
+  public boolean willReadBlock();\r
+\r
+  public boolean isSeekable();\r
+\r
+  public long length();\r
+\r
+  public long tell();\r
+\r
+  public long seek(long pos);\r
+\r
 }\r
index cadd0af344cf3a1a0262687e62493ea028f10ead..56f68fde524f80fc5b2c8e04b30018e7cbf811c3 100644 (file)
@@ -4,41 +4,24 @@
  * Abstract base class for subband classes of layer I and II
  */
 
-
 static abstract class Subband {
   /*
    * Changes from version 1.1 to 1.2: - array size increased by one, although a
    * scalefactor with index 63 is illegal (to prevent segmentation faults)
    */
   // Scalefactors for layer I and II, Annex 3-B.1 in ISO/IEC DIS 11172:
-  public static final float scalefactors[] = { 2.00000000000000f, 1.58740105196820f,
-      1.25992104989487f, 1.00000000000000f, 0.79370052598410f, 0.62996052494744f,
-      0.50000000000000f, 0.39685026299205f, 0.31498026247372f, 0.25000000000000f,
-      0.19842513149602f, 0.15749013123686f, 0.12500000000000f, 0.09921256574801f,
-      0.07874506561843f, 0.06250000000000f, 0.04960628287401f, 0.03937253280921f,
-      0.03125000000000f, 0.02480314143700f, 0.01968626640461f, 0.01562500000000f,
-      0.01240157071850f, 0.00984313320230f, 0.00781250000000f, 0.00620078535925f,
-      0.00492156660115f, 0.00390625000000f, 0.00310039267963f, 0.00246078330058f,
-      0.00195312500000f, 0.00155019633981f, 0.00123039165029f, 0.00097656250000f,
-      0.00077509816991f, 0.00061519582514f, 0.00048828125000f, 0.00038754908495f,
-      0.00030759791257f, 0.00024414062500f, 0.00019377454248f, 0.00015379895629f,
-      0.00012207031250f, 0.00009688727124f, 0.00007689947814f, 0.00006103515625f,
-      0.00004844363562f, 0.00003844973907f, 0.00003051757813f, 0.00002422181781f,
-      0.00001922486954f, 0.00001525878906f, 0.00001211090890f, 0.00000961243477f,
-      0.00000762939453f, 0.00000605545445f, 0.00000480621738f, 0.00000381469727f,
-      0.00000302772723f, 0.00000240310869f, 0.00000190734863f, 0.00000151386361f,
-      0.00000120155435f, 0.00000000000000f /* illegal scalefactor */
+  public static final float scalefactors[] = { 2.00000000000000f, 1.58740105196820f, 1.25992104989487f, 1.00000000000000f, 0.79370052598410f, 0.62996052494744f, 0.50000000000000f, 0.39685026299205f, 0.31498026247372f, 0.25000000000000f, 0.19842513149602f, 0.15749013123686f, 0.12500000000000f, 0.09921256574801f, 0.07874506561843f, 0.06250000000000f, 0.04960628287401f, 0.03937253280921f, 0.03125000000000f, 0.02480314143700f, 0.01968626640461f, 0.01562500000000f, 0.01240157071850f, 0.00984313320230f, 0.00781250000000f, 0.00620078535925f, 0.00492156660115f, 0.00390625000000f, 0.00310039267963f, 0.00246078330058f, 0.00195312500000f, 0.00155019633981f, 0.00123039165029f, 0.00097656250000f, 0.00077509816991f, 0.00061519582514f, 0.00048828125000f, 0.00038754908495f, 0.00030759791257f, 0.00024414062500f, 0.00019377454248f, 0.00015379895629f, 0.00012207031250f, 0.00009688727124f, 0.00007689947814f, 0.00006103515625f, 0.00004844363562f, 0.00003844973907f, 0.00003051757813f, 0.00002422181781f, 0.00001922486954f, 0.00001525878906f, 0.00001211090890f, 0.00000961243477f, 0.00000762939453f, 0.00000605545445f, 0.00000480621738f, 0.00000381469727f, 0.00000302772723f, 0.00000240310869f, 0.00000190734863f, 0.00000151386361f, 0.00000120155435f, 0.00000000000000f /*
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               * illegal
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               * scalefactor
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               */
   };
 
-  public abstract void read_allocation( Bitstream stream,  Header header,
-       Crc16 crc) throws DecoderException;
+  public abstract void read_allocation(Bitstream stream, Header header, Crc16 crc)
+      throws DecoderException;
 
-  public abstract void read_scalefactor( Bitstream stream,  Header header);
+  public abstract void read_scalefactor(Bitstream stream, Header header);
 
-  
-  public abstract boolean read_sampledata( Bitstream stream);
+  public abstract boolean read_sampledata(Bitstream stream);
 
-  
-  public abstract boolean put_next_sample( int channels,
-       SynthesisFilter filter1,  SynthesisFilter filter2);
+  public abstract boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2);
 };
index 6641d730526b7d2ad31f889055915753cd0dbcab..aa5c6ae15226b1bae887189f4ce7a293bfa73790 100644 (file)
  * are removed by ignoring higher subbands.\r
  */\r
 \r
-\r
 final class SynthesisFilter {\r
 \r
-  \r
   public int vidx;\r
-  \r
+\r
   public float[] v1;\r
-  \r
+\r
   public float[] v2;\r
 \r
-  \r
   public float[] prev1;\r
-  \r
+\r
   public float[] prev2;\r
 \r
   // private float[] actual_v; // v1 or v2\r
-  \r
+\r
   public int actual_write_pos; // 0-15\r
-  \r
+\r
   private float[] samples; // 32 new subband samples\r
-  \r
+\r
   public final int channel;\r
-  \r
+\r
   public final float scalefactor;\r
-  \r
+\r
   private float[] eq;\r
 \r
   /**\r
@@ -129,50 +126,50 @@ final class SynthesisFilter {
   /**\r
    * Inject Sample.\r
    */\r
-  public void input_sample( float sample,  int subbandnumber) {\r
+  public void input_sample(float sample, int subbandnumber) {\r
     samples[subbandnumber] = eq[subbandnumber] * sample;\r
   }\r
 \r
-  public void input_samples( float[] s) {\r
-    TERMINATE: for ( int i = 31; i >= 0; i--) {\r
+  public void input_samples(float[] s) {\r
+    TERMINATE: for (int i = 31; i >= 0; i--) {\r
       samples[i] = s[i] * eq[i];\r
     }\r
   }\r
 \r
   private void compute_new_v2_v1() {\r
 \r
-     float new_v0 = 0.0f;\r
-     float new_v1 = 0.0f;\r
-     float new_v2 = 0.0f;\r
-     float new_v3 = 0.0f;\r
-     float new_v4 = 0.0f;\r
-     float new_v5 = 0.0f;\r
-     float new_v6 = 0.0f;\r
-     float new_v7 = 0.0f;\r
-     float new_v8 = 0.0f;\r
-     float new_v9 = 0.0f;\r
-     float new_v10 = 0.0f;\r
-     float new_v11 = 0.0f;\r
-     float new_v12 = 0.0f;\r
-     float new_v13 = 0.0f;\r
-     float new_v14 = 0.0f;\r
-     float new_v15 = 0.0f;\r
-     float new_v16 = 0.0f;\r
-     float new_v17 = 0.0f;\r
-     float new_v18 = 0.0f;\r
-     float new_v19 = 0.0f;\r
-     float new_v20 = 0.0f;\r
-     float new_v21 = 0.0f;\r
-     float new_v22 = 0.0f;\r
-     float new_v23 = 0.0f;\r
-     float new_v24 = 0.0f;\r
-     float new_v25 = 0.0f;\r
-     float new_v26 = 0.0f;\r
-     float new_v27 = 0.0f;\r
-     float new_v28 = 0.0f;\r
-     float new_v29 = 0.0f;\r
-     float new_v30 = 0.0f;\r
-     float new_v31 = 0.0f;\r
+    float new_v0 = 0.0f;\r
+    float new_v1 = 0.0f;\r
+    float new_v2 = 0.0f;\r
+    float new_v3 = 0.0f;\r
+    float new_v4 = 0.0f;\r
+    float new_v5 = 0.0f;\r
+    float new_v6 = 0.0f;\r
+    float new_v7 = 0.0f;\r
+    float new_v8 = 0.0f;\r
+    float new_v9 = 0.0f;\r
+    float new_v10 = 0.0f;\r
+    float new_v11 = 0.0f;\r
+    float new_v12 = 0.0f;\r
+    float new_v13 = 0.0f;\r
+    float new_v14 = 0.0f;\r
+    float new_v15 = 0.0f;\r
+    float new_v16 = 0.0f;\r
+    float new_v17 = 0.0f;\r
+    float new_v18 = 0.0f;\r
+    float new_v19 = 0.0f;\r
+    float new_v20 = 0.0f;\r
+    float new_v21 = 0.0f;\r
+    float new_v22 = 0.0f;\r
+    float new_v23 = 0.0f;\r
+    float new_v24 = 0.0f;\r
+    float new_v25 = 0.0f;\r
+    float new_v26 = 0.0f;\r
+    float new_v27 = 0.0f;\r
+    float new_v28 = 0.0f;\r
+    float new_v29 = 0.0f;\r
+    float new_v30 = 0.0f;\r
+    float new_v31 = 0.0f;\r
 \r
     // float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure\r
     // 3-A.2 in ISO DIS 11172-3\r
@@ -181,72 +178,72 @@ final class SynthesisFilter {
 \r
     // float[] s = samples;\r
 \r
-     float s0 = samples[0];\r
-     float s1 = samples[1];\r
-     float s2 = samples[2];\r
-     float s3 = samples[3];\r
-     float s4 = samples[4];\r
-     float s5 = samples[5];\r
-     float s6 = samples[6];\r
-     float s7 = samples[7];\r
-     float s8 = samples[8];\r
-     float s9 = samples[9];\r
-     float s10 = samples[10];\r
-     float s11 = samples[11];\r
-     float s12 = samples[12];\r
-     float s13 = samples[13];\r
-     float s14 = samples[14];\r
-     float s15 = samples[15];\r
-     float s16 = samples[16];\r
-     float s17 = samples[17];\r
-     float s18 = samples[18];\r
-     float s19 = samples[19];\r
-     float s20 = samples[20];\r
-     float s21 = samples[21];\r
-     float s22 = samples[22];\r
-     float s23 = samples[23];\r
-     float s24 = samples[24];\r
-     float s25 = samples[25];\r
-     float s26 = samples[26];\r
-     float s27 = samples[27];\r
-     float s28 = samples[28];\r
-     float s29 = samples[29];\r
-     float s30 = samples[30];\r
-     float s31 = samples[31];\r
-\r
-     float p0 = s0 + s31;\r
-     float p1 = s1 + s30;\r
-     float p2 = s2 + s29;\r
-     float p3 = s3 + s28;\r
-     float p4 = s4 + s27;\r
-     float p5 = s5 + s26;\r
-     float p6 = s6 + s25;\r
-     float p7 = s7 + s24;\r
-     float p8 = s8 + s23;\r
-     float p9 = s9 + s22;\r
-     float p10 = s10 + s21;\r
-     float p11 = s11 + s20;\r
-     float p12 = s12 + s19;\r
-     float p13 = s13 + s18;\r
-     float p14 = s14 + s17;\r
-     float p15 = s15 + s16;\r
-\r
-     float pp0 = p0 + p15;\r
-     float pp1 = p1 + p14;\r
-     float pp2 = p2 + p13;\r
-     float pp3 = p3 + p12;\r
-     float pp4 = p4 + p11;\r
-     float pp5 = p5 + p10;\r
-     float pp6 = p6 + p9;\r
-     float pp7 = p7 + p8;\r
-     float pp8 = (p0 - p15) * cos1_32;\r
-     float pp9 = (p1 - p14) * cos3_32;\r
-     float pp10 = (p2 - p13) * cos5_32;\r
-     float pp11 = (p3 - p12) * cos7_32;\r
-     float pp12 = (p4 - p11) * cos9_32;\r
-     float pp13 = (p5 - p10) * cos11_32;\r
-     float pp14 = (p6 - p9) * cos13_32;\r
-     float pp15 = (p7 - p8) * cos15_32;\r
+    float s0 = samples[0];\r
+    float s1 = samples[1];\r
+    float s2 = samples[2];\r
+    float s3 = samples[3];\r
+    float s4 = samples[4];\r
+    float s5 = samples[5];\r
+    float s6 = samples[6];\r
+    float s7 = samples[7];\r
+    float s8 = samples[8];\r
+    float s9 = samples[9];\r
+    float s10 = samples[10];\r
+    float s11 = samples[11];\r
+    float s12 = samples[12];\r
+    float s13 = samples[13];\r
+    float s14 = samples[14];\r
+    float s15 = samples[15];\r
+    float s16 = samples[16];\r
+    float s17 = samples[17];\r
+    float s18 = samples[18];\r
+    float s19 = samples[19];\r
+    float s20 = samples[20];\r
+    float s21 = samples[21];\r
+    float s22 = samples[22];\r
+    float s23 = samples[23];\r
+    float s24 = samples[24];\r
+    float s25 = samples[25];\r
+    float s26 = samples[26];\r
+    float s27 = samples[27];\r
+    float s28 = samples[28];\r
+    float s29 = samples[29];\r
+    float s30 = samples[30];\r
+    float s31 = samples[31];\r
+\r
+    float p0 = s0 + s31;\r
+    float p1 = s1 + s30;\r
+    float p2 = s2 + s29;\r
+    float p3 = s3 + s28;\r
+    float p4 = s4 + s27;\r
+    float p5 = s5 + s26;\r
+    float p6 = s6 + s25;\r
+    float p7 = s7 + s24;\r
+    float p8 = s8 + s23;\r
+    float p9 = s9 + s22;\r
+    float p10 = s10 + s21;\r
+    float p11 = s11 + s20;\r
+    float p12 = s12 + s19;\r
+    float p13 = s13 + s18;\r
+    float p14 = s14 + s17;\r
+    float p15 = s15 + s16;\r
+\r
+    float pp0 = p0 + p15;\r
+    float pp1 = p1 + p14;\r
+    float pp2 = p2 + p13;\r
+    float pp3 = p3 + p12;\r
+    float pp4 = p4 + p11;\r
+    float pp5 = p5 + p10;\r
+    float pp6 = p6 + p9;\r
+    float pp7 = p7 + p8;\r
+    float pp8 = (p0 - p15) * cos1_32;\r
+    float pp9 = (p1 - p14) * cos3_32;\r
+    float pp10 = (p2 - p13) * cos5_32;\r
+    float pp11 = (p3 - p12) * cos7_32;\r
+    float pp12 = (p4 - p11) * cos9_32;\r
+    float pp13 = (p5 - p10) * cos11_32;\r
+    float pp14 = (p6 - p9) * cos13_32;\r
+    float pp15 = (p7 - p8) * cos15_32;\r
 \r
     p0 = pp0 + pp7;\r
     p1 = pp1 + pp6;\r
@@ -300,7 +297,7 @@ final class SynthesisFilter {
     p15 = (pp14 - pp15) * cos1_4;\r
 \r
     // this is pretty insane coding\r
-     float tmp1;\r
+    float tmp1;\r
     new_v19/* 36-17 */= -(new_v4 = (new_v12 = p7) + p5) - p6;\r
     new_v27/* 44-17 */= -p6 - p7 - p4;\r
     new_v6 = (new_v10 = (new_v14 = p15) + p11) + p13;\r
@@ -399,7 +396,7 @@ final class SynthesisFilter {
 \r
     // manually doing something that a compiler should handle sucks\r
     // coding like this is hard to read\r
-     float tmp2;\r
+    float tmp2;\r
     new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11) + p5 + p13;\r
     new_v7 = (new_v9 = p15 + p11 + p3) + p13;\r
     new_v16/* 33-17 */= -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14;\r
@@ -416,7 +413,7 @@ final class SynthesisFilter {
     // float[] x2 = actual_v + actual_write_pos;\r
     // float dest[] = actual_v; v2\r
 \r
-     int pos = actual_write_pos;\r
+    int pos = actual_write_pos;\r
 \r
     v2[0 + pos] = new_v0;\r
     v2[16 + pos] = new_v1;\r
@@ -577,38 +574,38 @@ final class SynthesisFilter {
 \r
   private void compute_new_v1_v2() {\r
 \r
-     float new_v0 = 0.0f;\r
-     float new_v1 = 0.0f;\r
-     float new_v2 = 0.0f;\r
-     float new_v3 = 0.0f;\r
-     float new_v4 = 0.0f;\r
-     float new_v5 = 0.0f;\r
-     float new_v6 = 0.0f;\r
-     float new_v7 = 0.0f;\r
-     float new_v8 = 0.0f;\r
-     float new_v9 = 0.0f;\r
-     float new_v10 = 0.0f;\r
-     float new_v11 = 0.0f;\r
-     float new_v12 = 0.0f;\r
-     float new_v13 = 0.0f;\r
-     float new_v14 = 0.0f;\r
-     float new_v15 = 0.0f;\r
-     float new_v16 = 0.0f;\r
-     float new_v17 = 0.0f;\r
-     float new_v18 = 0.0f;\r
-     float new_v19 = 0.0f;\r
-     float new_v20 = 0.0f;\r
-     float new_v21 = 0.0f;\r
-     float new_v22 = 0.0f;\r
-     float new_v23 = 0.0f;\r
-     float new_v24 = 0.0f;\r
-     float new_v25 = 0.0f;\r
-     float new_v26 = 0.0f;\r
-     float new_v27 = 0.0f;\r
-     float new_v28 = 0.0f;\r
-     float new_v29 = 0.0f;\r
-     float new_v30 = 0.0f;\r
-     float new_v31 = 0.0f;\r
+    float new_v0 = 0.0f;\r
+    float new_v1 = 0.0f;\r
+    float new_v2 = 0.0f;\r
+    float new_v3 = 0.0f;\r
+    float new_v4 = 0.0f;\r
+    float new_v5 = 0.0f;\r
+    float new_v6 = 0.0f;\r
+    float new_v7 = 0.0f;\r
+    float new_v8 = 0.0f;\r
+    float new_v9 = 0.0f;\r
+    float new_v10 = 0.0f;\r
+    float new_v11 = 0.0f;\r
+    float new_v12 = 0.0f;\r
+    float new_v13 = 0.0f;\r
+    float new_v14 = 0.0f;\r
+    float new_v15 = 0.0f;\r
+    float new_v16 = 0.0f;\r
+    float new_v17 = 0.0f;\r
+    float new_v18 = 0.0f;\r
+    float new_v19 = 0.0f;\r
+    float new_v20 = 0.0f;\r
+    float new_v21 = 0.0f;\r
+    float new_v22 = 0.0f;\r
+    float new_v23 = 0.0f;\r
+    float new_v24 = 0.0f;\r
+    float new_v25 = 0.0f;\r
+    float new_v26 = 0.0f;\r
+    float new_v27 = 0.0f;\r
+    float new_v28 = 0.0f;\r
+    float new_v29 = 0.0f;\r
+    float new_v30 = 0.0f;\r
+    float new_v31 = 0.0f;\r
 \r
     // float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure\r
     // 3-A.2 in ISO DIS 11172-3\r
@@ -617,72 +614,72 @@ final class SynthesisFilter {
 \r
     // float[] s = samples;\r
 \r
-     float s0 = samples[0];\r
-     float s1 = samples[1];\r
-     float s2 = samples[2];\r
-     float s3 = samples[3];\r
-     float s4 = samples[4];\r
-     float s5 = samples[5];\r
-     float s6 = samples[6];\r
-     float s7 = samples[7];\r
-     float s8 = samples[8];\r
-     float s9 = samples[9];\r
-     float s10 = samples[10];\r
-     float s11 = samples[11];\r
-     float s12 = samples[12];\r
-     float s13 = samples[13];\r
-     float s14 = samples[14];\r
-     float s15 = samples[15];\r
-     float s16 = samples[16];\r
-     float s17 = samples[17];\r
-     float s18 = samples[18];\r
-     float s19 = samples[19];\r
-     float s20 = samples[20];\r
-     float s21 = samples[21];\r
-     float s22 = samples[22];\r
-     float s23 = samples[23];\r
-     float s24 = samples[24];\r
-     float s25 = samples[25];\r
-     float s26 = samples[26];\r
-     float s27 = samples[27];\r
-     float s28 = samples[28];\r
-     float s29 = samples[29];\r
-     float s30 = samples[30];\r
-     float s31 = samples[31];\r
-\r
-     float p0 = s0 + s31;\r
-     float p1 = s1 + s30;\r
-     float p2 = s2 + s29;\r
-     float p3 = s3 + s28;\r
-     float p4 = s4 + s27;\r
-     float p5 = s5 + s26;\r
-     float p6 = s6 + s25;\r
-     float p7 = s7 + s24;\r
-     float p8 = s8 + s23;\r
-     float p9 = s9 + s22;\r
-     float p10 = s10 + s21;\r
-     float p11 = s11 + s20;\r
-     float p12 = s12 + s19;\r
-     float p13 = s13 + s18;\r
-     float p14 = s14 + s17;\r
-     float p15 = s15 + s16;\r
-\r
-     float pp0 = p0 + p15;\r
-     float pp1 = p1 + p14;\r
-     float pp2 = p2 + p13;\r
-     float pp3 = p3 + p12;\r
-     float pp4 = p4 + p11;\r
-     float pp5 = p5 + p10;\r
-     float pp6 = p6 + p9;\r
-     float pp7 = p7 + p8;\r
-     float pp8 = (p0 - p15) * cos1_32;\r
-     float pp9 = (p1 - p14) * cos3_32;\r
-     float pp10 = (p2 - p13) * cos5_32;\r
-     float pp11 = (p3 - p12) * cos7_32;\r
-     float pp12 = (p4 - p11) * cos9_32;\r
-     float pp13 = (p5 - p10) * cos11_32;\r
-     float pp14 = (p6 - p9) * cos13_32;\r
-     float pp15 = (p7 - p8) * cos15_32;\r
+    float s0 = samples[0];\r
+    float s1 = samples[1];\r
+    float s2 = samples[2];\r
+    float s3 = samples[3];\r
+    float s4 = samples[4];\r
+    float s5 = samples[5];\r
+    float s6 = samples[6];\r
+    float s7 = samples[7];\r
+    float s8 = samples[8];\r
+    float s9 = samples[9];\r
+    float s10 = samples[10];\r
+    float s11 = samples[11];\r
+    float s12 = samples[12];\r
+    float s13 = samples[13];\r
+    float s14 = samples[14];\r
+    float s15 = samples[15];\r
+    float s16 = samples[16];\r
+    float s17 = samples[17];\r
+    float s18 = samples[18];\r
+    float s19 = samples[19];\r
+    float s20 = samples[20];\r
+    float s21 = samples[21];\r
+    float s22 = samples[22];\r
+    float s23 = samples[23];\r
+    float s24 = samples[24];\r
+    float s25 = samples[25];\r
+    float s26 = samples[26];\r
+    float s27 = samples[27];\r
+    float s28 = samples[28];\r
+    float s29 = samples[29];\r
+    float s30 = samples[30];\r
+    float s31 = samples[31];\r
+\r
+    float p0 = s0 + s31;\r
+    float p1 = s1 + s30;\r
+    float p2 = s2 + s29;\r
+    float p3 = s3 + s28;\r
+    float p4 = s4 + s27;\r
+    float p5 = s5 + s26;\r
+    float p6 = s6 + s25;\r
+    float p7 = s7 + s24;\r
+    float p8 = s8 + s23;\r
+    float p9 = s9 + s22;\r
+    float p10 = s10 + s21;\r
+    float p11 = s11 + s20;\r
+    float p12 = s12 + s19;\r
+    float p13 = s13 + s18;\r
+    float p14 = s14 + s17;\r
+    float p15 = s15 + s16;\r
+\r
+    float pp0 = p0 + p15;\r
+    float pp1 = p1 + p14;\r
+    float pp2 = p2 + p13;\r
+    float pp3 = p3 + p12;\r
+    float pp4 = p4 + p11;\r
+    float pp5 = p5 + p10;\r
+    float pp6 = p6 + p9;\r
+    float pp7 = p7 + p8;\r
+    float pp8 = (p0 - p15) * cos1_32;\r
+    float pp9 = (p1 - p14) * cos3_32;\r
+    float pp10 = (p2 - p13) * cos5_32;\r
+    float pp11 = (p3 - p12) * cos7_32;\r
+    float pp12 = (p4 - p11) * cos9_32;\r
+    float pp13 = (p5 - p10) * cos11_32;\r
+    float pp14 = (p6 - p9) * cos13_32;\r
+    float pp15 = (p7 - p8) * cos15_32;\r
 \r
     p0 = pp0 + pp7;\r
     p1 = pp1 + pp6;\r
@@ -736,7 +733,7 @@ final class SynthesisFilter {
     p15 = (pp14 - pp15) * cos1_4;\r
 \r
     // this is pretty insane coding\r
-     float tmp1;\r
+    float tmp1;\r
     new_v19/* 36-17 */= -(new_v4 = (new_v12 = p7) + p5) - p6;\r
     new_v27/* 44-17 */= -p6 - p7 - p4;\r
     new_v6 = (new_v10 = (new_v14 = p15) + p11) + p13;\r
@@ -835,7 +832,7 @@ final class SynthesisFilter {
 \r
     // manually doing something that a compiler should handle sucks\r
     // coding like this is hard to read\r
-     float tmp2;\r
+    float tmp2;\r
     new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11) + p5 + p13;\r
     new_v7 = (new_v9 = p15 + p11 + p3) + p13;\r
     new_v16/* 33-17 */= -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14;\r
@@ -852,7 +849,7 @@ final class SynthesisFilter {
     // float[] x2 = actual_v + actual_write_pos;\r
     // float dest[] = actual_v; actual_v=v1;\r
 \r
-     int pos = actual_write_pos;\r
+    int pos = actual_write_pos;\r
 \r
     v1[0 + pos] = new_v0;\r
     v1[16 + pos] = new_v1;\r
@@ -1015,7 +1012,6 @@ final class SynthesisFilter {
    * Compute PCM Samples.\r
    */\r
 \r
-  \r
   private float[] _tmpOut = new float[32];\r
 \r
   private void compute_pcm_samples0() {\r
@@ -1024,21 +1020,13 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
-         float pcm_sample;\r
+      for (int i = 0; i < 32; i++) {\r
+        float pcm_sample;\r
         // final float[] dp = d16[i];\r
-        pcm_sample =\r
-            (float) (((v1[0 + dvp] * d16[i][0]) + (v1[15 + dvp] * d16[i][1])\r
-                + (v1[14 + dvp] * d16[i][2]) + (v1[13 + dvp] * d16[i][3])\r
-                + (v1[12 + dvp] * d16[i][4]) + (v1[11 + dvp] * d16[i][5])\r
-                + (v1[10 + dvp] * d16[i][6]) + (v1[9 + dvp] * d16[i][7])\r
-                + (v1[8 + dvp] * d16[i][8]) + (v1[7 + dvp] * d16[i][9])\r
-                + (v1[6 + dvp] * d16[i][10]) + (v1[5 + dvp] * d16[i][11])\r
-                + (v1[4 + dvp] * d16[i][12]) + (v1[3 + dvp] * d16[i][13])\r
-                + (v1[2 + dvp] * d16[i][14]) + (v1[1 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[0 + dvp] * d16[i][0]) + (v1[15 + dvp] * d16[i][1]) + (v1[14 + dvp] * d16[i][2]) + (v1[13 + dvp] * d16[i][3]) + (v1[12 + dvp] * d16[i][4]) + (v1[11 + dvp] * d16[i][5]) + (v1[10 + dvp] * d16[i][6]) + (v1[9 + dvp] * d16[i][7]) + (v1[8 + dvp] * d16[i][8]) + (v1[7 + dvp] * d16[i][9]) + (v1[6 + dvp] * d16[i][10]) + (v1[5 + dvp] * d16[i][11]) + (v1[4 + dvp] * d16[i][12]) + (v1[3 + dvp] * d16[i][13]) + (v1[2 + dvp] * d16[i][14]) + (v1[1 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1048,21 +1036,13 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
-         float pcm_sample;\r
+      for (int i = 0; i < 32; i++) {\r
+        float pcm_sample;\r
         // final float[] dp = d16[i];\r
-        pcm_sample =\r
-            (float) (((v2[0 + dvp] * d16[i][0]) + (v2[15 + dvp] * d16[i][1])\r
-                + (v2[14 + dvp] * d16[i][2]) + (v2[13 + dvp] * d16[i][3])\r
-                + (v2[12 + dvp] * d16[i][4]) + (v2[11 + dvp] * d16[i][5])\r
-                + (v2[10 + dvp] * d16[i][6]) + (v2[9 + dvp] * d16[i][7])\r
-                + (v2[8 + dvp] * d16[i][8]) + (v2[7 + dvp] * d16[i][9])\r
-                + (v2[6 + dvp] * d16[i][10]) + (v2[5 + dvp] * d16[i][11])\r
-                + (v2[4 + dvp] * d16[i][12]) + (v2[3 + dvp] * d16[i][13])\r
-                + (v2[2 + dvp] * d16[i][14]) + (v2[1 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[0 + dvp] * d16[i][0]) + (v2[15 + dvp] * d16[i][1]) + (v2[14 + dvp] * d16[i][2]) + (v2[13 + dvp] * d16[i][3]) + (v2[12 + dvp] * d16[i][4]) + (v2[11 + dvp] * d16[i][5]) + (v2[10 + dvp] * d16[i][6]) + (v2[9 + dvp] * d16[i][7]) + (v2[8 + dvp] * d16[i][8]) + (v2[7 + dvp] * d16[i][9]) + (v2[6 + dvp] * d16[i][10]) + (v2[5 + dvp] * d16[i][11]) + (v2[4 + dvp] * d16[i][12]) + (v2[3 + dvp] * d16[i][13]) + (v2[2 + dvp] * d16[i][14]) + (v2[1 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1078,22 +1058,14 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
-\r
-        pcm_sample =\r
-            (float) (((v1[1 + dvp] * d16[i][0]) + (v1[0 + dvp] * d16[i][1])\r
-                + (v1[15 + dvp] * d16[i][2]) + (v1[14 + dvp] * d16[i][3])\r
-                + (v1[13 + dvp] * d16[i][4]) + (v1[12 + dvp] * d16[i][5])\r
-                + (v1[11 + dvp] * d16[i][6]) + (v1[10 + dvp] * d16[i][7])\r
-                + (v1[9 + dvp] * d16[i][8]) + (v1[8 + dvp] * d16[i][9])\r
-                + (v1[7 + dvp] * d16[i][10]) + (v1[6 + dvp] * d16[i][11])\r
-                + (v1[5 + dvp] * d16[i][12]) + (v1[4 + dvp] * d16[i][13])\r
-                + (v1[3 + dvp] * d16[i][14]) + (v1[2 + dvp] * d16[i][15])) * scalefactor);\r
+        float pcm_sample;\r
+\r
+        pcm_sample = (float) (((v1[1 + dvp] * d16[i][0]) + (v1[0 + dvp] * d16[i][1]) + (v1[15 + dvp] * d16[i][2]) + (v1[14 + dvp] * d16[i][3]) + (v1[13 + dvp] * d16[i][4]) + (v1[12 + dvp] * d16[i][5]) + (v1[11 + dvp] * d16[i][6]) + (v1[10 + dvp] * d16[i][7]) + (v1[9 + dvp] * d16[i][8]) + (v1[8 + dvp] * d16[i][9]) + (v1[7 + dvp] * d16[i][10]) + (v1[6 + dvp] * d16[i][11]) + (v1[5 + dvp] * d16[i][12]) + (v1[4 + dvp] * d16[i][13]) + (v1[3 + dvp] * d16[i][14]) + (v1[2 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1103,22 +1075,14 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
-\r
-        pcm_sample =\r
-            (float) (((v2[1 + dvp] * d16[i][0]) + (v2[0 + dvp] * d16[i][1])\r
-                + (v2[15 + dvp] * d16[i][2]) + (v2[14 + dvp] * d16[i][3])\r
-                + (v2[13 + dvp] * d16[i][4]) + (v2[12 + dvp] * d16[i][5])\r
-                + (v2[11 + dvp] * d16[i][6]) + (v2[10 + dvp] * d16[i][7])\r
-                + (v2[9 + dvp] * d16[i][8]) + (v2[8 + dvp] * d16[i][9])\r
-                + (v2[7 + dvp] * d16[i][10]) + (v2[6 + dvp] * d16[i][11])\r
-                + (v2[5 + dvp] * d16[i][12]) + (v2[4 + dvp] * d16[i][13])\r
-                + (v2[3 + dvp] * d16[i][14]) + (v2[2 + dvp] * d16[i][15])) * scalefactor);\r
+        float pcm_sample;\r
+\r
+        pcm_sample = (float) (((v2[1 + dvp] * d16[i][0]) + (v2[0 + dvp] * d16[i][1]) + (v2[15 + dvp] * d16[i][2]) + (v2[14 + dvp] * d16[i][3]) + (v2[13 + dvp] * d16[i][4]) + (v2[12 + dvp] * d16[i][5]) + (v2[11 + dvp] * d16[i][6]) + (v2[10 + dvp] * d16[i][7]) + (v2[9 + dvp] * d16[i][8]) + (v2[8 + dvp] * d16[i][9]) + (v2[7 + dvp] * d16[i][10]) + (v2[6 + dvp] * d16[i][11]) + (v2[5 + dvp] * d16[i][12]) + (v2[4 + dvp] * d16[i][13]) + (v2[3 + dvp] * d16[i][14]) + (v2[2 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1134,22 +1098,14 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
-\r
-        pcm_sample =\r
-            (float) (((v1[2 + dvp] * d16[i][0]) + (v1[1 + dvp] * d16[i][1])\r
-                + (v1[0 + dvp] * d16[i][2]) + (v1[15 + dvp] * d16[i][3])\r
-                + (v1[14 + dvp] * d16[i][4]) + (v1[13 + dvp] * d16[i][5])\r
-                + (v1[12 + dvp] * d16[i][6]) + (v1[11 + dvp] * d16[i][7])\r
-                + (v1[10 + dvp] * d16[i][8]) + (v1[9 + dvp] * d16[i][9])\r
-                + (v1[8 + dvp] * d16[i][10]) + (v1[7 + dvp] * d16[i][11])\r
-                + (v1[6 + dvp] * d16[i][12]) + (v1[5 + dvp] * d16[i][13])\r
-                + (v1[4 + dvp] * d16[i][14]) + (v1[3 + dvp] * d16[i][15])) * scalefactor);\r
+        float pcm_sample;\r
+\r
+        pcm_sample = (float) (((v1[2 + dvp] * d16[i][0]) + (v1[1 + dvp] * d16[i][1]) + (v1[0 + dvp] * d16[i][2]) + (v1[15 + dvp] * d16[i][3]) + (v1[14 + dvp] * d16[i][4]) + (v1[13 + dvp] * d16[i][5]) + (v1[12 + dvp] * d16[i][6]) + (v1[11 + dvp] * d16[i][7]) + (v1[10 + dvp] * d16[i][8]) + (v1[9 + dvp] * d16[i][9]) + (v1[8 + dvp] * d16[i][10]) + (v1[7 + dvp] * d16[i][11]) + (v1[6 + dvp] * d16[i][12]) + (v1[5 + dvp] * d16[i][13]) + (v1[4 + dvp] * d16[i][14]) + (v1[3 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1159,22 +1115,14 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
-\r
-        pcm_sample =\r
-            (float) (((v2[2 + dvp] * d16[i][0]) + (v2[1 + dvp] * d16[i][1])\r
-                + (v2[0 + dvp] * d16[i][2]) + (v2[15 + dvp] * d16[i][3])\r
-                + (v2[14 + dvp] * d16[i][4]) + (v2[13 + dvp] * d16[i][5])\r
-                + (v2[12 + dvp] * d16[i][6]) + (v2[11 + dvp] * d16[i][7])\r
-                + (v2[10 + dvp] * d16[i][8]) + (v2[9 + dvp] * d16[i][9])\r
-                + (v2[8 + dvp] * d16[i][10]) + (v2[7 + dvp] * d16[i][11])\r
-                + (v2[6 + dvp] * d16[i][12]) + (v2[5 + dvp] * d16[i][13])\r
-                + (v2[4 + dvp] * d16[i][14]) + (v2[3 + dvp] * d16[i][15])) * scalefactor);\r
+        float pcm_sample;\r
+\r
+        pcm_sample = (float) (((v2[2 + dvp] * d16[i][0]) + (v2[1 + dvp] * d16[i][1]) + (v2[0 + dvp] * d16[i][2]) + (v2[15 + dvp] * d16[i][3]) + (v2[14 + dvp] * d16[i][4]) + (v2[13 + dvp] * d16[i][5]) + (v2[12 + dvp] * d16[i][6]) + (v2[11 + dvp] * d16[i][7]) + (v2[10 + dvp] * d16[i][8]) + (v2[9 + dvp] * d16[i][9]) + (v2[8 + dvp] * d16[i][10]) + (v2[7 + dvp] * d16[i][11]) + (v2[6 + dvp] * d16[i][12]) + (v2[5 + dvp] * d16[i][13]) + (v2[4 + dvp] * d16[i][14]) + (v2[3 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1191,22 +1139,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
-\r
-        pcm_sample =\r
-            (float) (((v1[3 + dvp] * d16[i][0]) + (v1[2 + dvp] * d16[i][1])\r
-                + (v1[1 + dvp] * d16[i][2]) + (v1[0 + dvp] * d16[i][3])\r
-                + (v1[15 + dvp] * d16[i][4]) + (v1[14 + dvp] * d16[i][5])\r
-                + (v1[13 + dvp] * d16[i][6]) + (v1[12 + dvp] * d16[i][7])\r
-                + (v1[11 + dvp] * d16[i][8]) + (v1[10 + dvp] * d16[i][9])\r
-                + (v1[9 + dvp] * d16[i][10]) + (v1[8 + dvp] * d16[i][11])\r
-                + (v1[7 + dvp] * d16[i][12]) + (v1[6 + dvp] * d16[i][13])\r
-                + (v1[5 + dvp] * d16[i][14]) + (v1[4 + dvp] * d16[i][15])) * scalefactor);\r
+        float pcm_sample;\r
+\r
+        pcm_sample = (float) (((v1[3 + dvp] * d16[i][0]) + (v1[2 + dvp] * d16[i][1]) + (v1[1 + dvp] * d16[i][2]) + (v1[0 + dvp] * d16[i][3]) + (v1[15 + dvp] * d16[i][4]) + (v1[14 + dvp] * d16[i][5]) + (v1[13 + dvp] * d16[i][6]) + (v1[12 + dvp] * d16[i][7]) + (v1[11 + dvp] * d16[i][8]) + (v1[10 + dvp] * d16[i][9]) + (v1[9 + dvp] * d16[i][10]) + (v1[8 + dvp] * d16[i][11]) + (v1[7 + dvp] * d16[i][12]) + (v1[6 + dvp] * d16[i][13]) + (v1[5 + dvp] * d16[i][14]) + (v1[4 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1217,22 +1157,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
-\r
-        pcm_sample =\r
-            (float) (((v2[3 + dvp] * d16[i][0]) + (v2[2 + dvp] * d16[i][1])\r
-                + (v2[1 + dvp] * d16[i][2]) + (v2[0 + dvp] * d16[i][3])\r
-                + (v2[15 + dvp] * d16[i][4]) + (v2[14 + dvp] * d16[i][5])\r
-                + (v2[13 + dvp] * d16[i][6]) + (v2[12 + dvp] * d16[i][7])\r
-                + (v2[11 + dvp] * d16[i][8]) + (v2[10 + dvp] * d16[i][9])\r
-                + (v2[9 + dvp] * d16[i][10]) + (v2[8 + dvp] * d16[i][11])\r
-                + (v2[7 + dvp] * d16[i][12]) + (v2[6 + dvp] * d16[i][13])\r
-                + (v2[5 + dvp] * d16[i][14]) + (v2[4 + dvp] * d16[i][15])) * scalefactor);\r
+        float pcm_sample;\r
+\r
+        pcm_sample = (float) (((v2[3 + dvp] * d16[i][0]) + (v2[2 + dvp] * d16[i][1]) + (v2[1 + dvp] * d16[i][2]) + (v2[0 + dvp] * d16[i][3]) + (v2[15 + dvp] * d16[i][4]) + (v2[14 + dvp] * d16[i][5]) + (v2[13 + dvp] * d16[i][6]) + (v2[12 + dvp] * d16[i][7]) + (v2[11 + dvp] * d16[i][8]) + (v2[10 + dvp] * d16[i][9]) + (v2[9 + dvp] * d16[i][10]) + (v2[8 + dvp] * d16[i][11]) + (v2[7 + dvp] * d16[i][12]) + (v2[6 + dvp] * d16[i][13]) + (v2[5 + dvp] * d16[i][14]) + (v2[4 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1249,21 +1181,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[4 + dvp] * d16[i][0]) + (v1[3 + dvp] * d16[i][1])\r
-                + (v1[2 + dvp] * d16[i][2]) + (v1[1 + dvp] * d16[i][3]) + (v1[0 + dvp] * d16[i][4])\r
-                + (v1[15 + dvp] * d16[i][5]) + (v1[14 + dvp] * d16[i][6])\r
-                + (v1[13 + dvp] * d16[i][7]) + (v1[12 + dvp] * d16[i][8])\r
-                + (v1[11 + dvp] * d16[i][9]) + (v1[10 + dvp] * d16[i][10])\r
-                + (v1[9 + dvp] * d16[i][11]) + (v1[8 + dvp] * d16[i][12])\r
-                + (v1[7 + dvp] * d16[i][13]) + (v1[6 + dvp] * d16[i][14]) + (v1[5 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[4 + dvp] * d16[i][0]) + (v1[3 + dvp] * d16[i][1]) + (v1[2 + dvp] * d16[i][2]) + (v1[1 + dvp] * d16[i][3]) + (v1[0 + dvp] * d16[i][4]) + (v1[15 + dvp] * d16[i][5]) + (v1[14 + dvp] * d16[i][6]) + (v1[13 + dvp] * d16[i][7]) + (v1[12 + dvp] * d16[i][8]) + (v1[11 + dvp] * d16[i][9]) + (v1[10 + dvp] * d16[i][10]) + (v1[9 + dvp] * d16[i][11]) + (v1[8 + dvp] * d16[i][12]) + (v1[7 + dvp] * d16[i][13]) + (v1[6 + dvp] * d16[i][14]) + (v1[5 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1274,21 +1199,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[4 + dvp] * d16[i][0]) + (v2[3 + dvp] * d16[i][1])\r
-                + (v2[2 + dvp] * d16[i][2]) + (v2[1 + dvp] * d16[i][3]) + (v2[0 + dvp] * d16[i][4])\r
-                + (v2[15 + dvp] * d16[i][5]) + (v2[14 + dvp] * d16[i][6])\r
-                + (v2[13 + dvp] * d16[i][7]) + (v2[12 + dvp] * d16[i][8])\r
-                + (v2[11 + dvp] * d16[i][9]) + (v2[10 + dvp] * d16[i][10])\r
-                + (v2[9 + dvp] * d16[i][11]) + (v2[8 + dvp] * d16[i][12])\r
-                + (v2[7 + dvp] * d16[i][13]) + (v2[6 + dvp] * d16[i][14]) + (v2[5 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[4 + dvp] * d16[i][0]) + (v2[3 + dvp] * d16[i][1]) + (v2[2 + dvp] * d16[i][2]) + (v2[1 + dvp] * d16[i][3]) + (v2[0 + dvp] * d16[i][4]) + (v2[15 + dvp] * d16[i][5]) + (v2[14 + dvp] * d16[i][6]) + (v2[13 + dvp] * d16[i][7]) + (v2[12 + dvp] * d16[i][8]) + (v2[11 + dvp] * d16[i][9]) + (v2[10 + dvp] * d16[i][10]) + (v2[9 + dvp] * d16[i][11]) + (v2[8 + dvp] * d16[i][12]) + (v2[7 + dvp] * d16[i][13]) + (v2[6 + dvp] * d16[i][14]) + (v2[5 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1305,21 +1223,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[5 + dvp] * d16[i][0]) + (v1[4 + dvp] * d16[i][1])\r
-                + (v1[3 + dvp] * d16[i][2]) + (v1[2 + dvp] * d16[i][3]) + (v1[1 + dvp] * d16[i][4])\r
-                + (v1[0 + dvp] * d16[i][5]) + (v1[15 + dvp] * d16[i][6])\r
-                + (v1[14 + dvp] * d16[i][7]) + (v1[13 + dvp] * d16[i][8])\r
-                + (v1[12 + dvp] * d16[i][9]) + (v1[11 + dvp] * d16[i][10])\r
-                + (v1[10 + dvp] * d16[i][11]) + (v1[9 + dvp] * d16[i][12])\r
-                + (v1[8 + dvp] * d16[i][13]) + (v1[7 + dvp] * d16[i][14]) + (v1[6 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[5 + dvp] * d16[i][0]) + (v1[4 + dvp] * d16[i][1]) + (v1[3 + dvp] * d16[i][2]) + (v1[2 + dvp] * d16[i][3]) + (v1[1 + dvp] * d16[i][4]) + (v1[0 + dvp] * d16[i][5]) + (v1[15 + dvp] * d16[i][6]) + (v1[14 + dvp] * d16[i][7]) + (v1[13 + dvp] * d16[i][8]) + (v1[12 + dvp] * d16[i][9]) + (v1[11 + dvp] * d16[i][10]) + (v1[10 + dvp] * d16[i][11]) + (v1[9 + dvp] * d16[i][12]) + (v1[8 + dvp] * d16[i][13]) + (v1[7 + dvp] * d16[i][14]) + (v1[6 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1330,21 +1241,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[5 + dvp] * d16[i][0]) + (v2[4 + dvp] * d16[i][1])\r
-                + (v2[3 + dvp] * d16[i][2]) + (v2[2 + dvp] * d16[i][3]) + (v2[1 + dvp] * d16[i][4])\r
-                + (v2[0 + dvp] * d16[i][5]) + (v2[15 + dvp] * d16[i][6])\r
-                + (v2[14 + dvp] * d16[i][7]) + (v2[13 + dvp] * d16[i][8])\r
-                + (v2[12 + dvp] * d16[i][9]) + (v2[11 + dvp] * d16[i][10])\r
-                + (v2[10 + dvp] * d16[i][11]) + (v2[9 + dvp] * d16[i][12])\r
-                + (v2[8 + dvp] * d16[i][13]) + (v2[7 + dvp] * d16[i][14]) + (v2[6 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[5 + dvp] * d16[i][0]) + (v2[4 + dvp] * d16[i][1]) + (v2[3 + dvp] * d16[i][2]) + (v2[2 + dvp] * d16[i][3]) + (v2[1 + dvp] * d16[i][4]) + (v2[0 + dvp] * d16[i][5]) + (v2[15 + dvp] * d16[i][6]) + (v2[14 + dvp] * d16[i][7]) + (v2[13 + dvp] * d16[i][8]) + (v2[12 + dvp] * d16[i][9]) + (v2[11 + dvp] * d16[i][10]) + (v2[10 + dvp] * d16[i][11]) + (v2[9 + dvp] * d16[i][12]) + (v2[8 + dvp] * d16[i][13]) + (v2[7 + dvp] * d16[i][14]) + (v2[6 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1361,21 +1265,14 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[6 + dvp] * d16[i][0]) + (v1[5 + dvp] * d16[i][1])\r
-                + (v1[4 + dvp] * d16[i][2]) + (v1[3 + dvp] * d16[i][3]) + (v1[2 + dvp] * d16[i][4])\r
-                + (v1[1 + dvp] * d16[i][5]) + (v1[0 + dvp] * d16[i][6])\r
-                + (v1[15 + dvp] * d16[i][7]) + (v1[14 + dvp] * d16[i][8])\r
-                + (v1[13 + dvp] * d16[i][9]) + (v1[12 + dvp] * d16[i][10])\r
-                + (v1[11 + dvp] * d16[i][11]) + (v1[10 + dvp] * d16[i][12])\r
-                + (v1[9 + dvp] * d16[i][13]) + (v1[8 + dvp] * d16[i][14]) + (v1[7 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[6 + dvp] * d16[i][0]) + (v1[5 + dvp] * d16[i][1]) + (v1[4 + dvp] * d16[i][2]) + (v1[3 + dvp] * d16[i][3]) + (v1[2 + dvp] * d16[i][4]) + (v1[1 + dvp] * d16[i][5]) + (v1[0 + dvp] * d16[i][6]) + (v1[15 + dvp] * d16[i][7]) + (v1[14 + dvp] * d16[i][8]) + (v1[13 + dvp] * d16[i][9]) + (v1[12 + dvp] * d16[i][10]) + (v1[11 + dvp] * d16[i][11]) + (v1[10 + dvp] * d16[i][12]) + (v1[9 + dvp] * d16[i][13]) + (v1[8 + dvp] * d16[i][14]) + (v1[7 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1386,21 +1283,14 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[6 + dvp] * d16[i][0]) + (v2[5 + dvp] * d16[i][1])\r
-                + (v2[4 + dvp] * d16[i][2]) + (v2[3 + dvp] * d16[i][3]) + (v2[2 + dvp] * d16[i][4])\r
-                + (v2[1 + dvp] * d16[i][5]) + (v2[0 + dvp] * d16[i][6])\r
-                + (v2[15 + dvp] * d16[i][7]) + (v2[14 + dvp] * d16[i][8])\r
-                + (v2[13 + dvp] * d16[i][9]) + (v2[12 + dvp] * d16[i][10])\r
-                + (v2[11 + dvp] * d16[i][11]) + (v2[10 + dvp] * d16[i][12])\r
-                + (v2[9 + dvp] * d16[i][13]) + (v2[8 + dvp] * d16[i][14]) + (v2[7 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[6 + dvp] * d16[i][0]) + (v2[5 + dvp] * d16[i][1]) + (v2[4 + dvp] * d16[i][2]) + (v2[3 + dvp] * d16[i][3]) + (v2[2 + dvp] * d16[i][4]) + (v2[1 + dvp] * d16[i][5]) + (v2[0 + dvp] * d16[i][6]) + (v2[15 + dvp] * d16[i][7]) + (v2[14 + dvp] * d16[i][8]) + (v2[13 + dvp] * d16[i][9]) + (v2[12 + dvp] * d16[i][10]) + (v2[11 + dvp] * d16[i][11]) + (v2[10 + dvp] * d16[i][12]) + (v2[9 + dvp] * d16[i][13]) + (v2[8 + dvp] * d16[i][14]) + (v2[7 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1417,21 +1307,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[7 + dvp] * d16[i][0]) + (v1[6 + dvp] * d16[i][1])\r
-                + (v1[5 + dvp] * d16[i][2]) + (v1[4 + dvp] * d16[i][3]) + (v1[3 + dvp] * d16[i][4])\r
-                + (v1[2 + dvp] * d16[i][5]) + (v1[1 + dvp] * d16[i][6]) + (v1[0 + dvp] * d16[i][7])\r
-                + (v1[15 + dvp] * d16[i][8]) + (v1[14 + dvp] * d16[i][9])\r
-                + (v1[13 + dvp] * d16[i][10]) + (v1[12 + dvp] * d16[i][11])\r
-                + (v1[11 + dvp] * d16[i][12]) + (v1[10 + dvp] * d16[i][13])\r
-                + (v1[9 + dvp] * d16[i][14]) + (v1[8 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[7 + dvp] * d16[i][0]) + (v1[6 + dvp] * d16[i][1]) + (v1[5 + dvp] * d16[i][2]) + (v1[4 + dvp] * d16[i][3]) + (v1[3 + dvp] * d16[i][4]) + (v1[2 + dvp] * d16[i][5]) + (v1[1 + dvp] * d16[i][6]) + (v1[0 + dvp] * d16[i][7]) + (v1[15 + dvp] * d16[i][8]) + (v1[14 + dvp] * d16[i][9]) + (v1[13 + dvp] * d16[i][10]) + (v1[12 + dvp] * d16[i][11]) + (v1[11 + dvp] * d16[i][12]) + (v1[10 + dvp] * d16[i][13]) + (v1[9 + dvp] * d16[i][14]) + (v1[8 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1442,21 +1325,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[7 + dvp] * d16[i][0]) + (v2[6 + dvp] * d16[i][1])\r
-                + (v2[5 + dvp] * d16[i][2]) + (v2[4 + dvp] * d16[i][3]) + (v2[3 + dvp] * d16[i][4])\r
-                + (v2[2 + dvp] * d16[i][5]) + (v2[1 + dvp] * d16[i][6]) + (v2[0 + dvp] * d16[i][7])\r
-                + (v2[15 + dvp] * d16[i][8]) + (v2[14 + dvp] * d16[i][9])\r
-                + (v2[13 + dvp] * d16[i][10]) + (v2[12 + dvp] * d16[i][11])\r
-                + (v2[11 + dvp] * d16[i][12]) + (v2[10 + dvp] * d16[i][13])\r
-                + (v2[9 + dvp] * d16[i][14]) + (v2[8 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[7 + dvp] * d16[i][0]) + (v2[6 + dvp] * d16[i][1]) + (v2[5 + dvp] * d16[i][2]) + (v2[4 + dvp] * d16[i][3]) + (v2[3 + dvp] * d16[i][4]) + (v2[2 + dvp] * d16[i][5]) + (v2[1 + dvp] * d16[i][6]) + (v2[0 + dvp] * d16[i][7]) + (v2[15 + dvp] * d16[i][8]) + (v2[14 + dvp] * d16[i][9]) + (v2[13 + dvp] * d16[i][10]) + (v2[12 + dvp] * d16[i][11]) + (v2[11 + dvp] * d16[i][12]) + (v2[10 + dvp] * d16[i][13]) + (v2[9 + dvp] * d16[i][14]) + (v2[8 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1474,21 +1350,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[8 + dvp] * d16[i][0]) + (v1[7 + dvp] * d16[i][1])\r
-                + (v1[6 + dvp] * d16[i][2]) + (v1[5 + dvp] * d16[i][3]) + (v1[4 + dvp] * d16[i][4])\r
-                + (v1[3 + dvp] * d16[i][5]) + (v1[2 + dvp] * d16[i][6]) + (v1[1 + dvp] * d16[i][7])\r
-                + (v1[0 + dvp] * d16[i][8]) + (v1[15 + dvp] * d16[i][9])\r
-                + (v1[14 + dvp] * d16[i][10]) + (v1[13 + dvp] * d16[i][11])\r
-                + (v1[12 + dvp] * d16[i][12]) + (v1[11 + dvp] * d16[i][13])\r
-                + (v1[10 + dvp] * d16[i][14]) + (v1[9 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[8 + dvp] * d16[i][0]) + (v1[7 + dvp] * d16[i][1]) + (v1[6 + dvp] * d16[i][2]) + (v1[5 + dvp] * d16[i][3]) + (v1[4 + dvp] * d16[i][4]) + (v1[3 + dvp] * d16[i][5]) + (v1[2 + dvp] * d16[i][6]) + (v1[1 + dvp] * d16[i][7]) + (v1[0 + dvp] * d16[i][8]) + (v1[15 + dvp] * d16[i][9]) + (v1[14 + dvp] * d16[i][10]) + (v1[13 + dvp] * d16[i][11]) + (v1[12 + dvp] * d16[i][12]) + (v1[11 + dvp] * d16[i][13]) + (v1[10 + dvp] * d16[i][14]) + (v1[9 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1500,21 +1369,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[8 + dvp] * d16[i][0]) + (v2[7 + dvp] * d16[i][1])\r
-                + (v2[6 + dvp] * d16[i][2]) + (v2[5 + dvp] * d16[i][3]) + (v2[4 + dvp] * d16[i][4])\r
-                + (v2[3 + dvp] * d16[i][5]) + (v2[2 + dvp] * d16[i][6]) + (v2[1 + dvp] * d16[i][7])\r
-                + (v2[0 + dvp] * d16[i][8]) + (v2[15 + dvp] * d16[i][9])\r
-                + (v2[14 + dvp] * d16[i][10]) + (v2[13 + dvp] * d16[i][11])\r
-                + (v2[12 + dvp] * d16[i][12]) + (v2[11 + dvp] * d16[i][13])\r
-                + (v2[10 + dvp] * d16[i][14]) + (v2[9 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[8 + dvp] * d16[i][0]) + (v2[7 + dvp] * d16[i][1]) + (v2[6 + dvp] * d16[i][2]) + (v2[5 + dvp] * d16[i][3]) + (v2[4 + dvp] * d16[i][4]) + (v2[3 + dvp] * d16[i][5]) + (v2[2 + dvp] * d16[i][6]) + (v2[1 + dvp] * d16[i][7]) + (v2[0 + dvp] * d16[i][8]) + (v2[15 + dvp] * d16[i][9]) + (v2[14 + dvp] * d16[i][10]) + (v2[13 + dvp] * d16[i][11]) + (v2[12 + dvp] * d16[i][12]) + (v2[11 + dvp] * d16[i][13]) + (v2[10 + dvp] * d16[i][14]) + (v2[9 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1531,21 +1393,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[9 + dvp] * d16[i][0]) + (v1[8 + dvp] * d16[i][1])\r
-                + (v1[7 + dvp] * d16[i][2]) + (v1[6 + dvp] * d16[i][3]) + (v1[5 + dvp] * d16[i][4])\r
-                + (v1[4 + dvp] * d16[i][5]) + (v1[3 + dvp] * d16[i][6]) + (v1[2 + dvp] * d16[i][7])\r
-                + (v1[1 + dvp] * d16[i][8]) + (v1[0 + dvp] * d16[i][9])\r
-                + (v1[15 + dvp] * d16[i][10]) + (v1[14 + dvp] * d16[i][11])\r
-                + (v1[13 + dvp] * d16[i][12]) + (v1[12 + dvp] * d16[i][13])\r
-                + (v1[11 + dvp] * d16[i][14]) + (v1[10 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[9 + dvp] * d16[i][0]) + (v1[8 + dvp] * d16[i][1]) + (v1[7 + dvp] * d16[i][2]) + (v1[6 + dvp] * d16[i][3]) + (v1[5 + dvp] * d16[i][4]) + (v1[4 + dvp] * d16[i][5]) + (v1[3 + dvp] * d16[i][6]) + (v1[2 + dvp] * d16[i][7]) + (v1[1 + dvp] * d16[i][8]) + (v1[0 + dvp] * d16[i][9]) + (v1[15 + dvp] * d16[i][10]) + (v1[14 + dvp] * d16[i][11]) + (v1[13 + dvp] * d16[i][12]) + (v1[12 + dvp] * d16[i][13]) + (v1[11 + dvp] * d16[i][14]) + (v1[10 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1556,21 +1411,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[9 + dvp] * d16[i][0]) + (v2[8 + dvp] * d16[i][1])\r
-                + (v2[7 + dvp] * d16[i][2]) + (v2[6 + dvp] * d16[i][3]) + (v2[5 + dvp] * d16[i][4])\r
-                + (v2[4 + dvp] * d16[i][5]) + (v2[3 + dvp] * d16[i][6]) + (v2[2 + dvp] * d16[i][7])\r
-                + (v2[1 + dvp] * d16[i][8]) + (v2[0 + dvp] * d16[i][9])\r
-                + (v2[15 + dvp] * d16[i][10]) + (v2[14 + dvp] * d16[i][11])\r
-                + (v2[13 + dvp] * d16[i][12]) + (v2[12 + dvp] * d16[i][13])\r
-                + (v2[11 + dvp] * d16[i][14]) + (v2[10 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[9 + dvp] * d16[i][0]) + (v2[8 + dvp] * d16[i][1]) + (v2[7 + dvp] * d16[i][2]) + (v2[6 + dvp] * d16[i][3]) + (v2[5 + dvp] * d16[i][4]) + (v2[4 + dvp] * d16[i][5]) + (v2[3 + dvp] * d16[i][6]) + (v2[2 + dvp] * d16[i][7]) + (v2[1 + dvp] * d16[i][8]) + (v2[0 + dvp] * d16[i][9]) + (v2[15 + dvp] * d16[i][10]) + (v2[14 + dvp] * d16[i][11]) + (v2[13 + dvp] * d16[i][12]) + (v2[12 + dvp] * d16[i][13]) + (v2[11 + dvp] * d16[i][14]) + (v2[10 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1585,21 +1433,14 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[10 + dvp] * d16[i][0]) + (v1[9 + dvp] * d16[i][1])\r
-                + (v1[8 + dvp] * d16[i][2]) + (v1[7 + dvp] * d16[i][3]) + (v1[6 + dvp] * d16[i][4])\r
-                + (v1[5 + dvp] * d16[i][5]) + (v1[4 + dvp] * d16[i][6]) + (v1[3 + dvp] * d16[i][7])\r
-                + (v1[2 + dvp] * d16[i][8]) + (v1[1 + dvp] * d16[i][9])\r
-                + (v1[0 + dvp] * d16[i][10]) + (v1[15 + dvp] * d16[i][11])\r
-                + (v1[14 + dvp] * d16[i][12]) + (v1[13 + dvp] * d16[i][13])\r
-                + (v1[12 + dvp] * d16[i][14]) + (v1[11 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[10 + dvp] * d16[i][0]) + (v1[9 + dvp] * d16[i][1]) + (v1[8 + dvp] * d16[i][2]) + (v1[7 + dvp] * d16[i][3]) + (v1[6 + dvp] * d16[i][4]) + (v1[5 + dvp] * d16[i][5]) + (v1[4 + dvp] * d16[i][6]) + (v1[3 + dvp] * d16[i][7]) + (v1[2 + dvp] * d16[i][8]) + (v1[1 + dvp] * d16[i][9]) + (v1[0 + dvp] * d16[i][10]) + (v1[15 + dvp] * d16[i][11]) + (v1[14 + dvp] * d16[i][12]) + (v1[13 + dvp] * d16[i][13]) + (v1[12 + dvp] * d16[i][14]) + (v1[11 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1609,21 +1450,14 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[10 + dvp] * d16[i][0]) + (v2[9 + dvp] * d16[i][1])\r
-                + (v2[8 + dvp] * d16[i][2]) + (v2[7 + dvp] * d16[i][3]) + (v2[6 + dvp] * d16[i][4])\r
-                + (v2[5 + dvp] * d16[i][5]) + (v2[4 + dvp] * d16[i][6]) + (v2[3 + dvp] * d16[i][7])\r
-                + (v2[2 + dvp] * d16[i][8]) + (v2[1 + dvp] * d16[i][9])\r
-                + (v2[0 + dvp] * d16[i][10]) + (v2[15 + dvp] * d16[i][11])\r
-                + (v2[14 + dvp] * d16[i][12]) + (v2[13 + dvp] * d16[i][13])\r
-                + (v2[12 + dvp] * d16[i][14]) + (v2[11 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[10 + dvp] * d16[i][0]) + (v2[9 + dvp] * d16[i][1]) + (v2[8 + dvp] * d16[i][2]) + (v2[7 + dvp] * d16[i][3]) + (v2[6 + dvp] * d16[i][4]) + (v2[5 + dvp] * d16[i][5]) + (v2[4 + dvp] * d16[i][6]) + (v2[3 + dvp] * d16[i][7]) + (v2[2 + dvp] * d16[i][8]) + (v2[1 + dvp] * d16[i][9]) + (v2[0 + dvp] * d16[i][10]) + (v2[15 + dvp] * d16[i][11]) + (v2[14 + dvp] * d16[i][12]) + (v2[13 + dvp] * d16[i][13]) + (v2[12 + dvp] * d16[i][14]) + (v2[11 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1640,21 +1474,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[11 + dvp] * d16[i][0]) + (v1[10 + dvp] * d16[i][1])\r
-                + (v1[9 + dvp] * d16[i][2]) + (v1[8 + dvp] * d16[i][3]) + (v1[7 + dvp] * d16[i][4])\r
-                + (v1[6 + dvp] * d16[i][5]) + (v1[5 + dvp] * d16[i][6]) + (v1[4 + dvp] * d16[i][7])\r
-                + (v1[3 + dvp] * d16[i][8]) + (v1[2 + dvp] * d16[i][9])\r
-                + (v1[1 + dvp] * d16[i][10]) + (v1[0 + dvp] * d16[i][11])\r
-                + (v1[15 + dvp] * d16[i][12]) + (v1[14 + dvp] * d16[i][13])\r
-                + (v1[13 + dvp] * d16[i][14]) + (v1[12 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[11 + dvp] * d16[i][0]) + (v1[10 + dvp] * d16[i][1]) + (v1[9 + dvp] * d16[i][2]) + (v1[8 + dvp] * d16[i][3]) + (v1[7 + dvp] * d16[i][4]) + (v1[6 + dvp] * d16[i][5]) + (v1[5 + dvp] * d16[i][6]) + (v1[4 + dvp] * d16[i][7]) + (v1[3 + dvp] * d16[i][8]) + (v1[2 + dvp] * d16[i][9]) + (v1[1 + dvp] * d16[i][10]) + (v1[0 + dvp] * d16[i][11]) + (v1[15 + dvp] * d16[i][12]) + (v1[14 + dvp] * d16[i][13]) + (v1[13 + dvp] * d16[i][14]) + (v1[12 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1665,21 +1492,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[11 + dvp] * d16[i][0]) + (v2[10 + dvp] * d16[i][1])\r
-                + (v2[9 + dvp] * d16[i][2]) + (v2[8 + dvp] * d16[i][3]) + (v2[7 + dvp] * d16[i][4])\r
-                + (v2[6 + dvp] * d16[i][5]) + (v2[5 + dvp] * d16[i][6]) + (v2[4 + dvp] * d16[i][7])\r
-                + (v2[3 + dvp] * d16[i][8]) + (v2[2 + dvp] * d16[i][9])\r
-                + (v2[1 + dvp] * d16[i][10]) + (v2[0 + dvp] * d16[i][11])\r
-                + (v2[15 + dvp] * d16[i][12]) + (v2[14 + dvp] * d16[i][13])\r
-                + (v2[13 + dvp] * d16[i][14]) + (v2[12 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[11 + dvp] * d16[i][0]) + (v2[10 + dvp] * d16[i][1]) + (v2[9 + dvp] * d16[i][2]) + (v2[8 + dvp] * d16[i][3]) + (v2[7 + dvp] * d16[i][4]) + (v2[6 + dvp] * d16[i][5]) + (v2[5 + dvp] * d16[i][6]) + (v2[4 + dvp] * d16[i][7]) + (v2[3 + dvp] * d16[i][8]) + (v2[2 + dvp] * d16[i][9]) + (v2[1 + dvp] * d16[i][10]) + (v2[0 + dvp] * d16[i][11]) + (v2[15 + dvp] * d16[i][12]) + (v2[14 + dvp] * d16[i][13]) + (v2[13 + dvp] * d16[i][14]) + (v2[12 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1695,21 +1515,14 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[12 + dvp] * d16[i][0]) + (v1[11 + dvp] * d16[i][1])\r
-                + (v1[10 + dvp] * d16[i][2]) + (v1[9 + dvp] * d16[i][3])\r
-                + (v1[8 + dvp] * d16[i][4]) + (v1[7 + dvp] * d16[i][5]) + (v1[6 + dvp] * d16[i][6])\r
-                + (v1[5 + dvp] * d16[i][7]) + (v1[4 + dvp] * d16[i][8]) + (v1[3 + dvp] * d16[i][9])\r
-                + (v1[2 + dvp] * d16[i][10]) + (v1[1 + dvp] * d16[i][11])\r
-                + (v1[0 + dvp] * d16[i][12]) + (v1[15 + dvp] * d16[i][13])\r
-                + (v1[14 + dvp] * d16[i][14]) + (v1[13 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[12 + dvp] * d16[i][0]) + (v1[11 + dvp] * d16[i][1]) + (v1[10 + dvp] * d16[i][2]) + (v1[9 + dvp] * d16[i][3]) + (v1[8 + dvp] * d16[i][4]) + (v1[7 + dvp] * d16[i][5]) + (v1[6 + dvp] * d16[i][6]) + (v1[5 + dvp] * d16[i][7]) + (v1[4 + dvp] * d16[i][8]) + (v1[3 + dvp] * d16[i][9]) + (v1[2 + dvp] * d16[i][10]) + (v1[1 + dvp] * d16[i][11]) + (v1[0 + dvp] * d16[i][12]) + (v1[15 + dvp] * d16[i][13]) + (v1[14 + dvp] * d16[i][14]) + (v1[13 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1719,21 +1532,14 @@ final class SynthesisFilter {
       // final float[] vp = actual_v;\r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[12 + dvp] * d16[i][0]) + (v2[11 + dvp] * d16[i][1])\r
-                + (v2[10 + dvp] * d16[i][2]) + (v2[9 + dvp] * d16[i][3])\r
-                + (v2[8 + dvp] * d16[i][4]) + (v2[7 + dvp] * d16[i][5]) + (v2[6 + dvp] * d16[i][6])\r
-                + (v2[5 + dvp] * d16[i][7]) + (v2[4 + dvp] * d16[i][8]) + (v2[3 + dvp] * d16[i][9])\r
-                + (v2[2 + dvp] * d16[i][10]) + (v2[1 + dvp] * d16[i][11])\r
-                + (v2[0 + dvp] * d16[i][12]) + (v2[15 + dvp] * d16[i][13])\r
-                + (v2[14 + dvp] * d16[i][14]) + (v2[13 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[12 + dvp] * d16[i][0]) + (v2[11 + dvp] * d16[i][1]) + (v2[10 + dvp] * d16[i][2]) + (v2[9 + dvp] * d16[i][3]) + (v2[8 + dvp] * d16[i][4]) + (v2[7 + dvp] * d16[i][5]) + (v2[6 + dvp] * d16[i][6]) + (v2[5 + dvp] * d16[i][7]) + (v2[4 + dvp] * d16[i][8]) + (v2[3 + dvp] * d16[i][9]) + (v2[2 + dvp] * d16[i][10]) + (v2[1 + dvp] * d16[i][11]) + (v2[0 + dvp] * d16[i][12]) + (v2[15 + dvp] * d16[i][13]) + (v2[14 + dvp] * d16[i][14]) + (v2[13 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1750,21 +1556,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[13 + dvp] * d16[i][0]) + (v1[12 + dvp] * d16[i][1])\r
-                + (v1[11 + dvp] * d16[i][2]) + (v1[10 + dvp] * d16[i][3])\r
-                + (v1[9 + dvp] * d16[i][4]) + (v1[8 + dvp] * d16[i][5]) + (v1[7 + dvp] * d16[i][6])\r
-                + (v1[6 + dvp] * d16[i][7]) + (v1[5 + dvp] * d16[i][8]) + (v1[4 + dvp] * d16[i][9])\r
-                + (v1[3 + dvp] * d16[i][10]) + (v1[2 + dvp] * d16[i][11])\r
-                + (v1[1 + dvp] * d16[i][12]) + (v1[0 + dvp] * d16[i][13])\r
-                + (v1[15 + dvp] * d16[i][14]) + (v1[14 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[13 + dvp] * d16[i][0]) + (v1[12 + dvp] * d16[i][1]) + (v1[11 + dvp] * d16[i][2]) + (v1[10 + dvp] * d16[i][3]) + (v1[9 + dvp] * d16[i][4]) + (v1[8 + dvp] * d16[i][5]) + (v1[7 + dvp] * d16[i][6]) + (v1[6 + dvp] * d16[i][7]) + (v1[5 + dvp] * d16[i][8]) + (v1[4 + dvp] * d16[i][9]) + (v1[3 + dvp] * d16[i][10]) + (v1[2 + dvp] * d16[i][11]) + (v1[1 + dvp] * d16[i][12]) + (v1[0 + dvp] * d16[i][13]) + (v1[15 + dvp] * d16[i][14]) + (v1[14 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1775,21 +1574,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[13 + dvp] * d16[i][0]) + (v2[12 + dvp] * d16[i][1])\r
-                + (v2[11 + dvp] * d16[i][2]) + (v2[10 + dvp] * d16[i][3])\r
-                + (v2[9 + dvp] * d16[i][4]) + (v2[8 + dvp] * d16[i][5]) + (v2[7 + dvp] * d16[i][6])\r
-                + (v2[6 + dvp] * d16[i][7]) + (v2[5 + dvp] * d16[i][8]) + (v2[4 + dvp] * d16[i][9])\r
-                + (v2[3 + dvp] * d16[i][10]) + (v2[2 + dvp] * d16[i][11])\r
-                + (v2[1 + dvp] * d16[i][12]) + (v2[0 + dvp] * d16[i][13])\r
-                + (v2[15 + dvp] * d16[i][14]) + (v2[14 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[13 + dvp] * d16[i][0]) + (v2[12 + dvp] * d16[i][1]) + (v2[11 + dvp] * d16[i][2]) + (v2[10 + dvp] * d16[i][3]) + (v2[9 + dvp] * d16[i][4]) + (v2[8 + dvp] * d16[i][5]) + (v2[7 + dvp] * d16[i][6]) + (v2[6 + dvp] * d16[i][7]) + (v2[5 + dvp] * d16[i][8]) + (v2[4 + dvp] * d16[i][9]) + (v2[3 + dvp] * d16[i][10]) + (v2[2 + dvp] * d16[i][11]) + (v2[1 + dvp] * d16[i][12]) + (v2[0 + dvp] * d16[i][13]) + (v2[15 + dvp] * d16[i][14]) + (v2[14 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1806,21 +1598,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v1[14 + dvp] * d16[i][0]) + (v1[13 + dvp] * d16[i][1])\r
-                + (v1[12 + dvp] * d16[i][2]) + (v1[11 + dvp] * d16[i][3])\r
-                + (v1[10 + dvp] * d16[i][4]) + (v1[9 + dvp] * d16[i][5])\r
-                + (v1[8 + dvp] * d16[i][6]) + (v1[7 + dvp] * d16[i][7]) + (v1[6 + dvp] * d16[i][8])\r
-                + (v1[5 + dvp] * d16[i][9]) + (v1[4 + dvp] * d16[i][10])\r
-                + (v1[3 + dvp] * d16[i][11]) + (v1[2 + dvp] * d16[i][12])\r
-                + (v1[1 + dvp] * d16[i][13]) + (v1[0 + dvp] * d16[i][14]) + (v1[15 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[14 + dvp] * d16[i][0]) + (v1[13 + dvp] * d16[i][1]) + (v1[12 + dvp] * d16[i][2]) + (v1[11 + dvp] * d16[i][3]) + (v1[10 + dvp] * d16[i][4]) + (v1[9 + dvp] * d16[i][5]) + (v1[8 + dvp] * d16[i][6]) + (v1[7 + dvp] * d16[i][7]) + (v1[6 + dvp] * d16[i][8]) + (v1[5 + dvp] * d16[i][9]) + (v1[4 + dvp] * d16[i][10]) + (v1[3 + dvp] * d16[i][11]) + (v1[2 + dvp] * d16[i][12]) + (v1[1 + dvp] * d16[i][13]) + (v1[0 + dvp] * d16[i][14]) + (v1[15 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1831,21 +1616,14 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
+      for (int i = 0; i < 32; i++) {\r
         // final float[] dp = d16[i];\r
-         float pcm_sample;\r
+        float pcm_sample;\r
 \r
-        pcm_sample =\r
-            (float) (((v2[14 + dvp] * d16[i][0]) + (v2[13 + dvp] * d16[i][1])\r
-                + (v2[12 + dvp] * d16[i][2]) + (v2[11 + dvp] * d16[i][3])\r
-                + (v2[10 + dvp] * d16[i][4]) + (v2[9 + dvp] * d16[i][5])\r
-                + (v2[8 + dvp] * d16[i][6]) + (v2[7 + dvp] * d16[i][7]) + (v2[6 + dvp] * d16[i][8])\r
-                + (v2[5 + dvp] * d16[i][9]) + (v2[4 + dvp] * d16[i][10])\r
-                + (v2[3 + dvp] * d16[i][11]) + (v2[2 + dvp] * d16[i][12])\r
-                + (v2[1 + dvp] * d16[i][13]) + (v2[0 + dvp] * d16[i][14]) + (v2[15 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[14 + dvp] * d16[i][0]) + (v2[13 + dvp] * d16[i][1]) + (v2[12 + dvp] * d16[i][2]) + (v2[11 + dvp] * d16[i][3]) + (v2[10 + dvp] * d16[i][4]) + (v2[9 + dvp] * d16[i][5]) + (v2[8 + dvp] * d16[i][6]) + (v2[7 + dvp] * d16[i][7]) + (v2[6 + dvp] * d16[i][8]) + (v2[5 + dvp] * d16[i][9]) + (v2[4 + dvp] * d16[i][10]) + (v2[3 + dvp] * d16[i][11]) + (v2[2 + dvp] * d16[i][12]) + (v2[1 + dvp] * d16[i][13]) + (v2[0 + dvp] * d16[i][14]) + (v2[15 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
 \r
@@ -1861,20 +1639,13 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
-         float pcm_sample;\r
+      for (int i = 0; i < 32; i++) {\r
+        float pcm_sample;\r
         // final float d16[i][] = d16[i];\r
-        pcm_sample =\r
-            (float) (((v1[15 + dvp] * d16[i][0]) + (v1[14 + dvp] * d16[i][1])\r
-                + (v1[13 + dvp] * d16[i][2]) + (v1[12 + dvp] * d16[i][3])\r
-                + (v1[11 + dvp] * d16[i][4]) + (v1[10 + dvp] * d16[i][5])\r
-                + (v1[9 + dvp] * d16[i][6]) + (v1[8 + dvp] * d16[i][7]) + (v1[7 + dvp] * d16[i][8])\r
-                + (v1[6 + dvp] * d16[i][9]) + (v1[5 + dvp] * d16[i][10])\r
-                + (v1[4 + dvp] * d16[i][11]) + (v1[3 + dvp] * d16[i][12])\r
-                + (v1[2 + dvp] * d16[i][13]) + (v1[1 + dvp] * d16[i][14]) + (v1[0 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v1[15 + dvp] * d16[i][0]) + (v1[14 + dvp] * d16[i][1]) + (v1[13 + dvp] * d16[i][2]) + (v1[12 + dvp] * d16[i][3]) + (v1[11 + dvp] * d16[i][4]) + (v1[10 + dvp] * d16[i][5]) + (v1[9 + dvp] * d16[i][6]) + (v1[8 + dvp] * d16[i][7]) + (v1[7 + dvp] * d16[i][8]) + (v1[6 + dvp] * d16[i][9]) + (v1[5 + dvp] * d16[i][10]) + (v1[4 + dvp] * d16[i][11]) + (v1[3 + dvp] * d16[i][12]) + (v1[2 + dvp] * d16[i][13]) + (v1[1 + dvp] * d16[i][14]) + (v1[0 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
         dvp += 16;\r
@@ -1884,20 +1655,13 @@ final class SynthesisFilter {
 \r
       // int inc = v_inc;\r
       // final float[] tmpOut = _tmpOut;\r
-       int dvp = 0;\r
+      int dvp = 0;\r
 \r
       // fat chance of having this loop unroll\r
-      for ( int i = 0; i < 32; i++) {\r
-         float pcm_sample;\r
+      for (int i = 0; i < 32; i++) {\r
+        float pcm_sample;\r
         // final float d16[i][] = d16[i];\r
-        pcm_sample =\r
-            (float) (((v2[15 + dvp] * d16[i][0]) + (v2[14 + dvp] * d16[i][1])\r
-                + (v2[13 + dvp] * d16[i][2]) + (v2[12 + dvp] * d16[i][3])\r
-                + (v2[11 + dvp] * d16[i][4]) + (v2[10 + dvp] * d16[i][5])\r
-                + (v2[9 + dvp] * d16[i][6]) + (v2[8 + dvp] * d16[i][7]) + (v2[7 + dvp] * d16[i][8])\r
-                + (v2[6 + dvp] * d16[i][9]) + (v2[5 + dvp] * d16[i][10])\r
-                + (v2[4 + dvp] * d16[i][11]) + (v2[3 + dvp] * d16[i][12])\r
-                + (v2[2 + dvp] * d16[i][13]) + (v2[1 + dvp] * d16[i][14]) + (v2[0 + dvp] * d16[i][15])) * scalefactor);\r
+        pcm_sample = (float) (((v2[15 + dvp] * d16[i][0]) + (v2[14 + dvp] * d16[i][1]) + (v2[13 + dvp] * d16[i][2]) + (v2[12 + dvp] * d16[i][3]) + (v2[11 + dvp] * d16[i][4]) + (v2[10 + dvp] * d16[i][5]) + (v2[9 + dvp] * d16[i][6]) + (v2[8 + dvp] * d16[i][7]) + (v2[7 + dvp] * d16[i][8]) + (v2[6 + dvp] * d16[i][9]) + (v2[5 + dvp] * d16[i][10]) + (v2[4 + dvp] * d16[i][11]) + (v2[3 + dvp] * d16[i][12]) + (v2[2 + dvp] * d16[i][13]) + (v2[1 + dvp] * d16[i][14]) + (v2[0 + dvp] * d16[i][15])) * scalefactor);\r
 \r
         _tmpOut[i] = pcm_sample;\r
         dvp += 16;\r
@@ -1979,17 +1743,16 @@ final class SynthesisFilter {
      */\r
   }\r
 \r
-  \r
   public void clear() {\r
     // clear out v1,v2\r
     SSJAVA.arrayinit(v1, 0);\r
     SSJAVA.arrayinit(v2, 0);\r
     // copy previous v1,v2\r
 \r
-    for ( int i = 0; i < prev1.length; i++) {\r
+    for (int i = 0; i < prev1.length; i++) {\r
       v1[i] = prev1[i];\r
     }\r
-    for ( int i = 0; i < prev2.length; i++) {\r
+    for (int i = 0; i < prev2.length; i++) {\r
       v2[i] = prev2[i];\r
     }\r
     // clear out previous buffer\r
@@ -2005,7 +1768,8 @@ final class SynthesisFilter {
 \r
   public void calculate_pcm_samples() {\r
 \r
-//    System.out.println("#calculate_pcm_samples::actual_write_pos=" + actual_write_pos);\r
+    // System.out.println("#calculate_pcm_samples::actual_write_pos=" +\r
+    // actual_write_pos);\r
 \r
     if (vidx == 1) {\r
       compute_new_v1_v2();\r
@@ -2020,7 +1784,7 @@ final class SynthesisFilter {
     // System.out.println("3.actual_v=" + (actual_v == v1) + " vidx=" + vidx);\r
 \r
     actual_write_pos = (actual_write_pos + 1) & 0xf;\r
-//     System.out.println("actual_write_pos="+actual_write_pos);\r
+    // System.out.println("actual_write_pos="+actual_write_pos);\r
     // actual_v = (actual_v == v1) ? v2 : v1;\r
 \r
     if (vidx == 1) {\r
@@ -2083,7 +1847,7 @@ final class SynthesisFilter {
    * by allowing a block of 16 to be addressed with constant offset.\r
    **/\r
   // TODO CONST\r
-  \r
+\r
   private final static float d16[][] = null;\r
 \r
   /**\r
@@ -2141,91 +1905,6 @@ final class SynthesisFilter {
   // The original data for d[]. This data is loaded from a file\r
   // to reduce the overall package size and to improve performance.\r
 \r
-  static final float d[] = { 0.000000000f, -0.000442505f, 0.003250122f, -0.007003784f,\r
-      0.031082153f, -0.078628540f, 0.100311279f, -0.572036743f, 1.144989014f, 0.572036743f,\r
-      0.100311279f, 0.078628540f, 0.031082153f, 0.007003784f, 0.003250122f, 0.000442505f,\r
-      -0.000015259f, -0.000473022f, 0.003326416f, -0.007919312f, 0.030517578f, -0.084182739f,\r
-      0.090927124f, -0.600219727f, 1.144287109f, 0.543823242f, 0.108856201f, 0.073059082f,\r
-      0.031478882f, 0.006118774f, 0.003173828f, 0.000396729f, -0.000015259f, -0.000534058f,\r
-      0.003387451f, -0.008865356f, 0.029785156f, -0.089706421f, 0.080688477f, -0.628295898f,\r
-      1.142211914f, 0.515609741f, 0.116577148f, 0.067520142f, 0.031738281f, 0.005294800f,\r
-      0.003082275f, 0.000366211f, -0.000015259f, -0.000579834f, 0.003433228f, -0.009841919f,\r
-      0.028884888f, -0.095169067f, 0.069595337f, -0.656219482f, 1.138763428f, 0.487472534f,\r
-      0.123474121f, 0.061996460f, 0.031845093f, 0.004486084f, 0.002990723f, 0.000320435f,\r
-      -0.000015259f, -0.000625610f, 0.003463745f, -0.010848999f, 0.027801514f, -0.100540161f,\r
-      0.057617188f, -0.683914185f, 1.133926392f, 0.459472656f, 0.129577637f, 0.056533813f,\r
-      0.031814575f, 0.003723145f, 0.002899170f, 0.000289917f, -0.000015259f, -0.000686646f,\r
-      0.003479004f, -0.011886597f, 0.026535034f, -0.105819702f, 0.044784546f, -0.711318970f,\r
-      1.127746582f, 0.431655884f, 0.134887695f, 0.051132202f, 0.031661987f, 0.003005981f,\r
-      0.002792358f, 0.000259399f, -0.000015259f, -0.000747681f, 0.003479004f, -0.012939453f,\r
-      0.025085449f, -0.110946655f, 0.031082153f, -0.738372803f, 1.120223999f, 0.404083252f,\r
-      0.139450073f, 0.045837402f, 0.031387329f, 0.002334595f, 0.002685547f, 0.000244141f,\r
-      -0.000030518f, -0.000808716f, 0.003463745f, -0.014022827f, 0.023422241f, -0.115921021f,\r
-      0.016510010f, -0.765029907f, 1.111373901f, 0.376800537f, 0.143264771f, 0.040634155f,\r
-      0.031005859f, 0.001693726f, 0.002578735f, 0.000213623f, -0.000030518f, -0.000885010f,\r
-      0.003417969f, -0.015121460f, 0.021575928f, -0.120697021f, 0.001068115f, -0.791213989f,\r
-      1.101211548f, 0.349868774f, 0.146362305f, 0.035552979f, 0.030532837f, 0.001098633f,\r
-      0.002456665f, 0.000198364f, -0.000030518f, -0.000961304f, 0.003372192f, -0.016235352f,\r
-      0.019531250f, -0.125259399f, -0.015228271f, -0.816864014f, 1.089782715f, 0.323318481f,\r
-      0.148773193f, 0.030609131f, 0.029937744f, 0.000549316f, 0.002349854f, 0.000167847f,\r
-      -0.000030518f, -0.001037598f, 0.003280640f, -0.017349243f, 0.017257690f, -0.129562378f,\r
-      -0.032379150f, -0.841949463f, 1.077117920f, 0.297210693f, 0.150497437f, 0.025817871f,\r
-      0.029281616f, 0.000030518f, 0.002243042f, 0.000152588f, -0.000045776f, -0.001113892f,\r
-      0.003173828f, -0.018463135f, 0.014801025f, -0.133590698f, -0.050354004f, -0.866363525f,\r
-      1.063217163f, 0.271591187f, 0.151596069f, 0.021179199f, 0.028533936f, -0.000442505f,\r
-      0.002120972f, 0.000137329f, -0.000045776f, -0.001205444f, 0.003051758f, -0.019577026f,\r
-      0.012115479f, -0.137298584f, -0.069168091f, -0.890090942f, 1.048156738f, 0.246505737f,\r
-      0.152069092f, 0.016708374f, 0.027725220f, -0.000869751f, 0.002014160f, 0.000122070f,\r
-      -0.000061035f, -0.001296997f, 0.002883911f, -0.020690918f, 0.009231567f, -0.140670776f,\r
-      -0.088775635f, -0.913055420f, 1.031936646f, 0.221984863f, 0.151962280f, 0.012420654f,\r
-      0.026840210f, -0.001266479f, 0.001907349f, 0.000106812f, -0.000061035f, -0.001388550f,\r
-      0.002700806f, -0.021789551f, 0.006134033f, -0.143676758f, -0.109161377f, -0.935195923f,\r
-      1.014617920f, 0.198059082f, 0.151306152f, 0.008316040f, 0.025909424f, -0.001617432f,\r
-      0.001785278f, 0.000106812f, -0.000076294f, -0.001480103f, 0.002487183f, -0.022857666f,\r
-      0.002822876f, -0.146255493f, -0.130310059f, -0.956481934f, 0.996246338f, 0.174789429f,\r
-      0.150115967f, 0.004394531f, 0.024932861f, -0.001937866f, 0.001693726f, 0.000091553f,\r
-      -0.000076294f, -0.001586914f, 0.002227783f, -0.023910522f, -0.000686646f, -0.148422241f,\r
-      -0.152206421f, -0.976852417f, 0.976852417f, 0.152206421f, 0.148422241f, 0.000686646f,\r
-      0.023910522f, -0.002227783f, 0.001586914f, 0.000076294f, -0.000091553f, -0.001693726f,\r
-      0.001937866f, -0.024932861f, -0.004394531f, -0.150115967f, -0.174789429f, -0.996246338f,\r
-      0.956481934f, 0.130310059f, 0.146255493f, -0.002822876f, 0.022857666f, -0.002487183f,\r
-      0.001480103f, 0.000076294f, -0.000106812f, -0.001785278f, 0.001617432f, -0.025909424f,\r
-      -0.008316040f, -0.151306152f, -0.198059082f, -1.014617920f, 0.935195923f, 0.109161377f,\r
-      0.143676758f, -0.006134033f, 0.021789551f, -0.002700806f, 0.001388550f, 0.000061035f,\r
-      -0.000106812f, -0.001907349f, 0.001266479f, -0.026840210f, -0.012420654f, -0.151962280f,\r
-      -0.221984863f, -1.031936646f, 0.913055420f, 0.088775635f, 0.140670776f, -0.009231567f,\r
-      0.020690918f, -0.002883911f, 0.001296997f, 0.000061035f, -0.000122070f, -0.002014160f,\r
-      0.000869751f, -0.027725220f, -0.016708374f, -0.152069092f, -0.246505737f, -1.048156738f,\r
-      0.890090942f, 0.069168091f, 0.137298584f, -0.012115479f, 0.019577026f, -0.003051758f,\r
-      0.001205444f, 0.000045776f, -0.000137329f, -0.002120972f, 0.000442505f, -0.028533936f,\r
-      -0.021179199f, -0.151596069f, -0.271591187f, -1.063217163f, 0.866363525f, 0.050354004f,\r
-      0.133590698f, -0.014801025f, 0.018463135f, -0.003173828f, 0.001113892f, 0.000045776f,\r
-      -0.000152588f, -0.002243042f, -0.000030518f, -0.029281616f, -0.025817871f, -0.150497437f,\r
-      -0.297210693f, -1.077117920f, 0.841949463f, 0.032379150f, 0.129562378f, -0.017257690f,\r
-      0.017349243f, -0.003280640f, 0.001037598f, 0.000030518f, -0.000167847f, -0.002349854f,\r
-      -0.000549316f, -0.029937744f, -0.030609131f, -0.148773193f, -0.323318481f, -1.089782715f,\r
-      0.816864014f, 0.015228271f, 0.125259399f, -0.019531250f, 0.016235352f, -0.003372192f,\r
-      0.000961304f, 0.000030518f, -0.000198364f, -0.002456665f, -0.001098633f, -0.030532837f,\r
-      -0.035552979f, -0.146362305f, -0.349868774f, -1.101211548f, 0.791213989f, -0.001068115f,\r
-      0.120697021f, -0.021575928f, 0.015121460f, -0.003417969f, 0.000885010f, 0.000030518f,\r
-      -0.000213623f, -0.002578735f, -0.001693726f, -0.031005859f, -0.040634155f, -0.143264771f,\r
-      -0.376800537f, -1.111373901f, 0.765029907f, -0.016510010f, 0.115921021f, -0.023422241f,\r
-      0.014022827f, -0.003463745f, 0.000808716f, 0.000030518f, -0.000244141f, -0.002685547f,\r
-      -0.002334595f, -0.031387329f, -0.045837402f, -0.139450073f, -0.404083252f, -1.120223999f,\r
-      0.738372803f, -0.031082153f, 0.110946655f, -0.025085449f, 0.012939453f, -0.003479004f,\r
-      0.000747681f, 0.000015259f, -0.000259399f, -0.002792358f, -0.003005981f, -0.031661987f,\r
-      -0.051132202f, -0.134887695f, -0.431655884f, -1.127746582f, 0.711318970f, -0.044784546f,\r
-      0.105819702f, -0.026535034f, 0.011886597f, -0.003479004f, 0.000686646f, 0.000015259f,\r
-      -0.000289917f, -0.002899170f, -0.003723145f, -0.031814575f, -0.056533813f, -0.129577637f,\r
-      -0.459472656f, -1.133926392f, 0.683914185f, -0.057617188f, 0.100540161f, -0.027801514f,\r
-      0.010848999f, -0.003463745f, 0.000625610f, 0.000015259f, -0.000320435f, -0.002990723f,\r
-      -0.004486084f, -0.031845093f, -0.061996460f, -0.123474121f, -0.487472534f, -1.138763428f,\r
-      0.656219482f, -0.069595337f, 0.095169067f, -0.028884888f, 0.009841919f, -0.003433228f,\r
-      0.000579834f, 0.000015259f, -0.000366211f, -0.003082275f, -0.005294800f, -0.031738281f,\r
-      -0.067520142f, -0.116577148f, -0.515609741f, -1.142211914f, 0.628295898f, -0.080688477f,\r
-      0.089706421f, -0.029785156f, 0.008865356f, -0.003387451f, 0.000534058f, 0.000015259f,\r
-      -0.000396729f, -0.003173828f, -0.006118774f, -0.031478882f, -0.073059082f, -0.108856201f,\r
-      -0.543823242f, -1.144287109f, 0.600219727f, -0.090927124f, 0.084182739f, -0.030517578f,\r
-      0.007919312f, -0.003326416f, 0.000473022f, 0.000015259f };\r
+  static final float d[] = { 0.000000000f, -0.000442505f, 0.003250122f, -0.007003784f, 0.031082153f, -0.078628540f, 0.100311279f, -0.572036743f, 1.144989014f, 0.572036743f, 0.100311279f, 0.078628540f, 0.031082153f, 0.007003784f, 0.003250122f, 0.000442505f, -0.000015259f, -0.000473022f, 0.003326416f, -0.007919312f, 0.030517578f, -0.084182739f, 0.090927124f, -0.600219727f, 1.144287109f, 0.543823242f, 0.108856201f, 0.073059082f, 0.031478882f, 0.006118774f, 0.003173828f, 0.000396729f, -0.000015259f, -0.000534058f, 0.003387451f, -0.008865356f, 0.029785156f, -0.089706421f, 0.080688477f, -0.628295898f, 1.142211914f, 0.515609741f, 0.116577148f, 0.067520142f, 0.031738281f, 0.005294800f, 0.003082275f, 0.000366211f, -0.000015259f, -0.000579834f, 0.003433228f, -0.009841919f, 0.028884888f, -0.095169067f, 0.069595337f, -0.656219482f, 1.138763428f, 0.487472534f, 0.123474121f, 0.061996460f, 0.031845093f, 0.004486084f, 0.002990723f, 0.000320435f, -0.000015259f, -0.000625610f, 0.003463745f, -0.010848999f, 0.027801514f, -0.100540161f, 0.057617188f, -0.683914185f, 1.133926392f, 0.459472656f, 0.129577637f, 0.056533813f, 0.031814575f, 0.003723145f, 0.002899170f, 0.000289917f, -0.000015259f, -0.000686646f, 0.003479004f, -0.011886597f, 0.026535034f, -0.105819702f, 0.044784546f, -0.711318970f, 1.127746582f, 0.431655884f, 0.134887695f, 0.051132202f, 0.031661987f, 0.003005981f, 0.002792358f, 0.000259399f, -0.000015259f, -0.000747681f, 0.003479004f, -0.012939453f, 0.025085449f, -0.110946655f, 0.031082153f, -0.738372803f, 1.120223999f, 0.404083252f, 0.139450073f, 0.045837402f, 0.031387329f, 0.002334595f, 0.002685547f, 0.000244141f, -0.000030518f, -0.000808716f, 0.003463745f, -0.014022827f, 0.023422241f, -0.115921021f, 0.016510010f, -0.765029907f, 1.111373901f, 0.376800537f, 0.143264771f, 0.040634155f, 0.031005859f, 0.001693726f, 0.002578735f, 0.000213623f, -0.000030518f, -0.000885010f, 0.003417969f, -0.015121460f, 0.021575928f, -0.120697021f, 0.001068115f, -0.791213989f, 1.101211548f, 0.349868774f, 0.146362305f, 0.035552979f, 0.030532837f, 0.001098633f, 0.002456665f, 0.000198364f, -0.000030518f, -0.000961304f, 0.003372192f, -0.016235352f, 0.019531250f, -0.125259399f, -0.015228271f, -0.816864014f, 1.089782715f, 0.323318481f, 0.148773193f, 0.030609131f, 0.029937744f, 0.000549316f, 0.002349854f, 0.000167847f, -0.000030518f, -0.001037598f, 0.003280640f, -0.017349243f, 0.017257690f, -0.129562378f, -0.032379150f, -0.841949463f, 1.077117920f, 0.297210693f, 0.150497437f, 0.025817871f, 0.029281616f, 0.000030518f, 0.002243042f, 0.000152588f, -0.000045776f, -0.001113892f, 0.003173828f, -0.018463135f, 0.014801025f, -0.133590698f, -0.050354004f, -0.866363525f, 1.063217163f, 0.271591187f, 0.151596069f, 0.021179199f, 0.028533936f, -0.000442505f, 0.002120972f, 0.000137329f, -0.000045776f, -0.001205444f, 0.003051758f, -0.019577026f, 0.012115479f, -0.137298584f, -0.069168091f, -0.890090942f, 1.048156738f, 0.246505737f, 0.152069092f, 0.016708374f, 0.027725220f, -0.000869751f, 0.002014160f, 0.000122070f, -0.000061035f, -0.001296997f, 0.002883911f, -0.020690918f, 0.009231567f, -0.140670776f, -0.088775635f, -0.913055420f, 1.031936646f, 0.221984863f, 0.151962280f, 0.012420654f, 0.026840210f, -0.001266479f, 0.001907349f, 0.000106812f, -0.000061035f, -0.001388550f, 0.002700806f, -0.021789551f, 0.006134033f, -0.143676758f, -0.109161377f, -0.935195923f, 1.014617920f, 0.198059082f, 0.151306152f, 0.008316040f, 0.025909424f, -0.001617432f, 0.001785278f, 0.000106812f, -0.000076294f, -0.001480103f, 0.002487183f, -0.022857666f, 0.002822876f, -0.146255493f, -0.130310059f, -0.956481934f, 0.996246338f, 0.174789429f, 0.150115967f, 0.004394531f, 0.024932861f, -0.001937866f, 0.001693726f, 0.000091553f, -0.000076294f, -0.001586914f, 0.002227783f, -0.023910522f, -0.000686646f, -0.148422241f, -0.152206421f, -0.976852417f, 0.976852417f, 0.152206421f, 0.148422241f, 0.000686646f, 0.023910522f, -0.002227783f, 0.001586914f, 0.000076294f, -0.000091553f, -0.001693726f, 0.001937866f, -0.024932861f, -0.004394531f, -0.150115967f, -0.174789429f, -0.996246338f, 0.956481934f, 0.130310059f, 0.146255493f, -0.002822876f, 0.022857666f, -0.002487183f, 0.001480103f, 0.000076294f, -0.000106812f, -0.001785278f, 0.001617432f, -0.025909424f, -0.008316040f, -0.151306152f, -0.198059082f, -1.014617920f, 0.935195923f, 0.109161377f, 0.143676758f, -0.006134033f, 0.021789551f, -0.002700806f, 0.001388550f, 0.000061035f, -0.000106812f, -0.001907349f, 0.001266479f, -0.026840210f, -0.012420654f, -0.151962280f, -0.221984863f, -1.031936646f, 0.913055420f, 0.088775635f, 0.140670776f, -0.009231567f, 0.020690918f, -0.002883911f, 0.001296997f, 0.000061035f, -0.000122070f, -0.002014160f, 0.000869751f, -0.027725220f, -0.016708374f, -0.152069092f, -0.246505737f, -1.048156738f, 0.890090942f, 0.069168091f, 0.137298584f, -0.012115479f, 0.019577026f, -0.003051758f, 0.001205444f, 0.000045776f, -0.000137329f, -0.002120972f, 0.000442505f, -0.028533936f, -0.021179199f, -0.151596069f, -0.271591187f, -1.063217163f, 0.866363525f, 0.050354004f, 0.133590698f, -0.014801025f, 0.018463135f, -0.003173828f, 0.001113892f, 0.000045776f, -0.000152588f, -0.002243042f, -0.000030518f, -0.029281616f, -0.025817871f, -0.150497437f, -0.297210693f, -1.077117920f, 0.841949463f, 0.032379150f, 0.129562378f, -0.017257690f, 0.017349243f, -0.003280640f, 0.001037598f, 0.000030518f, -0.000167847f, -0.002349854f, -0.000549316f, -0.029937744f, -0.030609131f, -0.148773193f, -0.323318481f, -1.089782715f, 0.816864014f, 0.015228271f, 0.125259399f, -0.019531250f, 0.016235352f, -0.003372192f, 0.000961304f, 0.000030518f, -0.000198364f, -0.002456665f, -0.001098633f, -0.030532837f, -0.035552979f, -0.146362305f, -0.349868774f, -1.101211548f, 0.791213989f, -0.001068115f, 0.120697021f, -0.021575928f, 0.015121460f, -0.003417969f, 0.000885010f, 0.000030518f, -0.000213623f, -0.002578735f, -0.001693726f, -0.031005859f, -0.040634155f, -0.143264771f, -0.376800537f, -1.111373901f, 0.765029907f, -0.016510010f, 0.115921021f, -0.023422241f, 0.014022827f, -0.003463745f, 0.000808716f, 0.000030518f, -0.000244141f, -0.002685547f, -0.002334595f, -0.031387329f, -0.045837402f, -0.139450073f, -0.404083252f, -1.120223999f, 0.738372803f, -0.031082153f, 0.110946655f, -0.025085449f, 0.012939453f, -0.003479004f, 0.000747681f, 0.000015259f, -0.000259399f, -0.002792358f, -0.003005981f, -0.031661987f, -0.051132202f, -0.134887695f, -0.431655884f, -1.127746582f, 0.711318970f, -0.044784546f, 0.105819702f, -0.026535034f, 0.011886597f, -0.003479004f, 0.000686646f, 0.000015259f, -0.000289917f, -0.002899170f, -0.003723145f, -0.031814575f, -0.056533813f, -0.129577637f, -0.459472656f, -1.133926392f, 0.683914185f, -0.057617188f, 0.100540161f, -0.027801514f, 0.010848999f, -0.003463745f, 0.000625610f, 0.000015259f, -0.000320435f, -0.002990723f, -0.004486084f, -0.031845093f, -0.061996460f, -0.123474121f, -0.487472534f, -1.138763428f, 0.656219482f, -0.069595337f, 0.095169067f, -0.028884888f, 0.009841919f, -0.003433228f, 0.000579834f, 0.000015259f, -0.000366211f, -0.003082275f, -0.005294800f, -0.031738281f, -0.067520142f, -0.116577148f, -0.515609741f, -1.142211914f, 0.628295898f, -0.080688477f, 0.089706421f, -0.029785156f, 0.008865356f, -0.003387451f, 0.000534058f, 0.000015259f, -0.000396729f, -0.003173828f, -0.006118774f, -0.031478882f, -0.073059082f, -0.108856201f, -0.543823242f, -1.144287109f, 0.600219727f, -0.090927124f, 0.084182739f, -0.030517578f, 0.007919312f, -0.003326416f, 0.000473022f, 0.000015259f };\r
 \r
 }\r
index d3c2f221841054126c0069559f37501259987950..a1fdac5be33f7e56f17d0bfb56d4d960a8f4c919 100644 (file)
  * Class to implements Huffman decoder.\r
  */\r
 \r
-\r
 final class huffcodetab {\r
   private static final int MXOFF = 250;\r
   private static final int HTN = 34;\r
 \r
-  \r
   private char tablename0 = ' '; /* string, containing table_description */\r
-  \r
+\r
   private char tablename1 = ' '; /* string, containing table_description */\r
-  \r
+\r
   private char tablename2 = ' '; /* string, containing table_description */\r
 \r
-  \r
   private int xlen; /* max. x-index+ */\r
-  \r
+\r
   private int ylen; /* max. y-index+ */\r
-  \r
+\r
   private int linbits; /* number of linbits */\r
-  \r
+\r
   private int linmax; /* max number to be stored in linbits */\r
-  \r
+\r
   private int ref; /* a positive value indicates a reference */\r
-  \r
+\r
   private int[] table = null; /* pointer to array[xlen][ylen] */\r
-  \r
+\r
   private int[] hlen = null; /* pointer to array[xlen][ylen] */\r
-  \r
+\r
   private int[][] val = null; /* decoder tree */\r
-  \r
+\r
   private int treelen; /* length of decoder tree */\r
 \r
-  \r
   private static int ValTab0[][] = { { 0, 0 } // dummy\r
-      };\r
+  };\r
 \r
-  \r
-  private static int ValTab1[][] = { { 2, 1 }, { 0, 0 }, { 2, 1 }, { 0, 16 }, { 2, 1 }, { 0, 1 },\r
-      { 0, 17 }, };\r
+  private static int ValTab1[][] = { { 2, 1 }, { 0, 0 }, { 2, 1 }, { 0, 16 }, { 2, 1 }, { 0, 1 }, { 0, 17 }, };\r
 \r
-  \r
-  private static int ValTab2[][] = { { 2, 1 }, { 0, 0 }, { 4, 1 }, { 2, 1 }, { 0, 16 }, { 0, 1 },\r
-      { 2, 1 }, { 0, 17 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 33 }, { 2, 1 }, { 0, 18 }, { 2, 1 },\r
-      { 0, 2 }, { 0, 34 }, };\r
+  private static int ValTab2[][] = { { 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 }, };\r
 \r
-  \r
-  private static int ValTab3[][] = { { 4, 1 }, { 2, 1 }, { 0, 0 }, { 0, 1 }, { 2, 1 }, { 0, 17 },\r
-      { 2, 1 }, { 0, 16 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 33 }, { 2, 1 }, { 0, 18 }, { 2, 1 },\r
-      { 0, 2 }, { 0, 34 }, };\r
+  private static int ValTab3[][] = { { 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 }, };\r
 \r
-  \r
   private static int ValTab4[][] = { { 0, 0 } }; // dummy\r
 \r
-  \r
-  private static int ValTab5[][] = { { 2, 1 }, { 0, 0 }, { 4, 1 }, { 2, 1 }, { 0, 16 }, { 0, 1 },\r
-      { 2, 1 }, { 0, 17 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 2, 1 }, { 0, 33 },\r
-      { 0, 18 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 34 }, { 0, 48 }, { 2, 1 }, { 0, 3 }, { 0, 19 },\r
-      { 2, 1 }, { 0, 49 }, { 2, 1 }, { 0, 50 }, { 2, 1 }, { 0, 35 }, { 0, 51 }, };\r
-\r
-  \r
-  private static int ValTab6[][] = { { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 0 }, { 0, 16 }, { 0, 17 },\r
-      { 6, 1 }, { 2, 1 }, { 0, 1 }, { 2, 1 }, { 0, 32 }, { 0, 33 }, { 6, 1 }, { 2, 1 }, { 0, 18 },\r
-      { 2, 1 }, { 0, 2 }, { 0, 34 }, { 4, 1 }, { 2, 1 }, { 0, 49 }, { 0, 19 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 48 }, { 0, 50 }, { 2, 1 }, { 0, 35 }, { 2, 1 }, { 0, 3 }, { 0, 51 }, };\r
-\r
-  \r
-  private static int ValTab7[][] = { { 2, 1 }, { 0, 0 }, { 4, 1 }, { 2, 1 }, { 0, 16 }, { 0, 1 },\r
-      { 8, 1 }, { 2, 1 }, { 0, 17 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 0, 33 }, { 18, 1 },\r
-      { 6, 1 }, { 2, 1 }, { 0, 18 }, { 2, 1 }, { 0, 34 }, { 0, 48 }, { 4, 1 }, { 2, 1 }, { 0, 49 },\r
-      { 0, 19 }, { 4, 1 }, { 2, 1 }, { 0, 3 }, { 0, 50 }, { 2, 1 }, { 0, 35 }, { 0, 4 }, { 10, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 64 }, { 0, 65 }, { 2, 1 }, { 0, 20 }, { 2, 1 }, { 0, 66 },\r
-      { 0, 36 }, { 12, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 51 }, { 0, 67 }, { 0, 80 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 52 }, { 0, 5 }, { 0, 81 }, { 6, 1 }, { 2, 1 }, { 0, 21 }, { 2, 1 },\r
-      { 0, 82 }, { 0, 37 }, { 4, 1 }, { 2, 1 }, { 0, 68 }, { 0, 53 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 83 }, { 0, 84 }, { 2, 1 }, { 0, 69 }, { 0, 85 }, };\r
-\r
-  \r
-  private static int ValTab8[][] = { { 6, 1 }, { 2, 1 }, { 0, 0 }, { 2, 1 }, { 0, 16 }, { 0, 1 },\r
-      { 2, 1 }, { 0, 17 }, { 4, 1 }, { 2, 1 }, { 0, 33 }, { 0, 18 }, { 14, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 32 }, { 0, 2 }, { 2, 1 }, { 0, 34 }, { 4, 1 }, { 2, 1 }, { 0, 48 }, { 0, 3 }, { 2, 1 },\r
-      { 0, 49 }, { 0, 19 }, { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 50 }, { 0, 35 },\r
-      { 2, 1 }, { 0, 64 }, { 0, 4 }, { 2, 1 }, { 0, 65 }, { 2, 1 }, { 0, 20 }, { 0, 66 },\r
-      { 12, 1 }, { 6, 1 }, { 2, 1 }, { 0, 36 }, { 2, 1 }, { 0, 51 }, { 0, 80 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 67 }, { 0, 52 }, { 0, 81 }, { 6, 1 }, { 2, 1 }, { 0, 21 }, { 2, 1 }, { 0, 5 },\r
-      { 0, 82 }, { 6, 1 }, { 2, 1 }, { 0, 37 }, { 2, 1 }, { 0, 68 }, { 0, 53 }, { 2, 1 },\r
-      { 0, 83 }, { 2, 1 }, { 0, 69 }, { 2, 1 }, { 0, 84 }, { 0, 85 }, };\r
-\r
-  \r
-  private static int ValTab9[][] = { { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 0 }, { 0, 16 }, { 2, 1 },\r
-      { 0, 1 }, { 0, 17 }, { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 33 }, { 2, 1 },\r
-      { 0, 18 }, { 2, 1 }, { 0, 2 }, { 0, 34 }, { 12, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 48 },\r
-      { 0, 3 }, { 0, 49 }, { 2, 1 }, { 0, 19 }, { 2, 1 }, { 0, 50 }, { 0, 35 }, { 12, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 65 }, { 0, 20 }, { 4, 1 }, { 2, 1 }, { 0, 64 }, { 0, 51 }, { 2, 1 },\r
-      { 0, 66 }, { 0, 36 }, { 10, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 4 }, { 0, 80 },\r
-      { 0, 67 }, { 2, 1 }, { 0, 52 }, { 0, 81 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 21 },\r
-      { 0, 82 }, { 2, 1 }, { 0, 37 }, { 0, 68 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 5 }, { 0, 84 },\r
-      { 0, 83 }, { 2, 1 }, { 0, 53 }, { 2, 1 }, { 0, 69 }, { 0, 85 }, };\r
-\r
-  \r
-  private static int ValTab10[][] = { { 2, 1 }, { 0, 0 }, { 4, 1 }, { 2, 1 }, { 0, 16 }, { 0, 1 },\r
-      { 10, 1 }, { 2, 1 }, { 0, 17 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 2, 1 }, { 0, 33 },\r
-      { 0, 18 }, { 28, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 34 }, { 0, 48 }, { 2, 1 },\r
-      { 0, 49 }, { 0, 19 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 3 }, { 0, 50 }, { 2, 1 }, { 0, 35 },\r
-      { 0, 64 }, { 4, 1 }, { 2, 1 }, { 0, 65 }, { 0, 20 }, { 4, 1 }, { 2, 1 }, { 0, 4 }, { 0, 51 },\r
-      { 2, 1 }, { 0, 66 }, { 0, 36 }, { 28, 1 }, { 10, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 80 }, { 0, 5 }, { 0, 96 }, { 2, 1 }, { 0, 97 }, { 0, 22 }, { 12, 1 }, { 6, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 67 }, { 0, 52 }, { 0, 81 }, { 2, 1 }, { 0, 21 }, { 2, 1 },\r
-      { 0, 82 }, { 0, 37 }, { 4, 1 }, { 2, 1 }, { 0, 38 }, { 0, 54 }, { 0, 113 }, { 20, 1 },\r
-      { 8, 1 }, { 2, 1 }, { 0, 23 }, { 4, 1 }, { 2, 1 }, { 0, 68 }, { 0, 83 }, { 0, 6 }, { 6, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 53 }, { 0, 69 }, { 0, 98 }, { 2, 1 }, { 0, 112 }, { 2, 1 },\r
-      { 0, 7 }, { 0, 100 }, { 14, 1 }, { 4, 1 }, { 2, 1 }, { 0, 114 }, { 0, 39 }, { 6, 1 },\r
-      { 2, 1 }, { 0, 99 }, { 2, 1 }, { 0, 84 }, { 0, 85 }, { 2, 1 }, { 0, 70 }, { 0, 115 },\r
-      { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 55 }, { 0, 101 }, { 2, 1 }, { 0, 86 }, { 0, 116 },\r
-      { 6, 1 }, { 2, 1 }, { 0, 71 }, { 2, 1 }, { 0, 102 }, { 0, 117 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 87 }, { 0, 118 }, { 2, 1 }, { 0, 103 }, { 0, 119 }, };\r
-\r
-  \r
-  private static int ValTab11[][] = { { 6, 1 }, { 2, 1 }, { 0, 0 }, { 2, 1 }, { 0, 16 }, { 0, 1 },\r
-      { 8, 1 }, { 2, 1 }, { 0, 17 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 0, 18 }, { 24, 1 },\r
-      { 8, 1 }, { 2, 1 }, { 0, 33 }, { 2, 1 }, { 0, 34 }, { 2, 1 }, { 0, 48 }, { 0, 3 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 49 }, { 0, 19 }, { 4, 1 }, { 2, 1 }, { 0, 50 }, { 0, 35 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 64 }, { 0, 4 }, { 2, 1 }, { 0, 65 }, { 0, 20 }, { 30, 1 }, { 16, 1 }, { 10, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 66 }, { 0, 36 }, { 4, 1 }, { 2, 1 }, { 0, 51 }, { 0, 67 },\r
-      { 0, 80 }, { 4, 1 }, { 2, 1 }, { 0, 52 }, { 0, 81 }, { 0, 97 }, { 6, 1 }, { 2, 1 },\r
-      { 0, 22 }, { 2, 1 }, { 0, 6 }, { 0, 38 }, { 2, 1 }, { 0, 98 }, { 2, 1 }, { 0, 21 }, { 2, 1 },\r
-      { 0, 5 }, { 0, 82 }, { 16, 1 }, { 10, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 37 },\r
-      { 0, 68 }, { 0, 96 }, { 2, 1 }, { 0, 99 }, { 0, 54 }, { 4, 1 }, { 2, 1 }, { 0, 112 },\r
-      { 0, 23 }, { 0, 113 }, { 16, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 7 }, { 0, 100 },\r
-      { 0, 114 }, { 2, 1 }, { 0, 39 }, { 4, 1 }, { 2, 1 }, { 0, 83 }, { 0, 53 }, { 2, 1 },\r
-      { 0, 84 }, { 0, 69 }, { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 70 }, { 0, 115 }, { 2, 1 },\r
-      { 0, 55 }, { 2, 1 }, { 0, 101 }, { 0, 86 }, { 10, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 85 }, { 0, 87 }, { 0, 116 }, { 2, 1 }, { 0, 71 }, { 0, 102 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 117 }, { 0, 118 }, { 2, 1 }, { 0, 103 }, { 0, 119 }, };\r
-\r
-  \r
-  private static int ValTab12[][] = { { 12, 1 }, { 4, 1 }, { 2, 1 }, { 0, 16 }, { 0, 1 }, { 2, 1 },\r
-      { 0, 17 }, { 2, 1 }, { 0, 0 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 16, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 33 }, { 0, 18 }, { 4, 1 }, { 2, 1 }, { 0, 34 }, { 0, 49 }, { 2, 1 }, { 0, 19 },\r
-      { 2, 1 }, { 0, 48 }, { 2, 1 }, { 0, 3 }, { 0, 64 }, { 26, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 50 }, { 0, 35 }, { 2, 1 }, { 0, 65 }, { 0, 51 }, { 10, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 20 }, { 0, 66 }, { 2, 1 }, { 0, 36 }, { 2, 1 }, { 0, 4 }, { 0, 80 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 67 }, { 0, 52 }, { 2, 1 }, { 0, 81 }, { 0, 21 }, { 28, 1 }, { 14, 1 }, { 8, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 82 }, { 0, 37 }, { 2, 1 }, { 0, 83 }, { 0, 53 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 96 }, { 0, 22 }, { 0, 97 }, { 4, 1 }, { 2, 1 }, { 0, 98 }, { 0, 38 }, { 6, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 5 }, { 0, 6 }, { 0, 68 }, { 2, 1 }, { 0, 84 }, { 0, 69 }, { 18, 1 },\r
-      { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 99 }, { 0, 54 }, { 4, 1 }, { 2, 1 }, { 0, 112 },\r
-      { 0, 7 }, { 0, 113 }, { 4, 1 }, { 2, 1 }, { 0, 23 }, { 0, 100 }, { 2, 1 }, { 0, 70 },\r
-      { 0, 114 }, { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 39 }, { 2, 1 }, { 0, 85 }, { 0, 115 },\r
-      { 2, 1 }, { 0, 55 }, { 0, 86 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 101 }, { 0, 116 },\r
-      { 2, 1 }, { 0, 71 }, { 0, 102 }, { 4, 1 }, { 2, 1 }, { 0, 117 }, { 0, 87 }, { 2, 1 },\r
-      { 0, 118 }, { 2, 1 }, { 0, 103 }, { 0, 119 }, };\r
-\r
-  \r
-  private static int ValTab13[][] = { { 2, 1 }, { 0, 0 }, { 6, 1 }, { 2, 1 }, { 0, 16 }, { 2, 1 },\r
-      { 0, 1 }, { 0, 17 }, { 28, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 2, 1 },\r
-      { 0, 33 }, { 0, 18 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 34 }, { 0, 48 }, { 2, 1 }, { 0, 3 },\r
-      { 0, 49 }, { 6, 1 }, { 2, 1 }, { 0, 19 }, { 2, 1 }, { 0, 50 }, { 0, 35 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 64 }, { 0, 4 }, { 0, 65 }, { 70, 1 }, { 28, 1 }, { 14, 1 }, { 6, 1 }, { 2, 1 },\r
-      { 0, 20 }, { 2, 1 }, { 0, 51 }, { 0, 66 }, { 4, 1 }, { 2, 1 }, { 0, 36 }, { 0, 80 },\r
-      { 2, 1 }, { 0, 67 }, { 0, 52 }, { 4, 1 }, { 2, 1 }, { 0, 81 }, { 0, 21 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 5 }, { 0, 82 }, { 2, 1 }, { 0, 37 }, { 2, 1 }, { 0, 68 }, { 0, 83 }, { 14, 1 },\r
-      { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 96 }, { 0, 6 }, { 2, 1 }, { 0, 97 }, { 0, 22 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 128 }, { 0, 8 }, { 0, 129 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 53 }, { 0, 98 }, { 2, 1 }, { 0, 38 }, { 0, 84 }, { 4, 1 }, { 2, 1 }, { 0, 69 },\r
-      { 0, 99 }, { 2, 1 }, { 0, 54 }, { 0, 112 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 7 },\r
-      { 0, 85 }, { 0, 113 }, { 2, 1 }, { 0, 23 }, { 2, 1 }, { 0, 39 }, { 0, 55 }, { 72, 1 },\r
-      { 24, 1 }, { 12, 1 }, { 4, 1 }, { 2, 1 }, { 0, 24 }, { 0, 130 }, { 2, 1 }, { 0, 40 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 100 }, { 0, 70 }, { 0, 114 }, { 8, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 132 }, { 0, 72 }, { 2, 1 }, { 0, 144 }, { 0, 9 }, { 2, 1 }, { 0, 145 }, { 0, 25 },\r
-      { 24, 1 }, { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 115 }, { 0, 101 }, { 2, 1 },\r
-      { 0, 86 }, { 0, 116 }, { 4, 1 }, { 2, 1 }, { 0, 71 }, { 0, 102 }, { 0, 131 }, { 6, 1 },\r
-      { 2, 1 }, { 0, 56 }, { 2, 1 }, { 0, 117 }, { 0, 87 }, { 2, 1 }, { 0, 146 }, { 0, 41 },\r
-      { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 103 }, { 0, 133 }, { 2, 1 }, { 0, 88 },\r
-      { 0, 57 }, { 2, 1 }, { 0, 147 }, { 2, 1 }, { 0, 73 }, { 0, 134 }, { 6, 1 }, { 2, 1 },\r
-      { 0, 160 }, { 2, 1 }, { 0, 104 }, { 0, 10 }, { 2, 1 }, { 0, 161 }, { 0, 26 }, { 68, 1 },\r
-      { 24, 1 }, { 12, 1 }, { 4, 1 }, { 2, 1 }, { 0, 162 }, { 0, 42 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 149 }, { 0, 89 }, { 2, 1 }, { 0, 163 }, { 0, 58 }, { 8, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 74 }, { 0, 150 }, { 2, 1 }, { 0, 176 }, { 0, 11 }, { 2, 1 }, { 0, 177 }, { 0, 27 },\r
-      { 20, 1 }, { 8, 1 }, { 2, 1 }, { 0, 178 }, { 4, 1 }, { 2, 1 }, { 0, 118 }, { 0, 119 },\r
-      { 0, 148 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 135 }, { 0, 120 }, { 0, 164 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 105 }, { 0, 165 }, { 0, 43 }, { 12, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 90 }, { 0, 136 }, { 0, 179 }, { 2, 1 }, { 0, 59 }, { 2, 1 }, { 0, 121 }, { 0, 166 },\r
-      { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 106 }, { 0, 180 }, { 0, 192 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 12 }, { 0, 152 }, { 0, 193 }, { 60, 1 }, { 22, 1 }, { 10, 1 }, { 6, 1 }, { 2, 1 },\r
-      { 0, 28 }, { 2, 1 }, { 0, 137 }, { 0, 181 }, { 2, 1 }, { 0, 91 }, { 0, 194 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 44 }, { 0, 60 }, { 4, 1 }, { 2, 1 }, { 0, 182 }, { 0, 107 }, { 2, 1 },\r
-      { 0, 196 }, { 0, 76 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 168 }, { 0, 138 },\r
-      { 2, 1 }, { 0, 208 }, { 0, 13 }, { 2, 1 }, { 0, 209 }, { 2, 1 }, { 0, 75 }, { 2, 1 },\r
-      { 0, 151 }, { 0, 167 }, { 12, 1 }, { 6, 1 }, { 2, 1 }, { 0, 195 }, { 2, 1 }, { 0, 122 },\r
-      { 0, 153 }, { 4, 1 }, { 2, 1 }, { 0, 197 }, { 0, 92 }, { 0, 183 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 29 }, { 0, 210 }, { 2, 1 }, { 0, 45 }, { 2, 1 }, { 0, 123 }, { 0, 211 }, { 52, 1 },\r
-      { 28, 1 }, { 12, 1 }, { 4, 1 }, { 2, 1 }, { 0, 61 }, { 0, 198 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 108 }, { 0, 169 }, { 2, 1 }, { 0, 154 }, { 0, 212 }, { 8, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 184 }, { 0, 139 }, { 2, 1 }, { 0, 77 }, { 0, 199 }, { 4, 1 }, { 2, 1 }, { 0, 124 },\r
-      { 0, 213 }, { 2, 1 }, { 0, 93 }, { 0, 224 }, { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 225 },\r
-      { 0, 30 }, { 4, 1 }, { 2, 1 }, { 0, 14 }, { 0, 46 }, { 0, 226 }, { 8, 1 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 227 }, { 0, 109 }, { 2, 1 }, { 0, 140 }, { 0, 228 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 229 }, { 0, 186 }, { 0, 240 }, { 38, 1 }, { 16, 1 }, { 4, 1 }, { 2, 1 }, { 0, 241 },\r
-      { 0, 31 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 170 }, { 0, 155 }, { 0, 185 }, { 2, 1 },\r
-      { 0, 62 }, { 2, 1 }, { 0, 214 }, { 0, 200 }, { 12, 1 }, { 6, 1 }, { 2, 1 }, { 0, 78 },\r
-      { 2, 1 }, { 0, 215 }, { 0, 125 }, { 2, 1 }, { 0, 171 }, { 2, 1 }, { 0, 94 }, { 0, 201 },\r
-      { 6, 1 }, { 2, 1 }, { 0, 15 }, { 2, 1 }, { 0, 156 }, { 0, 110 }, { 2, 1 }, { 0, 242 },\r
-      { 0, 47 }, { 32, 1 }, { 16, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 216 }, { 0, 141 },\r
-      { 0, 63 }, { 6, 1 }, { 2, 1 }, { 0, 243 }, { 2, 1 }, { 0, 230 }, { 0, 202 }, { 2, 1 },\r
-      { 0, 244 }, { 0, 79 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 187 }, { 0, 172 }, { 2, 1 },\r
-      { 0, 231 }, { 0, 245 }, { 4, 1 }, { 2, 1 }, { 0, 217 }, { 0, 157 }, { 2, 1 }, { 0, 95 },\r
-      { 0, 232 }, { 30, 1 }, { 12, 1 }, { 6, 1 }, { 2, 1 }, { 0, 111 }, { 2, 1 }, { 0, 246 },\r
-      { 0, 203 }, { 4, 1 }, { 2, 1 }, { 0, 188 }, { 0, 173 }, { 0, 218 }, { 8, 1 }, { 2, 1 },\r
-      { 0, 247 }, { 4, 1 }, { 2, 1 }, { 0, 126 }, { 0, 127 }, { 0, 142 }, { 6, 1 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 158 }, { 0, 174 }, { 0, 204 }, { 2, 1 }, { 0, 248 }, { 0, 143 }, { 18, 1 },\r
-      { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 219 }, { 0, 189 }, { 2, 1 }, { 0, 234 }, { 0, 249 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 159 }, { 0, 235 }, { 2, 1 }, { 0, 190 }, { 2, 1 }, { 0, 205 },\r
-      { 0, 250 }, { 14, 1 }, { 4, 1 }, { 2, 1 }, { 0, 221 }, { 0, 236 }, { 6, 1 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 233 }, { 0, 175 }, { 0, 220 }, { 2, 1 }, { 0, 206 }, { 0, 251 }, { 8, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 191 }, { 0, 222 }, { 2, 1 }, { 0, 207 }, { 0, 238 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 223 }, { 0, 239 }, { 2, 1 }, { 0, 255 }, { 2, 1 }, { 0, 237 }, { 2, 1 },\r
-      { 0, 253 }, { 2, 1 }, { 0, 252 }, { 0, 254 }, };\r
-\r
-  \r
+  private static int ValTab5[][] = { { 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 }, };\r
+\r
+  private static int ValTab6[][] = { { 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 }, };\r
+\r
+  private static int ValTab7[][] = { { 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 }, };\r
+\r
+  private static int ValTab8[][] = { { 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 }, };\r
+\r
+  private static int ValTab9[][] = { { 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 }, };\r
+\r
+  private static int ValTab10[][] = { { 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 }, };\r
+\r
+  private static int ValTab11[][] = { { 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 }, };\r
+\r
+  private static int ValTab12[][] = { { 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 }, };\r
+\r
+  private static int ValTab13[][] = { { 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 }, };\r
+\r
   private static int ValTab14[][] = { { 0, 0 } // dummy\r
-      };\r
-\r
-  \r
-  private static int ValTab15[][] = { { 16, 1 }, { 6, 1 }, { 2, 1 }, { 0, 0 }, { 2, 1 }, { 0, 16 },\r
-      { 0, 1 }, { 2, 1 }, { 0, 17 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 2, 1 }, { 0, 33 },\r
-      { 0, 18 }, { 50, 1 }, { 16, 1 }, { 6, 1 }, { 2, 1 }, { 0, 34 }, { 2, 1 }, { 0, 48 },\r
-      { 0, 49 }, { 6, 1 }, { 2, 1 }, { 0, 19 }, { 2, 1 }, { 0, 3 }, { 0, 64 }, { 2, 1 }, { 0, 50 },\r
-      { 0, 35 }, { 14, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 4 }, { 0, 20 }, { 0, 65 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 51 }, { 0, 66 }, { 2, 1 }, { 0, 36 }, { 0, 67 }, { 10, 1 }, { 6, 1 },\r
-      { 2, 1 }, { 0, 52 }, { 2, 1 }, { 0, 80 }, { 0, 5 }, { 2, 1 }, { 0, 81 }, { 0, 21 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 82 }, { 0, 37 }, { 4, 1 }, { 2, 1 }, { 0, 68 }, { 0, 83 }, { 0, 97 },\r
-      { 90, 1 }, { 36, 1 }, { 18, 1 }, { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 53 }, { 2, 1 },\r
-      { 0, 96 }, { 0, 6 }, { 2, 1 }, { 0, 22 }, { 0, 98 }, { 4, 1 }, { 2, 1 }, { 0, 38 },\r
-      { 0, 84 }, { 2, 1 }, { 0, 69 }, { 0, 99 }, { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 54 },\r
-      { 2, 1 }, { 0, 112 }, { 0, 7 }, { 2, 1 }, { 0, 113 }, { 0, 85 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 23 }, { 0, 100 }, { 2, 1 }, { 0, 114 }, { 0, 39 }, { 24, 1 }, { 16, 1 }, { 8, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 70 }, { 0, 115 }, { 2, 1 }, { 0, 55 }, { 0, 101 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 86 }, { 0, 128 }, { 2, 1 }, { 0, 8 }, { 0, 116 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 129 }, { 0, 24 }, { 2, 1 }, { 0, 130 }, { 0, 40 }, { 16, 1 }, { 8, 1 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 71 }, { 0, 102 }, { 2, 1 }, { 0, 131 }, { 0, 56 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 117 }, { 0, 87 }, { 2, 1 }, { 0, 132 }, { 0, 72 }, { 6, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 144 }, { 0, 25 }, { 0, 145 }, { 4, 1 }, { 2, 1 }, { 0, 146 }, { 0, 118 }, { 2, 1 },\r
-      { 0, 103 }, { 0, 41 }, { 92, 1 }, { 36, 1 }, { 18, 1 }, { 10, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 133 }, { 0, 88 }, { 4, 1 }, { 2, 1 }, { 0, 9 }, { 0, 119 }, { 0, 147 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 57 }, { 0, 148 }, { 2, 1 }, { 0, 73 }, { 0, 134 }, { 10, 1 }, { 6, 1 },\r
-      { 2, 1 }, { 0, 104 }, { 2, 1 }, { 0, 160 }, { 0, 10 }, { 2, 1 }, { 0, 161 }, { 0, 26 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 162 }, { 0, 42 }, { 2, 1 }, { 0, 149 }, { 0, 89 }, { 26, 1 },\r
-      { 14, 1 }, { 6, 1 }, { 2, 1 }, { 0, 163 }, { 2, 1 }, { 0, 58 }, { 0, 135 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 120 }, { 0, 164 }, { 2, 1 }, { 0, 74 }, { 0, 150 }, { 6, 1 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 105 }, { 0, 176 }, { 0, 177 }, { 4, 1 }, { 2, 1 }, { 0, 27 }, { 0, 165 },\r
-      { 0, 178 }, { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 90 }, { 0, 43 }, { 2, 1 },\r
-      { 0, 136 }, { 0, 151 }, { 2, 1 }, { 0, 179 }, { 2, 1 }, { 0, 121 }, { 0, 59 }, { 8, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 106 }, { 0, 180 }, { 2, 1 }, { 0, 75 }, { 0, 193 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 152 }, { 0, 137 }, { 2, 1 }, { 0, 28 }, { 0, 181 }, { 80, 1 }, { 34, 1 },\r
-      { 16, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 91 }, { 0, 44 }, { 0, 194 }, { 6, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 11 }, { 0, 192 }, { 0, 166 }, { 2, 1 }, { 0, 167 }, { 0, 122 },\r
-      { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 195 }, { 0, 60 }, { 4, 1 }, { 2, 1 }, { 0, 12 },\r
-      { 0, 153 }, { 0, 182 }, { 4, 1 }, { 2, 1 }, { 0, 107 }, { 0, 196 }, { 2, 1 }, { 0, 76 },\r
-      { 0, 168 }, { 20, 1 }, { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 138 }, { 0, 197 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 208 }, { 0, 92 }, { 0, 209 }, { 4, 1 }, { 2, 1 }, { 0, 183 }, { 0, 123 },\r
-      { 2, 1 }, { 0, 29 }, { 2, 1 }, { 0, 13 }, { 0, 45 }, { 12, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 210 }, { 0, 211 }, { 4, 1 }, { 2, 1 }, { 0, 61 }, { 0, 198 }, { 2, 1 }, { 0, 108 },\r
-      { 0, 169 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 154 }, { 0, 184 }, { 0, 212 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 139 }, { 0, 77 }, { 2, 1 }, { 0, 199 }, { 0, 124 }, { 68, 1 }, { 34, 1 },\r
-      { 18, 1 }, { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 213 }, { 0, 93 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 224 }, { 0, 14 }, { 0, 225 }, { 4, 1 }, { 2, 1 }, { 0, 30 }, { 0, 226 }, { 2, 1 },\r
-      { 0, 170 }, { 0, 46 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 185 }, { 0, 155 }, { 2, 1 },\r
-      { 0, 227 }, { 0, 214 }, { 4, 1 }, { 2, 1 }, { 0, 109 }, { 0, 62 }, { 2, 1 }, { 0, 200 },\r
-      { 0, 140 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 228 }, { 0, 78 }, { 2, 1 },\r
-      { 0, 215 }, { 0, 125 }, { 4, 1 }, { 2, 1 }, { 0, 229 }, { 0, 186 }, { 2, 1 }, { 0, 171 },\r
-      { 0, 94 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 201 }, { 0, 156 }, { 2, 1 }, { 0, 241 },\r
-      { 0, 31 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 240 }, { 0, 110 }, { 0, 242 }, { 2, 1 },\r
-      { 0, 47 }, { 0, 230 }, { 38, 1 }, { 18, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 216 },\r
-      { 0, 243 }, { 2, 1 }, { 0, 63 }, { 0, 244 }, { 6, 1 }, { 2, 1 }, { 0, 79 }, { 2, 1 },\r
-      { 0, 141 }, { 0, 217 }, { 2, 1 }, { 0, 187 }, { 0, 202 }, { 8, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 172 }, { 0, 231 }, { 2, 1 }, { 0, 126 }, { 0, 245 }, { 8, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 157 }, { 0, 95 }, { 2, 1 }, { 0, 232 }, { 0, 142 }, { 2, 1 }, { 0, 246 }, { 0, 203 },\r
-      { 34, 1 }, { 18, 1 }, { 10, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 15 }, { 0, 174 },\r
-      { 0, 111 }, { 2, 1 }, { 0, 188 }, { 0, 218 }, { 4, 1 }, { 2, 1 }, { 0, 173 }, { 0, 247 },\r
-      { 2, 1 }, { 0, 127 }, { 0, 233 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 158 }, { 0, 204 },\r
-      { 2, 1 }, { 0, 248 }, { 0, 143 }, { 4, 1 }, { 2, 1 }, { 0, 219 }, { 0, 189 }, { 2, 1 },\r
-      { 0, 234 }, { 0, 249 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 159 }, { 0, 220 },\r
-      { 2, 1 }, { 0, 205 }, { 0, 235 }, { 4, 1 }, { 2, 1 }, { 0, 190 }, { 0, 250 }, { 2, 1 },\r
-      { 0, 175 }, { 0, 221 }, { 14, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 236 }, { 0, 206 },\r
-      { 0, 251 }, { 4, 1 }, { 2, 1 }, { 0, 191 }, { 0, 237 }, { 2, 1 }, { 0, 222 }, { 0, 252 },\r
-      { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 207 }, { 0, 253 }, { 0, 238 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 223 }, { 0, 254 }, { 2, 1 }, { 0, 239 }, { 0, 255 }, };\r
-\r
-  \r
-  private static int ValTab16[][] = { { 2, 1 }, { 0, 0 }, { 6, 1 }, { 2, 1 }, { 0, 16 }, { 2, 1 },\r
-      { 0, 1 }, { 0, 17 }, { 42, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 }, { 2, 1 },\r
-      { 0, 33 }, { 0, 18 }, { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 34 }, { 2, 1 }, { 0, 48 },\r
-      { 0, 3 }, { 2, 1 }, { 0, 49 }, { 0, 19 }, { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 50 },\r
-      { 0, 35 }, { 4, 1 }, { 2, 1 }, { 0, 64 }, { 0, 4 }, { 0, 65 }, { 6, 1 }, { 2, 1 }, { 0, 20 },\r
-      { 2, 1 }, { 0, 51 }, { 0, 66 }, { 4, 1 }, { 2, 1 }, { 0, 36 }, { 0, 80 }, { 2, 1 },\r
-      { 0, 67 }, { 0, 52 }, { 138, 1 }, { 40, 1 }, { 16, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 5 }, { 0, 21 }, { 0, 81 }, { 4, 1 }, { 2, 1 }, { 0, 82 }, { 0, 37 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 68 }, { 0, 53 }, { 0, 83 }, { 10, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 96 },\r
-      { 0, 6 }, { 0, 97 }, { 2, 1 }, { 0, 22 }, { 0, 98 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 38 },\r
-      { 0, 84 }, { 2, 1 }, { 0, 69 }, { 0, 99 }, { 4, 1 }, { 2, 1 }, { 0, 54 }, { 0, 112 },\r
-      { 0, 113 }, { 40, 1 }, { 18, 1 }, { 8, 1 }, { 2, 1 }, { 0, 23 }, { 2, 1 }, { 0, 7 },\r
-      { 2, 1 }, { 0, 85 }, { 0, 100 }, { 4, 1 }, { 2, 1 }, { 0, 114 }, { 0, 39 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 70 }, { 0, 101 }, { 0, 115 }, { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 55 },\r
-      { 2, 1 }, { 0, 86 }, { 0, 8 }, { 2, 1 }, { 0, 128 }, { 0, 129 }, { 6, 1 }, { 2, 1 },\r
-      { 0, 24 }, { 2, 1 }, { 0, 116 }, { 0, 71 }, { 2, 1 }, { 0, 130 }, { 2, 1 }, { 0, 40 },\r
-      { 0, 102 }, { 24, 1 }, { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 131 }, { 0, 56 },\r
-      { 2, 1 }, { 0, 117 }, { 0, 132 }, { 4, 1 }, { 2, 1 }, { 0, 72 }, { 0, 144 }, { 0, 145 },\r
-      { 6, 1 }, { 2, 1 }, { 0, 25 }, { 2, 1 }, { 0, 9 }, { 0, 118 }, { 2, 1 }, { 0, 146 },\r
-      { 0, 41 }, { 14, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 133 }, { 0, 88 }, { 2, 1 },\r
-      { 0, 147 }, { 0, 57 }, { 4, 1 }, { 2, 1 }, { 0, 160 }, { 0, 10 }, { 0, 26 }, { 8, 1 },\r
-      { 2, 1 }, { 0, 162 }, { 2, 1 }, { 0, 103 }, { 2, 1 }, { 0, 87 }, { 0, 73 }, { 6, 1 },\r
-      { 2, 1 }, { 0, 148 }, { 2, 1 }, { 0, 119 }, { 0, 134 }, { 2, 1 }, { 0, 161 }, { 2, 1 },\r
-      { 0, 104 }, { 0, 149 }, { 220, 1 }, { 126, 1 }, { 50, 1 }, { 26, 1 }, { 12, 1 }, { 6, 1 },\r
-      { 2, 1 }, { 0, 42 }, { 2, 1 }, { 0, 89 }, { 0, 58 }, { 2, 1 }, { 0, 163 }, { 2, 1 },\r
-      { 0, 135 }, { 0, 120 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 164 }, { 0, 74 }, { 2, 1 },\r
-      { 0, 150 }, { 0, 105 }, { 4, 1 }, { 2, 1 }, { 0, 176 }, { 0, 11 }, { 0, 177 }, { 10, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 27 }, { 0, 178 }, { 2, 1 }, { 0, 43 }, { 2, 1 }, { 0, 165 },\r
-      { 0, 90 }, { 6, 1 }, { 2, 1 }, { 0, 179 }, { 2, 1 }, { 0, 166 }, { 0, 106 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 180 }, { 0, 75 }, { 2, 1 }, { 0, 12 }, { 0, 193 }, { 30, 1 }, { 14, 1 },\r
-      { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 181 }, { 0, 194 }, { 0, 44 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 167 }, { 0, 195 }, { 2, 1 }, { 0, 107 }, { 0, 196 }, { 8, 1 }, { 2, 1 }, { 0, 29 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 136 }, { 0, 151 }, { 0, 59 }, { 4, 1 }, { 2, 1 }, { 0, 209 },\r
-      { 0, 210 }, { 2, 1 }, { 0, 45 }, { 0, 211 }, { 18, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 30 }, { 0, 46 }, { 0, 226 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 121 }, { 0, 152 },\r
-      { 0, 192 }, { 2, 1 }, { 0, 28 }, { 2, 1 }, { 0, 137 }, { 0, 91 }, { 14, 1 }, { 6, 1 },\r
-      { 2, 1 }, { 0, 60 }, { 2, 1 }, { 0, 122 }, { 0, 182 }, { 4, 1 }, { 2, 1 }, { 0, 76 },\r
-      { 0, 153 }, { 2, 1 }, { 0, 168 }, { 0, 138 }, { 6, 1 }, { 2, 1 }, { 0, 13 }, { 2, 1 },\r
-      { 0, 197 }, { 0, 92 }, { 4, 1 }, { 2, 1 }, { 0, 61 }, { 0, 198 }, { 2, 1 }, { 0, 108 },\r
-      { 0, 154 }, { 88, 1 }, { 86, 1 }, { 36, 1 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 139 }, { 0, 77 }, { 2, 1 }, { 0, 199 }, { 0, 124 }, { 4, 1 }, { 2, 1 }, { 0, 213 },\r
-      { 0, 93 }, { 2, 1 }, { 0, 224 }, { 0, 14 }, { 8, 1 }, { 2, 1 }, { 0, 227 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 208 }, { 0, 183 }, { 0, 123 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 169 },\r
-      { 0, 184 }, { 0, 212 }, { 2, 1 }, { 0, 225 }, { 2, 1 }, { 0, 170 }, { 0, 185 }, { 24, 1 },\r
-      { 10, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 155 }, { 0, 214 }, { 0, 109 }, { 2, 1 },\r
-      { 0, 62 }, { 0, 200 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 140 }, { 0, 228 }, { 0, 78 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 215 }, { 0, 229 }, { 2, 1 }, { 0, 186 }, { 0, 171 }, { 12, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 156 }, { 0, 230 }, { 4, 1 }, { 2, 1 }, { 0, 110 }, { 0, 216 },\r
-      { 2, 1 }, { 0, 141 }, { 0, 187 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 231 }, { 0, 157 },\r
-      { 2, 1 }, { 0, 232 }, { 0, 142 }, { 4, 1 }, { 2, 1 }, { 0, 203 }, { 0, 188 }, { 0, 158 },\r
-      { 0, 241 }, { 2, 1 }, { 0, 31 }, { 2, 1 }, { 0, 15 }, { 0, 47 }, { 66, 1 }, { 56, 1 },\r
-      { 2, 1 }, { 0, 242 }, { 52, 1 }, { 50, 1 }, { 20, 1 }, { 8, 1 }, { 2, 1 }, { 0, 189 },\r
-      { 2, 1 }, { 0, 94 }, { 2, 1 }, { 0, 125 }, { 0, 201 }, { 6, 1 }, { 2, 1 }, { 0, 202 },\r
-      { 2, 1 }, { 0, 172 }, { 0, 126 }, { 4, 1 }, { 2, 1 }, { 0, 218 }, { 0, 173 }, { 0, 204 },\r
-      { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 174 }, { 2, 1 }, { 0, 219 }, { 0, 220 }, { 2, 1 },\r
-      { 0, 205 }, { 0, 190 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 235 }, { 0, 237 }, { 0, 238 },\r
-      { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 217 }, { 0, 234 }, { 0, 233 }, { 2, 1 }, { 0, 222 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 221 }, { 0, 236 }, { 0, 206 }, { 0, 63 }, { 0, 240 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 243 }, { 0, 244 }, { 2, 1 }, { 0, 79 }, { 2, 1 }, { 0, 245 }, { 0, 95 },\r
-      { 10, 1 }, { 2, 1 }, { 0, 255 }, { 4, 1 }, { 2, 1 }, { 0, 246 }, { 0, 111 }, { 2, 1 },\r
-      { 0, 247 }, { 0, 127 }, { 12, 1 }, { 6, 1 }, { 2, 1 }, { 0, 143 }, { 2, 1 }, { 0, 248 },\r
-      { 0, 249 }, { 4, 1 }, { 2, 1 }, { 0, 159 }, { 0, 250 }, { 0, 175 }, { 8, 1 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 251 }, { 0, 191 }, { 2, 1 }, { 0, 252 }, { 0, 207 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 253 }, { 0, 223 }, { 2, 1 }, { 0, 254 }, { 0, 239 }, };\r
-\r
-  \r
-  private static int ValTab24[][] = { { 60, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 0 }, { 0, 16 },\r
-      { 2, 1 }, { 0, 1 }, { 0, 17 }, { 14, 1 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 32 }, { 0, 2 },\r
-      { 0, 33 }, { 2, 1 }, { 0, 18 }, { 2, 1 }, { 0, 34 }, { 2, 1 }, { 0, 48 }, { 0, 3 },\r
-      { 14, 1 }, { 4, 1 }, { 2, 1 }, { 0, 49 }, { 0, 19 }, { 4, 1 }, { 2, 1 }, { 0, 50 },\r
-      { 0, 35 }, { 4, 1 }, { 2, 1 }, { 0, 64 }, { 0, 4 }, { 0, 65 }, { 8, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 20 }, { 0, 51 }, { 2, 1 }, { 0, 66 }, { 0, 36 }, { 6, 1 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 67 }, { 0, 52 }, { 0, 81 }, { 6, 1 }, { 4, 1 }, { 2, 1 }, { 0, 80 }, { 0, 5 },\r
-      { 0, 21 }, { 2, 1 }, { 0, 82 }, { 0, 37 }, { 250, 1 }, { 98, 1 }, { 34, 1 }, { 18, 1 },\r
-      { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 68 }, { 0, 83 }, { 2, 1 }, { 0, 53 }, { 2, 1 },\r
-      { 0, 96 }, { 0, 6 }, { 4, 1 }, { 2, 1 }, { 0, 97 }, { 0, 22 }, { 2, 1 }, { 0, 98 },\r
-      { 0, 38 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 84 }, { 0, 69 }, { 2, 1 }, { 0, 99 },\r
-      { 0, 54 }, { 4, 1 }, { 2, 1 }, { 0, 113 }, { 0, 85 }, { 2, 1 }, { 0, 100 }, { 0, 70 },\r
-      { 32, 1 }, { 14, 1 }, { 6, 1 }, { 2, 1 }, { 0, 114 }, { 2, 1 }, { 0, 39 }, { 0, 55 },\r
-      { 2, 1 }, { 0, 115 }, { 4, 1 }, { 2, 1 }, { 0, 112 }, { 0, 7 }, { 0, 23 }, { 10, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 101 }, { 0, 86 }, { 4, 1 }, { 2, 1 }, { 0, 128 }, { 0, 8 },\r
-      { 0, 129 }, { 4, 1 }, { 2, 1 }, { 0, 116 }, { 0, 71 }, { 2, 1 }, { 0, 24 }, { 0, 130 },\r
-      { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 40 }, { 0, 102 }, { 2, 1 }, { 0, 131 },\r
-      { 0, 56 }, { 4, 1 }, { 2, 1 }, { 0, 117 }, { 0, 87 }, { 2, 1 }, { 0, 132 }, { 0, 72 },\r
-      { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 145 }, { 0, 25 }, { 2, 1 }, { 0, 146 }, { 0, 118 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 103 }, { 0, 41 }, { 2, 1 }, { 0, 133 }, { 0, 88 }, { 92, 1 },\r
-      { 34, 1 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 147 }, { 0, 57 }, { 2, 1 },\r
-      { 0, 148 }, { 0, 73 }, { 4, 1 }, { 2, 1 }, { 0, 119 }, { 0, 134 }, { 2, 1 }, { 0, 104 },\r
-      { 0, 161 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 162 }, { 0, 42 }, { 2, 1 }, { 0, 149 },\r
-      { 0, 89 }, { 4, 1 }, { 2, 1 }, { 0, 163 }, { 0, 58 }, { 2, 1 }, { 0, 135 }, { 2, 1 },\r
-      { 0, 120 }, { 0, 74 }, { 22, 1 }, { 12, 1 }, { 4, 1 }, { 2, 1 }, { 0, 164 }, { 0, 150 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 105 }, { 0, 177 }, { 2, 1 }, { 0, 27 }, { 0, 165 }, { 6, 1 },\r
-      { 2, 1 }, { 0, 178 }, { 2, 1 }, { 0, 90 }, { 0, 43 }, { 2, 1 }, { 0, 136 }, { 0, 179 },\r
-      { 16, 1 }, { 10, 1 }, { 6, 1 }, { 2, 1 }, { 0, 144 }, { 2, 1 }, { 0, 9 }, { 0, 160 },\r
-      { 2, 1 }, { 0, 151 }, { 0, 121 }, { 4, 1 }, { 2, 1 }, { 0, 166 }, { 0, 106 }, { 0, 180 },\r
-      { 12, 1 }, { 6, 1 }, { 2, 1 }, { 0, 26 }, { 2, 1 }, { 0, 10 }, { 0, 176 }, { 2, 1 },\r
-      { 0, 59 }, { 2, 1 }, { 0, 11 }, { 0, 192 }, { 4, 1 }, { 2, 1 }, { 0, 75 }, { 0, 193 },\r
-      { 2, 1 }, { 0, 152 }, { 0, 137 }, { 67, 1 }, { 34, 1 }, { 16, 1 }, { 8, 1 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 28 }, { 0, 181 }, { 2, 1 }, { 0, 91 }, { 0, 194 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 44 }, { 0, 167 }, { 2, 1 }, { 0, 122 }, { 0, 195 }, { 10, 1 }, { 6, 1 }, { 2, 1 },\r
-      { 0, 60 }, { 2, 1 }, { 0, 12 }, { 0, 208 }, { 2, 1 }, { 0, 182 }, { 0, 107 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 196 }, { 0, 76 }, { 2, 1 }, { 0, 153 }, { 0, 168 }, { 16, 1 }, { 8, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 138 }, { 0, 197 }, { 2, 1 }, { 0, 92 }, { 0, 209 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 183 }, { 0, 123 }, { 2, 1 }, { 0, 29 }, { 0, 210 }, { 9, 1 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 45 }, { 0, 211 }, { 2, 1 }, { 0, 61 }, { 0, 198 }, { 85, 250 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 108 }, { 0, 169 }, { 2, 1 }, { 0, 154 }, { 0, 212 }, { 32, 1 }, { 16, 1 },\r
-      { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 184 }, { 0, 139 }, { 2, 1 }, { 0, 77 }, { 0, 199 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 124 }, { 0, 213 }, { 2, 1 }, { 0, 93 }, { 0, 225 }, { 8, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 30 }, { 0, 226 }, { 2, 1 }, { 0, 170 }, { 0, 185 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 155 }, { 0, 227 }, { 2, 1 }, { 0, 214 }, { 0, 109 }, { 20, 1 }, { 10, 1 },\r
-      { 6, 1 }, { 2, 1 }, { 0, 62 }, { 2, 1 }, { 0, 46 }, { 0, 78 }, { 2, 1 }, { 0, 200 },\r
-      { 0, 140 }, { 4, 1 }, { 2, 1 }, { 0, 228 }, { 0, 215 }, { 4, 1 }, { 2, 1 }, { 0, 125 },\r
-      { 0, 171 }, { 0, 229 }, { 10, 1 }, { 4, 1 }, { 2, 1 }, { 0, 186 }, { 0, 94 }, { 2, 1 },\r
-      { 0, 201 }, { 2, 1 }, { 0, 156 }, { 0, 110 }, { 8, 1 }, { 2, 1 }, { 0, 230 }, { 2, 1 },\r
-      { 0, 13 }, { 2, 1 }, { 0, 224 }, { 0, 14 }, { 4, 1 }, { 2, 1 }, { 0, 216 }, { 0, 141 },\r
-      { 2, 1 }, { 0, 187 }, { 0, 202 }, { 74, 1 }, { 2, 1 }, { 0, 255 }, { 64, 1 }, { 58, 1 },\r
-      { 32, 1 }, { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 172 }, { 0, 231 }, { 2, 1 },\r
-      { 0, 126 }, { 0, 217 }, { 4, 1 }, { 2, 1 }, { 0, 157 }, { 0, 232 }, { 2, 1 }, { 0, 142 },\r
-      { 0, 203 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 188 }, { 0, 218 }, { 2, 1 }, { 0, 173 },\r
-      { 0, 233 }, { 4, 1 }, { 2, 1 }, { 0, 158 }, { 0, 204 }, { 2, 1 }, { 0, 219 }, { 0, 189 },\r
-      { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 234 }, { 0, 174 }, { 2, 1 }, { 0, 220 },\r
-      { 0, 205 }, { 4, 1 }, { 2, 1 }, { 0, 235 }, { 0, 190 }, { 2, 1 }, { 0, 221 }, { 0, 236 },\r
-      { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 206 }, { 0, 237 }, { 2, 1 }, { 0, 222 }, { 0, 238 },\r
-      { 0, 15 }, { 4, 1 }, { 2, 1 }, { 0, 240 }, { 0, 31 }, { 0, 241 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 242 }, { 0, 47 }, { 2, 1 }, { 0, 243 }, { 0, 63 }, { 18, 1 }, { 8, 1 }, { 4, 1 },\r
-      { 2, 1 }, { 0, 244 }, { 0, 79 }, { 2, 1 }, { 0, 245 }, { 0, 95 }, { 4, 1 }, { 2, 1 },\r
-      { 0, 246 }, { 0, 111 }, { 2, 1 }, { 0, 247 }, { 2, 1 }, { 0, 127 }, { 0, 143 }, { 10, 1 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 248 }, { 0, 249 }, { 4, 1 }, { 2, 1 }, { 0, 159 }, { 0, 175 },\r
-      { 0, 250 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 251 }, { 0, 191 }, { 2, 1 }, { 0, 252 },\r
-      { 0, 207 }, { 4, 1 }, { 2, 1 }, { 0, 253 }, { 0, 223 }, { 2, 1 }, { 0, 254 }, { 0, 239 }, };\r
-\r
-  \r
-  private static int ValTab32[][] = { { 2, 1 }, { 0, 0 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 8 },\r
-      { 0, 4 }, { 2, 1 }, { 0, 1 }, { 0, 2 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 12 }, { 0, 10 },\r
-      { 2, 1 }, { 0, 3 }, { 0, 6 }, { 6, 1 }, { 2, 1 }, { 0, 9 }, { 2, 1 }, { 0, 5 }, { 0, 7 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 14 }, { 0, 13 }, { 2, 1 }, { 0, 15 }, { 0, 11 }, };\r
-\r
-  \r
-  private static int ValTab33[][] = { { 16, 1 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 0 }, { 0, 1 },\r
-      { 2, 1 }, { 0, 2 }, { 0, 3 }, { 4, 1 }, { 2, 1 }, { 0, 4 }, { 0, 5 }, { 2, 1 }, { 0, 6 },\r
-      { 0, 7 }, { 8, 1 }, { 4, 1 }, { 2, 1 }, { 0, 8 }, { 0, 9 }, { 2, 1 }, { 0, 10 }, { 0, 11 },\r
-      { 4, 1 }, { 2, 1 }, { 0, 12 }, { 0, 13 }, { 2, 1 }, { 0, 14 }, { 0, 15 }, };\r
-\r
-  \r
+  };\r
+\r
+  private static int ValTab15[][] = { { 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 }, };\r
+\r
+  private static int ValTab16[][] = { { 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 }, };\r
+\r
+  private static int ValTab24[][] = { { 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 }, };\r
+\r
+  private static int ValTab32[][] = { { 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 }, };\r
+\r
+  private static int ValTab33[][] = { { 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 }, };\r
+\r
   public static huffcodetab[] ht = null; /* Simulate extern struct */\r
 \r
-  \r
   private static int[] bitbuf = new int[32];\r
 \r
   /**\r
    * Big Constructor : Computes all Huffman Tables.\r
    */\r
-  private huffcodetab( String S,  int XLEN,  int YLEN,\r
-       int LINBITS,  int LINMAX,  int REF,\r
-      @DELEGATE  int[] TABLE, @DELEGATE  int[] HLEN,\r
-      @DELEGATE  int[][] VAL,  int TREELEN) {\r
+  private huffcodetab(String S, int XLEN, int YLEN, int LINBITS, int LINMAX, int REF,\r
+      @DELEGATE int[] TABLE, @DELEGATE int[] HLEN, @DELEGATE int[][] VAL, int TREELEN) {\r
     tablename0 = S.charAt(0);\r
     tablename1 = S.charAt(1);\r
     tablename2 = S.charAt(2);\r
@@ -506,21 +141,17 @@ final class huffcodetab {
    * Do the huffman-decoding. note! for counta,countb -the 4 bit value is\r
    * returned in y, discard x.\r
    */\r
-  \r
-  \r
-  public static int huffman_decoder( int htIdx,\r
-       int[] x,  int[] y,\r
-       int[] v,  int[] w,\r
-       BitReserve br) {\r
+\r
+  public static int huffman_decoder(int htIdx, int[] x, int[] y, int[] v, int[] w, BitReserve br) {\r
     // array of all huffcodtable headers\r
     // 0..31 Huffman code table 0..31\r
     // 32,33 count1-tables\r
 \r
-     int dmask = 1 << ((4 * 8) - 1);\r
-     int hs = 4 * 8;\r
-     int level;\r
-     int point = 0;\r
-     int error = 1;\r
+    int dmask = 1 << ((4 * 8) - 1);\r
+    int hs = 4 * 8;\r
+    int level;\r
+    int point = 0;\r
+    int error = 1;\r
     level = dmask;\r
 \r
     if (ht[htIdx].val == null)\r
diff --git a/Robust/src/Benchmarks/SSJava/MP3DecoderInfer/infer/makefile b/Robust/src/Benchmarks/SSJava/MP3DecoderInfer/infer/makefile
new file mode 100644 (file)
index 0000000..4a12624
--- /dev/null
@@ -0,0 +1,50 @@
+BUILDSCRIPT=../../../buildscript
+
+PROGRAM=MP3Player
+SOURCE_FILES=MP3Player.java Player.java
+
+ifndef INV_ERROR_PROB
+INV_ERROR_PROB=1000
+endif
+
+ifndef RANDOMSEED
+RANDOMSEED=12345
+endif
+
+SSJAVA= -ssjava -ssjavanoclasspath -ssjavadebug
+BSFLAGS= -32bit -mainclass $(PROGRAM)  -heapsize-mb 1350  -nooptimize -debug -garbagestats #-printlinenum #-joptimize
+NORMAL= -ssjava-inject-error 0 0
+INJECT_ERROR= -ssjava-inject-error $(INV_ERROR_PROB) $(RANDOMSEED)
+
+
+default: $(PROGRAM)s.bin
+
+normal: $(PROGRAM)n.bin
+
+error: $(PROGRAM)e.bin
+
+
+$(PROGRAM)s.bin: $(SOURCE_FILES) makefile
+       $(BUILDSCRIPT) $(SSJAVA) $(BSFLAGS) -o $(PROGRAM)s -builddir ssj $(SOURCE_FILES) 
+
+$(PROGRAM)n.bin: $(SOURCE_FILES) makefile
+       $(BUILDSCRIPT) $(NORMAL) $(BSFLAGS) -o $(PROGRAM)n -builddir norm $(SOURCE_FILES) 
+
+$(PROGRAM)e.bin: $(SOURCE_FILES) makefile
+       $(BUILDSCRIPT) $(SSJAVA) $(INJECT_ERROR) $(BSFLAGS) -o $(PROGRAM)e -builddir injerr $(SOURCE_FILES) 
+
+cleanerror:
+       rm -f $(PROGRAM)e.bin
+       rm -rf injerr
+
+clean:
+       rm -f  $(PROGRAM)s.bin $(PROGRAM)n.bin $(PROGRAM)e.bin
+       rm -fr ssj norm injerr
+       rm -f nve-diff.tmp nve-diff-ranges.tmp
+       rm -f  *~
+       rm -f  *.dot
+       rm -f  *.png
+       rm -f  aliases.txt
+       rm -f  results*txt
+       rm -f *log
+
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/BufferedInputStream.java b/Robust/src/ClassLibrary/SSJavaInfer/BufferedInputStream.java
new file mode 100644 (file)
index 0000000..709bc60
--- /dev/null
@@ -0,0 +1,376 @@
+/* BufferedInputStream.java -- An input stream that implements buffering
+   Copyright (C) 1998, 1999, 2001, 2005  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
+ * "The Java Language Specification", ISBN 0-201-63451-1
+ * plus online API docs for JDK 1.2 beta from http://www.javasoft.com.
+ * Status:  Believed complete and correct.
+ */
+
+/**
+ * This subclass of <code>FilterInputStream</code> buffers input from an
+ * underlying implementation to provide a possibly more efficient read
+ * mechanism. It maintains the buffer and buffer state in instance variables
+ * that are available to subclasses. The default buffer size of 2048 bytes can
+ * be overridden by the creator of the stream.
+ * <p>
+ * This class also implements mark/reset functionality. It is capable of
+ * remembering any number of input bytes, to the limits of system memory or the
+ * size of <code>Integer.MAX_VALUE</code>
+ * <p>
+ * Please note that this class does not properly handle character encodings.
+ * Consider using the <code>BufferedReader</code> class which does.
+ * 
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Warren Levy (warrenl@cygnus.com)
+ * @author Jeroen Frijters (jeroen@frijters.net)
+ */
+
+public class BufferedInputStream extends FilterInputStream {
+
+  /**
+   * This is the default buffer size
+   */
+  private static final int DEFAULT_BUFFER_SIZE = 2048; // by default, it is TOP
+
+  /**
+   * The buffer used for storing data from the underlying stream.
+   */
+
+  protected byte[] buf;
+
+  /**
+   * The number of valid bytes currently in the buffer. It is also the index of
+   * the buffer position one byte past the end of the valid data.
+   */
+
+  protected int count;
+
+  /**
+   * The index of the next character that will by read from the buffer. When
+   * <code>pos == count</code>, the buffer is empty.
+   */
+
+  protected int pos;
+
+  /**
+   * The value of <code>pos</code> when the <code>mark()</code> method was
+   * called. This is set to -1 if there is no mark set.
+   */
+
+  protected int markpos = -1;
+
+  /**
+   * This is the maximum number of bytes than can be read after a call to
+   * <code>mark()</code> before the mark can be discarded. After this may bytes
+   * are read, the <code>reset()</code> method may not be called successfully.
+   */
+  protected int marklimit;
+
+  /**
+   * This is the initial buffer size. When the buffer is grown because of
+   * marking requirements, it will be grown by bufferSize increments. The
+   * underlying stream will be read in chunks of bufferSize.
+   */
+  private final int bufferSize;
+
+  /**
+   * This method initializes a new <code>BufferedInputStream</code> that will
+   * read from the specified subordinate stream with a default buffer size of
+   * 2048 bytes
+   * 
+   * @param in
+   *          The subordinate stream to read from
+   */
+  public BufferedInputStream(InputStream in) {
+    this(in, DEFAULT_BUFFER_SIZE);
+  }
+
+  /**
+   * This method initializes a new <code>BufferedInputStream</code> that will
+   * read from the specified subordinate stream with a buffer size that is
+   * specified by the caller.
+   * 
+   * @param in
+   *          The subordinate stream to read from
+   * @param size
+   *          The buffer size to use
+   * 
+   * @exception IllegalArgumentException
+   *              when size is smaller then 1
+   */
+  public BufferedInputStream(InputStream in, int size) {
+    super(in);
+    if (size <= 0)
+      throw new IllegalArgumentException();
+    buf = new byte[size];
+    // initialize pos & count to bufferSize, to prevent refill from
+    // allocating a new buffer (if the caller starts out by calling mark()).
+    pos = count = bufferSize = size;
+  }
+
+  /**
+   * This method returns the number of bytes that can be read from this stream
+   * before a read can block. A return of 0 indicates that blocking might (or
+   * might not) occur on the very next read attempt.
+   * <p>
+   * The number of available bytes will be the number of read ahead bytes stored
+   * in the internal buffer plus the number of available bytes in the underlying
+   * stream.
+   * 
+   * @return The number of bytes that can be read before blocking could occur
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public synchronized int available() throws IOException {
+    return count - pos + super.available();
+  }
+
+  /**
+   * This method closes the underlying input stream and frees any resources
+   * associated with it. Sets <code>buf</code> to <code>null</code>.
+   * 
+   * @exception IOException
+   *              If an error occurs.
+   */
+  public void close() throws IOException {
+    // Free up the array memory.
+    buf = null;
+    pos = count = 0;
+    markpos = -1;
+    super.close();
+  }
+
+  /**
+   * This method marks a position in the input to which the stream can be
+   * "reset" by calling the <code>reset()</code> method. The parameter
+   * <code>readlimit</code> is the number of bytes that can be read from the
+   * stream after setting the mark before the mark becomes invalid. For example,
+   * if <code>mark()</code> is called with a read limit of 10, then when 11
+   * bytes of data are read from the stream before the <code>reset()</code>
+   * method is called, then the mark is invalid and the stream object instance
+   * is not required to remember the mark.
+   * <p>
+   * Note that the number of bytes that can be remembered by this method can be
+   * greater than the size of the internal read buffer. It is also not dependent
+   * on the subordinate stream supporting mark/reset functionality.
+   * 
+   * @param readlimit
+   *          The number of bytes that can be read before the mark becomes
+   *          invalid
+   */
+  public synchronized void mark(int readlimit) {
+    marklimit = readlimit;
+    markpos = pos;
+  }
+
+  /**
+   * This method returns <code>true</code> to indicate that this class supports
+   * mark/reset functionality.
+   * 
+   * @return <code>true</code> to indicate that mark/reset functionality is
+   *         supported
+   * 
+   */
+  public boolean markSupported() {
+    return true;
+  }
+
+  /**
+   * This method reads an unsigned byte from the input stream and returns it as
+   * an int in the range of 0-255. This method also will return -1 if the end of
+   * the stream has been reached.
+   * <p>
+   * This method will block until the byte can be read.
+   * 
+   * @return The byte read or -1 if end of stream
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public synchronized int read() throws IOException {
+    if (pos >= count && !refill())
+      return -1; // EOF
+
+    return buf[pos++] & 0xFF;
+  }
+
+  /**
+   * This method reads bytes from a stream and stores them into a caller
+   * supplied buffer. It starts storing the data at index <code>off</code> into
+   * the buffer and attempts to read <code>len</code> bytes. This method can
+   * return before reading the number of bytes requested, but it will try to
+   * read the requested number of bytes by repeatedly calling the underlying
+   * stream as long as available() for this stream continues to return a
+   * non-zero value (or until the requested number of bytes have been read). The
+   * actual number of bytes read is returned as an int. A -1 is returned to
+   * indicate the end of the stream.
+   * <p>
+   * This method will block until some data can be read.
+   * 
+   * @param b
+   *          The array into which the bytes read should be stored
+   * @param off
+   *          The offset into the array to start storing bytes
+   * @param len
+   *          The requested number of bytes to read
+   * 
+   * @return The actual number of bytes read, or -1 if end of stream.
+   * 
+   * @exception IOException
+   *              If an error occurs.
+   * @exception IndexOutOfBoundsException
+   *              when <code>off</code> or <code>len</code> are negative, or
+   *              when <code>off + len</code> is larger then the size of
+   *              <code>b</code>,
+   */
+  public synchronized int read(byte[] b, int off, int len) throws IOException {
+    if (off < 0 || len < 0 || b.length - off < len)
+      // throw new IndexOutOfBoundsException();
+      return -1;
+
+    if (len == 0)
+      return 0;
+
+    if (pos >= count && !refill())
+      return -1; // No bytes were read before EOF.
+
+    int totalBytesRead = Math.min(count - pos, len);
+    System.arraycopy(buf, pos, b, off, totalBytesRead);
+    pos += totalBytesRead;
+    off += totalBytesRead;
+    len -= totalBytesRead;
+
+    while (len > 0 && super.available() > 0 && refill()) {
+      int remain = Math.min(count - pos, len);
+      System.arraycopy(buf, pos, b, off, remain);
+      pos += remain;
+      off += remain;
+      len -= remain;
+      totalBytesRead += remain;
+    }
+
+    return totalBytesRead;
+  }
+
+  /**
+   * This method resets a stream to the point where the <code>mark()</code>
+   * method was called. Any bytes that were read after the mark point was set
+   * will be re-read during subsequent reads.
+   * <p>
+   * This method will throw an IOException if the number of bytes read from the
+   * stream since the call to <code>mark()</code> exceeds the mark limit passed
+   * when establishing the mark.
+   * 
+   * @exception IOException
+   *              If <code>mark()</code> was never called or more then
+   *              <code>marklimit</code> bytes were read since the last call to
+   *              <code>mark()</code>
+   */
+  public synchronized void reset() throws IOException {
+    if (markpos == -1)
+      throw new IOException(buf == null ? "Stream closed." : "Invalid mark.");
+
+    pos = markpos;
+  }
+
+  /**
+   * This method skips the specified number of bytes in the stream. It returns
+   * the actual number of bytes skipped, which may be less than the requested
+   * amount.
+   * 
+   * @param n
+   *          The requested number of bytes to skip
+   * 
+   * @return The actual number of bytes skipped.
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public synchronized long skip(long n) throws IOException {
+    if (buf == null)
+      throw new IOException("Stream closed.");
+
+    final long origN = n;
+
+    while (n > 0L) {
+      if (pos >= count && !refill())
+        break;
+
+      int numread = (int) Math.min((long) (count - pos), n);
+      pos += numread;
+      n -= numread;
+    }
+
+    return origN - n;
+  }
+
+  /**
+   * Called to refill the buffer (when count is equal to pos).
+   * 
+   * @return <code>true</code> when at least one additional byte was read into
+   *         <code>buf</code>, <code>false</code> otherwise (at EOF).
+   */
+  private boolean refill() throws IOException {
+    if (buf == null)
+      throw new IOException("Stream closed.");
+
+    if (markpos == -1 || count - markpos >= marklimit) {
+      markpos = -1;
+      pos = count = 0;
+    } else {
+      byte[] newbuf = buf;
+      if (markpos < bufferSize) {
+        newbuf = new byte[count - markpos + bufferSize];
+      }
+      System.arraycopy(buf, markpos, newbuf, 0, count - markpos);
+      buf = newbuf;
+      count -= markpos;
+      pos -= markpos;
+      markpos = 0;
+    }
+
+    int numread = super.read(buf, count, bufferSize);
+
+    if (numread <= 0) // EOF
+      return false;
+
+    count += numread;
+    return true;
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/ByteArrayInputStream.java b/Robust/src/ClassLibrary/SSJavaInfer/ByteArrayInputStream.java
new file mode 100644 (file)
index 0000000..37e8126
--- /dev/null
@@ -0,0 +1,243 @@
+/* ByteArrayInputStream.java -- Read an array as a stream
+   Copyright (C) 1998, 1999, 2001, 2005  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+//package java.io;
+
+/**
+ * This class permits an array of bytes to be read as an input stream.
+ * 
+ * @author Warren Levy (warrenl@cygnus.com)
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ */
+
+public class ByteArrayInputStream extends InputStream {
+  /**
+   * The array that contains the data supplied during read operations
+   */
+  protected byte[] buf;
+
+  /**
+   * The array index of the next byte to be read from the buffer
+   * <code>buf</code>
+   */
+  protected int pos;
+
+  /**
+   * The currently marked position in the stream. This defaults to 0, so a reset
+   * operation on the stream resets it to read from array index 0 in the buffer
+   * - even if the stream was initially created with an offset greater than 0
+   */
+  protected int mark;
+
+  /**
+   * This indicates the maximum number of bytes that can be read from this
+   * stream. It is the array index of the position after the last valid byte in
+   * the buffer <code>buf</code>
+   */
+  protected int count;
+
+  /**
+   * Create a new ByteArrayInputStream that will read bytes from the passed in
+   * byte array. This stream will read from the beginning to the end of the
+   * array. It is identical to calling an overloaded constructor as
+   * <code>ByteArrayInputStream(buf, 0, buf.length)</code>.
+   * <p>
+   * Note that this array is not copied. If its contents are changed while this
+   * stream is being read, those changes will be reflected in the bytes supplied
+   * to the reader. Please use caution in changing the contents of the buffer
+   * while this stream is open.
+   * 
+   * @param buffer
+   *          The byte array buffer this stream will read from.
+   */
+  public ByteArrayInputStream(byte[] buffer) {
+    this(buffer, 0, buffer.length);
+  }
+
+  /**
+   * Create a new ByteArrayInputStream that will read bytes from the passed in
+   * byte array. This stream will read from position <code>offset</code> in the
+   * array for a length of <code>length</code> bytes past <code>offset</code>.
+   * If the stream is reset to a position before <code>offset</code> then more
+   * than <code>length</code> bytes can be read from the stream. The
+   * <code>length</code> value should be viewed as the array index one greater
+   * than the last position in the buffer to read.
+   * <p>
+   * Note that this array is not copied. If its contents are changed while this
+   * stream is being read, those changes will be reflected in the bytes supplied
+   * to the reader. Please use caution in changing the contents of the buffer
+   * while this stream is open.
+   * 
+   * @param buffer
+   *          The byte array buffer this stream will read from.
+   * @param offset
+   *          The index into the buffer to start reading bytes from
+   * @param length
+   *          The number of bytes to read from the buffer
+   */
+  public ByteArrayInputStream(byte[] buffer, int offset, int length) {
+    if (offset < 0 || length < 0 || offset > buffer.length)
+      throw new IllegalArgumentException();
+
+    buf = buffer;
+
+    count = offset + length;
+    if (count > buf.length)
+      count = buf.length;
+
+    pos = offset;
+    mark = pos;
+  }
+
+  /**
+   * This method returns the number of bytes available to be read from this
+   * stream. The value returned will be equal to <code>count - pos</code>.
+   * 
+   * @return The number of bytes that can be read from this stream before
+   *         blocking, which is all of them
+   */
+  public synchronized int available() {
+    return count - pos;
+  }
+
+  /**
+   * This method sets the mark position in this stream to the current position.
+   * Note that the <code>readlimit</code> parameter in this method does nothing
+   * as this stream is always capable of remembering all the bytes int it.
+   * <p>
+   * Note that in this class the mark position is set by default to position 0
+   * in the stream. This is in constrast to some other stream types where there
+   * is no default mark position.
+   * 
+   * @param readLimit
+   *          The number of bytes this stream must remember. This parameter is
+   *          ignored.
+   */
+  public synchronized void mark(int readLimit) {
+    // readLimit is ignored per Java Class Lib. book, p.220.
+    mark = pos;
+  }
+
+  /**
+   * This method overrides the <code>markSupported</code> method in
+   * <code>InputStream</code> in order to return <code>true</code> - indicating
+   * that this stream class supports mark/reset functionality.
+   * 
+   * @return <code>true</code> to indicate that this class supports mark/reset.
+   */
+  public boolean markSupported() {
+    return true;
+  }
+
+  /**
+   * This method reads one byte from the stream. The <code>pos</code> counter is
+   * advanced to the next byte to be read. The byte read is returned as an int
+   * in the range of 0-255. If the stream position is already at the end of the
+   * buffer, no byte is read and a -1 is returned in order to indicate the end
+   * of the stream.
+   * 
+   * @return The byte read, or -1 if end of stream
+   */
+  public synchronized int read() {
+    if (pos < count)
+      return ((int) buf[pos++]) & 0xFF;
+    return -1;
+  }
+
+  /**
+   * This method reads bytes from the stream and stores them into a caller
+   * supplied buffer. It starts storing the data at index <code>offset</code>
+   * into the buffer and attempts to read <code>len</code> bytes. This method
+   * can return before reading the number of bytes requested if the end of the
+   * stream is encountered first. The actual number of bytes read is returned.
+   * If no bytes can be read because the stream is already at the end of stream
+   * position, a -1 is returned.
+   * <p>
+   * This method does not block.
+   * 
+   * @param buffer
+   *          The array into which the bytes read should be stored.
+   * @param offset
+   *          The offset into the array to start storing bytes
+   * @param length
+   *          The requested number of bytes to read
+   * 
+   * @return The actual number of bytes read, or -1 if end of stream.
+   */
+  public synchronized int read(byte[] buffer, int offset, int length) {
+    if (pos >= count)
+      return -1;
+
+    int numBytes = Math.min(count - pos, length);
+    System.arraycopy(buf, pos, buffer, offset, numBytes);
+    pos += numBytes;
+    return numBytes;
+  }
+
+  /**
+   * This method sets the read position in the stream to the mark point by
+   * setting the <code>pos</code> variable equal to the <code>mark</code>
+   * variable. Since a mark can be set anywhere in the array, the mark/reset
+   * methods int this class can be used to provide random search capabilities
+   * for this type of stream.
+   */
+  public synchronized void reset() {
+    pos = mark;
+  }
+
+  /**
+   * This method attempts to skip the requested number of bytes in the input
+   * stream. It does this by advancing the <code>pos</code> value by the
+   * specified number of bytes. It this would exceed the length of the buffer,
+   * then only enough bytes are skipped to position the stream at the end of the
+   * buffer. The actual number of bytes skipped is returned.
+   * 
+   * @param num
+   *          The requested number of bytes to skip
+   * 
+   * @return The actual number of bytes skipped.
+   */
+  public synchronized long skip(long num) {
+    // Even though the var numBytes is a long, in reality it can never
+    // be larger than an int since the result of subtracting 2 positive
+    // ints will always fit in an int. Since we have to return a long
+    // anyway, numBytes might as well just be a long.
+    long numBytes = Math.min((long) (count - pos), num < 0 ? 0L : num);
+    pos += (int) numBytes;
+    return numBytes;
+  }
+}
\ No newline at end of file
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Character.java b/Robust/src/ClassLibrary/SSJavaInfer/Character.java
new file mode 100644 (file)
index 0000000..609862e
--- /dev/null
@@ -0,0 +1,66 @@
+public class Character {
+
+  public static int digit(char ch, int radix) {
+    if (ch >= '0' && ch <= '9')
+      return ch - '0';
+    else if (ch >= 'a' && ch <= 'z') {
+      int val = (ch - 'a') + 10;
+      if (val < radix)
+        return val;
+    } else if (ch >= 'A' && ch <= 'Z') {
+      int val = (ch - 'A') + 10;
+      if (val < radix)
+        return val;
+    }
+    return -1;
+  }
+
+  public static boolean isDigit(char ch) {
+    // TODO This is a temparory implementation, there are other groups of digits
+    // besides '0' ~ '9'
+    if (ch >= '0' && ch <= '9')
+      return true;
+    else
+      return false;
+  }
+
+  char value;
+
+  public Character(char c) {
+    value = c;
+  }
+
+  public Character(Character c) {
+    value = c.value;
+  }
+
+  public String toString() {
+    return "" + value;
+  }
+
+  public static boolean isWhitespace(char character) {
+    boolean returnValue;
+    if ((character == '\t') || (character == '\n') || (character == ' ') || (character == '\u000C') || (character == '\u001C') || (character == '\u001D') || (character == '\u001E') || (character == '\u001F')) {
+      returnValue = true;
+    } else {
+      returnValue = false;
+    }
+    return returnValue;
+  }
+
+  public static final int MIN_RADIX = 2;
+  public static final int MAX_RADIX = 36;
+
+  public static char forDigit(int digit, int radix) {
+    if ((digit >= radix) || (digit < 0)) {
+      return '\0';
+    }
+    if ((radix < Character.MIN_RADIX) || (radix > Character.MAX_RADIX)) {
+      return '\0';
+    }
+    if (digit < 10) {
+      return (char) ('0' + digit);
+    }
+    return (char) ('a' - 10 + digit);
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Cloneable.java b/Robust/src/ClassLibrary/SSJavaInfer/Cloneable.java
new file mode 100644 (file)
index 0000000..85f4b1d
--- /dev/null
@@ -0,0 +1,77 @@
+/* Cloneable.java -- Interface for marking objects cloneable by Object.clone()
+   Copyright (C) 1998, 1999, 2001, 2002, 2005  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+//package java.lang;
+
+/**
+ * This interface should be implemented by classes wishing to support of
+ * override <code>Object.clone()</code>. The default behaviour of
+ * <code>clone()</code> performs a shallow copy, but subclasses often change
+ * this to perform a deep copy. Therefore, it is a good idea to document how
+ * deep your clone will go. If <code>clone()</code> is called on an object which
+ * does not implement this interface, a <code>CloneNotSupportedException</code>
+ * will be thrown.
+ * 
+ * <p>
+ * This interface is simply a tagging interface; it carries no requirements on
+ * methods to implement. However, it is typical for a Cloneable class to
+ * implement at least <code>equals</code>, <code>hashCode</code>, and
+ * <code>clone</code>, sometimes increasing the accessibility of clone to be
+ * public. The typical implementation of <code>clone</code> invokes
+ * <code>super.clone()</code> rather than a constructor, but this is not a
+ * requirement.
+ * 
+ * <p>
+ * If an object that implement Cloneable should not be cloned, simply override
+ * the <code>clone</code> method to throw a
+ * <code>CloneNotSupportedException</code>.
+ * 
+ * <p>
+ * All array types implement Cloneable, and have a public <code>clone</code>
+ * method that will never fail with a <code>CloneNotSupportedException</code>.
+ * 
+ * @author Paul Fisher
+ * @author Eric Blake (ebb9@email.byu.edu)
+ * @author Warren Levy (warrenl@cygnus.com)
+ * @see Object#clone()
+ * @see CloneNotSupportedException
+ * @since 1.0
+ * @status updated to 1.4
+ */
+public interface Cloneable {
+  // Tagging interface only.
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Double.java b/Robust/src/ClassLibrary/SSJavaInfer/Double.java
new file mode 100644 (file)
index 0000000..28eb19a
--- /dev/null
@@ -0,0 +1,571 @@
+/* Double.java -- object wrapper for double
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+   Free Software Foundation, Inc.
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GNU Classpath 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
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+//package java.lang;
+
+/**
+ * Instances of class <code>Double</code> represent primitive
+ * <code>double</code> values.
+ * 
+ * Additionally, this class provides various helper functions and variables
+ * related to doubles.
+ * 
+ * @author Paul Fisher
+ * @author Andrew Haley (aph@cygnus.com)
+ * @author Eric Blake (ebb9@email.byu.edu)
+ * @author Tom Tromey (tromey@redhat.com)
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ * @since 1.0
+ * @status partly updated to 1.5
+ */
+
+public final class Double extends Number // implements Comparable<Double>
+{
+  /**
+   * Compatible with JDK 1.0+.
+   */
+  /**
+   * The immutable value of this Double.
+   * 
+   * @serial the wrapped double
+   */
+
+  private final double value;
+
+  /**
+   * Create a <code>Double</code> from the primitive <code>double</code>
+   * specified.
+   * 
+   * @param value
+   *          the <code>double</code> argument
+   */
+  public Double(double value) {
+    this.value = value;
+  }
+
+  /**
+   * Create a <code>Double</code> from the specified <code>String</code>. This
+   * method calls <code>Double.parseDouble()</code>.
+   * 
+   * @param s
+   *          the <code>String</code> to convert
+   * @throws NumberFormatException
+   *           if <code>s</code> cannot be parsed as a <code>double</code>
+   * @throws NullPointerException
+   *           if <code>s</code> is null
+   * @see #parseDouble(String)
+   */
+  public Double(String s) {
+    value = parseDouble(s);
+  }
+
+  /**
+   * Convert the <code>double</code> to a <code>String</code>. Floating-point
+   * string representation is fairly complex: here is a rundown of the possible
+   * values. "<code>[-]</code>" indicates that a negative sign will be printed
+   * if the value (or exponent) is negative. "<code>&lt;number&gt;</code>" means
+   * a string of digits ('0' to '9'). "<code>&lt;digit&gt;</code>" means a
+   * single digit ('0' to '9').<br>
+   * 
+   * <table border=1>
+   * <tr>
+   * <th>Value of Double</th>
+   * <th>String Representation</th>
+   * </tr>
+   * <tr>
+   * <td>[+-] 0</td>
+   * <td><code>[-]0.0</code></td>
+   * </tr>
+   * <tr>
+   * <td>Between [+-] 10<sup>-3</sup> and 10<sup>7</sup>, exclusive</td>
+   * <td><code>[-]number.number</code></td>
+   * </tr>
+   * <tr>
+   * <td>Other numeric value</td>
+   * <td><code>[-]&lt;digit&gt;.&lt;number&gt;
+   *          E[-]&lt;number&gt;</code></td>
+   * </tr>
+   * <tr>
+   * <td>[+-] infinity</td>
+   * <td><code>[-]Infinity</code></td>
+   * </tr>
+   * <tr>
+   * <td>NaN</td>
+   * <td><code>NaN</code></td>
+   * </tr>
+   * </table>
+   * 
+   * Yes, negative zero <em>is</em> a possible value. Note that there is
+   * <em>always</em> a <code>.</code> and at least one digit printed after it:
+   * even if the number is 3, it will be printed as <code>3.0</code>. After the
+   * ".", all digits will be printed except trailing zeros. The result is
+   * rounded to the shortest decimal number which will parse back to the same
+   * double.
+   * 
+   * <p>
+   * To create other output formats, use {@link java.text.NumberFormat}.
+   * 
+   * @XXX specify where we are not in accord with the spec.
+   * 
+   * @param d
+   *          the <code>double</code> to convert
+   * @return the <code>String</code> representing the <code>double</code>
+   */
+  public static String toString(double d) {
+    return String.valueOf(d);
+  }
+
+  /**
+   * Convert a double value to a hexadecimal string. This converts as follows:
+   * <ul>
+   * <li>A NaN value is converted to the string "NaN".
+   * <li>Positive infinity is converted to the string "Infinity".
+   * <li>Negative infinity is converted to the string "-Infinity".
+   * <li>For all other values, the first character of the result is '-' if the
+   * value is negative. This is followed by '0x1.' if the value is normal, and
+   * '0x0.' if the value is denormal. This is then followed by a (lower-case)
+   * hexadecimal representation of the mantissa, with leading zeros as required
+   * for denormal values. The next character is a 'p', and this is followed by a
+   * decimal representation of the unbiased exponent.
+   * </ul>
+   * 
+   * @param d
+   *          the double value
+   * @return the hexadecimal string representation
+   * @since 1.5
+   */
+  public static String toHexString(double d) {
+    /*
+     * if (isNaN(d)) return "NaN"; if (isInfinite(d)) return d < 0 ? "-Infinity"
+     * : "Infinity";
+     * 
+     * long bits = doubleToLongBits(d); StringBuilder result = new
+     * StringBuilder();
+     * 
+     * if (bits < 0) result.append('-'); result.append("0x");
+     * 
+     * final int mantissaBits = 52; final int exponentBits = 11; long mantMask =
+     * (1L << mantissaBits) - 1; long mantissa = bits & mantMask; long expMask =
+     * (1L << exponentBits) - 1; long exponent = (bits >>> mantissaBits) &
+     * expMask;
+     * 
+     * result.append(exponent == 0 ? '0' : '1'); result.append('.');
+     * result.append(Long.toHexString(mantissa)); if (exponent == 0 && mantissa
+     * != 0) { // Treat denormal specially by inserting '0's to make // the
+     * length come out right. The constants here are // to account for things
+     * like the '0x'. int offset = 4 + ((bits < 0) ? 1 : 0); // The silly +3 is
+     * here to keep the code the same between // the Float and Double cases. In
+     * Float the value is // not a multiple of 4. int desiredLength = offset +
+     * (mantissaBits + 3) / 4; while (result.length() < desiredLength)
+     * result.insert(offset, '0'); } result.append('p'); if (exponent == 0 &&
+     * mantissa == 0) { // Zero, so do nothing special. } else { // Apply bias.
+     * boolean denormal = exponent == 0; exponent -= (1 << (exponentBits - 1)) -
+     * 1; // Handle denormal. if (denormal) ++exponent; }
+     * 
+     * result.append(Long.toString(exponent)); return result.toString();
+     */
+    return "0x0";
+  }
+
+  /**
+   * Returns a <code>Double</code> object wrapping the value. In contrast to the
+   * <code>Double</code> constructor, this method may cache some values. It is
+   * used by boxing conversion.
+   * 
+   * @param val
+   *          the value to wrap
+   * @return the <code>Double</code>
+   * @since 1.5
+   */
+  public static Double valueOf(double val) {
+    // We don't actually cache, but we could.
+    return new Double(val);
+  }
+
+  /**
+   * Create a new <code>Double</code> object using the <code>String</code>.
+   * 
+   * @param s
+   *          the <code>String</code> to convert
+   * @return the new <code>Double</code>
+   * @throws NumberFormatException
+   *           if <code>s</code> cannot be parsed as a <code>double</code>
+   * @throws NullPointerException
+   *           if <code>s</code> is null.
+   * @see #parseDouble(String)
+   */
+  public static Double valueOf(String s) {
+    return new Double(parseDouble(s));
+  }
+
+  /**
+   * Parse the specified <code>String</code> as a <code>double</code>. The
+   * extended BNF grammar is as follows:<br>
+   * 
+   * <pre>
+   * <em>DecodableString</em>:
+   *      ( [ <code>-</code> | <code>+</code> ] <code>NaN</code> )
+   *    | ( [ <code>-</code> | <code>+</code> ] <code>Infinity</code> )
+   *    | ( [ <code>-</code> | <code>+</code> ] <em>FloatingPoint</em>
+   *              [ <code>f</code> | <code>F</code> | <code>d</code>
+   *                | <code>D</code>] )
+   * <em>FloatingPoint</em>:
+   *      ( { <em>Digit</em> }+ [ <code>.</code> { <em>Digit</em> } ]
+   *              [ <em>Exponent</em> ] )
+   *    | ( <code>.</code> { <em>Digit</em> }+ [ <em>Exponent</em> ] )
+   * <em>Exponent</em>:
+   *      ( ( <code>e</code> | <code>E</code> )
+   *              [ <code>-</code> | <code>+</code> ] { <em>Digit</em> }+ )
+   * <em>Digit</em>: <em><code>'0'</code> through <code>'9'</code></em>
+   * </pre>
+   * 
+   * <p>
+   * NaN and infinity are special cases, to allow parsing of the output of
+   * toString. Otherwise, the result is determined by calculating
+   * <em>n * 10<sup>exponent</sup></em> to infinite precision, then rounding to
+   * the nearest double. Remember that many numbers cannot be precisely
+   * represented in floating point. In case of overflow, infinity is used, and
+   * in case of underflow, signed zero is used. Unlike Integer.parseInt, this
+   * does not accept Unicode digits outside the ASCII range.
+   * 
+   * <p>
+   * If an unexpected character is found in the <code>String</code>, a
+   * <code>NumberFormatException</code> will be thrown. Leading and trailing
+   * 'whitespace' is ignored via <code>String.trim()</code>, but spaces internal
+   * to the actual number are not allowed.
+   * 
+   * <p>
+   * To parse numbers according to another format, consider using
+   * {@link java.text.NumberFormat}.
+   * 
+   * @XXX specify where/how we are not in accord with the spec.
+   * 
+   * @param str
+   *          the <code>String</code> to convert
+   * @return the <code>double</code> value of <code>s</code>
+   * @throws NumberFormatException
+   *           if <code>s</code> cannot be parsed as a <code>double</code>
+   * @throws NullPointerException
+   *           if <code>s</code> is null
+   * @see #MIN_VALUE
+   * @see #MAX_VALUE
+   * @see #POSITIVE_INFINITY
+   * @see #NEGATIVE_INFINITY
+   * @since 1.2
+   */
+  public static double parseDouble(String str) {
+    return nativeparsedouble(str);
+  }
+
+  public static native double nativeparsedouble(String str);
+
+  public static native double nativeparsedouble(int start, int length, byte[] str);
+
+  /**
+   * Return <code>true</code> if the <code>double</code> has the same value as
+   * <code>NaN</code>, otherwise return <code>false</code>.
+   * 
+   * @param v
+   *          the <code>double</code> to compare
+   * @return whether the argument is <code>NaN</code>.
+   */
+  public static boolean isNaN(double v) {
+    // This works since NaN != NaN is the only reflexive inequality
+    // comparison which returns true.
+    return v != v;
+  }
+
+  /**
+   * Return <code>true</code> if the <code>double</code> has a value equal to
+   * either <code>NEGATIVE_INFINITY</code> or <code>POSITIVE_INFINITY</code>,
+   * otherwise return <code>false</code>.
+   * 
+   * @param v
+   *          the <code>double</code> to compare
+   * @return whether the argument is (-/+) infinity.
+   */
+  public static boolean isInfinite(double v) {
+    return false;
+  }
+
+  /**
+   * Return <code>true</code> if the value of this <code>Double</code> is the
+   * same as <code>NaN</code>, otherwise return <code>false</code>.
+   * 
+   * @return whether this <code>Double</code> is <code>NaN</code>
+   */
+  public boolean isNaN() {
+    return isNaN(value);
+  }
+
+  /**
+   * Return <code>true</code> if the value of this <code>Double</code> is the
+   * same as <code>NEGATIVE_INFINITY</code> or <code>POSITIVE_INFINITY</code>,
+   * otherwise return <code>false</code>.
+   * 
+   * @return whether this <code>Double</code> is (-/+) infinity
+   */
+  public boolean isInfinite() {
+    return isInfinite(value);
+  }
+
+  /**
+   * Convert the <code>double</code> value of this <code>Double</code> to a
+   * <code>String</code>. This method calls <code>Double.toString(double)</code>
+   * to do its dirty work.
+   * 
+   * @return the <code>String</code> representation
+   * @see #toString(double)
+   */
+  public String toString() {
+    return toString(value);
+  }
+
+  /**
+   * Return the value of this <code>Double</code> as a <code>byte</code>.
+   * 
+   * @return the byte value
+   * @since 1.1
+   */
+  public byte byteValue() {
+    return (byte) value;
+  }
+
+  /**
+   * Return the value of this <code>Double</code> as a <code>short</code>.
+   * 
+   * @return the short value
+   * @since 1.1
+   */
+  public short shortValue() {
+    return (short) value;
+  }
+
+  /**
+   * Return the value of this <code>Double</code> as an <code>int</code>.
+   * 
+   * @return the int value
+   */
+  public int intValue() {
+    return (int) value;
+  }
+
+  /**
+   * Return the value of this <code>Double</code> as a <code>long</code>.
+   * 
+   * @return the long value
+   */
+  public long longValue() {
+    return (long) value;
+  }
+
+  /**
+   * Return the value of this <code>Double</code> as a <code>float</code>.
+   * 
+   * @return the float value
+   */
+  public float floatValue() {
+    return (float) value;
+  }
+
+  /**
+   * Return the value of this <code>Double</code>.
+   * 
+   * @return the double value
+   */
+  public double doubleValue() {
+    return value;
+  }
+
+  /**
+   * Return a hashcode representing this Object. <code>Double</code>'s hash code
+   * is calculated by:<br>
+   * <code>long v = Double.doubleToLongBits(doubleValue());<br>
+   *    int hash = (int)(v^(v&gt;&gt;32))</code>.
+   * 
+   * @return this Object's hash code
+   * @see #doubleToLongBits(double)
+   */
+  public int hashCode() {
+    long v = doubleToLongBits(value);
+    return (int) (v ^ (v >>> 32));
+  }
+
+  /**
+   * Returns <code>true</code> if <code>obj</code> is an instance of
+   * <code>Double</code> and represents the same double value. Unlike comparing
+   * two doubles with <code>==</code>, this treats two instances of
+   * <code>Double.NaN</code> as equal, but treats <code>0.0</code> and
+   * <code>-0.0</code> as unequal.
+   * 
+   * <p>
+   * Note that <code>d1.equals(d2)</code> is identical to
+   * <code>doubleToLongBits(d1.doubleValue()) ==
+   *    doubleToLongBits(d2.doubleValue())</code>.
+   * 
+   * @param obj
+   *          the object to compare
+   * @return whether the objects are semantically equal
+   */
+  public boolean equals(Object obj) {
+    if (!(obj instanceof Double))
+      return false;
+
+    double d = ((Double) obj).value;
+
+    // Avoid call to native method. However, some implementations, like gcj,
+    // are better off using floatToIntBits(value) == floatToIntBits(f).
+    // Check common case first, then check NaN and 0.
+    if (value == d)
+      return (value != 0) || (1 / value == 1 / d);
+    return isNaN(value) && isNaN(d);
+  }
+
+  /**
+   * Convert the double to the IEEE 754 floating-point "double format" bit
+   * layout. Bit 63 (the most significant) is the sign bit, bits 62-52 (masked
+   * by 0x7ff0000000000000L) represent the exponent, and bits 51-0 (masked by
+   * 0x000fffffffffffffL) are the mantissa. This function collapses all versions
+   * of NaN to 0x7ff8000000000000L. The result of this function can be used as
+   * the argument to <code>Double.longBitsToDouble(long)</code> to obtain the
+   * original <code>double</code> value.
+   * 
+   * @param value
+   *          the <code>double</code> to convert
+   * @return the bits of the <code>double</code>
+   * @see #longBitsToDouble(long)
+   */
+  public static long doubleToLongBits(double value) {
+    if (isNaN(value))
+      return 0x7ff8000000000000L;
+    else
+      return /* VMDouble. */doubleToRawLongBits(value);
+  }
+
+  /**
+   * Convert the double to the IEEE 754 floating-point "double format" bit
+   * layout. Bit 63 (the most significant) is the sign bit, bits 62-52 (masked
+   * by 0x7ff0000000000000L) represent the exponent, and bits 51-0 (masked by
+   * 0x000fffffffffffffL) are the mantissa. This function leaves NaN alone,
+   * rather than collapsing to a canonical value. The result of this function
+   * can be used as the argument to <code>Double.longBitsToDouble(long)</code>
+   * to obtain the original <code>double</code> value.
+   * 
+   * @param value
+   *          the <code>double</code> to convert
+   * @return the bits of the <code>double</code>
+   * @see #longBitsToDouble(long)
+   */
+  /*
+   * public static long doubleToRawLongBits(double value) { return
+   * VMDouble.doubleToRawLongBits(value); }
+   */
+  public static native long doubleToRawLongBits(double value);
+
+  /**
+   * Convert the argument in IEEE 754 floating-point "double format" bit layout
+   * to the corresponding float. Bit 63 (the most significant) is the sign bit,
+   * bits 62-52 (masked by 0x7ff0000000000000L) represent the exponent, and bits
+   * 51-0 (masked by 0x000fffffffffffffL) are the mantissa. This function leaves
+   * NaN alone, so that you can recover the bit pattern with
+   * <code>Double.doubleToRawLongBits(double)</code>.
+   * 
+   * @param bits
+   *          the bits to convert
+   * @return the <code>double</code> represented by the bits
+   * @see #doubleToLongBits(double)
+   * @see #doubleToRawLongBits(double)
+   */
+  /*
+   * public static double longBitsToDouble(long bits) { return
+   * VMDouble.longBitsToDouble(bits); }
+   */
+  public static native double longBitsToDouble(long bits);
+
+  /**
+   * Compare two Doubles numerically by comparing their <code>double</code>
+   * values. The result is positive if the first is greater, negative if the
+   * second is greater, and 0 if the two are equal. However, this special cases
+   * NaN and signed zero as follows: NaN is considered greater than all other
+   * doubles, including <code>POSITIVE_INFINITY</code>, and positive zero is
+   * considered greater than negative zero.
+   * 
+   * @param d
+   *          the Double to compare
+   * @return the comparison
+   * @since 1.2
+   */
+  public int compareTo(Double d) {
+    return compare(value, d.value);
+  }
+
+  /**
+   * Behaves like <code>new Double(x).compareTo(new Double(y))</code>; in other
+   * words this compares two doubles, special casing NaN and zero, without the
+   * overhead of objects.
+   * 
+   * @param x
+   *          the first double to compare
+   * @param y
+   *          the second double to compare
+   * @return the comparison
+   * @since 1.4
+   */
+  public static int compare(double x, double y) {
+    // handle the easy cases:
+    if (x < y)
+      return -1;
+    if (x > y)
+      return 1;
+
+    // handle equality respecting that 0.0 != -0.0 (hence not using x == y):
+    long lx = doubleToRawLongBits(x);
+    long ly = doubleToRawLongBits(y);
+    if (lx == ly)
+      return 0;
+
+    // handle NaNs:
+    if (x != x)
+      return (y != y) ? 0 : 1;
+    else if (y != y)
+      return -1;
+
+    // handle +/- 0.0
+    return (lx < ly) ? -1 : 1;
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Enumeration.java b/Robust/src/ClassLibrary/SSJavaInfer/Enumeration.java
new file mode 100644 (file)
index 0000000..e8da9fe
--- /dev/null
@@ -0,0 +1,13 @@
+public class Enumeration {
+
+  public Enumeration() {
+  }
+
+  public boolean hasMoreElements() {
+    return false;
+  }
+
+  public Object nextElement() {
+    return null;
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Exception.java b/Robust/src/ClassLibrary/SSJavaInfer/Exception.java
new file mode 100644 (file)
index 0000000..8338504
--- /dev/null
@@ -0,0 +1,102 @@
+/* Exception.java -- generic exception thrown to indicate an exceptional
+   condition has occurred.
+   Copyright (C) 1998, 1999, 2001, 2002, 2005  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+//package java.lang;
+
+/**
+ * The root class of all exceptions worth catching in a program. This includes
+ * the special category of <code>RuntimeException</code>, which does not need to
+ * be declared in a throws clause. Exceptions can be used to represent almost
+ * any exceptional behavior, such as programming errors, mouse movements,
+ * keyboard clicking, etc.
+ * 
+ * @author Brian Jones
+ * @author Warren Levy (warrenl@cygnus.com)
+ * @author Eric Blake (ebb9@email.byu.edu)
+ * @status updated to 1.4
+ */
+public class Exception extends Throwable {
+  /**
+   * Compatible with JDK 1.0+.
+   */
+  private static final long serialVersionUID = -3387516993124229948L;
+
+  /**
+   * Create an exception without a message. The cause remains uninitialized.
+   * 
+   * @see #initCause(Throwable)
+   */
+  public Exception() {
+  }
+
+  /**
+   * Create an exception with a message. The cause remains uninitialized.
+   * 
+   * @param s
+   *          the message
+   * @see #initCause(Throwable)
+   */
+  public Exception(String s) {
+    super(s);
+  }
+
+  /**
+   * Create an exception with a message and a cause.
+   * 
+   * @param s
+   *          the message string
+   * @param cause
+   *          the cause of this error
+   * @since 1.4
+   */
+  public Exception(String s, Throwable cause) {
+    super(s, cause);
+  }
+
+  /**
+   * Create an exception with a given cause, and a message of
+   * <code>cause == null ? null : cause.toString()</code>.
+   * 
+   * @param cause
+   *          the cause of this exception
+   * @since 1.4
+   */
+  public Exception(Throwable cause) {
+    super(cause);
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/File.java b/Robust/src/ClassLibrary/SSJavaInfer/File.java
new file mode 100644 (file)
index 0000000..97b1b91
--- /dev/null
@@ -0,0 +1,21 @@
+//import java.io.FileSystem;
+//import java.io.FilenameFilter;
+//import java.util.ArrayList;
+
+public class File {
+  String path;
+
+  public File(String path) {
+    this.path = path;
+  }
+
+  String getPath() {
+    return path;
+  }
+
+  long length() {
+    return nativeLength(path.getBytes());
+  }
+
+  private static native long nativeLength(byte[] pathname);
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/FileDescriptor.java b/Robust/src/ClassLibrary/SSJavaInfer/FileDescriptor.java
new file mode 100644 (file)
index 0000000..9e51e43
--- /dev/null
@@ -0,0 +1,135 @@
+/* FileDescriptor.java -- Opaque file handle class
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
+   Free Software Foundation, Inc.
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GNU Classpath 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
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+//package java.io;
+
+/*import gnu.java.nio.FileChannelImpl;
+
+ import java.nio.channels.ByteChannel;
+ import java.nio.channels.FileChannel;
+ */
+/**
+ * This class represents an opaque file handle as a Java class. It should be
+ * used only to pass to other methods that expect an object of this type. No
+ * system specific information can be obtained from this object.
+ * 
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Tom Tromey (tromey@cygnus.com)
+ * @date September 24, 1998
+ */
+public final class FileDescriptor {
+  /**
+   * A <code>FileDescriptor</code> representing the system standard input
+   * stream. This will usually be accessed through the <code>System.in</code>
+   * variable.
+   */
+  public static final FileDescriptor in = new FileDescriptor("System.in" /*
+                                                                          * FileChannelImpl
+                                                                          * .in
+                                                                          */);
+
+  /**
+   * A <code>FileDescriptor</code> representing the system standard output
+   * stream. This will usually be accessed through the <code>System.out</code>
+   * variable.
+   */
+  public static final FileDescriptor out = new FileDescriptor("System.out" /*
+                                                                            * FileChannelImpl
+                                                                            * .
+                                                                            * out
+                                                                            */);
+
+  /**
+   * A <code>FileDescriptor</code> representing the system standard error
+   * stream. This will usually be accessed through the <code>System.err</code>
+   * variable.
+   */
+  public static final FileDescriptor err = new FileDescriptor("System.err" /*
+                                                                            * FileChannelImpl
+                                                                            * .
+                                                                            * err
+                                                                            */);
+
+  // final ByteChannel channel;
+  final String channel;
+
+  /**
+   * This method is used to initialize an invalid FileDescriptor object.
+   */
+  public FileDescriptor() {
+    channel = null;
+  }
+
+  /**
+   * This method is used to initialize a FileDescriptor object.
+   */
+  /*
+   * FileDescriptor(ByteChannel channel) { this.channel = channel; }
+   */
+
+  FileDescriptor(String channel) {
+    this.channel = channel;
+  }
+
+  /**
+   * This method forces all data that has not yet been physically written to the
+   * underlying storage medium associated with this <code>FileDescriptor</code>
+   * to be written out. This method will not return until all data has been
+   * fully written to the underlying device. If the device does not support this
+   * functionality or if an error occurs, then an exception will be thrown.
+   */
+  /*
+   * public void sync () throws SyncFailedException { if (channel instanceof
+   * FileChannel) { try { ((FileChannel) channel).force(true); } catch
+   * (IOException ex) { if (ex instanceof SyncFailedException) throw
+   * (SyncFailedException) ex; else throw new
+   * SyncFailedException(ex.toString()); } } }
+   */
+
+  /**
+   * This methods tests whether or not this object represents a valid open
+   * native file handle.
+   * 
+   * @return <code>true</code> if this object represents a valid native file
+   *         handle, <code>false</code> otherwise
+   */
+  /*
+   * public boolean valid () { ByteChannel c = channel; return (c != null) &&
+   * (c.isOpen()); }
+   */
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/FileInputStream.java b/Robust/src/ClassLibrary/SSJavaInfer/FileInputStream.java
new file mode 100644 (file)
index 0000000..8dfd3fe
--- /dev/null
@@ -0,0 +1,95 @@
+public class FileInputStream extends InputStream {
+  private int fd;
+
+  public FileInputStream(String pathname) {
+    fd = nativeOpen(pathname.getBytes());
+  }
+
+  public FileInputStream(File path) {
+    fd = nativeOpen(path.getPath().getBytes());
+  }
+
+  public int getfd() {
+    return fd;
+  }
+
+  private static native int nativeOpen(byte[] filename);
+
+  private static native int nativeRead(int fd, byte[] array, int numBytes);
+
+  private static native int nativePeek(int fd);
+
+  private static native void nativeClose(int fd);
+
+  private static native int nativeAvailable(int fd);
+
+  public int read() {
+    byte b[] = new byte[1];
+    int retval = read(b);
+    if (retval == -1 || retval == 0)
+      return -1;
+
+    // if carriage return comes back, dump it
+    if (b[0] == 13) {
+      return read();
+    }
+
+    // otherwise return result
+    return b[0];
+  }
+
+  public int peek() {
+    return nativePeek(fd);
+  }
+
+  public int read(byte[] b, int offset, int len) {
+    if (offset < 0 || len < 0 || offset + len > b.length) {
+      return -1;
+    }
+    byte readbuf[] = new byte[len];
+    int rtr = nativeRead(fd, readbuf, len);
+    System.arraycopy(readbuf, 0, b, offset, len);
+    return rtr;
+  }
+
+  public int read(byte[] b) {
+    return nativeRead(fd, b, b.length);
+  }
+
+  public String readLine() {
+    String line = "";
+    int c = read();
+
+    // if we're already at the end of the file
+    // or there is an error, don't even return
+    // the empty string
+    if (c <= 0) {
+      return null;
+    }
+
+    // ASCII 13 is carriage return, check for that also
+    while (c != '\n' && c != 13 && c > 0) {
+      line += (char) c;
+      c = read();
+    }
+
+    // peek and consume characters that are carriage
+    // returns or line feeds so the whole line is read
+    // and returned, and none of the line-ending chars
+    c = peek();
+    while (c == '\n' || c == 13) {
+      c = read();
+      c = peek();
+    }
+
+    return line;
+  }
+
+  public void close() {
+    nativeClose(fd);
+  }
+
+  public int available() {
+    return nativeAvailable(fd);
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/FileOutputStream.java b/Robust/src/ClassLibrary/SSJavaInfer/FileOutputStream.java
new file mode 100644 (file)
index 0000000..d7ffa87
--- /dev/null
@@ -0,0 +1,67 @@
+//import java.io.FileDescriptor;
+
+public class FileOutputStream extends OutputStream {
+  private int fd;
+
+  public FileOutputStream(String pathname) {
+    fd = nativeOpen(pathname.getBytes());
+  }
+
+  public FileOutputStream(String pathname, boolean append) {
+    if (append)
+      fd = nativeAppend(pathname.getBytes());
+    else
+      fd = nativeOpen(pathname.getBytes());
+  }
+
+  public FileOutputStream(String pathname, int mode) {
+    if (mode == 0)
+      fd = nativeAppend(pathname.getBytes());
+    if (mode == 1)
+      fd = nativeOpen(pathname.getBytes());
+  }
+
+  public FileOutputStream(File path) {
+    fd = nativeOpen(path.getPath().getBytes());
+  }
+
+  public FileOutputStreamOpen(String pathname) {
+    fd = nativeOpen(pathname.getBytes());
+  }
+
+  public FileOutputStream(FileDescriptor fdObj) {
+    fd = nativeOpen(fdObj.channel.getBytes());
+  }
+
+  private static native int nativeOpen(byte[] filename);
+
+  private static native int nativeAppend(byte[] filename);
+
+  private static native void nativeWrite(int fd, byte[] array, int off, int len);
+
+  private static native void nativeClose(int fd);
+
+  private static native void nativeFlush(int fd);
+
+  public void write(int ch) {
+    byte b[] = new byte[1];
+    b[0] = (byte) ch;
+    write(b);
+  }
+
+  public void write(byte[] b) {
+    nativeWrite(fd, b, 0, b.length);
+  }
+
+  public void write(byte[] b, int index, int len) {
+    nativeWrite(fd, b, index, len);
+  }
+
+  public void flush() {
+    nativeFlush(fd);
+  }
+
+  public void close() {
+    nativeClose(fd);
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/FilterInputStream.java b/Robust/src/ClassLibrary/SSJavaInfer/FilterInputStream.java
new file mode 100644 (file)
index 0000000..b1353f5
--- /dev/null
@@ -0,0 +1,210 @@
+/* FilterInputStream.java -- Base class for classes that filter input
+   Copyright (C) 1998, 1999, 2001, 2005  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+//package java.io;
+
+/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
+ * "The Java Language Specification", ISBN 0-201-63451-1
+ * plus online API docs for JDK 1.2 beta from http://www.javasoft.com.
+ * Status:  Believed complete and correct.
+ */
+
+/**
+ * This is the common superclass of all standard classes that filter input. It
+ * acts as a layer on top of an underlying <code>InputStream</code> and simply
+ * redirects calls made to it to the subordinate InputStream instead. Subclasses
+ * of this class perform additional filtering functions in addition to simply
+ * redirecting the call.
+ * <p>
+ * This class is not abstract. However, since it only redirects calls to a
+ * subordinate <code>InputStream</code> without adding any functionality on top
+ * of it, this class should not be used directly. Instead, various subclasses of
+ * this class should be used. This is enforced with a protected constructor. Do
+ * not try to hack around it.
+ * <p>
+ * When creating a subclass of <code>FilterInputStream</code>, override the
+ * appropriate methods to implement the desired filtering. However, note that
+ * the <code>read(byte[])</code> method does not need to be overridden as this
+ * class redirects calls to that method to <code>read(byte[], int, int)</code>
+ * instead of to the subordinate <code>InputStream read(byte[])</code> method.
+ * 
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Warren Levy (warrenl@cygnus.com)
+ */
+
+public class FilterInputStream extends InputStream {
+  /**
+   * This is the subordinate <code>InputStream</code> to which method calls are
+   * redirected
+   */
+  protected InputStream in;
+
+  /**
+   * Create a <code>FilterInputStream</code> with the specified subordinate
+   * <code>InputStream</code>.
+   * 
+   * @param in
+   *          The subordinate <code>InputStream</code>
+   */
+  protected FilterInputStream(InputStream in) {
+    this.in = in;
+  }
+
+  /**
+   * Calls the <code>in.mark(int)</code> method.
+   * 
+   * @param readlimit
+   *          The parameter passed to <code>in.mark(int)</code>
+   */
+  public void mark(int readlimit) {
+    in.mark(readlimit);
+  }
+
+  /**
+   * Calls the <code>in.markSupported()</code> method.
+   * 
+   * @return <code>true</code> if mark/reset is supported, <code>false</code>
+   *         otherwise
+   */
+
+  public boolean markSupported() {
+    return in.markSupported();
+  }
+
+  /**
+   * Calls the <code>in.reset()</code> method.
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public void reset() throws IOException {
+    in.reset();
+  }
+
+  /**
+   * Calls the <code>in.available()</code> method.
+   * 
+   * @return The value returned from <code>in.available()</code>
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public int available() throws IOException {
+    return in.available();
+  }
+
+  /**
+   * Calls the <code>in.skip(long)</code> method
+   * 
+   * @param numBytes
+   *          The requested number of bytes to skip.
+   * 
+   * @return The value returned from <code>in.skip(long)</code>
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+
+  public long skip(long numBytes) throws IOException {
+    return in.skip(numBytes);
+  }
+
+  /**
+   * Calls the <code>in.read()</code> method
+   * 
+   * @return The value returned from <code>in.read()</code>
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+
+  public int read() throws IOException {
+    return in.read();
+  }
+
+  /**
+   * Calls the <code>read(byte[], int, int)</code> overloaded method. Note that
+   * this method does not redirect its call directly to a corresponding method
+   * in <code>in</code>. This allows subclasses to override only the three
+   * argument version of <code>read</code>.
+   * 
+   * @param buf
+   *          The buffer to read bytes into
+   * 
+   * @return The value retured from <code>in.read(byte[], int, int)</code>
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+
+  public int read(byte[] buf) throws IOException {
+    return read(buf, 0, buf.length);
+  }
+
+  /**
+   * Calls the <code>in.read(byte[], int, int)</code> method.
+   * 
+   * @param buf
+   *          The buffer to read bytes into
+   * @param offset
+   *          The index into the buffer to start storing bytes
+   * @param len
+   *          The maximum number of bytes to read.
+   * 
+   * @return The value retured from <code>in.read(byte[], int, int)</code>
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+
+  public int read(byte[] buf, int offset, int len) throws IOException {
+    return in.read(buf, offset, len);
+  }
+
+  /**
+   * This method closes the input stream by closing the input stream that this
+   * object is filtering. Future attempts to access this stream may throw an
+   * exception.
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+
+  public void close() throws IOException {
+    in.close();
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/FilterOutputStream.java b/Robust/src/ClassLibrary/SSJavaInfer/FilterOutputStream.java
new file mode 100644 (file)
index 0000000..633c346
--- /dev/null
@@ -0,0 +1,157 @@
+/* FilterOutputStream.java -- Parent class for output streams that filter
+   Copyright (C) 1998, 1999, 2001, 2003, 2005  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+//package java.io;
+
+/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
+ * "The Java Language Specification", ISBN 0-201-63451-1
+ * Status:  Complete to version 1.1.
+ */
+
+/**
+ * This class is the common superclass of output stream classes that filter the
+ * output they write. These classes typically transform the data in some way
+ * prior to writing it out to another underlying <code>OutputStream</code>. This
+ * class simply overrides all the methods in <code>OutputStream</code> to
+ * redirect them to the underlying stream. Subclasses provide actual filtering.
+ * 
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Tom Tromey (tromey@cygnus.com)
+ */
+public class FilterOutputStream extends OutputStream {
+  /**
+   * This is the subordinate <code>OutputStream</code> that this class redirects
+   * its method calls to.
+   */
+  protected OutputStream out;
+
+  /**
+   * This method initializes an instance of <code>FilterOutputStream</code> to
+   * write to the specified subordinate <code>OutputStream</code>.
+   * 
+   * @param out
+   *          The <code>OutputStream</code> to write to
+   */
+  public FilterOutputStream(OutputStream out) {
+    this.out = out;
+  }
+
+  /**
+   * This method closes the underlying <code>OutputStream</code>. Any further
+   * attempts to write to this stream may throw an exception.
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public void close() // throws IOException
+  {
+    flush();
+    out.close();
+  }
+
+  /**
+   * This method attempt to flush all buffered output to be written to the
+   * underlying output sink.
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public void flush() // throws IOException
+  {
+    out.flush();
+  }
+
+  /**
+   * This method writes a single byte of output to the underlying
+   * <code>OutputStream</code>.
+   * 
+   * @param b
+   *          The byte to write, passed as an int.
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public void write(int b) // throws IOException
+  {
+    out.write(b);
+  }
+
+  /**
+   * This method writes all the bytes in the specified array to the underlying
+   * <code>OutputStream</code>. It does this by calling the three parameter
+   * version of this method - <code>write(byte[], int, int)</code> in this class
+   * instead of writing to the underlying <code>OutputStream</code> directly.
+   * This allows most subclasses to avoid overriding this method.
+   * 
+   * @param buf
+   *          The byte array to write bytes from
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public void write(byte[] buf) // throws IOException
+  {
+    // Don't do checking here, per Java Lang Spec.
+    write(buf, 0, buf.length);
+  }
+
+  /**
+   * This method calls the <code>write(int)</code> method <code>len</code> times
+   * for all bytes from the array <code>buf</code> starting at index
+   * <code>offset</code>. Subclasses should overwrite this method to get a more
+   * efficient implementation.
+   * 
+   * @param buf
+   *          The byte array to write bytes from
+   * @param offset
+   *          The index into the array to start writing bytes from
+   * @param len
+   *          The number of bytes to write
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public void write(byte[] buf, int offset, int len) // throws IOException
+  {
+    // Don't do checking here, per Java Lang Spec.
+    for (int i = 0; i < len; i++)
+      write(buf[offset + i]);
+
+  }
+
+} // class FilterOutputStream
+
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Float.java b/Robust/src/ClassLibrary/SSJavaInfer/Float.java
new file mode 100644 (file)
index 0000000..59b08c8
--- /dev/null
@@ -0,0 +1,605 @@
+/* Float.java -- object wrapper for float
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+   Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+/**
+ * Instances of class <code>Float</code> represent primitive <code>float</code>
+ * values.
+ * 
+ * Additionally, this class provides various helper functions and variables
+ * related to floats.
+ * 
+ * @author Paul Fisher
+ * @author Andrew Haley (aph@cygnus.com)
+ * @author Eric Blake (ebb9@email.byu.edu)
+ * @author Tom Tromey (tromey@redhat.com)
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ * @since 1.0
+ * @status partly updated to 1.5
+ */
+public final class Float {
+  /**
+   * Compatible with JDK 1.0+.
+   */
+  private static final long serialVersionUID = -2671257302660747028L;
+
+  /**
+   * The maximum positive value a <code>double</code> may represent is
+   * 3.4028235e+38f.
+   */
+  public static final float MAX_VALUE = 3.4028235e+38f;
+
+  /**
+   * The minimum positive value a <code>float</code> may represent is 1.4e-45.
+   */
+  public static final float MIN_VALUE = 1.4e-45f;
+
+  /**
+   * The value of a float representation -1.0/0.0, negative infinity.
+   */
+  public static final float NEGATIVE_INFINITY = -1.0f / 0.0f;
+
+  /**
+   * The value of a float representation 1.0/0.0, positive infinity.
+   */
+  public static final float POSITIVE_INFINITY = 1.0f / 0.0f;
+
+  /**
+   * All IEEE 754 values of NaN have the same value in Java.
+   */
+  public static final float NaN = 0.0f / 0.0f;
+
+  /**
+   * The primitive type <code>float</code> is represented by this
+   * <code>Class</code> object.
+   * 
+   * @since 1.1
+   */
+  // public static final Class<Float> TYPE = (Class<Float>)
+  // VMClassLoader.getPrimitiveClass('F');
+
+  /**
+   * The number of bits needed to represent a <code>float</code>.
+   * 
+   * @since 1.5
+   */
+  public static final int SIZE = 32;
+
+  /**
+   * Cache representation of 0
+   */
+  private static final Float ZERO = new Float(0.0f);
+
+  /**
+   * Cache representation of 1
+   */
+  private static final Float ONE = new Float(1.0f);
+
+  /**
+   * The immutable value of this Float.
+   * 
+   * @serial the wrapped float
+   */
+  private final float value;
+
+  /**
+   * Create a <code>Float</code> from the primitive <code>float</code>
+   * specified.
+   * 
+   * @param value
+   *          the <code>float</code> argument
+   */
+  public Float(float value) {
+    this.value = value;
+  }
+
+  /**
+   * Create a <code>Float</code> from the primitive <code>double</code>
+   * specified.
+   * 
+   * @param value
+   *          the <code>double</code> argument
+   */
+  public Float(double value) {
+    this.value = (float) value;
+  }
+
+  /**
+   * Create a <code>Float</code> from the specified <code>String</code>. This
+   * method calls <code>Float.parseFloat()</code>.
+   * 
+   * @param s
+   *          the <code>String</code> to convert
+   * @throws NumberFormatException
+   *           if <code>s</code> cannot be parsed as a <code>float</code>
+   * @throws NullPointerException
+   *           if <code>s</code> is null
+   * @see #parseFloat(String)
+   */
+  public Float(String s) {
+    value = parseFloat(s);
+  }
+
+  /**
+   * Convert the <code>float</code> to a <code>String</code>. Floating-point
+   * string representation is fairly complex: here is a rundown of the possible
+   * values. "<code>[-]</code>" indicates that a negative sign will be printed
+   * if the value (or exponent) is negative. "<code>&lt;number&gt;</code>" means
+   * a string of digits ('0' to '9'). "<code>&lt;digit&gt;</code>" means a
+   * single digit ('0' to '9').<br>
+   * 
+   * <table border=1>
+   * <tr>
+   * <th>Value of Float</th>
+   * <th>String Representation</th>
+   * </tr>
+   * <tr>
+   * <td>[+-] 0</td>
+   * <td><code>[-]0.0</code></td>
+   * </tr>
+   * <tr>
+   * <td>Between [+-] 10<sup>-3</sup> and 10<sup>7</sup>, exclusive</td>
+   * <td><code>[-]number.number</code></td>
+   * </tr>
+   * <tr>
+   * <td>Other numeric value</td>
+   * <td><code>[-]&lt;digit&gt;.&lt;number&gt;
+   *          E[-]&lt;number&gt;</code></td>
+   * </tr>
+   * <tr>
+   * <td>[+-] infinity</td>
+   * <td><code>[-]Infinity</code></td>
+   * </tr>
+   * <tr>
+   * <td>NaN</td>
+   * <td><code>NaN</code></td>
+   * </tr>
+   * </table>
+   * 
+   * Yes, negative zero <em>is</em> a possible value. Note that there is
+   * <em>always</em> a <code>.</code> and at least one digit printed after it:
+   * even if the number is 3, it will be printed as <code>3.0</code>. After the
+   * ".", all digits will be printed except trailing zeros. The result is
+   * rounded to the shortest decimal number which will parse back to the same
+   * float.
+   * 
+   * <p>
+   * To create other output formats, use {@link java.text.NumberFormat}.
+   * 
+   * @XXX specify where we are not in accord with the spec.
+   * 
+   * @param f
+   *          the <code>float</code> to convert
+   * @return the <code>String</code> representing the <code>float</code>
+   */
+  /*
+   * public static String toString(float f) { return VMFloat.toString(f); }
+   */
+
+  /**
+   * Convert a float value to a hexadecimal string. This converts as follows:
+   * <ul>
+   * <li>A NaN value is converted to the string "NaN".
+   * <li>Positive infinity is converted to the string "Infinity".
+   * <li>Negative infinity is converted to the string "-Infinity".
+   * <li>For all other values, the first character of the result is '-' if the
+   * value is negative. This is followed by '0x1.' if the value is normal, and
+   * '0x0.' if the value is denormal. This is then followed by a (lower-case)
+   * hexadecimal representation of the mantissa, with leading zeros as required
+   * for denormal values. The next character is a 'p', and this is followed by a
+   * decimal representation of the unbiased exponent.
+   * </ul>
+   * 
+   * @param f
+   *          the float value
+   * @return the hexadecimal string representation
+   * @since 1.5
+   */
+  /*
+   * public static String toHexString(float f) { if (isNaN(f)) return "NaN"; if
+   * (isInfinite(f)) return f < 0 ? "-Infinity" : "Infinity";
+   * 
+   * int bits = floatToIntBits(f); CPStringBuilder result = new
+   * CPStringBuilder();
+   * 
+   * if (bits < 0) result.append('-'); result.append("0x");
+   * 
+   * final int mantissaBits = 23; final int exponentBits = 8; int mantMask = (1
+   * << mantissaBits) - 1; int mantissa = bits & mantMask; int expMask = (1 <<
+   * exponentBits) - 1; int exponent = (bits >>> mantissaBits) & expMask;
+   * 
+   * result.append(exponent == 0 ? '0' : '1'); result.append('.'); // For Float
+   * only, we have to adjust the mantissa. mantissa <<= 1;
+   * result.append(Integer.toHexString(mantissa)); if (exponent == 0 && mantissa
+   * != 0) { // Treat denormal specially by inserting '0's to make // the length
+   * come out right. The constants here are // to account for things like the
+   * '0x'. int offset = 4 + ((bits < 0) ? 1 : 0); // The silly +3 is here to
+   * keep the code the same between // the Float and Double cases. In Float the
+   * value is // not a multiple of 4. int desiredLength = offset + (mantissaBits
+   * + 3) / 4; while (result.length() < desiredLength) result.insert(offset,
+   * '0'); } result.append('p'); if (exponent == 0 && mantissa == 0) { // Zero,
+   * so do nothing special. } else { // Apply bias. boolean denormal = exponent
+   * == 0; exponent -= (1 << (exponentBits - 1)) - 1; // Handle denormal. if
+   * (denormal) ++exponent; }
+   * 
+   * result.append(Integer.toString(exponent)); return result.toString(); }
+   */
+
+  /**
+   * Creates a new <code>Float</code> object using the <code>String</code>.
+   * 
+   * @param s
+   *          the <code>String</code> to convert
+   * @return the new <code>Float</code>
+   * @throws NumberFormatException
+   *           if <code>s</code> cannot be parsed as a <code>float</code>
+   * @throws NullPointerException
+   *           if <code>s</code> is null
+   * @see #parseFloat(String)
+   */
+  public static Float valueOf(String s) {
+    return valueOf(parseFloat(s));
+  }
+
+  /**
+   * Returns a <code>Float</code> object wrapping the value. In contrast to the
+   * <code>Float</code> constructor, this method may cache some values. It is
+   * used by boxing conversion.
+   * 
+   * @param val
+   *          the value to wrap
+   * @return the <code>Float</code>
+   * @since 1.5
+   */
+  public static Float valueOf(float val) {
+    if ((val == 0.0)/* && (floatToRawIntBits(val) == 0) */)
+      return ZERO;
+    else if (val == 1.0)
+      return ONE;
+    else
+      return new Float(val);
+  }
+
+  /**
+   * Parse the specified <code>String</code> as a <code>float</code>. The
+   * extended BNF grammar is as follows:<br>
+   * 
+   * <pre>
+   * <em>DecodableString</em>:
+   *      ( [ <code>-</code> | <code>+</code> ] <code>NaN</code> )
+   *    | ( [ <code>-</code> | <code>+</code> ] <code>Infinity</code> )
+   *    | ( [ <code>-</code> | <code>+</code> ] <em>FloatingPoint</em>
+   *              [ <code>f</code> | <code>F</code> | <code>d</code>
+   *                | <code>D</code>] )
+   * <em>FloatingPoint</em>:
+   *      ( { <em>Digit</em> }+ [ <code>.</code> { <em>Digit</em> } ]
+   *              [ <em>Exponent</em> ] )
+   *    | ( <code>.</code> { <em>Digit</em> }+ [ <em>Exponent</em> ] )
+   * <em>Exponent</em>:
+   *      ( ( <code>e</code> | <code>E</code> )
+   *              [ <code>-</code> | <code>+</code> ] { <em>Digit</em> }+ )
+   * <em>Digit</em>: <em><code>'0'</code> through <code>'9'</code></em>
+   * </pre>
+   * 
+   * <p>
+   * NaN and infinity are special cases, to allow parsing of the output of
+   * toString. Otherwise, the result is determined by calculating
+   * <em>n * 10<sup>exponent</sup></em> to infinite precision, then rounding to
+   * the nearest float. Remember that many numbers cannot be precisely
+   * represented in floating point. In case of overflow, infinity is used, and
+   * in case of underflow, signed zero is used. Unlike Integer.parseInt, this
+   * does not accept Unicode digits outside the ASCII range.
+   * 
+   * <p>
+   * If an unexpected character is found in the <code>String</code>, a
+   * <code>NumberFormatException</code> will be thrown. Leading and trailing
+   * 'whitespace' is ignored via <code>String.trim()</code>, but spaces internal
+   * to the actual number are not allowed.
+   * 
+   * <p>
+   * To parse numbers according to another format, consider using
+   * {@link java.text.NumberFormat}.
+   * 
+   * @XXX specify where/how we are not in accord with the spec.
+   * 
+   * @param str
+   *          the <code>String</code> to convert
+   * @return the <code>float</code> value of <code>s</code>
+   * @throws NumberFormatException
+   *           if <code>str</code> cannot be parsed as a <code>float</code>
+   * @throws NullPointerException
+   *           if <code>str</code> is null
+   * @see #MIN_VALUE
+   * @see #MAX_VALUE
+   * @see #POSITIVE_INFINITY
+   * @see #NEGATIVE_INFINITY
+   * @since 1.2
+   */
+  public static float parseFloat(String str) {
+    // return VMFloat.parseFloat(str);
+    return (float) (Double.parseDouble(str));
+  }
+
+  /**
+   * Return <code>true</code> if the <code>float</code> has the same value as
+   * <code>NaN</code>, otherwise return <code>false</code>.
+   * 
+   * @param v
+   *          the <code>float</code> to compare
+   * @return whether the argument is <code>NaN</code>
+   */
+  public static boolean isNaN(float v) {
+    // This works since NaN != NaN is the only reflexive inequality
+    // comparison which returns true.
+    return v != v;
+  }
+
+  /**
+   * Return <code>true</code> if the <code>float</code> has a value equal to
+   * either <code>NEGATIVE_INFINITY</code> or <code>POSITIVE_INFINITY</code>,
+   * otherwise return <code>false</code>.
+   * 
+   * @param v
+   *          the <code>float</code> to compare
+   * @return whether the argument is (-/+) infinity
+   */
+  public static boolean isInfinite(float v) {
+    return v == POSITIVE_INFINITY || v == NEGATIVE_INFINITY;
+  }
+
+  /**
+   * Return <code>true</code> if the value of this <code>Float</code> is the
+   * same as <code>NaN</code>, otherwise return <code>false</code>.
+   * 
+   * @return whether this <code>Float</code> is <code>NaN</code>
+   */
+  public boolean isNaN() {
+    return isNaN(value);
+  }
+
+  /**
+   * Return <code>true</code> if the value of this <code>Float</code> is the
+   * same as <code>NEGATIVE_INFINITY</code> or <code>POSITIVE_INFINITY</code>,
+   * otherwise return <code>false</code>.
+   * 
+   * @return whether this <code>Float</code> is (-/+) infinity
+   */
+  public boolean isInfinite() {
+    return isInfinite(value);
+  }
+
+  /**
+   * Convert the <code>float</code> value of this <code>Float</code> to a
+   * <code>String</code>. This method calls <code>Float.toString(float)</code>
+   * to do its dirty work.
+   * 
+   * @return the <code>String</code> representation
+   * @see #toString(float)
+   */
+  /*
+   * public String toString() { return toString(value); }
+   */
+
+  /**
+   * Return the value of this <code>Float</code> as a <code>byte</code>.
+   * 
+   * @return the byte value
+   * @since 1.1
+   */
+  public byte byteValue() {
+    return (byte) value;
+  }
+
+  /**
+   * Return the value of this <code>Float</code> as a <code>short</code>.
+   * 
+   * @return the short value
+   * @since 1.1
+   */
+  public short shortValue() {
+    return (short) value;
+  }
+
+  /**
+   * Return the value of this <code>Integer</code> as an <code>int</code>.
+   * 
+   * @return the int value
+   */
+  public int intValue() {
+    return (int) value;
+  }
+
+  /**
+   * Return the value of this <code>Integer</code> as a <code>long</code>.
+   * 
+   * @return the long value
+   */
+  public long longValue() {
+    return (long) value;
+  }
+
+  /**
+   * Return the value of this <code>Float</code>.
+   * 
+   * @return the float value
+   */
+  public float floatValue() {
+    return value;
+  }
+
+  /**
+   * Return the value of this <code>Float</code> as a <code>double</code>
+   * 
+   * @return the double value
+   */
+  public double doubleValue() {
+    return value;
+  }
+
+  /**
+   * Return a hashcode representing this Object. <code>Float</code>'s hash code
+   * is calculated by calling <code>floatToIntBits(floatValue())</code>.
+   * 
+   * @return this Object's hash code
+   * @see #floatToIntBits(float)
+   */
+  /*
+   * public int hashCode() { return floatToIntBits(value); }
+   */
+
+  /**
+   * Returns <code>true</code> if <code>obj</code> is an instance of
+   * <code>Float</code> and represents the same float value. Unlike comparing
+   * two floats with <code>==</code>, this treats two instances of
+   * <code>Float.NaN</code> as equal, but treats <code>0.0</code> and
+   * <code>-0.0</code> as unequal.
+   * 
+   * <p>
+   * Note that <code>f1.equals(f2)</code> is identical to
+   * <code>floatToIntBits(f1.floatValue()) ==
+   *    floatToIntBits(f2.floatValue())</code>.
+   * 
+   * @param obj
+   *          the object to compare
+   * @return whether the objects are semantically equal
+   */
+  /*
+   * public boolean equals(Object obj) { if (obj instanceof Float) { float f =
+   * ((Float) obj).value; return (floatToRawIntBits(value) ==
+   * floatToRawIntBits(f)) || (isNaN(value) && isNaN(f)); } return false; }
+   */
+
+  /**
+   * Convert the float to the IEEE 754 floating-point "single format" bit
+   * layout. Bit 31 (the most significant) is the sign bit, bits 30-23 (masked
+   * by 0x7f800000) represent the exponent, and bits 22-0 (masked by 0x007fffff)
+   * are the mantissa. This function collapses all versions of NaN to
+   * 0x7fc00000. The result of this function can be used as the argument to
+   * <code>Float.intBitsToFloat(int)</code> to obtain the original
+   * <code>float</code> value.
+   * 
+   * @param value
+   *          the <code>float</code> to convert
+   * @return the bits of the <code>float</code>
+   * @see #intBitsToFloat(int)
+   */
+  /*
+   * public static int floatToIntBits(float value) { if (isNaN(value)) return
+   * 0x7fc00000; else return VMFloat.floatToRawIntBits(value); }
+   */
+
+  /**
+   * Convert the float to the IEEE 754 floating-point "single format" bit
+   * layout. Bit 31 (the most significant) is the sign bit, bits 30-23 (masked
+   * by 0x7f800000) represent the exponent, and bits 22-0 (masked by 0x007fffff)
+   * are the mantissa. This function leaves NaN alone, rather than collapsing to
+   * a canonical value. The result of this function can be used as the argument
+   * to <code>Float.intBitsToFloat(int)</code> to obtain the original
+   * <code>float</code> value.
+   * 
+   * @param value
+   *          the <code>float</code> to convert
+   * @return the bits of the <code>float</code>
+   * @see #intBitsToFloat(int)
+   */
+  /*
+   * public static int floatToRawIntBits(float value) { return
+   * VMFloat.floatToRawIntBits(value); }
+   */
+
+  /**
+   * Convert the argument in IEEE 754 floating-point "single format" bit layout
+   * to the corresponding float. Bit 31 (the most significant) is the sign bit,
+   * bits 30-23 (masked by 0x7f800000) represent the exponent, and bits 22-0
+   * (masked by 0x007fffff) are the mantissa. This function leaves NaN alone, so
+   * that you can recover the bit pattern with
+   * <code>Float.floatToRawIntBits(float)</code>.
+   * 
+   * @param bits
+   *          the bits to convert
+   * @return the <code>float</code> represented by the bits
+   * @see #floatToIntBits(float)
+   * @see #floatToRawIntBits(float)
+   */
+  /*
+   * public static float intBitsToFloat(int bits) { return
+   * VMFloat.intBitsToFloat(bits); }
+   */
+
+  /**
+   * Compare two Floats numerically by comparing their <code>float</code>
+   * values. The result is positive if the first is greater, negative if the
+   * second is greater, and 0 if the two are equal. However, this special cases
+   * NaN and signed zero as follows: NaN is considered greater than all other
+   * floats, including <code>POSITIVE_INFINITY</code>, and positive zero is
+   * considered greater than negative zero.
+   * 
+   * @param f
+   *          the Float to compare
+   * @return the comparison
+   * @since 1.2
+   */
+  /*
+   * public int compareTo(Float f) { return compare(value, f.value); }
+   */
+
+  /**
+   * Behaves like <code>new Float(x).compareTo(new Float(y))</code>; in other
+   * words this compares two floats, special casing NaN and zero, without the
+   * overhead of objects.
+   * 
+   * @param x
+   *          the first float to compare
+   * @param y
+   *          the second float to compare
+   * @return the comparison
+   * @since 1.4
+   */
+  /*
+   * public static int compare(float x, float y) { // handle the easy cases: if
+   * (x < y) return -1; if (x > y) return 1;
+   * 
+   * // handle equality respecting that 0.0 != -0.0 (hence not using x == y):
+   * int ix = floatToRawIntBits(x); int iy = floatToRawIntBits(y); if (ix == iy)
+   * return 0;
+   * 
+   * // handle NaNs: if (x != x) return (y != y) ? 0 : 1; else if (y != y)
+   * return -1;
+   * 
+   * // handle +/- 0.0 return (ix < iy) ? -1 : 1; }
+   */
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/IOException.java b/Robust/src/ClassLibrary/SSJavaInfer/IOException.java
new file mode 100644 (file)
index 0000000..89ea1bb
--- /dev/null
@@ -0,0 +1,71 @@
+/* IOException.java -- Generic input/output exception
+   Copyright (C) 1998, 1999, 2001, 2002, 2005  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+//package java.io;
+
+/**
+ * This exception is thrown to indicate an I/O problem of some sort occurred.
+ * Since this is a fairly generic exception, often a subclass of IOException
+ * will actually be thrown in order to provide a more detailed indication of
+ * what happened.
+ * 
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Tom Tromey (tromey@cygnus.com)
+ * @status updated to 1.4
+ */
+public class IOException extends Exception {
+  /**
+   * Compatible with JDK 1.0+.
+   */
+  private static final long serialVersionUID = 7818375828146090155L;
+
+  /**
+   * Create an exception without a descriptive error message.
+   */
+  public IOException() {
+  }
+
+  /**
+   * Create an exception with a descriptive error message.
+   * 
+   * @param message
+   *          the descriptive error message
+   */
+  public IOException(String message) {
+    super(message);
+  }
+} // class IOException
\ No newline at end of file
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/InputStream.java b/Robust/src/ClassLibrary/SSJavaInfer/InputStream.java
new file mode 100644 (file)
index 0000000..ab5cfd4
--- /dev/null
@@ -0,0 +1,270 @@
+/* InputStream.java -- Base class for input
+   Copyright (C) 1998, 1999, 2001, 2004, 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+//package java.io; //NO PACKAGES FOR CLASS FILES
+
+/**
+ * This abstract class forms the base of the hierarchy of classes that read
+ * input as a stream of bytes. It provides a common set of methods for reading
+ * bytes from streams. Subclasses implement and extend these methods to read
+ * bytes from a particular input source such as a file or network connection.
+ * 
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Warren Levy (warrenl@cygnus.com)
+ */
+
+public abstract class InputStream // implements Closeable //COMPILER CANNOT
+                                  // HANDLE IMPLEMENTS
+{
+  /**
+   * Default, no-arg, public constructor
+   */
+  public InputStream() {
+  }
+
+  /**
+   * This method returns the number of bytes that can be read from this stream
+   * before a read can block. A return of 0 indicates that blocking might (or
+   * might not) occur on the very next read attempt.
+   * <p>
+   * This method always returns 0 in this class
+   * 
+   * @return The number of bytes that can be read before blocking could occur
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+
+  public int available() throws IOException {
+    return 0;
+  }
+
+  /**
+   * This method closes the stream. Any futher attempts to read from the stream
+   * may generate an <code>IOException</code>
+   * <p>
+   * This method does nothing in this class, but subclasses may override this
+   * method in order to provide additional functionality.
+   * 
+   * @exception IOException
+   *              If an error occurs, which can only happen in a subclass
+   */
+  public void close() throws IOException {
+    // Do nothing
+  }
+
+  /**
+   * This method marks a position in the input to which the stream can be
+   * "reset" by calling the <code>reset()</code> method. The parameter
+   * @code{readlimit} is the number of bytes that can be read from the stream
+   * after setting the mark before the mark becomes invalid. For example, if
+   * <code>mark()</code> is called with a read limit of 10, then when 11 bytes
+   * of data are read from the stream before the <code>reset()</code> method is
+   * called, then the mark is invalid and the stream object instance is not
+   * required to remember the mark.
+   * <p>
+   * This method does nothing in this class, but subclasses may override it to
+   * provide mark/reset functionality.
+   * 
+   * @param readLimit
+   *          The number of bytes that can be read before the mark becomes
+   *          invalid
+   */
+  public void mark(int readLimit) {
+    // Do nothing
+  }
+
+  /**
+   * This method returns a boolean that indicates whether the mark/reset methods
+   * are supported in this class. Those methods can be used to remember a
+   * specific point in the stream and reset the stream to that point.
+   * <p>
+   * This method always returns <code>false</code> in this class, but subclasses
+   * can override this method to return <code>true</code> if they support
+   * mark/reset functionality.
+   * 
+   * @return <code>true</code> if mark/reset functionality is supported,
+   *         <code>false</code> otherwise
+   */
+
+  public boolean markSupported() {
+    return false;
+  }
+
+  /**
+   * This method reads an unsigned byte from the input stream and returns it as
+   * an int in the range of 0-255. This method also will return -1 if the end of
+   * the stream has been reached.
+   * <p>
+   * This method will block until the byte can be read.
+   * 
+   * @return The byte read or -1 if end of stream
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public abstract int read() throws IOException;
+
+  /**
+   * This method reads bytes from a stream and stores them into a caller
+   * supplied buffer. This method attempts to completely fill the buffer, but
+   * can return before doing so. The actual number of bytes read is returned as
+   * an int. A -1 is returned to indicate the end of the stream.
+   * <p>
+   * This method will block until some data can be read.
+   * <p>
+   * This method operates by calling an overloaded read method like so:
+   * <code>read(b, 0, b.length)</code>
+   * 
+   * @param b
+   *          The buffer into which the bytes read will be stored.
+   * 
+   * @return The number of bytes read or -1 if end of stream.
+   * 
+   * @exception IOException
+   *              If an error occurs.
+   */
+
+  public int read(byte[] b) throws IOException {
+    return read(b, 0, b.length);
+  }
+
+  /**
+   * This method read bytes from a stream and stores them into a caller supplied
+   * buffer. It starts storing the data at index <code>off</code> into the
+   * buffer and attempts to read <code>len</code> bytes. This method can return
+   * before reading the number of bytes requested. The actual number of bytes
+   * read is returned as an int. A -1 is returned to indicate the end of the
+   * stream.
+   * <p>
+   * This method will block until some data can be read.
+   * <p>
+   * This method operates by calling the single byte <code>read()</code> method
+   * in a loop until the desired number of bytes are read. The read loop stops
+   * short if the end of the stream is encountered or if an IOException is
+   * encountered on any read operation except the first. If the first attempt to
+   * read a bytes fails, the IOException is allowed to propagate upward. And
+   * subsequent IOException is caught and treated identically to an end of
+   * stream condition. Subclasses can (and should if possible) override this
+   * method to provide a more efficient implementation.
+   * 
+   * @param b
+   *          The array into which the bytes read should be stored
+   * @param off
+   *          The offset into the array to start storing bytes
+   * @param len
+   *          The requested number of bytes to read
+   * 
+   * @return The actual number of bytes read, or -1 if end of stream.
+   * 
+   * @exception IOException
+   *              If an error occurs.
+   */
+
+  public int read(byte[] b, int off, int len) throws IOException {
+    if (off < 0 || len < 0 || b.length - off < len)
+      throw new IndexOutOfBoundsException();
+
+    int i;
+    int ch;
+
+    for (i = 0; i < len; ++i)
+      try {
+        if ((ch = read()) < 0)
+          return i == 0 ? -1 : i; // EOF
+        b[off + i] = (byte) ch;
+      } catch (IOException ex) {
+        // Only reading the first byte should cause an IOException.
+        if (i == 0)
+          throw ex;
+        return i;
+      }
+
+    return i;
+  }
+
+  /**
+   * This method resets a stream to the point where the <code>mark()</code>
+   * method was called. Any bytes that were read after the mark point was set
+   * will be re-read during subsequent reads.
+   * <p>
+   * This method always throws an IOException in this class, but subclasses can
+   * override this method if they provide mark/reset functionality.
+   * 
+   * @exception IOException
+   *              Always thrown for this class
+   */
+  public void reset() throws IOException {
+    throw new IOException("mark/reset not supported");
+  }
+
+  /**
+   * This method skips the specified number of bytes in the stream. It returns
+   * the actual number of bytes skipped, which may be less than the requested
+   * amount.
+   * <p>
+   * This method reads and discards bytes into a byte array until the specified
+   * number of bytes were skipped or until either the end of stream is reached
+   * or a read attempt returns a short count. Subclasses can override this
+   * method to provide a more efficient implementation where one exists.
+   * 
+   * @param n
+   *          The requested number of bytes to skip
+   * 
+   * @return The actual number of bytes skipped.
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+
+  public long skip(long n) throws IOException {
+    // Throw away n bytes by reading them into a temp byte[].
+    // Limit the temp array to 2Kb so we don't grab too much memory.
+    final int buflen = n > 2048 ? 2048 : (int) n;
+    byte[] tmpbuf = new byte[buflen];
+    final long origN = n;
+
+    while (n > 0) {
+      int numread = read(tmpbuf, 0, n > buflen ? buflen : (int) n);
+      if (numread <= 0)
+        break;
+      n -= numread;
+    }
+
+    return origN - n;
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Integer.java b/Robust/src/ClassLibrary/SSJavaInfer/Integer.java
new file mode 100644 (file)
index 0000000..b4907cc
--- /dev/null
@@ -0,0 +1,119 @@
+
+public class Integer {
+
+  private int value;
+
+  /**
+   * The maximum value an <code>int</code> can represent is 2147483647 (or
+   * 2<sup>31</sup> - 1).
+   */
+  public static final int MAX_VALUE = 0x7fffffff;
+
+  public Integer(int value) {
+    this.value = value;
+  }
+
+  // public Integer(String str) {
+  // value=Integer.parseInt(str, 10);
+  // }
+
+  public int intValue() {
+    return value;
+  }
+
+  public double doubleValue() {
+    return (double) value;
+  }
+
+  public float floatValue() {
+    return (float) value;
+  }
+
+  public byte[] intToByteArray() {
+    byte[] b = new byte[4];
+    for (int i = 0; i < 4; i++) {
+      int offset = (b.length - 1 - i) * 8;
+      b[i] = (byte) ((value >> offset) & 0xFF);
+    }
+    return b;
+  }
+
+  public int byteArrayToInt(byte[] b) {
+    int value = 0;
+    for (int i = 0; i < 4; i++) {
+      int shift = (4 - 1 - i) * 8;
+      value += (b[i] & 0x000000FF) << shift;
+    }
+    return value;
+  }
+
+  public static int parseInt(String str) {
+    return Integer.parseInt(str, 10);
+  }
+
+  public static int parseInt(String str, int radix) {
+    int value = 0;
+    boolean isNeg = false;
+    int start = 0;
+    byte[] chars = str.getBytes();
+
+    while (chars[start] == ' ' || chars[start] == '\t')
+      start++;
+
+    if (chars[start] == '-') {
+      isNeg = true;
+      start++;
+    }
+    boolean cont = true;
+    for (int i = start; cont && i < str.length(); i++) {
+      byte b = chars[i];
+      int val;
+      if (b >= '0' && b <= '9')
+        val = b - '0';
+      else if (b >= 'a' && b <= 'z')
+        val = 10 + b - 'a';
+      else if (b >= 'A' && b <= 'Z')
+        val = 10 + b - 'A';
+      else {
+        cont = false;
+      }
+      if (cont) {
+        if (val >= radix)
+          System.error();
+        value = value * radix + val;
+      }
+    }
+    if (isNeg)
+      value = -value;
+    return value;
+  }
+
+  public String toString() {
+    return String.valueOf(value);
+  }
+
+  public static String toString(int i) {
+    Integer I = new Integer(i);
+    return I.toString();
+  }
+
+  public int hashCode() {
+    return value;
+  }
+
+  public boolean equals(Object o) {
+    if (o.getType() != getType())
+      return false;
+    Integer s = (Integer) o;
+    if (s.intValue() != this.value)
+      return false;
+    return true;
+  }
+
+  public int compareTo(Integer i) {
+    if (value == i.value)
+      return 0;
+    // Returns just -1 or 1 on inequality; doing math might overflow.
+    return value > i.value ? 1 : -1;
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Long.java b/Robust/src/ClassLibrary/SSJavaInfer/Long.java
new file mode 100644 (file)
index 0000000..f084b87
--- /dev/null
@@ -0,0 +1,834 @@
+/* Long.java -- object wrapper for long
+   Copyright (C) 1998, 1999, 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+//package java.lang;
+
+/**
+ * Instances of class <code>Long</code> represent primitive
+ * <code>long</code> values.
+ *
+ * Additionally, this class provides various helper functions and variables
+ * related to longs.
+ *
+ * @author Paul Fisher
+ * @author John Keiser
+ * @author Warren Levy
+ * @author Eric Blake (ebb9@email.byu.edu)
+ * @author Tom Tromey (tromey@redhat.com)
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ * @author Ian Rogers
+ * @since 1.0
+ * @status updated to 1.5
+ */
+
+
+public final class Long //extends Number implements Comparable<Long>
+{
+  /**
+   * Compatible with JDK 1.0.2+.
+   */
+  private static final long serialVersionUID = 4290774380558885855L;
+
+  /**
+   * The minimum value a <code>long</code> can represent is
+   * -9223372036854775808L (or -2<sup>63</sup>).
+   */
+  public static final long MIN_VALUE = 0x8000000000000000L;
+
+  /**
+   * The maximum value a <code>long</code> can represent is
+   * 9223372036854775807 (or 2<sup>63</sup> - 1).
+   */
+  public static final long MAX_VALUE = 0x7fffffffffffffffL;
+
+  /**
+   * The primitive type <code>long</code> is represented by this
+   * <code>Class</code> object.
+   * @since 1.1
+   */
+  //public static final Class<Long> TYPE = (Class<Long>) VMClassLoader.getPrimitiveClass ('J');
+
+  /**
+   * The number of bits needed to represent a <code>long</code>.
+   * @since 1.5
+   */
+  public static final int SIZE = 64;
+
+  // This caches some Long values, and is used by boxing
+  // conversions via valueOf().  We cache at least -128..127;
+  // these constants control how much we actually cache.
+  private static final int MIN_CACHE = -128;
+  private static final int MAX_CACHE = 127;
+  private static final Long[] longCache = new Long[MAX_CACHE - MIN_CACHE + 1];
+  static
+  {
+    for (int i=MIN_CACHE; i <= MAX_CACHE; i++)
+      longCache[i - MIN_CACHE] = new Long(i);
+  }
+
+  /**
+   * The immutable value of this Long.
+   *
+   * @serial the wrapped long
+   */
+   private final long value;
+
+  /**
+   * Create a <code>Long</code> object representing the value of the
+   * <code>long</code> argument.
+   *
+   * @param value the value to use
+   */
+  public Long(long value)
+  {
+    this.value = value;
+  }
+
+  /**
+   * Create a <code>Long</code> object representing the value of the
+   * argument after conversion to a <code>long</code>.
+   *
+   * @param s the string to convert
+   * @throws NumberFormatException if the String does not contain a long
+   * @see #valueOf(String)
+   */
+  public Long(String s)
+  {
+    value = parseLong(s, 10, false);
+  }
+
+  /**
+   * Return the size of a string large enough to hold the given number
+   *
+   * @param num the number we want the string length for (must be positive)
+   * @param radix the radix (base) that will be used for the string
+   * @return a size sufficient for a string of num
+   */
+  private static int stringSize(long num, int radix) {
+    int exp;
+    if (radix < 4)
+      {
+        exp = 1;
+      }
+    else if (radix < 8)
+      {
+        exp = 2;
+      }
+    else if (radix < 16)
+      {
+        exp = 3;
+      }
+    else if (radix < 32)
+      {
+        exp = 4;
+      }
+    else
+      {
+        exp = 5;
+      }
+    int size=0;
+    do
+      {
+        num >>>= exp;
+        size++;
+      }
+    while(num != 0);
+    return size;
+  }
+
+  /**
+   * Converts the <code>long</code> to a <code>String</code> using
+   * the specified radix (base). If the radix exceeds
+   * <code>Character.MIN_RADIX</code> or <code>Character.MAX_RADIX</code>, 10
+   * is used instead. If the result is negative, the leading character is
+   * '-' ('\\u002D'). The remaining characters come from
+   * <code>Character.forDigit(digit, radix)</code> ('0'-'9','a'-'z').
+   *
+   * @param num the <code>long</code> to convert to <code>String</code>
+   * @param radix the radix (base) to use in the conversion
+   * @return the <code>String</code> representation of the argument
+   */
+  /*public static String toString(long num, int radix)
+  {
+    if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)
+      radix = 10;
+
+    // Is the value negative?
+    boolean isNeg = num < 0;
+
+    // Is the string a single character?
+    if (!isNeg && num < radix)
+      return new String(digits, (int)num, 1, true);
+
+    // Compute string size and allocate buffer
+    // account for a leading '-' if the value is negative
+    int size;
+    int i;
+    char[] buffer;
+    if (isNeg)
+      {
+        num = -num;
+
+        // When the value is MIN_VALUE, it overflows when made positive
+        if (num < 0)
+          {
+            i = size = stringSize(MAX_VALUE, radix) + 2;
+            buffer = new char[size];
+            buffer[--i] = digits[(int) (-(num + radix) % radix)];
+            num = -(num / radix);
+          }
+        else
+          {
+            i = size = stringSize(num, radix) + 1;
+            buffer = new char[size];
+          }
+      }
+    else
+      {
+        i = size = stringSize(num, radix);
+        buffer = new char[size];
+      }
+
+    do
+      {
+        buffer[--i] = digits[(int) (num % radix)];
+        num /= radix;
+      }
+    while (num > 0);
+
+    if (isNeg)
+      buffer[--i] = '-';
+
+    // Package constructor avoids an array copy.
+    return new String(buffer, i, size - i, true);
+  }*/
+
+  /**
+   * Converts the <code>long</code> to a <code>String</code> assuming it is
+   * unsigned in base 16.
+   *
+   * @param l the <code>long</code> to convert to <code>String</code>
+   * @return the <code>String</code> representation of the argument
+   */
+  /*public static String toHexString(long l)
+  {
+    return toUnsignedString(l, 4);
+  }*/
+
+  /**
+   * Converts the <code>long</code> to a <code>String</code> assuming it is
+   * unsigned in base 8.
+   *
+   * @param l the <code>long</code> to convert to <code>String</code>
+   * @return the <code>String</code> representation of the argument
+   */
+  /*public static String toOctalString(long l)
+  {
+    return toUnsignedString(l, 3);
+  }*/
+
+  /**
+   * Converts the <code>long</code> to a <code>String</code> assuming it is
+   * unsigned in base 2.
+   *
+   * @param l the <code>long</code> to convert to <code>String</code>
+   * @return the <code>String</code> representation of the argument
+   */
+  /*public static String toBinaryString(long l)
+  {
+    return toUnsignedString(l, 1);
+  }*/
+
+  /**
+   * Converts the <code>long</code> to a <code>String</code> and assumes
+   * a radix of 10.
+   *
+   * @param num the <code>long</code> to convert to <code>String</code>
+   * @return the <code>String</code> representation of the argument
+   * @see #toString(long, int)
+   */
+  public static String toString(long num)
+  {
+    //return toString(num, 10);
+    return String.valueOf(num);
+  }
+
+  /**
+   * Converts the specified <code>String</code> into an <code>int</code>
+   * using the specified radix (base). The string must not be <code>null</code>
+   * or empty. It may begin with an optional '-', which will negate the answer,
+   * provided that there are also valid digits. Each digit is parsed as if by
+   * <code>Character.digit(d, radix)</code>, and must be in the range
+   * <code>0</code> to <code>radix - 1</code>. Finally, the result must be
+   * within <code>MIN_VALUE</code> to <code>MAX_VALUE</code>, inclusive.
+   * Unlike Double.parseDouble, you may not have a leading '+'; and 'l' or
+   * 'L' as the last character is only valid in radices 22 or greater, where
+   * it is a digit and not a type indicator.
+   *
+   * @param str the <code>String</code> to convert
+   * @param radix the radix (base) to use in the conversion
+   * @return the <code>String</code> argument converted to <code>long</code>
+   * @throws NumberFormatException if <code>s</code> cannot be parsed as a
+   *         <code>long</code>
+   */
+  public static long parseLong(String str, int radix)
+  {
+    return parseLong(str, radix, false);
+  }
+
+  /**
+   * Converts the specified <code>String</code> into a <code>long</code>.
+   * This function assumes a radix of 10.
+   *
+   * @param s the <code>String</code> to convert
+   * @return the <code>int</code> value of <code>s</code>
+   * @throws NumberFormatException if <code>s</code> cannot be parsed as a
+   *         <code>long</code>
+   * @see #parseLong(String, int)
+   */
+  public static long parseLong(String s)
+  {
+    return parseLong(s, 10, false);
+  }
+
+  /**
+   * Creates a new <code>Long</code> object using the <code>String</code>
+   * and specified radix (base).
+   *
+   * @param s the <code>String</code> to convert
+   * @param radix the radix (base) to convert with
+   * @return the new <code>Long</code>
+   * @throws NumberFormatException if <code>s</code> cannot be parsed as a
+   *         <code>long</code>
+   * @see #parseLong(String, int)
+   */
+  public static Long valueOf(String s, int radix)
+  {
+    return valueOf(parseLong(s, radix, false));
+  }
+
+  /**
+   * Creates a new <code>Long</code> object using the <code>String</code>,
+   * assuming a radix of 10.
+   *
+   * @param s the <code>String</code> to convert
+   * @return the new <code>Long</code>
+   * @throws NumberFormatException if <code>s</code> cannot be parsed as a
+   *         <code>long</code>
+   * @see #Long(String)
+   * @see #parseLong(String)
+   */
+  public static Long valueOf(String s)
+  {
+    return valueOf(parseLong(s, 10, false));
+  }
+
+  /**
+   * Returns a <code>Long</code> object wrapping the value.
+   *
+   * @param val the value to wrap
+   * @return the <code>Long</code>
+   * @since 1.5
+   */
+  public static Long valueOf(long val)
+  {
+    if (val < MIN_CACHE || val > MAX_CACHE)
+      return new Long(val);
+    else
+      return longCache[((int)val) - MIN_CACHE];
+  }
+
+  /**
+   * Convert the specified <code>String</code> into a <code>Long</code>.
+   * The <code>String</code> may represent decimal, hexadecimal, or
+   * octal numbers.
+   *
+   * <p>The extended BNF grammar is as follows:<br>
+   * <pre>
+   * <em>DecodableString</em>:
+   *      ( [ <code>-</code> ] <em>DecimalNumber</em> )
+   *    | ( [ <code>-</code> ] ( <code>0x</code> | <code>0X</code>
+   *              | <code>#</code> ) <em>HexDigit</em> { <em>HexDigit</em> } )
+   *    | ( [ <code>-</code> ] <code>0</code> { <em>OctalDigit</em> } )
+   * <em>DecimalNumber</em>:
+   *        <em>DecimalDigit except '0'</em> { <em>DecimalDigit</em> }
+   * <em>DecimalDigit</em>:
+   *        <em>Character.digit(d, 10) has value 0 to 9</em>
+   * <em>OctalDigit</em>:
+   *        <em>Character.digit(d, 8) has value 0 to 7</em>
+   * <em>DecimalDigit</em>:
+   *        <em>Character.digit(d, 16) has value 0 to 15</em>
+   * </pre>
+   * Finally, the value must be in the range <code>MIN_VALUE</code> to
+   * <code>MAX_VALUE</code>, or an exception is thrown. Note that you cannot
+   * use a trailing 'l' or 'L', unlike in Java source code.
+   *
+   * @param str the <code>String</code> to interpret
+   * @return the value of the String as a <code>Long</code>
+   * @throws NumberFormatException if <code>s</code> cannot be parsed as a
+   *         <code>long</code>
+   * @throws NullPointerException if <code>s</code> is null
+   * @since 1.2
+   */
+  public static Long decode(String str)
+  {
+    return valueOf(parseLong(str, 10, true));
+  }
+
+  /**
+   * Return the value of this <code>Long</code> as a <code>byte</code>.
+   *
+   * @return the byte value
+   */
+  public byte byteValue()
+  {
+    return (byte) value;
+  }
+
+  /**
+   * Return the value of this <code>Long</code> as a <code>short</code>.
+   *
+   * @return the short value
+   */
+  public short shortValue()
+  {
+    return (short) value;
+  }
+
+  /**
+   * Return the value of this <code>Long</code> as an <code>int</code>.
+   *
+   * @return the int value
+   */
+  public int intValue()
+  {
+    return (int) value;
+  }
+
+  /**
+   * Return the value of this <code>Long</code>.
+   *
+   * @return the long value
+   */
+  public long longValue()
+  {
+    return value;
+  }
+
+  /**
+   * Return the value of this <code>Long</code> as a <code>float</code>.
+   *
+   * @return the float value
+   */
+  public float floatValue()
+  {
+    return value;
+  }
+
+  /**
+   * Return the value of this <code>Long</code> as a <code>double</code>.
+   *
+   * @return the double value
+   */
+  public double doubleValue()
+  {
+    return value;
+  }
+
+  /**
+   * Converts the <code>Long</code> value to a <code>String</code> and
+   * assumes a radix of 10.
+   *
+   * @return the <code>String</code> representation
+   */
+  public String toString()
+  {
+    //return toString(value, 10);
+    return String.valueOf(value);
+  }
+
+  /**
+   * Return a hashcode representing this Object. <code>Long</code>'s hash
+   * code is calculated by <code>(int) (value ^ (value &gt;&gt; 32))</code>.
+   *
+   * @return this Object's hash code
+   */
+  public int hashCode()
+  {
+    return (int) (value ^ (value >>> 32));
+  }
+
+  /**
+   * Returns <code>true</code> if <code>obj</code> is an instance of
+   * <code>Long</code> and represents the same long value.
+   *
+   * @param obj the object to compare
+   * @return whether these Objects are semantically equal
+   */
+  public boolean equals(Object obj)
+  {
+    return obj instanceof Long && value == ((Long) obj).value;
+  }
+
+  /**
+   * Get the specified system property as a <code>Long</code>. The
+   * <code>decode()</code> method will be used to interpret the value of
+   * the property.
+   *
+   * @param nm the name of the system property
+   * @return the system property as a <code>Long</code>, or null if the
+   *         property is not found or cannot be decoded
+   * @throws SecurityException if accessing the system property is forbidden
+   * @see System#getProperty(String)
+   * @see #decode(String)
+   */
+  public static Long getLong(String nm)
+  {
+    return getLong(nm, null);
+  }
+
+  /**
+   * Get the specified system property as a <code>Long</code>, or use a
+   * default <code>long</code> value if the property is not found or is not
+   * decodable. The <code>decode()</code> method will be used to interpret
+   * the value of the property.
+   *
+   * @param nm the name of the system property
+   * @param val the default value
+   * @return the value of the system property, or the default
+   * @throws SecurityException if accessing the system property is forbidden
+   * @see System#getProperty(String)
+   * @see #decode(String)
+   */
+  public static Long getLong(String nm, long val)
+  {
+    Long result = getLong(nm, null);
+    return result == null ? valueOf(val) : result;
+  }
+
+  /**
+   * Get the specified system property as a <code>Long</code>, or use a
+   * default <code>Long</code> value if the property is not found or is
+   * not decodable. The <code>decode()</code> method will be used to
+   * interpret the value of the property.
+   *
+   * @param nm the name of the system property
+   * @param def the default value
+   * @return the value of the system property, or the default
+   * @throws SecurityException if accessing the system property is forbidden
+   * @see System#getProperty(String)
+   * @see #decode(String)
+   */
+  public static Long getLong(String nm, Long def)
+  {
+    if (nm == null || "".equals(nm))
+      return def;
+    nm = null;//System.getProperty(nm);
+    if (nm == null)
+      return def;
+    /*try
+      {
+        return decode(nm);
+      }
+    catch (NumberFormatException e)
+      {
+        return def;
+      }*/
+  }
+
+  /**
+   * Compare two Longs numerically by comparing their <code>long</code>
+   * values. The result is positive if the first is greater, negative if the
+   * second is greater, and 0 if the two are equal.
+   *
+   * @param l the Long to compare
+   * @return the comparison
+   * @since 1.2
+   */
+  public int compareTo(Long l)
+  {
+    if (value == l.value)
+      return 0;
+    // Returns just -1 or 1 on inequality; doing math might overflow the long.
+    return value > l.value ? 1 : -1;
+  }
+
+  /**
+   * Return the number of bits set in x.
+   * @param x value to examine
+   * @since 1.5
+   */
+  public static int bitCount(long x)
+  {
+    // Successively collapse alternating bit groups into a sum.
+    x = ((x >> 1) & 0x5555555555555555L) + (x & 0x5555555555555555L);
+    x = ((x >> 2) & 0x3333333333333333L) + (x & 0x3333333333333333L);
+    int v = (int) ((x >>> 32) + x);
+    v = ((v >> 4) & 0x0f0f0f0f) + (v & 0x0f0f0f0f);
+    v = ((v >> 8) & 0x00ff00ff) + (v & 0x00ff00ff);
+    return ((v >> 16) & 0x0000ffff) + (v & 0x0000ffff);
+  }
+
+  /**
+   * Rotate x to the left by distance bits.
+   * @param x the value to rotate
+   * @param distance the number of bits by which to rotate
+   * @since 1.5
+   */
+  public static long rotateLeft(long x, int distance)
+  {
+    // This trick works because the shift operators implicitly mask
+    // the shift count.
+    return (x << distance) | (x >>> - distance);
+  }
+
+  /**
+   * Rotate x to the right by distance bits.
+   * @param x the value to rotate
+   * @param distance the number of bits by which to rotate
+   * @since 1.5
+   */
+  public static long rotateRight(long x, int distance)
+  {
+    // This trick works because the shift operators implicitly mask
+    // the shift count.
+    return (x << - distance) | (x >>> distance);
+  }
+
+  /**
+   * Find the highest set bit in value, and return a new value
+   * with only that bit set.
+   * @param value the value to examine
+   * @since 1.5
+   */
+  public static long highestOneBit(long value)
+  {
+    value |= value >>> 1;
+    value |= value >>> 2;
+    value |= value >>> 4;
+    value |= value >>> 8;
+    value |= value >>> 16;
+    value |= value >>> 32;
+    return value ^ (value >>> 1);
+  }
+
+  /**
+   * Return the number of leading zeros in value.
+   * @param value the value to examine
+   * @since 1.5
+   */
+  public static int numberOfLeadingZeros(long value)
+  {
+    value |= value >>> 1;
+    value |= value >>> 2;
+    value |= value >>> 4;
+    value |= value >>> 8;
+    value |= value >>> 16;
+    value |= value >>> 32;
+    return bitCount(~value);
+  }
+
+  /**
+   * Find the lowest set bit in value, and return a new value
+   * with only that bit set.
+   * @param value the value to examine
+   * @since 1.5
+   */
+  public static long lowestOneBit(long value)
+  {
+    // Classic assembly trick.
+    return value & - value;
+  }
+
+  /**
+   * Find the number of trailing zeros in value.
+   * @param value the value to examine
+   * @since 1.5
+   */
+  public static int numberOfTrailingZeros(long value)
+  {
+    return bitCount((value & -value) - 1);
+  }
+
+  /**
+   * Return 1 if x is positive, -1 if it is negative, and 0 if it is
+   * zero.
+   * @param x the value to examine
+   * @since 1.5
+   */
+  public static int signum(long x)
+  {
+    return (int) ((x >> 63) | (-x >>> 63));
+
+    // The LHS propagates the sign bit through every bit in the word;
+    // if X < 0, every bit is set to 1, else 0.  if X > 0, the RHS
+    // negates x and shifts the resulting 1 in the sign bit to the
+    // LSB, leaving every other bit 0.
+
+    // Hacker's Delight, Section 2-7
+  }
+
+  /**
+   * Reverse the bytes in val.
+   * @since 1.5
+   */
+  /*public static long reverseBytes(long val)
+  {
+    int hi = Integer.reverseBytes((int) val);
+    int lo = Integer.reverseBytes((int) (val >>> 32));
+    return (((long) hi) << 32) | lo;
+  }*/
+
+  /**
+   * Reverse the bits in val.
+   * @since 1.5
+   */
+  /*public static long reverse(long val)
+  {
+    long hi = Integer.reverse((int) val) & 0xffffffffL;
+    long lo = Integer.reverse((int) (val >>> 32)) & 0xffffffffL;
+    return (hi << 32) | lo;
+  }*/
+
+  /**
+   * Helper for converting unsigned numbers to String.
+   *
+   * @param num the number
+   * @param exp log2(digit) (ie. 1, 3, or 4 for binary, oct, hex)
+   */
+  /*private static String toUnsignedString(long num, int exp)
+  {
+    // Compute string length
+    int size = 1;
+    long copy = num >>> exp;
+    while (copy != 0)
+      {
+        size++;
+        copy >>>= exp;
+      }
+    // Quick path for single character strings
+    if (size == 1)
+      return new String(digits, (int)num, 1, true);
+
+    // Encode into buffer
+    int mask = (1 << exp) - 1;
+    char[] buffer = new char[size];
+    int i = size;
+    do
+      {
+        buffer[--i] = digits[(int) num & mask];
+        num >>>= exp;
+      }
+    while (num != 0);
+
+    // Package constructor avoids an array copy.
+    return new String(buffer, i, size - i, true);
+  }*/
+
+  /**
+   * Helper for parsing longs.
+   *
+   * @param str the string to parse
+   * @param radix the radix to use, must be 10 if decode is true
+   * @param decode if called from decode
+   * @return the parsed long value
+   * @throws NumberFormatException if there is an error
+   * @throws NullPointerException if decode is true and str is null
+   * @see #parseLong(String, int)
+   * @see #decode(String)
+   */
+  private static long parseLong(String str, int radix, boolean decode)
+  {
+    if (! decode && str == null)
+      throw new /*NumberFormat*/Exception("NumberFormatException");
+    int index = 0;
+    int len = str.length();
+    boolean isNeg = false;
+    if (len == 0)
+      throw new /*NumberFormat*/Exception("NumberFormatException");
+    int ch = str.charAt(index);
+    if (ch == '-')
+      {
+        if (len == 1)
+          throw new /*NumberFormat*/Exception("NumberFormatException");
+        isNeg = true;
+        ch = str.charAt(++index);
+      }
+    if (decode)
+      {
+        if (ch == '0')
+          {
+            if (++index == len)
+              return 0;
+            if ((str.charAt(index) & ~('x' ^ 'X')) == 'X')
+              {
+                radix = 16;
+                index++;
+              }
+            else
+              radix = 8;
+          }
+        else if (ch == '#')
+          {
+            radix = 16;
+            index++;
+          }
+      }
+    if (index == len)
+      throw new /*NumberFormat*/Exception("NumberFormatException");
+
+    long max = MAX_VALUE / radix;
+    // We can't directly write `max = (MAX_VALUE + 1) / radix'.
+    // So instead we fake it.
+    if (isNeg && MAX_VALUE % radix == radix - 1)
+      ++max;
+
+    long val = 0;
+    while (index < len)
+      {
+       if (val < 0 || val > max)
+         throw new /*NumberFormat*/Exception("NumberFormatException");
+
+        ch = Character.digit(str.charAt(index++), radix);
+        val = val * radix + ch;
+        if (ch < 0 || (val < 0 && (! isNeg || val != MIN_VALUE)))
+          throw new /*NumberFormat*/Exception("NumberFormatException");
+      }
+    return isNeg ? -val : val;
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Math.java b/Robust/src/ClassLibrary/SSJavaInfer/Math.java
new file mode 100644 (file)
index 0000000..be38856
--- /dev/null
@@ -0,0 +1,136 @@
+
+public class Math {
+
+  static final double PI = 3.14159265358979323846;
+
+  // an alias for setPI()
+  public static double PI() {
+    double PI = 3.14159265358979323846;
+    return PI;
+  }
+
+  public static int abs(int x) {
+    return (x < 0) ? -x : x;
+  }
+
+  public static long abs(long x) {
+    return (x < 0) ? -x : x;
+  }
+
+  public static double abs(double x) {
+    return (x < 0) ? -x : x;
+  }
+
+  public static float abs(float x) {
+    return (x < 0) ? -x : x;
+  }
+
+  public static double max(double a, double b) {
+    return (a > b) ? a : b;
+  }
+
+  public static float max(float a, float b) {
+    return (a > b) ? a : b;
+  }
+
+  public static int max(int a, int b) {
+    return (a > b) ? a : b;
+  }
+
+  public static long max(long a, long b) {
+    return (a > b) ? a : b;
+  }
+
+  public static double min(double a, double b) {
+    return (a < b) ? a : b;
+  }
+
+  public static float min(float a, float b) {
+    return (a < b) ? a : b;
+  }
+
+  public static int min(int a, int b) {
+    return (a < b) ? a : b;
+  }
+
+  public static long min(long a, long b) {
+    return (a < b) ? a : b;
+  }
+
+  /** sqrt(a^2 + b^2) without under/overflow. **/
+  public static double hypot(double a, double b) {
+    double r;
+    if (abs(a) > abs(b)) {
+      r = b / a;
+      r = abs(a) * sqrt(1 + r * r);
+    } else if (b != 0) {
+      r = a / b;
+      r = abs(b) * sqrt(1 + r * r);
+    } else {
+      r = 0.0;
+    }
+    return r;
+  }
+
+  public static int round(float a) {
+    // this check for NaN, from JLS 15.21.1, saves a method call
+    return (int) floor(a + 0.5f);
+  }
+
+  public static double rint(double x) {
+    double y = ceil(x);
+    double d = y - x;
+    if (d == 0.5) {
+      if (((int) y) % 2 == 0) {
+        return y;
+      } else {
+        return y - 1.0;
+      }
+    } else if (d < 0.5) {
+      return y;
+    }
+    return y - 1.0;
+  }
+
+  public static native double sin(double a);
+
+  public static native double cos(double a);
+
+  public static native double asin(double a);
+
+  public static native double acos(double a);
+
+  public static native double tan(double a);
+
+  public static native double atan(double a);
+
+  public static native double atan2(double a, double b);
+
+  public static native double exp(double a);
+
+  public static native double sqrt(double a);
+
+  public static native double log(double a);
+
+  public static native double pow(double a, double b);
+
+  public static native double ceil(double a);
+
+  public static native double floor(double a);
+
+  public static native float sinf(float a);
+
+  public static native float cosf(float a);
+
+  public static native float expf(float a);
+
+  public static native float sqrtf(float a);
+
+  public static native float logf(float a);
+
+  public static native float powf(float a, float b);
+
+  public static native float ceilf(float a);
+
+  public static native float IEEEremainder(float f1, float f2);
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Number.java b/Robust/src/ClassLibrary/SSJavaInfer/Number.java
new file mode 100644 (file)
index 0000000..a1de2fe
--- /dev/null
@@ -0,0 +1,163 @@
+/* Number.java =- abstract superclass of numeric objects
+   Copyright (C) 1998, 2001, 2002, 2005  Free Software Foundation, Inc.
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GNU Classpath 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
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+//package java.lang;
+
+//import java.io.Serializable;
+
+/**
+ * Number is a generic superclass of all the numeric classes, including the
+ * wrapper classes {@link Byte}, {@link Short}, {@link Integer}, {@link Long},
+ * {@link Float}, and {@link Double}. Also worth mentioning are the classes in
+ * {@link java.math}.
+ * 
+ * It provides ways to convert numeric objects to any primitive.
+ * 
+ * @author Paul Fisher
+ * @author John Keiser
+ * @author Warren Levy
+ * @author Eric Blake (ebb9@email.byu.edu)
+ * @since 1.0
+ * @status updated to 1.4
+ */
+public/* abstract */class Number // implements Serializable
+{
+  /**
+   * Compatible with JDK 1.1+.
+   */
+  // private static final long serialVersionUID = -8742448824652078965L;
+
+  /**
+   * Table for calculating digits, used in Character, Long, and Integer.
+   */
+  /* static */final char[] digits;
+
+  /**
+   * The basic constructor (often called implicitly).
+   */
+  public Number() {
+    digits = new char[36];
+    digits[0] = '0';
+    digits[1] = '1';
+    digits[2] = '2';
+    digits[3] = '3';
+    digits[4] = '4';
+    digits[5] = '5';
+    digits[6] = '6';
+    digits[7] = '7';
+    digits[8] = '8';
+    digits[9] = '9';
+    digits[10] = 'a';
+    digits[11] = 'b';
+    digits[12] = 'c';
+    digits[13] = 'd';
+    digits[14] = 'e';
+    digits[15] = 'f';
+    digits[16] = 'g';
+    digits[17] = 'h';
+    digits[18] = 'i';
+    digits[19] = 'j';
+    digits[20] = 'k';
+    digits[21] = 'l';
+    digits[22] = 'm';
+    digits[23] = 'n';
+    digits[24] = 'o';
+    digits[25] = 'p';
+    digits[26] = 'q';
+    digits[27] = 'r';
+    digits[28] = 's';
+    digits[29] = 't';
+    digits[30] = 'u';
+    digits[31] = 'v';
+    digits[32] = 'w';
+    digits[33] = 'x';
+    digits[34] = 'y';
+    digits[35] = 'z';
+  }
+
+  /**
+   * Return the value of this <code>Number</code> as an <code>int</code>.
+   * 
+   * @return the int value
+   */
+  public/* abstract */int intValue() {
+  }
+
+  /**
+   * Return the value of this <code>Number</code> as a <code>long</code>.
+   * 
+   * @return the long value
+   */
+  public/* abstract */long longValue() {
+  }
+
+  /**
+   * Return the value of this <code>Number</code> as a <code>float</code>.
+   * 
+   * @return the float value
+   */
+  public/* abstract */float floatValue() {
+  }
+
+  /**
+   * Return the value of this <code>Number</code> as a <code>float</code>.
+   * 
+   * @return the double value
+   */
+  public/* abstract */double doubleValue() {
+  }
+
+  /**
+   * Return the value of this <code>Number</code> as a <code>byte</code>.
+   * 
+   * @return the byte value
+   * @since 1.1
+   */
+  public byte byteValue() {
+    return (byte) intValue();
+  }
+
+  /**
+   * Return the value of this <code>Number</code> as a <code>short</code>.
+   * 
+   * @return the short value
+   * @since 1.1
+   */
+  public short shortValue() {
+    return (short) intValue();
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Object.java b/Robust/src/ClassLibrary/SSJavaInfer/Object.java
new file mode 100644 (file)
index 0000000..f9531aa
--- /dev/null
@@ -0,0 +1,22 @@
+import String;
+
+public class Object {
+
+  public native int hashCode();
+
+  /* DON'T USE THIS METHOD UNLESS NECESSARY */
+  /* WE WILL DEPRECATE IT AS SOON AS INSTANCEOF WORKS */
+  public native int getType();
+
+  public boolean equals(Object o) {
+    if (o == this)
+      return true;
+    return false;
+  }
+
+  @TRUST
+  public String toString() {
+    return "Object" + hashCode();
+  }
+
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/OutputStream.java b/Robust/src/ClassLibrary/SSJavaInfer/OutputStream.java
new file mode 100644 (file)
index 0000000..eee7fce
--- /dev/null
@@ -0,0 +1,23 @@
+public class OutputStream {
+  public OutputStream() {
+  }
+
+  public void write(int ch) {
+    System.printString("Called unimplemented write(int)\n");
+  }
+
+  public void write(byte[] b) {
+    System.printString("Called unimplemented write(byte[])\n");
+  }
+
+  public void write(byte[] b, int off, int len) {
+    System.printString("Called unimplemented write(byte[],int,int)\n");
+  }
+
+  public void flush() {
+  }
+
+  public void close() {
+    System.printString("Called unimplemented close()\n");
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/PrintStream.java b/Robust/src/ClassLibrary/SSJavaInfer/PrintStream.java
new file mode 100644 (file)
index 0000000..3e7f2e3
--- /dev/null
@@ -0,0 +1,629 @@
+/* PrintStream.java -- OutputStream for printing output
+   Copyright (C) 1998, 1999, 2001, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+//package java.io;
+
+/*import java.util.Locale;
+ import java.util.Formatter;
+
+ import gnu.classpath.SystemProperties;
+ */
+/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
+ * "The Java Language Specification", ISBN 0-201-63451-1
+ * Status:  Believed complete and correct to 1.3
+ */
+
+/**
+ * This class prints Java primitive values and object to a stream as text. None
+ * of the methods in this class throw an exception. However, errors can be
+ * detected by calling the <code>checkError()</code> method. Additionally, this
+ * stream can be designated as "autoflush" when created so that any writes are
+ * automatically flushed to the underlying output sink when the current line is
+ * terminated.
+ * <p>
+ * This class converts char's into byte's using the system default encoding.
+ * 
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Tom Tromey (tromey@cygnus.com)
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ */
+public class PrintStream extends FilterOutputStream // implements Appendable
+{
+  /*
+   * Notice the implementation is quite similar to OutputStreamWriter. This
+   * leads to some minor duplication, because neither inherits from the other,
+   * and we want to maximize performance.
+   */
+
+  // Line separator string.
+  private static final char[] line_separator = { '\n' }/*
+                                                        * SystemProperties.
+                                                        * getProperty
+                                                        * ("line.separator",
+                                                        * "\n").toCharArray()
+                                                        */;
+
+  /**
+   * Encoding name
+   */
+  private final String encoding;
+
+  /**
+   * This boolean indicates whether or not an error has ever occurred on this
+   * stream.
+   */
+  private boolean error_occurred = false;
+
+  /**
+   * This is <code>true</code> if auto-flush is enabled, <code>false</code>
+   * otherwise
+   */
+  private final boolean auto_flush;
+
+  /**
+   * This method initializes a new <code>PrintStream</code> object to write to
+   * the specified output File. Doesn't autoflush.
+   * 
+   * @param file
+   *          The <code>File</code> to write to.
+   * @throws FileNotFoundException
+   *           if an error occurs while opening the file.
+   * 
+   * @since 1.5
+   */
+  public PrintStream(File file)
+  // throws FileNotFoundException
+  {
+    this(new FileOutputStream(file), false);
+  }
+
+  /**
+   * This method initializes a new <code>PrintStream</code> object to write to
+   * the specified output File. Doesn't autoflush.
+   * 
+   * @param file
+   *          The <code>File</code> to write to.
+   * @param encoding
+   *          The name of the character encoding to use for this object.
+   * @throws FileNotFoundException
+   *           If an error occurs while opening the file.
+   * @throws UnsupportedEncodingException
+   *           If the charset specified by <code>encoding</code> is invalid.
+   * 
+   * @since 1.5
+   */
+  public PrintStream(File file, String encoding)
+  // throws FileNotFoundException,UnsupportedEncodingException
+  {
+    this(new FileOutputStream(file), false, encoding);
+  }
+
+  /**
+   * This method initializes a new <code>PrintStream</code> object to write to
+   * the specified output File. Doesn't autoflush.
+   * 
+   * @param fileName
+   *          The name of the <code>File</code> to write to.
+   * @throws FileNotFoundException
+   *           if an error occurs while opening the file,
+   * 
+   * @since 1.5
+   */
+  public PrintStream(String fileName)
+  // throws FileNotFoundException
+  {
+    this(new FileOutputStream(new File(fileName)), false);
+  }
+
+  /**
+   * This method initializes a new <code>PrintStream</code> object to write to
+   * the specified output File. Doesn't autoflush.
+   * 
+   * @param fileName
+   *          The name of the <code>File</code> to write to.
+   * @param encoding
+   *          The name of the character encoding to use for this object.
+   * @throws FileNotFoundException
+   *           if an error occurs while opening the file.
+   * @throws UnsupportedEncodingException
+   *           If the charset specified by <code>encoding</code> is invalid.
+   * 
+   * @since 1.5
+   */
+  public PrintStream(String fileName, String encoding)
+  // throws FileNotFoundException,UnsupportedEncodingException
+  {
+    this(new FileOutputStream(new File(fileName)), false, encoding);
+  }
+
+  /**
+   * This method initializes a new <code>PrintStream</code> object to write to
+   * the specified output sink. Doesn't autoflush.
+   * 
+   * @param out
+   *          The <code>OutputStream</code> to write to.
+   */
+  public PrintStream(OutputStream out) {
+    this(out, false);
+  }
+
+  /**
+   * This method initializes a new <code>PrintStream</code> object to write to
+   * the specified output sink. This constructor also allows "auto-flush"
+   * functionality to be specified where the stream will be flushed after every
+   * <code>print</code> or <code>println</code> call, when the
+   * <code>write</code> methods with array arguments are called, or when a
+   * single new-line character is written.
+   * <p>
+   * 
+   * @param out
+   *          The <code>OutputStream</code> to write to.
+   * @param auto_flush
+   *          <code>true</code> to flush the stream after every line,
+   *          <code>false</code> otherwise
+   */
+  public PrintStream(OutputStream out, boolean auto_flush) {
+    super(out);
+    /*
+     * String encoding; try { encoding =
+     * SystemProperties.getProperty("file.encoding"); } catch (SecurityException
+     * e){ encoding = "ISO8859_1"; } catch (IllegalArgumentException e){
+     * encoding = "ISO8859_1"; } catch (NullPointerException e){ encoding =
+     * "ISO8859_1"; }
+     */
+    this.encoding = "ISO8859_1"; // encoding;
+    this.auto_flush = auto_flush;
+  }
+
+  /**
+   * This method initializes a new <code>PrintStream</code> object to write to
+   * the specified output sink. This constructor also allows "auto-flush"
+   * functionality to be specified where the stream will be flushed after every
+   * <code>print</code> or <code>println</code> call, when the
+   * <code>write</code> methods with array arguments are called, or when a
+   * single new-line character is written.
+   * <p>
+   * 
+   * @param out
+   *          The <code>OutputStream</code> to write to.
+   * @param auto_flush
+   *          <code>true</code> to flush the stream after every line,
+   *          <code>false</code> otherwise
+   * @param encoding
+   *          The name of the character encoding to use for this object.
+   */
+  public PrintStream(OutputStream out, boolean auto_flush, String encoding)
+  // throws UnsupportedEncodingException
+  {
+    super(out);
+
+    new String(new byte[] { 0 }, encoding); // check if encoding is supported
+    this.encoding = encoding;
+    this.auto_flush = auto_flush;
+  }
+
+  /**
+   * This method checks to see if an error has occurred on this stream. Note
+   * that once an error has occurred, this method will continue to report
+   * <code>true</code> forever for this stream. Before checking for an error
+   * condition, this method flushes the stream.
+   * 
+   * @return <code>true</code> if an error has occurred, <code>false</code>
+   *         otherwise
+   */
+  public boolean checkError() {
+    flush();
+    return error_occurred;
+  }
+
+  /**
+   * This method can be called by subclasses to indicate that an error has
+   * occurred and should be reported by <code>checkError</code>.
+   */
+  protected void setError() {
+    error_occurred = true;
+  }
+
+  /**
+   * This method closes this stream and all underlying streams.
+   */
+  public void close() {
+    /*
+     * try { flush(); out.close(); } catch (InterruptedIOException iioe) {
+     * Thread.currentThread().interrupt(); } catch (IOException e) { setError
+     * (); }
+     */
+  }
+
+  /**
+   * This method flushes any buffered bytes to the underlying stream and then
+   * flushes that stream as well.
+   */
+  public void flush() {
+    /*
+     * try { out.flush(); } catch (InterruptedIOException iioe) {
+     * Thread.currentThread().interrupt(); } catch (IOException e) { setError
+     * (); }
+     */
+  }
+
+  private synchronized void print(String str, boolean println) {
+    /*
+     * try { writeChars(str, 0, str.length()); if (println)
+     * writeChars(line_separator, 0, line_separator.length); if (auto_flush)
+     * flush(); } catch (InterruptedIOException iioe) {
+     * Thread.currentThread().interrupt(); } catch (IOException e) { setError
+     * (); }
+     */
+  }
+
+  private synchronized void print(char[] chars, int pos, int len, boolean println) {
+    /*
+     * try { writeChars(chars, pos, len); if (println)
+     * writeChars(line_separator, 0, line_separator.length); if (auto_flush)
+     * flush(); } catch (InterruptedIOException iioe) {
+     * Thread.currentThread().interrupt(); } catch (IOException e) { setError
+     * (); }
+     */
+  }
+
+  private void writeChars(char[] buf, int offset, int count)
+  // throws IOException
+  {
+    /*
+     * byte[] bytes = (new String(buf, offset, count)).getBytes(encoding);
+     * out.write(bytes, 0, bytes.length);
+     */
+  }
+
+  private void writeChars(String str, int offset, int count)
+  // throws IOException
+  {
+    /*
+     * byte[] bytes = str.substring(offset, offset+count).getBytes(encoding);
+     * out.write(bytes, 0, bytes.length);
+     */
+  }
+
+  /**
+   * This methods prints a boolean value to the stream. <code>true</code> values
+   * are printed as "true" and <code>false</code> values are printed as "false".
+   * 
+   * @param bool
+   *          The <code>boolean</code> value to print
+   */
+  public void print(boolean bool) {
+    print(String.valueOf(bool), false);
+  }
+
+  /**
+   * This method prints an integer to the stream. The value printed is
+   * determined using the <code>String.valueOf()</code> method.
+   * 
+   * @param inum
+   *          The <code>int</code> value to be printed
+   */
+  public void print(int inum) {
+    print(String.valueOf(inum), false);
+  }
+
+  /**
+   * This method prints a long to the stream. The value printed is determined
+   * using the <code>String.valueOf()</code> method.
+   * 
+   * @param lnum
+   *          The <code>long</code> value to be printed
+   */
+  public void print(long lnum) {
+    print(String.valueOf(lnum), false);
+  }
+
+  /**
+   * This method prints a float to the stream. The value printed is determined
+   * using the <code>String.valueOf()</code> method.
+   * 
+   * @param fnum
+   *          The <code>float</code> value to be printed
+   */
+  public void print(float fnum) {
+    print(String.valueOf(fnum), false);
+  }
+
+  /**
+   * This method prints a double to the stream. The value printed is determined
+   * using the <code>String.valueOf()</code> method.
+   * 
+   * @param dnum
+   *          The <code>double</code> value to be printed
+   */
+  public void print(double dnum) {
+    print(String.valueOf(dnum), false);
+  }
+
+  /**
+   * This method prints an <code>Object</code> to the stream. The actual value
+   * printed is determined by calling the <code>String.valueOf()</code> method.
+   * 
+   * @param obj
+   *          The <code>Object</code> to print.
+   */
+  public void print(Object obj) {
+    print(obj == null ? "null" : obj.toString(), false);
+  }
+
+  /**
+   * This method prints a <code>String</code> to the stream. The actual value
+   * printed depends on the system default encoding.
+   * 
+   * @param str
+   *          The <code>String</code> to print.
+   */
+  public void print(String str) {
+    print(str == null ? "null" : str, false);
+  }
+
+  /**
+   * This method prints a char to the stream. The actual value printed is
+   * determined by the character encoding in use.
+   * 
+   * @param ch
+   *          The <code>char</code> value to be printed
+   */
+  public synchronized void print(char ch) {
+    print(new char[] { ch }, 0, 1, false);
+  }
+
+  /**
+   * This method prints an array of characters to the stream. The actual value
+   * printed depends on the system default encoding.
+   * 
+   * @param charArray
+   *          The array of characters to print.
+   */
+  public void print(char[] charArray) {
+    print(charArray, 0, charArray.length, false);
+  }
+
+  /**
+   * This method prints a line separator sequence to the stream. The value
+   * printed is determined by the system property <xmp>line.separator</xmp> and
+   * is not necessarily the Unix '\n' newline character.
+   */
+  public void println() {
+    print(line_separator, 0, line_separator.length, false);
+  }
+
+  /**
+   * This methods prints a boolean value to the stream. <code>true</code> values
+   * are printed as "true" and <code>false</code> values are printed as "false".
+   * <p>
+   * This method prints a line termination sequence after printing the value.
+   * 
+   * @param bool
+   *          The <code>boolean</code> value to print
+   */
+  public void println(boolean bool) {
+    print(String.valueOf(bool), true);
+  }
+
+  /**
+   * This method prints an integer to the stream. The value printed is
+   * determined using the <code>String.valueOf()</code> method.
+   * <p>
+   * This method prints a line termination sequence after printing the value.
+   * 
+   * @param inum
+   *          The <code>int</code> value to be printed
+   */
+  public void println(int inum) {
+    print(String.valueOf(inum), true);
+  }
+
+  /**
+   * This method prints a long to the stream. The value printed is determined
+   * using the <code>String.valueOf()</code> method.
+   * <p>
+   * This method prints a line termination sequence after printing the value.
+   * 
+   * @param lnum
+   *          The <code>long</code> value to be printed
+   */
+  public void println(long lnum) {
+    print(String.valueOf(lnum), true);
+  }
+
+  /**
+   * This method prints a float to the stream. The value printed is determined
+   * using the <code>String.valueOf()</code> method.
+   * <p>
+   * This method prints a line termination sequence after printing the value.
+   * 
+   * @param fnum
+   *          The <code>float</code> value to be printed
+   */
+  public void println(float fnum) {
+    print(String.valueOf(fnum), true);
+  }
+
+  /**
+   * This method prints a double to the stream. The value printed is determined
+   * using the <code>String.valueOf()</code> method.
+   * <p>
+   * This method prints a line termination sequence after printing the value.
+   * 
+   * @param dnum
+   *          The <code>double</code> value to be printed
+   */
+  public void println(double dnum) {
+    print(String.valueOf(dnum), true);
+  }
+
+  /**
+   * This method prints an <code>Object</code> to the stream. The actual value
+   * printed is determined by calling the <code>String.valueOf()</code> method.
+   * <p>
+   * This method prints a line termination sequence after printing the value.
+   * 
+   * @param obj
+   *          The <code>Object</code> to print.
+   */
+  public void println(Object obj) {
+    print(obj == null ? "null" : obj.toString(), true);
+  }
+
+  /**
+   * This method prints a <code>String</code> to the stream. The actual value
+   * printed depends on the system default encoding.
+   * <p>
+   * This method prints a line termination sequence after printing the value.
+   * 
+   * @param str
+   *          The <code>String</code> to print.
+   */
+  public void println(String str) {
+    print(str == null ? "null" : str, true);
+  }
+
+  /**
+   * This method prints a char to the stream. The actual value printed is
+   * determined by the character encoding in use.
+   * <p>
+   * This method prints a line termination sequence after printing the value.
+   * 
+   * @param ch
+   *          The <code>char</code> value to be printed
+   */
+  public synchronized void println(char ch) {
+    print(new char[] { ch }, 0, 1, true);
+  }
+
+  /**
+   * This method prints an array of characters to the stream. The actual value
+   * printed depends on the system default encoding.
+   * <p>
+   * This method prints a line termination sequence after printing the value.
+   * 
+   * @param charArray
+   *          The array of characters to print.
+   */
+  public void println(char[] charArray) {
+    print(charArray, 0, charArray.length, true);
+  }
+
+  /**
+   * This method writes a byte of data to the stream. If auto-flush is enabled,
+   * printing a newline character will cause the stream to be flushed after the
+   * character is written.
+   * 
+   * @param oneByte
+   *          The byte to be written
+   */
+  public void write(int oneByte) {
+    /*
+     * try { out.write (oneByte & 0xff);
+     * 
+     * if (auto_flush && (oneByte == '\n')) flush (); } catch
+     * (InterruptedIOException iioe) { Thread.currentThread ().interrupt (); }
+     * catch (IOException e) { setError (); }
+     */
+  }
+
+  /**
+   * This method writes <code>len</code> bytes from the specified array starting
+   * at index <code>offset</code> into the array.
+   * 
+   * @param buffer
+   *          The array of bytes to write
+   * @param offset
+   *          The index into the array to start writing from
+   * @param len
+   *          The number of bytes to write
+   */
+  public void write(byte[] buffer, int offset, int len) {
+    /*
+     * try { out.write (buffer, offset, len);
+     * 
+     * if (auto_flush) flush (); } catch (InterruptedIOException iioe) {
+     * Thread.currentThread ().interrupt (); } catch (IOException e) { setError
+     * (); }
+     */
+  }
+
+  /** @since 1.5 */
+  public PrintStream append(char c) {
+    print(c);
+    return this;
+  }
+
+  /** @since 1.5 */
+  /*
+   * public PrintStream append(CharSequence cs) { print(cs == null ? "null" :
+   * cs.toString()); return this; }
+   */
+
+  /** @since 1.5 */
+  /*
+   * public PrintStream append(CharSequence cs, int start, int end) { print(cs
+   * == null ? "null" : cs.subSequence(start, end).toString()); return this; }
+   */
+
+  /** @since 1.5 */
+  /*
+   * public PrintStream printf(String format, Object... args) { return this;
+   * //format(format, args); }
+   */
+
+  /** @since 1.5 */
+  /*
+   * public PrintStream printf(Locale locale, String format, Object... args) {
+   * return format(locale, format, args); }
+   */
+
+  /** @since 1.5 */
+  /*
+   * public PrintStream format(String format, Object... args) { return this;
+   * //format(Locale.getDefault(), format, args); }
+   */
+
+  /** @since 1.5 */
+  /*
+   * public PrintStream format(Locale locale, String format, Object... args) {
+   * Formatter f = new Formatter(this, locale); f.format(format, args); return
+   * this; }
+   */
+} // class PrintStream
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/PushbackInputStream.java b/Robust/src/ClassLibrary/SSJavaInfer/PushbackInputStream.java
new file mode 100644 (file)
index 0000000..103c2da
--- /dev/null
@@ -0,0 +1,338 @@
+/* PushbackInputStream.java -- An input stream that can unread bytes
+   Copyright (C) 1998, 1999, 2001, 2002, 2005  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+//package java.io;
+
+/**
+ * This subclass of <code>FilterInputStream</code> provides the ability to
+ * unread data from a stream. It maintains an internal buffer of unread data
+ * that is supplied to the next read operation. This is conceptually similar to
+ * mark/reset functionality, except that in this case the position to reset the
+ * stream to does not need to be known in advance.
+ * <p>
+ * The default pushback buffer size one byte, but this can be overridden by the
+ * creator of the stream.
+ * <p>
+ * 
+ * @author Aaron M. Renn (arenn@urbanophile.com)
+ * @author Warren Levy (warrenl@cygnus.com)
+ */
+
+public class PushbackInputStream extends FilterInputStream {
+  /**
+   * This is the default buffer size
+   */
+
+  private static final int DEFAULT_BUFFER_SIZE = 1;
+
+  /**
+   * This is the buffer that is used to store the pushed back data
+   */
+
+  protected byte[] buf;
+
+  /**
+   * This is the position in the buffer from which the next byte will be read.
+   * Bytes are stored in reverse order in the buffer, starting from
+   * <code>buf[buf.length - 1]</code> to <code>buf[0]</code>. Thus when
+   * <code>pos</code> is 0 the buffer is full and <code>buf.length</code> when
+   * it is empty
+   */
+
+  protected int pos;
+
+  /**
+   * This method initializes a <code>PushbackInputStream</code> to read from the
+   * specified subordinate <code>InputStream</code> with a default pushback
+   * buffer size of 1.
+   * 
+   * @param in
+   *          The subordinate stream to read from
+   */
+  public PushbackInputStream(InputStream in) {
+    this(in, DEFAULT_BUFFER_SIZE);
+  }
+
+  /**
+   * This method initializes a <code>PushbackInputStream</code> to read from the
+   * specified subordinate <code>InputStream</code> with the specified buffer
+   * size
+   * 
+   * @param in
+   *          The subordinate <code>InputStream</code> to read from
+   * @param size
+   *          The pushback buffer size to use
+   */
+  public PushbackInputStream(InputStream in, int size) {
+    super(in);
+    if (size < 0)
+      throw new IllegalArgumentException();
+    buf = new byte[size];
+    pos = buf.length;
+  }
+
+  /**
+   * This method returns the number of bytes that can be read from this stream
+   * before a read can block. A return of 0 indicates that blocking might (or
+   * might not) occur on the very next read attempt.
+   * <p>
+   * This method will return the number of bytes available from the pushback
+   * buffer plus the number of bytes available from the underlying stream.
+   * 
+   * @return The number of bytes that can be read before blocking could occur
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public int available() throws IOException {
+    try {
+      return (buf.length - pos) + super.available();
+    } catch (NullPointerException npe) {
+      throw new IOException("Stream closed");
+    }
+  }
+
+  /**
+   * This method closes the stream and releases any associated resources.
+   * 
+   * @exception IOException
+   *              If an error occurs.
+   */
+  public synchronized void close() throws IOException {
+    buf = null;
+    super.close();
+  }
+
+  /**
+   * This method returns <code>false</code> to indicate that it does not support
+   * mark/reset functionality.
+   * 
+   * @return This method returns <code>false</code> to indicate that this class
+   *         does not support mark/reset functionality
+   */
+  public boolean markSupported() {
+    return false;
+  }
+
+  /**
+   * This method always throws an IOException in this class because mark/reset
+   * functionality is not supported.
+   * 
+   * @exception IOException
+   *              Always thrown for this class
+   */
+  public void reset() throws IOException {
+    throw new IOException("Mark not supported in this class");
+  }
+
+  /**
+   * This method reads an unsigned byte from the input stream and returns it as
+   * an int in the range of 0-255. This method also will return -1 if the end of
+   * the stream has been reached. The byte returned will be read from the
+   * pushback buffer, unless the buffer is empty, in which case the byte will be
+   * read from the underlying stream.
+   * <p>
+   * This method will block until the byte can be read.
+   * 
+   * @return The byte read or -1 if end of stream
+   * 
+   * @exception IOException
+   *              If an error occurs
+   */
+  public synchronized int read() throws IOException {
+    if (pos < buf.length)
+      return ((int) buf[pos++]) & 0xFF;
+
+    return super.read();
+  }
+
+  /**
+   * This method read bytes from a stream and stores them into a caller supplied
+   * buffer. It starts storing the data at index <code>offset</code> into the
+   * buffer and attempts to read <code>len</code> bytes. This method can return
+   * before reading the number of bytes requested. The actual number of bytes
+   * read is returned as an int. A -1 is returned to indicate the end of the
+   * stream.
+   * <p>
+   * This method will block until some data can be read.
+   * <p>
+   * This method first reads bytes from the pushback buffer in order to satisfy
+   * the read request. If the pushback buffer cannot provide all of the bytes
+   * requested, the remaining bytes are read from the underlying stream.
+   * 
+   * @param b
+   *          The array into which the bytes read should be stored
+   * @param off
+   *          The offset into the array to start storing bytes
+   * @param len
+   *          The requested number of bytes to read
+   * 
+   * @return The actual number of bytes read, or -1 if end of stream.
+   * 
+   * @exception IOException
+   *              If an error occurs.
+   */
+
+  public synchronized int read(byte[] b, int off, int len) throws IOException {
+    int numBytes = Math.min(buf.length - pos, len);
+
+    if (numBytes > 0) {
+
+      System.arraycopy(buf, pos, b, off, numBytes);
+      pos += numBytes;
+      len -= numBytes;
+      off += numBytes;
+    }
+
+    if (len > 0) {
+      len = super.read(b, off, len);
+      if (len == -1) // EOF
+        return numBytes > 0 ? numBytes : -1;
+      numBytes += len;
+    }
+    return numBytes;
+  }
+
+  /**
+   * This method pushes a single byte of data into the pushback buffer. The byte
+   * pushed back is the one that will be returned as the first byte of the next
+   * read.
+   * <p>
+   * If the pushback buffer is full, this method throws an exception.
+   * <p>
+   * The argument to this method is an <code>int</code>. Only the low eight bits
+   * of this value are pushed back.
+   * 
+   * @param b
+   *          The byte to be pushed back, passed as an int
+   * 
+   * @exception IOException
+   *              If the pushback buffer is full.
+   */
+  public synchronized void unread(int b) throws IOException {
+    if (pos <= 0)
+      throw new IOException("Insufficient space in pushback buffer");
+
+    buf[--pos] = (byte) b;
+  }
+
+  /**
+   * This method pushes all of the bytes in the passed byte array into the
+   * pushback bfer. These bytes are pushed in reverse order so that the next
+   * byte read from the stream after this operation will be <code>b[0]</code>
+   * followed by <code>b[1]</code>, etc.
+   * <p>
+   * If the pushback buffer cannot hold all of the requested bytes, an exception
+   * is thrown.
+   * 
+   * @param b
+   *          The byte array to be pushed back
+   * 
+   * @exception IOException
+   *              If the pushback buffer is full
+   */
+  public synchronized void unread(byte[] b) throws IOException {
+    unread(b, 0, b.length);
+  }
+
+  /**
+   * This method pushed back bytes from the passed in array into the pushback
+   * buffer. The bytes from <code>b[offset]</code> to
+   * <code>b[offset + len]</code> are pushed in reverse order so that the next
+   * byte read from the stream after this operation will be
+   * <code>b[offset]</code> followed by <code>b[offset + 1]</code>, etc.
+   * <p>
+   * If the pushback buffer cannot hold all of the requested bytes, an exception
+   * is thrown.
+   * 
+   * @param b
+   *          The byte array to be pushed back
+   * @param off
+   *          The index into the array where the bytes to be push start
+   * @param len
+   *          The number of bytes to be pushed.
+   * 
+   * @exception IOException
+   *              If the pushback buffer is full
+   */
+  public synchronized void unread(byte[] b, int off, int len) throws IOException {
+    if (pos < len)
+      throw new IOException("Insufficient space in pushback buffer");
+
+    // Note the order that these bytes are being added is the opposite
+    // of what would be done if they were added to the buffer one at a time.
+    // See the Java Class Libraries book p. 1390.
+    System.arraycopy(b, off, buf, pos - len, len);
+
+    // Don't put this into the arraycopy above, an exception might be thrown
+    // and in that case we don't want to modify pos.
+    pos -= len;
+  }
+
+  /**
+   * This method skips the specified number of bytes in the stream. It returns
+   * the actual number of bytes skipped, which may be less than the requested
+   * amount.
+   * <p>
+   * This method first discards bytes from the buffer, then calls the
+   * <code>skip</code> method on the underlying <code>InputStream</code> to skip
+   * additional bytes if necessary.
+   * 
+   * @param n
+   *          The requested number of bytes to skip
+   * 
+   * @return The actual number of bytes skipped.
+   * 
+   * @exception IOException
+   *              If an error occurs
+   * 
+   * @since 1.2
+   */
+  public synchronized long skip(long n) throws IOException {
+    final long origN = n;
+
+    if (n > 0L) {
+      int numread = (int) Math.min((long) (buf.length - pos), n);
+      pos += numread;
+      n -= numread;
+      if (n > 0)
+        n -= super.skip(n);
+    }
+
+    return origN - n;
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Random.java b/Robust/src/ClassLibrary/SSJavaInfer/Random.java
new file mode 100644 (file)
index 0000000..d9a3422
--- /dev/null
@@ -0,0 +1,405 @@
+/* Random.java -- a pseudo-random number generator
+   Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+   This file is part of GNU Classpath.
+
+   GNU Classpath is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   GNU Classpath 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
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GNU Classpath; see the file COPYING.  If not, write to the
+   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301 USA.
+
+   Linking this library statically or dynamically with other modules is
+   making a combined work based on this library.  Thus, the terms and
+   conditions of the GNU General Public License cover the whole
+   combination.
+
+   As a special exception, the copyright holders of this library give you
+   permission to link this library with independent modules to produce an
+   executable, regardless of the license terms of these independent
+   modules, and to copy and distribute the resulting executable under
+   terms of your choice, provided that you also meet, for each linked
+   independent module, the terms and conditions of the license of that
+   module.  An independent module is a module which is not derived from
+   or based on this library.  If you modify this library, you may extend
+   this exception to your version of the library, but you are not
+   obligated to do so.  If you do not wish to do so, delete this
+   exception statement from your version. */
+
+/**
+ * This class generates pseudorandom numbers. It uses the same algorithm as the
+ * original JDK-class, so that your programs behave exactly the same way, if
+ * started with the same seed.
+ * 
+ * The algorithm is described in <em>The Art of Computer Programming,
+ * Volume 2</em> by Donald Knuth in Section 3.2.1. It is a 48-bit seed, linear
+ * congruential formula.
+ * 
+ * If two instances of this class are created with the same seed and the same
+ * calls to these classes are made, they behave exactly the same way. This
+ * should be even true for foreign implementations (like this), so every port
+ * must use the same algorithm as described here.
+ * 
+ * If you want to implement your own pseudorandom algorithm, you should extend
+ * this class and overload the <code>next()</code> and
+ * <code>setSeed(long)</code> method. In that case the above paragraph doesn't
+ * apply to you.
+ * 
+ * This class shouldn't be used for security sensitive purposes (like generating
+ * passwords or encryption keys. See <code>SecureRandom</code> in package
+ * <code>java.security</code> for this purpose.
+ * 
+ * For simple random doubles between 0.0 and 1.0, you may consider using
+ * Math.random instead.
+ * 
+ * @see java.security.SecureRandom
+ * @see Math#random()
+ * @author Jochen Hoenicke
+ * @author Eric Blake (ebb9@email.byu.edu)
+ * @status updated to 1.4
+ */
+
+public class Random {
+  /**
+   * True if the next nextGaussian is available. This is used by nextGaussian,
+   * which generates two gaussian numbers by one call, and returns the second on
+   * the second call.
+   * 
+   * @serial whether nextNextGaussian is available
+   * @see #nextGaussian()
+   * @see #nextNextGaussian
+   */
+
+  private boolean haveNextNextGaussian;
+
+  /**
+   * The next nextGaussian, when available. This is used by nextGaussian, which
+   * generates two gaussian numbers by one call, and returns the second on the
+   * second call.
+   * 
+   * @serial the second gaussian of a pair
+   * @see #nextGaussian()
+   * @see #haveNextNextGaussian
+   */
+
+  private double nextNextGaussian;
+
+  /**
+   * The seed. This is the number set by setSeed and which is used in next.
+   * 
+   * @serial the internal state of this generator
+   * @see #next(int)
+   */
+
+  private long seed;
+
+  /**
+   * Creates a new pseudorandom number generator. The seed is initialized to the
+   * current time, as if by <code>setSeed(System.currentTimeMillis());</code>.
+   * 
+   * @see System#currentTimeMillis()
+   */
+  public Random() {
+    setSeed(System.currentTimeMillis());
+  }
+
+  /**
+   * Creates a new pseudorandom number generator, starting with the specified
+   * seed, using <code>setSeed(seed);</code>.
+   * 
+   * @param seed
+   *          the initial seed
+   */
+  public Random(long seed) {
+    setSeed(seed);
+  }
+
+  /**
+   * Sets the seed for this pseudorandom number generator. As described above,
+   * two instances of the same random class, starting with the same seed, should
+   * produce the same results, if the same methods are called. The
+   * implementation for java.util.Random is:
+   * 
+   * <pre>
+   * public synchronized void setSeed(long seed) {
+   *   this.seed = (seed &circ; 0x5DEECE66DL) &amp; ((1L &lt;&lt; 48) - 1);
+   *   haveNextNextGaussian = false;
+   * }
+   * </pre>
+   * 
+   * @param seed
+   *          the new seed
+   */
+  public synchronized void setSeed(long seed) {
+    this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1);
+    haveNextNextGaussian = false;
+  }
+
+  /**
+   * Generates the next pseudorandom number. This returns an int value whose
+   * <code>bits</code> low order bits are independent chosen random bits (0 and
+   * 1 are equally likely). The implementation for java.util.Random is:
+   * 
+   * <pre>
+   * protected synchronized int next(int bits) {
+   *   seed = (seed * 0x5DEECE66DL + 0xBL) &amp; ((1L &lt;&lt; 48) - 1);
+   *   return (int) (seed &gt;&gt;&gt; (48 - bits));
+   * }
+   * </pre>
+   * 
+   * @param bits
+   *          the number of random bits to generate, in the range 1..32
+   * @return the next pseudorandom value
+   * @since 1.1
+   */
+  protected synchronized int next(int bits) {
+    seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
+    return (int) (seed >>> (48 - bits));
+  }
+
+  /**
+   * Fills an array of bytes with random numbers. All possible values are
+   * (approximately) equally likely. The JDK documentation gives no
+   * implementation, but it seems to be:
+   * 
+   * <pre>
+   * public void nextBytes(byte[] bytes)
+   *      {
+   *      for (int i = 0; i &lt; bytes.length; i += 4)
+   *      {
+   *      int random = next(32);
+   *      for (int j = 0; i + j &lt; bytes.length && j &lt; 4; j++)
+   *      {
+   *       bytes[i+j] = (byte) (random & 0xff)
+   *       random &gt;&gt;= 8;
+   *      }
+   *      }
+   *      }
+   * </pre>
+   * 
+   * @param bytes
+   *          the byte array that should be filled
+   * @throws NullPointerException
+   *           if bytes is null
+   * @since 1.1
+   */
+  public void nextBytes(byte[] bytes) {
+    int random;
+    // Do a little bit unrolling of the above algorithm.
+    int max = bytes.length & ~0x3;
+    for (int i = 0; i < max; i += 4) {
+      random = next(32);
+      bytes[i] = (byte) random;
+      bytes[i + 1] = (byte) (random >> 8);
+      bytes[i + 2] = (byte) (random >> 16);
+      bytes[i + 3] = (byte) (random >> 24);
+    }
+    if (max < bytes.length) {
+      random = next(32);
+      for (int j = max; j < bytes.length; j++) {
+        bytes[j] = (byte) random;
+        random >>= 8;
+      }
+    }
+  }
+
+  /**
+   * Generates the next pseudorandom number. This returns an int value whose 32
+   * bits are independent chosen random bits (0 and 1 are equally likely). The
+   * implementation for java.util.Random is:
+   * 
+   * <pre>
+   * public int nextInt() {
+   *   return next(32);
+   * }
+   * </pre>
+   * 
+   * @return the next pseudorandom value
+   */
+  public int nextInt() {
+    return next(32);
+  }
+
+  /**
+   * Generates the next pseudorandom number. This returns a value between
+   * 0(inclusive) and <code>n</code>(exclusive), and each value has the same
+   * likelihodd (1/<code>n</code>). (0 and 1 are equally likely). The
+   * implementation for java.util.Random is:
+   * 
+   * <pre>
+   * public int nextInt(int n) {
+   *   if (n &lt;= 0)
+   *     throw new IllegalArgumentException(&quot;n must be positive&quot;);
+   * 
+   *   if ((n &amp; -n) == n) // i.e., n is a power of 2
+   *     return (int) ((n * (long) next(31)) &gt;&gt; 31);
+   * 
+   *   int bits, val;
+   *   do {
+   *     bits = next(31);
+   *     val = bits % n;
+   *   } while (bits - val + (n - 1) &lt; 0);
+   * 
+   *   return val;
+   * }
+   * </pre>
+   * 
+   * <p>
+   * This algorithm would return every value with exactly the same probability,
+   * if the next()-method would be a perfect random number generator.
+   * 
+   * The loop at the bottom only accepts a value, if the random number was
+   * between 0 and the highest number less then 1<<31, which is divisible by n.
+   * The probability for this is high for small n, and the worst case is 1/2
+   * (for n=(1<<30)+1).
+   * 
+   * The special treatment for n = power of 2, selects the high bits of the
+   * random number (the loop at the bottom would select the low order bits).
+   * This is done, because the low order bits of linear congruential number
+   * generators (like the one used in this class) are known to be ``less
+   * random'' than the high order bits.
+   * 
+   * @param n
+   *          the upper bound
+   * @throws IllegalArgumentException
+   *           if the given upper bound is negative
+   * @return the next pseudorandom value
+   * @since 1.2
+   */
+  public int nextInt(int n) {
+    if (n <= 0)
+      System.printString("ERROR: n must be positive\n");
+    if ((n & -n) == n) // i.e., n is a power of 2
+      return (int) ((n * (long) next(31)) >> 31);
+    int bits, val;
+    do {
+      bits = next(31);
+      val = bits % n;
+    } while (bits - val + (n - 1) < 0);
+    return val;
+  }
+
+  /**
+   * Generates the next pseudorandom long number. All bits of this long are
+   * independently chosen and 0 and 1 have equal likelihood. The implementation
+   * for java.util.Random is:
+   * 
+   * <pre>
+   * public long nextLong() {
+   *   return ((long) next(32) &lt;&lt; 32) + next(32);
+   * }
+   * </pre>
+   * 
+   * @return the next pseudorandom value
+   */
+  public long nextLong() {
+    return ((long) next(32) << 32) + next(32);
+  }
+
+  /**
+   * Generates the next pseudorandom boolean. True and false have the same
+   * probability. The implementation is:
+   * 
+   * <pre>
+   * public boolean nextBoolean() {
+   *   return next(1) != 0;
+   * }
+   * </pre>
+   * 
+   * @return the next pseudorandom boolean
+   * @since 1.2
+   */
+  public boolean nextBoolean() {
+    return next(1) != 0;
+  }
+
+  /**
+   * Generates the next pseudorandom float uniformly distributed between 0.0f
+   * (inclusive) and 1.0f (exclusive). The implementation is as follows.
+   * 
+   * <pre>
+   * public float nextFloat() {
+   *   return next(24) / ((float) (1 &lt;&lt; 24));
+   * }
+   * </pre>
+   * 
+   * @return the next pseudorandom float
+   */
+  public float nextFloat() {
+    return next(24) / (float) (1 << 24);
+  }
+
+  /**
+   * Generates the next pseudorandom double uniformly distributed between 0.0
+   * (inclusive) and 1.0 (exclusive). The implementation is as follows.
+   * 
+   * <pre>
+   * public double nextDouble() {
+   *   return (((long) next(26) &lt;&lt; 27) + next(27)) / (double) (1L &lt;&lt; 53);
+   * }
+   * </pre>
+   * 
+   * @return the next pseudorandom double
+   */
+  public double nextDouble() {
+    return (((long) next(26) << 27) + next(27)) / (double) (1L << 53);
+  }
+
+  /**
+   * Generates the next pseudorandom, Gaussian (normally) distributed double
+   * value, with mean 0.0 and standard deviation 1.0. The algorithm is as
+   * follows.
+   * 
+   * <pre>
+   * public synchronized double nextGaussian() {
+   *   if (haveNextNextGaussian) {
+   *     haveNextNextGaussian = false;
+   *     return nextNextGaussian;
+   *   } else {
+   *     double v1, v2, s;
+   *     do {
+   *       v1 = 2 * nextDouble() - 1; // between -1.0 and 1.0
+   *       v2 = 2 * nextDouble() - 1; // between -1.0 and 1.0
+   *       s = v1 * v1 + v2 * v2;
+   *     } while (s &gt;= 1);
+   * 
+   *     double norm = Math.sqrt(-2 * Math.log(s) / s);
+   *     nextNextGaussian = v2 * norm;
+   *     haveNextNextGaussian = true;
+   *     return v1 * norm;
+   *   }
+   * }
+   * </pre>
+   * 
+   * <p>
+   * This is described in section 3.4.1 of <em>The Art of Computer
+   * Programming, Volume 2</em> by Donald Knuth.
+   * 
+   * @return the next pseudorandom Gaussian distributed double
+   */
+  public synchronized double nextGaussian() {
+    if (haveNextNextGaussian) {
+      haveNextNextGaussian = false;
+      return nextNextGaussian;
+    }
+    double v1, v2, s;
+    do {
+      v1 = 2 * nextDouble() - 1; // Between -1.0 and 1.0.
+      v2 = 2 * nextDouble() - 1; // Between -1.0 and 1.0.
+      s = v1 * v1 + v2 * v2;
+    } while (s >= 1);
+    double norm = Math.sqrt(-2 * Math.log(s) / s);
+    nextNextGaussian = v2 * norm;
+    haveNextNextGaussian = true;
+    return v1 * norm;
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/SSJAVA.java b/Robust/src/ClassLibrary/SSJavaInfer/SSJAVA.java
new file mode 100644 (file)
index 0000000..0fe1de1
--- /dev/null
@@ -0,0 +1,69 @@
+import Benchmarks.SSJava.EyeTracking.LOC;
+
+public class SSJAVA {
+
+  // Definitely written analysis assumes that the first parameter may have write
+  // effects through the below methods
+
+  static void arrayinit(float array[], float value) {
+    for (int i = 0; i < array.length; i++) {
+      array[i] = value;
+    }
+  }
+
+  static void arrayinit(int array[], int value) {
+    for (int i = 0; i < array.length; i++) {
+      array[i] = value;
+    }
+  }
+
+  static void arrayinit(float array[][][], int size_1, int size_2, int size_3, float value) {
+
+    for (int idx1 = 0; idx1 < size_1; idx1++) {
+      if (array[idx1].length != size_2) {
+        throw new Error("Array initilizatiion failed to assign to all of elements.");
+      }
+      for (int idx2 = 0; idx2 < size_2; idx2++) {
+        if (array[idx1][idx2].length != size_3) {
+          throw new Error("Array initilizatiion failed to assign to all of elements.");
+        }
+        for (int idx3 = 0; idx3 < size_3; idx3++) {
+          array[idx1][idx2][idx3] = value;
+        }
+      }
+    }
+  }
+
+  static void arrayinit(float array[][], int size_1, int size_2, float value) {
+
+    for (int idx1 = 0; idx1 < size_1; idx1++) {
+      if (array[idx1].length != size_2) {
+        throw new Error("Array initilizatiion failed to assign to all of elements.");
+      }
+      for (int idx2 = 0; idx2 < size_2; idx2++) {
+        array[idx1][idx2] = value;
+      }
+    }
+  }
+
+  static void arraycopy(float array[][], float src[][], int size_1, int size_2) {
+
+    for (int idx1 = 0; idx1 < size_1; idx1++) {
+      if (array[idx1].length != size_2 || src[idx1].length != size_2) {
+        throw new Error("Array initilizatiion failed to assign to all of elements.");
+      }
+      for (int idx2 = 0; idx2 < size_2; idx2++) {
+        array[idx1][idx2] = src[idx1][idx2];
+      }
+    }
+  }
+
+  static void append(Object array[], Object item) {
+    for (int i = 1; i < array.length; i++) {
+      array[i - 1] = array[i];
+      array[i] = null;
+    }
+    array[array.length - 1] = item;
+  }
+
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/String.java b/Robust/src/ClassLibrary/SSJavaInfer/String.java
new file mode 100644 (file)
index 0000000..e2b6d7e
--- /dev/null
@@ -0,0 +1,521 @@
+import Vector;
+
+public class String {
+
+  char value[];
+
+  int count;
+
+  int offset;
+
+  private int cachedHashcode;
+
+  private String() {
+  }
+
+  public String(char c) {
+    char[] str = new char[1];
+    str[0] = c;
+    String(str);
+  }
+
+  public String(char str[]) {
+    char charstr[] = new char[str.length];
+    for (int i = 0; i < str.length; i++)
+      charstr[i] = str[i];
+    this.value = charstr;
+    this.count = str.length;
+    this.offset = 0;
+  }
+
+  public String(byte str[]) {
+    char charstr[] = new char[str.length];
+    for (int i = 0; i < str.length; i++)
+      charstr[i] = (char) str[i];
+    this.value = charstr;
+    this.count = str.length;
+    this.offset = 0;
+  }
+
+  public String(byte str[], int offset, int length) {
+    if (length > (str.length - offset))
+      length = str.length - offset;
+    char charstr[] = new char[length];
+    for (int i = 0; i < length; i++)
+      charstr[i] = (char) str[i + offset];
+    this.value = charstr;
+    this.count = length;
+    this.offset = 0;
+  }
+
+  public String(byte str[], String encoding) {
+    int length = this.count;
+    if (length > (str.length))
+      length = str.length;
+    char charstr[] = new char[length];
+    for (int i = 0; i < length; i++)
+      charstr[i] = (char) str[i];
+    this.value = charstr;
+    this.count = length;
+    this.offset = 0;
+  }
+
+  public String(char str[], int offset, int length) {
+    if (length > (str.length - offset))
+      length = str.length - offset;
+    char charstr[] = new char[length];
+    for (int i = 0; i < length; i++)
+      charstr[i] = str[i + offset];
+    this.value = charstr;
+    this.count = length;
+    this.offset = 0;
+  }
+
+  public String(String str) {
+    this.value = str.value;
+    this.count = str.count;
+    this.offset = str.offset;
+  }
+
+  public String(StringBuffer strbuf) {
+    value = new char[strbuf.length()];
+    count = strbuf.length();
+    offset = 0;
+    for (int i = 0; i < count; i++)
+      value[i] = strbuf.value[i];
+  }
+
+  public boolean endsWith(String suffix) {
+    return regionMatches(count - suffix.count, suffix, 0, suffix.count);
+  }
+
+  public String substring(int beginIndex) {
+    return substring(beginIndex, this.count);
+  }
+
+  public String subString(int beginIndex, int endIndex) {
+    return substring(beginIndex, endIndex);
+  }
+
+  public String substring(int beginIndex, int endIndex) {
+    String str = new String();
+    if (beginIndex > this.count || endIndex > this.count || beginIndex > endIndex) {
+      // FIXME
+      System.printString("Index error: " + beginIndex + " " + endIndex + " " + count + "\n" + this);
+    }
+    str.value = this.value;
+    str.count = endIndex - beginIndex;
+    str.offset = this.offset + beginIndex;
+    return str;
+  }
+
+  public String subString(int beginIndex) {
+    return this.subString(beginIndex, this.count);
+  }
+
+  public int lastindexOf(int ch) {
+    return this.lastindexOf(ch, count - 1);
+  }
+
+  public int lastIndexOf(char ch) {
+    return this.lastindexOf((int) ch, count - 1);
+  }
+
+  public static String concat2(String s1, String s2) {
+    if (s1 == null)
+      return "null".concat(s2);
+    else
+      return s1.concat(s2);
+  }
+
+  public String concat(String str) {
+    String newstr = new String();
+    newstr.count = this.count + str.count;
+    char charstr[] = new char[newstr.count];
+    newstr.offset = 0;
+    for (int i = 0; i < count; i++) {
+      charstr[i] = value[i + offset];
+    }
+    for (int i = 0; i < str.count; i++) {
+      charstr[i + count] = str.value[i + str.offset];
+    }
+    newstr.value = charstr;
+    return newstr;
+  }
+
+  public int lastindexOf(int ch, int fromIndex) {
+    for (int i = fromIndex; i > 0; i--)
+      if (this.charAt(i) == ch)
+        return i;
+    return -1;
+  }
+
+  public String replace(char oldch, char newch) {
+    char[] buffer = new char[count];
+    for (int i = 0; i < count; i++) {
+      char x = charAt(i);
+      if (x == oldch)
+        x = newch;
+      buffer[i] = x;
+    }
+    return new String(buffer);
+  }
+
+  public String toUpperCase() {
+    char[] buffer = new char[count];
+    for (int i = 0; i < count; i++) {
+      char x = charAt(i);
+      if (x >= 'a' && x <= 'z') {
+        x = (char) ((x - 'a') + 'A');
+      }
+      buffer[i] = x;
+    }
+    return new String(buffer);
+  }
+
+  public String toLowerCase() {
+    char[] buffer = new char[count];
+    for (int i = 0; i < count; i++) {
+      char x = charAt(i);
+      if (x >= 'A' && x <= 'Z') {
+        x = (char) ((x - 'A') + 'a');
+      }
+      buffer[i] = x;
+    }
+    return new String(buffer);
+  }
+
+  public int indexOf(int ch) {
+    return this.indexOf(ch, 0);
+  }
+
+  public int indexOf(int ch, int fromIndex) {
+    for (int i = fromIndex; i < count; i++)
+      if (this.charAt(i) == ch)
+        return i;
+    return -1;
+  }
+
+  public int indexOf(String str) {
+    return this.indexOf(str, 0);
+  }
+
+  public int indexOf(String str, int fromIndex) {
+    if (fromIndex < 0)
+      fromIndex = 0;
+    for (int i = fromIndex; i <= (count - str.count); i++)
+      if (regionMatches(i, str, 0, str.count))
+        return i;
+    return -1;
+  }
+
+  public int indexOfIgnoreCase(String str, int fromIndex) {
+    if (fromIndex < 0)
+      fromIndex = 0;
+  }
+
+  public int lastIndexOf(String str, int fromIndex) {
+    int k = count - str.count;
+    if (k > fromIndex)
+      k = fromIndex;
+    for (; k >= 0; k--) {
+      if (regionMatches(k, str, 0, str.count))
+        return k;
+    }
+    return -1;
+  }
+
+  public int lastIndexOf(String str) {
+    return lastIndexOf(str, count - str.count);
+  }
+
+  public boolean startsWith(String str) {
+    return regionMatches(0, str, 0, str.count);
+  }
+
+  public boolean startsWith(String str, int toffset) {
+    return regionMatches(toffset, str, 0, str.count);
+  }
+
+  public boolean regionMatches(int toffset, String other, int ooffset, int len) {
+    if (toffset < 0 || ooffset < 0 || (toffset + len) > count || (ooffset + len) > other.count)
+      return false;
+    for (int i = 0; i < len; i++)
+      if (other.value[i + other.offset + ooffset] != this.value[i + this.offset + toffset])
+        return false;
+    return true;
+  }
+
+  public char[] toCharArray() {
+    char str[] = new char[count];
+    for (int i = 0; i < count; i++)
+      str[i] = value[i + offset];
+    return str;
+  }
+
+  public byte[] getBytes() {
+    byte str[] = new byte[count];
+    for (int i = 0; i < count; i++)
+      str[i] = (byte) value[i + offset];
+    return str;
+  }
+
+  public void getChars(char dst[], int dstBegin) {
+    getChars(0, count, dst, dstBegin);
+  }
+
+  public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
+    if ((srcBegin < 0) || (srcEnd > count) || (srcBegin > srcEnd)) {
+      // FIXME
+      System.printString("Index error: " + srcBegin + " " + srcEnd + " " + count + "\n" + this);
+      System.exit(-1);
+    }
+    int len = srcEnd - srcBegin;
+    int j = dstBegin;
+    for (int i = srcBegin; i < srcEnd; i++)
+      dst[j++] = value[i + offset];
+    return;
+  }
+
+  public int length() {
+    return count;
+  }
+
+  public char charAt(int i) {
+    return value[i + offset];
+  }
+
+  public String toString() {
+    return this;
+  }
+
+  public static String valueOf(Object o) {
+    if (o == null)
+      return "null";
+    else
+      return o.toString();
+  }
+
+  public static String valueOf(boolean b) {
+    if (b)
+      return new String("true");
+    else
+      return new String("false");
+  }
+
+  public static String valueOf(char c) {
+    char ar[] = new char[1];
+    ar[0] = c;
+    return new String(ar);
+  }
+
+  public static String valueOf(int x) {
+    int length = 0;
+    int tmp;
+    if (x < 0)
+      tmp = -x;
+    else
+      tmp = x;
+    TERMINATE: do {
+      tmp = tmp / 10;
+      length = length + 1;
+    } while (tmp != 0);
+
+    char chararray[];
+    if (x < 0)
+      chararray = new char[length + 1];
+    else
+      chararray = new char[length];
+    int voffset;
+    if (x < 0) {
+      chararray[0] = '-';
+      voffset = 1;
+      x = -x;
+    } else
+      voffset = 0;
+
+    TERMINATE: do {
+      chararray[--length + voffset] = (char) (x % 10 + '0');
+      x = x / 10;
+    } while (length != 0);
+    return new String(chararray);
+  }
+
+  public static String valueOf(double val) {
+    char[] chararray = new char[20];
+    String s = new String();
+    s.offset = 0;
+    s.count = convertdoubletochar(val, chararray);
+    s.value = chararray;
+    return s;
+  }
+
+  public static native int convertdoubletochar(double val, char[] chararray);
+
+  public static String valueOf(long x) {
+    int length = 0;
+    long tmp;
+    if (x < 0)
+      tmp = -x;
+    else
+      tmp = x;
+
+    TERMINATE: do {
+      tmp = tmp / 10;
+      length = length + 1;
+    } while (tmp != 0);
+
+    char chararray[];
+    if (x < 0)
+      chararray = new char[length + 1];
+    else
+      chararray = new char[length];
+    int voffset;
+    if (x < 0) {
+      chararray[0] = '-';
+      voffset = 1;
+      x = -x;
+    } else
+      voffset = 0;
+
+    TERMINATE: do {
+      chararray[--length + voffset] = (char) (x % 10 + '0');
+      x = x / 10;
+    } while (length != 0);
+    return new String(chararray);
+  }
+
+  public int compareTo(String s) {
+    int smallerlength = count < s.count ? count : s.count;
+
+    for (int i = 0; i < smallerlength; i++) {
+      int valDiff = this.charAt(i) - s.charAt(i);
+      if (valDiff != 0) {
+        return valDiff;
+      }
+    }
+    return count - s.count;
+  }
+
+  public int hashCode() {
+    if (cachedHashcode != 0)
+      return cachedHashcode;
+    int hashcode = 0;
+    for (int i = 0; i < count; i++)
+      hashcode = hashcode * 31 + value[i + offset];
+    cachedHashcode = hashcode;
+    return hashcode;
+  }
+
+  public boolean equals(Object o) {
+    if (o.getType() != getType())
+      return false;
+    String s = (String) o;
+    if (s.count != count)
+      return false;
+    for (int i = 0; i < count; i++) {
+      if (s.value[i + s.offset] != value[i + offset])
+        return false;
+    }
+    return true;
+  }
+
+  public boolean equalsIgnoreCase(String s) {
+    if (s.count != count)
+      return false;
+    for (int i = 0; i < count; i++) {
+      char l = s.value[i + s.offset];
+      char r = value[i + offset];
+      if (l >= 'a' && l <= 'z')
+        l = (char) ((l - 'a') + 'A');
+      if (r >= 'a' && r <= 'z')
+        r = (char) ((r - 'a') + 'A');
+      if (l != r)
+        return false;
+    }
+    return true;
+  }
+
+  public Vector split() {
+    Vector splitted = new Vector();
+    int i;
+    int cnt = 0;
+
+    // skip first spaces
+    for (i = 0; i < count; i++) {
+      if (value[i + offset] != '\n' && value[i + offset] != '\t' && value[i + offset] != ' ')
+        break;
+    }
+
+    int oldi = i;
+
+    while (i < count) {
+      if (value[i + offset] == '\n' || value[i + offset] == '\t' || value[i + offset] == ' ') {
+        String t = new String();
+        t.value = value;
+        t.offset = oldi;
+        t.count = i - oldi;
+        splitted.addElement(t);
+
+        // skip extra spaces
+        while (i < count && (value[i + offset] == '\n' || value[i + offset] == '\t' || value[i + offset] == ' ')) {
+          i++;
+        }
+        oldi = i;
+      } else {
+        i++;
+      }
+    }
+
+    if (i != oldi) {
+      String t = new String();
+      t.value = value;
+      t.offset = oldi;
+      t.count = i - oldi;
+      splitted.addElement(t);
+    }
+
+    return splitted;
+  }
+
+  public boolean contains(String str) {
+    int i, j;
+    char[] strChar = str.toCharArray();
+    int cnt;
+
+    for (i = 0; i < count; i++) {
+      if (value[i] == strChar[0]) {
+        cnt = 0;
+        for (j = 0; j < str.length() && i + j < count; j++) {
+          if (value[i + j] == strChar[j])
+            cnt++;
+        }
+        if (cnt == str.length())
+          return true;
+      }
+    }
+
+    return false;
+
+  }
+
+  public String trim() {
+    int len = count;
+    int st = 0;
+    int off = offset; /* avoid getfield opcode */
+    char[] val = value; /* avoid getfield opcode */
+
+    while ((st < len) && (val[off + st] <= ' ')) {
+      st++;
+    }
+    while ((st < len) && (val[off + len - 1] <= ' ')) {
+      len--;
+    }
+    return ((st > 0) || (len < count)) ? substring(st, len) : this;
+  }
+
+  public boolean matches(String regex) {
+    System.println("String.matches() is not fully supported");
+    return this.equals(regex);
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/StringBuffer.java b/Robust/src/ClassLibrary/SSJavaInfer/StringBuffer.java
new file mode 100644 (file)
index 0000000..c683bf1
--- /dev/null
@@ -0,0 +1,149 @@
+
+public class StringBuffer {
+
+  char value[];
+
+  int count;
+
+  // private static final int DEFAULTSIZE=16;
+
+  public StringBuffer(String str) {
+    value = new char[str.count + 16]; // 16 is DEFAULTSIZE
+    count = str.count;
+    for (int i = 0; i < count; i++)
+      value[i] = str.value[i + str.offset];
+  }
+
+  public StringBuffer() {
+    value = new char[16]; // 16 is DEFAULTSIZE
+    count = 0;
+  }
+
+  public StringBuffer(int i) {
+    value = new char[i];
+    count = 0;
+  }
+
+  public int length() {
+    return count;
+  }
+
+  public int capacity() {
+    return value.length;
+  }
+
+  public char charAt(int x) {
+    return value[x];
+  }
+
+  public StringBuffer append(char c) {
+    String str = String.valueOf(c);
+    return append(str);
+  }
+
+  public StringBuffer append(String s) {
+    if ((s.count + count) > value.length) {
+      // Need to allocate
+      char newvalue[] = new char[s.count + count + 16]; // 16
+                                                        // is
+      // DEFAULTSIZE
+      for (int i = 0; i < count; i++)
+        newvalue[i] = value[i];
+      for (int i = 0; i < s.count; i++)
+        newvalue[i + count] = s.value[i + s.offset];
+      value = newvalue;
+      count += s.count;
+    } else {
+      for (int i = 0; i < s.count; i++) {
+        value[i + count] = s.value[i + s.offset];
+      }
+      count += s.count;
+    }
+    return this;
+  }
+
+  public void ensureCapacity(int i) {
+    int size = 2 * count;
+    if (i > size)
+      size = i;
+    if (i > value.length) {
+      char newvalue[] = new char[i];
+      for (int ii = 0; ii < count; ii++)
+        newvalue[ii] = value[ii];
+      value = newvalue;
+    }
+  }
+
+  public StringBuffer append(StringBuffer s) {
+    if ((s.count + count) > value.length) {
+      // Need to allocate
+      char newvalue[] = new char[s.count + count + 16]; // 16 is DEFAULTSIZE
+      for (int i = 0; i < count; i++)
+        newvalue[i] = value[i];
+      for (int i = 0; i < s.count; i++)
+        newvalue[i + count] = s.value[i];
+      value = newvalue;
+      count += s.count;
+    } else {
+      for (int i = 0; i < s.count; i++) {
+        value[i + count] = s.value[i];
+      }
+      count += s.count;
+    }
+    return this;
+  }
+
+  public int indexOf(String str) {
+    return indexOf(str, 0);
+  }
+
+  public synchronized int indexOf(String str, int fromIndex) {
+    String vstr = new String(value, 0, count);
+    return vstr.indexOf(str, fromIndex);
+  }
+
+  public String toString() {
+    return new String(this);
+  }
+
+  public synchronized StringBuffer replace(int start, int end, String str) {
+    if (start < 0) {
+      // FIXME
+      System.printString("StringIndexOutOfBoundsException: " + start + "\n");
+    }
+    if (start > count) {
+      // FIXME
+      System.printString("StringIndexOutOfBoundsException: start > length()\n");
+    }
+    if (start > end) {
+      // FIXME
+      System.printString("StringIndexOutOfBoundsException: start > end\n");
+    }
+    if (end > count)
+      end = count;
+
+    if (end > count)
+      end = count;
+    int len = str.length();
+    int newCount = count + len - (end - start);
+    if (newCount > value.length)
+      expandCapacity(newCount);
+
+    System.arraycopy(value, end, value, start + len, count - end);
+    str.getChars(value, start);
+    count = newCount;
+    return this;
+  }
+
+  void expandCapacity(int minimumCapacity) {
+    int newCapacity = (value.length + 1) * 2;
+    if (newCapacity < 0) {
+      newCapacity = 0x7fffffff /* Integer.MAX_VALUE */;
+    } else if (minimumCapacity > newCapacity) {
+      newCapacity = minimumCapacity;
+    }
+    char newValue[] = new char[newCapacity];
+    System.arraycopy(value, 0, newValue, 0, count);
+    value = newValue;
+  }
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/System.java b/Robust/src/ClassLibrary/SSJavaInfer/System.java
new file mode 100644 (file)
index 0000000..3b4f5c9
--- /dev/null
@@ -0,0 +1,91 @@
+
+public class System {
+  public static void printInt(int x) {
+    String s = String.valueOf(x);
+    printString(s);
+  }
+
+  public static native void gc();
+
+  public static native long currentTimeMillis();
+
+  public static native long microTimes();
+
+  public static native long getticks();
+
+  public static native void printString(String s);
+
+  public static void println(String s) {
+    System.printString(s + "\n");
+  }
+
+  public static void println(int o) {
+    System.printString("" + o + "\n");
+  }
+
+  public static void println(double o) {
+    System.printString("" + o + "\n");
+  }
+
+  public static void println(long o) {
+    System.printString("" + o + "\n");
+  }
+
+  public static void println() {
+    System.printString("\n");
+  }
+
+  public static void print(String s) {
+    System.printString(s);
+  }
+
+  public static void print(Object o) {
+    System.printString("" + o);
+  }
+
+  public static void print(int o) {
+    System.printString("" + o);
+  }
+
+  public static void print(double o) {
+    System.printString("" + o);
+  }
+
+  public static void print(long o) {
+    System.printString("" + o);
+  }
+
+  public static void error() {
+    System
+        .printString("Error (Use Breakpoint on ___System______error method for more information!)\n");
+  }
+
+  public static native void exit(int status);
+
+  public static native void printI(int status);
+
+  public static native void clearPrefetchCache();
+
+  public static native void rangePrefetch(Object o, short[] offsets);
+
+  public static native void deepArrayCopy(Object dst, Object src);
+
+  public static native void Assert(boolean status);
+
+  /* Only used for microbenchmark testing of SingleTM version */
+  public static native void logevent(int event);
+
+  public static native void logevent();
+
+  /* Only used for microbenchmark testing of SingleTM version */
+  public static native void initLog();
+
+  public static native void flushToFile(int threadid);
+
+  /* Only used for microbenchmark testing of SingleTM version */
+
+  public static native void arraycopy(Object src, int srcPos, Object dst, int destPos, int length);
+
+  // for disjoint reachability analysis
+  public static void genReach();
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Throwable.java b/Robust/src/ClassLibrary/SSJavaInfer/Throwable.java
new file mode 100644 (file)
index 0000000..cbf042d
--- /dev/null
@@ -0,0 +1,509 @@
+/* java.lang.Throwable -- Root class for all Exceptions and Errors
+   Copyright (C) 1998, 1999, 2002, 2004, 2005  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+//package java.lang;
+
+/*import gnu.classpath.SystemProperties;
+
+ import gnu.java.lang.CPStringBuilder;
+
+ import java.io.PrintStream;
+ import java.io.PrintWriter;
+ import java.io.Serializable;*/
+
+/**
+ * Throwable is the superclass of all exceptions that can be raised.
+ * 
+ * <p>
+ * There are two special cases: {@link Error} and {@link RuntimeException}:
+ * these two classes (and their subclasses) are considered unchecked exceptions,
+ * and are either frequent enough or catastrophic enough that you do not need to
+ * declare them in <code>throws</code> clauses. Everything else is a checked
+ * exception, and is ususally a subclass of {@link Exception}; these exceptions
+ * have to be handled or declared.
+ * 
+ * <p>
+ * Instances of this class are usually created with knowledge of the execution
+ * context, so that you can get a stack trace of the problem spot in the code.
+ * Also, since JDK 1.4, Throwables participate in "exception chaining." This
+ * means that one exception can be caused by another, and preserve the
+ * information of the original.
+ * 
+ * <p>
+ * One reason this is useful is to wrap exceptions to conform to an interface.
+ * For example, it would be bad design to require all levels of a program
+ * interface to be aware of the low-level exceptions thrown at one level of
+ * abstraction. Another example is wrapping a checked exception in an unchecked
+ * one, to communicate that failure occured while still obeying the method
+ * throws clause of a superclass.
+ * 
+ * <p>
+ * A cause is assigned in one of two ways; but can only be assigned once in the
+ * lifetime of the Throwable. There are new constructors added to several
+ * classes in the exception hierarchy that directly initialize the cause, or you
+ * can use the <code>initCause</code> method. This second method is especially
+ * useful if the superclass has not been retrofitted with new constructors:<br>
+ * 
+ * <pre>
+ * try {
+ *   lowLevelOp();
+ * } catch (LowLevelException lle) {
+ *   throw (HighLevelException) new HighLevelException().initCause(lle);
+ * }
+ * </pre>
+ * 
+ * Notice the cast in the above example; without it, your method would need a
+ * throws clase that declared Throwable, defeating the purpose of chainig your
+ * exceptions.
+ * 
+ * <p>
+ * By convention, exception classes have two constructors: one with no
+ * arguments, and one that takes a String for a detail message. Further, classes
+ * which are likely to be used in an exception chain also provide a constructor
+ * that takes a Throwable, with or without a detail message string.
+ * 
+ * <p>
+ * Another 1.4 feature is the StackTrace, a means of reflection that allows the
+ * program to inspect the context of the exception, and which is serialized, so
+ * that remote procedure calls can correctly pass exceptions.
+ * 
+ * @author Brian Jones
+ * @author John Keiser
+ * @author Mark Wielaard
+ * @author Tom Tromey
+ * @author Eric Blake (ebb9@email.byu.edu)
+ * @since 1.0
+ * @status updated to 1.4
+ */
+public class Throwable // implements Serializable
+{
+  /**
+   * Compatible with JDK 1.0+.
+   */
+  private static final long serialVersionUID = -3042686055658047285L;
+
+  /**
+   * The detail message.
+   * 
+   * @serial specific details about the exception, may be null
+   */
+  private final String detailMessage;
+
+  /**
+   * The cause of the throwable, including null for an unknown or non-chained
+   * cause. This may only be set once; so the field is set to <code>this</code>
+   * until initialized.
+   * 
+   * @serial the cause, or null if unknown, or this if not yet set
+   * @since 1.4
+   */
+  private Throwable cause = null;// this;
+
+  /**
+   * The stack trace, in a serialized form.
+   * 
+   * @serial the elements of the stack trace; this is non-null, and has no null
+   *         entries
+   * @since 1.4
+   */
+  // private StackTraceElement[] stackTrace;
+
+  /**
+   * Instantiate this Throwable with an empty message. The cause remains
+   * uninitialized. {@link #fillInStackTrace()} will be called to set up the
+   * stack trace.
+   */
+  public Throwable() {
+    // this((String) null);
+    detailMessage = null;
+  }
+
+  /**
+   * Instantiate this Throwable with the given message. The cause remains
+   * uninitialized. {@link #fillInStackTrace()} will be called to set up the
+   * stack trace.
+   * 
+   * @param message
+   *          the message to associate with the Throwable
+   */
+  public Throwable(String message) {
+    // fillInStackTrace();
+    detailMessage = message;
+  }
+
+  /**
+   * Instantiate this Throwable with the given message and cause. Note that the
+   * message is unrelated to the message of the cause.
+   * {@link #fillInStackTrace()} will be called to set up the stack trace.
+   * 
+   * @param message
+   *          the message to associate with the Throwable
+   * @param cause
+   *          the cause, may be null
+   * @since 1.4
+   */
+  public Throwable(String message, Throwable cause) {
+    // this(message);
+    detailMessage = message;
+    this.cause = cause;
+  }
+
+  /**
+   * Instantiate this Throwable with the given cause. The message is then built
+   * as <code>cause == null ? null : cause.toString()</code>.
+   * {@link #fillInStackTrace()} will be called to set up the stack trace.
+   * 
+   * @param cause
+   *          the cause, may be null
+   * @since 1.4
+   */
+  public Throwable(Throwable causem) {
+    // this(cause == null ? null : cause.toString(), cause);
+    String message = causem == null ? null : causem.toString();
+    detailMessage = message;
+    this.cause = causem;
+  }
+
+  /**
+   * Get the message associated with this Throwable.
+   * 
+   * @return the error message associated with this Throwable, may be null
+   */
+  public String getMessage() {
+    return detailMessage;
+  }
+
+  /**
+   * Get a localized version of this Throwable's error message. This method must
+   * be overridden in a subclass of Throwable to actually produce
+   * locale-specific methods. The Throwable implementation just returns
+   * getMessage().
+   * 
+   * @return a localized version of this error message
+   * @see #getMessage()
+   * @since 1.1
+   */
+  public String getLocalizedMessage() {
+    return getMessage();
+  }
+
+  /**
+   * Returns the cause of this exception, or null if the cause is not known or
+   * non-existant. This cause is initialized by the new constructors, or by
+   * calling initCause.
+   * 
+   * @return the cause of this Throwable
+   * @since 1.4
+   */
+  public Throwable getCause() {
+    return cause == this ? null : cause;
+  }
+
+  /**
+   * Initialize the cause of this Throwable. This may only be called once during
+   * the object lifetime, including implicitly by chaining constructors.
+   * 
+   * @param cause
+   *          the cause of this Throwable, may be null
+   * @return this
+   * @throws IllegalArgumentException
+   *           if cause is this (a Throwable can't be its own cause!)
+   * @throws IllegalStateException
+   *           if the cause has already been set
+   * @since 1.4
+   */
+  public Throwable initCause(Throwable cause) {
+    /*
+     * if (cause == this) throw new IllegalArgumentException(); if (this.cause
+     * != this) throw new IllegalStateException();
+     */
+    this.cause = cause;
+    return this;
+  }
+
+  /**
+   * Get a human-readable representation of this Throwable. The detail message
+   * is retrieved by getLocalizedMessage(). Then, with a null detail message,
+   * this string is simply the object's class name; otherwise the string is
+   * <code>getClass().getName() + ": " + message</code>.
+   * 
+   * @return a human-readable String represting this Throwable
+   */
+  /*
+   * public String toString() { String msg = getLocalizedMessage(); return
+   * getClass().getName() + (msg == null ? "" : ": " + msg); }
+   */
+
+  /**
+   * Print a stack trace to the standard error stream. This stream is the
+   * current contents of <code>System.err</code>. The first line of output is
+   * the result of {@link #toString()}, and the remaining lines represent the
+   * data created by {@link #fillInStackTrace()}. While the format is
+   * unspecified, this implementation uses the suggested format, demonstrated by
+   * this example:<br>
+   * 
+   * <pre>
+   * public class Junk {
+   *   public static void main(String args[]) {
+   *     try {
+   *       a();
+   *     } catch (HighLevelException e) {
+   *       e.printStackTrace();
+   *     }
+   *   }
+   * 
+   *   static void a() throws HighLevelException {
+   *     try {
+   *       b();
+   *     } catch (MidLevelException e) {
+   *       throw new HighLevelException(e);
+   *     }
+   *   }
+   * 
+   *   static void b() throws MidLevelException {
+   *     c();
+   *   }
+   * 
+   *   static void c() throws MidLevelException {
+   *     try {
+   *       d();
+   *     } catch (LowLevelException e) {
+   *       throw new MidLevelException(e);
+   *     }
+   *   }
+   * 
+   *   static void d() throws LowLevelException {
+   *     e();
+   *   }
+   * 
+   *   static void e() throws LowLevelException {
+   *     throw new LowLevelException();
+   *   }
+   * }
+   * 
+   * class HighLevelException extends Exception {
+   *   HighLevelException(Throwable cause) {
+   *     super(cause);
+   *   }
+   * }
+   * 
+   * class MidLevelException extends Exception {
+   *   MidLevelException(Throwable cause) {
+   *     super(cause);
+   *   }
+   * }
+   * 
+   * class LowLevelException extends Exception {
+   * }
+   * </pre>
+   * <p>
+   * 
+   * <pre>
+   *  HighLevelException: MidLevelException: LowLevelException
+   *          at Junk.a(Junk.java:13)
+   *          at Junk.main(Junk.java:4)
+   *  Caused by: MidLevelException: LowLevelException
+   *          at Junk.c(Junk.java:23)
+   *          at Junk.b(Junk.java:17)
+   *          at Junk.a(Junk.java:11)
+   *          ... 1 more
+   *  Caused by: LowLevelException
+   *          at Junk.e(Junk.java:30)
+   *          at Junk.d(Junk.java:27)
+   *          at Junk.c(Junk.java:21)
+   *          ... 3 more
+   * </pre>
+   */
+  public void printStackTrace() {
+    // printStackTrace(System.err);
+  }
+
+  /**
+   * Print a stack trace to the specified PrintStream. See
+   * {@link #printStackTrace()} for the sample format.
+   * 
+   * @param s
+   *          the PrintStream to write the trace to
+   */
+  /*
+   * public void printStackTrace(PrintStream s) { s.print(stackTraceString()); }
+   */
+
+  /**
+   * Prints the exception, the detailed message and the stack trace associated
+   * with this Throwable to the given <code>PrintWriter</code>. The actual
+   * output written is implemention specific. Use the result of
+   * <code>getStackTrace()</code> when more precise information is needed.
+   * 
+   * <p>
+   * This implementation first prints a line with the result of this object's
+   * <code>toString()</code> method. <br>
+   * Then for all elements given by <code>getStackTrace</code> it prints a line
+   * containing three spaces, the string "at " and the result of calling the
+   * <code>toString()</code> method on the <code>StackTraceElement</code>
+   * object. If <code>getStackTrace()</code> returns an empty array it prints a
+   * line containing three spaces and the string
+   * "&lt;&lt;No stacktrace available&gt;&gt;". <br>
+   * Then if <code>getCause()</code> doesn't return null it adds a line starting
+   * with "Caused by: " and the result of calling <code>toString()</code> on the
+   * cause. <br>
+   * Then for every cause (of a cause, etc) the stacktrace is printed the same
+   * as for the top level <code>Throwable</code> except that as soon as all the
+   * remaining stack frames of the cause are the same as the the last stack
+   * frames of the throwable that the cause is wrapped in then a line starting
+   * with three spaces and the string "... X more" is printed, where X is the
+   * number of remaining stackframes.
+   * 
+   * @param pw
+   *          the PrintWriter to write the trace to
+   * @since 1.1
+   */
+  /*
+   * public void printStackTrace (PrintWriter pw) {
+   * pw.print(stackTraceString()); }
+   */
+
+  /*
+   * We use inner class to avoid a static initializer in this basic class.
+   */
+  /*
+   * private static class StaticData { static final String nl =
+   * SystemProperties.getProperty("line.separator"); }
+   */
+
+  // Create whole stack trace in a stringbuffer so we don't have to print
+  // it line by line. This prevents printing multiple stack traces from
+  // different threads to get mixed up when written to the same PrintWriter.
+  /*
+   * private String stackTraceString() { CPStringBuilder sb = new
+   * CPStringBuilder();
+   * 
+   * // Main stacktrace StackTraceElement[] stack = getStackTrace();
+   * stackTraceStringBuffer(sb, this.toString(), stack, 0);
+   * 
+   * // The cause(s) Throwable cause = getCause(); while (cause != null) { //
+   * Cause start first line sb.append("Caused by: ");
+   * 
+   * // Cause stacktrace StackTraceElement[] parentStack = stack; stack =
+   * cause.getStackTrace(); if (parentStack == null || parentStack.length == 0)
+   * stackTraceStringBuffer(sb, cause.toString(), stack, 0); else { int equal =
+   * 0; // Count how many of the last stack frames are equal int frame =
+   * stack.length-1; int parentFrame = parentStack.length-1; while (frame > 0 &&
+   * parentFrame > 0) { if (stack[frame].equals(parentStack[parentFrame])) {
+   * equal++; frame--; parentFrame--; } else break; } stackTraceStringBuffer(sb,
+   * cause.toString(), stack, equal); } cause = cause.getCause(); }
+   * 
+   * return sb.toString(); }
+   */
+
+  // Adds to the given StringBuffer a line containing the name and
+  // all stacktrace elements minus the last equal ones.
+  /*
+   * private static void stackTraceStringBuffer(CPStringBuilder sb, String name,
+   * StackTraceElement[] stack, int equal) { String nl = StaticData.nl; //
+   * (finish) first line sb.append(name); sb.append(nl);
+   * 
+   * // The stacktrace if (stack == null || stack.length == 0) {
+   * sb.append("   <<No stacktrace available>>"); sb.append(nl); } else { for
+   * (int i = 0; i < stack.length-equal; i++) { sb.append("   at ");
+   * sb.append(stack[i] == null ? "<<Unknown>>" : stack[i].toString());
+   * sb.append(nl); } if (equal > 0) { sb.append("   ..."); sb.append(equal);
+   * sb.append(" more"); sb.append(nl); } } }
+   */
+
+  /**
+   * Fill in the stack trace with the current execution stack.
+   * 
+   * @return this same throwable
+   * @see #printStackTrace()
+   */
+  /*
+   * public Throwable fillInStackTrace() { vmState =
+   * VMThrowable.fillInStackTrace(this); stackTrace = null; // Should be
+   * regenerated when used.
+   * 
+   * return this; }
+   */
+
+  /**
+   * Provides access to the information printed in {@link #printStackTrace()}.
+   * The array is non-null, with no null entries, although the virtual machine
+   * is allowed to skip stack frames. If the array is not 0-length, then slot 0
+   * holds the information on the stack frame where the Throwable was created
+   * (or at least where <code>fillInStackTrace()</code> was called).
+   * 
+   * @return an array of stack trace information, as available from the VM
+   * @since 1.4
+   */
+  /*
+   * public StackTraceElement[] getStackTrace() { if (stackTrace == null) if
+   * (vmState == null) stackTrace = new StackTraceElement[0]; else { stackTrace
+   * = vmState.getStackTrace(this); vmState = null; // No longer needed }
+   * 
+   * return stackTrace; }
+   */
+
+  /**
+   * Change the stack trace manually. This method is designed for remote
+   * procedure calls, which intend to alter the stack trace before or after
+   * serialization according to the context of the remote call.
+   * <p>
+   * The contents of the given stacktrace is copied so changes to the original
+   * array do not change the stack trace elements of this throwable.
+   * 
+   * @param stackTrace
+   *          the new trace to use
+   * @throws NullPointerException
+   *           if stackTrace is null or has null elements
+   * @since 1.4
+   */
+  /*
+   * public void setStackTrace(StackTraceElement[] stackTrace) { int i =
+   * stackTrace.length; StackTraceElement[] st = new StackTraceElement[i];
+   * 
+   * while (--i >= 0) { st[i] = stackTrace[i]; if (st[i] == null) throw new
+   * NullPointerException("Element " + i + " null"); }
+   * 
+   * this.stackTrace = st; }
+   */
+
+  /**
+   * VM state when fillInStackTrace was called. Used by getStackTrace() to get
+   * an array of StackTraceElements. Cleared when no longer needed.
+   */
+  // private transient VMThrowable vmState;
+}
diff --git a/Robust/src/ClassLibrary/SSJavaInfer/Vector.java b/Robust/src/ClassLibrary/SSJavaInfer/Vector.java
new file mode 100644 (file)
index 0000000..ecf3579
--- /dev/null
@@ -0,0 +1,149 @@
+public class Vector {
+  Object[] array;
+  int size;
+  int capacityIncrement;
+
+  public Vector() {
+    capacityIncrement = 0;
+    size = 0;
+    array = new Object[10];
+  }
+
+  public Vector(int size) {
+    capacityIncrement = 0;
+    this.size = 0;
+    array = new Object[size];
+  }
+
+  // used for internal cloning
+  private Vector(int size, int capacityIncrement, Object[] array) {
+    this.size = size;
+    this.capacityIncrement = capacityIncrement;
+    this.array = new Object[array.length];
+    System.arraycopy(array, 0, this.array, 0, size);
+  }
+
+  public Vector clone() {
+    return new Vector(size, capacityIncrement, array);
+  }
+
+  public boolean isEmpty() {
+    return size == 0;
+  }
+
+  public void clear() {
+    size = 0;
+    array = new Object[10];
+  }
+
+  public int indexOf(Object elem) {
+    return indexOf(elem, 0);
+  }
+
+  public int indexOf(Object elem, int index) {
+    for (int i = index; i < size; i++) {
+      if (elem.equals(array[i]))
+        return i;
+    }
+    return -1;
+  }
+
+  public boolean contains(Object e) {
+    return indexOf(e) != -1;
+  }
+
+  public boolean remove(Object o) {
+    int in = indexOf(o);
+    if (in != -1) {
+      removeElementAt(in);
+      return true;
+    }
+
+    return false;
+  }
+
+  public Object elementAt(int index) {
+    if (index < 0 | index >= size) {
+      System.printString("Illegal Vector.elementAt\n");
+      System.exit(-1);
+      return null;
+    }
+    return array[index];
+  }
+
+  public void setElementAt(Object obj, int index) {
+    if (index < size)
+      array[index] = obj;
+    else {
+      System.printString("Illegal Vector.setElementAt\n");
+      System.exit(-1);
+    }
+  }
+
+  private void ensureCapacity(int minCapacity) {
+    if (minCapacity > array.length) {
+      int newsize;
+      if (capacityIncrement <= 0)
+        newsize = array.length * 2;
+      else
+        newsize = array.length + capacityIncrement;
+      if (newsize < minCapacity)
+        newsize = minCapacity;
+      Object[] newarray = new Object[newsize];
+      for (int i = 0; i < size; i++)
+        newarray[i] = array[i];
+      array = newarray;
+    }
+  }
+
+  public int size() {
+    return size;
+  }
+
+  public Enumeration elements() {
+    System.printString("Vector.elements not implemented\n");
+    System.exit(-1);
+  }
+
+  public void addElement(Object obj) {
+    if (size == array.length) {
+      ensureCapacity(size + 1);
+    }
+    array[size++] = obj;
+  }
+
+  public void insertElementAt(Object obj, int index) {
+    if (index < 0 || index > size) {
+      System.printString("Illegal Vector.insertElementAt\n");
+      System.exit(-1);
+    }
+
+    if (size == array.length) {
+      ensureCapacity(size + 1);
+    }
+    size++;
+    for (int i = size - 1; i > index; --i) {
+      array[i] = array[i - 1];
+    }
+    array[index] = obj;
+  }
+
+  public void removeElementAt(int index) {
+    if (index < 0 || index >= size) {
+      System.printString("Illegal Vector.removeElementAt\n");
+      System.exit(-1);
+    }
+    removeElement(array, index, size);
+    size--;
+    array[size] = null;
+  }
+
+  public static native void removeElement(Object[] array, int index, int size);
+
+  public void removeAllElements() {
+    int s = size;
+    for (int i = 0; i < s; ++i) {
+      removeElementAt(0);
+    }
+  }
+}