Package JFlex

Source Code of JFlex.LexScan

/* The following code was generated by JFlex 1.3.5 on 10/8/01 7:44 PM */

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* JFlex 1.3.5                                                             *
* Copyright (C) 1998-2001  Gerwin Klein <lsf@jflex.de>                    *
* All rights reserved.                                                    *
*                                                                         *
* This program is free software; you can redistribute it and/or modify    *
* it under the terms of the GNU General Public License. See the file      *
* COPYRIGHT for more information.                                         *
*                                                                         *
* This program is distributed in the hope that it will be useful,         *
* but WITHOUT ANY WARRANTY; without even the implied warranty of          *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
* GNU General Public License for more details.                            *
*                                                                         *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                 *
*                                                                         *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

package JFlex;

import java_cup.runtime.Symbol;
import java.util.Vector;
import java.io.*;
import java.util.Stack;


/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.3.5
* on 10/8/01 7:44 PM from the specification file
* <tt>file:/home/kleing/src/java/JFlex/export/JFlex/src/JFlex/LexScan.flex</tt>
*/
public final class LexScan implements sym, ErrorMessages, java_cup.runtime.Scanner {

  /** This character denotes the end of file */
  final public static int YYEOF = -1;

  /** initial size of the lookahead buffer */
  final private static int YY_BUFFERSIZE = 16384;

  /** lexical states */
  final public static int STRING_CONTENT = 16;
  final public static int REGEXPSTART = 8;
  final public static int MACROS = 6;
  final public static int STATELIST = 4;
  final public static int EATWSPNL = 24;
  final public static int CHARCLASS = 18;
  final public static int JAVA_CODE = 12;
  final public static int REGEXP = 10;
  final public static int YYINITIAL = 0;
  final public static int REPEATEXP = 22;
  final public static int COMMENT = 2;
  final public static int STATES = 14;
  final public static int COPY = 20;

  /**
   * YY_LEXSTATE[l] is the state in the DFA for the lexical state l
   * YY_LEXSTATE[l+1] is the state in the DFA for the lexical state l
   *                  at the beginning of a line
   * l is of the form l = 2*k, k a non negative integer
   */
  private final static int YY_LEXSTATE[] = {
     0011223455667788,
     99, 10, 10, 11, 11, 12, 12, 13, 13
  };

  /**
   * Translates characters to character classes
   */
  final private static String yycmap_packed =
    "\10\21\1\22\1\10\1\13\2\11\1\12\16\21\4\0\1\10\1\74"+
    "\1\26\1\0\1\102\1\31\1\0\1\27\1\76\1\77\1\24\1\100"+
    "\1\15\1\105\1\14\1\25\1\7\1\62\2\7\2\3\1\63\1\60"+
    "\1\61\1\1\1\104\1\0\1\66\1\65\1\72\1\101\1\0\4\2"+
    "\1\67\1\71\10\20\1\70\13\20\1\16\1\4\1\17\1\103\1\20"+
    "\1\0\1\47\1\53\1\51\1\56\1\42\1\43\1\57\1\36\1\33"+
    "\1\54\1\64\1\45\1\52\1\34\1\40\1\55\1\20\1\37\1\50"+
    "\1\35\1\6\1\46\1\41\1\5\1\44\1\20\1\32\1\73\1\30"+
    "\1\75\6\21\1\23\32\21\2\0\4\20\4\0\1\20\12\0\1\20"+
    "\4\0\1\20\5\0\27\20\1\0\37\20\1\0\u0128\20\2\0\22\20"+
    "\34\0\136\20\2\0\11\20\2\0\7\20\16\0\2\20\16\0\5\20"+
    "\11\0\1\20\21\0\117\21\21\0\3\21\27\0\1\20\13\0\1\20"+
    "\1\0\3\20\1\0\1\20\1\0\24\20\1\0\54\20\1\0\10\20"+
    "\2\0\32\20\14\0\202\20\1\0\4\21\5\0\71\20\2\0\2\20"+
    "\2\0\2\20\3\0\46\20\2\0\2\20\67\0\46\20\2\0\1\20"+
    "\7\0\47\20\11\0\21\21\1\0\27\21\1\0\3\21\1\0\1\21"+
    "\1\0\2\21\1\0\1\21\13\0\33\20\5\0\3\20\56\0\32\20"+
    "\5\0\13\20\13\21\12\0\12\21\6\0\1\21\143\20\1\0\1\20"+
    "\7\21\2\0\6\21\2\20\2\21\1\0\4\21\2\0\12\21\3\20"+
    "\22\0\1\21\1\20\1\21\33\20\3\0\33\21\65\0\46\20\13\21"+
    "\u0150\0\3\21\1\0\65\20\2\0\1\21\1\20\20\21\2\0\1\20"+
    "\4\21\3\0\12\20\2\21\2\0\12\21\21\0\3\21\1\0\10\20"+
    "\2\0\2\20\2\0\26\20\1\0\7\20\1\0\1\20\3\0\4\20"+
    "\2\0\1\21\1\0\7\21\2\0\2\21\2\0\3\21\11\0\1\21"+
    "\4\0\2\20\1\0\3\20\2\21\2\0\12\21\4\20\16\0\1\21"+
    "\2\0\6\20\4\0\2\20\2\0\26\20\1\0\7\20\1\0\2\20"+
    "\1\0\2\20\1\0\2\20\2\0\1\21\1\0\5\21\4\0\2\21"+
    "\2\0\3\21\13\0\4\20\1\0\1\20\7\0\14\21\3\20\14\0"+
    "\3\21\1\0\7\20\1\0\1\20\1\0\3\20\1\0\26\20\1\0"+
    "\7\20\1\0\2\20\1\0\5\20\2\0\1\21\1\20\10\21\1\0"+
    "\3\21\1\0\3\21\2\0\1\20\17\0\1\20\5\0\12\21\21\0"+
    "\3\21\1\0\10\20\2\0\2\20\2\0\26\20\1\0\7\20\1\0"+
    "\2\20\2\0\4\20\2\0\1\21\1\20\6\21\3\0\2\21\2\0"+
    "\3\21\10\0\2\21\4\0\2\20\1\0\3\20\4\0\12\21\22\0"+
    "\2\21\1\0\6\20\3\0\3\20\1\0\4\20\3\0\2\20\1\0"+
    "\1\20\1\0\2\20\3\0\2\20\3\0\3\20\3\0\10\20\1\0"+
    "\3\20\4\0\5\21\3\0\3\21\1\0\4\21\11\0\1\21\17\0"+
    "\11\21\21\0\3\21\1\0\10\20\1\0\3\20\1\0\27\20\1\0"+
    "\12\20\1\0\5\20\4\0\7\21\1\0\3\21\1\0\4\21\7\0"+
    "\2\21\11\0\2\20\4\0\12\21\22\0\2\21\1\0\10\20\1\0"+
    "\3\20\1\0\27\20\1\0\12\20\1\0\5\20\4\0\7\21\1\0"+
    "\3\21\1\0\4\21\7\0\2\21\7\0\1\20\1\0\2\20\4\0"+
    "\12\21\22\0\2\21\1\0\10\20\1\0\3\20\1\0\27\20\1\0"+
    "\20\20\4\0\6\21\2\0\3\21\1\0\4\21\11\0\1\21\10\0"+
    "\2\20\4\0\12\21\22\0\2\21\1\0\22\20\3\0\30\20\1\0"+
    "\11\20\1\0\1\20\2\0\7\20\3\0\1\21\4\0\6\21\1\0"+
    "\1\21\1\0\10\21\22\0\2\21\15\0\60\20\1\21\2\20\7\21"+
    "\4\0\10\20\10\21\1\0\12\21\47\0\2\20\1\0\1\20\2\0"+
    "\2\20\1\0\1\20\2\0\1\20\6\0\4\20\1\0\7\20\1\0"+
    "\3\20\1\0\1\20\1\0\1\20\2\0\2\20\1\0\4\20\1\21"+
    "\2\20\6\21\1\0\2\21\1\20\2\0\5\20\1\0\1\20\1\0"+
    "\6\21\2\0\12\21\2\0\2\20\42\0\1\20\27\0\2\21\6\0"+
    "\12\21\13\0\1\21\1\0\1\21\1\0\1\21\4\0\2\21\10\20"+
    "\1\0\42\20\6\0\24\21\1\0\2\21\4\20\4\0\10\21\1\0"+
    "\44\21\11\0\1\21\71\0\42\20\1\0\5\20\1\0\2\20\1\0"+
    "\7\21\3\0\4\21\6\0\12\21\6\0\6\20\4\21\106\0\46\20"+
    "\12\0\47\20\11\0\132\20\5\0\104\20\5\0\122\20\6\0\7\20"+
    "\1\0\77\20\1\0\1\20\1\0\4\20\2\0\7\20\1\0\1\20"+
    "\1\0\4\20\2\0\47\20\1\0\1\20\1\0\4\20\2\0\37\20"+
    "\1\0\1\20\1\0\4\20\2\0\7\20\1\0\1\20\1\0\4\20"+
    "\2\0\7\20\1\0\7\20\1\0\27\20\1\0\37\20\1\0\1\20"+
    "\1\0\4\20\2\0\7\20\1\0\47\20\1\0\23\20\16\0\11\21"+
    "\56\0\125\20\14\0\u026c\20\2\0\10\20\12\0\32\20\5\0\113\20"+
    "\225\0\64\20\40\21\7\0\1\20\4\0\12\21\41\0\4\21\1\0"+
    "\12\21\6\0\130\20\10\0\51\20\1\21\u0556\0\234\20\4\0\132\20"+
    "\6\0\26\20\2\0\6\20\2\0\46\20\2\0\6\20\2\0\10\20"+
    "\1\0\1\20\1\0\1\20\1\0\1\20\1\0\37\20\2\0\65\20"+
    "\1\0\7\20\1\0\1\20\3\0\3\20\1\0\7\20\3\0\4\20"+
    "\2\0\6\20\4\0\15\20\5\0\3\20\1\0\7\20\17\0\4\21"+
    "\30\0\2\11\5\21\20\0\2\20\51\0\6\21\17\0\1\20\40\0"+
    "\20\20\40\0\15\21\4\0\1\21\40\0\1\20\4\0\1\20\2\0"+
    "\12\20\1\0\1\20\3\0\5\20\6\0\1\20\1\0\1\20\1\0"+
    "\1\20\1\0\4\20\1\0\3\20\1\0\7\20\46\0\44\20\u0e81\0"+
    "\3\20\31\0\11\20\6\21\1\0\5\20\2\0\3\20\6\0\124\20"+
    "\4\0\2\21\2\0\2\20\2\0\136\20\6\0\50\20\4\0\136\20"+
    "\21\0\30\20\u0248\0\u19b6\20\112\0\u51a6\20\132\0\u048d\20\u0773\0\u2ba4\20"+
    "\u215c\0\u012e\20\322\0\7\20\14\0\5\20\5\0\1\20\1\21\12\20"+
    "\1\0\15\20\1\0\5\20\1\0\1\20\1\0\2\20\1\0\2\20"+
    "\1\0\154\20\41\0\u016b\20\22\0\100\20\2\0\66\20\50\0\14\20"+
    "\44\0\4\21\17\0\2\20\30\0\3\20\31\0\1\20\6\0\3\20"+
    "\1\0\1\20\1\0\207\20\2\0\1\21\4\0\1\20\13\0\12\21"+
    "\7\0\32\20\4\0\1\20\1\0\32\20\12\0\132\20\3\0\6\20"+
    "\2\0\6\20\2\0\6\20\2\0\3\20\3\0\2\20\3\0\2\20"+
    "\22\0\3\21\3\0\1\21";

  /**
   * Translates characters to character classes
   */
  final private static char [] yycmap = yy_unpack_cmap(yycmap_packed);

  /**
   * Translates a state to a row index in the transition table
   */
  final private static int yy_rowMap [] = {
        0,    70,   140,   210,   280,   350,   420,   490,   560,   630,
      700,   770,   840,   910,   980,   9801050112011901260,
     1330105014001470105015401610168017501820,
     1890196020302100217022402310105023801050,
     2450252025902660105027301050280010502870,
     2940301010501050105010501050105010501050,
     3080315032203290105010503360105034303500,
     3570105036401050371037102730105010503780,
     1050385039203920105039901050406010504130,
     4200427043401260105010501330105044104480,
     4550462046904760483049004970504051105180,
     5250532053905460553056005670574010505810,
     5880595023101050602060901050616062306300,
     6370105010501050105010502590287064401050,
     6510658028706650301010506720315032203290,
     6790686069307000707010507140721072807350,
     1050105010501050105010503710273074201050,
     3920749075607630770077704060105044101050,
     7840462010507910798080508120819082608330,
     8400847085408610868087508820889089609030,
     9100917092409310938094509520959096609730,
     980098709940, 10010, 10080, 10150, 10220, 10290, 10360, 10430,
     1050, 10500, 10570, 10640, 10710, 10780, 10850, 109201050, 10990,
    11060, 11130, 11200, 11270, 11340, 114101050, 11480, 115501050,
     74901050, 11620, 11690, 11760, 11830, 11900, 11970, 12040, 12110,
    12180, 12250, 12320, 12390, 12460, 12530, 12600, 12670, 12740, 12810,
    12880, 12950, 13020, 13090, 13160, 13230, 13300, 13370, 13440, 13510,
    13580, 13650, 13720, 13790, 13860, 13930, 14000, 14070, 14140, 14210,
    14280, 14350, 144201050, 14490, 14560, 14630, 14700, 14770, 14840,
    14910, 14980, 15050, 15120, 15190, 15260, 153301050, 15400, 15470,
    15540, 15610, 15680, 15750, 15820, 15890, 15960, 16030, 16100, 16170,
    16240, 16310, 16380, 16450, 16520, 16590, 16660, 167304480, 16800,
    16870, 169404480, 17010, 17080, 17150, 17220, 17290, 173604480,
    17430, 17500, 17570, 17640, 17710, 177804480, 178501050, 17920,
    17990, 18060, 18130, 10500, 18200, 18270, 18340, 18410, 18480, 18550,
    18620, 18690, 18760, 18830, 18900, 11480, 18970, 19040, 19110, 19180,
    19250, 19320, 19390, 19460, 19530, 19600, 19670, 19740, 19810, 19880,
    19950, 200204480, 20090, 20160, 20230, 20300, 2037044804480,
    20440, 20510, 20580, 20650, 20720, 20790, 20860, 20930, 21000, 21070,
    21140, 21210, 2128044801050, 21350, 21420, 21490, 21560, 21630,
    21700, 21770, 21840, 21910, 21980, 22050, 22120, 22190, 22260, 22330,
    22400, 22470, 22540, 22610, 190401050, 22680, 22750, 22820, 22890,
    22960, 23030, 23100, 23170, 23240, 23310, 23380, 23450, 23520, 23590,
    23660, 23730, 23800, 23870, 23940, 24010, 240804480, 24150, 24220,
    242904480, 24360, 24430, 24500, 2457044804480, 24640, 10290,
    24710, 24780, 24850, 24920, 24990, 25060, 25130, 25200, 25270, 25340,
    25410, 25480, 25550, 25620, 25690, 25760, 25830, 25900, 225401050,
    25970, 26040, 26110, 261804480, 2625044804480, 26320, 26390,
    264604480, 26530, 26600, 26670, 26740, 26810, 26880, 26950, 27020,
    27090, 27160, 27230, 27300, 27370, 27440, 27510, 27580, 27650, 27720,
    27790, 100801050, 27860, 27930, 28000, 28070, 28140, 28210, 28280,
    28350, 28420, 28490, 28560, 28630, 28700, 28770, 28840, 28910, 28980,
    29050, 29120, 29190, 29260, 29330, 29400, 29470, 29540, 29610, 29680,
    29750, 29820, 29890, 29960, 30030, 30100, 30170, 30240, 303104480,
    30380, 304504480, 30520, 30590, 30660, 30730, 3080044804480,
    30870, 30940, 31010, 31080, 31150, 31220, 31290, 3136010501050,
    31430, 31500, 31570, 31640, 31710, 31780, 31850, 31920, 31990, 32060,
    32130, 32200, 32270, 32340, 32410, 294701050, 32480, 32550, 32620,
    32690, 32760, 32830, 30100, 32900, 32970, 33040, 33110, 33180, 33250,
    33320, 33390, 33460, 33530, 33600, 336701050, 33740, 33810, 33880,
    33950, 34020, 34090, 34160, 34230, 34300, 34370, 34440, 34510, 34580,
    34650, 34720, 34790, 34860, 34930, 35000, 35070, 35140, 35210, 35280,
    35350, 35420, 35490, 35560, 35630, 35700, 35770, 35840, 35910, 35980,
    360504480, 36120, 36190, 36260, 36330, 36400, 36470, 365401050,
    36610, 36680, 36750, 36820, 36890, 36960, 37030, 37100, 37170, 37240,
    37310, 37380, 37450, 37520, 37590, 352101050, 37660, 37730, 37800,
    37870, 37940, 38010, 38080, 38150, 38220, 38290, 38360, 38430, 38500,
    38570, 38640, 38710, 38780, 38850, 38920, 38990, 39060, 39130, 39200,
    39270, 39340, 39410, 39480, 39550, 39620, 39690, 39760, 375901050,
    39830, 39900, 39970, 40040, 40110, 40180, 40250, 40320, 40390, 40460,
     10501050, 40530, 40600, 40670, 40740, 40810, 40880, 40950, 41020,
    41090, 398301050, 41160, 41230, 41300, 41370, 41440, 41510, 41580,
    41650, 41720, 41790, 41860, 41930, 42000, 42070, 42140, 42210, 42280,
    423501050
  };

