001/* The following code was generated by JFlex 1.4.3 on 9/6/17 5:26 PM */ 002 003/* 004 * Copyright (c) 2006-2013 Nuxeo SA (http://nuxeo.com/) and others. 005 * 006 * All rights reserved. This program and the accompanying materials 007 * are made available under the terms of the Eclipse Public License v1.0 008 * which accompanies this distribution, and is available at 009 * http://www.eclipse.org/legal/epl-v10.html 010 * 011 * Contributors: 012 * Bogdan Stefanescu 013 * Florent Guillaume 014 */ 015package org.nuxeo.ecm.core.query.sql.parser; 016 017import java_cup.runtime.*; 018import org.nuxeo.ecm.core.query.*; 019 020/** 021 * Lexer for NXQL 022 */ 023public class Scanner implements java_cup.runtime.Scanner { 024 025 /** This character denotes the end of file */ 026 public static final int YYEOF = -1; 027 028 /** initial size of the lookahead buffer */ 029 private static final int ZZ_BUFFERSIZE = 16384; 030 031 /** lexical states */ 032 public static final int STRING = 4; 033 public static final int ES_HINT = 6; 034 public static final int YYINITIAL = 0; 035 public static final int SQ_STRING = 2; 036 037 /** 038 * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l 039 * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l 040 * at the beginning of a line 041 * l is of the form l = 2*k, k a non negative integer 042 */ 043 private static final int ZZ_LEXSTATE[] = { 044 0, 0, 1, 1, 2, 2, 3, 3 045 }; 046 047 /** 048 * Translates characters to character classes 049 */ 050 private static final String ZZ_CMAP_PACKED = 051 "\11\0\1\3\1\2\1\0\1\3\1\1\22\0\1\65\1\77\1\105"+ 052 "\1\0\1\4\2\0\1\106\1\102\1\103\1\13\1\17\1\104\1\20"+ 053 "\1\7\1\10\1\14\11\15\1\5\1\0\1\100\1\76\1\101\2\0"+ 054 "\1\47\1\63\1\26\1\53\1\24\1\33\1\72\1\44\1\55\1\6"+ 055 "\1\61\1\25\1\36\1\51\1\35\1\70\1\6\1\34\1\23\1\27"+ 056 "\1\57\1\74\1\43\1\110\1\66\1\112\1\11\1\107\1\12\1\22"+ 057 "\1\6\1\0\1\50\1\64\1\31\1\54\1\16\1\42\1\73\1\45"+ 058 "\1\56\1\6\1\62\1\30\1\41\1\52\1\40\1\71\1\6\1\37"+ 059 "\1\21\1\32\1\60\1\75\1\46\1\111\1\67\1\113\47\0\4\4"+ 060 "\4\0\1\4\12\0\1\4\4\0\1\4\5\0\27\4\1\0\37\4"+ 061 "\1\0\u01ca\4\4\0\14\4\16\0\5\4\7\0\1\4\1\0\1\4"+ 062 "\201\0\5\4\1\0\2\4\2\0\4\4\10\0\1\4\1\0\3\4"+ 063 "\1\0\1\4\1\0\24\4\1\0\123\4\1\0\213\4\10\0\236\4"+ 064 "\11\0\46\4\2\0\1\4\7\0\47\4\7\0\1\4\100\0\33\4"+ 065 "\5\0\3\4\30\0\1\4\24\0\53\4\43\0\2\4\1\0\143\4"+ 066 "\1\0\1\4\17\0\2\4\7\0\2\4\12\0\3\4\2\0\1\4"+ 067 "\20\0\1\4\1\0\36\4\35\0\131\4\13\0\1\4\30\0\41\4"+ 068 "\11\0\2\4\4\0\1\4\5\0\26\4\4\0\1\4\11\0\1\4"+ 069 "\3\0\1\4\27\0\31\4\107\0\1\4\1\0\13\4\127\0\66\4"+ 070 "\3\0\1\4\22\0\1\4\7\0\12\4\17\0\7\4\1\0\7\4"+ 071 "\5\0\10\4\2\0\2\4\2\0\26\4\1\0\7\4\1\0\1\4"+ 072 "\3\0\4\4\3\0\1\4\20\0\1\4\15\0\2\4\1\0\3\4"+ 073 "\16\0\4\4\7\0\1\4\11\0\6\4\4\0\2\4\2\0\26\4"+ 074 "\1\0\7\4\1\0\2\4\1\0\2\4\1\0\2\4\37\0\4\4"+ 075 "\1\0\1\4\23\0\3\4\20\0\11\4\1\0\3\4\1\0\26\4"+ 076 "\1\0\7\4\1\0\2\4\1\0\5\4\3\0\1\4\22\0\1\4"+ 077 "\17\0\2\4\17\0\1\4\23\0\10\4\2\0\2\4\2\0\26\4"+ 078 "\1\0\7\4\1\0\2\4\1\0\5\4\3\0\1\4\36\0\2\4"+ 079 "\1\0\3\4\17\0\1\4\21\0\1\4\1\0\6\4\3\0\3\4"+ 080 "\1\0\4\4\3\0\2\4\1\0\1\4\1\0\2\4\3\0\2\4"+ 081 "\3\0\3\4\3\0\14\4\26\0\1\4\50\0\1\4\13\0\10\4"+ 082 "\1\0\3\4\1\0\27\4\1\0\12\4\1\0\5\4\3\0\1\4"+ 083 "\32\0\2\4\6\0\2\4\43\0\10\4\1\0\3\4\1\0\27\4"+ 084 "\1\0\12\4\1\0\5\4\3\0\1\4\40\0\1\4\1\0\2\4"+ 085 "\17\0\2\4\22\0\10\4\1\0\3\4\1\0\51\4\2\0\1\4"+ 086 "\20\0\1\4\21\0\2\4\30\0\6\4\5\0\22\4\3\0\30\4"+ 087 "\1\0\11\4\1\0\1\4\2\0\7\4\72\0\60\4\1\0\2\4"+ 088 "\13\0\10\4\72\0\2\4\1\0\1\4\2\0\2\4\1\0\1\4"+ 089 "\2\0\1\4\6\0\4\4\1\0\7\4\1\0\3\4\1\0\1\4"+ 090 "\1\0\1\4\2\0\2\4\1\0\4\4\1\0\2\4\11\0\1\4"+ 091 "\2\0\5\4\1\0\1\4\25\0\4\4\40\0\1\4\77\0\10\4"+ 092 "\1\0\44\4\33\0\5\4\163\0\53\4\24\0\1\4\20\0\6\4"+ 093 "\4\0\4\4\3\0\1\4\3\0\2\4\7\0\3\4\4\0\15\4"+ 094 "\14\0\1\4\21\0\46\4\1\0\1\4\5\0\1\4\2\0\53\4"+ 095 "\1\0\u014d\4\1\0\4\4\2\0\7\4\1\0\1\4\1\0\4\4"+ 096 "\2\0\51\4\1\0\4\4\2\0\41\4\1\0\4\4\2\0\7\4"+ 097 "\1\0\1\4\1\0\4\4\2\0\17\4\1\0\71\4\1\0\4\4"+ 098 "\2\0\103\4\45\0\20\4\20\0\125\4\14\0\u026c\4\2\0\21\4"+ 099 "\1\0\32\4\5\0\113\4\3\0\3\4\17\0\15\4\1\0\4\4"+ 100 "\16\0\22\4\16\0\22\4\16\0\15\4\1\0\3\4\17\0\64\4"+ 101 "\43\0\1\4\3\0\2\4\103\0\130\4\10\0\51\4\1\0\1\4"+ 102 "\5\0\106\4\12\0\35\4\63\0\36\4\2\0\5\4\13\0\54\4"+ 103 "\25\0\7\4\70\0\27\4\11\0\65\4\122\0\1\4\135\0\57\4"+ 104 "\21\0\7\4\67\0\36\4\15\0\2\4\12\0\54\4\32\0\44\4"+ 105 "\51\0\3\4\12\0\44\4\153\0\4\4\1\0\4\4\3\0\2\4"+ 106 "\11\0\300\4\100\0\u0116\4\2\0\6\4\2\0\46\4\2\0\6\4"+ 107 "\2\0\10\4\1\0\1\4\1\0\1\4\1\0\1\4\1\0\37\4"+ 108 "\2\0\65\4\1\0\7\4\1\0\1\4\3\0\3\4\1\0\7\4"+ 109 "\3\0\4\4\2\0\6\4\4\0\15\4\5\0\3\4\1\0\7\4"+ 110 "\102\0\2\4\23\0\1\4\34\0\1\4\15\0\1\4\20\0\15\4"+ 111 "\3\0\33\4\107\0\1\4\4\0\1\4\2\0\12\4\1\0\1\4"+ 112 "\3\0\5\4\6\0\1\4\1\0\1\4\1\0\1\4\1\0\4\4"+ 113 "\1\0\13\4\2\0\4\4\5\0\5\4\4\0\1\4\21\0\51\4"+ 114 "\u0a77\0\57\4\1\0\57\4\1\0\205\4\6\0\4\4\3\0\2\4"+ 115 "\14\0\46\4\1\0\1\4\5\0\1\4\2\0\70\4\7\0\1\4"+ 116 "\20\0\27\4\11\0\7\4\1\0\7\4\1\0\7\4\1\0\7\4"+ 117 "\1\0\7\4\1\0\7\4\1\0\7\4\1\0\7\4\120\0\1\4"+ 118 "\u01d5\0\3\4\31\0\11\4\7\0\5\4\2\0\5\4\4\0\126\4"+ 119 "\6\0\3\4\1\0\132\4\1\0\4\4\5\0\51\4\3\0\136\4"+ 120 "\21\0\33\4\65\0\20\4\u0200\0\u19b6\4\112\0\u51cd\4\63\0\u048d\4"+ 121 "\103\0\56\4\2\0\u010d\4\3\0\20\4\12\0\2\4\24\0\57\4"+ 122 "\20\0\31\4\10\0\120\4\47\0\11\4\2\0\147\4\2\0\4\4"+ 123 "\1\0\4\4\14\0\13\4\115\0\12\4\1\0\3\4\1\0\4\4"+ 124 "\1\0\27\4\25\0\1\4\7\0\64\4\16\0\62\4\76\0\6\4"+ 125 "\3\0\1\4\16\0\34\4\12\0\27\4\31\0\35\4\7\0\57\4"+ 126 "\34\0\1\4\60\0\51\4\27\0\3\4\1\0\10\4\24\0\27\4"+ 127 "\3\0\1\4\5\0\60\4\1\0\1\4\3\0\2\4\2\0\5\4"+ 128 "\2\0\1\4\1\0\1\4\30\0\3\4\2\0\13\4\7\0\3\4"+ 129 "\14\0\6\4\2\0\6\4\2\0\6\4\11\0\7\4\1\0\7\4"+ 130 "\221\0\43\4\35\0\u2ba4\4\14\0\27\4\4\0\61\4\u2104\0\u016e\4"+ 131 "\2\0\152\4\46\0\7\4\14\0\5\4\5\0\1\4\1\0\12\4"+ 132 "\1\0\15\4\1\0\5\4\1\0\1\4\1\0\2\4\1\0\2\4"+ 133 "\1\0\154\4\41\0\u016b\4\22\0\100\4\2\0\66\4\50\0\15\4"+ 134 "\66\0\2\4\30\0\3\4\31\0\1\4\6\0\5\4\1\0\207\4"+ 135 "\7\0\1\4\34\0\32\4\4\0\1\4\1\0\32\4\13\0\131\4"+ 136 "\3\0\6\4\2\0\6\4\2\0\6\4\2\0\3\4\3\0\2\4"+ 137 "\3\0\2\4\31\0"; 138 139 /** 140 * Translates characters to character classes 141 */ 142 private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); 143 144 /** 145 * Translates DFA states to action switch labels. 146 */ 147 private static final int [] ZZ_ACTION = zzUnpackAction(); 148 149 private static final String ZZ_ACTION_PACKED_0 = 150 "\4\0\1\1\2\2\1\3\1\1\1\4\1\5\2\6"+ 151 "\1\7\1\10\32\3\1\11\1\1\1\12\1\13\1\14"+ 152 "\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\21"+ 153 "\1\24\1\23\1\25\1\1\6\25\1\3\1\0\1\26"+ 154 "\1\0\1\26\1\0\21\3\2\27\1\3\1\27\4\3"+ 155 "\2\30\16\3\1\31\1\3\1\32\6\3\1\33\1\34"+ 156 "\1\35\1\36\1\37\1\40\1\41\1\23\1\42\1\43"+ 157 "\6\25\1\44\4\45\1\0\1\26\1\0\33\3\1\46"+ 158 "\1\47\1\50\1\51\17\3\6\25\1\44\2\0\10\3"+ 159 "\1\52\3\3\1\53\1\3\1\54\11\3\1\55\1\56"+ 160 "\1\57\11\3\6\25\4\0\7\3\1\60\7\3\1\61"+ 161 "\4\3\1\62\5\3\4\25\1\63\1\64\1\65\7\3"+ 162 "\1\66\3\0\1\67\4\3\3\0\4\25\6\3\2\0"+ 163 "\2\3\1\70\2\0\4\25\2\3\1\71\2\3\1\72"+ 164 "\1\73\1\74\1\75\1\76\2\3\1\77\1\100"; 165 166 private static int [] zzUnpackAction() { 167 int [] result = new int[332]; 168 int offset = 0; 169 offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); 170 return result; 171 } 172 173 private static int zzUnpackAction(String packed, int offset, int [] result) { 174 int i = 0; /* index in packed string */ 175 int j = offset; /* index in unpacked array */ 176 int l = packed.length(); 177 while (i < l) { 178 int count = packed.charAt(i++); 179 int value = packed.charAt(i++); 180 do result[j++] = value; while (--count > 0); 181 } 182 return j; 183 } 184 185 186 /** 187 * Translates a state to a row index in the transition table 188 */ 189 private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); 190 191 private static final String ZZ_ROWMAP_PACKED_0 = 192 "\0\0\0\114\0\230\0\344\0\u0130\0\u017c\0\u0130\0\u01c8"+ 193 "\0\u0214\0\u0260\0\u0130\0\u02ac\0\u02f8\0\u0130\0\u0130\0\u0344"+ 194 "\0\u0390\0\u03dc\0\u0428\0\u0474\0\u04c0\0\u050c\0\u0558\0\u05a4"+ 195 "\0\u05f0\0\u063c\0\u0688\0\u06d4\0\u0720\0\u076c\0\u07b8\0\u0804"+ 196 "\0\u0850\0\u089c\0\u08e8\0\u0934\0\u0980\0\u09cc\0\u0a18\0\u0a64"+ 197 "\0\u0ab0\0\u0130\0\u0afc\0\u0b48\0\u0b94\0\u0130\0\u0130\0\u0130"+ 198 "\0\u0130\0\u0130\0\u0be0\0\u0130\0\u0c2c\0\u0c78\0\u0130\0\u0cc4"+ 199 "\0\u0d10\0\u0d5c\0\u0da8\0\u0df4\0\u0e40\0\u0e8c\0\u0ed8\0\u0f24"+ 200 "\0\u0f70\0\u0fbc\0\u1008\0\u1054\0\u02ac\0\u10a0\0\u10ec\0\u1138"+ 201 "\0\u1184\0\u11d0\0\u121c\0\u1268\0\u12b4\0\u1300\0\u134c\0\u1398"+ 202 "\0\u13e4\0\u1430\0\u147c\0\u14c8\0\u1514\0\u1560\0\u15ac\0\u15f8"+ 203 "\0\u1644\0\u1690\0\u16dc\0\u1728\0\u1774\0\u17c0\0\u180c\0\u1858"+ 204 "\0\u18a4\0\u18f0\0\u193c\0\u1988\0\u19d4\0\u1a20\0\u1a6c\0\u1ab8"+ 205 "\0\u1b04\0\u1b50\0\u1b9c\0\u1be8\0\u1c34\0\u1c80\0\u1ccc\0\u01c8"+ 206 "\0\u1d18\0\u01c8\0\u1d64\0\u1db0\0\u1dfc\0\u1e48\0\u1e94\0\u1ee0"+ 207 "\0\u0130\0\u0130\0\u0130\0\u0130\0\u0130\0\u0130\0\u0130\0\u0130"+ 208 "\0\u0130\0\u0130\0\u1f2c\0\u1f78\0\u1fc4\0\u2010\0\u205c\0\u20a8"+ 209 "\0\u20f4\0\u2140\0\u218c\0\u21d8\0\u2224\0\u2270\0\u22bc\0\u22bc"+ 210 "\0\u2308\0\u2354\0\u23a0\0\u23ec\0\u2438\0\u2484\0\u24d0\0\u251c"+ 211 "\0\u2568\0\u25b4\0\u2600\0\u264c\0\u2698\0\u26e4\0\u2730\0\u277c"+ 212 "\0\u27c8\0\u2814\0\u2860\0\u28ac\0\u28f8\0\u2944\0\u2990\0\u29dc"+ 213 "\0\u2a28\0\u2a74\0\u2ac0\0\u01c8\0\u01c8\0\u01c8\0\u01c8\0\u2b0c"+ 214 "\0\u2b58\0\u2ba4\0\u2bf0\0\u2c3c\0\u2c88\0\u2cd4\0\u2d20\0\u2d6c"+ 215 "\0\u2db8\0\u2e04\0\u2e50\0\u2e9c\0\u2ee8\0\u2f34\0\u2f80\0\u2fcc"+ 216 "\0\u3018\0\u3064\0\u30b0\0\u30fc\0\u3148\0\u3194\0\u31e0\0\u322c"+ 217 "\0\u3278\0\u32c4\0\u3310\0\u335c\0\u33a8\0\u33f4\0\u3440\0\u01c8"+ 218 "\0\u348c\0\u34d8\0\u3524\0\u01c8\0\u3570\0\u01c8\0\u35bc\0\u3608"+ 219 "\0\u3654\0\u36a0\0\u36ec\0\u3738\0\u3784\0\u37d0\0\u381c\0\u01c8"+ 220 "\0\u01c8\0\u01c8\0\u3868\0\u38b4\0\u3900\0\u394c\0\u3998\0\u39e4"+ 221 "\0\u3a30\0\u3a7c\0\u3ac8\0\u3b14\0\u3b60\0\u3bac\0\u3bf8\0\u3c44"+ 222 "\0\u3c90\0\u3cdc\0\u3d28\0\u3d74\0\u3dc0\0\u3e0c\0\u3e58\0\u3ea4"+ 223 "\0\u3ef0\0\u3f3c\0\u3f88\0\u3fd4\0\u01c8\0\u4020\0\u406c\0\u40b8"+ 224 "\0\u4104\0\u4150\0\u419c\0\u41e8\0\u01c8\0\u4234\0\u4280\0\u42cc"+ 225 "\0\u4318\0\u01c8\0\u4364\0\u43b0\0\u43fc\0\u4448\0\u4494\0\u44e0"+ 226 "\0\u452c\0\u4578\0\u45c4\0\u0d10\0\u0130\0\u01c8\0\u4610\0\u465c"+ 227 "\0\u46a8\0\u46f4\0\u4740\0\u478c\0\u47d8\0\u01c8\0\u4824\0\u4870"+ 228 "\0\u48bc\0\u01c8\0\u4908\0\u4954\0\u49a0\0\u49ec\0\u4a38\0\u4a84"+ 229 "\0\u4ad0\0\u4b1c\0\u4b68\0\u4bb4\0\u4c00\0\u4c4c\0\u4c98\0\u4ce4"+ 230 "\0\u4d30\0\u4d7c\0\u4dc8\0\u4e14\0\u4e60\0\u4eac\0\u4ef8\0\u01c8"+ 231 "\0\u4f44\0\u4f90\0\u4fdc\0\u5028\0\u5074\0\u50c0\0\u510c\0\u5158"+ 232 "\0\u01c8\0\u51a4\0\u51f0\0\u0130\0\u01c8\0\u0130\0\u0d10\0\u0d10"+ 233 "\0\u523c\0\u5288\0\u01c8\0\u01c8"; 234 235 private static int [] zzUnpackRowMap() { 236 int [] result = new int[332]; 237 int offset = 0; 238 offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); 239 return result; 240 } 241 242 private static int zzUnpackRowMap(String packed, int offset, int [] result) { 243 int i = 0; /* index in packed string */ 244 int j = offset; /* index in unpacked array */ 245 int l = packed.length(); 246 while (i < l) { 247 int high = packed.charAt(i++) << 16; 248 result[j++] = high | packed.charAt(i++); 249 } 250 return j; 251 } 252 253 /** 254 * The transition table of the DFA 255 */ 256 private static final int [] ZZ_TRANS = zzUnpackTrans(); 257 258 private static final String ZZ_TRANS_PACKED_0 = 259 "\1\5\1\6\2\7\1\10\1\5\1\10\1\11\1\12"+ 260 "\2\5\1\13\1\14\1\15\1\10\1\16\1\17\1\20"+ 261 "\1\5\1\21\1\10\1\22\1\10\1\23\1\24\1\10"+ 262 "\1\25\1\26\1\10\1\27\2\10\1\30\1\10\1\31"+ 263 "\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+ 264 "\1\42\1\43\1\44\1\45\4\10\1\46\1\47\1\7"+ 265 "\4\10\1\50\1\51\2\10\1\52\1\53\1\54\1\55"+ 266 "\1\56\1\57\1\60\1\61\1\62\1\5\4\10\1\63"+ 267 "\2\5\103\63\1\64\1\65\4\63\1\66\2\5\102\66"+ 268 "\1\67\1\66\1\70\4\66\1\5\1\6\2\7\1\71"+ 269 "\1\5\1\71\4\5\1\72\2\5\1\71\2\5\1\71"+ 270 "\1\5\12\71\1\73\2\71\1\74\6\71\1\75\1\76"+ 271 "\4\71\1\77\1\100\6\71\1\7\10\71\4\5\1\56"+ 272 "\1\57\1\60\3\5\4\71\116\0\1\7\116\0\2\10"+ 273 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 274 "\1\0\10\10\12\0\4\10\14\0\2\103\111\0\1\104"+ 275 "\107\0\1\103\4\0\2\105\1\106\5\0\1\106\76\0"+ 276 "\1\103\4\0\2\15\1\106\5\0\1\106\74\0\2\10"+ 277 "\1\101\1\102\3\0\2\10\1\107\1\0\2\10\1\0"+ 278 "\7\10\1\110\32\10\1\0\10\10\12\0\4\10\5\0"+ 279 "\2\10\1\101\1\102\3\0\2\10\1\107\1\0\2\10"+ 280 "\1\0\1\10\1\111\2\10\1\112\2\10\1\113\32\10"+ 281 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 282 "\3\0\3\10\1\0\2\10\1\0\12\10\1\114\2\10"+ 283 "\1\115\14\10\1\116\1\117\6\10\1\0\10\10\12\0"+ 284 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 285 "\2\10\1\0\32\10\1\120\1\121\6\10\1\0\1\122"+ 286 "\1\123\6\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 287 "\3\0\3\10\1\0\2\10\1\0\15\10\1\115\15\10"+ 288 "\1\117\6\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 289 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\33\10"+ 290 "\1\124\6\10\1\0\1\10\1\123\6\10\12\0\4\10"+ 291 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 292 "\1\0\11\10\1\125\2\10\1\126\25\10\1\0\10\10"+ 293 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 294 "\1\0\2\10\1\0\10\10\1\127\1\130\2\10\1\131"+ 295 "\2\10\1\132\22\10\1\0\10\10\12\0\4\10\5\0"+ 296 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 297 "\14\10\1\133\2\10\1\132\22\10\1\0\10\10\12\0"+ 298 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 299 "\2\10\1\0\14\10\1\126\25\10\1\0\10\10\12\0"+ 300 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 301 "\2\10\1\0\21\10\1\134\1\135\17\10\1\0\10\10"+ 302 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 303 "\1\0\2\10\1\0\24\10\1\136\1\137\14\10\1\0"+ 304 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 305 "\3\10\1\0\2\10\1\0\25\10\1\137\14\10\1\0"+ 306 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 307 "\3\10\1\0\2\10\1\0\22\10\1\135\17\10\1\0"+ 308 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 309 "\3\10\1\0\1\10\1\140\1\0\1\141\1\10\1\142"+ 310 "\2\10\1\143\20\10\1\144\1\145\12\10\1\0\10\10"+ 311 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 312 "\1\0\1\10\1\140\1\0\5\10\1\143\21\10\1\145"+ 313 "\12\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 314 "\1\102\3\0\3\10\1\0\2\10\1\0\12\10\1\146"+ 315 "\2\10\1\147\16\10\1\150\1\151\4\10\1\0\10\10"+ 316 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 317 "\1\0\2\10\1\0\15\10\1\147\17\10\1\151\4\10"+ 318 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 319 "\3\0\2\10\1\152\1\0\2\10\1\0\1\10\1\153"+ 320 "\22\10\1\154\1\155\4\10\1\156\1\157\6\10\1\0"+ 321 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 322 "\2\10\1\152\1\0\2\10\1\0\25\10\1\155\5\10"+ 323 "\1\157\6\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 324 "\1\101\1\102\3\0\3\10\1\0\1\10\1\160\1\0"+ 325 "\1\160\1\10\1\161\23\10\2\162\12\10\1\0\10\10"+ 326 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 327 "\1\0\1\10\1\160\1\0\5\10\1\163\21\10\1\162"+ 328 "\12\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 329 "\1\102\3\0\2\10\1\164\1\0\2\10\1\0\1\10"+ 330 "\1\165\40\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 331 "\1\101\1\102\3\0\2\10\1\164\1\0\2\10\1\0"+ 332 "\42\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 333 "\1\102\3\0\3\10\1\0\2\10\1\0\11\10\1\166"+ 334 "\2\10\1\167\25\10\1\0\10\10\12\0\4\10\5\0"+ 335 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 336 "\14\10\1\170\25\10\1\0\10\10\12\0\4\10\76\0"+ 337 "\1\171\113\0\1\172\2\0\1\171\110\0\1\173\15\0"+ 338 "\1\63\2\0\103\63\2\0\4\63\32\0\1\174\4\0"+ 339 "\1\175\12\0\1\176\33\0\1\177\1\200\4\0\1\66"+ 340 "\2\0\102\66\1\0\1\66\1\0\4\66\32\0\1\174"+ 341 "\4\0\1\175\12\0\1\176\32\0\1\201\1\0\1\200"+ 342 "\11\0\3\71\4\0\3\71\1\0\45\71\1\0\10\71"+ 343 "\11\0\5\71\10\0\1\202\110\0\3\71\4\0\3\71"+ 344 "\1\0\45\71\1\0\2\71\1\203\1\204\4\71\11\0"+ 345 "\5\71\5\0\3\71\4\0\3\71\1\0\45\71\1\0"+ 346 "\3\71\1\204\4\71\11\0\5\71\5\0\3\71\4\0"+ 347 "\3\71\1\0\31\71\1\205\1\206\12\71\1\0\10\71"+ 348 "\11\0\5\71\5\0\3\71\4\0\3\71\1\0\32\71"+ 349 "\1\206\12\71\1\0\10\71\11\0\5\71\5\0\3\71"+ 350 "\4\0\3\71\1\0\31\71\1\207\1\210\12\71\1\0"+ 351 "\10\71\11\0\5\71\5\0\3\71\4\0\3\71\1\0"+ 352 "\32\71\1\210\12\71\1\0\10\71\11\0\5\71\4\0"+ 353 "\1\211\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 354 "\1\0\42\10\1\0\10\10\12\0\4\10\4\0\1\212"+ 355 "\1\0\1\212\4\0\1\213\1\214\1\215\1\212\2\0"+ 356 "\1\212\1\0\42\212\1\0\10\212\12\0\4\212\14\0"+ 357 "\2\103\1\106\5\0\1\106\106\0\1\216\110\0\2\217"+ 358 "\1\0\2\220\100\0\2\10\1\101\1\102\3\0\3\10"+ 359 "\1\0\2\10\1\0\5\10\1\221\34\10\1\0\10\10"+ 360 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 361 "\1\0\2\10\1\0\25\10\1\222\14\10\1\0\10\10"+ 362 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 363 "\1\0\2\10\1\0\2\10\1\223\37\10\1\0\10\10"+ 364 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 365 "\1\0\2\10\1\0\24\10\1\224\15\10\1\0\10\10"+ 366 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 367 "\1\0\2\10\1\0\25\10\1\225\14\10\1\0\10\10"+ 368 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 369 "\1\0\2\10\1\0\3\10\1\226\36\10\1\0\10\10"+ 370 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 371 "\1\0\2\10\1\0\6\10\1\227\33\10\1\0\10\10"+ 372 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 373 "\1\0\2\10\1\0\13\10\1\230\22\10\1\231\3\10"+ 374 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 375 "\3\0\3\10\1\0\2\10\1\0\16\10\1\232\20\10"+ 376 "\1\233\2\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 377 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\13\10"+ 378 "\1\234\26\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 379 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\16\10"+ 380 "\1\235\23\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 381 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 382 "\1\0\2\10\1\236\5\10\12\0\4\10\5\0\2\10"+ 383 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 384 "\1\0\3\10\1\237\4\10\12\0\4\10\5\0\2\10"+ 385 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\16\10"+ 386 "\1\240\23\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 387 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\12\10"+ 388 "\1\241\27\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 389 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\15\10"+ 390 "\1\242\24\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 391 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\10\10"+ 392 "\1\243\31\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 393 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\30\10"+ 394 "\1\244\11\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 395 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\31\10"+ 396 "\1\245\10\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 397 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\17\10"+ 398 "\1\246\22\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 399 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\31\10"+ 400 "\1\247\10\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 401 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\1\10"+ 402 "\1\250\40\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 403 "\1\101\1\102\3\0\2\10\1\251\1\0\2\10\1\0"+ 404 "\42\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 405 "\1\102\3\0\3\10\1\0\2\10\1\0\42\10\1\0"+ 406 "\6\10\1\252\1\10\12\0\4\10\5\0\2\10\1\101"+ 407 "\1\102\3\0\3\10\1\0\2\10\1\0\42\10\1\0"+ 408 "\7\10\1\253\12\0\4\10\5\0\2\10\1\101\1\102"+ 409 "\3\0\3\10\1\0\2\10\1\0\6\10\1\254\33\10"+ 410 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 411 "\3\0\3\10\1\0\2\10\1\0\3\10\1\254\36\10"+ 412 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 413 "\3\0\3\10\1\0\2\10\1\0\2\10\1\255\37\10"+ 414 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 415 "\3\0\3\10\1\0\2\10\1\0\5\10\1\255\34\10"+ 416 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 417 "\3\0\3\10\1\0\2\10\1\0\30\10\1\256\11\10"+ 418 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 419 "\3\0\3\10\1\0\2\10\1\0\31\10\1\256\10\10"+ 420 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 421 "\3\0\3\10\1\0\2\10\1\0\4\10\1\257\35\10"+ 422 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 423 "\3\0\3\10\1\0\2\10\1\0\7\10\1\257\32\10"+ 424 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 425 "\3\0\3\10\1\0\2\10\1\0\2\10\1\260\37\10"+ 426 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 427 "\3\0\3\10\1\0\2\10\1\0\5\10\1\261\34\10"+ 428 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 429 "\3\0\3\10\1\0\1\10\1\262\1\0\42\10\1\0"+ 430 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 431 "\3\10\1\0\2\10\1\0\1\263\41\10\1\0\10\10"+ 432 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 433 "\1\0\2\10\1\0\4\10\1\264\35\10\1\0\10\10"+ 434 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 435 "\1\0\2\10\1\0\7\10\1\265\32\10\1\0\10\10"+ 436 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 437 "\1\0\2\10\1\0\1\266\41\10\1\0\10\10\12\0"+ 438 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 439 "\1\10\1\267\1\0\42\10\1\0\10\10\12\0\4\10"+ 440 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 441 "\1\0\32\10\1\270\1\271\6\10\1\0\10\10\12\0"+ 442 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 443 "\2\10\1\0\33\10\1\271\6\10\1\0\10\10\12\0"+ 444 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 445 "\2\10\1\0\7\10\1\272\32\10\1\0\10\10\12\0"+ 446 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 447 "\2\10\1\0\4\10\1\273\35\10\1\0\10\10\12\0"+ 448 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 449 "\2\10\1\0\12\10\1\274\27\10\1\0\10\10\12\0"+ 450 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 451 "\2\10\1\0\15\10\1\275\24\10\1\0\10\10\12\0"+ 452 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 453 "\2\10\1\0\15\10\1\276\24\10\1\0\10\10\12\0"+ 454 "\4\10\5\0\3\71\4\0\3\71\1\0\4\71\1\277"+ 455 "\40\71\1\0\10\71\11\0\5\71\5\0\3\71\4\0"+ 456 "\2\71\1\300\1\0\45\71\1\0\10\71\11\0\5\71"+ 457 "\5\0\3\71\4\0\3\71\1\0\27\71\1\301\15\71"+ 458 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 459 "\1\0\30\71\1\302\14\71\1\0\10\71\11\0\5\71"+ 460 "\5\0\3\71\4\0\3\71\1\0\33\71\1\303\11\71"+ 461 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 462 "\1\0\34\71\1\304\10\71\1\0\10\71\11\0\5\71"+ 463 "\5\0\2\211\1\305\4\0\3\211\1\0\2\211\1\0"+ 464 "\42\211\1\0\10\211\12\0\4\211\5\0\3\212\1\102"+ 465 "\1\306\2\0\3\212\1\0\2\212\1\0\42\212\1\0"+ 466 "\10\212\12\0\4\212\10\0\1\102\3\0\1\214\1\215"+ 467 "\106\0\1\102\113\0\1\102\3\0\2\215\114\0\1\307"+ 468 "\5\0\1\307\103\0\2\217\103\0\2\10\1\101\1\102"+ 469 "\3\0\2\10\1\310\1\0\2\10\1\0\42\10\1\0"+ 470 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 471 "\3\10\1\0\2\10\1\0\14\10\1\311\25\10\1\0"+ 472 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 473 "\3\10\1\0\2\10\1\0\1\10\1\312\40\10\1\0"+ 474 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 475 "\3\10\1\0\2\10\1\0\11\10\1\313\30\10\1\0"+ 476 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 477 "\3\10\1\0\2\10\1\0\14\10\1\314\25\10\1\0"+ 478 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 479 "\3\10\1\0\2\10\1\0\24\10\1\315\15\10\1\0"+ 480 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 481 "\3\10\1\0\2\10\1\0\25\10\1\316\14\10\1\0"+ 482 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 483 "\3\10\1\0\2\10\1\0\32\10\1\317\7\10\1\0"+ 484 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 485 "\3\10\1\0\2\10\1\0\1\10\1\320\40\10\1\0"+ 486 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 487 "\3\10\1\0\2\10\1\0\33\10\1\321\6\10\1\0"+ 488 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 489 "\2\10\1\320\1\0\2\10\1\0\42\10\1\0\10\10"+ 490 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 491 "\1\0\2\10\1\0\1\10\1\322\40\10\1\0\10\10"+ 492 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\2\10"+ 493 "\1\323\1\0\2\10\1\0\42\10\1\0\10\10\12\0"+ 494 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 495 "\2\10\1\0\1\10\1\324\40\10\1\0\10\10\12\0"+ 496 "\4\10\5\0\2\10\1\101\1\102\3\0\2\10\1\324"+ 497 "\1\0\2\10\1\0\42\10\1\0\10\10\12\0\4\10"+ 498 "\5\0\2\10\1\101\1\102\3\0\2\10\1\325\1\0"+ 499 "\2\10\1\0\42\10\1\0\10\10\12\0\4\10\5\0"+ 500 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 501 "\13\10\1\326\26\10\1\0\10\10\12\0\4\10\5\0"+ 502 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 503 "\16\10\1\326\23\10\1\0\10\10\12\0\4\10\5\0"+ 504 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 505 "\1\327\41\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 506 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\1\10"+ 507 "\1\330\40\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 508 "\1\101\1\102\3\0\2\10\1\331\1\0\2\10\1\0"+ 509 "\42\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 510 "\1\102\3\0\3\10\1\0\1\10\1\332\1\0\42\10"+ 511 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 512 "\3\0\2\10\1\333\1\0\2\10\1\0\42\10\1\0"+ 513 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 514 "\3\10\1\0\2\10\1\0\11\10\1\334\30\10\1\0"+ 515 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 516 "\3\10\1\0\2\10\1\0\14\10\1\335\25\10\1\0"+ 517 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 518 "\3\10\1\0\2\10\1\0\32\10\1\336\7\10\1\0"+ 519 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 520 "\3\10\1\0\2\10\1\0\33\10\1\337\6\10\1\0"+ 521 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 522 "\3\10\1\0\2\10\1\0\2\10\1\340\37\10\1\0"+ 523 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 524 "\3\10\1\0\2\10\1\0\5\10\1\340\34\10\1\0"+ 525 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 526 "\3\10\1\0\2\10\1\0\6\10\1\341\33\10\1\0"+ 527 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 528 "\3\10\1\0\2\10\1\0\3\10\1\341\36\10\1\0"+ 529 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 530 "\3\10\1\0\2\10\1\0\1\10\1\342\40\10\1\0"+ 531 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 532 "\2\10\1\342\1\0\2\10\1\0\42\10\1\0\10\10"+ 533 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 534 "\1\0\2\10\1\0\4\10\1\343\35\10\1\0\10\10"+ 535 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 536 "\1\0\2\10\1\0\7\10\1\344\32\10\1\0\10\10"+ 537 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 538 "\1\0\2\10\1\0\36\10\1\345\3\10\1\0\10\10"+ 539 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 540 "\1\0\2\10\1\0\37\10\1\346\2\10\1\0\10\10"+ 541 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 542 "\1\0\2\10\1\0\23\10\1\347\16\10\1\0\10\10"+ 543 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 544 "\1\0\2\10\1\0\20\10\1\350\21\10\1\0\10\10"+ 545 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 546 "\1\0\2\10\1\0\34\10\1\351\5\10\1\0\10\10"+ 547 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 548 "\1\0\2\10\1\0\35\10\1\352\4\10\1\0\10\10"+ 549 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 550 "\1\0\2\10\1\0\35\10\1\353\4\10\1\0\10\10"+ 551 "\12\0\4\10\5\0\3\71\4\0\3\71\1\0\14\71"+ 552 "\1\354\30\71\1\0\10\71\11\0\5\71\5\0\3\71"+ 553 "\4\0\3\71\1\0\17\71\1\355\25\71\1\0\10\71"+ 554 "\11\0\5\71\5\0\3\71\4\0\3\71\1\0\5\71"+ 555 "\1\356\37\71\1\0\10\71\11\0\5\71\5\0\3\71"+ 556 "\4\0\3\71\1\0\10\71\1\357\34\71\1\0\10\71"+ 557 "\11\0\5\71\5\0\3\71\4\0\3\71\1\0\4\71"+ 558 "\1\360\40\71\1\0\10\71\11\0\5\71\5\0\3\71"+ 559 "\4\0\2\71\1\361\1\0\45\71\1\0\10\71\11\0"+ 560 "\5\71\4\0\3\211\1\305\4\0\3\211\1\0\2\211"+ 561 "\1\0\42\211\1\0\10\211\12\0\4\211\13\0\1\362"+ 562 "\1\363\1\364\117\0\1\365\1\0\1\365\75\0\2\10"+ 563 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\6\10"+ 564 "\1\366\33\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 565 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\7\10"+ 566 "\1\367\32\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 567 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\3\10"+ 568 "\1\370\36\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 569 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\4\10"+ 570 "\1\371\35\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 571 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\7\10"+ 572 "\1\372\32\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 573 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\4\10"+ 574 "\1\373\35\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 575 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\7\10"+ 576 "\1\374\32\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 577 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\4\10"+ 578 "\1\375\35\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 579 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\7\10"+ 580 "\1\375\32\10\1\0\10\10\12\0\4\10\5\0\2\10"+ 581 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\1\376"+ 582 "\41\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 583 "\1\102\3\0\3\10\1\0\1\10\1\377\1\0\1\377"+ 584 "\41\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 585 "\1\102\3\0\3\10\1\0\1\10\1\377\1\0\42\10"+ 586 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 587 "\3\0\3\10\1\0\2\10\1\0\1\10\1\u0100\40\10"+ 588 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 589 "\3\0\3\10\1\0\2\10\1\0\11\10\1\u0101\30\10"+ 590 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 591 "\3\0\3\10\1\0\2\10\1\0\14\10\1\u0102\25\10"+ 592 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 593 "\3\0\2\10\1\u0103\1\0\2\10\1\0\42\10\1\0"+ 594 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 595 "\3\10\1\0\2\10\1\0\14\10\1\u0104\25\10\1\0"+ 596 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 597 "\3\10\1\0\2\10\1\0\1\10\1\u0105\40\10\1\0"+ 598 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 599 "\2\10\1\u0105\1\0\2\10\1\0\42\10\1\0\10\10"+ 600 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 601 "\1\0\2\10\1\0\26\10\1\u0106\13\10\1\0\10\10"+ 602 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 603 "\1\0\2\10\1\0\27\10\1\u0107\12\10\1\0\10\10"+ 604 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 605 "\1\0\2\10\1\0\32\10\1\u0108\7\10\1\0\10\10"+ 606 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 607 "\1\0\2\10\1\0\33\10\1\u0109\6\10\1\0\10\10"+ 608 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 609 "\1\0\2\10\1\0\1\10\1\u010a\40\10\1\0\10\10"+ 610 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\2\10"+ 611 "\1\u010a\1\0\2\10\1\0\42\10\1\0\10\10\12\0"+ 612 "\4\10\5\0\2\10\1\101\1\102\3\0\2\10\1\u010b"+ 613 "\1\0\2\10\1\0\42\10\1\0\10\10\12\0\4\10"+ 614 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 615 "\1\0\1\10\1\u010c\40\10\1\0\10\10\12\0\4\10"+ 616 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 617 "\1\0\42\10\1\0\2\10\1\u010d\5\10\12\0\4\10"+ 618 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 619 "\1\0\42\10\1\0\3\10\1\u010e\4\10\12\0\4\10"+ 620 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 621 "\1\0\42\10\1\0\3\10\1\u010f\4\10\12\0\4\10"+ 622 "\5\0\3\71\4\0\3\71\1\0\27\71\1\u0110\15\71"+ 623 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 624 "\1\0\30\71\1\u0111\14\71\1\0\10\71\11\0\5\71"+ 625 "\5\0\3\71\4\0\3\71\1\0\45\71\1\0\1\u0112"+ 626 "\7\71\11\0\5\71\5\0\3\71\4\0\3\71\1\0"+ 627 "\45\71\1\0\1\71\1\u0113\6\71\11\0\5\71\5\0"+ 628 "\3\71\4\0\3\71\1\0\45\71\1\0\10\71\11\0"+ 629 "\1\71\1\u0114\3\71\5\0\3\71\4\0\3\71\1\0"+ 630 "\45\71\1\0\10\71\11\0\2\71\1\u0114\2\71\12\0"+ 631 "\1\214\1\0\1\363\1\364\110\0\1\214\113\0\1\214"+ 632 "\1\0\2\364\103\0\1\u0115\113\0\2\10\1\101\1\102"+ 633 "\3\0\3\10\1\0\2\10\1\0\7\10\1\u0116\32\10"+ 634 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 635 "\3\0\3\10\1\0\1\10\1\u0117\1\0\42\10\1\0"+ 636 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 637 "\3\10\1\0\2\10\1\0\4\10\1\u0116\35\10\1\0"+ 638 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 639 "\3\10\1\0\2\10\1\0\1\u0118\41\10\1\0\10\10"+ 640 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 641 "\1\0\1\10\1\u0119\1\0\42\10\1\0\10\10\12\0"+ 642 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 643 "\2\10\1\0\32\10\1\u011a\7\10\1\0\10\10\12\0"+ 644 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 645 "\2\10\1\0\33\10\1\u011b\6\10\1\0\10\10\12\0"+ 646 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 647 "\2\10\1\0\4\10\1\u011c\35\10\1\0\10\10\12\0"+ 648 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 649 "\2\10\1\0\7\10\1\u011d\32\10\1\0\10\10\12\0"+ 650 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 651 "\2\10\1\0\4\10\1\u011e\35\10\1\0\10\10\12\0"+ 652 "\4\10\5\0\2\10\1\101\1\102\3\0\3\10\1\0"+ 653 "\2\10\1\0\42\10\1\u011f\10\10\12\0\4\10\5\0"+ 654 "\2\10\1\101\1\102\3\0\3\10\1\0\2\10\1\0"+ 655 "\42\10\1\u0120\10\10\12\0\4\10\5\0\2\10\1\101"+ 656 "\1\102\3\0\3\10\1\0\2\10\1\0\7\10\1\u011e"+ 657 "\32\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 658 "\1\102\3\0\3\10\1\0\2\10\1\0\42\10\1\u0121"+ 659 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 660 "\3\10\1\0\2\10\1\0\42\10\1\0\4\10\1\u0122"+ 661 "\3\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 662 "\3\10\1\0\2\10\1\0\42\10\1\0\5\10\1\u0122"+ 663 "\2\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 664 "\3\10\1\0\2\10\1\0\26\10\1\u0123\13\10\1\0"+ 665 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 666 "\3\10\1\0\2\10\1\0\27\10\1\u0124\12\10\1\0"+ 667 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 668 "\2\10\1\u0125\1\0\2\10\1\0\42\10\1\0\10\10"+ 669 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 670 "\1\0\2\10\1\0\1\10\1\u0126\40\10\1\0\10\10"+ 671 "\12\0\4\10\5\0\2\10\1\101\1\102\3\0\3\10"+ 672 "\1\0\2\10\1\0\42\10\1\u0127\10\10\12\0\4\10"+ 673 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 674 "\1\0\42\10\1\u0128\10\10\12\0\4\10\5\0\2\10"+ 675 "\1\101\1\102\3\0\3\10\1\0\2\10\1\0\42\10"+ 676 "\1\u0129\10\10\12\0\4\10\5\0\3\71\4\0\3\71"+ 677 "\1\0\7\71\1\u012a\35\71\1\0\10\71\11\0\5\71"+ 678 "\5\0\3\71\4\0\3\71\1\0\12\71\1\u012b\32\71"+ 679 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 680 "\1\0\45\71\1\0\10\71\11\0\3\71\1\u012c\1\71"+ 681 "\5\0\3\71\4\0\3\71\1\0\45\71\1\0\10\71"+ 682 "\11\0\4\71\1\u012d\5\0\2\10\1\101\1\102\3\0"+ 683 "\3\10\1\0\2\10\1\0\23\10\1\u012e\16\10\1\0"+ 684 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 685 "\3\10\1\0\2\10\1\0\20\10\1\u012f\21\10\1\0"+ 686 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 687 "\3\10\1\0\2\10\1\0\20\10\1\u012e\2\10\1\u012e"+ 688 "\16\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 689 "\1\102\3\0\3\10\1\0\2\10\1\0\12\10\1\u0130"+ 690 "\27\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 691 "\1\102\3\0\3\10\1\0\2\10\1\0\15\10\1\u0131"+ 692 "\24\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 693 "\1\102\3\0\3\10\1\0\2\10\1\0\24\10\1\u0132"+ 694 "\15\10\1\0\10\10\12\0\4\10\5\0\2\10\1\101"+ 695 "\1\102\3\0\3\10\1\0\2\10\1\0\25\10\1\u0133"+ 696 "\14\10\1\0\10\10\12\0\4\10\63\0\1\u0134\113\0"+ 697 "\1\u0135\114\0\1\u0135\34\0\2\10\1\101\1\102\3\0"+ 698 "\3\10\1\0\2\10\1\0\3\10\1\u0136\36\10\1\0"+ 699 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 700 "\3\10\1\0\2\10\1\0\6\10\1\u0137\33\10\1\0"+ 701 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 702 "\3\10\1\0\2\10\1\0\27\10\1\u0138\12\10\1\0"+ 703 "\10\10\12\0\4\10\5\0\2\10\1\101\1\102\3\0"+ 704 "\3\10\1\0\2\10\1\0\26\10\1\u0138\13\10\1\0"+ 705 "\10\10\12\0\4\10\63\0\1\u0139\113\0\1\u013a\114\0"+ 706 "\1\u013a\34\0\3\71\4\0\3\71\1\0\15\71\1\u013b"+ 707 "\27\71\1\0\10\71\11\0\5\71\5\0\3\71\4\0"+ 708 "\3\71\1\0\20\71\1\u013c\24\71\1\0\10\71\11\0"+ 709 "\5\71\5\0\3\71\4\0\3\71\1\0\4\71\1\u013d"+ 710 "\40\71\1\0\10\71\11\0\5\71\5\0\3\71\4\0"+ 711 "\2\71\1\u013e\1\0\45\71\1\0\10\71\11\0\5\71"+ 712 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 713 "\1\0\33\10\1\u013f\6\10\1\0\10\10\12\0\4\10"+ 714 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 715 "\1\0\32\10\1\u0140\7\10\1\0\10\10\12\0\4\10"+ 716 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 717 "\1\0\26\10\1\u0141\13\10\1\0\10\10\12\0\4\10"+ 718 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 719 "\1\0\27\10\1\u0141\12\10\1\0\10\10\12\0\4\10"+ 720 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 721 "\1\0\13\10\1\u0142\26\10\1\0\10\10\12\0\4\10"+ 722 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 723 "\1\0\16\10\1\u0143\23\10\1\0\10\10\12\0\4\10"+ 724 "\66\0\1\u0144\114\0\1\u0144\31\0\2\10\1\101\1\102"+ 725 "\3\0\3\10\1\0\2\10\1\0\4\10\1\u0145\35\10"+ 726 "\1\0\10\10\12\0\4\10\5\0\2\10\1\101\1\102"+ 727 "\3\0\3\10\1\0\2\10\1\0\7\10\1\u0145\32\10"+ 728 "\1\0\10\10\12\0\4\10\66\0\1\u0146\114\0\1\u0146"+ 729 "\31\0\3\71\4\0\3\71\1\0\14\71\1\u0147\30\71"+ 730 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 731 "\1\0\17\71\1\u0147\25\71\1\0\10\71\11\0\5\71"+ 732 "\5\0\3\71\4\0\3\71\1\0\14\71\1\u0148\30\71"+ 733 "\1\0\10\71\11\0\5\71\5\0\3\71\4\0\3\71"+ 734 "\1\0\17\71\1\u0148\25\71\1\0\10\71\11\0\5\71"+ 735 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 736 "\1\0\7\10\1\u0149\32\10\1\0\10\10\12\0\4\10"+ 737 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 738 "\1\0\4\10\1\u014a\35\10\1\0\10\10\12\0\4\10"+ 739 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 740 "\1\0\42\10\1\0\2\10\1\u014b\5\10\12\0\4\10"+ 741 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 742 "\1\0\42\10\1\0\3\10\1\u014b\4\10\12\0\4\10"+ 743 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 744 "\1\0\22\10\1\u014c\17\10\1\0\10\10\12\0\4\10"+ 745 "\5\0\2\10\1\101\1\102\3\0\3\10\1\0\2\10"+ 746 "\1\0\21\10\1\u014c\20\10\1\0\10\10\12\0\4\10"; 747 748 private static int [] zzUnpackTrans() { 749 int [] result = new int[21204]; 750 int offset = 0; 751 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); 752 return result; 753 } 754 755 private static int zzUnpackTrans(String packed, int offset, int [] result) { 756 int i = 0; /* index in packed string */ 757 int j = offset; /* index in unpacked array */ 758 int l = packed.length(); 759 while (i < l) { 760 int count = packed.charAt(i++); 761 int value = packed.charAt(i++); 762 value--; 763 do result[j++] = value; while (--count > 0); 764 } 765 return j; 766 } 767 768 769 /* error codes */ 770 private static final int ZZ_UNKNOWN_ERROR = 0; 771 private static final int ZZ_NO_MATCH = 1; 772 private static final int ZZ_PUSHBACK_2BIG = 2; 773 774 /* error messages for the codes above */ 775 private static final String ZZ_ERROR_MSG[] = { 776 "Unkown internal scanner error", 777 "Error: could not match input", 778 "Error: pushback value was too large" 779 }; 780 781 /** 782 * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code> 783 */ 784 private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); 785 786 private static final String ZZ_ATTRIBUTE_PACKED_0 = 787 "\4\0\1\11\1\1\1\11\3\1\1\11\2\1\2\11"+ 788 "\32\1\1\11\3\1\5\11\1\1\1\11\2\1\1\11"+ 789 "\12\1\1\0\1\1\1\0\1\1\1\0\62\1\12\11"+ 790 "\13\1\1\0\1\1\1\0\65\1\2\0\52\1\4\0"+ 791 "\37\1\1\11\11\1\3\0\5\1\3\0\12\1\2\0"+ 792 "\3\1\2\0\11\1\1\11\1\1\1\11\6\1"; 793 794 private static int [] zzUnpackAttribute() { 795 int [] result = new int[332]; 796 int offset = 0; 797 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); 798 return result; 799 } 800 801 private static int zzUnpackAttribute(String packed, int offset, int [] result) { 802 int i = 0; /* index in packed string */ 803 int j = offset; /* index in unpacked array */ 804 int l = packed.length(); 805 while (i < l) { 806 int count = packed.charAt(i++); 807 int value = packed.charAt(i++); 808 do result[j++] = value; while (--count > 0); 809 } 810 return j; 811 } 812 813 /** the input device */ 814 private java.io.Reader zzReader; 815 816 /** the current state of the DFA */ 817 private int zzState; 818 819 /** the current lexical state */ 820 private int zzLexicalState = YYINITIAL; 821 822 /** this buffer contains the current text to be matched and is 823 the source of the yytext() string */ 824 private char zzBuffer[] = new char[ZZ_BUFFERSIZE]; 825 826 /** the textposition at the last accepting state */ 827 private int zzMarkedPos; 828 829 /** the current text position in the buffer */ 830 private int zzCurrentPos; 831 832 /** startRead marks the beginning of the yytext() string in the buffer */ 833 private int zzStartRead; 834 835 /** endRead marks the last character in the buffer, that has been read 836 from input */ 837 private int zzEndRead; 838 839 /** number of newlines encountered up to the start of the matched text */ 840 private int yyline; 841 842 /** the number of characters up to the start of the matched text */ 843 private int yychar; 844 845 /** 846 * the number of characters from the last newline up to the start of the 847 * matched text 848 */ 849 private int yycolumn; 850 851 /** 852 * zzAtBOL == true <=> the scanner is currently at the beginning of a line 853 */ 854 private boolean zzAtBOL = true; 855 856 /** zzAtEOF == true <=> the scanner is at the EOF */ 857 private boolean zzAtEOF; 858 859 /** denotes if the user-EOF-code has already been executed */ 860 private boolean zzEOFDone; 861 862 /* user code: */ 863 StringBuffer string = new StringBuffer(); 864 865 private Symbol symbol(int type) { 866 return new Symbol(type, -1, yychar, yytext()); 867 } 868 869 private Symbol symbol(int type, Object value) { 870 return new Symbol(type, -1, yychar, value); 871 } 872 873 private void scanError() throws QueryParseException { 874 StringBuffer buf = new StringBuffer("Lexical Error: Illegal character <") 875 .append(yytext()).append("> at offset ").append(yychar); 876 throw new QueryParseException(buf.toString()); 877 } 878 879 880 881 /** 882 * Creates a new scanner 883 * There is also a java.io.InputStream version of this constructor. 884 * 885 * @param in the java.io.Reader to read input from. 886 */ 887 public Scanner(java.io.Reader in) { 888 this.zzReader = in; 889 } 890 891 /** 892 * Creates a new scanner. 893 * There is also java.io.Reader version of this constructor. 894 * 895 * @param in the java.io.Inputstream to read input from. 896 */ 897 public Scanner(java.io.InputStream in) { 898 this(new java.io.InputStreamReader(in)); 899 } 900 901 /** 902 * Unpacks the compressed character translation table. 903 * 904 * @param packed the packed character translation table 905 * @return the unpacked character translation table 906 */ 907 private static char [] zzUnpackCMap(String packed) { 908 char [] map = new char[0x10000]; 909 int i = 0; /* index in packed string */ 910 int j = 0; /* index in unpacked array */ 911 while (i < 1726) { 912 int count = packed.charAt(i++); 913 char value = packed.charAt(i++); 914 do map[j++] = value; while (--count > 0); 915 } 916 return map; 917 } 918 919 920 /** 921 * Refills the input buffer. 922 * 923 * @return <code>false</code>, iff there was new input. 924 * 925 * @exception java.io.IOException if any I/O-Error occurs 926 */ 927 private boolean zzRefill() throws java.io.IOException { 928 929 /* first: make room (if you can) */ 930 if (zzStartRead > 0) { 931 System.arraycopy(zzBuffer, zzStartRead, 932 zzBuffer, 0, 933 zzEndRead-zzStartRead); 934 935 /* translate stored positions */ 936 zzEndRead-= zzStartRead; 937 zzCurrentPos-= zzStartRead; 938 zzMarkedPos-= zzStartRead; 939 zzStartRead = 0; 940 } 941 942 /* is the buffer big enough? */ 943 if (zzCurrentPos >= zzBuffer.length) { 944 /* if not: blow it up */ 945 char newBuffer[] = new char[zzCurrentPos*2]; 946 System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length); 947 zzBuffer = newBuffer; 948 } 949 950 /* finally: fill the buffer with new input */ 951 int numRead = zzReader.read(zzBuffer, zzEndRead, 952 zzBuffer.length-zzEndRead); 953 954 if (numRead > 0) { 955 zzEndRead+= numRead; 956 return false; 957 } 958 // unlikely but not impossible: read 0 characters, but not at end of stream 959 if (numRead == 0) { 960 int c = zzReader.read(); 961 if (c == -1) { 962 return true; 963 } else { 964 zzBuffer[zzEndRead++] = (char) c; 965 return false; 966 } 967 } 968 969 // numRead < 0 970 return true; 971 } 972 973 974 /** 975 * Closes the input stream. 976 */ 977 public final void yyclose() throws java.io.IOException { 978 zzAtEOF = true; /* indicate end of file */ 979 zzEndRead = zzStartRead; /* invalidate buffer */ 980 981 if (zzReader != null) 982 zzReader.close(); 983 } 984 985 986 /** 987 * Resets the scanner to read from a new input stream. 988 * Does not close the old reader. 989 * 990 * All internal variables are reset, the old input stream 991 * <b>cannot</b> be reused (internal buffer is discarded and lost). 992 * Lexical state is set to {@code ZZ_INITIAL}. 993 * 994 * @param reader the new input stream 995 */ 996 public final void yyreset(java.io.Reader reader) { 997 zzReader = reader; 998 zzAtBOL = true; 999 zzAtEOF = false; 1000 zzEOFDone = false; 1001 zzEndRead = zzStartRead = 0; 1002 zzCurrentPos = zzMarkedPos = 0; 1003 yyline = yychar = yycolumn = 0; 1004 zzLexicalState = YYINITIAL; 1005 } 1006 1007 1008 /** 1009 * Returns the current lexical state. 1010 */ 1011 public final int yystate() { 1012 return zzLexicalState; 1013 } 1014 1015 1016 /** 1017 * Enters a new lexical state 1018 * 1019 * @param newState the new lexical state 1020 */ 1021 public final void yybegin(int newState) { 1022 zzLexicalState = newState; 1023 } 1024 1025 1026 /** 1027 * Returns the text matched by the current regular expression. 1028 */ 1029 public final String yytext() { 1030 return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead ); 1031 } 1032 1033 1034 /** 1035 * Returns the character at position {@code pos} from the 1036 * matched text. 1037 * 1038 * It is equivalent to yytext().charAt(pos), but faster 1039 * 1040 * @param pos the position of the character to fetch. 1041 * A value from 0 to yylength()-1. 1042 * 1043 * @return the character at position pos 1044 */ 1045 public final char yycharat(int pos) { 1046 return zzBuffer[zzStartRead+pos]; 1047 } 1048 1049 1050 /** 1051 * Returns the length of the matched text region. 1052 */ 1053 public final int yylength() { 1054 return zzMarkedPos-zzStartRead; 1055 } 1056 1057 1058 /** 1059 * Reports an error that occured while scanning. 1060 * 1061 * In a wellformed scanner (no or only correct usage of 1062 * yypushback(int) and a match-all fallback rule) this method 1063 * will only be called with things that "Can't Possibly Happen". 1064 * If this method is called, something is seriously wrong 1065 * (e.g. a JFlex bug producing a faulty scanner etc.). 1066 * 1067 * Usual syntax/scanner level error handling should be done 1068 * in error fallback rules. 1069 * 1070 * @param errorCode the code of the errormessage to display 1071 */ 1072 private void zzScanError(int errorCode) { 1073 String message; 1074 try { 1075 message = ZZ_ERROR_MSG[errorCode]; 1076 } 1077 catch (ArrayIndexOutOfBoundsException e) { 1078 message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; 1079 } 1080 1081 throw new Error(message); 1082 } 1083 1084 1085 /** 1086 * Pushes the specified amount of characters back into the input stream. 1087 * 1088 * They will be read again by then next call of the scanning method 1089 * 1090 * @param number the number of characters to be read again. 1091 * This number must not be greater than yylength()! 1092 */ 1093 public void yypushback(int number) { 1094 if ( number > yylength() ) 1095 zzScanError(ZZ_PUSHBACK_2BIG); 1096 1097 zzMarkedPos -= number; 1098 } 1099 1100 1101 /** 1102 * Contains user EOF-code, which will be executed exactly once, 1103 * when the end of file is reached 1104 */ 1105 private void zzDoEOF() throws java.io.IOException { 1106 if (!zzEOFDone) { 1107 zzEOFDone = true; 1108 yyclose(); 1109 } 1110 } 1111 1112 1113 /** 1114 * Resumes scanning until the next regular expression is matched, 1115 * the end of input is encountered or an I/O-Error occurs. 1116 * 1117 * @return the next token 1118 * @exception java.io.IOException if any I/O-Error occurs 1119 */ 1120 public java_cup.runtime.Symbol next_token() throws java.io.IOException { 1121 int zzInput; 1122 int zzAction; 1123 1124 // cached fields: 1125 int zzCurrentPosL; 1126 int zzMarkedPosL; 1127 int zzEndReadL = zzEndRead; 1128 char [] zzBufferL = zzBuffer; 1129 char [] zzCMapL = ZZ_CMAP; 1130 1131 int [] zzTransL = ZZ_TRANS; 1132 int [] zzRowMapL = ZZ_ROWMAP; 1133 int [] zzAttrL = ZZ_ATTRIBUTE; 1134 1135 while (true) { 1136 zzMarkedPosL = zzMarkedPos; 1137 1138 yychar+= zzMarkedPosL-zzStartRead; 1139 1140 zzAction = -1; 1141 1142 zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; 1143 1144 zzState = ZZ_LEXSTATE[zzLexicalState]; 1145 1146 1147 zzForAction: { 1148 while (true) { 1149 1150 if (zzCurrentPosL < zzEndReadL) 1151 zzInput = zzBufferL[zzCurrentPosL++]; 1152 else if (zzAtEOF) { 1153 zzInput = YYEOF; 1154 break zzForAction; 1155 } 1156 else { 1157 // store back cached positions 1158 zzCurrentPos = zzCurrentPosL; 1159 zzMarkedPos = zzMarkedPosL; 1160 boolean eof = zzRefill(); 1161 // get translated positions and possibly new buffer 1162 zzCurrentPosL = zzCurrentPos; 1163 zzMarkedPosL = zzMarkedPos; 1164 zzBufferL = zzBuffer; 1165 zzEndReadL = zzEndRead; 1166 if (eof) { 1167 zzInput = YYEOF; 1168 break zzForAction; 1169 } 1170 else { 1171 zzInput = zzBufferL[zzCurrentPosL++]; 1172 } 1173 } 1174 int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; 1175 if (zzNext == -1) break zzForAction; 1176 zzState = zzNext; 1177 1178 int zzAttributes = zzAttrL[zzState]; 1179 if ( (zzAttributes & 1) == 1 ) { 1180 zzAction = zzState; 1181 zzMarkedPosL = zzCurrentPosL; 1182 if ( (zzAttributes & 8) == 8 ) break zzForAction; 1183 } 1184 1185 } 1186 } 1187 1188 // store back cached position 1189 zzMarkedPos = zzMarkedPosL; 1190 1191 switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { 1192 case 2: 1193 { /* ignore */ 1194 } 1195 case 65: break; 1196 case 55: 1197 { return symbol(sym.HAVING); 1198 } 1199 case 66: break; 1200 case 25: 1201 { return symbol(sym.IS); 1202 } 1203 case 67: break; 1204 case 49: 1205 { return symbol(sym.WHERE); 1206 } 1207 case 68: break; 1208 case 46: 1209 { return symbol(sym.DESC); 1210 } 1211 case 69: break; 1212 case 11: 1213 { return symbol(sym.GT); 1214 } 1215 case 70: break; 1216 case 59: 1217 { return symbol(sym.DISTINCT); 1218 } 1219 case 71: break; 1220 case 30: 1221 { string.append('\t'); 1222 } 1223 case 72: break; 1224 case 7: 1225 { return symbol(sym.SUM); 1226 } 1227 case 73: break; 1228 case 10: 1229 { return symbol(sym.LT); 1230 } 1231 case 74: break; 1232 case 15: 1233 { string.setLength(0); yybegin(STRING); 1234 } 1235 case 75: break; 1236 case 63: 1237 { return symbol(sym.TIMESTAMP); 1238 } 1239 case 76: break; 1240 case 50: 1241 { return symbol(sym.ILIKE); 1242 } 1243 case 77: break; 1244 case 29: 1245 { return symbol(sym.GTEQ); 1246 } 1247 case 78: break; 1248 case 62: 1249 { return symbol(sym.ANALYZER); 1250 } 1251 case 79: break; 1252 case 22: 1253 { return symbol(sym.DOUBLE, yytext()); 1254 } 1255 case 80: break; 1256 case 41: 1257 { return symbol(sym.NOT); 1258 } 1259 case 81: break; 1260 case 40: 1261 { return symbol(sym.AND); 1262 } 1263 case 82: break; 1264 case 4: 1265 { return symbol(sym.DIV); 1266 } 1267 case 83: break; 1268 case 19: 1269 { string.append('\\'); 1270 } 1271 case 84: break; 1272 case 31: 1273 { string.append('\r'); 1274 } 1275 case 85: break; 1276 case 56: 1277 { return symbol(sym.BETWEEN); 1278 } 1279 case 86: break; 1280 case 54: 1281 { return symbol(sym.OFFSET); 1282 } 1283 case 87: break; 1284 case 47: 1285 { return symbol(sym.DATE); 1286 } 1287 case 88: break; 1288 case 38: 1289 { return symbol(sym.ASC); 1290 } 1291 case 89: break; 1292 case 8: 1293 { return symbol(sym.SUB); 1294 } 1295 case 90: break; 1296 case 43: 1297 { return symbol(sym.TYPE); 1298 } 1299 case 91: break; 1300 case 21: 1301 { return symbol(sym.ES_IDENTIFIER, yytext()); 1302 } 1303 case 92: break; 1304 case 3: 1305 { return symbol(sym.IDENTIFIER, yytext()); 1306 } 1307 case 93: break; 1308 case 34: 1309 { string.append('\"'); 1310 } 1311 case 94: break; 1312 case 39: 1313 { return symbol(sym.ALL); 1314 } 1315 case 95: break; 1316 case 1: 1317 { scanError(); 1318 } 1319 case 96: break; 1320 case 58: 1321 { return symbol(sym.ORDERBY); 1322 } 1323 case 97: break; 1324 case 20: 1325 { yybegin(YYINITIAL); 1326 return symbol(sym.STRING, string.toString()); 1327 } 1328 case 98: break; 1329 case 33: 1330 { string.append('\''); 1331 } 1332 case 99: break; 1333 case 42: 1334 { return symbol(sym.LIKE); 1335 } 1336 case 100: break; 1337 case 23: 1338 { return symbol(sym.OR); 1339 } 1340 case 101: break; 1341 case 26: 1342 { return symbol(sym.IN); 1343 } 1344 case 102: break; 1345 case 9: 1346 { return symbol(sym.EQ); 1347 } 1348 case 103: break; 1349 case 61: 1350 { return symbol(sym.OPERATOR); 1351 } 1352 case 104: break; 1353 case 18: 1354 { yybegin(YYINITIAL); 1355 return symbol(sym.STRING,string.toString()); 1356 } 1357 case 105: break; 1358 case 36: 1359 { return symbol(sym.FROM_IDENTIFIER, yytext()); 1360 } 1361 case 106: break; 1362 case 35: 1363 { yybegin(YYINITIAL); 1364 return symbol(sym.RHINT); 1365 } 1366 case 107: break; 1367 case 37: 1368 { return symbol(sym.PATH_IDENTIFIER, yytext()); 1369 } 1370 case 108: break; 1371 case 32: 1372 { string.append('\n'); 1373 } 1374 case 109: break; 1375 case 57: 1376 { return symbol(sym.LOCATION); 1377 } 1378 case 110: break; 1379 case 28: 1380 { return symbol(sym.LTEQ); 1381 } 1382 case 111: break; 1383 case 24: 1384 { return symbol(sym.AS); 1385 } 1386 case 112: break; 1387 case 12: 1388 { return symbol(sym.LPARA); 1389 } 1390 case 113: break; 1391 case 44: 1392 { return symbol(sym.FROM); 1393 } 1394 case 114: break; 1395 case 53: 1396 { return symbol(sym.SELECT); 1397 } 1398 case 115: break; 1399 case 13: 1400 { return symbol(sym.RPARA); 1401 } 1402 case 116: break; 1403 case 64: 1404 { return symbol(sym.STARTSWITH); 1405 } 1406 case 117: break; 1407 case 27: 1408 { return symbol(sym.NOTEQ); 1409 } 1410 case 118: break; 1411 case 16: 1412 { string.setLength(0); yybegin(SQ_STRING); 1413 } 1414 case 119: break; 1415 case 14: 1416 { return symbol(sym.COMMA); 1417 } 1418 case 120: break; 1419 case 5: 1420 { return symbol(sym.MUL); 1421 } 1422 case 121: break; 1423 case 60: 1424 { return symbol(sym.GROUPBY); 1425 } 1426 case 122: break; 1427 case 52: 1428 { string.setLength(0); yybegin(ES_HINT); return symbol(sym.LHINT_ES); 1429 } 1430 case 123: break; 1431 case 51: 1432 { return symbol(sym.INDEX); 1433 } 1434 case 124: break; 1435 case 17: 1436 { string.append( yytext() ); 1437 } 1438 case 125: break; 1439 case 6: 1440 { return symbol(sym.INTEGER, yytext()); 1441 } 1442 case 126: break; 1443 case 45: 1444 { return symbol(sym.NULL); 1445 } 1446 case 127: break; 1447 case 48: 1448 { return symbol(sym.LIMIT); 1449 } 1450 case 128: break; 1451 default: 1452 if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { 1453 zzAtEOF = true; 1454 zzDoEOF(); 1455 { return new java_cup.runtime.Symbol(sym.EOF); } 1456 } 1457 else { 1458 zzScanError(ZZ_NO_MATCH); 1459 } 1460 } 1461 } 1462 } 1463 1464 1465}