View Javadoc

1   /* The following code was generated by JFlex 1.4.3 on 17.2.15 12:07 */
2   
3   //-------------BEGINING OF THE FIRST PART------------//
4   //---PART 1: imports and packages
5   
6   // generated by yylex.xsl from Core/src/cz/cuni/pogamut/usarmessages/xmlresources/MessageObjectsList.xml, called from ant script build.xml
7   // file was further processed by JFlex to create class Yylex (yylex.java)
8   
9   package cz.cuni.amis.pogamut.usar2004.communication.messages.usarinfomessages;
10  
11  import java.io.Reader;
12  
13  // imports from MessageObjectsList.xml/usarmessages/settings/jflexsettings/javaimport
14  import java.util.*;
15  import javax.vecmath.*;
16  import cz.cuni.amis.pogamut.base.communication.translator.*;
17  import cz.cuni.amis.pogamut.base.communication.parser.*;
18  import cz.cuni.amis.pogamut.base.communication.parser.exception.*;
19  import cz.cuni.amis.pogamut.base.communication.parser.impl.yylex.*;
20  import cz.cuni.amis.pogamut.base.communication.messages.*;
21  import cz.cuni.amis.pogamut.base.communication.worldview.*;
22  import cz.cuni.amis.pogamut.base.communication.worldview.event.*;
23  import cz.cuni.amis.pogamut.base.communication.worldview.object.*;
24  import cz.cuni.amis.pogamut.base3d.worldview.object.*;
25  import cz.cuni.amis.pogamut.base3d.worldview.object.event.*;
26  import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;
27  import cz.cuni.amis.pogamut.usar2004.communication.parser.*;
28  import cz.cuni.amis.pogamut.usar2004.communication.messages.*;
29  import java.lang.reflect.Method;
30  import cz.cuni.amis.utils.exception.*;
31  //my custom imports:
32  
33  import cz.cuni.amis.pogamut.usar2004.communication.messages.datatypes.*;
34  import cz.cuni.amis.pogamut.usar2004.communication.messages.datatypes.CustomTypes.*;
35  
36  
37  
38  //-------------BEGINING OF THE SECOND PART------------//
39  
40  /**
41   * This class is a scanner generated by 
42   * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
43   * on 17.2.15 12:07 from the specification file
44   * <tt>D:/W/PogRel/trunk/project/Main/PogamutUSAR2004/src/main/jflex/usar2004Parser.jflex</tt>
45   */
46  public class Yylex implements IUSAR2004Yylex {
47  
48    /** This character denotes the end of file */
49    public static final int YYEOF = -1;
50  
51    /** initial size of the lookahead buffer */
52    private static final int ZZ_BUFFERSIZE = 16384;
53  
54    /** lexical states */
55    public static final int MSG_MISSTA = 6;
56    public static final int MSG_CONF = 14;
57    public static final int MSG_GEO = 12;
58    public static final int MSG_STA = 8;
59    public static final int MSG_NFO = 4;
60    public static final int MSG_RES = 16;
61    public static final int MSG_DIE = 18;
62    public static final int YYINITIAL = 0;
63    public static final int MSG_SEN = 10;
64    public static final int DUMMY = 2;
65  
66    /**
67     * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
68     * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
69     *                  at the beginning of a line
70     * l is of the form l = 2*k, k a non negative integer
71     */
72    private static final int ZZ_LEXSTATE[] = { 
73       0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6,  7,  7, 
74       8,  8,  9, 9
75    };
76  
77    /** 
78     * Translates characters to character classes
79     */
80    private static final char [] ZZ_CMAP = {
81       0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  6,  0,  0,  5,  0,  0, 
82       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
83      22,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  8,  7,  0, 
84       3,  3, 55, 54,  3,  3,  3,  3,  3,  3,  0,  0,  0,  0,  0,  0, 
85       0, 28, 49, 31, 33, 29, 15, 30, 59, 26, 57, 58, 37, 25, 23, 24, 
86      41,  1, 32, 27, 11,  1, 45, 56,  1,  1,  1,  0,  0,  0,  0,  2, 
87       0, 16, 53, 42, 50, 14, 20, 47, 48, 35,  1, 44, 17, 36, 43, 21, 
88      40, 46, 12, 18, 19, 13, 38, 51, 52, 39,  1, 34,  0,  9,  0,  0, 
89       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
90       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
91       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
92       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
93       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
94       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
95       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
96       0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
97    };
98  
99    /** 
100    * Translates DFA states to action switch labels.
101    */
102   private static final int [] ZZ_ACTION = zzUnpackAction();
103 
104   private static final String ZZ_ACTION_PACKED_0 =
105     "\12\0\1\1\2\2\7\1\2\3\3\4\3\5\3\6"+
106     "\3\7\3\10\3\11\3\12\3\13\1\14\106\0\1\15"+
107     "\1\0\1\16\1\17\1\20\1\0\1\21\1\22\15\0"+
108     "\1\23\50\0\1\24\30\0\1\25\252\0\1\26\34\0"+
109     "\1\27\3\0\1\30\27\0\1\31\35\0\1\32\26\0"+
110     "\1\33\6\0\1\34\14\0\1\35\1\0\1\36\1\37"+
111     "\1\40\40\0\1\41\1\42\14\0\1\43\1\44\23\0"+
112     "\1\45\1\46\20\0\1\47\2\0\1\50\1\51\4\0"+
113     "\1\52\6\0\1\53\2\0\1\54\10\0\1\55\4\0"+
114     "\1\56\5\0\1\57\27\0\1\60\6\0\1\61\11\0"+
115     "\1\62\2\0\1\63\24\0\1\64\14\0\1\65\45\0"+
116     "\1\66\16\0\1\67\1\70\17\0\1\71\17\0\1\72"+
117     "\2\0\1\73\52\0\1\74\2\0\1\75\14\0\1\76"+
118     "\3\0\1\77\6\0\1\100\13\0\1\101\11\0\1\102"+
119     "\10\0\1\103\7\0\1\104\65\0\1\105\2\0\1\106"+
120     "\5\0\1\107\33\0\1\110\2\0\1\111\1\0\1\112"+
121     "\1\0\1\113\1\114\13\0\1\115\11\0\1\116\25\0"+
122     "\1\117\1\0\1\120\1\0\1\121\17\0\1\122\1\0"+
123     "\1\123\7\0\1\124\5\0\1\125\1\0\1\126\1\0"+
124     "\1\127\12\0\1\130\6\0\1\131\2\0\1\132\7\0"+
125     "\1\133\10\0\1\134\7\0\1\135\1\0\1\136\10\0"+
126     "\1\137\6\0\1\140\26\0\1\141\4\0\1\142\23\0"+
127     "\1\143\1\0\1\144\10\0\1\145\5\0\1\146\6\0"+
128     "\1\147\17\0\1\150\12\0\1\151\4\0\1\152\5\0"+
129     "\1\153\1\154\1\155\13\0\1\156\13\0\1\157\1\0"+
130     "\1\160\7\0\1\161\1\0\1\162\2\0\1\163\3\0"+
131     "\1\164\2\0\1\165\75\0\1\166\10\0\1\167";
132 
133   private static int [] zzUnpackAction() {
134     int [] result = new int[1387];
135     int offset = 0;
136     offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
137     return result;
138   }
139 
140   private static int zzUnpackAction(String packed, int offset, int [] result) {
141     int i = 0;       /* index in packed string  */
142     int j = offset;  /* index in unpacked array */
143     int l = packed.length();
144     while (i < l) {
145       int count = packed.charAt(i++);
146       int value = packed.charAt(i++);
147       do result[j++] = value; while (--count > 0);
148     }
149     return j;
150   }
151 
152 
153   /** 
154    * Translates a state to a row index in the transition table
155    */
156   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
157 
158   private static final String ZZ_ROWMAP_PACKED_0 =
159     "\0\0\0\74\0\170\0\264\0\360\0\u012c\0\u0168\0\u01a4"+
160     "\0\u01e0\0\u021c\0\u0258\0\u0258\0\u0294\0\u02d0\0\u030c\0\u0348"+
161     "\0\u0384\0\u03c0\0\u03fc\0\u0438\0\u0258\0\u0294\0\u0258\0\u0294"+
162     "\0\u0474\0\u0258\0\u0294\0\u04b0\0\u0258\0\u0294\0\u04ec\0\u0258"+
163     "\0\u0294\0\u0528\0\u0258\0\u0294\0\u0564\0\u0258\0\u0294\0\u05a0"+
164     "\0\u0258\0\u0294\0\u05dc\0\u0258\0\u0294\0\u0618\0\u0258\0\u0654"+
165     "\0\u0690\0\u06cc\0\u0708\0\u0744\0\u0780\0\u07bc\0\u07f8\0\u0834"+
166     "\0\u0870\0\u08ac\0\u08e8\0\u0924\0\u0960\0\u099c\0\u09d8\0\u0a14"+
167     "\0\u0a50\0\u0a8c\0\u0ac8\0\u0b04\0\u0b40\0\u0b7c\0\u0bb8\0\u0bf4"+
168     "\0\u0c30\0\u0c6c\0\u0ca8\0\u0ce4\0\u0d20\0\u0d5c\0\u0d98\0\u0dd4"+
169     "\0\u0e10\0\u0e4c\0\u0e88\0\u0ec4\0\u0f00\0\u0f3c\0\u0f78\0\u0fb4"+
170     "\0\u0ff0\0\u102c\0\u1068\0\u10a4\0\u10e0\0\u111c\0\u1158\0\u1194"+
171     "\0\u11d0\0\u120c\0\u1248\0\u1284\0\u12c0\0\u12fc\0\u1338\0\u1374"+
172     "\0\u13b0\0\u13ec\0\u1428\0\u1464\0\u14a0\0\u14dc\0\u1518\0\u1554"+
173     "\0\u1590\0\u15cc\0\u1608\0\u1644\0\u1680\0\u0258\0\u16bc\0\u0258"+
174     "\0\u0258\0\u0258\0\u16f8\0\u0258\0\u0258\0\u1734\0\u1770\0\u17ac"+
175     "\0\u17e8\0\u1824\0\u1860\0\u189c\0\u18d8\0\u1914\0\u1950\0\u198c"+
176     "\0\u19c8\0\u1a04\0\u0258\0\u1a40\0\u1a7c\0\u1ab8\0\u1af4\0\u1b30"+
177     "\0\u1b6c\0\u1ba8\0\u1be4\0\u1c20\0\u1c5c\0\u1c98\0\u1cd4\0\u1d10"+
178     "\0\u1d4c\0\u1d88\0\u1dc4\0\u1e00\0\u1e3c\0\u1e78\0\u1eb4\0\u1ef0"+
179     "\0\u1f2c\0\u1f68\0\u1fa4\0\u1fe0\0\u201c\0\u2058\0\u2094\0\u20d0"+
180     "\0\u210c\0\u2148\0\u2184\0\u21c0\0\u21fc\0\u2238\0\u2274\0\u22b0"+
181     "\0\u22ec\0\u2328\0\u2364\0\u0258\0\u23a0\0\u23dc\0\u2418\0\u2454"+
182     "\0\u2490\0\u24cc\0\u2508\0\u2544\0\u2580\0\u25bc\0\u25f8\0\u2634"+
183     "\0\u2670\0\u26ac\0\u26e8\0\u2724\0\u2760\0\u279c\0\u27d8\0\u2814"+
184     "\0\u2850\0\u288c\0\u28c8\0\u2904\0\u0258\0\u2940\0\u297c\0\u29b8"+
185     "\0\u29f4\0\u2a30\0\u2a6c\0\u2aa8\0\u2ae4\0\u2b20\0\u2b5c\0\u2b98"+
186     "\0\u2bd4\0\u2c10\0\u2c4c\0\u2c88\0\u2cc4\0\u2d00\0\u2d3c\0\u2d78"+
187     "\0\u2db4\0\u2df0\0\u2e2c\0\u2e68\0\u2ea4\0\u2ee0\0\u2f1c\0\u2f58"+
188     "\0\u2f94\0\u2fd0\0\u300c\0\u3048\0\u3084\0\u30c0\0\u30fc\0\u3138"+
189     "\0\u3174\0\u31b0\0\u31ec\0\u3228\0\u3264\0\u32a0\0\u32dc\0\u3318"+
190     "\0\u3354\0\u3390\0\u33cc\0\u3408\0\u3444\0\u3480\0\u34bc\0\u34f8"+
191     "\0\u3534\0\u3570\0\u35ac\0\u35e8\0\u3624\0\u3660\0\u369c\0\u36d8"+
192     "\0\u3714\0\u3750\0\u378c\0\u37c8\0\u3804\0\u3840\0\u387c\0\u38b8"+
193     "\0\u38f4\0\u3930\0\u396c\0\u39a8\0\u39e4\0\u3a20\0\u3a5c\0\u3a98"+
194     "\0\u3ad4\0\u3b10\0\u3b4c\0\u3b88\0\u3bc4\0\u3c00\0\u3c3c\0\u3c78"+
195     "\0\u3cb4\0\u3cf0\0\u3d2c\0\u3d68\0\u3da4\0\u3de0\0\u3e1c\0\u3e58"+
196     "\0\u3e94\0\u3ed0\0\u3f0c\0\u3f48\0\u3f84\0\u3fc0\0\u3ffc\0\u4038"+
197     "\0\u4074\0\u40b0\0\u40ec\0\u4128\0\u4164\0\u41a0\0\u41dc\0\u4218"+
198     "\0\u4254\0\u4290\0\u42cc\0\u4308\0\u4344\0\u4380\0\u43bc\0\u43f8"+
199     "\0\u4434\0\u4470\0\u44ac\0\u44e8\0\u4524\0\u4560\0\u459c\0\u45d8"+
200     "\0\u4614\0\u4650\0\u468c\0\u46c8\0\u4704\0\u4740\0\u477c\0\u47b8"+
201     "\0\u47f4\0\u4830\0\u486c\0\u48a8\0\u48e4\0\u4920\0\u495c\0\u4998"+
202     "\0\u49d4\0\u4a10\0\u4a4c\0\u4a88\0\u4ac4\0\u4b00\0\u4b3c\0\u4b78"+
203     "\0\u4bb4\0\u4bf0\0\u4c2c\0\u4c68\0\u4ca4\0\u4ce0\0\u4d1c\0\u4d58"+
204     "\0\u4d94\0\u4dd0\0\u4e0c\0\u4e48\0\u4e84\0\u4ec0\0\u4efc\0\u4f38"+
205     "\0\u4f74\0\u4fb0\0\u4fec\0\u5028\0\u5064\0\u50a0\0\u50dc\0\u0258"+
206     "\0\u5118\0\u5154\0\u5190\0\u51cc\0\u5208\0\u5244\0\u5280\0\u52bc"+
207     "\0\u52f8\0\u5334\0\u5370\0\u53ac\0\u53e8\0\u5424\0\u5460\0\u549c"+
208     "\0\u54d8\0\u5514\0\u5550\0\u558c\0\u55c8\0\u5604\0\u5640\0\u567c"+
209     "\0\u56b8\0\u56f4\0\u5730\0\u576c\0\u0258\0\u57a8\0\u57e4\0\u5820"+
210     "\0\u0258\0\u585c\0\u5898\0\u58d4\0\u5910\0\u594c\0\u5988\0\u59c4"+
211     "\0\u5a00\0\u5a3c\0\u5a78\0\u5ab4\0\u5af0\0\u5b2c\0\u5b68\0\u5ba4"+
212     "\0\u5be0\0\u5c1c\0\u5c58\0\u5c94\0\u5cd0\0\u5d0c\0\u5d48\0\u5d84"+
213     "\0\u0258\0\u5dc0\0\u5dfc\0\u5e38\0\u5e74\0\u5eb0\0\u5eec\0\u5f28"+
214     "\0\u5f64\0\u5fa0\0\u5fdc\0\u6018\0\u6054\0\u6090\0\u60cc\0\u6108"+
215     "\0\u6144\0\u6180\0\u61bc\0\u61f8\0\u6234\0\u6270\0\u62ac\0\u62e8"+
216     "\0\u6324\0\u6360\0\u639c\0\u63d8\0\u6414\0\u6450\0\u0258\0\u648c"+
217     "\0\u64c8\0\u6504\0\u6540\0\u657c\0\u65b8\0\u65f4\0\u6630\0\u666c"+
218     "\0\u66a8\0\u66e4\0\u6720\0\u675c\0\u6798\0\u67d4\0\u6810\0\u684c"+
219     "\0\u6888\0\u68c4\0\u6900\0\u693c\0\u6978\0\u0258\0\u69b4\0\u69f0"+
220     "\0\u6a2c\0\u6a68\0\u6aa4\0\u6ae0\0\u0258\0\u6b1c\0\u6b58\0\u6b94"+
221     "\0\u6bd0\0\u6c0c\0\u6c48\0\u6c84\0\u6cc0\0\u6cfc\0\u6d38\0\u6d74"+
222     "\0\u6db0\0\u0258\0\u6dec\0\u0258\0\u0258\0\u0258\0\u6e28\0\u6e64"+
223     "\0\u6ea0\0\u6edc\0\u6f18\0\u6f54\0\u6f90\0\u6fcc\0\u7008\0\u7044"+
224     "\0\u7080\0\u70bc\0\u70f8\0\u7134\0\u7170\0\u71ac\0\u71e8\0\u7224"+
225     "\0\u7260\0\u729c\0\u72d8\0\u7314\0\u7350\0\u738c\0\u73c8\0\u7404"+
226     "\0\u7440\0\u747c\0\u74b8\0\u74f4\0\u7530\0\u756c\0\u0258\0\u0258"+
227     "\0\u75a8\0\u75e4\0\u7620\0\u765c\0\u7698\0\u76d4\0\u7710\0\u774c"+
228     "\0\u7788\0\u77c4\0\u7800\0\u783c\0\u0258\0\u0258\0\u7878\0\u78b4"+
229     "\0\u78f0\0\u792c\0\u7968\0\u79a4\0\u79e0\0\u7a1c\0\u7a58\0\u7a94"+
230     "\0\u7ad0\0\u7b0c\0\u7b48\0\u7b84\0\u7bc0\0\u7bfc\0\u7c38\0\u7c74"+
231     "\0\u7cb0\0\u0258\0\u0258\0\u7cec\0\u7d28\0\u7d64\0\u7da0\0\u7ddc"+
232     "\0\u7e18\0\u7e54\0\u7e90\0\u7ecc\0\u7f08\0\u7f44\0\u7f80\0\u7fbc"+
233     "\0\u7ff8\0\u8034\0\u8070\0\u0258\0\u80ac\0\u80e8\0\u0258\0\u0258"+
234     "\0\u8124\0\u8160\0\u819c\0\u81d8\0\u0258\0\u8214\0\u8250\0\u828c"+
235     "\0\u82c8\0\u8304\0\u8340\0\u0258\0\u837c\0\u83b8\0\u0258\0\u83f4"+
236     "\0\u8430\0\u846c\0\u84a8\0\u84e4\0\u8520\0\u855c\0\u8598\0\u0258"+
237     "\0\u85d4\0\u8610\0\u864c\0\u8688\0\u0258\0\u86c4\0\u8700\0\u873c"+
238     "\0\u8778\0\u87b4\0\u0258\0\u87f0\0\u882c\0\u8868\0\u88a4\0\u88e0"+
239     "\0\u891c\0\u8958\0\u8994\0\u89d0\0\u8a0c\0\u8a48\0\u8a84\0\u8ac0"+
240     "\0\u8afc\0\u8b38\0\u8b74\0\u8bb0\0\u8bec\0\u8c28\0\u8c64\0\u8ca0"+
241     "\0\u8cdc\0\u8d18\0\u0258\0\u8d54\0\u8d90\0\u8dcc\0\u8e08\0\u8e44"+
242     "\0\u8e80\0\u0258\0\u8ebc\0\u8ef8\0\u8f34\0\u8f70\0\u8fac\0\u8fe8"+
243     "\0\u9024\0\u9060\0\u909c\0\u0258\0\u90d8\0\u9114\0\u0258\0\u9150"+
244     "\0\u918c\0\u91c8\0\u9204\0\u9240\0\u927c\0\u92b8\0\u92f4\0\u9330"+
245     "\0\u936c\0\u93a8\0\u93e4\0\u9420\0\u945c\0\u9498\0\u94d4\0\u9510"+
246     "\0\u954c\0\u9588\0\u95c4\0\u0258\0\u9600\0\u963c\0\u9678\0\u96b4"+
247     "\0\u96f0\0\u972c\0\u9768\0\u97a4\0\u97e0\0\u981c\0\u9858\0\u9894"+
248     "\0\u0258\0\u98d0\0\u990c\0\u9948\0\u9984\0\u99c0\0\u99fc\0\u9a38"+
249     "\0\u9a74\0\u9ab0\0\u9aec\0\u9b28\0\u9b64\0\u9ba0\0\u9bdc\0\u9c18"+
250     "\0\u9c54\0\u9c90\0\u9ccc\0\u9d08\0\u9d44\0\u9d80\0\u9dbc\0\u9df8"+
251     "\0\u9e34\0\u9e70\0\u9eac\0\u9ee8\0\u9f24\0\u9f60\0\u9f9c\0\u9fd8"+
252     "\0\ua014\0\ua050\0\ua08c\0\ua0c8\0\ua104\0\ua140\0\u0258\0\ua17c"+
253     "\0\ua1b8\0\ua1f4\0\ua230\0\ua26c\0\ua2a8\0\ua2e4\0\ua320\0\ua35c"+
254     "\0\ua398\0\ua3d4\0\ua410\0\ua44c\0\ua488\0\u0258\0\u0258\0\ua4c4"+
255     "\0\ua500\0\ua53c\0\ua578\0\ua5b4\0\ua5f0\0\ua62c\0\ua668\0\ua6a4"+
256     "\0\ua6e0\0\ua71c\0\ua758\0\ua794\0\ua7d0\0\ua80c\0\u0258\0\ua848"+
257     "\0\ua884\0\ua8c0\0\ua8fc\0\ua938\0\ua974\0\ua9b0\0\ua9ec\0\uaa28"+
258     "\0\uaa64\0\uaaa0\0\uaadc\0\uab18\0\uab54\0\uab90\0\u0258\0\uabcc"+
259     "\0\uac08\0\u0258\0\uac44\0\uac80\0\uacbc\0\uacf8\0\uad34\0\uad70"+
260     "\0\uadac\0\uade8\0\uae24\0\uae60\0\uae9c\0\uaed8\0\uaf14\0\uaf50"+
261     "\0\uaf8c\0\uafc8\0\ub004\0\ub040\0\ub07c\0\ub0b8\0\ub0f4\0\ub130"+
262     "\0\ub16c\0\ub1a8\0\ub1e4\0\ub220\0\ub25c\0\ub298\0\ub2d4\0\ub310"+
263     "\0\ub34c\0\ub388\0\ub3c4\0\ub400\0\ub43c\0\ub478\0\ub4b4\0\ub4f0"+
264     "\0\ub52c\0\ub568\0\ub5a4\0\ub5e0\0\u0258\0\ub61c\0\ub658\0\u0258"+
265     "\0\ub694\0\ub6d0\0\ub70c\0\ub748\0\ub784\0\ub7c0\0\ub7fc\0\ub838"+
266     "\0\ub874\0\ub8b0\0\ub8ec\0\ub928\0\u0258\0\ub964\0\ub9a0\0\ub9dc"+
267     "\0\u0258\0\uba18\0\uba54\0\uba90\0\ubacc\0\ubb08\0\ubb44\0\u0258"+
268     "\0\ubb80\0\ubbbc\0\ubbf8\0\ubc34\0\ubc70\0\ubcac\0\ubce8\0\ubd24"+
269     "\0\ubd60\0\ubd9c\0\ubdd8\0\u0258\0\ube14\0\ube50\0\ube8c\0\ubec8"+
270     "\0\ubf04\0\ubf40\0\ubf7c\0\ubfb8\0\ubff4\0\u0258\0\uc030\0\uc06c"+
271     "\0\uc0a8\0\uc0e4\0\uc120\0\uc15c\0\uc198\0\uc1d4\0\u0258\0\uc210"+
272     "\0\uc24c\0\uc288\0\uc2c4\0\uc300\0\uc33c\0\uc378\0\u0258\0\uc3b4"+
273     "\0\uc3f0\0\uc42c\0\uc468\0\uc4a4\0\uc4e0\0\uc51c\0\uc558\0\uc594"+
274     "\0\uc5d0\0\uc60c\0\uc648\0\uc684\0\uc6c0\0\uc6fc\0\uc738\0\uc774"+
275     "\0\uc7b0\0\uc7ec\0\uc828\0\uc864\0\uc8a0\0\uc8dc\0\uc918\0\uc954"+
276     "\0\uc990\0\uc9cc\0\uca08\0\uca44\0\uca80\0\ucabc\0\ucaf8\0\ucb34"+
277     "\0\ucb70\0\ucbac\0\ucbe8\0\ucc24\0\ucc60\0\ucc9c\0\uccd8\0\ucd14"+
278     "\0\ucd50\0\ucd8c\0\ucdc8\0\uce04\0\uce40\0\uce7c\0\uceb8\0\ucef4"+
279     "\0\ucf30\0\ucf6c\0\ucfa8\0\ucfe4\0\u0258\0\ud020\0\ud05c\0\u0258"+
280     "\0\ud098\0\ud0d4\0\ud110\0\ud14c\0\ud188\0\u0258\0\ud1c4\0\ud200"+
281     "\0\ud23c\0\ud278\0\ud2b4\0\ud2f0\0\ud32c\0\ud368\0\ud3a4\0\ud3e0"+
282     "\0\ud41c\0\ud458\0\ud494\0\ud4d0\0\ud50c\0\ud548\0\ud584\0\ud5c0"+
283     "\0\ud5fc\0\ud638\0\ud674\0\ud6b0\0\ud6ec\0\ud728\0\ud764\0\ud7a0"+
284     "\0\ud7dc\0\u0258\0\ud818\0\ud854\0\u0258\0\ud890\0\u0258\0\ud8cc"+
285     "\0\u0258\0\u0258\0\ud908\0\ud944\0\ud980\0\ud9bc\0\ud9f8\0\uda34"+
286     "\0\uda70\0\udaac\0\udae8\0\udb24\0\udb60\0\u0258\0\udb9c\0\udbd8"+
287     "\0\udc14\0\udc50\0\udc8c\0\udcc8\0\udd04\0\udd40\0\udd7c\0\u0258"+
288     "\0\uddb8\0\uddf4\0\ude30\0\ude6c\0\udea8\0\udee4\0\udf20\0\udf5c"+
289     "\0\udf98\0\udfd4\0\ue010\0\ue04c\0\ue088\0\ue0c4\0\ue100\0\ue13c"+
290     "\0\ue178\0\ue1b4\0\ue1f0\0\ue22c\0\ue268\0\u0258\0\ue2a4\0\u0258"+
291     "\0\ue2e0\0\u0258\0\ue31c\0\ue358\0\ue394\0\ue3d0\0\ue40c\0\ue448"+
292     "\0\ue484\0\ue4c0\0\ue4fc\0\ue538\0\ue574\0\ue5b0\0\ue5ec\0\ue628"+
293     "\0\ue664\0\u0258\0\ue6a0\0\u0258\0\ue6dc\0\ue718\0\ue754\0\ue790"+
294     "\0\ue7cc\0\ue808\0\ue844\0\u0258\0\ue880\0\ue8bc\0\ue8f8\0\ue934"+
295     "\0\ue970\0\u0258\0\ue9ac\0\u0258\0\ue9e8\0\u0258\0\uea24\0\uea60"+
296     "\0\uea9c\0\uead8\0\ueb14\0\ueb50\0\ueb8c\0\uebc8\0\uec04\0\uec40"+
297     "\0\u0258\0\uec7c\0\uecb8\0\uecf4\0\ued30\0\ued6c\0\ueda8\0\u0258"+
298     "\0\uede4\0\uee20\0\u0258\0\uee5c\0\uee98\0\ueed4\0\uef10\0\uef4c"+
299     "\0\uef88\0\uefc4\0\u0258\0\uf000\0\uf03c\0\uf078\0\uf0b4\0\uf0f0"+
300     "\0\uf12c\0\uf168\0\uf1a4\0\u0258\0\uf1e0\0\uf21c\0\uf258\0\uf294"+
301     "\0\uf2d0\0\uf30c\0\uf348\0\u0258\0\uf384\0\u0258\0\uf3c0\0\uf3fc"+
302     "\0\uf438\0\uf474\0\uf4b0\0\uf4ec\0\uf528\0\uf564\0\u0258\0\uf5a0"+
303     "\0\uf5dc\0\uf618\0\uf654\0\uf690\0\uf6cc\0\u0258\0\uf708\0\uf744"+
304     "\0\uf780\0\uf7bc\0\uf7f8\0\uf834\0\uf870\0\uf8ac\0\uf8e8\0\uf924"+
305     "\0\uf960\0\uf99c\0\uf9d8\0\ufa14\0\ufa50\0\ufa8c\0\ufac8\0\ufb04"+
306     "\0\ufb40\0\ufb7c\0\ufbb8\0\ufbf4\0\u0258\0\ufc30\0\ufc6c\0\ufca8"+
307     "\0\ufce4\0\u0258\0\ufd20\0\ufd5c\0\ufd98\0\ufdd4\0\ufe10\0\ufe4c"+
308     "\0\ufe88\0\ufec4\0\uff00\0\uff3c\0\uff78\0\uffb4\0\ufff0\1\54"+
309     "\1\150\1\244\1\340\1\u011c\1\u0158\0\u0258\1\u0194\0\u0258"+
310     "\1\u01d0\1\u020c\1\u0248\1\u0284\1\u02c0\1\u02fc\1\u0338\1\u0374"+
311     "\0\u0258\1\u03b0\1\u03ec\1\u0428\1\u0464\1\u04a0\0\u0258\1\u04dc"+
312     "\1\u0518\1\u0554\1\u0590\1\u05cc\1\u0608\0\u0258\1\u0644\1\u0680"+
313     "\1\u06bc\1\u06f8\1\u0734\1\u0770\1\u07ac\1\u07e8\1\u0824\1\u0860"+
314     "\1\u089c\1\u08d8\1\u0914\1\u0950\1\u098c\0\u0258\1\u09c8\1\u0a04"+
315     "\1\u0a40\1\u0a7c\1\u0ab8\1\u0af4\1\u0b30\1\u0b6c\1\u0ba8\1\u0be4"+
316     "\0\u0258\1\u0c20\1\u0c5c\1\u0c98\1\u0cd4\0\u0258\1\u0d10\1\u0d4c"+
317     "\1\u0d88\1\u0dc4\1\u0e00\0\u0258\0\u0258\0\u0258\1\u0e3c\1\u0e78"+
318     "\1\u0eb4\1\u0ef0\1\u0f2c\1\u0f68\1\u0fa4\1\u0fe0\1\u101c\1\u1058"+
319     "\1\u1094\0\u0258\1\u10d0\1\u110c\1\u1148\1\u1184\1\u11c0\1\u11fc"+
320     "\1\u1238\1\u1274\1\u12b0\1\u12ec\1\u1328\0\u0258\1\u1364\0\u0258"+
321     "\1\u13a0\1\u13dc\1\u1418\1\u1454\1\u1490\1\u14cc\1\u1508\0\u0258"+
322     "\1\u1544\0\u0258\1\u1580\1\u15bc\0\u0258\1\u15f8\1\u1634\1\u1670"+
323     "\0\u0258\1\u16ac\1\u16e8\0\u0258\1\u1724\1\u1760\1\u179c\1\u17d8"+
324     "\1\u1814\1\u1850\1\u188c\1\u18c8\1\u1904\1\u1940\1\u197c\1\u19b8"+
325     "\1\u19f4\1\u1a30\1\u1a6c\1\u1aa8\1\u1ae4\1\u1b20\1\u1b5c\1\u1b98"+
326     "\1\u1bd4\1\u1c10\1\u1c4c\1\u1c88\1\u1cc4\1\u1d00\1\u1d3c\1\u1d78"+
327     "\1\u1db4\1\u1df0\1\u1e2c\1\u1e68\1\u1ea4\1\u1ee0\1\u1f1c\1\u1f58"+
328     "\1\u1f94\1\u1fd0\1\u200c\1\u2048\1\u2084\1\u20c0\1\u20fc\1\u2138"+
329     "\1\u2174\1\u21b0\1\u21ec\1\u2228\1\u2264\1\u22a0\1\u22dc\1\u2318"+
330     "\1\u2354\1\u2390\1\u23cc\1\u2408\1\u2444\1\u2480\1\u24bc\1\u24f8"+
331     "\1\u2534\0\u0258\1\u2570\1\u25ac\1\u25e8\1\u2624\1\u2660\1\u269c"+
332     "\1\u26d8\1\u2714\0\u0258";
333 
334   private static int [] zzUnpackRowMap() {
335     int [] result = new int[1387];
336     int offset = 0;
337     offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
338     return result;
339   }
340 
341   private static int zzUnpackRowMap(String packed, int offset, int [] result) {
342     int i = 0;  /* index in packed string  */
343     int j = offset;  /* index in unpacked array */
344     int l = packed.length();
345     while (i < l) {
346       int high = packed.charAt(i++) << 16;
347       result[j++] = high | packed.charAt(i++);
348     }
349     return j;
350   }
351 
352   /** 
353    * The transition table of the DFA
354    */
355   private static final int [] ZZ_TRANS = zzUnpackTrans();
356 
357   private static final String ZZ_TRANS_PACKED_0 =
358     "\4\13\1\14\1\15\1\14\17\13\1\14\1\16\1\13"+
359     "\1\17\1\13\1\20\2\13\1\21\1\22\1\23\1\24"+
360     "\32\13\5\25\1\26\1\14\65\25\5\27\1\30\1\14"+
361     "\33\27\1\31\31\27\5\32\1\33\1\14\33\32\1\34"+
362     "\31\32\5\35\1\36\1\14\33\35\1\37\31\35\5\40"+
363     "\1\41\1\14\33\40\1\42\31\40\5\43\1\44\1\14"+
364     "\33\43\1\45\31\43\5\46\1\47\1\14\33\46\1\50"+
365     "\31\46\5\51\1\52\1\14\33\51\1\53\31\51\5\54"+
366     "\1\55\1\14\33\54\1\56\31\54\102\0\1\57\104\0"+
367     "\1\60\106\0\1\61\54\0\1\62\21\0\1\63\73\0"+
368     "\1\64\66\0\1\65\100\0\1\66\70\0\1\67\54\0"+
369     "\1\70\13\0\1\71\3\0\1\72\2\0\1\73\6\0"+
370     "\1\74\41\0\1\75\13\0\1\76\15\0\1\77\7\0"+
371     "\1\100\16\0\11\101\1\0\1\101\1\102\3\101\1\103"+
372     "\6\101\1\104\4\101\1\105\4\101\1\106\4\101\1\107"+
373     "\7\101\1\110\3\101\1\111\12\101\13\0\1\112\3\0"+
374     "\1\113\7\0\1\114\1\115\1\0\1\116\1\117\1\120"+
375     "\1\0\1\121\1\122\1\123\1\124\3\0\1\125\3\0"+
376     "\1\126\3\0\1\127\31\0\1\130\13\0\1\131\1\132"+
377     "\6\0\1\133\1\0\1\134\3\0\1\135\3\0\1\136"+
378     "\16\0\1\137\3\0\11\140\1\0\1\140\1\141\12\140"+
379     "\1\142\1\143\1\144\1\145\1\140\1\146\11\140\1\147"+
380     "\23\140\1\150\2\140\13\0\1\151\3\0\1\152\7\0"+
381     "\1\153\3\0\1\154\3\0\1\155\15\0\1\156\35\0"+
382     "\1\157\17\0\1\160\1\0\1\161\13\0\1\162\3\0"+
383     "\1\163\6\0\1\164\1\0\1\165\31\0\1\166\76\0"+
384     "\1\167\74\0\1\170\66\0\1\171\74\0\1\172\72\0"+
385     "\1\173\77\0\1\174\75\0\1\175\101\0\1\176\50\0"+
386     "\1\177\76\0\1\200\70\0\1\201\71\0\1\202\102\0"+
387     "\1\203\15\0\1\204\50\0\1\205\116\0\1\206\50\0"+
388     "\1\207\53\0\11\101\1\0\14\101\1\104\56\101\1\0"+
389     "\14\101\1\104\14\101\1\210\3\101\1\211\35\101\1\0"+
390     "\2\101\1\212\11\101\1\104\45\101\11\104\1\213\62\104"+
391     "\11\101\1\0\11\101\1\214\2\101\1\104\56\101\1\0"+
392     "\3\101\1\215\1\216\7\101\1\104\56\101\1\0\14\101"+
393     "\1\104\14\101\1\217\41\101\1\0\14\101\1\104\14\101"+
394     "\1\220\41\101\1\0\6\101\1\221\5\101\1\104\45\101"+
395     "\43\0\1\222\3\0\1\223\54\0\1\224\12\0\1\225"+
396     "\50\0\1\226\67\0\1\227\120\0\1\230\52\0\1\231"+
397     "\2\0\1\232\122\0\1\233\41\0\1\234\100\0\1\235"+
398     "\64\0\1\236\1\0\1\237\70\0\1\240\1\241\24\0"+
399     "\1\242\50\0\1\243\4\0\1\244\62\0\1\245\3\0"+
400     "\1\246\4\0\1\247\64\0\1\250\24\0\1\251\77\0"+
401     "\1\252\44\0\1\253\67\0\1\254\107\0\1\255\106\0"+
402     "\1\256\55\0\1\257\15\0\1\260\50\0\1\261\133\0"+
403     "\1\262\13\0\11\140\1\0\14\140\1\142\56\140\1\0"+
404     "\14\140\1\142\20\140\1\263\24\140\11\142\1\264\62\142"+
405     "\11\140\1\0\6\140\1\265\5\140\1\142\56\140\1\0"+
406     "\14\140\1\142\21\140\1\266\34\140\1\0\6\140\1\267"+
407     "\5\140\1\142\14\140\1\270\41\140\1\0\11\140\1\271"+
408     "\2\140\1\142\56\140\1\0\14\140\1\142\14\140\1\272"+
409     "\41\140\1\0\13\140\1\273\1\142\45\140\43\0\1\274"+
410     "\3\0\1\275\54\0\1\276\63\0\1\277\76\0\1\300"+
411     "\75\0\1\301\111\0\1\302\51\0\1\303\72\0\1\304"+
412     "\71\0\1\305\1\0\1\306\22\0\1\307\46\0\1\310"+
413     "\72\0\1\311\74\0\1\312\120\0\1\313\63\0\1\314"+
414     "\57\0\1\315\120\0\1\316\73\0\1\317\47\0\1\320"+
415     "\117\0\1\321\75\0\1\322\41\0\1\323\123\0\1\324"+
416     "\73\0\1\325\102\0\1\326\41\0\1\327\52\0\11\101"+
417     "\1\0\14\101\1\104\15\101\1\330\40\101\1\0\14\101"+
418     "\1\104\21\101\1\331\34\101\1\0\13\101\1\332\1\104"+
419     "\56\101\1\0\4\101\1\333\7\101\1\104\56\101\1\0"+
420     "\14\101\1\104\33\101\1\334\22\101\1\0\6\101\1\335"+
421     "\5\101\1\104\56\101\1\0\14\101\1\104\30\101\1\336"+
422     "\25\101\1\0\4\101\1\337\7\101\1\104\56\101\1\0"+
423     "\11\101\1\340\2\101\1\104\45\101\44\0\1\341\77\0"+
424     "\1\342\100\0\1\343\102\0\1\344\53\0\1\345\72\0"+
425     "\1\346\56\0\1\347\70\0\1\350\70\0\1\351\125\0"+
426     "\1\352\43\0\1\353\65\0\1\354\101\0\1\355\124\0"+
427     "\1\356\6\0\1\357\25\0\1\360\132\0\1\361\42\0"+
428     "\1\362\74\0\1\363\65\0\1\364\34\0\1\365\1\366"+
429     "\45\0\1\367\62\0\1\370\101\0\1\371\72\0\1\372"+
430     "\74\0\1\373\121\0\1\374\67\0\1\375\72\0\1\376"+
431     "\66\0\1\377\101\0\1\u0100\101\0\1\u0101\74\0\1\u0102"+
432     "\34\0\1\u0103\75\0\1\u0104\55\0\11\140\1\0\14\140"+
433     "\1\142\21\140\1\u0105\34\140\1\0\14\140\1\142\15\140"+
434     "\1\u0106\40\140\1\0\14\140\1\142\23\140\1\u0107\32\140"+
435     "\1\0\10\140\1\u0108\3\140\1\142\35\140\1\u0109\20\140"+
436     "\1\0\14\140\1\142\24\140\1\u010a\31\140\1\0\4\140"+
437     "\1\u010b\7\140\1\142\56\140\1\0\14\140\1\142\24\140"+
438     "\1\u010c\31\140\1\0\14\140\1\142\14\140\1\u010d\30\140"+
439     "\44\0\1\u010e\77\0\1\u010f\100\0\1\u0110\62\0\1\u0111"+
440     "\47\0\1\u0112\126\0\1\u0113\36\0\1\u0114\75\0\1\u0115"+
441     "\70\0\1\u0116\76\0\1\u0117\117\0\1\u0118\43\0\1\u0119"+
442     "\137\0\1\u011a\34\0\1\u011b\72\0\1\u011c\74\0\1\u011d"+
443     "\65\0\1\u011e\76\0\1\u011f\73\0\1\u0120\71\0\1\u0121"+
444     "\75\0\1\u0122\73\0\1\u0123\133\0\1\u0124\33\0\1\u0125"+
445     "\73\0\1\u0126\131\0\1\u0127\34\0\1\u0128\56\0\11\101"+
446     "\1\0\4\101\1\u0129\7\101\1\104\56\101\1\0\4\101"+
447     "\1\u012a\7\101\1\104\56\101\1\0\14\101\1\104\24\101"+
448     "\1\u012b\31\101\1\0\2\101\1\u012c\11\101\1\104\56\101"+
449     "\1\0\14\101\1\104\33\101\1\u012d\22\101\1\0\2\101"+
450     "\1\u012e\11\101\1\104\56\101\1\0\14\101\1\104\31\101"+
451     "\1\u012f\24\101\1\0\14\101\1\104\34\101\1\u0130\21\101"+
452     "\1\0\11\101\1\u0131\2\101\1\104\45\101\16\0\1\u0132"+
453     "\73\0\1\u0133\103\0\1\u0134\73\0\1\u0135\63\0\1\u0136"+
454     "\73\0\1\u0137\60\0\1\u0138\4\0\1\u0139\55\0\2\u0138"+
455     "\22\0\1\u013a\100\0\1\u013b\66\0\1\u013c\103\0\1\u013d"+
456     "\72\0\1\u013e\73\0\1\u013f\125\0\1\u0140\57\0\1\u0141"+
457     "\50\0\1\u0142\75\0\1\u0143\74\0\1\u0144\113\0\1\u0145"+
458     "\112\0\1\u0146\31\0\1\u0147\132\0\1\u0148\101\0\1\u0149"+
459     "\31\0\1\u014a\66\0\1\u014b\7\0\1\u014c\37\0\1\u014d"+
460     "\1\u014e\32\0\1\u014f\110\0\1\u0150\46\0\1\u0151\73\0"+
461     "\1\u0152\73\0\1\u0153\103\0\1\u0154\63\0\1\u0155\75\0"+
462     "\1\u0156\127\0\1\u0157\35\0\1\u0158\73\0\1\u0159\55\0"+
463     "\11\140\1\0\4\140\1\u015a\7\140\1\142\56\140\1\0"+
464     "\4\140\1\u015b\7\140\1\142\56\140\1\0\13\140\1\u015c"+
465     "\1\142\56\140\1\0\10\140\1\u015d\3\140\1\142\56\140"+
466     "\1\0\1\140\1\u015e\3\140\1\u015f\6\140\1\142\4\140"+
467     "\1\u0160\4\140\1\u0161\14\140\1\u0162\27\140\1\0\14\140"+
468     "\1\142\11\140\1\u0163\14\140\1\u0164\27\140\1\0\4\140"+
469     "\1\u0165\7\140\1\142\56\140\1\0\14\140\1\142\25\140"+
470     "\1\u0166\30\140\1\0\14\140\1\142\24\140\1\u0167\20\140"+
471     "\16\0\1\u0168\73\0\1\u0169\103\0\1\u016a\63\0\1\u016b"+
472     "\100\0\1\u016c\74\0\1\u016d\132\0\1\u016e\54\0\1\u016f"+
473     "\51\0\1\u0170\74\0\1\u0171\70\0\1\u0172\71\0\1\u0173"+
474     "\120\0\1\u0174\51\0\1\u0175\122\0\1\u0176\44\0\1\u0177"+
475     "\106\0\1\u0178\104\0\1\u0179\54\0\1\u017a\70\0\1\u017b"+
476     "\73\0\1\u017c\71\0\1\u017d\67\0\1\u017e\104\0\1\u017f"+
477     "\73\0\1\u0180\73\0\1\u0181\63\0\1\u0182\55\0\11\101"+
478     "\1\0\14\101\1\u0183\56\101\1\0\14\101\1\u0184\56\101"+
479     "\1\0\11\101\1\u0185\2\101\1\104\56\101\1\0\14\101"+
480     "\1\104\24\101\1\u0186\31\101\1\0\4\101\1\u0187\7\101"+
481     "\1\104\56\101\1\0\14\101\1\104\4\101\1\u0188\51\101"+
482     "\1\0\11\101\1\u0189\2\101\1\104\56\101\1\0\14\101"+
483     "\1\u018a\56\101\1\0\4\101\1\u018b\7\101\1\104\45\101"+
484     "\26\0\1\u018c\73\0\1\u018d\50\0\1\u018e\3\0\1\u018f"+
485     "\1\u0190\55\0\2\u018e\7\0\1\u0191\4\0\1\u0192\55\0"+
486     "\2\u0191\32\0\1\u0193\120\0\1\u0194\23\0\1\u0138\5\0"+
487     "\1\u0195\54\0\2\u0138\7\0\1\u0138\62\0\2\u0138\25\0"+
488     "\1\u0196\67\0\1\u0197\77\0\1\u0198\52\0\11\u013d\1\u0199"+
489     "\62\u013d\53\0\1\u019a\41\0\1\u019b\70\0\1\u019c\72\0"+
490     "\1\u019d\101\0\1\u019e\113\0\1\u019f\56\0\1\u01a0\70\0"+
491     "\1\u01a1\123\0\1\u01a2\43\0\1\u01a3\113\0\1\u01a4\56\0"+
492     "\1\u01a5\74\0\1\u01a6\72\0\1\u01a7\50\0\1\u01a8\3\0"+
493     "\1\u01a9\1\u01aa\55\0\2\u01a8\45\0\1\u01ab\73\0\1\u01ac"+
494     "\32\0\3\u01ad\1\u01ae\3\u01ad\1\u01af\1\u01b0\1\u01b1\54\u01ad"+
495     "\2\u01ae\4\u01ad\65\0\1\u01b2\34\0\1\u01b3\73\0\1\u01b4"+
496     "\120\0\1\u01b5\23\0\1\u01b6\3\0\1\u01b7\1\u01b8\55\0"+
497     "\2\u01b6\57\0\1\u01b9\43\0\1\u01ba\76\0\1\u01bb\120\0"+
498     "\1\u01bc\41\0\1\u01bd\52\0\11\140\1\0\14\140\1\u01be"+
499     "\56\140\1\0\14\140\1\u01bf\56\140\1\0\14\140\1\142"+
500     "\33\140\1\u01c0\22\140\1\0\14\140\1\u01c1\56\140\1\0"+
501     "\13\140\1\u01c2\1\142\56\140\1\0\2\140\1\u01c3\11\140"+
502     "\1\142\56\140\1\0\14\140\1\142\21\140\1\u01c4\34\140"+
503     "\1\0\4\140\1\u01c5\1\140\1\u01c6\5\140\1\142\56\140"+
504     "\1\0\6\140\1\u01c7\5\140\1\142\56\140\1\0\6\140"+
505     "\1\u01c8\5\140\1\142\56\140\1\0\6\140\1\u01c9\5\140"+
506     "\1\142\56\140\1\0\2\140\1\u01ca\11\140\1\142\56\140"+
507     "\1\0\14\140\1\u01cb\56\140\1\0\11\140\1\u01cc\2\140"+
508     "\1\142\45\140\26\0\1\u01cd\73\0\1\u01ce\45\0\11\u016a"+
509     "\1\u01cf\62\u016a\26\0\1\u01d0\62\0\1\u01d1\121\0\1\u01d2"+
510     "\100\0\1\u01d3\66\0\1\u01d4\46\0\1\u01d5\135\0\1\u01d6"+
511     "\72\0\1\u01d7\66\0\1\u01d8\73\0\1\u01d9\37\0\1\u01da"+
512     "\102\0\1\u01db\64\0\1\u01dc\120\0\1\u01dd\30\0\11\u017a"+
513     "\1\0\14\u017a\1\u01de\45\u017a\51\0\1\u01df\71\0\1\u01e0"+
514     "\52\0\1\u01e1\63\0\1\u01e2\60\0\1\u01e3\3\0\1\u01e4"+
515     "\1\u01e5\55\0\2\u01e3\4\0\11\u0180\1\u01e6\62\u0180\3\0"+
516     "\1\u01e7\4\0\1\u01e8\55\0\2\u01e7\32\0\1\u01e9\45\0"+
517     "\3\104\1\u01ea\3\104\1\u01eb\1\u01ec\1\213\54\104\2\u01ea"+
518     "\4\104\11\u0184\1\u01ed\62\u0184\11\101\1\0\14\101\1\104"+
519     "\4\101\1\u01ee\51\101\1\0\14\101\1\104\22\101\1\u01ef"+
520     "\33\101\1\0\2\101\1\u01f0\11\101\1\104\56\101\1\0"+
521     "\11\101\1\u01f1\2\101\1\104\56\101\1\0\1\101\1\u01f2"+
522     "\12\101\1\104\3\101\1\u01f3\41\101\3\104\1\u01f4\4\104"+
523     "\1\u01f5\1\213\54\104\2\u01f4\4\104\11\101\1\0\2\101"+
524     "\1\u01f6\11\101\1\104\45\101\3\0\1\u01f7\3\0\1\u01f8"+
525     "\1\u01f9\55\0\2\u01f7\4\0\11\u018d\1\u01fa\62\u018d\3\0"+
526     "\1\u018e\3\0\1\u01fb\1\0\1\u01fc\54\0\2\u018e\7\0"+
527     "\1\u01fb\62\0\2\u01fb\7\0\1\u018e\3\0\1\u018f\56\0"+
528     "\2\u018e\7\0\1\u0191\5\0\1\u01fd\54\0\2\u0191\7\0"+
529     "\1\u0191\62\0\2\u0191\4\0\11\u0193\1\u01fe\14\u0193\1\u01ff"+
530     "\45\u0193\23\0\1\u0200\71\0\1\u0201\74\0\1\u0202\67\0"+
531     "\1\u0203\75\0\1\u0204\70\0\1\u0205\104\0\1\u0206\67\0"+
532     "\1\u0207\114\0\1\u0208\53\0\1\u0209\53\0\1\u020a\3\0"+
533     "\1\u020b\1\u020c\55\0\2\u020a\21\0\1\u020d\74\0\1\u020e"+
534     "\120\0\1\u020f\53\0\1\u0210\53\0\1\u0211\3\0\1\u0212"+
535     "\1\u0213\55\0\2\u0211\24\0\1\u0214\56\0\1\u0215\3\0"+
536     "\1\u0216\1\u0217\55\0\2\u0215\7\0\1\u01a8\3\0\1\u0218"+
537     "\2\0\1\u0219\53\0\2\u01a8\7\0\1\u0218\62\0\2\u0218"+
538     "\7\0\1\u01a8\3\0\1\u01a9\56\0\2\u01a8\32\0\1\u021a"+
539     "\73\0\1\u021b\45\0\11\u01ad\1\u01b1\65\u01ad\1\u01ae\3\u01ad"+
540     "\1\u021c\1\u01ad\1\u01b1\1\u021d\53\u01ad\2\u01ae\7\u01ad\1\u021c"+
541     "\5\u01ad\1\u01b1\54\u01ad\2\u021c\7\u01ad\1\u01ae\3\u01ad\1\u01af"+
542     "\1\u01ad\1\u01b1\54\u01ad\2\u01ae\4\u01ad\21\0\1\u021e\52\0"+
543     "\11\u01b3\1\u021f\62\u01b3\11\u01b4\1\u0220\14\u01b4\1\u0221\45\u01b4"+
544     "\23\0\1\u0222\53\0\1\u01b6\3\0\1\u0223\2\0\1\u0224"+
545     "\53\0\2\u01b6\7\0\1\u0223\62\0\2\u0223\7\0\1\u01b6"+
546     "\3\0\1\u01b7\56\0\2\u01b6\26\0\1\u0225\114\0\1\u0226"+
547     "\33\0\1\u0227\4\0\1\u0228\55\0\2\u0227\27\0\1\u0229"+
548     "\103\0\1\u022a\4\0\1\u022b\20\0\1\u022c\12\0\11\u01be"+
549     "\1\u022d\62\u01be\11\u01bf\1\u022e\62\u01bf\11\140\1\0\4\140"+
550     "\1\u022f\7\140\1\142\45\140\3\142\1\u0230\3\142\1\u0231"+
551     "\1\u0232\1\264\54\142\2\u0230\4\142\11\140\1\0\2\140"+
552     "\1\u0233\11\140\1\142\56\140\1\0\13\140\1\u0234\1\142"+
553     "\56\140\1\0\4\140\1\u0235\7\140\1\142\56\140\1\0"+
554     "\6\140\1\u0236\5\140\1\142\56\140\1\0\14\140\1\142"+
555     "\24\140\1\u0237\31\140\1\0\7\140\1\u0238\4\140\1\142"+
556     "\56\140\1\0\14\140\1\142\24\140\1\u0239\31\140\1\0"+
557     "\7\140\1\u023a\4\140\1\142\56\140\1\0\14\140\1\142"+
558     "\14\140\1\u023b\30\140\3\142\1\u023c\4\142\1\u023d\1\264"+
559     "\54\142\2\u023c\4\142\11\140\1\0\1\140\1\u023e\12\140"+
560     "\1\142\45\140\3\0\1\u023f\3\0\1\u0240\1\u0241\55\0"+
561     "\2\u023f\4\0\11\u01ce\1\u0242\62\u01ce\11\u01d0\1\u0243\62\u01d0"+
562     "\22\0\1\u0244\130\0\1\u0245\41\0\1\u0246\121\0\1\u0247"+
563     "\102\0\1\u0248\44\0\1\u0249\56\0\1\u024a\100\0\1\u024b"+
564     "\71\0\1\u024c\75\0\1\u024d\123\0\1\u024e\34\0\1\u024f"+
565     "\123\0\1\u0250\27\0\11\u017a\1\0\14\u017a\1\u01de\16\u017a"+
566     "\1\u0251\26\u017a\25\0\1\u0252\116\0\1\u0253\23\0\11\u01e1"+
567     "\1\u0254\62\u01e1\26\0\1\u0255\50\0\1\u01e3\3\0\1\u0256"+
568     "\1\0\1\u0257\54\0\2\u01e3\7\0\1\u0256\62\0\2\u0256"+
569     "\7\0\1\u01e3\3\0\1\u01e4\56\0\2\u01e3\7\0\1\u01e7"+
570     "\5\0\1\u0258\54\0\2\u01e7\7\0\1\u01e7\62\0\2\u01e7"+
571     "\7\0\1\u0259\3\0\1\u025a\1\u025b\55\0\2\u0259\4\0"+
572     "\3\104\1\u01ea\3\104\1\u025c\1\104\1\u025d\54\104\2\u01ea"+
573     "\7\104\1\u025c\5\104\1\213\54\104\2\u025c\7\104\1\u01ea"+
574     "\3\104\1\u01eb\1\104\1\213\54\104\2\u01ea\4\104\11\101"+
575     "\1\0\11\101\1\u025e\2\101\1\104\56\101\1\0\7\101"+
576     "\1\u025f\4\101\1\104\56\101\1\0\14\101\1\104\5\101"+
577     "\1\u0260\50\101\1\0\4\101\1\u0261\7\101\1\104\56\101"+
578     "\1\0\13\101\1\u0262\1\104\56\101\1\0\14\101\1\104"+
579     "\24\101\1\u0263\20\101\3\104\1\u01f4\5\104\1\u0264\54\104"+
580     "\2\u01f4\7\104\1\u01f4\5\104\1\213\54\104\2\u01f4\4\104"+
581     "\11\101\1\0\14\101\1\104\20\101\1\u0265\24\101\3\0"+
582     "\1\u01f7\3\0\1\u0266\1\0\1\u0267\54\0\2\u01f7\7\0"+
583     "\1\u0266\62\0\2\u0266\7\0\1\u01f7\3\0\1\u01f8\56\0"+
584     "\2\u01f7\7\0\1\u01fb\5\0\1\u01fc\54\0\2\u01fb\4\0"+
585     "\11\u0193\1\u01fe\1\u0193\1\u0268\12\u0193\1\u01ff\11\u0193\1\u0269"+
586     "\33\u0193\20\0\1\u026a\116\0\1\u026b\56\0\1\u026c\61\0"+
587     "\1\u026d\105\0\1\u026e\70\0\1\u026f\50\0\11\u0206\1\u0270"+
588     "\62\u0206\26\0\1\u0271\72\0\1\u0272\115\0\1\u0273\27\0"+
589     "\1\u020a\3\0\1\u0274\1\0\1\u0275\54\0\2\u020a\7\0"+
590     "\1\u0274\62\0\2\u0274\7\0\1\u020a\3\0\1\u020b\56\0"+
591     "\2\u020a\66\0\1\u0276\33\0\1\u0277\76\0\1\u0278\63\0"+
592     "\1\u0279\61\0\1\u0211\3\0\1\u027a\1\0\1\u027b\54\0"+
593     "\2\u0211\7\0\1\u027a\62\0\2\u027a\7\0\1\u0211\3\0"+
594     "\1\u0212\56\0\2\u0211\50\0\1\u027c\32\0\1\u0215\3\0"+
595     "\1\u027d\2\0\1\u027e\53\0\2\u0215\7\0\1\u027d\62\0"+
596     "\2\u027d\7\0\1\u0215\3\0\1\u0216\56\0\2\u0215\7\0"+
597     "\1\u0218\6\0\1\u0219\53\0\2\u0218\7\0\1\u027f\3\0"+
598     "\1\u0280\1\u0281\55\0\2\u027f\7\0\1\u0282\3\0\1\u0283"+
599     "\1\u0284\55\0\2\u0282\7\0\1\u0285\3\0\1\u0286\1\u0287"+
600     "\55\0\2\u0285\4\0\3\u01ad\1\u021c\5\u01ad\1\u01b1\1\u021d"+
601     "\53\u01ad\2\u021c\7\u01ad\1\u0288\3\u01ad\1\u0289\1\u028a\1\u01b1"+
602     "\54\u01ad\2\u0288\4\u01ad\16\0\1\u028b\55\0\11\u01b4\1\u0220"+
603     "\14\u01b4\1\u0221\16\u01b4\1\u028c\26\u01b4\20\0\1\u028d\56\0"+
604     "\1\u0223\6\0\1\u0224\53\0\2\u0223\7\0\1\u028e\3\0"+
605     "\1\u028f\1\u0290\55\0\2\u028e\47\0\1\u0291\55\0\1\u0292"+
606     "\51\0\1\u0227\5\0\1\u0293\54\0\2\u0227\7\0\1\u0227"+
607     "\62\0\2\u0227\51\0\1\u0294\44\0\1\u0295\75\0\1\u0296"+
608     "\73\0\1\u0297\53\0\11\140\1\0\14\140\1\u0298\45\140"+
609     "\3\142\1\u0230\3\142\1\u0299\1\142\1\u029a\54\142\2\u0230"+
610     "\7\142\1\u0299\5\142\1\264\54\142\2\u0299\7\142\1\u0230"+
611     "\3\142\1\u0231\1\142\1\264\54\142\2\u0230\4\142\11\140"+
612     "\1\0\14\140\1\142\27\140\1\u029b\26\140\1\0\14\140"+
613     "\1\142\24\140\1\u029c\31\140\1\0\4\140\1\u029d\7\140"+
614     "\1\142\56\140\1\0\2\140\1\u029e\11\140\1\142\56\140"+
615     "\1\0\14\140\1\142\30\140\1\u029f\25\140\1\0\14\140"+
616     "\1\u02a0\56\140\1\0\14\140\1\142\30\140\1\u02a1\25\140"+
617     "\1\0\14\140\1\u02a2\56\140\1\0\14\140\1\142\24\140"+
618     "\1\u02a3\20\140\3\142\1\u023c\5\142\1\u02a4\54\142\2\u023c"+
619     "\7\142\1\u023c\5\142\1\264\54\142\2\u023c\4\142\11\140"+
620     "\1\0\14\140\1\142\20\140\1\u02a5\24\140\3\0\1\u023f"+
621     "\3\0\1\u02a6\1\0\1\u02a7\54\0\2\u023f\7\0\1\u02a6"+
622     "\62\0\2\u02a6\7\0\1\u023f\3\0\1\u0240\56\0\2\u023f"+
623     "\32\0\1\u02a8\73\0\1\u02a9\61\0\1\u02aa\136\0\1\u02ab"+
624     "\75\0\1\u02ac\35\0\1\u02ad\63\0\1\u02ae\121\0\1\u02af"+
625     "\50\0\1\u02b0\150\0\1\u02b1\27\0\1\u02b2\72\0\1\u02b3"+
626     "\110\0\1\u02b4\30\0\11\u017a\1\0\13\u017a\1\u02b5\1\u01de"+
627     "\45\u017a\22\0\1\u02b6\67\0\1\u02b7\60\0\1\u02b8\3\0"+
628     "\1\u02b9\1\u02ba\55\0\2\u02b8\7\0\1\u0256\5\0\1\u0257"+
629     "\54\0\2\u0256\7\0\1\u0259\3\0\1\u02bb\1\0\1\u02bc"+
630     "\54\0\2\u0259\7\0\1\u02bb\62\0\2\u02bb\7\0\1\u0259"+
631     "\3\0\1\u025a\56\0\2\u0259\4\0\3\104\1\u025c\5\104"+
632     "\1\u025d\54\104\2\u025c\4\104\11\101\1\0\4\101\1\u02bd"+
633     "\7\101\1\104\56\101\1\0\6\101\1\u02be\5\101\1\104"+
634     "\56\101\1\0\14\101\1\104\24\101\1\u02bf\31\101\1\0"+
635     "\4\101\1\u02c0\7\101\1\104\56\101\1\0\14\101\1\104"+
636     "\30\101\1\u02c1\25\101\1\0\11\101\1\u02c2\2\101\1\104"+
637     "\56\101\1\0\14\101\1\u02c3\45\101\3\0\1\u0266\5\0"+
638     "\1\u0267\54\0\2\u0266\4\0\11\u0193\1\u01fe\13\u0193\1\u02c4"+
639     "\1\u01ff\14\u0193\1\u02c5\41\u0193\1\u01fe\6\u0193\1\u02c6\5\u0193"+
640     "\1\u01ff\45\u0193\23\0\1\u02c7\73\0\1\u02c8\50\0\11\u026c"+
641     "\1\u02c9\62\u026c\20\0\1\u02ca\56\0\1\u02cb\3\0\1\u02cc"+
642     "\1\u02cd\55\0\2\u02cb\47\0\1\u02ce\33\0\1\u02cf\3\0"+
643     "\1\u02d0\1\u02d1\55\0\2\u02cf\57\0\1\u02d2\46\0\1\u02d3"+
644     "\50\0\1\u0274\5\0\1\u0275\54\0\2\u0274\22\0\1\u02d4"+
645     "\77\0\1\u02d5\124\0\1\u02d6\102\0\1\u02d7\14\0\1\u027a"+
646     "\5\0\1\u027b\54\0\2\u027a\22\0\1\u02d8\60\0\1\u027d"+
647     "\6\0\1\u027e\53\0\2\u027d\7\0\1\u02d9\3\0\1\u02da"+
648     "\1\u02db\55\0\2\u02d9\7\0\1\u027f\3\0\1\u02dc\2\0"+
649     "\1\u02dd\53\0\2\u027f\7\0\1\u02dc\62\0\2\u02dc\7\0"+
650     "\1\u027f\3\0\1\u0280\56\0\2\u027f\7\0\1\u0282\3\0"+
651     "\1\u02de\2\0\1\u02df\53\0\2\u0282\7\0\1\u02de\62\0"+
652     "\2\u02de\7\0\1\u0282\3\0\1\u0283\56\0\2\u0282\7\0"+
653     "\1\u0285\3\0\1\u02e0\2\0\1\u02e1\53\0\2\u0285\7\0"+
654     "\1\u02e0\62\0\2\u02e0\7\0\1\u0285\3\0\1\u0286\56\0"+
655     "\2\u0285\4\0\3\u01ad\1\u0288\3\u01ad\1\u02e2\1\u01ad\1\u01b1"+
656     "\1\u02e3\53\u01ad\2\u0288\7\u01ad\1\u02e2\5\u01ad\1\u01b1\54\u01ad"+
657     "\2\u02e2\7\u01ad\1\u0288\3\u01ad\1\u0289\1\u01ad\1\u01b1\54\u01ad"+
658     "\2\u0288\4\u01ad\26\0\1\u02e4\45\0\11\u01b4\1\u0220\13\u01b4"+
659     "\1\u02e5\1\u0221\45\u01b4\23\0\1\u02e6\53\0\1\u028e\3\0"+
660     "\1\u02e7\2\0\1\u02e8\53\0\2\u028e\7\0\1\u02e7\62\0"+
661     "\2\u02e7\7\0\1\u028e\3\0\1\u028f\56\0\2\u028e\31\0"+
662     "\1\u02e9\121\0\1\u02ea\63\0\1\u02eb\100\0\1\u02ec\105\0"+
663     "\1\u02ed\33\0\1\u02ee\51\0\11\u0298\1\u02ef\62\u0298\3\142"+
664     "\1\u0299\5\142\1\u029a\54\142\2\u0299\4\142\11\140\1\0"+
665     "\3\140\1\u02f0\10\140\1\142\56\140\1\0\11\140\1\u02f1"+
666     "\2\140\1\142\56\140\1\0\14\140\1\142\33\140\1\u02f2"+
667     "\22\140\1\0\14\140\1\142\4\140\1\u02f3\51\140\1\0"+
668     "\4\140\1\u02f4\7\140\1\142\45\140\3\142\1\u02f5\3\142"+
669     "\1\u02f6\1\u02f7\1\264\54\142\2\u02f5\4\142\11\140\1\0"+
670     "\4\140\1\u02f8\7\140\1\142\45\140\3\142\1\u02f9\3\142"+
671     "\1\u02fa\1\u02fb\1\264\54\142\2\u02f9\4\142\11\140\1\0"+
672     "\14\140\1\142\30\140\1\u02fc\25\140\1\0\14\140\1\142"+
673     "\21\140\1\u02fd\23\140\3\0\1\u02a6\5\0\1\u02a7\54\0"+
674     "\2\u02a6\4\0\11\u02a8\1\u02fe\62\u02a8\11\u02a9\1\u02ff\62\u02a9"+
675     "\23\0\1\u0300\76\0\1\u0301\114\0\1\u0302\40\0\1\u0303"+
676     "\126\0\1\u0304\44\0\1\u0305\146\0\1\u0306\43\0\1\u0307"+
677     "\50\0\1\u0308\54\0\3\u0309\3\0\2\u0309\2\0\13\u0309"+
678     "\1\0\13\u0309\1\0\31\u0309\23\0\1\u030a\50\0\11\u017a"+
679     "\1\0\14\u017a\1\u01de\23\u017a\1\u030b\21\u017a\16\0\1\u030c"+
680     "\103\0\1\u030d\50\0\1\u02b8\3\0\1\u030e\1\0\1\u030f"+
681     "\54\0\2\u02b8\7\0\1\u030e\62\0\2\u030e\7\0\1\u02b8"+
682     "\3\0\1\u02b9\56\0\2\u02b8\7\0\1\u02bb\5\0\1\u02bc"+
683     "\54\0\2\u02bb\4\0\11\101\1\0\4\101\1\u0310\7\101"+
684     "\1\104\56\101\1\0\14\101\1\104\24\101\1\u0311\31\101"+
685     "\1\0\14\101\1\104\30\101\1\u0312\25\101\1\0\2\101"+
686     "\1\u0313\11\101\1\104\56\101\1\0\14\101\1\104\30\101"+
687     "\1\u0314\25\101\1\0\4\101\1\u0315\7\101\1\104\45\101"+
688     "\3\104\1\u0316\4\104\1\u0317\1\213\54\104\2\u0316\4\104"+
689     "\11\u0193\1\u01fe\3\u0193\1\u0318\10\u0193\1\u01ff\56\u0193\1\u01fe"+
690     "\14\u0193\1\u01ff\23\u0193\1\u0319\32\u0193\1\u01fe\14\u0193\1\u01ff"+
691     "\24\u0193\1\u031a\20\u0193\43\0\1\u031b\46\0\1\u031c\100\0"+
692     "\1\u031d\53\0\1\u02cb\3\0\1\u031e\1\0\1\u031f\54\0"+
693     "\2\u02cb\7\0\1\u031e\62\0\2\u031e\7\0\1\u02cb\3\0"+
694     "\1\u02cc\56\0\2\u02cb\31\0\1\u0320\51\0\1\u02cf\3\0"+
695     "\1\u0321\1\0\1\u0322\54\0\2\u02cf\7\0\1\u0321\62\0"+
696     "\2\u0321\7\0\1\u02cf\3\0\1\u02d0\56\0\2\u02cf\32\0"+
697     "\1\u0323\50\0\1\u0324\3\0\1\u0325\1\u0326\55\0\2\u0324"+
698     "\32\0\1\u0327\73\0\1\u0328\73\0\1\u0329\63\0\1\u032a"+
699     "\103\0\1\u032b\50\0\1\u02d9\3\0\1\u032c\2\0\1\u032d"+
700     "\53\0\2\u02d9\7\0\1\u032c\62\0\2\u032c\7\0\1\u02d9"+
701     "\3\0\1\u02da\56\0\2\u02d9\7\0\1\u02dc\6\0\1\u02dd"+
702     "\53\0\2\u02dc\7\0\1\u032e\3\0\1\u032f\1\u0330\55\0"+
703     "\2\u032e\7\0\1\u02de\6\0\1\u02df\53\0\2\u02de\7\0"+
704     "\1\u0331\3\0\1\u0332\1\u0333\55\0\2\u0331\7\0\1\u02e0"+
705     "\6\0\1\u02e1\53\0\2\u02e0\7\0\1\u0334\3\0\1\u0335"+
706     "\1\u0336\55\0\2\u0334\4\0\3\u01ad\1\u02e2\5\u01ad\1\u01b1"+
707     "\1\u02e3\53\u01ad\2\u02e2\7\u01ad\1\u0337\3\u01ad\1\u0338\1\u0339"+
708     "\1\u01b1\54\u01ad\2\u0337\4\u01ad\13\0\1\u033a\3\0\1\u033b"+
709     "\3\0\1\u033a\1\u033b\47\0\11\u01b4\1\u0220\14\u01b4\1\u0221"+
710     "\23\u01b4\1\u033c\21\u01b4\43\0\1\u033d\33\0\1\u02e7\6\0"+
711     "\1\u02e8\53\0\2\u02e7\7\0\1\u033e\3\0\1\u033f\1\u0340"+
712     "\55\0\2\u033e\57\0\1\u0341\46\0\1\u0342\120\0\1\u0343"+
713     "\40\0\1\u0344\116\0\1\u0345\46\0\1\u0346\55\0\11\140"+
714     "\1\0\4\140\1\u0347\7\140\1\142\56\140\1\0\14\140"+
715     "\1\142\4\140\1\u0348\51\140\1\0\14\140\1\u0349\56\140"+
716     "\1\0\11\140\1\u034a\2\140\1\142\56\140\1\0\14\140"+
717     "\1\u034b\45\140\3\142\1\u02f5\3\142\1\u034c\1\142\1\u034d"+
718     "\54\142\2\u02f5\7\142\1\u034c\5\142\1\264\54\142\2\u034c"+
719     "\7\142\1\u02f5\3\142\1\u02f6\1\142\1\264\54\142\2\u02f5"+
720     "\4\142\11\140\1\0\14\140\1\u034e\45\140\3\142\1\u02f9"+
721     "\3\142\1\u034f\1\142\1\u0350\54\142\2\u02f9\7\142\1\u034f"+
722     "\5\142\1\264\54\142\2\u034f\7\142\1\u02f9\3\142\1\u02fa"+
723     "\1\142\1\264\54\142\2\u02f9\4\142\11\140\1\0\1\140"+
724     "\1\u0351\12\140\1\142\56\140\1\0\4\140\1\u0352\7\140"+
725     "\1\142\45\140\3\0\1\u0353\62\0\2\u0353\17\0\1\u0354"+
726     "\3\0\1\u0355\3\0\1\u0354\1\u0355\137\0\1\u0356\46\0"+
727     "\1\u0357\100\0\1\u0358\67\0\1\u0359\72\0\1\u035a\53\0"+
728     "\1\u035b\114\0\1\u035c\30\0\3\u0309\3\0\2\u0309\1\u035d"+
729     "\1\0\13\u0309\1\0\13\u0309\1\0\31\u0309\26\0\1\u035e"+
730     "\45\0\11\u017a\1\0\6\u017a\1\u035f\5\u017a\1\u01de\45\u017a"+
731     "\22\0\1\u0360\51\0\11\u030d\1\u0361\62\u030d\3\0\1\u030e"+
732     "\5\0\1\u030f\54\0\2\u030e\4\0\11\101\1\0\2\101"+
733     "\1\u0362\11\101\1\104\56\101\1\0\4\101\1\u0363\7\101"+
734     "\1\104\56\101\1\0\7\101\1\u0364\4\101\1\104\56\101"+
735     "\1\0\14\101\1\u0365\56\101\1\0\7\101\1\u0366\4\101"+
736     "\1\104\56\101\1\0\14\101\1\104\24\101\1\u0367\20\101"+
737     "\3\104\1\u0316\5\104\1\u0368\54\104\2\u0316\7\104\1\u0316"+
738     "\5\104\1\213\54\104\2\u0316\4\104\11\u0193\1\u01fe\14\u0193"+
739     "\1\u01ff\23\u0193\1\u0369\32\u0193\1\u01fe\14\u0193\1\u01ff\25\u0193"+
740     "\1\u036a\30\u0193\1\u01fe\14\u0193\1\u01ff\30\u0193\1\u036b\14\u0193"+
741     "\25\0\1\u036c\70\0\1\u036d\114\0\1\u036e\33\0\1\u031e"+
742     "\5\0\1\u031f\54\0\2\u031e\57\0\1\u036f\23\0\1\u0321"+
743     "\5\0\1\u0322\54\0\2\u0321\7\0\1\u0370\3\0\1\u0371"+
744     "\1\u0372\55\0\2\u0370\7\0\1\u0324\3\0\1\u0373\1\0"+
745     "\1\u0374\54\0\2\u0324\7\0\1\u0373\62\0\2\u0373\7\0"+
746     "\1\u0324\3\0\1\u0325\56\0\2\u0324\7\0\1\u0375\4\0"+
747     "\1\u0376\55\0\2\u0375\7\0\1\u0377\3\0\1\u0378\1\u0379"+
748     "\55\0\2\u0377\7\0\1\u037a\3\0\1\u037b\1\u037c\55\0"+
749     "\2\u037a\32\0\1\u037d\45\0\11\u032b\1\u037e\62\u032b\3\0"+
750     "\1\u032c\6\0\1\u032d\53\0\2\u032c\7\0\1\u037f\3\0"+
751     "\1\u0380\1\u0381\55\0\2\u037f\7\0\1\u032e\3\0\1\u0382"+
752     "\2\0\1\u0383\53\0\2\u032e\7\0\1\u0382\62\0\2\u0382"+
753     "\7\0\1\u032e\3\0\1\u032f\56\0\2\u032e\7\0\1\u0331"+
754     "\3\0\1\u0384\2\0\1\u0385\53\0\2\u0331\7\0\1\u0384"+
755     "\62\0\2\u0384\7\0\1\u0331\3\0\1\u0332\56\0\2\u0331"+
756     "\7\0\1\u0334\3\0\1\u0386\1\0\1\u0387\54\0\2\u0334"+
757     "\7\0\1\u0386\62\0\2\u0386\7\0\1\u0334\3\0\1\u0335"+
758     "\56\0\2\u0334\4\0\3\u01ad\1\u0337\3\u01ad\1\u0388\1\u01ad"+
759     "\1\u01b1\1\u0389\53\u01ad\2\u0337\7\u01ad\1\u0388\5\u01ad\1\u01b1"+
760     "\54\u01ad\2\u0388\7\u01ad\1\u0337\3\u01ad\1\u0338\1\u01ad\1\u01b1"+
761     "\54\u01ad\2\u0337\4\u01ad\14\0\1\u038a\77\0\1\u038b\53\0"+
762     "\11\u01b4\1\u0220\6\u01b4\1\u038c\5\u01b4\1\u0221\45\u01b4\25\0"+
763     "\1\u038d\51\0\1\u033e\3\0\1\u038e\1\0\1\u038f\54\0"+
764     "\2\u033e\7\0\1\u038e\62\0\2\u038e\7\0\1\u033e\3\0"+
765     "\1\u033f\56\0\2\u033e\26\0\1\u0390\54\0\1\u0391\3\0"+
766     "\1\u0392\1\u0393\55\0\2\u0391\60\0\1\u0394\33\0\1\u0395"+
767     "\74\0\1\u0396\104\0\1\u0397\45\0\11\140\1\0\14\140"+
768     "\1\u0398\56\140\1\0\11\140\1\u0399\2\140\1\142\45\140"+
769     "\3\142\1\u039a\3\142\1\u039b\1\u039c\1\264\54\142\2\u039a"+
770     "\4\142\11\140\1\0\4\140\1\u039d\7\140\1\142\45\140"+
771     "\3\142\1\u039e\3\142\1\u039f\1\u03a0\1\264\54\142\2\u039e"+
772     "\7\142\1\u034c\5\142\1\u034d\54\142\2\u034c\7\142\1\u03a1"+
773     "\3\142\1\u03a2\1\u03a3\1\264\54\142\2\u03a1\7\142\1\u034f"+
774     "\5\142\1\u0350\54\142\2\u034f\4\142\11\140\1\0\14\140"+
775     "\1\142\20\140\1\u03a4\35\140\1\0\14\140\1\u03a5\45\140"+
776     "\26\0\1\u03a6\61\0\1\u03a7\77\0\1\u03a8\100\0\1\u03a9"+
777     "\121\0\1\u03aa\36\0\1\u03ab\75\0\1\u03ac\76\0\1\u03ad"+
778     "\76\0\1\u03ae\63\0\1\u03af\60\0\1\u03b0\3\0\1\u03b1"+
779     "\1\u03b2\55\0\2\u03b0\4\0\11\u017a\1\0\11\u017a\1\u03b3"+
780     "\2\u017a\1\u01de\45\u017a\26\0\1\u03b4\45\0\11\101\1\0"+
781     "\14\101\1\u03b5\56\101\1\0\14\101\1\104\5\101\1\u03b6"+
782     "\50\101\1\0\4\101\1\u03b7\7\101\1\104\45\101\3\104"+
783     "\1\u03b8\3\104\1\u03b9\1\u03ba\1\213\54\104\2\u03b8\4\104"+
784     "\11\101\1\0\4\101\1\u03bb\7\101\1\104\56\101\1\0"+
785     "\10\101\1\u03bc\3\101\1\104\45\101\11\u0193\1\u01fe\14\u0193"+
786     "\1\u01ff\31\u0193\1\u03bd\24\u0193\1\u01fe\14\u0193\1\u03be\56\u0193"+
787     "\1\u01fe\4\u0193\1\u03bf\7\u0193\1\u01ff\45\u0193\53\0\1\u03c0"+
788     "\46\0\1\u03c1\72\0\1\u03c2\74\0\1\u03c3\50\0\1\u0370"+
789     "\3\0\1\u03c4\1\0\1\u03c5\54\0\2\u0370\7\0\1\u03c4"+
790     "\62\0\2\u03c4\7\0\1\u0370\3\0\1\u0371\56\0\2\u0370"+
791     "\7\0\1\u0373\5\0\1\u0374\54\0\2\u0373\7\0\1\u0375"+
792     "\6\0\1\u03c6\53\0\2\u0375\7\0\1\u0375\62\0\2\u0375"+
793     "\7\0\1\u0377\3\0\1\u03c7\1\0\1\u03c8\54\0\2\u0377"+
794     "\7\0\1\u03c7\62\0\2\u03c7\7\0\1\u0377\3\0\1\u0378"+
795     "\56\0\2\u0377\7\0\1\u037a\3\0\1\u03c9\2\0\1\u03ca"+
796     "\53\0\2\u037a\7\0\1\u03c9\62\0\2\u03c9\7\0\1\u037a"+
797     "\3\0\1\u037b\56\0\2\u037a\7\0\1\u03cb\4\0\1\u03cc"+
798     "\55\0\2\u03cb\7\0\1\u037f\3\0\1\u03cd\1\0\1\u03ce"+
799     "\54\0\2\u037f\7\0\1\u03cd\62\0\2\u03cd\7\0\1\u037f"+
800     "\3\0\1\u0380\56\0\2\u037f\7\0\1\u0382\6\0\1\u0383"+
801     "\53\0\2\u0382\7\0\1\u03cf\3\0\1\u03d0\1\u03d1\55\0"+
802     "\2\u03cf\7\0\1\u0384\6\0\1\u0385\53\0\2\u0384\7\0"+
803     "\1\u03d2\3\0\1\u03d3\1\u03d4\55\0\2\u03d2\7\0\1\u0386"+
804     "\5\0\1\u0387\54\0\2\u0386\4\0\3\u01ad\1\u0388\5\u01ad"+
805     "\1\u01b1\1\u0389\53\u01ad\2\u0388\7\u01ad\1\u03d5\3\u01ad\1\u03d6"+
806     "\1\u03d7\1\u01b1\54\u01ad\2\u03d5\4\u01ad\15\0\1\u03d8\77\0"+
807     "\1\u03d9\52\0\11\u01b4\1\u0220\11\u01b4\1\u03da\2\u01b4\1\u0221"+
808     "\45\u01b4\53\0\1\u03db\23\0\1\u038e\5\0\1\u038f\54\0"+
809     "\2\u038e\32\0\1\u03dc\50\0\1\u0391\3\0\1\u03dd\2\0"+
810     "\1\u03de\53\0\2\u0391\7\0\1\u03dd\62\0\2\u03dd\7\0"+
811     "\1\u0391\3\0\1\u0392\56\0\2\u0391\32\0\1\u03df\65\0"+
812     "\1\u03e0\75\0\1\u03e1\54\0\1\u03e2\3\0\1\u03e3\1\u03e4"+
813     "\55\0\2\u03e2\4\0\3\142\1\u03e5\3\142\1\u03e6\1\u03e7"+
814     "\1\264\54\142\2\u03e5\4\142\11\140\1\0\4\140\1\u03e8"+
815     "\7\140\1\142\45\140\3\142\1\u039a\3\142\1\u03e9\1\142"+
816     "\1\u03ea\54\142\2\u039a\7\142\1\u03e9\5\142\1\264\54\142"+
817     "\2\u03e9\7\142\1\u039a\3\142\1\u039b\1\142\1\264\54\142"+
818     "\2\u039a\4\142\11\140\1\0\4\140\1\u03eb\7\140\1\142"+
819     "\45\140\3\142\1\u039e\3\142\1\u03ec\1\142\1\u03ed\54\142"+
820     "\2\u039e\7\142\1\u03ec\5\142\1\264\54\142\2\u03ec\7\142"+
821     "\1\u039e\3\142\1\u039f\1\142\1\264\54\142\2\u039e\7\142"+
822     "\1\u03a1\3\142\1\u03ee\1\142\1\u03ef\54\142\2\u03a1\7\142"+
823     "\1\u03ee\5\142\1\264\54\142\2\u03ee\7\142\1\u03a1\3\142"+
824     "\1\u03a2\1\142\1\264\54\142\2\u03a1\4\142\11\140\1\0"+
825     "\14\140\1\142\21\140\1\u03f0\23\140\11\u03a5\1\u03f1\62\u03a5"+
826     "\11\u03a6\1\u03f2\62\u03a6\15\0\1\u03f3\77\0\1\u03f4\66\0"+
827     "\1\u03f5\136\0\1\u03f6\42\0\1\u03f7\124\0\1\u03f8\42\0"+
828     "\1\u03f9\60\0\1\u03fa\3\0\1\u03fb\3\0\1\u03fa\1\u03fb"+
829     "\75\0\1\u03fc\50\0\1\u03b0\3\0\1\u03fd\1\0\1\u03fe"+
830     "\54\0\2\u03b0\7\0\1\u03fd\62\0\2\u03fd\7\0\1\u03b0"+
831     "\3\0\1\u03b1\56\0\2\u03b0\4\0\11\u017a\1\0\14\u017a"+
832     "\1\u01de\14\u017a\1\u03ff\30\u017a\3\0\1\u0400\4\0\1\u0401"+
833     "\55\0\2\u0400\4\0\3\104\1\u0402\3\104\1\u0403\1\u0404"+
834     "\1\213\54\104\2\u0402\4\104\11\101\1\0\14\101\1\104"+
835     "\24\101\1\u0405\31\101\1\0\14\101\1\u0406\45\101\3\104"+
836     "\1\u03b8\3\104\1\u0407\1\104\1\u0408\54\104\2\u03b8\7\104"+
837     "\1\u0407\5\104\1\213\54\104\2\u0407\7\104\1\u03b8\3\104"+
838     "\1\u03b9\1\104\1\213\54\104\2\u03b8\4\104\11\101\1\0"+
839     "\14\101\1\u0409\56\101\1\0\14\101\1\104\14\101\1\u040a"+
840     "\30\101\11\u0193\1\u01fe\14\u0193\1\u040b\50\u0193\1\u040c\4\u0193"+
841     "\1\u040d\1\u01fe\1\u0193\1\u0268\12\u0193\1\u01ff\11\u0193\1\u0269"+
842     "\25\u0193\2\u040c\15\u0193\1\u01fe\14\u0193\1\u040e\45\u0193\26\0"+
843     "\1\u040f\50\0\1\u0410\4\0\1\u0411\55\0\2\u0410\57\0"+
844     "\1\u0412\23\0\1\u0413\3\0\1\u0414\1\u0415\55\0\2\u0413"+
845     "\7\0\1\u03c4\5\0\1\u03c5\54\0\2\u03c4\7\0\1\u0416"+
846     "\3\0\1\u0417\1\u0418\55\0\2\u0416\7\0\1\u03c7\5\0"+
847     "\1\u03c8\54\0\2\u03c7\7\0\1\u03c9\6\0\1\u03ca\53\0"+
848     "\2\u03c9\7\0\1\u0419\3\0\1\u041a\1\u041b\55\0\2\u0419"+
849     "\7\0\1\u03cb\6\0\1\u041c\53\0\2\u03cb\7\0\1\u03cb"+
850     "\62\0\2\u03cb\7\0\1\u03cd\5\0\1\u03ce\54\0\2\u03cd"+
851     "\7\0\1\u03cf\3\0\1\u041d\1\0\1\u041e\54\0\2\u03cf"+
852     "\7\0\1\u041d\62\0\2\u041d\7\0\1\u03cf\3\0\1\u03d0"+
853     "\56\0\2\u03cf\7\0\1\u03d2\3\0\1\u041f\1\0\1\u0420"+
854     "\54\0\2\u03d2\7\0\1\u041f\62\0\2\u041f\7\0\1\u03d2"+
855     "\3\0\1\u03d3\56\0\2\u03d2\4\0\3\u01ad\1\u03d5\3\u01ad"+
856     "\1\u0421\1\u01ad\1\u0422\54\u01ad\2\u03d5\7\u01ad\1\u0421\5\u01ad"+
857     "\1\u01b1\54\u01ad\2\u0421\7\u01ad\1\u03d5\3\u01ad\1\u03d6\1\u01ad"+
858     "\1\u01b1\54\u01ad\2\u03d5\4\u01ad\16\0\1\u0423\77\0\1\u0424"+
859     "\51\0\11\u01b4\1\u0220\14\u01b4\1\u0221\14\u01b4\1\u0425\30\u01b4"+
860     "\26\0\1\u0426\50\0\1\u0427\3\0\1\u0428\1\u0429\55\0"+
861     "\2\u0427\7\0\1\u03dd\6\0\1\u03de\53\0\2\u03dd\7\0"+
862     "\1\u042a\3\0\1\u042b\1\u042c\55\0\2\u042a\7\0\1\u042d"+
863     "\4\0\1\u042e\55\0\2\u042d\27\0\1\u042f\76\0\1\u0430"+
864     "\50\0\1\u03e2\3\0\1\u0431\1\0\1\u0432\54\0\2\u03e2"+
865     "\7\0\1\u0431\62\0\2\u0431\7\0\1\u03e2\3\0\1\u03e3"+
866     "\56\0\2\u03e2\4\0\3\142\1\u03e5\3\142\1\u0433\1\142"+
867     "\1\u0434\54\142\2\u03e5\7\142\1\u0433\5\142\1\264\54\142"+
868     "\2\u0433\7\142\1\u03e5\3\142\1\u03e6\1\142\1\264\54\142"+
869     "\2\u03e5\4\142\11\140\1\0\4\140\1\u0435\7\140\1\142"+
870     "\45\140\3\142\1\u03e9\5\142\1\u03ea\54\142\2\u03e9\4\142"+
871     "\11\140\1\0\2\140\1\u0436\11\140\1\142\45\140\3\142"+
872     "\1\u03ec\5\142\1\u03ed\54\142\2\u03ec\7\142\1\u03ee\5\142"+
873     "\1\u03ef\54\142\2\u03ee\4\142\11\140\1\0\4\140\1\u0437"+
874     "\7\140\1\142\45\140\16\0\1\u0438\77\0\1\u0439\72\0"+
875     "\1\u043a\100\0\1\u043b\45\0\11\u03f7\1\u043c\62\u03f7\16\0"+
876     "\1\u043d\70\0\1\u043e\3\0\1\u043f\3\0\1\u043e\1\u043f"+
877     "\63\0\1\u0440\77\0\1\u0441\53\0\11\u03fc\1\u0442\62\u03fc"+
878     "\3\0\1\u03fd\5\0\1\u03fe\54\0\2\u03fd\4\0\11\u017a"+
879     "\1\0\13\u017a\1\u0443\1\u01de\45\u017a\3\0\1\u0400\5\0"+
880     "\1\u0444\54\0\2\u0400\7\0\1\u0400\62\0\2\u0400\4\0"+
881     "\3\104\1\u0402\3\104\1\u0445\1\104\1\u0446\54\104\2\u0402"+
882     "\7\104\1\u0445\5\104\1\213\54\104\2\u0445\7\104\1\u0402"+
883     "\3\104\1\u0403\1\104\1\213\54\104\2\u0402\4\104\11\101"+
884     "\1\0\14\101\1\104\30\101\1\u0447\14\101\3\104\1\u0448"+
885     "\3\104\1\u0449\1\u044a\1\213\54\104\2\u0448\7\104\1\u0407"+
886     "\5\104\1\u0408\54\104\2\u0407\15\104\1\213\1\104\1\u044b"+
887     "\3\104\1\u044c\3\104\1\u044b\1\u044c\47\104\11\101\1\0"+
888     "\11\101\1\u044d\2\101\1\104\45\101\11\u0193\1\u01fe\1\u0193"+
889     "\1\u044e\3\u0193\1\u044f\3\u0193\1\u0450\1\u044f\1\u0193\1\u01ff"+
890     "\11\u0193\1\u0269\36\u0193\1\u040c\5\u0193\1\u0451\14\u0193\1\u01ff"+
891     "\37\u0193\2\u040c\7\u0193\1\u040c\5\u0193\1\u01fe\14\u0193\1\u01ff"+
892     "\37\u0193\2\u040c\7\u0193\1\u0452\3\u0193\1\u0453\1\u0454\1\u01fe"+
893     "\1\u0193\1\u0268\12\u0193\1\u01ff\11\u0193\1\u0269\25\u0193\2\u0452"+
894     "\4\u0193\3\0\1\u0455\3\0\1\u0456\1\u0457\55\0\2\u0455"+
895     "\7\0\1\u0410\5\0\1\u0458\54\0\2\u0410\7\0\1\u0410"+
896     "\62\0\2\u0410\32\0\1\u0459\50\0\1\u0413\3\0\1\u045a"+
897     "\1\0\1\u045b\54\0\2\u0413\7\0\1\u045a\62\0\2\u045a"+
898     "\7\0\1\u0413\3\0\1\u0414\56\0\2\u0413\7\0\1\u0416"+
899     "\3\0\1\u045c\2\0\1\u045d\53\0\2\u0416\7\0\1\u045c"+
900     "\62\0\2\u045c\7\0\1\u0416\3\0\1\u0417\56\0\2\u0416"+
901     "\7\0\1\u0419\3\0\1\u045e\2\0\1\u045f\53\0\2\u0419"+
902     "\7\0\1\u045e\62\0\2\u045e\7\0\1\u0419\3\0\1\u041a"+
903     "\56\0\2\u0419\7\0\1\u0460\3\0\1\u0461\1\u0462\55\0"+
904     "\2\u0460\7\0\1\u041d\5\0\1\u041e\54\0\2\u041d\7\0"+
905     "\1\u041f\5\0\1\u0420\54\0\2\u041f\4\0\3\u01ad\1\u0421"+
906     "\5\u01ad\1\u0422\54\u01ad\2\u0421\4\u01ad\11\0\1\u0463\100\0"+
907     "\1\u0423\6\0\1\u0423\46\0\11\u01b4\1\u0220\13\u01b4\1\u0464"+
908     "\1\u0221\45\u01b4\3\0\1\u0465\3\0\1\u0466\1\u0467\55\0"+
909     "\2\u0465\7\0\1\u0427\3\0\1\u0468\2\0\1\u0469\53\0"+
910     "\2\u0427\7\0\1\u0468\62\0\2\u0468\7\0\1\u0427\3\0"+
911     "\1\u0428\56\0\2\u0427\7\0\1\u042a\3\0\1\u046a\2\0"+
912     "\1\u046b\53\0\2\u042a\7\0\1\u046a\62\0\2\u046a\7\0"+
913     "\1\u042a\3\0\1\u042b\56\0\2\u042a\7\0\1\u042d\5\0"+
914     "\1\u046c\54\0\2\u042d\7\0\1\u042d\62\0\2\u042d\47\0"+
915     "\1\u046d\33\0\1\u046e\3\0\1\u046f\1\u0470\55\0\2\u046e"+
916     "\7\0\1\u0431\5\0\1\u0432\54\0\2\u0431\4\0\3\142"+
917     "\1\u0433\5\142\1\u0434\54\142\2\u0433\4\142\11\140\1\0"+
918     "\2\140\1\u0471\11\140\1\142\56\140\1\0\14\140\1\u0472"+
919     "\56\140\1\0\14\140\1\u0473\45\140\11\0\1\u0474\100\0"+
920     "\1\u0438\6\0\1\u0438\130\0\1\u0475\11\0\11\u043b\1\u0476"+
921     "\62\u043b\26\0\1\u0477\61\0\1\u0478\77\0\1\u0479\70\0"+
922     "\1\u047a\77\0\1\u047b\52\0\11\u017a\1\0\14\u017a\1\u01de"+
923     "\24\u017a\1\u047c\20\u017a\3\104\1\u0445\5\104\1\u0446\54\104"+
924     "\2\u0445\4\104\11\101\1\0\7\101\1\u047d\4\101\1\104"+
925     "\45\101\3\104\1\u0448\3\104\1\u047e\1\104\1\u047f\54\104"+
926     "\2\u0448\7\104\1\u047e\5\104\1\213\54\104\2\u047e\7\104"+
927     "\1\u0448\3\104\1\u0449\1\104\1\213\54\104\2\u0448\15\104"+
928     "\1\213\2\104\1\u0480\70\104\1\213\6\104\1\u0481\53\104"+
929     "\11\101\1\0\14\101\1\104\20\101\1\u0482\24\101\11\u0193"+
930     "\1\u01fe\2\u0193\1\u0483\10\u0193\1\u02c4\1\u01ff\14\u0193\1\u02c5"+
931     "\41\u0193\1\u01fe\6\u0193\1\u0484\5\u0193\1\u01ff\56\u0193\1\u01fe"+
932     "\2\u0193\1\u0483\11\u0193\1\u01ff\50\u0193\1\u0452\3\u0193\1\u0485"+
933     "\1\u0193\1\u0486\14\u0193\1\u01ff\37\u0193\2\u0452\7\u0193\1\u0485"+
934     "\5\u0193\1\u01fe\14\u0193\1\u01ff\37\u0193\2\u0485\7\u0193\1\u0452"+
935     "\3\u0193\1\u0453\1\u0193\1\u01fe\14\u0193\1\u01ff\37\u0193\2\u0452"+
936     "\4\u0193\3\0\1\u0455\3\0\1\u0487\2\0\1\u0488\53\0"+
937     "\2\u0455\7\0\1\u0487\62\0\2\u0487\7\0\1\u0455\3\0"+
938     "\1\u0456\56\0\2\u0455\7\0\1\u0489\3\0\1\u048a\1\u048b"+
939     "\55\0\2\u0489\7\0\1\u045a\5\0\1\u045b\54\0\2\u045a"+
940     "\7\0\1\u045c\6\0\1\u045d\53\0\2\u045c\5\0\1\u048c"+
941     "\11\0\13\u048c\1\0\13\u048c\1\0\23\u048c\2\0\4\u048c"+
942     "\3\0\1\u045e\6\0\1\u045f\53\0\2\u045e\7\0\1\u048d"+
943     "\3\0\1\u048e\1\u048f\55\0\2\u048d\7\0\1\u0460\3\0"+
944     "\1\u0490\2\0\1\u0491\53\0\2\u0460\7\0\1\u0490\62\0"+
945     "\2\u0490\7\0\1\u0460\3\0\1\u0461\56\0\2\u0460\4\0"+
946     "\11\u01b4\1\u0220\14\u01b4\1\u0221\24\u01b4\1\u0492\20\u01b4\3\0"+
947     "\1\u0465\3\0\1\u0493\2\0\1\u0494\53\0\2\u0465\7\0"+
948     "\1\u0493\62\0\2\u0493\7\0\1\u0465\3\0\1\u0466\56\0"+
949     "\2\u0465\7\0\1\u0468\6\0\1\u0469\53\0\2\u0468\7\0"+
950     "\1\u0495\3\0\1\u0496\1\u0497\55\0\2\u0495\7\0\1\u046a"+
951     "\6\0\1\u046b\53\0\2\u046a\7\0\1\u0498\3\0\1\u0499"+
952     "\1\u049a\55\0\2\u0498\31\0\1\u049b\51\0\1\u046e\3\0"+
953     "\1\u049c\1\0\1\u049d\54\0\2\u046e\7\0\1\u049c\62\0"+
954     "\2\u049c\7\0\1\u046e\3\0\1\u046f\56\0\2\u046e\4\0"+
955     "\11\140\1\0\14\140\1\u049e\45\140\3\142\1\u049f\3\142"+
956     "\1\u04a0\1\u04a1\1\264\54\142\2\u049f\4\142\11\u0473\1\u04a2"+
957     "\62\u0473\26\0\1\u04a3\60\0\1\u04a4\3\0\1\u04a5\3\0"+
958     "\1\u04a4\1\u04a5\64\0\1\u04a6\77\0\1\u04a7\70\0\1\u04a8"+
959     "\77\0\1\u04a9\51\0\11\u017a\1\0\14\u017a\1\u04aa\45\u017a"+
960     "\11\101\1\0\4\101\1\u04ab\7\101\1\104\45\101\3\104"+
961     "\1\u047e\5\104\1\u047f\54\104\2\u047e\15\104\1\213\3\104"+
962     "\1\u04ac\67\104\1\213\7\104\1\u04ad\52\104\11\101\1\0"+
963     "\14\101\1\u04ae\45\101\11\u0193\1\u01fe\3\u0193\1\u04af\10\u0193"+
964     "\1\u01ff\56\u0193\1\u01fe\7\u0193\1\u04b0\4\u0193\1\u01ff\50\u0193"+
965     "\1\u0485\5\u0193\1\u0486\14\u0193\1\u01ff\37\u0193\2\u0485\4\u0193"+
966     "\3\0\1\u0487\6\0\1\u0488\53\0\2\u0487\7\0\1\u04b1"+
967     "\3\0\1\u04b2\1\u04b3\55\0\2\u04b1\7\0\1\u0489\3\0"+
968     "\1\u04b4\2\0\1\u04b5\53\0\2\u0489\7\0\1\u04b4\62\0"+
969     "\2\u04b4\7\0\1\u0489\3\0\1\u048a\56\0\2\u0489\15\0"+
970     "\1\u04b6\65\0\1\u048d\3\0\1\u04b7\1\0\1\u04b8\54\0"+
971     "\2\u048d\7\0\1\u04b7\62\0\2\u04b7\7\0\1\u048d\3\0"+
972     "\1\u048e\56\0\2\u048d\7\0\1\u0490\6\0\1\u0491\53\0"+
973     "\2\u0490\5\0\1\u04b9\11\0\13\u04b9\1\0\13\u04b9\1\0"+
974     "\23\u04b9\2\0\4\u04b9\11\u01b4\1\u0220\14\u01b4\1\u04ba\45\u01b4"+
975     "\3\0\1\u0493\6\0\1\u0494\53\0\2\u0493\7\0\1\u04bb"+
976     "\3\0\1\u04bc\1\u04bd\55\0\2\u04bb\7\0\1\u0495\3\0"+
977     "\1\u04be\2\0\1\u04bf\53\0\2\u0495\7\0\1\u04be\62\0"+
978     "\2\u04be\7\0\1\u0495\3\0\1\u0496\56\0\2\u0495\7\0"+
979     "\1\u0498\3\0\1\u04c0\1\0\1\u04c1\54\0\2\u0498\7\0"+
980     "\1\u04c0\62\0\2\u04c0\7\0\1\u0498\3\0\1\u0499\56\0"+
981     "\2\u0498\57\0\1\u04c2\23\0\1\u049c\5\0\1\u049d\54\0"+
982     "\2\u049c\4\0\3\142\1\u04c3\3\142\1\u04c4\1\u04c5\1\264"+
983     "\54\142\2\u04c3\7\142\1\u049f\3\142\1\u04c6\1\142\1\u04c7"+
984     "\54\142\2\u049f\7\142\1\u04c6\5\142\1\264\54\142\2\u04c6"+
985     "\7\142\1\u049f\3\142\1\u04a0\1\142\1\264\54\142\2\u049f"+
986     "\4\142\13\0\1\u04c8\3\0\1\u04c9\3\0\1\u04c8\1\u04c9"+
987     "\63\0\1\u04ca\77\0\1\u04cb\71\0\1\u04cc\77\0\1\u04cd"+
988     "\62\0\1\u04ce\100\0\1\u04a8\6\0\1\u04a8\46\0\3\u017a"+
989     "\1\u04cf\3\u017a\1\u04d0\1\u04d1\1\0\14\u017a\1\u01de\16\u017a"+
990     "\1\u0251\20\u017a\2\u04cf\4\u017a\11\101\1\0\14\101\1\u04d2"+
991     "\45\101\11\104\1\213\4\104\1\u04d3\66\104\1\213\10\104"+
992     "\1\u04d4\54\104\1\u04d5\4\104\1\u04d6\1\213\54\104\2\u04d5"+
993     "\4\104\11\u0193\1\u01fe\4\u0193\1\u04d7\7\u0193\1\u01ff\56\u0193"+
994     "\1\u01fe\10\u0193\1\u04d8\3\u0193\1\u01ff\45\u0193\3\0\1\u04b1"+
995     "\3\0\1\u04d9\2\0\1\u04da\53\0\2\u04b1\7\0\1\u04d9"+
996     "\62\0\2\u04d9\7\0\1\u04b1\3\0\1\u04b2\56\0\2\u04b1"+
997     "\7\0\1\u04b4\6\0\1\u04b5\53\0\2\u04b4\7\0\1\u04db"+
998     "\3\0\1\u04dc\1\u04dd\55\0\2\u04db\7\0\1\u04b7\5\0"+
999     "\1\u04b8\54\0\2\u04b7\15\0\1\u04de\62\0\3\u01b4\1\u04df"+
1000     "\3\u01b4\1\u04e0\1\u04e1\1\u0220\14\u01b4\1\u0221\16\u01b4\1\u028c"+
1001     "\20\u01b4\2\u04df\4\u01b4\3\0\1\u04bb\3\0\1\u04e2\2\0"+
1002     "\1\u04e3\53\0\2\u04bb\7\0\1\u04e2\62\0\2\u04e2\7\0"+
1003     "\1\u04bb\3\0\1\u04bc\56\0\2\u04bb\7\0\1\u04be\6\0"+
1004     "\1\u04bf\53\0\2\u04be\7\0\1\u04e4\3\0\1\u04e5\1\u04e6"+
1005     "\55\0\2\u04e4\7\0\1\u04c0\5\0\1\u04c1\54\0\2\u04c0"+
1006     "\32\0\1\u04e7\45\0\3\142\1\u04c3\3\142\1\u04e8\1\142"+
1007     "\1\u04e9\54\142\2\u04c3\7\142\1\u04e8\5\142\1\264\54\142"+
1008     "\2\u04e8\7\142\1\u04c3\3\142\1\u04c4\1\142\1\264\54\142"+
1009     "\2\u04c3\7\142\1\u04c6\5\142\1\u04c7\54\142\2\u04c6\4\142"+
1010     "\14\0\1\u04ea\77\0\1\u04eb\70\0\1\u04ec\77\0\1\u04ed"+
1011     "\63\0\1\u04ee\100\0\1\u04cc\6\0\1\u04cc\46\0\3\u017a"+
1012     "\1\u04cf\3\u017a\1\u04ef\1\u017a\1\0\1\u04f0\13\u017a\1\u01de"+
1013     "\37\u017a\2\u04cf\7\u017a\1\u04ef\5\u017a\1\0\14\u017a\1\u01de"+
1014     "\37\u017a\2\u04ef\7\u017a\1\u04cf\3\u017a\1\u04d0\1\u017a\1\0"+
1015     "\14\u017a\1\u01de\37\u017a\2\u04cf\4\u017a\3\104\1\u04f1\3\104"+
1016     "\1\u04f2\1\u04f3\1\213\54\104\2\u04f1\15\104\1\u04f4\73\104"+
1017     "\1\213\4\104\1\u04d3\6\104\1\u04d3\51\104\1\u04d5\5\104"+
1018     "\1\u04f5\54\104\2\u04d5\7\104\1\u04d5\5\104\1\213\54\104"+
1019     "\2\u04d5\4\104\11\u0193\1\u04f6\14\u0193\1\u01ff\56\u0193\1\u01fe"+
1020     "\4\u0193\1\u04d7\6\u0193\1\u04d7\1\u01ff\45\u0193\3\0\1\u04d9"+
1021     "\6\0\1\u04da\53\0\2\u04d9\7\0\1\u04f7\3\0\1\u04f8"+
1022     "\1\u04f9\55\0\2\u04f7\7\0\1\u04db\3\0\1\u04fa\2\0"+
1023     "\1\u04fb\53\0\2\u04db\7\0\1\u04fa\62\0\2\u04fa\7\0"+
1024     "\1\u04db\3\0\1\u04dc\56\0\2\u04db\4\0\3\u01b4\1\u04df"+
1025     "\3\u01b4\1\u04fc\1\u01b4\1\u0220\1\u04fd\13\u01b4\1\u0221\37\u01b4"+
1026     "\2\u04df\7\u01b4\1\u04fc\5\u01b4\1\u0220\14\u01b4\1\u0221\37\u01b4"+
1027     "\2\u04fc\7\u01b4\1\u04df\3\u01b4\1\u04e0\1\u01b4\1\u0220\14\u01b4"+
1028     "\1\u0221\37\u01b4\2\u04df\4\u01b4\3\0\1\u04e2\6\0\1\u04e3"+
1029     "\53\0\2\u04e2\7\0\1\u04fe\3\0\1\u04ff\1\u0500\55\0"+
1030     "\2\u04fe\7\0\1\u04e4\3\0\1\u0501\1\0\1\u0502\54\0"+
1031     "\2\u04e4\7\0\1\u0501\62\0\2\u0501\7\0\1\u04e4\3\0"+
1032     "\1\u04e5\56\0\2\u04e4\7\0\1\u0503\3\0\1\u0504\1\u0505"+
1033     "\55\0\2\u0503\4\0\3\142\1\u04e8\5\142\1\u04e9\54\142"+
1034     "\2\u04e8\4\142\15\0\1\u0506\77\0\1\u0507\70\0\1\u0508"+
1035     "\77\0\1\u0509\51\0\3\u017a\1\u04ef\5\u017a\1\0\1\u04f0"+
1036     "\13\u017a\1\u01de\37\u017a\2\u04ef\7\u017a\1\u050a\3\u017a\1\u050b"+
1037     "\1\u050c\1\0\14\u017a\1\u01de\37\u017a\2\u050a\4\u017a\3\104"+
1038     "\1\u04f1\3\104\1\u050d\1\104\1\u050e\54\104\2\u04f1\7\104"+
1039     "\1\u050d\5\104\1\213\54\104\2\u050d\7\104\1\u04f1\3\104"+
1040     "\1\u04f2\1\104\1\213\54\104\2\u04f1\4\104\3\0\1\u04f7"+
1041     "\3\0\1\u050f\1\0\1\u0510\54\0\2\u04f7\7\0\1\u050f"+
1042     "\62\0\2\u050f\7\0\1\u04f7\3\0\1\u04f8\56\0\2\u04f7"+
1043     "\7\0\1\u04fa\6\0\1\u04fb\53\0\2\u04fa\7\0\1\u0511"+
1044     "\3\0\1\u0512\1\u0513\55\0\2\u0511\4\0\3\u01b4\1\u04fc"+
1045     "\5\u01b4\1\u0220\1\u04fd\13\u01b4\1\u0221\37\u01b4\2\u04fc\7\u01b4"+
1046     "\1\u0514\3\u01b4\1\u0515\1\u0516\1\u0220\14\u01b4\1\u0221\37\u01b4"+
1047     "\2\u0514\4\u01b4\3\0\1\u04fe\3\0\1\u0517\1\0\1\u0518"+
1048     "\54\0\2\u04fe\7\0\1\u0517\62\0\2\u0517\7\0\1\u04fe"+
1049     "\3\0\1\u04ff\56\0\2\u04fe\7\0\1\u0501\5\0\1\u0502"+
1050     "\54\0\2\u0501\7\0\1\u0503\3\0\1\u0519\1\0\1\u051a"+
1051     "\54\0\2\u0503\7\0\1\u0519\62\0\2\u0519\7\0\1\u0503"+
1052     "\3\0\1\u0504\56\0\2\u0503\22\0\1\u051b\77\0\1\u051c"+
1053     "\62\0\1\u051d\100\0\1\u0508\6\0\1\u0508\46\0\3\u017a"+
1054     "\1\u050a\3\u017a\1\u051e\1\u017a\1\0\1\u051f\13\u017a\1\u01de"+
1055     "\37\u017a\2\u050a\7\u017a\1\u051e\5\u017a\1\0\14\u017a\1\u01de"+
1056     "\37\u017a\2\u051e\7\u017a\1\u050a\3\u017a\1\u050b\1\u017a\1\0"+
1057     "\14\u017a\1\u01de\37\u017a\2\u050a\4\u017a\3\104\1\u050d\5\104"+
1058     "\1\u050e\54\104\2\u050d\4\104\3\0\1\u050f\5\0\1\u0510"+
1059     "\54\0\2\u050f\7\0\1\u0511\3\0\1\u0520\1\0\1\u0521"+
1060     "\54\0\2\u0511\7\0\1\u0520\62\0\2\u0520\7\0\1\u0511"+
1061     "\3\0\1\u0512\56\0\2\u0511\4\0\3\u01b4\1\u0514\3\u01b4"+
1062     "\1\u0522\1\u01b4\1\u0220\1\u0523\13\u01b4\1\u0221\37\u01b4\2\u0514"+
1063     "\7\u01b4\1\u0522\5\u01b4\1\u0220\14\u01b4\1\u0221\37\u01b4\2\u0522"+
1064     "\7\u01b4\1\u0514\3\u01b4\1\u0515\1\u01b4\1\u0220\14\u01b4\1\u0221"+
1065     "\37\u01b4\2\u0514\4\u01b4\3\0\1\u0517\5\0\1\u0518\54\0"+
1066     "\2\u0517\7\0\1\u0519\5\0\1\u051a\54\0\2\u0519\15\0"+
1067     "\1\u0524\100\0\1\u051b\6\0\1\u051b\46\0\3\u017a\1\u051e"+
1068     "\5\u017a\1\0\1\u051f\13\u017a\1\u01de\37\u017a\2\u051e\7\u017a"+
1069     "\1\u0525\3\u017a\1\u0526\1\u0527\1\0\14\u017a\1\u01de\37\u017a"+
1070     "\2\u0525\4\u017a\3\0\1\u0520\5\0\1\u0521\54\0\2\u0520"+
1071     "\4\0\3\u01b4\1\u0522\5\u01b4\1\u0220\1\u0523\13\u01b4\1\u0221"+
1072     "\37\u01b4\2\u0522\7\u01b4\1\u0528\3\u01b4\1\u0529\1\u052a\1\u0220"+
1073     "\14\u01b4\1\u0221\37\u01b4\2\u0528\4\u01b4\3\u017a\1\u0525\3\u017a"+
1074     "\1\u052b\1\u017a\1\0\14\u017a\1\u052c\37\u017a\2\u0525\7\u017a"+
1075     "\1\u052b\5\u017a\1\0\14\u017a\1\u01de\37\u017a\2\u052b\7\u017a"+
1076     "\1\u0525\3\u017a\1\u0526\1\u017a\1\0\14\u017a\1\u01de\37\u017a"+
1077     "\2\u0525\4\u017a\3\u01b4\1\u0528\3\u01b4\1\u052d\1\u01b4\1\u0220"+
1078     "\14\u01b4\1\u052e\37\u01b4\2\u0528\7\u01b4\1\u052d\5\u01b4\1\u0220"+
1079     "\14\u01b4\1\u0221\37\u01b4\2\u052d\7\u01b4\1\u0528\3\u01b4\1\u0529"+
1080     "\1\u01b4\1\u0220\14\u01b4\1\u0221\37\u01b4\2\u0528\4\u01b4\3\u017a"+
1081     "\1\u052b\5\u017a\1\0\14\u017a\1\u052c\37\u017a\2\u052b\15\u017a"+
1082     "\1\0\14\u017a\1\u01de\1\u017a\1\u052f\14\u017a\1\u0251\26\u017a"+
1083     "\3\u01b4\1\u052d\5\u01b4\1\u0220\14\u01b4\1\u052e\37\u01b4\2\u052d"+
1084     "\15\u01b4\1\u0220\14\u01b4\1\u0221\1\u01b4\1\u0530\14\u01b4\1\u028c"+
1085     "\26\u01b4\11\u017a\1\0\2\u017a\1\u0531\11\u017a\1\u01de\45\u017a"+
1086     "\11\u01b4\1\u0220\2\u01b4\1\u0532\11\u01b4\1\u0221\45\u01b4\11\u017a"+
1087     "\1\0\14\u017a\1\u01de\14\u017a\1\u0533\30\u017a\11\u01b4\1\u0220"+
1088     "\14\u01b4\1\u0221\14\u01b4\1\u0534\30\u01b4\11\u017a\1\0\4\u017a"+
1089     "\1\u0535\7\u017a\1\u01de\45\u017a\11\u01b4\1\u0220\4\u01b4\1\u0536"+
1090     "\7\u01b4\1\u0221\45\u01b4\11\u017a\1\0\14\u017a\1\u01de\24\u017a"+
1091     "\1\u0537\20\u017a\11\u01b4\1\u0220\14\u01b4\1\u0221\24\u01b4\1\u0538"+
1092     "\20\u01b4\11\u017a\1\0\11\u017a\1\u0539\2\u017a\1\u01de\45\u017a"+
1093     "\11\u01b4\1\u0220\11\u01b4\1\u053a\2\u01b4\1\u0221\45\u01b4\11\u017a"+
1094     "\1\0\6\u017a\1\u053b\5\u017a\1\u01de\45\u017a\11\u01b4\1\u0220"+
1095     "\6\u01b4\1\u053c\5\u01b4\1\u0221\45\u01b4\11\u017a\1\0\11\u017a"+
1096     "\1\u053d\2\u017a\1\u01de\45\u017a\11\u01b4\1\u0220\11\u01b4\1\u053e"+
1097     "\2\u01b4\1\u0221\45\u01b4\11\u017a\1\0\14\u017a\1\u01de\14\u017a"+
1098     "\1\u053f\30\u017a\11\u01b4\1\u0220\14\u01b4\1\u0221\14\u01b4\1\u0540"+
1099     "\30\u01b4\11\u017a\1\0\13\u017a\1\u0541\1\u01de\45\u017a\11\u01b4"+
1100     "\1\u0220\13\u01b4\1\u0542\1\u0221\45\u01b4\11\u017a\1\0\14\u017a"+
1101     "\1\u01de\24\u017a\1\u0543\20\u017a\11\u01b4\1\u0220\14\u01b4\1\u0221"+
1102     "\24\u01b4\1\u0544\20\u01b4\11\u017a\1\0\14\u017a\1\u0545\45\u017a"+
1103     "\11\u01b4\1\u0220\14\u01b4\1\u0546\45\u01b4\3\u017a\1\u0547\3\u017a"+
1104     "\1\u0548\1\u0549\1\0\14\u017a\1\u01de\16\u017a\1\u0251\20\u017a"+
1105     "\2\u0547\4\u017a\3\u01b4\1\u054a\3\u01b4\1\u054b\1\u054c\1\u0220"+
1106     "\14\u01b4\1\u0221\16\u01b4\1\u028c\20\u01b4\2\u054a\4\u01b4\3\u017a"+
1107     "\1\u0547\3\u017a\1\u054d\1\u017a\1\0\1\u054e\13\u017a\1\u01de"+
1108     "\37\u017a\2\u0547\7\u017a\1\u054d\5\u017a\1\0\14\u017a\1\u01de"+
1109     "\37\u017a\2\u054d\7\u017a\1\u0547\3\u017a\1\u0548\1\u017a\1\0"+
1110     "\14\u017a\1\u01de\37\u017a\2\u0547\4\u017a\3\u01b4\1\u054a\3\u01b4"+
1111     "\1\u054f\1\u01b4\1\u0220\1\u0550\13\u01b4\1\u0221\37\u01b4\2\u054a"+
1112     "\7\u01b4\1\u054f\5\u01b4\1\u0220\14\u01b4\1\u0221\37\u01b4\2\u054f"+
1113     "\7\u01b4\1\u054a\3\u01b4\1\u054b\1\u01b4\1\u0220\14\u01b4\1\u0221"+
1114     "\37\u01b4\2\u054a\4\u01b4\3\u017a\1\u054d\5\u017a\1\0\1\u054e"+
1115     "\13\u017a\1\u01de\37\u017a\2\u054d\7\u017a\1\u0551\3\u017a\1\u0552"+
1116     "\1\u0553\1\0\14\u017a\1\u01de\37\u017a\2\u0551\4\u017a\3\u01b4"+
1117     "\1\u054f\5\u01b4\1\u0220\1\u0550\13\u01b4\1\u0221\37\u01b4\2\u054f"+
1118     "\7\u01b4\1\u0554\3\u01b4\1\u0555\1\u0556\1\u0220\14\u01b4\1\u0221"+
1119     "\37\u01b4\2\u0554\4\u01b4\3\u017a\1\u0551\3\u017a\1\u0557\1\u017a"+
1120     "\1\0\1\u0558\13\u017a\1\u01de\37\u017a\2\u0551\7\u017a\1\u0557"+
1121     "\5\u017a\1\0\14\u017a\1\u01de\37\u017a\2\u0557\7\u017a\1\u0551"+
1122     "\3\u017a\1\u0552\1\u017a\1\0\14\u017a\1\u01de\37\u017a\2\u0551"+
1123     "\4\u017a\3\u01b4\1\u0554\3\u01b4\1\u0559\1\u01b4\1\u0220\1\u055a"+
1124     "\13\u01b4\1\u0221\37\u01b4\2\u0554\7\u01b4\1\u0559\5\u01b4\1\u0220"+
1125     "\14\u01b4\1\u0221\37\u01b4\2\u0559\7\u01b4\1\u0554\3\u01b4\1\u0555"+
1126     "\1\u01b4\1\u0220\14\u01b4\1\u0221\37\u01b4\2\u0554\4\u01b4\3\u017a"+
1127     "\1\u0557\5\u017a\1\0\1\u0558\13\u017a\1\u01de\37\u017a\2\u0557"+
1128     "\7\u017a\1\u055b\3\u017a\1\u055c\1\u055d\1\0\14\u017a\1\u01de"+
1129     "\37\u017a\2\u055b\4\u017a\3\u01b4\1\u0559\5\u01b4\1\u0220\1\u055a"+
1130     "\13\u01b4\1\u0221\37\u01b4\2\u0559\7\u01b4\1\u055e\3\u01b4\1\u055f"+
1131     "\1\u0560\1\u0220\14\u01b4\1\u0221\37\u01b4\2\u055e\4\u01b4\3\u017a"+
1132     "\1\u055b\3\u017a\1\u0561\1\u017a\1\u0562\14\u017a\1\u01de\37\u017a"+
1133     "\2\u055b\7\u017a\1\u0561\5\u017a\1\0\14\u017a\1\u01de\37\u017a"+
1134     "\2\u0561\7\u017a\1\u055b\3\u017a\1\u055c\1\u017a\1\0\14\u017a"+
1135     "\1\u01de\37\u017a\2\u055b\4\u017a\3\u01b4\1\u055e\3\u01b4\1\u0563"+
1136     "\1\u01b4\1\u0220\14\u01b4\1\u0564\37\u01b4\2\u055e\7\u01b4\1\u0563"+
1137     "\5\u01b4\1\u0220\14\u01b4\1\u0221\37\u01b4\2\u0563\7\u01b4\1\u055e"+
1138     "\3\u01b4\1\u055f\1\u01b4\1\u0220\14\u01b4\1\u0221\37\u01b4\2\u055e"+
1139     "\4\u01b4\3\u017a\1\u0561\5\u017a\1\u0562\14\u017a\1\u01de\37\u017a"+
1140     "\2\u0561\4\u017a\3\u01b4\1\u0563\5\u01b4\1\u0220\14\u01b4\1\u0564"+
1141     "\37\u01b4\2\u0563\15\u01b4\1\u0220\14\u01b4\1\u0221\2\u01b4\1\u0565"+
1142     "\13\u01b4\1\u028c\37\u01b4\1\u0220\13\u01b4\1\u0566\1\u0221\56\u01b4"+
1143     "\1\u0220\3\u01b4\1\u0567\10\u01b4\1\u0221\56\u01b4\1\u0220\14\u01b4"+
1144     "\1\u0221\24\u01b4\1\u0568\31\u01b4\1\u0220\11\u01b4\1\u0569\2\u01b4"+
1145     "\1\u0221\56\u01b4\1\u0220\14\u01b4\1\u056a\45\u01b4\11\u056a\1\u056b"+
1146     "\62\u056a";
1147 
1148   private static int [] zzUnpackTrans() {
1149     int [] result = new int[75600];
1150     int offset = 0;
1151     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
1152     return result;
1153   }
1154 
1155   private static int zzUnpackTrans(String packed, int offset, int [] result) {
1156     int i = 0;       /* index in packed string  */
1157     int j = offset;  /* index in unpacked array */
1158     int l = packed.length();
1159     while (i < l) {
1160       int count = packed.charAt(i++);
1161       int value = packed.charAt(i++);
1162       value--;
1163       do result[j++] = value; while (--count > 0);
1164     }
1165     return j;
1166   }
1167 
1168 
1169   /* error codes */
1170   private static final int ZZ_UNKNOWN_ERROR = 0;
1171   private static final int ZZ_NO_MATCH = 1;
1172   private static final int ZZ_PUSHBACK_2BIG = 2;
1173 
1174   /* error messages for the codes above */
1175   private static final String ZZ_ERROR_MSG[] = {
1176     "Unkown internal scanner error",
1177     "Error: could not match input",
1178     "Error: pushback value was too large"
1179   };
1180 
1181   /**
1182    * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
1183    */
1184   private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
1185 
1186   private static final String ZZ_ATTRIBUTE_PACKED_0 =
1187     "\12\0\2\11\10\1\1\11\1\1\1\11\2\1\1\11"+
1188     "\2\1\1\11\2\1\1\11\2\1\1\11\2\1\1\11"+
1189     "\2\1\1\11\2\1\1\11\2\1\1\11\106\0\1\11"+
1190     "\1\0\3\11\1\0\2\11\15\0\1\11\50\0\1\11"+
1191     "\30\0\1\11\252\0\1\11\34\0\1\11\3\0\1\11"+
1192     "\27\0\1\11\35\0\1\11\26\0\1\11\6\0\1\11"+
1193     "\14\0\1\11\1\0\3\11\40\0\2\11\14\0\2\11"+
1194     "\23\0\2\11\20\0\1\11\2\0\2\11\4\0\1\11"+
1195     "\6\0\1\11\2\0\1\11\10\0\1\11\4\0\1\11"+
1196     "\5\0\1\11\27\0\1\11\6\0\1\11\11\0\1\11"+
1197     "\2\0\1\11\24\0\1\11\14\0\1\11\45\0\1\11"+
1198     "\16\0\2\11\17\0\1\11\17\0\1\11\2\0\1\11"+
1199     "\52\0\1\11\2\0\1\11\14\0\1\11\3\0\1\11"+
1200     "\6\0\1\11\13\0\1\11\11\0\1\11\10\0\1\11"+
1201     "\7\0\1\11\65\0\1\11\2\0\1\11\5\0\1\11"+
1202     "\33\0\1\11\2\0\1\11\1\0\1\11\1\0\2\11"+
1203     "\13\0\1\11\11\0\1\11\25\0\1\11\1\0\1\11"+
1204     "\1\0\1\11\17\0\1\11\1\0\1\11\7\0\1\11"+
1205     "\5\0\1\11\1\0\1\11\1\0\1\11\12\0\1\11"+
1206     "\6\0\1\11\2\0\1\11\7\0\1\11\10\0\1\11"+
1207     "\7\0\1\11\1\0\1\11\10\0\1\11\6\0\1\11"+
1208     "\26\0\1\11\4\0\1\11\23\0\1\11\1\0\1\11"+
1209     "\10\0\1\11\5\0\1\11\6\0\1\11\17\0\1\11"+
1210     "\12\0\1\11\4\0\1\11\5\0\3\11\13\0\1\11"+
1211     "\13\0\1\11\1\0\1\11\7\0\1\11\1\0\1\11"+
1212     "\2\0\1\11\3\0\1\11\2\0\1\11\75\0\1\11"+
1213     "\10\0\1\11";
1214 
1215   private static int [] zzUnpackAttribute() {
1216     int [] result = new int[1387];
1217     int offset = 0;
1218     offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
1219     return result;
1220   }
1221 
1222   private static int zzUnpackAttribute(String packed, int offset, int [] result) {
1223     int i = 0;       /* index in packed string  */
1224     int j = offset;  /* index in unpacked array */
1225     int l = packed.length();
1226     while (i < l) {
1227       int count = packed.charAt(i++);
1228       int value = packed.charAt(i++);
1229       do result[j++] = value; while (--count > 0);
1230     }
1231     return j;
1232   }
1233 
1234   /** the input device */
1235   private java.io.Reader zzReader;
1236 
1237   /** the current state of the DFA */
1238   private int zzState;
1239 
1240   /** the current lexical state */
1241   private int zzLexicalState = YYINITIAL;
1242 
1243   /** this buffer contains the current text to be matched and is
1244       the source of the yytext() string */
1245   private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
1246 
1247   /** the textposition at the last accepting state */
1248   private int zzMarkedPos;
1249 
1250   /** the current text position in the buffer */
1251   private int zzCurrentPos;
1252 
1253   /** startRead marks the beginning of the yytext() string in the buffer */
1254   private int zzStartRead;
1255 
1256   /** endRead marks the last character in the buffer, that has been read
1257       from input */
1258   private int zzEndRead;
1259 
1260   /** number of newlines encountered up to the start of the matched text */
1261   private int yyline;
1262 
1263   /** the number of characters up to the start of the matched text */
1264   private int yychar;
1265 
1266   /**
1267    * the number of characters from the last newline up to the start of the 
1268    * matched text
1269    */
1270   private int yycolumn;
1271 
1272   /** 
1273    * zzAtBOL == true <=> the scanner is currently at the beginning of a line
1274    */
1275   private boolean zzAtBOL = true;
1276 
1277   /** zzAtEOF == true <=> the scanner is at the EOF */
1278   private boolean zzAtEOF;
1279 
1280   /** denotes if the user-EOF-code has already been executed */
1281   private boolean zzEOFDone;
1282 
1283   /* user code: */
1284 	
1285  	public static final String DELIMITERS_STANDARD = " {}";
1286  	public static final String DELIMITERS_EXTENDED = " {},";
1287 
1288 	/** Map for list of String, Double */
1289 	protected Map<Integer, Double> mapIntIDDouble = null;
1290 
1291 	/** Map for list of String, Double */
1292 	protected Map<Integer, Double> mapIntDouble = null;
1293 	
1294 	/** parser reference, this parser will be used for translation of UnrealID to IntID */
1295 	protected UnrealIdTranslator translator = null;
1296 	
1297 	/** observer for the yylex for reporting exceptions */	
1298 	protected IYylexObserver observer = null;
1299 	
1300 	/** time in the udk */	
1301 	protected double udkTime = 0;
1302 	
1303 	public Yylex(){
1304 	}
1305 	
1306 	public void setReader(Reader reader) {
1307             //yyreset() closes stream and resets scanner to be able to read from next stream
1308 		yyreset(reader);
1309 	}
1310 	
1311 	public void close() throws java.io.IOException {
1312             //yyclose() closes stream and goes to EOF section
1313 		yyclose();
1314 	}
1315 	
1316 	public void setObserver(IYylexObserver observer) {
1317 		this.observer = observer;
1318 	}
1319 	
1320 	/**
1321 	 * Set parser translating UnrealID to IntID.
1322 	 * This function should be called after constructor, I dont know how to define constructor, so this will do.
1323 	 */
1324 	public void setTranslator(UnrealIdTranslator translator) {
1325 		this.translator = translator;
1326 	}
1327 	
1328 	public void setTime(IWorldObject obj, double time) {
1329 		try {
1330 			Method m = obj.getClass().getDeclaredMethod("setTime", new Class[]{double.class});
1331 			m.setAccessible(true);
1332 			m.invoke(obj, udkTime);
1333 		} catch (Exception e) {
1334 			exceptionOccured(e, "can't set Time to message " + obj.getClass());
1335 		}
1336 	}
1337 	
1338 	/**
1339 	 * Logs the exception if observer present, or print it to System.out.
1340 	 * <BR><BR>
1341 	 * Does not throw the exception...
1342 	 * <BR><BR>
1343 	 * If exception 'e' is null, only info message is written to logs.
1344 	 * @param e
1345 	 * @param info	 
1346 	 */
1347 	protected void exceptionOccured(Exception e, String info) {
1348 		IYylexObserver currentObserver = this.observer;
1349 		if (currentObserver != null) {			
1350 			currentObserver.exception(e, info != null ? info : "--empty info--");
1351 		} else {
1352 			System.out.println("Yylex exception: " + info);
1353 			if (e != null) e.printStackTrace(); 
1354 		}
1355 	} 
1356 	
1357 	/**
1358 	 * Send the warning to observer or prints it to the console.
1359 	 */
1360 	protected void warning(String info) {
1361 		IYylexObserver currentObserver = this.observer;
1362 		if (currentObserver != null) {			
1363 			currentObserver.warning(info != null ? info : "--empty warning--");
1364 		} else {
1365 			System.out.println("Yylex warning: " + info);			 
1366 		}
1367 	}
1368 	
1369 	/**
1370 	 * Returns 'num'-th token from 'text' using 'delimiters'.
1371 	 * <BR><BR>
1372 	 * Use only IFF you're getting only one token from 'text'.
1373 	 * @param text
1374 	 * @param delimiters
1375 	 * @return String token
1376 	 */ 
1377 	protected String getToken(String text, String delimiters, int num) {
1378 		StringTokenizer st = new StringTokenizer(text, delimiters);
1379 		while (num-- > 0 && st.hasMoreTokens()) {
1380 			st.nextToken();
1381 		}
1382 		try {
1383 			return st.nextToken();
1384 		} catch (Exception e) {
1385 			exceptionOccured(e, "Can't get " + num + "-th token from text '"+text+"' using delimiters '"+delimiters+"'.");
1386 			return null;
1387 		}
1388 	}
1389 	
1390 	/**
1391 	 * Returns 'num'-th token from 'text' using DELIMITERS_STANDARD.
1392 	 * <BR><BR>
1393 	 * Use only IFF you're getting only one token from 'text'.
1394 	 * @param text
1395 	 * @return String token
1396 	 */ 
1397 	protected String getToken(String text, int num) {
1398 		return getToken(text, DELIMITERS_STANDARD, num);		
1399 	}
1400 
1401 	/**
1402 	 * Return an integer from num token in txt.
1403 	 * <BR><BR>
1404 	 * Integer token is expected to be 'second token' in the 'txt' using delimiters " {}".
1405 	 * 
1406 	 * @param  txt  text of parameter
1407 	 * @return Integer from given token.
1408 	 */
1409 	protected int intValue( String txt  ) {
1410 		try {
1411         	return Integer.parseInt(getToken(txt, 1));
1412         } catch (NullPointerException e) {
1413         	warning("Can't get int token from text '"+txt+"'.");
1414         	return -1;
1415         } catch (NumberFormatException e) {
1416         	exceptionOccured(e, "Wrong int number format in '"+txt+".");
1417         	return -1; 
1418         } catch (Exception e) {
1419         	exceptionOccured(e, "Can't get int token from text '"+txt+"'.");
1420         	return -1;
1421         }
1422 	}
1423 
1424 	
1425 	/**
1426 	 * Return a double from num token in txt.
1427 	 * <BR><BR>
1428 	 * Num token is expected to be 'second token' in the 'txt' using delimiters " {}".	 
1429 	 * 
1430 	 * @param  txt  text of parameter
1431 	 * @return double from given token.
1432 	 */
1433 	protected double doubleValue(String txt) {
1434 		try {
1435         	return Double.parseDouble(getToken(txt, 1));
1436         } catch (NullPointerException e) {
1437         	warning("Can't get double token from text '"+txt+"'.");
1438         	return -1;
1439         } catch (NumberFormatException e) {
1440         	exceptionOccured(e, "Wrong double number format in '"+txt+".");
1441         	return -1; 
1442         } catch (Exception e) {
1443         	exceptionOccured(e, "Can't get double token from text '"+txt+"'.");
1444         	return -1;
1445         }
1446 	}
1447 
1448         //    /**
1449 //	 * Return a Robot type from num token in txt.
1450 //	 * <BR><BR>
1451 //	 * Num token is expected to be 'second token' in the 'txt' using delimiters " {}".	 
1452 //	 * 
1453 //	 * @param  txt  text of parameter
1454 //	 * @return RobotType from given token.
1455 //	 */
1456 //	protected RobotType stringValue(String txt) {
1457 //		try {
1458 //                return RobotType.valueOf(getToken(txt, 1));
1459 //        } catch (NullPointerException e) {
1460 //        	warning("Can't get RobotType token from text '"+txt+"'.");
1461 //        	return RobotType.Other;
1462 //        } catch (Exception e) {
1463 //        	exceptionOccured(e, "Can't get RobotType token from text '"+txt+"'.");
1464 //        	return RobotType.Other;
1465 //        }
1466 //	}
1467 //
1468 //        /**
1469 //	 * Return a Sensor type from num token in txt.
1470 //	 * <BR><BR>
1471 //	 * Num token is expected to be 'second token' in the 'txt' using delimiters " {}".	 
1472 //	 * 
1473 //	 * @param  txt  text of parameter
1474 //	 * @return SensorType from given token.
1475 //	 */
1476 //	protected SensorType stringValue(String txt) {
1477 //		try {
1478 //                return SensorType.valueOf(getToken(txt, 1));
1479 //        } catch (NullPointerException e) {
1480 //        	warning("Can't get SensorType token from text '"+txt+"'.");
1481 //        	return SensorType.Other;
1482 //        } catch (Exception e) {
1483 //        	exceptionOccured(e, "Can't get SensorType token from text '"+txt+"'.");
1484 //        	return SensorType.Other;
1485 //        }
1486 //	}
1487         
1488 
1489         /**
1490 	 * Add a couple to RangeRanges
1491 	 * starting from num token(tokens are separated by space) in 'txt'
1492 	 * 
1493 	 * @param  txt  text of parameter
1494 	 */
1495 	protected void addRangeRange( String txt ) {
1496                
1497                 ((SensorMessage)actObj).RangeRanges.put(getToken(txt, 1), Double.parseDouble(getToken(txt, 3)));
1498                 if(((SensorMessage)actObj).Name==null)
1499                 {
1500                     ((SensorMessage)actObj).Name=((SensorMessage)actObj).RangeRanges.keySet().iterator().next();
1501                 }
1502 	
1503 	}
1504         
1505         /**
1506 	 * Add a couple to EncoderTicks
1507 	 * starting from num token(tokens are separated by space) in 'txt'
1508 	 * 
1509 	 * @param  txt  text of parameter
1510 	 */
1511         protected void addTick( String txt ) {
1512                 
1513                 ((SensorMessage)actObj).EncoderTicks.put(getToken(txt, 1), Integer.parseInt(getToken(txt, 3)));
1514                 if(((SensorMessage)actObj).Name==null)
1515                 {
1516                     ((SensorMessage)actObj).Name=((SensorMessage)actObj).EncoderTicks.keySet().iterator().next();
1517                 }
1518 	
1519 	}
1520 
1521         /** 
1522 	 * Add a couple to Touches
1523 	 * starting from num token(tokens are separated by space) in 'txt'
1524 	 * 
1525 	 * @param  txt  text of parameter
1526 	 */
1527         protected void addTouch( String txt ) {
1528                 
1529                 ((SensorMessage)actObj).Touches.put(getToken(txt, 1),Boolean.parseBoolean(getToken(txt, 3)));
1530                 if(((SensorMessage)actObj).Name==null)
1531                 {
1532                     ((SensorMessage)actObj).Name=((SensorMessage)actObj).Touches.keySet().iterator().next();
1533                 }
1534 	
1535 	}
1536         
1537         /**
1538 	 * Add range of Double values
1539 	 * starting from num token(tokens are separated by space) in 'txt'
1540 	 * 
1541 	 * @param  txt  text of parameter
1542 	 */
1543 	protected void addRanges( String txt ) {
1544 		StringTokenizer st = new StringTokenizer(txt, DELIMITERS_EXTENDED);
1545 		
1546 		int num = 1;
1547 		while (num-- > 0 && st.hasMoreTokens()) {
1548 			st.nextToken();
1549 		}
1550 		
1551 		// now we should have an token with double
1552                 
1553 		while(st.hasMoreTokens()) {
1554                     double token = new Double(st.nextToken()).doubleValue();
1555                     ((SensorMessage)actObj).LaserRanges.add(token);
1556                 }
1557 	}
1558 
1559         /**
1560 	 * Add four values of sensor/effecter geometry
1561 	 * starting from num token(tokens are separated by space) in 'txt'
1562 	 * 
1563 	 * @param  txt  text of parameter
1564 	 */
1565 	protected void addGeometry( String txt ) {
1566 		StringTokenizer st = new StringTokenizer(txt, DELIMITERS_EXTENDED);
1567 		
1568 		int num = 1;
1569 		while (num-- > 0 && st.hasMoreTokens()) {
1570 			st.nextToken();
1571 		}
1572 		
1573 		// now we should have an token with string
1574                 
1575 		if(st.hasMoreTokens()) {
1576                     
1577                     SensorMount s = new SensorMount();
1578                     s.setName(st.nextToken());
1579                     if(((GeometryMessage)actObj).Name==null)
1580                     {
1581                         ((GeometryMessage)actObj).Name=s.getName();
1582                     }
1583                     st.nextToken();
1584                     
1585                     
1586                     double x=Double.parseDouble(st.nextToken());
1587                     double y=Double.parseDouble(st.nextToken());
1588                     double z=Double.parseDouble(st.nextToken());
1589                     Location loc=new Location(x,y,z);
1590                     s.setLocation(loc);
1591                     
1592                     st.nextToken();
1593                     double roll=Double.parseDouble(st.nextToken());
1594                     double pitch=Double.parseDouble(st.nextToken());
1595                     double yaw=Double.parseDouble(st.nextToken());
1596                     Rotation orientation=new Rotation(pitch, yaw, roll);
1597                     s.setOrientation(orientation);
1598                     
1599                     st.nextToken();
1600                     s.setMount(st.nextToken());
1601                     
1602                     ((GeometryMessage)actObj).SenEffGeo.add(s);
1603                 }
1604 	}
1605         
1606         /**
1607 	 * Return a OdometryPose instance starting from num token(tokens are separated by space) in txt
1608 	 * 
1609 	 * @param  txt  text of parameter
1610 	 * @return OdometryPose from given token.
1611 	 */
1612 	protected OdometryPose odometryValue(String txt) {
1613 		double[] triple = getTripleDouble(txt);
1614 		try {
1615 			return new OdometryPose(triple[0], triple[1], triple[2]);
1616 		} catch (NullPointerException e) {
1617 			warning("Can't get OdometryPose from text '"+txt+"'.");
1618 			return new OdometryPose();
1619 		} catch (Exception e) {
1620 			exceptionOccured(e, "Can't get OdometryPose from text '"+txt+"'.");
1621 			return null;
1622 		}
1623 	}
1624         
1625         /**
1626 	 * Return a triple (double[]{x,y,z})
1627 	 * starting from num token(tokens are separated by space) in 'txt'
1628 	 * 
1629 	 * @param  txt  text of parameter
1630 	 * @return Array of three doubles from given token.
1631 	 */
1632 	protected double[] getTripleDouble( String txt ) {
1633 		StringTokenizer st = new StringTokenizer(txt, DELIMITERS_EXTENDED);
1634 		
1635 		int num = 1;
1636 		while (num-- > 0 && st.hasMoreTokens()) {
1637 			st.nextToken();
1638 		}
1639 		
1640 		// now we should have an token with Double
1641 		try {
1642 			double t1,t2,t3;
1643 			t1 = new Double(st.nextToken()).doubleValue();
1644 			t2 = new Double(st.nextToken()).doubleValue();
1645 			t3 = new Double(st.nextToken()).doubleValue();
1646         	return new double[]{t1,t2,t3};
1647         } catch (NumberFormatException e) {
1648         	exceptionOccured(e, "Wrong double number format in '"+txt+".");
1649         	return null; 
1650         } catch (Exception e) {
1651         	exceptionOccured(e, "Can't get triple from text '"+txt+"'.");
1652         	return null;
1653         }
1654 	}
1655 
1656         /**
1657 	 * Return a double (double[]{x,y})
1658 	 * starting from num token(tokens are separated by space) in 'txt'
1659 	 * 
1660 	 * @param  txt  text of parameter
1661 	 * @return Array of two doubles from given token.
1662 	 */
1663 	protected double[] getDoubleDouble( String txt ) {
1664 		StringTokenizer st = new StringTokenizer(txt, DELIMITERS_EXTENDED);
1665 		
1666 		int num = 1;
1667 		while (num-- > 0 && st.hasMoreTokens()) {
1668 			st.nextToken();
1669 		}
1670 		
1671 		// now we should have an token with double
1672 		try {
1673 			double t1,t2;
1674 			t1 = new Double(st.nextToken()).doubleValue();
1675 			t2 = new Double(st.nextToken()).doubleValue();
1676         	return new double[]{t1,t2};
1677         } catch (NumberFormatException e) {
1678         	exceptionOccured(e, "Wrong double number format in '"+txt+".");
1679         	return null; 
1680         } catch (Exception e) {
1681         	exceptionOccured(e, "Can't get triple from text '"+txt+"'.");
1682         	return null;
1683         }
1684 	}
1685         
1686         /**
1687 	 * Return a triple Longitude or Latitude consisted of int, double and char
1688 	 * starting from num token(tokens are separated by space) in 'txt'
1689 	 * 
1690 	 * @param  txt  text of parameter
1691 	 * @return Longitude from given token.
1692 	 */
1693 	protected Longitude longitudeValue( String txt ) {
1694 		StringTokenizer st = new StringTokenizer(txt, DELIMITERS_EXTENDED);
1695 		
1696 		int num = 1;
1697 		while (num-- > 0 && st.hasMoreTokens()) {
1698 			st.nextToken();
1699 		}
1700 		
1701 		// now we should have an token with integer
1702 		try {
1703 			int degree; double minute; char cardinal;
1704                         degree=new Integer(st.nextToken()).intValue();
1705                         minute=new Double(st.nextToken()).doubleValue();
1706                         cardinal=new Character(st.nextToken().charAt(0)).charValue();
1707                         return new Longitude(degree, minute, cardinal);
1708                         
1709         } catch (NumberFormatException e) {
1710         	exceptionOccured(e, "Wrong number format in '"+txt+".");
1711         	return null; 
1712         } catch (Exception e) {
1713         	exceptionOccured(e, "Can't get Longitude/Latitude from text '"+txt+"'.");
1714         	return null;
1715         }
1716 	}
1717 
1718 /**
1719 	 * Return a triple Longitude or Latitude consisted of int, double and char
1720 	 * starting from num token(tokens are separated by space) in 'txt'
1721 	 * 
1722 	 * @param  txt  text of parameter
1723 	 * @return Latitude from given token.
1724 	 */
1725 	protected Latitude latitudeValue( String txt ) {
1726 		StringTokenizer st = new StringTokenizer(txt, DELIMITERS_EXTENDED);
1727 		
1728 		int num = 1;
1729 		while (num-- > 0 && st.hasMoreTokens()) {
1730 			st.nextToken();
1731 		}
1732 		
1733 		// now we should have an token with integer
1734 		try {
1735 			int degree; double minute; char cardinal;
1736                         degree=new Integer(st.nextToken()).intValue();
1737                         minute=new Double(st.nextToken()).doubleValue();
1738                         cardinal=new Character(st.nextToken().charAt(0)).charValue();
1739                         return new Latitude(degree, minute, cardinal);
1740                         
1741         } catch (NumberFormatException e) {
1742         	exceptionOccured(e, "Wrong number format in '"+txt+".");
1743         	return null; 
1744         } catch (Exception e) {
1745         	exceptionOccured(e, "Can't get Longitude/Latitude from text '"+txt+"'.");
1746         	return null;
1747         }
1748 	}
1749 
1750 
1751         /**
1752 	 * Return a Vector3d instance starting from num token(tokens are separated by space) in txt
1753 	 * 
1754 	 * @param  txt  text of parameter
1755 	 * @return Vector3d from given token.
1756 	 */
1757 	protected Vector3d vector3fValue(String txt) {
1758 		double[] triple = getTripleDouble(txt);
1759 		try {
1760 			return new Vector3d(triple[0], triple[1], triple[2]);
1761 		} catch (NullPointerException e) {
1762 			warning("Can't get Vector3d from text '"+txt+"'.");
1763         	return new Vector3d(0,0,0);
1764 		} catch (Exception e) {
1765         	exceptionOccured(e, "Can't get Vector3d from text '"+txt+"'.");
1766         	return null;
1767         }
1768 	}
1769 
1770         /**
1771 	 * Return a Point3d instance starting from num token(tokens are separated by space) in txt
1772 	 * 
1773 	 * @param  txt  text of parameter
1774 	 * @return Point3d from given token.
1775 	 */
1776 	protected Point3d point3fValue(String txt) {
1777 		double[] triple = getTripleDouble(txt);
1778 		try {
1779 			return new Point3d(triple[0], triple[1], triple[2]);
1780 		} catch (NullPointerException e) {
1781 			warning("Can't get Point3d from text '"+txt+"'.");
1782         	return new Point3d(0,0,0);
1783 		} catch (Exception e) {
1784         	exceptionOccured(e, "Can't get Point3d from text '"+txt+"'.");
1785         	return null;
1786         }
1787 	}
1788 
1789 
1790         /**
1791 	 * Add pair of values
1792 	 * starting from num token(tokens are separated by space) in 'txt'
1793 	 * 
1794 	 * @param  txt  text of parameter
1795 	 */
1796 	protected void addConfPair( String txt ) {
1797 		StringTokenizer st = new StringTokenizer(txt, DELIMITERS_STANDARD);
1798 		
1799                 if(st.hasMoreTokens()) {
1800                     try {
1801                         ((ConfigurationMessage)actObj).Features.put(st.nextToken(), st.nextToken());
1802 
1803                     } catch (Exception e) {
1804                             exceptionOccured(e, "Can't add pair Name/Value from text '"+txt+"'.");
1805                     }
1806                 }
1807 	}
1808 
1809         /**
1810 	 * Add pair of values
1811 	 * starting from num token(tokens are separated by space) in 'txt'
1812 	 * 
1813 	 * @param  txt  text of parameter
1814 	 */
1815 	protected void addStaPair( String txt ) {
1816 		StringTokenizer st = new StringTokenizer(txt, DELIMITERS_STANDARD);
1817 		
1818                 if(st.hasMoreTokens()) {
1819                     try {
1820                         ((StateMessage)actObj).PartsValues.put(st.nextToken(), st.nextToken());
1821 
1822                     } catch (Exception e) {
1823                             exceptionOccured(e, "Can't add pair Name/Value from text '"+txt+"'.");
1824                     }
1825                 }
1826 	}
1827 
1828         /**
1829 	 * Add range of Start Positions
1830 	 * starting from num token(tokens are separated by space) in 'txt'
1831 	 * 
1832 	 * @param  txt  text of parameter
1833 	 */
1834 	protected void addStartPose( String txt )
1835          {
1836             StringTokenizer st = new StringTokenizer(txt, DELIMITERS_EXTENDED);
1837 
1838             if(st.hasMoreTokens())
1839             {
1840                 try
1841                 {
1842                     st.nextToken();
1843                     String name = st.nextToken();
1844                     
1845                     st.nextToken();
1846                     double x = Double.parseDouble(st.nextToken());
1847                     double y = Double.parseDouble(st.nextToken());
1848                     double z = Double.parseDouble(st.nextToken());
1849                     Location loc = new Location(x, y, z);
1850 
1851                     st.nextToken();
1852                     double roll = Double.parseDouble(st.nextToken());
1853                     double pitch = Double.parseDouble(st.nextToken());
1854                     double yaw = Double.parseDouble(st.nextToken());
1855                     Rotation orientation = new Rotation(pitch, yaw, roll);
1856                     ((NfoMessage) actObj).StartPoses.add(new StartPose(name, loc, orientation));
1857                 }
1858                 catch(Exception e)
1859                 {
1860                     exceptionOccured(e, "Can't add start pose from text '" + txt + "'.");
1861                 }
1862             }
1863 	}
1864 
1865 
1866         /**
1867 	 * Return a Point4d instance starting from num token(tokens are separated by space) in txt
1868 	 * 
1869 	 * @param  txt  text of parameter
1870 	 * @return Point4d from given token.
1871 	 */
1872 	protected Point4d point4fValue(String txt) {
1873 
1874                 StringTokenizer st = new StringTokenizer(txt, DELIMITERS_EXTENDED);
1875 		
1876 		int num = 1;
1877 		while (num-- > 0 && st.hasMoreTokens()) {
1878 			st.nextToken();
1879 		}
1880 		
1881 		// now we should have an token with double
1882 		try {
1883 			double t1,t2,t3,t4;
1884 			t1 = new Double(st.nextToken()).doubleValue();
1885 			t2 = new Double(st.nextToken()).doubleValue();
1886 			t3 = new Double(st.nextToken()).doubleValue();
1887                         t4 = new Double(st.nextToken()).doubleValue();
1888 
1889                         return new Point4d(t1,t2,t3,t4);
1890 		} catch (NullPointerException e) {
1891 			warning("Can't get Point4d from text '"+txt+"'.");
1892         	return new Point4d(0,0,0,0);
1893 		} catch (Exception e) {
1894         	exceptionOccured(e, "Can't get Point4d from text '"+txt+"'.");
1895         	return null;
1896         }
1897 	}
1898 
1899         
1900 
1901 
1902 
1903 
1904 
1905 
1906 
1907 
1908         
1909 	
1910         /**
1911 	 * Return a triple (double[]{x,y,z})
1912 	 * starting from num token(tokens are separated by space) in 'txt'
1913 	 * 
1914 	 * @param  txt  text of parameter
1915 	 * @return Array of three doubles from given token.
1916 	 */
1917 	protected double[] getTriple( String txt ) {
1918 		StringTokenizer st = new StringTokenizer(txt, DELIMITERS_EXTENDED);
1919 		
1920 		int num = 1;
1921 		while (num-- > 0 && st.hasMoreTokens()) {
1922 			st.nextToken();
1923 		}
1924 		
1925 		// now we should have an token with integer
1926 		try {
1927 			double t1,t2,t3;
1928 			t1 = new Double(st.nextToken()).doubleValue();
1929 			t2 = new Double(st.nextToken()).doubleValue();
1930 			t3 = new Double(st.nextToken()).doubleValue();
1931         	return new double[]{t1,t2,t3};
1932         } catch (NumberFormatException e) {
1933         	exceptionOccured(e, "Wrong double number format in '"+txt+".");
1934         	return null; 
1935         } catch (Exception e) {
1936         	exceptionOccured(e, "Can't get triple from text '"+txt+"'.");
1937         	return null;
1938         }
1939 	}
1940 	
1941 	/**
1942 	 * Return a Location instance starting from num token(tokens are separated by space) in txt
1943 	 * 
1944 	 * @param  txt  text of parameter
1945 	 * @return Location from given token.
1946 	 */
1947 	protected Location locationDoubleValue(String txt) {
1948 		double[] triple = getTripleDouble(txt);
1949 		try {
1950 			return new Location(triple[0], triple[1], triple[2]);
1951 		} catch (NullPointerException e) {
1952 			warning("Can't get Location from text '"+txt+"'.");
1953 			return new Location(0,0,0);
1954 		} catch (Exception e) {
1955 			exceptionOccured(e, "Can't get Location from text '"+txt+"'.");
1956 			return null;
1957 		}
1958 	}
1959 
1960          /**
1961 	 * Return a Point2D instance starting from num token(tokens are separated by space) in txt
1962 	 * 
1963 	 * @param  txt  text of parameter
1964 	 * @return Point2D from given token.
1965 	 */
1966 	protected Point2d point2dDoubleValue(String txt) {
1967 		double[] duble = getDoubleDouble(txt);
1968 		try {
1969 			return new Point2d(duble[0], duble[1]);
1970 		} catch (NullPointerException e) {
1971 			warning("Can't get Location from text '"+txt+"'.");
1972 			return new Point2d();
1973 		} catch (Exception e) {
1974 			exceptionOccured(e, "Can't get Location from text '"+txt+"'.");
1975 			return null;
1976 		}
1977 	}
1978 	
1979 	
1980 	/**
1981 	 * Return a Velocity instance starting from num token(tokens are separated by space) in txt
1982 	 * 
1983 	 * @param  txt  text of parameter
1984 	 * @return Velocity from given token.
1985 	 */
1986 	protected Velocity velocityValue(String txt) {
1987 		double[] triple = getTriple(txt);
1988 		try {
1989 			return new Velocity(triple[0], triple[1], triple[2]);
1990 		} catch (NullPointerException e) {
1991 			warning("Can't get Velocity from text '"+txt+"'.");
1992 			return new Velocity(0,0,0);
1993 		} catch (Exception e) {
1994 			exceptionOccured(e, "Can't get Velocity from text '"+txt+"'.");
1995 			return null;
1996 		}
1997 	}
1998 
1999 	/**
2000 	 * Return a Rotation instance starting from num token(tokens are separated by space) in txt
2001 	 * 
2002 	 * @param  txt  text of parameter
2003 	 * @return Rotation from given token.
2004 	 */
2005 	protected Rotation rotationValue(String txt) {
2006 		double[] triple = getTriple(txt);
2007 		try {
2008 			return new Rotation(triple[1], triple[2], triple[0]);
2009 		} catch (NullPointerException e) {
2010 			warning("Can't get Rotation from text '"+txt+"'.");
2011 			return new Rotation(0,0,0);
2012 		} catch (Exception e) {
2013 			exceptionOccured(e, "Can't get Rotation from text '"+txt+"'.");
2014 			return null;
2015 		}
2016 	}
2017 	
2018 	/**
2019 	 * Return a Point3d instance starting from num token(tokens are separated by space) in txt
2020 	 * 
2021 	 * @param  txt  text of parameter
2022 	 * @return Point3d from given token.
2023 	 */
2024 	protected Point3d point3dValue(String txt) {
2025 		double[] triple = getTriple(txt);
2026 		try {
2027 			return new Point3d(triple[0], triple[1], triple[2]);
2028 		} catch (NullPointerException e) {
2029 			warning("Can't get Point3d from text '"+txt+"'.");
2030         	return new Point3d(0,0,0);
2031 		} catch (Exception e) {
2032         	exceptionOccured(e, "Can't get Point3d from text '"+txt+"'.");
2033         	return null;
2034         }
2035 	}
2036 	
2037 	/**
2038 	 * Return a Vector3d instance starting from num token(tokens are separated by space) in txt
2039 	 * 
2040 	 * @param  txt  text of parameter
2041 	 * @return Vector3d from given token.
2042 	 */
2043 	protected Vector3d vector3dValue(String txt) {
2044 		double[] triple = getTriple(txt);
2045 		try {
2046 			return new Vector3d(triple[0], triple[1], triple[2]);
2047 		} catch (NullPointerException e) {
2048 			warning("Can't get Vector3d from text '"+txt+"'.");
2049         	return new Vector3d(0,0,0);
2050 		} catch (Exception e) {
2051         	exceptionOccured(e, "Can't get Vector3d from text '"+txt+"'.");
2052         	return null;
2053         }
2054 	}
2055 	
2056 	/**
2057 	 * Returns string for parsed token.
2058 	 *	 
2059 	 * @param  txt  text of parameter
2060 	 * @return String from given token.
2061 	 */
2062 	protected String stringValue( String txt ) {
2063 		try {
2064         	int index = txt.indexOf(" ");
2065 			if (index == -1) {
2066 				warning("Can't get string token from text '" + txt + "'.");
2067 				return "";
2068 			}
2069 			String string = txt.substring(index+1, txt.length()-1);
2070         	if (string != null) {
2071 				return string;        	        		
2072         	} else {
2073         		warning("Can't get string token from text '"+txt+"'.");
2074         		return "";
2075         	}
2076         } catch (Exception e) {
2077         	exceptionOccured(e, "Can't get string token from text '"+txt+"'.");
2078         	return "";
2079         }
2080 	}
2081 	
2082 	/**
2083 	 * Returns UnrealId for parsed token.
2084 	 *	 
2085 	 * @param  txt  text of parameter
2086 	 * @return StringId from given token.
2087 	 */
2088 	protected UnrealId stringIdValue( String txt ) {
2089 		return unrealIdValue(txt);				
2090 	}
2091 	
2092 	/**
2093 	 * Return a boolean from boolean token in txt.
2094 	 * <BR><BR>
2095 	 * Boolean token is expected to be 'second token' in the 'txt' using delimiters " {}".	 
2096 	 * 
2097 	 * @param  txt  text of parameter
2098 	 * @return Boolean from given token.
2099 	 */
2100 	protected boolean booleanValue(String txt) {
2101 		try {
2102         	String token = getToken(txt, 1);
2103         	if (token.equalsIgnoreCase("True")) return true;
2104         	else return false;
2105         } catch (NullPointerException e) {
2106         	warning("Can't get boolean token from text '"+txt+"'.");
2107         	return false; 
2108         } catch (Exception e) {
2109         	exceptionOccured(e, "Can't get boolean token from text '"+txt+"'.");
2110         	return false;
2111         }
2112 	}
2113 	
2114 	/**
2115 	 * Return an UnrealId instance from identificator token in txt.
2116 	 * <BR><BR>
2117 	 * Boolean token is expected to be 'second token' in the 'txt' using delimiters " {}".	 
2118 	 * 
2119 	 * @param  txt  text of parameter
2120 	 * @return UnrealId from given token.
2121 	 */
2122 	protected UnrealId unrealIdValue(String txt) {
2123 		try {
2124         	String token = getToken(txt, 1);
2125         	if (token == null) {
2126         		warning("Can't get UnrealId token from text '"+txt+"'.");
2127         		return null;
2128         	}
2129         	return translator.getId(token);
2130         } catch (NullPointerException e) {
2131         	warning("Can't get UnrealId token from text '"+txt+"' (translator not set?).");
2132         	return null; 
2133         } catch (Exception e) {
2134         	exceptionOccured(e, "Can't get UnrealId token from text '"+txt+"'.");
2135         	return null;
2136         }
2137 	}
2138 		
2139     // this is stack with static size, so it can overflow... theoreticly... No.
2140     private int[] stack = new int[10];
2141     private int stack_pos = 0;
2142   
2143  	// actual object that is being parsed 
2144     protected Object actObj;
2145   
2146     /**
2147      * Change state to state and push original state to stack, so parser can return in state_return
2148      */
2149     private void state_go(int state)
2150     {
2151         //yystate() - returns actual dictionary state
2152         //yybegin(int STATE) - sets the STATE state in the scanner
2153   	    stack[stack_pos++] = yystate();
2154   	    yybegin(state);
2155     }
2156   
2157     /**
2158      * Return to previous state.
2159      */
2160     private void state_return()
2161     {
2162         //yybegin(int STATE) - sets the STATE state in the scanner
2163   	    yybegin(stack[--stack_pos]);
2164     }
2165 
2166 
2167   /**
2168    * Creates a new scanner
2169    * There is also a java.io.InputStream version of this constructor.
2170    *
2171    * @param   in  the java.io.Reader to read input from.
2172    */
2173   public Yylex(java.io.Reader in) {
2174     this.zzReader = in;
2175   }
2176 
2177   /**
2178    * Creates a new scanner.
2179    * There is also java.io.Reader version of this constructor.
2180    *
2181    * @param   in  the java.io.Inputstream to read input from.
2182    */
2183   public Yylex(java.io.InputStream in) {
2184     this(new java.io.InputStreamReader(in));
2185   }
2186 
2187 
2188   /**
2189    * Refills the input buffer.
2190    *
2191    * @return      <code>false</code>, iff there was new input.
2192    * 
2193    * @exception   java.io.IOException  if any I/O-Error occurs
2194    */
2195   private boolean zzRefill() throws java.io.IOException {
2196 
2197     /* first: make room (if you can) */
2198     if (zzStartRead > 0) {
2199       System.arraycopy(zzBuffer, zzStartRead,
2200                        zzBuffer, 0,
2201                        zzEndRead-zzStartRead);
2202 
2203       /* translate stored positions */
2204       zzEndRead-= zzStartRead;
2205       zzCurrentPos-= zzStartRead;
2206       zzMarkedPos-= zzStartRead;
2207       zzStartRead = 0;
2208     }
2209 
2210     /* is the buffer big enough? */
2211     if (zzCurrentPos >= zzBuffer.length) {
2212       /* if not: blow it up */
2213       char newBuffer[] = new char[zzCurrentPos*2];
2214       System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
2215       zzBuffer = newBuffer;
2216     }
2217 
2218     /* finally: fill the buffer with new input */
2219     int numRead = zzReader.read(zzBuffer, zzEndRead,
2220                                             zzBuffer.length-zzEndRead);
2221 
2222     if (numRead > 0) {
2223       zzEndRead+= numRead;
2224       return false;
2225     }
2226     // unlikely but not impossible: read 0 characters, but not at end of stream    
2227     if (numRead == 0) {
2228       int c = zzReader.read();
2229       if (c == -1) {
2230         return true;
2231       } else {
2232         zzBuffer[zzEndRead++] = (char) c;
2233         return false;
2234       }     
2235     }
2236 
2237 	// numRead < 0
2238     return true;
2239   }
2240 
2241     
2242   /**
2243    * Closes the input stream.
2244    */
2245   public final void yyclose() throws java.io.IOException {
2246     zzAtEOF = true;            /* indicate end of file */
2247     zzEndRead = zzStartRead;  /* invalidate buffer    */
2248 
2249     if (zzReader != null)
2250       zzReader.close();
2251   }
2252 
2253 
2254   /**
2255    * Resets the scanner to read from a new input stream.
2256    * Does not close the old reader.
2257    *
2258    * All internal variables are reset, the old input stream 
2259    * <b>cannot</b> be reused (internal buffer is discarded and lost).
2260    * Lexical state is set to <tt>ZZ_INITIAL</tt>.
2261    *
2262    * @param reader   the new input stream 
2263    */
2264   public final void yyreset(java.io.Reader reader) {
2265     zzReader = reader;
2266     zzAtBOL  = true;
2267     zzAtEOF  = false;
2268     zzEOFDone = false;
2269     zzEndRead = zzStartRead = 0;
2270     zzCurrentPos = zzMarkedPos = 0;
2271     yyline = yychar = yycolumn = 0;
2272     zzLexicalState = YYINITIAL;
2273   }
2274 
2275 
2276   /**
2277    * Returns the current lexical state.
2278    */
2279   public final int yystate() {
2280     return zzLexicalState;
2281   }
2282 
2283 
2284   /**
2285    * Enters a new lexical state
2286    *
2287    * @param newState the new lexical state
2288    */
2289   public final void yybegin(int newState) {
2290     zzLexicalState = newState;
2291   }
2292 
2293 
2294   /**
2295    * Returns the text matched by the current regular expression.
2296    */
2297   public final String yytext() {
2298     return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
2299   }
2300 
2301 
2302   /**
2303    * Returns the character at position <tt>pos</tt> from the 
2304    * matched text. 
2305    * 
2306    * It is equivalent to yytext().charAt(pos), but faster
2307    *
2308    * @param pos the position of the character to fetch. 
2309    *            A value from 0 to yylength()-1.
2310    *
2311    * @return the character at position pos
2312    */
2313   public final char yycharat(int pos) {
2314     return zzBuffer[zzStartRead+pos];
2315   }
2316 
2317 
2318   /**
2319    * Returns the length of the matched text region.
2320    */
2321   public final int yylength() {
2322     return zzMarkedPos-zzStartRead;
2323   }
2324 
2325 
2326   /**
2327    * Reports an error that occured while scanning.
2328    *
2329    * In a wellformed scanner (no or only correct usage of 
2330    * yypushback(int) and a match-all fallback rule) this method 
2331    * will only be called with things that "Can't Possibly Happen".
2332    * If this method is called, something is seriously wrong
2333    * (e.g. a JFlex bug producing a faulty scanner etc.).
2334    *
2335    * Usual syntax/scanner level error handling should be done
2336    * in error fallback rules.
2337    *
2338    * @param   errorCode  the code of the errormessage to display
2339    */
2340   private void zzScanError(int errorCode) {
2341     String message;
2342     try {
2343       message = ZZ_ERROR_MSG[errorCode];
2344     }
2345     catch (ArrayIndexOutOfBoundsException e) {
2346       message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
2347     }
2348 
2349     throw new Error(message);
2350   } 
2351 
2352 
2353   /**
2354    * Pushes the specified amount of characters back into the input stream.
2355    *
2356    * They will be read again by then next call of the scanning method
2357    *
2358    * @param number  the number of characters to be read again.
2359    *                This number must not be greater than yylength()!
2360    */
2361   public void yypushback(int number)  {
2362     if ( number > yylength() )
2363       zzScanError(ZZ_PUSHBACK_2BIG);
2364 
2365     zzMarkedPos -= number;
2366   }
2367 
2368 
2369   /**
2370    * Resumes scanning until the next regular expression is matched,
2371    * the end of input is encountered or an I/O-Error occurs.
2372    *
2373    * @return      the next token
2374    * @exception   java.io.IOException  if any I/O-Error occurs
2375    */
2376   public InfoMessage yylex() throws java.io.IOException {
2377     int zzInput;
2378     int zzAction;
2379 
2380     // cached fields:
2381     int zzCurrentPosL;
2382     int zzMarkedPosL;
2383     int zzEndReadL = zzEndRead;
2384     char [] zzBufferL = zzBuffer;
2385     char [] zzCMapL = ZZ_CMAP;
2386 
2387     int [] zzTransL = ZZ_TRANS;
2388     int [] zzRowMapL = ZZ_ROWMAP;
2389     int [] zzAttrL = ZZ_ATTRIBUTE;
2390 
2391     while (true) {
2392       zzMarkedPosL = zzMarkedPos;
2393 
2394       yychar+= zzMarkedPosL-zzStartRead;
2395 
2396       boolean zzR = false;
2397       for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL;
2398                                                              zzCurrentPosL++) {
2399         switch (zzBufferL[zzCurrentPosL]) {
2400         case '\u000B':
2401         case '\u000C':
2402         case '\u0085':
2403         case '\u2028':
2404         case '\u2029':
2405           yyline++;
2406           zzR = false;
2407           break;
2408         case '\r':
2409           yyline++;
2410           zzR = true;
2411           break;
2412         case '\n':
2413           if (zzR)
2414             zzR = false;
2415           else {
2416             yyline++;
2417           }
2418           break;
2419         default:
2420           zzR = false;
2421         }
2422       }
2423 
2424       if (zzR) {
2425         // peek one character ahead if it is \n (if we have counted one line too much)
2426         boolean zzPeek;
2427         if (zzMarkedPosL < zzEndReadL)
2428           zzPeek = zzBufferL[zzMarkedPosL] == '\n';
2429         else if (zzAtEOF)
2430           zzPeek = false;
2431         else {
2432           boolean eof = zzRefill();
2433           zzEndReadL = zzEndRead;
2434           zzMarkedPosL = zzMarkedPos;
2435           zzBufferL = zzBuffer;
2436           if (eof) 
2437             zzPeek = false;
2438           else 
2439             zzPeek = zzBufferL[zzMarkedPosL] == '\n';
2440         }
2441         if (zzPeek) yyline--;
2442       }
2443       zzAction = -1;
2444 
2445       zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
2446   
2447       zzState = ZZ_LEXSTATE[zzLexicalState];
2448 
2449 
2450       zzForAction: {
2451         while (true) {
2452     
2453           if (zzCurrentPosL < zzEndReadL)
2454             zzInput = zzBufferL[zzCurrentPosL++];
2455           else if (zzAtEOF) {
2456             zzInput = YYEOF;
2457             break zzForAction;
2458           }
2459           else {
2460             // store back cached positions
2461             zzCurrentPos  = zzCurrentPosL;
2462             zzMarkedPos   = zzMarkedPosL;
2463             boolean eof = zzRefill();
2464             // get translated positions and possibly new buffer
2465             zzCurrentPosL  = zzCurrentPos;
2466             zzMarkedPosL   = zzMarkedPos;
2467             zzBufferL      = zzBuffer;
2468             zzEndReadL     = zzEndRead;
2469             if (eof) {
2470               zzInput = YYEOF;
2471               break zzForAction;
2472             }
2473             else {
2474               zzInput = zzBufferL[zzCurrentPosL++];
2475             }
2476           }
2477           int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
2478           if (zzNext == -1) break zzForAction;
2479           zzState = zzNext;
2480 
2481           int zzAttributes = zzAttrL[zzState];
2482           if ( (zzAttributes & 1) == 1 ) {
2483             zzAction = zzState;
2484             zzMarkedPosL = zzCurrentPosL;
2485             if ( (zzAttributes & 8) == 8 ) break zzForAction;
2486           }
2487 
2488         }
2489       }
2490 
2491       // store back cached position
2492       zzMarkedPos = zzMarkedPosL;
2493 
2494       switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
2495         case 75: 
2496           { ((ConfigurationMessage)actObj).JointTypes.add(stringValue(yytext()));
2497           }
2498         case 120: break;
2499         case 73: 
2500           { ((ConfigurationMessage)actObj).MaxRanges.add(doubleValue(yytext()));
2501           }
2502         case 121: break;
2503         case 8: 
2504           { if (!yytext().equals(" ")) {
2505 			warning("State MSG_GEO unprocessed: " + yytext());
2506 		}
2507           }
2508         case 122: break;
2509         case 10: 
2510           { if (!yytext().equals(" ")) {
2511 			warning("State MSG_RES unprocessed: " + yytext());
2512 		}
2513           }
2514         case 123: break;
2515         case 16: 
2516           { actObj = new GeometryMessage();
2517   	state_go(MSG_GEO);
2518           }
2519         case 124: break;
2520         case 54: 
2521           { ((ConfigurationMessage)actObj).Opcodes.add(stringValue(yytext()));
2522           }
2523         case 125: break;
2524         case 70: 
2525           { ((SensorMessage)actObj).Loudness= doubleValue(yytext());
2526           }
2527         case 126: break;
2528         case 78: 
2529           { ((StateMessage)actObj).RearSteer = doubleValue(yytext());
2530           }
2531         case 127: break;
2532         case 45: 
2533           { addRanges(yytext());
2534           }
2535         case 128: break;
2536         case 65: 
2537           { ((SensorMessage)actObj).Density = doubleValue(yytext());
2538           }
2539         case 129: break;
2540         case 49: 
2541           { ((ConfigurationMessage)actObj).Mass = doubleValue(yytext());
2542           }
2543         case 130: break;
2544         case 25: 
2545           { ((SensorMessage)actObj).Velocity = new Point4d();
2546           }
2547         case 131: break;
2548         case 48: 
2549           { ((GeometryMessage)actObj).Links.add(intValue(yytext()));
2550           }
2551         case 132: break;
2552         case 92: 
2553           { ((GeometryMessage)actObj).ParentLinks.add(intValue(yytext()));
2554           }
2555         case 133: break;
2556         case 35: 
2557           { ((ConfigurationMessage)actObj).Type = stringValue(yytext());
2558           }
2559         case 134: break;
2560         case 102: 
2561           { ((ConfigurationMessage)actObj).MaxRearSteer = doubleValue(yytext());
2562           }
2563         case 135: break;
2564         case 96: 
2565           { addRangeRange(yytext());
2566           }
2567         case 136: break;
2568         case 95: 
2569           { ((StateMessage)actObj).RudderAngle = doubleValue(yytext());
2570           }
2571         case 137: break;
2572         case 37: 
2573           { ((ResponseMessage)actObj).Type = stringValue(yytext());
2574           }
2575         case 138: break;
2576         case 113: 
2577           { ((GeometryMessage)actObj).Orientations.add(rotationValue(yytext()));
2578           }
2579         case 139: break;
2580         case 85: 
2581           { ((KillMessage)actObj).WeaponName = stringValue(yytext());
2582           }
2583         case 140: break;
2584         case 51: 
2585           { ((ResponseMessage)actObj).Time = doubleValue(yytext());
2586           }
2587         case 141: break;
2588         case 18: 
2589           { actObj = new KillMessage();
2590   	state_go(MSG_DIE);
2591           }
2592         case 142: break;
2593         case 63: 
2594           { ((NfoMessage)actObj).GameType = stringValue(yytext());
2595           }
2596         case 143: break;
2597         case 34: 
2598           { ((GeometryMessage)actObj).Name = stringValue(yytext());
2599           }
2600         case 144: break;
2601         case 83: 
2602           { ((ConfigurationMessage)actObj).MaxTorques.add(doubleValue(yytext()));
2603           }
2604         case 145: break;
2605         case 115: 
2606           { ((KillMessage)actObj).DirectDamage = booleanValue(yytext());
2607           }
2608         case 146: break;
2609         case 60: 
2610           { ((ConfigurationMessage)actObj).MaxVals.add(doubleValue(yytext()));
2611           }
2612         case 147: break;
2613         case 61: 
2614           { ((ConfigurationMessage)actObj).MinVals.add(doubleValue(yytext()));
2615           }
2616         case 148: break;
2617         case 97: 
2618           { ((GeometryMessage)actObj).WheelRadius = doubleValue(yytext());
2619           }
2620         case 149: break;
2621         case 55: 
2622           { //Note: First status is paird with config variable in this case, the others are linked with viewports!!
2623                                 ((ResponseMessage)actObj).Statuses.add(stringValue(yytext()));
2624           }
2625         case 150: break;
2626         case 99: 
2627           { ((SensorMessage)actObj).Latitude = latitudeValue(yytext());
2628           }
2629         case 151: break;
2630         case 89: 
2631           { ((SensorMessage)actObj).Satellites = intValue(yytext());
2632           }
2633         case 152: break;
2634         case 15: 
2635           { actObj = new SensorMessage();
2636   	state_go(MSG_SEN);
2637           }
2638         case 153: break;
2639         case 106: 
2640           { ((KillMessage)actObj).VehicleHit = booleanValue(yytext());
2641           }
2642         case 154: break;
2643         case 59: 
2644           { ((SensorMessage)actObj).Radius = doubleValue(yytext());
2645           }
2646         case 155: break;
2647         case 117: 
2648           { ((KillMessage)actObj).CausedByWorld = booleanValue(yytext());
2649           }
2650         case 156: break;
2651         case 46: 
2652           { ((SensorMessage)actObj).Dist = doubleValue(yytext());
2653           }
2654         case 157: break;
2655         case 23: 
2656           { ((SensorMessage)actObj).IDs.add(intValue(yytext()));
2657           }
2658         case 158: break;
2659         case 74: 
2660           { ((ConfigurationMessage)actObj).MinRanges.add(doubleValue(yytext()));
2661           }
2662         case 159: break;
2663         case 32: 
2664           { ((SensorMessage)actObj).Name = stringValue(yytext());
2665           }
2666         case 160: break;
2667         case 14: 
2668           { actObj = new StateMessage();
2669   	state_go(MSG_STA);
2670           }
2671         case 161: break;
2672         case 111: 
2673           { ((StateMessage)actObj).SternPlaneAngle = doubleValue(yytext());//locationDoubleValue(yytext());
2674           }
2675         case 162: break;
2676         case 66: 
2677           { ((SensorMessage)actObj).PartNames.add(stringValue(yytext()));
2678           }
2679         case 163: break;
2680         case 57: 
2681           { ((MissionPackageMessage)actObj).Links.addTorque(doubleValue(yytext()));
2682           }
2683         case 164: break;
2684         case 105: 
2685           { ((ConfigurationMessage)actObj).MaxFrontSteer = doubleValue(yytext());
2686           }
2687         case 165: break;
2688         case 33: 
2689           { ((GeometryMessage)actObj).Type = stringValue(yytext());
2690           }
2691         case 166: break;
2692         case 71: 
2693           { ((SensorMessage)actObj).OdoPose = odometryValue(yytext());
2694           }
2695         case 167: break;
2696         case 119: 
2697           { addGeometry(yytext());
2698           }
2699         case 168: break;
2700         case 12: 
2701           { // reset scanning
2702 		stack_pos = 0;
2703                 //yybegin(int STATE) - sets the STATE state in the scanner
2704  		yybegin(YYINITIAL);
2705  		if (actObj != null)
2706  		{ 			
2707  			InfoMessage obj = (InfoMessage) actObj;
2708  			
2709  			//if (obj instanceof BeginMessage) {
2710                 //udkTime = ((BeginMessage)obj).getTime();
2711             //} else
2712  			if (obj instanceof IWorldObject) {
2713  				setTime((IWorldObject)obj, udkTime);
2714  			}
2715  			
2716  			actObj = null;
2717  			return obj;
2718  		}
2719           }
2720         case 169: break;
2721         case 21: 
2722           { actObj = new ConfigurationMessage();
2723   	state_go(MSG_CONF);
2724           }
2725         case 170: break;
2726         case 1: 
2727           { //else brach - when none of the above has been matched!
2728 //yystate() - returns actual dictionary state
2729 //yytext() - returns matched string
2730   warning("Illegal character: <" + yytext() + "> + currentstate "+ yystate());
2731           }
2732         case 171: break;
2733         case 103: 
2734           { ((KillMessage)actObj).BulletHit = booleanValue(yytext());
2735           }
2736         case 172: break;
2737         case 43: 
2738           { ((StateMessage)actObj).View = intValue(yytext());
2739           }
2740         case 173: break;
2741         case 93: 
2742           { ((KillMessage)actObj).Flaming = booleanValue(yytext());
2743           }
2744         case 174: break;
2745         case 13: 
2746           { actObj = new NfoMessage();
2747   	state_go(MSG_NFO);
2748           }
2749         case 175: break;
2750         case 28: 
2751           { ((StateMessage)actObj).Type = stringValue(yytext());
2752           }
2753         case 176: break;
2754         case 94: 
2755           { ((KillMessage)actObj).DeathString = stringValue(yytext());
2756           }
2757         case 177: break;
2758         case 42: 
2759           { ((StateMessage)actObj).Time = doubleValue(yytext());
2760           }
2761         case 178: break;
2762         case 44: 
2763           { ((SensorMessage)actObj).Time = doubleValue(yytext());
2764           }
2765         case 179: break;
2766         case 7: 
2767           { if (!yytext().equals(" ")) {
2768 			warning("State MSG_SEN unprocessed: " + yytext());
2769 		}
2770           }
2771         case 180: break;
2772         case 90: 
2773           { ((SensorMessage)actObj).Resolution = doubleValue(yytext());
2774           }
2775         case 181: break;
2776         case 30: 
2777           { ((SensorMessage)actObj).FOV = doubleValue(yytext());
2778           }
2779         case 182: break;
2780         case 22: 
2781           { actObj = new MissionPackageMessage();
2782   	state_go(MSG_MISSTA);
2783           }
2784         case 183: break;
2785         case 84: 
2786           { ((KillMessage)actObj).DamageType = stringValue(yytext());
2787           }
2788         case 184: break;
2789         case 87: 
2790           { ((StateMessage)actObj).FrontSteer = doubleValue(yytext());
2791           }
2792         case 185: break;
2793         case 114: 
2794           { ((GeometryMessage)actObj).WheelSeparation = doubleValue(yytext());
2795           }
2796         case 186: break;
2797         case 26: 
2798           { ((ResponseMessage)actObj).FOVs.add(stringValue(yytext()));
2799           }
2800         case 187: break;
2801         case 62: 
2802           { ((KillMessage)actObj).Killer = unrealIdValue(yytext());
2803           }
2804         case 188: break;
2805         case 39: 
2806           { ((NfoMessage)actObj).Level = stringValue(yytext());
2807           }
2808         case 189: break;
2809         case 29: 
2810           { ((SensorMessage)actObj).Type = stringValue(yytext());
2811           }
2812         case 190: break;
2813         case 20: 
2814           { addConfPair(yytext());
2815           }
2816         case 191: break;
2817         case 91: 
2818           { ((SensorMessage)actObj).Visible = booleanValue(yytext());
2819           }
2820         case 192: break;
2821         case 80: 
2822           { ((SensorMessage)actObj).Pos3D = locationDoubleValue(yytext());
2823           }
2824         case 193: break;
2825         case 4: 
2826           { if (!yytext().equals(" ")) {
2827 			warning("State MSG_BEG unprocessed: " + yytext());
2828 		}
2829           }
2830         case 194: break;
2831         case 108: 
2832           { ((StateMessage)actObj).LightIntensity = intValue(yytext());
2833           }
2834         case 195: break;
2835         case 52: 
2836           { ((MissionPackageMessage)actObj).Links.addValue(doubleValue(yytext()));
2837           }
2838         case 196: break;
2839         case 31: 
2840           { ((SensorMessage)actObj).Fix = intValue(yytext());
2841           }
2842         case 197: break;
2843         case 116: 
2844           { ((SensorMessage)actObj).Acceleration = velocityValue(yytext());
2845           }
2846         case 198: break;
2847         case 107: 
2848           { ((StateMessage)actObj).LightToggle = booleanValue(yytext());
2849           }
2850         case 199: break;
2851         case 101: 
2852           { ((GeometryMessage)actObj).Locations.add(locationDoubleValue(yytext()));
2853           }
2854         case 200: break;
2855         case 88: 
2856           { addTick(yytext());
2857           }
2858         case 201: break;
2859         case 41: 
2860           { ((MissionPackageMessage)actObj).Links.addLink(intValue(yytext()));
2861           }
2862         case 202: break;
2863         case 24: 
2864           { ((SensorMessage)actObj).Gas = stringValue(yytext());
2865           }
2866         case 203: break;
2867         case 109: 
2868           { addTouch(yytext());
2869           }
2870         case 204: break;
2871         case 3: 
2872           { warning("Dummy state, should not reach here: " + yytext());
2873           }
2874         case 205: break;
2875         case 67: 
2876           { ((SensorMessage)actObj).Pos2D = point2dDoubleValue(yytext());
2877           }
2878         case 206: break;
2879         case 110: 
2880           { ((GeometryMessage)actObj).Dimensions = vector3fValue(yytext());
2881           }
2882         case 207: break;
2883         case 112: 
2884           { ((SensorMessage)actObj).Orientations.add(rotationValue(yytext()));
2885           }
2886         case 208: break;
2887         case 76: 
2888           { ((ResponseMessage)actObj).Viewports.add(stringValue(yytext()));
2889           }
2890         case 209: break;
2891         case 69: 
2892           { ((SensorMessage)actObj).Duration= doubleValue(yytext());
2893           }
2894         case 210: break;
2895         case 100: 
2896           { ((SensorMessage)actObj).Locations.add(locationDoubleValue(yytext()));
2897           }
2898         case 211: break;
2899         case 72: 
2900           { ((ConfigurationMessage)actObj).MaxSpeeds.add(doubleValue(yytext()));
2901           }
2902         case 212: break;
2903         case 86: 
2904           { ((NfoMessage)actObj).StartPoseCount = intValue(yytext());
2905           }
2906         case 213: break;
2907         case 27: 
2908           { ((MissionPackageMessage)actObj).Name = stringValue(yytext());
2909           }
2910         case 214: break;
2911         case 19: 
2912           { addStaPair(yytext());
2913           }
2914         case 215: break;
2915         case 17: 
2916           { actObj = new ResponseMessage();
2917   	state_go(MSG_RES);
2918           }
2919         case 216: break;
2920         case 81: 
2921           { ((SensorMessage)actObj).Velocity = point4fValue(yytext());
2922           }
2923         case 217: break;
2924         case 64: 
2925           { ((StateMessage)actObj).Battery = intValue(yytext());
2926           }
2927         case 218: break;
2928         case 53: 
2929           { ((SensorMessage)actObj).Status = stringValue(yytext());
2930           }
2931         case 219: break;
2932         case 50: 
2933           { ((ConfigurationMessage)actObj).Links.add(intValue(yytext()));
2934           }
2935         case 220: break;
2936         case 68: 
2937           { ((GeometryMessage)actObj).CenterOfGravity = point3fValue(yytext());
2938           }
2939         case 221: break;
2940         case 77: 
2941           { ((NfoMessage)actObj).TimeLimit = doubleValue(yytext());
2942           }
2943         case 222: break;
2944         case 38: 
2945           { ((ResponseMessage)actObj).Names.add(stringValue(yytext()));
2946           }
2947         case 223: break;
2948         case 118: 
2949           { addStartPose(yytext());
2950           }
2951         case 224: break;
2952         case 79: 
2953           { ((SensorMessage)actObj).Position = point4fValue(yytext());
2954           }
2955         case 225: break;
2956         case 9: 
2957           { if (!yytext().equals(" ")) {
2958 			warning("State MSG_CONF unprocessed: " + yytext());
2959 		}
2960           }
2961         case 226: break;
2962         case 11: 
2963           { if (!yytext().equals(" ")) {
2964 			warning("State MSG_DIE unprocessed: " + yytext());
2965 		}
2966           }
2967         case 227: break;
2968         case 82: 
2969           { ((GeometryMessage)actObj).WheelBase = doubleValue(yytext());
2970           }
2971         case 228: break;
2972         case 47: 
2973           { ((SensorMessage)actObj).Prob= doubleValue(yytext());
2974           }
2975         case 229: break;
2976         case 5: 
2977           { if (!yytext().equals(" ")) {
2978 			warning("State MSG_MISSTA unprocessed: " + yytext());
2979 		}
2980           }
2981         case 230: break;
2982         case 40: 
2983           { ((MissionPackageMessage)actObj).Time = doubleValue(yytext());
2984           }
2985         case 231: break;
2986         case 6: 
2987           { if (!yytext().equals(" ")) {
2988 			warning("State MSG_STA unprocessed: " + yytext());
2989 		}
2990           }
2991         case 232: break;
2992         case 104: 
2993           { ((SensorMessage)actObj).Longitude = longitudeValue(yytext());
2994           }
2995         case 233: break;
2996         case 98: 
2997           { ((ConfigurationMessage)actObj).SteeringType = stringValue(yytext());
2998           }
2999         case 234: break;
3000         case 56: 
3001           { ((ResponseMessage)actObj).Config = stringValue(yytext());
3002           }
3003         case 235: break;
3004         case 58: 
3005           { ((SensorMessage)actObj).Corona = doubleValue(yytext());
3006           }
3007         case 236: break;
3008         case 36: 
3009           { ((ConfigurationMessage)actObj).Name = stringValue(yytext());
3010           }
3011         case 237: break;
3012         case 2: 
3013           { 
3014           }
3015         case 238: break;
3016         default: 
3017           if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
3018             zzAtEOF = true;
3019               { throw new ParserEOFException(this);
3020  }
3021           } 
3022           else {
3023             zzScanError(ZZ_NO_MATCH);
3024           }
3025       }
3026     }
3027   }
3028 
3029   /**
3030    * Runs the scanner on input files.
3031    *
3032    * This is a standalone scanner, it will print any unmatched
3033    * text to System.out unchanged.
3034    *
3035    * @param argv   the command line, contains the filenames to run
3036    *               the scanner on.
3037    */
3038   public static void main(String argv[]) {
3039     if (argv.length == 0) {
3040       System.out.println("Usage : java Yylex <inputfile>");
3041     }
3042     else {
3043       for (int i = 0; i < argv.length; i++) {
3044         Yylex scanner = null;
3045         try {
3046           scanner = new Yylex( new java.io.FileReader(argv[i]) );
3047           while ( !scanner.zzAtEOF ) scanner.yylex();
3048         }
3049         catch (java.io.FileNotFoundException e) {
3050           System.out.println("File not found : \""+argv[i]+"\"");
3051         }
3052         catch (java.io.IOException e) {
3053           System.out.println("IO error scanning file \""+argv[i]+"\"");
3054           System.out.println(e);
3055         }
3056         catch (Exception e) {
3057           System.out.println("Unexpected exception:");
3058           e.printStackTrace();
3059         }
3060       }
3061     }
3062   }
3063 
3064 
3065 }