  /**
   * The packed transition table of the DFA (part 0)
   */
  final private static String yy_packed0 =
    "\11\17\2\20\1\21\7\17\1\20\5\17\1\22\54\17"+
    "\24\23\1\24\1\25\60\23\2\26\1\27\2\26\2\27"+
    "\1\26\1\30\1\31\1\32\1\31\1\26\1\33\2\26"+
    "\1\27\2\26\1\31\7\26\25\27\4\26\1\27\2\26"+
    "\3\27\10\26\1\27\5\26\1\34\2\26\2\34\1\26"+
    "\1\35\3\36\4\26\1\34\1\26\1\35\1\36\1\26"+
    "\1\37\3\26\1\40\1\26\25\34\4\26\1\34\1\41"+
    "\1\26\3\34\10\26\1\34\5\26\1\34\2\26\2\34"+
    "\1\26\1\42\3\36\4\26\1\34\1\26\1\42\1\36"+
    "\1\26\1\37\3\26\1\43\1\26\25\34\4\26\1\34"+
    "\1\41\1\26\3\34\10\26\1\34\13\26\4\44\6\26"+
    "\2\44\1\26\1\45\2\26\1\46\35\26\1\47\17\26"+
    "\4\50\1\51\3\50\1\52\1\53\1\54\1\53\1\55"+
    "\1\50\1\56\3\50\1\52\1\53\1\57\1\60\1\61"+
    "\3\50\1\62\33\50\1\63\4\50\1\64\1\65\1\66"+
    "\1\67\1\70\1\71\1\72\1\73\1\74\2\50\25\75"+
    "\1\76\1\77\1\100\1\101\1\75\1\102\53\75\2\26"+
    "\1\34\2\26\2\34\1\26\4\103\1\26\1\104\2\26"+
    "\1\34\1\26\2\103\7\26\25\34\4\26\1\34\2\26"+
    "\3\34\1\105\7\26\1\34\3\26\4\106\1\107\4\106"+
    "\1\110\1\111\1\110\7\106\1\110\2\106\1\112\57\106"+
    "\4\50\1\51\3\50\3\113\1\114\2\50\1\115\1\116"+
    "\2\50\2\113\2\50\1\117\3\50\1\120\50\50\1\121"+
    "\1\50\1\122\11\123\2\124\1\125\7\123\1\124\5\123"+
    "\1\126\54\123\10\26\1\35\2\26\1\127\1\26\1\130"+
    "\4\26\1\35\5\26\1\131\65\26\4\132\6\26\2\132"+
    "\62\26\11\17\2\20\1\21\7\17\1\20\62\17\106\0"+
    "\11\17\2\20\1\21\7\17\1\20\5\17\1\133\54\17"+
    "\24\23\1\134\1\135\104\23\1\136\1\137\104\23\1\140"+
    "\1\141\60\23\1\0\3\27\1\0\3\27\10\0\4\27"+
    "\7\0\32\27\2\0\3\27\10\0\1\27\13\0\1\30"+
    "\4\0\1\33\103\0\1\31\102\0\1\33\76\0\3\34"+
    "\1\0\3\34\10\0\4\34\7\0\32\34\2\0\3\34"+
    "\10\0\1\34\13\0\1\35\11\0\1\35\74\0\3\36"+
    "\7\0\1\36\106\0\1\142\1\143\62\0\1\144\2\0"+
    "\1\144\1\145\11\0\1\144\11\0\1\146\1\147\1\150"+
    "\1\151\4\144\1\152\1\153\1\154\1\155\1\144\1\156"+
    "\1\157\1\160\1\144\1\161\1\144\1\162\1\163\1\144"+
    "\1\164\1\165\1\166\1\0\1\144\2\0\3\144\10\0"+
    "\1\144\13\0\1\41\11\0\1\41\73\0\1\42\11\0"+
    "\1\42\6\0\1\167\56\0\1\144\2\0\1\170\1\145"+
    "\11\0\1\144\10\0\1\171\1\146\1\147\1\150\1\151"+
    "\4\144\1\152\1\153\1\154\1\155\1\144\1\156\1\172"+
    "\1\160\1\144\1\161\1\144\1\162\1\163\1\144\1\164"+
    "\1\165\1\166\1\0\1\144\2\0\3\144\10\0\1\144"+
    "\13\0\4\44\6\0\2\44\1\0\1\173\2\0\1\46"+
    "\35\0\1\47\43\0\1\174\1\175\146\0\1\176\17\0"+
    "\3\177\1\200\1\177\1\201\1\202\1\203\3\177\1\0"+
    "\20\177\1\204\1\205\1\177\1\206\3\177\1\207\7\177"+
    "\1\210\4\177\1\200\1\177\1\203\1\200\22\177\10\0"+
    "\1\52\3\211\1\55\1\0\1\56\3\0\1\52\1\211"+
    "\1\57\1\60\1\61\3\0\1\212\40\0\1\64\1\65"+
    "\1\66\1\67\1\70\1\71\1\72\1\73\1\74\12\0"+
    "\4\211\1\55\1\0\1\56\3\0\2\211\1\57\1\60"+
    "\1\61\3\0\1\212\40\0\1\64\1\65\1\66\1\67"+
    "\1\70\1\71\1\72\1\73\1\74\12\0\3\211\1\53"+
    "\1\55\1\0\1\56\3\0\2\211\1\57\1\60\1\61"+
    "\3\0\1\212\40\0\1\64\1\65\1\66\1\67\1\70"+
    "\1\71\1\72\1\73\1\74\106\0\1\213\25\0\1\214"+
    "\1\175\61\0\1\215\1\216\1\215\1\0\2\216\1\215"+
    "\1\217\7\0\1\216\1\0\1\217\10\0\25\216\4\215"+
    "\1\216\2\0\3\216\10\0\1\216\71\0\1\220\27\0"+
    "\1\221\1\222\1\223\1\222\6\0\1\221\1\222\62\0"+
    "\25\75\1\224\1\225\1\226\1\0\1\75\1\0\77\75"+
    "\1\227\1\230\60\75\4\225\1\231\4\225\3\0\7\225"+
    "\1\0\2\225\1\75\57\225\4\232\1\233\4\232\3\0"+
    "\7\232\1\0\3\232\1\0\56\232\10\0\4\103\6\0"+
    "\2\103\72\0\4\105\6\0\2\105\62\0\4\106\1\0"+
    "\4\106\3\0\7\106\1\0\2\106\1\0\57\106\3\234"+
    "\1\235\1\234\1\236\1\237\1\240\3\234\1\0\12\234"+
    "\1\241\5\234\1\242\1\243\1\234\1\244\3\234\1\245"+
    "\7\234\1\246\4\234\1\235\1\234\1\240\1\235\22\234"+
    "\13\0\1\110\102\0\4\247\2\0\1\250\3\0\2\247"+
    "\64\0\1\251\2\0\2\251\11\0\1\251\12\0\25\251"+
    "\4\0\1\251\2\0\3\251\10\0\1\251\22\0\1\252"+
    "\66\0\11\253\2\124\1\125\7\253\1\124\73\253\2\124"+
    "\1\125\7\253\1\124\4\253\1\254\2\253\1\255\6\253"+
    "\1\256\1\253\1\257\41\253\1\0\1\260\1\0\1\260"+
    "\3\0\1\260\1\261\11\0\1\261\35\0\4\260\32\0"+
    "\4\132\6\0\2\132\62\0\13\133\1\262\72\133\24\23"+
    "\1\134\1\0\104\23\1\0\1\135\60\23\11\143\2\263"+
    "\1\264\7\143\1\263\62\143\1\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\32\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\1\144"+
    "\1\265\30\144\2\0\3\144\10\0\1\144\3\0\11\146"+
    "\2\266\1\267\7\146\1\266\62\146\1\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\1\144\1\270\15\144\1\271"+
    "\4\144\1\272\5\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\5\144\1\273"+
    "\24\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\3\144\1\274\5\144\1\275"+
    "\2\144\1\276\15\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\1\277\2\144\10\0\4\144\7\0\5\144"+
    "\1\300\24\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\1\144\1\301\1\144\10\0\4\144\7\0\1\302"+
    "\31\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\11\144\1\303\20\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\1\304\31\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\20\144"+
    "\1\305\11\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\2\144\1\306\3\144"+
    "\1\307\7\144\1\310\13\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\1\144\1\311\1\144\10\0\4\144"+
    "\7\0\3\144\1\312\1\144\1\313\4\144\1\314\1\144"+
    "\1\315\15\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\1\144\1\316\1\144\10\0\4\144\7\0\11\144"+
    "\1\317\20\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\1\144\1\320\1\144\10\0\4\144\7\0\14\144"+
    "\1\321\15\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\7\144\1\322\22\144"+
    "\2\0\3\144\10\0\1\144\56\0\1\323\105\0\1\324"+
    "\115\0\1\325\23\0\3\144\1\0\3\144\1\326\7\0"+
    "\2\144\1\327\1\144\7\0\15\144\1\330\14\144\2\0"+
    "\3\144\10\0\1\144\3\0\11\171\3\0\7\171\1\0"+
    "\62\171\1\0\3\144\1\0\3\144\1\331\7\0\2\144"+
    "\1\332\1\144\7\0\2\144\1\333\3\144\1\307\7\144"+
    "\1\310\13\144\2\0\3\144\10\0\1\144\3\0\11\175"+
    "\3\0\7\175\1\0\62\175\67\0\1\334\21\0\1\335"+
    "\3\0\1\335\50\0\1\335\1\0\2\335\23\0\3\336"+
    "\3\0\1\336\32\0\2\336\3\0\1\336\1\0\1\336"+
    "\1\0\1\336\2\0\1\336\1\0\4\336\3\0\1\336"+
    "\1\0\1\336\15\0\3\337\3\0\1\337\32\0\2\337"+
    "\3\0\1\337\1\0\1\337\1\0\1\337\2\0\1\337"+
    "\1\0\4\337\3\0\1\337\1\0\1\337\17\0\1\200"+
    "\3\0\1\200\50\0\1\200\1\0\2\200\30\0\1\340"+
    "\36\0\1\341\6\0\1\342\1\0\1\343\30\0\1\215"+
    "\1\0\1\215\3\0\1\215\50\0\4\215\23\0\3\216"+
    "\1\0\3\216\1\344\7\0\4\216\4\0\1\345\2\0"+
    "\32\216\2\0\3\216\10\0\1\216\72\0\1\346\31\0"+
    "\1\222\72\0\24\227\1\347\61\227\11\230\2\350\1\75"+
    "\7\230\1\350\62\230\11\225\3\0\7\225\1\0\62\225"+
    "\27\0\1\75\56\0\3\232\1\351\1\352\1\232\1\353"+
    "\1\354\1\232\3\0\7\232\1\0\34\232\1\351\1\232"+
    "\1\354\1\351\22\232\3\0\1\355\3\0\1\355\50\0"+
    "\1\355\1\0\2\355\23\0\3\356\3\0\1\356\32\0"+
    "\2\356\3\0\1\356\1\0\1\356\1\0\1\356\2\0"+
    "\1\356\1\0\4\356\3\0\1\356\1\0\1\356\15\0"+
    "\3\357\3\0\1\357\32\0\2\357\3\0\1\357\1\0"+
    "\1\357\1\0\1\357\2\0\1\357\1\0\4\357\3\0"+
    "\1\357\1\0\1\357\17\0\1\235\3\0\1\235\50\0"+
    "\1\235\1\0\2\235\23\0\3\251\1\0\3\251\10\0"+
    "\4\251\4\0\1\360\2\0\32\251\2\0\3\251\10\0"+
    "\1\251\3\0\11\254\2\361\1\362\7\254\1\361\62\254"+
    "\11\253\2\124\1\125\7\253\1\124\10\253\1\363\62\253"+
    "\2\124\1\125\7\253\1\124\14\253\1\364\56\253\2\124"+
    "\1\125\7\253\1\124\20\253\1\365\41\253\1\0\1\260"+
    "\1\0\1\260\3\0\1\260\50\0\4\260\23\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\1\366\31\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\1\367\1\144\1\370\13\144\1\371\13\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\22\144\1\372\7\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\1\144\1\373\30\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\2\144"+
    "\1\374\27\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\4\144\1\375\25\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\22\144\1\376\7\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\20\144\1\377\11\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\2\144"+
    "\1\u0100\27\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\10\144\1\u0101\21\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\1\144\1\u0102\10\144\1\u0103\17\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\1\144\1\u0104\30\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\7\144\1\u0105\2\144\1\u0106\17\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\1\144\1\u0107\30\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\15\144"+
    "\1\u0108\14\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\14\144\1\u0109\15\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\1\u010a\31\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\14\144\1\u010b\15\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\22\144\1\u010c"+
    "\7\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\14\144\1\u010d\15\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\12\144\1\u010e\17\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\14\144\1\u010f\15\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\15\144\1\u0110"+
    "\14\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\10\144\1\u0111\21\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\14\144\1\u0112\15\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\20\144\1\u0113\11\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\16\144\1\u0114"+
    "\13\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\20\144\1\u0115\11\144\2\0"+
    "\3\144\10\0\1\144\36\0\1\u0116\105\0\1\u0117\125\0"+
    "\1\u0118\42\0\1\326\11\0\1\326\64\0\3\144\1\0"+
    "\3\144\1\326\7\0\2\144\1\327\1\144\7\0\32\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\2\144\1\u0119\27\144\2\0\3\144"+
    "\10\0\1\144\13\0\1\331\11\0\1\331\64\0\3\144"+
    "\1\0\3\144\1\331\7\0\2\144\1\332\1\144\7\0"+
    "\32\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\14\144\1\u011a\15\144\2\0"+
    "\3\144\10\0\1\144\73\0\1\u011b\16\0\3\u011c\3\0"+
    "\1\u011c\32\0\2\u011c\3\0\1\u011c\1\0\1\u011c\1\0"+
    "\1\u011c\2\0\1\u011c\1\0\4\u011c\3\0\1\u011c\1\0"+
    "\1\u011c\15\0\3\u011d\3\0\1\u011d\32\0\2\u011d\3\0"+
    "\1\u011d\1\0\1\u011d\1\0\1\u011d\2\0\1\u011d\1\0"+
    "\4\u011d\3\0\1\u011d\1\0\1\u011d\71\0\1\u011e\70\0"+
    "\1\u011f\1\0\1\u0120\110\0\1\u0121\73\0\1\u0122\62\0"+
    "\1\344\11\0\1\344\5\0\1\345\145\0\1\u0123\15\0"+
    "\24\227\1\347\1\75\60\227\13\350\1\75\11\350\1\u0124"+
    "\1\u0125\1\u0126\1\230\1\350\1\230\53\350\3\0\1\232"+
    "\3\0\1\232\17\0\1\75\30\0\1\232\1\0\2\232"+
    "\26\0\1\u0127\1\0\1\u0128\20\0\1\75\57\0\3\u0129"+
    "\3\0\1\u0129\17\0\1\75\12\0\2\u0129\3\0\1\u0129"+
    "\1\0\1\u0129\1\0\1\u0129\2\0\1\u0129\1\0\4\u0129"+
    "\3\0\1\u0129\1\0\1\u0129\17\0\1\351\3\0\1\351"+
    "\17\0\1\75\30\0\1\351\1\0\2\351\23\0\3\u012a"+
    "\3\0\1\u012a\32\0\2\u012a\3\0\1\u012a\1\0\1\u012a"+
    "\1\0\1\u012a\2\0\1\u012a\1\0\4\u012a\3\0\1\u012a"+
    "\1\0\1\u012a\15\0\3\u012b\3\0\1\u012b\32\0\2\u012b"+
    "\3\0\1\u012b\1\0\1\u012b\1\0\1\u012b\2\0\1\u012b"+
    "\1\0\4\u012b\3\0\1\u012b\1\0\1\u012b\14\0\11\253"+
    "\2\124\1\125\7\253\1\124\7\253\1\u012c\63\253\2\124"+
    "\1\125\7\253\1\124\17\253\1\u012d\53\253\2\124\1\125"+
    "\7\253\1\124\21\253\1\u012e\40\253\1\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\16\144\1\u012f\13\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\2\144\1\u0130\27\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\6\144\1\u0131\1\u0132\22\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\12\144"+
    "\1\u0133\17\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\12\144\1\u0134\17\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\5\144\1\u0135\24\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\1\144\1\u0136\1\144"+
    "\10\0\4\144\7\0\32\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\5\144"+
    "\1\u0137\24\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\7\144\1\u0138\22\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\12\144\1\u0139\17\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\7\144\1\u013a\22\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\6\0\1\146"+
    "\2\144\1\u013b\10\144\1\u013c\2\144\1\u013d\13\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\16\144\1\u013e\13\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\12\144\1\u013f\17\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\14\144\1\u0140"+
    "\15\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\5\144\1\u0141\24\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\7\144\1\u0142\22\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\7\144\1\u0143\22\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\2\144\1\u0144"+
    "\27\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\1\144\1\u0145\30\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\2\144\1\u0146\27\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\1\144\1\u0147\30\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\15\144\1\u0148"+
    "\5\144\1\u0149\6\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\4\144\1\u014a"+
    "\25\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\1\144\1\u014b\1\144\10\0\4\144\7\0\32\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\15\144\1\u014c\14\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\7\144\1\u014d\22\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\10\144\1\u014e"+
    "\21\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\16\144\1\u014f\13\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\12\144\1\u0150\17\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\31\144\1\u0151\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\1\144\1\u0152\1\144\10\0\4\144\7\0\32\144"+
    "\2\0\3\144\10\0\1\144\40\0\1\264\105\0\1\u0153"+
    "\103\0\1\u0154\53\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\14\144\1\u0155\15\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\1\144"+
    "\1\u0145\1\u0156\27\144\2\0\3\144\10\0\1\144\74\0"+
    "\1\u0157\15\0\3\u0158\3\0\1\u0158\32\0\2\u0158\3\0"+
    "\1\u0158\1\0\1\u0158\1\0\1\u0158\2\0\1\u0158\1\0"+
    "\4\u0158\3\0\1\u0158\1\0\1\u0158\71\0\1\u0159\71\0"+
    "\1\u015a\101\0\1\u015b\112\0\1\u015c\122\0\1\u015d\117\0"+
    "\1\u015e\14\0\13\350\1\75\10\350\1\u015f\1\230\60\350"+
    "\4\u0125\1\u0160\4\u0125\2\350\1\75\7\u0125\1\350\2\u0125"+
    "\1\350\57\u0125\4\u0161\1\u0162\4\u0161\2\350\1\75\7\u0161"+
    "\1\350\3\u0161\1\230\56\u0161\4\0\1\u0127\1\0\1\u0128"+
    "\100\0\3\u0129\3\0\1\u0129\32\0\2\u0129\3\0\1\u0129"+
    "\1\0\1\u0129\1\0\1\u0129\2\0\1\u0129\1\0\4\u0129"+
    "\3\0\1\u0129\1\0\1\u0129\15\0\3\u0163\3\0\1\u0163"+
    "\32\0\2\u0163\3\0\1\u0163\1\0\1\u0163\1\0\1\u0163"+
    "\2\0\1\u0163\1\0\4\u0163\3\0\1\u0163\1\0\1\u0163"+
    "\15\0\3\u0164\3\0\1\u0164\32\0\2\u0164\3\0\1\u0164"+
    "\1\0\1\u0164\1\0\1\u0164\2\0\1\u0164\1\0\4\u0164"+
    "\3\0\1\u0164\1\0\1\u0164\14\0\11\253\2\124\1\125"+
    "\7\253\1\124\11\253\1\u0165\61\253\2\124\1\125\7\253"+
    "\1\124\4\253\1\u0166\4\253\1\u0167\10\253\1\u0168\50\253"+
    "\2\124\1\125\7\253\1\124\16\253\1\u0169\43\253\1\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\5\144\1\u016a"+
    "\24\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\6\0\1\146\2\144\1\u016b\27\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\4\144\1\u016c\25\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\24\144\1\u016d\5\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\1\144\1\u016e\1\144\10\0\4\144"+
    "\7\0\32\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\7\144\1\u016f\22\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\4\144\1\u0170\25\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\1\144\1\u0171\30\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\6\144"+
    "\1\u0172\23\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\1\u0173\7\0\2\144\1\u0174\1\144\7\0"+
    "\32\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\7\144\1\u0175\22\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\1\144\1\u0176\30\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\3\144\1\u0177\26\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\14\144\1\u0178"+
    "\15\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\12\144\1\u0179\17\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\2\144\1\u017a\27\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\12\144\1\u017b\17\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\10\144\1\u017c"+
    "\21\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\1\u017d\2\144\10\0\4\144\7\0\32\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\4\144\1\u017e\25\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\23\144"+
    "\1\u017f\6\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\16\144\1\u0180\13\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\7\144\1\u0181\22\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\11\144\1\u0182\20\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\7\144"+
    "\1\u0183\22\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\17\144\1\u0184\12\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\15\144\1\u0185\14\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\12\144\1\u0186\17\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\7\144"+
    "\1\u0187\22\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\16\144\1\u0188\13\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\1\u0189\31\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\24\144\1\u018a\5\144\2\0\3\144\10\0\1\144\40\0"+
    "\1\u018b\51\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\2\144\1\u018c\27\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\7\144\1\u018d"+
    "\22\144\2\0\3\144\10\0\1\144\75\0\1\u018e\55\0"+
    "\1\u018f\105\0\1\u0190\100\0\1\u0191\105\0\1\u0192\103\0"+
    "\1\u0193\144\0\1\u0194\13\0\11\u015f\2\u0195\1\u0196\7\u015f"+
    "\1\u0195\1\u0197\61\u015f\11\u0125\2\350\1\75\7\u0125\1\350"+
    "\62\u0125\11\230\2\350\1\75\7\230\1\350\3\230\1\350"+
    "\56\230\3\u0161\1\u0198\1\u0199\1\u0161\1\u019a\1\u019b\1\u0161"+
    "\2\350\1\75\7\u0161\1\350\34\u0161\1\u0198\1\u0161\1\u019b"+
    "\1\u0198\22\u0161\1\0\3\u019c\3\0\1\u019c\32\0\2\u019c"+
    "\3\0\1\u019c\1\0\1\u019c\1\0\1\u019c\2\0\1\u019c"+
    "\1\0\4\u019c\3\0\1\u019c\1\0\1\u019c\14\0\11\253"+
    "\2\124\1\125\7\253\1\124\4\253\1\u019d\4\253\1\u019e"+
    "\50\253\11\u0166\2\u019f\1\u01a0\7\u0166\1\u019f\62\u0166\11\253"+
    "\2\124\1\125\7\253\1\124\12\253\1\u01a1\60\253\2\124"+
    "\1\125\7\253\1\124\23\253\1\u01a2\43\253\1\u01a3\3\253"+
    "\2\124\1\125\7\253\1\124\62\253\1\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\23\144\1\u01a4\6\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\3\144\1\u01a5\26\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\14\144\1\u01a6\15\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\7\144\1\u01a7"+
    "\22\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\23\144\1\u01a8\6\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\17\144\1\u01a9\12\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\7\144\1\u01aa\22\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\1\u01ab\31\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\15\144\1\u01ac\14\144\2\0\3\144"+
    "\10\0\1\144\5\0\1\u01ad\2\0\2\u01ad\1\0\1\u0173"+
    "\7\0\1\u01ad\1\0\1\u0173\10\0\25\u01ad\4\0\1\u01ad"+
    "\2\0\3\u01ad\10\0\1\u01ad\4\0\1\144\1\u01ad\1\144"+
    "\1\0\2\u01ad\1\144\1\u0173\7\0\1\u01ad\1\144\1\u0174"+
    "\1\144\7\0\25\u01ad\4\144\1\u01ad\2\0\3\u01ad\10\0"+
    "\1\u01ad\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\23\144\1\u01ae\6\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\4\144\1\u01af"+
    "\25\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\12\144\1\u01b0\17\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\5\144\1\u01b1\24\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\1\u01b2\31\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\2\144\1\u01b3\27\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\14\144\1\u01b4\15\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\14\144\1\u01b5\15\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\3\144"+
    "\1\u01b6\26\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\4\144\1\u01b7\25\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\17\144\1\u01b8\12\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\20\144\1\u01b9\11\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\1\144"+
    "\1\u01ba\30\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\1\u01bb\7\0\2\144\1\u01bc\1\144\7\0"+
    "\32\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\7\144\1\u01bd\22\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\4\144\1\u01be\25\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\21\144\1\u01bf\10\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\16\144\1\u01c0"+
    "\13\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\7\144\1\u01c1\22\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\1\331"+
    "\7\0\2\144\1\332\1\144\7\0\15\144\1\u01c2\14\144"+
    "\2\0\3\144\10\0\1\144\75\0\1\u01c3\52\0\1\u01c4"+
    "\105\0\1\u01c5\110\0\1\u01c6\100\0\1\u01c7\105\0\1\u01c8"+
    "\142\0\1\u01c9\13\0\13\u0195\1\u0196\10\u0195\1\u01ca\1\u01cb"+
    "\1\u01cc\1\u01cd\1\u015f\1\u0195\1\u015f\53\u0195\24\u0196\1\u01ce"+
    "\1\u01cf\1\u01d0\1\u01d1\1\227\1\u0196\1\227\53\u0196\11\u015f"+
    "\2\u0195\1\u0196\7\u015f\1\u0195\1\u0197\1\350\60\u015f\3\230"+
    "\1\u0161\3\230\1\u0161\1\230\2\350\1\75\7\230\1\350"+
    "\3\230\1\350\30\230\1\u0161\1\230\2\u0161\26\230\1\u01d2"+
    "\1\230\1\u01d3\2\230\2\350\1\75\7\230\1\350\3\230"+
    "\1\350\57\230\3\u01d4\3\230\1\u01d4\1\230\2\350\1\75"+
    "\7\230\1\350\3\230\1\350\12\230\2\u01d4\3\230\1\u01d4"+
    "\1\230\1\u01d4\1\230\1\u01d4\2\230\1\u01d4\1\230\4\u01d4"+
    "\3\230\1\u01d4\1\230\1\u01d4\17\230\1\u0198\3\230\1\u0198"+
    "\1\230\2\350\1\75\7\230\1\350\3\230\1\350\30\230"+
    "\1\u0198\1\230\2\u0198\22\230\1\0\3\232\3\0\1\232"+
    "\32\0\2\232\3\0\1\232\1\0\1\232\1\0\1\232"+
    "\2\0\1\232\1\0\4\232\3\0\1\232\1\0\1\232"+
    "\14\0\11\u019d\2\u01d5\1\u01d6\7\u019d\1\u01d5\62\u019d\11\253"+
    "\2\124\1\125\7\253\1\124\12\253\1\u01d7\60\253\2\124"+
    "\1\125\7\253\1\124\13\253\1\u01d8\57\253\2\124\1\125"+
    "\7\253\1\124\21\253\1\u01d9\51\253\2\124\1\125\7\253"+
    "\1\124\11\253\1\u01da\50\253\1\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\7\144\1\u01db\22\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\4\144\1\u01dc\25\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\22\144"+
    "\1\u01dd\7\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\4\144\1\u01de\25\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\7\144\1\u01df\22\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\7\144\1\u01e0\22\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\16\144"+
    "\1\u01e1\13\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\1\u01e2\2\144\10\0\4\144\7\0\32\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\1\u01e3"+
    "\7\0\2\144\1\u01e4\1\144\7\0\32\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\u01ad\1\0\3\u01ad\1\u01e5\3\0"+
    "\1\u0173\1\0\1\u01e6\1\0\4\u01ad\7\0\32\u01ad\2\0"+
    "\3\u01ad\10\0\1\u01ad\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\15\144\1\u01e7\14\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\5\144\1\u01e8\24\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\3\144\10\0\4\144\6\0\1\146\32\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\15\144\1\u01e9\14\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\5\144\1\u01ea\24\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\3\144"+
    "\1\u01eb\26\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\16\144\1\u01ec\13\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\12\144\1\u01ed\17\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\4\144\1\u01ee\25\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\1\u01ef\7\0\2\144\1\u01f0"+
    "\1\144\7\0\32\144\2\0\3\144\10\0\1\144\4\0"+
    "\3\144\1\0\1\144\1\u01f1\1\144\10\0\4\144\7\0"+
    "\32\144\2\0\3\144\10\0\1\144\5\0\1\u01f2\2\0"+
    "\2\u01f2\1\0\1\u01bb\7\0\1\u01f2\1\0\1\u01bb\10\0"+
    "\25\u01f2\4\0\1\u01f2\2\0\3\u01f2\10\0\1\u01f2\4\0"+
    "\1\144\1\u01f2\1\144\1\0\2\u01f2\1\144\1\u01bb\7\0"+
    "\1\u01f2\1\144\1\u01bc\1\144\7\0\25\u01f2\4\144\1\u01f2"+
    "\2\0\3\u01f2\10\0\1\u01f2\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\15\144\1\u01f3\14\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\1\u01f4\7\0"+
    "\2\144\1\u01f5\1\144\7\0\32\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\1\326\7\0\2\144"+
    "\1\327\1\144\7\0\15\144\1\u01f6\14\144\2\0\3\144"+
    "\10\0\1\144\13\0\4\u01c3\6\0\2\u01c3\6\0\1\u01f7"+
    "\124\0\1\u01f8\105\0\1\u01f9\73\0\1\u01fa\110\0\1\u01fb"+
    "\147\0\1\u01fc\11\0\4\u01fd\6\0\2\u01fd\62\0\13\u0195"+
    "\1\u0196\10\u0195\1\u01ca\1\u01fe\1\u01cc\1\u01cd\1\u015f\1\u0195"+
    "\1\u015f\66\u0195\1\u0196\10\u0195\1\u01ff\1\u015f\60\u0195\4\u01cc"+
    "\1\u0200\4\u01cc\2\u0195\1\u0196\7\u01cc\1\u0195\1\u0201\1\u01cc"+
    "\1\u0195\57\u01cc\4\u0202\1\u0203\4\u0202\2\u0195\1\u0196\7\u0202"+
    "\1\u0195\1\u0204\2\u0202\1\u015f\56\u0202\24\u0196\1\u01ce\1\u0205"+
    "\1\u01d0\1\u01d1\1\227\1\u0196\1\227\77\u0196\1\u0206\1\u015f"+
    "\60\u0196\4\u01d0\1\u0207\4\u01d0\3\227\7\u01d0\1\227\1\u0208"+
    "\1\u01d0\1\u0196\57\u01d0\4\u0209\1\u020a\4\u0209\3\227\7\u0209"+
    "\1\227\1\u020b\2\u0209\1\227\56\u0209\4\230\1\u01d2\1\230"+
    "\1\u01d3\2\230\2\350\1\75\7\230\1\350\63\230\3\u01d4"+
    "\3\230\1\u01d4\1\230\2\350\1\75\7\230\1\350\16\230"+
    "\2\u01d4\3\230\1\u01d4\1\230\1\u01d4\1\230\1\u01d4\2\230"+
    "\1\u01d4\1\230\4\u01d4\3\230\1\u01d4\1\230\1\u01d4\15\230"+
    "\3\u020c\3\230\1\u020c\1\230\2\350\1\75\7\230\1\350"+
    "\16\230\2\u020c\3\230\1\u020c\1\230\1\u020c\1\230\1\u020c"+
    "\2\230\1\u020c\1\230\4\u020c\3\230\1\u020c\1\230\1\u020c"+
    "\14\230\11\253\2\124\1\125\7\253\1\124\13\253\1\u020d"+
    "\57\253\2\124\1\125\7\253\1\124\14\253\1\u020e\56\253"+
    "\2\124\1\125\7\253\1\124\4\253\1\u020f\66\253\2\124"+
    "\1\125\7\253\1\124\12\253\1\u0210\47\253\1\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\5\144\1\u0211\24\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\1\u0212\7\0\2\144\1\u0212\1\144\7\0\32\144\2\0"+
    "\3\144\10\0\1\144\4\0\3\144\1\0\3\144\10\0"+
    "\4\144\7\0\1\144\1\u0213\30\144\2\0\3\144\10\0"+
    "\1\144\4\0\3\144\1\0\3\144\10\0\4\144\7\0"+
    "\14\144\1\u0214\15\144\2\0\3\144\10\0\1\144\3\0"+
    "\2\u0215\1\u0216\2\u0215\2\u0216\1\u0215\1\u01e3\3\0\4\u0215"+
    "\1\u0216\1\u0215\1\u01e3\1\0\7\u0215\25\u0216\4\u0215\1\u0216"+
    "\2\u0215\3\u0216\10\u0215\1\u0216\4\u0215\1\u0217\1\u0216\1\u0217"+
    "\1\u0215\2\u0216\1\u0217\1\u01e3\3\0\4\u0215\1\u0216\1\u0217"+
    "\1\u01e4\1\144\7\u0215\25\u0216\4\u0217\1\u0216\2\u0215\3\u0216"+
    "\10\u0215\1\u0216\3\u0215\10\0\1\u01e5\3\0\1\u0173\1\0"+
    "\1\u01e6\3\0\1\u01e5\73\0\1\u01e6\6\0\1\u0218\2\0"+
    "\1\u01e6\64\0\3\144\1\0\3\144\1\u0219\7\0\2\144"+
    "\1\u021a\1\144\7\0\32\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\6\144"+
    "\1\u021b\23\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\7\144\1\u021c\22\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\1\144\1\u021d\30\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\4\144\1\u021e\25\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\2\144"+
    "\1\u021f\27\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\5\144\1\u0220\24\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\5\144\1\u0221\24\144\2\0\3\144"+
    "\10\0\1\144\3\0\2\u0222\1\u0223\2\u0222\2\u0223\1\u0222"+
    "\1\u01ef\3\0\4\u0222\1\u0223\1\u0222\1\u01ef\1\0\7\u0222"+
    "\25\u0223\4\u0222\1\u0223\2\u0222\3\u0223\10\u0222\1\u0223\4\u0222"+
    "\1\u0224\1\u0223\1\u0224\1\u0222\2\u0223\1\u0224\1\u01ef\3\0"+
    "\4\u0222\1\u0223\1\u0224\1\u01f0\1\144\7\u0222\25\u0223\4\u0224"+
    "\1\u0223\2\u0222\3\u0223\10\u0222\1\u0223\3\u0222\1\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\24\144\1\u0225\5\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\u01f2\1\0\3\u01f2"+
    "\10\0\4\u01f2\7\0\32\u01f2\2\0\3\u01f2\10\0\1\u01f2"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\15\144"+
    "\1\u0226\14\144\2\0\3\144\10\0\1\144\3\0\1\u0227"+
    "\1\u0228\1\u0227\1\u0228\3\u0227\1\u0228\1\u01f4\3\0\6\u0227"+
    "\1\u01f4\1\0\34\u0227\4\u0228\23\u0227\1\u0229\1\u022a\1\u0229"+
    "\1\u0227\2\u022a\1\u0229\1\u01f4\3\0\4\u0227\2\u022a\1\u01f5"+
    "\1\144\7\u0227\25\u022a\4\u0229\1\u022a\2\u0227\3\u022a\10\u0227"+
    "\1\u022a\3\u0227\47\0\1\u022b\105\0\1\u022c\142\0\1\u022d"+
    "\40\0\1\u022e\65\0\1\u022f\76\0\4\u01fd\6\0\2\u01fd"+
    "\6\0\1\u0230\53\0\13\350\1\75\10\350\1\u0195\1\u0124"+
    "\1\u0231\1\u0232\56\350\11\u015f\2\u0195\1\u0196\7\u015f\1\u0195"+
    "\1\u0197\1\u0195\60\u015f\11\u01cc\2\u0195\1\u0196\7\u01cc\1\u0195"+
    "\1\u0201\65\u01cc\1\u0200\4\u01cc\2\u0195\1\u0196\7\u01cc\1\u0195"+
    "\1\u0201\1\u0231\1\u0195\57\u01cc\11\u015f\2\u0195\1\u0196\7\u015f"+
    "\1\u0195\1\u0197\2\u015f\1\u0195\56\u015f\3\u0202\1\u0233\1\u0234"+
    "\1\u0202\1\u0235\1\u0236\1\u0202\2\u0195\1\u0196\7\u0202\1\u0195"+
    "\1\u0204\33\u0202\1\u0233\1\u0202\1\u0236\1\u0233\22\u0202\11\u015f"+
    "\2\u0195\1\u0196\7\u015f\1\u0195\1\u0197\1\350\1\u015f\1\u0195"+
    "\56\u015f\24\75\1\u0196\1\u0124\1\u0237\1\u0238\56\75\24\227"+
    "\1\347\1\u0196\60\227\11\u01d0\3\227\7\u01d0\1\227\1\u0208"+
    "\65\u01d0\1\u0207\4\u01d0\3\227\7\u01d0\1\227\1\u0208\1\u0237"+
    "\1\u0196\57\u01d0\24\227\1\347\2\227\1\u0196\56\227\3\u0209"+
    "\1\u0239\1\u023a\1\u0209\1\u023b\1\u023c\1\u0209\3\227\7\u0209"+
    "\1\227\1\u020b\33\u0209\1\u0239\1\u0209\1\u023c\1\u0239\22\u0209"+
    "\24\227\1\347\1\75\1\227\1\u0196\56\227\1\230\3\u023d"+
    "\3\230\1\u023d\1\230\2\350\1\75\7\230\1\350\16\230"+
    "\2\u023d\3\230\1\u023d\1\230\1\u023d\1\230\1\u023d\2\230"+
    "\1\u023d\1\230\4\u023d\3\230\1\u023d\1\230\1\u023d\14\230"+
    "\11\253\2\124\1\125\7\253\1\124\14\253\1\u023e\56\253"+
    "\2\124\1\125\7\253\1\124\15\253\1\u023f\44\253\11\u020f"+
    "\2\u0240\1\u0241\7\u020f\1\u0240\62\u020f\11\253\2\124\1\125"+
    "\7\253\1\124\13\253\1\u0242\46\253\1\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\6\144\1\u0243\23\144\2\0"+
    "\3\144\10\0\1\144\3\0\13\u0212\1\0\72\u0212\1\0"+
    "\3\144\1\0\3\144\10\0\4\144\7\0\2\144\1\u0244"+
    "\27\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\10\0\4\144\7\0\15\144\1\u0245\14\144\2\0"+
    "\3\144\10\0\1\144\3\0\11\u0215\3\0\7\u0215\1\0"+
    "\63\u0215\3\u0216\1\u0215\3\u0216\1\u0246\3\0\2\u01e3\2\u0215"+
    "\3\u0216\1\u0247\7\u0215\32\u0216\2\u0215\3\u0216\10\u0215\1\u0216"+
    "\4\u0215\3\u0217\1\u0215\3\u0217\1\u0215\3\0\4\u0215\3\u0217"+
    "\1\144\7\u0215\32\u0217\2\u0215\3\u0217\10\u0215\1\u0217\3\u0215"+
    "\10\0\1\u0248\5\0\1\u01e6\3\0\1\u0248\65\0\1\u0249"+
    "\2\0\2\u0249\1\0\1\u0219\7\0\1\u0249\1\0\1\u0219"+
    "\10\0\25\u0249\4\0\1\u0249\2\0\3\u0249\10\0\1\u0249"+
    "\4\0\1\144\1\u0249\1\144\1\0\2\u0249\1\144\1\u0219"+
    "\7\0\1\u0249\1\144\1\u021a\1\144\7\0\25\u0249\4\144"+
    "\1\u0249\2\0\3\u0249\10\0\1\u0249\4\0\3\144\1\0"+
    "\3\144\1\u024a\7\0\2\144\1\u024b\1\144\6\0\1\146"+
    "\32\144\2\0\3\144\10\0\1\144\4\0\3\144\1\0"+
    "\3\144\1\u024c\7\0\2\144\1\u024d\1\144\7\0\32\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\5\144\1\u024e\24\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\1\144\1\u024f\30\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\10\0\4\144\7\0\4\144"+
    "\1\u0250\25\144\2\0\3\144\10\0\1\144\3\0\11\u0222"+
    "\3\0\7\u0222\1\0\63\u0222\3\u0223\1\u0222\3\u0223\1\u0251"+
    "\3\0\1\u01ef\3\u0222\3\u0223\1\u0252\7\u0222\32\u0223\2\u0222"+
    "\3\u0223\10\u0222\1\u0223\4\u0222\3\u0224\1\u0222\3\u0224\1\u0222"+
    "\3\0\4\u0222\3\u0224\1\144\7\u0222\32\u0224\2\u0222\3\u0224"+
    "\10\u0222\1\u0224\3\u0222\11\u0227\3\0\7\u0227\1\0\63\u0227"+
    "\1\u0228\1\u0227\1\u0228\3\u0227\1\u0228\1\u0227\3\0\7\u0227"+
    "\1\0\34\u0227\4\u0228\23\u0227\1\u0229\1\u022a\1\u0229\1\u0227"+
    "\2\u022a\1\u0229\1\u0227\3\0\4\u0227\3\u022a\1\144\7\u0227"+
    "\25\u022a\4\u0229\1\u022a\2\u0227\3\u022a\10\u0227\1\u022a\4\u0227"+
    "\3\u022a\1\u0227\3\u022a\1\u0227\3\0\4\u0227\3\u022a\1\144"+
    "\7\u0227\32\u022a\2\u0227\3\u022a\10\u0227\1\u022a\3\u0227\50\0"+
    "\1\u0253\105\0\1\u0254\54\0\1\u0255\144\0\1\u0256\25\0"+
    "\1\u0257\1\0\4\u0231\1\u0258\4\u0231\2\350\1\75\7\u0231"+
    "\1\350\1\u0231\1\u0259\1\u0231\1\u025a\1\u0125\1\u0231\1\u0125"+
    "\53\u0231\4\u025b\1\u025c\4\u025b\2\350\1\75\7\u025b\1\350"+
    "\1\u025b\1\u0124\1\u025d\1\u0126\1\u0161\1\u025b\1\u0161\53\u025b"+
    "\3\u015f\1\u0202\3\u015f\1\u0202\1\u015f\2\u0195\1\u0196\7\u015f"+
    "\1\u0195\1\u0197\2\u015f\1\u0195\30\u015f\1\u0202\1\u015f\2\u0202"+
    "\26\u015f\1\u025e\1\u015f\1\u025f\2\u015f\2\u0195\1\u0196\7\u015f"+
    "\1\u0195\1\u0197\2\u015f\1\u0195\57\u015f\3\u0260\3\u015f\1\u0260"+
    "\1\u015f\2\u0195\1\u0196\7\u015f\1\u0195\1\u0197\2\u015f\1\u0195"+
    "\12\u015f\2\u0260\3\u015f\1\u0260\1\u015f\1\u0260\1\u015f\1\u0260"+
    "\2\u015f\1\u0260\1\u015f\4\u0260\3\u015f\1\u0260\1\u015f\1\u0260"+
    "\17\u015f\1\u0233\3\u015f\1\u0233\1\u015f\2\u0195\1\u0196\7\u015f"+
    "\1\u0195\1\u0197\2\u015f\1\u0195\30\u015f\1\u0233\1\u015f\2\u0233"+
    "\22\u015f\4\u0237\1\u0261\4\u0237\3\75\7\u0237\1\75\1\u0237"+
    "\1\u0262\1\u0237\1\u0263\1\225\1\u0237\1\225\53\u0237\4\u0264"+
    "\1\u0265\4\u0264\3\75\7\u0264\1\75\1\u0264\1\224\1\u0266"+
    "\1\226\1\232\1\u0264\1\232\53\u0264\3\227\1\u0209\3\227"+
    "\1\u0209\14\227\1\347\2\227\1\u0196\30\227\1\u0209\1\227"+
    "\2\u0209\26\227\1\u0267\1\227\1\u0268\15\227\1\347\2\227"+
    "\1\u0196\57\227\3\u0269\3\227\1\u0269\14\227\1\347\2\227"+
    "\1\u0196\12\227\2\u0269\3\227\1\u0269\1\227\1\u0269\1\227"+
    "\1\u0269\2\227\1\u0269\1\227\4\u0269\3\227\1\u0269\1\227"+
    "\1\u0269\17\227\1\u0239\3\227\1\u0239\14\227\1\347\2\227"+
    "\1\u0196\30\227\1\u0239\1\227\2\u0239\22\227\1\230\3\u0161"+
    "\3\230\1\u0161\1\230\2\350\1\75\7\230\1\350\16\230"+
    "\2\u0161\3\230\1\u0161\1\230\1\u0161\1\230\1\u0161\2\230"+
    "\1\u0161\1\230\4\u0161\3\230\1\u0161\1\230\1\u0161\14\230"+
    "\11\253\2\124\1\125\7\253\1\124\15\253\1\u026a\55\253"+
    "\2\124\1\125\7\253\1\124\4\253\1\u026b\66\253\2\124"+
    "\1\125\7\253\1\124\14\253\1\u026c\45\253\1\0\3\144"+
    "\1\0\3\144\1\u026d\7\0\2\144\1\u026e\1\144\6\0"+
    "\1\146\32\144\2\0\3\144\10\0\1\144\4\0\3\144"+
    "\1\0\3\144\10\0\4\144\7\0\15\144\1\u026f\14\144"+
    "\2\0\3\144\10\0\1\144\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\7\144\1\u0226\22\144\2\0\3\144"+
    "\10\0\1\144\3\0\10\u0215\1\u0246\3\0\2\u01e3\4\u0215"+
    "\1\u0246\1\0\62\u0215\1\0\3\u0247\1\0\3\u0247\1\u0270"+
    "\3\0\2\u0271\2\0\4\u0247\7\0\32\u0247\2\0\3\u0247"+
    "\10\0\1\u0247\4\0\3\u0249\1\0\3\u0249\1\u0272\3\0"+
    "\1\u0219\3\0\4\u0249\7\0\32\u0249\2\0\3\u0249\10\0"+
    "\1\u0249\3\0\2\u0273\1\u0274\2\u0273\2\u0274\1\u0273\1\u024a"+
    "\3\0\4\u0273\1\u0274\1\u0273\1\u024a\1\0\7\u0273\25\u0274"+
    "\4\u0273\1\u0274\2\u0273\3\u0274\10\u0273\1\u0274\4\u0273\1\u0275"+
    "\1\u0274\1\u0275\1\u0273\2\u0274\1\u0275\1\u024a\3\0\4\u0273"+
    "\1\u0274\1\u0275\1\u024b\1\144\7\u0273\25\u0274\4\u0275\1\u0274"+
    "\2\u0273\3\u0274\10\u0273\1\u0274\3\u0273\2\0\1\u0276\2\0"+
    "\2\u0276\1\0\1\u024c\7\0\1\u0276\1\0\1\u024c\10\0"+
    "\25\u0276\4\0\1\u0276\2\0\3\u0276\10\0\1\u0276\4\0"+
    "\1\144\1\u0276\1\144\1\0\2\u0276\1\144\1\u024c\7\0"+
    "\1\u0276\1\144\1\u024d\1\144\7\0\25\u0276\4\144\1\u0276"+
    "\2\0\3\u0276\10\0\1\u0276\4\0\3\144\1\0\3\144"+
    "\10\0\4\144\7\0\6\144\1\u0277\23\144\2\0\3\144"+
    "\10\0\1\144\4\0\3\144\1\0\3\144\10\0\4\144"+
    "\7\0\7\144\1\u0278\22\144\2\0\3\144\10\0\1\144"+
    "\4\0\3\144\1\0\3\144\1\u0279\7\0\2\144\1\u027a"+
    "\1\144\7\0\32\144\2\0\3\144\10\0\1\144\3\0"+
    "\10\u0222\1\u0251\3\0\1\u01ef\5\u0222\1\u0251\1\0\62\u0222"+
    "\1\0\3\u0252\1\0\3\u0252\1\u027b\3\0\1\u027c\3\0"+
    "\4\u0252\7\0\32\u0252\2\0\3\u0252\10\0\1\u0252\45\0"+
    "\1\u027d\105\0\1\u027e\76\0\1\u027f\71\0\1\u0280\66\0"+
    "\11\u0231\2\350\1\75\7\u0231\1\350\1\u0231\1\u0259\1\u0125"+
    "\1\u025a\1\u0125\1\u0231\1\u0125\57\u0231\1\u0258\4\u0231\2\350"+
    "\1\75\7\u0231\1\350\1\u01cc\1\u0125\1\350\57\u0231\4\u025d"+
    "\1\u0281\4\u025d\2\350\1\75\7\u025d\1\350\2\u025d\1\u025b"+
    "\1\u0125\56\u025d\13\350\1\75\11\350\1\u0124\1\u0125\1\u0232"+
    "\1\230\1\350\1\230\53\350\3\u025b\1\u0282\1\u0283\1\u025b"+
    "\1\u0284\1\u0285\1\u025b\2\350\1\75\7\u025b\1\350\1\u025b"+
    "\1\u0124\1\u025d\1\u0286\1\u0161\1\u025b\1\u0161\25\u025b\1\u0282"+
    "\1\u025b\1\u0285\1\u0282\22\u025b\4\u0125\1\u0160\4\u0125\2\350"+
    "\1\75\7\u0125\1\350\2\u0125\1\350\1\u0231\56\u0125\4\u015f"+
    "\1\u025e\1\u015f\1\u025f\2\u015f\2\u0195\1\u0196\7\u015f\1\u0195"+
    "\1\u0197\62\u015f\3\u0260\3\u015f\1\u0260\1\u015f\2\u0195\1\u0196"+
    "\7\u015f\1\u0195\1\u0197\15\u015f\2\u0260\3\u015f\1\u0260\1\u015f"+
    "\1\u0260\1\u015f\1\u0260\2\u015f\1\u0260\1\u015f\4\u0260\3\u015f"+
    "\1\u0260\1\u015f\1\u0260\15\u015f\3\u0287\3\u015f\1\u0287\1\u015f"+
    "\2\u0195\1\u0196\7\u015f\1\u0195\1\u0197\15\u015f\2\u0287\3\u015f"+
    "\1\u0287\1\u015f\1\u0287\1\u015f\1\u0287\2\u015f\1\u0287\1\u015f"+
    "\4\u0287\3\u015f\1\u0287\1\u015f\1\u0287\14\u015f\11\u0237\3\75"+
    "\7\u0237\1\75\1\u0237\1\u0262\1\225\1\u0263\1\225\1\u0237"+
    "\1\225\57\u0237\1\u0261\4\u0237\3\75\7\u0237\1\75\1\u01d0"+
    "\1\u0125\1\75\57\u0237\4\u0266\1\u0288\4\u0266\3\0\7\u0266"+
    "\1\0\2\u0266\1\u0264\1\225\56\u0266\25\75\1\224\1\225"+
    "\1\u0238\1\0\1\75\1\0\53\75\3\u0264\1\u0289\1\u028a"+
    "\1\u0264\1\u028b\1\u028c\1\u0264\3\75\7\u0264\1\75\1\u0264"+
    "\1\224\1\u0266\1\u028d\1\232\1\u0264\1\232\25\u0264\1\u0289"+
    "\1\u0264\1\u028c\1\u0289\22\u0264\4\225\1\231\4\225\3\0"+
    "\7\225\1\0\2\225\1\75\1\u0237\56\225\4\227\1\u0267"+
    "\1\227\1\u0268\15\227\1\347\62\227\3\u0269\3\227\1\u0269"+
    "\14\227\1\347\15\227\2\u0269\3\227\1\u0269\1\227\1\u0269"+
    "\1\227\1\u0269\2\227\1\u0269\1\227\4\u0269\3\227\1\u0269"+
    "\1\227\1\u0269\15\227\3\u028e\3\227\1\u028e\14\227\1\347"+
    "\15\227\2\u028e\3\227\1\u028e\1\227\1\u028e\1\227\1\u028e"+
    "\2\227\1\u028e\1\227\4\u028e\3\227\1\u028e\1\227\1\u028e"+
    "\14\227\11\253\2\124\1\125\7\253\1\124\4\253\1\u028f"+
    "\55\253\11\u026b\2\u0290\1\u0291\7\u026b\1\u0290\62\u026b\11\253"+
    "\2\124\1\125\7\253\1\124\15\253\1\u0292\44\253\2\u0293"+
    "\1\u0294\2\u0293\2\u0294\1\u0293\1\u026d\3\0\4\u0293\1\u0294"+
    "\1\u0293\1\u026d\1\0\7\u0293\25\u0294\4\u0293\1\u0294\2\u0293"+
    "\3\u0294\10\u0293\1\u0294\4\u0293\1\u0295\1\u0294\1\u0295\1\u0293"+
    "\2\u0294\1\u0295\1\u026d\3\0\4\u0293\1\u0294\1\u0295\1\u026e"+
    "\1\144\7\u0293\25\u0294\4\u0295\1\u0294\2\u0293\3\u0294\10\u0293"+
    "\1\u0294\3\u0293\1\0\3\144\1\0\3\144\1\u0296\7\0"+
    "\2\144\1\u0296\1\144\7\0\32\144\2\0\3\144\10\0"+
    "\1\144\13\0\1\u0270\3\0\2\u0271\4\0\1\u0270\65\0"+
    "\1\u0247\2\0\2\u0247\1\0\1\u0271\7\0\1\u0247\1\0"+
    "\1\u0271\10\0\25\u0247\4\0\1\u0247\2\0\3\u0247\10\0"+
    "\1\u0247\13\0\1\u0272\3\0\1\u0219\5\0\1\u0272\63\0"+
    "\11\u0273\3\0\7\u0273\1\0\63\u0273\3\u0274\1\u0273\3\u0274"+
    "\1\u0297\3\0\2\u024a\2\u0273\3\u0274\1\u0298\7\u0273\32\u0274"+
    "\2\u0273\3\u0274\10\u0273\1\u0274\4\u0273\3\u0275\1\u0273\3\u0275"+
    "\1\u0273\3\0\4\u0273\3\u0275\1\144\7\u0273\32\u0275\2\u0273"+
    "\3\u0275\10\u0273\1\u0275\3\u0273\1\0\3\u0276\1\0\3\u0276"+
    "\10\0\4\u0276\7\0\32\u0276\2\0\3\u0276\10\0\1\u0276"+
    "\4\0\3\144\1\0\3\144\1\u0299\7\0\2\144\1\u029a"+
    "\1\144\6\0\1\146\32\144\2\0\3\144\10\0\1\144"+
    "\3\0\2\u029b\1\u029c\2\u029b\2\u029c\1\u029b\1\u0279\3\0"+
    "\4\u029b\1\u029c\1\u029b\1\u0279\1\0\7\u029b\25\u029c\4\u029b"+
    "\1\u029c\2\u029b\3\u029c\10\u029b\1\u029c\4\u029b\1\u029d\1\u029c"+
    "\1\u029d\1\u029b\2\u029c\1\u029d\1\u0279\3\0\4\u029b\1\u029c"+
    "\1\u029d\1\u027a\1\144\7\u029b\25\u029c\4\u029d\1\u029c\2\u029b"+
    "\3\u029c\10\u029b\1\u029c\3\u029b\10\0\1\u027b\3\0\1\u027c"+
    "\5\0\1\u027b\65\0\1\u0252\2\0\2\u0252\1\0\1\u027c"+
    "\7\0\1\u0252\1\0\1\u027c\10\0\25\u0252\4\0\1\u0252"+
    "\2\0\3\u0252\10\0\1\u0252\107\0\1\u029e\105\0\1\u029f"+
    "\60\0\1\u02a0\26\0\3\u025d\1\u02a1\1\u02a2\1\u025d\1\u02a3"+
    "\1\u02a4\1\u025d\2\350\1\75\7\u025d\1\350\34\u025d\1\u02a1"+
    "\1\u025d\1\u02a4\1\u02a1\22\u025d\3\350\1\u025b\3\350\1\u025b"+
    "\3\350\1\75\11\350\1\u0124\1\u0125\1\u0232\1\230\1\350"+
    "\1\230\25\350\1\u025b\1\350\2\u025b\26\350\1\u02a5\1\350"+
    "\1\u02a6\4\350\1\75\11\350\1\u0124\1\u0125\1\u0232\1\230"+
    "\1\350\1\230\54\350\3\u02a7\3\350\1\u02a7\3\350\1\75"+
    "\11\350\1\u0124\1\u0125\1\u0232\1\230\1\350\1\230\7\350"+
    "\2\u02a7\3\350\1\u02a7\1\350\1\u02a7\1\350\1\u02a7\2\350"+
    "\1\u02a7\1\350\4\u02a7\3\350\1\u02a7\1\350\1\u02a7\17\350"+
    "\1\u0282\3\350\1\u0282\3\350\1\75\11\350\1\u0124\1\u0125"+
    "\1\u0232\1\230\1\350\1\230\25\350\1\u0282\1\350\2\u0282"+
    "\22\350\4\u0161\1\u0162\4\u0161\2\350\1\75\7\u0161\1\350"+
    "\3\u0161\1\350\56\u0161\1\u015f\3\u02a8\3\u015f\1\u02a8\1\u015f"+
    "\2\u0195\1\u0196\7\u015f\1\u0195\1\u0197\15\u015f\2\u02a8\3\u015f"+
    "\1\u02a8\1\u015f\1\u02a8\1\u015f\1\u02a8\2\u015f\1\u02a8\1\u015f"+
    "\4\u02a8\3\u015f\1\u02a8\1\u015f\1\u02a8\14\u015f\3\u0266\1\u02a9"+
    "\1\u02aa\1\u0266\1\u02ab\1\u02ac\1\u0266\3\0\7\u0266\1\0"+
    "\34\u0266\1\u02a9\1\u0266\1\u02ac\1\u02a9\22\u0266\3\75\1\u0264"+
    "\3\75\1\u0264\15\75\1\224\1\225\1\u0238\1\0\1\75"+
    "\1\0\25\75\1\u0264\1\75\2\u0264\26\75\1\u02ad\1\75"+
    "\1\u02ae\16\75\1\224\1\225\1\u0238\1\0\1\75\1\0"+
    "\54\75\3\u02af\3\75\1\u02af\15\75\1\224\1\225\1\u0238"+
    "\1\0\1\75\1\0\7\75\2\u02af\3\75\1\u02af\1\75"+
    "\1\u02af\1\75\1\u02af\2\75\1\u02af\1\75\4\u02af\3\75"+
    "\1\u02af\1\75\1\u02af\17\75\1\u0289\3\75\1\u0289\15\75"+
    "\1\224\1\225\1\u0238\1\0\1\75\1\0\25\75\1\u0289"+
    "\1\75\2\u0289\22\75\4\232\1\233\4\232\3\0\7\232"+
    "\1\0\3\232\1\75\56\232\1\227\3\u02b0\3\227\1\u02b0"+
    "\14\227\1\347\15\227\2\u02b0\3\227\1\u02b0\1\227\1\u02b0"+
    "\1\227\1\u02b0\2\227\1\u02b0\1\227\4\u02b0\3\227\1\u02b0"+
    "\1\227\1\u02b0\14\227\11\u028f\2\u02b1\1\u02b2\7\u028f\1\u02b1"+
    "\62\u028f\11\253\2\124\1\125\7\253\1\124\4\253\1\u02b3"+
    "\55\253\11\u0293\3\0\7\u0293\1\0\63\u0293\3\u0294\1\u0293"+
    "\3\u0294\1\u02b4\3\0\2\u026d\2\u0293\3\u0294\1\u02b5\7\u0293"+
    "\32\u0294\2\u0293\3\u0294\10\u0293\1\u0294\4\u0293\3\u0295\1\u0293"+
    "\3\u0295\1\u0293\3\0\4\u0293\3\u0295\1\144\7\u0293\32\u0295"+
    "\2\u0293\3\u0295\10\u0293\1\u0295\3\u0293\13\u0296\1\0\72\u0296"+
    "\10\u0273\1\u0297\3\0\2\u024a\4\u0273\1\u0297\1\0\62\u0273"+
    "\1\0\3\u0298\1\0\3\u0298\1\u02b6\3\0\2\u02b7\2\0"+
    "\4\u0298\7\0\32\u0298\2\0\3\u0298\10\0\1\u0298\3\0"+
    "\2\u02b8\1\u02b9\2\u02b8\2\u02b9\1\u02b8\1\u0299\3\0\4\u02b8"+
    "\1\u02b9\1\u02b8\1\u0299\1\0\7\u02b8\25\u02b9\4\u02b8\1\u02b9"+
    "\2\u02b8\3\u02b9\10\u02b8\1\u02b9\4\u02b8\1\u02ba\1\u02b9\1\u02ba"+
    "\1\u02b8\2\u02b9\1\u02ba\1\u0299\3\0\4\u02b8\1\u02b9\1\u02ba"+
    "\1\u029a\1\144\7\u02b8\25\u02b9\4\u02ba\1\u02b9\2\u02b8\3\u02b9"+
    "\10\u02b8\1\u02b9\3\u02b8\11\u029b\3\0\7\u029b\1\0\63\u029b"+
    "\3\u029c\1\u029b\3\u029c\1\u02bb\3\0\1\u0279\3\u029b\3\u029c"+
    "\1\u02bc\7\u029b\32\u029c\2\u029b\3\u029c\10\u029b\1\u029c\4\u029b"+
    "\3\u029d\1\u029b\3\u029d\1\u029b\3\0\4\u029b\3\u029d\1\144"+
    "\7\u029b\32\u029d\2\u029b\3\u029d\10\u029b\1\u029d\3\u029b\17\0"+
    "\1\u02bd\105\0\1\u02be\121\0\1\u02bf\52\0\3\u0125\1\u025d"+
    "\1\u0160\2\u0125\1\u025d\1\u0125\2\350\1\75\7\u0125\1\350"+
    "\2\u0125\1\350\1\u0231\30\u0125\1\u025d\1\u0125\2\u025d\26\u0125"+
    "\1\u02c0\1\u0125\1\u02c1\2\u0125\2\350\1\75\7\u0125\1\350"+
    "\2\u0125\1\350\1\u0231\57\u0125\3\u02c2\1\u0160\2\u0125\1\u02c2"+
    "\1\u0125\2\350\1\75\7\u0125\1\350\2\u0125\1\350\1\u0231"+
    "\12\u0125\2\u02c2\3\u0125\1\u02c2\1\u0125\1\u02c2\1\u0125\1\u02c2"+
    "\2\u0125\1\u02c2\1\u0125\4\u02c2\3\u0125\1\u02c2\1\u0125\1\u02c2"+
    "\17\u0125\1\u02a1\1\u0160\2\u0125\1\u02a1\1\u0125\2\350\1\75"+
    "\7\u0125\1\350\2\u0125\1\350\1\u0231\30\u0125\1\u02a1\1\u0125"+
    "\2\u02a1\22\u0125\4\350\1\u02a5\1\350\1\u02a6\4\350\1\75"+
    "\11\350\1\u0124\1\u0125\1\u0126\1\230\1\350\1\230\54\350"+
    "\3\u02a7\3\350\1\u02a7\3\350\1\75\11\350\1\u0124\1\u0125"+
    "\1\u0126\1\230\1\350\1\230\7\350\2\u02a7\3\350\1\u02a7"+
    "\1\350\1\u02a7\1\350\1\u02a7\2\350\1\u02a7\1\350\4\u02a7"+
    "\3\350\1\u02a7\1\350\1\u02a7\15\350\3\u02c3\3\350\1\u02c3"+
    "\3\350\1\75\11\350\1\u0124\1\u0125\1\u0126\1\230\1\350"+
    "\1\230\7\350\2\u02c3\3\350\1\u02c3\1\350\1\u02c3\1\350"+
    "\1\u02c3\2\350\1\u02c3\1\350\4\u02c3\3\350\1\u02c3\1\350"+
    "\1\u02c3\14\350\1\u015f\3\u0202\3\u015f\1\u0202\1\u015f\2\u0195"+
    "\1\u0196\7\u015f\1\u0195\1\u0197\15\u015f\2\u0202\3\u015f\1\u0202"+
    "\1\u015f\1\u0202\1\u015f\1\u0202\2\u015f\1\u0202\1\u015f\4\u0202"+
    "\3\u015f\1\u0202\1\u015f\1\u0202\14\u015f\3\225\1\u0266\1\231"+
    "\2\225\1\u0266\1\225\3\0\7\225\1\0\2\225\1\75"+
    "\1\u0237\30\225\1\u0266\1\225\2\u0266\26\225\1\u02c4\1\225"+
    "\1\u02c5\2\225\3\0\7\225\1\0\2\225\1\75\1\u0237"+
    "\57\225\3\u02c6\1\231\2\225\1\u02c6\1\225\3\0\7\225"+
    "\1\0\2\225\1\75\1\u0237\12\225\2\u02c6\3\225\1\u02c6"+
    "\1\225\1\u02c6\1\225\1\u02c6\2\225\1\u02c6\1\225\4\u02c6"+
    "\3\225\1\u02c6\1\225\1\u02c6\17\225\1\u02a9\1\231\2\225"+
    "\1\u02a9\1\225\3\0\7\225\1\0\2\225\1\75\1\u0237"+
    "\30\225\1\u02a9\1\225\2\u02a9\22\225\4\75\1\u02ad\1\75"+
    "\1\u02ae\16\75\1\224\1\225\1\226\1\0\1\75\1\0"+
    "\54\75\3\u02af\3\75\1\u02af\15\75\1\224\1\225\1\226"+
    "\1\0\1\75\1\0\7\75\2\u02af\3\75\1\u02af\1\75"+
    "\1\u02af\1\75\1\u02af\2\75\1\u02af\1\75\4\u02af\3\75"+
    "\1\u02af\1\75\1\u02af\15\75\3\u02c7\3\75\1\u02c7\15\75"+
    "\1\224\1\225\1\226\1\0\1\75\1\0\7\75\2\u02c7"+
    "\3\75\1\u02c7\1\75\1\u02c7\1\75\1\u02c7\2\75\1\u02c7"+
    "\1\75\4\u02c7\3\75\1\u02c7\1\75\1\u02c7\14\75\1\227"+
    "\3\u0209\3\227\1\u0209\14\227\1\347\15\227\2\u0209\3\227"+
    "\1\u0209\1\227\1\u0209\1\227\1\u0209\2\227\1\u0209\1\227"+
    "\4\u0209\3\227\1\u0209\1\227\1\u0209\14\227\11\u02b3\2\u02c8"+
    "\1\u02c9\7\u02b3\1\u02c8\62\u02b3\10\u0293\1\u02b4\3\0\2\u026d"+
    "\4\u0293\1\u02b4\1\0\62\u0293\1\0\3\u02b5\1\0\3\u02b5"+
    "\1\u02ca\3\0\2\u02cb\2\0\4\u02b5\7\0\32\u02b5\2\0"+
    "\3\u02b5\10\0\1\u02b5\13\0\1\u02b6\3\0\2\u02b7\4\0"+
    "\1\u02b6\65\0\1\u0298\2\0\2\u0298\1\0\1\u02b7\7\0"+
    "\1\u0298\1\0\1\u02b7\10\0\25\u0298\4\0\1\u0298\2\0"+
    "\3\u0298\10\0\1\u0298\3\0\11\u02b8\3\0\7\u02b8\1\0"+
    "\63\u02b8\3\u02b9\1\u02b8\3\u02b9\1\u02cc\3\0\2\u0299\2\u02b8"+
    "\3\u02b9\1\u02cd\7\u02b8\32\u02b9\2\u02b8\3\u02b9\10\u02b8\1\u02b9"+
    "\4\u02b8\3\u02ba\1\u02b8\3\u02ba\1\u02b8\3\0\4\u02b8\3\u02ba"+
    "\1\144\7\u02b8\32\u02ba\2\u02b8\3\u02ba\10\u02b8\1\u02ba\3\u02b8"+
    "\10\u029b\1\u02bb\3\0\1\u0279\5\u029b\1\u02bb\1\0\62\u029b"+
    "\1\0\3\u02bc\1\0\3\u02bc\1\u02ce\3\0\1\u02cf\3\0"+
    "\4\u02bc\7\0\32\u02bc\2\0\3\u02bc\10\0\1\u02bc\40\0"+
    "\1\u02d0\50\0\4\u0125\1\u02d1\1\u0125\1\u02c1\2\u0125\2\350"+
    "\1\75\7\u0125\1\350\63\u0125\3\u02c2\1\u0160\2\u0125\1\u02c2"+
    "\1\u0125\2\350\1\75\7\u0125\1\350\2\u0125\1\350\13\u0125"+
    "\2\u02c2\3\u0125\1\u02c2\1\u0125\1\u02c2\1\u0125\1\u02c2\2\u0125"+
    "\1\u02c2\1\u0125\4\u02c2\3\u0125\1\u02c2\1\u0125\1\u02c2\15\u0125"+
    "\3\u02d2\1\u0160\2\u0125\1\u02d2\1\u0125\2\350\1\75\7\u0125"+
    "\1\350\2\u0125\1\350\13\u0125\2\u02d2\3\u0125\1\u02d2\1\u0125"+
    "\1\u02d2\1\u0125\1\u02d2\2\u0125\1\u02d2\1\u0125\4\u02d2\3\u0125"+
    "\1\u02d2\1\u0125\1\u02d2\14\u0125\1\350\3\u02d3\3\350\1\u02d3"+
    "\3\350\1\75\11\350\1\u0124\1\u0125\1\u0126\1\230\1\350"+
    "\1\230\7\350\2\u02d3\3\350\1\u02d3\1\350\1\u02d3\1\350"+
    "\1\u02d3\2\350\1\u02d3\1\350\4\u02d3\3\350\1\u02d3\1\350"+
    "\1\u02d3\14\350\4\225\1\u02d4\1\225\1\u02c5\2\225\3\0"+
    "\7\225\1\0\63\225\3\u02c6\1\231\2\225\1\u02c6\1\225"+
    "\3\0\7\225\1\0\2\225\1\75\13\225\2\u02c6\3\225"+
    "\1\u02c6\1\225\1\u02c6\1\225\1\u02c6\2\225\1\u02c6\1\225"+
    "\4\u02c6\3\225\1\u02c6\1\225\1\u02c6\15\225\3\u02d5\1\231"+
    "\2\225\1\u02d5\1\225\3\0\7\225\1\0\2\225\1\75"+
    "\13\225\2\u02d5\3\225\1\u02d5\1\225\1\u02d5\1\225\1\u02d5"+
    "\2\225\1\u02d5\1\225\4\u02d5\3\225\1\u02d5\1\225\1\u02d5"+
    "\14\225\1\75\3\u02d6\3\75\1\u02d6\15\75\1\224\1\225"+
    "\1\226\1\0\1\75\1\0\7\75\2\u02d6\3\75\1\u02d6"+
    "\1\75\1\u02d6\1\75\1\u02d6\2\75\1\u02d6\1\75\4\u02d6"+
    "\3\75\1\u02d6\1\75\1\u02d6\14\75\10\0\1\u02ca\3\0"+
    "\2\u02cb\4\0\1\u02ca\65\0\1\u02b5\2\0\2\u02b5\1\0"+
    "\1\u02cb\7\0\1\u02b5\1\0\1\u02cb\10\0\25\u02b5\4\0"+
    "\1\u02b5\2\0\3\u02b5\10\0\1\u02b5\3\0\10\u02b8\1\u02cc"+
    "\3\0\2\u0299\4\u02b8\1\u02cc\1\0\62\u02b8\1\0\3\u02cd"+
    "\1\0\3\u02cd\1\u02d7\3\0\2\u02d8\2\0\4\u02cd\7\0"+
    "\32\u02cd\2\0\3\u02cd\10\0\1\u02cd\13\0\1\u02ce\3\0"+
    "\1\u02cf\5\0\1\u02ce\65\0\1\u02bc\2\0\2\u02bc\1\0"+
    "\1\u02cf\7\0\1\u02bc\1\0\1\u02cf\10\0\25\u02bc\4\0"+
    "\1\u02bc\2\0\3\u02bc\10\0\1\u02bc\107\0\1\u02d9\1\0"+
    "\4\u0125\1\u02c0\1\u0125\1\u02c1\2\u0125\2\350\1\75\7\u0125"+
    "\1\350\2\u0125\1\350\60\u0125\3\u02da\1\u0160\2\u0125\1\u02da"+
    "\1\u0125\2\350\1\75\7\u0125\1\350\2\u0125\1\350\13\u0125"+
    "\2\u02da\3\u0125\1\u02da\1\u0125\1\u02da\1\u0125\1\u02da\2\u0125"+
    "\1\u02da\1\u0125\4\u02da\3\u0125\1\u02da\1\u0125\1\u02da\14\u0125"+
    "\1\350\3\u025b\3\350\1\u025b\3\350\1\75\11\350\1\u0124"+
    "\1\u0125\1\u0126\1\230\1\350\1\230\7\350\2\u025b\3\350"+
    "\1\u025b\1\350\1\u025b\1\350\1\u025b\2\350\1\u025b\1\350"+
    "\4\u025b\3\350\1\u025b\1\350\1\u025b\14\350\4\225\1\u02c4"+
    "\1\225\1\u02c5\2\225\3\0\7\225\1\0\2\225\1\75"+
    "\60\225\3\u02db\1\231\2\225\1\u02db\1\225\3\0\7\225"+
    "\1\0\2\225\1\75\13\225\2\u02db\3\225\1\u02db\1\225"+
    "\1\u02db\1\225\1\u02db\2\225\1\u02db\1\225\4\u02db\3\225"+
    "\1\u02db\1\225\1\u02db\14\225\1\75\3\u0264\3\75\1\u0264"+
    "\15\75\1\224\1\225\1\226\1\0\1\75\1\0\7\75"+
    "\2\u0264\3\75\1\u0264\1\75\1\u0264\1\75\1\u0264\2\75"+
    "\1\u0264\1\75\4\u0264\3\75\1\u0264\1\75\1\u0264\14\75"+
    "\10\0\1\u02d7\3\0\2\u02d8\4\0\1\u02d7\65\0\1\u02cd"+
    "\2\0\2\u02cd\1\0\1\u02d8\7\0\1\u02cd\1\0\1\u02d8"+
    "\10\0\25\u02cd\4\0\1\u02cd\2\0\3\u02cd\10\0\1\u02cd"+
    "\22\0\1\u02dc\66\0\1\u0125\3\u025d\1\u0160\2\u0125\1\u025d"+
    "\1\u0125\2\350\1\75\7\u0125\1\350\2\u0125\1\350\13\u0125"+
    "\2\u025d\3\u0125\1\u025d\1\u0125\1\u025d\1\u0125\1\u025d\2\u0125"+
    "\1\u025d\1\u0125\4\u025d\3\u0125\1\u025d\1\u0125\1\u025d\14\u0125"+
    "\1\225\3\u0266\1\231\2\225\1\u0266\1\225\3\0\7\225"+
    "\1\0\2\225\1\75\13\225\2\u0266\3\225\1\u0266\1\225"+
    "\1\u0266\1\225\1\u0266\2\225\1\u0266\1\225\4\u0266\3\225"+
    "\1\u0266\1\225\1\u0266\14\225";

  /**
   * The transition table of the DFA
   */
  final private static int yytrans [] = yy_unpack();


  /* error codes */
  final private static int YY_UNKNOWN_ERROR = 0;
  final private static int YY_ILLEGAL_STATE = 1;
  final private static int YY_NO_MATCH = 2;
  final private static int YY_PUSHBACK_2BIG = 3;

  /* error messages for the codes above */
  final private static String YY_ERROR_MSG[] = {
    "Unkown internal scanner error",
    "Internal error: unknown state",
    "Error: could not match input",
    "Error: pushback value was too large"
  };

  /**
   * YY_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
   */
  private final static byte YY_ATTRIBUTE[] = {
     1100000000000011,
     9111191191111111,
     1111191911119191,
     9113999999991111,
     9919111919111991,
     9111919191100099,
     0901101111111111,
     1110009111091091,
     1119999901091000,
     2, 1350000000091111,
     9999990009000001,
     0919119111111111,
     1111111111111111,
     1100011111109010,
     0000900100009019,
     1900011111111111,
     1111111111111111,
     1111100011091000,
     0000000009100011,
     1111111111111111,
     1111111111111111,
     1190110100000000,
     0001000001111111,
     1101111111111111,
     1111111111911000,
     0000110000000019,
     0001111111111111,
     1111111111011111,
     1100000011000100,
     0000190000111111,
     1111001111111111,
     1111119000000100,
     0000100000000000,
     1111111101111111,
     1111111111000099,
     1100001100000001,
     9011111011101111,
     1100900100110000,
     1001100000001110,
     0011111111000009,
     0111100011110001,
     9011111111111000,
     0000111000001110,
     1901100111119900,
     0010001190011000,
     001001000009
  };

  /** the input device */
  private java.io.Reader yy_reader;

  /** the current state of the DFA */
  private int yy_state;

  /** the current lexical state */
  private int yy_lexical_state = YYINITIAL;

  /** this buffer contains the current text to be matched and is
      the source of the yytext() string */
  private char yy_buffer[] = new char[YY_BUFFERSIZE];

  /** the textposition at the last accepting state */
  private int yy_markedPos;

  /** the textposition at the last state to be included in yytext */
  private int yy_pushbackPos;

  /** the current text position in the buffer */
  private int yy_currentPos;

  /** startRead marks the beginning of the yytext() string in the buffer */
  private int yy_startRead;

  /** endRead marks the last character in the buffer, that has been read
      from input */
  private int yy_endRead;

  /** number of newlines encountered up to the start of the matched text */
  private int yyline;

  /** the number of characters up to the start of the matched text */
  private int yychar;

  /**
   * the number of characters from the last newline up to the start of the
   * matched text
   */
  private int yycolumn;

  /**
   * yy_atBOL == true <=> the scanner is currently at the beginning of a line
   */
  private boolean yy_atBOL = true;

  /** yy_atEOF == true <=> the scanner is at the EOF */
  private boolean yy_atEOF;


  /** the stack of open (nested) input streams to read from */
  private java.util.Stack yy_streams = new java.util.Stack();

  /**
   * inner class used to store info for nested
   * input streams
   */
  final private static class YY_StreamInfo {
    java.io.Reader yy_reader;
    int yy_endRead;
    int yy_startRead;
    int yy_currentPos;
    int yy_markedPos;
    int yy_pushbackPos;
    int yyline;
    int yycolumn;
    char [] yy_buffer;
    boolean yy_atEOF;

    /** sets all values stored in this class */
    YY_StreamInfo(java.io.Reader yy_reader, int yy_endRead, int yy_startRead,
                  int yy_currentPos, int yy_markedPos, int yy_pushbackPos,
                  char [] yy_buffer, boolean yy_atEOF, int yyline, int yycolumn) {
      this.yy_reader      = yy_reader;
      this.yy_endRead     = yy_endRead;
      this.yy_startRead   = yy_startRead;
      this.yy_currentPos  = yy_currentPos;
      this.yy_markedPos   = yy_markedPos;
      this.yy_pushbackPos = yy_pushbackPos;
      this.yy_buffer      = yy_buffer;
      this.yy_atEOF       = yy_atEOF;
      this.yyline         = yyline;
      this.yycolumn       = yycolumn;
    }
  }

  /** denotes if the user-EOF-code has already been executed */
  private boolean yy_eof_done;

  /* user code: */
  int balance = 0;
  int commentbalance = 0;
  int action_line = 0;
  int bufferSize = 16384;

  File file;
  Stack files = new Stack();

  StringBuffer userCode   = new StringBuffer();
 
  String classCode;
  String initCode;  
  String initThrow;
  String eofCode;
  String eofThrow;
  String lexThrow;
  String eofVal;
  String scanErrorException;
  String cupSymbol = "sym";

  StringBuffer actionText = new StringBuffer();
  StringBuffer string     = new StringBuffer();
 
  boolean charCount;
  boolean lineCount;
  boolean columnCount;
  boolean cupCompatible; 
  boolean cupDebug;
  boolean isInteger;
  boolean isIntWrap;
  boolean isYYEOF;
  boolean notUnix;
  boolean isPublic;
  boolean isFinal;
  boolean isAbstract;
  boolean lookAheadUsed;
  boolean bolUsed;
  boolean standalone;
  boolean debugOption;
  boolean useRowMap = Main.gen_method == Main.PACK || Main.gen_method == Main.TABLE;
  boolean packed = Main.gen_method == Main.PACK;
  boolean caseless;
  boolean inclusive_states;
   
  String isImplementing;
  String isExtending;
  String className = "Yylex";
  String functionName;
  String tokenType;
   
  LexicalStates states = new LexicalStates();

  Vector actions = new Vector();
 
  private int nextState;

  boolean macroDefinition;

  Timer t = new Timer();

  public int currentLine() {
    return yyline;
  }   

  public void setFile(File file) {
    this.file = file;
  }

  private Symbol symbol(int type, Object value) {
    return new Symbol(type, yyline, yycolumn, value);
  }

  private Symbol symbol(int type) {
    return new Symbol(type, yyline, yycolumn);
  }
  
  // updates line and column count to the beginning of the first
  // non whitespace character in yytext, but leaves yyline+yycolumn
  // untouched
  private Symbol symbol_countUpdate(int type, Object value) {
     int lc = yyline;
     int cc = yycolumn;
     String text = yytext();

     for (int i=0; i < text.length(); i++) {
      char c = text.charAt(i);

      if (c != '\n' && c != '\r' && c != ' ' && c != '\t' )
        return new Symbol(type, lc, cc, value);

      if (c == '\n') {
        lc++;
        cc = 0;
      }
      else
        cc++;
    }
  
    return new Symbol(type, yyline, yycolumn, value);
  }

  // updates yyline and yycolumn count to the beginning of the first
  // non whitespace character in yytext
  private void updateLineCount(String text) {

    for (int i=0; i < text.length(); i++) {
      char c = text.charAt(i);

      if (c != '\n' && c != '\r' && c != ' ' && c != '\t' ) return;

      if (c == '\n') {
        yyline++;
        yycolumn = 0;
      }
      else
        yycolumn++;
    }

  }

  private String makeMacroIdent() {
    String matched = yytext().trim();
    return matched.substring(1, matched.length()-1).trim();
  }

  private String conc(Object a, Object b) {
    if (a == null && b == null) return null;
    if (a == null) return b.toString();
    if (b == null) return a.toString();
   
    return a.toString()+b.toString();
  }

  private String concExc(Object a, Object b) {
    if (a == null && b == null) return null;
    if (a == null) return b.toString();
    if (b == null) return a.toString();
   
    return a.toString()+", "+b.toString();
  }


  /**
   * Creates a new scanner
   * There is also a java.io.InputStream version of this constructor.
   *
   * @param   in  the java.io.Reader to read input from.
   */
  public LexScan(java.io.Reader in) {
    states.insert("YYINITIAL", true);
    this.yy_reader = in;
  }

  /**
   * Creates a new scanner.
   * There is also java.io.Reader version of this constructor.
   *
   * @param   in  the java.io.Inputstream to read input from.
   */
  public LexScan(java.io.InputStream in) {
    this(new java.io.InputStreamReader(in));
  }

  /**
   * Unpacks the split, compressed DFA transition table.
   *
   * @return the unpacked transition table
   */
  private static int [] yy_unpack() {
    int [] trans = new int[42420];
    int offset = 0;
    offset = yy_unpack(yy_packed0, offset, trans);
    return trans;
  }

  /**
   * Unpacks the compressed DFA transition table.
   *
   * @param packed   the packed transition table
   * @return         the index of the last entry
   */
  private static int yy_unpack(String packed, int offset, int [] trans) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      value--;
      do trans[j++] = value; while (--count > 0);
    }
    return j;
  }

  /**
   * Unpacks the compressed character translation table.
   *
   * @param packed   the packed character translation table
   * @return         the unpacked character translation table
   */
  private static char [] yy_unpack_cmap(String packed) {
    char [] map = new char[0x10000];
    int i = 0/* index in packed string  */
    int j = 0/* index in unpacked array */
    while (i < 1668) {
      int  count = packed.charAt(i++);
      char value = packed.charAt(i++);
      do map[j++] = value; while (--count > 0);
    }
    return map;
  }


  /**
   * Refills the input buffer.
   *
   * @return      <code>false</code>, iff there was new input.
   *
   * @exception   IOException  if any I/O-Error occurs
   */
  private boolean yy_refill() throws java.io.IOException {

    /* first: make room (if you can) */
    if (yy_startRead > 0) {
      System.arraycopy(yy_buffer, yy_startRead,
                       yy_buffer, 0,
                       yy_endRead-yy_startRead);

      /* translate stored positions */
      yy_endRead-= yy_startRead;
      yy_currentPos-= yy_startRead;
      yy_markedPos-= yy_startRead;
      yy_pushbackPos-= yy_startRead;
      yy_startRead = 0;
    }

    /* is the buffer big enough? */
    if (yy_currentPos >= yy_buffer.length) {
      /* if not: blow it up */
      char newBuffer[] = new char[yy_currentPos*2];
      System.arraycopy(yy_buffer, 0, newBuffer, 0, yy_buffer.length);
      yy_buffer = newBuffer;
    }

    /* finally: fill the buffer with new input */
    int numRead = yy_reader.read(yy_buffer, yy_endRead,
                                            yy_buffer.length-yy_endRead);

    if (numRead < 0) {
      return true;
    }
    else {
      yy_endRead+= numRead; 
      return false;
    }
  }

   
  /**
   * Closes the input stream.
   */
  final public void yyclose() throws java.io.IOException {
    yy_atEOF = true;            /* indicate end of file */
    yy_endRead = yy_startRead;  /* invalidate buffer    */

    if (yy_reader != null)
      yy_reader.close();
  }


  /**
   * Stores the current input stream on a stack, and
   * reads from a new stream. Lexical state, line,
   * char, and column counting remain untouched.
   *
   * The current input stream can be restored with
   * yypopstream (usually in an <<EOF>> action).
   *
   * @param reader the new input stream to read from
   *
   * @see #yypopStream()
   */
  final public void yypushStream(java.io.Reader reader) {
    yy_streams.push(
      new YY_StreamInfo(yy_reader, yy_endRead, yy_startRead, yy_currentPos,
                        yy_markedPos, yy_pushbackPos, yy_buffer, yy_atEOF,
                        yyline, yycolumn)
    );
    yy_atEOF  = false
    yy_buffer = new char[YY_BUFFERSIZE];
    yy_reader = reader;
    yy_endRead = yy_startRead = 0;
    yy_currentPos = yy_markedPos = yy_pushbackPos = 0;
    yyline = yycolumn = 0;
  }
   

  /**
   * Closes the current input stream and continues to
   * read from the one on top of the stream stack.
   *
   * @throws java.util.EmptyStackException
   *         if there is no further stream to read from.
   *
   * @throws java.io.IOException
   *         if there was an error in closing the stream.
   *
   * @see #yypushStream(java.io.Reader)
   */
  final public void yypopStream() throws java.io.IOException {
    yy_reader.close();
    YY_StreamInfo s = (YY_StreamInfo) yy_streams.pop();
    yy_buffer      = s.yy_buffer;
    yy_reader      = s.yy_reader;
    yy_endRead     = s.yy_endRead;
    yy_startRead   = s.yy_startRead;
    yy_currentPos  = s.yy_currentPos;
    yy_markedPos   = s.yy_markedPos ;
    yy_pushbackPos = s.yy_pushbackPos;
    yy_atEOF       = s.yy_atEOF;
    yyline         = s.yyline;
    yycolumn       = s.yycolumn;
  }


  /**
   * Returns true iff there are still streams left
   * to read from on the stream stack.
   */
  final public boolean yymoreStreams() {
    return !yy_streams.isEmpty();
  }


  /**
   * Closes the current stream, and resets the
   * scanner to read from a new input stream.
   *
   * All internal variables are reset, the old input stream
   * <b>cannot</b> be reused (internal buffer is discarded and lost).
   * Lexical state is set to <tt>YY_INITIAL</tt>.
   *
   * @param reader   the new input stream
   *
   * @see #yypushStream(java.io.Reader)
   * @see #yypopStream()
   */
  final public void yyreset(java.io.Reader reader) throws java.io.IOException {
    yyclose();
    yy_reader = reader;
    yy_atBOL  = true;
    yy_atEOF  = false;
    yy_endRead = yy_startRead = 0;
    yy_currentPos = yy_markedPos = yy_pushbackPos = 0;
    yyline = yychar = yycolumn = 0;
    yy_lexical_state = YYINITIAL;
  }


  /**
   * Returns the current lexical state.
   */
  final public int yystate() {
    return yy_lexical_state;
  }


  /**
   * Enters a new lexical state
   *
   * @param newState the new lexical state
   */
  final public void yybegin(int newState) {
    yy_lexical_state = newState;
  }


  /**
   * Returns the text matched by the current regular expression.
   */
  final public String yytext() {
    return new String( yy_buffer, yy_startRead, yy_markedPos-yy_startRead );
  }


  /**
   * Returns the character at position <tt>pos</tt> from the
   * matched text.
   *
   * It is equivalent to yytext().charAt(pos), but faster
   *
   * @param pos the position of the character to fetch.
   *            A value from 0 to yylength()-1.
   *
   * @return the character at position pos
   */
  final public char yycharat(int pos) {
    return yy_buffer[yy_startRead+pos];
  }


  /**
   * Returns the length of the matched text region.
   */
  final public int yylength() {
    return yy_markedPos-yy_startRead;
  }


  /**
   * Reports an error that occured while scanning.
   *
   * In a wellformed scanner (no or only correct usage of
   * yypushback(int) and a match-all fallback rule) this method
   * will only be called with things that "Can't Possibly Happen".
   * If this method is called, something is seriously wrong
   * (e.g. a JFlex bug producing a faulty scanner etc.).
   *
   * Usual syntax/scanner level error handling should be done
   * in error fallback rules.
   *
   * @param   errorCode  the code of the errormessage to display
   */
  private void yy_ScanError(int errorCode) {
    String message;
    try {
      message = YY_ERROR_MSG[errorCode];
    }
    catch (ArrayIndexOutOfBoundsException e) {
      message = YY_ERROR_MSG[YY_UNKNOWN_ERROR];
    }

    throw new Error(message);
  }


  /**
   * Pushes the specified amount of characters back into the input stream.
   *
   * They will be read again by then next call of the scanning method
   *
   * @param number  the number of characters to be read again.
   *                This number must not be greater than yylength()!
   */
  private void yypushback(int number)  {
    if ( number > yylength() )
      yy_ScanError(YY_PUSHBACK_2BIG);

    yy_markedPos -= number;
  }


  /**
   * Contains user EOF-code, which will be executed exactly once,
   * when the end of file is reached
   */
  private void yy_do_eof() throws java.io.IOException {
    if (!yy_eof_done) {
      yy_eof_done = true;
      yyclose();
    }
  }


  /**
   * Resumes scanning until the next regular expression is matched,
   * the end of input is encountered or an I/O-Error occurs.
   *
   * @return      the next token
   * @exception   IOException  if any I/O-Error occurs
   */
  public Symbol next_token() throws java.io.IOException {
    int yy_input;
    int yy_action;

    // cached fields:
    int yy_currentPos_l;
    int yy_startRead_l;
    int yy_markedPos_l;
    int yy_endRead_l = yy_endRead;
    char [] yy_buffer_l = yy_buffer;
    char [] yycmap_l = yycmap;

    int [] yytrans_l = yytrans;
    int [] yy_rowMap_l = yy_rowMap;
    byte [] yy_attr_l = YY_ATTRIBUTE;
    int yy_pushbackPos_l = yy_pushbackPos = -1;
    boolean yy_was_pushback;

    while (true) {
      yy_markedPos_l = yy_markedPos;

      boolean yy_r = false;
      for (yy_currentPos_l = yy_startRead; yy_currentPos_l < yy_markedPos_l;
                                                             yy_currentPos_l++) {
        switch (yy_buffer_l[yy_currentPos_l]) {
        case '\u000B':
        case '\u000C':
        case '\u0085':
        case '\u2028':
        case '\u2029':
          yyline++;
          yycolumn = 0;
          yy_r = false;
          break;
        case '\r':
          yyline++;
          yycolumn = 0;
          yy_r = true;
          break;
        case '\n':
          if (yy_r)
            yy_r = false;
          else {
            yyline++;
            yycolumn = 0;
          }
          break;
        default:
          yy_r = false;
          yycolumn++;
        }
      }

      if (yy_r) {
        // peek one character ahead if it is \n (if we have counted one line too much)
        boolean yy_peek;
        if (yy_markedPos_l < yy_endRead_l)
          yy_peek = yy_buffer_l[yy_markedPos_l] == '\n';
        else if (yy_atEOF)
          yy_peek = false;
        else {
          boolean eof = yy_refill();
          yy_markedPos_l = yy_markedPos;
          yy_buffer_l = yy_buffer;
          if (eof)
            yy_peek = false;
          else
            yy_peek = yy_buffer_l[yy_markedPos_l] == '\n';
        }
        if (yy_peek) yyline--;
      }
      if (yy_markedPos_l > yy_startRead) {
        switch (yy_buffer_l[yy_markedPos_l-1]) {
        case '\n':
        case '\u000B':
        case '\u000C':
        case '\u0085':
        case '\u2028':
        case '\u2029':
          yy_atBOL = true;
          break;
        case '\r':
          if (yy_markedPos_l < yy_endRead_l)
            yy_atBOL = yy_buffer_l[yy_markedPos_l] != '\n';
          else if (yy_atEOF)
            yy_atBOL = false;
          else {
            boolean eof = yy_refill();
            yy_markedPos_l = yy_markedPos;
            yy_buffer_l = yy_buffer;
            if (eof)
              yy_atBOL = false;
            else
              yy_atBOL = yy_buffer_l[yy_markedPos_l] != '\n';
          }
          break;
        default:
          yy_atBOL = false;
        }
      }
      yy_action = -1;

      yy_startRead_l = yy_currentPos_l = yy_currentPos =
                       yy_startRead = yy_markedPos_l;
 
      if (yy_atBOL)
        yy_state = YY_LEXSTATE[yy_lexical_state+1];
      else
        yy_state = YY_LEXSTATE[yy_lexical_state];

      yy_was_pushback = false;

      yy_forAction: {
        while (true) {
   
          if (yy_currentPos_l < yy_endRead_l)
            yy_input = yy_buffer_l[yy_currentPos_l++];
          else if (yy_atEOF) {
            yy_input = YYEOF;
            break yy_forAction;
          }
          else {
            // store back cached positions
            yy_currentPos  = yy_currentPos_l;
            yy_markedPos   = yy_markedPos_l;
            yy_pushbackPos = yy_pushbackPos_l;
            boolean eof = yy_refill();
            // get translated positions and possibly new buffer
            yy_currentPos_l  = yy_currentPos;
            yy_markedPos_l   = yy_markedPos;
            yy_buffer_l      = yy_buffer;
            yy_endRead_l     = yy_endRead;
            yy_pushbackPos_l = yy_pushbackPos;
            if (eof) {
              yy_input = YYEOF;
              break yy_forAction;
            }
            else {
              yy_input = yy_buffer_l[yy_currentPos_l++];
            }
          }
          int yy_next = yytrans_l[ yy_rowMap_l[yy_state] + yycmap_l[yy_input] ];
          if (yy_next == -1) break yy_forAction;
          yy_state = yy_next;

          int yy_attributes = yy_attr_l[yy_state];
          if ( (yy_attributes & 2) == 2 )
            yy_pushbackPos_l = yy_currentPos_l;

          if ( (yy_attributes & 1) == 1 ) {
            yy_was_pushback = (yy_attributes & 4) == 4;
            yy_action = yy_state;
            yy_markedPos_l = yy_currentPos_l;
            if ( (yy_attributes & 8) == 8 ) break yy_forAction;
          }

        }
      }

      // store back cached position
      yy_markedPos = yy_markedPos_l;
      if (yy_was_pushback)
        yy_markedPos = yy_pushbackPos_l;

      switch (yy_action) {

        case 696:
        case 716:
          lexThrow = concExc(lexThrow,yytext().substring(12).trim())}
        case 733: break;
        case 529:
          File f = new File(yytext().substring(9).trim());
                                if ( !f.canRead() )
                                  throw new ScannerException(file,NOT_READABLE, yyline);
                                // check for cycle
                                if (files.search(f) > 0)
                                  throw new ScannerException(file,FILE_CYCLE, yyline);
                                try {
                                  yypushStream( new FileReader(f) );
                                  files.push(file);
                                  file = f;
                                  Out.println("Including \""+file+"\"");
                                }
                                catch (FileNotFoundException e) {
                                  throw new ScannerException(file,NOT_READABLE, yyline);
                                }
                               }
        case 734: break;
        case 533:
        case 582:
          lexThrow = concExc(lexThrow,yytext().substring(8).trim())}
        case 735: break;
        case 551:
        case 552:
          bufferSize = Integer.parseInt(yytext().substring(8).trim())}
        case 736: break;
        case 627:
        case 663:
          eofThrow = concExc(eofThrow,yytext().substring(10).trim())}
        case 737: break;
        case 659:
        case 692:
          initThrow = concExc(initThrow,yytext().substring(11).trim())}
        case 738: break;
        case 667:
        case 699:
          scanErrorException = yytext().substring(11).trim()}
        case 739: break;
        case 711:
        case 712:
          lexThrow = concExc(lexThrow,string); yybegin(MACROS)}
        case 740: break;
        case 688:
        case 689:
          initThrow = concExc(initThrow,string);  yybegin(MACROS)}
        case 741: break;
        case 655:
        case 656:
          eofThrow = concExc(eofThrow,string); yybegin(MACROS)}
        case 742: break;
        case 68:
          yybegin(REGEXP); return symbol(MORETHAN)}
        case 743: break;
        case 372:
          packed = false; useRowMap = true}
        case 744: break;
        case 137:
          actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1; return symbol(REGEXPEND)}
        case 745: break;
        case 88:
          yybegin(REGEXP); return symbol(RBRACE)}
        case 746: break;
        case 32:
          yybegin(REGEXP); return symbol(EQUALS)}
        case 747: break;
        case 45:
          yybegin(CHARCLASS); return symbol(OPENCLASS)}
        case 748: break;
        case 414:
        case 415:
          eofCode = conc(eofCode,string); yybegin(MACROS)}
        case 749: break;
        case 542:
          isAbstract = true}
        case 750: break;
        case 76:
          balance++; return symbol(OPENCLASS)}
        case 751: break;
        case 213:
        case 214:
          inclusive_states = false; yybegin(STATELIST)}
        case 752: break;
        case 222:
        case 284:
        case 343:
          return symbol(CHAR, new Character( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16)))}
        case 753: break;
        case 239:
          return symbol(MACROUSE, yytext().substring(1,yytext().length()-1))}
        case 754: break;
        case 240:
        case 241:
          classCode = conc(classCode,string);  yybegin(MACROS);   }
        case 755: break;
        case 283:
          return symbol(CHAR, new Character( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16)))}
        case 756: break;
        case 336:
          packed = true; useRowMap = true}
        case 757: break;
        case 437:
          packed = false; useRowMap = false}
        case 758: break;
        case 497:
          className = yytext().substring(7).trim();   }
        case 759: break;
        case 127:
        case 130:
        case 220:
          return symbol(CHAR, new Character( (char) Integer.parseInt(yytext().substring(1,yytext().length()), 8)))}
        case 760: break;
        case 126:
        case 128:
        case 129:
          return symbol(CHAR, new Character(yytext().charAt(1)))}
        case 761: break;
        case 74:
        case 79:
          return symbol(CHAR, new Character(yytext().charAt(0)))}
        case 762: break;
        case 39:
        case 40:
        case 50:
          return symbol(CHAR, new Character(yytext().charAt(0)))}
        case 763: break;
        case 49:
          yybegin(REGEXPSTART); return symbol(LBRACE)}
        case 764: break;
        case 58:
          lookAheadUsed = true; return symbol(DOLLAR)}
        case 765: break;
        case 175:
          return symbol(REPEAT, new Integer(yytext().substring(1).trim()))}
        case 766: break;
        case 468:
        case 469:
          initCode = conc(initCode,string);    yybegin(MACROS);   }
        case 767: break;
        case 37:
          return symbol_countUpdate(RBRACE, null)}
        case 768: break;
        case 1:
        case 18:
          /* ignore */  }
        case 769: break;
        case 393:
          debugOption = true}
        case 770: break;
        case 15:
        case 16:
          userCode.append(yytext())}
        case 771: break;
        case 441:
          columnCount = true}
        case 772: break;
        case 575:
        case 576:
          eofVal = string.toString(); yybegin(MACROS)}
        case 773: break;
        case 80:
          return symbol(HAT)}
        case 774: break;
        case 0:
        case 14:
        case 17:
          return symbol(EOF)}
        case 775: break;
        case 51:
          return symbol(BAR)}
        case 776: break;
        case 38:
          yybegin(STATES); return symbol_countUpdate(LESSTHAN, null)}
        case 777: break;
        case 57:
          return symbol(QUESTION)}
        case 778: break;
        case 394:
        case 474:
          return symbol(UNICODE);   }
        case 779: break;
        case 664:
        case 665:
        case 695:
        case 697:
        case 715:
          throw new ScannerException(file,QUIL_YYLEXTHROW, yyline)}
        case 780: break;
        case 77:
          if (balance > 0) balance--; else yybegin(REGEXP); return symbol(CLOSECLASS)}
        case 781: break;
        case 456:
          throw new ScannerException(file,EOF_WO_ACTION)}
        case 782: break;
        case 499:
        case 500:
        case 550:
        case 553:
          throw new ScannerException(file,NO_BUFFER_SIZE, yyline)}
        case 783: break;
        case 620:
        case 621:
        case 658:
        case 660:
        case 691:
          throw new ScannerException(file,QUIL_INITTHROW, yyline)}
        case 784: break;
        case 632:
        case 633:
        case 666:
        case 668:
        case 698:
          throw new ScannerException(file,QUIL_SCANERROR, yyline)}
        case 785: break;
        case 661:
          isImplementing = concExc(isImplementing, yytext().substring(12).trim());   }
        case 786: break;
        case 539:
          eofCode = conc(eofCode, "  yyclose();");
                                eofThrow = concExc(eofThrow, "java.io.IOException");
                               }
        case 787: break;
        case 585:
        case 586:
        case 626:
        case 628:
        case 662:
          throw new ScannerException(file,QUIL_EOFTHROW, yyline)}
        case 788: break;
        case 135:
          return symbol(CHAR,new Character('\b'))}
        case 789: break;
        case 134:
          return symbol(CHAR,new Character('\f'))}
        case 790: break;
        case 133:
          return symbol(CHAR,new Character('\r'))}
        case 791: break;
        case 132:
          return symbol(CHAR,new Character('\t'))}
        case 792: break;
        case 131:
          return symbol(CHAR,new Character('\n'))}
        case 793: break;
        case 47:
          lookAheadUsed = true; return symbol(LOOKAHEAD)}
        case 794: break;
        case 59:
          bolUsed = true; return symbol(HAT)}
        case 795: break;
        case 60:
        case 231:
        case 404:
        case 405:
        case 457:
        case 461:
        case 509:
        case 516:
        case 560:
        case 561:
        case 566:
        case 567:
        case 599:
        case 602:
        case 603:
        case 608:
        case 611:
        case 612:
        case 641:
        case 642:
        case 643:
        case 644:
        case 648:
        case 649:
        case 650:
        case 651:
        case 676:
        case 677:
        case 678:
        case 684:
        case 685:
        case 686:
        case 706:
        case 710:
        case 722:
        case 725:
          actionText.append(yytext())}
        case 796: break;
        case 155:
        case 157:
        case 158:
          string.append(yytext().charAt(1))}
        case 797: break;
        case 156:
        case 159:
        case 236:
          string.append( (char) Integer.parseInt(yytext().substring(1,yytext().length()), 8))}
        case 798: break;
        case 160:
          string.append('\"')}
        case 799: break;
        case 161:
          string.append('\n')}
        case 800: break;
        case 162:
          string.append('\t')}
        case 801: break;
        case 163:
          string.append('\r')}
        case 802: break;
        case 164:
          string.append('\f')}
        case 803: break;
        case 165:
          string.append('\b')}
        case 804: break;
        case 216:
        case 217:
          inclusive_states = true; yybegin(STATELIST)}
        case 805: break;
        case 238:
        case 298:
        case 355:
          string.append( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16))}
        case 806: break;
        case 297:
          string.append( (char) Integer.parseInt(yytext().substring(2,yytext().length()), 16))}
        case 807: break;
        case 83:
        case 84:
          string.append(yytext())}
        case 808: break;
        case 69:
          string.append(yytext())}
        case 809: break;
        case 559:
          actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1; return symbol(EOFRULE)}
        case 810: break;
        case 81:
          return symbol(DASH)}
        case 811: break;
        case 73:
          yybegin(nextState); return symbol(STRING, string.toString())}
        case 812: break;
        case 67:
          return symbol(COMMA)}
        case 813: break;
        case 44:
          return symbol(POINT)}
        case 814: break;
        case 46:
          return symbol(STAR)}
        case 815: break;
        case 52:
          return symbol(BANG)}
        case 816: break;
        case 53:
          return symbol(TILDE)}
        case 817: break;
        case 56:
          return symbol(PLUS)}
        case 818: break;
        case 318:
        case 338:
          return symbol(FULL)}
        case 819: break;
        case 95:
          commentbalance++;  }
        case 820: break;
        case 86:
          throw new ScannerException(file,UNEXPECTED_NL, yyline, yycolumn)}
        case 821: break;
        case 71:
        case 72:
          throw new ScannerException(file,UNTERMINATED_STR, yyline, yycolumn)}
        case 822: break;
        case 65:
          balance++; actionText.append('{')}
        case 823: break;
        case 123:
          nextState = REGEXPSTART; yybegin(COMMENT)}
        case 824: break;
        case 89:
          yybegin(REGEXP)}
        case 825: break;
        case 35:
          yybegin(REGEXP)}
        case 826: break;
        case 75:
          throw new ScannerException(file,EOL_IN_CHARCLASS,yyline,yycolumn)}
        case 827: break;
        case 99:
        case 100:
        case 102:
        case 103:
        case 104:
        case 105:
        case 106:
        case 107:
        case 108:
        case 109:
        case 110:
        case 111:
        case 112:
        case 113:
        case 114:
        case 119:
        case 121:
        case 180:
        case 183:
        case 184:
        case 185:
        case 186:
        case 187:
        case 188:
        case 189:
        case 190:
        case 191:
        case 192:
        case 193:
        case 194:
        case 195:
        case 196:
        case 197:
        case 198:
        case 199:
        case 200:
        case 201:
        case 202:
        case 203:
        case 204:
        case 205:
        case 206:
        case 207:
        case 208:
        case 209:
        case 215:
        case 218:
        case 245:
        case 246:
        case 248:
        case 249:
        case 250:
        case 251:
        case 252:
        case 253:
        case 254:
        case 255:
        case 256:
        case 257:
        case 258:
        case 259:
        case 260:
        case 261:
        case 262:
        case 263:
        case 264:
        case 265:
        case 266:
        case 268:
        case 269:
        case 270:
        case 271:
        case 272:
        case 273:
        case 274:
        case 275:
        case 276:
        case 280:
        case 281:
        case 302:
        case 303:
        case 304:
        case 305:
        case 306:
        case 307:
        case 308:
        case 309:
        case 310:
        case 311:
        case 312:
        case 313:
        case 314:
        case 315:
        case 316:
        case 317:
        case 319:
        case 320:
        case 321:
        case 323:
        case 324:
        case 325:
        case 326:
        case 327:
        case 328:
        case 330:
        case 331:
        case 332:
        case 333:
        case 334:
        case 335:
        case 337:
        case 340:
        case 341:
        case 361:
        case 362:
        case 363:
        case 364:
        case 365:
        case 366:
        case 367:
        case 368:
        case 369:
        case 371:
        case 373:
        case 374:
        case 375:
        case 376:
        case 377:
        case 380:
        case 381:
        case 382:
        case 383:
        case 384:
        case 385:
        case 386:
        case 387:
        case 388:
        case 389:
        case 390:
        case 391:
        case 392:
        case 395:
        case 396:
        case 419:
        case 420:
        case 421:
        case 422:
        case 423:
        case 424:
        case 425:
        case 426:
        case 427:
        case 429:
        case 430:
        case 431:
        case 432:
        case 433:
        case 434:
        case 435:
        case 436:
        case 438:
        case 439:
        case 440:
        case 443:
        case 444:
        case 445:
        case 448:
        case 449:
        case 475:
        case 478:
        case 479:
        case 480:
        case 486:
        case 487:
        case 488:
        case 489:
        case 490:
        case 491:
        case 492:
        case 493:
        case 496:
        case 498:
        case 501:
        case 528:
        case 530:
        case 531:
        case 537:
        case 538:
        case 540:
        case 541:
        case 543:
        case 544:
        case 578:
        case 579:
        case 580:
        case 588:
        case 589:
        case 590:
        case 591:
        case 622:
        case 630:
          throw new ScannerException(file,UNKNOWN_OPTION, yyline, yycolumn)}
        case 828: break;
        case 31:
        case 34:
          throw new ScannerException(file,UNKNOWN_OPTION, yyline, yycolumn)}
        case 829: break;
        case 19:
        case 20:
        case 21:
        case 30:
        case 36:
        case 61:
        case 62:
        case 63:
        case 70:
        case 82:
        case 85:
        case 87:
          throw new ScannerException(file,UNEXPECTED_CHAR, yyline, yycolumn)}
        case 830: break;
        case 24:
        case 25:
          yybegin(MACROS);   }
        case 831: break;
        case 639:
          return symbol(JLETTERCLASS)}
        case 832: break;
        case 140:
          yybegin(REPEATEXP); return symbol(REPEAT, new Integer(yytext().trim().substring(1).trim()))}
        case 833: break;
        case 78:
          string.setLength(0); nextState = CHARCLASS; yybegin(STRING_CONTENT)}
        case 834: break;
        case 731:
          return symbol(JLETTERDIGITCLASS)}
        case 835: break;
        case 120:
          macroDefinition = false; yybegin(REGEXPSTART); return symbol(DELIMITER)}
        case 836: break;
        case 27:
          return symbol(IDENT, yytext())}
        case 837: break;
        case 42:
        case 43:
          if (macroDefinition) { yybegin(MACROS); } return symbol(REGEXPEND)}
        case 838: break;
        case 55:
          return symbol(CLOSEBRACKET)}
        case 839: break;
        case 169:
          yypushback(1); yycolumn--; return symbol(CHAR, new Character(yytext().charAt(0)))}
        case 840: break;
        case 228:
          return symbol_countUpdate(MACROUSE, makeMacroIdent())}
        case 841: break;
        case 379:
          isYYEOF = true;   }
        case 842: break;
        case 481:
          notUnix = true;   }
        case 843: break;
        case 139:
          nextState = REGEXP; yybegin(COMMENT)}
        case 844: break;
        case 97:
          nextState = MACROS; yybegin(COMMENT)}
        case 845: break;
        case 181:
        case 182:
          string.setLength(0); yybegin(COPY)}
        case 846: break;
        case 267:
          cupCompatible = true
                                isImplementing = concExc(isImplementing, "java_cup.runtime.Scanner");
                                if (functionName == null)
                                  functionName = "next_token";
                                if (tokenType == null)
                                  tokenType = "java_cup.runtime.Symbol";
                                if (eofVal == null)
                                  eofVal = "return new java_cup.runtime.Symbol("+cupSymbol+".EOF);";
                                eofCode = conc(eofCode, "  yyclose();");
                                eofThrow = concExc(eofThrow, "java.io.IOException");
                               }
        case 847: break;
        case 428:
        case 535:
          tokenType = yytext().substring(6).trim()}
        case 848: break;
        case 584:
          isExtending = yytext().substring(9).trim()}
        case 849: break;
        case 629:
          functionName = yytext().substring(10).trim()}
        case 850: break;
        case 701:
          return symbol(LOWERCLASS)}
        case 851: break;
        case 700:
          return symbol(UPPERCLASS)}
        case 852: break;
        case 22:
          states.insert(yytext(),inclusive_states)}
        case 853: break;
        case 54:
          return symbol(OPENBRACKET)}
        case 854: break;
        case 482:
        case 483:
        case 532:
        case 534:
        case 581:
          throw new ScannerException(file,QUIL_THROW, yyline)}
        case 855: break;
        case 494:
        case 495:
        case 545:
        case 547:
        case 592:
          throw new ScannerException(file,QUIL_CUPSYM, yyline)}
        case 856: break;
        case 558:
          return symbol(DIGITCLASS)}
        case 857: break;
        case 596:
          return symbol(LETTERCLASS)}
        case 858: break;
        case 124:
          {   }
        case 859: break;
        case 118:
          Out.warning(NOT_AT_BOL, yyline); yypushback(1)}
        case 860: break;
        case 94:
          if (commentbalance > 0)
                commentbalance--;
              else
                yybegin(nextState);
             }
        case 861: break;
        case 90:
        case 177:
         
                             t.start();
                             yybegin(MACROS);
                             macroDefinition = true;
                             return symbol(USERCODE,userCode);
                            }
        case 862: break;
        case 66:
          {   }
        case 863: break;
        case 41:
          {   }
        case 864: break;
        case 29:
          {   }
        case 865: break;
        case 28:
        case 33:
          {   }
        case 866: break;
        case 23:
        case 26:
          {   }
        case 867: break;
        case 48:
          string.setLength(0); nextState = REGEXP; yybegin(STRING_CONTENT)}
        case 868: break;
        case 64:
          if (balance > 0) {
                 balance--;    
                 actionText.append('}');
               }
               else {
                 yybegin(REGEXPSTART);
                 Action a = new Action(actionText.toString(), action_line);
                 actions.addElement(a);
                 return symbol(ACTION, a);
               }
              }
        case 869: break;
        case 145:
        case 146:
          if (macroDefinition) {
                              yybegin(EATWSPNL);
                              return symbol(BAR);
                            }
                            else {
                              yybegin(REGEXPSTART);
                              return symbol(NOACTION);
                            }
                           }
        case 870: break;
        case 178:
        case 179:
          {   }
        case 871: break;
        case 247:
        case 477:
          isInteger = true;   }
        case 872: break;
        case 322:
          lineCount = true;   }
        case 873: break;
        case 329:
          charCount = true;   }
        case 874: break;
        case 378:
          isFinal = true}
        case 875: break;
        case 446:
          isInteger = true;
                                if (eofVal == null)
                                  eofVal = "return 0;";
                                eofCode = conc(eofCode, "  yyclose();");
                                eofThrow = concExc(eofThrow, "java.io.IOException");
                               }
        case 876: break;
        case 447:
          isPublic = true}
        case 877: break;
        case 476:
          isIntWrap = true;   }
        case 878: break;
        case 502:
          actionText.setLength(0); yybegin(JAVA_CODE); action_line = yyline+1;
                                return symbol_countUpdate(EOFRULE, null)}
        case 879: break;
        case 546:
        case 593:
          cupSymbol = yytext().substring(8).trim();
                                if (cupCompatible) Out.warning(CUPSYM_AFTER_CUP, yyline)}
        case 880: break;
        case 548:
          cupDebug = true}
        case 881: break;
        case 549:
          caseless = true}
        case 882: break;
        case 631:
          standalone = true; isInteger = true}
        case 883: break;
        default:
          if (yy_input == YYEOF && yy_startRead == yy_currentPos) {
            yy_atEOF = true;
            yy_do_eof();
            switch (yy_lexical_state) {
            case STRING_CONTENT:
              throw new ScannerException(file,EOF_IN_STRING)}
            case 733: break;
            case MACROS:
              if ( yymoreStreams() ) {
                                  file = (File) files.pop();
                                  yypopStream();
                                }
                                else
                                  throw new ScannerException(file,EOF_IN_MACROS);
                               }
            case 734: break;
            case STATELIST:
              throw new ScannerException(file,EOF_IN_MACROS)}
            case 735: break;
            case CHARCLASS:
              throw new ScannerException(file,EOF_IN_REGEXP)}
            case 736: break;
            case JAVA_CODE:
              throw new ScannerException(file,EOF_IN_ACTION)}
            case 737: break;
            case REPEATEXP:
              throw new ScannerException(file,EOF_IN_REGEXP)}
            case 738: break;
            case COMMENT:
              throw new ScannerException(file,EOF_IN_COMMENT)}
            case 739: break;
            case STATES:
              throw new ScannerException(file,EOF_IN_STATES)}
            case 740: break;
            case COPY:
              throw new ScannerException(file,EOF_IN_MACROS)}
            case 741: break;
            default:
              if ( yymoreStreams() ) {
             file = (File) files.pop();
             yypopStream();
           }
           else
             return symbol(EOF)}
            }
          }
          else {
            yy_ScanError(YY_NO_MATCH);
          }
      }
    }
  }

  /**
   * Converts an int token code into the name of the
   * token by reflection on the cup symbol class/interface sym
   *
   * This code was contributed by Karl Meissner <meissnersd@yahoo.com>
   * <a href="http://meissner.v0.net/msd.htm">meissner.v0.net/msd.htm</a>
   */
  private String getTokenName(int token) {
    try {
      java.lang.reflect.Field [] class_fields = sym.class.getFields();
      for (int i = 0; i < class_fields.length; i++) {
        if (class_fields[i].getInt(null) == token) {
          return class_fields[i].getName();
        }
      }
    } catch (Exception e) {
      e.printStackTrace(System.err);
    }

    return "UNKNOWN TOKEN";
  }

  /**
   * Same as next_token but also prints the token to standard out
   * for debugging.
   *
   * This code was contributed by Karl Meissner <meissnersd@yahoo.com>
   * <a href="http://meissner.v0.net/msd.htm">meissner.v0.net/msd.htm</a>
   */
  public Symbol debug_next_token() throws java.io.IOException {
    java_cup.runtime.Symbol s = next_token();
    System.out.println( "line:" + (yyline+1) + " col:" + (yycolumn+1) + " --"+ yytext() + "--" + getTokenName(s.sym) + "--");
    return s;
  }

  /**
   * Runs the scanner on input files.
   *
   * This main method is the debugging routine for the scanner.
   * It prints debugging information about each returned token to
   * System.out until the end of file is reached, or an error occured.
   *
   * @param argv   the command line, contains the filenames to run
   *               the scanner on.
   */
  public static void main(String argv[]) {
    if (argv.length == 0) {
      System.out.println("Usage : java LexScan <inputfile>");
    }
    else {
      for (int i = 0; i < argv.length; i++) {
        LexScan scanner = null;
        try {
          scanner = new LexScan( new java.io.FileReader(argv[i]) );
          while ( !scanner.yy_atEOF ) scanner.debug_next_token();
        }
        catch (java.io.FileNotFoundException e) {
          System.out.println("File not found : \""+argv[i]+"\"");
        }
        catch (java.io.IOException e) {
          System.out.println("IO error scanning file \""+argv[i]+"\"");
          System.out.println(e);
        }
        catch (Exception e) {
          System.out.println("Unexpected exception:");
          e.printStackTrace();
        }
      }
    }
  }


}
TOP

Related Classes of JFlex.LexScan

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.